From fd6250cf9d2c96eef0959f7cc01c79c954eba60a Mon Sep 17 00:00:00 2001 From: Vighnesh-V Date: Fri, 20 Oct 2023 18:10:30 -0700 Subject: [PATCH 1/8] Sync to upstream/release/600 (#1076) ### What's Changed - Improve readability of unions and intersections by limiting the number of elements of those types that can be presented on a single line (gated under `FFlag::LuauToStringSimpleCompositeTypesSingleLine`) - Adds a new option to the compiler `--record-stats` to record and output compilation statistics - `if...then...else` expressions are now optimized into `AND/OR` form when possible. ### VM - Add a new `buffer` type to Luau based on the [buffer RFC](https://github.com/Roblox/luau/pull/739) and additional C API functions to work with it; this release does not include the library. - Internal C API to work with string buffers has been updated to align with Lua version more closely ### Native Codegen - Added support for new X64 instruction (rev) and new A64 instruction (bswap) in the assembler - Simplified the way numerical loop condition is translated to IR ### New Type Solver - Operator inference now handled by type families - Created a new system called `Type Paths` to explain why subtyping tests fail in order to improve the quality of error messages. - Systematic changes to implement Data Flow analysis in the new solver (`Breadcrumb` removed and replaced with `RefinementKey`) --- Co-authored-by: Aaron Weiss Co-authored-by: Alexander McCord Co-authored-by: Andy Friesen Co-authored-by: Aviral Goel Co-authored-by: Lily Brown Co-authored-by: Vighnesh Vijay Co-authored-by: Vyacheslav Egorov --------- Co-authored-by: Arseny Kapoulkine Co-authored-by: Vyacheslav Egorov Co-authored-by: Andy Friesen Co-authored-by: Lily Brown Co-authored-by: Aaron Weiss Co-authored-by: Alexander McCord Co-authored-by: Aviral Goel --- Analysis/include/Luau/Anyification.h | 4 +- Analysis/include/Luau/ApplyTypeFunction.h | 2 +- Analysis/include/Luau/AstQuery.h | 4 +- Analysis/include/Luau/Breadcrumb.h | 75 --- Analysis/include/Luau/Constraint.h | 56 +- .../include/Luau/ConstraintGraphBuilder.h | 43 +- Analysis/include/Luau/ConstraintSolver.h | 3 +- Analysis/include/Luau/DataFlowGraph.h | 108 +-- Analysis/include/Luau/Def.h | 5 +- Analysis/include/Luau/Differ.h | 5 +- Analysis/include/Luau/Error.h | 3 + Analysis/include/Luau/GlobalTypes.h | 3 +- Analysis/include/Luau/Instantiation.h | 3 +- Analysis/include/Luau/IostreamHelpers.h | 11 + Analysis/include/Luau/LValue.h | 4 +- Analysis/include/Luau/Normalize.h | 17 +- Analysis/include/Luau/Predicate.h | 4 +- Analysis/include/Luau/Quantify.h | 4 +- Analysis/include/Luau/Refinement.h | 11 +- Analysis/include/Luau/Scope.h | 5 + Analysis/include/Luau/Simplify.h | 4 +- Analysis/include/Luau/Substitution.h | 3 +- Analysis/include/Luau/Subtyping.h | 21 +- Analysis/include/Luau/ToDot.h | 6 +- Analysis/include/Luau/ToString.h | 18 +- Analysis/include/Luau/Type.h | 123 ++-- Analysis/include/Luau/TypeFamily.h | 16 +- Analysis/include/Luau/TypeFwd.h | 59 ++ Analysis/include/Luau/TypeInfer.h | 3 +- Analysis/include/Luau/TypeOrPack.h | 45 ++ Analysis/include/Luau/TypePack.h | 8 +- Analysis/include/Luau/TypePairHash.h | 2 +- Analysis/include/Luau/TypePath.h | 220 ++++++ Analysis/include/Luau/Unifier.h | 2 +- Analysis/include/Luau/Unifier2.h | 12 +- Analysis/include/Luau/UnifierSharedState.h | 3 +- Analysis/include/Luau/Variant.h | 3 + Analysis/src/Clone.cpp | 1 + Analysis/src/ConstraintGraphBuilder.cpp | 521 +++++++------- Analysis/src/ConstraintSolver.cpp | 361 +--------- Analysis/src/DataFlowGraph.cpp | 464 +++++++------ Analysis/src/Def.cpp | 14 +- Analysis/src/IostreamHelpers.cpp | 31 + Analysis/src/NonStrictTypeChecker.cpp | 44 +- Analysis/src/Normalize.cpp | 7 + Analysis/src/Refinement.cpp | 27 +- Analysis/src/Scope.cpp | 17 + Analysis/src/Substitution.cpp | 1 + Analysis/src/Subtyping.cpp | 225 +++++-- Analysis/src/ToString.cpp | 60 +- Analysis/src/TypeChecker2.cpp | 28 +- Analysis/src/TypeFamily.cpp | 157 +++++ Analysis/src/TypeOrPack.cpp | 29 + Analysis/src/TypePath.cpp | 633 ++++++++++++++++++ Analysis/src/TypeUtils.cpp | 1 + CLI/Compile.cpp | 118 +++- CodeGen/include/Luau/AssemblyBuilderA64.h | 1 + CodeGen/include/Luau/AssemblyBuilderX64.h | 1 + CodeGen/include/Luau/CodeGen.h | 30 + CodeGen/include/Luau/IrData.h | 8 + CodeGen/include/Luau/IrUtils.h | 1 + CodeGen/src/AssemblyBuilderA64.cpp | 8 + CodeGen/src/AssemblyBuilderX64.cpp | 13 + CodeGen/src/CodeGen.cpp | 3 + CodeGen/src/CodeGenAssembly.cpp | 13 +- CodeGen/src/CodeGenLower.h | 45 ++ CodeGen/src/EmitCommon.h | 3 + CodeGen/src/IrDump.cpp | 2 + CodeGen/src/IrLoweringA64.cpp | 24 + CodeGen/src/IrLoweringX64.cpp | 30 + CodeGen/src/IrTranslation.cpp | 105 ++- CodeGen/src/IrUtils.cpp | 1 + CodeGen/src/OptimizeConstProp.cpp | 44 ++ Compiler/src/Compiler.cpp | 32 + Sources.cmake | 19 +- VM/include/lua.h | 5 + VM/include/lualib.h | 33 +- VM/src/lapi.cpp | 38 +- VM/src/laux.cpp | 75 ++- VM/src/lbuffer.cpp | 24 + VM/src/lbuffer.h | 13 + VM/src/ldblib.cpp | 4 +- VM/src/ldo.cpp | 4 +- VM/src/lgc.cpp | 9 + VM/src/lgc.h | 3 +- VM/src/lgcdebug.cpp | 72 +- VM/src/lmem.cpp | 1 + VM/src/lobject.h | 23 + VM/src/loslib.cpp | 4 +- VM/src/lstate.h | 2 + VM/src/lstrlib.cpp | 52 +- VM/src/ltablib.cpp | 6 +- VM/src/ltm.cpp | 1 + VM/src/lutf8lib.cpp | 4 +- VM/src/lvmexecute.cpp | 2 + fuzz/proto.cpp | 3 +- stats/compiler-stats.py | 167 +++++ tests/AssemblyBuilderA64.test.cpp | 2 + tests/AssemblyBuilderX64.test.cpp | 4 + tests/ClassFixture.cpp | 4 +- tests/ClassFixture.h | 3 + tests/Compiler.test.cpp | 99 +++ tests/Conformance.test.cpp | 67 +- tests/DataFlowGraph.test.cpp | 24 +- tests/DiffAsserts.cpp | 31 + tests/DiffAsserts.h | 46 ++ tests/Differ.test.cpp | 2 + tests/NonStrictTypeChecker.test.cpp | 13 +- tests/Subtyping.test.cpp | 144 ++++ tests/ToString.test.cpp | 21 + tests/TypeInfer.aliases.test.cpp | 8 +- tests/TypeInfer.annotations.test.cpp | 24 +- tests/TypeInfer.anyerror.test.cpp | 2 +- tests/TypeInfer.intersectionTypes.test.cpp | 2 + tests/TypeInfer.operators.test.cpp | 15 +- tests/TypeInfer.primitives.test.cpp | 3 +- tests/TypeInfer.refinements.test.cpp | 22 +- tests/TypeInfer.singletons.test.cpp | 5 +- tests/TypeInfer.tables.test.cpp | 17 +- tests/TypeInfer.typestates.test.cpp | 78 +++ tests/TypePath.test.cpp | 541 +++++++++++++++ tests/conformance/closure.lua | 36 +- tests/conformance/native.lua | 23 + tests/conformance/pcall.lua | 98 ++- tools/faillist.txt | 74 +- tools/lldb_formatters.lldb | 15 + tools/lldb_formatters.py | 186 ++++- tools/natvis/VM.natvis | 4 + 128 files changed, 4722 insertions(+), 1476 deletions(-) delete mode 100644 Analysis/include/Luau/Breadcrumb.h create mode 100644 Analysis/include/Luau/TypeFwd.h create mode 100644 Analysis/include/Luau/TypeOrPack.h create mode 100644 Analysis/include/Luau/TypePath.h create mode 100644 Analysis/src/TypeOrPack.cpp create mode 100644 Analysis/src/TypePath.cpp create mode 100644 VM/src/lbuffer.cpp create mode 100644 VM/src/lbuffer.h create mode 100644 stats/compiler-stats.py create mode 100644 tests/DiffAsserts.cpp create mode 100644 tests/DiffAsserts.h create mode 100644 tests/TypePath.test.cpp diff --git a/Analysis/include/Luau/Anyification.h b/Analysis/include/Luau/Anyification.h index 7b6f7171..c81dc3fb 100644 --- a/Analysis/include/Luau/Anyification.h +++ b/Analysis/include/Luau/Anyification.h @@ -4,7 +4,7 @@ #include "Luau/NotNull.h" #include "Luau/Substitution.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include @@ -39,4 +39,4 @@ struct Anyification : Substitution bool ignoreChildren(TypePackId ty) override; }; -} // namespace Luau \ No newline at end of file +} // namespace Luau diff --git a/Analysis/include/Luau/ApplyTypeFunction.h b/Analysis/include/Luau/ApplyTypeFunction.h index 3f5f47fd..71430b28 100644 --- a/Analysis/include/Luau/ApplyTypeFunction.h +++ b/Analysis/include/Luau/ApplyTypeFunction.h @@ -3,7 +3,7 @@ #include "Luau/Substitution.h" #include "Luau/TxnLog.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" namespace Luau { diff --git a/Analysis/include/Luau/AstQuery.h b/Analysis/include/Luau/AstQuery.h index e7a018c0..7652a89f 100644 --- a/Analysis/include/Luau/AstQuery.h +++ b/Analysis/include/Luau/AstQuery.h @@ -3,6 +3,7 @@ #include "Luau/Ast.h" #include "Luau/Documentation.h" +#include "Luau/TypeFwd.h" #include @@ -13,9 +14,6 @@ struct Binding; struct SourceModule; struct Module; -struct Type; -using TypeId = const Type*; - using ScopePtr = std::shared_ptr; struct ExprOrLocal diff --git a/Analysis/include/Luau/Breadcrumb.h b/Analysis/include/Luau/Breadcrumb.h deleted file mode 100644 index 59b293a0..00000000 --- a/Analysis/include/Luau/Breadcrumb.h +++ /dev/null @@ -1,75 +0,0 @@ -// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details -#pragma once - -#include "Luau/Def.h" -#include "Luau/NotNull.h" -#include "Luau/Variant.h" - -#include -#include - -namespace Luau -{ - -using NullableBreadcrumbId = const struct Breadcrumb*; -using BreadcrumbId = NotNull; - -struct FieldMetadata -{ - std::string prop; -}; - -struct SubscriptMetadata -{ - BreadcrumbId key; -}; - -using Metadata = Variant; - -struct Breadcrumb -{ - NullableBreadcrumbId previous; - DefId def; - std::optional metadata; - std::vector children; -}; - -inline Breadcrumb* asMutable(NullableBreadcrumbId breadcrumb) -{ - LUAU_ASSERT(breadcrumb); - return const_cast(breadcrumb); -} - -template -const T* getMetadata(NullableBreadcrumbId breadcrumb) -{ - if (!breadcrumb || !breadcrumb->metadata) - return nullptr; - - return get_if(&*breadcrumb->metadata); -} - -struct BreadcrumbArena -{ - TypedAllocator allocator; - - template - BreadcrumbId add(NullableBreadcrumbId previous, DefId def, Args&&... args) - { - Breadcrumb* bc = allocator.allocate(Breadcrumb{previous, def, std::forward(args)...}); - if (previous) - asMutable(previous)->children.push_back(NotNull{bc}); - return NotNull{bc}; - } - - template - BreadcrumbId emplace(NullableBreadcrumbId previous, DefId def, Args&&... args) - { - Breadcrumb* bc = allocator.allocate(Breadcrumb{previous, def, Metadata{T{std::forward(args)...}}}); - if (previous) - asMutable(previous)->children.push_back(NotNull{bc}); - return NotNull{bc}; - } -}; - -} // namespace Luau diff --git a/Analysis/include/Luau/Constraint.h b/Analysis/include/Luau/Constraint.h index 67f9470e..4598efc4 100644 --- a/Analysis/include/Luau/Constraint.h +++ b/Analysis/include/Luau/Constraint.h @@ -4,8 +4,8 @@ #include "Luau/Ast.h" // Used for some of the enumerations #include "Luau/DenseHash.h" #include "Luau/NotNull.h" -#include "Luau/Type.h" #include "Luau/Variant.h" +#include "Luau/TypeFwd.h" #include #include @@ -16,12 +16,6 @@ namespace Luau struct Scope; -struct Type; -using TypeId = const Type*; - -struct TypePackVar; -using TypePackId = const TypePackVar*; - // subType <: superType struct SubtypeConstraint { @@ -55,31 +49,6 @@ struct InstantiationConstraint TypeId superType; }; -struct UnaryConstraint -{ - AstExprUnary::Op op; - TypeId operandType; - TypeId resultType; -}; - -// let L : leftType -// let R : rightType -// in -// L op R : resultType -struct BinaryConstraint -{ - AstExprBinary::Op op; - TypeId leftType; - TypeId rightType; - TypeId resultType; - - // When we dispatch this constraint, we update the key at this map to record - // the overload that we selected. - const AstNode* astFragment; - DenseHashMap* astOriginalCallTypes; - DenseHashMap* astOverloadResolvedTypes; -}; - // iteratee is iterable // iterators is the iteration types. struct IterableConstraint @@ -241,6 +210,22 @@ struct RefineConstraint TypeId discriminant; }; +// resultType ~ T0 op T1 op ... op TN +// +// op is either union or intersection. If any of the input types are blocked, +// this constraint will block unless forced. +struct SetOpConstraint +{ + enum + { + Intersection, + Union + } mode; + + TypeId resultType; + std::vector types; +}; + // ty ~ reduce ty // // Try to reduce ty, if it is a TypeFamilyInstanceType. Otherwise, do nothing. @@ -257,10 +242,9 @@ struct ReducePackConstraint TypePackId tp; }; -using ConstraintV = Variant; +using ConstraintV = Variant; struct Constraint { diff --git a/Analysis/include/Luau/ConstraintGraphBuilder.h b/Analysis/include/Luau/ConstraintGraphBuilder.h index 955a683e..bba5ebd9 100644 --- a/Analysis/include/Luau/ConstraintGraphBuilder.h +++ b/Analysis/include/Luau/ConstraintGraphBuilder.h @@ -5,15 +5,17 @@ #include "Luau/Constraint.h" #include "Luau/ControlFlow.h" #include "Luau/DataFlowGraph.h" +#include "Luau/InsertionOrderedMap.h" #include "Luau/Module.h" #include "Luau/ModuleResolver.h" +#include "Luau/Normalize.h" #include "Luau/NotNull.h" #include "Luau/Refinement.h" #include "Luau/Symbol.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/TypeUtils.h" #include "Luau/Variant.h" -#include "Normalize.h" +#include "Luau/Normalize.h" #include #include @@ -69,11 +71,18 @@ struct ConstraintGraphBuilder // This is null when the CGB is initially constructed. Scope* rootScope; + struct InferredBinding + { + Scope* scope; + Location location; + TypeIds types; + }; + // During constraint generation, we only populate the Scope::bindings // property for annotated symbols. Unannotated symbols must be handled in a - // postprocessing step because we do not yet have the full breadcrumb graph. - // We queue them up here. - std::vector> inferredBindings; + // postprocessing step because we have not yet allocated the types that will + // be assigned to those unannotated symbols, so we queue them up here. + std::map inferredBindings; // Constraints that go straight to the solver. std::vector constraints; @@ -155,6 +164,18 @@ private: */ NotNull addConstraint(const ScopePtr& scope, std::unique_ptr c); + struct RefinementPartition + { + // Types that we want to intersect against the type of the expression. + std::vector discriminantTypes; + + // Sometimes the type we're discriminating against is implicitly nil. + bool shouldAppendNilType = false; + }; + + using RefinementContext = InsertionOrderedMap; + void unionRefinements(const RefinementContext& lhs, const RefinementContext& rhs, RefinementContext& dest, std::vector* constraints); + void computeRefinement(const ScopePtr& scope, RefinementId refinement, RefinementContext* refis, bool sense, bool eq, std::vector* constraints); void applyRefinements(const ScopePtr& scope, Location location, RefinementId refinement); ControlFlow visitBlockWithoutChildScope(const ScopePtr& scope, AstStatBlock* block); @@ -211,13 +232,15 @@ private: Inference check(const ScopePtr& scope, AstExprTable* expr, std::optional expectedType); std::tuple checkBinary(const ScopePtr& scope, AstExprBinary* binary, std::optional expectedType); - TypeId checkLValue(const ScopePtr& scope, AstExpr* expr); - TypeId checkLValue(const ScopePtr& scope, AstExprLocal* local); - TypeId checkLValue(const ScopePtr& scope, AstExprGlobal* global); - TypeId checkLValue(const ScopePtr& scope, AstExprIndexName* indexName); - TypeId checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr); + std::optional checkLValue(const ScopePtr& scope, AstExpr* expr); + std::optional checkLValue(const ScopePtr& scope, AstExprLocal* local); + std::optional checkLValue(const ScopePtr& scope, AstExprGlobal* global); + std::optional checkLValue(const ScopePtr& scope, AstExprIndexName* indexName); + std::optional checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr); TypeId updateProperty(const ScopePtr& scope, AstExpr* expr); + void updateLValueType(AstExpr* lvalue, TypeId ty); + struct FunctionSignature { // The type of the function. diff --git a/Analysis/include/Luau/ConstraintSolver.h b/Analysis/include/Luau/ConstraintSolver.h index 672b4603..3f2feaef 100644 --- a/Analysis/include/Luau/ConstraintSolver.h +++ b/Analysis/include/Luau/ConstraintSolver.h @@ -111,8 +111,6 @@ struct ConstraintSolver bool tryDispatch(const PackSubtypeConstraint& c, NotNull constraint, bool force); bool tryDispatch(const GeneralizationConstraint& c, NotNull constraint, bool force); bool tryDispatch(const InstantiationConstraint& c, NotNull constraint, bool force); - bool tryDispatch(const UnaryConstraint& c, NotNull constraint, bool force); - bool tryDispatch(const BinaryConstraint& c, NotNull constraint, bool force); bool tryDispatch(const IterableConstraint& c, NotNull constraint, bool force); bool tryDispatch(const NameConstraint& c, NotNull constraint); bool tryDispatch(const TypeAliasExpansionConstraint& c, NotNull constraint); @@ -124,6 +122,7 @@ struct ConstraintSolver bool tryDispatch(const SingletonOrTopTypeConstraint& c, NotNull constraint); bool tryDispatch(const UnpackConstraint& c, NotNull constraint); bool tryDispatch(const RefineConstraint& c, NotNull constraint, bool force); + bool tryDispatch(const SetOpConstraint& c, NotNull constraint, bool force); bool tryDispatch(const ReduceConstraint& c, NotNull constraint, bool force); bool tryDispatch(const ReducePackConstraint& c, NotNull constraint, bool force); diff --git a/Analysis/include/Luau/DataFlowGraph.h b/Analysis/include/Luau/DataFlowGraph.h index 63be6b94..34a0484a 100644 --- a/Analysis/include/Luau/DataFlowGraph.h +++ b/Analysis/include/Luau/DataFlowGraph.h @@ -3,29 +3,46 @@ // Do not include LValue. It should never be used here. #include "Luau/Ast.h" -#include "Luau/Breadcrumb.h" #include "Luau/DenseHash.h" #include "Luau/Def.h" #include "Luau/Symbol.h" +#include "Luau/TypedAllocator.h" #include namespace Luau { +struct RefinementKey +{ + const RefinementKey* parent = nullptr; + DefId def; + std::optional propName; +}; + +struct RefinementKeyArena +{ + TypedAllocator allocator; + + const RefinementKey* leaf(DefId def); + const RefinementKey* node(const RefinementKey* parent, DefId def, const std::string& propName); +}; + struct DataFlowGraph { DataFlowGraph(DataFlowGraph&&) = default; DataFlowGraph& operator=(DataFlowGraph&&) = default; - NullableBreadcrumbId getBreadcrumb(const AstExpr* expr) const; + DefId getDef(const AstExpr* expr) const; + // Look up for the rvalue breadcrumb for a compound assignment. + std::optional getRValueDefForCompoundAssign(const AstExpr* expr) const; - BreadcrumbId getBreadcrumb(const AstLocal* local) const; - BreadcrumbId getBreadcrumb(const AstExprLocal* local) const; - BreadcrumbId getBreadcrumb(const AstExprGlobal* global) const; + DefId getDef(const AstLocal* local) const; - BreadcrumbId getBreadcrumb(const AstStatDeclareGlobal* global) const; - BreadcrumbId getBreadcrumb(const AstStatDeclareFunction* func) const; + DefId getDef(const AstStatDeclareGlobal* global) const; + DefId getDef(const AstStatDeclareFunction* func) const; + + const RefinementKey* getRefinementKey(const AstExpr* expr) const; private: DataFlowGraph() = default; @@ -33,17 +50,23 @@ private: DataFlowGraph(const DataFlowGraph&) = delete; DataFlowGraph& operator=(const DataFlowGraph&) = delete; - DefArena defs; - BreadcrumbArena breadcrumbs; + DefArena defArena; + RefinementKeyArena keyArena; - DenseHashMap astBreadcrumbs{nullptr}; + DenseHashMap astDefs{nullptr}; // Sometimes we don't have the AstExprLocal* but we have AstLocal*, and sometimes we need to extract that DefId. - DenseHashMap localBreadcrumbs{nullptr}; + DenseHashMap localDefs{nullptr}; // There's no AstStatDeclaration, and it feels useless to introduce it just to enforce an invariant in one place. // All keys in this maps are really only statements that ambiently declares a symbol. - DenseHashMap declaredBreadcrumbs{nullptr}; + DenseHashMap declaredDefs{nullptr}; + + // Compound assignments are in a weird situation where the local being assigned to is also being used at its + // previous type implicitly in an rvalue position. This map provides the previous binding. + DenseHashMap compoundAssignBreadcrumbs{nullptr}; + + DenseHashMap astRefinementKeys{nullptr}; friend struct DataFlowGraphBuilder; }; @@ -51,15 +74,19 @@ private: struct DfgScope { DfgScope* parent; - DenseHashMap bindings{Symbol{}}; - DenseHashMap> props{nullptr}; + DenseHashMap bindings{Symbol{}}; + DenseHashMap> props{nullptr}; - NullableBreadcrumbId lookup(Symbol symbol) const; - NullableBreadcrumbId lookup(DefId def, const std::string& key) const; + std::optional lookup(Symbol symbol) const; + std::optional lookup(DefId def, const std::string& key) const; +}; + +struct DataFlowResult +{ + DefId def; + const RefinementKey* parent = nullptr; }; -// Currently unsound. We do not presently track the control flow of the program. -// Additionally, we do not presently track assignments. struct DataFlowGraphBuilder { static DataFlowGraph build(AstStatBlock* root, NotNull handle); @@ -71,8 +98,8 @@ private: DataFlowGraphBuilder& operator=(const DataFlowGraphBuilder&) = delete; DataFlowGraph graph; - NotNull defs{&graph.defs}; - NotNull breadcrumbs{&graph.breadcrumbs}; + NotNull defArena{&graph.defArena}; + NotNull keyArena{&graph.keyArena}; struct InternalErrorReporter* handle = nullptr; DfgScope* moduleScope = nullptr; @@ -105,27 +132,28 @@ private: void visit(DfgScope* scope, AstStatDeclareClass* d); void visit(DfgScope* scope, AstStatError* error); - BreadcrumbId visitExpr(DfgScope* scope, AstExpr* e); - BreadcrumbId visitExpr(DfgScope* scope, AstExprLocal* l); - BreadcrumbId visitExpr(DfgScope* scope, AstExprGlobal* g); - BreadcrumbId visitExpr(DfgScope* scope, AstExprCall* c); - BreadcrumbId visitExpr(DfgScope* scope, AstExprIndexName* i); - BreadcrumbId visitExpr(DfgScope* scope, AstExprIndexExpr* i); - BreadcrumbId visitExpr(DfgScope* scope, AstExprFunction* f); - BreadcrumbId visitExpr(DfgScope* scope, AstExprTable* t); - BreadcrumbId visitExpr(DfgScope* scope, AstExprUnary* u); - BreadcrumbId visitExpr(DfgScope* scope, AstExprBinary* b); - BreadcrumbId visitExpr(DfgScope* scope, AstExprTypeAssertion* t); - BreadcrumbId visitExpr(DfgScope* scope, AstExprIfElse* i); - BreadcrumbId visitExpr(DfgScope* scope, AstExprInterpString* i); - BreadcrumbId visitExpr(DfgScope* scope, AstExprError* error); + DataFlowResult visitExpr(DfgScope* scope, AstExpr* e); + DataFlowResult visitExpr(DfgScope* scope, AstExprGroup* group); + DataFlowResult visitExpr(DfgScope* scope, AstExprLocal* l); + DataFlowResult visitExpr(DfgScope* scope, AstExprGlobal* g); + DataFlowResult visitExpr(DfgScope* scope, AstExprCall* c); + DataFlowResult visitExpr(DfgScope* scope, AstExprIndexName* i); + DataFlowResult visitExpr(DfgScope* scope, AstExprIndexExpr* i); + DataFlowResult visitExpr(DfgScope* scope, AstExprFunction* f); + DataFlowResult visitExpr(DfgScope* scope, AstExprTable* t); + DataFlowResult visitExpr(DfgScope* scope, AstExprUnary* u); + DataFlowResult visitExpr(DfgScope* scope, AstExprBinary* b); + DataFlowResult visitExpr(DfgScope* scope, AstExprTypeAssertion* t); + DataFlowResult visitExpr(DfgScope* scope, AstExprIfElse* i); + DataFlowResult visitExpr(DfgScope* scope, AstExprInterpString* i); + DataFlowResult visitExpr(DfgScope* scope, AstExprError* error); - void visitLValue(DfgScope* scope, AstExpr* e, BreadcrumbId bc); - void visitLValue(DfgScope* scope, AstExprLocal* l, BreadcrumbId bc); - void visitLValue(DfgScope* scope, AstExprGlobal* g, BreadcrumbId bc); - void visitLValue(DfgScope* scope, AstExprIndexName* i, BreadcrumbId bc); - void visitLValue(DfgScope* scope, AstExprIndexExpr* i, BreadcrumbId bc); - void visitLValue(DfgScope* scope, AstExprError* e, BreadcrumbId bc); + void visitLValue(DfgScope* scope, AstExpr* e, DefId incomingDef, bool isCompoundAssignment = false); + void visitLValue(DfgScope* scope, AstExprLocal* l, DefId incomingDef, bool isCompoundAssignment); + void visitLValue(DfgScope* scope, AstExprGlobal* g, DefId incomingDef, bool isCompoundAssignment); + void visitLValue(DfgScope* scope, AstExprIndexName* i, DefId incomingDef); + void visitLValue(DfgScope* scope, AstExprIndexExpr* i, DefId incomingDef); + void visitLValue(DfgScope* scope, AstExprError* e, DefId incomingDef); void visitType(DfgScope* scope, AstType* t); void visitType(DfgScope* scope, AstTypeReference* r); diff --git a/Analysis/include/Luau/Def.h b/Analysis/include/Luau/Def.h index 10d81367..0a286ae9 100644 --- a/Analysis/include/Luau/Def.h +++ b/Analysis/include/Luau/Def.h @@ -23,6 +23,7 @@ using DefId = NotNull; */ struct Cell { + bool subscripted = false; }; /** @@ -71,11 +72,13 @@ const T* get(DefId def) return get_if(&def->v); } +bool containsSubscriptedDefinition(DefId def); + struct DefArena { TypedAllocator allocator; - DefId freshCell(); + DefId freshCell(bool subscripted = false); // TODO: implement once we have cases where we need to merge in definitions // DefId phi(const std::vector& defs); }; diff --git a/Analysis/include/Luau/Differ.h b/Analysis/include/Luau/Differ.h index 43c44b71..587ed5ae 100644 --- a/Analysis/include/Luau/Differ.h +++ b/Analysis/include/Luau/Differ.h @@ -2,11 +2,12 @@ #pragma once #include "Luau/DenseHash.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/UnifierSharedState.h" + #include #include -#include +#include namespace Luau { diff --git a/Analysis/include/Luau/Error.h b/Analysis/include/Luau/Error.h index 71442fb1..4b6c64c3 100644 --- a/Analysis/include/Luau/Error.h +++ b/Analysis/include/Luau/Error.h @@ -5,6 +5,9 @@ #include "Luau/NotNull.h" #include "Luau/Type.h" #include "Luau/Variant.h" +#include "Luau/Ast.h" + +#include namespace Luau { diff --git a/Analysis/include/Luau/GlobalTypes.h b/Analysis/include/Luau/GlobalTypes.h index 7a34f935..55a6d6c7 100644 --- a/Analysis/include/Luau/GlobalTypes.h +++ b/Analysis/include/Luau/GlobalTypes.h @@ -6,12 +6,11 @@ #include "Luau/NotNull.h" #include "Luau/Scope.h" #include "Luau/TypeArena.h" +#include "Luau/TypeFwd.h" namespace Luau { -struct BuiltinTypes; - struct GlobalTypes { explicit GlobalTypes(NotNull builtinTypes); diff --git a/Analysis/include/Luau/Instantiation.h b/Analysis/include/Luau/Instantiation.h index 1dbf6b67..2122f0fa 100644 --- a/Analysis/include/Luau/Instantiation.h +++ b/Analysis/include/Luau/Instantiation.h @@ -3,13 +3,12 @@ #include "Luau/NotNull.h" #include "Luau/Substitution.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/Unifiable.h" namespace Luau { -struct BuiltinTypes; struct TxnLog; struct TypeArena; struct TypeCheckLimits; diff --git a/Analysis/include/Luau/IostreamHelpers.h b/Analysis/include/Luau/IostreamHelpers.h index 42b362be..a16455df 100644 --- a/Analysis/include/Luau/IostreamHelpers.h +++ b/Analysis/include/Luau/IostreamHelpers.h @@ -5,6 +5,7 @@ #include "Luau/Location.h" #include "Luau/Type.h" #include "Luau/Ast.h" +#include "Luau/TypePath.h" #include @@ -48,4 +49,14 @@ std::ostream& operator<<(std::ostream& lhs, const TypePackVar& tv); std::ostream& operator<<(std::ostream& lhs, const TypeErrorData& ted); +std::ostream& operator<<(std::ostream& lhs, TypeId ty); +std::ostream& operator<<(std::ostream& lhs, TypePackId tp); + +namespace TypePath +{ + +std::ostream& operator<<(std::ostream& lhs, const Path& path); + +}; // namespace TypePath + } // namespace Luau diff --git a/Analysis/include/Luau/LValue.h b/Analysis/include/Luau/LValue.h index 9a8b863b..e20d9901 100644 --- a/Analysis/include/Luau/LValue.h +++ b/Analysis/include/Luau/LValue.h @@ -3,6 +3,7 @@ #include "Luau/Variant.h" #include "Luau/Symbol.h" +#include "Luau/TypeFwd.h" #include #include @@ -10,9 +11,6 @@ namespace Luau { -struct Type; -using TypeId = const Type*; - struct Field; // Deprecated. Do not use in new work. diff --git a/Analysis/include/Luau/Normalize.h b/Analysis/include/Luau/Normalize.h index 0f9352d1..ebb80e0f 100644 --- a/Analysis/include/Luau/Normalize.h +++ b/Analysis/include/Luau/Normalize.h @@ -2,10 +2,15 @@ #pragma once #include "Luau/NotNull.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/UnifierSharedState.h" +#include +#include #include +#include +#include +#include namespace Luau { @@ -13,7 +18,6 @@ namespace Luau struct InternalErrorReporter; struct Module; struct Scope; -struct BuiltinTypes; using ModulePtr = std::shared_ptr; @@ -33,10 +37,15 @@ public: using iterator = std::vector::iterator; using const_iterator = std::vector::const_iterator; - TypeIds(const TypeIds&) = default; - TypeIds(TypeIds&&) = default; TypeIds() = default; ~TypeIds() = default; + + TypeIds(std::initializer_list tys); + + TypeIds(const TypeIds&) = default; + TypeIds& operator=(const TypeIds&) = default; + + TypeIds(TypeIds&&) = default; TypeIds& operator=(TypeIds&&) = default; void insert(TypeId ty); diff --git a/Analysis/include/Luau/Predicate.h b/Analysis/include/Luau/Predicate.h index 50fd7edd..52ee1f29 100644 --- a/Analysis/include/Luau/Predicate.h +++ b/Analysis/include/Luau/Predicate.h @@ -4,15 +4,13 @@ #include "Luau/Location.h" #include "Luau/LValue.h" #include "Luau/Variant.h" +#include "Luau/TypeFwd.h" #include namespace Luau { -struct Type; -using TypeId = const Type*; - struct TruthyPredicate; struct IsAPredicate; struct TypeGuardPredicate; diff --git a/Analysis/include/Luau/Quantify.h b/Analysis/include/Luau/Quantify.h index b562c54c..bae3751d 100644 --- a/Analysis/include/Luau/Quantify.h +++ b/Analysis/include/Luau/Quantify.h @@ -1,10 +1,12 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/DenseHash.h" +#include "Luau/Unifiable.h" #include +#include namespace Luau { diff --git a/Analysis/include/Luau/Refinement.h b/Analysis/include/Luau/Refinement.h index fecf459a..3fea7868 100644 --- a/Analysis/include/Luau/Refinement.h +++ b/Analysis/include/Luau/Refinement.h @@ -4,14 +4,13 @@ #include "Luau/NotNull.h" #include "Luau/TypedAllocator.h" #include "Luau/Variant.h" +#include "Luau/TypeFwd.h" namespace Luau { -using BreadcrumbId = NotNull; - -struct Type; -using TypeId = const Type*; +struct RefinementKey; +using DefId = NotNull; struct Variadic; struct Negation; @@ -52,7 +51,7 @@ struct Equivalence struct Proposition { - BreadcrumbId breadcrumb; + const RefinementKey* key; TypeId discriminantTy; }; @@ -69,7 +68,7 @@ struct RefinementArena RefinementId conjunction(RefinementId lhs, RefinementId rhs); RefinementId disjunction(RefinementId lhs, RefinementId rhs); RefinementId equivalence(RefinementId lhs, RefinementId rhs); - RefinementId proposition(BreadcrumbId breadcrumb, TypeId discriminantTy); + RefinementId proposition(const RefinementKey* key, TypeId discriminantTy); private: TypedAllocator allocator; diff --git a/Analysis/include/Luau/Scope.h b/Analysis/include/Luau/Scope.h index a0b115ad..8cdffcb4 100644 --- a/Analysis/include/Luau/Scope.h +++ b/Analysis/include/Luau/Scope.h @@ -2,9 +2,13 @@ #pragma once #include "Luau/Def.h" +#include "Luau/LValue.h" #include "Luau/Location.h" #include "Luau/NotNull.h" #include "Luau/Type.h" +#include "Luau/DenseHash.h" +#include "Luau/Symbol.h" +#include "Luau/Unifiable.h" #include #include @@ -54,6 +58,7 @@ struct Scope std::optional lookup(Symbol sym) const; std::optional lookupLValue(DefId def) const; std::optional lookup(DefId def) const; + std::optional> lookupEx(DefId def); std::optional> lookupEx(Symbol sym); std::optional lookupType(const Name& name) const; diff --git a/Analysis/include/Luau/Simplify.h b/Analysis/include/Luau/Simplify.h index 27ed44f8..064648d7 100644 --- a/Analysis/include/Luau/Simplify.h +++ b/Analysis/include/Luau/Simplify.h @@ -2,7 +2,8 @@ #pragma once -#include "Luau/Type.h" +#include "Luau/NotNull.h" +#include "Luau/TypeFwd.h" #include @@ -10,7 +11,6 @@ namespace Luau { struct TypeArena; -struct BuiltinTypes; struct SimplifyResult { diff --git a/Analysis/include/Luau/Substitution.h b/Analysis/include/Luau/Substitution.h index b18c6484..d4c0f166 100644 --- a/Analysis/include/Luau/Substitution.h +++ b/Analysis/include/Luau/Substitution.h @@ -2,8 +2,7 @@ #pragma once #include "Luau/TypeArena.h" -#include "Luau/TypePack.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/DenseHash.h" // We provide an implementation of substitution on types, diff --git a/Analysis/include/Luau/Subtyping.h b/Analysis/include/Luau/Subtyping.h index f8aa584d..321563e7 100644 --- a/Analysis/include/Luau/Subtyping.h +++ b/Analysis/include/Luau/Subtyping.h @@ -1,10 +1,10 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once -#include "Luau/Type.h" -#include "Luau/TypePack.h" +#include "Luau/TypeFwd.h" #include "Luau/TypePairHash.h" #include "Luau/UnifierSharedState.h" +#include "Luau/TypePath.h" #include #include @@ -23,6 +23,13 @@ struct NormalizedClassType; struct NormalizedStringType; struct NormalizedFunctionType; +struct SubtypingReasoning +{ + Path subPath; + Path superPath; + + bool operator==(const SubtypingReasoning& other) const; +}; struct SubtypingResult { @@ -31,8 +38,18 @@ struct SubtypingResult bool normalizationTooComplex = false; bool isCacheable = true; + /// The reason for isSubtype to be false. May not be present even if + /// isSubtype is false, depending on the input types. + std::optional reasoning; + SubtypingResult& andAlso(const SubtypingResult& other); SubtypingResult& orElse(const SubtypingResult& other); + SubtypingResult& withBothComponent(TypePath::Component component); + SubtypingResult& withSuperComponent(TypePath::Component component); + SubtypingResult& withSubComponent(TypePath::Component component); + SubtypingResult& withBothPath(TypePath::Path path); + SubtypingResult& withSubPath(TypePath::Path path); + SubtypingResult& withSuperPath(TypePath::Path path); // Only negates the `isSubtype`. static SubtypingResult negate(const SubtypingResult& result); diff --git a/Analysis/include/Luau/ToDot.h b/Analysis/include/Luau/ToDot.h index 1a9c2811..6fa99ec3 100644 --- a/Analysis/include/Luau/ToDot.h +++ b/Analysis/include/Luau/ToDot.h @@ -2,16 +2,12 @@ #pragma once #include "Luau/Common.h" +#include "Luau/TypeFwd.h" #include namespace Luau { -struct Type; -using TypeId = const Type*; - -struct TypePackVar; -using TypePackId = const TypePackVar*; struct ToDotOptions { diff --git a/Analysis/include/Luau/ToString.h b/Analysis/include/Luau/ToString.h index a256e12f..091d8dd1 100644 --- a/Analysis/include/Luau/ToString.h +++ b/Analysis/include/Luau/ToString.h @@ -2,6 +2,7 @@ #pragma once #include "Luau/Common.h" +#include "Luau/TypeFwd.h" #include #include @@ -20,13 +21,6 @@ class AstExpr; struct Scope; -struct Type; -using TypeId = const Type*; - -struct TypePackVar; -using TypePackId = const TypePackVar*; - -struct FunctionType; struct Constraint; struct Position; @@ -149,4 +143,14 @@ std::string generateName(size_t n); std::string toString(const Position& position); std::string toString(const Location& location, int offset = 0, bool useBegin = true); +std::string toString(const TypeOrPack& tyOrTp, ToStringOptions& opts); + +inline std::string toString(const TypeOrPack& tyOrTp) +{ + ToStringOptions opts{}; + return toString(tyOrTp, opts); +} + +std::string dump(const TypeOrPack& tyOrTp); + } // namespace Luau diff --git a/Analysis/include/Luau/Type.h b/Analysis/include/Luau/Type.h index 2eb7d749..9b8564fb 100644 --- a/Analysis/include/Luau/Type.h +++ b/Analysis/include/Luau/Type.h @@ -1,6 +1,8 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once +#include "Luau/TypeFwd.h" + #include "Luau/Ast.h" #include "Luau/Common.h" #include "Luau/Refinement.h" @@ -9,6 +11,7 @@ #include "Luau/Predicate.h" #include "Luau/Unifiable.h" #include "Luau/Variant.h" +#include "Luau/TypeFwd.h" #include #include @@ -59,22 +62,6 @@ struct TypeFamily; * ``` */ -// So... why `const T*` here rather than `T*`? -// It's because we've had problems caused by the type graph being mutated -// in ways it shouldn't be, for example mutating types from other modules. -// To try to control this, we make the use of types immutable by default, -// then provide explicit mutable access via getMutable and asMutable. -// This means we can grep for all the places we're mutating the type graph, -// and it makes it possible to provide other APIs (e.g. the txn log) -// which control mutable access to the type graph. -struct TypePackVar; -using TypePackId = const TypePackVar*; - -struct Type; - -// Should never be null -using TypeId = const Type*; - using Name = std::string; // A free type is one whose exact shape has yet to be fully determined. @@ -244,22 +231,6 @@ const T* get(const SingletonType* stv) return nullptr; } -struct GenericTypeDefinition -{ - TypeId ty; - std::optional defaultValue; - - bool operator==(const GenericTypeDefinition& rhs) const; -}; - -struct GenericTypePackDefinition -{ - TypePackId tp; - std::optional defaultValue; - - bool operator==(const GenericTypePackDefinition& rhs) const; -}; - struct FunctionArgument { Name name; @@ -549,42 +520,6 @@ struct TypeFamilyInstanceType std::vector packArguments; }; -struct TypeFun -{ - // These should all be generic - std::vector typeParams; - std::vector typePackParams; - - /** The underlying type. - * - * WARNING! This is not safe to use as a type if typeParams is not empty!! - * You must first use TypeChecker::instantiateTypeFun to turn it into a real type. - */ - TypeId type; - - TypeFun() = default; - - explicit TypeFun(TypeId ty) - : type(ty) - { - } - - TypeFun(std::vector typeParams, TypeId type) - : typeParams(std::move(typeParams)) - , type(type) - { - } - - TypeFun(std::vector typeParams, std::vector typePackParams, TypeId type) - : typeParams(std::move(typeParams)) - , typePackParams(std::move(typePackParams)) - , type(type) - { - } - - bool operator==(const TypeFun& rhs) const; -}; - /** Represents a pending type alias instantiation. * * In order to afford (co)recursive type aliases, we need to reason about a @@ -729,6 +664,58 @@ struct Type final Type& operator=(const Type& rhs); }; +struct GenericTypeDefinition +{ + TypeId ty; + std::optional defaultValue; + + bool operator==(const GenericTypeDefinition& rhs) const; +}; + +struct GenericTypePackDefinition +{ + TypePackId tp; + std::optional defaultValue; + + bool operator==(const GenericTypePackDefinition& rhs) const; +}; + +struct TypeFun +{ + // These should all be generic + std::vector typeParams; + std::vector typePackParams; + + /** The underlying type. + * + * WARNING! This is not safe to use as a type if typeParams is not empty!! + * You must first use TypeChecker::instantiateTypeFun to turn it into a real type. + */ + TypeId type; + + TypeFun() = default; + + explicit TypeFun(TypeId ty) + : type(ty) + { + } + + TypeFun(std::vector typeParams, TypeId type) + : typeParams(std::move(typeParams)) + , type(type) + { + } + + TypeFun(std::vector typeParams, std::vector typePackParams, TypeId type) + : typeParams(std::move(typeParams)) + , typePackParams(std::move(typePackParams)) + , type(type) + { + } + + bool operator==(const TypeFun& rhs) const; +}; + using SeenSet = std::set>; bool areEqual(SeenSet& seen, const Type& lhs, const Type& rhs); diff --git a/Analysis/include/Luau/TypeFamily.h b/Analysis/include/Luau/TypeFamily.h index ede104b9..4a736647 100644 --- a/Analysis/include/Luau/TypeFamily.h +++ b/Analysis/include/Luau/TypeFamily.h @@ -1,13 +1,12 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once -#include "ConstraintSolver.h" -#include "Error.h" +#include "Luau/ConstraintSolver.h" #include "Luau/Error.h" #include "Luau/NotNull.h" +#include "Luau/TypeCheckLimits.h" +#include "Luau/TypeFwd.h" #include "Luau/Variant.h" -#include "NotNull.h" -#include "TypeCheckLimits.h" #include #include @@ -16,14 +15,7 @@ namespace Luau { -struct Type; -using TypeId = const Type*; - -struct TypePackVar; -using TypePackId = const TypePackVar*; - struct TypeArena; -struct BuiltinTypes; struct TxnLog; class Normalizer; @@ -150,6 +142,8 @@ struct BuiltinTypeFamilies BuiltinTypeFamilies(); TypeFamily notFamily; + TypeFamily lenFamily; + TypeFamily unmFamily; TypeFamily addFamily; TypeFamily subFamily; diff --git a/Analysis/include/Luau/TypeFwd.h b/Analysis/include/Luau/TypeFwd.h new file mode 100644 index 00000000..e4318156 --- /dev/null +++ b/Analysis/include/Luau/TypeFwd.h @@ -0,0 +1,59 @@ +// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details +#pragma once + +#include "Luau/Variant.h" + +#include + +namespace Luau +{ + +// So... why `const T*` here rather than `T*`? +// It's because we've had problems caused by the type graph being mutated +// in ways it shouldn't be, for example mutating types from other modules. +// To try to control this, we make the use of types immutable by default, +// then provide explicit mutable access via getMutable and asMutable. +// This means we can grep for all the places we're mutating the type graph, +// and it makes it possible to provide other APIs (e.g. the txn log) +// which control mutable access to the type graph. + +struct Type; +using TypeId = const Type*; + +struct FreeType; +struct GenericType; +struct PrimitiveType; +struct BlockedType; +struct PendingExpansionType; +struct SingletonType; +struct FunctionType; +struct TableType; +struct MetatableType; +struct ClassType; +struct AnyType; +struct UnionType; +struct IntersectionType; +struct LazyType; +struct UnknownType; +struct NeverType; +struct NegationType; +struct TypeFamilyInstanceType; + +struct TypePackVar; +using TypePackId = const TypePackVar*; + +struct FreeTypePack; +struct GenericTypePack; +struct TypePack; +struct VariadicTypePack; +struct BlockedTypePack; +struct TypeFamilyInstanceTypePack; + +using Name = std::string; +using ModuleName = std::string; + +struct BuiltinTypes; + +using TypeOrPack = Variant; + +} // namespace Luau diff --git a/Analysis/include/Luau/TypeInfer.h b/Analysis/include/Luau/TypeInfer.h index abae8b92..7de01406 100644 --- a/Analysis/include/Luau/TypeInfer.h +++ b/Analysis/include/Luau/TypeInfer.h @@ -9,9 +9,8 @@ #include "Luau/Substitution.h" #include "Luau/Symbol.h" #include "Luau/TxnLog.h" -#include "Luau/Type.h" +#include "Luau/TypeFwd.h" #include "Luau/TypeCheckLimits.h" -#include "Luau/TypePack.h" #include "Luau/TypeUtils.h" #include "Luau/Unifier.h" #include "Luau/UnifierSharedState.h" diff --git a/Analysis/include/Luau/TypeOrPack.h b/Analysis/include/Luau/TypeOrPack.h new file mode 100644 index 00000000..2bdca1df --- /dev/null +++ b/Analysis/include/Luau/TypeOrPack.h @@ -0,0 +1,45 @@ +// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details +#pragma once + +#include "Luau/Type.h" +#include "Luau/TypePack.h" +#include "Luau/Variant.h" + +#include + +namespace Luau +{ + +const void* ptr(TypeOrPack ty); + +template +const T* get(TypeOrPack ty) +{ + if constexpr (std::is_same_v) + return ty.get_if(); + else if constexpr (std::is_same_v) + return ty.get_if(); + else if constexpr (TypeVariant::is_part_of_v) + { + if (auto innerTy = ty.get_if()) + return get(*innerTy); + else + return nullptr; + } + else if constexpr (TypePackVariant::is_part_of_v) + { + if (auto innerTp = ty.get_if()) + return get(*innerTp); + else + return nullptr; + } + else + { + static_assert(always_false_v, "invalid T to get from TypeOrPack"); + LUAU_UNREACHABLE(); + } +} + +TypeOrPack follow(TypeOrPack ty); + +} // namespace Luau diff --git a/Analysis/include/Luau/TypePack.h b/Analysis/include/Luau/TypePack.h index d159aa45..11721f40 100644 --- a/Analysis/include/Luau/TypePack.h +++ b/Analysis/include/Luau/TypePack.h @@ -1,12 +1,15 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once -#include "Luau/Type.h" #include "Luau/Unifiable.h" #include "Luau/Variant.h" +#include "Luau/TypeFwd.h" +#include "Luau/NotNull.h" +#include "Luau/Common.h" #include #include +#include namespace Luau { @@ -20,9 +23,6 @@ struct VariadicTypePack; struct BlockedTypePack; struct TypeFamilyInstanceTypePack; -struct TypePackVar; -using TypePackId = const TypePackVar*; - struct FreeTypePack { explicit FreeTypePack(TypeLevel level); diff --git a/Analysis/include/Luau/TypePairHash.h b/Analysis/include/Luau/TypePairHash.h index 029818ba..5cddebef 100644 --- a/Analysis/include/Luau/TypePairHash.h +++ b/Analysis/include/Luau/TypePairHash.h @@ -1,7 +1,7 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once -#include "Type.h" +#include "Luau/TypeFwd.h" #include diff --git a/Analysis/include/Luau/TypePath.h b/Analysis/include/Luau/TypePath.h new file mode 100644 index 00000000..96fcdcb1 --- /dev/null +++ b/Analysis/include/Luau/TypePath.h @@ -0,0 +1,220 @@ +// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details +#pragma once + +#include "Luau/TypeFwd.h" +#include "Luau/Variant.h" +#include "Luau/NotNull.h" +#include "Luau/TypeOrPack.h" + +#include +#include +#include + +namespace Luau +{ + +namespace TypePath +{ + +/// Represents a property of a class, table, or anything else with a concept of +/// a named property. +struct Property +{ + /// The name of the property. + std::string name; + /// Whether to look at the read or the write type. + bool isRead = true; + + explicit Property(std::string name); + Property(std::string name, bool read) + : name(std::move(name)) + , isRead(read) + { + } + + static Property read(std::string name); + static Property write(std::string name); + + bool operator==(const Property& other) const; +}; + +/// Represents an index into a type or a pack. For a type, this indexes into a +/// union or intersection's list. For a pack, this indexes into the pack's nth +/// element. +struct Index +{ + /// The 0-based index to use for the lookup. + size_t index; + + bool operator==(const Index& other) const; +}; + +/// Represents fields of a type or pack that contain a type. +enum class TypeField +{ + /// The metatable of a type. This could be a metatable type, a primitive + /// type, a class type, or perhaps even a string singleton type. + Metatable, + /// The lower bound of this type, if one is present. + LowerBound, + /// The upper bound of this type, if present. + UpperBound, + /// The index type. + IndexLookup, + /// The indexer result type. + IndexResult, + /// The negated type, for negations. + Negated, + /// The variadic type for a type pack. + Variadic, +}; + +/// Represents fields of a type or type pack that contain a type pack. +enum class PackField +{ + /// What arguments this type accepts. + Arguments, + /// What this type returns when called. + Returns, + /// The tail of a type pack. + Tail, +}; + +/// A single component of a path, representing one inner type or type pack to +/// traverse into. +using Component = Luau::Variant; + +/// A path through a type or type pack accessing a particular type or type pack +/// contained within. +/// +/// Paths are always relative; to make use of a Path, you need to specify an +/// entry point. They are not canonicalized; two Paths may not compare equal but +/// may point to the same result, depending on the layout of the entry point. +/// +/// Paths always descend through an entry point. This doesn't mean that they +/// cannot reach "upwards" in the actual type hierarchy in some cases, but it +/// does mean that there is no equivalent to `../` in file system paths. This is +/// intentional and unavoidable, because types and type packs don't have a +/// concept of a parent - they are a directed cyclic graph, with no hierarchy +/// that actually holds in all cases. +struct Path +{ + /// The Components of this Path. + std::vector components; + + /// Creates a new empty Path. + Path() + { + } + + /// Creates a new Path from a list of components. + explicit Path(std::vector components) + : components(std::move(components)) + { + } + + /// Creates a new single-component Path. + explicit Path(Component component) + : components({component}) + { + } + + /// Creates a new Path by appending another Path to this one. + /// @param suffix the Path to append + /// @return a new Path representing `this + suffix` + Path append(const Path& suffix) const; + + /// Creates a new Path by appending a Component to this Path. + /// @param component the Component to append + /// @return a new Path with `component` appended to it. + Path push(Component component) const; + + /// Creates a new Path by prepending a Component to this Path. + /// @param component the Component to prepend + /// @return a new Path with `component` prepended to it. + Path push_front(Component component) const; + + /// Creates a new Path by removing the last Component of this Path. + /// If the Path is empty, this is a no-op. + /// @return a Path with the last component removed. + Path pop() const; + + /// Returns the last Component of this Path, if present. + std::optional last() const; + + /// Returns whether this Path is empty, meaning it has no components at all. + /// Traversing an empty Path results in the type you started with. + bool empty() const; + + bool operator==(const Path& other) const; + bool operator!=(const Path& other) const + { + return !(*this == other); + } +}; + +/// The canonical "empty" Path, meaning a Path with no components. +static const Path kEmpty{}; + +struct PathBuilder +{ + std::vector components; + + Path build(); + + PathBuilder& readProp(std::string name); + PathBuilder& writeProp(std::string name); + PathBuilder& prop(std::string name); + PathBuilder& index(size_t i); + PathBuilder& mt(); + PathBuilder& lb(); + PathBuilder& ub(); + PathBuilder& indexKey(); + PathBuilder& indexValue(); + PathBuilder& negated(); + PathBuilder& variadic(); + PathBuilder& args(); + PathBuilder& rets(); + PathBuilder& tail(); +}; + +} // namespace TypePath + +using Path = TypePath::Path; + +/// Converts a Path to a string for debugging purposes. This output may not be +/// terribly clear to end users of the Luau type system. +std::string toString(const TypePath::Path& path); + +std::optional traverse(TypeId root, const Path& path, NotNull builtinTypes); +std::optional traverse(TypePackId root, const Path& path, NotNull builtinTypes); + +/// Traverses a path from a type to its end point, which must be a type. +/// @param root the entry point of the traversal +/// @param path the path to traverse +/// @param builtinTypes the built-in types in use (used to acquire the string metatable) +/// @returns the TypeId at the end of the path, or nullopt if the traversal failed. +std::optional traverseForType(TypeId root, const Path& path, NotNull builtinTypes); + +/// Traverses a path from a type pack to its end point, which must be a type. +/// @param root the entry point of the traversal +/// @param path the path to traverse +/// @param builtinTypes the built-in types in use (used to acquire the string metatable) +/// @returns the TypeId at the end of the path, or nullopt if the traversal failed. +std::optional traverseForType(TypePackId root, const Path& path, NotNull builtinTypes); + +/// Traverses a path from a type to its end point, which must be a type pack. +/// @param root the entry point of the traversal +/// @param path the path to traverse +/// @param builtinTypes the built-in types in use (used to acquire the string metatable) +/// @returns the TypePackId at the end of the path, or nullopt if the traversal failed. +std::optional traverseForPack(TypeId root, const Path& path, NotNull builtinTypes); + +/// Traverses a path from a type pack to its end point, which must be a type pack. +/// @param root the entry point of the traversal +/// @param path the path to traverse +/// @param builtinTypes the built-in types in use (used to acquire the string metatable) +/// @returns the TypePackId at the end of the path, or nullopt if the traversal failed. +std::optional traverseForPack(TypePackId root, const Path& path, NotNull builtinTypes); + +} // namespace Luau diff --git a/Analysis/include/Luau/Unifier.h b/Analysis/include/Luau/Unifier.h index 1260ac93..d1a3b358 100644 --- a/Analysis/include/Luau/Unifier.h +++ b/Analysis/include/Luau/Unifier.h @@ -9,7 +9,7 @@ #include "Luau/TxnLog.h" #include "Luau/TypeArena.h" #include "Luau/UnifierSharedState.h" -#include "Normalize.h" +#include "Luau/Normalize.h" #include diff --git a/Analysis/include/Luau/Unifier2.h b/Analysis/include/Luau/Unifier2.h index 7b6fa608..3d5b5a1a 100644 --- a/Analysis/include/Luau/Unifier2.h +++ b/Analysis/include/Luau/Unifier2.h @@ -4,10 +4,10 @@ #include "Luau/DenseHash.h" #include "Luau/NotNull.h" -#include "Type.h" -#include "TypePairHash.h" -#include "TypeCheckLimits.h" -#include "TypeChecker2.h" +#include "Luau/TypePairHash.h" +#include "Luau/TypeCheckLimits.h" +#include "Luau/TypeChecker2.h" +#include "Luau/TypeFwd.h" #include #include @@ -16,10 +16,6 @@ namespace Luau { -using TypeId = const struct Type*; -using TypePackId = const struct TypePackVar*; - -struct BuiltinTypes; struct InternalErrorReporter; struct Scope; struct TypeArena; diff --git a/Analysis/include/Luau/UnifierSharedState.h b/Analysis/include/Luau/UnifierSharedState.h index ada56ec5..de69c17c 100644 --- a/Analysis/include/Luau/UnifierSharedState.h +++ b/Analysis/include/Luau/UnifierSharedState.h @@ -3,8 +3,7 @@ #include "Luau/DenseHash.h" #include "Luau/Error.h" -#include "Luau/Type.h" -#include "Luau/TypePack.h" +#include "Luau/TypeFwd.h" #include diff --git a/Analysis/include/Luau/Variant.h b/Analysis/include/Luau/Variant.h index 95fdfac4..eeaa2c01 100644 --- a/Analysis/include/Luau/Variant.h +++ b/Analysis/include/Luau/Variant.h @@ -44,6 +44,9 @@ private: public: using first_alternative = typename First::type; + template + static constexpr bool is_part_of_v = std::disjunction_v, T>...>; + Variant() { static_assert(std::is_default_constructible_v, "first alternative type must be default constructible"); diff --git a/Analysis/src/Clone.cpp b/Analysis/src/Clone.cpp index 4d6bcf03..01b0bdfd 100644 --- a/Analysis/src/Clone.cpp +++ b/Analysis/src/Clone.cpp @@ -701,6 +701,7 @@ void TypeCloner::operator()(const FunctionType& t) ftv->argNames = t.argNames; ftv->retTypes = clone(t.retTypes, dest, cloneState); ftv->hasNoFreeOrGenericTypes = t.hasNoFreeOrGenericTypes; + ftv->isCheckedFunction = t.isCheckedFunction; } void TypeCloner::operator()(const TableType& t) diff --git a/Analysis/src/ConstraintGraphBuilder.cpp b/Analysis/src/ConstraintGraphBuilder.cpp index 5eb2ce49..4f4ff306 100644 --- a/Analysis/src/ConstraintGraphBuilder.cpp +++ b/Analysis/src/ConstraintGraphBuilder.cpp @@ -2,7 +2,7 @@ #include "Luau/ConstraintGraphBuilder.h" #include "Luau/Ast.h" -#include "Luau/Breadcrumb.h" +#include "Luau/Def.h" #include "Luau/Common.h" #include "Luau/Constraint.h" #include "Luau/ControlFlow.h" @@ -216,19 +216,7 @@ NotNull ConstraintGraphBuilder::addConstraint(const ScopePtr& scope, return NotNull{constraints.emplace_back(std::move(c)).get()}; } -struct RefinementPartition -{ - // Types that we want to intersect against the type of the expression. - std::vector discriminantTypes; - - // Sometimes the type we're discriminating against is implicitly nil. - bool shouldAppendNilType = false; -}; - -using RefinementContext = InsertionOrderedMap; - -static void unionRefinements(NotNull builtinTypes, NotNull arena, const RefinementContext& lhs, const RefinementContext& rhs, - RefinementContext& dest, std::vector* constraints) +void ConstraintGraphBuilder::unionRefinements(const RefinementContext& lhs, const RefinementContext& rhs, RefinementContext& dest, std::vector* constraints) { const auto intersect = [&](const std::vector& types) { if (1 == types.size()) @@ -264,44 +252,43 @@ static void unionRefinements(NotNull builtinTypes, NotNull builtinTypes, NotNull arena, const ScopePtr& scope, RefinementId refinement, - RefinementContext* refis, bool sense, bool eq, std::vector* constraints) +void ConstraintGraphBuilder::computeRefinement(const ScopePtr& scope, RefinementId refinement, RefinementContext* refis, bool sense, bool eq, std::vector* constraints) { if (!refinement) return; else if (auto variadic = get(refinement)) { for (RefinementId refi : variadic->refinements) - computeRefinement(builtinTypes, arena, scope, refi, refis, sense, eq, constraints); + computeRefinement(scope, refi, refis, sense, eq, constraints); } else if (auto negation = get(refinement)) - return computeRefinement(builtinTypes, arena, scope, negation->refinement, refis, !sense, eq, constraints); + return computeRefinement(scope, negation->refinement, refis, !sense, eq, constraints); else if (auto conjunction = get(refinement)) { RefinementContext lhsRefis; RefinementContext rhsRefis; - computeRefinement(builtinTypes, arena, scope, conjunction->lhs, sense ? refis : &lhsRefis, sense, eq, constraints); - computeRefinement(builtinTypes, arena, scope, conjunction->rhs, sense ? refis : &rhsRefis, sense, eq, constraints); + computeRefinement(scope, conjunction->lhs, sense ? refis : &lhsRefis, sense, eq, constraints); + computeRefinement(scope, conjunction->rhs, sense ? refis : &rhsRefis, sense, eq, constraints); if (!sense) - unionRefinements(builtinTypes, arena, lhsRefis, rhsRefis, *refis, constraints); + unionRefinements(lhsRefis, rhsRefis, *refis, constraints); } else if (auto disjunction = get(refinement)) { RefinementContext lhsRefis; RefinementContext rhsRefis; - computeRefinement(builtinTypes, arena, scope, disjunction->lhs, sense ? &lhsRefis : refis, sense, eq, constraints); - computeRefinement(builtinTypes, arena, scope, disjunction->rhs, sense ? &rhsRefis : refis, sense, eq, constraints); + computeRefinement(scope, disjunction->lhs, sense ? &lhsRefis : refis, sense, eq, constraints); + computeRefinement(scope, disjunction->rhs, sense ? &rhsRefis : refis, sense, eq, constraints); if (sense) - unionRefinements(builtinTypes, arena, lhsRefis, rhsRefis, *refis, constraints); + unionRefinements(lhsRefis, rhsRefis, *refis, constraints); } else if (auto equivalence = get(refinement)) { - computeRefinement(builtinTypes, arena, scope, equivalence->lhs, refis, sense, true, constraints); - computeRefinement(builtinTypes, arena, scope, equivalence->rhs, refis, sense, true, constraints); + computeRefinement(scope, equivalence->lhs, refis, sense, true, constraints); + computeRefinement(scope, equivalence->rhs, refis, sense, true, constraints); } else if (auto proposition = get(refinement)) { @@ -314,40 +301,27 @@ static void computeRefinement(NotNull builtinTypes, NotNullpush_back(SingletonOrTopTypeConstraint{discriminantTy, proposition->discriminantTy, !sense}); } - RefinementContext uncommittedRefis; - uncommittedRefis.insert(proposition->breadcrumb->def, {}); - uncommittedRefis.get(proposition->breadcrumb->def)->discriminantTypes.push_back(discriminantTy); + for (const RefinementKey* key = proposition->key; key; key = key->parent) + { + refis->insert(key->def, {}); + refis->get(key->def)->discriminantTypes.push_back(discriminantTy); + + // Reached leaf node + if (!key->propName) + break; + + TypeId nextDiscriminantTy = arena->addType(TableType{}); + NotNull table{getMutable(nextDiscriminantTy)}; + table->props[*key->propName] = {discriminantTy}; + table->scope = scope.get(); + table->state = TableState::Sealed; + + discriminantTy = nextDiscriminantTy; + } // When the top-level expression is `t[x]`, we want to refine it into `nil`, not `never`. - if ((sense || !eq) && getMetadata(proposition->breadcrumb)) - uncommittedRefis.get(proposition->breadcrumb->def)->shouldAppendNilType = true; - - for (NullableBreadcrumbId current = proposition->breadcrumb; current && current->previous; current = current->previous) - { - LUAU_ASSERT(get(current->def)); - - // If this current breadcrumb has no metadata, it's no-op for the purpose of building a discriminant type. - if (!current->metadata) - continue; - else if (auto field = getMetadata(current)) - { - TableType::Props props{{field->prop, Property{discriminantTy}}}; - discriminantTy = arena->addType(TableType{std::move(props), std::nullopt, TypeLevel{}, scope.get(), TableState::Sealed}); - uncommittedRefis.insert(current->previous->def, {}); - uncommittedRefis.get(current->previous->def)->discriminantTypes.push_back(discriminantTy); - } - } - - // And now it's time to commit it. - for (auto& [def, partition] : uncommittedRefis) - { - (*refis).insert(def, {}); - - for (TypeId discriminantTy : partition.discriminantTypes) - (*refis).get(def)->discriminantTypes.push_back(discriminantTy); - - (*refis).get(def)->shouldAppendNilType |= partition.shouldAppendNilType; - } + LUAU_ASSERT(refis->get(proposition->key->def)); + refis->get(proposition->key->def)->shouldAppendNilType = (sense || !eq) && containsSubscriptedDefinition(proposition->key->def); } } @@ -415,7 +389,7 @@ void ConstraintGraphBuilder::applyRefinements(const ScopePtr& scope, Location lo RefinementContext refinements; std::vector constraints; - computeRefinement(builtinTypes, arena, scope, refinement, &refinements, /*sense*/ true, /*eq*/ false, &constraints); + computeRefinement(scope, refinement, &refinements, /*sense*/ true, /*eq*/ false, &constraints); for (auto& [def, partition] : refinements) { @@ -586,20 +560,22 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStat* stat) } } -ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocal* local) +ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocal* statLocal) { std::vector> varTypes; - varTypes.reserve(local->vars.size); + varTypes.reserve(statLocal->vars.size); std::vector assignees; - assignees.reserve(local->vars.size); + assignees.reserve(statLocal->vars.size); // Used to name the first value type, even if it's not placed in varTypes, // for the purpose of synthetic name attribution. std::optional firstValueType; - for (AstLocal* local : local->vars) + for (AstLocal* local : statLocal->vars) { + const Location location = local->location; + TypeId assignee = arena->addType(BlockedType{}); assignees.push_back(assignee); @@ -612,21 +588,27 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocal* l varTypes.push_back(annotationTy); addConstraint(scope, local->location, SubtypeConstraint{assignee, annotationTy}); + + scope->bindings[local] = Binding{annotationTy, location}; } else + { varTypes.push_back(std::nullopt); - BreadcrumbId bc = dfg->getBreadcrumb(local); - scope->lvalueTypes[bc->def] = assignee; + inferredBindings[local] = {scope.get(), location, {assignee}}; + } + + DefId def = dfg->getDef(local); + scope->lvalueTypes[def] = assignee; } - TypePackId resultPack = checkPack(scope, local->values, varTypes).tp; - addConstraint(scope, local->location, UnpackConstraint{arena->addTypePack(std::move(assignees)), resultPack}); + TypePackId resultPack = checkPack(scope, statLocal->values, varTypes).tp; + addConstraint(scope, statLocal->location, UnpackConstraint{arena->addTypePack(std::move(assignees)), resultPack}); - if (local->vars.size == 1 && local->values.size == 1 && firstValueType && scope.get() == rootScope) + if (statLocal->vars.size == 1 && statLocal->values.size == 1 && firstValueType && scope.get() == rootScope) { - AstLocal* var = local->vars.data[0]; - AstExpr* value = local->values.data[0]; + AstLocal* var = statLocal->vars.data[0]; + AstExpr* value = statLocal->values.data[0]; if (value->is()) addConstraint(scope, value->location, NameConstraint{*firstValueType, var->name.value, /*synthetic*/ true}); @@ -639,29 +621,12 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocal* l } } - for (size_t i = 0; i < local->vars.size; ++i) - { - AstLocal* l = local->vars.data[i]; - Location location = l->location; - - std::optional annotation = varTypes[i]; - BreadcrumbId bc = dfg->getBreadcrumb(l); - - if (annotation) - scope->bindings[l] = Binding{*annotation, location}; - else - { - scope->bindings[l] = Binding{builtinTypes->neverType, location}; - inferredBindings.emplace_back(scope.get(), l, bc); - } - } - - if (local->values.size > 0) + if (statLocal->values.size > 0) { // To correctly handle 'require', we need to import the exported type bindings into the variable 'namespace'. - for (size_t i = 0; i < local->values.size && i < local->vars.size; ++i) + for (size_t i = 0; i < statLocal->values.size && i < statLocal->vars.size; ++i) { - const AstExprCall* call = local->values.data[i]->as(); + const AstExprCall* call = statLocal->values.data[i]->as(); if (!call) continue; @@ -679,7 +644,7 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocal* l if (!module) continue; - const Name name{local->vars.data[i]->name.value}; + const Name name{statLocal->vars.data[i]->name.value}; scope->importedTypeBindings[name] = module->exportedTypeBindings; scope->importedModules[name] = moduleInfo->name; @@ -719,9 +684,9 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFor* for ScopePtr forScope = childScope(for_, scope); forScope->bindings[for_->var] = Binding{annotationTy, for_->var->location}; - BreadcrumbId bc = dfg->getBreadcrumb(for_->var); - forScope->lvalueTypes[bc->def] = annotationTy; - forScope->rvalueRefinements[bc->def] = annotationTy; + DefId def = dfg->getDef(for_->var); + forScope->lvalueTypes[def] = annotationTy; + forScope->rvalueRefinements[def] = annotationTy; visit(forScope, for_->body); @@ -750,8 +715,8 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatForIn* f TypeId assignee = arena->addType(BlockedType{}); variableTypes.push_back(assignee); - BreadcrumbId bc = dfg->getBreadcrumb(var); - loopScope->lvalueTypes[bc->def] = assignee; + DefId def = dfg->getDef(var); + loopScope->lvalueTypes[def] = assignee; } TypePackId variablePack = arena->addTypePack(std::move(variableTypes)); @@ -803,11 +768,11 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatLocalFun FunctionSignature sig = checkFunctionSignature(scope, function->func, /* expectedType */ std::nullopt, function->name->location); sig.bodyScope->bindings[function->name] = Binding{sig.signature, function->func->location}; - BreadcrumbId bc = dfg->getBreadcrumb(function->name); - scope->lvalueTypes[bc->def] = functionType; - scope->rvalueRefinements[bc->def] = functionType; - sig.bodyScope->lvalueTypes[bc->def] = sig.signature; - sig.bodyScope->rvalueRefinements[bc->def] = sig.signature; + DefId def = dfg->getDef(function->name); + scope->lvalueTypes[def] = functionType; + scope->rvalueRefinements[def] = functionType; + sig.bodyScope->lvalueTypes[def] = sig.signature; + sig.bodyScope->rvalueRefinements[def] = sig.signature; Checkpoint start = checkpoint(this); checkFunctionBody(sig.bodyScope, function->func); @@ -848,11 +813,8 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFunction std::unordered_set excludeList; - const NullableBreadcrumbId functionBreadcrumb = dfg->getBreadcrumb(function->name); - - std::optional existingFunctionTy; - if (functionBreadcrumb) - existingFunctionTy = scope->lookupLValue(functionBreadcrumb->def); + DefId def = dfg->getDef(function->name); + std::optional existingFunctionTy = scope->lookupLValue(def); if (AstExprLocal* localName = function->name->as()) { @@ -867,12 +829,8 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFunction scope->bindings[localName->local] = Binding{generalizedType, localName->location}; sig.bodyScope->bindings[localName->local] = Binding{sig.signature, localName->location}; - - if (functionBreadcrumb) - { - sig.bodyScope->lvalueTypes[functionBreadcrumb->def] = sig.signature; - sig.bodyScope->rvalueRefinements[functionBreadcrumb->def] = sig.signature; - } + sig.bodyScope->lvalueTypes[def] = sig.signature; + sig.bodyScope->rvalueRefinements[def] = sig.signature; } else if (AstExprGlobal* globalName = function->name->as()) { @@ -882,17 +840,14 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFunction generalizedType = *existingFunctionTy; sig.bodyScope->bindings[globalName->name] = Binding{sig.signature, globalName->location}; - - if (functionBreadcrumb) - { - sig.bodyScope->lvalueTypes[functionBreadcrumb->def] = sig.signature; - sig.bodyScope->rvalueRefinements[functionBreadcrumb->def] = sig.signature; - } + sig.bodyScope->lvalueTypes[def] = sig.signature; + sig.bodyScope->rvalueRefinements[def] = sig.signature; } else if (AstExprIndexName* indexName = function->name->as()) { Checkpoint check1 = checkpoint(this); - TypeId lvalueType = checkLValue(scope, indexName); + std::optional lvalueType = checkLValue(scope, indexName); + LUAU_ASSERT(lvalueType); Checkpoint check2 = checkpoint(this); forEachConstraint(check1, check2, this, [&excludeList](const ConstraintPtr& c) { @@ -901,10 +856,13 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFunction // TODO figure out how to populate the location field of the table Property. - if (get(lvalueType)) - asMutable(lvalueType)->ty.emplace(generalizedType); - else - addConstraint(scope, indexName->location, SubtypeConstraint{lvalueType, generalizedType}); + if (lvalueType) + { + if (get(*lvalueType)) + asMutable(*lvalueType)->ty.emplace(generalizedType); + else + addConstraint(scope, indexName->location, SubtypeConstraint{*lvalueType, generalizedType}); + } } else if (AstExprError* err = function->name->as()) { @@ -914,8 +872,7 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatFunction if (generalizedType == nullptr) ice->ice("generalizedType == nullptr", function->location); - if (functionBreadcrumb) - scope->rvalueRefinements[functionBreadcrumb->def] = generalizedType; + scope->rvalueRefinements[def] = generalizedType; checkFunctionBody(sig.bodyScope, function->func); Checkpoint end = checkpoint(this); @@ -997,18 +954,23 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatAssign* for (AstExpr* lvalue : assign->vars) { - TypeId upperBound = follow(checkLValue(scope, lvalue)); - if (get(upperBound)) - expectedTypes.push_back(std::nullopt); - else - expectedTypes.push_back(upperBound); - TypeId assignee = arena->addType(BlockedType{}); assignees.push_back(assignee); - addConstraint(scope, lvalue->location, SubtypeConstraint{assignee, upperBound}); - if (NullableBreadcrumbId bc = dfg->getBreadcrumb(lvalue)) - scope->lvalueTypes[bc->def] = assignee; + std::optional upperBound = follow(checkLValue(scope, lvalue)); + if (upperBound) + { + if (get(*upperBound)) + expectedTypes.push_back(std::nullopt); + else + expectedTypes.push_back(*upperBound); + + addConstraint(scope, lvalue->location, SubtypeConstraint{assignee, *upperBound}); + } + + DefId def = dfg->getDef(lvalue); + scope->lvalueTypes[def] = assignee; + updateLValueType(lvalue, assignee); } TypePackId resultPack = checkPack(scope, assign->values, expectedTypes).tp; @@ -1019,15 +981,15 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatAssign* ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatCompoundAssign* assign) { - // We need to tweak the BinaryConstraint that we emit, so we cannot use the - // strategy of falsifying an AST fragment. - TypeId varTy = checkLValue(scope, assign->var); - TypeId valueTy = check(scope, assign->value).ty; + std::optional varTy = checkLValue(scope, assign->var); - TypeId resultType = arena->addType(BlockedType{}); - addConstraint(scope, assign->location, - BinaryConstraint{assign->op, varTy, valueTy, resultType, assign, &module->astOriginalCallTypes, &module->astOverloadResolvedTypes}); - addConstraint(scope, assign->location, SubtypeConstraint{resultType, varTy}); + AstExprBinary binop = AstExprBinary{assign->location, assign->op, assign->var, assign->value}; + TypeId resultTy = check(scope, &binop).ty; + if (varTy) + addConstraint(scope, assign->location, SubtypeConstraint{resultTy, *varTy}); + + DefId def = dfg->getDef(assign->var); + scope->lvalueTypes[def] = resultTy; return ControlFlow::None; } @@ -1138,9 +1100,9 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatDeclareG module->declaredGlobals[globalName] = globalTy; rootScope->bindings[global->name] = Binding{globalTy, global->location}; - BreadcrumbId bc = dfg->getBreadcrumb(global); - rootScope->lvalueTypes[bc->def] = globalTy; - rootScope->rvalueRefinements[bc->def] = globalTy; + DefId def = dfg->getDef(global); + rootScope->lvalueTypes[def] = globalTy; + rootScope->rvalueRefinements[def] = globalTy; return ControlFlow::None; } @@ -1310,9 +1272,9 @@ ControlFlow ConstraintGraphBuilder::visit(const ScopePtr& scope, AstStatDeclareF module->declaredGlobals[fnName] = fnType; scope->bindings[global->name] = Binding{fnType, global->location}; - BreadcrumbId bc = dfg->getBreadcrumb(global); - rootScope->lvalueTypes[bc->def] = fnType; - rootScope->rvalueRefinements[bc->def] = fnType; + DefId def = dfg->getDef(global); + rootScope->lvalueTypes[def] = fnType; + rootScope->rvalueRefinements[def] = fnType; return ControlFlow::None; } @@ -1409,10 +1371,10 @@ InferencePack ConstraintGraphBuilder::checkPack(const ScopePtr& scope, AstExprCa exprArgs.push_back(indexExpr->expr); - if (auto bc = dfg->getBreadcrumb(indexExpr->expr)) + if (auto key = dfg->getRefinementKey(indexExpr->expr)) { TypeId discriminantTy = arena->addType(BlockedType{}); - returnRefinements.push_back(refinementArena.proposition(NotNull{bc}, discriminantTy)); + returnRefinements.push_back(refinementArena.proposition(key, discriminantTy)); discriminantTypes.push_back(discriminantTy); } else @@ -1423,10 +1385,10 @@ InferencePack ConstraintGraphBuilder::checkPack(const ScopePtr& scope, AstExprCa { exprArgs.push_back(arg); - if (auto bc = dfg->getBreadcrumb(arg)) + if (auto key = dfg->getRefinementKey(arg)) { TypeId discriminantTy = arena->addType(BlockedType{}); - returnRefinements.push_back(refinementArena.proposition(NotNull{bc}, discriminantTy)); + returnRefinements.push_back(refinementArena.proposition(key, discriminantTy)); discriminantTypes.push_back(discriminantTy); } else @@ -1525,9 +1487,12 @@ InferencePack ConstraintGraphBuilder::checkPack(const ScopePtr& scope, AstExprCa { scope->bindings[targetLocal->local].typeId = resultTy; - BreadcrumbId bc = dfg->getBreadcrumb(targetLocal); - scope->lvalueTypes[bc->def] = resultTy; // TODO: typestates: track this as an assignment - scope->rvalueRefinements[bc->def] = resultTy; // TODO: typestates: track this as an assignment + DefId def = dfg->getDef(targetLocal); + scope->lvalueTypes[def] = resultTy; // TODO: typestates: track this as an assignment + scope->rvalueRefinements[def] = resultTy; // TODO: typestates: track this as an assignment + + if (auto it = inferredBindings.find(targetLocal->local); it != inferredBindings.end()) + it->second.types.insert(resultTy); } return InferencePack{arena->addTypePack({resultTy}), {refinementArena.variadic(returnRefinements)}}; @@ -1686,27 +1651,51 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprConstantBo Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprLocal* local) { - BreadcrumbId bc = dfg->getBreadcrumb(local); + const RefinementKey* key = dfg->getRefinementKey(local); + std::optional rvalueDef = dfg->getRValueDefForCompoundAssign(local); + LUAU_ASSERT(key || rvalueDef); - if (auto ty = scope->lookup(bc->def)) - return Inference{*ty, refinementArena.proposition(bc, builtinTypes->truthyType)}; + std::optional maybeTy; + + // if we have a refinement key, we can look up its type. + if (key) + maybeTy = scope->lookup(key->def); + + // if the current def doesn't have a type, we might be doing a compound assignment + // and therefore might need to look at the rvalue def instead. + if (!maybeTy && rvalueDef) + maybeTy = scope->lookup(*rvalueDef); + + if (maybeTy) + { + TypeId ty = follow(*maybeTy); + if (auto it = inferredBindings.find(local->local); it != inferredBindings.end()) + it->second.types.insert(ty); + + return Inference{ty, refinementArena.proposition(key, builtinTypes->truthyType)}; + } else ice->ice("CGB: AstExprLocal came before its declaration?"); } Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprGlobal* global) { - BreadcrumbId bc = dfg->getBreadcrumb(global); + const RefinementKey* key = dfg->getRefinementKey(global); + std::optional rvalueDef = dfg->getRValueDefForCompoundAssign(global); + LUAU_ASSERT(key || rvalueDef); + + // we'll use whichever of the two definitions we have here. + DefId def = key ? key->def : *rvalueDef; /* prepopulateGlobalScope() has already added all global functions to the environment by this point, so any * global that is not already in-scope is definitely an unknown symbol. */ - if (auto ty = scope->lookup(bc->def)) - return Inference{*ty, refinementArena.proposition(bc, builtinTypes->truthyType)}; + if (auto ty = scope->lookup(def)) + return Inference{*ty, refinementArena.proposition(key, builtinTypes->truthyType)}; else if (auto ty = scope->lookup(global->name)) { - rootScope->rvalueRefinements[bc->def] = *ty; - return Inference{*ty, refinementArena.proposition(bc, builtinTypes->truthyType)}; + rootScope->rvalueRefinements[key->def] = *ty; + return Inference{*ty, refinementArena.proposition(key, builtinTypes->truthyType)}; } else { @@ -1720,19 +1709,19 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprIndexName* TypeId obj = check(scope, indexName->expr).ty; TypeId result = arena->addType(BlockedType{}); - NullableBreadcrumbId bc = dfg->getBreadcrumb(indexName); - if (bc) + const RefinementKey* key = dfg->getRefinementKey(indexName); + if (key) { - if (auto ty = scope->lookup(bc->def)) - return Inference{*ty, refinementArena.proposition(NotNull{bc}, builtinTypes->truthyType)}; + if (auto ty = scope->lookup(key->def)) + return Inference{*ty, refinementArena.proposition(key, builtinTypes->truthyType)}; - scope->rvalueRefinements[bc->def] = result; + scope->rvalueRefinements[key->def] = result; } addConstraint(scope, indexName->expr->location, HasPropConstraint{result, obj, indexName->index.value}); - if (bc) - return Inference{result, refinementArena.proposition(NotNull{bc}, builtinTypes->truthyType)}; + if (key) + return Inference{result, refinementArena.proposition(key, builtinTypes->truthyType)}; else return Inference{result}; } @@ -1743,13 +1732,13 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprIndexExpr* TypeId indexType = check(scope, indexExpr->index).ty; TypeId result = freshType(scope); - NullableBreadcrumbId bc = dfg->getBreadcrumb(indexExpr); - if (bc) + const RefinementKey* key = dfg->getRefinementKey(indexExpr); + if (key) { - if (auto ty = scope->lookup(bc->def)) - return Inference{*ty, refinementArena.proposition(NotNull{bc}, builtinTypes->truthyType)}; + if (auto ty = scope->lookup(key->def)) + return Inference{*ty, refinementArena.proposition(key, builtinTypes->truthyType)}; - scope->rvalueRefinements[bc->def] = result; + scope->rvalueRefinements[key->def] = result; } TableIndexer indexer{indexType, result}; @@ -1757,8 +1746,8 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprIndexExpr* addConstraint(scope, indexExpr->expr->location, SubtypeConstraint{obj, tableType}); - if (bc) - return Inference{result, refinementArena.proposition(NotNull{bc}, builtinTypes->truthyType)}; + if (key) + return Inference{result, refinementArena.proposition(key, builtinTypes->truthyType)}; else return Inference{result}; } @@ -1812,12 +1801,28 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprUnary* una addConstraint(scope, unary->location, ReduceConstraint{resultType}); return Inference{resultType, refinementArena.negation(refinement)}; } - default: + case AstExprUnary::Op::Len: { - TypeId resultType = arena->addType(BlockedType{}); - addConstraint(scope, unary->location, UnaryConstraint{unary->op, operandType, resultType}); - return Inference{resultType}; + TypeId resultType = arena->addType(TypeFamilyInstanceType{ + NotNull{&kBuiltinTypeFamilies.lenFamily}, + {operandType}, + {}, + }); + addConstraint(scope, unary->location, ReduceConstraint{resultType}); + return Inference{resultType, refinementArena.negation(refinement)}; } + case AstExprUnary::Op::Minus: + { + TypeId resultType = arena->addType(TypeFamilyInstanceType{ + NotNull{&kBuiltinTypeFamilies.unmFamily}, + {operandType}, + {}, + }); + addConstraint(scope, unary->location, ReduceConstraint{resultType}); + return Inference{resultType, refinementArena.negation(refinement)}; + } + default: // msvc can't prove that this is exhaustive. + LUAU_UNREACHABLE(); } } @@ -1978,13 +1983,10 @@ Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprBinary* bi addConstraint(scope, binary->location, ReduceConstraint{resultType}); return Inference{resultType, std::move(refinement)}; } - default: - { - TypeId resultType = arena->addType(BlockedType{}); - addConstraint(scope, binary->location, - BinaryConstraint{binary->op, leftType, rightType, resultType, binary, &module->astOriginalCallTypes, &module->astOverloadResolvedTypes}); - return Inference{resultType, std::move(refinement)}; - } + case AstExprBinary::Op::Op__Count: + ice->ice("Op__Count should never be generated in an AST."); + default: // msvc can't prove that this is exhaustive. + LUAU_UNREACHABLE(); } } @@ -2056,9 +2058,10 @@ std::tuple ConstraintGraphBuilder::checkBinary( TypeId leftType = check(scope, binary->left).ty; TypeId rightType = check(scope, binary->right).ty; - NullableBreadcrumbId bc = dfg->getBreadcrumb(typeguard->target); - if (!bc) + const RefinementKey* key = dfg->getRefinementKey(typeguard->target); + if (!key) return {leftType, rightType, nullptr}; + auto augmentForErrorSupression = [&](TypeId ty) -> TypeId { return arena->addType(UnionType{{ty, builtinTypes->errorType}}); }; @@ -2096,7 +2099,7 @@ std::tuple ConstraintGraphBuilder::checkBinary( discriminantTy = ty; } - RefinementId proposition = refinementArena.proposition(NotNull{bc}, discriminantTy); + RefinementId proposition = refinementArena.proposition(key, discriminantTy); if (binary->op == AstExprBinary::CompareEq) return {leftType, rightType, proposition}; else if (binary->op == AstExprBinary::CompareNe) @@ -2111,13 +2114,8 @@ std::tuple ConstraintGraphBuilder::checkBinary( TypeId leftType = check(scope, binary->left, {}, true).ty; TypeId rightType = check(scope, binary->right, {}, true).ty; - RefinementId leftRefinement = nullptr; - if (auto bc = dfg->getBreadcrumb(binary->left)) - leftRefinement = refinementArena.proposition(NotNull{bc}, rightType); - - RefinementId rightRefinement = nullptr; - if (auto bc = dfg->getBreadcrumb(binary->right)) - rightRefinement = refinementArena.proposition(NotNull{bc}, leftType); + RefinementId leftRefinement = refinementArena.proposition(dfg->getRefinementKey(binary->left), rightType); + RefinementId rightRefinement = refinementArena.proposition(dfg->getRefinementKey(binary->right), leftType); if (binary->op == AstExprBinary::CompareNe) { @@ -2135,7 +2133,7 @@ std::tuple ConstraintGraphBuilder::checkBinary( } } -TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExpr* expr) +std::optional ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExpr* expr) { if (auto local = expr->as()) return checkLValue(scope, local); @@ -2154,24 +2152,42 @@ TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExpr* expr) ice->ice("checkLValue is inexhaustive"); } -TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprLocal* local) +std::optional ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprLocal* local) { - std::optional upperBound = scope->lookup(Symbol{local->local}); - LUAU_ASSERT(upperBound); - return *upperBound; + /* + * The caller of this method uses the returned type to emit the proper + * SubtypeConstraint. + * + * At this point during constraint generation, the binding table is only + * populated by symbols that have type annotations. + * + * If this local has an interesting type annotation, it is important that we + * return that. + */ + std::optional annotatedTy = scope->lookup(local->local); + if (annotatedTy) + return annotatedTy; + + /* + * As a safety measure, we'll assert that no type has yet been ascribed to + * the corresponding def. We'll populate this when we generate + * constraints for assignment and compound assignment statements. + */ + LUAU_ASSERT(!scope->lookupLValue(dfg->getDef(local))); + return std::nullopt; } -TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprGlobal* global) +std::optional ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprGlobal* global) { - return scope->lookup(Symbol{global->name}).value_or(builtinTypes->errorRecoveryType()); + return scope->lookup(Symbol{global->name}); } -TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprIndexName* indexName) +std::optional ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprIndexName* indexName) { return updateProperty(scope, indexName); } -TypeId ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr) +std::optional ConstraintGraphBuilder::checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr) { return updateProperty(scope, indexExpr); } @@ -2226,7 +2242,7 @@ TypeId ConstraintGraphBuilder::updateProperty(const ScopePtr& scope, AstExpr* ex return check(scope, expr).ty; Symbol sym; - NullableBreadcrumbId bc = nullptr; + const Def* def = nullptr; std::vector segments; std::vector exprs; @@ -2236,13 +2252,13 @@ TypeId ConstraintGraphBuilder::updateProperty(const ScopePtr& scope, AstExpr* ex if (auto global = e->as()) { sym = global->name; - bc = dfg->getBreadcrumb(global); + def = dfg->getDef(global); break; } else if (auto local = e->as()) { sym = local->local; - bc = dfg->getBreadcrumb(local); + def = dfg->getDef(local); break; } else if (auto indexName = e->as()) @@ -2275,20 +2291,12 @@ TypeId ConstraintGraphBuilder::updateProperty(const ScopePtr& scope, AstExpr* ex std::reverse(begin(segments), end(segments)); std::reverse(begin(exprs), end(exprs)); - auto lookupResult = scope->lookupEx(sym); + LUAU_ASSERT(def); + std::optional> lookupResult = scope->lookupEx(NotNull{def}); if (!lookupResult) return check(scope, expr).ty; - const auto [subjectBinding, symbolScope] = std::move(*lookupResult); - LUAU_ASSERT(bc); - std::optional subjectTy = scope->lookup(bc->def); - - /* If we have a breadcrumb but no type, it can only mean that we're setting - * a property of some builtin table. This isn't legal, but we still want to - * wire up the constraints properly so that we can report why it is not - * legal. - */ - TypeId subjectType = subjectTy.value_or(subjectBinding->typeId); + const auto [subjectType, subjectScope] = *lookupResult; TypeId propTy = freshType(scope); @@ -2311,20 +2319,29 @@ TypeId ConstraintGraphBuilder::updateProperty(const ScopePtr& scope, AstExpr* ex if (!subjectType->persistent) { - symbolScope->bindings[sym].typeId = updatedType; + subjectScope->bindings[sym].typeId = updatedType; // This can fail if the user is erroneously trying to augment a builtin // table like os or string. - if (auto bc = dfg->getBreadcrumb(e)) + if (auto key = dfg->getRefinementKey(e)) { - symbolScope->lvalueTypes[bc->def] = updatedType; - symbolScope->rvalueRefinements[bc->def] = updatedType; + subjectScope->lvalueTypes[key->def] = updatedType; + subjectScope->rvalueRefinements[key->def] = updatedType; } } return propTy; } +void ConstraintGraphBuilder::updateLValueType(AstExpr* lvalue, TypeId ty) +{ + if (auto local = lvalue->as()) + { + if (auto it = inferredBindings.find(local->local); it != inferredBindings.end()) + it->second.types.insert(ty); + } +} + Inference ConstraintGraphBuilder::check(const ScopePtr& scope, AstExprTable* expr, std::optional expectedType) { const bool expectedTypeIsFree = expectedType && get(follow(*expectedType)); @@ -2525,9 +2542,9 @@ ConstraintGraphBuilder::FunctionSignature ConstraintGraphBuilder::checkFunctionS argNames.emplace_back(FunctionArgument{fn->self->name.value, fn->self->location}); signatureScope->bindings[fn->self] = Binding{selfType, fn->self->location}; - BreadcrumbId bc = dfg->getBreadcrumb(fn->self); - signatureScope->lvalueTypes[bc->def] = selfType; - signatureScope->rvalueRefinements[bc->def] = selfType; + DefId def = dfg->getDef(fn->self); + signatureScope->lvalueTypes[def] = selfType; + signatureScope->rvalueRefinements[def] = selfType; } for (size_t i = 0; i < fn->args.size; ++i) @@ -2552,14 +2569,13 @@ ConstraintGraphBuilder::FunctionSignature ConstraintGraphBuilder::checkFunctionS signatureScope->bindings[local] = Binding{argTy, local->location}; else { - BreadcrumbId bc = dfg->getBreadcrumb(local); signatureScope->bindings[local] = Binding{builtinTypes->neverType, local->location}; - inferredBindings.emplace_back(signatureScope.get(), local, bc); + inferredBindings[local] = {signatureScope.get(), {}}; } - BreadcrumbId bc = dfg->getBreadcrumb(local); - signatureScope->lvalueTypes[bc->def] = argTy; - signatureScope->rvalueRefinements[bc->def] = argTy; + DefId def = dfg->getDef(local); + signatureScope->lvalueTypes[def] = argTy; + signatureScope->rvalueRefinements[def] = argTy; } TypePackId varargPack = nullptr; @@ -2854,7 +2870,10 @@ TypeId ConstraintGraphBuilder::resolveType(const ScopePtr& scope, AstType* ty, b } else if (auto boolAnnotation = ty->as()) { - result = arena->addType(SingletonType(BooleanSingleton{boolAnnotation->value})); + if (boolAnnotation->value) + result = builtinTypes->trueType; + else + result = builtinTypes->falseType; } else if (auto stringAnnotation = ty->as()) { @@ -3042,10 +3061,8 @@ struct GlobalPrepopulator : AstVisitor TypeId bt = arena->addType(BlockedType{}); globalScope->bindings[g->name] = Binding{bt}; - NullableBreadcrumbId bc = dfg->getBreadcrumb(function->name); - LUAU_ASSERT(bc); - - globalScope->lvalueTypes[bc->def] = bt; + DefId def = dfg->getDef(function->name); + globalScope->lvalueTypes[def] = bt; } return true; @@ -3064,32 +3081,16 @@ void ConstraintGraphBuilder::prepopulateGlobalScope(const ScopePtr& globalScope, void ConstraintGraphBuilder::fillInInferredBindings(const ScopePtr& globalScope, AstStatBlock* block) { - std::deque queue; - - for (const auto& [scope, symbol, breadcrumb] : inferredBindings) + for (const auto& [symbol, p] : inferredBindings) { - LUAU_ASSERT(queue.empty()); + const auto& [scope, location, types] = p; - queue.push_back(breadcrumb); + std::vector tys(types.begin(), types.end()); - TypeId ty = builtinTypes->neverType; + TypeId ty = arena->addType(BlockedType{}); + addConstraint(globalScope, Location{}, SetOpConstraint{SetOpConstraint::Union, ty, std::move(tys)}); - while (!queue.empty()) - { - const BreadcrumbId bc = queue.front(); - queue.pop_front(); - - TypeId* lvalueType = scope->lvalueTypes.find(bc->def); - if (!lvalueType) - continue; - - ty = simplifyUnion(builtinTypes, arena, ty, *lvalueType).result; - - for (BreadcrumbId child : bc->children) - queue.push_back(child); - } - - scope->bindings[symbol].typeId = ty; + scope->bindings[symbol] = Binding{ty, location}; } } diff --git a/Analysis/src/ConstraintSolver.cpp b/Analysis/src/ConstraintSolver.cpp index bdcd1663..924958ab 100644 --- a/Analysis/src/ConstraintSolver.cpp +++ b/Analysis/src/ConstraintSolver.cpp @@ -516,10 +516,6 @@ bool ConstraintSolver::tryDispatch(NotNull constraint, bool fo success = tryDispatch(*gc, constraint, force); else if (auto ic = get(*constraint)) success = tryDispatch(*ic, constraint, force); - else if (auto uc = get(*constraint)) - success = tryDispatch(*uc, constraint, force); - else if (auto bc = get(*constraint)) - success = tryDispatch(*bc, constraint, force); else if (auto ic = get(*constraint)) success = tryDispatch(*ic, constraint, force); else if (auto nc = get(*constraint)) @@ -542,6 +538,8 @@ bool ConstraintSolver::tryDispatch(NotNull constraint, bool fo success = tryDispatch(*uc, constraint); else if (auto rc = get(*constraint)) success = tryDispatch(*rc, constraint, force); + else if (auto soc = get(*constraint)) + success = tryDispatch(*soc, constraint, force); else if (auto rc = get(*constraint)) success = tryDispatch(*rc, constraint, force); else if (auto rpc = get(*constraint)) @@ -652,335 +650,6 @@ bool ConstraintSolver::tryDispatch(const InstantiationConstraint& c, NotNull constraint, bool force) -{ - TypeId operandType = follow(c.operandType); - - if (isBlocked(operandType)) - return block(operandType, constraint); - - if (!force && get(operandType)) - return block(operandType, constraint); - - LUAU_ASSERT(get(c.resultType)); - - switch (c.op) - { - case AstExprUnary::Not: - { - asMutable(c.resultType)->ty.emplace(builtinTypes->booleanType); - - unblock(c.resultType, constraint->location); - return true; - } - case AstExprUnary::Len: - { - // __len must return a number. - asMutable(c.resultType)->ty.emplace(builtinTypes->numberType); - - unblock(c.resultType, constraint->location); - return true; - } - case AstExprUnary::Minus: - { - if (isNumber(operandType) || get(operandType) || get(operandType) || get(operandType)) - { - asMutable(c.resultType)->ty.emplace(c.operandType); - } - else if (std::optional mm = findMetatableEntry(builtinTypes, errors, operandType, "__unm", constraint->location)) - { - TypeId mmTy = follow(*mm); - - if (get(mmTy) && !force) - return block(mmTy, constraint); - - TypePackId argPack = arena->addTypePack(TypePack{{operandType}, {}}); - TypePackId retPack = arena->addTypePack(BlockedTypePack{}); - - TypeId res = freshType(arena, builtinTypes, constraint->scope); - asMutable(c.resultType)->ty.emplace(res); - - pushConstraint(constraint->scope, constraint->location, PackSubtypeConstraint{retPack, arena->addTypePack(TypePack{{c.resultType}})}); - - pushConstraint(constraint->scope, constraint->location, FunctionCallConstraint{mmTy, argPack, retPack, nullptr}); - } - else - { - asMutable(c.resultType)->ty.emplace(builtinTypes->errorRecoveryType()); - } - - unblock(c.resultType, constraint->location); - return true; - } - } - - LUAU_ASSERT(false); - return false; -} - -bool ConstraintSolver::tryDispatch(const BinaryConstraint& c, NotNull constraint, bool force) -{ - TypeId leftType = follow(c.leftType); - TypeId rightType = follow(c.rightType); - TypeId resultType = follow(c.resultType); - - LUAU_ASSERT(get(resultType)); - - bool isLogical = c.op == AstExprBinary::Op::And || c.op == AstExprBinary::Op::Or; - - /* Compound assignments create constraints of the form - * - * A <: Binary - * - * This constraint is the one that is meant to unblock A, so it doesn't - * make any sense to stop and wait for someone else to do it. - */ - - // If any is present, the expression must evaluate to any as well. - bool leftAny = get(leftType) || get(leftType); - bool rightAny = get(rightType) || get(rightType); - bool anyPresent = leftAny || rightAny; - - if (isBlocked(leftType) && leftType != resultType) - return block(c.leftType, constraint); - - if (isBlocked(rightType) && rightType != resultType) - return block(c.rightType, constraint); - - if (!force) - { - // Logical expressions may proceed if the LHS is free. - if (hasTypeInIntersection(leftType) && !isLogical) - return block(leftType, constraint); - } - - // Logical expressions may proceed if the LHS is free. - if (isBlocked(leftType) || (hasTypeInIntersection(leftType) && !isLogical)) - { - asMutable(resultType)->ty.emplace(errorRecoveryType()); - unblock(resultType, constraint->location); - return true; - } - - // Metatables go first, even if there is primitive behavior. - if (auto it = kBinaryOpMetamethods.find(c.op); it != kBinaryOpMetamethods.end()) - { - LUAU_ASSERT(FFlag::LuauFloorDivision || c.op != AstExprBinary::Op::FloorDiv); - - // Metatables are not the same. The metamethod will not be invoked. - if ((c.op == AstExprBinary::Op::CompareEq || c.op == AstExprBinary::Op::CompareNe) && - getMetatable(leftType, builtinTypes) != getMetatable(rightType, builtinTypes)) - { - // TODO: Boolean singleton false? The result is _always_ boolean false. - asMutable(resultType)->ty.emplace(builtinTypes->booleanType); - unblock(resultType, constraint->location); - return true; - } - - std::optional mm; - - // The LHS metatable takes priority over the RHS metatable, where - // present. - if (std::optional leftMm = findMetatableEntry(builtinTypes, errors, leftType, it->second, constraint->location)) - mm = leftMm; - else if (std::optional rightMm = findMetatableEntry(builtinTypes, errors, rightType, it->second, constraint->location)) - mm = rightMm; - - if (mm) - { - std::optional instantiatedMm = instantiate(builtinTypes, arena, NotNull{&limits}, constraint->scope, *mm); - if (!instantiatedMm) - { - reportError(CodeTooComplex{}, constraint->location); - return true; - } - - // TODO: Is a table with __call legal here? - // TODO: Overloads - if (const FunctionType* ftv = get(follow(*instantiatedMm))) - { - TypePackId inferredArgs; - // For >= and > we invoke __lt and __le respectively with - // swapped argument ordering. - if (c.op == AstExprBinary::Op::CompareGe || c.op == AstExprBinary::Op::CompareGt) - { - inferredArgs = arena->addTypePack({rightType, leftType}); - } - else - { - inferredArgs = arena->addTypePack({leftType, rightType}); - } - - unify(constraint->scope, constraint->location, inferredArgs, ftv->argTypes); - - TypeId mmResult; - - // Comparison operations always evaluate to a boolean, - // regardless of what the metamethod returns. - switch (c.op) - { - case AstExprBinary::Op::CompareEq: - case AstExprBinary::Op::CompareNe: - case AstExprBinary::Op::CompareGe: - case AstExprBinary::Op::CompareGt: - case AstExprBinary::Op::CompareLe: - case AstExprBinary::Op::CompareLt: - mmResult = builtinTypes->booleanType; - break; - default: - if (get(leftType) || get(rightType)) - mmResult = builtinTypes->neverType; - else - mmResult = first(ftv->retTypes).value_or(errorRecoveryType()); - } - - asMutable(resultType)->ty.emplace(mmResult); - unblock(resultType, constraint->location); - - (*c.astOriginalCallTypes)[c.astFragment] = *mm; - (*c.astOverloadResolvedTypes)[c.astFragment] = *instantiatedMm; - return true; - } - } - - // If there's no metamethod available, fall back to primitive behavior. - } - - switch (c.op) - { - // For arithmetic operators, if the LHS is a number, the RHS must be a - // number as well. The result will also be a number. - case AstExprBinary::Op::Add: - case AstExprBinary::Op::Sub: - case AstExprBinary::Op::Mul: - case AstExprBinary::Op::Div: - case AstExprBinary::Op::FloorDiv: - case AstExprBinary::Op::Pow: - case AstExprBinary::Op::Mod: - { - LUAU_ASSERT(FFlag::LuauFloorDivision || c.op != AstExprBinary::Op::FloorDiv); - - const NormalizedType* normLeftTy = normalizer->normalize(leftType); - if (hasTypeInIntersection(leftType) && force) - asMutable(leftType)->ty.emplace(anyPresent ? builtinTypes->anyType : builtinTypes->numberType); - // We want to check if the left type has tops because `any` is a valid type for the lhs - if (normLeftTy && (normLeftTy->isExactlyNumber() || get(normLeftTy->tops))) - { - unify(constraint->scope, constraint->location, leftType, rightType); - asMutable(resultType)->ty.emplace(anyPresent ? builtinTypes->anyType : leftType); - unblock(resultType, constraint->location); - return true; - } - else if (get(leftType) || get(rightType)) - { - unify(constraint->scope, constraint->location, leftType, rightType); - asMutable(resultType)->ty.emplace(builtinTypes->neverType); - unblock(resultType, constraint->location); - return true; - } - - break; - } - // For concatenation, if the LHS is a string, the RHS must be a string as - // well. The result will also be a string. - case AstExprBinary::Op::Concat: - { - if (hasTypeInIntersection(leftType) && force) - asMutable(leftType)->ty.emplace(anyPresent ? builtinTypes->anyType : builtinTypes->stringType); - const NormalizedType* leftNormTy = normalizer->normalize(leftType); - if (leftNormTy && leftNormTy->isSubtypeOfString()) - { - unify(constraint->scope, constraint->location, leftType, rightType); - asMutable(resultType)->ty.emplace(anyPresent ? builtinTypes->anyType : leftType); - unblock(resultType, constraint->location); - return true; - } - else if (get(leftType) || get(rightType)) - { - unify(constraint->scope, constraint->location, leftType, rightType); - asMutable(resultType)->ty.emplace(builtinTypes->neverType); - unblock(resultType, constraint->location); - return true; - } - - break; - } - // Inexact comparisons require that the types be both numbers or both - // strings, and evaluate to a boolean. - case AstExprBinary::Op::CompareGe: - case AstExprBinary::Op::CompareGt: - case AstExprBinary::Op::CompareLe: - case AstExprBinary::Op::CompareLt: - { - const NormalizedType* lt = normalizer->normalize(leftType); - const NormalizedType* rt = normalizer->normalize(rightType); - // If the lhs is any, comparisons should be valid. - if (lt && rt && (lt->isExactlyNumber() || get(lt->tops)) && rt->isExactlyNumber()) - { - asMutable(resultType)->ty.emplace(builtinTypes->booleanType); - unblock(resultType, constraint->location); - return true; - } - - if (lt && rt && (lt->isSubtypeOfString() || get(lt->tops)) && rt->isSubtypeOfString()) - { - asMutable(resultType)->ty.emplace(builtinTypes->booleanType); - unblock(resultType, constraint->location); - return true; - } - - - if (get(leftType) || get(rightType)) - { - asMutable(resultType)->ty.emplace(builtinTypes->booleanType); - unblock(resultType, constraint->location); - return true; - } - - break; - } - - // == and ~= always evaluate to a boolean, and impose no other constraints - // on their parameters. - case AstExprBinary::Op::CompareEq: - case AstExprBinary::Op::CompareNe: - asMutable(resultType)->ty.emplace(builtinTypes->booleanType); - unblock(resultType, constraint->location); - return true; - // And evalutes to a boolean if the LHS is falsey, and the RHS type if LHS is - // truthy. - case AstExprBinary::Op::And: - { - TypeId leftFilteredTy = simplifyIntersection(builtinTypes, arena, leftType, builtinTypes->falsyType).result; - - asMutable(resultType)->ty.emplace(simplifyUnion(builtinTypes, arena, rightType, leftFilteredTy).result); - unblock(resultType, constraint->location); - return true; - } - // Or evaluates to the LHS type if the LHS is truthy, and the RHS type if - // LHS is falsey. - case AstExprBinary::Op::Or: - { - TypeId leftFilteredTy = simplifyIntersection(builtinTypes, arena, leftType, builtinTypes->truthyType).result; - - asMutable(resultType)->ty.emplace(simplifyUnion(builtinTypes, arena, rightType, leftFilteredTy).result); - unblock(resultType, constraint->location); - return true; - } - default: - iceReporter.ice("Unhandled AstExprBinary::Op for binary operation", constraint->location); - break; - } - - // We failed to either evaluate a metamethod or invoke primitive behavior. - unify(constraint->scope, constraint->location, leftType, errorRecoveryType()); - unify(constraint->scope, constraint->location, rightType, errorRecoveryType()); - asMutable(resultType)->ty.emplace(errorRecoveryType()); - unblock(resultType, constraint->location); - - return true; -} - bool ConstraintSolver::tryDispatch(const IterableConstraint& c, NotNull constraint, bool force) { /* @@ -1946,6 +1615,32 @@ bool ConstraintSolver::tryDispatch(const RefineConstraint& c, NotNull constraint, bool force) +{ + bool blocked = false; + for (TypeId ty : c.types) + { + if (isBlocked(ty)) + { + blocked = true; + block(ty, constraint); + } + } + if (blocked && !force) + return false; + + LUAU_ASSERT(SetOpConstraint::Union == c.mode); + + TypeId res = builtinTypes->neverType; + + for (TypeId ty : c.types) + res = simplifyUnion(builtinTypes, arena, res, ty).result; + + asMutable(c.resultType)->ty.emplace(res); + + return true; +} + bool ConstraintSolver::tryDispatch(const ReduceConstraint& c, NotNull constraint, bool force) { TypeId ty = follow(c.ty); diff --git a/Analysis/src/DataFlowGraph.cpp b/Analysis/src/DataFlowGraph.cpp index 523f8df6..e3933574 100644 --- a/Analysis/src/DataFlowGraph.cpp +++ b/Analysis/src/DataFlowGraph.cpp @@ -2,11 +2,12 @@ #include "Luau/DataFlowGraph.h" #include "Luau/Ast.h" -#include "Luau/Breadcrumb.h" +#include "Luau/Def.h" +#include "Luau/Common.h" #include "Luau/Error.h" -#include "Luau/Refinement.h" #include +#include LUAU_FASTFLAG(DebugLuauFreezeArena) LUAU_FASTFLAG(DebugLuauDeferredConstraintResolution) @@ -14,74 +15,81 @@ LUAU_FASTFLAG(DebugLuauDeferredConstraintResolution) namespace Luau { -NullableBreadcrumbId DataFlowGraph::getBreadcrumb(const AstExpr* expr) const +const RefinementKey* RefinementKeyArena::leaf(DefId def) { - // We need to skip through AstExprGroup because DFG doesn't try its best to transitively - while (auto group = expr->as()) - expr = group->expr; - if (auto bc = astBreadcrumbs.find(expr)) - return *bc; + return allocator.allocate(RefinementKey{nullptr, def, std::nullopt}); +} + +const RefinementKey* RefinementKeyArena::node(const RefinementKey* parent, DefId def, const std::string& propName) +{ + return allocator.allocate(RefinementKey{parent, def, propName}); +} + +DefId DataFlowGraph::getDef(const AstExpr* expr) const +{ + auto def = astDefs.find(expr); + LUAU_ASSERT(def); + return NotNull{*def}; +} + +std::optional DataFlowGraph::getRValueDefForCompoundAssign(const AstExpr* expr) const +{ + auto def = compoundAssignBreadcrumbs.find(expr); + return def ? std::optional(*def) : std::nullopt; +} + +DefId DataFlowGraph::getDef(const AstLocal* local) const +{ + auto def = localDefs.find(local); + LUAU_ASSERT(def); + return NotNull{*def}; +} + +DefId DataFlowGraph::getDef(const AstStatDeclareGlobal* global) const +{ + auto def = declaredDefs.find(global); + LUAU_ASSERT(def); + return NotNull{*def}; +} + +DefId DataFlowGraph::getDef(const AstStatDeclareFunction* func) const +{ + auto def = declaredDefs.find(func); + LUAU_ASSERT(def); + return NotNull{*def}; +} + +const RefinementKey* DataFlowGraph::getRefinementKey(const AstExpr* expr) const +{ + if (auto key = astRefinementKeys.find(expr)) + return *key; + return nullptr; } -BreadcrumbId DataFlowGraph::getBreadcrumb(const AstLocal* local) const -{ - auto bc = localBreadcrumbs.find(local); - LUAU_ASSERT(bc); - return NotNull{*bc}; -} - -BreadcrumbId DataFlowGraph::getBreadcrumb(const AstExprLocal* local) const -{ - auto bc = astBreadcrumbs.find(local); - LUAU_ASSERT(bc); - return NotNull{*bc}; -} - -BreadcrumbId DataFlowGraph::getBreadcrumb(const AstExprGlobal* global) const -{ - auto bc = astBreadcrumbs.find(global); - LUAU_ASSERT(bc); - return NotNull{*bc}; -} - -BreadcrumbId DataFlowGraph::getBreadcrumb(const AstStatDeclareGlobal* global) const -{ - auto bc = declaredBreadcrumbs.find(global); - LUAU_ASSERT(bc); - return NotNull{*bc}; -} - -BreadcrumbId DataFlowGraph::getBreadcrumb(const AstStatDeclareFunction* func) const -{ - auto bc = declaredBreadcrumbs.find(func); - LUAU_ASSERT(bc); - return NotNull{*bc}; -} - -NullableBreadcrumbId DfgScope::lookup(Symbol symbol) const +std::optional DfgScope::lookup(Symbol symbol) const { for (const DfgScope* current = this; current; current = current->parent) { - if (auto breadcrumb = current->bindings.find(symbol)) - return *breadcrumb; + if (auto def = current->bindings.find(symbol)) + return NotNull{*def}; } - return nullptr; + return std::nullopt; } -NullableBreadcrumbId DfgScope::lookup(DefId def, const std::string& key) const +std::optional DfgScope::lookup(DefId def, const std::string& key) const { for (const DfgScope* current = this; current; current = current->parent) { if (auto map = props.find(def)) { if (auto it = map->find(key); it != map->end()) - return it->second; + return NotNull{it->second}; } } - return nullptr; + return std::nullopt; } DataFlowGraph DataFlowGraphBuilder::build(AstStatBlock* block, NotNull handle) @@ -95,8 +103,8 @@ DataFlowGraph DataFlowGraphBuilder::build(AstStatBlock* block, NotNullallocator.freeze(); - builder.breadcrumbs->allocator.freeze(); + builder.defArena->allocator.freeze(); + builder.keyArena->allocator.freeze(); } return std::move(builder.graph); @@ -217,10 +225,10 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatExpr* e) void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatLocal* l) { // We're gonna need a `visitExprList` and `visitVariadicExpr` (function calls and `...`) - std::vector bcs; - bcs.reserve(l->values.size); + std::vector defs; + defs.reserve(l->values.size); for (AstExpr* e : l->values) - bcs.push_back(visitExpr(scope, e)); + defs.push_back(visitExpr(scope, e).def); for (size_t i = 0; i < l->vars.size; ++i) { @@ -228,10 +236,12 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatLocal* l) if (local->annotation) visitType(scope, local->annotation); - // We need to create a new breadcrumb with new defs to intentionally avoid alias tracking. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell(), i < bcs.size() ? bcs[i]->metadata : std::nullopt); - graph.localBreadcrumbs[local] = bc; - scope->bindings[local] = bc; + // We need to create a new def to intentionally avoid alias tracking, but we'd like to + // make sure that the non-aliased defs are also marked as a subscript for refinements. + bool subscripted = i < defs.size() && containsSubscriptedDefinition(defs[i]); + DefId def = defArena->freshCell(subscripted); + graph.localDefs[local] = def; + scope->bindings[local] = def; } } @@ -247,10 +257,9 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatFor* f) if (f->var->annotation) visitType(forScope, f->var->annotation); - // TODO: RangeMetadata. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.localBreadcrumbs[f->var] = bc; - scope->bindings[f->var] = bc; + DefId def = defArena->freshCell(); + graph.localDefs[f->var] = def; + scope->bindings[f->var] = def; // TODO(controlflow): entry point has a back edge from exit point visit(forScope, f->body); @@ -265,10 +274,9 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatForIn* f) if (local->annotation) visitType(forScope, local->annotation); - // TODO: IterMetadata (different from RangeMetadata) - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.localBreadcrumbs[local] = bc; - forScope->bindings[local] = bc; + DefId def = defArena->freshCell(); + graph.localDefs[local] = def; + forScope->bindings[local] = def; } // TODO(controlflow): entry point has a back edge from exit point @@ -281,11 +289,15 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatForIn* f) void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatAssign* a) { - for (size_t i = 0; i < std::max(a->vars.size, a->values.size); ++i) + std::vector defs; + defs.reserve(a->values.size); + for (AstExpr* e : a->values) + defs.push_back(visitExpr(scope, e).def); + + for (size_t i = 0; i < a->vars.size; ++i) { - BreadcrumbId bc = i < a->values.size ? visitExpr(scope, a->values.data[i]) : breadcrumbs->add(nullptr, defs->freshCell()); - if (i < a->vars.size) - visitLValue(scope, a->vars.data[i], bc); + AstExpr* v = a->vars.data[i]; + visitLValue(scope, v, i < defs.size() ? defs[i] : defArena->freshCell()); } } @@ -297,9 +309,9 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatCompoundAssign* c) // // local a = 5 -- a-1 // a += 5 -- a-2 = a-1 + 5 - // // We can't just visit `c->var` as a rvalue and then separately traverse `c->var` as an lvalue, since that's O(n^2). - visitLValue(scope, c->var, visitExpr(scope, c->value)); + DefId def = visitExpr(scope, c->value).def; + visitLValue(scope, c->var, def, /* isCompoundAssignment */ true); } void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatFunction* f) @@ -314,14 +326,17 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatFunction* f) // // which is evidence that references to variables must be a phi node of all possible definitions, // but for bug compatibility, we'll assume the same thing here. - visitLValue(scope, f->name, visitExpr(scope, f->func)); + DefId prototype = defArena->freshCell(); + visitLValue(scope, f->name, prototype); + visitExpr(scope, f->func); } void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatLocalFunction* l) { - BreadcrumbId bc = visitExpr(scope, l->func); - graph.localBreadcrumbs[l->name] = bc; - scope->bindings[l->name] = bc; + DefId def = defArena->freshCell(); + graph.localDefs[l->name] = def; + scope->bindings[l->name] = def; + visitExpr(scope, l->func); } void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatTypeAlias* t) @@ -334,20 +349,18 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatTypeAlias* t) void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatDeclareGlobal* d) { - // TODO: AmbientDeclarationMetadata. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.declaredBreadcrumbs[d] = bc; - scope->bindings[d->name] = bc; + DefId def = defArena->freshCell(); + graph.declaredDefs[d] = def; + scope->bindings[d->name] = def; visitType(scope, d->type); } void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatDeclareFunction* d) { - // TODO: AmbientDeclarationMetadata. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.declaredBreadcrumbs[d] = bc; - scope->bindings[d->name] = bc; + DefId def = defArena->freshCell(); + graph.declaredDefs[d] = def; + scope->bindings[d->name] = def; DfgScope* unreachable = childScope(scope); visitGenerics(unreachable, d->generics); @@ -375,116 +388,125 @@ void DataFlowGraphBuilder::visit(DfgScope* scope, AstStatError* error) visitExpr(unreachable, e); } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExpr* e) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExpr* e) { - if (auto g = e->as()) - return visitExpr(scope, g->expr); - else if (auto c = e->as()) - return breadcrumbs->add(nullptr, defs->freshCell()); // ok - else if (auto c = e->as()) - return breadcrumbs->add(nullptr, defs->freshCell()); // ok - else if (auto c = e->as()) - return breadcrumbs->add(nullptr, defs->freshCell()); // ok - else if (auto c = e->as()) - return breadcrumbs->add(nullptr, defs->freshCell()); // ok - else if (auto l = e->as()) - return visitExpr(scope, l); - else if (auto g = e->as()) - return visitExpr(scope, g); - else if (auto v = e->as()) - return breadcrumbs->add(nullptr, defs->freshCell()); // ok - else if (auto c = e->as()) - return visitExpr(scope, c); - else if (auto i = e->as()) - return visitExpr(scope, i); - else if (auto i = e->as()) - return visitExpr(scope, i); - else if (auto f = e->as()) - return visitExpr(scope, f); - else if (auto t = e->as()) - return visitExpr(scope, t); - else if (auto u = e->as()) - return visitExpr(scope, u); - else if (auto b = e->as()) - return visitExpr(scope, b); - else if (auto t = e->as()) - return visitExpr(scope, t); - else if (auto i = e->as()) - return visitExpr(scope, i); - else if (auto i = e->as()) - return visitExpr(scope, i); - else if (auto error = e->as()) - return visitExpr(scope, error); - else - handle->ice("Unknown AstExpr in DataFlowGraphBuilder::visitExpr"); + auto go = [&]() -> DataFlowResult { + if (auto g = e->as()) + return visitExpr(scope, g); + else if (auto c = e->as()) + return {defArena->freshCell(), nullptr}; // ok + else if (auto c = e->as()) + return {defArena->freshCell(), nullptr}; // ok + else if (auto c = e->as()) + return {defArena->freshCell(), nullptr}; // ok + else if (auto c = e->as()) + return {defArena->freshCell(), nullptr}; // ok + else if (auto l = e->as()) + return visitExpr(scope, l); + else if (auto g = e->as()) + return visitExpr(scope, g); + else if (auto v = e->as()) + return {defArena->freshCell(), nullptr}; // ok + else if (auto c = e->as()) + return visitExpr(scope, c); + else if (auto i = e->as()) + return visitExpr(scope, i); + else if (auto i = e->as()) + return visitExpr(scope, i); + else if (auto f = e->as()) + return visitExpr(scope, f); + else if (auto t = e->as()) + return visitExpr(scope, t); + else if (auto u = e->as()) + return visitExpr(scope, u); + else if (auto b = e->as()) + return visitExpr(scope, b); + else if (auto t = e->as()) + return visitExpr(scope, t); + else if (auto i = e->as()) + return visitExpr(scope, i); + else if (auto i = e->as()) + return visitExpr(scope, i); + else if (auto error = e->as()) + return visitExpr(scope, error); + else + handle->ice("Unknown AstExpr in DataFlowGraphBuilder::visitExpr"); + }; + + auto [def, key] = go(); + graph.astDefs[e] = def; + if (key) + graph.astRefinementKeys[e] = key; + return {def, key}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprLocal* l) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprGroup* group) { - NullableBreadcrumbId breadcrumb = scope->lookup(l->local); - if (!breadcrumb) - handle->ice("DFG: AstExprLocal came before its declaration?"); - - graph.astBreadcrumbs[l] = breadcrumb; - return NotNull{breadcrumb}; + return visitExpr(scope, group->expr); } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprGlobal* g) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprLocal* l) { - NullableBreadcrumbId bc = scope->lookup(g->name); - if (!bc) + if (auto def = scope->lookup(l->local)) { - bc = breadcrumbs->add(nullptr, defs->freshCell()); - moduleScope->bindings[g->name] = bc; + const RefinementKey* key = keyArena->leaf(*def); + return {*def, key}; } - graph.astBreadcrumbs[g] = bc; - return NotNull{bc}; + handle->ice("DFG: AstExprLocal came before its declaration?"); } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprCall* c) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprGlobal* g) +{ + if (auto def = scope->lookup(g->name)) + return {*def, keyArena->leaf(*def)}; + + DefId def = defArena->freshCell(); + moduleScope->bindings[g->name] = def; + return {def, keyArena->leaf(def)}; +} + +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprCall* c) { visitExpr(scope, c->func); for (AstExpr* arg : c->args) visitExpr(scope, arg); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIndexName* i) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIndexName* i) { - BreadcrumbId parentBreadcrumb = visitExpr(scope, i->expr); + auto [parentDef, parentKey] = visitExpr(scope, i->expr); - std::string key = i->index.value; - NullableBreadcrumbId& propBreadcrumb = moduleScope->props[parentBreadcrumb->def][key]; - if (!propBreadcrumb) - propBreadcrumb = breadcrumbs->emplace(parentBreadcrumb, defs->freshCell(), key); + std::string index = i->index.value; + auto& propDef = moduleScope->props[parentDef][index]; + if (!propDef) + propDef = defArena->freshCell(); - graph.astBreadcrumbs[i] = propBreadcrumb; - return NotNull{propBreadcrumb}; + return {NotNull{propDef}, keyArena->node(parentKey, NotNull{propDef}, index)}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIndexExpr* i) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIndexExpr* i) { - BreadcrumbId parentBreadcrumb = visitExpr(scope, i->expr); - BreadcrumbId key = visitExpr(scope, i->index); + auto [parentDef, parentKey] = visitExpr(scope, i->expr); + visitExpr(scope, i->index); if (auto string = i->index->as()) { - std::string key{string->value.data, string->value.size}; - NullableBreadcrumbId& propBreadcrumb = moduleScope->props[parentBreadcrumb->def][key]; - if (!propBreadcrumb) - propBreadcrumb = breadcrumbs->emplace(parentBreadcrumb, defs->freshCell(), key); + std::string index{string->value.data, string->value.size}; + auto& propDef = moduleScope->props[parentDef][index]; + if (!propDef) + propDef = defArena->freshCell(); - graph.astBreadcrumbs[i] = NotNull{propBreadcrumb}; - return NotNull{propBreadcrumb}; + return {NotNull{propDef}, keyArena->node(parentKey, NotNull{propDef}, index)}; } - return breadcrumbs->emplace(nullptr, defs->freshCell(), key); + return {defArena->freshCell(/* subscripted= */true), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprFunction* f) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprFunction* f) { DfgScope* signatureScope = childScope(scope); @@ -493,10 +515,9 @@ BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprFunction* f // There's no syntax for `self` to have an annotation if using `function t:m()` LUAU_ASSERT(!self->annotation); - // TODO: ParameterMetadata. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.localBreadcrumbs[self] = bc; - signatureScope->bindings[self] = bc; + DefId def = defArena->freshCell(); + graph.localDefs[self] = def; + signatureScope->bindings[self] = def; } for (AstLocal* param : f->args) @@ -504,10 +525,9 @@ BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprFunction* f if (param->annotation) visitType(signatureScope, param->annotation); - // TODO: ParameterMetadata. - BreadcrumbId bc = breadcrumbs->add(nullptr, defs->freshCell()); - graph.localBreadcrumbs[param] = bc; - signatureScope->bindings[param] = bc; + DefId def = defArena->freshCell(); + graph.localDefs[param] = def; + signatureScope->bindings[param] = def; } if (f->varargAnnotation) @@ -526,10 +546,10 @@ BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprFunction* f // g() --> 5 visit(signatureScope, f->body); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprTable* t) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprTable* t) { for (AstExprTable::Item item : t->items) { @@ -538,120 +558,132 @@ BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprTable* t) visitExpr(scope, item.value); } - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprUnary* u) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprUnary* u) { visitExpr(scope, u->expr); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprBinary* b) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprBinary* b) { visitExpr(scope, b->left); visitExpr(scope, b->right); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprTypeAssertion* t) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprTypeAssertion* t) { - // TODO: TypeAssertionMetadata? - BreadcrumbId bc = visitExpr(scope, t->expr); + auto [def, key] = visitExpr(scope, t->expr); visitType(scope, t->annotation); - return bc; + return {def, key}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIfElse* i) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprIfElse* i) { visitExpr(scope, i->condition); visitExpr(scope, i->trueExpr); visitExpr(scope, i->falseExpr); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprInterpString* i) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprInterpString* i) { for (AstExpr* e : i->expressions) visitExpr(scope, e); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -BreadcrumbId DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprError* error) +DataFlowResult DataFlowGraphBuilder::visitExpr(DfgScope* scope, AstExprError* error) { DfgScope* unreachable = childScope(scope); for (AstExpr* e : error->expressions) visitExpr(unreachable, e); - return breadcrumbs->add(nullptr, defs->freshCell()); + return {defArena->freshCell(), nullptr}; } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExpr* e, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExpr* e, DefId incomingDef, bool isCompoundAssignment) { if (auto l = e->as()) - return visitLValue(scope, l, bc); + return visitLValue(scope, l, incomingDef, isCompoundAssignment); else if (auto g = e->as()) - return visitLValue(scope, g, bc); + return visitLValue(scope, g, incomingDef, isCompoundAssignment); else if (auto i = e->as()) - return visitLValue(scope, i, bc); + return visitLValue(scope, i, incomingDef); else if (auto i = e->as()) - return visitLValue(scope, i, bc); + return visitLValue(scope, i, incomingDef); else if (auto error = e->as()) - return visitLValue(scope, error, bc); + return visitLValue(scope, error, incomingDef); else handle->ice("Unknown AstExpr in DataFlowGraphBuilder::visitLValue"); } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprLocal* l, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprLocal* l, DefId incomingDef, bool isCompoundAssignment) { - // In order to avoid alias tracking, we need to clip the reference to the parent breadcrumb - // as well as the def that was about to be assigned onto this lvalue. However, we want to - // copy the metadata so that refinements can be consistent. - BreadcrumbId updated = breadcrumbs->add(scope->lookup(l->local), defs->freshCell(), bc->metadata); - graph.astBreadcrumbs[l] = updated; + // We need to keep the previous breadcrumb around for a compound assignment. + if (isCompoundAssignment) + { + if (auto def = scope->lookup(l->local)) + graph.compoundAssignBreadcrumbs[l] = *def; + } + + // In order to avoid alias tracking, we need to clip the reference to the parent def. + DefId updated = defArena->freshCell(containsSubscriptedDefinition(incomingDef)); + graph.astDefs[l] = updated; scope->bindings[l->local] = updated; } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprGlobal* g, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprGlobal* g, DefId incomingDef, bool isCompoundAssignment) { - // In order to avoid alias tracking, we need to clip the reference to the parent breadcrumb - // as well as the def that was about to be assigned onto this lvalue. However, we want to - // copy the metadata so that refinements can be consistent. - BreadcrumbId updated = breadcrumbs->add(scope->lookup(g->name), defs->freshCell(), bc->metadata); - graph.astBreadcrumbs[g] = updated; + // We need to keep the previous breadcrumb around for a compound assignment. + if (isCompoundAssignment) + { + if (auto def = scope->lookup(g->name)) + graph.compoundAssignBreadcrumbs[g] = *def; + } + + // In order to avoid alias tracking, we need to clip the reference to the parent def. + DefId updated = defArena->freshCell(containsSubscriptedDefinition(incomingDef)); + graph.astDefs[g] = updated; scope->bindings[g->name] = updated; } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprIndexName* i, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprIndexName* i, DefId incomingDef) { - BreadcrumbId parentBreadcrumb = visitExpr(scope, i->expr); + DefId parentDef = visitExpr(scope, i->expr).def; - BreadcrumbId updated = breadcrumbs->add(scope->props[parentBreadcrumb->def][i->index.value], defs->freshCell(), bc->metadata); - graph.astBreadcrumbs[i] = updated; - scope->props[parentBreadcrumb->def][i->index.value] = updated; + DefId updated = defArena->freshCell(containsSubscriptedDefinition(incomingDef)); + graph.astDefs[i] = updated; + scope->props[parentDef][i->index.value] = updated; } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprIndexExpr* i, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprIndexExpr* i, DefId incomingDef) { - BreadcrumbId parentBreadcrumb = visitExpr(scope, i->expr); + DefId parentDef = visitExpr(scope, i->expr).def; visitExpr(scope, i->index); if (auto string = i->index->as()) { - BreadcrumbId updated = breadcrumbs->add(scope->props[parentBreadcrumb->def][string->value.data], defs->freshCell(), bc->metadata); - graph.astBreadcrumbs[i] = updated; - scope->props[parentBreadcrumb->def][string->value.data] = updated; + DefId updated = defArena->freshCell(containsSubscriptedDefinition(incomingDef)); + graph.astDefs[i] = updated; + scope->props[parentDef][string->value.data] = updated; } + + graph.astDefs[i] = defArena->freshCell(); } -void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprError* error, BreadcrumbId bc) +void DataFlowGraphBuilder::visitLValue(DfgScope* scope, AstExprError* error, DefId incomingDef) { - visitExpr(scope, error); + DefId def = visitExpr(scope, error).def; + graph.astDefs[error] = def; } void DataFlowGraphBuilder::visitType(DfgScope* scope, AstType* t) diff --git a/Analysis/src/Def.cpp b/Analysis/src/Def.cpp index 7be075c2..d34b5cdc 100644 --- a/Analysis/src/Def.cpp +++ b/Analysis/src/Def.cpp @@ -1,12 +1,22 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "Luau/Def.h" +#include "Luau/Common.h" namespace Luau { -DefId DefArena::freshCell() +bool containsSubscriptedDefinition(DefId def) { - return NotNull{allocator.allocate(Def{Cell{}})}; + if (auto cell = get(def)) + return cell->subscripted; + + LUAU_ASSERT(!"Phi nodes not implemented yet"); + return false; +} + +DefId DefArena::freshCell(bool subscripted) +{ + return NotNull{allocator.allocate(Def{Cell{subscripted}})}; } } // namespace Luau diff --git a/Analysis/src/IostreamHelpers.cpp b/Analysis/src/IostreamHelpers.cpp index 75e1f7c3..7a58a244 100644 --- a/Analysis/src/IostreamHelpers.cpp +++ b/Analysis/src/IostreamHelpers.cpp @@ -1,6 +1,7 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "Luau/IostreamHelpers.h" #include "Luau/ToString.h" +#include "Luau/TypePath.h" namespace Luau { @@ -236,4 +237,34 @@ std::ostream& operator<<(std::ostream& stream, const TypePackVar& tv) return stream << toString(tv); } +std::ostream& operator<<(std::ostream& stream, TypeId ty) +{ + // we commonly use a null pointer when a type may not be present; we need to + // account for that here. + if (!ty) + return stream << ""; + + return stream << toString(ty); +} + +std::ostream& operator<<(std::ostream& stream, TypePackId tp) +{ + // we commonly use a null pointer when a type may not be present; we need to + // account for that here. + if (!tp) + return stream << ""; + + return stream << toString(tp); +} + +namespace TypePath +{ + +std::ostream& operator<<(std::ostream& stream, const Path& path) +{ + return stream << toString(path); +} + +} // namespace TypePath + } // namespace Luau diff --git a/Analysis/src/NonStrictTypeChecker.cpp b/Analysis/src/NonStrictTypeChecker.cpp index a7bb9d29..595794a0 100644 --- a/Analysis/src/NonStrictTypeChecker.cpp +++ b/Analysis/src/NonStrictTypeChecker.cpp @@ -325,6 +325,7 @@ struct NonStrictTypeChecker return; TypeId fnTy = *originalCallTy; + // TODO: how should we link this to the passed in context here NonStrictContext fresh{}; if (auto fn = get(follow(fnTy))) { @@ -351,28 +352,20 @@ struct NonStrictTypeChecker // We will compare arg and ~number AstExpr* arg = call->args.data[i]; TypeId expectedArgType = argTypes[i]; - NullableBreadcrumbId bc = dfg->getBreadcrumb(arg); + DefId def = dfg->getDef(arg); // TODO: Cache negations created here!!! // See Jira Ticket: https://roblox.atlassian.net/browse/CLI-87539 - if (bc) - { - TypeId runTimeErrorTy = arena.addType(NegationType{expectedArgType}); - DefId def = bc->def; - fresh.context[def.get()] = runTimeErrorTy; - } - else - { - std::cout << "bad" << std::endl; - } + TypeId runTimeErrorTy = arena.addType(NegationType{expectedArgType}); + fresh.context[def.get()] = runTimeErrorTy; } // Populate the context and now iterate through each of the arguments to the call to find out if we satisfy the types + AstName name = getIdentifier(call->func); for (size_t i = 0; i < call->args.size; i++) { AstExpr* arg = call->args.data[i]; - // TODO: pipe in name of checked function to report Error if (auto runTimeFailureType = willRunTimeError(arg, fresh)) - reportError(CheckedFunctionCallError{argTypes[i], *runTimeFailureType, "", i}, arg->location); + reportError(CheckedFunctionCallError{argTypes[i], *runTimeFailureType, name.value, i}, arg->location); } } } @@ -401,25 +394,22 @@ struct NonStrictTypeChecker // If this fragment of the ast will run time error, return the type that causes this std::optional willRunTimeError(AstExpr* fragment, const NonStrictContext& context) { - - if (NullableBreadcrumbId bc = dfg->getBreadcrumb(fragment)) + DefId def = dfg->getDef(fragment); + if (std::optional contextTy = context.find(def)) { - std::optional contextTy = context.find(bc->def); - if (contextTy) - { - TypeId actualType = lookupType(fragment); - SubtypingResult r = subtyping.isSubtype(actualType, *contextTy); - if (r.normalizationTooComplex) - reportError(NormalizationTooComplex{}, fragment->location); + TypeId actualType = lookupType(fragment); + SubtypingResult r = subtyping.isSubtype(actualType, *contextTy); + if (r.normalizationTooComplex) + reportError(NormalizationTooComplex{}, fragment->location); - if (!r.isSubtype && !r.isErrorSuppressing) - reportError(TypeMismatch{actualType, *contextTy}, fragment->location); + if (!r.isSubtype && !r.isErrorSuppressing) + reportError(TypeMismatch{actualType, *contextTy}, fragment->location); - if (r.isSubtype) - return {actualType}; - } + if (r.isSubtype) + return {actualType}; } + return {}; } }; diff --git a/Analysis/src/Normalize.cpp b/Analysis/src/Normalize.cpp index 4f9532c0..52bbc5d9 100644 --- a/Analysis/src/Normalize.cpp +++ b/Analysis/src/Normalize.cpp @@ -22,6 +22,13 @@ LUAU_FASTFLAG(DebugLuauReadWriteProperties) namespace Luau { + +TypeIds::TypeIds(std::initializer_list tys) +{ + for (TypeId ty : tys) + insert(ty); +} + void TypeIds::insert(TypeId ty) { ty = follow(ty); diff --git a/Analysis/src/Refinement.cpp b/Analysis/src/Refinement.cpp index a81063c7..e98b6e5a 100644 --- a/Analysis/src/Refinement.cpp +++ b/Analysis/src/Refinement.cpp @@ -1,37 +1,60 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "Luau/Refinement.h" +#include namespace Luau { RefinementId RefinementArena::variadic(const std::vector& refis) { + bool hasRefinements = false; + for (RefinementId r : refis) + hasRefinements |= bool(r); + + if (!hasRefinements) + return nullptr; + return NotNull{allocator.allocate(Variadic{refis})}; } RefinementId RefinementArena::negation(RefinementId refinement) { + if (!refinement) + return nullptr; + return NotNull{allocator.allocate(Negation{refinement})}; } RefinementId RefinementArena::conjunction(RefinementId lhs, RefinementId rhs) { + if (!lhs && !rhs) + return nullptr; + return NotNull{allocator.allocate(Conjunction{lhs, rhs})}; } RefinementId RefinementArena::disjunction(RefinementId lhs, RefinementId rhs) { + if (!lhs && !rhs) + return nullptr; + return NotNull{allocator.allocate(Disjunction{lhs, rhs})}; } RefinementId RefinementArena::equivalence(RefinementId lhs, RefinementId rhs) { + if (!lhs && !rhs) + return nullptr; + return NotNull{allocator.allocate(Equivalence{lhs, rhs})}; } -RefinementId RefinementArena::proposition(BreadcrumbId breadcrumb, TypeId discriminantTy) +RefinementId RefinementArena::proposition(const RefinementKey* key, TypeId discriminantTy) { - return NotNull{allocator.allocate(Proposition{breadcrumb, discriminantTy})}; + if (!key) + return nullptr; + + return NotNull{allocator.allocate(Proposition{key, discriminantTy})}; } } // namespace Luau diff --git a/Analysis/src/Scope.cpp b/Analysis/src/Scope.cpp index 92912530..2ca40bdd 100644 --- a/Analysis/src/Scope.cpp +++ b/Analysis/src/Scope.cpp @@ -38,6 +38,23 @@ std::optional Scope::lookup(Symbol sym) const return std::nullopt; } +std::optional> Scope::lookupEx(DefId def) +{ + Scope* s = this; + + while (true) + { + TypeId* it = s->lvalueTypes.find(def); + if (it) + return std::pair{*it, s}; + + if (s->parent) + s = s->parent.get(); + else + return std::nullopt; + } +} + std::optional> Scope::lookupEx(Symbol sym) { Scope* s = this; diff --git a/Analysis/src/Substitution.cpp b/Analysis/src/Substitution.cpp index a34a45c8..176f1506 100644 --- a/Analysis/src/Substitution.cpp +++ b/Analysis/src/Substitution.cpp @@ -75,6 +75,7 @@ static TypeId shallowClone(TypeId ty, TypeArena& dest, const TxnLog* log, bool a clone.dcrMagicRefinement = a.dcrMagicRefinement; clone.tags = a.tags; clone.argNames = a.argNames; + clone.isCheckedFunction = a.isCheckedFunction; return dest.addType(std::move(clone)); } else if constexpr (std::is_same_v) diff --git a/Analysis/src/Subtyping.cpp b/Analysis/src/Subtyping.cpp index 79bedec2..e386bf7b 100644 --- a/Analysis/src/Subtyping.cpp +++ b/Analysis/src/Subtyping.cpp @@ -11,6 +11,7 @@ #include "Luau/Type.h" #include "Luau/TypeArena.h" #include "Luau/TypePack.h" +#include "Luau/TypePath.h" #include "Luau/TypeUtils.h" #include @@ -44,8 +45,19 @@ struct VarianceFlipper } }; +bool SubtypingReasoning::operator==(const SubtypingReasoning& other) const +{ + return subPath == other.subPath && superPath == other.superPath; +} + SubtypingResult& SubtypingResult::andAlso(const SubtypingResult& other) { + // If this result is a subtype, we take the other result's reasoning. If + // this result is not a subtype, we keep the current reasoning, even if the + // other isn't a subtype. + if (isSubtype) + reasoning = other.reasoning; + isSubtype &= other.isSubtype; // `|=` is intentional here, we want to preserve error related flags. isErrorSuppressing |= other.isErrorSuppressing; @@ -57,6 +69,11 @@ SubtypingResult& SubtypingResult::andAlso(const SubtypingResult& other) SubtypingResult& SubtypingResult::orElse(const SubtypingResult& other) { + // If the other result is not a subtype, we take the other result's + // reasoning. + if (!other.isSubtype) + reasoning = other.reasoning; + isSubtype |= other.isSubtype; isErrorSuppressing |= other.isErrorSuppressing; normalizationTooComplex |= other.normalizationTooComplex; @@ -65,6 +82,56 @@ SubtypingResult& SubtypingResult::orElse(const SubtypingResult& other) return *this; } +SubtypingResult& SubtypingResult::withBothComponent(TypePath::Component component) +{ + return withSubComponent(component).withSuperComponent(component); +} + +SubtypingResult& SubtypingResult::withSubComponent(TypePath::Component component) +{ + if (!reasoning) + reasoning = SubtypingReasoning{Path(), Path()}; + + reasoning->subPath = reasoning->subPath.push_front(component); + + return *this; +} + +SubtypingResult& SubtypingResult::withSuperComponent(TypePath::Component component) +{ + if (!reasoning) + reasoning = SubtypingReasoning{Path(), Path()}; + + reasoning->superPath = reasoning->superPath.push_front(component); + + return *this; +} + +SubtypingResult& SubtypingResult::withBothPath(TypePath::Path path) +{ + return withSubPath(path).withSuperPath(path); +} + +SubtypingResult& SubtypingResult::withSubPath(TypePath::Path path) +{ + if (!reasoning) + reasoning = SubtypingReasoning{Path(), Path()}; + + reasoning->subPath = path.append(reasoning->subPath); + + return *this; +} + +SubtypingResult& SubtypingResult::withSuperPath(TypePath::Path path) +{ + if (!reasoning) + reasoning = SubtypingReasoning{Path(), Path()}; + + reasoning->superPath = path.append(reasoning->superPath); + + return *this; +} + SubtypingResult SubtypingResult::negate(const SubtypingResult& result) { return SubtypingResult{ @@ -287,7 +354,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypeId sub else if (get(subTy)) result = {false, true}; else if (auto p = get2(subTy, superTy)) - result = isCovariantWith(env, p.first->ty, p.second->ty); + result = isCovariantWith(env, p.first->ty, p.second->ty).withBothComponent(TypePath::TypeField::Negated); else if (auto subNegation = get(subTy)) result = isCovariantWith(env, subNegation, superTy); else if (auto superNegation = get(superTy)) @@ -350,9 +417,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId for (size_t i = 0; i < headSize; ++i) { - results.push_back(isCovariantWith(env, subHead[i], superHead[i])); + results.push_back(isCovariantWith(env, subHead[i], superHead[i]).withBothComponent(TypePath::Index{i})); if (!results.back().isSubtype) - return {false}; + return results.back(); } // Handle mismatched head sizes @@ -364,7 +431,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId if (auto vt = get(*subTail)) { for (size_t i = headSize; i < superHead.size(); ++i) - results.push_back(isCovariantWith(env, vt->ty, superHead[i])); + results.push_back(isCovariantWith(env, vt->ty, superHead[i]) + .withSubComponent(TypePath::TypeField::Variadic) + .withSuperComponent(TypePath::Index{i})); } else if (auto gt = get(*subTail)) { @@ -379,7 +448,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId TypePackId superTailPack = arena->addTypePack(std::move(headSlice), superTail); if (TypePackId* other = env.mappedGenericPacks.find(*subTail)) - results.push_back(isCovariantWith(env, *other, superTailPack)); + // TODO: TypePath can't express "slice of a pack + its tail". + results.push_back(isCovariantWith(env, *other, superTailPack).withSubComponent(TypePath::PackField::Tail)); else env.mappedGenericPacks.try_insert(*subTail, superTailPack); @@ -393,7 +463,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId // // (T) -> () (X) -> () // - return {false}; + return SubtypingResult{false}.withSubComponent(TypePath::PackField::Tail); } } else @@ -409,7 +479,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId if (auto vt = get(*superTail)) { for (size_t i = headSize; i < subHead.size(); ++i) - results.push_back(isCovariantWith(env, subHead[i], vt->ty)); + results.push_back(isCovariantWith(env, subHead[i], vt->ty) + .withSubComponent(TypePath::Index{i}) + .withSuperComponent(TypePath::TypeField::Variadic)); } else if (auto gt = get(*superTail)) { @@ -424,7 +496,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId TypePackId subTailPack = arena->addTypePack(std::move(headSlice), subTail); if (TypePackId* other = env.mappedGenericPacks.find(*superTail)) - results.push_back(isCovariantWith(env, *other, subTailPack)); + // TODO: TypePath can't express "slice of a pack + its tail". + results.push_back(isCovariantWith(env, *other, subTailPack).withSuperComponent(TypePath::PackField::Tail)); else env.mappedGenericPacks.try_insert(*superTail, subTailPack); @@ -437,7 +510,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId // For any non-generic type T: // // () -> T () -> X... - return {false}; + return SubtypingResult{false}.withSuperComponent(TypePath::PackField::Tail); } } else @@ -453,12 +526,14 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId { if (auto p = get2(*subTail, *superTail)) { - results.push_back(isCovariantWith(env, p)); + // Variadic component is added by the isCovariantWith + // implementation; no need to add it here. + results.push_back(isCovariantWith(env, p).withBothComponent(TypePath::PackField::Tail)); } else if (auto p = get2(*subTail, *superTail)) { bool ok = bindGeneric(env, *subTail, *superTail); - results.push_back({ok}); + results.push_back(SubtypingResult{ok}.withBothComponent(TypePath::PackField::Tail)); } else if (get2(*subTail, *superTail)) { @@ -466,12 +541,12 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId { // (A...) -> number <: (...number) -> number bool ok = bindGeneric(env, *subTail, *superTail); - results.push_back({ok}); + results.push_back(SubtypingResult{ok}.withBothComponent(TypePath::PackField::Tail)); } else { // (number) -> ...number (number) -> A... - results.push_back({false}); + results.push_back(SubtypingResult{false}.withBothComponent(TypePath::PackField::Tail)); } } else if (get2(*subTail, *superTail)) @@ -479,13 +554,13 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId if (variance == Variance::Contravariant) { // (...number) -> number (A...) -> number - results.push_back({false}); + results.push_back(SubtypingResult{false}.withBothComponent(TypePath::PackField::Tail)); } else { // () -> A... <: () -> ...number bool ok = bindGeneric(env, *subTail, *superTail); - results.push_back({ok}); + results.push_back(SubtypingResult{ok}.withBothComponent(TypePath::PackField::Tail)); } } else @@ -496,12 +571,12 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId { if (get(*subTail)) { - return {false}; + return SubtypingResult{false}.withSubComponent(TypePath::PackField::Tail); } else if (get(*subTail)) { bool ok = bindGeneric(env, *subTail, builtinTypes->emptyTypePack); - return {ok}; + return SubtypingResult{ok}.withSubComponent(TypePath::PackField::Tail); } else unexpected(*subTail); @@ -525,10 +600,10 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId if (variance == Variance::Contravariant) { bool ok = bindGeneric(env, builtinTypes->emptyTypePack, *superTail); - results.push_back({ok}); + results.push_back(SubtypingResult{ok}.withSuperComponent(TypePath::PackField::Tail)); } else - results.push_back({false}); + results.push_back(SubtypingResult{false}.withSuperComponent(TypePath::PackField::Tail)); } else iceReporter->ice("Subtyping test encountered the unexpected type pack: " + toString(*superTail)); @@ -540,7 +615,15 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypePackId template SubtypingResult Subtyping::isContravariantWith(SubtypingEnvironment& env, SubTy&& subTy, SuperTy&& superTy) { - return isCovariantWith(env, superTy, subTy); + SubtypingResult result = isCovariantWith(env, superTy, subTy); + // If we don't swap the paths here, we will end up producing an invalid path + // whenever we involve contravariance. We'll end up appending path + // components that should belong to the supertype to the subtype, and vice + // versa. + if (result.reasoning) + std::swap(result.reasoning->subPath, result.reasoning->superPath); + + return result; } template @@ -602,8 +685,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypeId sub { // As per TAPL: T <: A | B iff T <: A || T <: B std::vector subtypings; + size_t i = 0; for (TypeId ty : superUnion) - subtypings.push_back(isCovariantWith(env, subTy, ty)); + subtypings.push_back(isCovariantWith(env, subTy, ty).withSuperComponent(TypePath::Index{i++})); return SubtypingResult::any(subtypings); } @@ -611,8 +695,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Unio { // As per TAPL: A | B <: T iff A <: T && B <: T std::vector subtypings; + size_t i = 0; for (TypeId ty : subUnion) - subtypings.push_back(isCovariantWith(env, ty, superTy)); + subtypings.push_back(isCovariantWith(env, ty, superTy).withSubComponent(TypePath::Index{i++})); return SubtypingResult::all(subtypings); } @@ -620,8 +705,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, TypeId sub { // As per TAPL: T <: A & B iff T <: A && T <: B std::vector subtypings; + size_t i = 0; for (TypeId ty : superIntersection) - subtypings.push_back(isCovariantWith(env, subTy, ty)); + subtypings.push_back(isCovariantWith(env, subTy, ty).withSuperComponent(TypePath::Index{i++})); return SubtypingResult::all(subtypings); } @@ -629,8 +715,9 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Inte { // As per TAPL: A & B <: T iff A <: T || B <: T std::vector subtypings; + size_t i = 0; for (TypeId ty : subIntersection) - subtypings.push_back(isCovariantWith(env, ty, superTy)); + subtypings.push_back(isCovariantWith(env, ty, superTy).withSubComponent(TypePath::Index{i++})); return SubtypingResult::any(subtypings); } @@ -638,23 +725,25 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Nega { TypeId negatedTy = follow(subNegation->ty); + SubtypingResult result; + // In order to follow a consistent codepath, rather than folding the // isCovariantWith test down to its conclusion here, we test the subtyping test // of the result of negating the type for never, unknown, any, and error. if (is(negatedTy)) { // ¬never ~ unknown - return isCovariantWith(env, builtinTypes->unknownType, superTy); + result = isCovariantWith(env, builtinTypes->unknownType, superTy); } else if (is(negatedTy)) { // ¬unknown ~ never - return isCovariantWith(env, builtinTypes->neverType, superTy); + result = isCovariantWith(env, builtinTypes->neverType, superTy); } else if (is(negatedTy)) { // ¬any ~ any - return isCovariantWith(env, negatedTy, superTy); + result = isCovariantWith(env, negatedTy, superTy); } else if (auto u = get(negatedTy)) { @@ -668,7 +757,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Nega subtypings.push_back(isCovariantWith(env, &negatedTmp, superTy)); } - return SubtypingResult::all(subtypings); + result = SubtypingResult::all(subtypings); } else if (auto i = get(negatedTy)) { @@ -687,7 +776,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Nega } } - return SubtypingResult::any(subtypings); + result = SubtypingResult::any(subtypings); } else if (is(negatedTy)) { @@ -697,28 +786,32 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Nega // subtype of other stuff. else { - return {false}; + result = {false}; } + + return result.withSubComponent(TypePath::TypeField::Negated); } SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const TypeId subTy, const NegationType* superNegation) { TypeId negatedTy = follow(superNegation->ty); + SubtypingResult result; + if (is(negatedTy)) { // ¬never ~ unknown - return isCovariantWith(env, subTy, builtinTypes->unknownType); + result = isCovariantWith(env, subTy, builtinTypes->unknownType); } else if (is(negatedTy)) { // ¬unknown ~ never - return isCovariantWith(env, subTy, builtinTypes->neverType); + result = isCovariantWith(env, subTy, builtinTypes->neverType); } else if (is(negatedTy)) { // ¬any ~ any - return isSubtype(subTy, negatedTy); + result = isSubtype(subTy, negatedTy); } else if (auto u = get(negatedTy)) { @@ -737,7 +830,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Type } } - return SubtypingResult::all(subtypings); + result = SubtypingResult::all(subtypings); } else if (auto i = get(negatedTy)) { @@ -756,53 +849,55 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Type } } - return SubtypingResult::any(subtypings); + result = SubtypingResult::any(subtypings); } else if (auto p = get2(subTy, negatedTy)) { // number <: ¬boolean // number type != p.second->type}; + result = {p.first->type != p.second->type}; } else if (auto p = get2(subTy, negatedTy)) { // "foo" (p.first) && p.second->type == PrimitiveType::String) - return {false}; + result = {false}; // false (p.first) && p.second->type == PrimitiveType::Boolean) - return {false}; + result = {false}; // other cases are true else - return {true}; + result = {true}; } else if (auto p = get2(subTy, negatedTy)) { if (p.first->type == PrimitiveType::String && get(p.second)) - return {false}; + result = {false}; else if (p.first->type == PrimitiveType::Boolean && get(p.second)) - return {false}; + result = {false}; else - return {true}; + result = {true}; } // the top class type is not actually a primitive type, so the negation of // any one of them includes the top class type. else if (auto p = get2(subTy, negatedTy)) - return {true}; + result = {true}; else if (auto p = get(negatedTy); p && is(subTy)) - return {p->type != PrimitiveType::Table}; + result = {p->type != PrimitiveType::Table}; else if (auto p = get2(subTy, negatedTy)) - return {p.second->type != PrimitiveType::Function}; + result = {p.second->type != PrimitiveType::Function}; else if (auto p = get2(subTy, negatedTy)) - return {*p.first != *p.second}; + result = {*p.first != *p.second}; else if (auto p = get2(subTy, negatedTy)) - return SubtypingResult::negate(isCovariantWith(env, p.first, p.second)); + result = SubtypingResult::negate(isCovariantWith(env, p.first, p.second)); else if (get2(subTy, negatedTy)) - return {true}; + result = {true}; else if (is(negatedTy)) iceReporter->ice("attempting to negate a non-testable type"); + else + result = {false}; - return {false}; + return result.withSuperComponent(TypePath::TypeField::Negated); } SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const PrimitiveType* subPrim, const PrimitiveType* superPrim) @@ -836,16 +931,19 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Tabl { std::vector results; if (auto it = subTable->props.find(name); it != subTable->props.end()) - results.push_back(isInvariantWith(env, it->second.type(), prop.type())); + results.push_back(isInvariantWith(env, it->second.type(), prop.type()) + .withBothComponent(TypePath::Property(name))); if (subTable->indexer) { if (isInvariantWith(env, subTable->indexer->indexType, builtinTypes->stringType).isSubtype) - results.push_back(isInvariantWith(env, subTable->indexer->indexResultType, prop.type())); + results.push_back(isInvariantWith(env, subTable->indexer->indexResultType, prop.type()) + .withSubComponent(TypePath::TypeField::IndexResult) + .withSuperComponent(TypePath::Property(name))); } if (results.empty()) - return {false}; + return SubtypingResult{false}; result.andAlso(SubtypingResult::all(results)); } @@ -863,7 +961,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Tabl SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const MetatableType* subMt, const MetatableType* superMt) { - return isCovariantWith(env, subMt->table, superMt->table).andAlso(isCovariantWith(env, subMt->metatable, superMt->metatable)); + return isCovariantWith(env, subMt->table, superMt->table) + .andAlso(isCovariantWith(env, subMt->metatable, superMt->metatable).withBothComponent(TypePath::TypeField::Metatable)); } SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const MetatableType* subMt, const TableType* superTable) @@ -900,7 +999,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Clas for (const auto& [name, prop] : superTable->props) { if (auto classProp = lookupClassProp(subClass, name)) - result.andAlso(isInvariantWith(env, prop.type(), classProp->type())); + result.andAlso(isInvariantWith(env, prop.type(), classProp->type()).withBothComponent(TypePath::Property(name))); else return SubtypingResult{false}; } @@ -913,10 +1012,10 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Func SubtypingResult result; { VarianceFlipper vf{&variance}; - result.orElse(isContravariantWith(env, subFunction->argTypes, superFunction->argTypes)); + result.orElse(isContravariantWith(env, subFunction->argTypes, superFunction->argTypes).withBothComponent(TypePath::PackField::Arguments)); } - result.andAlso(isCovariantWith(env, subFunction->retTypes, superFunction->retTypes)); + result.andAlso(isCovariantWith(env, subFunction->retTypes, superFunction->retTypes).withBothComponent(TypePath::PackField::Returns)); return result; } @@ -933,7 +1032,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Prim if (auto it = mttv->props.find("__index"); it != mttv->props.end()) { if (auto stringTable = get(it->second.type())) - result.orElse(isCovariantWith(env, stringTable, superTable)); + result.orElse( + isCovariantWith(env, stringTable, superTable).withSubPath(TypePath::PathBuilder().mt().prop("__index").build())); } } } @@ -954,7 +1054,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Sing if (auto it = mttv->props.find("__index"); it != mttv->props.end()) { if (auto stringTable = get(it->second.type())) - result.orElse(isCovariantWith(env, stringTable, superTable)); + result.orElse( + isCovariantWith(env, stringTable, superTable).withSubPath(TypePath::PathBuilder().mt().prop("__index").build())); } } } @@ -965,7 +1066,8 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Sing SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const TableIndexer& subIndexer, const TableIndexer& superIndexer) { return isInvariantWith(env, subIndexer.indexType, superIndexer.indexType) - .andAlso(isInvariantWith(env, superIndexer.indexResultType, subIndexer.indexResultType)); + .withBothComponent(TypePath::TypeField::IndexLookup) + .andAlso(isInvariantWith(env, superIndexer.indexResultType, subIndexer.indexResultType).withBothComponent(TypePath::TypeField::IndexResult)); } SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const NormalizedType* subNorm, const NormalizedType* superNorm) @@ -1092,11 +1194,12 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Type { std::vector results; + size_t i = 0; for (TypeId subTy : subTypes) { results.emplace_back(); for (TypeId superTy : superTypes) - results.back().orElse(isCovariantWith(env, subTy, superTy)); + results.back().orElse(isCovariantWith(env, subTy, superTy).withBothComponent(TypePath::Index{i++})); } return SubtypingResult::all(results); @@ -1104,7 +1207,7 @@ SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const Type SubtypingResult Subtyping::isCovariantWith(SubtypingEnvironment& env, const VariadicTypePack* subVariadic, const VariadicTypePack* superVariadic) { - return isCovariantWith(env, subVariadic->ty, superVariadic->ty); + return isCovariantWith(env, subVariadic->ty, superVariadic->ty).withBothComponent(TypePath::TypeField::Variadic); } bool Subtyping::bindGeneric(SubtypingEnvironment& env, TypeId subTy, TypeId superTy) diff --git a/Analysis/src/ToString.cpp b/Analysis/src/ToString.cpp index 8123e09f..58c03db4 100644 --- a/Analysis/src/ToString.cpp +++ b/Analysis/src/ToString.cpp @@ -1,6 +1,7 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "Luau/ToString.h" +#include "Luau/Common.h" #include "Luau/Constraint.h" #include "Luau/Location.h" #include "Luau/Scope.h" @@ -10,6 +11,7 @@ #include "Luau/Type.h" #include "Luau/TypeFamily.h" #include "Luau/VisitType.h" +#include "Luau/TypeOrPack.h" #include #include @@ -620,6 +622,12 @@ struct TypeStringifier state.emit(">"); } + if (FFlag::DebugLuauDeferredConstraintResolution) + { + if (ftv.isCheckedFunction) + state.emit("@checked "); + } + state.emit("("); if (state.opts.functionTypeArguments) @@ -1686,21 +1694,6 @@ std::string toString(const Constraint& constraint, ToStringOptions& opts) std::string superStr = tos(c.superType); return subStr + " ~ inst " + superStr; } - else if constexpr (std::is_same_v) - { - std::string resultStr = tos(c.resultType); - std::string operandStr = tos(c.operandType); - - return resultStr + " ~ Unary<" + toString(c.op) + ", " + operandStr + ">"; - } - else if constexpr (std::is_same_v) - { - std::string resultStr = tos(c.resultType); - std::string leftStr = tos(c.leftType); - std::string rightStr = tos(c.rightType); - - return resultStr + " ~ Binary<" + toString(c.op) + ", " + leftStr + ", " + rightStr + ">"; - } else if constexpr (std::is_same_v) { std::string iteratorStr = tos(c.iterator); @@ -1756,6 +1749,23 @@ std::string toString(const Constraint& constraint, ToStringOptions& opts) const char* op = c.mode == RefineConstraint::Union ? "union" : "intersect"; return tos(c.resultType) + " ~ refine " + tos(c.type) + " " + op + " " + tos(c.discriminant); } + else if constexpr (std::is_same_v) + { + const char* op = c.mode == SetOpConstraint::Union ? " | " : " & "; + std::string res = tos(c.resultType) + " ~ "; + bool first = true; + for (TypeId t : c.types) + { + if (first) + first = false; + else + res += op; + + res += tos(t); + } + + return res; + } else if constexpr (std::is_same_v) return "reduce " + tos(c.ty); else if constexpr (std::is_same_v) @@ -1834,4 +1844,24 @@ std::string toString(const Location& location, int offset, bool useBegin) } } +std::string toString(const TypeOrPack& tyOrTp, ToStringOptions& opts) +{ + if (const TypeId* ty = get(tyOrTp)) + return toString(*ty, opts); + else if (const TypePackId* tp = get(tyOrTp)) + return toString(*tp, opts); + else + LUAU_UNREACHABLE(); +} + +std::string dump(const TypeOrPack& tyOrTp) +{ + ToStringOptions opts; + opts.exhaustive = true; + opts.functionTypeArguments = true; + std::string s = toString(tyOrTp, opts); + printf("%s\n", s.c_str()); + return s; +} + } // namespace Luau diff --git a/Analysis/src/TypeChecker2.cpp b/Analysis/src/TypeChecker2.cpp index 24925a1a..166b7525 100644 --- a/Analysis/src/TypeChecker2.cpp +++ b/Analysis/src/TypeChecker2.cpp @@ -15,9 +15,11 @@ #include "Luau/ToString.h" #include "Luau/TxnLog.h" #include "Luau/Type.h" -#include "Luau/TypePack.h" -#include "Luau/TypeUtils.h" #include "Luau/TypeFamily.h" +#include "Luau/TypeFwd.h" +#include "Luau/TypePack.h" +#include "Luau/TypePath.h" +#include "Luau/TypeUtils.h" #include "Luau/VisitType.h" #include @@ -2395,7 +2397,27 @@ struct TypeChecker2 reportError(NormalizationTooComplex{}, location); if (!r.isSubtype && !r.isErrorSuppressing) - reportError(TypeMismatch{superTy, subTy}, location); + { + if (r.reasoning) + { + std::optional subLeaf = traverse(subTy, r.reasoning->subPath, builtinTypes); + std::optional superLeaf = traverse(superTy, r.reasoning->superPath, builtinTypes); + + if (!subLeaf || !superLeaf) + ice->ice("Subtyping test returned a reasoning with an invalid path", location); + + if (!get2(*subLeaf, *superLeaf) && !get2(*subLeaf, *superLeaf)) + ice->ice("Subtyping test returned a reasoning where one path ends at a type and the other ends at a pack.", location); + + std::string reason = "type " + toString(subTy) + toString(r.reasoning->subPath) + " (" + toString(*subLeaf) + + ") is not a subtype of " + toString(superTy) + toString(r.reasoning->superPath) + " (" + toString(*superLeaf) + + ")"; + + reportError(TypeMismatch{superTy, subTy, reason}, location); + } + else + reportError(TypeMismatch{superTy, subTy}, location); + } return r.isSubtype; } diff --git a/Analysis/src/TypeFamily.cpp b/Analysis/src/TypeFamily.cpp index f631d795..7e4a591d 100644 --- a/Analysis/src/TypeFamily.cpp +++ b/Analysis/src/TypeFamily.cpp @@ -338,6 +338,150 @@ TypeFamilyReductionResult notFamilyFn(const std::vector& typePar return {ctx->builtins->booleanType, false, {}, {}}; } +TypeFamilyReductionResult lenFamilyFn(const std::vector& typeParams, const std::vector& packParams, NotNull ctx) +{ + if (typeParams.size() != 1 || !packParams.empty()) + { + ctx->ice->ice("len type family: encountered a type family instance without the required argument structure"); + LUAU_ASSERT(false); + } + + TypeId operandTy = follow(typeParams.at(0)); + const NormalizedType* normTy = ctx->normalizer->normalize(operandTy); + + // if the type failed to normalize, we can't reduce, but know nothing about inhabitance. + if (!normTy) + return {std::nullopt, false, {}, {}}; + + // if the operand type is error suppressing, we can immediately reduce to `number`. + if (normTy->shouldSuppressErrors()) + return {ctx->builtins->numberType, false, {}, {}}; + + // if we have a `never`, we can never observe that the operator didn't work. + if (is(operandTy)) + return {ctx->builtins->neverType, false, {}, {}}; + + // if we're checking the length of a string, that works! + if (normTy->isSubtypeOfString()) + return {ctx->builtins->numberType, false, {}, {}}; + + // we use the normalized operand here in case there was an intersection or union. + TypeId normalizedOperand = ctx->normalizer->typeFromNormal(*normTy); + if (normTy->hasTopTable() || get(normalizedOperand)) + return {ctx->builtins->numberType, false, {}, {}}; + + // otherwise, we wait to see if the operand type is resolved + if (isPending(operandTy, ctx->solver)) + return {std::nullopt, false, {operandTy}, {}}; + + // findMetatableEntry demands the ability to emit errors, so we must give it + // the necessary state to do that, even if we intend to just eat the errors. + ErrorVec dummy; + + std::optional mmType = findMetatableEntry(ctx->builtins, dummy, operandTy, "__len", Location{}); + if (!mmType) + return {std::nullopt, true, {}, {}}; + + mmType = follow(*mmType); + if (isPending(*mmType, ctx->solver)) + return {std::nullopt, false, {*mmType}, {}}; + + const FunctionType* mmFtv = get(*mmType); + if (!mmFtv) + return {std::nullopt, true, {}, {}}; + + std::optional instantiatedMmType = instantiate(ctx->builtins, ctx->arena, ctx->limits, ctx->scope, *mmType); + if (!instantiatedMmType) + return {std::nullopt, true, {}, {}}; + + const FunctionType* instantiatedMmFtv = get(*instantiatedMmType); + if (!instantiatedMmFtv) + return {ctx->builtins->errorRecoveryType(), false, {}, {}}; + + TypePackId inferredArgPack = ctx->arena->addTypePack({operandTy}); + Unifier2 u2{ctx->arena, ctx->builtins, ctx->scope, ctx->ice}; + if (!u2.unify(inferredArgPack, instantiatedMmFtv->argTypes)) + return {std::nullopt, true, {}, {}}; // occurs check failed + + Subtyping subtyping{ctx->builtins, ctx->arena, ctx->normalizer, ctx->ice, ctx->scope}; + if (!subtyping.isSubtype(inferredArgPack, instantiatedMmFtv->argTypes).isSubtype) // TODO: is this the right variance? + return {std::nullopt, true, {}, {}}; + + // `len` must return a `number`. + return {ctx->builtins->numberType, false, {}, {}}; +} + +TypeFamilyReductionResult unmFamilyFn( + const std::vector& typeParams, const std::vector& packParams, NotNull ctx) +{ + if (typeParams.size() != 1 || !packParams.empty()) + { + ctx->ice->ice("unm type family: encountered a type family instance without the required argument structure"); + LUAU_ASSERT(false); + } + + TypeId operandTy = follow(typeParams.at(0)); + const NormalizedType* normTy = ctx->normalizer->normalize(operandTy); + + // if the operand failed to normalize, we can't reduce, but know nothing about inhabitance. + if (!normTy) + return {std::nullopt, false, {}, {}}; + + // if the operand is error suppressing, we can just go ahead and reduce. + if (normTy->shouldSuppressErrors()) + return {operandTy, false, {}, {}}; + + // if we have a `never`, we can never observe that the operation didn't work. + if (is(operandTy)) + return {ctx->builtins->neverType, false, {}, {}}; + + // If the type is exactly `number`, we can reduce now. + if (normTy->isExactlyNumber()) + return {ctx->builtins->numberType, false, {}, {}}; + + // otherwise, check if we need to wait on the type to be further resolved + if (isPending(operandTy, ctx->solver)) + return {std::nullopt, false, {operandTy}, {}}; + + // findMetatableEntry demands the ability to emit errors, so we must give it + // the necessary state to do that, even if we intend to just eat the errors. + ErrorVec dummy; + + std::optional mmType = findMetatableEntry(ctx->builtins, dummy, operandTy, "__unm", Location{}); + if (!mmType) + return {std::nullopt, true, {}, {}}; + + mmType = follow(*mmType); + if (isPending(*mmType, ctx->solver)) + return {std::nullopt, false, {*mmType}, {}}; + + const FunctionType* mmFtv = get(*mmType); + if (!mmFtv) + return {std::nullopt, true, {}, {}}; + + std::optional instantiatedMmType = instantiate(ctx->builtins, ctx->arena, ctx->limits, ctx->scope, *mmType); + if (!instantiatedMmType) + return {std::nullopt, true, {}, {}}; + + const FunctionType* instantiatedMmFtv = get(*instantiatedMmType); + if (!instantiatedMmFtv) + return {ctx->builtins->errorRecoveryType(), false, {}, {}}; + + TypePackId inferredArgPack = ctx->arena->addTypePack({operandTy}); + Unifier2 u2{ctx->arena, ctx->builtins, ctx->scope, ctx->ice}; + if (!u2.unify(inferredArgPack, instantiatedMmFtv->argTypes)) + return {std::nullopt, true, {}, {}}; // occurs check failed + + Subtyping subtyping{ctx->builtins, ctx->arena, ctx->normalizer, ctx->ice, ctx->scope}; + if (!subtyping.isSubtype(inferredArgPack, instantiatedMmFtv->argTypes).isSubtype) // TODO: is this the right variance? + return {std::nullopt, true, {}, {}}; + + if (std::optional ret = first(instantiatedMmFtv->retTypes)) + return {*ret, false, {}, {}}; + else + return {std::nullopt, true, {}, {}}; +} + TypeFamilyReductionResult numericBinopFamilyFn( const std::vector& typeParams, const std::vector& packParams, NotNull ctx, const std::string metamethod) { @@ -816,6 +960,8 @@ TypeFamilyReductionResult eqFamilyFn(const std::vector& typePara BuiltinTypeFamilies::BuiltinTypeFamilies() : notFamily{"not", notFamilyFn} + , lenFamily{"len", lenFamilyFn} + , unmFamily{"unm", unmFamilyFn} , addFamily{"add", addFamilyFn} , subFamily{"sub", subFamilyFn} , mulFamily{"mul", mulFamilyFn} @@ -834,6 +980,14 @@ BuiltinTypeFamilies::BuiltinTypeFamilies() void BuiltinTypeFamilies::addToScope(NotNull arena, NotNull scope) const { + // make a type function for a one-argument type family + auto mkUnaryTypeFamily = [&](const TypeFamily* family) { + TypeId t = arena->addType(GenericType{"T"}); + GenericTypeDefinition genericT{t}; + + return TypeFun{{genericT}, arena->addType(TypeFamilyInstanceType{NotNull{family}, {t}, {}})}; + }; + // make a type function for a two-argument type family auto mkBinaryTypeFamily = [&](const TypeFamily* family) { TypeId t = arena->addType(GenericType{"T"}); @@ -844,6 +998,9 @@ void BuiltinTypeFamilies::addToScope(NotNull arena, NotNull sc return TypeFun{{genericT, genericU}, arena->addType(TypeFamilyInstanceType{NotNull{family}, {t, u}, {}})}; }; + scope->exportedTypeBindings[lenFamily.name] = mkUnaryTypeFamily(&lenFamily); + scope->exportedTypeBindings[unmFamily.name] = mkUnaryTypeFamily(&unmFamily); + scope->exportedTypeBindings[addFamily.name] = mkBinaryTypeFamily(&addFamily); scope->exportedTypeBindings[subFamily.name] = mkBinaryTypeFamily(&subFamily); scope->exportedTypeBindings[mulFamily.name] = mkBinaryTypeFamily(&mulFamily); diff --git a/Analysis/src/TypeOrPack.cpp b/Analysis/src/TypeOrPack.cpp new file mode 100644 index 00000000..86652141 --- /dev/null +++ b/Analysis/src/TypeOrPack.cpp @@ -0,0 +1,29 @@ +// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details + +#include "Luau/TypeOrPack.h" +#include "Luau/Common.h" + +namespace Luau +{ + +const void* ptr(TypeOrPack tyOrTp) +{ + if (auto ty = get(tyOrTp)) + return static_cast(*ty); + else if (auto tp = get(tyOrTp)) + return static_cast(*tp); + else + LUAU_UNREACHABLE(); +} + +TypeOrPack follow(TypeOrPack tyOrTp) +{ + if (auto ty = get(tyOrTp)) + return follow(*ty); + else if (auto tp = get(tyOrTp)) + return follow(*tp); + else + LUAU_UNREACHABLE(); +} + +} // namespace Luau diff --git a/Analysis/src/TypePath.cpp b/Analysis/src/TypePath.cpp new file mode 100644 index 00000000..ff515bed --- /dev/null +++ b/Analysis/src/TypePath.cpp @@ -0,0 +1,633 @@ +// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details + +#include "Luau/TypePath.h" +#include "Luau/Common.h" +#include "Luau/DenseHash.h" +#include "Luau/Type.h" +#include "Luau/TypeFwd.h" +#include "Luau/TypePack.h" +#include "Luau/TypeUtils.h" + +#include +#include +#include +#include + +LUAU_FASTFLAG(DebugLuauReadWriteProperties); + +// Maximum number of steps to follow when traversing a path. May not always +// equate to the number of components in a path, depending on the traversal +// logic. +LUAU_DYNAMIC_FASTINTVARIABLE(LuauTypePathMaximumTraverseSteps, 100); + +namespace Luau +{ + +namespace TypePath +{ + +Property::Property(std::string name) + : name(std::move(name)) +{ + LUAU_ASSERT(!FFlag::DebugLuauReadWriteProperties); +} + +Property Property::read(std::string name) +{ + return Property(std::move(name), true); +} + +Property Property::write(std::string name) +{ + return Property(std::move(name), false); +} + +bool Property::operator==(const Property& other) const +{ + return name == other.name && isRead == other.isRead; +} + +bool Index::operator==(const Index& other) const +{ + return index == other.index; +} + +Path Path::append(const Path& suffix) const +{ + std::vector joined(components); + joined.reserve(suffix.components.size()); + joined.insert(joined.end(), suffix.components.begin(), suffix.components.end()); + return Path(std::move(joined)); +} + +Path Path::push(Component component) const +{ + std::vector joined(components); + joined.push_back(component); + return Path(std::move(joined)); +} + +Path Path::push_front(Component component) const +{ + std::vector joined{}; + joined.reserve(components.size() + 1); + joined.push_back(std::move(component)); + joined.insert(joined.end(), components.begin(), components.end()); + return Path(std::move(joined)); +} + +Path Path::pop() const +{ + if (empty()) + return kEmpty; + + std::vector popped(components); + popped.pop_back(); + return Path(std::move(popped)); +} + +std::optional Path::last() const +{ + if (empty()) + return std::nullopt; + + return components.back(); +} + +bool Path::empty() const +{ + return components.empty(); +} + +bool Path::operator==(const Path& other) const +{ + return components == other.components; +} + +Path PathBuilder::build() +{ + return Path(std::move(components)); +} + +PathBuilder& PathBuilder::readProp(std::string name) +{ + LUAU_ASSERT(FFlag::DebugLuauReadWriteProperties); + components.push_back(Property{std::move(name), true}); + return *this; +} + +PathBuilder& PathBuilder::writeProp(std::string name) +{ + LUAU_ASSERT(FFlag::DebugLuauReadWriteProperties); + components.push_back(Property{std::move(name), false}); + return *this; +} + +PathBuilder& PathBuilder::prop(std::string name) +{ + LUAU_ASSERT(!FFlag::DebugLuauReadWriteProperties); + components.push_back(Property{std::move(name)}); + return *this; +} + +PathBuilder& PathBuilder::index(size_t i) +{ + components.push_back(Index{i}); + return *this; +} + +PathBuilder& PathBuilder::mt() +{ + components.push_back(TypeField::Metatable); + return *this; +} + +PathBuilder& PathBuilder::lb() +{ + components.push_back(TypeField::LowerBound); + return *this; +} + +PathBuilder& PathBuilder::ub() +{ + components.push_back(TypeField::UpperBound); + return *this; +} + +PathBuilder& PathBuilder::indexKey() +{ + components.push_back(TypeField::IndexLookup); + return *this; +} + +PathBuilder& PathBuilder::indexValue() +{ + components.push_back(TypeField::IndexResult); + return *this; +} + +PathBuilder& PathBuilder::negated() +{ + components.push_back(TypeField::Negated); + return *this; +} + +PathBuilder& PathBuilder::variadic() +{ + components.push_back(TypeField::Variadic); + return *this; +} + +PathBuilder& PathBuilder::args() +{ + components.push_back(PackField::Arguments); + return *this; +} + +PathBuilder& PathBuilder::rets() +{ + components.push_back(PackField::Returns); + return *this; +} + +PathBuilder& PathBuilder::tail() +{ + components.push_back(PackField::Tail); + return *this; +} + +} // namespace TypePath + +namespace +{ + +struct TraversalState +{ + TraversalState(TypeId root, NotNull builtinTypes) + : current(root) + , builtinTypes(builtinTypes) + { + } + TraversalState(TypePackId root, NotNull builtinTypes) + : current(root) + , builtinTypes(builtinTypes) + { + } + + TypeOrPack current; + NotNull builtinTypes; + + DenseHashSet seen{nullptr}; + int steps = 0; + + void updateCurrent(TypeId ty) + { + LUAU_ASSERT(ty); + current = follow(ty); + } + + void updateCurrent(TypePackId tp) + { + LUAU_ASSERT(tp); + current = follow(tp); + } + + bool haveCycle() + { + const void* currentPtr = ptr(current); + + if (seen.contains(currentPtr)) + return true; + else + seen.insert(currentPtr); + + return false; + } + + bool tooLong() + { + return ++steps > DFInt::LuauTypePathMaximumTraverseSteps; + } + + bool checkInvariants() + { + return haveCycle() || tooLong(); + } + + bool traverse(const TypePath::Property& property) + { + auto currentType = get(current); + if (!currentType) + return false; + + if (checkInvariants()) + return false; + + const Property* prop = nullptr; + + if (auto t = get(*currentType)) + { + auto it = t->props.find(property.name); + if (it != t->props.end()) + { + prop = &it->second; + } + } + else if (auto c = get(*currentType)) + { + prop = lookupClassProp(c, property.name); + } + else if (auto m = getMetatable(*currentType, builtinTypes)) + { + // Weird: rather than use findMetatableEntry, which requires a lot + // of stuff that we don't have and don't want to pull in, we use the + // path traversal logic to grab __index and then re-enter the lookup + // logic there. + updateCurrent(*m); + + if (!traverse(TypePath::Property{"__index"})) + return false; + + return traverse(property); + } + + if (prop) + { + std::optional maybeType; + if (FFlag::DebugLuauReadWriteProperties) + maybeType = property.isRead ? prop->readType() : prop->writeType(); + else + maybeType = prop->type(); + + if (maybeType) + { + updateCurrent(*maybeType); + return true; + } + } + + return false; + } + + bool traverse(const TypePath::Index& index) + { + if (checkInvariants()) + return false; + + if (auto currentType = get(current)) + { + if (auto u = get(*currentType)) + { + auto it = begin(u); + std::advance(it, index.index); + if (it != end(u)) + { + updateCurrent(*it); + return true; + } + } + else if (auto i = get(*currentType)) + { + auto it = begin(i); + std::advance(it, index.index); + if (it != end(i)) + { + updateCurrent(*it); + return true; + } + } + } + else + { + auto currentPack = get(current); + LUAU_ASSERT(currentPack); + if (get(*currentPack)) + { + auto it = begin(*currentPack); + + for (size_t i = 0; i < index.index && it != end(*currentPack); ++i) + ++it; + + if (it != end(*currentPack)) + { + updateCurrent(*it); + return true; + } + } + } + + return false; + } + + bool traverse(TypePath::TypeField field) + { + if (checkInvariants()) + return false; + + switch (field) + { + case TypePath::TypeField::Metatable: + if (auto currentType = get(current)) + { + if (std::optional mt = getMetatable(*currentType, builtinTypes)) + { + updateCurrent(*mt); + return true; + } + } + + return false; + case TypePath::TypeField::LowerBound: + case TypePath::TypeField::UpperBound: + if (auto ft = get(current)) + { + updateCurrent(field == TypePath::TypeField::LowerBound ? ft->lowerBound : ft->upperBound); + return true; + } + + return false; + case TypePath::TypeField::IndexLookup: + case TypePath::TypeField::IndexResult: + { + const TableIndexer* indexer = nullptr; + + if (auto tt = get(current); tt && tt->indexer) + indexer = &(*tt->indexer); + // Note: we don't appear to walk the class hierarchy for indexers + else if (auto ct = get(current); ct && ct->indexer) + indexer = &(*ct->indexer); + + if (indexer) + { + updateCurrent(field == TypePath::TypeField::IndexLookup ? indexer->indexType : indexer->indexResultType); + return true; + } + + return false; + } + case TypePath::TypeField::Negated: + if (auto nt = get(current)) + { + updateCurrent(nt->ty); + return true; + } + + return false; + case TypePath::TypeField::Variadic: + if (auto vtp = get(current)) + { + updateCurrent(vtp->ty); + return true; + } + + return false; + } + + return false; + } + + bool traverse(TypePath::PackField field) + { + if (checkInvariants()) + return false; + + switch (field) + { + case TypePath::PackField::Arguments: + case TypePath::PackField::Returns: + if (auto ft = get(current)) + { + updateCurrent(field == TypePath::PackField::Arguments ? ft->argTypes : ft->retTypes); + return true; + } + + return false; + case TypePath::PackField::Tail: + if (auto currentPack = get(current)) + { + auto it = begin(*currentPack); + while (it != end(*currentPack)) + ++it; + + if (auto tail = it.tail()) + { + updateCurrent(*tail); + return true; + } + } + + return false; + } + + return false; + } +}; + +} // namespace + +std::string toString(const TypePath::Path& path) +{ + std::stringstream result; + bool first = true; + + auto strComponent = [&](auto&& c) { + using T = std::decay_t; + if constexpr (std::is_same_v) + { + result << '['; + if (FFlag::DebugLuauReadWriteProperties) + { + if (c.isRead) + result << "read "; + else + result << "write "; + } + + result << '"' << c.name << '"' << ']'; + } + else if constexpr (std::is_same_v) + { + result << '[' << std::to_string(c.index) << ']'; + } + else if constexpr (std::is_same_v) + { + if (!first) + result << '.'; + + switch (c) + { + case TypePath::TypeField::Metatable: + result << "metatable"; + break; + case TypePath::TypeField::LowerBound: + result << "lowerBound"; + break; + case TypePath::TypeField::UpperBound: + result << "upperBound"; + break; + case TypePath::TypeField::IndexLookup: + result << "indexer"; + break; + case TypePath::TypeField::IndexResult: + result << "indexResult"; + break; + case TypePath::TypeField::Negated: + result << "negated"; + break; + case TypePath::TypeField::Variadic: + result << "variadic"; + break; + } + + result << "()"; + } + else if constexpr (std::is_same_v) + { + if (!first) + result << '.'; + + switch (c) + { + case TypePath::PackField::Arguments: + result << "arguments"; + break; + case TypePath::PackField::Returns: + result << "returns"; + break; + case TypePath::PackField::Tail: + result << "tail"; + break; + } + + result << "()"; + } + else + { + static_assert(always_false_v, "Unhandled Component variant"); + } + + first = false; + }; + + for (const TypePath::Component& component : path.components) + Luau::visit(strComponent, component); + + return result.str(); +} + +static bool traverse(TraversalState& state, const Path& path) +{ + auto step = [&state](auto&& c) { + return state.traverse(c); + }; + + for (const TypePath::Component& component : path.components) + { + bool stepSuccess = visit(step, component); + if (!stepSuccess) + return false; + } + + return true; +} + +std::optional traverse(TypeId root, const Path& path, NotNull builtinTypes) +{ + TraversalState state(follow(root), builtinTypes); + if (traverse(state, path)) + return state.current; + else + return std::nullopt; +} + +std::optional traverse(TypePackId root, const Path& path, NotNull builtinTypes); + +std::optional traverseForType(TypeId root, const Path& path, NotNull builtinTypes) +{ + TraversalState state(follow(root), builtinTypes); + if (traverse(state, path)) + { + auto ty = get(state.current); + return ty ? std::make_optional(*ty) : std::nullopt; + } + else + return std::nullopt; +} + +std::optional traverseForType(TypePackId root, const Path& path, NotNull builtinTypes) +{ + TraversalState state(follow(root), builtinTypes); + if (traverse(state, path)) + { + auto ty = get(state.current); + return ty ? std::make_optional(*ty) : std::nullopt; + } + else + return std::nullopt; +} + +std::optional traverseForPack(TypeId root, const Path& path, NotNull builtinTypes) +{ + TraversalState state(follow(root), builtinTypes); + if (traverse(state, path)) + { + auto ty = get(state.current); + return ty ? std::make_optional(*ty) : std::nullopt; + } + else + return std::nullopt; +} + +std::optional traverseForPack(TypePackId root, const Path& path, NotNull builtinTypes) +{ + TraversalState state(follow(root), builtinTypes); + if (traverse(state, path)) + { + auto ty = get(state.current); + return ty ? std::make_optional(*ty) : std::nullopt; + } + else + return std::nullopt; +} + +} // namespace Luau diff --git a/Analysis/src/TypeUtils.cpp b/Analysis/src/TypeUtils.cpp index 0b878180..f746f620 100644 --- a/Analysis/src/TypeUtils.cpp +++ b/Analysis/src/TypeUtils.cpp @@ -1,6 +1,7 @@ // This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "Luau/TypeUtils.h" +#include "Luau/Common.h" #include "Luau/Normalize.h" #include "Luau/Scope.h" #include "Luau/ToString.h" diff --git a/CLI/Compile.cpp b/CLI/Compile.cpp index 2059deaf..4f6b54b6 100644 --- a/CLI/Compile.cpp +++ b/CLI/Compile.cpp @@ -33,6 +33,13 @@ enum class CompileFormat Null }; +enum class RecordStats +{ + None, + Total, + Split +}; + struct GlobalOptions { int optimizationLevel = 1; @@ -122,6 +129,57 @@ struct CompileStats double codegenTime; Luau::CodeGen::LoweringStats lowerStats; + + void serializeToJson(FILE* fp) + { + // use compact one-line formatting to reduce file length + fprintf(fp, "{\ +\"lines\": %zu, \ +\"bytecode\": %zu, \ +\"codegen\": %zu, \ +\"readTime\": %f, \ +\"miscTime\": %f, \ +\"parseTime\": %f, \ +\"compileTime\": %f, \ +\"codegenTime\": %f, \ +\"lowerStats\": {\ +\"totalFunctions\": %u, \ +\"skippedFunctions\": %u, \ +\"spillsToSlot\": %d, \ +\"spillsToRestore\": %d, \ +\"maxSpillSlotsUsed\": %u, \ +\"blocksPreOpt\": %u, \ +\"blocksPostOpt\": %u, \ +\"maxBlockInstructions\": %u, \ +\"regAllocErrors\": %d, \ +\"loweringErrors\": %d\ +}}", + lines, bytecode, codegen, readTime, miscTime, parseTime, compileTime, codegenTime, lowerStats.totalFunctions, lowerStats.skippedFunctions, + lowerStats.spillsToSlot, lowerStats.spillsToRestore, lowerStats.maxSpillSlotsUsed, lowerStats.blocksPreOpt, lowerStats.blocksPostOpt, + lowerStats.maxBlockInstructions, lowerStats.regAllocErrors, lowerStats.loweringErrors); + } + + CompileStats& operator+=(const CompileStats& that) + { + this->lines += that.lines; + this->bytecode += that.bytecode; + this->codegen += that.codegen; + this->readTime += that.readTime; + this->miscTime += that.miscTime; + this->parseTime += that.parseTime; + this->compileTime += that.compileTime; + this->codegenTime += that.codegenTime; + this->lowerStats += that.lowerStats; + + return *this; + } + + CompileStats operator+(const CompileStats& other) const + { + CompileStats result(*this); + result += other; + return result; + } }; static double recordDeltaTime(double& timer) @@ -254,6 +312,7 @@ static void displayHelp(const char* argv0) printf(" -g: compile with debug level n (default 1, n should be between 0 and 2).\n"); printf(" --target=: compile code for specific architecture (a64, x64, a64_nf, x64_ms).\n"); printf(" --timetrace: record compiler time tracing information into trace.json\n"); + printf(" --record-stats= - -
-

404

- -

Page not found :(

-

The requested page could not be found.

-
diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index a0ba21c6..00000000 --- a/docs/Gemfile +++ /dev/null @@ -1,4 +0,0 @@ -source "https://rubygems.org" -gem "github-pages", group: :jekyll_plugins -gem "jekyll-include-cache", group: :jekyll_plugins -gem "jekyll-feed", group: :jekyll_plugins diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index fac90591..00000000 --- a/docs/_config.yml +++ /dev/null @@ -1,32 +0,0 @@ -remote_theme: "mmistakes/minimal-mistakes@4.24.0" -minimal_mistakes_skin: "default" #"air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum" "sunrise" -minimal_mistakes_skin2: "dark" -url: -name: Roblox -title: Luau -description: > - A fast, small, safe, gradually typed embeddable scripting language derived from Lua -logo: /assets/images/luau-88.png - -plugins: ["jekyll-include-cache", "jekyll-feed"] -include: ["_pages"] -atom_feed: - path: "/feed.xml" - -defaults: - # _docs - - scope: - path: "" - type: "pages" - values: - layout: "single" - sidebar: - nav: "pages" - # _posts - - scope: - path: "" - type: "posts" - values: - layout: single - related: true - show_date: true diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml deleted file mode 100644 index ba337ea5..00000000 --- a/docs/_data/navigation.yml +++ /dev/null @@ -1,33 +0,0 @@ -main: - - title: News - url: /news - - title: Getting Started - url: /getting-started - - title: Demo - url: /demo - - title: GitHub - url: https://github.com/Roblox/luau - -pages: - - title: Getting Started - url: /getting-started - - title: Why Luau? - url: /why - - title: Syntax - url: /syntax - - title: Linting - url: /lint - - title: Performance - url: /performance - - title: Sandboxing - url: /sandbox - - title: Compatibility - url: /compatibility - - title: Typechecking - url: /typecheck - - title: Profiling - url: /profile - - title: Library - url: /library - - title: Grammar - url: /grammar diff --git a/docs/_includes/masthead.html b/docs/_includes/masthead.html deleted file mode 100644 index b78c80f9..00000000 --- a/docs/_includes/masthead.html +++ /dev/null @@ -1,73 +0,0 @@ -{% capture logo_path %}{{ site.logo }}{% endcapture %} - -
-
-
- -
-
-
- - - - - \ No newline at end of file diff --git a/docs/_includes/repl.html b/docs/_includes/repl.html deleted file mode 100644 index df27a792..00000000 --- a/docs/_includes/repl.html +++ /dev/null @@ -1,151 +0,0 @@ -
-
- -
- -
- - - -
-
-
- -
- -
-
- - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/_pages/compatibility.md b/docs/_pages/compatibility.md deleted file mode 100644 index 1b2c83ef..00000000 --- a/docs/_pages/compatibility.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -permalink: /compatibility -title: Compatibility -toc: true ---- - -Luau is based on Lua 5.1, and as such incorporates all features of 5.1, except for ones that had to be taken out due to sandboxing limitations. Because of backwards compatibility constraints, we don't remove features deprecated by later versions (e.g. we still support `getfenv`/`setfenv`). Later Lua versions introduce new features into the language and new libraries/functions. - -Our overall goal is to incorporate features from the later versions of Lua when it makes sense for us to do so - the motivations behind some newer features are unclear or don't apply to the domain Luau is used in, and many features carry costs that don't always make sense to pay. The rest of this document describes the status of all features of Lua 5.2 and beyond, with the following classification: - -- ✔️ - the feature is available in Luau -- ❌ - the feature is not available in Luau because we don't believe it makes sense to include it -- 😞 - the feature is not available in Luau because of compatibility/sandboxing concerns -- 🔜 - the feature is not available in Luau yet but we'd like to include it and are possibly working on it -- 🤷‍♀️ - the feature is not available in Luau yet; we don't have strong opinions on it so it might make it at some point - -Please note that all of these decisions are not final, they are just our current stance. In some cases evolution of our VM may make a feature that was previously impractical to support due to performance complications feasible. In some cases a feature that didn't have a strong use case gains one, so we can implement it. - -## Implementation limits - -Luau has certain limitations around the number of local variables, registers, upvalues, constants and instructions. These limits are often different from the limits imposed by various versions of Lua, and are documented here without promising that future versions will adhere to these. Note that writing code that is close to any of these limits is dangerous because this code may become invalid as our codegen evolves. - -- Local variables: 200 per function (same as all versions of Lua, this includes function arguments) -- Upvalues: 200 per function (up from 60 in Lua 5.1) -- Registers: 255 per function (same as all versions of Lua, this includes local variables and function arguments) -- Constants: 2^23 per function (up from 2^18 in Lua 5.1) -- Instructions: 2^23 per function (up from 2^17 in Lua 5.1, although in both cases the limit only applies to control flow) -- Nested functions: 2^15 per function (down from 2^18 in Lua 5.1) -- Stack depth: 20000 Lua calls per Lua thread, 200 C calls per C thread (e.g. `coroutine.resume`/`pcall` nesting is limited to 200) - -Note that Lua 5.3 has a larger upvalue limit (255) and a larger constant limit (2^26); existing Luau limits are likely sufficient for reasonable use cases. - -## Lua 5.1 - -Since several features were removed from Lua 5.1 for sandboxing reasons, this table lists them for completeness. - -| feature | notes | -|---------|------| -| `io`, `os`, `package` and `debug` library | note that some functions in `os`/`debug` are still present | -| `loadfile`, `dofile` | removed for sandboxing, no direct file access | -| `loadstring` bytecode and `string.dump` | exposing bytecode is dangerous for sandboxing reasons | -| `newproxy` can only be called with nil or boolean | extra flexibility removed for sandboxing | - -Sandboxing challenges are [covered in the dedicated section](sandbox). - -## Lua 5.2 - -| feature | status | notes | -|---------|--------|------| -| yieldable pcall/xpcall | ✔️ | | -| yieldable metamethods | ❌ | significant performance implications | -| ephemeron tables | ❌ | this complicates and slows down the garbage collector esp. for large weak tables | -| emergency garbage collector | 🤷‍ | Luau runs in environments where handling memory exhaustion in emergency situations is not tenable | -| goto statement | ❌ | this complicates the compiler, makes control flow unstructured and doesn't address a significant need | -| finalizers for tables | ❌ | no `__gc` support due to sandboxing and performance/complexity | -| no more fenv for threads or functions | 😞 | we love this, but it breaks compatibility | -| tables honor the `__len` metamethod | ✔️ | | -| hex and `\z` escapes in strings | ✔️ | | -| support for hexadecimal floats | 🤷‍♀️ | no strong use cases | -| order metamethods (`__lt`/`__le`) are called for unrelated metatables | ❌ | no strong use cases and more complicated semantics, compatibility and performance implications | -| empty statement | 🤷‍♀️ | less useful in Lua than in JS/C#/C/C++ | -| `break` statement may appear in the middle of a block | 🤷‍♀️ | we'd like to do it consistently for `break`/`return`/`continue` but there be dragons | -| arguments for function called through `xpcall` | ✔️ | | -| optional base in `math.log` | ✔️ | | -| optional separator in `string.rep` | 🤷‍♀️ | no strong use cases | -| new metamethods `__pairs` and `__ipairs` | ❌ | superseded by `__iter` | -| frontier patterns | ✔️ | | -| `%g` in patterns | ✔️ | | -| `\0` in patterns | ✔️ | | -| `bit32` library | ✔️ | | -| `string.gsub` is stricter about using `%` on special characters only | ✔️ | | -| light C functions | 😞 | this changes semantics of fenv on C functions and has complex implications wrt runtime performance | -| NaN keys are supported for tables with `__newindex` | ✔️ | | - -Two things that are important to call out here are various new metamethods for tables and yielding in metamethods. In both cases, there are performance implications to supporting this - our implementation is *very* highly tuned for performance, so any changes that affect the core fundamentals of how Lua works have a price. To support yielding in metamethods we'd need to make the core of the VM more involved, since almost every single "interesting" opcode would need to learn how to be resumable - which also complicates future JIT/AOT story. Metamethods in general are important for extensibility, but very challenging to deal with in implementation, so we err on the side of not supporting any new metamethods unless a strong need arises. - -For `__pairs`/`__ipairs`, we felt that extending library functions to enable custom containers wasn't the right choice. Instead we revisited iteration design to allow for self-iterating objects via `__iter` metamethod, which results in a cleaner iteration design that also makes it easier to iterate over tables. As such, we have no plans to support `__pairs`/`__ipairs` as all use cases for it can now be solved by `__iter`. - -Ephemeron tables may be implemented at some point since they do have valid uses and they make weak tables semantically cleaner, however the cleanup mechanism for these is expensive and complicated, and as such this can only be considered after the pending GC rework is complete. - -## Lua 5.3 - -| feature | status | notes | -|---------|--------|------| -| `\u` escapes in strings | ✔️ | | -| integers (64-bit by default) | ❌ | backwards compatibility and performance implications | -| bitwise operators | ❌ | `bit32` library covers this in absence of 64-bit integers | -| basic utf-8 support | ✔️ | we include `utf8` library and other UTF8 features | -| functions for packing and unpacking values (string.pack/unpack/packsize) | ✔️ | | -| floor division | ✔️ | | -| `ipairs` and the `table` library respect metamethods | ❌ | no strong use cases, performance implications | -| new function `table.move` | ✔️ | | -| `collectgarbage("count")` now returns only one result | ✔️ | | -| `coroutine.isyieldable` | ✔️ | | -| stricter error checking for `table.insert`/`table.remove` | 😞 | we love this, but it breaks compatibility | -| `__eq` metamethod is called for unrelated metatables | ❌ | backwards compatibility and typechecking implications | - -It's important to highlight integer support and bitwise operators. For Luau, it's rare that a full 64-bit integer type is necessary - double-precision types support integers up to 2^53 (in Lua which is used in embedded space, integers may be more appealing in environments without a native 64-bit FPU). However, there's a *lot* of value in having a single number type, both from performance perspective and for consistency. Notably, Lua doesn't handle integer overflow properly, so using integers also carries compatibility implications. - -If integers are taken out of the equation, bitwise operators make less sense, as integers aren't a first class feature; additionally, `bit32` library is more fully featured (includes commonly used operations such as rotates and arithmetic shift; bit extraction/replacement is also more readable). Adding operators along with metamethods for all of them increases complexity, which means this feature isn't worth it on the balance. Common arguments for this include a more familiar syntax, which, while true, gets more nuanced as `^` isn't available as a xor operator, and arithmetic right shift isn't expressible without yet another operator, and performance, which in Luau is substantially better than in Lua because `bit32` library uses VM builtins instead of expensive function calls. - -## Lua 5.4 - -| feature | status | notes | -|--|--|--| -| new generational mode for garbage collection | 🔜 | we're working on gc optimizations and generational mode is on our radar -| to-be-closed variables | ❌ | the syntax is inconsistent with how we'd like to do attributes long-term; no strong use cases in our domain | -| const variables | ❌ | while there's some demand for const variables, we'd never adopt this syntax | -| new implementation for math.random | ✔️ | our RNG is based on PCG, unlike Lua 5.4 which uses Xoroshiro | -| optional `init` argument to `string.gmatch` | 🤷‍♀️ | no strong use cases | -| new functions `lua_resetthread` and `coroutine.close` | ✔️ || -| coercions string-to-number moved to the string library | 😞 | we love this, but it breaks compatibility | -| new format `%p` in `string.format` | 🤷‍♀️ | no strong use cases | -| `utf8` library accepts codepoints up to 2^31 | 🤷‍♀️ | no strong use cases | -| The use of the `__lt` metamethod to emulate `__le` has been removed | ❌ | breaks compatibility and complicates comparison overloading story | -| When finalizing objects, Lua will call `__gc` metamethods that are not functions | ❌ | no `__gc` support due to sandboxing and performance/complexity | -| The function print calls `__tostring` instead of tostring to format its arguments. | ✔️ | | -| By default, the decoding functions in the utf8 library do not accept surrogates. | 😞 | breaks compatibility and doesn't seem very interesting otherwise | - -Taking syntax aside (which doesn't feel idiomatic or beautiful), `` isn't very useful in Luau - its dominant use case is for code that works with external resources like files or sockets, but we don't provide such APIs - and has a very large complexity cost, evidences by a lot of bug fixes since the initial implementation in 5.4 work versions. `` in Luau doesn't matter for performance - our multi-pass compiler is already able to analyze the usage of the variable to know if it's modified or not and extract all performance gains from it - so the only use here is for code readability, where the `` syntax is... suboptimal. - -If we do end up introducing const variables, it would be through a `const var = value` syntax, which is backwards compatible through a context-sensitive keyword similar to `type`. That said, there's ambiguity wrt whether `const` should simply behave like a read-only variable, ala JavaScript, or if it should represent a stronger contract, for example by limiting the expressions on the right hand side to ones compiler can evaluate ahead of time, or by freezing table values and thus guaranteeing immutability. - -## Differences from Lua - -We have a few behavior deviations from Lua 5.x that come from either a different implementation, or our desire to clean up small inconsistencies in the language/libraries: - -* Tail calls are not supported to simplify implementation, make debugging/stack traces more predictable and allow deep validation of caller identity for security -* Order of table assignment in table literals follows program order in mixed tables (Lua 5.x assigns array elements first in some cases) -* Equality comparisons call `__eq` metamethod even when objects are rawequal (which matches other metamethods like `<=` and facilitates NaN checking) -* `function()` expressions may reuse a previously created closure in certain scenarios (when all upvalues captured are the same) for efficiency, which changes object identity but doesn't change call semantics -- this is different from Lua 5.1 but similar to Lua 5.2/5.3 -* `os.time` returns UTC timestamp when called with a table for consistency diff --git a/docs/_pages/demo.md b/docs/_pages/demo.md deleted file mode 100644 index dbba8e6e..00000000 --- a/docs/_pages/demo.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -permalink: /demo -title: Demo -classes: wide ---- - -{% include repl.html %} diff --git a/docs/_pages/getting-started.md b/docs/_pages/getting-started.md deleted file mode 100644 index f64e0ebc..00000000 --- a/docs/_pages/getting-started.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -permalink: /getting-started -title: Getting Started -toc: true ---- - -To get started with Luau you need to use `luau` command line binary to run your code and `luau-analyze` to run static analysis (including type checking and linting). You can download these from [a recent release](https://github.com/Roblox/luau/releases). - -## Creating a script - -To create your own testing script, create a new file with `.luau` as the extension: - -```lua -function ispositive(x) - return x > 0 -end - -print(ispositive(1)) -print(ispositive("2")) - -function isfoo(a) - return a == "foo" -end - -print(isfoo("bar")) -print(isfoo(1)) -``` - -You can now run the file using `luau test.luau` and analyze it using `luau-analyze test.luau`. - -Note that there are no warnings about calling ``ispositive()`` with a string, or calling ``isfoo()`` a number. This is because the type checking uses non-strict mode by default, which is lenient in how it infers types used by the program. - -## Type inference - -Now modify the script to include ``--!strict`` at the top: - -```lua ---!strict - -function ispositive(x) - return x > 0 -end - -print(ispositive(1)) -print(ispositive("2")) -``` - -In ``strict`` mode, Luau will infer types based on analysis of the code flow. There is also ``nonstrict`` mode, where analysis is more conservative and types are more frequently inferred as ``any`` to reduce cases where legitimate code is flagged with warnings. - -In this case, Luau will use the ``return x > 0`` statement to infer that ``ispositive()`` is a function taking a number and returning a boolean. Note that in this case, it was not necessary to add any explicit type annotations. - -Based on Luau's type inference, the analysis tool will now flag the incorrect call to ``ispositive()``: - -``` -$ luau-analyze test.luau -test.luau(7,18): TypeError: Type 'string' could not be converted into 'number' -``` - -## Annotations - -You can add annotations to locals, arguments, and function return types. Among other things, annotations can help enforce that you don't accidentally do something stupid. Here's how we would add annotations to ``ispositive()``: - -```lua ---!strict - -function ispositive(x : number) : boolean - return x > 0 -end - -local result : boolean -result = ispositive(1) - -``` - -Now we've told explicitly told Luau that ``ispositive()`` accepts a number and returns a boolean. This wasn't strictly (pun intended) necessary in this case, because Luau's inference was able to deduce this already. But even in this case, there are advantages to explicit annotations. Imagine that later we decide to change ``ispositive()`` to return a string value: - -```lua ---!strict - -function ispositive(x : number) : boolean - if x > 0 then - return "yes" - else - return "no" - end -end - -local result : boolean -result = ispositive(1) -``` - -Oops -- we're returning string values, but we forgot to update the function return type. Since we've told Luau that ``ispositive()`` returns a boolean (and that's how we're using it), the call site isn't flagged as an error. But because the annotation doesn't match our code, we get a warning in the function body itself: - -``` -$ luau-analyze test.luau -test.luau(5,9): TypeError: Type 'string' could not be converted into 'boolean' -test.luau(7,9): TypeError: Type 'string' could not be converted into 'boolean' -``` - -The fix is simple; just change the annotation to declare the return type as a string: - -```lua ---!strict - -function ispositive(x : number) : string - if x > 0 then - return "yes" - else - return "no" - end -end - -local result : boolean -result = ispositive(1) -``` - -Well, almost - since we declared ``result`` as a boolean, the call site is now flagged: - -``` -$ luau-analyze test.luau -test.luau(12,10): TypeError: Type 'string' could not be converted into 'boolean' -``` - -If we update the type of the local variable, everything is good. Note that we could also just let Luau infer the type of ``result`` by changing it to the single line version ``local result = ispositive(1)``. - -```lua ---!strict - -function ispositive(x : number) : string - if x > 0 then - return "yes" - else - return "no" - end -end - -local result : string -result = ispositive(1) -``` - -## Conclusions - -This has been a brief tour of the basic functionality of Luau, but there's lots more to explore. If you're interested in reading more, check out our main reference pages for [syntax](syntax) and [typechecking](typecheck). diff --git a/docs/_pages/grammar.md b/docs/_pages/grammar.md deleted file mode 100644 index f9d9612d..00000000 --- a/docs/_pages/grammar.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -permalink: /grammar -title: Grammar -classes: wide ---- - -This is the complete syntax grammar for Luau in EBNF. More information about the terminal nodes String and Number -is available in the [syntax section](syntax). - -```ebnf -chunk = block -block = {stat [';']} [laststat [';']] -stat = varlist '=' explist | - var compoundop exp | - functioncall | - 'do' block 'end' | - 'while' exp 'do' block 'end' | - 'repeat' block 'until' exp | - 'if' exp 'then' block {'elseif' exp 'then' block} ['else' block] 'end' | - 'for' binding '=' exp ',' exp [',' exp] 'do' block 'end' | - 'for' bindinglist 'in' explist 'do' block 'end' | - 'function' funcname funcbody | - 'local' 'function' NAME funcbody | - 'local' bindinglist ['=' explist] | - ['export'] 'type' NAME ['<' GenericTypeListWithDefaults '>'] '=' Type - -laststat = 'return' [explist] | 'break' | 'continue' - -funcname = NAME {'.' NAME} [':' NAME] -funcbody = ['<' GenericTypeList '>'] '(' [parlist] ')' [':' ReturnType] block 'end' -parlist = bindinglist [',' '...'] | '...' [':' (Type | GenericTypePack)] - -explist = {exp ','} exp -namelist = NAME {',' NAME} - -binding = NAME [':' Type] -bindinglist = binding [',' bindinglist] (* equivalent of Lua 5.1 'namelist', except with optional type annotations *) - -var = NAME | prefixexp '[' exp ']' | prefixexp '.' NAME -varlist = var {',' var} -prefixexp = var | functioncall | '(' exp ')' -functioncall = prefixexp funcargs | prefixexp ':' NAME funcargs - -exp = asexp { binop exp } | unop exp { binop exp } -ifelseexp = 'if' exp 'then' exp {'elseif' exp 'then' exp} 'else' exp -asexp = simpleexp ['::' Type] -stringinterp = INTERP_BEGIN exp { INTERP_MID exp } INTERP_END -simpleexp = NUMBER | STRING | 'nil' | 'true' | 'false' | '...' | tableconstructor | 'function' funcbody | prefixexp | ifelseexp | stringinterp -funcargs = '(' [explist] ')' | tableconstructor | STRING - -tableconstructor = '{' [fieldlist] '}' -fieldlist = field {fieldsep field} [fieldsep] -field = '[' exp ']' '=' exp | NAME '=' exp | exp -fieldsep = ',' | ';' - -compoundop :: '+=' | '-=' | '*=' | '/=' | '%=' | '^=' | '..=' -binop = '+' | '-' | '*' | '/' | '^' | '%' | '..' | '<' | '<=' | '>' | '>=' | '==' | '~=' | 'and' | 'or' -unop = '-' | 'not' | '#' - -SimpleType = - 'nil' | - SingletonType | - NAME ['.' NAME] [ '<' [TypeParams] '>' ] | - 'typeof' '(' exp ')' | - TableType | - FunctionType | - '(' Type ')' - -SingletonType = STRING | 'true' | 'false' - -UnionSuffix = {'?'} {'|' SimpleType {'?'}} -IntersectionSuffix = {'&' SimpleType} -Type = SimpleType (UnionSuffix | IntersectionSuffix) - -GenericTypePackParameter = NAME '...' -GenericTypeList = NAME [',' GenericTypeList] | GenericTypePackParameter {',' GenericTypePackParameter} - -GenericTypePackParameterWithDefault = NAME '...' '=' (TypePack | VariadicTypePack | GenericTypePack) -GenericTypeListWithDefaults = - GenericTypeList {',' GenericTypePackParameterWithDefault} | - NAME {',' NAME} {',' NAME '=' Type} {',' GenericTypePackParameterWithDefault} | - NAME '=' Type {',' GenericTypePackParameterWithDefault} | - GenericTypePackParameterWithDefault {',' GenericTypePackParameterWithDefault} - -TypeList = Type [',' TypeList] | '...' Type -BoundTypeList = [NAME ':'] Type [',' BoundTypeList] | '...' Type -TypeParams = (Type | TypePack | VariadicTypePack | GenericTypePack) [',' TypeParams] -TypePack = '(' [TypeList] ')' -GenericTypePack = NAME '...' -VariadicTypePack = '...' Type -ReturnType = Type | TypePack -TableIndexer = '[' Type ']' ':' Type -TableProp = NAME ':' Type -TablePropOrIndexer = TableProp | TableIndexer -PropList = TablePropOrIndexer {fieldsep TablePropOrIndexer} [fieldsep] -TableType = '{' Type '}' | '{' [PropList] '}' -FunctionType = ['<' GenericTypeList '>'] '(' [BoundTypeList] ')' '->' ReturnType -``` diff --git a/docs/_pages/library.md b/docs/_pages/library.md deleted file mode 100644 index d6d1bc7f..00000000 --- a/docs/_pages/library.md +++ /dev/null @@ -1,823 +0,0 @@ ---- -permalink: /library -title: Library -toc: true ---- - -Luau comes equipped with a standard library of functions designed to manipulate the built-in data types. Note that the library is relatively minimal and doesn't expose ways for -scripts to interact with the host environment - it's expected that embedding applications provide extra functionality on top of this and limit or sandbox the system access -appropriately, if necessary. For example, Roblox provides [a rich API to interact with the 3D environment and limited APIs to interact with external services](https://developer.roblox.com/en-us/api-reference). - -This page documents the available builtin libraries and functions. All of these are accessible by default by any script, assuming the host environment exposes them (which is usually a safe assumption outside of extremely constrained environments). - -## Global functions - -While most library functions are provided as part of a library like `table`, a few global functions are exposed without extra namespacing. - -``` -function assert(value: T, message: string?): T -``` - -`assert` checks if the value is truthy; if it's not (which means it's `false` or `nil`), it raises an error. The error message can be customized with an optional parameter. -Upon success the function returns the `value` argument. - -``` -function error(obj: any, level: number?) -``` - -`error` raises an error with the specified object. Note that errors don't have to be strings, although they often are by convention; various error handling mechanisms like `pcall` -preserve the error type. When `level` is specified, the error raised is turned into a string that contains call frame information for the caller at level `level`, where `1` refers -to the function that called `error`. This can be useful to attribute the errors to callers, for example `error("Expected a valid object", 2)` highlights the caller of the function -that called `error` instead of the function itself in the callstack. - -``` -function gcinfo(): number -``` - -`gcinfo` returns the total heap size in kilobytes, which includes bytecode objects, global tables as well as the script-allocated objects. Note that Luau uses an incremental -garbage collector, and as such at any given point in time the heap may contain both reachable and unreachable objects. The number returned by `gcinfo` reflects the current heap -consumption from the operating system perspective and can fluctuate over time as garbage collector frees objects. - -``` -function getfenv(target: (function | number)?): table -``` - -Returns the environment table for target function; when `target` is not a function, it must be a number corresponding to the caller stack index, where 1 means the function that calls `getfenv`, and the environment table is returned for the corresponding function from the call stack. When `target` is omitted it defaults to `1`, so `getfenv()` returns the environment table for the calling function. - -``` -function getmetatable(obj: any): table? -``` - -Returns the metatable for the specified object; when object is not a table or a userdata, the returned metatable is shared between all objects of the same type. Note that when metatable is protected (has a `__metatable` key), the value corresponding to that key is returned instead and may not be a table. - -``` -function next(t: { [K]: V }, i: K?): (K, V)? -``` - -Given the table `t`, returns the next key-value pair after `i` in the table traversal order, or nothing if `i` is the last key. When `i` is `nil`, returns the first key-value pair instead. - -``` -function newproxy(mt: boolean?): userdata -``` - -Creates a new untyped userdata object; when `mt` is true, the new object has an empty metatable that can be modified using `getmetatable`. - -``` -function print(args: ...any) -``` - -Prints all arguments to the standard output, using Tab as a separator. - -``` -function rawequal(a: any, b: any): boolean -``` - -Returns true iff `a` and `b` have the same type and point to the same object (for garbage collected types) or are equal (for value types). - -``` -function rawget(t: { [K]: V }, k: K): V? -``` - -Performs a table lookup with index `k` and returns the resulting value, if present in the table, or nil. This operation bypasses metatables/`__index`. - -``` -function rawset(t: { [K] : V }, k: K, v: V) -``` - -Assigns table field `k` to the value `v`. This operation bypasses metatables/`__newindex`. - -``` -function select(i: string, args: ...T): number -function select(i: number, args: ...T): ...T -``` - -When called with `'#'` as the first argument, returns the number of remaining parameters passed. Otherwise, returns the subset of parameters starting with the specified index. -Index can be specified from the start of the arguments (using 1 as the first argument), or from the end (using -1 as the last argument). - -``` -function setfenv(target: function | number, env: table) -``` - -Changes the environment table for target function to `env`; when `target` is not a function, it must be a number corresponding to the caller stack index, where 1 means the function that calls `setfenv`, and the environment table is returned for the corresponding function from the call stack. - -``` -function setmetatable(t: table, mt: table?) -``` - -Changes metatable for the given table. Note that unlike `getmetatable`, this function only works on tables. If the table already has a protected metatable (has a `__metatable` field), this function errors. - -``` -function tonumber(s: string, base: number?): number? -``` - -Converts the input string to the number in base `base` (default 10) and returns the resulting number. If the conversion fails (that is, if the input string doesn't represent a valid number in the specified base), returns `nil` instead. - -``` -function tostring(obj: any): string -``` - -Converts the input object to string and returns the result. If the object has a metatable with `__tostring` field, that method is called to perform the conversion. - -``` -function type(obj: any): string -``` - -Returns the type of the object, which is one of `"nil"`, `"boolean"`, `"number"`, `"vector"`, `"string"`, `"table"`, `"function"`, `"userdata"` or `"thread"`. - -``` -function typeof(obj: any): string -``` - -Returns the type of the object; for userdata objects that have a metatable with the `__type` field *and* are defined by the host (not `newproxy`), returns the value for that key. -For custom userdata objects, such as ones returned by `newproxy`, this function returns `"userdata"` to make sure host-defined types can not be spoofed. - -``` -function ipairs(t: table): -``` - -Returns the triple (generator, state, nil) that can be used to traverse the table using a `for` loop. The traversal results in key-value pairs for the numeric portion of the table; key starts from 1 and increases by 1 on each iteration. The traversal terminates when reaching the first `nil` value (so `ipairs` can't be used to traverse array-like tables with holes). - -``` -function pairs(t: table): -``` - -Returns the triple (generator, state, nil) that can be used to traverse the table using a `for` loop. The traversal results in key-value pairs for all keys in the table, numeric and otherwise, but doesn't have a defined order. - -``` -function pcall(f: function, args: ...any): (boolean, ...any) -``` - -Calls function `f` with parameters `args`. If the function succeeds, returns `true` followed by all return values of `f`. If the function raises an error, returns `false` followed by the error object. -Note that `f` can yield, which results in the entire coroutine yielding as well. - -``` -function xpcall(f: function, e: function, args: ...any): (boolean, ...any) -``` - -Calls function `f` with parameters `args`. If the function succeeds, returns `true` followed by all return values of `f`. If the function raises an error, calls `e` with the error object as an argument, and returns `false` followed by all return values of `e`. -Note that `f` can yield, which results in the entire coroutine yielding as well. -`e` can neither yield nor error - if it does raise an error, `xpcall` returns with `false` followed by a special error message. - -``` -function unpack(a: {V}, f: number?, t: number?): ...V -``` - -Returns all values of `a` with indices in `[f..t]` range. `f` defaults to 1 and `t` defaults to `#a`. Note that this is equivalent to `table.unpack`. - -## math library - -``` -function math.abs(n: number): number -``` - -Returns the absolute value of `n`. Returns NaN if the input is NaN. - -``` -function math.acos(n: number): number -``` - -Returns the arc cosine of `n`, expressed in radians. Returns a value in `[0, pi]` range. Returns NaN if the input is not in `[-1, +1]` range. - -``` -function math.asin(n: number): number -``` - -Returns the arc sine of `n`, expressed in radians. Returns a value in `[-pi/2, +pi/2]` range. Returns NaN if the input is not in `[-1, +1]` range. - -``` -function math.atan2(y: number, x: number): number -``` - -Returns the arc tangent of `y/x`, expressed in radians. The function takes into account the sign of both arguments in order to determine the quadrant. Returns a value in `[-pi, pi]` range. - -``` -function math.atan(n: number): number -``` - -Returns the arc tangent of `n`, expressed in radians. Returns a value in `[-pi/2, pi-2]` range. - -``` -function math.ceil(n: number): number -``` - -Rounds `n` upwards to the next integer boundary. - -``` -function math.cosh(n: number): number -``` - -Returns the hyperbolic cosine of `n`. - -``` -function math.cos(n: number): number -``` - -Returns the cosine of `n`, which is an angle in radians. Returns a value in `[0, 1]` range. - -``` -function math.deg(n: number): number -``` - -Converts `n` from radians to degrees and returns the result. - -``` -function math.exp(n: number): number -``` - -Returns the base-e exponent of `n`, that is `e^n`. - -``` -function math.floor(n: number): number -``` - -Rounds `n` downwards to previous integer boundary. - -``` -function math.fmod(x: number, y: number): number -``` - -Returns the remainder of `x` modulo `y`, rounded towards zero. Returns NaN if `y` is zero. - -``` -function math.frexp(n: number): (number, number) -``` - -Splits the number into a significand (a number in `[-1, +1]` range) and binary exponent such that `n = s * 2^e`, and returns `s, e`. - -``` -function math.ldexp(s: number, e: number): number -``` - -Given the significand and a binary exponent, returns a number `s * 2^e`. - -``` -function math.log10(n: number): number -``` - -Returns base-10 logarithm of the input number. Returns NaN if the input is negative, and negative infinity if the input is 0. -Equivalent to `math.log(n, 10)`. - -``` -function math.log(n: number, base: number?): number -``` - -Returns logarithm of the input number in the specified base; base defaults to `e`. Returns NaN if the input is negative, and negative infinity if the input is 0. - -``` -function math.max(list: ...number): number -``` - -Returns the maximum number of the input arguments. The function requires at least one input and will error if zero parameters are passed. If one of the inputs is a NaN, the result may or may not be a NaN. - -``` -function math.min(list: ...number): number -``` - -Returns the minimum number of the input arguments. The function requires at least one input and will error if zero parameters are passed. If one of the inputs is a NaN, the result may or may not be a NaN. - -``` -function math.modf(n: number): (number, number) -``` - -Returns the integer and fractional part of the input number. Both the integer and fractional part have the same sign as the input number, e.g. `math.modf(-1.5)` returns `-1, -0.5`. - -``` -function math.pow(x: number, y: number): number -``` - -Returns `x` raised to the power of `y`. - -``` -function math.rad(n: number): number -``` - -Converts `n` from degrees to radians and returns the result. - -``` -function math.random(): number -function math.random(n: number): number -function math.random(min: number, max: number): number -``` - -Returns a random number using the global random number generator. A zero-argument version returns a number in `[0, 1]` range. A one-argument version returns a number in `[1, n]` range. A two-argument version returns a number in `[min, max]` range. The input arguments are truncated to integers, so `math.random(1.5)` always returns 1. - -``` -function math.randomseed(seed: number) -``` - -Reseeds the global random number generator; subsequent calls to `math.random` will generate a deterministic sequence of numbers that only depends on `seed`. - -``` -function math.sinh(n: number): number -``` - -Returns a hyperbolic sine of `n`. - -``` -function math.sin(n: number): number -``` - -Returns the sine of `n`, which is an angle in radians. Returns a value in `[0, 1]` range. - -``` -function math.sqrt(n: number): number -``` - -Returns the square root of `n`. Returns NaN if the input is negative. - -``` -function math.tanh(n: number): number -``` - -Returns the hyperbolic tangent of `n`. - -``` -function math.tan(n: number): number -``` - -Returns the tangent of `n`, which is an angle in radians. - -``` -function math.noise(x: number, y: number?, z: number?): number -``` - -Returns 3D Perlin noise value for the point `(x, y, z)` (`y` and `z` default to zero if absent). Returns a value in `[-1, 1]` range. - -``` -function math.clamp(n: number, min: number, max: number): number -``` - -Returns `n` if the number is in `[min, max]` range; otherwise, returns `min` when `n < min`, and `max` otherwise. If `n` is NaN, may or may not return NaN. -The function errors if `min > max`. - -``` -function math.sign(n: number): number -``` - -Returns `-1` if `n` is negative, `1` if `n` is positive, and `0` if `n` is zero or NaN. - -``` -function math.round(n: number): number -``` - -Rounds `n` to the nearest integer boundary. If `n` is exactly halfway between two integers, rounds `n` away from 0. - -## table library - -``` -function table.concat(a: {string}, sep: string?, f: number?, t: number?): string -``` - -Concatenate all elements of `a` with indices in range `[f..t]` together, using `sep` as a separator if present. `f` defaults to 1 and `t` defaults to `#a`. - -``` -function table.foreach(t: { [K]: V }, f: (K, V) -> R?): R? -``` - -Iterates over all elements of the table in unspecified order; for each key-value pair, calls `f` and returns the result of `f` if it's non-nil. If all invocations of `f` returned `nil`, returns no values. This function has been deprecated and is not recommended for use in new code; use `for` loop instead. - -``` -function table.foreachi(t: {V}, f: (number, V) -> R?): R? -``` - -Iterates over numeric keys of the table in `[1..#t]` range in order; for each key-value pair, calls `f` and returns the result of `f` if it's non-nil. If all invocations of `f` returned `nil`, returns no values. This function has been deprecated and is not recommended for use in new code; use `for` loop instead. - -``` -function table.getn(t: {V}): number -``` - -Returns the length of table `t`. This function has been deprecated and is not recommended for use in new code; use `#t` instead. - -``` -function table.maxn(t: {V}): number -``` - -Returns the maximum numeric key of table `t`, or zero if the table doesn't have numeric keys. - -``` -function table.insert(t: {V}, v: V) -function table.insert(t: {V}, i: number, v: V) -``` - -When using a two-argument version, appends the value to the array portion of the table (equivalent to `t[#t+1] = v`). -When using a three-argument version, inserts the value at index `i` and shifts values at indices after that by 1. `i` should be in `[1..#t]` range. - -``` -function table.remove(t: {V}, i: number?): V? -``` - -Removes element `i` from the table and shifts values at indices after that by 1. If `i` is not specified, removes the last element of the table. -`i` should be in `[1..#t]` range. -Returns the value of the removed element, or `nil` if no element was removed (e.g. table was empty). - -``` -function table.sort(t: {V}, f: ((V, V) -> boolean)?) -``` - -Sorts the table `t` in ascending order, using `f` as a comparison predicate: `f` should return `true` iff the first parameter should be before the second parameter in the resulting table. When `f` is not specified, builtin less-than comparison is used instead. -The comparison predicate must establish a strict weak ordering - sort results are undefined otherwise. - -``` -function table.pack(args: ...V): { [number]: V, n: number } -``` - -Returns a table that consists of all input arguments as array elements, and `n` field that is set to the number of inputs. - -``` -function table.unpack(a: {V}, f: number?, t: number?): ...V -``` - -Returns all values of `a` with indices in `[f..t]` range. `f` defaults to 1 and `t` defaults to `#a`. - -``` -function table.move(a: {V}, f: number, t: number, d: number, tt: {V}?) -``` - -Copies elements in range `[f..t]` from table `a` to table `tt` if specified and `a` otherwise, starting from the index `d`. - -``` -function table.create(n: number, v: V?): {V} -``` - -Creates a table with `n` elements; all of them (range `[1..n]`) are set to `v`. When `v` is nil or omitted, the returned table is empty but has preallocated space for `n` elements which can make subsequent insertions faster. -Note that preallocation is only performed for the array portion of the table - using `table.create` on dictionaries is counter-productive. - -``` -function table.find(t: {V}, v: V): number? -``` - -Find the first element in the table that is equal to `v` and returns its index; the traversal stops at the first `nil`. If the element is not found, `nil` is returned instead. - -``` -function table.clear(t: table) -``` - -Removes all elements from the table while preserving the table capacity, so future assignments don't need to reallocate space. - -``` -function table.freeze(t: table): table -``` - -Given a non-frozen table, freezes it such that all subsequent attempts to modify the table or assign its metatable raise an error. If the input table is already frozen or has a protected metatable, the function raises an error; otherwise it returns the input table. -Note that the table is frozen in-place and is not being copied. Additionally, only `t` is frozen, and keys/values/metatable of `t` don't change their state and need to be frozen separately if desired. - -``` -function table.isfrozen(t: table): boolean -``` - -Returns `true` iff the input table is frozen. - -``` -function table.clone(t: table): table -``` - -Returns a copy of the input table that has the same metatable, same keys and values, and is not frozen even if `t` was. -The copy is shallow: implementing a deep recursive copy automatically is challenging, and often only certain keys need to be cloned recursively which can be done after the initial clone by modifying the resulting table. - -## string library - -``` -function string.byte(s: string, f: number?, t: number?): ...number -``` - -Returns the numeric code of every byte in the input string with indices in range `[f..t]`. `f` defaults to 1 and `t` defaults to `f`, so a two-argument version of this function returns a single number. If the function is called with a single argument and the argument is out of range, the function returns no values. - -``` -function string.char(args: ...number): string -``` - -Returns the string that contains a byte for every input number; all inputs must be integers in `[0..255]` range. - -``` -function string.find(s: string, p: string, init: number?, plain: boolean?): (number?, number?, ...string) -``` - -Tries to find an instance of pattern `p` in the string `s`, starting from position `init` (defaults to 1). When `plain` is true, the search is using raw case-insensitive string equality, otherwise `p` should be a [string pattern](https://www.lua.org/manual/5.3/manual.html#6.4.1). If a match is found, returns the position of the match and the length of the match, followed by the pattern captures; otherwise returns `nil`. - -``` -function string.format(s: string, args: ...any): string -``` - -Returns a formatted version of the input arguments using a [printf-style format string](https://en.cppreference.com/w/c/io/fprintf) `s`. The following format characters are supported: - -- `c`: expects an integer number and produces a character with the corresponding character code -- `d`, `i`, `u`: expects an integer number and produces the decimal representation of that number -- `o`: expects an integer number and produces the octal representation of that number -- `x`, `X`: expects an integer number and produces the hexadecimal representation of that number, using lower case or upper case hexadecimal characters -- `e`, `E`, `f`, `g`, `G`: expects a number and produces the floating point representation of that number, using scientific or decimal representation -- `q`: expects a string and produces the same string quoted using double quotation marks, with escaped special characters if necessary -- `s`: expects a string and produces the same string verbatim - -The formats support modifiers `-`, `+`, space, `#` and `0`, as well as field width and precision modifiers - with the exception of `*`. - -``` -function string.gmatch(s: string, p: string): -``` - -Produces an iterator function that, when called repeatedly explicitly or via `for` loop, produces matches of string `s` with [string pattern](https://www.lua.org/manual/5.3/manual.html#6.4.1) `p`. For every match, the captures within the pattern are returned if present (if a pattern has no captures, the entire matching substring is returned instead). - -``` -function string.gsub(s: string, p: string, f: function | table | string, maxs: number?): (string, number) -``` - -For every match of [string pattern](https://www.lua.org/manual/5.3/manual.html#6.4.1) `p` in `s`, replace the match according to `f`. The substitutions stop after the limit of `maxs`, and the function returns the resulting string followed by the number of substitutions. - -When `f` is a string, the substitution uses the string as a replacement. When `f` is a table, the substitution uses the table element with key corresponding to the first pattern capture, if present, and entire match otherwise. Finally, when `f` is a function, the substitution uses the result of calling `f` with call pattern captures, or entire matching substring if no captures are present. - -``` -function string.len(s: string): number -``` - -Returns the number of bytes in the string (equivalent to `#s`). - -``` -function string.lower(s: string): string -``` - -Returns a string where each byte corresponds to the lower-case ASCII version of the input byte in the source string. - -``` -function string.match(s: string, p: string, init: number?): ...string? -``` - -Tries to find an instance of pattern `p` in the string `s`, starting from position `init` (defaults to 1). `p` should be a [string pattern](https://www.lua.org/manual/5.3/manual.html#6.4.1). If a match is found, returns all pattern captures, or entire matching substring if no captures are present, otherwise returns `nil`. - -``` -function string.rep(s: string, n: number): string -``` - -Returns the input string `s` repeated `n` times. Returns an empty string if `n` is zero or negative. - -``` -function string.reverse(s: string): string -``` - -Returns the string with the order of bytes reversed compared to the original. Note that this only works if the input is a binary or ASCII string. - -``` -function string.sub(s: string, f: number, t: number?): string -``` - -Returns a substring of the input string with the byte range `[f..t]`; `t` defaults to `#s`, so a two-argument version returns a string suffix. - -``` -function string.upper(s: string): string -``` - -Returns a string where each byte corresponds to the upper-case ASCII version of the input byte in the source string. - -``` -function string.split(s: string, sep: string?): {string} -``` - -Splits the input string using `sep` as a separator (defaults to `","`) and returns the resulting substrings. If separator is empty, the input string is split into separate one-byte strings. - -``` -function string.pack(f: string, args: ...any): string -``` - -Given a [pack format string](https://www.lua.org/manual/5.3/manual.html#6.4.2), encodes all input parameters according to the packing format and returns the resulting string. Note that Luau uses fixed sizes for all types that have platform-dependent size in Lua 5.x: short is 16 bit, long is 64 bit, integer is 32-bit and size_t is 32 bit for the purpose of string packing. - -``` -function string.packsize(f: string): number -``` - -Given a [pack format string](https://www.lua.org/manual/5.3/manual.html#6.4.2), returns the size of the resulting packed representation. The pack format can't use variable-length format specifiers. Note that Luau uses fixed sizes for all types that have platform-dependent size in Lua 5.x: short is 16 bit, long is 64 bit, integer is 32-bit and size_t is 32 bit for the purpose of string packing. - -``` -function string.unpack(f: string, s: string): ...any -``` - -Given a [pack format string](https://www.lua.org/manual/5.3/manual.html#6.4.2), decodes the input string according to the packing format and returns all resulting values. Note that Luau uses fixed sizes for all types that have platform-dependent size in Lua 5.x: short is 16 bit, long is 64 bit, integer is 32-bit and size_t is 32 bit for the purpose of string packing. - -## coroutine library - -``` -function coroutine.create(f: function): thread -``` - -Returns a new coroutine that, when resumed, will run function `f`. - -``` -function coroutine.running(): thread? -``` - -Returns the currently running coroutine, or `nil` if the code is running in the main coroutine (depending on the host environment setup, main coroutine may never be used for running code). - -``` -function coroutine.status(co: thread): string -``` - -Returns the status of the coroutine, which can be `"running"`, `"suspended"`, `"normal"` or `"dead"`. Dead coroutines have finished their execution and can not be resumed, but their state can still be inspected as they are not dead from the garbage collector point of view. - -``` -function coroutine.wrap(f: function): function -``` - -Creates a new coroutine and returns a function that, when called, resumes the coroutine and passes all arguments along to the suspension point. When the coroutine yields or finishes, the wrapped function returns with all values returned at the suspension point. - -``` -function coroutine.yield(args: ...any): ...any -``` - -Yields the currently running coroutine and passes all arguments along to the code that resumed the coroutine. The coroutine becomes suspended; when the coroutine is resumed again, the resumption arguments will be forwarded to `yield` which will behave as if it returned all of them. - -``` -function coroutine.isyieldable(): boolean -``` - -Returns `true` iff the currently running coroutine can yield. Yielding is prohibited when running inside metamethods like `__index` or C functions like `table.foreach` callback, with the exception of `pcall`/`xpcall`. - -``` -function coroutine.resume(co: thread, args: ...any): (boolean, ...any) -``` - -Resumes the coroutine and passes the arguments along to the suspension point. When the coroutine yields or finishes, returns `true` and all values returned at the suspension point. If an error is raised during coroutine resumption, this function returns `false` and the error object, similarly to `pcall`. - -``` -function coroutine.close(co: thread): (boolean, any?) -``` - -Closes the coroutine which puts coroutine in the dead state. The coroutine must be dead or suspended - in particular it can't be currently running. If the coroutine that's being closed was in an error state, returns `false` along with an error object; otherwise returns `true`. After closing, the coroutine can't be resumed and the coroutine stack becomes empty. - -## bit32 library - -All functions in the `bit32` library treat input numbers as 32-bit unsigned integers in `[0..4294967295]` range. The bit positions start at 0 where 0 corresponds to the least significant bit. - -``` -function bit32.arshift(n: number, i: number): number -``` - -Shifts `n` by `i` bits to the right (if `i` is negative, a left shift is performed instead). The most significant bit of `n` is propagated during the shift. When `i` is larger than 31, returns an integer with all bits set to the sign bit of `n`. When `i` is smaller than `-31`, 0 is returned. - -``` -function bit32.band(args: ...number): number -``` - -Performs a bitwise `and` of all input numbers and returns the result. If the function is called with no arguments, an integer with all bits set to 1 is returned. - -``` -function bit32.bnot(n: number): number -``` - -Returns a bitwise negation of the input number. - -``` -function bit32.bor(args: ...number): number -``` - -Performs a bitwise `or` of all input numbers and returns the result. If the function is called with no arguments, zero is returned. - -``` -function bit32.bxor(args: ...number): number -``` - -Performs a bitwise `xor` (exclusive or) of all input numbers and returns the result. If the function is called with no arguments, zero is returned. - -``` -function bit32.btest(args: ...number): boolean -``` - -Perform a bitwise `and` of all input numbers, and return `true` iff the result is not 0. If the function is called with no arguments, `true` is returned. - -``` -function bit32.extract(n: number, f: number, w: number?): number -``` - -Extracts bits of `n` at position `f` with a width of `w`, and returns the resulting integer. `w` defaults to `1`, so a two-argument version of `extract` returns the bit value at position `f`. Bits are indexed starting at 0. Errors if `f` and `f+w-1` are not between 0 and 31. - -``` -function bit32.lrotate(n: number, i: number): number -``` - -Rotates `n` to the left by `i` bits (if `i` is negative, a right rotate is performed instead); the bits that are shifted past the bit width are shifted back from the right. - -``` -function bit32.lshift(n: number, i: number): number -``` - -Shifts `n` to the left by `i` bits (if `i` is negative, a right shift is performed instead). When `i` is outside of `[-31..31]` range, returns 0. - -``` -function bit32.replace(n: number, r: number, f: number, w: number?): number -``` - -Replaces bits of `n` at position `f` and width `w` with `r`, and returns the resulting integer. `w` defaults to `1`, so a three-argument version of `replace` changes one bit at position `f` to `r` (which should be 0 or 1) and returns the result. Bits are indexed starting at 0. Errors if `f` and `f+w-1` are not between 0 and 31. - -``` -function bit32.rrotate(n: number, i: number): number -``` - -Rotates `n` to the right by `i` bits (if `i` is negative, a left rotate is performed instead); the bits that are shifted past the bit width are shifted back from the left. - -``` -function bit32.rshift(n: number, i: number): number -``` - -Shifts `n` to the right by `i` bits (if `i` is negative, a left shift is performed instead). When `i` is outside of `[-31..31]` range, returns 0. - -``` -function bit32.countlz(n: number): number -``` - -Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the left-most (most significant) bit. Returns 32 if `n` is zero. - -``` -function bit32.countrz(n: number): number -``` - -Returns the number of consecutive zero bits in the 32-bit representation of `n` starting from the right-most (least significant) bit. Returns 32 if `n` is zero. - -## utf8 library - -Strings in Luau can contain arbitrary bytes; however, in many applications strings representing text contain UTF8 encoded data by convention, that can be inspected and manipulated using `utf8` library. - -``` -function utf8.offset(s: string, n: number, i: number?): number? -``` - -Returns the byte offset of the Unicode codepoint number `n` in the string, starting from the byte position `i`. When the character is not found, returns `nil` instead. - -``` -function utf8.codepoint(s: string, i: number?, j: number?): ...number -``` - -Returns a number for each Unicode codepoint in the string with the starting byte offset in `[i..j]` range. `i` defaults to 1 and `j` defaults to `i`, so a two-argument version of this function returns the Unicode codepoint that starts at byte offset `i`. - -``` -function utf8.char(args: ...number): string -``` - -Creates a string by concatenating Unicode codepoints for each input number. - -``` -function utf8.len(s: string, i: number?, j: number?): number? -``` - -Returns the number of Unicode codepoints with the starting byte offset in `[i..j]` range, or `nil` followed by the first invalid byte position if the input string is malformed. -`i` defaults to 1 and `j` defaults to `#s`, so `utf8.len(s)` returns the number of Unicode codepoints in string `s` or `nil` if the string is malformed. - -``` -function utf8.codes(s: string): -``` - -Returns an iterator that, when used in `for` loop, produces the byte offset and the codepoint for each Unicode codepoints that `s` consists of. - -## os library - -``` -function os.clock(): number -``` - -Returns a high-precision timestamp (in seconds) that doesn't have a defined baseline, but can be used to measure duration with sub-microsecond precision. - -``` -function os.date(s: string?, t: number?): table | string -``` - -Returns the table or string representation of the time specified as `t` (defaults to current time) according to `s` format string. - -When `s` starts with `!`, the result uses UTC, otherwise it uses the current timezone. - -If `s` is equal to `*t` (or `!*t`), a table representation of the date is returned, with keys `sec`/`min`/`hour` for the time (using 24-hour clock), `day`/`month`/`year` for the date, `wday` for week day (1..7), `yday` for year day (1..366) and `isdst` indicating whether the timezone is currently using daylight savings. - -Otherwise, `s` is interpreted as a [date format string](https://www.cplusplus.com/reference/ctime/strftime/), with the valid specifiers including any of `aAbBcdHIjmMpSUwWxXyYzZ` or `%`. `s` defaults to `"%c"` so `os.date()` returns the human-readable representation of the current date in local timezone. - -``` -function os.difftime(a: number, b: number): number -``` - -Calculates the difference in seconds between `a` and `b`; provided for compatibility only. Please use `a - b` instead. - -``` -function os.time(t: table?): number -``` - -When called without arguments, returns the current date/time as a Unix timestamp. When called with an argument, expects it to be a table that contains `sec`/`min`/`hour`/`day`/`month`/`year` keys and returns the Unix timestamp of the specified date/time in UTC. - -## debug library - -``` -function debug.info(co: thread, level: number, s: string): ...any -function debug.info(level: number, s: string): ...any -function debug.info(f: function, s: string): ...any -``` - -Given a stack frame or a function, and a string that specifies the requested information, returns the information about the stack frame or function. - -Each character of `s` results in additional values being returned in the same order as the characters appear in the string: - -- `s` returns source path for the function -- `l` returns the line number for the stack frame or the line where the function is defined when inspecting a function object -- `n` returns the name of the function, or an empty string if the name is not known -- `f` returns the function object itself -- `a` returns the number of arguments that the function expects followed by a boolean indicating whether the function is variadic or not - -For example, `debug.info(2, "sln")` returns source file, current line and function name for the caller of the current function. - -``` -function debug.traceback(co: thread, msg: string?, level: number?): string -function debug.traceback(msg: string?, level: number?): string -``` - -Produces a stringified callstack of the given thread, or the current thread, starting with level `level`. If `msg` is specified, then the resulting callstack includes the string before the callstack output, separated with a newline. The format of the callstack is human-readable and subject to change. diff --git a/docs/_pages/limited-terms-of-use.md b/docs/_pages/limited-terms-of-use.md deleted file mode 100644 index 678716a3..00000000 --- a/docs/_pages/limited-terms-of-use.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: default -title: LIMITED USE LICENSE -permalink: /limited-terms-of-use ---- -
-

ROBLOX, INC.

-

LIMITED USE LICENSE

-
- -Roblox Corporation (“Roblox”) is making certain software for your access and use on a pre-release, trial, beta, evaluation, or similar limited purpose basis pursuant to this Limited Use License (the “License”). By clicking agree, downloading, accessing, or using the software and materials (which may include associated data and data sets, models, and documentation) accompanying this License (the “Licensed Software”), you agree to be bound by the terms and conditions of this License, including acknowledging that your rights are conditioned on compliance with these terms and revocable at any time, that the Licensed Software is made available on an “as-is” basis without warranty or guarantee of any kind, and that Roblox expressly reserves all rights not expressly granted in this License. -Access and use of the Licensed Software may require applying for and maintaining an active registration with Roblox, the use of which account and associated services (the “Service”) is governed by and subject to separate terms (the “Terms of Use”). - -1. **Evaluation Use of the Licensed Software.** Subject to your complete and ongoing compliance with this License (including any applicable Terms of Use), Roblox grants you a limited, nonexclusive, non-transferable, non-sublicensable, revocable permission to access and use the Licensed Software during the License Term in accordance with any applicable documentation, solely for the purpose of internal, non-production evaluation and testing of the Licensed Software, and solely in connection with your otherwise permitted use of the Roblox products and services for which the Licensed Software was designed. - -2. **Source Code License.** Solely in the event that all or a portion of the Licensed Software is provided in source code form (the “Licensed Source”) the permission granted in Section 1 also includes the right to access and modify the Licensed Source, subject to the same limitations and restrictions as provided in Section 1 and elsewhere in this License and the Terms of Use. The modified version or other derivatives of such Licensed Source (in source or compiled form) will be deemed Licensed Software hereunder. - -3. **Usage Guidelines.** You must not use the Licensed Software to transmit unlawful or otherwise objectionable material, transmit viruses or other harmful computer code, interfere with the performance of the Service or the data contained therein, attempt to gain unauthorized access to the Service or networks related to the Service, or interfere with another’s use of the Service. You must not distribute the Licensed Software or derivatives thereof in whole or in part, or modify, copy, or make derivative works based on, or otherwise reverse engineer, disassemble, or decompile any portion of the Licensed Software not made available to you by Roblox in source form. You may not access or use the Licensed Software or the Service in connection with any alternative or competitive service, or to otherwise reproduce, emulate, or replace features of the Service. You also may not use the Licensed Software to create malicious or abusive content (as determined by Roblox) or any content that violates a Roblox guideline or policy or use the Licensed Software in any manner that infringes, misappropriates, or otherwise violates any intellectual property right or other right of any person, or that violates any applicable laws. - -4. **Feedback.** From time to time you may, but are not required to, provide Roblox with feedback regarding the Licensed Software, including by reporting any errors you encounter, providing suggestions for modifications and enhancements, submitting bug fixes, contributions, or other associated code, or making other similar submissions (collectively, “Feedback”). You retain ownership of your rights in Feedback. Notwithstanding, Feedback is provided to Roblox on a non-confidential basis (notwithstanding any indication to the contrary in any accompanying communication) and by submitting Feedback you hereby irrevocably grant Roblox and its successors an unrestricted, unlimited, worldwide, nonexclusive, transferable, sublicensable, fully paid up, royalty free, sublicensable (through multiple tiers) license to reproduce, distribute, publicly perform or display, and prepare derivatives of the Feedback, and to make, have made, use, sell, offer for sale, and import any product or service, and to practice any method disclosed in the Feedback, in any form or manner and without limitation, attribution, or compensation. - -5. **Reservation of Rights.** Roblox retains all its right, title, and interest, including all intellectual property rights, in and to the Licensed Software and derivatives thereof, and nothing herein will be deemed to grant or confer on you any ownership of any such rights, whether expressly, by implication, estoppel, or otherwise. You acknowledge that Roblox may track usage of the Licensed Software in connection with the Services, and Roblox retains unrestricted rights to all related data, and any analytical results, models, methods or learnings derived therefrom. - -6. **Additional Restrictions.** Your testing of the Licensed Software and the results thereof and your Feedback, are all Roblox confidential information (“Confidential Information”) and may not be used for any purpose other than your testing and evaluation of the Licensed Software, or shared with any other person or entity. You may not (i) disclose, permit disclosure of, publish, or disseminate Confidential Information to anyone (ii) perform any benchmarking test or similar comparative research, or (iii) disclose any results, opinions, or summaries of the Licensed Software or any Confidential Information. - -7. **DISCLAIMER; LIMITATION OF LIABILITY.** THE LICENSED SOFTWARE IS PROVIDED “AS IS” AND WITH ALL FAULTS. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, ROBLOX HEREBY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE, OR THAT THE LICENSED SOFTWARE SHALL BE ERROR-FREE OR UNINTERRUPTED. IN NO EVENT SHALL ROBLOX HAVE ANY DIRECT OR INDIRECT LIABILITY TO YOU FOR ANY REASON UNDER THIS LICENSE, INCLUDING ANY LOST PROFITS, LOSS OF DATA, LOSS OF USE, OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY SPECIAL, PUNITIVE, OR EXEMPLARY DAMAGES HOWEVER CAUSED AND, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, WHETHER OR NOT EITHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In addition, you agree and understand that the Licensed Software may be provided on an alpha, beta, or other pre-release basis, and Roblox is under no obligation to make any further releases, including any production release, and that any subsequent release may differ from the Licensed Software in any manner Roblox sees fit, including addition, modification, or removal of features and functionality present in the Licensed Software. You acknowledge that the limitations of liability and the disclaimers of warranties and damages set forth herein form an essential basis of the bargain between you and Roblox, and that they will survive and apply even if found to have failed of their essential purpose, to the greatest extent permissible pursuant to applicable law. - -8. **Term and Termination.** This Agreement commences on the date you accept this License and, unless terminated earlier as described below or extended by mutual written agreement, shall terminate upon the later of the license term specified at the time you access the Licensed Software, or the public release of the production version of the Licensed Software (the “License Term”). Roblox may terminate the License (and your access to the Licensed Software and any associated materials) at any time for any reason or no reason. Any provisions that by their nature or express terms survive expiration or termination of this License will survive any expiration or termination of this License. Your obligations with respect to Confidential Information and Feedback will survive indefinitely, notwithstanding any eventual publication of a commercial or production version of the Licensed Software. Upon expiration or termination of this License for any reason, you must cease using the Licensed Software, and return or destroy copies of any Licensed Software or Licensed Source (and derivatives thereof) or other Confidential Information in your possession. diff --git a/docs/_pages/lint.md b/docs/_pages/lint.md deleted file mode 100644 index 49d44653..00000000 --- a/docs/_pages/lint.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -permalink: /lint -title: Linting -toc: true ---- - -Luau comes with a set of linting passes, that help make sure that the code is correct and consistent. Unlike the type checker, that models the behavior of the code thoroughly and points toward type mismatches that are likely to result in runtime errors, the linter is more opinionated and produces warnings that can often be safely ignored, although it's recommended to keep the code clean of the warnings. - -Linter produces many different types of warnings; many of these are enabled by default, and can be suppressed by declaring `--!nolint NAME` at the top of the file. In dire situations `--!nolint` at the top of the file can be used to completely disable all warnings (note that the type checker is still active, and requires a separate `--!nocheck` declaration). - -The rest of this page documents all warnings produced by the linter; each warning has a name and a numeric code, the latter is used when displaying warnings. - -## UnknownGlobal (1) - -By default, variables in Luau are global (this is inherited from Lua 5.x and can't be changed because of backwards compatibility). This means that typos in identifiers are invisible to the parser, and often break at runtime. For this reason, the linter considers all globals that aren't part of the builtin global table and aren't explicitly defined in the script "unknown": - -```lua -local displayName = "Roblox" - --- Unknown global 'displaName' -print(displaName) -``` - -Note that injecting globals via `setfenv` can produce this warning in correct code; global injection is incompatible with type checking and has performance implications so we recommend against it and in favor of using `require` with correctly scoped identifiers. - -## DeprecatedGlobal (2) - -Some global names exist for compatibility but their use is discouraged. This mostly affects globals introduced by Roblox, and since they can have problematic behavior or can break in the future, this warning highlights their uses: - -```lua --- Global 'ypcall' is deprecated, use 'pcall' instead -ypcall(function() - print("hello") -end) -``` - -## GlobalUsedAsLocal (3) - -The UnknownGlobal lint can catch typos in globals that are read, but can't catch them in globals that are assigned to. Because of this, and to discourage the use of globals in general, linter detects cases when a global is only used in one function and can be safely converted to a local variable. Note that in some cases this requires declaring the local variable in the beginning of the function instead of where it's being assigned to. - -```lua -local function testFunc(a) - if a < 5 then - -- Global 'b' is only used in the enclosing function; consider changing it to local - b = 1 - else - b = 2 - end - print(b) -end -``` - -## LocalShadow (4) - -In Luau, it is valid to shadow locals and globals with a local variable, including doing it in the same function. This can result in subtle bugs, since the shadowing may not be obvious to the reader. This warning detects cases where local variables shadow other local variables in the same function, or global variables used in the script; for more cases of detected shadowing see `LocalShadowPedantic`. - -```lua -local function foo() - for i=1,10 do - -- Variable 'i' shadows previous declaration at line 2 - for i=1,10 do - print(i) - end - end -end -``` - -## SameLineStatement (5) - -Luau doesn't require the use of semicolons and doesn't automatically insert them at line breaks. When used wisely this results in code that is easy to read and understand, however it can cause subtle issues and hard to understand code when abused by using many different statements on the same line. This warning highlights cases where code should either be broken into multiple lines, or use `;` as a visual guide. - -```lua --- A new statement is on the same line; add semi-colon on previous statement to silence -if b < 0 then local a = b + 1 print(a, b) end -``` - -## MultiLineStatement (6) - -An opposite problem is having statements that span multiple lines. This is good for readability when the code is indented properly, but when it's not it results in code that's hard to understand, as its easy to confuse the next line for a separate statement. - -```lua --- Statement spans multiple lines; use indentation to silence -print(math.max(1, -math.min(2, 3))) -``` - -## LocalUnused (7) - -This warning is one of the few warnings that highlight unused variables. Local variable declarations that aren't used may indicate a bug in the code (for example, there could be a typo in the code that uses the wrong variable) or redundant code that is no longer necessary (for example, calling a function to get its result and never using this result). This warning warns about locals that aren't used; if the locals are not used intentionally they can be prefixed with `_` to silence the warning: - -```lua -local x = 1 --- Variable 'y' is never used; prefix with '_' to silence -local y = 2 -print(x, x) -``` - -## FunctionUnused (8) - -While unused local variables could be useful for debugging, unused functions usually contain dead code that was meant to be removed. Unused functions clutter code, can be a result of typos similar to local variables, and can mislead the reader into thinking that some functionality is supported. - -```lua --- Function 'bar' is never used; prefix with '_' to silence -local function bar() -end - -local function foo() -end - -return foo() -``` - -## ImportUnused (9) - -In Luau, there's no first-class module system that's part of the syntax, but `require` function acts as an import statement. When a local is initialized with a `require` result, and the local is unused, this is classified as "unused import". Removing unused imports improves code quality because it makes it obvious what the dependencies of the code are: - -```lua --- Import 'Roact' is never used; prefix with '_' to silence -local Roact = require(game.Packages.Roact) -``` - -## BuiltinGlobalWrite (10) - -While the sandboxing model of Luau prevents overwriting built-in globals such as `table` for the entire program, it's still valid to reassign these globals - this results in "global shadowing", where the script's global table contains a custom version of `table` after writing to it. This is problematic because it disables some optimizations, and can result in misleading code. When shadowing built-in globals, use locals instead. - -```lua --- Built-in global 'math' is overwritten here; consider using a local or changing the name -math = {} -``` - -## PlaceholderRead (11) - -`_` variable name is commonly used as a placeholder to discard function results. The linter follows this convention and doesn't warn about the use of `_` in various cases where a different name would cause a warning otherwise. To make sure the placeholder is only used to write values to it, this warning detects the cases where it's read instead: - -```lua -local _ = 5 --- Placeholder value '_' is read here; consider using a named variable -return _ -``` - -## UnreachableCode (12) - -In some cases the linter can detect code that is never executed, because all execution paths through the function exit the function or the loop before reaching it. Such code is misleading because it's not always obvious to the reader that it never runs, and as such it should be removed. - -```lua -function cbrt(v) - if v >= 0 then - return v ^ (1/3) - else - error('cbrt expects a non-negative argument') - end - -- Unreachable code (previous statement always returns) - return 0 -end -``` - -## UnknownType (13) - -Luau provides several functions to get the value type as a string (`type`, `typeof`), and some Roblox APIs expose class names through string arguments (`Instance.new`). This warning detects incorrect use of the type names by checking the string literals used in type comparisons and function calls. - -```lua --- Unknown type 'String' (expected primitive type) -if type(v) == "String" then - print("v is a string") -end -``` - -## ForRange (14) - -When using a numeric for, it's possible to make various mistakes when specifying the for bounds. For example, to iterate through the table backwards, it's important to specify the negative step size. This warning detects several cases where the numeric for only runs for 0 or 1 iterations, or when the step doesn't divide the size of the range evenly. - -```lua --- For loop should iterate backwards; did you forget to specify -1 as step? -for i=#t,1 do -end -``` - -## UnbalancedAssignment (15) - -Assignment statements and local variable declarations in Luau support multiple variables on the left side and multiple values on the right side. The number of values doesn't need to match; when the right side has more values, the extra values are discarded, and then the left side has more variables the extra variables are set to `nil`. However, this can result in subtle bugs where a value is omitted mistakenly. This warning warns about cases like this; if the last expression on the right hand side returns multiple values, the warning is not emitted. - -```lua --- Assigning 2 values to 3 variables initializes extra variables with nil; add 'nil' to value list to silence -local x, y, z = 1, 2 -``` - -## ImplicitReturn (16) - -In Luau, there's a subtle difference between returning no values from a function and returning `nil`. In many contexts these are equivalent, but when the results are passed to a variadic function (perhaps implicitly), the difference can be observed - for example, `print(foo())` prints nothing if `foo` returns no values, and `nil` if it returns `nil`. - -To help write code that has consistent behavior, linter warns about cases when a function implicitly returns no values, if there are cases when it explicitly returns a result. For code like this it's recommended to use explicit `return` or `return nil` at the end of the function (these have different semantics, so the correct version to use depends on the function): - -```lua -local function find(t, expected) - for k,v in pairs(t) do - if k == expected then - return v - end - end - -- Function 'find' can implicitly return no values even though there's an explicit return at line 4; add explicit return to silence -end -``` - -## DuplicateLocal (17) - -Luau syntax allows to use the same name for different parameters of a function as well as different local variables declared in the same statement. This is error prone, even if it's occasionally useful, so a warning is emitted in cases like this, unless the duplicate name is the placeholder `_`: - -```lua -function foo(a, b, a) -- Function parameter 'a' already defined on column 14 -end - -function obj:method(self) -- Function parameter 'self' already defined implicitly -end - -local x, y, x = v:GetComponents() -- Variable 'x' already defined on column 7 -``` - -## FormatString (18) - -Luau has several library functions that expect a format string that specifies the behavior for the function. These format strings follow a specific syntax that depends on the question; mistakes in these strings can lead to runtime errors or unexpected behavior of the code. - -To help make sure that the strings used for these functions are correct, linter checks calls to `string.format`, `string.pack`, `string.packsize`, `string.unpack`, `string.match`, `string.gmatch`, `string.find`, `string.gsub` and `os.date` and issues warnings when the call uses a literal string with an incorrect format: - -```lua --- Invalid match pattern: invalid capture reference, must refer to a closed capture -local cap = string.match(s, "(%d)%2") - --- Invalid format string: unfinished format specifier -local str = ("%d %"):format(1, 2) -``` - - Note that with the exception of `string.format` this only works when the function is called via the library, not via the method call (so prefer `string.match(s, "pattern")` to `s:match("pattern")`). - -## TableLiteral (19) - -Table literals are often used in Luau to create objects or specify data. The syntax for table literals is rich but invites mistakes, for example it allows duplicate keys or redundant index specification for values already present in the list form. This warning is emitted for cases where some entries in the table literal are ignored at runtime as they're duplicate: - -```lua -print({ - first = 1, - second = 2, - first = 3, -- Table field 'first' is a duplicate; previously defined at line 2 -}) -``` - -## UninitializedLocal (20) - -It's easy to forget to initialize a local variable and then proceed to use it regardless. This can happen due to a typo, or sometimes it can happen because the original variable definition is shadowed. When a local variable doesn't have an initial value and is used without ever being assigned to, this warning is emitted: - -```lua -local foo - -if foo then -- Variable 'foo' defined at line 1 is never initialized or assigned; initialize with 'nil' to silence - print(foo) -end -``` - -## DuplicateFunction (21) - -This warning is emitted when a script defines two functions with the same name in the same scope. - -The warning is not produced when the functions are defined in different scopes because this is much more likely to be intentional. - -```lua -function foo() end -function foo() end -- Duplicate function definition: 'foo' also defined on line 1 - --- OK: the functions are not defined in the same scope. -if x then - function bar() end -else - function bar() end -end -``` - -## DeprecatedApi (22) - -This warning is emitted when a script accesses a method or field that is marked as deprecated. Use of deprecated APIs is discouraged since they may have performance or correctness issues, may result in unexpected behavior, and could be removed in the future. - -```lua -function getSize(i: Instance) - return i.DataCost -- Member 'Instance.DataCost' is deprecated -end -``` - -## TableOperations (23) - -To manipulate array-like tables, Luau provides a set of functions as part of the standard `table` library. To help use these functions correctly, this warning is emitted when one of these functions is used incorrectly or can be adjusted to be more performant. - -```lua -local t = {} - -table.insert(t, 0, 42) -- table.insert uses index 0 but arrays are 1-based; did you mean 1 instead? - -table.insert(t, #t+1, 42) -- table.insert will append the value to the table; consider removing the second argument for efficiency -``` - -## DuplicateCondition (24) - -When checking multiple conditions via `and/or` or `if/elseif`, a copy & paste error may result in checking the same condition redundantly. This almost always indicates a bug, so a warning is emitted when use of a duplicate condition is detected. - -```lua -assert(self._adorns[normID1] and self._adorns[normID1]) -- Condition has already been checked on column 8 -``` - -## MisleadingAndOr (25) - -In Lua, there is no first-class ternary operator but it can be emulated via `a and b or c` pattern. However, due to how boolean evaluation works, if `b` is `false` or `nil`, the resulting expression evaluates to `c` regardless of the value of `a`. Luau solves this problem with the `if a then b else c` expression; a warning is emitted for and-or expressions where the first alternative is `false` or `nil` because it's almost always a bug. - -```lua --- The and-or expression always evaluates to the second alternative because the first alternative is false; consider using if-then-else expression instead -local x = flag and false or true -``` - -The code above can be rewritten as follows to avoid the warning and the associated bug: - -```lua -local x = if flag then false else true -``` - -## CommentDirective (26) - -Luau uses comments that start from `!` to control certain aspects of analysis, for example setting type checking mode via `--!strict` or disabling individual lints with `--!nolint`. Unknown directives are ignored, for example `--!nostrict` doesn't have any effect on the type checking process as the correct spelling is `--!nonstrict`. This warning flags comment directives that are ignored during processing: - -```lua ---!nostrict --- Unknown comment directive 'nostrict'; did you mean 'nonstrict'?" -``` - -## IntegerParsing (27) - -Luau parses hexadecimal and binary literals as 64-bit integers before converting them to Luau numbers. As a result, numbers that exceed 2^64 are silently truncated to 2^64, which can result in unexpected program behavior. This warning flags literals that are truncated: - -```lua --- Hexadecimal number literal exceeded available precision and has been truncated to 2^64 -local x = 0x1111111111111111111111111111111111111 -``` - -## ComparisonPrecedence (28) - -Because of operator precedence rules, not X == Y parses as (not X) == Y; however, often the intent was to invert the result of the comparison. This warning flags erroneous conditions like that, as well as flagging cases where two comparisons happen in a row without any parentheses: - -```lua --- not X == Y is equivalent to (not X) == Y; consider using X ~= Y, or wrap one of the expressions in parentheses to silence -if not x == 5 then -end - --- X <= Y <= Z is equivalent to (X <= Y) <= Z; wrap one of the expressions in parentheses to silence -if 1 <= x <= 3 then -end -``` diff --git a/docs/_pages/news.md b/docs/_pages/news.md deleted file mode 100644 index 80f22644..00000000 --- a/docs/_pages/news.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Luau News" -permalink: /news/ -layout: posts -sidebar: "none" ---- \ No newline at end of file diff --git a/docs/_pages/performance.md b/docs/_pages/performance.md deleted file mode 100644 index c2b4ced3..00000000 --- a/docs/_pages/performance.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -permalink: /performance -title: Performance -toc: true ---- - -One of main goals of Luau is to enable high performance code, with gameplay code being the main use case. This can be viewed as two separate goals: - -- Make idiomatic code that wasn't tuned faster -- Enable even higher performance through careful tuning - -Both of these goals are important - it's insufficient to just focus on the highly tuned code, and all things being equal we prefer to raise all boats by implementing general optimizations. However, in some cases it's important to be aware of optimizations that Luau does and doesn't do. - -Worth noting is that Luau is focused on, first and foremost, stable high performance code in interpreted context. This is because JIT compilation is not available on many platforms Luau runs on, and AOT compilation would only work for code that Roblox ships (and even that does not always work). This is in stark contrast with LuaJIT that, while providing an excellent interpreter as well, focuses a lot of the attention on JIT (with many optimizations unavailable in the interpreter). - -Luau eventually plans to implement JIT on some platforms, but this is subject to careful memory safety analysis and is likely to not be deployed for client-side scripts, as the extra risk involved in JITs is much more pronounced when it may affect players. - -The rest of this document goes into some optimizations that Luau employs and how to best leverage them when writing code. The document is not complete - a lot of optimizations are transparent to the user and involve detailed low-level tuning of various parts that is not described here - and all of this is subject to change without notice, as it doesn't affect the semantics of valid code. - -## Fast bytecode interpreter - -Luau features a very highly tuned portable bytecode interpreter. It's similar to Lua interpreter in that it's written in C, but it's highly tuned to yield efficient assembly when compiled with Clang and latest versions of MSVC. On some workloads it can match the performance of LuaJIT interpreter which is written in highly specialized assembly. We are continuing to tune the interpreter and the bytecode format over time; while extra performance can be extracted by rewriting the interpreter in assembly, we're unlikely to ever do that as the extra gains at this point are marginal, and we gain a lot from C in terms of portability and being able to quickly implement new optimizations. - -Of course the interpreter isn't typical C code - it uses many tricks to achieve extreme levels of performance and to coerce the compiler to produce efficient assembly. Due to a better bytecode design and more efficient dispatch loop it's noticeably faster than Lua 5.x (including Lua 5.4 which made some of the changes similar to Luau, but doesn't come close). The bytecode design was partially inspired by excellent LuaJIT interpreter. Most computationally intensive scripts only use the interpreter core loop and builtins, which on x64 compiles into \~16 KB, thus leaving half of the instruction cache for other infrequently called code. - -## Optimizing compiler - -Unlike Lua and LuaJIT, Luau uses a multi-pass compiler with a frontend that parses source into an AST and a backend that generates bytecode from it. This carries a small penalty in terms of compilation time, but results in more flexible code and, crucially, makes it easier to optimize the generated bytecode. - -> Note: Compilation throughput isn't the main focus in Luau, but our compiler is reasonably fast; with all currently implemented optimizations enabled, it compiles 950K lines of Luau code in 1 second on a single core of a desktop Ryzen 5900X CPU, producing bytecode and debug information. - -While bytecode optimizations are limited due to the flexibility of Luau code (e.g. `a * 1` may not be equivalent to `a` if `*` is overloaded through metatables), even in absence of type information Luau compiler can perform some optimizations such as "deep" constant folding across functions and local variables, perform upvalue optimizations for upvalues that aren't mutated, do analysis of builtin function usage, optimize the instruction sequences for multiple variable assignments, and some peephole optimizations on the resulting bytecode. The compiler can also be instructed to use more aggressive optimizations by enabling optimization level 2 (`-O2` in CLI tools), some of which are documented further on this page. - -Most bytecode optimizations are performed on individual statements or functions, however the compiler also does a limited amount of interprocedural optimizations; notably, calls to local functions can be optimized with the knowledge of the argument count or number of return values involved. Interprocedural optimizations are limited to a single module due to the compilation model. - -Luau compiler currently doesn't use type information to do further optimizations, however early experiments suggest that we can extract further wins. Because we control the entire stack (unlike e.g. TypeScript where the type information is discarded completely before reaching the VM), we have more flexibility there and can make some tradeoffs during codegen even if the type system isn't completely sound. For example, it might be reasonable to assume that in presence of known types, we can infer absence of side effects for arithmetic operations and builtins - if the runtime types mismatch due to intentional violation of the type safety through global injection, the code will still be safely sandboxed; this may unlock optimizations such as common subexpression elimination and allocation hoisting without a JIT. This is speculative pending further research. - -## Epsilon-overhead debugger - -It's important for Luau to have stable and predictable performance. Something that comes up in Lua-based environments often is the use of line hooks to implement debugging (both for breakpoints and for stepping). This is problematic because the support for hooks is typically not free in general, but importantly once the hook is enabled, calling the hook has a considerable overhead, and the hook itself may be very costly to evaluate since it will need to associate the script:line pair with the breakpoint information. - -Luau does not support hooks at all, and relies on first-class support for breakpoints (using bytecode patching) and single-stepping (using a custom interpreter loop) to implement debugging. As a result, the presence of breakpoints doesn't slow the script execution down - the only noticeable discrepancy between running code under a debugger and without a debugger should be in cases where breakpoints are evaluated and skipped based on breakpoint conditions, or when stepping over long-running fragments of code. - -## Inline caching for table and global access - -Table access for field lookup is optimized in Luau using a mechanism that blends inline caching (classically used in Java/JavaScript VMs) and HREFs (implemented in LuaJIT). Compiler can predict the hash slot used by field lookup, and the VM can correct this prediction dynamically. - -As a result, field access can be very fast in Luau, provided that: - -- The field name is known at compile time. To make sure this is the case, `table.field` notation is recommended, although the compiler will also optimize `table["field"]` when the expression is known to be a constant string. -- The field access doesn't use metatables. The fastest way to work with tables in Luau is to store fields directly inside the table, and store methods in the metatable (see below); access to "static" fields in classic OOP designs is best done through `Class.StaticField` instead of `object.StaticField`. -- The object structure is usually uniform. While it's possible to use the same function to access tables of different shape - e.g. `function getX(obj) return obj.x end` can be used on any table that has a field `"x"` - it's best to not vary the keys used in the tables too much, as it defeats this optimization. - -The same optimization is applied to the custom globals declared in the script, although it's best to avoid these altogether by using locals instead. Still, this means that the difference between `function` and `local function` is less pronounced in Luau. - -## Importing global access chains - -While global access for library functions can be optimized in a similar way, this optimization breaks down when the global table is using sandboxing through metatables, and even when globals aren't sandboxed, `math.max` still requires two table accesses. - -It's always possible to "localize" the global accesses by using `local max = math.max`, but this is cumbersome - in practice it's easy to forget to apply this optimization. To avoid relying on programmers remembering to do this, Luau implements a special optimization called "imports", where most global chains such as `math.max` are resolved when the script is loaded instead of when the script is executed. - -This optimization relies on being able to predict the shape of the environment table for a given function; this is possible due to global sandboxing, however this optimization is invalid in some cases: - -- `loadstring` can load additional code that runs in context of the caller's environment -- `getfenv`/`setfenv` can directly modify the environment of any function - -The use of any of these functions performs a dynamic deoptimization, marking the affected environment as "impure". The optimizations are only in effect on functions with "pure" environments - because of this, the use of `loadstring`/`getfenv`/`setfenv` is not recommended. Note that `getfenv` deoptimizes the environment even if it's only used to read values from the environment. - -> Note: Luau still supports these functions as part of our backwards compatibility promise, although we'd love to switch to Lua 5.2's `_ENV` as that mechanism is cleaner and doesn't require costly dynamic deoptimization. - -## Fast method calls - -Luau specializes method calls to improve their performance through a combination of compiler, VM and binding optimizations. Compiler emits a specialized instruction sequence when methods are called through `obj:Method` syntax (while this isn't idiomatic anyway, you should avoid `obj.Method(obj)`). When the object in question is a Lua table, VM performs some voodoo magic based on inline caching to try to quickly discover the implementation of this method through the metatable. - -For this to be effective, it's crucial that `__index` in a metatable points to a table directly. For performance reasons it's strongly recommended to avoid `__index` functions as well as deep `__index` chains; an ideal object in Luau is a table with a metatable that points to itself through `__index`. - -When the object in question is a reflected userdata, a special mechanism called "namecall" is used to minimize the interop cost. In classical Lua binding model, `obj:Method` is called in two steps, retrieving the function object (`obj.Method`) and calling it; both steps are often implemented in C++, and the method retrieval needs to use a method object cache - all of this makes method calls slow. - -Luau can directly call the method by name using the "namecall" extension, and an optimized reflection layer can retrieve the correct method quickly through more voodoo magic based on string interning and custom Luau features that aren't exposed through Luau scripts. - -As a result of both optimizations, common Lua tricks of caching the method in a local variable aren't very productive in Luau and aren't recommended either. - -## Specialized builtin function calls - -Due to global sandboxing and the ability to dynamically deoptimize code running in impure environments, in pure environments we go beyond optimizing the interpreter and optimize many built-in functions through a "fastcall" mechanism. - -For this mechanism to work, function call must be "obvious" to the compiler - it needs to call a builtin function directly, e.g. `math.max(x, 1)`, although it also works if the function is "localized" (`local max = math.max`); this mechanism doesn't work for indirect function calls unless they were inlined during compilation, and doesn't work for method calls (so calling `string.byte` is more efficient than `s:byte`). - -The mechanism works by directly invoking a highly specialized and optimized implementation of a builtin function from the interpreter core loop without setting up a stack frame and omitting other work; additionally, some fastcall specializations are partial in that they don't support all types of arguments, for example all `math` library builtins are only specialized for numeric arguments, so calling `math.abs` with a string argument will fall back to the slower implementation that will do string->number coercion. - -As a result, builtin calls are very fast in Luau - they are still slightly slower than core instructions such as arithmetic operations, but only slightly so. The set of fastcall builtins is slowly expanding over time and as of this writing contains `assert`, `type`, `typeof`, `rawget`/`rawset`/`rawequal`, `getmetatable`/`setmetatable`, `tonumber`/`tostring`, all functions from `math` (except `noise` and `random`/`randomseed`) and `bit32`, and some functions from `string` and `table` library. - -Some builtin functions have partial specializations that reduce the cost of the common case further. Notably: - -- `assert` is specialized for cases when the assertion return value is not used and the condition is truthy; this helps reduce the runtime cost of assertions to the extent possible -- `bit32.extract` is optimized further when field and width selectors are constant -- `select` is optimized when the second argument is `...`; in particular, `select(x, ...)` is O(1) when using the builtin dispatch mechanism even though it's normally O(N) in variadic argument count. - -Some functions from `math` library like `math.floor` can additionally take advantage of advanced SIMD instruction sets like SSE4.1 when available. - -In addition to runtime optimizations for builtin calls, many builtin calls, as well as constants like `math.pi`/`math.huge`, can also be constant-folded by the bytecode compiler when using aggressive optimizations (level 2); this currently applies to most builtin calls with constant arguments and a single return value. For builtin calls that can not be constant folded, compiler assumes knowledge of argument/return count (level 2) to produce more efficient bytecode instructions. - -## Optimized table iteration - -Luau implements a fully generic iteration protocol; however, for iteration through tables in addition to generalized iteration (`for .. in t`) it recognizes three common idioms (`for .. in ipairs(t)`, `for .. in pairs(t)` and `for .. in next, t`) and emits specialized bytecode that is carefully optimized using custom internal iterators. - -As a result, iteration through tables typically doesn't result in function calls for every iteration; the performance of iteration using generalized iteration, `pairs` and `ipairs` is comparable, so generalized iteration (without the use of `pairs`/`ipairs`) is recommended unless the code needs to be compatible with vanilla Lua or the specific semantics of `ipairs` (which stops at the first `nil` element) is required. Additionally, using generalized iteration avoids calling `pairs` when the loop starts which can be noticeable when the table is very short. - -Iterating through array-like tables using `for i=1,#t` tends to be slightly slower because of extra cost incurred when reading elements from the table. - -## Optimized table length - -Luau tables use a hybrid array/hash storage, like in Lua; in some sense "arrays" don't truly exist and are an internal optimization, but some operations, notably `#t` and functions that depend on it, like `table.insert`, are defined by the Luau/Lua language to allow internal optimizations. Luau takes advantage of that fact. - -Unlike Lua, Luau guarantees that the element at index `#t` is stored in the array part of the table. This can accelerate various table operations that use indices limited by `#t`, and this makes `#t` worst-case complexity O(logN), unlike Lua where the worst case complexity is O(N). This also accelerates computation of this value for small tables like `{ [1] = 1 }` since we never need to look at the hash part. - -The "default" implementation of `#t` in both Lua and Luau is a binary search. Luau uses a special branch-free (depending on the compiler...) implementation of the binary search which results in 50+% faster computation of table length when it needs to be computed from scratch. - -Additionally, Luau can cache the length of the table and adjust it following operations like `table.insert`/`table.remove`; this means that in practice, `#t` is almost always a constant time operation. - -## Creating and modifying tables - -Luau implements several optimizations for table creation. When creating object-like tables, it's recommended to use table literals (`{ ... }`) and to specify all table fields in the literal in one go instead of assigning fields later; this triggers an optimization inspired by LuaJIT's "table templates" and results in higher performance when creating objects. When creating array-like tables, if the maximum size of the table is known up front, it's recommended to use `table.create` function which can create an empty table with preallocated storage, and optionally fill it with a given value. - -When the exact table shape isn't known, Luau compiler can still predict the table capacity required in case the table is initialized with an empty literal (`{}`) and filled with fields subsequently. For example, the following code creates a correctly sized table implicitly: - -```lua -local v = {} -v.x = 1 -v.y = 2 -v.z = 3 -return v -``` - -When appending elements to tables, it's recommended to use `table.insert` (which is the fastest method to append an element to a table if the table size is not known). In cases when a table is filled sequentially, however, it can be more efficient to use a known index for insertion - together with preallocating tables using `table.create` this can result in much faster code, for example this is the fastest way to build a table of squares: - -```lua -local t = table.create(N) - -for i=1,N do - t[i] = i * i -end -``` - -## Native vector math - -Luau uses tagged value storage - each value contains a type tag and the data that represents the value of a given type. Because of the need to store 64-bit double precision numbers *and* 64-bit pointers, we don't use NaN tagging and have to pay the cost of 16 bytes per value. - -We take advantage of this to provide a native value type that can store a 32-bit floating point vector with 3 components. This type is fundamental to game computations and as such it's important to optimize the storage and the operations with that type - our VM implements first class support for all math operations and component manipulation, which essentially means we have native 3-wide SIMD support. For code that uses many vector values this results in significantly smaller GC pressure and significantly faster execution, and gives programmers a mechanism to hand-vectorize numeric code if need be. - -## Optimized upvalue storage - -Lua implements upvalues as garbage collected objects that can point directly at the thread's stack or, when the value leaves the stack frame (and is "closed"), store the value inside the object. This representation is necessary when upvalues are mutated, but inefficient when they aren't - and 90% or more of upvalues aren't mutated in typical Lua code. Luau takes advantage of this by reworking upvalue storage to prioritize immutable upvalues - capturing upvalues that don't change doesn't require extra allocations or upvalue closing, resulting in faster closure allocation, faster execution, faster garbage collection and faster upvalue access due to better memory locality. - -Note that "immutable" in this case only refers to the variable itself - if the variable isn't assigned to it can be captured by value, even if it's a table that has its contents change. - -When upvalues are mutable, they do require an extra allocated object; we carefully optimize the memory consumption and access cost for mutable upvalues to reduce the associated overhead. - -## Closure caching - -With optimized upvalue storage, creating new closures (function objects) is more efficient but still requires allocating a new object every time. This can be problematic for cases when functions are passed to algorithms like `table.sort` or functions like `pcall`, as it results in excessive allocation traffic which then leads to more work for garbage collector. - -To make closure creation cheaper, Luau compiler implements closure caching - when multiple executions of the same function expression are guaranteed to result in the function object that is semantically identical, the compiler may cache the closure and always return the same object. This changes the function identity which may affect code that uses function objects as table keys, but preserves the calling semantics - compiler will only do this if calling the original (cached) function behaves the same way as a newly created function would. The heuristics used for this optimization are subject to change; currently, the compiler will cache closures that have no upvalues, or all upvalues are immutable (see previous section) and are declared at the module scope, as the module scope is (almost always) evaluated only once. - -## Fast memory allocator - -Similarly to LuaJIT, but unlike vanilla Lua, Luau implements a custom allocator that is highly specialized and tuned to the common allocation workloads we see. The allocator design is inspired by classic pool allocators as well as the excellent `mimalloc`, but through careful domain-specific tuning it beats all general purpose allocators we've tested, including `rpmalloc`, `mimalloc`, `jemalloc`, `ptmalloc` and `tcmalloc`. - -This doesn't mean that memory allocation in Luau is free - it's carefully optimized, but it still carries a cost, and a high rate of allocations requires more work from the garbage collector. The garbage collector is incremental, so short of some edge cases this rarely results in visible GC pauses, but can impact the throughput since scripts will interrupt to perform "GC assists" (helping clean up the garbage). Thus for high performance Luau code it's recommended to avoid allocating memory in tight loops, by avoiding temporary table and userdata creation. - -In addition to a fast allocator, all frequently used structures in Luau have been optimized for memory consumption, especially on 64-bit platforms, compared to Lua 5.1 baseline. This helps to reduce heap memory footprint and improve performance in some cases by reducing the memory bandwidth impact of garbage collection. - -## Optimized libraries - -While the best performing code in Luau spends most of the time in the interpreter, performance of the standard library functions is critical to some applications. In addition to specializing many small and simple functions using the builtin call mechanism, we spend extra care on optimizing all library functions and providing additional functions beyond the Lua standard library that help achieve good performance with idiomatic code. - -For example, functions like `insert`, `remove` and `move` from the `table` library have been tuned for performance on array-like tables, achieving 3x and more performance compared to un-tuned versions, and Luau provides functions like `table.create` and `table.find` to achieve further speedup when applicable. We also use a carefully tuned dynamic string buffer implementation for internal `string` library to reduce garbage created during string manipulation. - -In addition to the array-like specializations mentioned above, our implementation of `table.sort` is using `introsort` algorithm which results in guaranteed worst case `NlogN` complexity regardless of the input. - -## Improved garbage collector pacing - -Luau uses an incremental garbage collector which does a little bit of work every so often, and at no point does it stop the world to traverse the entire heap. The runtime will make sure that the collector runs interspersed with the program execution as the program allocates additional memory, which is known as "garbage collection assists", and can also run in response to explicit garbage collection invocation via `lua_gc`. In interactive environments such as video game engines it's possible, and even desirable, to request garbage collection every frame to make sure assists are minimized, since that allows scheduling the garbage collection to run concurrently with other engine processing that doesn't involve script execution. - -Inspired by excellent work by Austin Clements on Go's garbage collector pacer, we've implemented a pacing algorithm that uses a proportional–integral–derivative controller to estimate internal garbage collector tunables to reach a target heap size, defined as a percentage of the live heap data (which is more intuitive and actionable than Lua 5.x "GC pause" setting). Luau runtime also estimates the allocation rate making it easy (given uniform allocation rates) to adjust the per-frame garbage collection requests to do most of the required GC work outside of script execution. - -## Reduced garbage collector pauses - -While Luau uses an incremental garbage collector, once per each collector cycle it runs a so-called "atomic" step. While all other GC steps can do very little work by only looking at a few objects at a given time, which means that the collector can have arbitrarily short pauses, the "atomic" step needs to traverse some amount of data that, in some cases, may scale with the application heap. Since atomic step is indivisible, it can result in occasional pauses on the order of tens of milliseconds, which is problematic for interactive applications. We've implemented a series of optimizations to help reduce the atomic step. - -Normally objects that have been modified after the GC marked them in an incremental mark phase need to be rescanned during atomic phase, so frequent modifications of existing tables may result in a slow atomic step. To address this, we run a "remark" step where we traverse objects that have been modified after being marked once more (incrementally); additionally, the write barrier that triggers for object modifications changes the transition logic during remark phase to reduce the probability that the object will need to be rescanned. - -Another source of scalability challenges is coroutines. Writes to coroutine stacks don't use a write barrier, since that's prohibitively expensive as they are too frequent. This means that coroutine stacks need to be traversed during atomic step, so applications with many coroutines suffer large atomic pauses. To address this, we implement incremental marking of coroutines: marking a coroutine makes it "inactive" and resuming a coroutine (or pushing extra objects on the coroutine stack via C API) makes it "active". Atomic step only needs to traverse active coroutines again, which reduces the cost of atomic step by effectively making coroutine collection incremental as well. - -While large tables can be a problem for incremental GC in general since currently marking a single object is indivisible, large weak tables are a unique challenge because they also need to be processed during atomic phase, and the main use case for weak tables - object caches - may result in tables with large capacity but few live objects in long-running applications that exhibit bursts of activity. To address this, weak tables in Luau can be marked as "shrinkable" by including `s` as part of `__mode` string, which results in weak tables being resized to the optimal capacity during GC. This option may result in missing keys during table iteration if the table is resized while iteration is in progress and as such is only recommended for use in specific circumstances. - -## Optimized garbage collector sweeping - -The incremental garbage collector in Luau runs three phases for each cycle: mark, atomic and sweep. Mark incrementally traverses all live objects, atomic finishes various operations that need to happen without mutator intervention (see previous section), and sweep traverses all objects in the heap, reclaiming memory used by dead objects and performing minor fixup for live objects. While objects allocated during the mark phase are traversed in the same cycle and thus may get reclaimed, objects allocated during the sweep phase are considered live. Because of this, the faster the sweep phase completes, the less garbage will accumulate; and, of course, the less time sweeping takes the less overhead there is from this phase of garbage collection on the process. - -Since sweeping traverses the whole heap, we maximize the efficiency of this traversal by allocating garbage-collected objects of the same size in 16 KB pages, and traversing each page at a time, which is otherwise known as a paged sweeper. This ensures good locality of reference as consecutively swept objects are contiugous in memory, and allows us to spend no memory for each object on sweep-related data or allocation metadata, since paged sweeper doesn't need to be able to free objects without knowing which page they are in. Compared to linked list based sweeping that Lua/LuaJIT implement, paged sweeper is 2-3x faster, and saves 16 bytes per object on 64-bit platforms. - -## Function inlining and loop unrolling - -By default, the bytecode compiler performs a series of optimizations that result in faster execution of the code, but they preserve both execution semantics and debuggability. For example, a function call is compiled as a function call, which may be observable via `debug.traceback`; a loop is compiled as a loop, which may be observable via `lua_getlocal`. To help improve performance in cases where these restrictions can be relaxed, the bytecode compiler implements additional optimizations when optimization level 2 is enabled (which requires using `-O2` switch when using Luau CLI), namely function inlining and loop unrolling. - -Only loops with loop bounds known at compile time, such as `for i=1,4 do`, can be unrolled. The loop body must be simple enough for the optimization to be profitable; compiler uses heuristics to estimate the performance benefit and automatically decide if unrolling should be performed. - -Only local functions (defined either as `local function foo` or `local foo = function`) can be inlined. The function body must be simple enough for the optimization to be profitable; compiler uses heuristics to estimate the performance benefit and automatically decide if each call to the function should be inlined instead. Additionally recursive invocations of a function can’t be inlined at this time, and inlining is completely disabled for modules that use `getfenv`/`setfenv` functions. - -In both cases, in addition to removing the overhead associated with function calls or loop iteration, these optimizations can additionally benefit by enabling additional optimizations, such as constant folding of expressions dependent on loop iteration variable or constant function arguments, or using more efficient instructions for certain expressions when the inputs to these instructions are constants. diff --git a/docs/_pages/profile.md b/docs/_pages/profile.md deleted file mode 100644 index be056841..00000000 --- a/docs/_pages/profile.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -permalink: /profile -title: Profiling -toc: true ---- - -One of main goals of Luau is to enable high performance code. To help with that goal, we are relentlessly optimizing the compiler and runtime - but ultimately, performance of their -code is in developers' hands, and is a combination of good algorithm design and implementation that adheres to the strengths of the language. To help write efficient code, Luau -provides a built-in profiler that samples the execution of the program and outputs a profiler dump that can be converted to an interactive flamegraph. - -To run the profiler, make sure you have an optimized build of the interpreter (otherwise profiling results are going to be very skewed) and run it with `--profile` argument: - -``` -$ luau --profile tests/chess.lua -OK 8902 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 -OK 2039 r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 0 -OK 2812 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 0 -OK 9467 r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1 -OK 1486 rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8 -OK 2079 r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 10 -Profiler dump written to profile.out (total runtime 2.034 seconds, 20344 samples, 374 stacks) -GC: 0.378 seconds (18.58%), mark 46.80%, remark 3.33%, atomic 1.93%, sweepstring 6.77%, sweep 41.16% -``` - -The resulting `profile.out` file can be converted to an SVG file by running `perfgraph.py` script that is part of Luau repository: - -``` -$ python tools/perfgraph.py profile.out >profile.svg -``` - -This produces an SVG file that can be opened in a browser (the image below is clickable): - -[![profile.svg](/assets/images/chess-profile.svg)](/assets/images/chess-profile.svg) - -In a flame graph visualization, the individual bars represent function calls, the width represents how much of the total program runtime they execute, and the nesting matches the call stack encountered during program execution. This is a fantastic visualization technique that allows you to hone in on the specific bottlenecks affecting -your program performance, optimize those exact bottlenecks, and then re-generate the profile data and visualizer, and look for the next set of true bottlenecks (if any). - -Hovering your mouse cursor over individual sections will display detailed function information in the status bar and in a tooltip. If you want to Search for a specific named -function, use the Search field in the upper right, or press Ctrl+F. - -Notice that some of the bars in the screenshot don't have any text. In some cases, there isn't enough room in the size of the bar to display the name. -You can hover your mouse over those bars to see the name and source location of the function in the tool tip, or double-click to zoom in on that part of the flame graph. - -Some tooltips will have a source location for the function you're hovering over, but no name. Those are anonymous functions, or functions that were not declared in a way that -allows Luau compiler to track the name. To fill in more names, you may want to make these changes to your code: - -`local myFunc = function() --[[ work ]] end` -> `local function myFunc() --[[ work ]] end` - -Even without these changes, you can hover over a given bar with no visible name and see it's source location. - -As any sampling profiler, this profiler relies on gathering enough information for the resulting output to be statistically meaningful. It may miss short functions if they -aren't called often enough. By default the profiler runs at 10 kHz, this can be customized by passing a different parameter to `--profile=`. Note that higher -frequencies result in higher profiling overhead and longer program execution, potentially skewing the results. - -This profiler doesn't track leaf C functions and instead attributes the time spent there to calling Luau functions. As a result, when thinking about why a given function is -slow, consider not just the work it does immediately but also the library functions it calls. - -This profiler tracks time consumed by Luau thread stacks; when a thread calls another thread via `coroutine.resume`, the time spent is not attributed to the parent thread that's -waiting for resume results. This limitation will be removed in the future. diff --git a/docs/_pages/sandbox.md b/docs/_pages/sandbox.md deleted file mode 100644 index a7ed7476..00000000 --- a/docs/_pages/sandbox.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -permalink: /sandbox -title: Sandboxing -toc: true ---- - -Luau is safe to embed. Broadly speaking, this means that even in the face of untrusted (and in Roblox case, actively malicious) code, the language and the standard library don't allow unsafe access to the underlying system, and don't have known bugs that allow escaping out of the sandbox (e.g. to gain native code execution through ROP gadgets et al). Additionally, the VM provides extra features to implement isolation of privileged code from unprivileged code and protect one from the other; this is important if the embedding environment decides to expose some APIs that may not be safe to call from untrusted code, for example because they do provide controlled access to the underlying system or risk PII exposure through fingerprinting etc. - -This safety is achieved through a combination of removing features from the standard library that are unsafe, adding features to the VM that make it possible to implement sandboxing and isolation, and making sure the implementation is safe from memory safety issues using fuzzing. - -Of course, since the entire stack is implemented in C++, the sandboxing isn't formally proven - in theory, compiler or the standard library can have exploitable vulnerabilities. In practice these are very rare and usually found and fixed quickly. While implementing the stack in a safer language such as Rust would make it easier to provide these guarantees, to our knowledge (based on prior art) this would make it difficult to reach the level of performance required. - -## Library - -Parts of the Lua 5.x standard library are unsafe. Some of the functions provide access to the host operating system, including process execution and file reads. Some functions lack sufficient memory safety checks. Some functions are safe if all code is untrusted, but can break the isolation barrier between trusted and untrusted code. - -The following libraries and global functions have been removed as a result: - -- `io.` library has been removed entirely, as it gives access to files and allows running processes -- `package.` library has been removed entirely, as it gives access to files and allows loading native modules -- `os.` library has been cleaned up from file and environment access functions (`execute`, `exit`, etc.). The only supported functions in the library are `clock`, `date`, `difftime` and `time`. -- `debug.` library has been removed to a large extent, as it has functions that aren't memory safe and other functions break isolation; the only supported functions are `traceback` and `info` (which is similar to `debug.getinfo` but has a slightly different interface). -- `dofile` and `loadfile` allowed access to file system and have been removed. - -To achieve memory safety, access to function bytecode has been removed. Bytecode is hard to validate and using untrusted bytecode may lead to exploits. Thus, `loadstring` doesn't work with bytecode inputs, and `string.dump`/`load` have been removed as they aren't necessary anymore. When embedding Luau, bytecode should be encrypted/signed to prevent MITM attacks as well, as the VM assumes that the bytecode was generated by the Luau compiler (which never produces invalid/unsafe bytecode). - -Finally, to make isolation possible within the same VM, the following global functions have reduced functionality: - -- `collectgarbage` only works with `"count"` argument, as modifying the state of GC can interfere with the expectations of other code running in the process. As such, `collectgarbage()` became an inferior version of `gcinfo()` and is deprecated. -- `newproxy` only works with `true`/`false`/`nil` arguments. -- `module` allowed overriding global packages and was removed as a result. - -> Note: `getfenv`/`setfenv` result in additional isolation challenges, as they allow injecting globals into scripts on the call stack. Ideally, these should be disabled as well, but unfortunately Roblox community relies on these for various reasons. This can be mitigated by limiting interaction between trusted and untrusted code, and/or using separate VMs. - -## Environment - -The modification to the library functions are sufficient to make embedding safe, but aren't sufficient to provide isolation within the same VM. It should be noted that to achieve guaranteed isolation, it's advisable to load trusted and untrusted code into separate VMs; however, even within the same VM Luau provides additional safety features to make isolation cheaper. - -When initializing the default globals table, the tables are protected from modification: - -- All libraries (`string`, `math`, etc.) are marked as readonly -- The string metatable is marked as readonly -- The global table itself is marked as readonly - -This is using the VM feature that is not accessible from scripts, that prevents all writes to the table, including assignments, `rawset` and `setmetatable`. This makes sure that globals can't be monkey-patched in place, and can only be substituted through `setfenv`. - -By itself this would mean that code that runs in Luau can't use globals at all, since assigning globals would fail. While this is feasible, in Roblox we solve this by creating a new global table for each script, that uses `__index` to point to the builtin global table. This safely sandboxes the builtin globals while still allowing writing globals from each script. This also means that short of exposing special shared globals from the host, all scripts are isolated from each other. - -## `__gc` - -Lua 5.1 exposes a `__gc` metamethod for userdata, which can be used on proxies (`newproxy`) to hook into garbage collector. Later versions of Lua extend this mechanism to work on tables. - -This mechanism is bad for performance, memory safety and isolation: - -- In Lua 5.1, `__gc` support requires traversing userdata lists redundantly during garbage collection to filter out finalizable objects -- In later versions of Lua, userdata that implement `__gc` are split into separate lists; however, finalization prolongs the lifetime of the finalized objects which results in less prompt memory reclamation, and two-step destruction results in extra cache misses for userdata -- `__gc` runs during garbage collection in context of an arbitrary thread which makes the thread identity mechanism used in Roblox to support trusted Luau code invalid -- Objects can be removed from weak tables *after* being finalized, which means that accessing these objects can result in memory safety bugs, unless all exposed userdata methods guard against use-after-gc. -- If `__gc` method ever leaks to scripts, they can call it directly on an object and use any method exposed by that object after that. This means that `__gc` and all other exposed methods must support memory safety when called on a destroyed object. - -Because of these issues, Luau does not support `__gc`. Instead it uses tag-based destructors that can perform additional memory cleanup during userdata destruction; crucially, these are only available to the host (so they can never be invoked manually), and they run right before freeing the userdata memory block which is both optimal for performance, and guaranteed to be memory safe. - -For monitoring garbage collector behavior the recommendation is to use weak tables instead. - -## Interrupts - -In addition to preventing API access, it can be important for isolation to limit the memory and CPU usage of code that runs inside the VM. - -By default, no memory limits are imposed on the running code, so it's possible to exhaust the address space of the host; this is easy to configure from the host for Luau allocations, but of course with a rich API surface exposed by the host it's hard to eliminate this as a possibility. Memory exhaustion doesn't result in memory safety issues or any particular risk to the system that's running the host process, other than the host process getting terminated by the OS. - -Limiting CPU usage can be equally challenging with a rich API. However, Luau does provide a VM-level feature to try to contain runaway scripts which makes it possible to terminate any script externally. This works through a global interrupt mechanism, where the host can setup an interrupt handler at any point, and any Luau code is guaranteed to call this handler "eventually" (in practice this can happen at any function call or at any loop iteration). This still leaves the possibility of a very long running script open if the script manages to find a way to call a single C function that takes a lot of time, but short of that the interruption is very prompt. - -Roblox sets up the interrupt handler using a watchdog that: - -- Limits the runtime of any script in Studio to 10 seconds (configurable through Studio settings) -- Upon client shutdown, interrupts execution of every running script 1 second after shutdown diff --git a/docs/_pages/syntax.md b/docs/_pages/syntax.md deleted file mode 100644 index 42fbf897..00000000 --- a/docs/_pages/syntax.md +++ /dev/null @@ -1,281 +0,0 @@ ---- -permalink: /syntax -title: Syntax -toc: true ---- - -Luau uses the baseline [syntax of Lua 5.1](https://www.lua.org/manual/5.1/manual.html#2). For detailed documentation, please refer to the Lua manual, this is an example: - -```lua -local function tree_insert(tree, x) - local lower, equal, greater = split(tree.root, x) - if not equal then - equal = { - x = x, - y = math.random(0, 2^31-1), - left = nil, - right = nil - } - end - tree.root = merge3(lower, equal, greater) -end -``` - -Note that future versions of Lua extend the Lua 5.1 syntax with more features; Luau does support string literal extensions but does not support other 5.x additions; for details please refer to [compatibility section](compatibility). - -The rest of this document documents additional syntax used in Luau. - -## String literals - -Luau implements support for hexadecimal (`\x`), Unicode (`\u`) and `\z` escapes for string literals. This syntax follows [Lua 5.3 syntax](https://www.lua.org/manual/5.3/manual.html#3.1): - -- `\xAB` inserts a character with the code 0xAB into the string -- `\u{ABC}` inserts a UTF8 byte sequence that encodes U+0ABC character into the string (note that braces are mandatory) -- `\z` at the end of the line inside a string literal ignores all following whitespace including newlines, which can be helpful for breaking long literals into multiple lines. - -## Number literals - -In addition to basic integer and floating-point decimal numbers, Luau supports: - -- Hexadecimal integer literals, `0xABC` or `0XABC` -- Binary integer literals, `0b01010101` or `0B01010101` -- Decimal separators in all integer literals, using `_` for readability: `1_048_576`, `0xFFFF_FFFF`, `0b_0101_0101` - -Note that Luau only has a single number type, a 64-bit IEEE754 double precision number (which can represent integers up to 2^53 exactly), and larger integer literals are stored with precision loss. - -## Continue statement - -In addition to `break` in all loops, Luau supports `continue` statement. Similar to `break`, `continue` must be the last statement in the block. - -Note that unlike `break`, `continue` is not a keyword. This is required to preserve backwards compatibility with existing code; so this is a `continue` statement: - -```lua -if x < 0 then - continue -end -``` - -Whereas this is a function call: - -```lua -if x < 0 then - continue() -end -``` - -When used in `repeat..until` loops, `continue` can not skip the declaration of a local variable if that local variable is used in the loop condition; code like this is invalid and won't compile: - -```lua -repeat - do continue end - local a = 5 -until a > 0 -``` - -## Compound assignments - -Luau supports compound assignments with the following operators: `+=`, `-=`, `*=`, `/=`, `%=`, `^=`, `..=`. Just like regular assignments, compound assignments are statements, not expressions: - -```lua --- this works -a += 1 - --- this doesn't work -print(a += 1) -``` - -Compound assignments only support a single value on the left and right hand side; additionally, the function calls on the left hand side are only evaluated once: - -```lua --- calls foo() twice -a[foo()] = a[foo()] + 1 - --- calls foo() once -a[foo()] += 1 -``` - -Compound assignments call the arithmetic metamethods (`__add` et al) and table indexing metamethods (`__index` and `__newindex`) as needed - for custom types no extra effort is necessary to support them. - -## Type annotations - -To support gradual typing, Luau supports optional type annotations for variables and functions, as well as declaring type aliases. - -Types can be declared for local variables, function arguments and function return types using `:` as a separator: - -```lua -function foo(x: number, y: string): boolean - local k: string = y:rep(x) - return k == "a" -end -``` - -In addition, the type of any expression can be overridden using a type cast `::`: - -```lua -local k = (y :: string):rep(x) -``` - -There are several simple builtin types: `any` (represents inability of the type checker to reason about the type), `nil`, `boolean`, `number`, `string` and `thread`. - -Function types are specified using the arguments and return types, separated with `->`: - -```lua -local foo: (number, string) -> boolean -``` - -To return no values or more than one, you need to wrap the return type position with parentheses, and then list your types there. - -```lua -local no_returns: (number, string) -> () -local returns_boolean_and_string: (number, string) -> (boolean, string) - -function foo(x: number, y: number): (number, string) - return x + y, tostring(x) .. tostring(y) -end -``` - -Note that function types are specified without the argument names in the examples above, but it's also possible to specify the names (that are not semantically significant but can show up in documentation and autocomplete): - -```lua -local callback: (errorCode: number, errorText: string) -> () -``` - -Table types are specified using the table literal syntax, using `:` to separate keys from values: - -```lua -local array: { [number] : string } -local object: { x: number, y: string } -``` - -When the table consists of values keyed by numbers, it's called an array-like table and has a special short-hand syntax, `{T}` (e.g. `{string}`). - -Additionally, the type syntax supports type intersections (`((number) -> string) & ((boolean) -> string)`) and unions (`(number | boolean) -> string`). An intersection represents a type with values that conform to both sides at the same time, which is useful for overloaded functions; a union represents a type that can store values of either type - `any` is technically a union of all possible types. - -It's common in Lua for function arguments or other values to store either a value of a given type or `nil`; this is represented as a union (`number | nil`), but can be specified using `?` as a shorthand syntax (`number?`). - -In addition to declaring types for a given value, Luau supports declaring type aliases via `type` syntax: - -```lua -type Point = { x: number, y: number } -type Array = { [number]: T } -type Something = typeof(string.gmatch("", "%d")) -``` - -The right hand side of the type alias can be a type definition or a `typeof` expression; `typeof` expression doesn't evaluate its argument at runtime. - -By default type aliases are local to the file they are declared in. To be able to use type aliases in other modules using `require`, they need to be exported: - -```lua -export type Point = { x: number, y: number } -``` - -An exported type can be used in another module by prefixing its name with the require alias that you used to import the module. - -```lua -local M = require(Other.Module) - -local a: M.Point = {x=5, y=6} -``` - -For more information please refer to [typechecking documentation](typecheck). - -## If-then-else expressions - -In addition to supporting standard if *statements*, Luau adds support for if *expressions*. Syntactically, `if-then-else` expressions look very similar to if statements. However instead of conditionally executing blocks of code, if expressions conditionally evaluate expressions and return the value produced as a result. Also, unlike if statements, if expressions do not terminate with the `end` keyword. - -Here is a simple example of an `if-then-else` expression: -```lua -local maxValue = if a > b then a else b -``` - -`if-then-else` expressions may occur in any place a regular expression is used. The `if-then-else` expression must match `if then else `; it can also contain an arbitrary number of `elseif` clauses, like `if then elseif then else `. Note that in either case, `else` is mandatory. - -Here's is an example demonstrating `elseif`: -```lua -local sign = if x < 0 then -1 elseif x > 0 then 1 else 0 -``` - -**Note:** In Luau, the `if-then-else` expression is preferred vs the standard Lua idiom of writing `a and b or c` (which roughly simulates a ternary operator). However, the Lua idiom may return an unexpected result if `b` evaluates to false. The `if-then-else` expression will behave as expected in all situations. - -## Generalized iteration - -Luau uses the standard Lua syntax for iterating through containers, `for vars in values`, but extends the semantics with support for generalized iteration. In Lua, to iterate over a table you need to use an iterator like `next` or a function that returns one like `pairs` or `ipairs`. In Luau, you can simply iterate over a table: - -```lua -for k, v in {1, 4, 9} do - assert(k * k == v) -end -``` - -This works for tables but can also be extended for tables or userdata by implementing `__iter` metamethod that is called before the iteration begins, and should return an iterator function like `next` (or a custom one): - -```lua -local obj = { items = {1, 4, 9} } -setmetatable(obj, { __iter = function(o) return next, o.items end }) - -for k, v in obj do - assert(k * k == v) -end -``` - -The default iteration order for tables is specified to be consecutive for elements `1..#t` and unordered after that, visiting every element; similarly to iteration using `pairs`, modifying the table entries for keys other than the current one results in unspecified behavior. - -## String interpolation - -Luau adds an additional way to define string values that allows you to place runtime expressions directly inside specific spots of the literal. - -This is a more ergonomic alternative over using `string.format` or `("literal"):format`. - -To use string interpolation, use a backtick string literal: - -```lua -local count = 3 -print(`Bob has {count} apple(s)!`) ---> Bob has 3 apple(s)! -``` - -Any expression can be used inside `{}`: - -```lua -local combos = {2, 7, 1, 8, 5} -print(`The lock combination is {table.concat(combos)}.`) ---> The lock combination is 27185. -``` - -Inside backtick string literal, `\` is used to escape `` ` ``, `{`, `\` itself and a newline: - -```lua -print(`Some example escaping the braces \{like so}`) ---> Some example escaping the braces {like so} - -print(`Backslash \ that escapes the space is not a part of the string...`) ---> Backslash that escapes the space is not a part of the string... - -print(`Backslash \\ will escape the second backslash...`) ---> Backslash \ will escape the second backslash... - -print(`Some text that also includes \`...`) ---> Some text that also includes `... - -local name = "Luau" - -print(`Welcome to { - name -}!`) ---> Welcome to Luau! -``` - -### Restrictions and limitations - -The sequence of two opening braces {{"`{{`"}} is rejected with a parse error. -This restriction is made to prevent developers using other programming languages with a similar feature from trying to attempt that as a way to escape a single `{` and getting unexpected results in Luau. - -Luau currently does not support backtick string literals as a type annotation, so `` type Foo = `Foo` `` is invalid. - -Function calls with a backtick string literal without parenthesis is not supported, so `` print`hello` `` is invalid. - -## Floor division (`//`) - -Luau implements support for floor division operator (`//`) for numbers as well as support for `__idiv` metamethod. The syntax and semantics follow [Lua 5.3](https://www.lua.org/manual/5.3/manual.html#3.4.1). - -For numbers, `a // b` is equal to `math.floor(a / b)`; when `b` is 0, `a // b` results in infinity or NaN as appropriate. diff --git a/docs/_pages/typecheck.md b/docs/_pages/typecheck.md deleted file mode 100644 index 6c709bdd..00000000 --- a/docs/_pages/typecheck.md +++ /dev/null @@ -1,673 +0,0 @@ ---- -permalink: /typecheck -title: Type checking -toc: true ---- - -Luau supports a gradual type system through the use of type annotations and type inference. - -## Type inference modes - -There are three modes currently available. They must be annotated on the top few lines among the comments. - -* `--!nocheck`, -* `--!nonstrict` (default), and -* `--!strict` - -`nocheck` mode will simply not start the type inference engine whatsoever. - -As for the other two, they are largely similar but with one important difference: in nonstrict mode, we infer `any` for most of the types if we couldn't figure it out early enough. This means that given this snippet: - -```lua -local foo = 1 -``` - -We can infer `foo` to be of type `number`, whereas the `foo` in the snippet below is inferred `any`: - -```lua -local foo -foo = 1 -``` - -However, given the second snippet in strict mode, the type checker would be able to infer `number` for `foo`. - -## Structural type system - -Luau's type system is structural by default, which is to say that we inspect the shape of two tables to see if they are similar enough. This was the obvious choice because Lua 5.1 is inherently structural. - -```lua -type A = {x: number, y: number, z: number?} -type B = {x: number, y: number, z: number} - -local a1: A = {x = 1, y = 2} -- ok -local b1: B = {x = 1, y = 2, z = 3} -- ok - -local a2: A = b1 -- ok -local b2: B = a1 -- not ok -``` - -## Builtin types - -Lua VM supports 8 primitive types: `nil`, `string`, `number`, `boolean`, `table`, `function`, `thread`, and `userdata`. Of these, `table` and `function` are not represented by name, but have their dedicated syntax as covered in this [syntax document](syntax), and `userdata` is represented by [concrete types](#roblox-types); other types can be specified by their name. - -The type checker also provides the builtin types [`unknown`](#unknown-type), [`never`](#never-type), and [`any`](#any-type). - -```lua -local s = "foo" -local n = 1 -local b = true -local t = coroutine.running() - -local a: any = 1 -print(a.x) -- Type checker believes this to be ok, but crashes at runtime. -``` - -There's a special case where we intentionally avoid inferring `nil`. It's a good thing because it's never useful for a local variable to always be `nil`, thereby permitting you to assign things to it for Luau to infer that instead. - -```lua -local a -local b = nil -``` - -### `unknown` type - -`unknown` is also said to be the _top_ type, that is it's a union of all types. - -```lua -local a: unknown = "hello world!" -local b: unknown = 5 -local c: unknown = function() return 5 end -``` - -Unlike `any`, `unknown` will not allow itself to be used as a different type! - -```lua -local function unknown(): unknown - return if math.random() > 0.5 then "hello world!" else 5 -end - -local a: string = unknown() -- not ok -local b: number = unknown() -- not ok -local c: string | number = unknown() -- not ok -``` - -In order to turn a variable of type `unknown` into a different type, you must apply [type refinements](#type-refinements) on that variable. - -```lua -local x = unknown() -if typeof(x) == "number" then - -- x : number -end -``` - -### `never` type - -`never` is also said to be the _bottom_ type, meaning there doesn't exist a value that inhabits the type `never`. In fact, it is the _dual_ of `unknown`. `never` is useful in many scenarios, and one such use case is when type refinements proves it impossible: - -```lua -local x = unknown() -if typeof(x) == "number" and typeof(x) == "string" then - -- x : never -end -``` - -### `any` type - -`any` is just like `unknown`, except that it allows itself to be used as an arbitrary type without further checks or annotations. Essentially, it's an opt-out from the type system entirely. - -```lua -local x: any = 5 -local y: string = x -- no type errors here! -``` - -## Function types - -Let's start with something simple. - -```lua -local function f(x) return x end - -local a: number = f(1) -- ok -local b: string = f("foo") -- ok -local c: string = f(true) -- not ok -``` - -In strict mode, the inferred type of this function `f` is `(A) -> A` (take a look at [generics](#generics)), whereas in nonstrict we infer `(any) -> any`. We know this is true because `f` can take anything and then return that. If we used `x` with another concrete type, then we would end up inferring that. - -Similarly, we can infer the types of the parameters with ease. By passing a parameter into *anything* that also has a type, we are saying "this and that has the same type." - -```lua -local function greetingsHelper(name: string) - return "Hello, " .. name -end - -local function greetings(name) - return greetingsHelper(name) -end - -print(greetings("Alexander")) -- ok -print(greetings({name = "Alexander"})) -- not ok -``` - -## Table types - -From the type checker perspective, each table can be in one of three states. They are: `unsealed table`, `sealed table`, and `generic table`. This is intended to represent how the table's type is allowed to change. - -### Unsealed tables - -An unsealed table is a table which supports adding new properties, which updates the tables type. Unsealed tables are created using table literals. This is one way to accumulate knowledge of the shape of this table. - -```lua -local t = {x = 1} -- {x: number} -t.y = 2 -- {x: number, y: number} -t.z = 3 -- {x: number, y: number, z: number} -``` - -However, if this local were written as `local t: { x: number } = { x = 1 }`, it ends up sealing the table, so the two assignments henceforth will not be ok. - -Furthermore, once we exit the scope where this unsealed table was created in, we seal it. - -```lua -local function vec2(x, y) - local t = {} - t.x = x - t.y = y - return t -end - -local v2 = vec2(1, 2) -v2.z = 3 -- not ok -``` - -Unsealed tables are *exact* in that any property of the table must be named by the type. Since Luau treats missing properties as having value `nil`, this means that we can treat an unsealed table which does not mention a property as if it mentioned the property, as long as that property is optional. - -```lua -local t = {x = 1} -local u : { x : number, y : number? } = t -- ok because y is optional -local v : { x : number, z : number } = t -- not ok because z is not optional -``` - -### Sealed tables - -A sealed table is a table that is now locked down. This occurs when the table type is spelled out explicitly via a type annotation, or if it is returned from a function. - -```lua -local t : { x: number } = {x = 1} -t.y = 2 -- not ok -``` - -Sealed tables are *inexact* in that the table may have properties which are not mentioned in the type. -As a result, sealed tables support *width subtyping*, which allows a table with more properties to be used as a table with fewer - -```lua -type Point1D = { x : number } -type Point2D = { x : number, y : number } -local p : Point2D = { x = 5, y = 37 } -local q : Point1D = p -- ok because Point2D has more properties than Point1D -``` - -### Generic tables - -This typically occurs when the symbol does not have any annotated types or were not inferred anything concrete. In this case, when you index on a parameter, you're requesting that there is a table with a matching interface. - -```lua -local function f(t) - return t.x + t.y - --^ --^ {x: _, y: _} -end - -f({x = 1, y = 2}) -- ok -f({x = 1, y = 2, z = 3}) -- ok -f({x = 1}) -- not ok -``` - -## Table indexers - -These are particularly useful for when your table is used similarly to an array. - -```lua -local t = {"Hello", "world!"} -- {[number]: string} -print(table.concat(t, ", ")) -``` - -Luau supports a concise declaration for array-like tables, `{T}` (for example, `{string}` is equivalent to `{[number]: string}`); the more explicit definition of an indexer is still useful when the key isn't a number, or when the table has other fields like `{ [number]: string, n: number }`. - -## Generics - -The type inference engine was built from the ground up to recognize generics. A generic is simply a type parameter in which another type could be slotted in. It's extremely useful because it allows the type inference engine to remember what the type actually is, unlike `any`. - -```lua -type Pair = {first: T, second: T} - -local strings: Pair = {first="Hello", second="World"} -local numbers: Pair = {first=1, second=2} -``` - -## Generic functions - -As well as generic type aliases like `Pair`, Luau supports generic functions. These are functions that, as well as their regular data parameters, take type parameters. For example, a function which reverses an array is: -```lua -function reverse(a) - local result = {} - for i = #a, 1, -1 do - table.insert(result, a[i]) - end - return result -end -``` -The type of this function is that it can reverse an array, and return an array of the same type. Luau can infer this type, but if you want to be explicit, you can declare the type parameter `T`, for example: -```lua -function reverse(a: {T}): {T} - local result: {T} = {} - for i = #a, 1, -1 do - table.insert(result, a[i]) - end - return result -end -``` -When a generic function is called, Luau infers type arguments, for example -```lua -local x: {number} = reverse({1, 2, 3}) -local y: {string} = reverse({"a", "b", "c"}) -``` -Generic types are used for built-in functions as well as user functions, -for example the type of two-argument `table.insert` is: -```lua -({T}, T) -> () -``` - -## Union types - -A union type represents *one of* the types in this set. If you try to pass a union onto another thing that expects a *more specific* type, it will fail. - -For example, what if this `string | number` was passed into something that expects `number`, but the passed in value was actually a `string`? - -```lua -local stringOrNumber: string | number = "foo" - -local onlyString: string = stringOrNumber -- not ok -local onlyNumber: number = stringOrNumber -- not ok -``` - -Note: it's impossible to be able to call a function if there are two or more function types in this union. - -## Intersection types - -An intersection type represents *all of* the types in this set. It's useful for two main things: to join multiple tables together, or to specify overloadable functions. - -```lua -type XCoord = {x: number} -type YCoord = {y: number} -type ZCoord = {z: number} - -type Vector2 = XCoord & YCoord -type Vector3 = XCoord & YCoord & ZCoord - -local vec2: Vector2 = {x = 1, y = 2} -- ok -local vec3: Vector3 = {x = 1, y = 2, z = 3} -- ok -``` - -```lua -type SimpleOverloadedFunction = ((string) -> number) & ((number) -> string) - -local f: SimpleOverloadedFunction - -local r1: number = f("foo") -- ok -local r2: number = f(12345) -- not ok -local r3: string = f("foo") -- not ok -local r4: string = f(12345) -- ok -``` - -Note: it's impossible to create an intersection type of some primitive types, e.g. `string & number`, or `string & boolean`, or other variations thereof. - -Note: Luau still does not support user-defined overloaded functions. Some of Roblox and Lua 5.1 functions have different function signature, so inherently requires overloaded functions. - -## Singleton types (aka literal types) - -Luau's type system also supports singleton types, which means it's a type that represents one single value at runtime. At this time, both string and booleans are representable in types. - -> We do not currently support numbers as types. For now, this is intentional. - -```lua -local foo: "Foo" = "Foo" -- ok -local bar: "Bar" = foo -- not ok -local baz: string = foo -- ok - -local t: true = true -- ok -local f: false = false -- ok -``` - -This happens all the time, especially through [type refinements](#type-refinements) and is also incredibly useful when you want to enforce program invariants in the type system! See [tagged unions](#tagged-unions) for more information. - -## Variadic types - -Luau permits assigning a type to the `...` variadic symbol like any other parameter: - -```lua -local function f(...: number) -end - -f(1, 2, 3) -- ok -f(1, "string") -- not ok -``` - -`f` accepts any number of `number` values. - -In type annotations, this is written as `...T`: - -```lua -type F = (...number) -> ...string -``` - -## Type packs - -Multiple function return values as well as the function variadic parameter use a type pack to represent a list of types. - -When a type alias is defined, generic type pack parameters can be used after the type parameters: - -```lua -type Signal = { f: (T, U...) -> (), data: T } -``` - -> Keep in mind that `...T` is a variadic type pack (many elements of the same type `T`), while `U...` is a generic type pack that can contain zero or more types and they don't have to be the same. - -It is also possible for a generic function to reference a generic type pack from the generics list: - -```lua -local function call(s: Signal, ...: U...) - s.f(s.data, ...) -end -``` - -Generic types with type packs can be instantiated by providing a type pack: - -```lua -local signal: Signal = -- - -call(signal, 1, 2, false) -``` - -There are also other ways to instantiate types with generic type pack parameters: - -```lua -type A = (T) -> U... - -type B = A -- with a variadic type pack -type C = A -- with a generic type pack -type D = A -- with an empty type pack -``` - -Trailing type pack argument can also be provided without parentheses by specifying variadic type arguments: - -```lua -type List = (Head, Rest...) -> () - -type B = List -- Rest... is () -type C = List -- Rest is (string, boolean) - -type Returns = () -> T... - --- When there are no type parameters, the list can be left empty -type D = Returns<> -- T... is () -``` - -Type pack parameters are not limited to a single one, as many as required can be specified: - -```lua -type Callback = { f: (Args...) -> Rets... } - -type A = Callback<(number, string), ...number> -``` - -## Adding types for faux object oriented programs - -One common pattern we see with existing Lua/Luau code is the following OO code. While Luau is capable of inferring a decent chunk of this code, it cannot pin down on the types of `self` when it spans multiple methods. - -```lua -local Account = {} -Account.__index = Account - -function Account.new(name, balance) - local self = {} - self.name = name - self.balance = balance - - return setmetatable(self, Account) -end - --- The `self` type is different from the type returned by `Account.new` -function Account:deposit(credit) - self.balance += credit -end - --- The `self` type is different from the type returned by `Account.new` -function Account:withdraw(debit) - self.balance -= debit -end - -local account = Account.new("Alexander", 500) -``` - -For example, the type of `Account.new` is `(name: a, balance: b) -> { ..., name: a, balance: b, ... }` (snipping out the metatable). For better or worse, this means you are allowed to call `Account.new(5, "hello")` as well as `Account.new({}, {})`. In this case, this is quite unfortunate, so your first attempt may be to add type annotations to the parameters `name` and `balance`. - -There's the next problem: the type of `self` is not shared across methods of `Account`, this is because you are allowed to explicitly opt for a different value to pass as `self` by writing `account.deposit(another_account, 50)`. As a result, the type of `Account:deposit` is `(self: { balance: a }, credit: b) -> ()`. Consequently, Luau cannot infer the result of the `+` operation from `a` and `b`, so a type error is reported. - -We can see there's a lot of problems happening here. This is a case where you will have to guide Luau, but using the power of top-down type inference you only need to do this in _exactly one_ place! - -```lua -type AccountImpl = { - __index: AccountImpl, - new: (name: string, balance: number) -> Account, - deposit: (self: Account, credit: number) -> (), - withdraw: (self: Account, debit: number) -> (), -} - -type Account = typeof(setmetatable({} :: { name: string, balance: number }, {} :: AccountImpl)) - --- Only these two annotations are necessary -local Account: AccountImpl = {} :: AccountImpl -Account.__index = Account - --- Using the knowledge of `Account`, we can take in information of the `new` type from `AccountImpl`, so: --- Account.new :: (name: string, balance: number) -> Account -function Account.new(name, balance) - local self = {} - self.name = name - self.balance = balance - - return setmetatable(self, Account) -end - --- Ditto: --- Account:deposit :: (self: Account, credit: number) -> () -function Account:deposit(credit) - self.balance += credit -end - --- Ditto: --- Account:withdraw :: (self: Account, debit: number) -> () -function Account:withdraw(debit) - self.balance -= debit -end - -local account = Account.new("Alexander", 500) -``` - -## Tagged unions - -Tagged unions are just union types! In particular, they're union types of tables where they have at least _some_ common properties but the structure of the tables are different enough. Here's one example: - -```lua -type Ok = { type: "ok", value: T } -type Err = { type: "err", error: E } -type Result = Ok | Err -``` - -This `Result` type can be discriminated by using type refinements on the property `type`, like so: - -```lua -if result.type == "ok" then - -- result is known to be Ok - -- and attempting to index for error here will fail - print(result.value) -elseif result.type == "err" then - -- result is known to be Err - -- and attempting to index for value here will fail - print(result.error) -end -``` - -Which works out because `value: T` exists only when `type` is in actual fact `"ok"`, and `error: E` exists only when `type` is in actual fact `"err"`. - -## Type refinements - -When we check the type of any lvalue (a global, a local, or a property), what we're doing is we're refining the type, hence "type refinement." The support for this is arbitrarily complex, so go crazy! - -Here are all the ways you can refine: -1. Truthy test: `if x then` will refine `x` to be truthy. -2. Type guards: `if type(x) == "number" then` will refine `x` to be `number`. -3. Equality: `x == "hello"` will refine `x` to be a singleton type `"hello"`. - -And they can be composed with many of `and`/`or`/`not`. `not`, just like `~=`, will flip the resulting refinements, that is `not x` will refine `x` to be falsy. - -Using truthy test: -```lua -local maybeString: string? = nil - -if maybeString then - local onlyString: string = maybeString -- ok - local onlyNil: nil = maybeString -- not ok -end - -if not maybeString then - local onlyString: string = maybeString -- not ok - local onlyNil: nil = maybeString -- ok -end -``` - -Using `type` test: -```lua -local stringOrNumber: string | number = "foo" - -if type(stringOrNumber) == "string" then - local onlyString: string = stringOrNumber -- ok - local onlyNumber: number = stringOrNumber -- not ok -end - -if type(stringOrNumber) ~= "string" then - local onlyString: string = stringOrNumber -- not ok - local onlyNumber: number = stringOrNumber -- ok -end -``` - -Using equality test: -```lua -local myString: string = f() - -if myString == "hello" then - local hello: "hello" = myString -- ok because it is absolutely "hello"! - local copy: string = myString -- ok -end -``` - -And as said earlier, we can compose as many of `and`/`or`/`not` as we wish with these refinements: -```lua -local function f(x: any, y: any) - if (x == "hello" or x == "bye") and type(y) == "string" then - -- x is of type "hello" | "bye" - -- y is of type string - end - - if not (x ~= "hi") then - -- x is of type "hi" - end -end -``` - -`assert` can also be used to refine in all the same ways: -```lua -local stringOrNumber: string | number = "foo" - -assert(type(stringOrNumber) == "string") - -local onlyString: string = stringOrNumber -- ok -local onlyNumber: number = stringOrNumber -- not ok -``` - -## Type casts - -Expressions may be typecast using `::`. Typecasting is useful for specifying the type of an expression when the automatically inferred type is too generic. - -For example, consider the following table constructor where the intent is to store a table of names: -```lua -local myTable = {names = {}} -table.insert(myTable.names, 42) -- Inserting a number ought to cause a type error, but doesn't -``` - -In order to specify the type of the `names` table a typecast may be used: - -```lua -local myTable = {names = {} :: {string}} -table.insert(myTable.names, 42) -- not ok, invalid 'number' to 'string' conversion -``` - -A typecast itself is also type checked to ensure the conversion is made to a subtype of the expression's type or `any`: -```lua -local numericValue = 1 -local value = numericValue :: any -- ok, all expressions may be cast to 'any' -local flag = numericValue :: boolean -- not ok, invalid 'number' to 'boolean' conversion -``` - -## Roblox types - -Roblox supports a rich set of classes and data types, [documented here](https://developer.roblox.com/en-us/api-reference). All of them are readily available for the type checker to use by their name (e.g. `Part` or `RaycastResult`). - -When one type inherits from another type, the type checker models this relationship and allows to cast a subclass to the parent class implicitly, so you can pass a `Part` to a function that expects an `Instance`. - -All enums are also available to use by their name as part of the `Enum` type library, e.g. `local m: Enum.Material = part.Material`. - -Finally, we can automatically deduce what calls like `Instance.new` and `game:GetService` are supposed to return: - -```lua -local part = Instance.new("Part") -local basePart: BasePart = part -``` - -Note that many of these types provide some properties and methods in both lowerCase and UpperCase; the lowerCase variants are deprecated, and the type system will ask you to use the UpperCase variants instead. - -## Module interactions - -Let's say that we have two modules, `Foo` and `Bar`. Luau will try to resolve the paths if it can find any `require` in any scripts. In this case, when you say `script.Parent.Bar`, Luau will resolve it as: relative to this script, go to my parent and get that script named Bar. - -```lua --- Module Foo -local Bar = require(script.Parent.Bar) - -local baz1: Bar.Baz = 1 -- not ok -local baz2: Bar.Baz = "foo" -- ok - -print(Bar.Quux) -- ok -print(Bar.FakeProperty) -- not ok - -Bar.NewProperty = true -- not ok -``` - -```lua --- Module Bar -export type Baz = string - -local module = {} - -module.Quux = "Hello, world!" - -return module -``` - -There are some caveats here though. For instance, the require path must be resolvable statically, otherwise Luau cannot accurately type check it. - -### Cyclic module dependencies - -Cyclic module dependencies can cause problems for the type checker. In order to break a module dependency cycle a typecast of the module to `any` may be used: -```lua -local myModule = require(MyModule) :: any -``` diff --git a/docs/_pages/why.md b/docs/_pages/why.md deleted file mode 100644 index 4b097a56..00000000 --- a/docs/_pages/why.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -permalink: /why -title: Why Luau? ---- - -Around 2006, [Roblox](https://www.roblox.com) started using Lua 5.1 as a scripting language for games. Over the years the runtime had to be tweaked to provide a safe, secure sandboxed environment; we gradually started accumulating small library changes and tweaks. - -Over the course of the last few years, instead of using Web-based stack for our player-facing application, Lua-based in-game UI and Qt-based editor UI, we've started consolidating a lot of the efforts and developing all of these using Roblox engine and Lua as a scripting language. - -Having grown a substantial internal codebase that needed to be correct and performant, and with the focus shifting a bit from novice game developers to professional studios building games on Roblox and our own teams of engineers building applications, there was a need to improve performance and quality of the code we were writing. - -Unlike mainline Lua, we also could not afford to do major breaking changes to the language (hence the 5.1 language baseline that remained unchanged for more than a decade). While faster implementations of Lua 5.1 like LuaJIT were available, they didn't meet our needs in terms of portability, ease of change and they didn't address the problem of developing robust code at scale. - -All of these motivated us to start reshaping Lua 5.1 that we started from into a new, derivative language that we call Luau. Our focus is on making the language more performant and feature-rich, and make it easier to write robust code through a combination of linting and type checking using a gradual type system. - -## Complete rewrite? - -A very large part of Luau codebase is written from scratch. We needed a set of tools to be able to write language analysis tools; Lua has a parser that is integrated with the bytecode compiler, which makes it unsuitable for complex semantic analysis. For bytecode compilation, while a single pass compiler can deliver better compilation throughput and be simpler than a full frontend/backend, it significantly limits the optimizations that can be done at the bytecode level. - -Luau compiler and analysis tools are thus written from scratch, closely following the syntax and semantics of Lua. Our compiler is not single-pass, and instead relies on a set of analysis passes that run over the AST to produce efficient bytecode, followed by some post-process optimizations. - -As for the runtime, we had to rewrite the interpreter from scratch to get substantially faster performance; using a combination of techniques pioneered by LuaJIT and custom optimizations that are able to improve performance by taking control over the entire stack (language, compiler, interpreter, virtual machine), we're able to get close to LuaJIT interpreter performance while using C as an implementation language. - -The garbage collector and the core libraries represent more of an incremental change, where we used Lua 5.1 as a baseline but we're continuing to rewrite these as well with performance in mind. - -While Luau doesn't currently implement JIT/AOT, this is likely to happen at some point; beyond the usual implementation challenges and security concerns, one significant limitation is that we don't have access to JIT on many platforms so for us maintaining excellent interpreted performance for gameplay and application code is more important than reaching peak FLOPS on numerical code. diff --git a/docs/_posts/2019-11-11-luau-recap-november-2019.md b/docs/_posts/2019-11-11-luau-recap-november-2019.md deleted file mode 100644 index 253d59c5..00000000 --- a/docs/_posts/2019-11-11-luau-recap-november-2019.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: single -title: "Luau Recap: November 2019" ---- - -A few months ago, we’ve released our new Lua implementation, Luau ([Faster Lua VM Released](https://devforum.roblox.com/t/faster-lua-vm-released/339587)) and made it the default for most platforms and configurations. Since then we’ve shipped many smaller changes that improved performance and expanded the usability of the VM. Many of them have been noted in release notes but some haven’t, so here’s a recap of everything that has happened in the Lua land since September! - -[Originally posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-november-2019/).] - -## Debugger beta - -When we launched the new VM, we did it without the full debugger support. The reason for this is that the new VM is substantially different and the old implementation of the debugger (that relied on line hooks) just doesn’t work. - -We had to rebuild the low level implementation of the debugger from scratch - this is a tricky problem and it took time! We are excited to share a beta preview of this with you today. - -To use this, simply make sure that you’re enrolled in the new Lua VM beta: - -![Enable New Lua VM]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-november-2019-option.png) - -After this you can use the debugger as usual. If you see any bugs, please feel free to report them! - -## Performance improvements - - * The for loop optimization that specializes `pairs/ipairs` now works for localized versions of these globals as well, as well as `next, table` expressions - * a^k expressions are now faster for some trivial values of k such as 2 and 0.5 - * Calling methods and accessing properties on deeply nested Roblox objects is now significantly faster than it used to be (~2x faster for objects that have an 8-deep nesting) - the cost is now independent of the hierarchy depth. - * Accessing .X/.Y/.Z properties on Vector types is now ~30% faster - * On Windows and Xbox, we’ve tuned our interpreter to be ~5-6% faster on Lua-intensive code - * For a set of builtin functions, we now support very quickly calling them from VM via a new fastcall mechanism. - -Fastcall requires the function call to be present in source as a global or localized global access (e.g. either `math.max(x, 1)` or `max(x, 1) where local max = math.max`). This can be substantially faster than normal calls, e.g. this makes SHA256 benchmark ~1.7x faster. We are currently optimizing calls to `bit32`, `math` libraries and additionally `assert` and `type`. Also, just like other global-based optimizations, this one is disabled if you use `getfenv`/`setfenv`. - -## Lua library extensions - -We’ve implemented most library features available in later versions of upstream Lua, including: - - * `table.pack` and `table.unpack` from Lua 5.2 (the latter is same as global `unpack`, the former helps by storing the true argument count in `.n` field) - * `table.move` from Lua 5.3 (useful for copying data between arrays) - * `coroutine.isyieldable` from Lua 5.3 - * `math.log` now accepts a second optional argument (as seen in Lua 5.2) for the logarithm base - -We’ve also introduced two new functions in the table library: - - * `table.create(count, value)` can create an array-like table quickly - * `table.find(table, value [, init])` can quickly find the numeric index of the element in the table - -Autocomplete support for `table.create`/`table.find` will ship next week - -## Lua syntax extensions - -We’ve started taking a look at improving the Lua syntax. To that end, we’ve incorporated a few changes from later versions of Lua into the literal syntax: - - * String literals now support `\z` (skip whitespace), `\x` (hexadecimal byte) and `\u` (Unicode codepoint) escape sequences - -and implemented a few extra changes: - - * Number literals now support binary literals, e.g. `0b010101` - * Number literals now support underscores anywhere in the literal for easier digit grouping, e.g. `1_000_000` - -Note that the literal extensions aren’t currently supported in syntax highlighter in Studio but this will be amended soon. - -## Error messages - -Error messages are slowly getting a bit of love. We’ve improved some runtime errors to be nicer, in particular: - - * When indexing operation fails, we now specify the key name or type, e.g. “attempt to index foo with ‘Health’” - * When arithmetic operations fails, we now specify the type of arithmetic operation, e.g. “attempt to perform arithmetic (add) on table and number” - -We’ve also improved some parse errors to look nicer by providing extra context - for example, if you forget parentheses after function name in a function declaration, we will now say `Expected '(' when parsing function, got 'local'`. - -We are looking into some reports of misplaced line numbers on errors in multi-line expressions but this will only ship later. - -## Correctness fixes - -There are always a few corner cases that we miss - a new Lua implementation is by necessity subtly different in a few places. Our goal is to find and correct as many of these issues as possible. In particular, we’ve: - - * Fixed some cases where we wouldn’t preserve negative zero (`-0`) - * Fixed cases where `getfenv(0)` wouldn’t properly deoptimize access to builtin globals - * Fixed cases where calling a function with >255 parameters would overflow the stack - * Fixed errors with very very very long scripts and control flow around large blocks (thousands of lines of code in a single if/for statement) - * Fixed cases where in Studio on Windows, constant-time comparisons with `NaNs` didn’t behave properly (`0/0==1`) - -Also, the upvalue limit in the new VM has been raised to 200 from 60; the limit in Lua 5.2 is 255 but we decided for now to match the local limit. - -## Script analysis - -Along with the compiler and virtual machine, we’ve implemented a new linting framework on top of Luau which is similar to our old script analysis code but is richer. In particular, we support a few more checks that are enabled by default: - - * Unreachable code warning, for cases where function provably doesn’t reach a specific point, such as redundant return after a set of if/else statements where every branch returns or errors. - * Unknown type warning, which was emitted before for `Instance.new/GetService/IsA` calls, is now also emitted when the result of `type/typeof` is compared to a string literal - * We now recognize and flag mistaken attempts to iterate downwards with a for loop (such as `for i=9,1` or `for i=#t,1` as well as cases where numeric for loop doesn’t reach the stated target (`for i=1,4.5`) - * We now detect and flag cases where in assignment expressions variables are implicitly initialized with nil or values are dropped during assignment - * “Statement spans multiple lines” warning now does not trigger on idiomatic constructs involving setting up locals in a block (`local name do ... name = value ... end`) - -We also have implemented a few more warnings for common style/correctness issues but they aren’t enabled yet - we’re looking into ways for us to enable them without too much user impact: - - * Local variables that shadow other local variables / global variables - * Local variables that are assigned but never used - * Implicit returns, where functions that explicitly return values in some codepaths can reach the end of the function and implicitly return no values (which is error-prone) - -## Future plans - -There’s a fair bit of performance improvements that we haven’t gotten to yet that are on the roadmap - this includes general VM optimizations (faster function calls, faster conditional checks, faster error handling including `pcall`) and some library optimizations (in particular, Vector3 math performance improvements). And we’re starting to look into some exciting ways for us to make performance even better in the future. - -Also we’re still working on the type system! It’s starting to take shape and we should have something ready for you by the end of the year, but you’ll learn about it in a separate post :smiley: - -As always don’t hesitate to reach out if you have any issues or have any suggestions for improvements. - diff --git a/docs/_posts/2020-01-16-luau-type-checking-beta.md b/docs/_posts/2020-01-16-luau-type-checking-beta.md deleted file mode 100644 index eb6a8b79..00000000 --- a/docs/_posts/2020-01-16-luau-type-checking-beta.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: single -title: "Luau Type Checking Beta" ---- - -Hello! - -We’ve been quietly working on building a type checker for Lua for quite some time now. It is now far enough along that we’d really like to hear what you think about it. - -I am very happy to offer a beta test into the second half of the Luau effort. - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-type-checking-beta/).] - -## Beta Test - -First, a word of caution: In this test, we are changing the syntax of Lua. We are pretty sure that we’ve mostly gotten things right, but part of the reason we’re calling this a beta is that, if we learn that we’ve made a mistake, we’re going to go back and fix it even if it breaks compatibility. - -Please try it out and tell us what you think, but be aware that this is not necessarily our final form. 🙂 - -Beta testers can try it out by enabling the “Enable New Lua Script Analysis” beta feature in Roblox Studio. - -## Overview - -Luau is an ahead-of-time typechecking system that sits atop ordinary Lua code. It does not (yet) feed into the runtime system; it behaves like a super powerful lint tool to help you find bugs in your code quickly. - -It is also what we call a gradual type system. This means that you can choose to add type annotations in some parts of your code but not others. - -## Two Modes - -Luau runs in one of two modes: strict, and nonstrict. - -### Nonstrict Mode - -Nonstrict mode is intended to be as helpful as possible for programs that are written without type annotations. We want to report whatever we can without reporting an error in reasonable Lua code. - - * If a local variable does not have a type annotation and it is not initially assigned a table, its type is any - * Unannotated function parameters have type any - * We do not check the number of values returned by a function - * Passing too few or too many arguments to a function is ok - -### Strict Mode - -Strict mode is expected to be more useful for more complex programs, but as a side effect, programs may need a bit of adjustment to pass without any errors. - - * The types of local variables, function parameters, and return types are deduced from how they are used - * Errors are produced if a function returns an inconsistent number of parameters, or if it is passed the wrong number of arguments - -Strict mode is not enabled by default. To turn it on, you need to add a special comment to the top of your source file. -``` ---!strict -``` - -## New syntax - -You can write type annotations in 5 places: - - * After a local variable - * After a function parameter - * After a function declaration (to declare the function’s return type) - * In a type alias, and - * After an expression using the new as keyword. - -``` -local foo: number = 55 - -function is_empty(param: string) => boolean - return 0 == param:len() -end - -type Point = {x: number, y: number} - -local baz = quux as number -``` - -## Type syntax -### Primitive types - -`nil`, `number`, `string`, and `boolean` - -### any -The special type any signifies that Luau shouldn’t try to track the type at all. You can do anything with an any. - -### Tables -Table types are surrounded by curly braces. Within the braces, you write a list of name: type pairs: -``` -type Point = {x: number, y: number} -``` -Table types can also have indexers. This is how you describe a table that is used like a hash table or an array. -``` -type StringArray = {[number]: string} - -type StringNumberMap = {[string]: number} -``` - -### Functions - -Function types use a `=>` to separate the argument types from the return types. -``` -type Callback = (string) => number -``` -If a function returns more than one value, put parens around them all. -``` -type MyFunction = (string) => (boolean, number) -``` - -### Unions - -You can use a `|` symbol to indicate an “or” combination between two types. Use this when a value can have different types as the program runs. -``` -function ordinals(limit) - local i = 0 - return function() => number | nil - if i < limit then - local t = i - i = i + 1 - return t - else - return nil - end - end -end -``` - -### Options - -It’s pretty commonplace to have optional data, so there is extra syntax for describing a union between a type and `nil`. Just put a `?` on the end. Function arguments that can be `nil` are understood to be optional. -``` -function foo(x: number, y: string?) end - -foo(5, 'five') -- ok -foo(5) -- ok -foo(5, 4) -- not ok -``` - -### Type Inference - -If you don’t write a type annotation, Luau will try to figure out what it is. -``` ---!strict -local Counter = {count=0} - -function Counter:incr() - self.count = 1 - return self.count -end - -print(Counter:incr()) -- ok -print(Counter.incr()) -- Error! -print(Counter.amount) -- Error! -``` - -## Future Plans - -This is just the first step! - -We’re excited about a whole bunch of stuff: - - * Nonstrict mode is way more permissive than we’d like - * Generics! - * Editor integration \ No newline at end of file diff --git a/docs/_posts/2020-02-25-luau-recap-february-2020.md b/docs/_posts/2020-02-25-luau-recap-february-2020.md deleted file mode 100644 index fc8b6e6d..00000000 --- a/docs/_posts/2020-02-25-luau-recap-february-2020.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: single -title: "Luau Recap: February 2020" ---- - -We continue to iterate on our language stack, working on many features for type checking, performance, and quality of life. Some of them come with announcements, some come with release notes, and some just ship - here we will talk about all things that happened since November last year. - -A lot of people work on these improvements; thanks @Apakovtac, @EthicalRobot, @fun_enthusiast, @xyzzyismagic, @zeuxcg! - -[Originally posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-february-2020/).] - -We were originally intending to ship the beta last year but had to delay it due to last minute bugs. However, it’s now live as a beta option on production! Go here to learn more: - -EDIT: Please DO NOT publish places with type annotations just yet as they will not work on production! This is why it’s a beta 🙂 However, please continue to experiment in Studio and give us feedback. We are reading everything and will be fixing reported bugs and discussing syntax / semantics issues some people brought up. Hello! We’ve been quietly working on building a type checker for Lua for quite some time now. It is now far enough along that we’d really like to hear what… - -We’re continuing to iterate on the feedback we have received here. Something that will happen next is that we will enable type annotations on live server/clients - which will mean that you will be able to publish source code with type annotations without breaking your games. We still have work to do on the non-strict and strict mode type checking before the feature can move out of beta though, in particular we’ve implemented support for require statement and that should ship next week 🤞 - -We also fixed a few bugs in the type definitions for built-in functions/API and the type checker itself: - - * `table.concat` was accidentally treating the arguments as required - * `string.byte` and `string.find` now have a correct precise type - * `typeof` comparisons in if condition incorrectly propagated the inferred type into `elseif` branches - -We are also making the type checker more ergonomic and more correct. Two changes I want to call out are: - - * Type aliases declared with `type X = Y` are now co-recursive, meaning that they can refer to each other, e.g. - -``` -type array = { [number]: T } - -type Wheel = { radius: number, car: Car } -type Car = { wheels: array } -``` - -* We now support type intersections `(A & B)` in addition to type unions `(A | B)`. Intersections are critical to modeling overloaded functions correctly - while Lua as a language doesn’t support function overloads, we have various APIs that have complex overloaded semantics - one of them that people who tried the beta had problems with was UDim2.new - and it turns out that to correctly specify the type, we had to add support for intersections. This isn’t really intended as a feature that is used often in scripts developers write, but it’s important for internal use. - -## Debugger (beta) - -When we shipped the original version of the VM last year, we didn’t have the debugger fully working. Debugger relies on low-level implementation of the old VM that we decided to remove from the new VM - as such we had to make a new low-level debugging engine. - -This is now live under the Luau VM beta feature, see [this post](https://devforum.roblox.com/t/luau-in-studio-beta/456529) for details. - -If you use the debugger at all, please enable the beta feature and try it out - we want to fix all the bugs we can find, and this is blocking us enabling the new VM everywhere. - -(a quick aside: today the new VM is enabled on all servers and all clients, and it’s enabled in Studio “edit” mode for plugins - but not in Studio play modes, and full debugger support is what prevents us from doing so) - -## Language - -This section is short and sweet this time around: - -* You can now use continue statement in for/while/repeat loops. :tada: - -Please note that we only support this in the new VM, so you have to be enrolled in Luau VM beta to be able to use it in Studio. It will work in game regardless of the beta setting as per above. - -## Performance - -While we have some really forward looking ideas around multi-threading and native code compilation that we’re starting to explore, we also continue to improve performance across the board based on our existing performance backlog and your feedback. - -In particular, there are several memory and performance optimizations that shipped in the last few months: - - * Checking for truth (`if foo or foo and bar`) is now a bit faster, giving 2-3% performance improvements on some benchmarks - * `table.create` (with value argument) and `table.pack` have been reimplemented and are ~1.5x faster than before - * Internal mechanism for filling arrays has been made faster as well, which makes `Terrain:ReadVoxels` ~10% faster - * Catching engine-generated errors with pcall/xpcall is now ~1.5x faster (this only affects performance of calls that generated errors) - * String objects now take 8 bytes less memory per object (and in an upcoming change we’ll save a further 4 bytes) - * Capturing local variables that are never assigned to in closures is now much faster, takes much less memory and generates much less GC pressure. This can make closure creation up to 2x faster, and improves some Roact benchmarks by 10%. This is live in Studio and will ship everywhere else shortly. - * The performance of various for loops (numeric & ipairs) on Windows regressed after a VS2017 upgrade; this regression has been fixed, making all types of loops perform roughly equally. VS2017 upgrade also improved Luau performance on Windows by ~10% across the board. - * Lua function calls have been optimized a bit more, gaining an extra 10% of performance in call-heavy benchmarks on Windows. - * Variadic table constructors weren’t compiled very efficiently, resulting in surprisingly low performance of constructs like `{...}`. Fixing that made `{...}` ~3x faster for a typical number of variadic arguments. - -## Diagnostics - -We spent some time to improve error messages in various layers of the stack based on the reports from community. Specifically: - - * The static analysis warning about incorrect bounds for numeric for loops is now putting squigglies in the right place. - * Fixed false positive static analysis warnings about unreachable code inside repeat…until loops in certain cases. - * Multiline table construction expressions have a more precise line information now which helps in debugging since callstacks are now easier to understand - * Incomplete statements (e.g. foo) now produce a more easily understandable parsing error - * In some cases when calling the method with a `.` instead of `:`, we emitted a confusing error message at runtime (e.g. humanoid.LoadAnimation(animation)). We now properly emit the error message asking the user if `:` was intended. - * The legacy global `ypcall` is now flagged as deprecated by script analysis - * If you use a Unicode symbol in your source program outside of comments or string literals, we now produce a much more clear message, for example: -``` -local pi = 3․13 -- spoiler alert: this is not a dot! -``` -produces `Unexpected Unicode character: U+2024. Did you mean '.'?` - -## LoadLibrary removal - -Last but not least, let’s all press [F for LoadLibrary](https://devforum.roblox.com/t/loadlibrary-is-going-to-be-removed-on-february-3rd/382516). - -It was fun while it lasted, but supporting it caused us a lot of pain over the years and prevented some forward-looking changes to the VM. We don’t like removing APIs from the platform, but in this case it was necessary. Thanks to the passionate feedback from the community we adjusted our initial rollout plans to be less aggressive and batch-processed a lot of gear items that used this function to stop using this function. The update is in effect and LoadLibrary is no more. - -As usual, if you have any feedback about any of these updates, suggestions, bug reports, etc., post them in this thread or (preferably for bugs) as separate posts in the bug report category. diff --git a/docs/_posts/2020-05-18-luau-recap-may-2020.md b/docs/_posts/2020-05-18-luau-recap-may-2020.md deleted file mode 100644 index a2b4cdbc..00000000 --- a/docs/_posts/2020-05-18-luau-recap-may-2020.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: single -title: "Luau Recap: May 2020" ---- - -Luau (lowercase u, “l-wow”) is an umbrella initiative to improve our language stack - the syntax, compiler, virtual machine, builtin Lua libraries, type checker, linter (known as Script Analysis in Studio), and more related components. We continuously develop the language and runtime to improve performance, robustness and quality of life. Here we will talk about all things that happened since the update in March! - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-may-2020/).] - -## New function type annotation syntax - -As noted in the previous update, the function type annotation syntax now uses `:` on function definitions and `->` on standalone function types: -``` -type FooFunction = (number, number) -> number - -function foo(a: number, b: number): number - return a + b -end -``` -This was done to make our syntax more consistent with other modern languages, and is easier to read in type context compared to our old `=>`. - -This change is now live; the old syntax is still accepted but it will start producing warnings at some point and will be removed eventually. - -## Number of locals in each function is now limited to 200 -As detailed in [Upcoming change to (correctly) limit the local count to 200](https://devforum.roblox.com/t/upcoming-change-to-correctly-limit-the-local-count-to-200/528417) (which is now live), when we first shipped Luau we accidentally set the local limit to 255 instead of 200. This resulted in confusing error messages and code that was using close to 250 locals was very fragile as it could easily break due to minor codegen changes in our compiler. - -This was fixed, and now we’re correctly applying limits of 200 locals, 200 upvalues and 255 registers (per function) - and emit proper error messages pointing to the right place in the code when either limit is exceeded. - -This is technically a breaking change but scripts with >200 locals didn’t work in our old VM and we felt like we had to make this change to ensure long-term stability. - -## Require handling improvements in type checker + export type - -We’re continuing to flesh out the type checker support for modules. As part of this, we overhauled the require path tracing - type checker is now much better at correctly recognizing (statically) which module you’re trying to require, including support for `game:GetService`. - -Additionally, up until now we have been automatically exporting all type aliases declared in the module (via `type X = Y`); requiring the module via `local Foo = require(path)` made these types available under `Foo.` namespace. - -This is different from the explicit handling of module entries, that must be added to the table returned from the `ModuleScript`. This was highlighted as a concern, and to fix this we’ve introduced `export type` syntax. - -Now the only types that are available after require are types that are declared with `export type X = Y`. If you declare a type without exporting it, it’s available inside the module, but the type alias can’t be used outside of the module. That allows to cleanly separate the public API (types and functions exposed through the module interface) from implementation details (local functions etc.). - -## Improve type checker robustness - -As we’re moving closer to enabling type checking for everyone to use (no ETA at the moment), we’re making sure that the type checker is as robust as possible. - -This includes never crashing and always computing the type information in a reasonable time frame, even on obscure scripts like this one: -``` -type ( ... ) ( ) ; -( ... ) ( - - ... ) ( - ... ) -type = ( ... ) ; -( ... ) ( ) ( ... ) ; -( ... ) "" -``` -To that end we’ve implemented a few changes, most of them being live, that fix crashes and unbounded recursion/iteration issues. This work is ongoing, as we’re fixing issues we encounter in the testing process. - -## Better types for Lua and Roblox builtin APIs - -In addition to improving the internals of the type checker, we’re still working on making sure that the builtin APIs have correct type information exposed to the type checker. - -In the last few weeks we’ve done a major audit and overhaul of that type information. We used to have many builtin methods “stubbed” to have a very generic type like `any` or `(...) -> any`, and while we still have a few omissions we’re much closer to full type coverage. - -One notable exception here is the `coroutine.` library which we didn’t get to fully covering, so the types for many of the functions there are imprecise. - -If you find cases where builtin Roblox APIs have omitted or imprecise type information, please let us know by commenting on this thread or filing a bug report. - -The full set of types we expose as of today is listed here for inquisitive minds: [https://gist.github.com/zeux/d169c1416c0c65bb88d3a3248582cd13](https://gist.github.com/zeux/d169c1416c0c65bb88d3a3248582cd13) - -## Removal of __gc from the VM -A bug with `continue` and local variables was reported to us a few weeks ago; the bug was initially believed to be benign but it was possible to turn this bug into a security vulnerability by getting access to `__gc` implementation for builtin Roblox objects. After fixing the bug itself (the turnaround time on the bug fix was about 20 hours from the bug report), we decided to make sure that future bugs like this don’t compromise the security of the VM by removing `__gc`. - -`__gc` is a metamethod that Lua 5.1 supports on userdata, and future versions of Lua extend to all tables; it runs when the object is ready to be garbage collected, and the primary use of that is to let the userdata objects implemented in C to do memory cleanup. This mechanism has several problems: - - * `__gc` is invoked by the garbage collector without context of the original thread. Because of how our sandboxing works this means that this code runs at highest permission level, which is why `__gc` for newproxy-created userdata was disabled in Roblox a long time ago (10 years?) - * `__gc` for builtin userdata objects puts the object into non-determinate state; due to how Lua handles `__gc` in weak keys (see [https://www.lua.org/manual/5.2/manual.html#2.5.2](https://www.lua.org/manual/5.2/manual.html#2.5.2)), these objects can be observed by external code. This has caused crashes in some Roblox code in the past; we changed this behavior at some point last year. - * Because `__gc` for builtin objects puts the object into non-determinate state, calling it on the same object again, or calling any other methods on the object can result in crashes or vulnerabilities where the attacker gains access to arbitrarily mutating the process memory from a Lua script. We normally don’t expose `__gc` because the metatables of builtin objects are locked but if it accidentally gets exposed the results are pretty catastrophic. - * Because `__gc` can result in object resurrection (if a custom Lua method adds the object back to the reachable set), during garbage collection the collector has to traverse the set of userdatas twice - once, to run `__gc` and a second time to mark the survivors. - -For all these reasons, we decided that the `__gc` mechanism just doesn’t pull its weight, and completely removed it from the VM - builtin userdata objects don’t use it for memory reclamation anymore, and naturally declaring `__gc` on custom userdata objects still does nothing. - -Aside from making sure we’re protected against these kinds of vulnerabilities in the future, this makes garbage collection ~25% faster. - -## Memory and performance improvements - -It’s probably not a surprise at this point but we’re never fully satisfied with the level of performance we get. From a language implementation point of view, any performance improvements we can make without changing the semantics are great, since they automatically result in Lua code running faster. To that end, here’s a few changes we’ve implemented recently: - - * ~~A few string. methods, notably string.byte and string.char, were optimized to make it easier to write performant deserialization code. string.byte is now ~4x faster than before for small numbers of returned characters. For optimization to be effective, it’s important to call the function directly (`string.byte(foo, 5)`) instead of using method calls (`foo:byte(5)`).~~ This had to be disabled due to a rare bug in some cases, this optimization will come back in a couple of weeks. - * `table.unpack` was carefully tuned for a few common cases, making it ~15% faster; `unpack` and `table.unpack` now share implementations (and the function objects are equal to each other). - * While we already had a very efficient parser, one long standing bottleneck in identifier parsing was fixed, making script compilation ~5% faster across the board, which can slightly benefit server startup times. - * Some builtin APIs that use floating point numbers as arguments, such as various `Vector3` constructors and operators, are now a tiny bit faster. - * All string objects are now 8 bytes smaller on 64-bit platforms, which isn’t a huge deal but can save a few megabytes of Lua heap in some games. - * Debug information is using a special compact format that results in ~3.2x smaller line tables, which ends up making function bytecode up to ~1.5x smaller overall. This can be important for games with a lot of scripts. - * Garbage collector heap size accounting was cleaned up and made more accurate, which in some cases makes Lua heap ~10% smaller; the gains highly depend on the workload. - -## Library changes - -The standard library doesn’t see a lot of changes at this point, but we did have a couple of small fixes here: - - * `coroutine.wrap` and `coroutine.create` now support C functions. This was the only API that treated Lua and C functions differently, and now it doesn’t. - * `require` silently skipped errors in module scripts that occurred after the module scripts yielding at least once; this was a regression from earlier work on yieldable pcall and has been fixed. - -As usual, if you have questions, comments, or any other feedback on these changes, feel free to share it in this thread or create separate posts for bug reports. \ No newline at end of file diff --git a/docs/_posts/2020-06-20-luau-recap-june-2020.md b/docs/_posts/2020-06-20-luau-recap-june-2020.md deleted file mode 100644 index 18276219..00000000 --- a/docs/_posts/2020-06-20-luau-recap-june-2020.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: single -title: "Luau Recap: June 2020" ---- - -… otherwise known as “This Month in Luau” I guess? You know the drill by now. We’ll talk about exciting things that happened to Luau - our new language stack. - -anxiously glances at FIB3 thread that casts a huge shadow on this announcement, but hopefully somebody will read this - -Many people work on these improvements; thanks @Apakovtac, @EthicalRobot, @fun_enthusiast, @zeuxcg! - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-june-2020/).] - -## We have a website! - -Many developers told us on many occasions that as much as they love the recaps, it’s hard to know what the state of the language or libraries is if the only way to find out is to read through all updates. What’s the syntax extensions that Luau supports now? How do I use type checking? What’s the status of from Lua 5.x? - -Well, you can find all of this out here now: [https://roblox.github.io/luau/](https://roblox.github.io/luau/) - -Please let us know if this documentation can be improved - what are you missing, what could be improved. For now to maximize change velocity this documentation is separate from DevHub; it’s also meant as an external resource for people who don’t really use the language but are curious about the differences and novelties. - -Also, `_VERSION` now returns "Luau" because we definitely aren’t using Lua 5.1 anymore. - -## Compound assignments - -A long-standing feature request for Lua is compound assignments. Somehow Lua never got this feature, but Luau now implements `+=`, `-=`, `*=`, `/=`, `%=`, `^=` and `..=` operators. We decided to implement them because they are absolutely ubiquitous among most frequently used programming languages, both those with C descent and those with different lineage (Ruby, Python). They result in code that’s easier to read and harder to make mistakes in. - -We do not implement `++` and `--`. These aren’t universally adopted, `--` conflicts with comment syntax and they are arguably not as intuitively obvious. We trust everyone to type a few extra characters for `+= 1` without too much trouble. - -Two important semantical notes are that the expressions on the left hand side are only evaluated once, so for example `table[makeIndex()] += 1` only runs `makeIndex` once, and that compound assignments still call all the usual metamethod (`__add` et al, and `__index`/`__newindex`) when necessary - you don’t need to change any data structures to work with these. - -There’s no noticeable performance improvement from these operators (nor does using them carry a cost) - use them when they make sense for readability. - -## Nicer error messages - -Good errors are critical to be able to use Luau easily. We’ve spent some time to improve the quality of error messages during parsing and runtime execution: - - * In runtime type errors, we now often use the “Roblox” type name instead of plain userdata, e.g. `math.abs(v)` now says `number` expected, got `Vector3` - * When arguments are just missing, we now explicitly say that they are missing in libraries like math/table; the old message was slightly more confusing - * `string.format` in some cases produced error messages that confused missing arguments for incorrect types, which has been fixed - * When a builtin function such as `math.abs` fails, we now add the function name to the error message. This is something that used to happen in Lua, then we lost this in Luau because Luau removes a very fragile mechanism that supported that, but we now have a new, robust way to report this so you can have the function name back! The message looks like this now: `invalid argument #1 to 'abs' (number expected, got nil)` - * In compile-time type errors, we now can identify the case when the field was mistyped with a wrong case (ha), and tell you to use the correct case instead. - * When you forget an `end` statement, we now try to be more helpful and point you to the problematic statement instead of telling you that the end is missing at the very end of the program. This one is using indentation as a heuristic so it doesn’t always work perfectly. - * We now have slightly more helpful messages for cases when you forget parentheses after a function call - * We now have slightly more helpful messages for some cases when you accidentally use `( ... )` instead of `{ ... }` to create a table literal -Additionally two places had very lax error checking that made the code more fragile, and we fixed those: - - * `xpcall` now fails immediately when the error function argument is not a function; it used to work up until you get an error, and failed at that point, which made it hard to find these bugs - * `tostring` now enforces the return type of the result to be a string - previously `__tostring` could return a non-string result, which worked fine up until you tried to do something like passing the resulting value to `string.format` for `%s`. Now `tostring` will fail early. -Our next focus here is better error messages during type checking - please let us know if there are other errors you find confusing and we could improve! - -## Type checker improvements - -We’re getting closer and closer to be able to move out of beta. A big focus this month was on fixing all critical bugs in the type checker - it now should never hang or crash Studio during type checking, which took a bit of work to iron out all the problems. - -Notably, typing function string.length no longer crashes Studio (although why you’d do that is unclear), and Very Large Scripts With Tons Of Nested Statements And Expressions should be stable as well. - -We’ve also cleaned up the type information for builtin libraries to make it even more precise, including a few small fixes to `string/math` functions, and a much more precise coroutine library type information. For the latter we’ve introduced a primitive type `thread`, which is what `coroutine` library works with. - -## Linter improvements - -Linter is the component that produces warnings about scripts; it’s otherwise known as “Static Analysis” in Studio, although that is now serving as a place where we show type errors as well. - -Most of the changes here this month are internal as they concern warnings that aren’t yet enabled in Studio (the web site linked above documents all warnings including ones that aren’t active yet but may become active), but once notable feature is that you can now opt out of individual warnings on a script-by-script basis by adding a --!nolint comment to the top of the script. For example, if you really REALLY *REALLY* like the `Game` global, you can add this to the top of the script: - -``` ---!nolint DeprecatedGlobal -``` -Or, if you basically just want us to not issue any warnings ever, I guess you can add this: -``` ---!nocheck ---!nolint -``` -and live happily ignorant of all possible errors up until you run your code. (please don’t do that) - -## os. enhancements - -Our overall goal is to try to be reasonably compatible with Lua 5.x in terms of library functions we expose. This doesn’t always work - in some cases we have to remove library features for sandboxing reasons, and in others the library functions don’t make sense in context of Roblox. However, some of these decisions can be revised later. In particular, when we re-added `os.` library to Roblox, we limited it to `os.date`, `os.time` and `os.difftime` (although why `difftime` is a thing isn’t clear), omitting `os.clock` and restricting inputs to `os.date` to return a table with date components, whereas Lua 5.x supports format strings. - -Well, this changes today. `os.clock` is now available if you need a high-precision time for benchmarking, and `os.date` can now return formatted date using Lua 5.x format string that you can read about here [https://www.lua.org/pil/22.1.html](https://www.lua.org/pil/22.1.html) (we support all these specifiers: aAbBcdHIjmMpSUwWxXyYzZ). - -While `os.date()` is hopefully welcome, `os.clock` may raise some eyebrows - aren’t there enough timing functions in Roblox already? Well, this is nice if you are trying to port code from Lua 5.x to Luau, and there’s this - -![Oblig. xkcd]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-june-2020-xkcd.png) - -But really, most existing Roblox timing functions are… problematic. - - * `time()` returns the total amount of time the game has been running simulation for, it’s monotonic and has reasonable precision. It’s fine - you can use it to update internal gameplay systems without too much trouble. It should’ve been called “tick” perhaps but that ship has sailed. - * `elapsedTime` and its close cousin `ElapsedTime`, are telling you “how much time has elapsed since the current instance of Roblox was started.”. While technically true, this isn’t actually useful because on mobile the “start” time here can be days in the past. It’s also inadequate for performance measurements as on Windows, it has a 1ms resolution which isn’t really enough for anything interesting. We’re going to deprecate this in the future. - * `tick()` sounds perfect - it has a high resolution (usually around 1 microsecond), and a well-defined baseline - it counts since UNIX epoch! Or, well, it actually doesn’t. On Windows, it returns you a variant of the UNIX timestamp in local time zone. In addition, it can be off by 1 second from the actual, real UNIX timestamp, and might have other idiosyncrasies on non-Windows platforms. We’re going to deprecate this in the future - -So, if you need a UNIX timestamp, you should use `os.time()`. You get a stable baseline (from 1970’s) and 1s resolution. If you need to measure performance, you should use `os.clock()`. You don’t get a stable baseline, but you get ~1us resolution. If you need to do anything else, you should probably use `time()`. - -## Performance optimizations - -As you can never have too much performance, we’re continuing to work on performance! We’re starting to look into making Vector3 faster and improving the garbage collector, with some small changes already shipping, but overall it’s a long way out so here are the things that did get visibly better: - - * A few `string.` methods, notably `string.byte` and `string.char`, were optimized to make it easier to write performant deserialization code. string.byte is now ~4x faster than before for small numbers of returned characters. For optimization to be effective, it’s important to call the function directly ( `string.byte(foo, 5)` ) instead of using method calls ( `foo:byte(5)` ) - * Optimize coroutine resumption, making some code that is heavily reliant on `coroutine`. library ~10% faster. We have plans to improve this further, watch this space. - * Optimize `typeof()` to run ~6x faster. It used to be that `type()` was much faster than `typeof()` but they now should be more or less comparable. - * Some secret internal optimizations make some scripts a few percent faster - * The memory allocator used in Luau was rewritten using a new, more efficient, implementation. There might be more changes here in the future to save some memory, but for now this makes some allocation-intensive benchmarks ~15% faster. - * Using tables with keys that are not strings or numbers is a fair bit more efficient now (most commonly comes up when Instance is used as a key in a hash table), on par with using strings. - -Also we found a bug with some of our optimizations (which delayed the string. performance improvement above, but also could affect some math. calls) where in some complex functions you would see valid calls to math. etc. breaking with non-sensical errors such as “expected number, got table” - this has been fixed! - -## Memory optimizations - -As with performance, our goal here is simple - the more efficient internal Luau structures can become, the less memory will Lua heap take. This is great for both memory consumption, and for garbage collection performance as the collector needs to traverse less data. There’s a few exciting changes in this area this month: - - * Non-array-like tables now take 20% less space. This doesn’t affect arrays but can be observed on object-like tables, both big and small. This is great because some of you are using a lot of large tables apparently, since this resulted in very visible reduction in overall Lua heap sizes across all games. - * Function objects now take up to 30% less space. This isn’t as impactful since typically function objects are not created very frequently and/or don’t live for very long, but it’s nice nonetheless. - * New allocator mentioned in the previous section can save up to 5-6% of Lua heap memory as well, although these gains are highly dependent on the workload, and we usually see savings in the 1-2% range. - -And that’s it! Till next time. As usual let us know if you have questions, suggestions or bug reports. diff --git a/docs/_posts/2020-08-11-luau-recap-august-2020.md b/docs/_posts/2020-08-11-luau-recap-august-2020.md deleted file mode 100644 index 5d149c18..00000000 --- a/docs/_posts/2020-08-11-luau-recap-august-2020.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: single -title: "Luau Recap August 2020" ---- - -As everyone knows by now, Luau is our new language stack that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau) and the month following June is August so let’s talk about changes, big and small, that happened since June! - -Many people work on these improvements, with the team slowly growing - thanks @Apakovtac, @EthicalRobot, @fun_enthusiast, @mrow_pizza and @zeuxcg! - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-august-2020/).] - -## Type annotations are safe to use in production! - -When we started the Luau type checking beta, we’ve had a big warning sign in the post saying to not publish the type-annotated scripts to your production games which some of you did anyway. This was because we didn’t want to commit to specific syntax for types, and were afraid that changing the syntax would break your games. - -This restriction is lifted now. All scripts with type annotations that parse & execute will continue to parse & execute forever. Crucially, for this to be true you must not be using old fat arrow syntax for functions, which we warned you about for about a month now: - -![Fat arrow deprecated]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-august-2020-arrow.png) - -… and must not be using the `__meta` property which no longer holds special meaning and we now warn you about that: - -![meta deprecated]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-august-2020-meta.png) - -Part of the syntax finalization also involved changing the precedence on some type annotations and adding support for parentheses; notably, you can now mix unions and intersections if you know what that means (`(A & B) | C` is valid type syntax). Some complex type annotations changed their structure because of this - previously `(number) -> string & (string) -> string` was a correct way to declare an intersection of two function types, but now to keep it parsing the same way you need to put each function type in parentheses: `((number) -> string) & ((string) -> string)`. - -Type checking is not out of beta yet - we still have some work to do on the type checker itself. The items on our list before going out of beta right now include: - - * Better type checking for unary/binary operators - * Improving error messages to make type errors more clear - * Fixing a few remaining crashes for complex scripts - * Fixing conflation of warnings/errors between different scripts with the same path in the tree - * Improving type checking of globals in nonstrict mode (strict mode will continue to frown upon globals) - -Of course this doesn’t mark the end of work on the feature - after type checking goes out of beta we plan to continue working on both syntax and semantics, but that list currently represents the work we believe we have left to do in the first phase - please let us know if there are other significant issues you are seeing with beta beyond future feature requests! - -## Format string analysis - -A few standard functions in Luau are using format strings to dictate the behavior of the code. There’s `string.format` for building strings, `string.gmatch` for pattern matching, `string.gsub`'s replacement string, `string.pack` binary format specification and `os.date` date formatting. - -In all of these cases, it’s important to get the format strings right - typos in the format string can result in unpredictable behavior at runtime including errors. To help with that, we now have a new lint rule that parses the format strings and validates them according to the expected format. - -![String format]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-august-2020-format.png) - -Right now this support is limited to direct library calls (`string.format("%.2f", ...)` and literal strings used in these calls - we may lift some of these limitations later to include e.g. support for constant locals. - -Additionally, if you have type checking beta enabled, string.format will now validate the argument types according to the format string to help you get your `%d`s and `%s`es right. - -![String format]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-august-2020-format2.png) - -## Improvements to string. library - -We’ve upgraded the Luau string library to follow Lua 5.3 implementation; specifically: - - * `string.pack/string.packsize/string.unpack` are available for your byte packing needs - * `string.gmatch` and other pattern matching functions now support `%g` and `\0` in patterns - -This change also [inadvertently] makes `string.gsub` validation rules for replacement string stricter - previously `%` followed by a non-digit character was silently accepted in a replacement string, but now it generates an error. This accidentally broke our own localization script [Purchase Prompt broken in some games (% character in title)](https://devforum.roblox.com/t/purchase-prompt-broken-in-some-games-character-in-title/686237)), but we got no other reports, and this in retrospect is a good change as it makes future extensions to string replacement safe… It was impossible for us to roll the change back and due to a long release window because of an internal company holiday we decided to keep the change as is, although we’ll try to be more careful in the future. - -On a happier note, string.pack may seem daunting but is pretty easy to use to pack binary data to reduce your network traffic (note that binary strings aren’t safe to use in DataStores currently); I’ve posted an example in the release notes thread [Release Notes for 441](https://devforum.roblox.com/t/release-notes-for-441/686773) that allows you to pack a simple character state in 16 bytes like this: -``` -local characterStateFormat = "fffbbbB" - -local characterState = string.pack(characterStateFormat, - posx, posy, posz, dirx * 127, diry * 127, dirz * 127, health) -``` -And unpack it like this after network transmission: -``` -local posx, posy, posz, dirx, diry, dirz, health = - string.unpack(characterStateFormat, characterState) -dirx /= 127 -diry /= 127 -dirz /= 127 -``` - -## Assorted fixes - -As usual we fixed a few small problems discovered through testing. We now have an automated process that generates random Luau code in semi-intelligent ways to try to break different parts of our system, and a few fixes this time are a direct result of that. - - * Fix line debug information for multi-line function calls to make sure errors for code like `foo.Bar(...)` are generated in the appropriate location when foo is nil - * Fix debug information for constant upvalues; this fixes some bugs with watching local variables from the nested functions during debugging - * Fix an off-by-one range check in string.find for init argument that could result in reading uninitialized memory - * Fix type confusion for table.move target table argument that could result in reading or writing arbitrary memory - * Fix type confusion for `debug.getinfo` in some circumstances (we don’t currently expose getinfo but have plans to do so in the future) - * Improve out of memory behavior for large string allocations in string.rep and some other functions like `table.concat` to handle these conditions more gracefully - * Fix a regression with `os.time` from last update, where it erroneously reverted to Lua 5.x behavior of treating the time as a local time. Luau version (intentionally) deviates from this by treating the input table as UTC, which matches `os.time()` behavior with no arguments. - -## Performance improvements - -Only two changes in this category here this time around; some larger scale performance / memory improvements are still pending implementation. - - * Constant locals are now completely eliminated in cases when debugging is not available (so on server/client), making some scripts ~1-2% faster - * Make script compilation ~5% faster by tuning the compiler analysis and code generation more carefully -Oh, also `math.round` is now a thing which didn’t fit into any category above. \ No newline at end of file diff --git a/docs/_posts/2020-10-30-luau-recap-october-2020.md b/docs/_posts/2020-10-30-luau-recap-october-2020.md deleted file mode 100644 index 727fef70..00000000 --- a/docs/_posts/2020-10-30-luau-recap-october-2020.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: single -title: "Luau Recap: October 2020" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau); we’ve been so busy working on the current projects that we didn’t do an update in September, so let’s look at changes that happened since August! - -Many people work on these improvements, with the team slowly growing - thanks @Apakovtac, @EthicalRobot, @fun_enthusiast, @machinamentum, @mrow_pizza and @zeuxcg! - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-october-2020/).] - -## Types are very close - -We’ve been in beta for a while now, but we’re steadily marching towards getting the first release of the type checker, what we call “types v0”, out of the door. It turns out that we’ve substantially underestimated the effort required to make the type system robust, strike the balance between “correct” and “usable” and give quality diagnostics in the event we do find issues with your code 🙂 - -Because of this, we’re changing the original plans for the release a bit. We’re actively working on a host of changes that we consider to be part of the “v0” effort, and when they are all finished - which should happen next month, fingers crossed - we’re going to be out of beta! - -However, by default, on scripts with no annotations, we won’t actually activate type checking. You would have to opt into the type checking by using `--!nonstrict` or `--!strict`, at the top of each script. We are also going to open the second beta, “All scripts use non-strict mode by default” or something along these lines. - -This is important because we found that our non-strict mode still needs some more work to be more tolerant to some code that occurs commonly in Roblox and is correct, but doesn’t type-check. We’re going to evaluate what changes specifically are required to make this happen, but we didn’t want the extra risk of a flood of reports about issues reported in existing code to shift the release date in an unpredictable fashion. - -To that end, we’ve been working on Lots and Lots and Lots and Lots and Lots of changes to finish the first stage. Some of these changes are already live and some are rolling out; the amount of changes is so large that I can’t possibly list the up-to-date status on each one as these recaps are synthesized by the human who is writing this on a Friday night, so here’s just a raw list of changes that may or may not have been enabled: - - * Strict mode is now picky about passing extra arguments to functions, even though they are discarded silently at runtime, as this can hide bugs - * The error message about using a : vs . during type checking is now much more precise - * Recursive type annotations shouldn’t crash the type checker now, and we limit the recursion and iteration depth during type checking in a few cases in general in an effort to make sure type checker always returns in finite time - * Binary relational operators (`<` et al) are now stricter about the argument types and infer the argument types better - * Function argument and return types are now correctly contra- and co-variant; if this looks like gibberish to you, trust me - it’s for the best! - * Fixed a few problems with indexing unions of tables with matching key types - * Fixed issues with tracing types across modules (via require) in non-strict mode - * Error messages for long table types are now trimmed to make the output look nicer - * Improve the interaction between table types of unknown shape (`{ [string]: X }`) and table types of known shape. - * Fix some issues with type checking table assignments - * Fix some issues with variance of table fields - * Improve the legibility of type errors during function calls - errors now point at specific arguments that are incorrect, and mismatch in argument count should clearly highlight the problem - * Fix types for many builtins including `ipairs`, `table.create`, `Color3.fromHSV`, and a few others - * Fix missing callbacks for some instance types like `OnInvoke` for bindables (I think this one is currently disabled while we’re fixing a semi-related bug, but should be enabled soon!) - * Rework the rules under which globals are okay to use in non-strict mode to mostly permit valid scripts to type-check; strict mode will continue to frown upon the use of global variables - * Fix a problem with the beta where two scripts with identical names would share the set of errors/warnings, resulting in confusing error highlights for code that doesn’t exist - * Improve the legibility of type errors when indexing a table without a given key - * Improve the parsing error when trying to return a tuple; `function f(): string, number` is invalid since the type list should be parenthesized because of how our type grammar is currently structured - * Type checker now clearly reports cases where it finds a cyclic dependency between two modules - * Type errors should now be correctly sorted in the Script Analysis widget - * Error messages on mismatches between numbers of values in return statements should now be cleaner, as well as the associated type mismatch errors - * Improve error messages for comparison operators - * Flag attempts to require a non-module script during type checking - * Fix some cases where a type/typeof guard could be misled into inferring a non-sensible type - * Increase the strictness of return type checks in strict mode - functions now must conform to the specified type signature, whereas before we’d allow a function to return no values even in strict mode - * Improve the duplicate definition errors to specify the line of the first definition - * Increase the strictness of binary operators in strict mode to enforce the presence of the given operator as a built-in or as part of the metatable, to make sure that strict mode doesn’t infer types when it can’t guarantee correctness - * Improve the type errors for cyclic types to make them more readable - * Make type checker more friendly by rewording a lot of error messages - * Fix a few crashes in the type checker (although a couple more remain - working on them!) - * … I think that’s it? - * …edit ah, of course I forgot one thing - different enums that are part of the Roblox API now have distinct types and you can refer to the types by name e.g. `Enum.Material`; this should go live next week though. -If you want to pretend that you’ve read and understood the entire list above, just know that we’ve worked on making sure strict mode is more reliably reporting type errors and doesn’t infer types incorrectly, on making sure non-strict mode is more forgiving for code that is probably valid, and on making the type errors more specific, easier to understand, and correct. - -## Type syntax changes - -There’s only two small changes here this time around - the type syntax is now completely stable at this point, and any existing type annotation will continue parsing indefinitely. We of course reserve the right to add new syntax that’s backwards compatible :slight_smile: - -On that note, one of the small changes is that we’ve finally removed support for fat arrows (`=>`); we’ve previously announced that this would happen and that thin arrows (`->`) are the future, and had warnings issued on the legacy syntax for a while. Now it’s gone. - -On a positive note, we’ve added a shorter syntax for array-like table types. Whereas before you had to use a longer `{ [number]: string }` syntax to declare an array-like table that holds strings, or had to define an `Array` type in every. single. module. you. ever. write. ever., now you can simply say `{string}`! This syntax is clean, in line with the value syntax for Lua table literals, and also was chosen by other research projects to add type annotations to Lua. - -(if you’re a monster that uses mixed tables, you’ll have to continue using the longer syntax e.g. `{ [number]: string, n: number }`) - -## Library changes - -There’s only a few small tweaks here this time around on the functionality front: - - * `utf8.charpattern` is now exactly equal to the version from Lua 5.3; this is now possible because we support `\0` in patterns, and was suggested by a user on devforum. We do listen! - * `string.pack` now errors out early when the format specifier is Way Too Large. This was reported on dev forum and subsequently fixed. Note that trying to generate a Moderately Large String (like, 100 MB instead of 100 GB) will still succeed but may take longer than we’d like - we have a plan to accelerate operations on large strings substantially in the coming months. - -## Performance improvements - -We were super focused on other things so this is very short this time around. We have a lot of ideas here but they are waiting for us to finish some other large projects! - - * Method calls on strings via `:` are now ~10% faster than before. We still recommend using fully-qualified calls from string library such as `string.foo(str)`, but extra performance never hurts! - * Speaking of string methods, string.sub is now ~20% faster than before with the help of voodoo magic. - -## Miscellaneous fixes - -There were a few small fixes that didn’t land into any specific category that I wanted to highlight: - - * In some rare cases, debug information on conditions inside loops have been fixed to stop debugger from incorrectly suggesting that the current line is inside a branch that wasn’t taken. As usual, if you ever see debugger misbehaving, please file bugs on this! - * Code following `assert(false)` is now treated as an unreachable destination from the linting and type checking point of view, similarly to error calls. - * Linting support for various format strings has been greatly improved based on fantastic feedback from @Halalaluyafail3 (thanks!). - -Ok, phew, that’s what I get for skipping a month again. Please don’t hesitate to report bugs or suggestions, here or via separate posts. Due to our usual end-of-year code freeze there’s going to be one more recap at the end of the year where we will look back at 2020 and take a small peek into the future. - diff --git a/docs/_posts/2020-11-19-luau-type-checking-release.md b/docs/_posts/2020-11-19-luau-type-checking-release.md deleted file mode 100644 index 35879573..00000000 --- a/docs/_posts/2020-11-19-luau-type-checking-release.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: single -title: "Luau Type Checking Release" ---- - -10 months ago, we’ve started upon the journey of helping Roblox scripters write robust code by introducing [an early beta of type checking](https://devforum.roblox.com/t/luau-type-checking-release). We’ve received a lot of enthusiastic feedback and worked with the community on trying to make sure critical issues are addressed, usability is improved and the type system is ready for prime time. - -Today I’m incredibly excited to announce that the first release of [Luau](https://roblox.github.io/luau/) type checking is officially released! Thanks a lot to @Apakovtac, @EthicalRobot, @fun_enthusiast, @machinamentum, @mrow_pizza and @zeuxcg! - -[Originally posted on the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-type-checking-release/).] - -## What is type checking? - -When Luau code runs, every value has a certain type at runtime - a kind of value it stores. It could be a number, a string, a table, a Roblox Instance or one of many others. Thing is, some operations work on some types but don’t work on others! - -Consider this: -``` -local p = Instance.new("Part") -p.Positio = Vector3.new(1,2,3) -``` -Is this code correct? No - there’s a typo. The way you get to find this typo is by running your code and eventually seeing an error message. Type checker tries to analyze your code before running, by assigning a type to each value based on what we know about how that value was produced, or based on the type you’ve explicitly told us using a new syntax extension, and can produce an error ahead of time: - -!["Positio not found in class Part"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-type-checking-release-screenshot.png) - -This can require some effort up front, especially if you use strict mode, but it can save you valuable time in the future. It can be especially valuable if you have a large complex code base you need to maintain for years, as is the case with many top Roblox games. - -## How do I use type checking? - -A very important feature of Luau type checking you need to know about is that it has three modes: - - * `nocheck`, where we don’t type check the script in question. - * `nonstrict`, where we type check the script but try to be lenient to allow commonly seen patterns even if they may violate type safety - * `strict`, where we try to make sure that every single line of code you write is correct, and every value has a known type. - -The modes can be selected per script by writing a comment at the top of the script that starts with `--!`, e.g. `--!strict`. - -As of this release, the default mode is nocheck. This means by default you actually won’t see the type checking produce feedback on your code! We had to use nocheck by default because we aren’t fully ready to unleash nonstrict mode on unsuspecting users - we need to do a bit more work to make sure that most cases where we tell you that something is wrong are cases where yes, something is actually wrong. - -However we highly encourage trying at least non-strict mode on your codebase. You can do this by opting into a different default via a Studio beta: - -!["Studio option"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-type-checking-release-studio-option.png) - -This beta only changes the default mode. Another way to change the mode is to prepend a `--!` comment to the script - you can do this manually for now, but if anyone in the community wants to release a plugin that does it automatically on selected scripts (+ descendants), that would be swell! - -If you really want your code to be rock solid, we recommend trying out strict mode. Strict mode will require you to use type annotations. - -## What are type annotations and how do I use them? - -Glad you asked! (please pretend you did) Type annotations are a way to tell the type checker what the type of a variable is. Consider this code in strict mode: -``` -function add(x, y) - return x + y -end -``` -Is this code correct? Well, that depends. `add(2, 3)` will work just fine. `add(Vector3.new(1, 2, 3), Vector3.new(4, 5, 6))` will work as well. But `add({}, nil)` probably isn’t a good idea. - -In strict mode, we will insist that the type checker knows the type of all variables, and you’ll need to help the type checker occasionally - by adding types after variable names separated by `:`: -``` -function add(x: number, y: number) - return x + y -end -``` -If you want to tell the type checker “assume this value can be anything and I will take responsibility”, you can use `any` type which will permit any value of any type. - -If you want to learn more about the type annotation syntax, you should read this [documentation on syntax](https://roblox.github.io/luau/syntax.html#type-annotations). We also have a somewhat more complete guide to type checking than this post can provide, that goes into more details on table types, OOP, Roblox classes and enums, interaction with require and other topics - [read it if you’re curious!](https://roblox.github.io/luau/typecheck.html). - -## What happens when I get a type error? - -One concept that’s very important to understand is that right now type errors do not influence whether the code will run or not. - -If you have a type error, this means that our type checker thinks your code has a bug, or doesn’t have enough information to prove the code works fine. But if you really want to forge ahead and run the code - you should feel free to do so! - -This means that you can gradually convert your code to strict mode by adding type annotations and have the code runnable at all times even if it has type errors. - -This also means that it’s safe to publish scripts even if type checker is not fully happy with them - type issues won’t affect script behavior on server/client, they are only displayed in Studio. - -## Do I have to re-learn Lua now?!? - -This is a question we get often! The answer is “no”. - -The way the type system is designed is that it’s completely optional, and you can use as many or as few types as you’d like in your code. - -In non-strict mode, types are meant as a lightweight helper - if your code is likely wrong, we’re going to tell you about it, and it’s up to you on whether to fix the issue, or even disable the type checker on a given problematic file if you really don’t feel like dealing with this. - -In strict mode, types are meant as a power user tool - they will require more time to develop your code, but they will give you a safety net, where changing code will be much less likely to trigger errors at runtime. - -## Is there a performance difference? - -Right now type annotations are ignored by our bytecode compiler; this means that performance of the code you write doesn’t actually depend on whether you use strict, nonstrict or nocheck modes or if you have type annotations. - -This is likely going to change! We have plans for using the type information to generate better bytecode in certain cases, and types are going to be instrumental to just-in-time compilation, something that we’re going to invest time into next year as well. - -Today, however, there’s no difference - type information is completely elided when the bytecode is built, so there is zero runtime impact one way or another. - -## What is next for types? - -This is the first full release of type checking, but it’s by far the last one. We have a lot more ground to cover. Here’s a few things that we’re excited about that will come next: - - * Making nonstrict mode better to the point where we can enable it as a default for all Roblox scripts - - * Adding several features to make strict mode more powerful/friendly, such as typed variadics, type ascription and better generics support - - * Improving type refinements for type/typeof and nil checks - - * Making it possible to view the type of a variable in Studio - - * Reworking autocomplete to use type information instead of the current system - -If you have any feedback on the type system, please don’t hesitate to share it here or in dedicated bug report threads. We’re always happy to fix corner cases that we’ve missed, fix stability issues if they are discovered, improve documentation when it’s not clear or improve error messages when they are hard to understand. \ No newline at end of file diff --git a/docs/_posts/2021-03-01-luau-recap-february-2021.md b/docs/_posts/2021-03-01-luau-recap-february-2021.md deleted file mode 100644 index 1179eaea..00000000 --- a/docs/_posts/2021-03-01-luau-recap-february-2021.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: single -title: "Luau Recap: February 2021" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). It's been a busy few months in Luau! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-february-2021/).] - -## Infallible parser - -Traditional compilers have focused on tasks that can be performed on complete programs, such as type-checking, static analysis and code generation. This is all good, but most programs under development are incomplete! They may have holes, statements that will be filled in later, and lines that are in the middle of being edited. If we'd like to provide support for developers while they are writing code, we need to provide tools for incomplete programs as well as complete ones. - -The first step in this is an *infallible* parser, that always returns an Abstract Syntax Tree, no matter what input it is given. If the program is syntactically incorrect, there will also be some syntax errors, but the parser keeps going and tries to recover from those errors, rather than just giving up. - -The Luau parser now recovers from errors, which means, for example, we can give hints about programs in an IDE. - -![A type error after a syntax error]({{ site.url }}{{ site.baseurl }}/assets/images/type-error-after-syntax-error.png) - -## Type assertions - -The Luau type checker can't know everything about your code, and sometimes it will produce type errors even when you know the code is correct. For example, sometimes the type checker can't work out the intended types, and gives a message such as "Unknown type used... consider adding a type annotation". - -!["Consider adding a type annotation"]({{ site.url }}{{ site.baseurl }}/assets/images/type-annotation-needed.png) - -Previously the only way to add an annotation was to put it on the *declaration* of the variable, but now you can put it on the *use* too. A use of variable `x` at type `T` can be written `x :: T`. For example the type `any` can be used almost anywhere, so a common usage of type assertions is to switch off the type system by writing `x :: any`. - -!["A type assertion y:any"]({{ site.url }}{{ site.baseurl }}/assets/images/type-annotation-provided.png) - -## Typechecking improvements - -We've made various improvements to the Luau typechecker: - - * We allow duplicate function definitions in non-strict mode. - * Better typechecking of `and`, `(f or g)()`, arrays with properties, and `string:format()`. - * Improved typechecking of infinite loops. - * Better error reporting for function type mismatch, type aliases and cyclic types. - -## Performance improvements - -We are continuing to work on optimizing our VM and libraries to make sure idiomatic code keeps improving in performance. Most of these changes are motivated by our benchmark suite; while some improvements may seem small and insignificant, over time these compound and allow us to reach excellent performance. - - * Table key assignments as well as global assignments have been optimized to play nicer with modern CPUs, yielding ~2% speedup in some benchmarks - * Luau function calls are now ~3% faster in most cases; we also have more call optimizations coming up next month! - * Modulo operation (%) is now a bit faster on Windows, resulting in ~2% performance improvement on some benchmarks - -!["Benchmark vs Lua 5.3"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-february-2021-benchmark.png) - -## Debugger improvements - -Our Luau VM implementation is focused on performance and provides a different API for implementation of debugger tools. But it does have its caveats and one of them was inability to debug coroutines (breakpoints/stepping). - -The good news is that we have lifted that limitation and coroutines can now be debugged just like any regular function. This can especially help people who use Promise libraries that rely on coroutines internally. - -![Debugging a coroutine]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-february-2021-debugger.png) - -## Library changes - -`table` library now has a new method, `clear`, that removes all keys from the table but keeps the internal table capacity. When working with large arrays, this can be more efficient than assigning a table to `{}` - the performance gains are similar to that of using `table.create` instead of `{}` *when you expect the number of elements to stay more or less the same*. Note that large empty tables still take memory and are a bit slower for garbage collector to process, so use this with caution. - -In addition to that we found a small bug in `string.char` implementation that allowed creating strings from out-of-range character codes (e.g. `string.char(2000)`); the problem has been fixed and these calls now correctly generate an error. - -## Coming soon... - -* _Generic function types_ will soon be allowed! -``` -function id(x: a): a - return x -end -``` - -* _Typed variadics_ will soon allow types to be given to functions with varying numbers of arguments! -``` -function sum(...: number): number - local result = 0 - for i,v in ipairs({...}) do - result += v - end - return result -end -``` - -And there will be more! diff --git a/docs/_posts/2021-03-29-luau-recap-march-2021.md b/docs/_posts/2021-03-29-luau-recap-march-2021.md deleted file mode 100644 index f91c93e8..00000000 --- a/docs/_posts/2021-03-29-luau-recap-march-2021.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: single -title: "Luau Recap: March 2021" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). It's been a busy month in Luau! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-march-2021/).] - -## Typed variadics - -Luau supports *variadic* functions, meaning ones which can take a variable number of arguments (varargs!) but previously there was no way to specify their type. Now you can! -``` -function f(x: string, ...: number) - print(x) - print(...) -end -f("hi") -f("lo", 5, 27) -``` -This function takes a string, plus as many numbers as you like, but if you try calling it with anything else, you'll get a type error, for example `f("oh", true)` gives an error "Type `boolean` could not be converted into `number`" - -Variadics can be used in function declarations, and function types, for example -``` -type T = { - sum: (...number) -> number -} -function f(x: T) - print(x.sum(1, 2, 3)) -end -``` - -## Generic functions - -**WARNING** Generic functions are currently disabled as we're fixing some critical bugs. - -## Typechecking improvements - -We've made various improvements to the Luau typechecker: - -* Check bodies of methods whose `self` has type `any` -* More precise types for `debug.*` methods -* Mutually dependent type aliases are now handled correctly - -## Performance improvements - -We are continuing to squeeze the performance out of all sorts of possible code; this is an ongoing process and we have many improvements in the pipeline, big and small. These are the changes that are already live: - -* Significantly optimized non-variadic function calls, improving performance by up to 10% on call-heavy benchmarks -* Improve performance of `math.clamp`, `math.sign` and `math.round` by 2.3x, 2x and 1.6x respectively -* Optimized `coroutine.resume` with ~10% gains on coroutine-heavy benchmarks -* Equality comparisons are now a bit faster when comparing to constants, including `nil`; this makes some benchmarks 2-3% faster -* Calls to builtin functions like `math.abs` or `bit32.rrotate` are now significantly faster in some cases, e.g. this makes SHA256 benchmark 25% faster -* `rawset`, `rawget`, `rawequal` and 2-argument `table.insert` are now 40-50% faster; notably, `table.insert(t, v)` is now faster than `t[#t+1]=v` - -Note that we work off a set of benchmarks that we consider representative of the wide gamut of code that runs on Luau. If you have code that you think should be running faster, never hesitate to open a feature request / bug report on Roblox Developer Forum! - -## Debugger improvements - -We continue to improve our Luau debugger and we have added a new feature to help with coroutine call debugging. -The call stack that is being displayed while stopped inside a coroutine frame will display the chain of threads that have called it. - -Before: - -!["Old debugger"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-march-2021-debug-before.png) - -After: - -!["New debugger"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-march-2021-debug-after.png) - -We have restored the ability to break on all errors inside the scripts. -This is useful in cases where you need to track the location and state of an error that is triggered inside 'pcall'. -For example, when the error that's triggered is not the one you expected. - -!["Break on all exceptions"]({{ site.url }}{{ site.baseurl }}/assets/images/luau-recap-march-2021-debug-dialog.png) - -## Library changes - -* Added the `debug.info` function which allows retrieving information about stack frames or functions; similarly to `debug.getinfo` from Lua, this accepts an options string that must consist of characters `slnfa`; unlike Lua that returns a table, the function returns all requested values one after another to improve performance. - -## New logo - -Luau now has a shiny new logo! - -!["New logo!"]({{ site.url }}{{ site.baseurl }}/assets/images/luau.png) - -## Coming soon... - -* Generic variadics! -* Native Vector3 math with dramatic performance improvements! -* Better tools for memory analysis! -* Better treatment of cyclic requires during type checking! -* Better type refinements including nil-ability checks, `and`/`or` and `IsA`! diff --git a/docs/_posts/2021-04-30-luau-recap-april-2021.md b/docs/_posts/2021-04-30-luau-recap-april-2021.md deleted file mode 100644 index dc0e284f..00000000 --- a/docs/_posts/2021-04-30-luau-recap-april-2021.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: single -title: "Luau Recap: April 2021" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). Another busy month in Luau with many performance improvements. - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-april-2021/).] - -## Editor features - -Luau implementation now provides an internal API for type-aware autocomplete suggestions. - -Roblox Studio will be the first user of this API and we plan for a new beta feature to come soon in addition to existing Luau-powered beta features like Go To Declaration, Type Hovers and Script Function Filter (you should check those out!) - -## Performance improvements - -Performance is a very important part of Luau implementation and we continue bringing in new performance optimizations: - -* We've finished the work on internal `vector` value type that will be used by `Vector3` type in Roblox. Improvements of up to 10x can be seen for primitive operations and some of our heavy `Vector3` benchmarks have seen 2-3x improvement. You can read more about this feature [on Roblox Developer forums](https://devforum.roblox.com/t/native-luau-vector3-beta/) -* By optimizing the way string buffers are handled internally, we bring improvements to string operations including `string.lower`, `string.upper`, `string.reverse`, `string.rep`, `table.concat` and string concatenation operator `..`. Biggest improvements can be seen on large strings -* Improved performance of `table.insert` and `table.remove`. Operations in the middle of large arrays can be multiple times faster with this change -* Improved performance of internal table resize which brings additional 30% speedup for `table.insert` -* Improved performance of checks for missing table fields - -## Generic functions - -We had to temporarily disable generic function definitions last month after finding critical issues in the implementation. - -While they are still not available, we are making steady progress on fixing those issues and making additional typechecking improvements to bring them back in. - -## Debugger improvements - -Debugging is now supported for parallel Luau Actors in Roblox Studio. - -Read more about the feature [on Roblox Developer forums](https://devforum.roblox.com/t/parallel-lua-beta/) and try it out yourself. - -## Behavior changes - -Backwards compatibility is important for Luau, but sometimes a change is required to fix corner cases in the language / libraries or to improve performance. Even still, we try to keep impact of these changes to a minimum: - -* __eq tag method will always get called for table comparisons even when a table is compared to itself - -## Coming soon... - -* Better type refinements for statements under a condition using a new constraint resolver. Luau will now understand complex conditions combining `and`/`not` and type guards with more improvements to come diff --git a/docs/_posts/2021-05-31-luau-recap-may-2021.md b/docs/_posts/2021-05-31-luau-recap-may-2021.md deleted file mode 100644 index 1965d2b8..00000000 --- a/docs/_posts/2021-05-31-luau-recap-may-2021.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: single -title: "Luau Recap: May 2021" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). This month we have added a new small feature to the language and spent a lot of time improving our typechecker. - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-may-2021/).] - -## Named function type arguments - -We've updated Luau syntax to support optional names of arguments inside function types. -The syntax follows the same format as regular function argument declarations: `(a: number, b: string)` - -Names can be provided in any place where function type is used, for example: - -* in type aliases: -``` -type MyCallbackType = (cost: number, name: string) -> string -``` - -* for variables: -``` -local cb: (amount: number) -> number -local function foo(cb: (name: string) -> ()) -``` - -Variadic arguments cannot have an extra name, they are already written as ...: number. - -These names are used for documentation purposes and we also plan to display them in Roblox Studio auto-complete and type hovers. -They do not affect how the typechecking of Luau scripts is performed. - -## Typechecking improvements - -Speaking of typechecking, we've implemented many improvements this month: -* Typechecker will now visit bodies of all member functions, previously it didn't check methods if the self type was unknown -* Made improvements to cyclic module import detection and error reporting -* Fixed incorrect error on modification of table intersection type fields -* When using an 'or' between a nillable type and a value, the resulting type is now inferred to be non-nil -* We have improved error messages that suggest to use ':' for a method call -* Fixed order of types in type mismatch error that was sometimes reversed -* Fixed an issue with `table.insert` function signature -* Fixed a bug which caused spurious unknown global errors - -We've also added new checks to our linter: -* A new check will report uses of deprecated Roblox APIs -* Linter will now suggest replacing globals with locals in more cases -* New warning is generated if array loop starts or ends on index '0', but the array is indexed from '1' -* FormatString lint will now check string patterns for `find`/`match` calls via `:` when object type is known to be a string - -We also fixed one of the sources for "Free types leaked into this module's public interface" error message and we are working to fix the remaining ones. - -As usual, typechecking improvements will not break execution of your games even if new errors get reported. - -## Editor features - -We continue to improve our built-in support for auto-complete that will be used in future Roblox Studio updates and will make it easier to implement custom extensions for applications that support Language Server Protocol. - -As part of this work we will improve the type information provided by Roblox APIs to match actual arguments and results. - -## Behavior changes - -When a relational comparison fails at runtime, the error message now specifies the comparison direction (e.g. `attempt to compare nil <= number`) - -## Performance improvements - -* Improved performance of table lookup with an index operator and a literal string: `t["name"]` -* Bytecode compilation is now ~5% faster which can improve server startup time for games with lots of scripts diff --git a/docs/_posts/2021-06-30-luau-recap-june-2021.md b/docs/_posts/2021-06-30-luau-recap-june-2021.md deleted file mode 100644 index 51dcb20a..00000000 --- a/docs/_posts/2021-06-30-luau-recap-june-2021.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: single -title: "Luau Recap: June 2021" ---- - -Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). Most of our team was busy working on improving Luau interaction with Roblox Studio for an upcoming feature this month, but we were able to add typechecking and performance improvements as well! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-june-2021/).] - -## Constraint Resolver - -To improve type inference under conditional expressions and other dynamic type changes (like assignments) we have introduced a new constraint resolver framework into Luau type checker. - -This framework allows us to handle more complex expressions that combine `and`/`not` operators and type guards. - -Type guards support include expressions like: - -* `if instance:IsA("ClassName") then` -* `if enum:IsA("EnumName") then` -* `if type(v) == "string" then` - -This framework is extensible and we have plans for future improvements with `a == b`/`a ~= b` equality constraints and handling of table field assignments. - -It is now also possible to get better type information inside `else` blocks of an `if` statement. - -A few examples to see the constraint resolver in action: -```lua -function say_hello(name: string?) - -- extra parentheses were enough to trip the old typechecker - if (name) then - print("Hello " .. name .. "!") - else - print("Hello mysterious stranger!") - end -end -``` -```lua -function say_hello(name: string?, surname: string?) - -- but now we handle that and more complex expressions as well - if not (name and surname) then - print("Hello mysterious stranger!") - else - print("Hello " .. name .. " " .. surname .. "!") - end -end -``` - -Please note that constraints are currently placed only on local and global variables. -One of our goals is to include support for table members in the future. - -## Typechecking improvements - -We have improved the way we handled module `require` calls. Previously, we had a simple pattern match on the `local m = require(...)` statement, but now we have replaced it with a general handling of the function call in any context. - -Handling of union types in equality operators was fixed to remove incorrect error reports. - -A new `IsA` method was introduced to EnumItem to check the type of a Roblox Enum. -This is intended to replace the `enumItem.EnumType == Enum.NormalId` pattern in the code for a construct that allows our constraint resolver to infer better types. - -Additional fixes include: -* `table.pack` return type was fixed -* A limit was added for deeply nested code blocks to avoid a crash -* We have improved the type names that are presented in error messages and Roblox Studio -* Error recovery was added to field access of a `table?` type. While you add a check for `nil`, typechecking can continue with better type information in other expressions. -* We handled a few internal compiler errors and rare crashes - -## Editor features - -If you have Luau-Powered Type Hover beta feature enabled in Roblox Studio, you will see more function argument names inside function type hovers. - -## Behavior changes - -We no longer allow referencing a function by name inside argument list of that function: - -`local function f(a: number, b: typeof(f)) -- 'f' is no longer visible here` - -## Performance improvements - -As always, we look for ways to improve performance of your scripts: -* We have fixed memory use of Roblox Actor scripts in Parallel Luau beta feature -* Performance of table clone through `table.move` has been greatly improved -* Table length lookup has been optimized, which also brings improvement to table element insertion speed -* Built-in Vector3 type support that we mentioned in [April](https://devforum.roblox.com/t/native-luau-vector3-beta/) is now enabled for everyone diff --git a/docs/_posts/2021-07-30-luau-recap-july-2021.md b/docs/_posts/2021-07-30-luau-recap-july-2021.md deleted file mode 100644 index 62273342..00000000 --- a/docs/_posts/2021-07-30-luau-recap-july-2021.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: single -title: "Luau Recap: July 2021" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). Our team was still busy working on upcoming Studio Beta feature for script editor, but we did fit in multiple typechecking improvements. - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-july-2021/).] - -## Typechecking improvements - -A common complaint that we've received was a false-positive error when table with an optional or union element type is defined: -```lua ---!strict -type Foo = {x: number | string} -local foos: {Foo} = { - {x = 1234567}, - {x = "hello"} -- Type 'string' could not be converted into 'number' -} -``` -This case is now handled and skipping optional fields is allowed as well: -```lua ---!strict -type Foo = { - a: number, - b: number? -} -local foos: {Foo} = { - { a = 1 }, - { a = 2, b = 3 } -- now ok -} -``` -Current fix only handles table element type in assignments, but we plan to extend that to function call arguments and individual table fields. - -Like we've mentioned last time, we will continue working on our new type constraint resolver and this month it learned to handle more complex expressions (including type guards) inside `assert` conditions: -```lua ---!strict -local part = script.Parent:WaitForChild("Part") -assert(part:IsA("BasePart")) -local basepart: BasePart = part -- no longer an error -``` - -And speaking of assertions, we applied a minor fix so that the type of the `assert` function correctly defines a second optional `string?` parameter. - -We have also fixed the type of `string.gmatch` function reported by one of the community members. -We know about issues in a few additional library functions and we'll work to fix them as well. - -Hopefully, you didn't see 'free type leak' errors that underline your whole script, but some of you did and reported them to us. -We read those reports and two additional cases have been fixed this month. -We now track only a single one that should be fixed next month. - -Another false positive error that was fixed involves tables with __call metatable function. -We no longer report a type error when this method is invoked and we'll also make sure that given arguments match the function definition: -```lua ---!strict -local t = { x = 2 } - -local x = setmetatable(t, { - __call = function(self, a: number) - return a * self.x - end -}) -local a = x(2) -- no longer an error -``` -Please note that while call operator on a table is now handled, function types in Luau are distinct from table types and you'll still get an error if you try to assign this table to a variable of a function type. - -## Linter improvements - -A new 'TableOperations' lint check was added that will detect common correctness or performance issues with `table.insert` and `table.remove`: -```lua --- table.insert will insert the value before the last element, which is likely a bug; consider removing the second argument or wrap it in parentheses to silence -table.insert(t, #t, 42) - --- table.insert will append the value to the table; consider removing the second argument for efficiency -table.insert(t, #t + 1, 42) - --- table.insert uses index 0 but arrays are 1-based; did you mean 1 instead? -table.insert(t, 0, 42) - --- table.remove uses index 0 but arrays are 1-based; did you mean 1 instead? -table.remove(t, 0) - --- table.remove will remove the value before the last element, which is likely a bug; consider removing the second argument or wrap it in parentheses to silence -table.remove(t, #t - 1) - --- table.insert may change behavior if the call returns more than one result; consider adding parentheses around second argument -table.insert(t, string.find("hello", "h")) -``` - -Another new check is 'DuplicateConditions'. The name speaks for itself, `if` statement chains with duplicate conditions and expressions containing `and`/`or` operations with redundant parts will now be detected: -```lua -if x then - -- ... -elseif not x then - -- ... -elseif x̳ then -- Condition has already been checked on line 1 - -- ... -end - -local success = a and a̳ -- Condition has already been checked on column 17 - -local good = (a or b) or a̳ -- Condition has already been checked on column 15 -``` - -We've also fixed an incorrect lint warning when `typeof` is used to check for `EnumItem`. - -## Editor features - -An issue was fixed that prevented the debugger from displaying values inside Roblox callback functions when an error was reported inside of it. - -## Behavior changes - -`table.insert` will no longer move elements forward 1 spot when index is negative or 0. - -This change also fixed a performance issue when `table.insert` was called with a large negative index. - -The 'TableOperations' lint mentioned earlier will flag cases where insertion at index 0 is performed. diff --git a/docs/_posts/2021-08-31-luau-recap-august-2021.md b/docs/_posts/2021-08-31-luau-recap-august-2021.md deleted file mode 100644 index 1b121328..00000000 --- a/docs/_posts/2021-08-31-luau-recap-august-2021.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: single -title: "Luau Recap: August 2021" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-august-2021/).] - -## Editor features - -The Roblox Studio [Luau-Powered Autocomplete & Language Features Beta](https://devforum.roblox.com/t/script-editor-luau-powered-autocomplete-language-features-beta) that our team has been working on has finally been released! -Be sure to check that out and leave your feedback for things we can improve. - -To support that feature, a lot of work went into: -* Improving fault-tolerant parser recovery scenarios -* Storing additional information in the AST, including comments, better location information and partial syntax data -* Tracking additional information about types and their fields, including tracking definition locations, function argument names, deprecation state and custom Roblox-specific tags -* Updating reflection information to provide more specific `Instance` types and correct previously missing or wrong type annotations -* Hybrid typechecking mode which tries to infer types even in scripts with no typechecking enabled -* Support for types that are attached to the `DataModel` tree elements to provide instance member information -* Placing limits to finish typechecking in a finite space/time -* Adding Autocomplete API for the Roblox Studio to get location-based entity information and appropriate suggestions -* Additional type inference engine improvements and fixes - -While our work continues to respond to the feedback we receive, our team members are shifting focus to add generic functions, improve type refinements in conditionals, extend Parallel Luau, improve Lua VM performance and provide documentation. - -## Typechecking improvements - -Type constraint resolver now remembers constraints placed on individual table fields. - -This should fix false-positive errors reported after making sure the optional table field is present: -```lua ---!strict -local t: {value: number?} = {value = 2} - -if t.value then - local v: number = t.value -- ok -end -``` - -And it can also refine field type to a more specific one: -```lua ---!strict -local t: {value: string|number} = {value = 2} - -if type(t.value) == "number" then - return t.value * 2 -- ok -end -``` - -Like before, combining multiple conditions using 'and' and 'not' is also supported. - ---- - -Constructing arrays with different values for optional/union types are now also supported for individual table fields and in functions call arguments: -```lua ---!strict -type Foo = {x: number | string, b: number?} - -local function foo(l: {Foo}) end - -foo({ - {x = 1234567}, - {x = "hello"}, -- now ok -}) - -type Bar = {a: {Foo}} - -local foos: Bar = {a = { - {x = 1234567}, - {x = "hello", b = 2}, -- now ok -}} -``` - ---- - -Finally, we have fixed an issue with Roblox class field access using indexing like `part["Anchored"] = true`. - -## Linter improvements - -We have added a new linter check for duplicate local variable definitions. - -It is created to find duplicate names in cases like these: -```lua -local function foo(a1, a2, a2) -- Function argument 'a2' already defined on column 24 -local a1, a2, a2 = f() -- Variable 'a2' already defined on column 11 - -local bar = {} -function bar:test(self) -- Function argument 'self' already defined implicitly -``` - -Our UnknownType linter warning was extended to check for correct class names passed into `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstAncestorOfClass` and `FindFirstAncestorWhichIsA` functions. - -## Performance improvements - -We have added an optimization to 'table.unpack' for 2x performance improvement. - -We've also implemented an extra optimization for tables to predict required table capacity based on fields that are assigned to it in the code after construction. This can reduce the need to reallocate tables. - -Variadic call performance was fine-tuned and is now ~10% faster. - -Construction of array literals was optimized for a ~7% improvement. - -Another optimization this month changes the location and rate of garbage collection invocations. -We now try to avoid calling GC during the script execution and perform all the work in the GcJob part of the frame (it could be seen in the performance profiler). When possible, we can now skip that job in the frame completely, if we have some memory budget available. - -## Other improvements - -For general stability improvements we fixed a crash when strange types like '`nil??`' are used and when users have their own global functions named '`require`'. - -Indexing a table with an incompatible type will now show squiggly error lines under the index instead of the whole expression, which was a bit misleading. - -An issue with debug information that caused `repeat ... until` condition line to be skipped when stepping was fixed. - -Type output was improved to replace display of types like '`{(g405) -> g405}`' with '`{(a) -> a}`'. diff --git a/docs/_posts/2021-09-30-luau-recap-september-2021.md b/docs/_posts/2021-09-30-luau-recap-september-2021.md deleted file mode 100644 index 87793ebe..00000000 --- a/docs/_posts/2021-09-30-luau-recap-september-2021.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: single -title: "Luau Recap: September 2021" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-september-2021/).] - -## Generic functions - -The big news this month is that generic functions are back! - -Luau has always supported type inference for generic functions, for example: -```lua -type Point = { x: X, y: Y } -function swap(p) - return { x = p.y, y = p.x } -end -local p : Point = swap({ x = "hi", y = 37 }) -local q : Point = swap({ x = "hi", y = true }) -``` -but up until now, there's been no way to write the type of `swap`, since Luau didn't have type parameters to functions (just regular old data parameters). Well, now you can: -```lua -function swap(p : Point): Point - return { x = p.y, y = p.x } -end -``` -Generic functions can be used in function declarations, and function types too, for example -```lua -type Swapper = { swap : (Point) -> Point } -``` - -People may remember that back in -[April](https://devforum.roblox.com/t/luau-recap-april-2021/) we -announced generic functions, but then had to disable them. That was -because [DataBrain](https://devforum.roblox.com/u/databrain) discovered a [nasty -interaction](https://devforum.roblox.com/t/recent-type-system-regressions-for-generic-parametered-functions/) -between `typeof` and generics, which meant that it was possible to -write code that needed nested generic functions, which weren't -supported back then. - -Well, now we do support nested generic functions, so you can write code like -```lua -function mkPoint(x) - return function(y) - return { x = x, y = y } - end -end -``` -and have Luau infer a type where a generic function returns a generic function -```lua -function mkPoint(x : X) : (Y) -> Point - return function(y : Y) : Point - return { x = x, y = y } - end -end -``` -For people who like jargon, Luau now supports *Rank N Types*, where -previously it only supported Rank 1 Types. - -## Bidirectional typechecking - -Up until now, Luau has used *bottom-up* typechecking. For example, for -a function call `f(x)` we first find the type of `f` (say it's -`(T)->U`) and the type for `x` (say it's `V`), make sure that `V` is -a subtype of `T`, so the type of `f(x)` is `U`. - -This works in many cases, but has problems with examples like registering -callback event handlers. In code like -```lua -part.Touched:Connect(function (other) ... end) -``` -if we try to typecheck this bottom-up, we have a problem because -we don't know the type of `other` when we typecheck the body of the function. - -What we want in this case is a mix of bottom-up and *top-down* typechecking. -In this case, from the type of `part.Touched:Connect` we know that `other` must -have type `BasePart`. - -This mix of top-down and bottom-up typechecking is called -*bidirectional typechecking*, and means that tools like type-directed -autocomplete can provide better suggestions. - -## Editor features - -We have made some improvements to the Luau-powered autocomplete beta feature in Roblox Studio: - - * We no longer give autocomplete suggestions for client-only APIs in server-side scripts, - or vice versa. - * For table literals with known shape, we provide autocomplete suggestions for properties. - * We provide autocomplete suggestions for `Player.PlayerGui`. - * Keywords such as `then` and `else` are autocompleted better. - * Autocompletion is disabled inside a comment span (a comment starting `--[[`). - -## Typechecking improvements - -In other typechecking news: - - * The Luau constraint resolver can now refine the operands of equality expressions. - * Luau type guard refinements now support more arbitrary cases, for instance `typeof(foo) ~= "Instance"` eliminates anything not a subclass of `Instance`. - * We fixed some crashes caused by use-after-free during type inference. - * We do a better job of tracking updates when script is moved inside the data model. - * We fixed one of the ways that [recursive types could cause free types to leak](https://devforum.roblox.com/t/free-types-leaked-into-this-modules-public-interface/1459070). - * We improved the way that `return` statements interact with mutually recursive - function declarations. - * We improved parser recovery from code which looks like a function call (but isn't) such as -```lua -local x = y -(expr)[smth] = z -``` - * We consistently report parse errors before type errors. - * We display more types as `*unknown*` rather than as an internal type name like `error####`. - * Luau now infers the result of `Instance:Clone()` much more accurately. - -## Performance improvements - - * `Vector3.new` constructor has been optimized and is now ~2x faster - * A previously implemented optimization for table size prediction has been enhanced to predict final table size when `setmetatable` is used, such as `local self = setmetatable({}, Klass)` - * Method calls for user-specified objects have been optimized and are now 2-4% faster - * `debug.traceback` is now 1.5x faster, although `debug.info` is likely still superior for performance-conscious code - * Creating table literals with explicit numeric indices, such as `{ [1] = 42 }`, is now noticeably faster, although list-style construction is still recommended. - -## Other improvements - - * The existing 'TableLiteral' lint now flags cases when table literals have duplicate numeric indices, such as `{ [1] = 1, [1] = 2 }` diff --git a/docs/_posts/2021-10-31-luau-recap-october-2021.md b/docs/_posts/2021-10-31-luau-recap-october-2021.md deleted file mode 100644 index 2e056424..00000000 --- a/docs/_posts/2021-10-31-luau-recap-october-2021.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: single -title: "Luau Recap: October 2021" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-october-2021/).] - -## if-then-else expression - -In addition to supporting standard if *statements*, Luau adds support for if *expressions*. -Syntactically, `if-then-else` expressions look very similar to if statements. -However instead of conditionally executing blocks of code, if expressions conditionally evaluate expressions and return the value produced as a result. -Also, unlike if statements, if expressions do not terminate with the `end` keyword. - -Here is a simple example of an `if-then-else` expression: -```lua -local maxValue = if a > b then a else b -``` - -`if-then-else` expressions may occur in any place a regular expression is used. -The `if-then-else` expression must match `if then else `; -it can also contain an arbitrary number of `elseif` clauses, like `if then elseif then else `. -Note that in either case, `else` is mandatory. - -Here's is an example demonstrating `elseif`: -```lua -local sign = if x < 0 then -1 elseif x > 0 then 1 else 0 -``` - -**Note:** In Luau, the `if-then-else` expression is preferred vs the standard Lua idiom of writing `a and b or c` (which roughly simulates a ternary operator). However, the Lua idiom may return an unexpected result if `b` evaluates to false. -The `if-then-else` expression will behave as expected in all situations. - -## Library improvements - -New additions to the `table` library have arrived: - -```lua -function table.freeze(t) -``` - -Given a non-frozen table, freezes it such that all subsequent attempts to modify the table or assign its metatable raise an error. -If the input table is already frozen or has a protected metatable, the function raises an error; otherwise it returns the input table. -Note that the table is frozen in-place and is not being copied. -Additionally, only `t` is frozen, and keys/values/metatable of `t` don't change their state and need to be frozen separately if desired. - -```lua -function table.isfrozen(t): boolean -``` - -Returns `true` if and only if the input table is frozen. - -## Typechecking improvements - -We continue work on our type constraint resolver and have multiple improvements this month. - -We now resolve constraints that are created by `or` expressions. -In the following example, by checking against multiple type alternatives, we learn that value is a union of those types: -```lua ---!strict -local function f(x: any) - if type(x) == "number" or type(x) == "string" then - local foo = x -- 'foo' type is known to be 'number | string' here - -- ... - end -end -``` - -Support for `or` constraints allowed us to handle additional scenarios with `and` and `not` expressions to reduce false positives after specific type guards. - -And speaking of type guards, we now correctly handle sub-class relationships in those checks: -```lua ---!strict -local function f(x: Part | Folder | string) - if typeof(x) == "Instance" then - local foo = x -- 'foo' type is known to be 'Part | Folder' here - else - local bar = x -- 'bar' type is known to be 'string' here - end -end -``` - -One more fix handles the `a and b or c` expression when 'b' depends on 'a': -```lua ---!strict -function f(t: {x: number}?) - local a = t and t.x or 5 -- 'a' is a 'number', no false positive errors here -end -``` - -Of course, our new if-then-else expressions handle this case as well. -```lua ---!strict -function f(t: {x: number}?) - local a = if t then t.x else 5 -- 'a' is a 'number', no false positive errors here -end -``` - ---- -We have extended bidirectional typechecking that was announced last month to propagate types in additional statements and expressions. -```lua ---!strict -function getSortFunction(): (number, number) -> boolean - return function(a, b) return a > b end -- a and b are now known to be 'number' here -end - -local comp = getSortFunction() - -comp = function(a, b) return a < b end -- a and b are now known to be 'number' here as well -``` - ---- -We've also improved some of our messages with union types and optional types (unions types with `nil`). - -When optional types are used incorrectly, you get better messages. For example: -```lua ---!strict -function f(a: {number}?) - return a[1] -- "Value of type '{number}?' could be nil" instead of "'{number}?' is not a table' -end -``` - -When a property of a union type is accessed, but is missing from some of the options, we will report which options are not valid: -```lua ---!strict -type A = { x: number, y: number } -type B = { x: number } -local a: A | B -local b = a.y -- Key 'y' is missing from 'B' in the type 'A | B' -``` - ---- -When we enabled generic functions last month, some users might have seen a strange error about generic functions not being compatible with regular ones. - -This was caused by undefined behaviour of recursive types. -We have now added a restriction on how generic type parameters can be used in recursive types: [RFC: Recursive type restriction](https://github.com/Roblox/luau/blob/master/rfcs/recursive-type-restriction.md) - -## Performance improvements - -An improvement to the Stop-The-World (atomic in Lua terms) stage of the garbage collector was made to reduce time taken by that step by 4x factor. -While this step only happens once during a GC cycle, it cannot be split into small parts and long times were visible as frame time spikes. - -Table construction and resize was optimized further; as a result, many instances of table construction see 10-20% improvements -for smaller tables on all platforms and 20%+ improvements on Windows. - -Bytecode compiler has been optimized for giant table literals, resulting in 3x higher compilation throughput for certain files on AMD Zen architecture. - -Coroutine resumption has been optimized and is now ~10% faster for coroutine-heavy code. - -Array reads and writes are also now a bit faster resulting in 1-3% lift in array-heavy benchmarks. diff --git a/docs/_posts/2021-11-03-luau-goes-open-source.md b/docs/_posts/2021-11-03-luau-goes-open-source.md deleted file mode 100644 index f85e071e..00000000 --- a/docs/_posts/2021-11-03-luau-goes-open-source.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: single -title: "Luau Goes Open-Source" ---- - -When Roblox was created 15 years ago, we chose Lua as the scripting language. Lua was small, fast, easy to embed and learn and opened up enormous possibilities for our developers. - -A lot in Roblox was built on Lua including hundreds of thousands of lines of internally-developed code that powers Roblox App and Roblox Studio to this day, and the millions of experiences that developers have created. For many of them, it was the first programming language they’ve learned. - -A few years ago, we started looking into how we can evolve Lua to be even faster, have better ergonomics, make it easier to write robust code and to unlock an ecosystem of rich tooling—from better static analysis to IDE integrations. - -This is how Luau was born. - -Luau is a new language that started from Lua 5.1 and kept evolving while keeping backwards compatibility and preserving the original design goals: simplicity, performance, embeddability. - -We’re incredibly grateful for the foundation that Lua has been—it’s been a joy to build on top of! So now we want to give back to the community at large. - -Starting today, [Luau](https://luau-lang.org) is no longer an inseparable part of Roblox platform; it’s a separate, open-source language. - -Luau is available at [https://github.com/Roblox/luau](https://github.com/Roblox/luau) and comes with the source code for the language runtime and all associated tooling: compiler, type checker, linter. The code is available to anyone, free of charge, under the terms of MIT License. We’re happy to accept contributions to the language, whether that’s documentation or source code. - -The language evolution is driven by an RFC process that is also open to the public. - -We are committed to improving Luau going forward—it remains a central piece of technology at Roblox. The team that works on the language keeps growing, and we have lots of ideas! The language will become even faster, even nicer to work with, even more powerful. - -We can’t wait to see what we can build, together. diff --git a/docs/_posts/2021-11-29-luau-recap-november-2021.md b/docs/_posts/2021-11-29-luau-recap-november-2021.md deleted file mode 100644 index 381b2455..00000000 --- a/docs/_posts/2021-11-29-luau-recap-november-2021.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: single -title: "Luau Recap: November 2021" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-november-2021/).] - -## Type packs in type aliases - -Type packs are the construct Luau uses to represent a sequence of types. We've had syntax for generic type packs for a while now, and it sees use in generic functions, but it hasn't been available in type aliases. That has changed, and it is now syntactically legal to write the following type alias: -```lua -type X = () -> A... -type Y = X -``` - -We've also added support for explicit type packs. Previously, it was impossible to instantiate a generic with two or more type pack parameters, because it wasn't clear where the first pack ended and the second one began. We have introduced a new syntax for this use case: -``` -type Fn = (P...) -> R... -type X = Fn<(number, string), (string, number)> -``` - -For more information, check out [the documentation](https://luau-lang.org/typecheck#type-packs) or [the RFC](https://github.com/Roblox/luau/blob/f86d4c6995418e489a55be0100159009492778ff/rfcs/syntax-type-alias-type-packs.md) for this feature. - -## Luau is open-source! - -We announced this in early November but it deserves repeating: Luau is now an open-source project! You can use Luau outside of Roblox, subject to MIT License, and - importantly - we accept contributions. - -Many changes contributed by community, both Roblox and external, have been merged since we've made Luau open source. Of note are two visible changes that shipped on Roblox platform: - -- The type error "Expected to return X values, but Y values are returned here" actually had X and Y swapped! This is now fixed. -- Luau compiler dutifully computed the length of the string when using `#` operator on a string literal; this is now fixed and `#"foo"` compiles to 3. - -You might think that C++ is a scary language and you can't contribute to Luau. If so, you'd be happy to know that the contents of https://luau-lang.org, where we host our documentation, is also hosted on GitHub in the same repository (https://github.com/Roblox/luau/tree/master/docs) and that we'd love the community to contribute improvements to documentation among other changes! For example see [issues in this list](https://github.com/Roblox/luau/issues?q=is%3Aissue+is%3Aopen+label%3A%22pr+welcome%22) that start with "Documentation", but all other changes and additions to documentation are also welcome. - -## Library improvements - -```lua -function bit32.countlz(n: number): number -function bit32.countrz(n: number): number -``` -Given a number, returns the number of preceding left or trailing right-hand bits that are `0`. - -See [the RFC for these functions](https://github.com/Roblox/luau/blob/f86d4c6995418e489a55be0100159009492778ff/rfcs/function-bit32-countlz-countrz.md) for more information. - -## Type checking improvements - -We have enabled a rewrite of how Luau handles `require` tracing. This has two main effects: firstly, in strict mode, `require` statements that Luau can't resolve will trigger type errors; secondly, Luau now understands the `FindFirstAncestor` method in `require` expressions. - -Luau now warns when the index to `table.move` is 0, as this is non-idiomatic and performs poorly. If this behavior is intentional, wrap the index in parentheses to suppress the warning. - -Luau now provides additional context in table and class type mismatch errors. - -## Performance improvements - -We have enabled several changes that aim to avoid allocating a new closure object in cases where it's not necessary to. This is helpful in cases where many closures are being allocated; in our benchmark suite, the two benchmarks that allocate a large number of closures improved by 15% and 5%, respectively. - -When checking union types, we now try possibilities whose synthetic names match. This will speed up type checking unions in cases where synthetic names are populated. - -We have also enabled an optimization that shares state in a hot path on the type checker. This will improve type checking performance. - -The Luau VM now attempts to cache the length of tables' array portion. This change showed a small performance improvement in benchmarks, and should speed up `#` expressions. - -The Luau type checker now caches a specific category of table unification results. This can improve type checking performance significantly when the same set of types is used frequently. - -When Luau is not retaining type graphs, the type checker now discards more of a module's type surface after type checking it. This improves memory usage significantly. - -## Bug fixes - -We've fixed a bug where on ARM systems (mobile), packing negative numbers using unsigned formats in `string.pack` would produce the wrong result. - -We've fixed an issue with type aliases that reuse generic type names that caused them to be instantiated incorrectly. - -We've corrected a subtle bug that could cause free types to leak into a table type when a free table is bound to that table. - -We've fixed an issue that could cause Luau to report an infinitely recursive type error when the type was not infinitely recursive. diff --git a/docs/_posts/2022-01-27-luau-recap-january-2022.md b/docs/_posts/2022-01-27-luau-recap-january-2022.md deleted file mode 100644 index 5ee10022..00000000 --- a/docs/_posts/2022-01-27-luau-recap-january-2022.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: single -title: "Luau Recap: January 2022" ---- - -Luau is our programming language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Find us on GitHub](https://github.com/Roblox/luau)! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-january-2022/).] - -## Performance improvements - -The implementation of `tostring` has been rewritten. This change replaces the default number->string conversion with a -new algorithm called Schubfach, which allows us to produce the shortest precise round-trippable representation of any -input number very quickly. - -While performance is not the main driving factor, this also happens to be significantly faster than our old -implementation (up to 10x depending on the number and the platform). - ---- - -Make `tonumber(x)` ~2x faster by avoiding reparsing string arguments. - ---- - -The Luau compiler now optimizes table literals where keys are constant variables the same way as if they were constants, eg - -```lua -local r, g, b = 1, 2, 3 -local col = { [r] = 255, [g] = 0, [b] = 255 } -``` - -## Improvements to type assertions - -The `::` type assertion operator can now be used to coerce a value between any two related types. Previously, it could -only be used for downcasts or casts to `any`. The following used to be invalid, but is now valid: - -```lua -local t = {x=0, y=0} -local a = t :: {x: number} -``` - -## Typechecking improvements - -An issue surrounding table literals and indexers has been fixed: - -```lua -type RecolorMap = {[string]: RecolorMap | Color3} - -local hatRecolorMap: RecolorMap = { - Brim = Color3.fromRGB(255, 0, 0), -- We used to report an error here - Top = Color3.fromRGB(255, 0, 0) -} -``` - ---- -Accessing a property whose base expression was previously refined will now return the correct result. - -## Linter improvements - -`table.create(N, {})` will now produce a static analysis warning since the element is going to be shared for all table entries. - -## Error reporting improvements - -When a type error involves a union (or an option), we now provide more context in the error message. - -For instance, given the following code: - -```lua ---!strict - -type T = {x: number} - -local x: T? = {w=4} -``` - -We now report the following: - -``` -Type 'x' could not be converted into 'T?' -caused by: - None of the union options are compatible. For example: Table type 'x' not compatible with type 'T' because the former is missing field 'x' -``` - ---- -Luau now gives up and reports an `*unknown*` type in far fewer cases when typechecking programs that have type errors. - -## New APIs - -We have brought in the [`coroutine.close`](https://luau-lang.org/library#coroutine-library) function from Lua 5.4. It accepts a suspended coroutine and marks it as non-runnable. In Roblox, this can be useful in combination with `task.defer` to implement cancellation. - -## REPL improvements - -The `luau` REPL application can be compiled from source or downloaded from [releases page](https://github.com/Roblox/luau/releases). It has grown some new features: - -* Added `--interactive` option to run the REPL after running the last script file. -* Allowed the compiler optimization level to be specified. -* Allowed methods to be tab completed -* Allowed methods on string instances to be completed -* Improved Luau REPL argument parsing and error reporting -* Input history is now saved/loaded - -## Thanks - -A special thanks to all the fine folks who contributed PRs over the last few months! - -* [Halalaluyafail3](https://github.com/Halalaluyafail3) -* [JohnnyMorganz](https://github.com/JohnnyMorganz) -* [Kampfkarren](https://github.com/Kampfkarren) -* [kunitoki](https://github.com/kunitoki) -* [MathematicalDessert](https://github.com/MathematicalDessert) -* [metatablecat](https://github.com/metatablecat) -* [petrihakkinen](https://github.com/petrihakkinen) -* [rafa_br34](https://github.com/rafa_br34) -* [Rerumu](https://github.com/Rerumu) -* [Slappy826](https://github.com/Slappy826) -* [SnowyShiro](https://github.com/SnowyShiro) -* [vladmarica](https://github.com/vladmarica) -* [xgladius](https://github.com/xgladius) - -[Contribution guide](https://github.com/Roblox/luau/blob/2f989fc049772f36de1a4281834c375858507bda/CONTRIBUTING.md) diff --git a/docs/_posts/2022-02-28-luau-recap-february-2022.md b/docs/_posts/2022-02-28-luau-recap-february-2022.md deleted file mode 100644 index 412217df..00000000 --- a/docs/_posts/2022-02-28-luau-recap-february-2022.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: single -title: "Luau Recap: February 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-february-2022/).] - -## Default type alias type parameters - -We have introduced a syntax to provide default type arguments inside the type alias type parameter list. - -It is now possible to have type functions where the instantiation can omit some type arguments. - -You can provide concrete types: - -```lua ---!strict -type FieldResolver = (T, Data) -> number - -local a: FieldResolver = ... -local b: FieldResolver = ... -``` - -Or reference parameters defined earlier in the list: - -```lua ---!strict -type EqComp = (l: T, r: U) -> boolean - -local a: EqComp = ... -- (l: number, r: number) -> boolean -local b: EqComp = ... -- (l: number, r: string) -> boolean -``` - -Type pack parameters can also have a default type pack: - -```lua ---!strict -type Process = (T) -> U... - -local a: Process = ... -- (number) -> ...string -local b: Process = ... -- (number) -> (boolean, string) -``` - -If all type parameters have a default type, it is now possible to reference that without providing any type arguments: - -```lua ---!strict -type All = (T) -> U - -local a: All -- ok -local b: All<> -- ok as well -``` - -For more details, you can read the original [RFC proposal](https://github.com/Roblox/luau/blob/master/rfcs/syntax-default-type-alias-type-parameters.md). - -## Typechecking improvements - -This month we had many fixes to improve our type inference and reduce false positive errors. - -if-then-else expression can now have different types in each branch: - -```lua ---!strict -local a = if x then 5 else nil -- 'a' will have type 'number?' -local b = if x then 1 else '2' -- 'b' will have type 'number | string' -``` - -And if the expected result type is known, you will not get an error in cases like these: - -```lua ---!strict -type T = {number | string} --- different array element types don't give an error if that is expected -local c: T = if x then {1, "x", 2, "y"} else {0} -``` - ---- - -`assert` result is now known to not be 'falsy' (`false` or `nil`): - -```lua ---!strict -local function f(x: number?): number - return assert(x) -- no longer an error -end -``` - ---- - -We fixed cases where length operator `#` reported an error when used on a compatible type: - -```lua ---!strict -local union: {number} | {string} -local a = #union -- no longer an error -``` - ---- - -Functions with different variadic argument/return types are no longer compatible: - -```lua ---!strict -local function f(): (number, ...string) - return 2, "a", "b" -end - -local g: () -> (number, ...boolean) = f -- error -``` - ---- - -We have also fixed: - -* false positive errors caused by incorrect reuse of generic types across different function declarations -* issues with forward-declared intersection types -* wrong return type annotation for table.move -* various crashes reported by developers - -## Linter improvements - -A new static analysis warning was introduced to mark incorrect use of a '`a and b or c`' pattern. When 'b' is 'falsy' (`false` or `nil`), result will always be 'c', even if the expression 'a' was true: - -```lua -local function f(x: number) - -- The and-or expression always evaluates to the second alternative because the first alternative is false; consider using if-then-else expression instead - return x < 0.5 and false or 42 -end -``` - -Like we say in the warning, new if-then-else expression doesn't have this pitfall: - -```lua -local function g(x: number) - return if x < 0.5 then false else 42 -end -``` - ---- - -We have also introduced a check for misspelled comment directives: - -```lua ---!non-strict --- ^ Unknown comment directive 'non-strict'; did you mean 'nonstrict'? -``` - -## Performance improvements - -For performance, we have changed how our Garbage Collector collects unreachable memory. -This rework makes it possible to free memory 2.5x faster and also comes with a small change to how we store Luau objects in memory. For example, each table now uses 16 fewer bytes on 64-bit platforms. - -Another optimization was made for `select(_, ...)` call. -It is now using a special fast path that has constant-time complexity in number of arguments (~3x faster with 10 arguments). - -## Thanks - -A special thanks to all the fine folks who contributed PRs this month! - -* [mikejsavage](https://github.com/mikejsavage) -* [TheGreatSageEqualToHeaven](https://github.com/TheGreatSageEqualToHeaven) -* [petrihakkinen](https://github.com/petrihakkinen) diff --git a/docs/_posts/2022-03-31-luau-recap-march-2022.md b/docs/_posts/2022-03-31-luau-recap-march-2022.md deleted file mode 100644 index ff3a4d0f..00000000 --- a/docs/_posts/2022-03-31-luau-recap-march-2022.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: single -title: "Luau Recap: March 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-march-2022/).] - -## Singleton types - -We added support for singleton types! These allow you to use string or -boolean literals in types. These types are only inhabited by the -literal, for example if a variable `x` has type `"foo"`, then `x == -"foo"` is guaranteed to be true. - -Singleton types are particularly useful when combined with union types, -for example: - -```lua -type Animals = "Dog" | "Cat" | "Bird" -``` - -or: - -```lua -type Falsey = false | nil -``` - -In particular, singleton types play well with unions of tables, -allowing tagged unions (also known as discriminated unions): - -```lua -type Ok = { type: "ok", value: T } -type Err = { type: "error", error: E } -type Result = Ok | Err - -local result: Result = ... -if result.type == "ok" then - -- result :: Ok - print(result.value) -elseif result.type == "error" then - -- result :: Err - error(result.error) -end -``` - -The RFC for singleton types is https://github.com/Roblox/luau/blob/master/rfcs/syntax-singleton-types.md - -## Width subtyping - -A common idiom for programming with tables is to provide a public interface type, but to keep some of the concrete implementation private, for example: - -```lua -type Interface = { - name: string, -} - -type Concrete = { - name: string, - id: number, -} -``` - -Within a module, a developer might use the concrete type, but export functions using the interface type: - -```lua -local x: Concrete = { - name = "foo", - id = 123, -} - -local function get(): Interface - return x -end -``` - -Previously examples like this did not typecheck but now they do! - -This language feature is called *width subtyping* (it allows tables to get *wider*, that is to have more properties). - -The RFC for width subtyping is https://github.com/Roblox/luau/blob/master/rfcs/sealed-table-subtyping.md - -## Typechecking improvements - - * Generic function type inference now works the same for generic types and generic type packs. - * We improved some error messages. - * There are now fewer crashes (hopefully none!) due to mutating types inside the Luau typechecker. - * We fixed a bug that could cause two incompatible copies of the same class to be created. - * Luau now copes better with cyclic metatable types (it gives a type error rather than hanging). - * Fixed a case where types are not properly bound to all of the subtype when the subtype is a union. - * We fixed a bug that confused union and intersection types of table properties. - * Functions declared as `function f(x : any)` can now be called as `f()` without a type error. - -## API improvements - - * Implement `table.clone` which takes a table and returns a new table that has the same keys/values/metatable. The cloning is shallow - if some keys refer to tables that need to be cloned, that can be done manually by modifying the resulting table. - -## Debugger improvements - - * Use the property name as the name of methods in the debugger. - -## Performance improvements - - * Optimize table rehashing (~15% faster dictionary table resize on average) - * Improve performance of freeing tables (~5% lift on some GC benchmarks) - * Improve gathering performance metrics for GC. - * Reduce stack memory reallocation. - diff --git a/docs/_posts/2022-05-02-luau-recap-april-2022.md b/docs/_posts/2022-05-02-luau-recap-april-2022.md deleted file mode 100644 index dd6b2c0c..00000000 --- a/docs/_posts/2022-05-02-luau-recap-april-2022.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: single -title: "Luau Recap: April 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-april-2022/).] - -It's been a bit of a quiet month. We mostly have small optimizations and bugfixes for you. - -It is now allowed to define functions on sealed tables that have string indexers. These functions will be typechecked against the indexer type. For example, the following is now valid: - -```lua -local a : {[string]: () -> number} = {} - -function a.y() return 4 end -- OK -``` - -Autocomplete will now provide string literal suggestions for singleton types. eg - -```lua -local function f(x: "a" | "b") end -f("_") -- suggest "a" and "b" -``` - -Improve error recovery in the case where we encounter a type pack variable in a place where one is not allowed. eg `type Foo = { value: A... }` - -When code does not pass enough arguments to a variadic function, the error feedback is now better. - -For example, the following script now produces a much nicer error message: -```lua -type A = { [number]: number } -type B = { [number]: string } - -local a: A = { 1, 2, 3 } - --- ERROR: Type 'A' could not be converted into 'B' --- caused by: --- Property '[indexer value]' is not compatible. Type 'number' could not be converted into 'string' -local b: B = a -``` - -If the following code were to error because `Hello` was undefined, we would erroneously include the comment in the span of the error. This is now fixed. -```lua -type Foo = Hello -- some comment over here -``` - -Fix a crash that could occur when strict scripts have cyclic require() dependencies. - -Add an option to autocomplete to cause it to abort processing after a certain amount of time has elapsed. diff --git a/docs/_posts/2022-06-01-luau-recap-may-2022.md b/docs/_posts/2022-06-01-luau-recap-may-2022.md deleted file mode 100644 index 500e6e4a..00000000 --- a/docs/_posts/2022-06-01-luau-recap-may-2022.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: single -title: "Luau Recap: May 2022" ---- - -This month Luau team has worked to bring you a new language feature together with more typechecking improvements and bugfixes! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-may-2022/).] - -## Generalized iteration - -We have extended the semantics of standard Lua syntax for iterating through containers, `for vars in values` with support for generalized iteration. -In Lua, to iterate over a table you need to use an iterator like `next` or a function that returns one like `pairs` or `ipairs`. In Luau, you can now simply iterate over a table: - -```lua -for k, v in {1, 4, 9} do - assert(k * k == v) -end -``` - -This works for tables but can also be customized for tables or userdata by implementing `__iter` metamethod. It is called before the iteration begins, and should return an iterator function like `next` (or a custom one): - -```lua -local obj = { items = {1, 4, 9} } -setmetatable(obj, { __iter = function(o) return next, o.items end }) - -for k, v in obj do - assert(k * k == v) -end -``` - -The default iteration order for tables is specified to be consecutive for elements `1..#t` and unordered after that, visiting every element. -Similar to iteration using `pairs`, modifying the table entries for keys other than the current one results in unspecified behavior. - -## Typechecking improvements - -We have added a missing check to compare implicit table keys against the key type of the table indexer: - -```lua --- error is correctly reported, implicit keys (1,2,3) are not compatible with [string] -local t: { [string]: boolean } = { true, true, false } -``` - -Rules for `==` and `~=` have been relaxed for union types, if any of the union parts can be compared, operation succeeds: - -```lua ---!strict -local function compare(v1: Vector3, v2: Vector3?) - return v1 == v2 -- no longer an error -end -``` - -Table value type propagation now correctly works with `[any]` key type: - -```lua ---!strict -type X = {[any]: string | boolean} -local x: X = { key = "str" } -- no longer gives an incorrect error -``` - -If a generic function doesn't provide type annotations for all arguments and the return value, additional generic type parameters might be added automatically: - -```lua --- previously it was foo, now it's foo, because second argument is also generic -function foo(x: T, y) end -``` - -We have also fixed various issues that have caused crashes, with many of them coming from your bug reports. - -## Linter improvements - -`GlobalUsedAsLocal` lint warning has been extended to notice when global variable writes always happen before their use in a local scope, suggesting that they can be replaced with a local variable: - -```lua -function bar() - foo = 6 -- Global 'foo' is never read before being written. Consider changing it to local - return foo -end -function baz() - foo = 10 - return foo -end -``` - -## Performance improvements - -Garbage collection CPU utilization has been tuned to further reduce frame time spikes of individual collection steps and to bring different GC stages to the same level of CPU utilization. - -Returning a type-cast local (`return a :: type`) as well as returning multiple local variables (`return a, b, c`) is now a little bit more efficient. - -### Function inlining and loop unrolling - -In the open-source release of Luau, when optimization level 2 is enabled, the compiler will now perform function inlining and loop unrolling. - -Only loops with loop bounds known at compile time, such as `for i=1,4 do`, can be unrolled. The loop body must be simple enough for the optimization to be profitable; compiler uses heuristics to estimate the performance benefit and automatically decide if unrolling should be performed. - -Only local functions (defined either as `local function foo` or `local foo = function`) can be inlined. The function body must be simple enough for the optimization to be profitable; compiler uses heuristics to estimate the performance benefit and automatically decide if each call to the function should be inlined instead. Additionally recursive invocations of a function can't be inlined at this time, and inlining is completely disabled for modules that use `getfenv`/`setfenv` functions. diff --git a/docs/_posts/2022-07-07-luau-recap-june-2022.md b/docs/_posts/2022-07-07-luau-recap-june-2022.md deleted file mode 100644 index 1f58d892..00000000 --- a/docs/_posts/2022-07-07-luau-recap-june-2022.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: single -title: "Luau Recap: June 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-june-2022/).] - -# Lower bounds calculation - -A common problem that Luau has is that it primarily works by inspecting expressions in your program and narrowing the _upper bounds_ of the values that can inhabit particular variables. In other words, each time we see a variable used, we eliminate possible sets of values from that variable's domain. - -There are some important cases where this doesn't produce a helpful result. Take this function for instance: - -```lua -function find_first_if(vec, f) - for i, e in ipairs(vec) do - if f(e) then - return i - end - end - - return nil -end -``` - -Luau scans the function from top to bottom and first sees the line `return i`. It draws from this the inference that `find_first_if` must return the type of `i`, namely `number`. - -This is fine, but things go sour when we see the line `return nil`. Since we are always narrowing, we take from this line the judgement that the return type of the function is `nil`. Since we have already concluded that the function must return `number`, Luau reports an error. - -What we actually want to do in this case is to take these `return` statements as inferences about the _lower_ bound of the function's return type. Instead of saying "this function must return values of type `nil`," we should instead say "this function may _also_ return values of type `nil`." - -Lower bounds calculation does precisely this. Moving forward, Luau will instead infer the type `number?` for the above function. - -This does have one unfortunate consequence: If a function has no return type annotation, we will no longer ever report a type error on a `return` statement. We think this is the right balance but we'll be keeping an eye on things just to be sure. - -Lower-bounds calculation is larger and a little bit riskier than other things we've been working on so we've set up a beta feature in Roblox Studio to enable them. It is called "Experimental Luau language features." - -Please try it out and let us know what you think! - -## Known bug - -We have a known bug with certain kinds of cyclic types when lower-bounds calculation is enabled. The following, for instance, is known to be problematic. - -```lua -type T = {T?}? -- spuriously reduces to {nil}? -``` - -We hope to have this fixed soon. - -# All table literals now result in unsealed tables - -Previously, the only way to create a sealed table was by with a literal empty table. We have relaxed this somewhat: Any table created by a `{}` expression is considered to be unsealed within the scope where it was created: - -```lua -local T = {} -T.x = 5 -- OK - -local V = {x=5} -V.y = 2 -- previously disallowed. Now OK. - -function mkTable() - return {x = 5} -end - -local U = mkTable() -U.y = 2 -- Still disallowed: U is sealed -``` - -# Other fixes - -* Adjust indentation and whitespace when creating multiline string representations of types, resulting in types that are easier to read. -* Some small bugfixes to autocomplete -* Fix a case where accessing a nonexistent property of a table would not result in an error being reported. -* Improve parser recovery for the incorrect code `function foo() -> ReturnType` (the correct syntax is `function foo(): ReturnType`) -* Improve the parse error offered for code that improperly uses the `function` keyword to start a type eg `type T = function` -* Some small crash fixes and performance improvements - -# Thanks! - -A very special thanks to all of our open source contributors: - -* [Allan N Jeremy](https://github.com/AllanJeremy) -* [Daniel Nachun](https://github.com/danielnachun) -* [JohnnyMorganz](https://github.com/JohnnyMorganz/) -* [Petri Häkkinen](https://github.com/petrihakkinen) -* [Qualadore](https://github.com/Qualadore) diff --git a/docs/_posts/2022-08-29-luau-recap-august-2022.md b/docs/_posts/2022-08-29-luau-recap-august-2022.md deleted file mode 100644 index e43f0f34..00000000 --- a/docs/_posts/2022-08-29-luau-recap-august-2022.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -layout: single -title: "Luau Recap: July & August 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-july-august-2022/).] - -## Tables now support `__len` metamethod - -See the RFC [Support `__len` metamethod for tables and `rawlen` function](https://github.com/Roblox/luau/blob/master/rfcs/len-metamethod-rawlen.md) for more details. - -With generalized iteration released in May, custom containers are easier than ever to use. The only thing missing was the fact that tables didn't respect `__len`. - -Simply, tables now honor the `__len` metamethod, and `rawlen` is also added with similar semantics as `rawget` and `rawset`: - -```lua -local my_cool_container = setmetatable({ items = { 1, 2 } }, { - __len = function(self) return #self.items end -}) - -print(#my_cool_container) --> 2 -print(rawlen(my_cool_container)) --> 0 -``` - -## `never` and `unknown` types - -See the RFC [`never` and `unknown` types](https://github.com/Roblox/luau/blob/master/rfcs/never-and-unknown-types.md) for more details. - -We've added two new types, `never` and `unknown`. These two types are the opposites of each other by the fact that there's no value that inhabits the type `never`, and the dual of that is every value inhabits the type `unknown`. - -Type inference may infer a variable to have the type `never` if and only if the set of possible types becomes empty, for example through type refinements. - -```lua -function f(x: string | number) - if typeof(x) == "string" and typeof(x) == "number" then - -- x: never - end -end -``` - -This is useful because we still needed to ascribe a type to `x` here, but the type we used previously had unsound semantics. For example, it was possible to be able to _expand_ the domain of a variable once the user had proved it impossible. With `never`, narrowing a type from `never` yields `never`. - -Conversely, `unknown` can be used to enforce a stronger contract than `any`. That is, `unknown` and `any` are similar in terms of allowing every type to inhabit them, and other than `unknown` or `any`, `any` allows itself to inhabit into a different type, whereas `unknown` does not. - -```lua -function any(): any return 5 end -function unknown(): unknown return 5 end - --- no type error, but assigns a number to x which expects string -local x: string = any() - --- has type error, unknown cannot be converted into string -local y: string = unknown() -``` - -To be able to do this soundly, you must apply type refinements on a variable of type `unknown`. - -```lua -local u = unknown() - -if typeof(u) == "string" then - local y: string = u -- no type error -end -``` - -A use case of `unknown` is to enforce type safety at implementation sites for data that do not originate in code, but from over the wire. - -## Argument names in type packs when instantiating a type - -We had a bug in the parser which erroneously allowed argument names in type packs that didn't fold into a function type. That is, the below syntax did not generate a parse error when it should have. - -```lua -Foo<(a: number, b: string)> -``` - -## New IntegerParsing lint - -See [the announcement](https://devforum.roblox.com/t/improving-binary-and-hexadecimal-integer-literal-parsing-rules-in-luau/) for more details. We include this here for posterity. - -We've introduced a new lint called IntegerParsing. Right now, it lints three classes of errors: - -1. Truncation of binary literals that resolves to a value over 64 bits, -2. Truncation of hexadecimal literals that resolves to a value over 64 bits, and -3. Double hexadecimal prefix. - -For 1.) and 2.), they are currently not planned to become a parse error, so action is not strictly required here. - -For 3.), this will be a breaking change! See [the rollout plan](https://devforum.roblox.com/t/improving-binary-and-hexadecimal-integer-literal-parsing-rules-in-luau/#rollout-5) for details. - -## New ComparisonPrecedence lint - -We've also introduced a new lint called `ComparisonPrecedence`. It fires in two particular cases: - -1. `not X op Y` where `op` is `==` or `~=`, or -2. `X op Y op Z` where `op` is any of the comparison or equality operators. - -In languages that uses `!` to negate the boolean i.e. `!x == y` looks fine because `!x` _visually_ binds more tightly than Lua's equivalent, `not x`. Unfortunately, the precedences here are identical, that is `!x == y` is `(!x) == y` in the same way that `not x == y` is `(not x) == y`. We also apply this on other operators e.g. `x <= y == y`. - -```lua --- not X == Y is equivalent to (not X) == Y; consider using X ~= Y, or wrap one of the expressions in parentheses to silence -if not x == y then end - --- not X ~= Y is equivalent to (not X) ~= Y; consider using X == Y, or wrap one of the expressions in parentheses to silence -if not x ~= y then end - --- not X <= Y is equivalent to (not X) <= Y; wrap one of the expressions in parentheses to silence -if not x <= y then end - --- X <= Y == Z is equivalent to (X <= Y) == Z; wrap one of the expressions in parentheses to silence -if x <= y == 0 then end -``` - -As a special exception, this lint pass will not warn for cases like `x == not y` or `not x == not y`, which both looks intentional as it is written and interpreted. - -## Function calls returning singleton types incorrectly widened - -Fix a bug where widening was a little too happy to fire in the case of function calls returning singleton types or union thereof. This was an artifact of the logic that knows not to infer singleton types in cases that makes no sense to. - -```lua -function f(): "abc" | "def" - return if math.random() > 0.5 then "abc" else "def" -end - --- previously reported that 'string' could not be converted into '"abc" | "def"' -local x: "abc" | "def" = f() -``` - -## `string` can be a subtype of a table with a shape similar to `string` - -The function `my_cool_lower` is a function `(t: t1) -> a... where t1 = {+ lower: (t1) -> a... +}`. - -```lua -function my_cool_lower(t) - return t:lower() -end -``` - -Even though `t1` is a table type, we know `string` is a subtype of `t1` because `string` also has `lower` which is a subtype of `t1`'s `lower`, so this call site now type checks. - -```lua -local s: string = my_cool_lower("HI") -``` - -## Other analysis improvements - -* `string.gmatch`/`string.match`/`string.find` may now return more precise type depending on the patterns used -* Fix a bug where type arena ownership invariant could be violated, causing stability issues -* Fix a bug where internal type error could be presented to the user -* Fix a false positive with optionals & nested tables -* Fix a false positive in non-strict mode when using generalized iteration -* Improve autocomplete behavior in certain cases for `:` calls -* Fix minor inconsistencies in synthesized names for types with metatables -* Fix autocomplete not suggesting globals defined after the cursor -* Fix DeprecatedGlobal warning text in cases when the global is deprecated without a suggested alternative -* Fix an off-by-one error in type error text for incorrect use of `string.format` - -## Other runtime improvements - -* Comparisons with constants are now significantly faster when using clang as a compiler (10-50% gains on internal benchmarks) -* When calling non-existent methods on tables or strings, `foo:bar` now produces a more precise error message -* Improve performance for iteration of tables -* Fix a bug with negative zero in vector components when using vectors as table keys -* Compiler can now constant fold builtins under -O2, for example `string.byte("A")` is compiled to a constant -* Compiler can model the cost of builtins for the purpose of inlining/unrolling -* Local reassignment i.e. `local x = y :: T` is free iff neither `x` nor `y` is mutated/captured -* Improve `debug.traceback` performance by 1.15-1.75x depending on the platform -* Fix a corner case with table assignment semantics when key didn't exist in the table and `__newindex` was defined: we now use Lua 5.2 semantics and call `__newindex`, which results in less wasted space, support for NaN keys in `__newindex` path and correct support for frozen tables -* Reduce parser C stack consumption which fixes some stack overflow crashes on deeply nested sources -* Improve performance of `bit32.extract`/`replace` when width is implied (~3% faster chess) -* Improve performance of `bit32.extract` when field/width are constants (~10% faster base64) -* `string.format` now supports a new format specifier, `%*`, that accepts any value type and formats it using `tostring` rules - -## Thanks - -Thanks for all the contributions! - -* [natteko](https://github.com/natteko) -* [JohnnyMorganz](https://github.com/JohnnyMorganz) -* [khvzak](https://github.com/khvzak) -* [Anaminus](https://github.com/Anaminus) -* [memery-rbx](https://github.com/memery-rbx) -* [jaykru](https://github.com/jaykru) -* [Kampfkarren](https://github.com/Kampfkarren) -* [XmiliaH](https://github.com/XmiliaH) -* [Mactavsin](https://github.com/Mactavsin) diff --git a/docs/_posts/2022-10-31-luau-semantic-subtyping.md b/docs/_posts/2022-10-31-luau-semantic-subtyping.md deleted file mode 100644 index 68622a67..00000000 --- a/docs/_posts/2022-10-31-luau-semantic-subtyping.md +++ /dev/null @@ -1,292 +0,0 @@ ---- -layout: single -title: "Semantic Subtyping in Luau" -author: Alan Jeffrey ---- - -Luau is the first programming language to put the power of semantic subtyping in the hands of millions of creators. - -## Minimizing false positives - -One of the issues with type error reporting in tools like the Script Analysis widget in Roblox Studio is *false positives*. These are warnings that are artifacts of the analysis, and don’t correspond to errors which can occur at runtime. For example, the program -```lua - local x = CFrame.new() - local y - if (math.random()) then - y = CFrame.new() - else - y = Vector3.new() - end - local z = x * y -``` -reports a type error which cannot happen at runtime, since `CFrame` supports multiplication by both `Vector3` and `CFrame`. (Its type is `((CFrame, CFrame) -> CFrame) & ((CFrame, Vector3) -> Vector3)`.) - -False positives are especially poor for onboarding new users. If a type-curious creator switches on typechecking and is immediately faced with a wall of spurious red squiggles, there is a strong incentive to immediately switch it off again. - -Inaccuracies in type errors are inevitable, since it is impossible to decide ahead of time whether a runtime error will be triggered. Type system designers have to choose whether to live with false positives or false negatives. In Luau this is determined by the mode: `strict` mode errs on the side of false positives, and `nonstrict` mode errs on the side of false negatives. - -While inaccuracies are inevitable, we try to remove them whenever possible, since they result in spurious errors, and imprecision in type-driven tooling like autocomplete or API documentation. - -## Subtyping as a source of false positives - -One of the sources of false positives in Luau (and many other similar languages like TypeScript or Flow) is *subtyping*. Subtyping is used whenever a variable is initialized or assigned to, and whenever a function is called: the type system checks that the type of the expression is a subtype of the type of the variable. For example, if we add types to the above program -```lua - local x : CFrame = CFrame.new() - local y : Vector3 | CFrame - if (math.random()) then - y = CFrame.new() - else - y = Vector3.new() - end - local z : Vector3 | CFrame = x * y -``` -then the type system checks that the type of `CFrame` multiplication is a subtype of `(CFrame, Vector3 | CFrame) -> (Vector3 | CFrame)`. - -Subtyping is a very useful feature, and it supports rich type constructs like type union (`T | U`) and intersection (`T & U`). For example, `number?` is implemented as a union type `(number | nil)`, inhabited by values that are either numbers or `nil`. - -Unfortunately, the interaction of subtyping with intersection and union types can have odd results. A simple (but rather artificial) case in older Luau was: -```lua - local x : (number?) & (string?) = nil - local y : nil = nil - y = x -- Type '(number?) & (string?)' could not be converted into 'nil' - x = y -``` -This error is caused by a failure of subtyping, the old subtyping algorithm reports that `(number?) & (string?)` is not a subtype of `nil`. This is a false positive, since `number & string` is uninhabited, so the only possible inhabitant of `(number?) & (string?)` is `nil`. - -This is an artificial example, but there are real issues raised by creators caused by the problems, for example . Currently, these issues mostly affect creators making use of sophisticated type system features, but as we make type inference more accurate, union and intersection types will become more common, even in code with no type annotations. - -This class of false positives no longer occurs in Luau, as we have moved from our old approach of *syntactic subtyping* to an alternative called *semantic subtyping*. - -## Syntactic subtyping - -AKA “what we did before.” - -Syntactic subtyping is a syntax-directed recursive algorithm. The interesting cases to deal with intersection and union types are: - -* Reflexivity: `T` is a subtype of `T` -* Intersection L: `(T₁ & … & Tⱼ)` is a subtype of `U` whenever some of the `Tᵢ` are subtypes of `U` -* Union L: `(T₁ | … | Tⱼ)` is a subtype of `U` whenever all of the `Tᵢ` are subtypes of `U` -* Intersection R: `T` is a subtype of `(U₁ & … & Uⱼ)` whenever `T` is a subtype of all of the `Uᵢ` -* Union R: `T` is a subtype of `(U₁ | … | Uⱼ)` whenever `T` is a subtype of some of the `Uᵢ`. - -For example: - -* By Reflexivity: `nil` is a subtype of `nil` -* so by Union R: `nil` is a subtype of `number?` -* and: `nil` is a subtype of `string?` -* so by Intersection R: `nil` is a subtype of `(number?) & (string?)`. - -Yay! Unfortunately, using these rules: - -* `number` isn’t a subtype of `nil` -* so by Union L: `(number?)` isn’t a subtype of `nil` -* and: `string` isn’t a subtype of `nil` -* so by Union L: `(string?)` isn’t a subtype of `nil` -* so by Intersection L: `(number?) & (string?)` isn’t a subtype of `nil`. - -This is typical of syntactic subtyping: when it returns a “yes” result, it is correct, but when it returns a “no” result, it might be wrong. The algorithm is a *conservative approximation*, and since a “no” result can lead to type errors, this is a source of false positives. - -## Semantic subtyping - -AKA “what we do now.” - -Rather than thinking of subtyping as being syntax-directed, we first consider its semantics, and later return to how the semantics is implemented. For this, we adopt semantic subtyping: - - * The semantics of a type is a set of values. - * Intersection types are thought of as intersections of sets. - * Union types are thought of as unions of sets. - * Subtyping is thought of as set inclusion. - -For example: - -| Type | Semantics | -|------|-----------| -| `number` | { 1, 2, 3, … } | -| `string` | { “foo”, “bar”, … } | -| `nil` | { nil } | -| `number?` | { nil, 1, 2, 3, … } | -| `string?` | { nil, “foo”, “bar”, … } | -| `(number?) & (string?)` | { nil, 1, 2, 3, … } ∩ { nil, “foo”, “bar”, … } = { nil } | - - -and since subtypes are interpreted as set inclusions: - -| Subtype | Supertype | Because | -|---------|-----------|---------| -| `nil` | `number?` | { nil } ⊆ { nil, 1, 2, 3, … } | -| `nil` | `string?`| { nil } ⊆ { nil, “foo”, “bar”, … } | -| `nil` | `(number?) & (string?)` | { nil } ⊆ { nil } | -| `(number?) & (string?)` | `nil` | { nil } ⊆ { nil } | - - -So according to semantic subtyping, `(number?) & (string?)` is equivalent to `nil`, but syntactic subtyping only supports one direction. - -This is all fine and good, but if we want to use semantic subtyping in tools, we need an algorithm, and it turns out checking semantic subtyping is non-trivial. - -## Semantic subtyping is hard - -NP-hard to be precise. - -We can reduce graph coloring to semantic subtyping by coding up a graph as a Luau type such that checking subtyping on types has the same result as checking for the impossibility of coloring the graph - -For example, coloring a three-node, two color graph can be done using types: - -```lua -type Red = "red" -type Blue = "blue" -type Color = Red | Blue -type Coloring = (Color) -> (Color) -> (Color) -> boolean -type Uncolorable = (Color) -> (Color) -> (Color) -> false -``` - -Then a graph can be encoded as an overload function type with -subtype `Uncolorable` and supertype `Coloring`, as an overloaded -function which returns `false` when a constraint is violated. Each -overload encodes one constraint. For example a line has constraints -saying that adjacent nodes cannot have the same color: - -```lua -type Line = Coloring - & ((Red) -> (Red) -> (Color) -> false) - & ((Blue) -> (Blue) -> (Color) -> false) - & ((Color) -> (Red) -> (Red) -> false) - & ((Color) -> (Blue) -> (Blue) -> false) -``` - -A triangle is similar, but the end points also cannot have the same color: - -```lua -type Triangle = Line - & ((Red) -> (Color) -> (Red) -> false) - & ((Blue) -> (Color) -> (Blue) -> false) -``` - -Now, `Triangle` is a subtype of `Uncolorable`, but `Line` is not, since the line can be 2-colored. -This can be generalized to any finite graph with any finite number of colors, and so subtype checking is NP-hard. - -We deal with this in two ways: - -* we cache types to reduce memory footprint, and -* give up with a “Code Too Complex” error if the cache of types gets too large. - -Hopefully this doesn’t come up in practice much. There is good evidence that issues like this don’t arise in practice from experience with type systems like that of Standard ML, which is [EXPTIME-complete](https://dl.acm.org/doi/abs/10.1145/96709.96748), but in practice you have to go out of your way to code up Turing Machine tapes as types. - -## Type normalization - -The algorithm used to decide semantic subtyping is *type normalization*. -Rather than being directed by syntax, we first rewrite types to be normalized, then check subtyping on normalized types. - -A normalized type is a union of: - -* a normalized nil type (either `never` or `nil`) -* a normalized number type (either `never` or `number`) -* a normalized boolean type (either `never` or `true` or `false` or `boolean`) -* a normalized function type (either `never` or an intersection of function types) -etc - -Once types are normalized, it is straightforward to check semantic subtyping. - -Every type can be normalized (sigh, with some technical restrictions around generic type packs). The important steps are: - -* removing intersections of mismatched primitives, e.g. `number & bool` is replaced by `never`, and -* removing unions of functions, e.g. `((number?) -> number) | ((string?) -> string)` is replaced by `(nil) -> (number | string)`. - -For example, normalizing `(number?) & (string?)` removes `number & string`, so all that is left is `nil`. - -Our first attempt at implementing type normalization applied it liberally, but this resulted in dreadful performance (complex code went from typechecking in less than a minute to running overnight). The reason for this is annoyingly simple: there is an optimization in Luau’s subtyping algorithm to handle reflexivity (`T` is a subtype of `T`) that performs a cheap pointer equality check. Type normalization can convert pointer-identical types into semantically-equivalent (but not pointer-identical) types, which significantly degrades performance. - -Because of these performance issues, we still use syntactic subtyping as our first check for subtyping, and only perform type normalization if the syntactic algorithm fails. This is sound, because syntactic subtyping is a conservative approximation to semantic subtyping. - -## Pragmatic semantic subtyping - -Off-the-shelf semantic subtyping is slightly different from what is implemented in Luau, because it requires models to be *set-theoretic*, which requires that inhabitants of function types “act like functions.” There are two reasons why we drop this requirement. - -**Firstly**, we normalize function types to an intersection of functions, for example a horrible mess of unions and intersections of functions: -``` -((number?) -> number?) | (((number) -> number) & ((string?) -> string?)) -``` -normalizes to an overloaded function: -``` -((number) -> number?) & ((nil) -> (number | string)?) -``` -Set-theoretic semantic subtyping does not support this normalization, and instead normalizes functions to *disjunctive normal form* (unions of intersections of functions). We do not do this for ergonomic reasons: overloaded functions are idiomatic in Luau, but DNF is not, and we do not want to present users with such non-idiomatic types. - -Our normalization relies on rewriting away unions of function types: -``` -((A) -> B) | ((C) -> D) → (A & C) -> (B | D) -``` -This normalization is sound in our model, but not in set-theoretic models. - -**Secondly**, in Luau, the type of a function application `f(x)` is `B` if `f` has type `(A) -> B` and `x` has type `A`. Unexpectedly, this is not always true in set-theoretic models, due to uninhabited types. In set-theoretic models, if `x` has type `never` then `f(x)` has type `never`. We do not want to burden users with the idea that function application has a special corner case, especially since that corner case can only arise in dead code. - -In set-theoretic models, `(never) -> A` is a subtype of `(never) -> B`, no matter what `A` and `B` are. This is not true in Luau. - -For these two reasons (which are largely about ergonomics rather than anything technical) we drop the set-theoretic requirement, and use *pragmatic* semantic subtyping. - -## Negation types - -The other difference between Luau’s type system and off-the-shelf semantic subtyping is that Luau does not support all negated types. - -The common case for wanting negated types is in typechecking conditionals: -```lua --- initially x has type T -if (type(x) == "string") then - -- in this branch x has type T & string -else - -- in this branch x has type T & ~string -end -``` -This uses a negated type `~string` inhabited by values that are not strings. - -In Luau, we only allow this kind of typing refinement on *test types* like `string`, `function`, `Part` and so on, and *not* on structural types like `(A) -> B`, which avoids the common case of general negated types. - -## Prototyping and verification - -During the design of Luau’s semantic subtyping algorithm, there were changes made (for example initially we thought we were going to be able to use set-theoretic subtyping). During this time of rapid change, it was important to be able to iterate quickly, so we initially implemented a [prototype](https://github.com/luau-lang/agda-typeck) rather than jumping straight to a production implementation. - -Validating the prototype was important, since subtyping algorithms can have unexpected corner cases. For this reason, we adopted Agda as the prototyping language. As well as supporting unit testing, Agda supports mechanized verification, so we are confident in the design. - -The prototype does not implement all of Luau, just the functional subset, but this was enough to discover subtle feature interactions that would probably have surfaced as difficult-to-fix bugs in production. - -Prototyping is not perfect, for example the main issues that we hit in production were about performance and the C++ standard library, which are never going to be caught by a prototype. But the production implementation was otherwise fairly straightforward (or at least as straightforward as a 3kLOC change can be). - -## Next steps - -Semantic subtyping has removed one source of false positives, but we still have others to track down: - -* overloaded function applications and operators, -* property access on expressions of complex type, -* read-only properties of tables, -* variables that change type over time (aka typestates), -* … - -The quest to remove spurious red squiggles continues! - -## Acknowledgments - -Thanks to Giuseppe Castagna and Ben Greenman for helpful comments on drafts of this post. - -## Further reading - -If you want to find out more about Luau and semantic subtyping, you might want to check out… - -* Luau. -* Lily Brown, Andy Friesen and Alan Jeffrey, *Goals of the Luau Type System*, Human Aspects of Types and Reasoning Assistants (HATRA), 2021. -* Luau Typechecker Prototype. -* Agda. -* Andrew M. Kent. *Down and Dirty with Semantic Set-theoretic Types*, 2021. -* Giuseppe Castagna, *Covariance and Contravariance*, Logical Methods in Computer Science 16(1), 2022. -* Giuseppe Castagna and Alain Frisch, *A gentle introduction to semantic subtyping*, Proc. Principles and practice of declarative programming (PPDP), pp 198–208, 2005. -* Giuseppe Castagna, Mickaël Laurent, Kim Nguyễn, Matthew Lutze, *On Type-Cases, Union Elimination, and Occurrence Typing*, Principles of Programming Languages (POPL), 2022. -* Giuseppe Castagna, *Programming with union, intersection, and negation types*, 2022. -* Sam Tobin-Hochstadt and Matthias Felleisen, *Logical types for untyped languages*. International Conference on Functional Programming (ICFP), 2010. -* José Valim, *My Future with Elixir: set-theoretic types*, 2022. - -Some other languages which support semantic subtyping… - -* ℂDuce -* Ballerina -* Elixir -* eqWAlizer - -And if you want to see the production code, it's in the C++ definitions of [tryUnifyNormalizedTypes](https://github.com/Roblox/luau/blob/d6aa35583e4be14304d2a17c7d11c8819756beb6/Analysis/src/Unifier.cpp#L868) and [NormalizedType](https://github.com/Roblox/luau/blob/d6aa35583e4be14304d2a17c7d11c8819756beb6/Analysis/include/Luau/Normalize.h#L134) in the [open source Luau repo](https://github.com/Roblox/luau). diff --git a/docs/_posts/2022-11-01-luau-recap-september-october-2022.md b/docs/_posts/2022-11-01-luau-recap-september-october-2022.md deleted file mode 100644 index 7d99babb..00000000 --- a/docs/_posts/2022-11-01-luau-recap-september-october-2022.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: single -title: "Luau Recap: September & October 2022" ---- - -Luau is our new language that you can read more about at [https://luau-lang.org](https://luau-lang.org). - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-september-october-2022/).] - -## Semantic subtyping - -One of the most important goals for Luau is to avoid *false -positives*, that is cases where Script Analysis reports a type error, -but in fact the code is correct. This is very frustrating, especially -for beginners. Spending time chasing down a gnarly type error only to -discover that it was the type system that's wrong is nobody's idea of fun! - -We are pleased to announce that a major component of minimizing false -positives has landed, *semantic subtyping*, which removes a class of false positives caused -by failures of subtyping. For example, in the program - -```lua - local x : CFrame = CFrame.new() - local y : Vector3 | CFrame - if (math.random()) then - y = CFrame.new() - else - y = Vector3.new() - end - local z : Vector3 | CFrame = x * y -- Type Error! -``` - -an error is reported, even though there is no problem at runtime. This -is because `CFrame`'s multiplication has two overloads: - -```lua - ((CFrame, CFrame) -> CFrame) - & ((CFrame, Vector3) -> Vector3) -``` - -The current syntax-driven algorithm for subtyping is not sophisticated -enough to realize that this is a subtype of the desired type: - -```lua - (CFrame, Vector3 | CFrame) -> (Vector3 | CFrame) -``` - -Our new algorithm is driven by the semantics of subtyping, not the syntax of types, -and eliminates this class of false positives. - -If you want to know more about semantic subtyping in Luau, check out our -[technical blog post](https://luau-lang.org/2022/10/31/luau-semantic-subtyping.html) -on the subject. - -## Other analysis improvements - -* Improve stringification of function types. -* Improve parse error warnings in the case of missing tokens after a comma. -* Improve typechecking of expressions involving variadics such as `{ ... }`. -* Make sure modules don't return unbound generic types. -* Improve cycle detection in stringifying types. -* Improve type inference of combinations of intersections and generic functions. -* Improve typechecking when calling a function which returns a variadic e.g. `() -> (number...)`. -* Improve typechecking when passing a function expression as a parameter to a function. -* Improve error reporting locations. -* Remove some sources of memory corruption and crashes. - -## Other runtime and debugger improvements - -* Improve performance of accessing debug info. -* Improve performance of `getmetatable` and `setmetatable`. -* Remove a source of freezes in the debugger. -* Improve GC accuracy and performance. - -## Thanks - -Thanks for all the contributions! - -* [AllanJeremy](https://github.com/AllanJeremy) -* [JohnnyMorganz](https://github.com/JohnnyMorganz) -* [jujhar16](https://github.com/jujhar16) -* [petrihakkinen](https://github.com/petrihakkinen) diff --git a/docs/_posts/2022-11-04-luau-origins-and-evolution.md b/docs/_posts/2022-11-04-luau-origins-and-evolution.md deleted file mode 100644 index 707c5d41..00000000 --- a/docs/_posts/2022-11-04-luau-origins-and-evolution.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: single -title: "Luau origins and evolution" -author: Arseny Kapoulkine ---- - -At the heart of Roblox technology lies [Luau](https://luau-lang.org), a scripting language derived from Lua 5.1 that is being [developed](https://github.com/Roblox/luau) by an internal team of programming language experts with the help of open source contributors. - -It powers all user-generated content on Roblox, providing access to a very rich set of APIs that allows manipulation of objects in the 3D world, backend API access, UI interaction and more. Hundreds of thousands of developers write code in Luau every month, with top experiences using hundreds of thousands of lines of code, adding up to hundreds of millions of lines of code across the platform. For many of them, it is the first programming language they learn, and one they spend the majority of their time programming in. Using a set of extended APIs developers also customize their workflows by writing plugins to Roblox Studio, where they work on their experiences, using an extended API surface to interact with all aspects of the editor. - -It also powers a lot of application code that Roblox engineers are writing: Universal App, the gateway to the worlds of Roblox that is used by tens of millions of people every day, has 95% of its functionality implemented in Luau, and Roblox Studio has a lot of builtin critical functionality such as part and terrain editors, marketplace browser, avatar and animation editors, material manager and more, implemented in Luau as a plugin, mostly using the same APIs that developers have access to. Every week, updates to this internal codebase that is now over 2 million lines large, are shipped to all Roblox users. - -In addition to Roblox use cases, Luau is also open-source and is seeing an increased adoption in other projects and applications. - -But why did we use Lua in the first place, and why did we decide to pursue building a new language on top of it? - -# Early beginnings - -Around 2006, when a very early version of the Roblox platform was developed, the question of user generated behaviors emerged. Before that, users were able to build non-interactive content on Roblox, and the only form of interaction was physics simulation. While this provided rich emergent behavior, it was hard to build gameplay on top of this: for example, to build a Capture The Flag game, you need to handle collision between players and flags spread throughout the map with a bit of logic that dictates how to adjust team points and when to remove or recreate the objects. - -After an early and brief misstep when we decided to add a few gameplay objects to the core definition of Roblox worlds (some developers may recognize FlagStand as a class name...), the Roblox co-founder Erik Cassel realized that an approach like this is fundamentally limiting the power of user generated content. It’s not enough to give creators the basic blocks on top of which to build their creations, it’s critical to expose the power of a full Turing-complete programming language. Without this, the expressive capability and the reach of the platform would have been restricted far too much. - -But which programming language to choose? This is where [Lua](https://lua.org/), which was, and still is, one of the dominant programming languages used in video games, comes in. - -In addition to its simplicity, which made the language easy to learn and get productive in, Lua was the fastest scripting language compared to popular alternatives like Python or JavaScript at the time[^1], designed to be embedded which meant an easy ability to expose APIs from the host application to the scripts as well as high degree of execution control from the host, and implemented coroutines, a very powerful concurrency primitive that allowed to easily and intuitively script behaviors for independent actors in game using linear control flow. - -Instead of having a large standard library, the expectation was that the embedding application would define a set of APIs that that application needed, as well as establish policies of running the code - which gave us a lot of freedom in how to structure the APIs and when the scripts would get triggered during the simulation of a single frame. - -# Power of simplicity - -Lua is a simple language. What does simplicity mean for us? - -Being a simple language means having a small set of features. Lua has all the fundamental features but doesn’t have a lot of syntax sugar - this means the language is easier to teach and learn, and you rarely run into code that’s difficult to understand syntactically because it uses an unfamiliar construct. Of course, this also means that some programs in Lua are longer than equivalent programs in languages that have more dedicated constructs to solve specific problems, such as list comprehensions in Python. - -Being a simple language means having a minimal set of rules for every feature. Lua does deviate from this in certain respects (which is to say, the language could have been even simpler!), but notably for a dynamic language the behavior of fundamental operators is generally easy to explain and unsurprising - for example, two values in Lua are equal iff they have the same type and the same value, as such `0 == “0”` is `false`; as another example, `for` loops introduce unique variable bindings on every iteration, as such capturing the iteration variable in a closure produces unique values. These decisions lead to more concise and efficient implementation and eliminate a class of bugs in programs. - -Being a simple language means having a small implementation. This may be immaterial to people writing code in the language, but it leads to an implementation that can be of higher quality; simpler implementations can also be easier to optimize for memory or performance, and are easier to build upon. - -Developers on the Roblox platform have very diverse programming backgrounds. Some are writing their first line of code in Roblox Studio, while others have computer science degrees and experience working in multiple different programming languages. While it’s always possible to support two different programming languages that target different segments of the audience, that fragments the ecosystem and makes the programming story less consistent (impacting documentation, tutorials, code reuse, ability for community members to help each other write code, presents challenges with interaction between different languages in the same experience and more). A better outcome is one where a single language can serve both audiences - this requires a language that strikes a balance between simplicity and generality, and while Lua isn’t perfect here, it’s great as a foundation for a language like this[^2]. - -In many ways, Lua is simultaneously simple and pragmatic: many parts of the language are difficult to make much better without a lot of added complexity, but at the same time it requires little in the way of extra functionality to be able to solve problems efficiently. That said, no language is perfect, and within several areas of Lua we felt that the tradeoffs weren’t quite right for our use case. - -# Respectful evolution - -In 2019, we decided to build [Luau](https://luau-lang.org) - a language derived from Lua and compatible with Lua 5.1, which is the version we’ve been using all these years. At the time we evaluated other routes, but ultimately settled on this as the most optimal long-term. - -On one hand, we loved a lot of things about Lua - both design wise and implementation wise, while there were some decisions we felt were suboptimal, by and large it was an almost perfect foundation for what we’ve set out to achieve. - -On the other hand, we’ve been running into the limitations of Lua on large code bases in absence of type checking, performance was good but not great, and some missing features would have been great to have. - -Some of the things we’ve been missing have been added in later versions of Lua, yet we were still using Lua 5.1. While we would have loved to use a later version of the language standard, Lua 5.x releases are not backwards compatible, and some releases remove support for features that are in wide use at Roblox. For Roblox, backwards compatibility is an essential feature of the platform - while we don’t have a guarantee that content created 10 years ago still works, to the extent that we can achieve that without restricting the platform evolution too much, we try. - -What we’ve realized is that Lua is a great foundation for a perfect language that we can build for Roblox. - -We would maintain backwards compatibility with Lua 5.1 but evolve the language from there; sometimes this means taking later features from Lua that don’t conflict with the existing language or our design values, sometimes this means innovating beyond what Lua has done. Crucially, we must maintain the balance between simplicity and power - we still value simplicity, we still need to avoid a feature explosion to ensure that the features compose and are of high quality, and we still need the language to be a good fit for beginners. - -One of the largest limitations that we’ve seen is the lack of type checking making it easy to make mistakes in large code bases, as such [support for type checking](https://luau-lang.org/typecheck) was a requirement for Luau. However, it’s important that the type checker is mostly transparent to the developers who don’t want to invest the time to learn it - anything else would change the learning curve too much for the language to be suitable for beginners. As such, we’ve investing in gradual typing, and our type checker is learning to strike a balance between inferring useful types for completely untyped programs (which, among other things, greatly enhances editing experience through type-aware autocomplete), and the lack of false positive diagnostics that can be confusing and distracting. - -While we did need to introduce [extra syntax](https://luau-lang.org/syntax) to the language - most notably, to support optional type annotations - it was important for us to maintain the cohesion of the overall syntax. We aren’t seeking to make a new language with a syntax alien to Lua programmers - Luau programs are still recognizably Lua, and to the extent possible we try to avoid new syntactic features. In a sense, we still want the syntax, semantics, and the runtime to be simple and minimal - but at the same time we have important problems to solve with respect to ergonomics, robustness and performance of the language, and solving some of them requires having slightly more complex syntax, semantics, or implementation. - -So in finding ways to evolve Luau, we strive to design features that feel like they would be at home in Lua. At the same time, we’ve adopted a more open evolution process - the language development is driven [through RFCs](https://github.com/Roblox/luau/blob/master/rfcs/README.md) that are designs open to the public that anyone can contribute to - this is in contrast with Lua, which has a very closed development process, and is one of the reasons why it would have been difficult for us to keep using Lua as we wouldn’t get a say in its development. At the same time, to ensure the design criterias are met, it’s important that the Luau development team at Roblox maintains a final say over design and implementation of the language[^3], while taking the community's proposals and input into consideration. - -# Importance of co-design - -Luau language is developed in concert with the language compiler, runtime, type checker and other analysis tools, autocomplete engine and other tooling, and that development is guided by the vast volume of existing Luau code, both internal and external. - -This is one of the key principles behind our evolution philosophy - neither layer is developed in isolation, and instead concerns at every level inform all other aspects of the language design and implementation. - -This means that when designing language features, we make sure that they can be implemented efficiently, type checked properly, can be supported well in editing and analysis tools and have a positive impact on the code internal and external engineers write. When we find issues in any component, we can always ask, what changes to other components or even language design would make for a better overall solution. - -This avoids some classes of design problems, for example we won’t specify a language feature that has a prohibitively high implementation cost, as it violates our simplicity criteria, or that is impractical to implement efficiently, as that would create a performance hazard. This also means that when implementing various components of the language we cross-check the concerns and applicability of these across the entire stack - for example, we’ve reworked our auto-complete system to use the same type inference engine that the type checking / analysis tools use, which had immense benefits for the experience of editing code, but also applied significant back pressure on the type inference itself, forcing us to improve it substantially and fix a lot of corner cases that would otherwise have lingered unnoticed. - -Whenever we develop features, optimizations, improve our analysis engine or enhance the standard libraries, we also heavily rely on code written in Luau to validate our hypotheses. When working on new features we find motivation in the real problems that we see our developers face. For example, we implemented the [new ternary operator](https://luau-lang.org/syntax#if-then-else-expressions) after seeing a large set of cases where existing Lua’s `a and b or c` pattern was error-prone for boolean values, which made it easy to accidentally introduce a mistake that was hard to identify automatically. All optimizations and new analysis features are validated on our internal 2M LOC codebase before being added to Luau, which allows us to quickly get initial validation of ideas, or invalidate some approaches as infeasible / unhelpful. - -In addition to that, while we don’t have direct access to community-developed source code for privacy reasons, we can run experiments and collect telemetry[^4], which also helps us make decisions regarding backwards compatibility. Due to [Hyrum’s law](https://www.hyrumslaw.com/), technically any change in the language or libraries, no matter how small, would be backwards incompatible - instead we adopt the notion of pragmatic balance between strict backwards compatibility[^5] and pragmatic compatibility concerns. For example, later versions of Lua make some library functions like `table.insert`/`table.remove` more strict with how they handle out of range indices. We have evaluated this change for compatibility by collecting telemetry on the use of out of range indices in these functions on the Roblox platform and concluded that applying the stricter checking would break existing programs, and instead had to slightly adjust the rules for out of range behavior in ways that was benign for existing code but prevented catastrophic performance degradation for large out of range indices. Because we couldn’t afford to introduce new runtime errors in this case, we also added a set of linting rules to our analysis engine to flag potential misuse of `table.insert`/`table.remove` before the code ever gets to run - this diagnostics is informational and as such doesn’t affect backwards compatibility, but does help prevent mistakes. - -There are also cases where this co-design approach prevents introduction of features that can lead to easy misuse, which can be difficult to see in the design of the feature itself, but becomes more apparent when you consider features in context of the entire ecosystem. This is a good thing - it means co-design acts as a forcing function on the language simplicity and makes it easier to flag potential bad interactions between different language features, or language features and tooling, or language features and existing programming patterns that are in widespread use in real-world code. By making sure that all features are validated for their impact across the stack and on code written in Luau, we ultimately get a better, simpler and more cohesive language. - -# Efficient execution - -One of the critical goals in front of Luau is efficiency, both from the performance and memory perspective. There’s only so many milliseconds in a frame, and we simultaneously see the need to increase the scale and complexity of simulated experiences, which requires more memory and computation, as well as the need to fit more comfortably into smaller budgets of performance memory for better experience on smaller devices. In fact, one of the motivations for Luau in 2019 has been improved performance, as we saw many opportunities to go beyond Lua with a redesigned implementation. - -Crucially, our performance needs are somewhat unique and require somewhat unique solutions. - -We need Luau to run on many platforms where native code generation is either prohibited by the platform vendor or impractical due to tight memory constraints. As such, in terms of execution performance it’s critical that we have a very fast interpreter[^6]. However, we have freedom in terms of high level design of the entire stack - for example, clients never see the source code of the scripts as all compilation to bytecode happens on the server; this gives us an opportunity to perform more involved and expensive optimizations during that process as well as have the smallest possible startup time on the client without complex pre-parse steps. Notably, our bytecode compiler performs a series of high level optimizations including function inlining and loop unrolling that in other dynamic languages is often left to the just-in-time compiler. - -Another area where performance is critical is garbage collection. Garbage collection is crucial for the language’s simplicity as it makes memory management easier to reason about, but it does require a substantial amount of implementation effort to keep it efficient. For Roblox and for any other game engine or interactive simulation, latency is critical and so our collector is heavily optimized for that - to the extent possible collection is incremental and stop-the-world pauses are very brief. Another part of the performance story here however is the language and data structure design - by making sure that core data types are efficient in how they are laid out in memory we reduce the amount of work garbage collector takes to trace the heap, and, as another example of co-design, we try to make sure that language features are conscious of the impact they have on memory and garbage collection efficiency. - -However, from a whole-platform standpoint there’s a lot of performance aspects that go beyond single-threaded execution. This is an active area of research and development for the team, as to really leverage the hardware the code is running on we need to think about SIMD, hardware thread utilization as well as running code in a cluster of nodes. These considerations inform current and future development of the runtime and the language (for example, our runtime now supports efficient operations on short SIMD vectors even in interpreted mode, and the VM is fairly lightweight to instantiate which makes running many VMs per core practical, with message passing or access to shared Roblox data model used to make gameplay features feasible to implement), but we’re definitely in the early days here - our first implementation of parallel script execution in Roblox just [shipped earlier this year](https://devforum.roblox.com/t/full-release-of-parallel-luau-v1/1836187). This is likely the area where a lot of future innovations will happen as well. - -# Future - -We’re very happy with the success of Luau - in several years we’ve established consistent processes for evolving the language and so far we found a good balance between simplicity, ease of use, performance and robustness of the language, its implementation and the tooling surrounding it. The language keeps continuously evolving but at a pace that is easy to stay on top of - in 2022 we shipped a few syntactic extensions for type annotations but no changes to the syntax of the language outside of types, and only one major [semantic change to the for loop iteration](https://luau-lang.org/syntax#generalized-iteration) that actually made the language easier to use by avoiding the need to specify the table traversal style via `pairs`/`ipairs`. We try to make sure that the features are general and provide enough extensibility so that libraries can be built on top of the language to make it easier to write code, while also making it practical to use the language without complex supporting frameworks. - -There’s still a lot of ground to cover, and we’ll be working on Luau for years to come. We’re in the process of building the next version of our type inference / checking engine to make sure that all users of the language regardless of their expertise benefit from it, we’ve started investing in native code generation as we’re reaching the limits of interpreted performance (although some exciting opportunities for compiler optimization are still on the horizon), and there’s still a lot of hard design and implementation work ahead of us for some important language features and standard libraries. And as mentioned, our execution model will likely see a lot of innovation as we push the boundaries of hardware utilization across cores and nodes. - -Overall, Luau is like an iceberg - the surface is simple to learn and use, but it hides the tremendous amount of careful design, engineering and attention to detail, and we plan to continue to invest in it while trying to keep the outer surface comparatively small. We're excited to see how far we can take it! - -[^1]: High-performance JavaScript engines didn’t exist at the time! LuaJIT was around the corner and redefined the performance expectations of dynamic languages. -[^2]: In fact, scaling to large teams of expert programmers is one of the core motivations behind our creating Luau, while a requirement to still be suitable for beginner programmers guides our evolution direction. -[^3]: This would have been difficult to drive in any existing large established language like JavaScript or Python. -[^4]: This is limited to Roblox platform and doesn't exist in open-source releases. -[^5]: Which we do follow in some areas, such as syntactic compatibility - all existing programs that parse must continue to parse the same way as the language evolves. -[^6]: Some design decisions and implementation techniques are documented on our [performance page](https://luau-lang.org/performance). diff --git a/docs/_posts/2022-11-30-luau-recap-november-2022.md b/docs/_posts/2022-11-30-luau-recap-november-2022.md deleted file mode 100644 index 29b4c6dc..00000000 --- a/docs/_posts/2022-11-30-luau-recap-november-2022.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: single -title: "Luau Recap: November 2022" ---- - -While the team is busy to bring some bigger things in the future, we have made some small improvements this month. - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-november-2022/).] - -## Analysis improvements - -We have improved tagged union type refinements to only include unhandled type cases in the `else` branch of the `if` statement: - -```lua -type Ok = { tag: "ok", value: T } -type Err = { tag: "error", msg: string } -type Result = Ok | Err - -function unwrap(r: Result): T? - if r.tag == "ok" then - return r.value - else - -- Luau now understands that 'r' here can only be the 'Err' part - print(r.msg) - return nil - end -end -``` - -For better inference, we updated the definition of `Enum.SomeType:GetEnumItems()` to return `{Enum.SomeType}` instead of common `{EnumItem}` and the return type of `next` function now includes the possibility of key being `nil`. - -Finally, if you use `and` operator on non-boolean values, `boolean` type will no longer be added by the type inference: - -```lua -local function f1(a: number?) - -- 'x' is still a 'number?' and doesn't become 'boolean | number' - local x = a and 5 -end -``` - -## Error message improvements - -We now give an error when built-in types are being redefined: - -```lua -type string = number -- Now an error: Redefinition of type 'string' -``` - -We also had a parse error missing in case you forgot your default type pack parameter value. We accepted the following code silently without raising an issue: - -```lua -type Foo = nil -- Now an error: Expected type, got '>' -``` - -Error about function argument count mismatch no longer points at the last argument, but instead at the function in question. -So, instead of: - -```lua -function myfunction(a: number, b:number) end -myfunction(123) - ~~~ -``` - -We now highlight this: - -```lua -function myfunction(a: number, b:number) end -myfunction(123) -~~~~~~~~~~ -``` - -If you iterate over a table value that could also be `nil`, you get a better explanation in the error message: - -```lua -local function f(t: {number}?) - for i,v in t do -- Value of type {number}? could be nil - --... - end -end -``` -Previously it was `Cannot call non-function {number}?` which was confusing. - -And speaking of confusing, some of you might have seen an error like `Type 'string' could not be converted into 'string'`. - -This was caused by Luau having both a primitive type `string` and a table type coming from `string` library. Since the way you can get the type of the `string` library table is by using `typeof(string)`, the updated error message will mirror that and report `Type 'string' could not be converted into 'typeof(string)'`. - - -Parsing now recovers with a more precise error message if you forget a comma in table constructor spanning multiple lines: - -```lua -local t = { - a = 1 - b = 2 -- Expected ',' after table constructor element - c = 3 -- Expected ',' after table constructor element -} -``` diff --git a/docs/_posts/2023-02-02-luau-string-interpolation.md b/docs/_posts/2023-02-02-luau-string-interpolation.md deleted file mode 100644 index 0bfa33a2..00000000 --- a/docs/_posts/2023-02-02-luau-string-interpolation.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: single -title: "String Interpolation" ---- - -String interpolation is the new syntax introduced to Luau that allows you to create a string literal with expressions inside of that string literal. - -In short, it's a safer and more ergonomic alternative over `string.format`. - -Here's a quick example of a string interpolation: - -```lua -local combos = {2, 7, 1, 8, 5} -print(`The lock combination is {table.concat(combos)}. Again, {table.concat(combos, ", ")}.`) ---> The lock combination is 27185. Again, 2, 7, 1, 8, 5. -``` - -String interpolation also composes well with the `__tostring` metamethod. - -```lua -local balance = setmetatable({ value = 500 }, { - __tostring = function(self) - return "$" .. tostring(self.value) - end -}) - -print(`You have {balance}!`) ---> You have $500! -``` - -To find out more details about this feature, check out [Luau Syntax page](/syntax#string-interpolation). - -This is also the first major language feature implemented in a [contribution](https://github.com/Roblox/luau/pull/614) from the open-source community. Thanks [Kampfkarren](https://github.com/Kampfkarren)! diff --git a/docs/_posts/2023-03-31-luau-recap-march-2023.md b/docs/_posts/2023-03-31-luau-recap-march-2023.md deleted file mode 100644 index a951b8e6..00000000 --- a/docs/_posts/2023-03-31-luau-recap-march-2023.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: single -title: "Luau Recap: March 2023" ---- - -How the time flies! The team has been busy since the last November Luau Recap working on some large updates that are coming in the future, but before those arrive, we have some improvements that you can already use! - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-march-2023/).] - -## Improved type refinements - -Type refinements handle constraints placed on variables inside conditional blocks. - -In the following example, while variable `a` is declared to have type `number?`, inside the `if` block we know that it cannot be `nil`: - -```lua -local function f(a: number?) - if a ~= nil then - a *= 2 -- no type errors - end - ... -end -``` - -One limitation we had previously is that after a conditional block, refinements were discarded. - -But there are cases where `if` is used to exit the function early, making the following code essentially act as a hidden `else` block. - -We now correctly preserve such refinements and you should be able to remove `assert` function calls that were only used to get rid of false positive errors about types being `nil`. - -```lua -local function f(x: string?) - if not x then return end - - -- x is a 'string' here -end -``` - -Throwing calls like `error()` or `assert(false)` instead of a `return` statement are also recognized. - -```lua -local function f(x: string?) - if not x then error('first argument is nil') end - - -- x is 'string' here -end -``` - -Existing complex refinements like `type`/`typeof`, tagged union checks and other are expected to work as expected. - -## Marking table.getn/foreach/foreachi as deprecated - -`table.getn`, `table.foreach` and `table.foreachi` were deprecated in Lua 5.1 that Luau is based on, and removed in Lua 5.2. - -`table.getn(x)` is equivalent to `rawlen(x)` when 'x' is a table; when 'x' is not a table, `table.getn` produces an error. - -It's difficult to imagine code where `table.getn(x)` is better than either `#x` (idiomatic) or `rawlen(x)` (fully compatible replacement). - -`table.getn` is also slower than both alternatives and was marked as deprecated. - -`table.foreach` is equivalent to a `for .. pairs` loop; `table.foreachi` is equivalent to a `for .. ipairs` loop; both may also be replaced by generalized iteration. - -Both functions are significantly slower than equivalent for loop replacements, are more restrictive because the function can't yield. - -Because both functions bring no value over other library or language alternatives, they were marked deprecated as well. - -You may have noticed linter warnings about places where these functions are used. For compatibility, these functions are not going to be removed. - -## Autocomplete improvements - -When table key type is defined to be a union of string singletons, those keys can now autocomplete in locations marked as '^': - -```lua -type Direction = "north" | "south" | "east" | "west" - -local a: {[Direction]: boolean} = {[^] = true} -local b: {[Direction]: boolean} = {["^"]} -local b: {[Direction]: boolean} = {^} -``` - -We also fixed incorrect and incomplete suggestions inside the header of `if`, `for` and `while` statements. - -## Runtime improvements - -On the runtime side, we added multiple optimizations. - -`table.sort` is now ~4.1x faster (when not using a predicate) and ~2.1x faster when using a simple predicate. - -We also have ideas on how improve the sorting performance in the future. - -`math.floor`, `math.ceil` and `math.round` now use specialized processor instructions. We have measured ~7-9% speedup in math benchmarks that heavily used those functions. - -A small improvement was made to builtin library function calls, getting a 1-2% improvement in code that contains a lot of fastcalls. - -Finally, a fix was made to table array part resizing that brings large improvement to performance of large tables filled as an array, but at an offset (for example, starting at 10000 instead of 1). - -Aside from performance, a correctness issue was fixed in multi-assignment expressions. - -```lua -arr[1], n = n, n - 1 -``` - -In this example, `n - 1` was assigned to `n` before `n` was assigned to `arr[1]`. This issue has now been fixed. - -## Analysis improvements - -Multiple changes were made to improve error messages and type presentation. - -* Table type strings are now shown with newlines, to make them easier to read -* Fixed unions of `nil` types displaying as a single `?` character -* "Type pack A cannot be converted to B" error is not reported instead of a cryptic "Failed to unify type packs" -* Improved error message for value count mismatch in assignments like `local a, b = 2` - -You may have seen error messages like `Type 'string' cannot be converted to 'string?'` even though usually it is valid to assign `local s: string? = 'hello'` because `string` is a sub-type of `string?`. - -This is true in what is called Covariant use contexts, but doesn't hold in Invariant use contexts, like in the example below: - -```lua -local a: { x: Model } -local b: { x: Instance } = a -- Type 'Model' could not be converted into 'Instance' in an invariant context -``` - -In this example, while `Model` is a sub-type of `Instance` and can be used where `Instance` is required. - -The same is not true for a table field because when using table `b`, `b.x` can be assigned an `Instance` that is not a `Model`. When `b` is an alias to `a`, this assignment is not compatible with `a`'s type annotation. - ---- - -Some other light changes to type inference include: - -* `string.match` and `string.gmatch` are now defined to return optional values as match is not guaranteed at runtime -* Added an error when unrelated types are compared with `==`/`~=` -* Fixed issues where variable after `typeof(x) == 'table'` could not have been used as a table - -## Thanks - -A very special thanks to all of our open source contributors: - -* [niansa/tuxifan](https://github.com/niansa) -* [B. Gibbons](https://github.com/bmg817) -* [Epix](https://github.com/EpixScripts) -* [Harold Cindy](https://github.com/HaroldCindy) -* [Qualadore](https://github.com/Qualadore) diff --git a/docs/_posts/2023-07-28-luau-recap-july-2023.md b/docs/_posts/2023-07-28-luau-recap-july-2023.md deleted file mode 100644 index cf09bf79..00000000 --- a/docs/_posts/2023-07-28-luau-recap-july-2023.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: single -title: "Luau Recap: July 2023" ---- - -Our team is still spending a lot of time working on upcoming replacement for our type inference engine as well as working on native code generation to improve runtime performance. - -However, we also worked on unrelated improvements during this time that are summarized here. - -[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-july-2023/).] - -## Analysis improvements - -Indexing table intersections using `x["prop"]` syntax has been fixed and no longer reports a false positive error: - -```lua -type T = { foo: string } & { bar: number } -local x: T = { foo = "1", bar = 2 } - -local y = x["bar"] -- This is no longer an error -``` - -Generic `T...` type is now convertible to `...any` variadic parameter. - -This solves issues people had with variadic functions and variadic argument: - -```lua -local function foo(...: any) - print(...) -end - -local function bar(...: T...) - foo(...) -- This is no longer an error -end -``` - -We have also improved our general typechecking performance by ~17% and by additional ~30% in modules with complex types. - -Other fixes include: - -* Fixed issue with type `T?` not being convertible to `T | T` or `T?` which could've generated confusing errors -* Return type of `os.date` is now inferred as `DateTypeResult` when argument is "*t" or "!*t" - -## Runtime improvements - -Out-of-memory exception handling has been improved. -`xpcall` handlers will now actually be called with a "not enough memory" string and whatever string/object they return will be correctly propagated. - -Other runtime improvements we've made: - -* Performance of `table.sort` was improved further. It now guarantees N*log(N) time complexity in the worst case -* Performance of `table.concat` was improved by ~5-7% -* Performance of `math.noise` was improved by ~30% -* Inlining of functions is now possible even when they used to compute their own arguments -* Improved logic for determining whether inlining a function or unrolling a loop is profitable - -## Autocomplete improvements - -An issue with exported types not being suggested is now fixed. - -## Debugger improvements - -We have fixed the search for the closest executable breakpoint line. - -Previously, breakpoints might have been skipped in `else` blocks at the end of a function. -This simplified example shows the issue: - -```lua -local function foo(isIt) - if isIt then - print("yes") - else - -- When 'true' block exits the function, breakpoint couldn't be placed here - print("no") - end -end -``` - -## Thanks - -A very special thanks to all of our open source contributors: - -* [Petri Häkkinen](https://github.com/petrihakkinen) -* [JohnnyMorganz](https://github.com/JohnnyMorganz) -* [Gael](https://github.com/TheGreatSageEqualToHeaven) -* [Jan](https://github.com/Jan200101) -* [Alex Orlenko](https://github.com/khvzak) -* [mundusnine](https://github.com/mundusnine) -* [Ben Mactavsin](https://github.com/BenMactavsin) -* [RadiatedExodus](https://github.com/RealEthanPlayzDev) -* [Lodinu Kalugalage](https://github.com/imlodinu) -* [MagelessMayhem](https://github.com/MagelessMayhem) -* [Someon1e](https://github.com/Someon1e) diff --git a/docs/assets/css/theme2.scss b/docs/assets/css/theme2.scss deleted file mode 100644 index 21710d40..00000000 --- a/docs/assets/css/theme2.scss +++ /dev/null @@ -1,8 +0,0 @@ ---- - ---- - -@charset "utf-8"; - -@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin2 | default: 'default' }}"; // skin -@import "minimal-mistakes"; // main partials \ No newline at end of file diff --git a/docs/assets/images/chess-profile.svg b/docs/assets/images/chess-profile.svg deleted file mode 100644 index 742dc6f2..00000000 --- a/docs/assets/images/chess-profile.svg +++ /dev/null @@ -1,1356 +0,0 @@ - - - - - - - - - - - - - -Flame Graph -Reset Zoom -Search -ic - - - - - - -
Function: [:0] (31,070 usec, 100.0%); self: 0 usec
- - - -
- - -chess.lua:3 -
Function: [chess.lua:3] (31,070 usec, 100.0%); self: 770 usec
- - - -
- -test -chess.lua:510 -
Function: test [chess.lua:510] (30,300 usec, 97.5%); self: 0 usec
- -test -test -
- -moveList -chess.lua:453 -
Function: moveList [chess.lua:453] (30,300 usec, 97.5%); self: 0 usec
- -moveList -moveList -
- -pmoves -chess.lua:310 -
Function: pmoves [chess.lua:310] (500 usec, 1.6%); self: 0 usec
- - -pmoves -
- -illegalyChecked -chess.lua:476 -
Function: illegalyChecked [chess.lua:476] (28,700 usec, 92.4%); self: 300 usec
- -illegalyChecked -illegalyChecked -
- -applyMove -chess.lua:490 -
Function: applyMove [chess.lua:490] (1,100 usec, 3.5%); self: 200 usec
- -app.. -applyMove -
- -generate -chess.lua:319 -
Function: generate [chess.lua:319] (500 usec, 1.6%); self: 0 usec
- - -generate -
- -pmoves -chess.lua:310 -
Function: pmoves [chess.lua:310] (27,400 usec, 88.2%); self: 100 usec
- -pmoves -pmoves -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (200 usec, 0.6%); self: 0 usec
- - -band -
- -set -chess.lua:195 -
Function: set [chess.lua:195] (300 usec, 1.0%); self: 0 usec
- - -set -
- -ctz -chess.lua:141 -
Function: ctz [chess.lua:141] (400 usec, 1.3%); self: 400 usec
- - -ctz -
- -empty -chess.lua:137 -
Function: empty [chess.lua:137] (100 usec, 0.3%); self: 100 usec
- - -empty -
- -updateCache -chess.lua:283 -
Function: updateCache [chess.lua:283] (600 usec, 1.9%); self: 0 usec
- -u.. -updateCache -
- -set -chess.lua:195 -
Function: set [chess.lua:195] (100 usec, 0.3%); self: 0 usec
- - -set -
- -index -chess.lua:274 -
Function: index [chess.lua:274] (100 usec, 0.3%); self: 100 usec
- - -index -
- -new -chess.lua:228 -
Function: new [chess.lua:228] (100 usec, 0.3%); self: 0 usec
- - -new -
- -move -chess.lua:109 -
Function: move [chess.lua:109] (100 usec, 0.3%); self: 0 usec
- - -move -
- -isolate -chess.lua:304 -
Function: isolate [chess.lua:304] (400 usec, 1.3%); self: 0 usec
- - -isolate -
- -generate -chess.lua:319 -
Function: generate [chess.lua:319] (27,300 usec, 87.9%); self: 2,700 usec
- -generate -generate -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (200 usec, 0.6%); self: 200 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 200 usec
- - -from -
- -bor -chess.lua:129 -
Function: bor [chess.lua:129] (600 usec, 1.9%); self: 200 usec
- -bor -bor -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 100 usec
- - -from -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -right -chess.lua:101 -
Function: right [chess.lua:101] (100 usec, 0.3%); self: 0 usec
- - -right -
- -map -chess.lua:295 -
Function: map [chess.lua:295] (400 usec, 1.3%); self: 100 usec
- - -map -
- -move -chess.lua:109 -
Function: move [chess.lua:109] (4,400 usec, 14.2%); self: 800 usec
- -move -move -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (1,900 usec, 6.1%); self: 400 usec
- -band -band -
- -isolate -chess.lua:304 -
Function: isolate [chess.lua:304] (13,000 usec, 41.8%); self: 0 usec
- -isolate -isolate -
- -index -chess.lua:274 -
Function: index [chess.lua:274] (700 usec, 2.3%); self: 200 usec
- -i.. -index -
- -down -chess.lua:97 -
Function: down [chess.lua:97] (100 usec, 0.3%); self: 0 usec
- - -down -
- -left -chess.lua:105 -
Function: left [chess.lua:105] (1,000 usec, 3.2%); self: 100 usec
- -left -left -
- -up -chess.lua:93 -
Function: up [chess.lua:93] (600 usec, 1.9%); self: 100 usec
- -up -up -
- -right -chess.lua:101 -
Function: right [chess.lua:101] (800 usec, 2.6%); self: 100 usec
- -ri.. -right -
- -GC -
Function: GC [GC:0] (500 usec, 1.6%); self: 500 usec
- - -GC -
- -bor -chess.lua:129 -
Function: bor [chess.lua:129] (900 usec, 2.9%); self: 400 usec
- -bor -bor -
- -empty -chess.lua:137 -
Function: empty [chess.lua:137] (400 usec, 1.3%); self: 400 usec
- - -empty -
- -some -chess.lua:207 -
Function: some [chess.lua:207] (300 usec, 1.0%); self: 200 usec
- - -some -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (400 usec, 1.3%); self: 100 usec
- - -from -
- -lshift -chess.lua:164 -
Function: lshift [chess.lua:164] (100 usec, 0.3%); self: 0 usec
- - -lshift -
- -updateCache -chess.lua:283 -
Function: updateCache [chess.lua:283] (100 usec, 0.3%); self: 100 usec
- - -updateCache -
- - -chess.lua:305 -
Function: [chess.lua:305] (200 usec, 0.6%); self: 0 usec
- - - -
- -right -chess.lua:101 -
Function: right [chess.lua:101] (1,800 usec, 5.8%); self: 300 usec
- -right -right -
- -up -chess.lua:93 -
Function: up [chess.lua:93] (400 usec, 1.3%); self: 200 usec
- - -up -
- -left -chess.lua:105 -
Function: left [chess.lua:105] (1,100 usec, 3.5%); self: 100 usec
- -left -left -
- -down -chess.lua:97 -
Function: down [chess.lua:97] (300 usec, 1.0%); self: 200 usec
- - -down -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (1,500 usec, 4.8%); self: 700 usec
- -from -from -
- -map -chess.lua:295 -
Function: map [chess.lua:295] (13,000 usec, 41.8%); self: 300 usec
- -map -map -
- -index -chess.lua:187 -
Function: index [chess.lua:187] (500 usec, 1.6%); self: 500 usec
- - -index -
- -rshift -chess.lua:176 -
Function: rshift [chess.lua:176] (100 usec, 0.3%); self: 100 usec
- - -rshift -
- -rshift -chess.lua:176 -
Function: rshift [chess.lua:176] (300 usec, 1.0%); self: 100 usec
- - -rshift -
- -inverse -chess.lua:133 -
Function: inverse [chess.lua:133] (400 usec, 1.3%); self: 100 usec
- - -inverse -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (200 usec, 0.6%); self: 100 usec
- - -band -
- -lshift -chess.lua:164 -
Function: lshift [chess.lua:164] (500 usec, 1.6%); self: 200 usec
- - -lshift -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (300 usec, 1.0%); self: 200 usec
- - -band -
- -inverse -chess.lua:133 -
Function: inverse [chess.lua:133] (300 usec, 1.0%); self: 0 usec
- - -inverse -
- -lshift -chess.lua:164 -
Function: lshift [chess.lua:164] (100 usec, 0.3%); self: 100 usec
- - -lshift -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (500 usec, 1.6%); self: 300 usec
- - -from -
- -set -chess.lua:195 -
Function: set [chess.lua:195] (100 usec, 0.3%); self: 0 usec
- - -set -
- -GC -
Function: GC [GC:0] (300 usec, 1.0%); self: 300 usec
- - -GC -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -isolate -chess.lua:203 -
Function: isolate [chess.lua:203] (200 usec, 0.6%); self: 0 usec
- - -isolate -
- -inverse -chess.lua:133 -
Function: inverse [chess.lua:133] (200 usec, 0.6%); self: 200 usec
- - -inverse -
- -lshift -chess.lua:164 -
Function: lshift [chess.lua:164] (900 usec, 2.9%); self: 300 usec
- -ls.. -lshift -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (400 usec, 1.3%); self: 300 usec
- - -band -
- -lshift -chess.lua:164 -
Function: lshift [chess.lua:164] (200 usec, 0.6%); self: 100 usec
- - -lshift -
- -rshift -chess.lua:176 -
Function: rshift [chess.lua:176] (400 usec, 1.3%); self: 100 usec
- - -rshift -
- -inverse -chess.lua:133 -
Function: inverse [chess.lua:133] (500 usec, 1.6%); self: 0 usec
- - -inverse -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (100 usec, 0.3%); self: 0 usec
- - -band -
- -rshift -chess.lua:176 -
Function: rshift [chess.lua:176] (100 usec, 0.3%); self: 0 usec
- - -rshift -
- -GC -
Function: GC [GC:0] (800 usec, 2.6%); self: 800 usec
- -GC -GC -
- -updateCache -chess.lua:283 -
Function: updateCache [chess.lua:283] (3,800 usec, 12.2%); self: 500 usec
- -updateCache -updateCache -
- - -chess.lua:305 -
Function: [chess.lua:305] (7,700 usec, 24.8%); self: 300 usec
- - - -
- -new -chess.lua:228 -
Function: new [chess.lua:228] (1,200 usec, 3.9%); self: 1,000 usec
- -new -new -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (200 usec, 0.6%); self: 100 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 200 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 200 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 200 usec
- - -from -
- -GC -
Function: GC [GC:0] (200 usec, 0.6%); self: 200 usec
- - -GC -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -some -chess.lua:207 -
Function: some [chess.lua:207] (100 usec, 0.3%); self: 0 usec
- - -some -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (100 usec, 0.3%); self: 0 usec
- - -band -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (600 usec, 1.9%); self: 200 usec
- -f.. -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 100 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 100 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (500 usec, 1.6%); self: 100 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -bor -chess.lua:129 -
Function: bor [chess.lua:129] (2,900 usec, 9.3%); self: 900 usec
- -bor -bor -
- -inverse -chess.lua:133 -
Function: inverse [chess.lua:133] (400 usec, 1.3%); self: 100 usec
- - -inverse -
- -isolate -chess.lua:203 -
Function: isolate [chess.lua:203] (7,400 usec, 23.8%); self: 700 usec
- -isolate -isolate -
- -GC -
Function: GC [GC:0] (200 usec, 0.6%); self: 200 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -set -chess.lua:195 -
Function: set [chess.lua:195] (100 usec, 0.3%); self: 0 usec
- - -set -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 0 usec
- - -from -
- -GC -
Function: GC [GC:0] (400 usec, 1.3%); self: 400 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (200 usec, 0.6%); self: 200 usec
- - -GC -
- -GC -
Function: GC [GC:0] (400 usec, 1.3%); self: 400 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (2,000 usec, 6.4%); self: 1,100 usec
- -from -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (300 usec, 1.0%); self: 0 usec
- - -from -
- -some -chess.lua:207 -
Function: some [chess.lua:207] (4,100 usec, 13.2%); self: 1,000 usec
- -some -some -
- -band -chess.lua:125 -
Function: band [chess.lua:125] (2,600 usec, 8.4%); self: 900 usec
- -band -band -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (100 usec, 0.3%); self: 100 usec
- - -from -
- -GC -
Function: GC [GC:0] (100 usec, 0.3%); self: 100 usec
- - -GC -
- -GC -
Function: GC [GC:0] (900 usec, 2.9%); self: 900 usec
- -GC -GC -
- -GC -
Function: GC [GC:0] (300 usec, 1.0%); self: 300 usec
- - -GC -
- -set -chess.lua:195 -
Function: set [chess.lua:195] (3,100 usec, 10.0%); self: 1,500 usec
- -set -set -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (1,700 usec, 5.5%); self: 800 usec
- -from -from -
- -from -chess.lua:75 -
Function: from [chess.lua:75] (1,600 usec, 5.1%); self: 1,000 usec
- -from -from -
- -GC -
Function: GC [GC:0] (900 usec, 2.9%); self: 900 usec
- -GC -GC -
- -GC -
Function: GC [GC:0] (600 usec, 1.9%); self: 600 usec
- -GC -GC -
-
-
- diff --git a/docs/assets/images/create-new-place.png b/docs/assets/images/create-new-place.png deleted file mode 100644 index 63a29242dd53f3e3cfd085081c3abefc583b91e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639120 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
$yZoNHnz2VDquX#$dtgTj5% z;MDzmK{w&{PB^?e=tf5WcFLR&w9ns+<-hrLXH<*4>yZ>)o%?PSebLtH;dsE2PL2~s z0r{*f?{cvS(W)fFTP0Thy2mWie+riWWY{YZzJtmH!HdvNUVE)dG~k_)$+B=^L^}t? z)$*P@n-BUG1Yn}oPA`4RMV=BxwKg&|Zgf8CedsaUes-$kP_$zt1j;6KXOS_<*9Xh# zscO5_W?|@unvn~lfKjrd%={idVGg5`lV~d+*H@2ZYVb}$Ly|m*h zmhDDib=%rQ6NX{qB*XR#ert;SPIPfg4&(KVWY2A$gEI{h+>>p$XBy_XSXaMQF1?FM zwGOyjB{d1f%I567wg)R1CTBG1|%RPBOw9=2q8fTAu0R~nqg-s{2lYOS|E#+13zIyZB z%U5sk@L75yz{i)OXGi>O%3OlTAuF+cvZZjBN`k*-gbk1GU%!0)2AxV|yNO|7)AoqY zB(wLHbVng4N(e3IDZ>=-Nrjj6&Sg)wWmvuJwJTYnE2z4`f(+%8uxaRbe6lx9Ba@W_d%FIvWfbNhHM7qM@ zm#GYhSWrgzcdMg@p-qa(KZw(h$H)#A1cQ@@AIO(6St+Igmho>tJj18!bi(w8~+okfUh^Ux$?Z@?ITgv-U!`;b&sH$ zy3%W}yG#rZyWke_yyT&@zV3$y7L`Ak}U=+ zR;u?>p4rZljp#5C`rtDR*x{|Q=>np(>nYh0kvGeTwQI=1`_~=*_}hPi02tehkJ;7Y z<(p?ee*YUi&(rVu9_qA5Z>5>oukp@Z^7yU0gu$5Ka1r&wAA!bImpF=w4&C2fuN*W( zq7uY1fB*JJeFXZgJ_3yuFrNGJBi8VuiMNksNVzLt3R_JTgQtQ|2YE3#mIp)H;alWP z5x+zI8Vh?q(_SZ(qBan%w^4cu2H1LrAUguh4>$7T&{I%6OMms|&3AtW5AeMl^|SOr z;x1cpu3>sgY-QJarlumrDa`>xc~RR}ufD?%7ry)bKftP6WivrRMPiX?LQ09G6qdrU zARv`|6rLu)U;*^v<(oIZ_Xj9%milx&=Bpx_Y$7RQ?FV`V;E*<)2l$BzPg1P&zvT~x zUiMNy*y#(RN=Vv+jil(X^D|ow((B7O2MPa zkJ#w+e(?dn5sJkuX?WmvI-um3VjLzOT1oKlg84%o1o`Znx6inG#P6MwlM#uxkT_ht z6@Ud|uX)(T1mwAbqQWartbep3r9)vyYI##vFp85PZ+pNcUHjI914eanx-VZ8>e-`6 z(T52lWx`Z>-J3NG=Zt#@^vj3WDXqT zPL;g+#cC5jI>lka1{JabCrD6so;<<>X}>g;BniR_h~b_r@Z|WU1srFBmf1Rs0ycur z^W`zo!5W{2K`<}yhNjbi<2=^-${$y@+4(m%fE28BgJu&Wd%L_sV8Fk!Pv z1{79zfgh>&wC+2Pl;n-}R)MVozB=nhsY_i~tK_)$d}RiutC9WMR)6(Mx9zF!E7>=& z9zs>t*iZ3BanFIN$a0aaJbj#P5hcF9p_5n+a$9rt6!<0jk|FJcMdyMaqbTT6jL{rtA<~4=?8OaDm>7UcsQ5VEyQ3yg#py1Z=1~oz8+i znI3*KRw4TW?Xa|R@dz`Ockkap;E$N%M5bAhLz5`=QFJAm`PiZ3Do`p)$TCc? zOL@}x)Lua~aw?Y99)MlT@$g=l3T+)~rVlM{1GX78u)HFldC7p!DDiNcPhuUbLQ2?G z0n$-k-}KZ$NUrMp5b&7DKNVH*;6;E%{;M}w{eFv8H`Z&4SzckF;`9Li*I^}_G^>$8 zH7oo$Q|01+WsKvOEo9TJ=VRFe&fU6$q)(OLIXkGkin{#^c zP!#3v?vM%t6JRy}(qCTvr_j?GhX!%t+i!x-ty^^PN|8nf;WwtWd}uii8`d3O3mJ?h zC;(igh>>NEB?Z-IUA!!0Ky|WmeT5qoW90%@az2%pUQF`qGZs`LBtM-PMGw?7$Z8!J zU1IArJnYtT4c)y4q|>o6ObyY(_0X~o7>*MJfl=?o{TbshwHZ358!kTHy<}o0`)XDm z8vHT^oUm-(_@QO~xIxR{h{|PQI98dt$6g9V8|q9$MhKcbYz+c2cGDkEQAE_ z(Q2a(WXVU5Tpk*nfj9^3i*;`c;4fC{o1?E^0spX*ap+p_>o}uQ^abwA6YW7#nT#vG zM7_t&MOJ-@ZzPeLx^3>=q4^??8Eg)wfY3jH~37=?9gD8#u0kq^f-$VDWP-fmM~V;TvH?sxD{r-R>sW0Lh< zf$9HpdcbRmD+-O!YR0fsGr6cphOB8wZA@t?#ojcXVO&UDMuv3~PNuub$?0#$L>5_B zNbtMjlqQGM{cd?4&_;(J_@;fuBfJrj>bIToN80#c|2aMgU9)B(w{%s3@R2hS zbfQo#W|_Nj{D}i1+|2Pgf>&=|z5dnf?|u(God=5YWJRCyON|pLOvF!Y0gNYO&i6S! znv4qJRe#ADa@8seg~~&j673tgNz1#nG39_O_A-eDvK64-VOnjo9<~EZF2*y3)yLj15pV^5*r?@M zz~`Y_XVL*+*d6L)&u)R4sqh>C5p&@*NT&e~9YompWEe*oD9zG!qFuXiA3;WpPX$KB|qsb%CVu>G~h^cdGGd znw7C}VxSc_#_JxVQLzh zyxut)2oq`vEk@l}8{ip5-C~0?v)gOAnE`E6O{*`~pWfYf!0u1&45?}|WyD&3N*St? zjHcJ{Bz4%q6T_j)btKc-z*dt#0y?ha!BD5|wF444~)yN3g}QdPS!_ zFJ#5(#av&KT<&Ru)?D`PyKN}qqylJTsO8;}Vg#<`->Ssia_AdQdYMqtQh59D?g#lS znaWH|9XNWy(N3i>;6`Nu7M*o&S8(M|68fT7wgAFg6Jt!dTZbbPG#+jAsv4uRBL`!1 zS0)M>K@K24(9X^J#YWrZK>*gOLqMkjQw_mT$HmS=MFT~kG5q0qKAv~K!tYn}ne*ml zm>3;FV5Fj#jlUpIW}gUE57w)T=F-hLSwoFmg-+v*)bfU1W?i^d0bW-A(6wc}wFm|O zxY6jHlSNjCM_C(VjSJ zcn4Lv+~gRvT+tr2QwXGo-2qyXy4zkH1BC6p`6OZe zQCqxNelh7>ASF~Nz6qg3*?r7p$Th7obm0f}qEIS2j`AdaSbxyx?dgSgSjB@KI4MvJ zjAMiWDHgrB_7VfhVL=1h*gKiHIcCW;f&?KYK%G4f9%ftve}gsfI(ZZ^Y|SqSVcS-Y zARJvmYV7^d{5alNA9ZkB06%JZZ{$y`0=dm1DqeHG?k-+^XW?0LpWJXuIl)d$C&Bp! zaw4Gsc3^kwVKZ3{q1?|H+;1Rxu58olG9)a6tZuTjo!WTCPH*Ha3*S}>Gw6BS21-bE zbTnk20|F_BUc&W`;^RE+^{OZFN2dlC>Ps3Xxlqr92o8qryf_opRXy?CgUG2F7A zM)JH_3Jb}wPIwJt#{<;Z9kltoAOmbwK{JZJ7(7fZ4uLlGt9E+9&z+fzLQ$Vd4iA`SHMk@O0PsDA@(7v(PGQEBlbD4Z-6I{1tS+aE zbrAqWwN<@Ll4*l7d4f>jmNOC=nxWhX7o;>1tQ{GWBPhft5fK%Q^`WPBUVJU5)TpmPH*$r^>S19m`=!qg_ggs%kverI6r- zPcQS+vGnCn$+E>F77Gtm2X7yFza&T|G{iRpM{~(ueu`w||%w*K=W9UBG zN?)K>YqXknFadQUPZ>;rCG9e1k6y3|>WX1a2$_On1I6Z@w94v?B}}IBVo-Mtvqxds1mEMw?A#W> zk6GOt_mix^x>j{DKgk&H8x(TkUFrn49OCX2Z6z`{@1Hd!5ZhsB;it5B5=5z8y%W%<1Zezb>Gz81lq!wU5q2us zSGA6I;8lXOsJF^x4*#g4X+>vZwB;&Y%LTdKG)NwgkzBVsYMSS$cmm^^%a2e-`G!;_ zOeUVjH*U)>Q~b>`htj@iHV@GSWKWOU#SVg4K7EFK_JIj|pR`*Zo$oo`Eh@y|FgQiV zjA~QvVUx0a)P9}&&ZsQ9RuET78&NJBtPVWWyP0XmKB1Nn!ybkp>_2WK)1<(D;&-IN z2O%Xa1u$uttxFJLe?T+J> zTQp>nJee1k`!*~vO{Gu~;qyJeR5dB6^t75iZj(YDmU=lf^r^HzA|a)u{|AG7wr%7Y zc>}CM3yJ%!0@M;03v$#Q5BIo0(gEO!%4cr8h`a#i>V<0fu8FKZ$-;J|#r#G;SVUGxRp zow3O-!mkNYME$KYShG|wpM7}!?3*{wK42LP5mt%so7Sv6FNa=l z+nujWc^DwU^`wKQK7TBtpI^wj@s$XFT;V?}jSg+?g!W7hCjhv7)EO?R02GV}oIkX{ z`L(Wo<0Q}{W#YAQPZMUXn+-j9OAiS4@GSwFvMu0YFBoOj(Y+?1kJuile!}p!0R9QZ zyP5vnDu9c=FVA_seJl@OqrNK7{f}9HTwnKqk0UQ2VBGf$bc(C?k_gbKrMf`(xgwKR z07n=0y-PLPL_Ru>fC?QWQf?^g%M(Xrw+D1CfeAWnjfeaK{f<5X4g$O_;A@6td%=P& zy-@byg+;7lJH$a$)xk6#+KOPuFmsuw21_8yN}PQCWkw?^9?Aw7 z?xybnDM50UD~4xbatQ^MwL#ChtqvOJwAhkXA++ygG3q#J zX3EqT!#n_^Te+YJ&sH)$fOIe!zbcLLYg7ow4#V*RRp? z;ObMys|4WFX+^LOC9h__1YwKs+7t#37mB6hDwW`>AG*p`m`Q zmrPa63QAT$LBaQR^ZEws^ zt^&Rkb3s12= z2@ONxdw2<7An(smODY(S@Xf>|DmksuFR{sfPOYz@q%n3rhCYyex{aj>&p}Q=kUnQD zn%2miU{}ZGV$15akbS9|){+aY=}RG&3_xjf3d>yqz2`CMw34^Q5hcbYtO}$;R=8T|m-d7w3!Dj z439Qfi%4`JCJ>4oww1f%q(%&A-3M@b9DPC?Lo0l58%|KlL^%#*VeA`+6(rMp>B%mB zp5KaCY!Zn%0VD^xuRcn!Xr5H>M;ApcLPlb~ak5w{5)a>AOu#xDcibvts#;6JvV~9! z6&)jSViAjHj94aNVXPNFc#Abio1;)L_oL}NpmuP=o0=c7uFtGGfK}eZSSd+n1&>_u zEu(w(XnV@EMKgsayeNd0(TEO>F{p-q%&L)tHA|hghE0uF2to}D8#aJ_{%!d31>s~v z-=~0oT7e%);HbRPv)}KYfB3c+z*zS_`|u;K75rR7Kia_35mY!9?|A*_XBPUCV{mQ$ z*#a3nGo__YKr*b2a&aLdu6C*Ai{H7HeX*KC{BR951=ztDI1b@XObJCIc_f4gwQ@K| z>aT{BgrZqSOYI&>2+~O2H-zOS3b=-ky1y-eAGN$U@~2gSy!C!UQ1jBf*8c>$dqJn4 z^UY#V)V(J+mZ7OzP2I_;(#`HpzDe)^{h7y^?yQ}`8m~L{*|a3<&h7i_xWk^=%ZPi< z)q*G>_O49{jGw5EW``K4W3i*H*xRnZ@VibU%MC-2b7$QV=brY1LCjqEijCS!N7aIfmB(Q zEDRR1*v|D3#y}k{x=dwRH_H0FrGS-|R0Bstix_KCV*Lt^^bT7shXp5#y{}&UEiqL> zwfWL{n$_;hQ9_UX`x*J+$7 zRk!6Qsg|JPs&k2Bg$qh$rl~gz)$wG7JfrG)^0Ilz37$Kw7 z**ay&3RySm;@sUfXKaTQ%V3*g34|wv@QIZ$^jUH7_c`@uAQ!~w4_t8pj7ao_Gld)& zQ;Q`uolwj8rNUSq+30M@DUmR^OP3tn6cqLgQ4*;yHHL05iw1QCa>;&^B`0K1)_g*a zWg8e=F;l5rIjddU917(PN;80@c<2U5R?9!6q+o3mCMm0kW5GYOjF!Lm`{B*=58vSl z@N=w$@mXl10MbKMtw03^KVEngjA%)LKiW+R!dlltqB4L%`Cuu7Sx24@J|cqZ_(D=2 zR#0xnpF1l1=fR*;?aHkzYuBAU7AP7nBg$1OON|wb8&8%8PZc{^TeVYf_{Ha+@e9B&pVKuqta9;W7#RNjWc(p+EwJ(Xz*K$1k49rd%-mI2>Npi$ZdiIU z#T}v1FoD{6J2x1ZIxVer8qiLEx(W)vAYfGqWN~$dsE=lCASZ{TK#3WjWflo3FX@>N z2Iv?<$!UWsNWqK=WgWPa(c=nk3*g7C?~VNlS0I<($09ty=B4c$g$dT>TsPl?Az-`h z(Xq5K@=g*oC#FSID(qX>or4F;@m(ed?VZDEbB+EI!DX!3F6(xd>37#0M<-6)w(r>R zE>n7TSeA_a{zI8(-6GjzEoku3U}wcHQmH zg>%BX<-D+d>x~w>ykF~5;E=I%}xs#N$Y$P^ZS;&NG7U_9HfOI$VKAf>Y* z1jWQ;srPq~nLHX?oXvo!sscpVqgw@BZp++9zjJ_iFwo<+#m%bMLCfLE$e4;M)nn3t zVg~OF=ShO}LBcqE+^TNtNP@C?Oz*6ZhcCE5p3v@4Bqk#fJJ__tng=p`G&#bO2f3s& zIcQ$)E;oi& zD{J}%W$dhyi`5m5Fw13Ne3&F(M(`IXX%CyMr(G~@PLm!Sj30S;TL3?Dfp7FrumYK8 zjBBp0-ea(RH4kj=EtE{DO{Zk`jol?jXMDTyTh38)eJsXAY4&-$xnkF0$gp#~f-dn! ze_taQHDG}|G;^jg~0lTQ*?=4<-cxuIqrMJ_F#~Xtvj8zJ8oNh z*>Quqa~ZcuuVF0*)D`sGFN8CO#%zpFWq|1eV$Zw*dEl0?RycKDaJHc>d!0Ck4EB3T zexlD(lr8Yatb$mj@q`_iuMH7rJB7I>Ld2R%s&ZBN8NYlXfPx&nfUP-~8_{2|$>C=u z7x{s441rN3t276znb))%{jF>KN@WqtQKc`NWaC}J6`oDS(E+3b9bVQt3VNfxetJ;U(nDGsLm%}YnnHNL;_RSI34*Ieivs5Hvek+a9^(V;bxws*OexUv zf*y7E31~C=;sce=Wm^ZP$G-eqA$iwW<+&2DFB28c%k9o0t!g?4O zuETZA(Dz@2mKUmUP(Z~;$N1p1&v-r==EslQX?JLVL0`k{GqM1*V}$6)9aVIk7sdLi z0p#QmjP@d7M{x6tOftE2PmnbRF(x*aU}wFPvD*LH7p#;=b1VB=9wo&ye31 zz@JgHo5|0$0=fBP$Nv|=OVyV(E?^ER@b#1J8~Z} z28K24cfhq#?jE+wpfkB(Bp`2~yl*PU3m}UsmfEu%^nh_Yx@tTXde5S-IIN!-<}GbP z)&FD%Ck8}#SBQN_hat05*>k)Ob{JYB932^Vh80&%BSOapJkA2OLz?c@VCl3sSHI$c zxMSF0jb~?SW?vu+IwsPcFankpreyq?QN3R%~bOF6@^gk)9UU?4d$%P{$%Pb3^cz*Zboj-z4*JSt)Un336H z`OFn`NUDaw)m1Edx@f@`ot-NJ8s&@Qdd7tgLlY1^m%XY)WmL5AM(AFFin~a1t!PLj zItPQY2%~+(EN+I4gAz#Lm`wL|t`1>f(;4dKkkILJ{g7aTl}qQ0mNugnDpe|y80>w8 z7Dt0r>df~o$uQPEZI)!{% zB{Tt&ropAI+(!=Ms2i2HkM@$wQ&lCRD};9ouV=~T6G2K{)i~Qwc`>TXv+tch6l@_{ zxPZ7F@$W=Kz_DdeF<`yI6pb;GMZy^7cGj8G81(HQLnCLWd2BKb8wM-Bq^m>`3Qk~( z@I9@7)bG|(N;!*BFTo{frTmKru--^c0<`XsD$7?bVzGk7Qr7EUFMZ{g_fG%x!OLc} z*dU?j5OM+hN&;y82cn_1cegoBd_-l3|J8;=?6UzO;fsVh50vAKo+hjlWX#NkqmW{6 z5rYX{1fVyDOQV3aqqA&;Ld#o6PB)E&pEmBJ#jB0M;eI2@Rl*4?cVBdWTL6F2a^IXi zg$iiG$6w8;%MX_}eyfH*PSst3m-@T6Z{NRr_W>{7CwTD|m>ICo8`9mIZ&^U*+V5My zFf#|*XV0;{c=6)pOY8@LUM?9<$fx&3%H=kGX9e#k72$QF8G>)fA5DKJQx)TgJKyFx z8}nVg3M@w!vFrNmRCkZ+u)pk-sZ=@y#Z-IdV3^Mk%AMAg2nVbU z3(9jZ?^%l{qq0xEIbaDX*jDDRuw6aZTxPvfT!D>uZvn?1*^dzuhAMLCNO<3(R zR2qpNE_L3Pm5-0lWai>JtaxT!XuDXqUe&~ORJnJ|n$o&#s&>m}qg;a`UlR9<;3&t~ zoXgM$av03OkYgjy!9b^CElrUx$%P0GB3u%3xjZGtK7S4d#_uln5!2M^H#kF*5)b@J za0q7+rh7nmpb;@0Oil5NZgE~eF<>ylGpi%G#CyTj*AR7RqgGoSE|72Nn<9fIK=s^5 zsk>YTSq`Rl!p?wM4g##Nq*+%EZTyl74at2_z+p?NxXjU89Ri?7dyP|w@b8w?ny0iL z{lpezBalS~;q){63nW`0v8;s<9a52z=PVLpw-TjFKT0#itxco~1LT*_W+>JMW|Dhz z2Q5mQgcXb@hz{m#gk+R{ON8{a(HROL4gLIr3X}dUXR-7 z*1jQN#{=p*_zVEpL=cxqfgyCABxV-0FMCD1tcmA3n31E!H;+dAV26RnZBm|snZrY0 zG+(;8Er7pt#c%$;W(Dwu{{B4|w{PFR`|(HIG_V51Lig?WKfL|n`*%P5`2PKStVE&x z@%!Jt{r>y6Km7RNJ^q5duWR3X>e8-#r=$Can!excqeimhTMzfVd2#vs^5v^HZ(e=( z9oE1GZ1@KqAaN|VU%r0*^39tUuU}*3?Kz5ba@2P?G~lDKoq-pOX~c@cA|ZUD=t%7r`$(=ukd%+=_VTqm zy1Fly3I(qPVHck{bz%Cr*V%K@;A)8oHEmtuT5zLClqn&J9+_C=f@Ey9uH) zKXmcyg$%=}NNq<7exu>OQ-hi0(y>>E-F!rvsK(J#QCn4s!Ro8>rGmFTr_s64r-KNC z@tX)5;H6kO8s5i(>N!LY>4&{u{^et+EIXb zYqg_5im8ssIvX3tM#r>rZ31-KKjF1SsOnWV(j}!zzig_UBV$ulxr%tXvt$``*hj@O z=}?>PDRrtAD_-}iRz3$9@t#MIcoOyCoSCjwo5xjoq=z~Jl!1s~Uo|@4*vFMlCBVev zz_5)QShRP@*zb)|c`P3s>eYbi)Fh?Gm-gjw>CTeY!B1-)L95)cwqW>6U|IOJmFroy zUKNJJm>`8%R)kPwiOqLy5K#GLyqC53hzx73Ps!kyfq{VBf7==0=EOV$au3m>k6**i zrcxTvE<7)3JUZ$_-x~xtR2JvPXOu*MVP9R1a@P2iFwF=NP>$pweOZNqavyWhAYI`k zBU7DG+qpyqG(7dNH;>KAmBi`|bxU zclqMt7Ry~OfWOy@7ZUu9eMqzb{^5srKfdLYVO^{Dxjv0KT-X1a|)&?~Pgjzk2g67QlF6mB=?w-^4yf)bVuZV;0dP z!Pm&{_3LL?l=4qGg21<80JfSXvE^X(?&k}5mI`b97q8zue+hS+9Y(%YPu?9ue6)H0 z*%%Tq{pc5R@Gb=(Jc`eioylC#gYyHAGf(O5v7<5zqb;MT`bfzsofAT3Yiw~KESgW* zn<5b~7iU@&iAci^vy|SiH_~1HG)4;A%`ulga=bcDwWWktE^MJ)xl5wl%vZAm;f0lQ zHa1=qQ+Kcaj64R2>v%HkD2|Ab+Z8lqIA9byeUmIU!$-dMXK*Mjs+K2b_*gK0TcVx& z_USsu&e6(UF>!x578UG*>{;@3g-PYPA1d)J%j&_T)8R4pK_joZ6H_87tF=#hC8!i! zNlV3wT!tel3X4I9%mWcy`(N?U#wrIq>83kzr&(+i42K(Sc_M;er)>)_+6g0pzI8Tr zV0*MD)~6#_1-M^K&V5=zG71t6Bm=XJEceN(;timvFs1=^die)I9P1^SE-o0;aemmP zqX*^ONQ3i$sBv&P6u0)D*Bl&85;}Ec)lTiXZ>o!gzC%rw$qyt3I4!6e-yH}`%c%%f zq<)zVFu!+Uh>rqd%0i5;A3T@FpR=msEn5J3gTDSx6>fUZ-hIG&9)B8|QxC@vu` z!Hf<4+NjizxzM55DqlewmC(nKQ3#@&i*E?ADmN6WPi!%o(08O?fwoefd9jP<)8hl|K30U2j6{K%KzU#efvj$^Y8!l zzxxj!_c+|xzeolC&;Rv*;d1wfAK(4x1u&Mod>eWHBR=r_7E5FPCjrhj_=#w>bxGD; z=OM#1x0hnP({cU8SKYdzm&=OdA^h`Jhcut_xUIs=*oDwPyJ z#o!sb9;)w%!2ks!Z}sdC)YtF!<+g{ys{2Ajsg()@%0{;W=jF3XXKg1M8mfHcs1Zjr z+?iReXBmR1Mw8xvgkf{3yRIH}3U*V@THKCHg8-5MU4kT$C}cEJ9x^Jnq?Oz%+S0bG z>VO$P>~aB3+XTDKiY?hW?c%|HB8Hgc!Ro5xQBrgcQAlS7wA|E14!sQaf$+Ldd?o+E^jLOk#ObLxhlH(eHRsZcPS%)9ycu8~%;|{U2c^{Kzrh z=pVfT|IeTNNj?Jo?j1ho%%{7$D`dILUk>I4$Qv47yh<-#!awaIy=*P1-7AK3EiT)g zarc&B8N+)weg!D+&Y$Js-bVZg^s84`L2>Sb!qU)h!TW8`CBHZADcx8iGprB!k#ejL zc|hUi{-oz1A`ylAJ~<>n9&q>a6&Jw2(gK*ij_zW1ig*f+Hsh^g!8qa3huHN1|K;m9 z_?d$KFUG1Uz)tr}xOhIXha(7IFJAE{CM;>T_ORx7*0iFK+W&<=zYV|kpo1J4Rq3Kb zrj6p=0U>wt?jFvpRU2B`)@|&7UzkBJ9^VB9K;Ce{j3BnE!C(fz>1uG*I0-Sznmw;; zrL9)9OunXEb@{?T0B5&_c_A>OQU^x|FYTz}y|4$BOB3VTb!>1Po>^Z0d4(g}$sM@? zI>}iU=Yy8BOJu5X3snt{woDZpB|J8vxIiuzmovF3Qj^P_T+Z;tW=art?i1pEMS9dI zC<%E}WT17523hf9=%5^B6(Xp$Yr>TvS+gm~oYLsq7h_ZKQ55)T?UjWq>?4A9WVV7G z6{B#%&~IC)E|^<=R!F{-b%IV{F=Jod6%@U>$fecMhP^0gAR`m{On_?g7i1&-DFcu@ z(1Vws!g){IN|SJ0mLB59fR~1p_|=5|-B=6}GalZe#ZMcA=RY?JA$~C!@5OlcXRU#x z7~iJFvKEFv;`M~}-8#Hf#266l+zSDB`9=iXtVo8wTR|!vRJ@@; z$D0d~jF^%lEh_PZg8gjmKo{>(SSaro=ShA57}@O(f85dU$^!U5`8WRJr#}1b!ov{e zf91dbqULXZ{P7#S)?IeXX&cCaql;WS2bw$mwIFoU*FpT#XTSb6 zr=fi`r^(sh)VhB%oJLCtDV*Q~(Ae-x&iMi9#Ga`?MPjDq5ARp?1o+h}uJG{;pGE1n zEWWYzo7$&%x{3uo9&zIb3RnZ{Q{|o<8^7Xn?cKB!cvI49P35H+YeJX&nA3O6*$nGQ|Z93lJ9OP_fNuf??03a!A z)HbRqj9i2q>xO7N6tH2DiZYgv!m+7=QJ9NGe$i0kMihW+X;@Mjhy?5%lB8RjRMmI1 z-t{4qJ>zspGd3Uva{{i0;$|>mi%v)jE$IZ4MB!o9s>$ysoF*OErjI+BP;ZPc;svI1sQB%q{+V!G%9%5h zw^5rB)D!9E2rwGPxh2*Eb zK3Xdho+2u)(144JA`v;66h4Pk2nWP&aOya&z~{x8yMgtq4OI*%k3z+To^tw88Jh z0vIdU|M*}3i$A4?F#m7<_MhAy0{@g6J_XzNSbgcf!@Is;2rIXe+)r`|`VO#N#J)CL z@zWBzaG_6rlW!n9zQgN8-!Dp9^ldkHwL2VKRDCq8VdW?7)8$ZptUJpyQ$5>x8p2ru z)8ky>GhLpkuS!@3ef#{nj5~)tt2edR9i+xbZ+$gmo;cukl>^C&D@`89{PpT_h5c^Ry?-h$BW{@5^A8|FI zH5hi0lGHgX(!_4Dr{}6u>mE8H-0-WODUsv4MC-zy+%#uLYe!YOai~WmlZGx4lsucn zccF>7*q2dRGP^@+F!J$qr|U@=u!+z{&b!?dS7jjuinYdtD3cJ3b+uhA-0FobB{u`e zc`oLBu@7S`FtKXI$`&xSKA(9cQ8l#qe@Ns<*Xv3Q`B<1*Et~lf zXngV+efp9Qx!y`~M_I~(&KN5E)2%IdU~|uhP-3Cr!FIH$6cxGccw_PXqO^pQ!g>r= zd}gACj`>}ieyEZ$)g@mfCAqeTiNWqP!!`WF%6}&o!1M7h7O{W$U;U5wS;}JB{Kx;< zzvk!0w}-$Fd)j?1Hhxl68!xkY9nXN~C8&Nb=Du|iY|!~KpT=kHa5I4sPiGdLL3eSU z(Zk=xE-kK=;iAD$5hC=D_`55)dwSj|bT5x&Q{0p6Q(*Th{yB(gHnmee!!TxO@jLC$ z^mp2XI;q#2*kq~xHIEnN_$QNZ-{Mcl@r)S(6c_hb#1r!5`uq9M3~H^|*>vX^yq70f z1#AleRnN1eHsAu3@>y9M%_+xPj95pKVWChRp+kx%deON~E_5uGKQlVV&eV}Oc$!vz z=}fOY)cBGH6DtR^!lY*;r4vxIvPEWm%BFK>ESsC7UDvQS_3GXchB5ZKq> z;jJDqp;~TNK#BAe@XCi+mDw0})2qT@=;8?mb@uWnr7sMbvEf-)(QpVnukwmcmpn!z z*fPZ)K(_i436a7^tiFXp6K()^icJ)7E1w;%bp&Cvk^5aTz z>}b%}FePpaT-p2;-)H#Gy&qnFV2hRN%V!_Z0XbH)@9+;VpXrx!yCf(loY^;4zj)W9 z@4okO5zBR~g?VVnPkaGp5KNIeFaXho@HWAfoY*?VP>Ik^$(+sa89e}q{47M=_Fu&J=SdL-FJo zG=OO%Ek+v{!VWVv;;FKqth#h<(w(L??@W2A&b^BD0#AVpGRF$K6ctsC3pl2HBSUF@ zNYL$$jf#pR^bysRSeklCQAg9(#(Tbt+C^A9^VKM|T_E_nP=s2x(JZG|Ot4GB+9@0~ z9{4Z{5i9HM-3%nSkl+gN>-UoC{Q}97p=_AmFm!)PhEiSVXsZ&k!%LKS%cB*tg&YNC zV;LA@|6&WIkp}Q!>Gb2?BGa{f3*7;TahV-fs9Fj(TcD%j!W zjjLY~1BQN9zYrPWK-KaX+n)Q6Z3H7UU#99{agV>-+ICjrieuOn8TPWE!x@14UKW!9 zHf$yK!kJQ=@H~NnEq7A5k+XtX1hrF~xM32lF;m{=XW=7Be)$XF!{c9klKK9n1Q_ey z+e6^{SL_#w%w?=yF52v_UErTphHLkOjcj`SxWPo5=HoV-y9XXzh-U_5^^|H&g`GLrgm0f%H6kC?P2zOW_@6Z{au(QKd_%KN~cP0C0Cs*S8LW`@YLQj zidl(F97gD+t;GQ54x#DJKy%XIFZ3#$GB6Hi#kEcaM?wIMFdy=UzM$>N9mrY|q`b+G zGzr0zAwn2R$FrtG063O}x@arJ=3lB7tx`l3F6@Rc>MBu3NP&6=8VpHmLzmql_Eu8P z469nDFpo#V5MWS)3nOtHC#1|Xk%8=N%t93jnL9z)HcT$JXrr?&G&(M{AiI2vYSw|V zLJ#MzA^G;r9*0aoMr0mq>>7PW7*}o6;kN|-^i|0y4QtKpa2S`#9Gwt68^>^Qe%)S2 z$}o-<@!$wUp{k1t4cb8i#R{i`R3YdG zbK&=HBFw%*sz}P~wud2Zhgj3%ze=J&=7FuB=t9Dj@rNz+8@yZ$t4>0yx(d;98~YDm z;cwxBL@}U20;!xjRYg5*UF+TzR{_YNh(xsX-E+7a`uGGdd0Ar5UqL2{JU(XJ<+dRk zT!h5M5kx%Tw6R^cbfYgSO(z|b6kb|1(AkK7eafmA50;)J62R7+=C^FL^dH2KK4KS# z`90kz0yrSxk`q(Dymg=47CTg-WGx_iHte8$ z)|h__o}v}t?#Nz= z99YjCzFf5n-eg8};5BxEA?7Ciip0fUt%~3fNF$20!?*%ATO5{Wxq-%Jh!zSb;}T(f zs1+q~%;aPt&s)$MfMzNDP=wEqI!VT0b zEz5}I8knl+Xef)c=2Ac*k%tyQs58!jxFRpn<+}G0UT+-Yit-XNE-tAaR`#=h0(}4f z?u*szCq4dkp$`v%|KI=e-@JAJz<>LX!PkoOOOwwFbY9Aq_ig5w_JkgFSMMKp8m-$8 z`3&8HIJu$VTKE^ik0ea2GZcBs&q&Xyd_1i~q?5v`>CD=L$=?ELV4Qo&ooMvP*n@A`#Uh@%Z+FXxkJVBzDvJ%O0Dbw84 z3f)mU!pMNb3df;zK3(7JH^OIl$9eQ9WZpxVAPct zfcWSF504ybj1N?lO25g=Lf#btP!VEBtnloMz&RPw+ITcS3BmwdtGL@;7%`E77MJ#% zYufJ$YXi(=Kt^&KZ98fWpBGSGFAs2h+YvIVWf}mn0%YmV6 z!I%+!fr|nhOO6<&UNn~p79j@OQiPw94`TP`@782kM8Wx)jc-vI3A zcNML2RJnwAJ#!T04u9pJLRJvp+$8{16E5LbdZ;WX!kZ5R#=1(WHZMEu=>)W>ILRN7 zvok5r&fa`@fn3-&4``str;QYjt+g1swg8CC$W^OGTEW&L6D{f0o=;+)Wn#5QaF|9N z-fJm0r?SUmbZoG~EzVeK1%SqnTCw`Y<`bMeSY}r%4dEazBkf`9BPmO)z=_d;Q=F;t zw9)!p(byYWonxfKcQn|+wqUZ4Kf>6xZXE-NdMgs{^DTOvc@SXGY{A+#XUdYTUXxd+ z8A>qrHZ$T5ied5KU7jI7>+Syk-4_egzw~Fn{nTV(0>k@Q;b}91xexM&xmDm+fm;P` z6?ozm@Qft0Mobd$#?KeutJQS)dH42=0ai5Ri@nnt!f*Jr-AObHvFOrlfM({*v}EIf zT?bYju$V}uiYc)vw2mHp36yG!+ay6QPEax>CB|L77TxNB1psVebvRiql%ZU;4IF9f zXYN+ox^Ywr$(CZQHhO+qQMO-A0+FM%H}bu&4L-nE`t#kgS-*=ppD(`Og}zU{Z+O3d zdUF1y_Orux%@^o`kNyUK%4_{+8o3&P{%aG?EgtF43tKxxv|;PI2$~KyJ+jHzX*=3& zYnwRJ^s^$ziG&$^7Q(Y@^;f)osk)=nNybXiitjMLqgU{Z7m)YhzE5zZw!In^0Q#~+ zWHJ@Etk6gU0gax7;f^2NDZ(nnmcxDuaK;i3*%k=4A!5|558*Ax0|;ZpWu`?|^mQ0*;*n6i>vsHlTlm) z#ZbtHdXfiJGNV$~-E1l;(OlPhv)#(+8C=L+s>&q{kYUs#YL6Qh(`qItSOs$a9VFz( z6`2&H;TUj}RL;X+7+y$!S#Vkg2&ze=W&kNNA(z6@f4^VU+2}?;*oI=2`U*$Rx z-t#uk-zsICkmhs>>A>DI7=tk?UD^9Vyif>pk>4F6B@1R8ZH}qYq+9)vzsR4`6Q`Vo zpbYrY3AkeuOH7o4`zgWwd0Svme_Hf-Qy5!Tv<%{J)~TmETrnXNp@vN*CGg;BPD`|s zV6%eN`}oY9FW`5@%Ru1k-Y@#^x8L*LUwps2-%oP4^`8^J+qd7X-+euPFYwdS&i^XP z`-rl?-TTuHmffVgRUF0Lv?sXRXl6mN*4<`?jXC)W5Nq7-b(R_6G$CKKVO+4W@%%Nv zQz5RB0T3e@!UHBD>g0p8%;!4n)4MUnG5sl&5E_~&tsf{cIh&Yjf_>y#Ma*_g&vq(p zOKdF?fk4uD-3B;R5~r+M(<8WPeT_W9b^U_dwDXuvhd#(jmXGa}8iqO^6c2MuZj-s@ z=hoj>as17Bi#1~k4p<91sKznyjq)d3=ZZ6X1e)k}l!BekmWWwx=+uFIJA*JF$WN#g z6tg(NOhfWfb99yurE>;DzaxG}Oh>i)$srD=*NoH>Tc7>e4H4+3Z4Pan@S`;Vbj>h1 z9PYN0Xj)lZ?}l$SFd|i$F`X7`_eeF2^WwOi0`nf$a*$xnbt>m*JIMaqwxiU1CxW{I z9h}gZykpVM5S)r;v=?SzO&b3k^3-IC=)25$qa7=RXYKllZE7C%3%z$BdhzvUCK}Vv z9EC|7K>kyP>Sf#!AbjNnit||2S&wN8-X(+;XTjo8L{8pT-<1er-vvqxH82D>s{8CP z6e_gPQe>cOlnqEyMFe74Y#656fTObcN`Ezh;tedWbzu|h+@ec|(Y|uf`=);YwgO4~ zpDVvEE6@oKN@z$t&_AcSxHRcK*1Y%l+`CCPU|*G}_oS{LSlxd5XV9$CW+Tbgwsll= zVT=c9h@EdVD=h0c^yBB4e;u|NJc@6lj|Ji290KuZVlQq6#PJi)arQMH!(Tkcm2-j6 zS5eai_ZtPG1PisC0&A)>)hijBHB0nKGz_ae{LiFDLL-0;TmkK{JYJDB#f6PqHNg`^ zq}jxx5(pwUm(WK0ez2PjC4~@@6n(b`A}$#0VPG_yp+j~zapVMP9YWTO+)OhD`=zA?4{1A@610SrD;L3WUPk>wG!{ zoa#L#^J_&w&w=RBZX}Y3gVJKG-znB&UO^l%|0Cg&0*$^3{=CIAv+ zpDj7=R|oXf$-Ud56>C{m^|5N4q4L)KjXB(V)7?i_#Y@)Q)!lK+JpqNepd!**5-Xn) z)pexS9|9QkeT6NMAg&P|U2}cP`%)1&*OZQjz=aO~f@I)Uw3g z6ToNS1fNo!&jRQ(0daQ7xH}7zJw96-iyYb;WJ`z%nU_^eW%3zV(+@xq5~>gL9bUO7 z`{&bQg|3X`ez1$aaB~#7Y;8zM7dK=`S4~gTGH(%#*hgYYb}C_G-I~wB-k#L@U`Yd8 zYbk`Pgh36nvo{uSohE9OnOILm+g0)q(GX8{mf+}Z2fFp+tdU79VjL=3!NVx~=o*HX z(-{#yfOC2gH-IPhK&?g=RAiHpl(P?F!F_zP7YqK0A97Xy0h|k zX2q8T7GK)#RDMC)Sk8XBai%SdP5GQ}B#7h2I3-))7GNyIU0ur0u-}J>`3`Ri=CE1{ zO~q)X7tJhd-!7#Haa>d^n1IcQh(j-Mh#oc|giYQ1gAD5mBayl?oy3l;om|X4bmH55 zzlL*MhiWJ*A)?kfS2r&ZakR-VNYErflRQcbSp!b>CpNb#MnTI8-gZldJ3$!C-lD9e zbtJKtFt32P;E!#xE~**T(IV;szzB%mi?QGUjc53JKEj~nwwmn^9FHpjKw&&MI{V(r zM0i6*z%3ox3gBG9`$nP-We5uVM$BrhhDrD+m^Ggu*MbEgV`s~g%ZXvZ9(FDf81$XiW; zN_dQmWB?iA1&exFuEXW1t{&17yewy$^+8sy9FA$Tm5Zy;!Y}aWLL%}+o_$hRNLNy{ z5w`Hv#E{Y7eV6^uxXBE$;uR`RK7*wgJJ;b1g|T|oRgrYh$dLG+oUj3tis>IIw51);`s?uV5|kG0D%xVz?q=jQJ{O| z1*{H$!JUP1bbLy5i)jqiT!1aCY)=jYkNJgBTv7Ex`_+~;-b_Vx4a6YLjdV~S7YdWm zO;rp)RMmigsZiAbqeGn*g2I@^fkwC!iL6LpEFT6l){T7u2x3JQ5@?I z^d;gOKQ**|3Ozok-m|`^5q!TNE59?j+h6o1ybFjOb34@b|EL9C8;~zN-^V=(;nKIy z=)8Kb#Z{Ln=(2fW!|pO=0EOKvhRAgT9EV@YB>F*~=7L3l8$=n#~AD-S7HygK!Q z6z#eYz!}OkBs+3EDUU^vMOe5jQYC{c4J^|9WJYyqp(;-}g-XrrKzKm^tny!x#?WUX zxkyD1*MKtC3Sp_YtiV895^W@RN1nu{u}A@MVKEpa zwL9@wl`%M+fEXBrcv0Nj+91u$M9X|+Xr$YTP;0Y`Bw|*#GU^tLkZLFRFupKUa@=09 zDMw<23j=x-S7-@EN>zX$6UY_d`_4yyRONt0P_~;&1QeX|^19*jRkST?p-2~BpwZwA zJc|W9n2W3ZI(8XBA8STlZRrx|#2PJ<$%PSy2_+C_x0!4Oq^rt#M`Q>O4`Io`T}p4R&4*%hLEu zbXKK6aepUIw~L>JBdWDY=M|L*4$$C3A7>`?48os|*Qk`Zh7X=aTdYl*LyN*Nu8F!71;o`J^5L2m_X-mx`(J_csebN<8Q9K&FTK z0BRc#i>v=z6aeXrk)?>$AYRNuT3z3?mYIkT+TZF(GDSC!5e^)hl3$L}42=yPq6Huo zb~Mbl0HWVFPHuETfQDGnOh{m9Fq=xxvU!+!0wF;+2`}6=_TY>aoHon8^!#N?QrY!2mL$}p8a*aG{JzS!*i zXKbAQYD6%hXPh?xgkNpuBm)KTy*8N(DG>w)x$=XyfbqDp=Hz`Z{acAAb!rLiC^>0+ z&!GuO3I3Lo>S?Pd8YQOCbw4uZ0kH`jQxh`6+|IBJ-7jMhF*4|D9w5@PFP%Z z4?(&w7NN8Kb#@|OWj#4XOfxBkh!V1q;``JQ>fEX*VjZl&Xa2dJa*pKKd7IOxP$#qq z7x>|-d_Xv@Be;pv&~YVsY9t(iZ&4-k`1a=fuqqDm_@X4=+kDNTO1#6}z*2V*19gYZ zU;0984HRs&?r_SYpn!U`$#SgOzYH{a(>wt14;>?^81@xsX+#07b$uId_6XZUL0;lc zc{X`)(c%#lRe&Qzi0iFWyIsP0zO)Q!;SnpU+Naqmb$`*jq5gyJ*fOfqzm#KW8HDaT z-%!8)$#gI0`-bw5D%vloLmpwF*$5%j6%ByXgNdpp*N$UzPI|G9(V(+oeo<2oKgLr@ zQW<6$f{zXF&E@_H#3wsgfKGsx?QN=-TmeVgN!s~epge&8%@E#ub|3Pv{T_+<8ojcf zaxS0LE+|`@BofKr!R%E3iTZ+N3tNhqDf8@%e7X+q0qYUN!Dr<0$|%73AkT1dD~Mao zmn98T{6U}d~i$| zB^6Zm`(6a6Qh?0YVW12#n{s#-MYo+2h#)yOI!x^0G6UXgF82)lj)ho@il3TrBb{$q z*k&`df%q;p++NAj|9l!Dc_TBi;$g%ZIT}9-x(uV-xr~A#M5IH7fQsPs&7Q@nAyP9T zebU~8hI#)yY=n&K4@X0aVG%_6aS=qw)u`_l@d=d!Ac_?j2Qv;I4l~A4QeuCTD=bB) zVWqg`o+nc(u&EfRiK$C-GEdG-%G<`Bx>G*aa7|}&EOa$fWlyxE-bT?Phu+}CR2n!x zb_-ofr9=bhF$!23H)*)kFC2y%%1;Np6%-`Yl-{$+%m)%}G=HTk9tBE*s3p@f+_v+` zT{co+IVE%0zI`eh&qs4GheRU)6TFy$0JU0UikKylB7vacMZ0^k2-13!HeG!P^l+{* z}#(npLD>|O+l zm}ojayp6j3;?PA`l7S6@P5_&^&KlSTeR1f}iT(96NRtHWL^L8B;nJ>j)4JrF_LQ40 zg8A*4l~VZC4^TRP{A#v8h5yqV{a-tw=M2j2hRKW}H*IC=a<`2>^iaclcgOROvbH4W z*4iPhZr%vdW)TUL2+fk)z)!-a?%<;myV_mo1xb4v4Y+;0Q00_jWmEwGC(a6rKQIy* zP9`s$5j!J%3KEt*+5wc0Q~dxpeJ~WX1U@rm6=H=>3BIO>u*0r>tWoJ zm9mYJDuVVl&0RTLx~z`oMdZ9B4NmY0lSHkyxaAEy=C+y?Pb7etV1!wiE6ibQ(Rk$8 z*%wQcThYQ`em|`iuE*M-B9ks)b3Z9T5$9p@u~xgSza==*qVym8So0!REH2}dYOAG< zsF8q4ikJ)bbWSwRkv8=dGqp$J?4!Bu(zUtbcj2agNqA&v*P!2O>V0Zyx5zGfwms=Y ztLoB`YrFM1x;f)*@#1xFjLWQ3%uWfmE*U2b>9?!}nR{0tnmqt-S@ zbPdG_TpR^08;`|65r_^6WtGB08fU?Q5tWjRe?E~#gF+?AW7@F{K2lr@kursqYB2=1 z3-k^=*&qH9`s`b}8F#4c|1(mvlFd)FviEB{<-~r)OYC+5492Q^4jV0q_$BnkH0GooaK#G-ELpvZx8dM*J zn(mFIGjC^M5oNJ%SV}d5PD@ro9dQ6J99b?$#qg~cI3g-isK)VW9(&pyX}vFb9W{whRW(L!$yxj)AWh{{-iZDZZ%h- z12K+(!-GorWR2uNlp}tjjYo+Qt#3%Kf$qoarQPkvgvfVNPCxY#5oXN4a;X7 zzQEGs2Ji$F$&;1V~Hku&_6>K zFi5P=he|pX)%2am3R-PGXR#g+OvJ}A$OFT8XweA+dcDvrJ|t83#fZ18#W9bqN<#|6 z)Z3hh$EUpy^>LAEyhNB-*%?4$7spwMc%hmgru_HiUySNH<`q({U#+}->X`?SX^qG!6X`gOeq0dS~rd5VSI&!cbW*-Cwvr4C-VJtRaT88b?iKiJ5#D0Pr;Tpv=60Yog%W4C2&` z?hSc07#B;Qs7RykgL1dztsUmyUQ@AfUL*(HIF@L{@@obSx_L7g{D*U0!GrNr1UD5c5B5{6ZCYX2_&xU#e2g9R&jVny)HD9ZfXj9gcu&!vUrwCs0I69D~0eG$! zw5g2jC9&hdSn}3bE-*#?CJ{&!dd7_x*BH^?pwq}=!Mw;`!JQB4U{JD)@`bsQMF}Ly zwJ~m?li`b;LdT{9x0e^}w*HURB&_csoiP_lU~QoHX5 zA(uxfkv)ov#+B=e0Wm>0n+=UW=VWH9M@1kGc4@5x>-nfp2*AR# zkP3cmKv?C@vT)j7$N*zbrnGZ{UhsU03ZeL%)iN+j>B^n#{d38ghh+#GJGbti_U(TB3TjU%q8myo1VVj%%lsAL|+r)@qy zv>8%GB@ij1d=---o&DclTYqcJ7azA1+k-R`#1wjg)H#y}^`3vGq=Cxo$R`l>9yPmb z(1*@cFK_Y~CeD$nbo_BZ9<+miYDMgIDWw2=O<7KaDC6?NTrkXgaL9g9mm$X#y3Q?w zRoL#3Zr*x*42uNpW|r|-X8=lQE`JW@Ci}0(W5zPP9h(sIR|g!tc3zm=A(qkH4mm)Q zmmDjLnSARYXtnXeoHCHzo_1F;g^ghVBVAmsTg}I4vn5sh;yud+t6vKQTN|S+zy-%H zYfwR(;N$Q2V#1;n!!lQ4c!{x5m85hiF>5;Wg~_Z+e08Qju2Pc`jX7%wh2^gnlb=YXM4Kx=eyT)du zR`w(42vp_rCN%S6f`w6u31CA*eUTyxVKZVU)PO`!jsJ)rd1^@Enu9SJv&Lg$1zV;h z0&*ONZ;dZ*Oc(@=Uh;T}gfS%2H7#nMbMRt*_WHg>b0<(!^W(rJaWn`OxXCbJB8A3H zfsmsQkYe=RDCtdgWBG9f+U21=EjLge9pTNURwSq8xKQ;GBAq5=%HKzbbX)*M9>`=> z<#i1;3^k*AlzK`iNI*SF4j;5&#b!+mC)jFU0r%`ElY44jz*b}? zq7gd0-^-+Z^IDLO3G0%bqvqy}GKt&7x7=GLkVAp)dSt>f+ zQ%N0^Rsu<$B{J)D2Ps#)iIS5^sB4^+o;aVs%EG1?xY_RFt7AL=W!C&B+wt%HGNJ0f zbnojXm+V`0YFxCt^|CtiW*_))%iWgSiXf|Gt91SX6p|f(-?PJTU=dGAeM4u*7~dGp zic!GOxPv8b`xupTw0ey=14aBmqBgpuFD4EpEQ{qsm%Qvv)*X<_Q018v}nvo7B1THY*Cw)ah*)EPDOy2@S&vGJr{?chI6l zq?=h4(md62Josq0nZ*7=Q&nY&5C}1&;o|5o`%ZU#5R0SLzg<^2rW-63`Y|ftoZXh# zJ4i8qcQygDla;P}=XkkPv&QK7X(1X}$T!Kk{wlzFY3B4)G*&Sh?i>bc^8bm-= z!cYsz`sWmr%^ntAXG`h}b_Bz!x?9lEEU1p9lRc*=Gw4;VsPHY4Yz*cnX~M#v(Aw{R zN+2n|8Z#MLz*bGgQ652$fu_7+gNih?hq&^B$?0zM8AcY+I`>(!Y61ORT0dnYv#WRa zLj;pXUzISGNSYU#_v9r;V*BVtMP4{U~;ERxIHldTy8Wh_t~h)Xi-W?6-+p$q=+^i{ z?An(G1k%}FJo-~1@N$PiS|(>O+9C0 z3g5q(b3Z*Xt5@z?0ajOxKY62WEL&8bVgcn6xmdm&?GXZTSRd*hGXV#==|t_Ru$!6O zhTf%!IGoCXqSV+`_!ksUsYi8(RDm}f3Erp>!A|FoEC7cv8-$A#D2tC4YGPdU;ZiA4 z_tgBGn?NSAn3gKN>=2FZ%D@e}E@Xiv70KOW0Ox7#fG?dXByyTrNAX6R@o|Jc?sxuO zV+U5AM*la9eb-RtSBmdGvodt}=t+A5m8A_;70ooW=PiyQerBH34kMmrtxxOV*RnbF zzCaO5YJoHYh%mwgT#zW`)~`-K^Z{MrUN*jEU0Bw#g&%+y_7P2ehNwPmIKGr1rDSJ=R2h>YEs-Pm0M04$ z#SRL~aAdmS<%a_)$XdtI>ktu^2py3=QOn1zFGOz?VR_b1 zwEnPGx1dnyP)0%O_4;~k>+^Wq`uD3j?)TxV?Jl>^^W}S{jo$C&Yfi7{AnZd zmuz!h;hwd(H%($X#xY>>@Yn3FCy_*=vASm(Cb7Cx+)WKV%aZA74jwQy092n|9UQM7 zv>K2|9bh-$Pq@DCGYhTmgoN?Ec=lbk*UIt`aaCg{bz_mH_K=XwOQKUmW=2(KMi%&@ zsLI2otCaEf3Ud*VkPS|AY~{KTHJlbXTPc7r?Iy|3q^a;3XRb8V#tvCvR?VPm`EYCK z7O}7H$>L`g=zU3vEAY3{c>m`?>QIx<8=&PPyRyNIAa(T9^k4=eksbtdk#Ua(a8AbF zMy^hjK1E3TZ0!77y;+OeJ6qH=o-P4z)a;E2%kuNtE6g|97W%us;sW}Z*Iqg$-}*wn zZ` z<^hp%jXoSc5nlxD56vl=dX<<(hO)j}yCwkp(yd@)>`($RYXTnLR4=z?v1SUSYrwFN zS&%tbEeI2(+BofcyJ)hio>&Zc>L9zOW4?p*m{sJts&bPz@+)qATq& zK&FFBtHgOD*@W%J529o!^@hYHPX3$5v1$;$1k6UBI{y*A4c*5h#uIJLPpu9Y2iL|P zSNq$^z?z@W!$_X&+neonXV=#g{H^b&o^8+X!tC5`Pp^}b-bJsg=c}SxP|BM>mK~Oe z7d^B#&#GuPP0)%x0NWm|i@j)_%2E$IG$WI#X#DKUcl%j_I0`3T>)%18-st&3kHa&1?`AXf5VgnF)4wh}UG+2!egptw^ zpSu-og%Q2#TDxIHky>$N+(krWZQN40N7(?m5U_u*m+e7f(iwpxV@HyNEG=wuoEpD! zbAgEx3*gKwJr!4MvCZNmscBVzNxbx1JX|h@s(9{DteC1o=*b@>1xQ(S3;J{9JEY8i zwMk0i0^BjtPX?R?W6gArJi%Xz;<{?L<%$1BQ_bnCg}!#Tk%>!VxAT{cHnNP^(4rMU z-sTgR*9nUK^9==fCG!$91lm*K1*90IdVyI``Z<^))dtFm?htFoQN~(c%a+jwSn`5CWci^(aEQ;gfp@id`A2yr5;tM=gj()a^sK1 z;k$N+K@^L}Ax``CT@mMK!|Vof)f7nY zw|%;XNBuv*tV`2vWP=2;jNwxs%n`3c(MYy?^UN8JZ6vY?nuE4_46&!h( z0?kIJnVob5ReDDV#}@|zO+jO|Qf;8S*r%dWIwc@0y6I2B-1x5X_tMb* z{BiCpTHp4ZJnDI>NA*Am>m-oe$e|?@8FekJqC@q14;&9NX2JwKa-s1mTF609V8)^1 zrU}jTINkSCoZk0njqeFt;v%ACS)=Wd=&+yB9z0hWR(CLNSQtk!Cdr3y|53T{e3_g| z6(uDhN=M0gnxNVHHgJ@PK{LEVNJOI7T9AZbxQ+bG>AZU4U&a7N9HU4_IHIi*x=3SF z6p4Pxa^``I$aAT>G#2rqx-#9TW5pEEyW?Xg-;SyNKf0&A0aM-GHZ>&;|D1aF=g70l zR7r-6BsZ7_F{M~J9f5(C0zr5gUC1N>eq#xo+TAzsn1-1QbU`T%y(B=?i6s(QMP{$K z9~4A?r{QQ7e%!duWVK%{n~JXAHdeGMWV8KorFTT23WBZ@SIkpL@B27lvjdI#lbFwv z-Hsw6WS;{Cqh9&3p8z=-Vxq;#yvn~)t!1*^Q#6@3y936hKZ}sa!*mWJ6>~_!Gm&;& zHIh0cEy7k^B$0h-?m0S3T;<9Ve@g#pGl~#OTugY&wi(k-DB>_ZT@sYGr+KMA3JS4e zi*?;!m0x-d)4wEn3Wz{}ZsKzt)uxT3(aA-ML(IGGzKPhbRVl!od7h?p4tBCg9Zd;p zRyKAPE^Zc17w4bY1=+duyp5#!?S6gBeZBQ^dVk(OpYuZ-!$$GTzUAfd`guQoPfYAS z9g)Mw*;%1-TLEdtJBxub2Eyj2YFUlY9*1qF+3 zuczRA{Er!5b64X6H3~g7*s3LbSr~JLlq2T!dmQ9D{h^` zZft0W6t8v};|wd1gp(wGBEU?opKv7gO2H4Dof@V?^3o08FP&XU%bq>pog5q>MiW1z zlC~3SYkBU`!UYk@$C9b5b<{3sN9VL`$jB)q2>TWOZ9YAjwzNy*PfuQly-b}M;Ls2I ztNUv%Lp^Q zs=m2r^OHi^j`3@FX?QKuMh7ul-2FBECFJpg1^LyBL04~)f)DulCH;%=Q?>m~h>=F3 z8ub-M)yNqaT_@J2!O0BV=&ru3RvV#aXct)G|ITjks??G={P!=Wg zNY^aaN&GuM5lYk{=dOkc}@% zr*t)T>$OM$h}RGcaWJvC&c4-~l(lj>U_bI>HRkHGC9i3z zDd-=7I1X=z>-*KoXYFl2YYy(t&*l61VB#lgX$aVL0DDVcu^H|7YJhw$uZR7+XE^uw zq;JRb_lPU+`zj~S&+TeR@2>Z0sz$4=1;E$Cv65WuD^_g>qbJ$P=6fX%VMrezyGsBW z-Nq>?3fGA0((eJ2gZjhz#nU6%%cp04em z@&ECM|0|e$4KVJ56@TtLg>ES!s-kS&gkOGUj;CneSUL1{8-bQ0na3YP^{{|Z(`jHf z`R8TqC~XAH{}6WFb&`uN3h_raka5;&x~$91xTaTC%WQQI=3Xa_+d$uw6FOm&Ef)enxRqhwV-X)W7~Bz!PjN*k_6Hy5Oi zfzX7`YBd#7jAB%ttY8sqi-8eg2-C#cmeedoN+QWF7O7t*Hl3chkF?n8!%}%%OE~z7 zTuMrk^*1DI)Ua+|xwk)WLS|K&osET?dwrGD<>vBzJijkc?b9>A==xpJgTwds`Tl;` zI4Ia}?qnv4(go;Wl_R(iyg!igA${LC!j8Me<>{^SDvrbBYyW$EP^0&E>ffT#2A?;x zKdpAV>zlJ`fR=sJ{EoqBvyEfxQm!xsW^YsHBT8GTAG?Ke4tWl;Yc83l^eG@=wdGCH z=gYbjAypx@ymA|jc`kwpOT%%L6sk)HQc98AO?sc=_2Rv~C12%9^m$fce}?p~1XT@T zGFxHNtO|WK|vz*NoU27npD5z@X-=&-`UY?S7xqP zkKK~GaoMStr7o<|`qL6uVb52l`QbKKj;h3%@R$F~0*F<@p&O<8{UQc55Y+Gwt(2oE zIunf+p1Dy87I`Pyk#H5n0Hm4pQ?e4&gR~~)F>y=H*{Vwz(%|+*JFUv@P49tw!fMqs zITR~RBfp~i8FyVh(A_&;nOOBiu?tM3%%kZTSP;FvyxB>DFe@*G`rDcZ3XoJx>BrEa z64$3-`2&g6d|NreSwp6}u6v4|sud#2l6?Z2s5^9|0l`v00qVQluVjX ztKFVzy10Pr2DlN|qc*onv9!r*%^U0Oh!fj36_3 zx%SJ-+)i#zE*_4>#OL8v-#O%*Cob>%rTW$SnVc;At6W^1v&#EP4DAhYwSIOZmek&< z{HZfn{VTf9#oNSC61o?C?}y=;+;2hEfE(Y(PEMS!(^rt3+up~>YYmt8pLc1spt)}= ziD;ybRJq*jgp`4MooDGTb#`)ZUG=MZKmVtL1iN%Kd^ zz(*-^dDbnUQTaCVfE9}-I{PrvT3B(?w5X)E4fFZU=7(uGeYBOEl8&K1n&_=LQHm&W zAF&Lcc6sSj9UAd;-a>Df$XnkN?nH++N4uGj!4N&aP=dr)f|qV&mB$__ECw_IGyQI% zXm1IA`ed0ncm)OV2|M8F>9Xka7-$P!& zFa%BF-z|E8zb*$vQVMsQefHA?EH?XY(K$dyW^@eUI2yoEJS?)2rL0c1paq-kjEKrX zU@`F;MkIEodW$5(`@ip*Glj7`RaJx!>lrm)K&C;~OIox@5wui(q_7>dgtJ)7W%U!H z--+@uA*L5Iu&I+)%W#LNm0%T=w~E*$C=C57$1A?q_M<}$c=;h+#X5-%FUGs2xe%t?M(dYWT=6O!9Ec~UH%jIR~S?A*7RfI~pPRoXT zW+{yZz=wm8!HIn03KHA9+_hL;l*2n`T=?_iUEO83xBjxC z&qIcFpHkTKmpg=Ka#xH&he(3Yi)b*X)W(yn z-bF@*?@2FXfI;cE^;#>`uNm8)3bcOu-?ZO{8B;r>8}f_*HC!*BMMl0cD`6L^cY~Ae zkc;~}j+&o(idiW={bKRd=pA{^l&k2c{Hwo$3`V%W zfy`&t7&WtOlPREKt$puidrpVZRB+J86(SmDPV?P&?$kh{_#2Mc&{%pJW>Jae!(@0iD)WZ zI#Ojwz(zMT!Y#1K8!EVCCI7*og|JcC4%x&akR{w#8$rH-1kWQFTAx zhf#dp@1IZTZ!T?5Nmk#Hb-tmmpDi^x%ur^z>Qqlw6B3j6i-8(8JOo>Z8aN6T?&IS2=J%K7^&r*4>xMz$)`(y6D8z=A z;whqK%7&!o4M>fm7%4bT3(3Ni!r{5;&>M+Tk_nCxsz)p@NNvB$(EC!;OJJT!0Wx50 znCr&-d33;;6=Yyzs)?+-cWWBdj#juv zrlv%@EL`cO&|rG%HiAFcO_)yG^_pnp>HHsj28?4#EFbsHoRnxa&fZYz)X@gmpn#3l&`k6sxI}%uk>ph&>Et z;$H^AucdoZcM!N>TS>L0;A1iMjLO z1EmNfLmL;@YU<{W%P;fa-88SfUjaGy-QUwXaQHqR@1N)AV`073o`xPDp*O0l<{?E= z@U28;KeBMsK;xS=9U;D@Jha0_z;`5uX zJMFz5CnK>wY;F8kz>qiq?5!`PufCe#O)h^=r~H|2cWivK6sJxNl?l5VU$@%6<)i-A zkIiu4V-MwP?&~_;zma&go!Q#n=J!()YtQSI*B4QC!^e73h9}l{jR3V`S^?dMQh{$i zL*AGHx5IJu5Qs&mu!HTjg7mNRG5il`2T@wUJ}EQzv4IjVIc%@s824JCJAjC9S?Yqf zoOUIt!-ZKO9EP$OkUGw@u}rBdOwT3m@+4b_yKG)1OT!JQ=-2K$g$2pd4^Tc7x~@m$ zeE`1Qevh{|RY)P(9oK+c`@cGv=SFsb3kvHdAs4cYX-%`24;pv)O}ij#^}BRTQqZFw zAKB5W%4e}7YKZz_i@TbHIY=+3-INhJ{Ed%qYFE6;$c(-LLIc?^y-S}o?>v=zq?bvp z&*)mzwU{0`NI_|8b9nT*uwGYiHADZXq$;7skiEZnNZBA_4HYT=h+qP{x*}T_Y`|W?|uC6|H zpHn%b{(-chpoCNeus_bhJxnuYFk_+R5F?6WbaAqxJg!)0(n&_?2oEF_oP1a4Ts#m_ z2RfEGuzEfHc~fdEHoB5>j94PM3kjN3qLntkbV~ycl+uh_HuoRV{PIw;H_ujt&aoKpdS%2JIZzgq}%J1)|zhCw;rV;VI|8_h-9Ny-2otNj( zv^7=c^ei?zKH?h2Qg~m>8Js>sm1R}L3!)e<-I+TyYDizf^Kx=}-0ir2zwUn0Bl3QC zcHwxw=WlO)sUt>wHE-s8Gg<0+&9~4&fmZrRhNR|=+6@w?(i+b$QW19&{hITqmA=+f zSa5qNRO?=zvU$W#)y}%Ee0wq(h{dS&{)BQ2ctfteE5h!|j z`6DIY?F8nn>^pyqz*a^)a)LG>-tiXZ8I}_;In!iH+gK!z5r2AIrXD&$lg9QWNr<2_ z4d{3uK}?XY$tdIK3|-@f1WWN-YFBQ$$?!jM)qo~Z0+2+j_ot!o&<~KF`YUY?_1iq7 zhp+9CgbIk=YSkWat{pm6kImiMM&I~+ZToz8f60A&qb>CSKF89!Ib);t{_kw&=kJX( z#cv}rHKAzxohHptJ@Ve!QM%ft{ws}0eGL9@oUl0kcTNm{0#uPaYm{IP*5%n_;5`?n zMw&QK^lr(Vjj5SZVCc7ZD~ehKfr?})SJAN7`9Hcs_p7do<6IZ z*y3eh3>wm)c>Be!{1E22e&c@$RUNTIiXNypcfux@o`>LkT2@k7c7&SRMx|0K4kC## zs5H|33mhX6Ro`9E1kt|)j)O!EJOdQ{9ui$qmB6l?XVi(zsfjOxE_*^}|`D4b{eC$20=QFN5+r6GE&)1t@X7zZaB4U1`lkvIvM6qP2^@ym< z-CON!@2AG=H!bO1s&g)DFpEaOXU}Ixr{KS^`l4nnQOcA5SRl+igNaWk zqJ1tIiH%OpS^edL^8xGGGOl_y(|>f@F?g9V4H?HbRZt;=tClfSZGu=-H=}0!P(M_= zHaH9V$A^9UQ&+#XzpASr-e&J=f!~U!_z7C}YpM3BnY`bl#-Eyi#f3Htl-oj3JJWJ0scy0BP@i=VZ*pF>@)%CdR=9G(YTrJU zR)x?oL;kx-lwT)plV@tb5!fb5hh<1w6oIeGfsbNDq!bZCz$>Cz(Wt{#J!&e9cY;(x zkT591nJ0lnm|?=G1X61^PYx&91Gd1L37`qzbcVRVjh8|IQOd_nB2|Gd5g_KW=!FqY zml*H3L&7V0QO?cXkxJPSAD}EEFR9pT>8j^IN`z^bcgkEp?5*c5a2^ABBG8!1uwx_- z&?;1;ly*$<$JnH1kEfqosxEoQ$p+Z3*+lis1fA?50t*kt1Vwz4{$q`PW=1YNEa$P+ z`Bg)mo$tJ37SFESlgOt!kOr52LI+Xf8&p0n>R<9kfGgR=Mi~BSsrpit5JKVLcNfXJ zCT?zAx{zH zc6a~LKV0}pjgJY5n z=RpHnbEem6KvsRnOVtG~ew@bQagEGYDGh)k9e8AMzkF>ftVT1&bBd~cX zOU9uIyaWPzNcp%dADVG6?wkiKkVx*0cHS2h|KL$)k_{YA3p(f0RuvUf7!NarW=Fz} zmP@R%Dp!wafp@S-tP`!W@Ei%Xvg*vWl#71>7wDmON!vjNbi2?NXc?-hMp?=XxMqDH z*uFY~Iyr=IyEg2sD{nwcL$MJ!pcviCB;|a7yvUGR7@Ge7_LUZtXIXvE09%37_AnjD zXpE3*FB`c8uQ!{Z0U-h5v)vH~gg#W6hrUK$ty0-*6rK-Y)B@almkaH+qa z54pSrhdT-QWgCokR&uI2?YWXYei`f zO;m}w&F7tHyg6)Ly@A=>CnUQBA^5YXCP}BGy;a0CVWR%FV)^ymnay#)@ted}fX6oO z#=FD!I{gDz%X1L^xaZ}~;P^ZWEnx!?N-}z(qz$48unT%kiK9KvX8)6~>dm3l}B zB)RGEoPT+Uh4uBuMrWxbJ^@}9lt!~W&YBPvQn-sum$Ik3gF9L6{{H!NPA!7Z8$TT$ zZ=1_;0_4x>Gke~2X}0Nh@;X0q+KkDvPei-8$*D8Sqco&mB4RJGfvX%TppHHe)0FW_ zQWL(CKuAQ+_nOu~8ih5fqot%(l|zljVa4b5E;z>^tOv4T@$jqN;xivt-!z_KjcKC*R2Vu{Ts$_9@SDz3zGH9-`&2-GV<`qzVh2lI1c778VCX!kY6dj6#9Z0@_-it?7O%b2jC z6Zu-uIb_=hjxNO1(-!gxEP}Ds7F^;b9{aZ;ASXD^+#v6}K14(t0H>z z^!a^B+Bi@UGMa%Kj{Ucl9!hSzfP$NXg4RZ1K>=_U%yR22 z9#FrTo#lneGET}PsV>$zHLDs-MMl!MQ=i<6Q_~7v|Mz;flHF_%V@njHrXoo#fM}5l z0ix&wTjClQtb7pWfzUq}oPkwsv0m-VIf;*eqAd~yUxiU$qdWQGu%CDW7e4(!< z@Nh(rq4lHXF76kA-+5QD_GvSkDpdQAmMeBO)cargr84bdE=yP2H8p{DH+|A{JkoT} zHz8s`lLPx5am4;y_8A#)G`U(Ih2p{^{K*ejqby+D&B#fdvq6!c%^QJQ5F(V4l2A3OZ) zwZQOvv+F{T!HGan3pXFqq?!<<#{;lV(f1V_7R+0 z$f1KEU7or8Fg)Z@!AO#BVBGpEg;UYZz4X>KxHo%YV)|g1A>42q6JmU%e4I#PiM9e*=`FCk}Goz;R!4e;FSUg`c(|S}M#LU!C-zNw<&Lwvuo1TfeXc@`%^m5U1 zvM~=khXKcO*?cX}59QPN->=Ue?tS;2^bb46pA>O61{_JbUB=@WUBL6$9Bw6%aS7N` zyas}HmZlzJ<=dLgHrrhuYVehH&y8ddy~D*QO-_cE&qtLRdspI~jhS za19q+w|D9>noGo`F>;TZ19Ead6MinYr;~%z{&~}w7=oYC)op)9_lw@~WplI5W@oLo zS^(>sPVN4I3*2D*Ki1N}V6Dc_Sk`m99`TJjrhL2L%-^c0+b*{z$MSofDo%#Yf2pjbYGo14Yo1)uejdmI(61ud2n_O#GThZE8wlFMzW8Z4tT)Q4q{|l} zvWPf{_}MyNRs$Ikgx*oDs|6Pqc1OHE{={CaRblje+0&xWbOpk8CCiUd6f#D6wv~!oLP9rfSj2zr?O! zoTQ7Ry{7Lx>A}T%KhuvEJ$rK8W0JKY-}r#CTe$^!WBd$*6ll84C%|I?d+~{xM;sP6 zK_Xv9QYv&Z`t11F%%+Iu;{1*>IRaA>MN#!pKn{g$%*4JTX#2yR3q_nmD~(d2T_9zS zm1K;TWC+7VZOZV*YMb%qVIU>lcd-&0k`!gT%-gDz+ZVL+tqMe$HqF-JYFsy>mj%O3 z!gYi3T8bE&WvtJJo_maQw1)FTj!@9bUhZaaF`}UQ7+v%LbYjHD7Vu=5f~?Syn9ST6 zS0Z;r1p>wS1R{#^HrHelWx9$37PDh?m(h+~VYA2GA0bL|RNcAlu$6Ag;__4u?m=6Z z$MAKxdHSbF-&cRXU7SxpJ=BzoA-)(BS28$}gCgd)<$d}yG};*679JPR=FdjQ6x+*Y^GNN7U!cb#!w+Cg; z&O_b_EhUzdQHGDQm-ev-YWvEl&=H0edce&@E^RS{JQxvXjh@G^#6sCnOM*~;DI6U# z)JmRuUA+@&;wwo!A7|jaI+OfO`^0&(IG>ZXq&D~%c%{U>t_xu!du<(dDk>WlDl2qh}P|4AvT+bFj!Mg4ZJmf zns))Qw;2!qi`ax~qjX2L2F3*lBMn^BAPn6)l879sJ5nDvKpn(qLo-q$=vARa=W~ol zOji^sO5@k2q}szEBm+ef4{&OV`%LYj&n*s2_<)IYqkWzO1+R7cYLz;#d7w-!q%+Y^ z3<;C?ok*C1gr+Df!VxHVE)s)kgSb#3b^Ox;m$*G8K|N{){rMIq0z@_zDc(bi`HZhR zd(jz{{21r&bgR%pF|Gm{ZzFhQZqmTUyDh@pU8pDvk@*OSXkB0h9Gif7E4j0L$R6Sa z10o8-Y{7Cgdp2qTxYXcw7)^)66h%>hT#Ot-j4u8a9-oJ!>vaYO;LZDXxU-sX-REYq zcYb&{1oDlJ0mZAd7O2YHyHD300S@}>wXV8qZ)>B|DPiy$Py1u>C%mB~V^}Mzb0O(~ zG-p&o@#L{(WByL~+?Y0%5|C?q8hw&r$OEyaJ6w`?vy+$7FOllbkvtHc!!tYmvt+KV z`2AlD{x;vw@9f4Oq1g0LO`MO+G;F8aAQTWg9Xkuxeug`itPgkD|Y z=($3%*fw;MqW)+-cXD6|+yuL>zXTQ6?yh7@?X+KAvto zM!3{qcRo8%6%9#h-M$oYGtc_ld%Kirgba}A_pFjwk0-s7iKuX#dPfhs>tPf?32hchJ;BH#9fy{uXJEj}5IAlUF%Y&z2|nE_;3+V1A^XuNWI1DQ-9I@K)%2&B z!a6-QUF0O& zr711=95%dkG(z{>HAs2%`RTX#U5GvKWR7W4k=XJIGNx1^4x4DwISS5NV#q~9efJ$O zNoRXmieyrY%P@NS^BsO4wFsd&<=`1^75@n_m0&t5D1`h67)7cI$Ktv76J!_p^Brcu zI{^kvRHG57oELRaipEeGvi}N|?}`?g9%x;0g#G%~E(SQ#~19 zWNuGtMHRTAD{r%@A=_{qo!eP&wWJUv7Oi~nvTEK#WJSToXrkqplc0TyxOu~}Kq3QU zbS&ww1n7B}m4C?ElS!o7cqSvHHhRqo%mLV`agIP%KmKXc+@$PRtj9`NX}p3VLsOb2a@#F zo=#C}DR#DR@zqP6?d|N%))BbBhw(71wDS%d_TnMIpMMqR4;!DRX$a0N8g`+77|3lS z9L;L9p>Qw9O08{)i=13=()1i&pKjGB^atdNZC`mk<*@sF?N%c4b(WKh_&j825}a7v zw6iy9{LVbp2b@UnhgeIt3#{`h3ei9~O1d;IjxS?+p(&`XKHxb$0*$q#ACGzU#pfL0+N?+zgHW*Jz&^_aq>1J*Mf-%|`rtcCdX&&UCSM znU9DatPIR{ic`>3YM5=rRtGlHky4-)O511&F-QxRLmB<0k^#-4b<4tI{;GIhwOV$7 zGAYcP zQf(nte}vbCE{!e(WvUazNZ3NabxEOO?UkS=yfjc=*}4=dbD;iD!6yS zpJ81So^~G}qq_+q?}*o%3yV8HJS{$t>-lQJdiR^zbJlZ{&1S2&VMxRrpa@Fb67QPL zwMMmO7kOJbgozz2|3LBiQ3seTpsPw;Q_C%c5X0JE4`U=0qlczScy~$@tPWy{XrjFk zwek|lcM+^v*?5=^Hu;hb8G)Y&t7ink2YYX?@@G?zC`7n@6`vy+fiR9yBkJQETDaEV zMeNQ-Ui^=!1JUWmc5V^r`09h?anId9!<|hEsx@VM$>a~^pQQKgHu)$3Y=*= z8xA3Vp~cI1iECRHNQ=Z$vd(PWZCoH38eMXC3?=Am4gR6`NV=Ew9~83wSPP`2E+Jmd zjDLq{e2gJYg*hk23Q{;*(=bUS!z8Lu-PKRQtVgQ6f?xyeO+`;o9)&Z~E5E6fUmk<8 zXkm{Uy3R`Cbb$W?yAj>~EbGvbnNnd$*hLP%BjS`oz2WMLax{kDC+7pMY5|oYGXP_^w`19Xokc-vc~iixCWh^??MXFvd_@Z;~c?I#(YcGzcJcw#u2qrP?k_rligwQ`Dv58Z8OdG=IW}>>hM+VPqh|j*v+dE z5ZEM|c`{OA(uANetw&3+TCLaGf&5xI3M1}Ac4-uBj46rijUVj`}gK$jCcL}R<+HBn-pk73P9m6|E}zidd3SI zg$C0rIEQU<4A3N2sK~(F7JL>{X9d){G*A*B*8fwZ&mkP$)@M zRuxQu?U$X>ty^pLSE%OP(zB|&yZL6jm*`~*#T(TR-TMjG(1l#JSZzV~9o}1FCNu;= z@!qg2asb=8_TvpUzx4sc=dCn24L1JCkvaJTwdRVXDBMVjd@0B4FxNPr5SX5#_H&8G z$1fq={#Vi^O@AxlZY8=MKM^P?JbpSOB;m6tAuargR|E;L*^^|YB%Da}Q^aWmDP2nd z^Q81qr&;jNLtFE-21Y6YU&n}397Eo9)BrTua!cLBTm0qFmb{~KAQZt>sPmur<&?4- zYm|sT=}p!lQen3${)<$@Zd!I!S01)#scwm(cATX$z`4S4bEar70`#)};erKU zieqb8l}SSlE~Dm9JQAyVUG=nM&8ePIcZ~raF<5lgMjvh1WOxwQco3c6EH1K-wT1s8 zuAxVC#IX#iam{44gus&7>stx}F86k~NN0`28WnUFHY>A;;;+p>`~oI= zR&vc@`9vGo#jx--?ghTp^$DlO+mvk;#IQjF8aTYOR~pB@#B4}Nv4@;&4&Us4#beFM z{PDD-fV$-lUZvmlR;TxUlXqC^v_e7B$faM~zA^s_i@PB+=I$9ChASuk?|(xY{Kc^2 z;t`u5(J^^z5<8`~fH@m&N`P_}m0*;Hm z;u$)hng;Tk*#w9HTyq6XZ3m@*s2a;u^_Gw)VV9d#0=AMWOWdY9K%VR4Rl=kd3=HAJ?|zw^D4VD{eRXi)&t5YPKSrZn`AYIgS91N;1?zWIFQ z)@Lw4k-sTl^TFLGVyLZAyeqtGM=MLUC?-9iic6cDhFK^owrhhNMBqMHw*%JD&VY(L zXr=Sa0wk=cHxME9cY?(tE0Kc3=Ftp$vvJ5UvJy9y-nbYV_K@6Wn_q2}A?TJtsTqdy z1yG4W5X=1aA7Py#ywHkYh(`(S5``IazX)8$`wU79LIZ!X7%Gi|VA>|I;a2e32M{NL z{j=mzWopf8zyzUV$&Iy^yxA8SRaZr6!6vlL&pbelm!J?`9Tgh=PA_LKf{G(@IKK1b zP1tQYiM^SMXDs)GzaEE!W|Q$IgH_=^t0CHDOSyV6>r-2@3owx5!Dl3PE8ig(QFc?f zLPWwUvL5}FHz3(Q%F1r=$d55zCrW#u*kzDG|2_S^Z+5+!ZR6zqv19c8I=cHcIvY0) z#O3&CZCxiL3}@?503@E2a17>PN_np1#i z3wd#}in6(18L=hzv--!z=jEK6;QQ%`{KuRYAm_a8kt1eg49UGa9EKX!vBd1xT6Kb_ zx?i=@@^GBF(}B?mcm~ARD?*-ya#@+bQ<0t^_vB|vU1SAxX``Y)oWDEh3WiI zI{pmoUzDtUCZ)~B%(VLX^JKv=^9rUJP8_|JfJjUA!&-P&2!RA7L?x5Th1Ax6G<@a` z{Kx+g54qo<+4MWduFTHkC>h59V_xA9`T3dVyaa6TIO)|+g~sr52@t# zaU<9w;e7u82Drr)^u$({djc^(ht3Qivld=Qr;?O8p>?EVdG6SYMONhR#^zSZ43+ZxO=+hJevXi39xeGpr5+u` z{k$X~is0(n65cZt(#1`HPg6g((Pe8#%=dAFo(K2*=5)WGJSIAu_keNshdtKNc$*}t z^lRRJTV0}43vde3j8U39b2%n$OhKXXlKU}~FD>>39?eb!>5jJ4UaUn&GDDCHs?Gv* z-71S38<(Y^M{buD(K!v>2gh^G*k#tucI%dp)L~|^%X*ki{8&Ccnrc^)VF|ee46R1= zpb^M7k4t)SV3Yog!KIH0m-6yzGTR~7NV~@&`Mq1gT}ayt?+HP#5}cNnBX+{bqHENJ z6S;7posO!!xi>3aAyUK+5dWyz0uRM-o-u0am^~00QSI7WYjd2k8@F{O z1(G6_CwtUp0YS5&0`A1d^+4Xl=3AJpL|8L^Qn$A%*J1 z{#M{kwaSTSX8j(St!9hsaxLH%QSrr_GM0x09A-87CZ&R@ev!#zM5H#7A&cnz%=th| zs3z_Xn7GUJN`w^)jOc+DYGMYw5vmBBtZR@K;gGKh3w08YkQF6o4p>kvwy_Y!w8asy6s@kp zyFvaMg~jsRMnEU9IF+AjJD2>-LpXx#HJ64rW?xtNUPLF6RO)F+QSC;tMnAZ3_&yb= zOdd7tml)XNz=E1?F9Q}Ar8#ofQ zXf`f(g@|MBP9b(JyP*u~(c%{sW*glb^d<9`8qfIw%hg4740`s zjaMiu!|f2hc}CrXYtx#tDi_M9n5_+Z51+dvyKe@Zrx?VU@C_a^&eDHRLdTEQ?x=Z! zXsv3ylE)loa2^gpXIAhjgXQ}6$|Am}fz?d$R=K9P$okYomX!EZ%$GC#!2-aa|DK&! zHDci38Wd=SDFJIoN#Sh)tJ=x`$k(7?Wkk5}AY%oxtKw7NND(7WyRjrC7eV*pY_rm* zJxKd48hK*{u8JmPhCeI~PgcZw`8Z^f>q4lwCUC*u-~_V+#E)t&pdhtJ=g7ajhjpH+ z=_xv%UcjLPOyjm72t`#Ue_NN2qYaxP`oZsGjEaube30IR|L4t78P`86lFhr~w?=tj ze*D@NngEp{4DP{GCylyngD8EcD!V7CoOu}Q857gpMdofjGbB5FNZg5nR7tt$*DcTH zcSUE+Av&SEawDNQQKOIZ1}MK4!1xWe<+ZB1>onu~t*jij7Wr{ewORlZ2q^GhC8G8| zC)#LmMTx+A{NR$wnJ5nj2db)8eV@GQ*&$B%sj^ytmyD~6np%sSVna4aC3l)(bbsHN zGF+Pf5 zC|E^ljrAC^&*afq_SP^VGz z@n^>3aYFAf033uU&ni`7l#BY`8CzGcu&$toDqITE@IJn#+oFf`Lndj{Xy6?VAVip$ zhQRs4nZzgC#X@&Jk+}sB%~-g?0zrsFHO?+Rq3NJ_$%kvvA1|r}<@*DET>>lG^Jq3Y zO)VT(6pKN=$6R0Xv~_N5~jho&fBolZkE zN-|CKr+@8dQzW2pRi^E0xX~3Bx~LmqK*3*9cg4LwjOkmCUD#R%C(h%XX&0 z^jH7#(Ho3hpP2VqVVBGx3``cFq@5+n5(iDPPRM)xTY=^U5p07r80j{gYS5PHPH4Wg zdf?32IGdMIk0L7>BjlOvS6czkznOTn{kNG)9@S9?253>#ER@9BTvCJ!OhQz%owq{G zg34Xdye;Frg^(#1#UZqru$CRc>h5>?@HGHF@ zTV3~}gjaRcFCr3wBc&~LC!z4H9JTE^Egg|TzfjwR@~J2%JK@xp3N3n9Gj9A`7&*|G zMq{S`NM=R6?qD!=xjl_069Ip(%lyHb^26F$q0gz!|2UkhHNNoSof0Qoj2`q0A|xyy z%3PnS!;np7EC>h}>PoiGVL?p(G!CNYC7n$&{VhKxoOTN2#2RKC@v>m9p`J!1l2}ZX z7Mi4Kf`uj)Ch7AOO(%$^WW-e)G%}15956M7Ny)Z^{wud{=Zpsv0p$fI%5(?jEdIBbO0JY?>MhMOih^F%G4>Wj?{d==+K&y`+j>;Vi5|^tK2=iL!OXXK` zo-fJsH;e?p$vZBZdHRbmo~3xwy}=sH7=i>wWJs+O)jzrYZP%dFk$^*6hbH)u9A5iz zvF-Wb5dIT8cH+FrF1*KpW^<8it1KBfXv&&WgUO>6r^-`tPMlV&bIh%g1_%v|gKhv? z%ct%aSt7PYdkX%QQwu!*!*6O<)kplY>?^P1zex!R{p7k|hr2mG-w*54*B^WR?bkjI z?^(~*_@tj2GCF7w;+NP_V=bKxB?mS4qGKk&AEI*|jCKD7Pw)-GMJheY&AvuW^HG3$ z>rPz=Uk{D9KY%f{phS_O;BNJ%^xF~~#Ik}$g)yA8 zG(ao`5AV4l1PAKHX_TF)@YtnWEMBeP=z27=!p2wtX+h{%?UDLJ;EGjB z{*?!-PsmZzs>fur@4TS^v+HqWiqAapCFxGlg!h7b7}M$O1@(*0t3}q2YpXNV0)*ot zQtt^SMxgTa-8IvJ+@Z#T! zs`0O-cU`KzLdXbXizl+%eol@)`pyrYp0N1mJd;P0KzSPY28g zc=2Gr-Ney>`*=LPY(3qJnaW)ec;B2>K6^JhJ)17O*#0H&WX^rWVQ1#{`u$6_Fu}Mi zgXr#28{zoDT3c3pg}(Me!Zy=a5GgxQxp}@ozY&bBx58nA`qBb)DX8eZoJbudsJu%D z=zj9}T<6k~=LC^VBqbJPq37L9KA}Bf(YXM|?y*5}YL!jOd*N{#nqwP1lTW?|duj$~ z9^6`K!%ow4vxG)KxDpLt?C4}&X+4_PTU-^y47Go(vG`Ote^bJ+GG}Vd<7RSy`upY} zf)DR}xIg>PpZA*)TMbF%Wj_=}JtdrsKPBxtbVXI;pO}e1J&66{c)v`7ztNZZ zt6hI*(3nGvjifEwz>n{Hss9~y)SynRBsS%_*v93tS{^RQ&n0j$_bNzNL&vRi&PpTG z0^%KqM@!szv0|ncZm<-x^EXnh;FlcqCtifmk(kMXhRmHLq+csg_7Y!NV2gu+TR7oi zms*pfCehz75NTKG&VwSo$1$n1i**<|gN%C1$P5b);FS5%EtJq3bDBI?H!3pmn5Ql<5v>grr&3Hjk-RK?9DLbj&Mbp|CzT>hpEBo;6Mr3*MsmlEYZ!E|uW`l*eGQyeCg z=;I)%xo`>rT{t+nMh3Fy;G}q4&RMjQFLjC=)8)y=@PU045=hizsOI@Y67@pB7MzS_ znhbASD14yEr7yfd8S-&EhWT^L7Wb%MT&*I+PcWT+>83hEmH4=BA;$(8S*Sm5s@h?PcD^`&ZNlUw68-UNxID7D zKqg#dj7QFVO9$=C(4{Iz3`a=Ai~f=FRk&UbJt3%-eWsq}gKi>sHW!!o4vU3oKp5s) z)iL6#-GdjTWRrPaj`k0SyoVrmyWOO0cRzlS^SvK5Uw^!9Uwhxszu7QsgB)gz33A2t zd&eR};U;q$V{u+#VQm`(&PRJkM!=q)C2~-e6k|%e2VLuldMbf-0p)^) zRPscS@@wJ-kDKWwpk1BL*5W4@kq@0VI-O5_?L&%r$k}drX|^wqE4`}gCNl(*_aRrA7VRFQ)qT-mWn$_2`50i^HMj|J;u)4{&x&Bc9W=>*F|#kEyy6!p#1J zdlF)|Jhc^W%7lvt{>>lm8IbHhYdS4Sb#}y4EQmQXF}(>90(^@2Kml+_5wuk^Mkt+8bTBKg;cu}G{kvXpe~ct)CT*Cc=h)8N9q=!rbA-64r zalhDPs3O(n@owZ1b#W4f2tf8gUk#CHGw_5djtul&iGY+?MqH=~3b7H40sb2kz@kR_ zwn6RQ8a4UPG8iu9@s_&s$!{uHa}A@?co>P&xF#(Li1>1m2a5)(6H2{S+7PE#<#Mgf z+lq|LM_+3EzfQ+Zs(o$#R1kTuya?=nKxE?_>fJw33XJ-c=e4OYwV6Z@8pB(Ng8*tb zuN#;~*pX^T5Im_2Fzfyhs0`H3Kcl`oLm8MbG12R;n}mOlgF7gnxlsiQk#!+s@6?8s zSsF26Oa1?1viVkh?rvW5-=}l_tZaKcJs!=mvo(QHT_diIov4?>V(xMi+U(Ht9Ub zg78i0Uco)5K-3QO;`l`avmsPf4-Q$Y*ef4K^}68hnAFl#ozz4}R=*cTm=;aD;%<-w zR9J#ALi2@%Mb~&lsxJ5|PpI0OMOlezH8nDT!Vgt1ahMu=R#Ma9kNNH4ILc?oQa!oG zr^Tkn%f;bZCd<}}a)J#-Utqz2@nG-Qvn>4;Y4~aHF)iw}sJJpwV z4bh^}YB{@&kEdN*>}A&W&F43)k<)CT=AC}>)Pu66l@SPI7rKs|GPI`f`vc`Ol?+>l z5VEXfExgx3pwV(UYXi+9D#iVUO2GVSpOk*ke2HW=)~L4qcFYgb0jdpaKm#C5Qx#}I zja;*X_lj9YYv}y$%M7M*;e4bv1XQHnriU{A26B=VI0}J{I~5F@rw6o9adZ(^iN|aj zRh5w=ZXfaVxvS4;7fz<=V{YP66%vO>Zcl$`4CRAVpOSYnWAL8^)9zbc?UDd6ylPb} zo4E(R>c|-fB_{Ame>CXO!032<_u|oknIf@N3AhcFYij`@nd@0NV(TDrEolG1IiWOM zpY|lRlnrLuf^wrm^Hyj$`XL3+a*c}M?Q7Mlcgbi^&1{0)Ms$`0#z8RSX-;En3k9jD zG7|Oa+GC6i2Ne>PYN?39Y)mm|?A&1Y8Ts@B zt_DIJp}fKJ-uQkFaV}gxW&&GcX6{wMPwL~8hYi9NgEqP|i3)~dq2LuArt`{|LaPF^ zLk0;`0cQv_X+Yo5rYq|X1dV~Kr1vl8Lby-kBaU%fOtPP?k3b#I7+;kf3a8(mio(( zo~5^<3NzG3^Cw?8cXp7jc}7qN6*B5m4;8VBPWQaYnl|8iqqCg4*Sm9O8j|3AIp$OQ z?@$EE$Shl4basr4*ALe#_h?tqc|3jX<@7%Ny{$>`eRW0N-F`oM{o^3Xzii%a%`>jS zRq=N8X>>UYJPEy&6dI$vJ zNH%5R2+=^$VrYbU1mQreJ4(%=|Bmj!oU{>9_)MMOooG!@PXYWZIM+pkCAhBX5hz={7iIT03urJlbwq?#sX+GoKMJY(Y-K>M;iYDWY`0+sV2#ezov1x z6Gy?UHK{>PFY##FAcMvMg`7DKq8|>8R*Z`=8Rjcsf2GR(hrn^I!5UN{Slf;wf~zPC zeZeu15~{G_tyU=i8e*Hy(Pm9qx0!IWNwC_9q99(zVPDd!*U9^@130#Mj-}dt-u%3PbcWmzwCU&n4N| z9k{hN2|CL|3{TZ!Wo2bMI!skmYr3ot-5P;eEIP&c;|iu(r2|MBhq`e_u8tRq`}w|M9lb&}{kt zB#|7^I5X-lFzV?baw+iM&OU}Ov@`s6rwy9Ng)ZA{cY%wb)Xv0Rq@!OnJ7j5)y0xlI zp?7JRJHqvAa8ghZ!`eU(#sml+tAotPOJ$yzk!q#eKnYuF>;{;ZylhOFEhj(-gb)ei z`;jR@bC~&cc*_ucWM<=D@^v&nU#39*!M2vO1uYJNobLX*IIZS=eeM2yZr=7FD28el z#rjKBGSY<;4JSC#uw}JM=N17jV%$otn$ z-X(2&5SFh(f}Py=@OR471noJjiJ=E~9FE_mu+Dkq$@8kQihd~S5vqsmXlA>z!&@}# zILj-VU0lw;^P>yqw$CR$YPN)nrB*w5@135sR%Z$w@bXsJ%3&VQlPESN5SZp2P=?iX z*#kY{GO6^{iXeQ&grk=5vK3$y5c=c79y>fdj z77vj+j9$!g&#B-^9m2%E@J1h3v3F7A@`D$yqB*fR!%I(c{C@_%=1o*&kgtaB#j1wj zeW{_Xz$BQ7YwG;~sd7a40$MB@D+M@=Pzd`c6^SigFowM{q~zlsh75~!LX>!8nx($9 z)qvn=Wu{^J0AmsUz39d2DAaQB+6bc-q4kH140Uiy+sG7y|xqSmjbShE2G3BaBOWNmM1 zFlhVWjDv2V!^HWGc&~+b0a3!!08JtxPDBFG&wHD8xduwsDmYyU-=g3x9+|S4big6K z*QAl!%mH*&!<_np`Qcli{Pr%d-`)P@M>pSo_uSQB++o+~9cF}?28=FC zOB9EZP0@?e(zQ)aoE$PEp~@1`s!$g|pIsz_7#`JoT_h0;&p4`lJowo0Sw&1q%!vL( z3@vsQuFB^3c#+o2-;3tUz@jTqeLdJ_>uzVBEX_4%0~*>~Z0JO(tG*~o#m?xH3BLNR zHWYwhc-N~Ql=DfJ93C1<@-pH$EE##~r5JZ|W$W6>@xk7`FQ0$=#qo>hdWX=L174n< z?A`z7`PZKxJb8Tgmq+?6MR!iv&8So)W zC~EwThiM>uUjG{rUX{wf&8PO~Rj8Lw{~P@N8&oboj*W$%b_RI=XQEPNyit#+ETB)s zxk5w9p_7w=rWO>@c!$@VgI(0~9?1$(;*D=z-v7}zh82B>E*K`omXu1n`*0h)fDC1< z_=T-t2g(T1i4Wz8&tTC*-mUhip=CDCi;!k_B`!lK87B%^AWcL!!>d~Hd7hkru-h_? zk04xIA{dI0<951L4_);Gl>~OS@DOI<>y!t5vSQ>&qR_ z`qvs*t6wb+<-Br2R`^JWLPTup-z4=yr8gJrP(?WjY5~XrTBXnn&x*1hzP8m0o;<^g zxWee>R3uyMX=X){dO?wx1zVu6cwf_XZave;w|?#Q=;-L=^myFt9f-o!fo;$; zJxlsv|JvTuttStTp4>lq`rzpCJv}x0=%ZW>{>9F%yIKZw@tptZ;`tH_NGavgI0%|P zZ$}DDTfyL3ZaaC#npYe;KKzG(X>NzIIw4P8FpZ(<&M~*`e0*_uIua6 z{z2ft=<@~^pFXfc0jG*Bs;jMJY?R@F?C}=b9F_*prX+%lwXhfsDdC-6!Gb!t?~PDd zVPje^;4!MDIG$rpg=SjOa+?qG^b|DR|NQvr*ME8b&FA_iuq1WJ=&(3^^62@uUp@Qk z^V{$J>h`<8+}^##9pCm5=WHwJfeyUtvKVV`s@^Ps-&CeIcCJ7MmUn?Vs{259H%DL{ z@ewddCxNMa*KxYwPYP-VbG+q1F=!~k_j#?)Hk0*`+Ba~k&55jv#mA|tsV&)k%g@Mb z=bZQuizT=kyr34VjXQ7W43wWUJKDxvafB4*|D1tED&fYR%9u$jVJAehr}S_ducC%e z_H*VJ8QM?O7gX`3J+Zmf!LyHmdG80ez~qj095_bs zHOY7k#lwM0RBaJ-_bp&WoQ%2}5yhLeViq%BEspvSz>2gZOH}STI<6Aw;u#c8{g&b- z76|o}V6LOaoMi(dgmxj|g&i1mT!<)=_Q#R}b7;6|z{N7ML~pv9k;jfm=$X)5i1FXo zs3p(mA>yKGm&KR!8Nosm9|N+<8KKf>Sd8F`EBgf5K}HPC2$drif+9L1`V%()rS6rC z+FD!$TTQn|*MLqX#<=HETO355d2PX)PL=r)t87!Q4Owx>cgp0HWEWZ>*dUl2NCq| zj7XOS0Xbph_=6QGH@uh>tqQW>q2!^^E`}C(FledmU+lG$7WTdY1GmS}hLC|aAU@%V z+{-~JJj~fQ-3+apzMYCYx))j(gY~~*a+KQRV3xcwoP6?J$Uir>%Sg7 zdGP%6Ki<+W#D4tSw?6sZ&p!QET^Zha>+P-Go606X9DJ&uv|c$Q;H67K3wnZWj=lDo zXHeX*AGBJv+3L5$IBPckMy{nopL9`M;L;L-wX5H=l|G%-a<%|9!eoI_Ofp6D>eo+m z29N8#A|`)j3<{sF${}4GK9&rpE55QT5YHwsuAaF1b}nBV##Zb}MPCWlmwZ*s(AK!1 zO5dJT&?reLBb?Q*YKvUEai&AmEa{l29*D+p{v@dfo9XW7=X=lYfA!?^KWYJddaR4R z+a%;nzZL!B#e;7i{pmmSAn09vS>V=f#ujHrs_j{VQ61q#t@&5>?Y+>#MdsuvQ?v>k0f=*eF$HP3z2HdC z!pt-)bT(z(t8VU@1+-0I7-?|bcCR2MwFrhQsaSD$aLZ4#P?n*-l-#WXyJI0gbN1l&w|A&f)%Jx^KVzuD%VM zd!DrjRPc6^-AE-La3n-BOxP3>Ozzxg#A`61k2as0a9}p6rRZCzz^WTTcfz*=UfnRJ z-g!MX;ZoO*AO9fWQF^v&Crwu+xHPkgH-*f;qn(Fu1#1ngo1(cOta7k(u+Oh0o#-cy zPFV>W!@Ca7OGz06Rg0lxJs4^4`SnK+4j<`)@WbOL4^E#yKKk&}o4@#A_w9GLZ*w(R z_+Bk~S6Fc;FjWh%m|)Y^YtB~F%%)mp;#sl04Zs39F&Cm07LN9VKx8pT@XoDm!Gi7+ zfwp>j*!iUG zb@uToh`KiDq7-lMeDtQ?zM zTEeO3wCC;{)4m}wM39ymhHQ*6i}`M-8?S~^1jNU;;jAqOM*=X~K9b<`!gd)KnedlB zcKNQXgknOhk_BAFsLc(jYl&i|!(7fkalXZz0iT@!SE=O)7BOFPObA&yYF?KGr06VN zG>=8HvW31CJZfIXmp(G)sd9sasMtsvxLPR?w%HAbz-T)iBud&M8jy~<7Bb&1$wU45 z;!&-83CTrUEFe&JmFDc{m<}6Z<7;n1%;Ou+*h`tp7mU5de;ZJpSVZ;(ACf<~aUE6A zZGbHeEhgOz^QzSEzV~xS&){&cvmK9f+F3ZrToj>J$IczG)Y0d_{drdg>;Gr(O~CcK z?($x1IFgQL$&zK+mhHr`Gm*qeAf;t!X`pQw5<*J}m$np2=}dd?rKRm{pANS(6nc63 zbfD!jm(l{|p$xqZ&_HR)=!7IBA&C>mj%~@-d?cM&y6^9O|7-32edkD)6Dbx&>wIVL zwf@8VAJ*FI+w0r=+aKCSU?-{IcpKpKkhjV=`4qj@2CBHnEE&PTQSUN5*5fd^3DmpMzvz!?n^S4T*~@ z(q@uTbfT7r)XIHoDo{MJL>GJunR%TzHy6OyIl(vKZ)V`?GVtjg^U?NXb#>;DVkXnP zw7!;jVq}ZhGne>aSYftS>BZI>kSVD(d=b`nZ#~I@_6%-61AD;v6l-$XUSB5Ymf6do zYyR)=l+UUIE`xWIe6<E~ z9mi)Cs8JZS)5ld#JH%9_l{%o;dTW$mQB9lymkpgx3IShz-X$N#(G3lb@0Nw2_=q>S z5bzS!CX&6Hog&FruZ+kOI}hC~)C0ldBQDD|78J!A4A^U|6Auv(#K@fMtVcw*od{S| z1f8Fu5*xIuE`;LRtkn_H3K;(jtLsVJiiOjo$m$8PmJm=|bbYBGquPqqF;g*AIU`+{ zvXXG@OmjP=2>Gm2YjO!7!=FlbMJXhUvchYEW&Lc-8s&sAs@bH1L+Zo?NGa0i1{fmJ z1Q`pCqk;{Ltv93_Wv^?$a#Bm*RrQ|_Tq1GtxNx>;N=i{DM@}PsM&Q{KoC<EV>f*Zn#;iy zJqLS6)s6F;v<6;X)$azgigCF1BtiRD15tHd@Z$2q>ioIIGbc8mI5u&O?)<=5{1TWfjBCLwezSaAqgNTD{V{nLPs96~SY4j9NMIUtwAVNZ; zpe=gRBim8@W2QO90BdeDRTeZ>- zCv|_lp-FgTNQ@s(!VQgyaTri6Vz{a@5}>nHVHbiV`4Cn=g~W>+NooOXIl$>kJyG1h z5thYmu_ks65hIlD#n`n8jceVwxd6V_8NG>j17{%bGYVHS5NQ@ z&?hKXO=>GfN7Mp^-MH~A3a*cI9jTpZ@{w*ytk$p_!3@Mf*X-nW%)W8zEkW{#y!k4h z_9nZZ6hY;Os4D3-JX+s4oR)S{s5(u((5|XZ6Vy_2ReTW_o<@P55S$Z5!N(op`odEo z*l=y)r-6-IroF3;w0tbvZOh|`!7&yS&;@Cg2-+`+spO6}m@%YE$Wj>8g;gd{2{N_r zskxx3RKVe5mBobtw8S7YO&CFogX1$Rr0i%jhYtZNigbPcm<6X&3IrfFZ8S;p{2u2_ zfN@hM^rTYUNFdoJMoWmG%Nr7F5>z6bUA)EBHc7~?o7(C{WDQAVid~C)krk%C3z-u| zsQ`?TI3sbNv&yLu%oR*YNLTd&>O#$7P~yH#+c?+QyN{f|w)kREEGK}3`sF2Hjh~>D zlLd(_0k?OIbX5rwCV<4iT2i@GTfknh(G9}7(aP#2eJj<@DzIe3QE*tvSA7Sv^%iaQ zo4P(RI2d&G8Gy4AjmGw#oJyLUQIvq5hROv!>tmusBUoF>;F32bFEH9esjP}RwxkAs zXqQ`PSeEb{sC*ezOe|D9l9rizy6@K6+09%I-nQk!w)qR^_1$0|6Rl-%2?-2D8B$@R z#>UOMeL}x0yn6ne9xJ_YN>_tFarXAR_T2lTT}STQb@<+G`w!?l#~XN{hCr_cBt7x8VMVKR_HV8J|g9wq|NR!J}6D| zITe7#W5+)Zgi3f2)E2BZYWnDaN-;ZCT1uqVIhOe1cif`^neQZ5A6Uu?D2r7Fd}j-d z#Mlyt45r&FbhbDUSt_!pNkh*H-@1M0)*U-E67&;Tx+&UL878_hVrF*7mhC(J$aEZ* ziczJmBDkP|n|3IUy?hAkdT;+1UjWa}=nDLX3(Nf`h3lQqoA|#qGr*jaW3V6R&o+=c zn6IRE6(Uzse=c}&d1AV{k{c2q5}1jziSu@tH=wCBOz1S}(JU#_ghu2iNQ2gNEgd^e zy{fh?XmiyNgG;^EE0?pVY+ZG7FNg7I(TDDuhEezVeQTQjzgW9YipYa=p-ttaI?v}9 zyel&f^(Nm0skCCUPZ+{ShaxBlspb@t^JmnoB2@8wpBq=|M2=BZOUop&IG@Z=j7a!4 z2OQGgXVYXl$q2N%m4KDF{PZ~&cH%_&&f?HY9L-T_F3M)X+jKcFhK;#eBBG{$#1sfB zs!~jXn3wN3)&~Ls@)Jk3oRD0?M*&qfWCXFaw1?;|MCTGVCjpKDn>Zmw+S&>=$lBtG zm2uQu9Fhtia`taJ+Xz!LR~rOlFx1kI&(<_OWC<%LEJEd((NJ!MG&t)v-l$^CH951FiAR3ZOj<3Gjf1RUlr)k`0mdqBuxXtc0UiJ8 z@32tAv`S!$%K``o{%6s{ZBR zrG*7O8CX9WtRIo;pEMOF82We4bSSMX>4xW(3+I>5o?4navwZ%%zD>Gv_VkY1@7lWW z)-5~qe5_fmp#+W_$s?&69bj>)IagLB(&!1V%$n{Q2R@h2Z(o^m6AhO$%Am}q7gXyQWYY>pqAN{BY%YV|9MD!f|V5!m&>p~EZP zotWTIpf|o-A#aIQVNMmF)oB^9E@+STh(-iM|Hm}(N`1!Za{-ZCwZ_B2QKm5?qAAj#tSMd4p?k)fF zt6n65U;X&$@A&0MuORuUv5xHB_J>}6@YQ$jdevRKUU+c34$xEcD-V5g?)%^Q0skIp(2y=(MwBQ$M+Vb_EJ94o{0)HE>0qEJ&p z9eb5GtxSI9d5H#-Mwv2wQnyG`GKt;1t_y~P2w8O~v7UMule(6%`O0V4u1evgRsN4M z?`qTWY}+Jd8g~?A$m4tohvrDRM=e+535sBOgK&Tbn9i*Xm!t*Uo!uQtM$IQ}l0&un zy1`@W$|We42Vp`njY!1L7F~%omQ4_&JzAU32^XxJBsIx_PY#JHkrAtF$~tOQk9ZPc z=~1;o*-C2+dq*gp%diK*=eWk_=#^~F0O%QBBuw5Dv|mn0Ty-MUuE=VK01BnznpHzo zm5cyuaA~2)>AwwmM7N>qYn80IYzleSODqYIMhmY2wm{tSR@^MQiWYvB+^C`-j6n$* z^mw&DkQ+A3H2o^2E~c8&>4S9(lK>UT$Oc!yw9J#^TIAS&*^pS?e}TaH7)7yNs>M0h ztGq<#{2Zj|!#&q>bAh*T0*MD?sBN_ul(seRsG3gu zqlFP~?ux?JmOea(v4+Uc@V$1j!I*@T){Qo%QG zIiO3VsA*y~k;By>mz+$~HNBuWH_ubDn9w+Zy0oCXpdb0r{P8Ex zJ^JAtx814V4c>Y9-W`YU*|zW2&9k~Gdefy9-HGn62cvBq0`zbK4vN=qwj&t`<+6RY z`65SLK}XY~s9Qr@ImMPXrT7IGg1gg9xLvyUsHpUBlSmD*NC54cGXsJx4yLSGGI*lD zj?o;!MidpVlj^I!sA4G)+PTI?adEW6(AHHsQE9Wd$nf(rMH`%zaFVJ9S+vy3(!zzO zAD@5flNaab^xH@J0AzKOdWjC!-Ou_RtdpPk$jt2a-M8O4GrLo-4V!0fQ73YZTE%{} z3V11+3>;1;G{$w@U$X`9iwX+XpPY>;!x$*+|YhH2a4KF<)$%U0`e_{5GpLOti z|L}|V%}&In=4%@C@jH^OP}mlgTJE%JAMa=1wyU~nx4mPDXUkIq&DWX*19MW zY^+JW2@o|R)nuo+)9v--8h+bP>x|osF_j@HW9GG~ujk?z`KoPO@R`uY$j?z-r*q9R zV?`cUmPKvndI%)-P1H@F85F&Pz~Lmxrx#2sA{f?qMw)^$roAwTPifRd)2?_0**pWC z@vO7!EZzo>BrU0lWe`mhEoH7ZUCDA8xpp*2o<`+C_e`w8!{R<2ivO% z_bN>NuM0ikJa;uaZ}W5sZYnR@wJxFSVAEe~!f;ZoQb9_BKDU1I>)5?9$}~v&4Ay$3 zb#x5dk8%PlxQoxBPwJO(@xd@}%Jfu++H>R#M=sE_POx++aUEFS4BotXb!N*dKN`G6 z-~ZGd&RPTOYOofs^)WyX*JHv9GI1_ml-Rd+xh+_TdxrmqYuySKS`g z#5lQ}^i|VmHf{K>*Wdr=e%D>nc;w{5cmI#a-tpMnyC0v^N3E|pvinOO*!O>Y;oZOE z?%luo=U#o}@BNRfM!hNczf=Zl)^<$o@OHy92?t*L_q5Vu7qxv{W&t+LgWiv%GNi{= z+EnL>BWkhb$tC(s8-nv>)+h!o5;W79^18K5b~ytYQJYgEv_Sqb1T7d>|EZfuo|cP${;u^X*P`be}z14&+4PO#A`U5k%5qEDJuw^WYDVy?p) zPeh|P4qI&f62+3V5-Wn1lZk|mZ6swQiU>91%Ohv0Gm`{0Tc9Kyk=9PPSbhzzsrco* zPG;3SkfK%DYblBo7;jod!LscSJr#8D%rRbZVOlgcOk`dc9^;a>(QgBz$mzGiMU#8aLr<57PCUWqpz{K=aAa33ZeUz# z7kJB89Kb6a;G%$n$zw!uR@X(fY&I{!8BT2}wDhT8?1!(N^%J#ryf`i);g9ON{@7gQ z0t7R$Um)N>FV3(iWULo~q=|2oN~RR^GMK~-WYIX+5TKW)qgIno7If9mm&COCUCEUb zUmVWo1<@6l1Tl%9;Am?~`Cze*A1k8qo)F2VhhT81G&fYYBv~<;rAp$UEjhPJ-frLu zrHra(DbtJ=omh_>T>qCYv7iNJg@O%kp)KtjXeU?WHU8S+IPU-mL4}~m53wdZZkvWm zPBghYFddWTI!%Zs4M|0bf@UObDUk(4MWnKtyoqFvH(iSs|MtZ$L9hpYOAyoSj>RyB z!jWXB)a0Y8RzOy%9m3+VF&VTb%d*FU0?_Jr({`=~^ZQ47QnY_KSXYJB)b&9$%C2$H z6OG#;G}-AXSqrC*FP%H9W!34A|K^U{?$~wbJ-hC>XXoL&XZIc0JiA@XV1HKBR@6yM zb3<5$i!-X)(b~n|qIBQ8s1+SiQ_@~}!#Pg;^sQR8G%0C5fjlVsqa%(tL$Gy7sW>a$ z5sw4nMhE;R#J;8|S4#s-rb1&Q()+*Y^!31OAqtio3b11(dJb!%K+I%Twi%fs+PFwH zWKqn^d%NKXCCj9$XMV3No;`K;iBFt)^0E1I=a!cBLC2+)Wxls0M;B_z8egQ0(wZ#3qZ~pkYzCUnq`)A*^E39^Kttr%Naf_B)W<}M~p7At$nBDXT=w9nARRA((aZ_L8mglH-s2%eLuJmx%@i8G?Nn#zP zfs|>KHj}*Rl~W~kgi4jS085NE^q`t+=oSI7p^bE|syeb=SeH@D8`$I+u;{v(8HV5b zE=vfyL($%A8 zB{qVZV1+~^3a9y?RSHgqweA}-spu9K2%6Qht4(+IQBvkMAl7z^GCk-sX?7+1Cg z-s~_{6XoN@F;FOWt(Q!~+ zLTdpus`o~=>DZD`ik>OAVT*n>m>&(+1>u>Q#TkAxNh{*IlNp!03Do3~2>J%8?wY=I zes05@eqHv&f__L=zcG9A>BZA0^xfd?`sJjZ`fl)6U28^V!zPwn4JdFuu3iy6tZq-i zhbxOc&@P{#CG3HTfEK{4fstGxB$h7|I6x$SXhiIOoVkEJG zBoXpQTMS=Wm0$Kv!X_cvk#Mv{T^Kg+%)_%l)97l2(4r`RcqpO1;=8&yzn~uho;%}v z-E;FZvlX2wBnlI{Ug}!W_-wW@s8%Ua+wAqKG@0wWzs3vT4?cDN#kcMFx>p{$+yeN2 zd*vYo^zoDP&)YwH4I|sXedcd`@x224w{Lsmn}6a%jE^-%UpYSV_x`8)Zw==r;kQc$ zG(|g9#y|!_+H2#_j8R9w+0hN92GIZ}v|(I9E<**3uJ~d|th1Ukn!{ikEs$&d38nnE zt+F>VRz8?f{s*q)VN?{QT)R$>m4vcR2Era~lZ}=c7>OdDG+SdUgEEpWn`24UrO@&K zr^Qt`5w(&UTWO-*8kN$s;jvwKi65CrB{{CQss|elWC{yam55|N5trqfR}I;bNTs1P z?S>Qt2E0mj$yf&RjZo~Tg5n6xqEZdwYQxCmF`j0;y3VD_5E0aW#1*a*RSn1O1dzOX zO~%}^Y6P*G(e#3sg^gynBrlw-ew*EH4d@OSJG#K=3NpU-%eP)lF%UgFtfdVoCPcf9 zU_6Q~HBAR$kZ3Z(uNd1g7%hDlG?xL@L;wT)sVe8>j$T6JtvNi6QCoGy_&{-z*$WME zE;ra2Xoy=nAW=8BiGYpUg3;w>380ZHkgED&Ohcx~iEYHCGJv`Z(@ue#7ITdoZ*T{X z^q)edHwL0~b(0!#6JY5IT-`M8<-)*g#8lz|tqIg>I!8{i(`$8mZNEJR9DKPXh$IKR z^j6`^C7Z-IqhuqPW|yk9jbN&N9oMJ6PC8`&vuUMZX{KKqPM^cttFaH}NX^H1vl*M`bOr%1~npERQe|ki;ek5sjcDtSqy`X14FU-&D zyTOYKzAst_AnsB;c+~K;v{BcCMPFTB(mk}f8hr9&AKZD{oqO-TZ_l0g?!M#h*}b=J z-Zra)M$2VZ)Fg=ksDgKZ(lWsli|E*DMKVdfSzIkZyZ{~~b!gZIvlcK& z52e*nG>>h}g_Ulwp(Z*yl2K4v{y*x}JX9R6h{JO7d6^BOK=?%MjDd$#KG`26z4_dId#sdGzf1wzru#6A1AJ#bJD8sGH6 zV;4Sr{K7LLUk>WG8$E}dk1!7XXDpf(o}tgyh47oi)Pc?6&J4)O6H1YBEpw2lxWrom z$3EN9P&Rpzg02cm*6`k&iOH;y$HbUuoKI&T>z^9Jv=@m{SW0@*K1N?liPeTOmhGGg z#|puT=&9|tNc~hEC$yirkzTXhI!Nw%G3~`#XV-zhlF&N50-ow;8{|zFHoSFQYqpKh z8dtTy0@zjQ-vB}y3GR4C1V>z*n#Hp^8k3lwbExgF$+4Gqj#+K{V6Gm|@NyUA90CDM zvT+(~b^s@!UWQebo#b7lZ&|#^Dy9i#$s{%rfr?A6B}nR~fCGw4+%A8-3q#dz!u2FT zOeV1`cVoy~r%^mhHF@&Tij0X@0Vh>9Z6~CLRhG57$^Z#9v(|26!U0OgFG#|~K)k2Y zYOQVp$>Bb0Qisjflcaa8DN!!x1uS@jpTXBwWW2I&K(p0V+n#=38+MAwnH9!R$Or#EWt zVdsM>hJAK+T*u@MR(g!`tLhF2H{D%{s}dad-JSGEi8v$^&9^=&utX&{n(iKp8$P+C z-Pnyc-uo~T0VFUP&&G}cMALNFdsBc$Ra7p7L;jJSFgL&;GPZ1Fv3mi4e*qeay^4M* zM^}Sy(QgIw)4}@DV0~A3Ve^c?8_XTi^^sRn5p&?^$Mf<G*})(B+LwIz>G@ZF z*V{X>SGH~5_~$Dbv7+w=YeD{{FV6|nvy6Z9 zH$V70?%uQeZ~XEX-M8;={l4dY{=IwDyV3c{_dWflA9?@s>LsnEzw;~Z{}ZpdL*Gme z>+v&-dj8h`c;rljpV%v1|KN4czkBbtPF0rv_>X;Ht^DtQ;r@U2`UhTg+x9N0A9?y$ zzxMdwee)w{7FIg(W@X(B4d!0n^yp|AS_x8TeO*x zn@&X%iWcsUV_c^m|9V7g+;+b3js9XPW=icY^R{K(=G2e}dZ!2B;1Wd)uCq;U8>4wt z!08seP*LNGSR}PXlYxLH!%&P8VrLOu^PXBV;Wu9l_EK-e710``ZdnQ=Ef8$Mo{tzK z++dM4h}A;R)rr0{bnpT&t`|b7#i2l0w!ua5hT7IxvQNoT)(Ik1pSSENs`^V_oZiHu zRA}kO1>^*+cZAehsL~J`|Lyv1lO@+2(PY!pL{ss;dPMd3Mw|7UcK{kQqGeGcW|xBN zT$91LN?gn~6tKjSy4z*a$kIX4%3`*dm}*=)1z0bMr42V1eVa88EN~k@qE*g()?|5% z=en!EOjg$+Ma-X+b&e%{8B!^q@m#Juu&QGvc3Dg#$3|tWt1D2tN@)%wUzHIsTFnIT z{s%!7TSf!3Rho>oN`NCaGWMZ4AyQE-CjeW=J{pXHGA$E*99jyAh_gP8$Cg!H~}~Tmepnp zuvVgJmvjK3Vy`8~YCGri-`vE&9VgXh-Rr3SyK-Yn~ zK|hKkCWHExO*1pI8+A>1%dD2aJSlo!H$`*ztiBtpW4;{MPHD04@=ISy-ZZ16=)Pz@ z8SA2+E&bFdPkx-M!F!I}xBJNR_uTosZF_IsI3t-2+&j%xApceLINGZ%n9=(j3FMU` zO?Qc{`^R<7LP&FkzxrE((b85bd0!4navt|N9&Ni0>3;T77?Kr0tr$^cJjhC(eGnm% zq8D~tDi*i2(JQ$X6S2@?P;=Hzrw8=s0#4Pf1jj-_Qv=l6mOT-G7m-PQ^QK#t7Z=Z+ zS-LQ{Q8&2n+^w(r>f67o3k$1D%UTh~kVe3&uKJ%nefH?1dk!7mbMTNp3gOB>_T#7_ z$D1-TCVeLA*LVTEdE*BC43ZYWZ+h_1xBkpWr>;!u)@a4_Bkw-Suk((I7Kd7Se$#6X zUv2^XwGSSWz%M_1YNRw&??1R*Kffef-}T=g8>m-Z`++yThikO{IlQq3az(~&Mp0y-#nos{^f^v>Ia|n ze6QEN=+>8f``fzY&C2C7;DemW!*4m4motZ>pJ{bXF?|hnnqV`TW2RU&txQp$MRVd1 zVw$RzA2XhO?(-LrCV9HkJjUFt*(@_rX_T<;aW7p;)P8u!c-DToh2S3^q zTTB%pW`Z3bnq-q`?b^Frhq`KlFrcA=7b;TI34k^#G18SroHbR6UdE+0q6m(Vr`6P! zMZG2%6FoVC>~wos7h4F7u5DI0qbRiAGwwT4V-9;Nwwmh5#x<@^#C46aKMlB~s}E77 zW|S-8awL!%NvL98GL_^?U8PpPR#r0|5i#_vh^h}f3#bE7L^LMVj-erz0N8pQ05^^d zqr@)t+?K6cK5@cfzA`h#Nxr9C>l8U>YdCW~@4Xsf>mct@^mcEW{&{COQt@=FKsnCV2b9h7%|w z`y&DCCG=RdH#lrlsxW2@$HdP^30Q<~#{?*CWc)H5@OH}(kZhoj^9a?J?m@W~+i#89 z%gC5Q)1)c-Smrsa6KaoNjyhZR#$5xevJn?)skrBQ+LC<I|Ii=_tHqsrh}{T=%W)KM0SU&LcSz` zO#BqKekxdx$l_ViGn@6@;2B=5ffxC1urBv9c_OcaM$$3o&vi)arIp2n)rAX-bEh|* ze3}cwbEj2bnZK~}&|O=0@7c6%`^L>Px*(~S)VXs#AAOY*iHxwo#Y|DK6H{nGr$m6Q z<3fTQm_@)D4NWiNU5|=Nbb^Jd&;T2k*vppj5P>{x%ZGbl;s=TmHH6b^Kf2o^t}Lll zeuAQEvyC(UFNea(K$8Vn=(eq^K=7~N^{~R_#S8PNpH}|0rrkQbUA>^+K+@X;k1b3Q zh~m*j;q!B+AAe-Wz5{#p^UkxnVy91GePP?dj^k;X&%yp0FMt(+Zuiyw!>_z^*K1#} z@4tTdWRFQn`kDv50DkD$=Ra>xr>pWkZ+-k*KL0K~K3aDmOMT2zedpFqU-n{tHc7wY zJH<-#fdhP|H-_&aa@_>*Vr#$&C1-|}Z(sY|lDGW zw0PvN002M$NklxkanR^q8hN0Xq1vtE0vyPgMy>p5^$v{Ovn+yb zZbfslwLaP!rIA=mCO+CR-h;&-=p*4&yZ=oEvg!`H{Bhb<&loOfMC`v9WBGA@3}U%) z4J{)F!XOh`9eOG~h4ftRlr9A;Z_9U|;wOBFrbeKaf_9etCr$pYW>yq%qTtn!)j`mI z|Hzl?6fRuO#FljMKz1T&`0C$U#D-*n{&iZ^T+DRxInNZaaCjI^oUy0)Ym?p}(@R&0 zd?JR6PjL&_kvYg}2BGb(!40%!SMlUt-~t3JSz*t(X~Nh)iHh)k6RodnH%(bx)a2EC#ue zHX0|%lSh<1OZ<>k97W;`i@GzAJembUV)uBp4md#qM#XAHh2_zujfDa#De1B@gh=*u z(exs@OM=_Gn7P)IxJ%ckMMEo?O!#W!X%jRMEeJp~R@;jdMseM?w!G5b11!NJmqV|V zAlIE9x~jWz)7CAzYCE%ScGlkwzOXQVf$s({Ev@Pbq3*{w56 z8!m3%a8VCC!(hg}G&DLl`PYCSeR%VhZM$!~Lr(_ZvG1U^dW1CZdG@m6OJLGcv0v%8 z5U%$&v*gd}aJG+)EioSBJ?G=7_XJ7aM_sZ${l`r|8_x#|yj%M{M`v3h4kLc%@RMF~J^e_K^f4zT;SkDIgj$eLMtUvI= z{T)FSec$-6zxEzgzU8Mr{EzN_5oha(&c?!W=jjqg|A#02|rTrQD`A?Hdg0u7}XbBO6qsp8zE? z;X*_`V|Nac9eE=4>nAA~6Wc)@vL@^HnvfbA@~OWD>g8(0oR@=%<^Z6!9L=jia7K|b z9Ydpso7SKk=}|ac-ICgL{Sc-S-0Xj9`=o6`x0{=wKF5vZr*%u5sWVq~M5g4PxCGVK zuHu>yAqHNJJyp1N+Mx+t|32L*ogTHY8yhD8Q3+%NgwnyZX2{E2SSb-6ajhYq0RtKT zJ;0h;SqywxZ^&qB^y`g@lWtCM;ynWtmX8cqrO1MiSy2Zi8RC@CrUt5N5Vf;Qogw$U-Xob&Wa+rdQ%v=p#Nh<4E3^vY6|ZB6 z#Ta%y)Y@X)Zqu#>WMs)?d&Qpa0L_ix@fS1lS({3w3F(}+h2-MlMy<>#v6ZU|-+qX1 z?+Y`1WPNZ}B)Im5-u%JUUhM?4kL1wc$T03h&r^nYVFD&Se=(#5!J@N1dp8CK;$KLmjWAA_0$&bAM?4u9Q zKYeuh+*#d{t0gPHO{`mTGY6wjh-+V%Xk~&+{)(WTmPzfU4{pFolZw}`Y)5pCWGOvC4(f1tHJq>UCtbU-|v- z{qJ71cb4YFpZ>scHFb0H*Z=zu=;N%;Qst-K4@);fGaOs_D_?Yv9%S`DA35`{-uif> z)m~`-@RvTJhHiTfNqRxlH=7kzjsb{Fwwc#sa7;I%=NgbRNsfH5sM)enFWg9J{)iPEuA>OV^!UK&(KKB+Q7Ddg zMh(Gge#_$hL9Yp%$(GcH*d0FdD)Geiv6)^kPhvX(wL03DEpaaFk zt!~eeI2cI!=UhcE4OdF!T~pm0=e+1RRWc3vx!>zbsTN%>b`J-~PO95Ti-wI(9ko(g zS<$r$E?4-+cr%)!&Q@rgd2QzWONA@HB-Y>WVl70U04EE6!S-sIQ#I&0`BTl3whXma zhByjOWf;Z=HBAN`j_pbWhqJ)zYe*~r=WSM-ZWgTSEgPb+pki@Y!DbCyD>{YITp>BK zueBvto$<|-oMhWE38ZA@V{xgJ8+HK4RJ0{;H1OFuM^zP4*O0~S)+HOWu2fx6Q8y;C zw!$VoF7Jh=6BVaO_$e{uE&^7110X%ue27b!z&pfLhFUWhx>~Bl9|wX0V7&+>K!!>n zcnD6zuzWytc}G`?d2ye$94)y~iqKN9j6$s{NNHW_ZN!d?*RmoJ#KNykHU7Bs1C ztfX`%@f?h63;h9A+U|&gqXWr)dH{}-=AGrbOUH)n_~l|DP}BVfl?zIwq?MwB)@j#BD$Uwy<_L@eftmWKXBXL zefw3{7fY2G05tCu3Wn@MLeWUwEY9M&vuB=o^yvHF`Pf^3@sVHo`A7ffn~%Nk?PnhS z*vk1i4fL7Ky3Klv?#}ItU@uCCZ_ATlPLZ-z&T&**=X(`d zfF)B)-qvFz)Gwdgfvy){F!syS83HK*tF2tqtDJ~i0usSnJ1$#wc*h2Ypv8)DqybF5 z(2uW7(;-U0uuVJ-F9A#s<>sP<_w?NBRT}u7MkDmH{5A1)# zOAr2gFI=?}{;HSVrZr)jYvcLx0D(Y$zxO`%|GeS;+jegG@)sY_O}|}W&$i8f;6+?D z{dezPf8{LJqJQb(&fQzPRo-mE^m3}}|If_5DLnhJcFL!;s&HE#uC76HLrR%ERdUcTL+)-s3XT-W78@J1+3#`QRA&p90la?3YJB9+Vl#?Y6nUZdzsx9A9u{1^jGGZ3|9Dq}>qZ-|Y~ z73BvJI_i;643jiHU^GjRMK+Rl)KV>prY4r&`rU<`;eu-UY^&88mNQn*wO9>myr)Ac zjW!`xPT&jz)x=enXF3%XF&+;+(9potD^^F6_9C0uibTS;7iQM@flwCAQv)yTjUR1Q zR0m#2=7!$4_P<&Z^Gk>7*u5^BO1v0|9l=%vQ9ejQ6mf?nifKJLB_Wu|N{mQ4PDH$o zyoHPw;^nptt@!1STdKR+RpW@_l)v%VwkCxn-9Y?1#_d~oMsoxOZvTm)4Mj!cz(-N# ziDjA7id){;x7O!^if^E)NHm{L*l1&wrg!f3(Oc!fOEhFXBcoD1m5M?BIjm{*MZoFm zic;<*g4Q+AJ)~M7N{%$xst_a{Y9ZagY~2P0UnTg|;3HC$CTG@_HVl{vzd9)7HJT*f zRJ&)k%v)qrdU2eSy{R?KdxSPzN1|9+jweTM>mKm)t{xMmH>;t^i+JUR==U4i`?J z(52lC`qqU%rT{hSdcV_Z-bxVsL8HF%tu7EvL&~pada!GIQ5&27jMT5o0$85wO0O2c zU-zm*S@CLFs|QE@%moT$yjrvlteq?A$r8jjq zvg-5eeUA8+kDb0_&#*AocX|)+-g5W8ZR;+85A2xHqonlkD!o4I_8nRS$Ali=-fdmE za=GZFr7sNYda{<&9acnr=UH3%|FXlZgr`a#6{g#yrIPE(fAwb{{)IpFN?k^N+h6!> zU2Xo?Z+%>ssdIuerF*lvZU)BFv;~-xZgQ?fvSWGDsIg*=Y#I)8 zPR&OKnV<*O?BKcD-Z4rIyqcLtluTiTW|QSVuJE4LOZiq1AxFq{RrAIu6^oX;rG`v< z+Z;$mX#f_o$v712w%8o88Ovv5gfU=@HwoiZ*5i4yheknF#!5(3IgYhP2TH1t+CQXG ziE8i35$Dsa4sijLmJ`u@i=QytsG}Z7Q_FTur;VA{qHeDyQ}3iHm2DW3J%>Otd$+k0 z^qvN%edt3AI;tb*(6?@kjW{U91)&6s1cS7!Xg}@;durG9@88>CqJkxu>>?!MCo?glt)oewE)NqFupK zNtT+C+s6tv%$H?FgGccls7TJ7Y^dj; zD0U!#ju`1su>nMf0v$Q=@Yc-6msZECFk(IGW=5jmwTqqVYtS?Rb>``{=$C1{bxqboRQ zTH8!*_^7)3s~OHwtdZ-9llekl%NaEOEJjyAG4iEyl~doG5i22e>@6Mq1jnb9|R z^~K9x9jM?RnFX`YpJo=beohQ$l#R-RnqhTF$KcKVSI z?Kyn+?mO?>=;R z$G%(j05m;v&=09-1_q;X-R3^Co9ndz)*@Cv&-42qxK*o4EerGWzd!u0%ihMUsI{Ea z0{C?=yj5$|{&n21dGI!|F8BDW&9+0FZAxtUpyj2??k)pZMp zJ_67^Xrk*|&|mN`-t|wv{QlS8zwZq%J)oEF-_~y+efO_^^8C^bcOTJIAU8yFm~GU{ z9OWE?nJ+YBxPqT`WR~=}Tg4eq4%QtJ!Um@iYbFA9TqdTYF@yTFk!k*A+vT_U&4J4b zj~MG44BE5789}OAs0JXFeh-H3ygIASIoTS7RL5}T5cq8yMyFc-{OUu^K=+sHAG5Oim<9`pi4=2YcyPZ?D9(!j@Iyc$s zzFdaf`8}bD7IFS@2g*o&T<_{PMg`Y&m{RO>&s9ZZ*By$(O{hb36=VhIg|wC(oaUM1 zrEl)$D?IIDBBL(#!AN6HCa2I$Z1p~#4S~UO!hWVF#G-VYbc)18imbM(#ugM;O$kUH zIwCW=(d8upejB76xxx37zch_qaZ*&&_q0`2QX=k=@1N7<&U%z1CdXbOT%Ce60idw3W)zZVUR+OxBXP4$q>lcF;xfFb2{?yZp zXYSc~;P&l%_HCJ+)l-WlFA(>Izmw7s+kVPrHCu8TM|%c5O+%?!epxvA9>F0``pbK( z7rQ~z493vY;0$G4AE>PcX7nSMj3_ZvYVrdwN~rnNy%4V=L8J>}MGYRGrr-WmhV=;U zrG@jlpP7#pe6zamRp;YVLX~Ky5xR2Imf7tydPcXt*De0?$}KA^{`AA>Y??EUC4+-) z$R=Lz&GlLU>uRUI^{RER9wMdXtFEl-5zRmSf#KffwSnoGPj7kn)bF`(-`BtTu$~Ad z0o^V9#rN-5mM(YWbU;3GoF5i?-u`Vp^=rYeK+%%;zkJgxbg#88(*B2Ef9m_*@ua@o zoAu;7|KjJo`YxV3b)AZ?>*_nt|MlJfDSr}55P7l(Pn0-;)8E!wxfA0q#3j;_*Am# z)*+2H^G|!@(FnGM9M>_{CUI1YVw6}OOPb8A9nmzsjnq($Q$?-DNM=MC;%jh~f{2^l zJXAvyY}cS^B`ADME&t7J(MHlT0u|LV&CX@_V*{5Jy2cFqH|qUL0zHByZEK1i+f}qJ z#Ht`Vmbg+qfF2QDt#UVpiEj&Q5^nW}?Mp50R0K~}oV?ruxYd2LxPM$<_XiAstNTNc2{g*!qUrAVb@_47X}x)$x! zX{#ZkAJM&Z`pl-y=cbJZ7EL(SUo@xu5y*&0KTQfW>rKvR#<8Aj+FZItYhQisQ(ynI z!-x^u1YUHTo`zNl#bUQ)Oevb6jl>kG*1e)ANx}E1lcX@~7_k~wjq9ty{*CKpeR{FH zG=J*&>Bkt1>L!tzC3S=BOletBZBt&L8P!qNix8$PEN!1`HT-TnK^A3MG79m`!kkCoPs_x_=m z-S!{f`&6f2O+_~$|JOhHpl;9Bvy|WX{qNOp_Fj$FHIdPs&$?|}cYY{QdJgup!qlZ; zy}tElKJur3=biu8Ywta@Ys=66iB~-Mop09#;b(>O+fkUK+LJ|&KTilc9z6jtF?gC7 zCB_0AoUZ7wO{E>^Bgs?)SQZK_HrI#_m}^*<)98YI>gyC$qO~q-EOvEu1yV?Ytz=DU zX4VW*^}%pU0%;wn6|dx>fltBfmeb6la6J!pvc>6|QSUHS3PUnbZDl0i-zH;f)U71R z|E;2SFF^>J#f)oqkEw*EJ}@1G7+{t&gIIHmU|lSwTJ}&~D<}14u0Q9d23rJ>(E~Gl zO+e=c6Xt0IykW;u-^Tmqz=%vQmtz&7amuwWI9U-l)bzojCzg~l63S+^ zbcW~UoTxyJ%*IOmgcE1VZ>B7a=QUx6Co za9a>^s6r-fE!vUyA@!gpWSaO`rqGllt$u3(+-y|hoCL|G^pvQn6>(OEo#;xemlYZ& zjIB<}yS0|xHN{Uij~r@&6|_9pHB}z8%s`;y!E@E<7MpM+$s5sAjT_b>=PLRHhXKS* z%k4LfB&6sw8oQ|N4a1SQO;WVHq^rTVoIATg4~u^42|X8j`|RwF9eULC?wO6Vx|T#% z?U*L0lr*V(wrgYy4UPDp-%LY85r>%>F`;LYAsddaYfn`O&$fG|3&f?qHB4`jX&1!x zU(M=)0yQysh}f6bJyub6<+C;ot@KN%lWhrMRs6I-9nU)L&<8hqN%&HG4rCPLl1w_o zx`59Uu;$O6x^U{m;(^nbR#xd)J5<59ot@(SqCHHz`DF*L>*hKxfZzO)lgH+ke%HNw zv^-M`mwW#6IJ}>H-_u%x>Sv9lrDr35^~-br^JO1@6W9d`VU53(GNGu5}go%UhY!5;&$bshDg!ZG4bd_!rg1Y&v1@s& zF)Dg20)b=e(g=>Wtu8LAhK(4bB{~K{H34PuLU_i}cxj;$wIWg>4wQklU{pcAL5iNo z)S~r~qjBk_{NSGR!FX1wSc+MRsN=~3E%BBhGbxOAkBJBs)wv!h=?wG8nvP;}c2#9$ zI~^#?^a^ykK>KcI1UagfnF2B+{@4e7PrApl#-T!q&WJlg@72KzhbC0^rk0=OzkP$ASUWn{u6dLLp`k_Sy5y^T-RiznoB~4onH(SXMn4Muw`>72MP^Wkw zf1E6Fy2Z+#QUj4s(8JOe6ke!9bYj3W&6HboQ0&;Vf5*N9=bnCSVeZu8!o2QJXVGd4 zj#V4Ua`9J(&GO=f#re6_<)y9LcdjfhY}EY%+qS7w^ub11GdgLq-E4s1vj4_ghTC54 z$o1J=#|5yGqg$8%;ujpb@7CGJ&n&*>VSefN%4KQw;`hJf$-n%2?$%wt<;^N=j>H-Nt-nD`Re+v8=19pZV3V+<5PkEP(&&7v1wC4;{^8 zuExGyWnHWHAA8R+T?+o3BfD=dfS)009LjaLJ%eOpx1+PQy=T@HOx_G?8fgOI*@zD2 zntnIYQVz5J&DXf<@5?8^Ahy$cL0&G57BDN;1MRRi7 zaVE)YT5IB-lpxy4=+xAFE$^CFEJjkViQcAL9~my*`rgGh+v=@gl(hA{txjw#91YIp zW0!2ieeyhxL=Iw(a7JX+^(wp(17YMxqSMtuZ<^EEf@sy+%YG82cKH%_;a}ERRC+#b zIDz10y?5FaGDJAoC5X!cmsii#uBQSg%LzQU`wpWm3$wIPAYwWE7Phroe%wfk>AfKd zgyZzF&p%qq)+ zM%%A}+@)1XAS0cY2Md`S_oYr&X%MrC4Zi?Qi-Vy^Fv!A*!}eKmqZx6QyH!*vBmL{AVnJJi%jAPfnDGfM!yq&m{56uGmz z9DEt@NYDzIhau;K6UbaN9&Vft@>+G%JD~C63=svHxxja>##|R3c^7oF^}ntF#PKMs zm^RG7`HGbR(+UEmB$9*3CwU`HMI_r7b8nO!;{yh1=|_6DZk*Yw@wZCM zS)awp?tNl(K<6$vqH;47Zs zLH9yd81a{u7wAeZn_l;F9T&jzT~~dz09Hl!Kl8EkRg~{}+vDH*yYJSwTi<{5obG@A z>EAeU^1?IUmi(?y>5(R=+>+rk8BnyzvL$wf;rpEq=z;*o*v9@l)rff8|JhqA%9! zSb1Tni_PcB&<5fvCidrbRdsEUJ0nP8Ml}WROu3qSnRnhDNLe zhj%T4Fx{{bA3UiU5Z<6{$qKLHc02-$egxXKqcuY9$DUla?!Fou8GA^*je*KcGHnav zyiJ+DTvM6I_q^I^jMH!Ec-XQy8c3CAf~U%UfFH;1da>8gt z9Fw3>Ea^^zK`|A;V0!EECle}I$b~cOXVW3k_E9fjiwDG@*y5J>vSCRn(k!Ds$>l^) zMQ0cI=4-sAt}!WDE(Mt2<321Q*hNFzvQ!?4Vs-ct zGVwV=ME$aku6K|_TuSkIJJKPPs(*Y~{z*qZ`wwwC->DEJ*Rvc!^;Y28mRn@-nb54r zxx8ut)K(?xqFR=7TxW@dh?GoHmz*GUp;*_1Nqg`HsMr)>Di}00-WRFm0uG9SY})dFNEKbG6^?1=lYlR6lb0NOPWWL1j{-@Hmh z;g)9g489G;VTfQ8mQNk5p|q&Sns9Bh{ISeL-U_4a4tU*X)SK%@D~tMS^!)sVrKKeW z10o7`kUfWn)=_$z*4CYSb{)EN-#z#5I(+1onXOCu{dV5u>U+7K4kb=k#6^b(+$fB& zLKr+m!|@E>StN37c}lgtGP>qyG@#Vh)$vAI2)~Fi<}H>+%q~U+pVN=%B^u|%?s1(Q zh@`l(NlHcZ3-1t6N#`~;~ejzw!a8T>1IWW6W>+*@r*-u3dT-wAR47srWnI^62;rvHGs>cfa9*S55vVu+(+= zRNHTQ%^m;dZBKmc1P{|vIkI=#_x<4)%ZD_t-&Vo?leavoJGcMoSG+(!cl2#P_tE|| zEIl0Sn}5fh`XJ!TzW3M9Ebu!||LpY-eDmkt@t!B{`Gz0+zxJAsG+dxEqzAcYJ|rE9fj_JhHqdpDt3f|uFJG5aP@ zBq1x>^?K=;qwp$v3E4-u>sPHO8NHr`D`ibPS<(q&vj-hJ<95k*KdOD%-KXkF2OL{+ z_>JJbT~kdj@@IdkCu2!cE*B^+VOCu?gGsojC~55-QR(h3RK=N?B2J6;ZW*DYqRuXg zG-A$3qv{m$bJ^5sP&w8r({Vb%B5I!!cP-`|xOW1gcGOi7#YD5K1JZW}h`y>8D<3Ko z=#Gok=<(Lw)t&MuL~m`*ns!zWGX^B14QN^g#Vy|yZCz0l_Smsz8856DxU!9&{_TFY z_$tx-S;PK|3~9Q6X!XQMRS%ECPZ-iv1;cC`zH#DWB4GVn!ITAy`uN2?EZ7OVqXq@L zxMWaN?YFimy+`3c+et z(1xU1+uPIt^czn2C5o|lUIhGU%8hix>}R)c$6xhALX@NJ6B?26oY*~L9T%B`k*=Yt zggCd*6T7KwD3AoI;vIUHG|QRMQh=MC7cSIEDIA`V%x?v4+olJ;+F}qu1ge*CyIq>) z2zEKvvGJ_*dO1!XhC<5=lAVy01gE={5?`mVY;@WT3 zwa>PxU0R%<*H2Zc;FU_OvgJcug{Eg+ZJyn()$iWB@6+mc>)rzwH*Hejd=94Wa}VMg z8f7g&bV$SFeGD0MEZPiVR=tgWVljc5h;6mqvTSQKfwGGL z|H!0|3qb8ENno=*^1lhBBgz=5RCSbZ`x;b7AeKEsE)`kk!*Q)$XSImkwR`2@9rJUi z&px$Jv+((oPhDDE*1gU8QLoLjv$OjT9=P`fcfaJp?Ys7#J9Yg0nG+Z0&TQSWix2pg z7B}dj(C$uqDb!VcuU!jkT_s*#Jik1DX7SvKg)_%i7S7#r=a+Z)uV3Z*E`a6tH~iQK zpRM=$J)|r?^(g88{DI?Fss8bk^RNDA@6hV^D_(NoFMQrzdL5lx($|CM7FQ1K+;Z>! zZOXfz^Zd8}>&M^r=-H0>Lk}JO*57lteyiyt-}bq`_KCB4615h|FF(9P!uo=)mhSli zbC0rjQ_554u#GrH1yc475%@7b*kcUwS}K$x`JVpFI1f zh1(vyW9LJE=`|lde&L;uoqgi$(u)sm|FRby&|uaN0{`UupZQ+#YwrJVEkNc`AJLh> zIKJyh=kTv7AiEYA^MwCA!F%Em%W9DO4AJC=J;o%+OgU9hY!gc}3y^52;3RDHgV6LL zwEsr)z9#glTW>^ffRJPx+=x_67KLt>pIKTGnh51d{PJFOyA{olIiusT6Gq9LBZN?=W?7>y>TnmP5x-g+fu zcZhnXWClYcm3T49lH*b7sv`x1T3|9aMK8&W1ve103psZzt%x_*M);}Ptx2y6#b|=6 zWR7zvcLf-&WQLK@-IR{PN`DRgB9dhUx! zDK9ArziH9GuCpJc?&QPh7CdofSO{+h69So_PI%jAY%N8GlgQw z+C&Rf)@O`MMB@~(xQ95sr=xVulb9&6$5l_&D_3>_hEVhaDcbo{BQ3=xP7=_wcA~(T z{)a+K`q~)^tw{lp128DHnvlbkO0?7z8W*p?tP8dcq14pWALjTPp8?p=_ohNp2jf4J znjS<>6DH1jJ<5D_@%YkSmvywR3Js49+^$s;3YMIj4xCG3I?^ zTV-fiaNN9c>iF*vojE6clTMX0C~#9uFQ&*c@%o?cYcUXiap*ENI}5t8kO#7JP~zV= z!>g)a3f3SONn)bwr9RN3r}&Dpiu9~*{eamIB%4pjfsm4YS@*mM5>u-T*)h=|8q-{F zEQwf?p3*4<$@Uucp{<6DLW)yvlNyc2ZM*hto!v3JbC<-I&Yjf--aQ8noqX)$ryqS} z@yuy0?swgK_>Pyo>h=d-dhqW1W_RwwDFRDKv)OR z>axBlyfi0|S!pS*DD@rAQbEuA~Hx;%f&7yOo50Oxmuj;*+buq7aw@x!R>m<4Gk!5zx!7o`#W#`c!up1{>|n%15B!!uKKhv zX1ktgugwTL(ue8QCmm4M(e87wK$to*%N2T<%x{yWY>8ML?P@C0Zd$829m4H~sYWoM zGBZ-TJt~bz73L7wlw%#LB->2b(X8DZHIkhLbpon6q(EAAaHF}{QHwBuca9w%waQB6 z$5x|Nx{h=#-?>rg&9#+it%p2;H^S-Jn(%*wJfS$E57my=E1j2o`n-}4Cj6c>yk&Q> z^(ykG`{uEfp)xr#rAYVs-O|?E`(_y0%Kb!Esp+PAyxodLi~P({ccACCqLU?MfR{oY z4#+xqau_E+KCMbdv{kn1qFFlx0dXNACTd&tG>gsQKz_s{=V&43Eh53`5RiJ2CaRTQ zbTDGy+33&UoL>YWn%L2aWIoG~6zioJ#2AOC{3uW~hN@6p2nnTugH&2RHRTLdSYAJR zNX0T>D2){ZC21Qc{v-icpz+sBuVO1Gs8O&lEKIr(GAF=#2|=;~YCa+_y|Ej3uU9vK z2*vQ^HBBhIkRy+6n@STKgsnF;C1y#sVii|D3kj)ue~Cgsj{NA5F6 zN+MeaRq*WO0_paKv6Mkl(P^yFJ*^;4CM#%1IS#clm?cnCvJrhItFN-Ubb3{cFBIMp zQ;yYB4VNh%T?tgn^G1oFAdia5t20CEGmElal z$P6D9E{igKlyD4@&MLaUR&$Fq3?ejL2`2*+`L-Q-rmv)K+_Y_W_wGY?9(>*l_uqZr z*4=w`U#{+APkelIp`{l$g69LVgeT+rg7u~idagBAbla5a4OLm8!$?j|A{r!kq?a?M z(ISdmwhVL-9FpxeI3H_9Wqffgs|3~IIosld%GP!e?j-aurayMl);WPoq|DEEkQ>2V zn`t$>Za*hv@I|lguC37CJhMd?b=4Jmpte5iT-~*I=dL|F_wL)Veb+7Xi)WYh$nMph zd-mUc?+b5#-ivnby>-jBS^1{BrgtvPYb&3WUZLss=2iV}^WyoX^Jf;%pIX%F_sr85 zPCj|z^wEX0$Cl2YT3x!J4#MR1FVpL>PuZe=tZ2hu{-vu_|G5vHxPq`&bXrbp0etoM zKX6?0O{rb^zB+O-+y4c-a6HM;%o{3 ziU06Hy{6<}`CV_HqV(p^e(*|hJ@Aj;+9jtdKl<)tdTF_?>(5+{K0dF7x_&u%O6aEPpVT1JG$v`LQ_BLeo5lhwTBHrcA zt@fl)%c`l4*J2JrdgR>~ZT!to3GvxDXk#$&ou`UDyyQXiTi4>_@P@!CNGnKy+1lfM zBXaW5LJBfgd8R2;4>(oM71?<8a)IxKxq!GzTws9D8 zP3qtZ$m&Q}K|saskcKq1H7FZ$(egpK_Mw0*B$90bjiIQr(vhy;xr}Ntya3Y~mT(Gt z{l}8(zOHL*_^LS1@DWSFOqsH}HV&>Nx*u_Vh}K5q1yReYyUd<@B#DBTqhjaEJr7Uy zardtIa|7%h!{CQT7RgW`&Y`Lk3GAt4diAKasv4dGI~!`EMUJl1hQzHY!%;WlYkca) zUfnLrJ)>GmD0S#t0=!CYz(f!~i)(CpurvveJ@e@s2Sz{S*r2~fB3?mLFB_PMyr~Am z1Di%n|K3=w>2}NZ6OoZSD7OG?&KQ71hyW-Yr`lmY9`WX7O`#Sr8k`I$KU;Uq?!Dv4 zZTG$S;PYR&_wbR8o3}_v%Vqye_odaP#pQWD!0G(b!uiz|F2yNKy*6*#v3=h`-K@KL zW~34RVQe8(s7^qNj!<(uj!+%mr!xYOZi(5C( z%qV28;$FH%&29S+?%jW2c4q7Oqff4!JHK?{{8n8ZzV)`9dk^T{QNMx&z%93I-Mamj zZSrU%owK~Kbnf*0nPV4DeDd5=kIbJs$^)e@oKbhIF3syHS$fPllj}y`;}HGpxxHo! z;A`llzSOF_fAix;pE9gg(RwnLURQ&lndqU%=k&T7;p-=(d$#q_z}4VCc6vdttC74Z zvt9-?4=_V;sQUnvxe*=p3!cj-~rXR%{;{BRr5$0fy9O& zq*Asc(Az;45l}aRp2JxLRADg|?SCPgYL!@*s7vT}sYLJ^eIPJ{UsT*MG7SC46jeNl zzjR8m8!_B&%>G%`HR7b=z-`Ow-IrFenKW$6-Zkb8v$t!>3ke};g-2}Ui*|BZfoNwj zGFY)AK&*}z6=Ztwl8&g!pv0Jg+}}t9%f=AFY}UYfT99w%5T5BqR}If3rb=coD3tP~ z#7(LV;PLMNXYWmxG|AF5EuYM%h{(txGApaAx}{3G1)2pbu7WiPx5JJVdqh}p4XoMq z3YJJi3k5=TRpl5NqYvh8vm4LzzTeSb%_FL$1>N(%=e#1F>RFCREI31`> z5ujMIa+52>jpl$9Y{H7t0xyU_3ww>}klbK#9g>^D8W3qCiSFpvK^9N$ZN?DTeDc|!e)N-{KmFtI?{5^r`4HnBC@3 zigPiv6V8B$ZetD#RZ&aX;X8Q3(Qdd(N@JhbqC@r1v}m?qrZI9+spieCvYW)J#*huv zcSxbB`sC>G6TY+!%9E$hdG^bF8op@FxAq#WCw6+Bca*~|0WCK0mBq&f@iHlvxdSNjxu9r{0Ct}tK_DIVC@b1!iO^8Y;lZOs#(d+rT47PDbLp54l z8(SO^CI5;HojTNJwKflc5odEi7_Im`^>pU)2N$+*mi8ZekDuceuEjgLm*}@RH!Bl1SM! zm=w`wMBCO1{3#J#k*Ow2E>E*H9u!6=f%uHZ1+dm?G8i=yU+Q1NkEL$-_EFXq2{o9& z;!g7d-6{<&Cl0;F4D}dEYtY4@*g}h|IH5v8Dq)M0ZVafw%Au&XO5KK|r_&eZ9b{&Q7Hd08V_A*1h7xq5=MQL?1SZGWQ}&M#Re5! zNJ&uS7GX`NL@~CopZB0t_I7O#-C-yRY_^RvQO4zDEaQh}$fjz99j#`gaG{&GhL03% z6BD3lk01hK)b4Q8a(o|Hv8{Rp12b6FoZ&D4*}061Q{ybeLo5}HUvVq?iRIvl24Ydt zkn38t>-9mN+W5pl>cP2dM`QD6vb5z{q??Cbnt{+M6JZ&<@rKW-@}TnZ$3Oe*v%mP4 zAOGT)XD6>tf5YcXzdGTom|lFtcWPgpp1K%5IcCd`)3PulejMYQARe-A`_WH7`RtcJ z{?mW)=`a55lb`*`V?Q~}8>+#4`tXR?6NbJA#4h8TdBW_gdC8MryLT(eLrxPrQj@c` zPK2nVRZ8ttCnIO6j|a0851r&BRki&QaY-`4leD^;)*Wo`nShl|L)}F z7kudV^7J*gCb&I;8sF{4ODhJM%}Ri_KV-Re3*i6aKmEmj_UE7Q8^ZtH|NPqz8TcLc zKhX?uBzsi%K%>%QJhO|O9Dhv>M{{S45ec<3!ia~muS*cwUG4Nh4nhxXXNicpq2|m| zGZHGE+IKdaQ~@@Atj$#Gwc^G|MQ?I({10Ix@}AlrWWt$T?Y!MpS1jlWrq%U!yXBEE z6FLISd)hE5E3gLQHl-{AYD`-b=BCo_YqMgbeAtPODY(6@m}_P)+@$M6{D}N!y3}DT z_X?R*<6|25&VQz_`zFlf>-J~-x_C76TEtXpd4DE(qJNr-+TqiUcrj5@{@lBxsX`vkQzhR)sUV^0?CQmVq_LVTmT>x0C@NF5YzsP`L?E0-Y(I-^ED>93LQ$kEvDwHG zBysFiDGkM=G|&+9zUZu_BPW_3;CHMIN~{PGSG1*EU4*7pRU@Qq;70&PKLZ*q{@gp-p4ViTm2BFI_W!PW;z&7&eM2f2#0 zJHktk0M{{|ZW>oLUXfU=WA^Wm;ibzXv$_19DYb$!O3~Nz1BfvU?3fSYO+83^op@V} zSgwhTT@9Lo(TD8<`03+^j~`yWJAd=)%NJk$>h#UalNVpI`aOC1?b#cCjrJ_BQ$B{u z8**90fe$+0kj3N2M^8WJi=Ezl`_=JRpa1ByKlMrGX2A1gwRVGW`?t0)~llo zz{xkFy2C9jx8`o&$&xG^t)?XTuJ4s}g$xERq&m`0W~N|0?3eJP11!hgcI@Riw3SI@OHGA$QX3}~ zV28KRqFx%?WoxHZ1@D*nl#=Hn9QK(XxxTQf%AitRC#}+JvtVJ4sF%sRWhaJ3SgVwx z6?#0IsksKe*Ue0bvR8wZ*|sJzVJ$#UzBN?&_#3I1z=i5A?(CZ`8hh?W+zamoN*8_kA2$-` z=)|5}rQqiI*zmdoa5*3A2=eN9@Y+}evZ1~RqtsmoA$*go*7O2;`sq4?M`tdr4sHh! zx|FCXsE38PQLh`Dd&_9|6LqhP-HG8J(jZr9pT*%Hte{9@RQo~uwZCf&7>0A@x*8n(!!WG~%1MNvze70`{5 zgAh^l#z1P2DV3?un0?5|CL7REk+GH%8TgYvZFQJCnMPu`*Ez;Wz*T+M=3B1H4-`pnN^^Hok zVAkeO34z_Wgwd{Pf)e43z3L;(c_yDH-|3;K+q~4!X98AI;U!1gqaa>EQ?hZ5^;@%B z+15q;O}-A!N=c-Xwq`RlLt5hGBa)4{^`@uwBmzRmf_+6J0QOqig$rhJ(ZshIAaEI}}-b|Htu#@>_oIFr()HG``5Kb^w>xtF0 zON_`kjqwl@xA4lQp@X_Mg*vT00ZFD(rUF*KXXnSi|LcEy@7MnaZ*t~!{^ku2elO21 zcpjMuGcLV{=z`hX;yA_!RIl%ypPXD?{NeQY)wjR<+sDs7;_bLs7w3<7Q}0iH@$7dhMzL}`t7%$AAkMZH{bm3%{RY4ef>2zB>eg--Wu(l`bT^%nG>zu&3ka-`Hc=8 z^B;P5D;B`~{LlaJU;QUrsQeD_fBirG&DOlD+-2Y&F9VskIOv=i)-et`b*HKAu&+T6 zPN#rQ0KG0sUER#cfj9u&KvZ>(>1|@!;WFJ7cUdj662i!J-%||^7F(g#sJvJ2$zzDo zJy4c@lxCBec|)6sgh_&GL4oWFhFtJ&lc=z5%60w|iJ+oA$2yDMw z#^;>0rXH;>tv6d$1diA8S)Vq*){1}-oFz6Q)wMwQ=8Y;P8~ zo5uRjC8c*?t690=G=?~9&QV!)LU6Eoe$CZ%MkO-uM-Z(ER|6e-^Iq)bUetu1Qk1RP zRN1VzO43s5eaVIJN8WQP*MmmnC3;dDr{b~Ro6E$sM$?LaOQKvgD_3@zY)9IiOSRqQ zhZZEOKD$CF3aQsxshdwp+Np{%&@9mM-%Uttwv`+5IF{8&w_V3oUBChE8*ayj^jK5O zx>mEZORdKm+jton>%=&Yaamba^}=7!gR~h?U_=&pYO@ON)<|~A zOmXo%Wtm%Ih(W|zUCde=At)BnY@!Uy({Z3fSVj(e!%P>d-I!P46*}Yr8~`WuEdv=M zZPoDJP$)3jFC1sX_yzoKoCiE|(q*ujB8shzVB33AtbX~CsC$ndoL`)rees(MzHsU7 zG0QQ2Y4)0LfW}u;f)v#Ue5w^<+XpYd^(%|{puy$E!=uN~zW#!> z^=JR$KYsq>&yF5Hh2=M5_51$>6`DiJxEh_V#uzuOxV*`f7^71EfdV&YBSn&fgX|#z zuy!b>BcgVl;s~xkInbsHtAwvDWlf_y(zv*LdOFKa^)G>WGU568J97N?l<#f6e0%@? z`TYkx`+f2H4}X1q`SsgxK4;y_8=l|3@D0xwr*D)8-(U9P?in-0T*YMd+Yaq;-o>_e z;=|N$#R8ZILVUmRFFro{x4%FBAOGD~{PquTf&MV@-l6`J&VYCMIM%W%TT}4&jI^7i z%r3jMp~&%Df|Fq8j4t5@Gjo*^UJ&fSN?&u#%qPr46^Zg7jJdJ0Gj3Juc^1KT_qN_u zpCzahX|3<)Kk%I$<++)H#7*CzS8SW|GWltEA{|XE%#2!JccE|r=&XA^VH&a?jLsU#nUSWMO>T{_gXX!@f5LYF;O-_0+O%I4tTZJ}z(}mDSG%4*j zzAA5Lc}xUNPjG`#L8*TckG5W9IKZlwihk6MZ_uGqdGCj?ZcLx_z?NRyYHc|YKmJOL zzW5sEF?1LW2CDv`Xj@L5ra_H=a>l_UaNUa#oTy7uHI9#u)bX(&GiHHnqzd_!DGak6 z5G-zsH7@GQsSM!&Vm@G?>5jDZzl1{v!l&+ZYGRQV?sj(uZcNfS1{S2 zTGhlXgs!6242P?D!i0seu{Syyns2&dALShU4$^Q(F*(%|WwByQA+y!Qc1HDH0ce3u z98IjE5@7|Kdb#7aXf zbRH69wMn+eGPIWr`}RemHC_Q#ZqnS@Roy6^SKt)eUI9F8a7Yjp*hlQ(97%1KlWO^q zTsC524o?wa)~`gFaN6U>#J>|nt3|Z|veFa=5g=QFpoAwYrLN@k;xK?#*6yjAy#U)edkxVSh!zrb0()%oFLSI1;K-=odJ zt!oyw<7Pnp)+?e4VEvJDb#?OU+gD%y{?(Vi`}k*n@}tjw`S8&b)vogst+=&P7Q}2C zN->T6Ffzt%r4*vnk*%^d!*qk(d&G47@L^5P6lzt6__19BOF}zRMnN#eX1A!b7sN7{ zRx|B()#}vAKqtYcmnVFn`qlZ{moIy{YhHK8=y_RPFRaKrrnk{f2eXR7Qp<%EiZ@34;uRqmE$`*w3bJx? zfqAeBb5}IHcxx{^w&F4k;odJn-jM^dYma<=-jp%n5z1!Vg^;T>B$g|1Hmyo+>aBPJ z^Leiqmpd()hOnOk8b*@SMSc+?rK|`6i7FXP1l5Xdgf?fCpPoWc$+DtTM^;#irF`l) zKm_^+OA)^#5|6n;4x0_2tw++<)}}^ern)1*HY=9!6;oqHtCIb!}rTv9cu4w|_PR*c*a|oqdVJf$}xJ@L4#?!!6LBa%JZZm>0=GfW84*DN^S7(!- zxDq!LlkQGjx}SWlacW?4cis!srn{tNwySxdhoZU(jTYJ>&Zw}}LJg=C2|2LG%tltG ztJvr)Ogd$jJ&Ye#t-h6-O4u58NF*M#40sI?scE{WGNpbNyci5Eh65Lq&SLEJV{)Qe zQ~?e0Y9~jKY%9Mu%7MD*@mwo;ikRmskq4{F#igNIS>tTHz_{jXJKicNk-u5-hms>8 zPH0*@OEhV3C^A!^_^RJS;>b|Yz7vU}kK>h1qz6?7qC1|1@00`;6s6xQvB4$@uP^mS z|6`!W;-|VGlpH<-fc~1PsE#fJhJP3zQi}&dZnGF(BOkmdYCKM|b^Tj&hB$PjDll$1 zhb-jfa*%Gz=G7PVe^>)F`k_s$4 z%?1o%HfKuJkZx%?6>C)JSr>~%9?_f4jtyAj$&H;F5Ylsmz>;z6!n&?2@kc+Ejt6le zArHWqEVeXDvQw=R-0Dum6lgd@)(bfs-x1Fr#CW0Dp@WIzO-3I^(P%MkP8b8jvF zaLIwD2C~$dI=j-jT+8Jk?YdM`T^4pR**bJR5>x!*WX^G>;V&}~Cl98Wd`DhZ&12_B8&r0XjQtYQszS(jLfHs%~DM4Tuqiao!h1Zb6-5e19LTQs4*@IfNW8t z?0cc~Y-LeNUCEu6tBv%srsozwJi8^E9(@L$K2J^zCqd|=!L0v^*(0Xi%p^An+0;pF z*+VSi0aGc5v+Dj+> zDc~SUyTqnPgHk~T)KML%<-GUTX8NNYE>km++TM@RWbl{U4=JVu5f5gcl#SP z7gzocSPC7URbxILo30HRj1E;Mkwl`?hTwlU3m`*}20;Cgt#a|O8@K##PNp^z@f{0@ zU?uVcOSDkL4l70qp${BWzA2eG?&6XNs4^@cK72$zj`(Gr>wEnEkw2h($#2Vee25%~ zObpu644ay?I~I5*Req@U#pl2N_-DWP@t^#&=bwDanwnJmyS3=&n2lbe43gUZlR>cH z7H+{t#!c;|S+Dk_RY&(Ar|h9D`m&%4aie3SQGiUaaRYbjWfk2h#6uev|VnzRv0eUvqVFc7gz3_?#b&%FiWZ$RiL+)qR0Y_2#o`1j`qFgsxPdy7X!7edBY6UnZ0h1C5Di5=c-E?a;2S6X4Y8>m02zM zaan?@Y_m#XAKj9Irkp1a#RQGdk#ly9KFo4e*p|(3SM0H-OeikwdtnM`zAi$DfCvGI zoJOJjvN+9cOe=}BQGOS(G>Lld=viOHA72inUrBRBK@fjABg(MBp zxCWzY8|qETAfSk_OBIAShoT{rNWgFS&2Ub|k#SRtD}3RKne|h?S!qOvlJKbH@QNFAjM!WDM%1;Z!7)dj zezv_Y6(}uRlcB-!)f-=+g_eshM{T;h9vF`isXNHC3ttog4zyO6g>Ykm(DZOJJM`!l zpof65psTvmiwVifKa+q?gArewiA+RX@-e z^SBDBYBia-<`+<(-}~tPlP5gx3VpcboL^H#36LVG+{GI(}kZJUBb+jBu4p znVnM0(+x*r$g)ze-{XxphIp&+>D#xwUpQ=~IdS{Y)Gw>FEW_I5FJr_T`(XxDp+jk6 zpz-MS$+M@uJ1;IeZYFjWsBdZ9DrF#*s8w9>n5M1=J4Iob_c(m0IC`U*>6G#BRKyH$ z#aflem!9+#Ux0DJTzIWw881U`s7k}WI6r&!b2V<)o-gtqlmT7vTL)ttH(XQIq?2fbBmN_lU% zGbUeUMZQcKZ*@L2~^R173U-Fw$f8g;iZ+^Zwd&`%EX@YOG;)6P*5ba=S zCig(a$FGi^@hc9Yrgu}9vs}^LAFA9ffPbh=-`Tkh8OSllrq_8KeVGX}Gvl5OpLTLk zb}pg9E3>GqB?47?Wt=j02k$lsbs}cM+2VErN`X~6AkmFd4*MmZ#-^!j;_SDbCbE_( z=&;p{OPhAB7zO8vdRwPpn20nM1sNm((f<^U=CoytM$bUGN4tCSY?hR4nnqBy;yCRF z6I5$R#yZus!p+HP!yI}rBbD%16P%p0YGLvjF@3K*+p)gfhGI24c$=6NnmPxQSL!#| z-_rnT!Yk7}@fY||YU+k&OdKQ*yn`$m5O(>a@U9RwoD`yVujEQ<8T!9SL}ERnSwhg` zZF^>#ZFNKcs}$s_Y?7P9u-t=r4pU!%W6t_;ex{T_a##Iex(B-cA!(Goaf+aw3ywao+zi zuTx^Kz$*mMazN@_j<_71UTFntxtBPz=qY^+HK;8Kffl*CK#FZX945Rdu=3^ZA}E%u z=wB-tYAUp8I9mxSdQq$he8*%;Rbmb>_4(fb2C($;5GV&ZVqEWXJ(jDw>nuzLGa!Q1 zDsPa~=?qpvDdza9=Lq_Vx|#*N7t5MKxNoPdl}N@HY@?SWLWEp}8kKH|#Nm|~x{0eg zm0ZNTbxlr#5;67sPjR$lT8_7b80fHYEXj0?Q4+t3B}z$_*@R+FN+~+TG1y(e^e~n( zamSrVhX%5#WK8%x?BED0zT&ki9V#mb@sX6rX+abqN3%%n@07{na0M9LlfweDj;X{P{osS3mvbzxecLf67-x zn?;{wE{BrsG;Sn^tT+u!Hsj@N_(+0`838+-1L98YyF@k2P_kq?os{*8@5}5I1UNTl z9zABI%6CvHTzhC5>lL4K<|lc1d-K)V$y)BdIDhlv{4Fn*zAw*?U+@H&#V|i^gcu1` zi;x~35m3$s9Q>U*otZKnX{RNjX{=2%%=rsf>jv9HuRvaEqx}JQcMISTnA|()TbBWk zG@RmS;}Cq`yBw}EoJ+jG^ZH4l9GsDNGIWNiZjRH;kSZwO13fauaWe44FOW++rUqtI zG5OE&FZ@;)KXgrmJVK=_S9jtB8(f95?8b*Y9Ub}QPxPXzJicV>>=+}FUQtynA$n#$ z;KQi$puswDJ!iu0$pfu&g4OA;Q#?jI-$0)fMs5HreZa)Jr(vQqz<}-@7#n@a)wGB@ zK3B2GRTU&+fb4N9Q-2DR6qf8(rvqDy2gc1>(%FQ{*b4(*qcU{kJ^RXPVPK5CuzW50dh} zqXi|gSL3#9<2mu^4?Ep9C^M7%xh;3|xb$h-P?>#RlhSaT94USE=s>ossmhy{7AhLe zWs-;Hs8=i|v;kR|FOJWxSDkYaj7l~*odudC5@GdP#X=^#-w(u9cdY7u&Nl1 z3Xnrzu5*cv?s#y8Sw}3;31<1+eN^oKjg0aC@Y0AjdESbA z#dm+bJ->@$b#_E^IACVc$KgC|eva`EX-l5)k5A?I~*#>zGidyif5^7&p?zb=4Z zu^#q)&Zqo@@+sKl*E_ZJvv=3>hJQwGf_Gx1)RpXss-+_m7U}ic0m)eak9a3-gr_}v zAAEPW0RG@9zB6!pGQi>KM6)|AIg~l*df39~A&SG)ky@f2%@I;PVyVnUP-giqm~+B# z)y4$8TZs0k4x-vL*$^t=M@aI0us=q6WT zdVZ?O@lK19B3NH+)=Abx`D6uNSrZ$~QDGV*t&Nsj=b4#~ULbMk0ML zCz_E%CsEB<${5g=`RgS`taw5*wG>XQu=@0gW@R1b0B!0*+=_y$n;-SI%?$93u$Pjb zun0|E(omJHj{`Yfj%F>Ovb4-aRM?NMGE0s$<}$&fCR&PBurou3dC_*`O(c7jB&)@r z-YK>YvdnKDg=-qDYl!+BQ)xCeq~d-E)S26^m9GNHTF0;u6I0|iu5{Z4<5d| zegN{}O~P}Cn^()`By}i`8yOB5n@cEMShSNp=|mmjke8$fDVHP z0AblD+AaJTa2>}o))y>S%K4uBCKg*>J3Wj&Gr>jF)#>Zktb$LDU!9%2;b(y#K7RJ> zlb<|%e3XZ%2(=?-f~8SI8vdR#%!pA}W(D-VbVc7sVS4cUnY~KPSbWDi_Uz@iZ$AIc z@xT8+FJFDj^LGX(X?^hVCr7{h<^4}SrWcju^U&ufe3unZv}fsi!cRs~f173STYf`| zkA}0HPQUp`IbSHIee&q6G!qjOs53_Fd)aiu@8xteZ*;_`{B)qgnSU}pBd>oIq2rRq0=E-*~-j`yBVmuo8(OCOo2n%i7pgKGee}d zBxNg|e>NLEQd<+;%;+PDxC#p~wV8lR?v!tx0%iiXZl${8s`FAr1k8M&i~5``g1<$n zI)$r0woHrG_e>kHE2KzFlqy&q(FUbOoCw=zJhA0oy%L zeJYWQ3z(ipj6{zpszs4H#5OrM24sb17$Z4)zHMxsvxFJl!U~h*n)ezDT)Dcir8+mw zoB43V+x$_K#^Fu!3+7hr6SNK|C%ObBuSp0LxHGDEIWK*NU-aCVWB!4QsJc+5SzBy# zO`^2OYY>qqRD%J7s>dM8=0AT3&|A5B&|Uu{ALpl`zU>*JHV@{N-h{{V*qJNE96wsK z1TZ_b0z)iPDY%hsC0%lFwE7f72qESsVS*b$NsFR%3<|eQYaQJf(~c!jt**nbExi>Y z7i1&0l#r;0=F`T86A3jnv_$=qsCs_gWE^hkkp>K0#Jqr#?T3{b%0qi@8@7-s;kIbcz*B3^_P0xoc zxL7}T0qp8Gl3pnEL=!K@wK|AeUdydG%?9^8Ss^s;vNI@!r!3KJ?@_9FWRUe8zyKI# z(j!9D6-?f!2$>mxEvx4~(T1Gje1#wR_5pCX!r=Rm&)yuLoxbJs%`d+A-A6z9#nJOm z9^QX8S0CexIXBsjadYtf3SJ?YlKpCI)b|yHg=SRxN0qlavy?qM{`TVR_}%5%#mU?A zmoH9!|GPJT`+r@%d~tL{kL5Y-N6)X{d~x;BQ+^W}4VLR`0nF!kef)dn2YPwN%lpO8 zxf{|;JB{>B0%ox9EQ;aS$9ntDzU>-#{L^h?Nj&YwI4fbg+nQoGN_y`G5%gEt!FwS93Hvq4>W_rJOveh0#f;{3=O->tyG-u$PjGL+ArB4uB+IYrGBBtx=cWn^}uqk+i`hON1YP}%Ax zXbLs3#(GIZjgcy-cK{gSZnV>UPrl7V$Ra1Fz_!oH{JB+6bkDQUI7 zJ!B9EFTL*PGRO-j#(8gB%y9j*3{3b|{I! z)NMsEvG|AP#(8pzLQuf~ce~#drSL?C1g*y1q^f@f>S0n0tv-53vN(>5x8? zy8I$DdK!z#OY9;;KO!bi(7@`B1DTeaR8$>5D=CXtirSGvWb2|~7Fnn%;Ha92(9p<`nuy84qE36ITe4{|;^sF|MX6y@ZQ5rW z`DiI*4)-PFnQXPNT2WaM)5t3wV6}eKbgXNw^p3Ukz=*}CxD%=uEJclJwRo?Y-)Ho| z`QYAtma^Sh!(TPEw6_dSB|7T=40xj_Bn6gf2lHAhn z(a}soL!fl3LOSH*h2pCSrj4TNiD*hwGV1(FFW=OSP$s)r^I@b5$ag&8)^5*YXlkQo z4?QdtYe`2oH;!2|p1%6}i%-A(>eJ8u3=4#pVX`@^ecj8(%J-F=6h_3HHL$3pb>Z5yq(U$BlT`B7d~A9fS05e&HQkOatT{%f|0!a~GFXqJOi6GcHn* zmuTFYL-#GlX&gfvMs|C#CH_J8cMISTn%+C`Tb6-2^f-!p*tzvsOxY@na9~mM$ftA@ z{eo>+J;V`QN3j~6<(aPrv(vj!P94Eye(~JEl*Se!uhu(-)Gjy&IyK>fl4@ltAF^!9 z=#Gp8;TN5XNd2Qh^9DDKU=02ZZWP$SYn-|`Z^~VoW!I*ei|qWAjw_5{Xw*<*DL(9Q z#0*O=HJe^Yc_}R~mjb8;X*RXe^IT2BK(g#w+T;ZN(vuPJ8NE;Ew z0vHL23nU8Zb2W>BWKfrDn{*kfCI+3{{0v~7(F;np$V4i;$^=C{FXh+_N%nlAHTP<_<5F|jW|6~v7E=yUx{B$ig>Y;3BwF8^ z$<$KqW(#!OZ8&Uw88^DqAw)^2*&6axl(BBJ#OM~TGX1!ISHI135Enp1HRo`eZV1nQ zN?vtg3@99@4%&*?YQL^N(JPjCTIFLbwD{gQ4e$nM8Z30Fv(9B(dOqobjL!&l!W)I6 zy4vLw;ToATmY`c0*BwjAfqwX(BIVFhvo40Zc#$5=s?jJjF{VCA4TLUmIh6<9f4i7FIa`h0CrbAHG-4|tPrjm+6DX_`h7p+gumgW0TY zBT=0+G@r>*u*T_;VTZ5FQi*OCv7EmzQ3v@CR=ZmOf3Vcv0pGq1a462D|3BbcXPrzw z9Qr*tBOXQ-ndxPC+&f7yMe;{+cA{9%Ooc=ix4CK08|`3of0eEGbXn+f=CIDDrz)tvJHzTD`9X1&ihveLn8b9|y_6*1Cq;)Z87N%#6CSQ_`!z9M5 zJ9hJD{yB(~o1|7O*Dy^XQnr&()oAC{Ubh`gthFSub*2Xz0=z^cdzg-KwW4BQ%3kdP z4p_jEKtP`vAWS)GSi(%L+(bqDz}HXlygHnyYlv-POzVIHOR~z-sfihVeb1BL-aa&!M#!Q( z)-`C!oZoqGjo2~_OHmDIw$wP}G$q5^ud)=QgOJcl6CA-fr(#fKfz!i6q8y9*(t{Kb z>U?4Dvf^H`@gX|5WTWduhd2B$|E#XMel{i6BD=CO@m3PzjP)hwvCK0>Er@@pBpE{^ zu`n4hegA2`OsW8Ad5TfBBgIOZ`WCW+ThR?W2u_cKa76D}X-BM%0}!Wkvz03q^c!bR z-F!?~*E=dM{Jd-yz;S5I^NYJVUmWo!p%eh$`MAEDoLb@hxE~@u8jsp7YZqzp#w=Jiq+%)#v~Bt3UkBt3Ukh zn{R%{ukv1;oLpb>Ipzl*a+eRTFPy0O9xxZcel(qk`E)iP`+m&&_=2b2e&-oQd$UhF zn{j#gH7M>=D}jT54u3Q>G`wm>FKM6d6QboigvIzr-`_2O z|It%=2Y9P9&>4zjv4^Thb`RTie3mlDDnjdE44nhn=+t$tqv|a0j!6f4CT?a(>f5D* z^jvf(W}W?3w#G6KGB!dUWWhvW8q7LHNk(&ZtAcUeuLWrGW zY7#8{TQ4hbH>8KlRdIO^rOnv7Et}=7Jzt-@)jtEJv^E5GNSdjv&CHi1Ul5TtK{Pr0 zI}cR3NFpR>rYN{>M4Mw`!!BrKL{n@%4-_P2Ih#h%;)y2os0F%CxB!kT+k7QKN%mP) zTi5HVy7gc6Xm(D6n?HZIBjOcNR^@UHEt-WWpag_>g^)$jOhv*Uq3)`}c5B9+&2lF` z*`o&3V#Xs?1>qGN-sa(}dTzM1R3j!Q-1xQgc2`Z5gQ)*T-XhdcBD8VzYQCDAn|e1o z8q0lvE)WGohLSjt#FuoCKSZ$yYNSR8u(I_#ZDoamE-&h0{-9c=6e=^Yhc!FW$cV z=Ir&0%b$FP*AH1|Dx-!T@INl&C^R>e=G>Xc?Z(cq2{u0MLx2dx_)vN1w=hyETOP=iSA90(T+ibq2 z9)*~!HLJ-y8!5tvC$8B2^&(&ha^DXA*Fx!gG#$57ivJ34{YQ$EgP@@8`;wEHG1e zW80D{`_T=pDjwTCyo+YN7q-iylgg@VW2-~Y6E?V6sN^|bo*^UVo00OQRCPh)aweG- zP_W_(lw8~(HWE0+^Ilxa6KQTa^Yo4{gfJRs%%rDoK~c99QxdW=%(q-1dCdT~OKxj9 ze=FzJ6KE*siEdns2lx<_or6fW^x328>$#;?JTY64p?=7iXIHsejXrg)jxBr2*ySo9 zH+(7THpDdG76ZAyJOu`;8wbj?H{Eh<#$+9{x<3_%Rn2a(mTq4H zC+m6c%?}Go!cb#z`$WkwDRSvGlcyJbHmm0;pwdxr+U$5JH0Lo@hwFlR;{qg_T*nfH zzAAFvfMNhmY~gOrHt*kKZ0lb!xeSFw*NF@iKLk>SF^6Obfxj6Ahj))XC#%R@YsIDVB z^LT!-4nKVGEA(i7f^YD$YjrDsG%k zAPAtfLR$OR$$_%SXv4Wc4NsYyqBswLVB0jg32r>Z~KA|;7Jr*=#Oj>iP78n*HGne^1EjuK?)CYaPxDgYQ6W@*KnM?bR{~q!{EQ6Ws02#h9Cn>g z2w(G!(3hF4;A)jG%JQ-GLyz!KAfoPnN~7!2Nt;UPIe)&=DsgEvWF&_zLhu5-jfkVs|Tagdg4KN0t1IcwOfMx>pyM zd@CvCLMKywdz$EV*5KL5p&>2c|lKINRd3CB{G9#?K!+<7v z>cnUR8D5$hE6(kpcy5OO&lD8#`X+9ZJDr#*|p{rg0Ga2WmRA zlV9kDR5aL8@3u%9)Ey;y4stw1Pyhj!=RE;OPy{t)%CBUtM?6W3g>t>fDCmafg4@P- zbxUE309$Vvq(n8y3ktG5n^JDus4e7mc~gX3Oit#8I$26 zK!6#%#!UjKD-O4#6Vg8PcJeMz)kG1Q7bSNjti-~Y0Y*Tt3J!CNy0OG|j8;kQDe{e_ zIGVrd|KKYvzPoCS*5VgI0S+r7s+VzF`IRmKRo8Dg;5U}!?cSYnD+tPiUKx*HZ7 zH1NDGE}HwA)>d=T7}8^5v#GPj#Z>XmxlkvPG`337+?fi}(8El0buY^Dgb1^W#aU>J z5k-jD(p(Iymh0(5Y(Nc`yGF{E20A;}l9fneU0WG@QGpf40ZJcYI)2JjMyW``I*e6i zW2hAr`^wy?pa{-5sC1~gFSdiMJ*KHA5oM6 zZ3}1A6I0Y!WSg-pCG_Yq`LTBsF%*3#^4sHAU;h60fBo+ue)i{o@%+=D_Vl1AwS2Q5 zcNE|fs*f7@-C&4W+>YtO3Z38p&!U%v@}0~+?>%|Vy7%hh9K-x7@9{UkdHvO|UVrg- zCojL`w|V&y-|Oq6d)JS6U0<;P#w&l135#@rpvi)tJK*+(zv$#7jyKoucrcu^o9B8i z8M&~+;bsL15y-;arNYT(BXBZZ*(MwHTTAj_u|t?_r&^@sL$WH_I#o0S9T@3`p!~3# zy9MwMo9{bow;}@^gP9$2wALdJ%pR4i?E#wO*n`*`WZt&D%Cp`sGJ60+Tod`g*|eI& z-a5$EbHsby>}1GIHfAB_9;T{%*CO}n5bP&}FE1~Z=L$}2RVV_ykE|8l$X{$!#@QL7 z&**%EYwqK6PV?TaQ&$(a0fx_H+YmGaq9$WVA1t04^YX;dr_lW1AEf-`UcM?L^XkEw zsJn;)IZ=qxBm^q3lEz(TUZ9!0^Sl@Cjpx0f!O%C(9bQhRWv2`nk=Jvk@SW%SoH@N0 z@lNn?p^jOrwoDxVYKk<@O->f?kdr{jrRddr+=@& zrNrd!49^S<*gCT+3q)n%i;IfJNq&|2Sg^ z4*K|3aOt_#*ACESgg9cb=9-hjg?MtfAmYeMCi3x9!RTbE9|IcKp#KUP#}p%lFhz0( zetoM(g%f8F)ao4E#F|=(F=iqgi~cN`j>mtEc-1=A<7UjqzDjEzi{Uy`rB8VIAgs< zWs5&P8CVaNWFwIz742}VP2F^A1Ps?6vQ*7xO7cN2XvkGkA@|BudQ(#*_^G%-fHZdE zwPPtE0%vEiogy{N7+QDd?3|$3pCfF)yW&Zlz}1JGJe{4Sm!ziX-9>#?Lc>3Z1td+p zCv-K zaNzvSOMY7j;^XI^e)Q9S_T-}<^HWhSgD1>!DYovtyEs3;;7!iQm#1$|UVZuct6#tU z_VbhDuP@I|@P#kF;#;rIPhMY~o?M>u+slvMT|T&X#ixS#vTm*>c_j_xT2z<7i7FlI z$G5q@y3eVYptuHfmt$8ppEl2TS(pTqd-d?%JAUSwcL!z+fF`}Z%J*Nv3=OJLs`Z$J zUSc$(Ey8MLP+|+QR)^Ewbi@+=ko&s@@Q2Lq9ri8Dz#PH#%0oSWG@bG1uv-VD$D+&B z9JTPEOX{>$gl>@tyR$-$=s+pW^dYa$)4K4W?!-~Xni2+8J=8GeiLmf>jV6^`0>%zP zA}FT)=vT!$!h?vMFE@hwZ_$I&;*H2I@4c0aP>_`x_XOi#Te_i0ktR9IR`OF@&R+mheN?Un|vck=Y+^5jtjvvK9A~{69s>Z8w+dDrOa+12FH!Qj1x%x>! zGBaQS9Mz!zeH)`G*rC@XMZS)uxnhK)@6lPdOsJH4XEOAy?k$;++6C=C4S*Cdnc7M! z+M97f8l{o8f7?_(XQ0JCcf?Qc-ID z2ajXi&Rt_uY5pR@REsXYc3#N0c(u{MgD}UOleix95WPIB4*hZF&h=3 zx!G0hc9ci${|R;FVHY#}hK#?J+V%PL-7XXmlrm=nb|Y+fW6DZ0HgX$z2bQWT@qlgA zE7>uy*{D{m2N0nHueC$FgDc;>m7^Q1K1HMg5H~jox@VBmyWU}eM6;pk1glhT>$Bqy zf8x?Zj=XpqYi#0ey~%-~qm{On5|JA<^zfwe0UF6kYT#~iD^;Xrbt$dA!EI>4fCDl9 zQXOq><~t~yL@b76>)qMOo3oR*ELrcrd-L|2pFV#2_z??Wo?}pZ{v$-rj$g0<<|m7u ze)7{F9e?}$$3K7k^dpwXKI-6Rv-jwP^w*d!&w1W^^7<=&)R$#5&v;z`zx?9#?Mr@h z33I%Iny;RI#~Yg8J$T2Wm!DiX*UdJ4qN~g$T!HB;FP6Wqj?<<5 z%rk$OriC6)kBJIA-sR2P;Q58;tLvkOpwYk1feBp2W{kb)nKIic!dSwP8I1_NxA`tZ zpEjXGZ6kfC%H0C^LuK|3_ZDWL2dKwrPQbZ}m=j68h1}&IPfe|R-1ERIpYT;BB`8ie zw3+VvoD)taG7es~l=3k&{!9cgT}PPhdlBW zx_8|33C!z0E9QnG8hP&v*s;ZPIS9GVJuGgW*5jQ1>4Vd`&rGt6p_*k3leJ{)$f+Vi zJ||4*{p2Uyq)|94;w6eGsFsrSnT^UL-GZ?AeB$Nk5tKej?ox^-+*lTZW_C{KH6Rz` z-k#7i<&lWS7OB}v*;oddmxd4Ux;?GPYb#~*Tx8HrI*n`1o#KmF^#Gu|Y?9gTgvn1ZEGFr?5z;!-1o5?3|-qB)?VMLjK>DRCxV#^VSM z%f3q6Eh4$6V^2k=+*HBxfY!5G*<{cIqyKLCmiR=uj8ClUEu%3xfkU*PMIduof|^Tk zluAiFOox3SPXz1^%?5p@=0%%ImPU ztqr)7pZSp?t7_JFMKZ6rqaFpFOl%|7KxxDW1yeVB{F5pmI%{b>*2To{m=u(dVgjeKapUktkTadPdFhbf{89+O~0vuVsv}- zxn<1eMB1ztl>`>V#MD-SU{e|1w!cAy>WI}=cIgf=I(&3s8JVolppwkL&RPat%Dwwf z@;kt%JYc-%w+175&iiarXB+ap{wDARKO%e0Zva2wLE)Lm9zV|2lM~RRhewYAyF5Q--ANiAKl|k4pZwLcAAR=p zX><8{KSm=6GZ(DBF7 zb#=t2e6RSaBR=cP+XPK!yt0eDP0hLbalY)C5B^RXSY*>j@2+{c%$m06V07r3eE)@m z+?U|Q?0WbTgIDh^?q6R#y#MsE?{#M-oGXHSnfI38Oj${o?xjr1lBHcw%d>{KS#Q={{b-l9mVCH%SVXc~KU9=#d`hb*JPW^Km&>hPvTIjUUL@Lu{tAmM?dagQx z;w&Ge@gD}ddJ~FUi{JsZZV6S_(=bwM%0|Aj6+*V74y;nDTb0yfFR)5FtBqh}#0*o} z`U8KXO#Z|2%Gf)b6BpNxLDT&jV!PG6m}_*Q#`#cUl^T3c4%AY#5P5cSP&qrDJ+iQj zl+8NQ7r1+`X(JIoRiBn118)jxO;JmO&>W$%jQJqE1P^;pI4$+20Y)W^`hSQ=*H<2e z=hbPumfac`Mnl&HH6nSidYft_U}ZU8c3{TC=EmTS0I975COD%Ts_BEzUq!<~P105> zuVBP?^z>5_wGrb@bKQ%NSlC?ILsYvSL?1$Ns36!zwr+-(N@IkQ38oRG`;d#1`B3ov zi`?#D=+5Y^6_1+bhiOVft%;d{_VFuHx3(<=2dJ*#!*EARH>n08`>A@<$MvC+QC2u0 zG%!(u7%Kx1C<#@HOwDN*v~b)hV~*#MnB+U zkneKlk*{BKmDMl5=8H>tm$F^JH;-{+;>nXo&!0Ueptt+YC= zyf$*;>Fk7S$Us4bdvwD^Fkj0^bd)*&#L_ka1ulLo;>EhNmCqmU^Ntq^Of=0$v%c+FkU*pN58T{p7N=R* zAZ|egSMfK;&h#zu^MZ_b-5TerI?Tw{8fBB0>kYd zVTr2%0zQg4M3!J~JViG~ybYnuV1`zZ#1Y*^WUn`o9~CI$lR{Xg^ZH&D1^lPvGAIt) zkXC!vi{?&AW{ED&J#wKyo!LX^gchO+NTjNnG`~^5$;gG6V5Y%cs=8%!(4Yke?%}{k z1DQ-4Fgx;=3hGO8JAQ+eaOT+~mR#$IVR!xoQ041M3#KgE8MuR9!WXN{xlzY3j z7k)=B17U)~QTs5(zBJ47q`}IIaF|8%K4F=rh<|4W|I9YsX>Q&tLnv5z5t{5Q`I-_o z7?M$GFCed(G+e!mk$8-t{bj~ev_QX5A6t>$m>|K$Yezc(!So%qjz%^*z(#VuDVnKY z+d~f|R}>x0iJmjUgDXxeu=;OYjHmb;pCu=l>?7t`t(K(C{1z)Q-&lh=I_4Qi`~baa z2{jQm%tQgPBr0}oO5F#FE2#FBWYf_jPj|4%i$e!w=uM;?|Oq-5%nw>Mu<>!fpi{|KBceIM`xzgHK$ zQ4Y6=FmHIqXCuF);iR-vTK~}7y9Mxv&hQ=nEy{qCR}RY@ejJ}Y3UfXBR{sJ#0 z#a2wi(jU(x`X;Jin>(h@xi3ysfF^}H;;AZ+W+?M{VCDG>PBsI8e2IwH)=&y}a8Cz7 z9DM6}p{>4i3&ahr^3XT=_rPIAe#~{~Ro;le=Va^sklR(V zWXd?y*Z4L=X`kyJEq0DwqWCHfV3Q)l!hV?47e#tlZWmD`Wa-+jQ3gBg5rf}_guDoo zNIsF}p%Y75rD1FRe4B`(%U9p7lkwV_`)mQ`q!YqN7~0xNQ(ZK%q{MX{-h z;ETDAD)UxWDCQ!qv9S^CRYd2b_JDm(Gq@Z}? zkk+bPMjQzfpscFW2s0LHOBHhx4?<6rgyyX5b+1>eh18+ZH`<2ev~5%jPe&ncr?KQ3 zI4#FSgGCe=z1_iSUmbbr(0>Pd&Av_FZ&5aM9=4bS;rOs__a7j6bKd%ff2@AX3b%m~+8S_f!pG^ZeaeIAs&kIS*~0G>2>|<*08pDZ|A3&C~889fQi;) z09^~zgyPl;Y2c|ZH$Ob1j*LS27cWY*SljZGMW?yLU{2H~S<@TlC`o-3Ah8hfedX_b z>U+flcNeIFf#`9}ZRH2|A3u8d^vTil=Z|^t%l64r-g^%HJolWnz15% ztw2gaAVbwg6Qi*5K@M?b1wclrRHFakH+Ku*51->Z3%4c%9(dd+?9*4hVs`d|Cr96S znfc0zgEANW9?p6sTQ6XHv;L5({pS4TcUs;)Wz2FS+o9&eL5Kcn1vN%$r~$Ktl39nLOb! z5N#y`a}x047}>1x<1Nq0b5%tnmu#Nk__z@FgOBp`n4b&uE~U``RZnWG!9vln{}x&6 zub(cyz}v)_(?EJCOR~!QjM3AA`dv1Fpoc*rOy|)Og1*h|syl6uM4EYHqT&LGP`9w2 z+F-$npAn3ya@$Uf!@4<;7!Ih$9V<)RJuES6mA0poqy=gN$as^3m_R0y1!T+@!7W@0 zJzyinrsKx}*+Ryu4<8C!dXTg*G7yH67CP5F_oKi~lJu}#1X^cHDLxgrpfRFuQfwJg zz7yI-Zwiu8xseBmfArE(;i!(&G|h5)eDfTZW6pN{HN?~-vId#i$q;I1R#cLu(*Ttc zgqwb4(Up|vT4)5+2?{bTv1Ao}CG%a}^ji8p11zIRuR2_ox3uhU7=g0S)K0Xi(~qb5lIxTLNXLZ zaYCjOcMQ{%CeL0|SzBnaqBE6c8i-*VlNY-ML2GrFaORz?g+! z$v8+ujRdSOdXx2?nnKnGFU9qHn}o)6D2V|Kr!*a&RDe5B$)SeCJoIL!K$EgruQMX} z=X+JnfFjyR{)fi}v>}r*BZzn^Go93kvv}|Up+eUrzz9}r@ikD4A0u zWWW)}X&tl`aI+e_~4b3M9xpj>EOJY7focsQ7H@icv2rc;_R6<1tCbP zJQL~xM^imYG>N}$?P!HUVrhwnon9ZvizB=(%&RB9qS*(roY@g(WzBUU!;EoeDw6@1 zwY-P=+0&!0d)e~QU#|CRm81nX zGl{pUbur&#hHf&-RB`Vjj`Bva)zg|Kiqoltm#~B~;L7S=BufSX@#>j{D78|7 z54ycu0DsW*-htn)40vF!gR@iWe%qtE6fO!qnmrmJWH#_fck$_A+{?~zE5O*zFX<)9|uKdkR*NseHsW8+UXll(?s@g|0wK(5pUh zRY9PdG&jb7cxCfhm3pCd0~Romv>nf5Dpx`Zgp1>zG!07!A~8NsOHu{QOC)U4u{mec zH7;>eicjWk=|b^L8WIeS2(UlMquxus3U?c@QD@}1;!Y_(GFs={?q|{e-=qzM4_YQ& z=>wN64$SmV7*q))?eW578Ll~NFGQy4QbzF=X(dYtjsobG9w@Oa?JY$&cI(NfRSuju zql_u0V@5R2B@(Ovp34&xVTbm_4h#xdpVc5^eZl2?9Y=Q8O%-OS5 z)PX3nr^CHwRFGnoS{q(XMouU$0LQtp92rOkUyI{QosYDKqOj~(0c(_9(d4M@zw|oP zLrs;K!@vB|LSR|kJUIkkKh%ms0IQkc;zi6TVu?kk3c%bz$bahDNYvGlwJwPQdZ}%u z-s-@P??Y2#Ng^vIp(iDTufMmfG*WVNNPe8uXZ^3k4OCanf!bBRkP?9{S;p4B zZ5rVD+DHXU21;A_kT7whAdpvjGUsSV^#F<~V=HQ-umi!VO+ra~BA)Xw(8r6IzTzv8 zuC86^Uf(-8cLB^L0yw7^xeM+u?p#|(J?S_*<)?eN?d??L!9?L$^LvB2!{Vo_V!l4a zw~dnImaUc|6-z5eeq^InbCIAeDP%=c>;m3IOc*TGomu*wqu1AuAM$lnc{~d^IzrYI zE;Igh+=EV3jOcbJsh$NOXP!zo*F6A|I}d69m>^wsW8l6!MK%W%W zy25(oqSvRs+*a||Fr7D)B&!(a1l-U1KIXH&N6((Q0Omc7f*>dqlfa_dO-^NM)I!Ou4I*)k<~6leZ`TNW+o zXlIR}1~?+$%O`=E!!m&~eIUs>5k?oNE-#q?R*`#oSxhjPxq<5BnI80}*MCSo2g4)#(&!1gj-}hNGDfOITr08?=kv#fz znuS?Dw$hlB)J(db6D-inG7-rOX95t?@@4@toQ6qpxm7`cQm#yUAS%Hd<)GmnMi+aM zP;iKPP#=~>CCaY)s&D(`v#sTPB+=8#W;>xKQJPp6;~N`YR-7^Y^##WB7E~j-6EU&tCe>x#NAkN zgo|O&jFV;MKk|i{ zoS|sqhw47~rCA-eSqck1d#7U7gJ+&Oy}AZg((V|=O|a16dDPMYoT@$PDjGXz@{LHi z{r|A{Ze4QZSb8Nd5e#Nlb+y)L>Hq)1nbulTRq{^G-ur`j1X-mSJt*1nK!k@maB%Jb zjsXTU^N*iCe)#xFDRv2d7vS?hT3vU`#fx{1Stl-}#cb+UR4bTC>xF=jgF*_q8Tm1~cWBm}`lwP~iDc}+q=K(B06#?cSu%xRvg zUzmdc5C-mQEnylbT6TS3xgSBE)$Z)uWpHW06mIYV_i z$Tckxu8Ae8x-{XNu~_}SdGnfQhIuxa4PmZg?8BD6Q?zrzTovK)+FfBZ#sjEB{6Q;& z)Mdi4boO)1I2Bma9Zja$b<}Apo~y-`>Lk7PGt#dG@Xzq_FB#9o0}FCfrf~YhIAg4v zZgHsrc_s&jfd$bmeom1jNnb=8uAQ8iw&^V~CQSJAbENqkq1|~@St~ngJek@ie z8#2U(EuP1vSW!SC5-E83BLJL(79r%a@s%X%#RD%^cVkPh^7Fe>|lJu1% zA=tWgZ%Z~~eM3S~`hUtlN^nRQjy=L24s!-#5~z|<>2RS2w9=_u3p0+X5Id1amRghG zwrNWm3gTZ>X%!Mb(XPDT^?{hKrdrt}C81w8Ae=?La_GxR4v(y&Oj7R6#zXpsyxK;Kl7`-3Vi2T4)ul~{Bjj- zCR5^CjKmIzjGnMYgT&d=4m6S=@%UE?umJaWcc0(9i9v^SgP4g)JZ0J>LiRMJZ$hFb zS+BjeebSK;Pi{W$G1M_w|FpR)4?lXk%e+O+c;1dva1^MmTTY7dRs^iOIcK>C&;GSD z9sl;*eGC=)q1P949W0K(ed!IB>z>HKs2eM+35fo~4PSZul|NU1jv5QoAeF`G!`Cqh z84_NJoR^t`94q8!k`Yu~U1Ji+OP<~JMTiat!Ih||1(vJl4bN}i{Kn(HJnQ>#$MO}0 zL0fDTpOhRu(ua}=9!V-r3wS#4X+ACPJzTHeKCt@z!ZMiMV3)z4d{cBpW2s$e>MsYw z!|MRfJvqDNQc9xP>Gx#8s5DqKfQ^LLP9ymikXprfc4^uW-z>rq!BulYj7!b< z5Gz_+e0k|Usv!a?Zmr3cH%$_a%(1U)F!4HM{5h)`uGGW3R=AA%l|45~KGXa11v|0u z-?Da^a2?l>R$yD8fl3zJA7=j+O}uW`(y=KnJkRbiJb4TMp1kdpMHTW<4CZRe@~Pzz z6GWdJE#*lBH~~i%I6P`>h)a*@Oeh7=?*YE_eG4VH`sae2%c@)^kbjO*BEH5!e8T~E zwP<$%k2q-b3h^7C+_`De^UO}rz^8@`4NJqwCkQ|?L-2U4u~z*pD;W$ye%q{4Su4-l z!G>5m<)>_=JN5E-qKrI+oHu)qgXNZ^RV7y}329R<>2o}?E<;8#Ajix}id(_@)U4uc7l&uxe;Z)G7y z(v0bMn3olj*aTBrxKNa=CU4&|v$j{e*cYiSnL$j!UYY7>EnkY8V1$4yC9OH9p$4d7Ch${%1*rc|3w!6yFs+z++V~XOka{uk}iL~r&?G~5rKh+=z z4811u^+5Tl2LJM&G9JOP?lI|h1HC=LC5Q8gjzx_0~)hHGyAHB8) zeY8wEohsz!(5u=`AT*Ja8sb&2)2XhZ9A4fqI|SW-l0BdHKMa8}Mgjzd{$r=!dCcNSe$KGfw4iz_VDd0)~O$R}ZsOd1) z)XAJ2FH9m@Rw`@Vz9GkpvR?E0l3m1C zE%ofnsZHGZW@Na(JzcFWEHDB?291{3tD&SV!NsPu+dqjb=wz*5+Q#XGB`otl0>NvF z3UC+OK*f+|NYOwK_rBrzuYY;qCC_aCvhH=7<~h0Xn~yY-ltd+{7`*x?OHFet-U< zF;&zdOV=^3Qb3T3id5}0OmL0?<$liL*8=$G`1zNVXXJrKXtC^jrHTxI3=#V>gskkv z@~{mtkF{5>;1BMnMJCT*B?yIx5d)(p((NXo~ z@)e4BqPX94&bS@^@)UhVOOZKUYoDBQI*g_El5~YLvoy3m*Gysg`FD7xupFjXewJm5 zodeZ31S+iLf9y{-D^l`EIs8RCR+1}4sutg;vHTwP$ovO5h8_Hv+nPBq%}$?zL|1UB zV#Fw>^G=J;e3+Or1<0%h@Llae0ZD)6{>Mjofy7}HXR3GOa9ia%vnU~gbDy_G(}au) z*rk;d58v8BWeD!~a5`trEPMODoqv`*qa(UCmg;GBmz4Bi1FJik$F{a?0-ir*4w(XH7T*h(=a4`~y}lUgVTr8Ni0x3d z^*AGqs4tqOpNFGpi^QCJBajRFIvB7@!;Vi5dsIu!!(UTOD)qD`-HiITYVt~wjWjoS z3O>TsO#%Gr1-=-MRZF5`w0zYEXj1|g?+i~`%3#WHO3EZX&5}ol4Rg4Z!b-CYrbsfZWhd2hmq)B zy1uFLG&2c<%!5GCa@LPS?tRq8`eT3!4(D==Ivb*{&#LLHEGN6so2^dC4GZg>>B>qH zwk+fTbK4TbavgOZ&})sInzs9s0T@Q9P?h-@lqs`eB$)Ee*Tbu*23c!-=Q=+tUVkHs zy$UWFlVL`P#*(r-%i~Ax`g+f^5BmP~uWxzccegIDY0y~`zf$!0;u4}xtE%ECV1D@O z*!4)4)5!mZ#BcELs>OLc*Gh~8y4sI=3V(|GV*(MBMff_u)iIrEZ_8!KLZSmkh@ z)PN--9}()b*8aToYXSW8eEmz(f4T>X2WY`)W9~-mJF`P~6b;wTC(JM^TSD|)u4DOx z4Ceg37t!n7Mnd;08NNoLvu{a|a2_gWZwz)ck0Xaa9z4EqY1u8p3x%P+o;kXxE#Z#H)vtSbKdAp(+aP=T7bg5wDG_TSc8sx%c#LMBKYzj>hOcAqSAr(`d(9P{N&7kV z9!A9v+Mb`qDM9GXOKl{*dEj0wcoKE_xW?AMoW#=>CC{eGz5ucDfQwMr z*6fnUl!3!+5uro|(iJZr>4G=}scOXw{|63ONY{iXv=hM*ZbGJOVPcLsl-M zK#;dV0kn&><%9@1a38_fmpn1f{b%cYK=QA6_B|7HH(%V;|4+`KKN{pXJcC&;yno|T zvteWfg{*9pc*GVKxX8KJnGU&zgV6EGh;a&p2I>I%)PsI4 zHTHJZI&vDQTi(ULenVAXhSVt0H3@Z)n+$13NyuGI?vid4tXnBXb+zcQ)v%Gut~@Bj zrTCPY39)J77vUUt`3!Xw2P2V> z#^fVP8iJ`Gl`%^bY!Qxnjw*4@5I!wkIJnoiPqLGm$l^V8Q(!{*jyi}a8Fs0oh$~79 z!#lXnwj*hxtwYA+n$`V!LAuM{C7#U!tcFP%Rbs3i!FtUIf^W7=0jLz=(GT4Ziuyc$ zNb#zl%>fT%l-|#?>7@m=5xVCGZ8q_(5kmbFl6`y~&k9+k9AGoJY%QMjC@R3=xvxPk z%!~2S;6@+YIF9X2%%hYi71Og#;8(BS+%(ain%HAGRWLHy9hc-Hj$b$4%d8Axq&Y%+ z?M1pEmXO8j(Oohd_lbDqdVF}v!M{rNxXi6oG;==Xoj7Yei5j^~C78LP!->*k@9Mn3 z1rHFoVY*%|M=a)e$i07oBBGhMFkdnp`X+Dyz=>eP6#9J%Ftaj)vwVSxbuSygyiUxA ze&NE4$50Io46|s-jRdTFf8%cF-}bw{cNAHdx@+Q%9x4!TkMl&L_45-AsH5Hha`Tnh z{rh#i#2E}FX9W)7=4$Q?VypS%#|PeU_Q(5ngFmtx?2JrtQoA48 z?!PGUXbeTtjg|`Nh@wFq_G5Q=TG^C8Dh^vqL`4-JC=AL(Wlt|Yslw8(7ylKQd4JYH zBfRto4osjj4oVag*D{MDR1(BgowTKknlNi^)#pOGN_eD9Q*iQxQ|`j)QYdf|L=f)W zKyeILQe zE(n+uNs{mn{*@Gw@-eZ>;p53lmO-_!HWnh+ z6()UBs~m>yJHC$piKRv+9t<&$*x%=5t+{?vlWr7T?fOSnd~4%%5rcOt=MoK*eqW*q zR=D{oa9Ev6IHIjpli>(HRFaaE5G6)$0-9~B<+#d2Kb#SAbfV~$39^1D78(yfI8!}+ z66FEB;N)Un_0!t&Q`Y7Kzxi^ysSN4T&Dx0;d@PLb92D&i%9_ZTd#pO#@JiAAi^jn6ZBA?;o&$hf1#fJrMAi^kNRrwWt-NWnq{9Dr+>$0j2}5zzBriI z|COImKVp}glpO`!ym$kBM_XZ4gFmfBF&gM5puV+!@U-W4(n!p@v)t@BVcv)@`+*V? zJ9&t5X{8kYD?Umrw*vwm;c|VfJ2Ldl#qNNRz;hr7>7JCkx4YOXkoB<3MV6MtG9Pnm zR)Ie2s9p1)Ld`db_>8im&4gs04POJTQDntZ7-sZc{AP!zUZ9Gpu>Z%(au!66B&TY{iObpfW4ezJzDiq?f-=I5qg3*evY?_bjXQ$4`L9>(P+>JH2+x%bF# zxH;)_R>rtwKF^?K0l-iN%Mn|07T+EwKx^4AWnua48;`plG|%_YZaw?;c4<8m= z&~!@|ciud`8HzXp_jP{m!dc`xA876mb3xPJ`g4C6S8&=O-%|F)hYuPyT9oOhh*6A1 zxTgRaK}*I7lt$C!{Kcvg@=hqf(oIS(^Uh zTuCiytn_U0#%{g0>I@&uPwY$k3T_icUFoSyp{8;WD%K^TjjGq!XRZYSfCAl);#UMk z=qLw@mq3He08 zrM4KCx}f-W(SiXSRK#R+kifJh1Rib2Xs!&A#^oo!i7m8dV3mz6hnQ57g*}KX_hz-& z4#q6e86D$Gku@=2)SPs~hSh-6Q0p}OLVH4RgoZyUB7qPxHa6&Iu}V<`aEw5Krv)HZ zWXvjotV;E@LCZmr@tJjTF^1*hH?}6$jv(53bEf?4jF%dRREf&Z9;bE=mep}glA?q` z>SwLVHx1}?KP+kvb~!3+fr z6IODRkx9rg>39`V_p%f?OEnQ(SJ)ae61}_ZSfWhv(61QH17?q=_M6pdPWWWtA$S>? z*B$hfr@YxHPgR|ym7dE{JLcK-iA%3^%}Bc;%3E<6FymJ|u;J*CIINqD*=d&*;-qhF zY29P4;vk2eP(Sr4+)DZSuO`Y-UsZM5%gHjoB@~Dm1DNkrtWAdiX028@@C9a<4G0?H z3#QrSm45aGXHJD8ahF9n1A znTKBs;6Ky5zj!}C4;Y)SLFdm0Sfon6v6Ux8 zM%AFlzKTyQ1jU7PlXrzEg|mXU+s0rM!~A2rs1*n{jO?8_0upi)osAUbd4r}aFd&kZ z^vbBlG$uf9QbfMkN^x=H`=pCReV$;FM}`{CbCbu>W<>l^02B%tGB3$hT~@Df&NBdR z3LgYPT@;`!*DF~)4ml_FgS2|5+fne$%IT{#rLW$GIGAIiuP5eo3Q9*XD%~nCl&VCrMx75bt;uQ`fC$n>VDYe3 z4dcwgr#?Y-Nf%Ts-pG&sXg=(VWqi~5u%-{4zV4+!R;=*?U8UyHv<+RcijO3mrs0<- z@vmr3KTWd&Vdz}!whtGpyO!ILyS4y)kRt45`|d5!4ch(GFyqr~Kv7dcA3 zV^%C@mC?puo;t6d<~o#dB&+a*FC~Kl6%zs3xrzj`jq@bQ?;-@OHCH{#+8dV?r<@d0 zRD?eD098f034fNXGDDH?Y?O2L;fy@GBT+VwRp}(DOi*HrWb=zcf}dBaVIN(W>X%>V z3zY|a6=qvTT!w})ryT!1B0-CbE{o8c4a^g%;2)U8J-?5|jeD4nvZ1T$ zsd-VXMXzSM$Y)M<9H!{Ow3VmNRJqKIn-!`Wk=9mD`D~w@xC?wDZmP!n;&|1{?P>Lq zahc~a7`~3Cad_6KliOcNw_v{wDe1G@y(??#)xQSM+#;TP~%R8nuMu7GtrmU=7 z7IRH%It%ctY&ieSujL>Y&!T`n?XV`r{bJ5Wc z7aDsk88Ke*Cw#K=(eE31*D*_97Qn22dHT0|s?_Q_QPkUVmdtU4ADdD4Gn7(Q^-svr zQ}rt|!(HwmhFU&EaYXaWq#1iE=dK5Xef;>29S$B6X48bprdz?jEE;?#YjYU!=v?Ji zA|tF|oecdjJfqcy}s6h&gIyl@l)8&GmXMFa}nm8N& zx?%Xs7j{{jN*f-Gckbni>hc32h1$oVN-Rcmo?GS;+oZtx%;csy1fRI0Rqf!|zPCHQ zYI2Vbu7FXOXLoaeIzvDJ06+jqL_t)6k?5m81Gt1rFl(RP;ql*dMK7RCxV*CR( zPb_;vAm+XDH)Fy4@Zmk0uxU-L3K#_q)X)Nf9EFyj=2!tvA>P}YNh5SIkDpxvO9)Z4B}M!sn4fqx!t1H)gZJ9gdDg8@d8KQO@^#r7e%JP726m z(4Pc1kc-i_4(b`$@qbg&U1n==>L!)y69w!a^3(R z8caYISVDbQv8q=}ZH-A^k@Y_|3IpSi&!V3C*1%onv16VcU2LECu#r5jhSD)of)6mx zx8mT0x*43Q1VV;djwFh=23>J#KCfe^T|4Hs5AF51n157GQ;sVRMt3C;XkxWi){Ks7 zA$eba`@u^dSCSsCGS*8TWz20A@#>lnC1*4XBLmxXPAce12^&M8M*-N##r_z-Ap*Lk zFeXan?GZ{ zxQN3MAtVd2_4b0CNPXaJq)H;iMhBTg5_>t403KO+Rc<&74rmye^E0GR=$@?|VH{za z4b~%vn;dL|iAs%G28903aObF-u_*rB;}5n5gbZUdDj~`=sjY83LxJ5iH$qHwO%oev zH8O^Z1Htyvjrau!Uli@Mk*9!cCtcZv88^Nljsz+`DTa)Y6Joop9GQoZj8ZbRq+G|dPIiL_pG!=DT@zN*G6#ckZ#&* z^MM_1HXOW8`^_u~AjvI}Qvb*%j`6gIM*+2L9&2vJ3wEnKI4XK%9w%G$YCFfp*)Rcu zNhshafp|{#?%~DTx6T@Xzqx<;_TkmU*7$L-}rgKN*D(8KxR)M5T7~C z`<|>jZhn6KiZFNQc}@LDn3d_Qd%6Ah!@Ccl;(6{0Zs@u6ef#k8?LARY?5vWKf7ZR6 zoHNX(U|tZ-J}^%Rb7Xdg zQAWva>oC zkx7g{8$;ynrd))YiUJLF4%IeSW)9}+jwvSb52Q_x4MHvCTz)W_VNrxc7cdtqlt6VO zk&I2vkqGI_56^tob6f~xJNty$qo?0ylGT(FcfusrOC5H3f z5T58NRr+VousmuC(iB=xxH>}4Ox8Jw9Fq$}fPIJ0q)z(DQ+Fvd0{K5l6j9OkE?I0D zNog8QCE$2+oT(ZUig?`le$s(v!)_)A#oi+c&4Y}~S5d9gp67nyj8F-3-3>t!+nq#j zR48Z^^Q_3&{8tAV~mtQ$^&LV;yBykLXpw1QKGQ) z3r#14IvvD3yqIcBwkdU*gV{%f{11Q66LyEJC2#TkgOmcHBO^_3iVeW=5*Mw^Ossyr zd`E*y;MD@~z?26H&M>l>8RgLcTW!{GPc7^soJ8vs>F8J{1*Ewp;3@%od%NHnt}=RH z$kyLTo==8W%OW)LTdSYwnaNKf)Q5h#_o5xt%4%}zWu#_5;d#J0>_Um_jn^ZT+<~e| zO>?V^t&DHH#j!;%n#=)zn2*pP_T&q5jFYr3o3s&}@go*ph)?(E)#T4k zzZSrMwugW5e?}g7czEN6A$yoba5Qt!mW+w5(ApPu6a(2lBtwUAAi)3QhYuX*5TsxW$N;zqOGYOBQT6SE!H$cEnB)e!$%PP{ z#|PHqgSu|@Zcj2r$%8|pL@0+Xi6S0OsGF{MNe6TxfZDDa@UyfgGywtTv?E1HYzp17 zL={N^H8d+dJJO%p4PK;|WR1t1JCFvZHgOT?ZE?OLjCu8n$V7rRbu@^o}a0cJG zc?9#7Tt=^4`eJ40g8eB8B1sw-FyTDzGw{m?Sf(yiOJjcWJ)QT_vc-U3MUSG9c z)p493nXY`;L=R+Xa)-)MxC|aW2mA*7@%yCYZ{ zaZAPL6Ns#m;?*5P?Ax1%m#>@4fGuDCxxWAU)%_c8f-6{ld->sm_d<^uE`sytZekt0sByyJ?Zi}o(9!3W&9sic8gBedp9$2i+!peiNwxnfC; za0cX44`BVFNG(k@PwG7*kxr}fB}=820iWWb5f2mIdc!$y>bn2<`xkbD-?`JMUObN^Nz$l-;-VKPCNI0RI#>{}S>{JaESN zqc#n423vvVjJj+17ZMtpj7oPGnbJ79xTvAE!rD(qC+XS+Qx?^B-K3Lf>d#!B^Xy5 z6}a4#LZnwIA!wx?aFVkm7UX~Btpdb3fGLkl$`>y`ef6i0RF*q}xWUC)mtizh`9`d( zKRKkNdhmB88I}fMwW$o0;(QYs>t~XDI(Lw1_Ljnc;Kkfh8g+JNU7~m+5sM^b%>>OM zQ5p>%F^3w64b}`-U28c0kdivdlafI{ASux6umj8doY)>U`~h-fa1>7EF#uwUrz+`H z9fHDqXbVow!4wKxP-%r5Nf5ka%K#LI#rD-wQ-k9n>9PePzyi7cCQtf^vXVO{@F9i6 z2|u=J0%U0jkiZ#wiX71mZ9xG3tP-7WAJxuGT-Y7X#)KA{oy_SGGsRBo%YHJ&{&2GE zHFcj2sGFIy8hixcS(ww;=7}*GQSB_36gkw8=zTbn;WIK(`&=?EFnkXI5cMBIEXrC- z>5#{L#SA$F0DC}$zqKRi+C~aNGNs%akjxo)R9Lt74upL~Y4Nd!Zb*N)(W?;Lbi){y zPp@cia*{nHf(=aof3)6z9ONX8y!@Q>T~UXVBn+GK$sc^bE>+FYZ2<_33P>SS6D}zX zlA(-L4poH^6(GikYhV$JLU?LEX9R^0Mk5wH(@p=>)2mKf<+ge;ltk)#Xevv(P%2nG zRm{-ka6yk>kJaI)THlfB%K#ue3JoR+AI1A0f?u4NEDMF#Q*Jk1tF8Z_#xSUp|C4AL zkLPi?jHv1Uzf?N59EVWK6ZLyLpuNn7&{Dr@k@(GakAlURm_dXA_`V5-a2-b()svnu zPDbp*ut+@tQ)S|AT+o=>quV7mt`^{YI1R)Eh<#OsB+B%F5H;I&rdJF6ft+_@Gy(% z(tqn2Z0CINhH&@(-Fqn0&`aC!`Sgih;`XjtFn|2CD2EQYL8EL1pVwibOJlT`>vYgR zcDy|^@KjDa-cWJt4YFtsoJ>2aAvYoM)bacGup$wXN9?)lT6)zCv(D4GRC$ck78|eV z1OgD?GaOQ8gd9mo0Z0{k;uv%g2e*3xlccjzi6a?I5oI4H}-wvAGP<7=SkD-^0E3KaByp z$)3*fw2xsegX{^Qh(#w5Gyfffg2fTe*JyQG78~j8L=yy?_!#Wou zY!}+fbq_uVueF5u@rro5xmceXwy#un8IlT6vl*%!uKw_7%M;b81UpTXq8NRHzSg*w zgN$cE6TbE9(nzZBA4dQ~*}W2Vd; z@o^DWM&%B0v_lYCTa0yHINK>e{uW^cG-TRrJ zG-tSZ^nMT%_y4x;^={|aZ1(>C+n)7hcIk;!$L6rC&}^Nq@mV#;%@#pFrs0lYtl&1h z7?;&MdgFZbgYLqGN6O&}p2;ukCKW_=vZ4-Fw!T7?Q&Fx0IECivW!~Mz?<9Tr@VPfd zvm5Ly!yxnOf}+?yF<^3az_SBBG?>$l#842XCFn<(0)I;SwE+GpZvG|Yd3c~Gu<=~n zOe=r}tH%BhYJzI*=3nHR>l-BusGj{f?Kmy6RLo&0mmKj3ZH73B2!)D7h6EE586jFG6Cf>Ct8JQ)2jJoq!G!X%mUmn{$duw3 zpAI6NG$QFz_GY_tkWLkKl7n@z0QJTtrb#?f#&>Efzz_5nt@#;pAqKGnftsG=w8QfT z09&(3ZA=ctvx`3IC%+Orwq*5>#(IyaeW2UCg_LXvPTgm9eVFhC1P^dcBDQ;%xRY~L z)%AOU7EI1%9XQif6nDEAkzJGWjE-v`d&9hPJW)r{f!K$(SgpfBuH@jRLHu9(nO7D!pFXT z(s-u^2)4@MrTNHH@nm-lq84)UtEwjl;r1ozk`UIsEyUuEF;Ff{IzZ~T9DsPb=;I=R ziGLEw*@=(TLo783;4<<*xhl>9;KJ`DO#c%~=^2mov6UGaTd(H8&+y?t>1rn=OYBtV zg!ok6bIJFJhsw-ry7$NQ=q=2h^F(?C&l%P|O?sp9c>XhIY6IG!w?Hk46}p$e%(GNH z)>NEM^pR0NO+fe_Nb~vkTEOYl4rlsL*Qo@4T%{9P4~$1KFtWVz=$eh-X%A|HxZYq4 zRNUx6yE1ao0LmT*K0v;p3T(|P5e6^vJF|#mOt#DMKH|?rSk}Ns3E>?RY*u!BSOaq# zb7wdB+}Ie|y#845VPoU-2NrI;6pKv-&{^QUdidQ*oSpX4lc`EkoWA^;XMK62C@;Ix zkn3!KKO?%l$_vE|E4p4;`kZ_@%!43lhwNCi7r%o%f5dZ#(nw=`^=faRoF=1KUN ziS=D_U!}i~$d!DSsgpMSS0}NOm*i`S$fNg2!TTm3M9>_t>S5wK__GzP5r#~i?LQCM zoofNQ<%o(Gw}_dK@ik{Eq_;l1l6^_1JUZ}0wi2R>5L zww2O*FY+b%%(L7m%X>)QT|W0O?$x=sTW=3pKXAU{T>kZ> zH>VR{)RYz1sl=UO404_5-2v3XQ$Ed|5w32Za&JynV^^2HP7KCiq19SkkF~7Nnr4Je zPvMVOB`kFg*zYs@_U{3)h;B!f3ix!NdIGa&y7W>3FolS6Qf`!nvwd(xAq;ozL}=gl z1avKc;jn2HB(gGL>tj1ArE@N|aN=w&+f4x|-qESBmmA}Oc{&7Z?Q*k%wpeo<6`#i! zKYHz1*J(?$E6uk%Q^W`c0ey@zM$rLD!1X}u6EE-AD}D0Y&gnvks^%cqg4)=|J4IU|ZvQ)n!4fFcU|KRP-@X$v8eT;t9X3 zQ@WV@M~JGEx=UH4=>zd{Pv;5x6xc^0|sjGeOJC;q9nW679w z=>#O7F!%sPtBWE5t@&RBrvEx&3WGqom^G-ZF4OHH z>84x!tUG-!bE)k(O+EE zts)7h>vG%FqJjGHT?OkR6wO%un-66XiL8IK%V1Mz4c0s z-lK+;f@Th`*{AN(d7XE{RI1wX$8YvBe_&uTm|6Y)@s3%XQA(*`)UFcyf0(b06dwn% z6n1owuXztbO9v*t$ni5!-@6hvta1GK4LuZn_(dZp0L-Mm_*Pg>Y`!JIyWH^O#O^pb zf8z1i0{BmK?l0EQ%>%BZwl&JAq%BED>CdH>c*R*m}uQJNSI*^M@1b4!knl; z3MYk>0fG>LJ3n2)K}2Q|jP@{HNRw$X!?&EhBc#b0PNNpRT52`xQVXe>HgVYz&X2(z zg^l$tdP!VOV}F?7)6xrmgdrAGMxuowII~tUkTb(+`Gh2_HZ(HhRLxYrS`Glj+Ut)+ zA?3w4eo4Tq1L`oHkp=n|%rGLkSZ#06&}fYIyn&F|&jWy!SqPSw;#G-zp_PfADCsZe zaXa+xvq1w{xg?eV@kMe8Z3@qOvLm7H^iU{rPKre4l!X_|;R5BsA5fGCD{8_@5-DNe zvWN3`_@~-0*?i9}Of5VM6EqLwDbM5`DH9;8gK@0U7FGA9Rx<~lb4n{vJz)DxIv92i zX2=4@-$rEpD<6RrgT!Qz5d}c_yj0JTsj}=pB5fo@q;I2>D<}|-v-lM+JD$ro+M9N) z@9QG|vC5g$K5O~e+R{}w+IFY?bcrm0>Uvyo93w<-6M@4R3goX;g(RjO<*-)OmCDDH za(c8SYwhhuq(lZ?*yanBe8M5ZD* zH;M!c-6f|pil%ma#%k8W$kVB+dcfqk4ex3GqWn+({-6Kj??(f*&i+S@<`tdzm~aGX zMqTjQhr(69Fmyqv`sM=uh!zHmn2+3{Ynatzu;)4(mx<|Yp5=9%O)v*?oECzPDu;VY z95vE$iYELRSGPC-`M_kySR~;hO3D%ONEUnh1!?))x5YzDw#tL02(wS1%MN;KEhO~D z#GZ z7yNtvK+?F5-*M|?Dm6A&@kpO8(m`3_f~e?0KBDDdh+E9(eBnfvGlO#kzEgj_>UTswk4QJ0S!XF=_NSR#H6({Ev~F^>@&1G zjqKc!4&X(Qbt|qKO!kd4TH%fJX?nfJp;3I2`J21hI=*CAixDL1m23va6G+5DyVk` zLFD3xSn5KZEbBiZ<^?#~#Fv0)^Zg(H{lBA29(nS8)VtK3$4==2J~bg&{o)3d<>+pp zWk!!PDvCzVfoO0QIHz$&`o|yd-o5|uueprZzdAnhJ++7!>|bFA`xot!NB$WOqiPPT z8{d<;mB;oH2%qn3R$-S^x5v6k{Z0n`i}Mc0^?g`zHfDmu1dndkc-h&{qpM%6VLtL{pH{8|MIuHx4-jK6S^P9OcnW24fZYR z-wjjyFQ)>O_9Kcz$7$E;<;?3zTaW-zzaU5IRxb*4EyRRQm$66^0$QQW)87S9-$7@K|6mak(Sgoi}H!&}9 z((-2lNkPU<{z*8Vy>vJL0l;VM`hr6(*hAVqz)b+*1w0*-_-7w}Er9=Q5C7u-oIJ1q zU|itb;#EN3F63CWg2P6#i-!uXVu}iuz;HU^8G@!uCw?K( z5J5G=UhrauVT7!_P=?Ez)|y<3xR&u|rxw!Oo=sRY5oW!4^*Rl>j8t~ASlDT(m{*#(umJhpX`=6-agq_3-}6g^I2n2TCJK!3 zBwmy1l2x0^gLI=I!%1b0Et%34G};>Ae#RufWXKd4|6CTcl zG2_T{9qQ2yA)?y=lZunyF8Y9kFg7mwiD_g#r*t`(<;PCrD5rxt=plg=@+{dpxMk1t zerk)_$b1koq&Zwhho5JA63!&Kpj4d48*+)SS%0lfGy-3bn;;#3SI&`W*eo9`siqSn61# z88s5dvx$$nN_WPkru3-)7DPzn3>FGTy%+fJN_e{&9YVcDT=sOdrSlyuC)%{D`)&^1y zS88C#UAk#3X#;+@)~!78e&qW|`=gL)b7{5jOQyI`4&_38!uuxWRu}hMZ@Bn;SA8S; zQInOc<}fBu9(;K)j;?A-ry{aP3E}0G^ww?qq;rgM^}5TZ$=dN9G|oQmjBg+AnS{7$ zOrB~;J!LUN;YK!|Wqo-4`|o#u{o9+r{@dN}f4$=tXmL2p@ph}PJc{K4*ii0A3;a@5 zFIRCAlmoXuGplLU=Q16|l*FPrgVHt|Y*{&k1B!VnfHDl@?qo6Rp>5?U3(<2YYXSUo{QOJGv+%&yV~j5*E%d%hJ4{C^m?Y3A~;k* z#d{Xv*=K}&6_`XKIyFCQ?3{c0FeBq5QO<+q68=}l#} zla~Wv3(jnjzs;_7Ji!Ad_3%eLRoD_$8(7ekP^NujrPG$aV9cX$zy`umD`=Q?t8Bv> zq)zkoG`HM6IoK5u0pm@9U-7_9NpI8*a=GgaTr;-}LH?e;&J>C&%mZ>xit?7ZoCUh~ zj!&3cagE~(VoYf3JqTz(0W4XfpC>Q-G@cpxvBlG(x9$U+&SdPv_l_664H>pz{4+~V z1zcw23mc!-v4KkFaU_ORj~`s`4HtL#d$ai@5^`RQz*5pvOD&e1K;V4)?^^iGX_&p> z8(Y&ki7AY7ObdKW*@+J}%OiGZgA#n<)89}ajF#spTUqP{u29+W1i=8`H|bSwK5{bF6~ z=nsQ5cVYMF29?7Nea$>v0fI8tuV&e;&qta=eO`}*IOe8+iSwt8(swGuis>2_;aa^L zN_JkeLKSeq4>L{fs3$pDcnK)+)@jC+)llc+{=stRmwbUTponcpXsC(-K36=6D4$!q zHhq*f(TaECDk1=VPP@b?pxq~K<1BWF$g*{yIxPT~b!b`HbCA%--bfW^2Cf_`OUKzf zwoqx>a#Wbsd4w85rJNS24{P+HnN}PnnNHSdJ4iRgp+ARXnx*2==9r?of%`f>8RQ^d z1)3BbT>cd4Db6iFgf;SwKedWD(hjZ+1%3}bmH*4H@%dhj?_gAoqoGCq;?k)(CQi;F ze9z+sHuJxk#$nR(&#^`RPq=?ydcymn|GvwBZug_#vUsW+(i3kVuDP}Y%%(0K+gDn> z`ugELQ?fd?z43Brqv_%8-QWKG{@?!n&AZTGzeAR}`yYO_L-m!&wCDxZe@ZWwyQ&4!p?x1Q#Y7 zksZjN`1NZ6{3km17whNdfh|I~Io8v5k&kiARu=;?fciG74UXH_nhBn{TOO}yylcEJ zvYdjG5*Gl)lZJOYU|@FMcZmXKvgF2Y*&wWtiD|xasRRcW7;NfM0>NNbJd!i<&p@GU zR%LA8l34uvWi!b5WcJ;&N?Al z{4{P^<2=%(J|rx0fuNnI32zQpZD{4j*x^B!j!wX3 zh325Z8COshLPcltBPf1SD};BpkTWujy|(!oDgJO(hB3c;c{GGKv5pK@Mk8 zc%G-?fp}K*Ug&3)PSc)Np4(9$BULk>A8((0t|wmu9vAM*9ut|Bhi|hO8!iC=`KIwL zi=q&TNMS0{N^p2ZnHo@k5;ZJkt&eP#M^6RXVpi3WkrE#O86vhy%TvI~Hr*Abm<@!o z#}M*k+j7fgk6pA8ESG`-f)+x(-=g`B)0yE&Zf7UOmT3;;+7qo{_f3w|wCt8<=qV=a zSV9G9qf~lPV0jVdhY(^Wd*_L1qP(Rs38*{in9FNR(=lNxN$nGw0JAae66B~NB^r2R2NoTFqbe=qWdW=vO2H>|;W1`O@fr#1fz7iW)4D*bvYd3ar zp>S_=ySPC_-r4{rUq1W#1|Ugy4aqH7#4PrB;q!@KRre8>&#rjM`CO~f>CWd~?;d>O z_Zv?IW5QJ89nSE1``cS=LfA1SFk(G21zwnE`(~Yf2 zwgf@O6wV>Peftf3s$j)$|L(!gR!5+CtrR8Sz54?xSel-^@UYh}!{18-yqwTygNt&8 zR9Yh+w!~#c-9p{xd*$~U&G9qh;D&DeK0QU3>%NYQz~#;@?S%4a%asCtgU-F*!s^*w zM;r+OasZE1t3bthAhogPHJY>Mjj==E2o-&RlLfzfPoCFKqAI)Ah~DakmkoIj@M1)1iw3%X*FqqITfUW`J;GnMV2en(!dqP&xo z1wF0CQAX8qFxEkYEq-RKWa)A>ZOA}$2@MK3GZ3D03>s($l}2En&V|KV7E9|x*PR*D z*)ATAUutuRbgCcf5Z18Kr2YY^_|;s|AX)(z&Io}(of1+Qz7_VoQYKz1(Xw8pA*Ac9 zr&X6l!?X%hF#6Ni7ax7B@!P}eZ@l`KLHRgRz{U1LsqBj}^zqwku7$(XF~c(9 zC3}fq?s!;Aw<=F>j%IE=^r>_~{9Zn=r3h;UE8u_#bpH7DC96Wr{O#^rt3TPxd(mn9pefeY~t^#E){gA3LI3w>_i?79(gCg6^`wc_{cAP;9FNbneLGhj$Jq(O8sP8~yLs%olK^+@q3thL0LjjR{uEn`1$lH_v^ic0W zrX)fi@r<#&HwCawkOoE?4SB&ixR|Faih@ufi_?Mu*FSLTQSgDlp3_G*c3^Q(z#*;& zJ(>{9;j0_Ys?#=wwAEl24kX15mmUH-LCS<52@E|~$V7Dvhi=(87Sx{|<_B)OLtUm? zoYibjaFNL6f+M&{l@=-XCm((-fd6C%|6>1~Jm5ryf1;-oCHAKb4pWdpXmoJi;Ih}9 zHS(@G&l18qa99;IIu{zC1XNxZVp(`8cu<5v(MGXboB%)}NCB zjzoUi2zBHC%{^XkabX>ZM3=;@vcM;taKE!_(56dM0Lw(+C)%%95TUcOvLD4+^pa;_S;=Twa(!Md-`2Fkppk+1&b`}z)nf_>y)r%Q&l|BN)Ap0oO!Q3nVFP4Y(e>3I@- zXb+eBXnH|Lq72QngX_cGI9K2qTiS`N{fYz$7sr9&e#=q805~wjz*}&}P2%W=0~T61 zS@+$fh&#{8GfkQM2!b_`oD@w|jZx7rITuP|MLCu6naHY! zmo;f(A7N-YiK)A-hN2u2CB@;VNmEDNjgo`{&C?{!wS&OH6p-&(do)lQf*@;xHD)r^ z&ZD2Kp9;==l=S6$B|0kDo0dg5r3@CbI?fjLl>8c3TU9o=4kjZ{W|4m{e?$( z?z4CG=z+Qlu0r>Ufb`m|(IDfl2C+i=%I=?cwEmEE^{B6^AB$Y+X6Xxq3lR=T;f<6J zFTdQscDZFxzA>32PYWgO2Zsa8+Z@ofy;S?H;*xTsN-EvOf|3pt!P{DL-+p%=1mI$O zY9#`gPj@j2GQx8r&6^@>fgYZ{UC|W}aAL}7HR+7jW3YZ8`neHmc735vWr-?Zl;s>J z>*U~>g1VN$p{ru85i8orS}^@cpsF$xIe;pPgC9Y1!boBNaz?tX=DJ&QYbaiSLL?N9 z)N6QO+8=zek}bEXVL3w}&PB`+SR~(JJZ_3n66aMJ$U?P#PWrU~{yBdBCFNOoVEcGH zh0Ep|gP5r~%RI(2aP(uT){2y|>BN?ayek0bWDm@%7{Qdp?>Sf??&fiQ%ZU7C9ALuO zr3zLo_TbNs97W!HOdtTls*IuwuvVwe_*j1Q8?)@NA^jyMw=X;-%X7jn-oE{9wXGZ3 zob1_w9X9z`M2*A37uBXMfFKy9*Dx+5(thEXK3 zdTkk|#hMzWToQ1$xN6d8=*N?C5f2TV%Ih~<8hr-I5CK`5PsqzrtHrWWu3D{6yu}!cwFpXY8SH_-$?_#Ze#Qrx{UUV5+;& zS=Qr$n>T1|0El9?{$l@glpfP%z?q8a$=%xwgQtcugB#cIQWQGJ2-KGcXdPx5fBEYj z5B>he-tU8|@`qJ(EZ+CTs{$8QR-v2syev5&{4n`qReSH~V=pw<&}n9}rYd!O2GsiC z0BcNKgm5Q60W@-4@*aY%l{@t!#Vo}@#5lR-c`DF(Q$zv+(SjHb4aOQrU-2*#3O5ag z-&)3Lj|^n**Cg9fmyA#B5+7_Xi|9uxxz(A!M}5pmp)Gs;D}+7%WZd$iJZ?Z=DjtUEI8VU(qJ!HiQ@!W9GXMYN*Boy+~<5 zSb;JJ#E-Ao*_*J8il183Dv*E*5wjlM7%V7?Hy0>op64wrmr?@n+GS3AnTx zYUQRjUR37y544>Wz}2s;#%-)JVS#!Kho2GaK?m^9U*ieyIBMxqLbTzWIzX^=S^}K0 zI+}=gK=8rd9czErLBgsQJ2m-;H1%SvL4Z3;)j^=m1M1WMCm0SquYCASK zcnRhV9gE$BFQK*|O#}!br5!x$){6ixK_{N)z5gFy&E%hX%;QI3ZLS$O#3_JYsW}?? zt}B}NLo$>QnjeNJ0V(G$1LAn({HWxhOgO;&OdF&*h!R?x7KzbufJ7MEiP!MPL^+c zKB_RXqy@an7z$HpkB;z2%^dKEDTcbJJ8Girtnn^Bbjffvk1fn*q*zd(3+&m4FsyfH zXHbx5fu>_A2IrtlwNtpb0(QA0mIlj|qhuj!f*(c5YXQvy002M$Nkl z{3Q;}Z~h(FdVG~J8MRc>QDFwR*GyUrlrKKiOqLvE0XEfI-~2V|s?@DW2$Q2seB@?Q z6ETiWNjY%&rNnd*BmMyCYi6x3rc6Ag15lybAk7AUmPbukcQTgIxpatTnbytCan9_9 zRkN7QX%ip$#suG+ROb*&!XG|?PnBPcvKkHsEkky-EU`+)X+(avqghmon2+=G)VjHx zrAPYJf-w#v4;j@U*C~f6?|SVkLYe+p$ra%}e46>-bFQ#|m}WhFh4UsC1t7RO{>3&H z*e!Mk^8#Uf%UA?}!n(x86n%`msC2C8Vqmp~S~x_~nGa$O|6Q)9|Bpen0QrtquA{g} zrHY<`<_7Wu&#-x(?0Rw)9w18jv^;<+r&2uOEh5%zbU*=TM~v1$sd3C-92AdQNJ25? zQ-s5mOtC;h9GAv7?Scb;tzCy?^G63<1d{Cm)b;;MZkZ;>>zAEVxd47~&rdP9&~=kp z2={GmtKWuqA|a(*WJQvboG}d;I5ryTK+E zjnBLK)?8MdAAMN2?K&42#DwX<-X@#IAW+LQz+?~vLzccuzmq?^xRAg~b9|7P=VRX! zYtVP={(Rck8F%63Vn81yFSMc?l?{_s}tcTx!XPcW} z3g3~IuG{j? zB$%ABS@4=0$83^%3#e3)AmoTL;NYvBz_G{$grh;8{L}o)Bk}H=_u-Fl_HrcEspZCa z$Z9&CXtL!Do{M%I{&P9nbXViilznVcPsLb59a;S`Q+9^VE7gv~E`Ym0w3m~U<(b4` z{dr$>%6I{tC2P1Ou(_#9!T&Rl2n z8oaBif>hjQ7jl|f#ZRH=Kw9?d&Eh05Bp-eF-XzaRAE_BMXgb|=SbqnM{ zS!k;zWa%A)$w|2$^M+cKn6h1D)HP|6X6bl9YtayoB?vZ@lw1ffCrJ144<+A1RcX}Gp4FD z)w+~S?M&b{k<6y1w&@>}94RMglay^}jIirqgvVXSgk_W=EfI$A>eL~n5LX9dY2gev zARPFNX)Zr@%0{&1V<)EX0C zTn7LB&5JiUip5W^$`kp?Mmq^i;C{@_TUVXm(i#x(8>^Are`H)(0R8m1X0WTbDfB|R zvTMMEYSTW+UonD7@d$=1B6}p+Zc_!QxcZTLACZ1Z3{{6)o-$o*z;F)@d<2R&$}*?F z99XCqsrvYjHmYL3=5x9eFp>E`H1>OZvLCoUYhaB~s1LT592pJ`KZZjxSC6G0D*7sy zETB{L;q6W-C8~-LHCePrcPjy^Tan02{D*`B#Ko7q)*UupQ|>e7N}m*v$i`*Dfs^13 zJN}{q#jDY1$ctRu@ldoJmeiPZz68VHu>a^Zg=ockwzx9n))}6Fx_3nCXbJfzsg;IN zL=q3Du}020w#f}=xv332uVbd1RX{wimvhtICvKOd-VGy?e8u7a=qyx|{Ob7UAAT)> z|9l_+lJI;yP{>dnMxP(oc#Jug908r~GohgZ2oa``2h2$1w6z3Pqy5};O4xw58fN<^ z){1jdQs7$501jtj!X#2;HpZ?m9L`e8sKIQ^1#_zvbprwd%O93Z6wwhyzj7Zp7b{!x zX~ofjAm#4~Kk{!uh%T%aIVuqDU9r?1@Tp0plQq(ejVO@T_~V~p4AMv zLN2Y4i$-ic0wnKLGH1$;-wl9Fm+D^3VI2+vOIBC$*iIqU}7!t|iDi9zs1RuWv z_UdQ+tQtNUDr_=zBhH?6nmRzJ4xSQOV89QmK|FCZ5k_IMBt^k+T_QUy3my2>Q3_<; z^>>TZLyzWgBu}mI8&cKZ9jNNumtn}MtXgVV2b8`TI|i&Dp;G@5!UjwF=~yASbVf>$Y?*uu!D`gD8;- z`ypfROO2yLVpU0P6`@SH6E0-R$2Om4N*^DYrIQOqd8-~QT-Dr?tW<)p{2;5bhY`5j zMGrxgAybsXC8$|Hmal##Ly{Qipn@dzlKk;MKX{di8W5|Iv0V9|vHHV+It-5D=B6De zFU1FHO36*6=(5}=(gOjUfTYU*mXw9IH-DOq$bgZqmiZ^IOQ}yiJDtt)oKsH5y`0T> zK@@ZOX?_gUIFes>yzUXEGjdrQAQukvQlmROU2sSa*>}cYev_l^aygW8j3Q;Q^GYh@ zoyA5qr=7+PNaP)BM;Z1>(?__#5NcS~xy(g;_dhpYtExJ7ti>uFz*S-OIE#GCQ+Q(7 z5H9lbZTd_fhN|3$LqREj57-%(i9wf42XIr!-?(42s0T?QWpk$F%7 z2PKCsgJY+vq?%B1<_~6r@y*)4$u2x38i`aRJgTLb`L2UNtV!cG-+8eH z26iD`tk8S_b2DC9$RUwkrW|!r619@55()C_r=(vC;Gg2=UqYUT2evPIHelHlV>gQk z(qfOnONL0mn{3-bbRd#v?MIH~D8G5jU}c9EQsH z+MhoDy?tXG;>xPKrr*E+gK#+=@GwHzn@2r74^Q4^{KBV$jjEC?OmZ8KwOvT$oy?&6 z(|bNn{P+L)cNbv2jvEAg_V>SkVk;k3=!UBQFMIdZWJ$7}>AAG(0}PdsH2(h|#_O3e z0H;;yDn9S$u`{y|KpJnlkz-b#J0m=nFYO|Hg@?fZgO31SUo(DwzM_nf_p-@1iXl;Y zfi%WMPFGIR7$2u=Gb95BnWc*ASWY#bsBnKqSQXv>x#G>JMr zN9jzUjkqy9#$p3FHuI#LX>!F_wOLoXd~l3mi{s>Oy;pbJipSBRSz2h7Mr|!9&m8Tp zN}N7**tjp{kMPa#X6TMniUw1r+|oEr0hi=-ZvvFdS?S0FXd$zt4D24F;)NV+i+B zwBMaIr&m@qYMPr}7ud zQwble;X~@$-A2;$vQiMs%4VcK0Mg9p5 gQi@KwIrHCH1f^p)QIi3@0O9@e>&fQ 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 z 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

MqTLOvE=Neb6&^1cP7nSZyoO$G#=w(I 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⋘mMCBN~KvN3n>u<1UJzkD?2W! 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 z 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

&8rM+tJb}=ptZe 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%0DkShR7l)Q!^hnu+yaz2a&f;iRF10Z(z+AqRLyt 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 LPPAIsAn^YIO)c_L diff --git a/docs/assets/images/error-isfoo.png b/docs/assets/images/error-isfoo.png deleted file mode 100644 index aa33ca6f20c96ec51ee30eb66733abb5c223d25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29604 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 diff --git a/docs/assets/images/error-ispositive-string.png b/docs/assets/images/error-ispositive-string.png deleted file mode 100644 index 32cce31bf57a2cbe7203abcd6f4d0ed2d8cdc175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45683 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∨;K9Nxm_T#CA};%%0&JYM&SL4uKaQ%$HP*=9h& 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 diff --git a/docs/assets/images/example.png b/docs/assets/images/example.png deleted file mode 100644 index 2f4eedeffa8af6bc79861a077a8aaa3e54509a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38006 zcmeGERdgIpvIUF^EoNqxEN01KS!l5=W@eUJ%*@OdGcz+YTFguqGt=Kbb7sC->;CuQ zzTJn@tEwwIGb1u8swyjU=Z+4Omla2V#f1d{0YQ-XA)){R0xkjq0vZkt2F%I-f|&?B zfC3c6g+QvN@Q;B%tc=wpOk`w0Xn<*G5C~9Q5Xiq(fIB}Z-ha|!pkG12|0f@)C&U~C z;(zPN0*`+`vB3SW%)gFcIbi>;0WOjQ{_iws_}{7<@D2mO1B~4dbpQwmCdJFL z3IqfU)?7)=QB6jg+tAjULEp&Mz?i|++U~Cu2(K$QFllYtD_B{#C{;Z|-Vrr6yu-ZEOPon#TW)m4o+xn)&}I`Nz=zl2rdkl9h|?za{^x z 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 gzx^nqA6%B`7_iE5JQ~uXpc`W=u-o( zuTmx{=0c&BoAX8cA06#pl~N^9@Utk@L?zsG0gNE@|1?cMn1FT$zWO09s(BYx4ta~xNz zG?MMt&W)nks)0c@QP@$1-!%BPzk``{YJJo>vI%?IfPJDNS@cT86q+lqzIN z-nY{HdeznT%E9(KU49~+Z~a%%b(RX6Bk;o4STmRN$4{Qp^!&M}|7p3y(VQmLldUG+ zS|hv0MU!vT_cp$^2=$osDp|NcIH1BM$1e;j2GrLdusd6_ep>%gkc(;o(9%i5d%US% zd$~&2u6k|fwT~qU?Hq2B>h4zJ?mMl8el*J$IfKrqaCj6Zi67WiHA^ zJIZ2aMAX0A8v6wP^%x}je2wA^Z80oL?L_ph~ku;SR_SGZz zp*`-RSF9P=iDfSlMJ6dd~N`L}<)=6DREDir>XQ34m9wlUV+qlwCYJ z-JjBM-Ggv^qAb!%w&(zTsWv-PUvFjQt0kjP>}t_+Q!VOlo{sC#DPBL{bJNTE);4Z< zRqASDz{~H;(;;~lwhtmRefIN|+eqxd$A_FMPm}6vdg$7{%iU=maX~fp%PJq* z(`($%=lYMhurme>vy9J?`5fbA%5=cY2dSWg@e%oOYPCH*Y0ov)PjtVi1U>KA)Q08` z3&%`qoN4AuhQMh)nq)O=KPq(^sDgi&i+=$Wg%6x6!~cmJ4(*c0LOc zkKdfxnX1Ofh4SBp>>XH@%(LHC`_HSw{lU*ulP4MFp(7(!g^|8`RcT)v`qc%8IiwvdOc7neU~Y;IiwhY;~>Wd~aQT zOF9&StKe_myPCug-l^}lkGyb{qLT=Z#3>pN$dD^^CQU4*zl=M+2pT99Z$*=sEW+jgiFfk2l(;2eiQEPu}84IsIXQA?HD)y(X{%Lc< z!_WL6O5NpPEon~1yYm4=mEOooR@RVFC=EB5OAp%{wc6mDUr?s>@WF)FHwsjq5Qbw6 z=zqH3mU58g`s328`w~E#u?_H`n^w1xB(;BEryzT(?MKJvQ6o3?JXs@Z zoRVz&sz*9fZ8POP&SweUI;$d=NBoaD!*uJ3t(Qw``(`KWJgyxIKb>A8!^t?3bKOSO z@o$IqT(YCt;~~Gp0lQT7Dpn-cMtWR~3*JEVea?DDvkwg1Rhaba?P!G5mo0ShpBvCG z#MzuEU%wf5cuRao z)$^hJr|Q(?x7%jde+Vr=E`rt-c8*P}U3h_e>|Wd|lc4J8lN9D zmajw`tANGOA>8xhJ@w1PU42ma^tpz^Xo^5Rfmn^ucuR?oN%1aUoXS;3- zhlMmo$4?rr@k8zt^YQAqvhcuf-*V$y0ta%<%+qZ$ytKWuGnAC__R(!JR8?*#ls!ER z-nSxY CwC}3` diff --git a/docs/assets/images/luau-recap-august-2020-format.png b/docs/assets/images/luau-recap-august-2020-format.png deleted file mode 100644 index d180b442af1ee6cc992a2fe28abe5ccafba8797a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4692 zcmZu!c{r5a`yVRR>y@G`6)I^#Lv|wRO_C5YV=!5=W>;evL#kJ@$5=u}S!2eKVVGf% zLX0iUjL6=Q8T-C8{2qSS@A`fJ_+Hm@J?EVJInO!wx$paY?#~^0-^4)Ruakd)Kp+9b zJGab1pnVsCzQZA2;Qh}zLm?1I=#=3ty$6B)GnqO*;~FQ!R-#D{K5TDC6qr4!q6U0| zu4@&XJj4^z=uqU*eTjABMrrb=#?z(GEv93h-?)*^L+~RWF1>u@nzDhp-Ff|PfB9$U zgCuL}1KrZj$-vNyiDuamP*bzx!w)ZId%Uv)fx?8(jvcj!1KWoo9N<=>K!*_y^!`Io z??EEa)W2uYTs`2<2^SL18AdDBxToAQgzyb@s`Z8;ctD_2UZFa2jpkd#;JeJ& zn#zP?+?||qp~AAG-R03o4qxWi{GoedR0z)x0*xH7f=b_3cYRcl&&xnO5ovZEu!72* z8%?}gY?NQpo$cyqi1}l_)1m}B6LVMA+RP^*za5h79=Z0o+wpavjxo6u4Cp)Q1ovCo zoLDsenOoPt7W4Ei_4)cvhPp8<#{$lRgu`DIqlO7y#NGLlq;v;-lI)e%ZtQJ&=Y;aY z3*mXN)Jqn`$UGG6$T!4P*@_dZfdU-bWSBw`Zwly`nkL z)n}}Vb{ihG)1nQ{F)_=f^~b_Yx2#QbVJ8B%{OKfE4HkU}yLc_8H9d5Qh)CG`*^IIB zC0=*E7-x2NBmSN(ObH=faM&4qHzVpPqlXAK2+v0dJTwWYvQ4#pZ@Dw%pacEbsVFjb zB@2P*iTdIy24fxof#$pM9G~GGx`&Z^YQ@gCG9s$16kPahwDh5`f_`Cp)SwC`GF>00 z9K-#q*j>Mx^u~Y1ZmyA%PS)qP9Lpo6U$=)FR#;qoWO5vyguTx1Lq6_^?7UqZ( z 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 BU047B diff --git a/docs/assets/images/luau-recap-august-2020-meta.png b/docs/assets/images/luau-recap-august-2020-meta.png deleted file mode 100644 index c7396f92fc646185bda68f1c5dffb7a171f9c61d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4102 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 diff --git a/docs/assets/images/luau-recap-february-2021-benchmark.png b/docs/assets/images/luau-recap-february-2021-benchmark.png deleted file mode 100644 index a6833252324372855f5207ea7f58911f2ce20fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111453 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 diff --git a/docs/assets/images/luau-recap-june-2020-xkcd.png b/docs/assets/images/luau-recap-june-2020-xkcd.png deleted file mode 100644 index b7e2ed8ef20ea8f03abaf4ce9dfdd65f4ac37aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23436 zcmV)oK%BpcP)00A2a0000039l&u003K4Nkl3RDv3px=@j*R530^p)OUZOGS%lM56g4h|N2^fOiWW5pt=h7LB`je{pq(W1{rxeMwDpM(5Z}Wez5jGFxigvG&)jp) zJ@?#m!H#m&6?8N~2lOMfgo2SH>Un-%T=MvxcfQ!}5%*JdpSWH*_|13pLjT$PN%ZjZ zv1|UYN+g~x%77_Q6fsNtlnZ^~(B+2a`zx7s4=s+H)eFTYjhv&rVD1GyH}p_K@5*XKsk(7O&{7 zee{w6smZFTY?^KD6NmWeM=kW3xGH*>gXhV}^OiAVJ|`KDp?Rpwk8Lj4JswC_Lntqt z`lSYspgJb|WXC2AKb5}O)AcJdLubYL0OQyc{^`57%d#Vor zbpmj`N;Pm~-(!$Xatv_xGQOo&X%YeS$-Jf zNfYa>1I|AVleUn&3pnf9@Ao!K`&g=pYdR{Szk}COa{D;k7MhAnNzMg6BFRVauTRyzSCikFaKQtt0O zNuRRqVyu+EjkmD?pOGZjsna(p7w6#&k}YTSCMV!qdd|SWt>i*HK$3khCHjw*ct2nD%`frYej^#`pS&X*JCyTgyxaCAF~p94#1$lYu6hGQW-KK?2Kom`&c=ME zr;}vhp@fq+Q9SloQX1ZEFDIcvesyk}fb}GojD*_7Ko^YJ)Bd?mx>Ek@MlNh5$?Jgl zueg>AaqnQ%%eF+qopeK1A^y0BqStOpIiGC0Ts50v-MJFE-GPzhCe?)`nbhN_hRPa} ze)|nnnZEb-5ZF;?(q&Mz*k{{wSauI+BNY2AM zyj}>BB=eESUvUk|53rE4;U>udF3rc+B+2>liEGQy@At;tS&9Jq7MZw^B-bAc+)9#> zLFz=v)prZmu_>;AB-zsWhL{RE_OyZvlT;(g)p&sARYcVpnZIaqO*J#KDD)Rw>z-p3Y4IU=r$H~xp47qN?Hzdh#YL8Cn z-=X{Vkht-Kf~&^Gcjtwwt%~4&Xx}l4g|}3(&Xn?=4nVhY6%jIk5hQc*-24Uaex3`v z#Q6Td9oywcR$)3H#BP%0o`iwSmI0rc!5>gcw&bf%50;}^zTpCljSK^jcI!uNy8Df1 zF8Q?VjRF%+{y{kP)GqNr)&Q&`NqSZ2rMw}R9wX5RKwV6B1(5t4N$yGj#)e7q5%mvc zFWmlEzf@dFb{{Q64@7@sSEnw)qtuXVEy+9&zskOi?n8J<=U~eQl5_A_yDN5oF?Zs* z@fa;Ka%?}6BV*TZV((+6kK)reR$&~cD$v)d&*H_X@&ERA?iulGx8Q`~!%slJEnJC3 z^8FshJ#4yS@QwXc7`CYux=IBAJ@47OSCs$^obe6EC=W-qEbvL*fB@~Cm)Gqe+4YQP zKHf!=40k`V6U^U`(m((}ydHf{Bl`>`$rG?Q`Wp)&>^@4NtAr$dTGkssE$I=@3-N<| z`qY7Z6Q5q1xPY9})_9MWRXTXdw0UFwBwSEGA zmXCW}PM`XC6^>iS;i&opPi)s@lEW_~y>Uh=#@_~BVjx)v4aRXU$`zG;*9sgnO8a0IE1BlO)GtdF;RNZRJtg(__%BDSO|=^CZc7)idN- zz&YxE%i?vr+SCufyow~>!uceJ93ycp21EyckMgq4VUo83xAS8Zk>t`;EcqAim8+bd zxch`th9UJ`l3Ou>GGPAAE<&huNy=9;%&e_-#?YQ49Co}*gV z-1V6CB&91=Yse>|+VHd*xT$UZrnv6aWbo8ZUy-!I!=G`P{LOlpIWRdya@R4)^i zvLX>ff-fsWX+Dn90Y+(#I{pPxN*v1ChZ1l@m~50aLACmf*bDFmqP;MbavRCT-Eq~I z3B5lfv*LUis&l&nh{M2ZJ$weQkR;E*pz(RG$L=10Yu~IP$u9sr8J!(aUCx_(NF<#= zTzqOA0Bkr~q0f!!N9JJ~r{m-jPu(rZCb?%|DfvOC)RpZncvBE=dGPp@rLxeR$z@UK zEnU0)I(3vpk~2^J7x(s@$9>MkxWWjhMlFSPf^nF7Gt0XoFUZqyVjMKn!zAy*P4)h* zZ+BO>Dw4(UM1{U#BuUmCkB=7UaMDG1gifH-$noQco%IPxm-5$21N zPj^S}cltcm+(MF4`DMMkrVq2BmmFOEDY!Oz_^Ikaa#l|Os(V|9GTYYv z?uw;@p*~mki2Zi$F4lK0Rs{bm^JB_+Bl)rFw2^vrdyC|y%4nG!ci$)W7IL)#4)z94 ze?cD0H}nD2fbdA`ugpPV^sqvz)j@oZqRxX(T?$SRt z$Rqpx@Xv=nUG>1hU9jQ#*5l12xwkyO{F^_$MEY%2+mFq^Gx3zaEqC?p($%?}B;UQ# zFTWN6NonrY8DseAqhH0kTHtw`aqx9Z*s5hW_I~$|fBk>lJ(s0lx$FpozC2;fzW?!y z+r0m;#La)<;v=MZUp5QQ<|7Guwf3}~`|F;ezlJg>{Vi>{yL!*x4{H0*2O!UbA#&%S z&C-U3z@JwP&rx65as)xo=v24gN8NbiHOiwd2^`SP0`)&h+`XomWaF@tJKypLB1Ecu zqOyH^u6XRDwy%fupIUn=DoFm}3l-YW>!93nVbT8X`N~hRpMP@1k7P}%>UQq_^|x)I zFv-9kviUob+}%ua!JP#k{KiP+v!vl+zN&7#Ur?uJHT?NQKc{;5$btT)>T+`Jql?MV zFDn;rjf6rBD@_y%-{#*BS7)HjgqcLGW7n(;+5Nv@YI!iYrfNP0%vw|R?CBJ0)Y_T9ddfaA8B zfP~H`?D9X=bEGuwn8Xm-)GgD`Jk{V{@p0c?JMV7b6;8sc-aWs6_QDv`=DV-CX8faL zR@N+9Q~yhN&BM3Jp*C6Z9~>#rBj@0A>HcKg>N{Hvp#SkIb(;1H`K!?GF83LZ-%XMa z9v_~Qq>dXdk_=0Y$9A7=oIfGLHL6d<{^+&&k<5yP4++=3sv0}v!<8Q;ef9CH4`1K^ zZb`~X{Gu1SXN<0G2}Lo!ubR5Ex~hewE|;9H&G0{S57&KQ!{hJ9W8glz)fZ3DWuy(i z@3v11i>5z1vd@UbF4wImS0nM5W4fPpDqi3TSQEN9{$b~5SH-CY{W{^)TYGeUiwhsG zxqcfjP3RNXHTi7v9h^Q)JA{fvD8s@ty8S|?oJ+F0uh8ejv#%a|k&teg6K3dw%fr$l zSVrgs&AGeCg&2(UN--?1(<|C#pX5I_+m)I)?yL79JWcYB9>SRBu6Iz{`t#nwZ;tPJ zW{*9S@O|>dZ3WaSjJ$e4f0H~9Fe0Jbm`g~K{5i12 zPQY((tKMk|%~8GluWvu#@5FfNQsBMd))2Ywn6y1>7Dk@V~WJSm>>BNecrH**&@(JRXI6F*fCO&^w9aH_GE>lS^!s(`CQ8U>b zIX5#4faX4N$djSlPwIcC=H_WXNz!dVyrFDM?`}Vd5*eX9E%JzFJxRM`@7C`U9+GZL z7xfb!yf7s$ZR|@sQf4>CE&K$ZOJQlP>Jw@7scXL9&^)Dk!P_@$#eor=TZNvZI_u6|D87#DuNl4z zDa9?)DpY+hOzUw|)5z#+LK$5t{=e69+Ar`4xHb@P2Va>LS(2$4~ljS4)TzBjk4N z9VD5akfKrJvF787c;2luPq{em#%009aUV1#Pk*p?C`@UCYMOLm*HM>N^Hl(;*7a=W z>1h`v{~~ptJO;qDln0~;uew*_hd{pwx12cYV~kEdrO)}m@JRT{BJB#^8TUCwl3|i7 z@WeHy%$~bPs&~+eC&VxxxhO1^c7FCoe8tPUs6MK|Y@RrQ3^T%k*K*nX#$`Bjbg$R* zzX%0y7ve9f+BP%}H-`(6c(Uonyo8nRonx-bJbf0ve@YmRHEH^g6#79>LOQ0Q*9jMs z1!nQ+2h^{unCNDa{O4lN2fHd#csI-Si3f zF(c+pkGv)9CHWEN^3F8&j}ziCY}EQEg+AMFHU`;pHIjERLJqoc=Z&hazceo%s#Trc zB1IyS6pEC~(_>d;cs$SIHIM4J%oD7OJMX+nmAv$&xCB9U*(2I-BN9X1UD8E^*wPYt zvr`Y;wVQ0_HJ3%UFf{CfH3DG6)DU^q)e^q}I=5^~SH1cfayosOtU{)G5xKL|0{V}; zgrX!dLUIKjy|4dr_1$AtTcmYotA?(MJl;p*x|4Dbg#Hd3Jx9 zV2FI6s+0OY67A{I8$t`o&oP&GoYUOxqu{4djUs2_iVrYT`ZDDtys_!KMXL=rGBO4e z_H2yoxj!Yqh!m12&B6kbywXlC!1Q-dd4AGq@t>uL;d{|{>UkShJ324znS9MFw+2sg z^3t=(midE^Ta<#Kn;8n>ZNGr8skR+S zO2j25=pQ-%aYGB6lw z8$&bk>2K%9t_~EuGYzRRhC)#z!I&$u+oQxzOx0K(&Jmvk0EgP_1J*!Nw&AmGg%1HY0YQkbEES1~L}tJRiq@?6a9E~oaq>eqMfG@i8hf*|=m+$8sr ze0R&MTeDLA>`O z#b3x5RM1s9ue0}P;l3S;zdAp~OY(LsxuGBVJVwoM$RWm}1u0!HdQV6q!|#(VJyY&z zX$fyz&2>5b^R`4DePQ?R5QAY!;^rNDA0Ko513MyTyv0yR3`;g>&+LK;r$@N!)K{le zkkzUYDP*MK_ObsWw|4!6k@a;udChgK9bG)D{Kti=m66?-jVGHwxb_0m^;4g?nVg*T zMEJeC?{dzl4R74hoRu=^Ly6L7Jw6^QapNy!=$Dl%!k=aJK5OYs>i1-~`&Qgg-&5qO zlTO>Wc45P_DMJElRNwD?T_UAW%L(;l<+HN$NfIS#%x$C;4i$g-OWwkjpZ~aH8a%Q5|JcHlt&7oNEvPr z$re#!D7!@3EK%Is%#Y&Yk9nw>;_J~U4{4i3QVfeNk|a@zM4G+~DekFITi>80$^V(8 z{B$G|iL_t#uwmn$H1v->;XYEFGf(4ohMvCt_E+|8{<5ismD8@i;JW$InJI}R#qFU! zcavmb`|o`8q5Zhl|NXRdamnvotdU4K+_uRg`}4gXeD9DXWo~1~B2j*na7(j1Y$PeI zUe(?=96s0uE7C!pCrQ@zz%9~|0)2amu%GG3a4Uwo!xk3y_sqZ?3FS{`48r$z!}W(V z(CRPx-e)6WKR)4bm>uPS%bzw@XjI=>0UkNfrTcKqu0!}gI?Df2hW*v4RcUc!2eN-! zf%Ql#UXo<3_5VxBkG1m=^;kHfiaev_#{ZXMZS7n~SaBaIMIVEn;r{+zeae(6w~u|N1NuJ~dYusf zjA>@0#cH+Yx?C=o%a!X?N|x1XwHS>?{hy2iI-vjKpw~h(-IbS}X4LI>ETuCVjb?c` zZF9Ox+^g#A>ygm`{htfn)w)KK^j6A4sLJ|i+25RCy2jT5oxA40v?4?XxBu?^)>m@x zdhmlI8M-n_%x_v&+hsT7Zr%)UyZ&H!?u(tF zoiEGDIZKZ}_C)i0vLN;R5fU3o|A9VRovq<8KzAdTB-b62ocqzY-#!+vWTsTga%Caa z$%9C;PR>Fo3kdho2E7=CWN{NouaHj`!s#d302`fXOQKXxIm0Ftk@N@|(;cZuuOVsG zh$LC6!-&dQ_35Z)@gHS0QcAV_mA|Y`?xPil0eST`xPRixoi3iLLIGok~9mo^yP^;%C9t{khbXkiZw6_F#Ac90=?D& zS0G;y9DW`?=!#A^ww}ML_eQd5fNJ!bPCt+<(&HcI3fzWw$QQAi4N#@t+vIwPQP0SdU>*ZL0)B-yDWBG-(+rY%N_R<*-W;wP zDiYb~c1rTx-Q!fuShXHzl{J^)uGDHQH?!vd+P)41@Fhdsi=2Kr5 zcsG9Hi-={Kv7_N=gYJWqH^5it$^>AM8zDPDl73TLvFArlIkZhA>C}_y$|_I2fmV=A zS9*0+w(do7scgrI+UW1)!q_TFO-6d`g2tt^d+;zocgphO=W~t5(bMk8NXDs?gGGQ61pQF& z$^98QrI+Mx3%%~BbI!oYVbC}{B(nvQER%=3zbk$?NGCG|Xp{k*gEj1r%b_Dd_opaCGueOsDhr689S_q=IJL%I`Z19fo!>9opc(>Jo#>!deRAz z_9*lMp^l{2I>1l8S%#h|8^@J8dqYrB`JRlJk(dSlq5VJmh5k|>+3Ws;FqGeDab|Lt z*ZFpQ@5g@GQ{C6lT+>K0AHW7K%oXJki0!C@Zq|5O^>!&4TcYNG&DU1EJ4w>3(=%Hj zU8p4KMLt;wkp+UwPm*4rUSIAh)n)7=^%_rISxJc**^U1C(lnimbq>Iqao6bdhujq(1{N8B;Z>RX!7-E0c|N0Dxdl1&|@%OSHj| zbG){gWa0E>75PSFG#qZ|oP@j`+ln;tv)k3*xa6JBV-s(Zugyv(?a>E43&qjHCOApf z3V+xL>9OQ~6*@o5FuBTgyiiBdRX{ROS(xjpbytd{S22dgih|Ngx4WK!+GVXGqu6YJ zFF=wRfM!HtB}tdfcUYi16rItM1pqz&b$~bWBJ-$&p66&)s+kAY?fj$@00w*h!t(@b zE9KtSAPAnr0zE%A>{vb1_1XcC{FQl{qYC;VBC9N}I7}|M&yBsoSG^QQaP@;}-slT)QJM`HY*4WtCxb)RmAD@2vmBWS&8#e5$-pT)Y z5mNG$4(R__=yiWYRAX!{7OT~2&2~BqT*Y$mT!0k4hr5|Op#L|a(`m9=tyZhkIo(z6 zmZKs62hH38{l5zR$Y|!H8oIA2H@D(X-EDsum0a&M>1_TE=zkydQd4YX<1ODGyqc!W zOlwxQGq12(j&<}^{<|U!)D=7J?PkUG0HDkD(&xU;VsSciS`k;~o8*NiO}`%svOog> z+PV(te;f4t*64*SRJuytZ5ms&$zC*zrZj356&6EpG@3MU)@2)DjQY>L1&(wLfOgY! zUcup6R-6t)sUTl$_RHZhHP@B{NHth9^%+55v`^QRRhW=3-VWn3kuGKCz61K-0llO( zPRWdX0MMmb>@s;DkS!{=1mLI=>-^;!SF}GX zu{2o#P(pE8y_k=AB$)#Z98q_S&K!N^08J{gVfK^cy#Kt`r~~?;La%8JiAvYzLFcd< z^)S^(<+GC{?Z}V0=kt{~g&Y)E4u=-08i?Yc2kKrsG&<_=Q8yBQtsgOUEM(3l`A^1o-P^v_`kuD|3tx&$1 zEf%ZdhKtMsGF{QQ8<+B32B1+YWut+lX_6hScS2hLCrKMTaL~WZLoy$J`baj(ec!9GL@h#8uml-dg)CB{-K!PxU=g4xbh=5h z64OahH!B-20;ZP3ajZC2eSe z-U`4&T9K9}6qD3C6e-N8Fs~5}S`SHOTXQxjnzXuIv0c6M~oZyHl`^pMMM(1l~y_{hs zNxR@|ouBs#SM)}}M(RCaje{!Zu(D60Wb&MY)|kY3i-M+PgI zEi@THi}G&-W5&M4N|FV!VZICQ5;?-IL90mS%=7>Q*+L1;tw9+U!L2vZ5tAmmOj*~< zuTVLx2Ofjo0sWAn(~#vvu1?cngtr=wc2}6Jq_>L+7TVw^MYq?FX!wlPPI8qd7IRVt zce(s!X7rp5nZ*X=lSUc3r?Svn3k`CZ9cvYn#!s=l0KzM zdbAnHU}<~nUDQ}fJ_K0kgxQ&;M^TmB(`yQ7u#y~R^tQV8+`$ZO37f12Uu=K|=qpGX zHO?H17JyJg2jHe%Rs^ERLZmzOfS`dfXS!9WDLwF|E*;Ph9r`>VpPUEeP#LFt%4KX# zu#((mLM2Nz0Cag3dg#)OX{pGj*6OWD?^fT=wO6GDkRE#voSHGk(P%grGMrAQn+%#u z$x=X*X4L{Hb^^x2;=1}glK^c6U0v7#{qKh^YH~!9&a41Sp)p&ndMFyURvu@0MvxTi z-E{#rnV=U;HoHso0D!K|-n^b{FX<~SE^F})N{>wx~>fNqDWppK+Gb85~fOUz~f za-bB+y7x%Z8C$}hm&ZWVE8~Q>+?pzfx|aL1AOIQdv%UoWeLqXD4c#1h^w+zKU9SAn zk~WLro$z|c8m!Z0-%vqK2lT%MdK~~A?7L_%izK085r7dz%K}lyj7<Ka9otX$Fo{cu3f7K#f+7pBvU5|TF5Lfd|=czPO1W*TYLDe=%jCvtRk zB)xdN$rKG_q)|tbO@fUz`BsBwRFE{m02|vU0oB7QlB~$d)oY8(OS9lK2tIo39+K6l z()0*;%bhwnL<=;qimcNDfX41)K47lsfc}@ESIK!FEmmei=OxQfBec)TAPU!#WUii8 z7)6qKS~^gOT#{w@iq2RrFq2lkW3B-}M%jC$SID7V@U+HFlVmoO-9KqHk+f=j)o{@b zV-r~ecR_EG3}hh-7M~4;%!VgW}$WLBHR@nW7v z^SDULVHl#;PNo}J0a(Zel)L2i@*9A1idMm!F9+Ub0Vv+0@7+$8HAv8V5V zen`-Zl`~Ew9qBc2(gSxk02pFAxCATZKS6z#XwrGvTGo%cet)sQX=3kgv>|D$;2s3!t%>G$^YQJ<>>Me8+U2lT%Hy+C<5XK&h!v}tO+D9l4nUYkXXrSe5iJvDjsXdHB-+G1rB zn#fEuX^)uzl@Ov?I{gKLu~9M54JJcLj_KQ{j>>3;~lNJ(^_-J9lg)@w|Jv!H$Qb2nCz zq{T)!$r7Q`g*sz4sn4aT%O$O`hWEh%O>{M6T}E$zA?(hQT3-Q*@o&KxF4R`RM&@e$ zjch_e5H8k02UoS+UUCXLoh=;|CaV(`kqjz5Jtw+d#DPMW>Sj#Np0oK#fWEDu8vv-U zZ8?M+|5gy#-&b3|kq#JobhVjf6!kW;1jWe7gXiC&`!prgOUG z?&)HkyBPW98e}Q1HvixZvsRSN0qwtsH9O&{L=I`TkfbJudOKMR6jvzeob^aGW@w;? z%U}_0$R_>Df(UDLP5XgCmug1E0YJAy*;*`IzP~m5jQrp|Xy}WM2YT3Zhp1HrBq=Sp ze%OVMw?CLad)jo@PwlHVyPkewBSSx}czfD}n?{^J{@(lV>=M6$47J@h?d#8F)-Ao_ z)*mo*uht}z;ygSqr-L*Dwu1Hx2dlA=WFD%5aFX;HfNG;wWF4xr;U(=th9lo;GXf^q zS!agDTU$qx??G9rki8%fzlJq@x$?%cWK770UnP+Cq-PgWuU18A&A#Pmr$*WVw zTzBrMyCzP)P<0K--EF2An%`b4AC$#ib+FLa_C$|o17u_ZQg)HtnsVGoP1HjbU1HK) z8z#x;0i6PMl4hgErkHO4EQRHMgOwDs0iCvq-iiTG zma+u_O@-g>Fu4XJPbA#|R?7=#jC!wNBk6Oq5(XXgrEHK9S0YQ3LpEs*K{s5a zSfP)l_dX!#&pA8qJGN~NYolHA)LP!;gWc*J!>Viy2_{&Pki z)*gGx@RyZ*@r4+)nK@C zNbb-l%svYRksm)?v1?(1Z|$ldR(xGAam&fa<-gejr>v0$2ViWL{i-K~55gm75uB-T z)RXRd*_CJwyc6bS&`_i6U9H?JEsJWY!^w<0y_X>wmWc8ZrDO( zw4MI_LcNM4#p7nRn-$Wk++@%g_qlX~VmJ)BB4%!Pzo>;`E|BFT88!mvO0s9Mh+I5V zJaFhGIJvp4y>Rm7B*_~zn@F}q$-j=ob==-FaV0~2RnL;-Tf!D{&X*(`k|&eof-Vpq zi;(vs1J_9;YoKr8m47ID{&1Gf{~wnMZns-256J5AALcB4BLM98jLLRC0rcgLe(*wN%EXAMu$1Iu!6XLACtAp*u0L?Z*uXcakI@!cQcJM3vV1c-1$28e>SluTI}bvNTB~&$^P7 zF4Jx$Nq#>J>O06gu_z^VE6E>`yqg!rKXRbZ|H0)zphIXkaL8BxOp^PK9YJ!bDcZXp zfSKaS2}{YAi{)*dGVUe6!4h(1XITh`W_3mPW!%$gWP$7#z74l?mFl=v2LpXFDg9D9 z-Su?~$*oDU%PJqM$Uv7jW6;$<@)q?^B*k7>OfoNi3prpAxjAuYR4wMHx&%00_3I^g zo8%@WZf4_Bc0gC4H<5dnK0jm5CX#$oHXK`y%_KRqhZuvN$!(fUiDWtYOJpeZMshjc zAg9KB44#v44|gVC_OoEvOY#9^GrVNuLFn`s(a-yWH4cFK>?LHd^VLdEUrp}TM17!Z zt;x8VpJE(IHmOoWq?mjOxdH{`g$Zk;_j&{qxjpHM z&`BsI`6MnrNJDO;T9pW>`dn*C#IcPGbh?HlIUXLeQTR}))u=up@>_gHSPa&^WWxO< zo$6o7(=~pUB5LAug}U25W~(-C@2Y;845cbtk##_qyHR``&}q=P6I8fGq6=S=diZ=y?D?-VtFQ6%qBuO<5mTR8`>NAEQa zXNGB4Z{-xEe#4Lk8#gm0skda!;>S8^h$yvCHqp(;N&#zwR0U z_?!$RUO_HGHhD(Rs0Sz93$wX4{swOEi_1bR#+3&PT!PpyvSQIha?wbm_%C7i&nY_&-oI&+3(MF-d;QyFOs_xuO?^0L0+JW z+DEJ6)eT&P2g#*Ls>kVy5jccdw(IZ?>lElGp^=<}PZaO&rMPOJAw|ZqCa%jK(ho9np!#jdRyyy( z-K0O^I&vC{$Rc^SZF1KLoGS7|xJc$9@%ti-Ib`T!8s6jgsxwJ4(i>~Z*?382K1CJx zel;$X>+RO6+~nAJAGZsqNsOF}`z4a$87UYg(jRw$JdBTfP9^v`Z`fl81ijiQ&t=)2 z4l7AERmd?b+G1~Meqnw=zSEWg`Ax6W1DHqp92xlm%C3|^nMkoR*DL^9zYD3E7HIeP zVg%$DNi39oG$I>o=q<2lj9IOtdyimle@(l!(1y&v1l^6^A&$eVB>4eGlN``pcBpPW z1*h%33Jc|Wvv69N+k`RXlbA^^k4yc5B!3-+#1F{F@jl6Y7vhBbFpm3f82;mdL;w1{ z=+Vcj#3rs#4J66EI;-JK@OUNTh@l6P&>;^qT`ZgRMblwEL1G82BzLvBU7kRA(FRkF~Skz1Q-VU1P* z3gl=hmSb8f0KGNGSzZ8pfLx~6drA6Bv!he;(=)S-Mx#+5n|;YiwW9l zDyC;PN~=o7w$5wiD^a(eWsRg4PBP%GI5_CDqM}E-1lN!^<290;iz`S@z#NiN#c@ci z4(WUDk}LiiAO9=Y$KOmA;5kyd9KAl$xovS)2$yMbFS<MLbG ze=RIU0N@m3-i!vZG%G^`pu}f}C-{&STK_>oSB+8JZW}tQKOu+6zcdBoNmi?p>`%XN zLjtVpU&L8xwbl}jJCG}WL zlB`NrEg+jNd7UIT$Mp=6{H0$U0O-milm_aeOF@?4M3K&u_mX{&YbGhZc5+gJkp5bP zB#S#KCi@S`IH8%+!5DJdEHYQ8OjVO+E0vAN#n$jFIzW~z5-9uXLyMG zTs?&(ed9EV37V{*NiuSJc5Ez&$M}a0y?>pa4{ecO+EIQYMzp%@clEnCLX!Kwe(=gO zCax#Br`v>>t2Xi27KTNV>wi@yhqi6@DjxiGRncnqoi>#RXT6)OWUkE4p&^k+(yuj& zF_0vEij>!yNYaIhT%AZ7>~uz3URhmPq&g|Gf8rp1!5D5>fNP<8kCdPSmac#GWn!)l4MZl zEJq!KLJ@P3X*OE&Nhjzn%NC5DC|;$MN2kBdf`?=UY8G@E-%86LjQLT1Q$U8?-P3m%|>f#~BG zh=*Xk2OsGU#P^*U{_i#OpA6YTKUOdQuewC`13e?191B2mUBOWJi(s@D6c@V<@X;Cz zbBcz|+U4yQY*wac(xE3SqCL@#h9WsHa?&y*5Y6@6 zq=kcZic}~AELkX`3r&CqaXbXGUzXONnCA&6Bmfu7LTvfX+&~TSHSDXoW!*2tkJsHRb%#3iN3*$q`nTWB!Up zKS?4#TZqPI%!89nvJw%^`V6Z-U8r!u1LzFVC=ao;o3{9n$LSr=+lhB0ImN6f;Obm$ zR2S#dWNhuPGMk{*PO?I1pc`XQM7pD~vu=3EJm@N-@63{@3Fv7R7w!h+vpgEj>Vcb8 zMrHR85l%AQ7$BL4@^mXbT1_U(p(9&kWj5Q|22*!HKXm983z@4|zA4K^6mtR7g;sH3 z@Q`eB0J&bj(N6jRRFW=KkYtlrw$e)kWXo=R?er*_rl>pDtH~%p1uLQ{e+%FtMKdzx zZto=B$nb8?MIMb-vQ`U}Bfb6qVA6F!KOE3CR?;PBhVUXMUlaAlIB9Cl$m|icdDHDW zeZ_PQVDOPNLLVeufYxX>AXgch)utgsaMZfYx)t(;F3j_JmX%C2ppyB}X#6ZjB?GnP z#V#XAQp`d+$tL8Htk3|43espMStXzxRx+^6rAUia`5Jo%^uyBAUF16>WW0K-PjQ}C zqoCd1IW=h-!BQF^16A@yd@gMz$$1v59tK^O->sNrVsVxY5G32+2DpdSwC?WW6OU0bXqo2ve7 zrl|cI8^1aFf&|6NidOGTh0$SixJqOjzu4d*8#G9^44smNAAdg9;hvKwecMI zE6VEYs}90v(^$XE-vRvqpnEH)SGW0CS6b=y)ExMa1?p=(e;K-1>0Vei-C@zlLmvgX zL*9zEl)DPenp8`kJlqk*fUmBNer+-UrYe$NyAFWH?k5?juW$5My3555=M0(7rp z)oRil@;s8?&k7wfii@)yIX*EHFqi6BM$HB!umkW-$QomIlxE)X(wfRo-ln?V48HaT|;8lwT}BIf}* zYfiQSMQkud!5xZtFSJjZKE1egOq8wl+6>WtT7rx^l9kB!2!PIF%gM^}weggYm4Z$z zgrSKfov5q<(oC7z&Pln!4(RPlL$+gztFS!QdOpF?AY?^{7bX<=$v_r-P5^0Ehr`-B zf7^iRq#gOujfR7obY>ydWX^OtC(S!lot~>91C`2RPPlDZ(J#tnM;A4D9xdFzli0h2 zJdy>dC{bqqE8r@H{V?kE!2WcETV95!d@nA0++ofCC+Kt`kMt-yS#PY>#gw__c%_qh z^I&QG-Bq*TB}Kh~CMB>S6U;!>Uo_;3;fp2Kt46UYcEbi)m^Z-{-G#hOc@woHeL_xy zMw#h^hp_#1=z$uNVu=pW#yUoQW$O#jFakg>=@yJlBujJvbR$|7rH`byxVYHub_b3u z=;>KK#t zT}nv$EJ6dTQ1<(0ksakmtGqXwFB>_e-X!{~>JJfmEPkn+bOM6W=4Dl$#c0XUL5OXi zyK226VNo0*sUENLn&1217=M0VS-nD;lr%$bxRwN4N4N^FVWSLVzX7Bmp4Ua1N34sP$ah6KYCM4eEYO; zh@{KkfSeM+5X_B6$k-In=7uT_gfY%6Yi`96Cf;-5XSOV(1Eug5!DzMHDo9qt?#wbl zXd?4b;4aH8Y`v%i|JUC6gSd{RZT?A4(Bk8k7!bX90(GFI9JHY^3}V3B(B447IQSg2 zVHk746SxB&rf*DzG=usU|*L{@gw3yp`->?rK)3E3w=?)^zPSn9yMB$k#eEa)SER-x(qutO6;MWJ144 zA@>7Go<$3g1&;>`eZq#Cx{h<`)3Aq=>4c;Nw5V8B{cJqFd}*b~R$KiUnQ@4uKzgBm zYyRM4z90G=B~r7z;gY0du@ybEFGZyPzK%2fRd|!*Qi@fm0cY+5JrVBeN*dD)0Q?&V zXkB*RQ?mgn8`k7NFpW&$^hzc$@QdQZ6G_hDE@x9o(!x=u-j|05-Nl3*RJ^HA&e7s! z0o)G-j3IBsISRM`I`$f!MN-Lv`cDA8LMD~&jAcZg8u_(3wvh2j(z@E|nEDs$&oMf# zO?o;iB(3y5BR%|wJjhAEog4!WuqK=X0Qw{cp9uig-~gd7 zI0zN^aG5c~|2b~dg=njfyBcKcA~0c#8gWKhgfS+)umID}&GCIkIH>#l~_s^kpUpY#`FY?9w`GCJp+V1K$v0ukXpv(n+Q#u|p2Gx+@+Qt|IMQoSCG46oXB?wE z?YCO(|0#EO*(zix{%@e?L$6c{xx9^vu_T)!aZ2V2l(Wm6%vN>*R9g(QnJ-G6QGH1x8%WE;iP)AHpF&P^WgFcf;^G-s}!NM>c*FM&W8~ z1QB#?a6ys-BSF@M0AOUYX`3XcQ4NZof1)OVnU2v(@+jlFjql|y(DNUxgRj?)ET8M) zfnH$N5A=Lw!>if8jP|v62&=83H&7(U-b9j1ZNp#U8}zuSt)B||fW93pI~lANnE+kt zM@dqa(I5>C0FIr^ahoK|VRYT^(d-6eK20lW7TikfZ#z%#V|`;r@e3<*cGl^7-Z*^U zRui&o2+c}crWW|cZ!fvZD3i3!^Sv8-M*&^wntz$52s1Zf+9@eov%!D00>hDKXif@$ zS~c}_E3!noO%=FG`0Rdj|IM^=zM5Oa)cXv8Vb|J#Ga=^{sqCmWTi0KwU7;7V8|K$p zla#}5tM7SH;B_cT2ilQsSqX>6N)J0zE<(w(B;pCM=mpHlG!fF znE^D(i?_9m5l&=d9RTclFa^xv3;@8Gl+YxXy}FyyFeay_7;~w8c>m4R)h4AJ>Se&L zmrS_1lq*D^9W{mY&|~#RG;&Aik2)^)ea!EPa^}wh_Gf@2DRsTqF9}p2ay9@Q{VJSd zWuw|zklo;IulOAPuGaHe0t}V?Z9|k@VRXomIJy63))}Wx-I|7p!=j{27fbhDr7KMl}uc$qJ{!HLvN-mE0sQWoQ)6aXRX5c zWudRrQOfdbu~BNTC14~_*q|QRzrBt}%6>VQvNDyW^e#xAPiE)jwBtHX&dGY@EHHRF ze+n$&S%^ z+6!`dQpj4zg*Innk{6TN%%}7k1t;fZbEFL3mSrs{Kz2TvtsaKHgwBEMljQdsa^<1W z+L9%d$@5dxNsdswAbAR)vPuJ*?U*o{_^j}A0RWj?Ani40Tx%(XSpS%$-%103R%jeJ zbQfNjWR%`i1>xs7D=}=Rn+L>l(T{NXU~f~&jRcTr>2q$TAz>|0g=d;^9ktdJ)p0~F93Z^ zI>;7EX)Q|9yz07QO|pa~7pdKYGcC9(p>=f;RfXu5<;7G7pnGHvsFD?=Y%~N4=OmW` z0uaaLYRv^q6P+MXcM^nXJ+vroKuZ@(8SUy-ZiQ~Kr3i08pCinl4v|O$c+C+s7>g|G z6gU-1w3k61j&g)ogBcS^l59=LWUx)f`j~SapDE9Gx!Px>w^Gjz{VXrZMfC{6Ojl=- zr86CpWZjzb44FNkw>XD;<2?(r9eLOWAO4hdp*f>#<$I0NLhc?MY zLvjG5BuNh^tU;@;NK($^1JEVXm(b5H@9=cvuExHL_5{r;G-OH5U>-}7738LyDkeve zoFY$JP<^hgk61zBNesC&{l%vF^IN0c7o@KjcZS|Xmvgurdz%siD-i%%YlggdyD(p^ zOPD30q0bKLOXNu|EYWu_3o-G-3Gu1v zp~V99DQQ}4VL(|#S^CKIzwZU3q6m@;IHZ+U9jCJvlXr$L9|wJe+r@v2MkSYX&n{l% zby)4brdKfH9Cix8FUFT&DjfO)wVuq-bik>BJlRK!R+1c>`jB-ryzl!LL4epLS%F6n zO-oG3DSkh=YZkf%`WzLu&>nV5DMZt|L?pBibTTcp;E}xvNo43DS53l|l#z}zG;n=5 zq-DvZn2?1JC@hkrVyW8O7y50gr;BjUoR(=!_->E;p}Sac2_WN|(8kg5KZ{OQ^ZX~J zltr%EQZ*rUw2CYA5re{K!EeJQS%*gtEe~08g)iD@k*t+VjoB8^TkHV;0)sC{%a5x5VsHTZ+X)(5Glo)(WNWIlqiX`uws2W&r&c`D!@QB(n6-2v#P2!!&UP$+a5k zWD8YRKVSlDlFQi``d-lGjhBWT8nB|~iEm2)U_7mn-yc2|^fJh$`VK#8+NQs-34JVv zS~8jj`gHWkDsaj+WEZHAY^ae=nbfD$zUZMuQqIoH*IE_cI?^|+w@$RcL?~5>orzd9 zL-B$X7QN^V)i7&P}Ah%dko@{zABsNF=Jp4gTm?L+NGRaf%A8X-6L$63D8GZPS z?_bk;43b4b47Bg8UDl2 zqdWaxL^9f713`8~)&WuS)r%D!<7D_`(-weS+ncR|kxnZ~+E(DEIONJirrj?fBlm+Y z4dcrCFobbiV6=kbVM2#Tj%DBxFT>0S0Ek3+&1DKOPr0$vgCt9#Au~#7fKfRc&m>1; zK+;1y?BTvj;D3=F9Jyy56Q>U+T(rx@Vq=I5YxPcGs!h8ylAPLiY?2!e!gY1(lVr9; zE&}r^{{zWIMgTZo?VE6E<4W*8bGtOvH!wX!=q(gTWTspWetYQ=``v0i@V+nlY6DiS zen*VJ`;TZ%CdsM(hV=Ykc_7J70)VJJ?58uCePYk$ma-B4pgWP=7rHb|xjE3a+ePRd z)DIE*0Da|A0nnf1wY+5z&U(G&7Qq?%FB8k!J0eH2zBzN1ZzM0mxl2zx*)5Kr4my`4 z{i@^Ss(-wA*~k1|D`$Mom~EJGcU4`>W6KtN7qhp6^ZPkkPY3&(7ZBZP#gO`UM+107Lp_>n!JjK;ZRy@v3 zIFjT=uW=Se6zbaSWuQM`&C6!he^%%V*IkpOKRk1_qZMawHy>7hOd4dBqy#@ zK2iCo=}f)|bcTHxZXRzQEL=E%e#4zzn8-<D}ypQ*u0}g zd-FL@0HaBgvi+M}y}cw!IbJ>$bXgQYrCQ1w0B~fiN>Bm$Z>nle^)k7PfunTOC)b); z6y}^i2116^lKl)|I2}onv#uj*&j;PQv-ZNZ$lWc6gG%*AxABFAN)@8qD5#izM=S8z zppTM()^+n~0RTpIkc2iNDStg8N!w{=oV3u4{D5Q&xire;UxL_9ovXS59G8`jq1UvG z>F&@M323!$MJcoEV@^z1NlZz8jy_2brvQXy0f`ws)ahwye-7mPZ@VR=mVl8p0BgaE zx`5^_o)3EUN;l2Tqwr86F$v6_n?jti0E`jIlvtBY^!RMh>l)JSo~7CVc6`=>9I_UMyHjtgjouMyHm{XE{Z&pH&WCdA& zh$_i1VM=n00qhCMRRbwjupm!SWCBx?OU+Tk@4PN-=7I9+Ij8sKW*6%#M?ySk4S4l_7i2pGM6ruXt?|6!$-OeEK&Wsv+DXp;jB3@02;V^xvJ!JkX;$gznI3o3h4 zMi&n|%X@BiNZoOT5gy7Wv{5B9x0FxLAb2V2&kFq?+GSGM5+r-7k6@kTF$|x~CC`HC zY6V+WB${Z+e+Y||br|cF`T$=`Re%S_*1gd6O%+XFNvV`ni!C6rriXbV_+m|Xi6Tj^ zv|sno9~U7?QKGnydI|~ed7*c%i@~B-xB9@DE~=z=MOif-sQ(~Iu916I=-5^_kpfqb_v}Jc5!kcvg9|Y zp+*l=Dgs*+mt{jN>14goPPNP$rX=MOpIgviwl5e#&x6aF zW_0#|oge=NiiT*R3ItYFONrd;Vo3T8 z6xPoOofr0%4VJ-CdeC-fS?STpsED(qVtPDxYM4IF@Exg^K%XT_t0m7cJhBaj%DK7|z zU+J6(rvuMXinq0%u0aEkYR({#3@Uz|VNOz-POx@5D6+MQ)&Ha*+7Pu+mzGK3!RIyX={K{CiN28QqS4Uz~e_XmPJ2h&4a8_8y!Ofpyehm z1d^)9C~b!%gEhdnMV~8wkBHpGu&$?BG073!*;4xF%<2Ab4YC3g{gM$3bkEdhbx)Ff z1@ybhpI0)=T4?>&@Kxe&7jpkys}mE6tKy)Eu|?tM?oCD28ag=-=Bv5LJTG*T|pE&(oX?>7fX^gWTw#`$77(*=`oxY=jc#&BeQyp&+oC~pJ1!Os+aQ{(JP8I9DtBKtp?0N2#P4!MnMtiTrD5{%+76v7)Lu?FdOH+I|67 zeV=KAQy51OC7-8}BKeitu_OzDNmM0IjErLm>zS7oWtcj(n+>N86HX58LWZ8>%V zqJ8mWy}sl0-a=i{GaRyn6?>7l+P%mQqR>a8(4LVS+S&g$P_=1f&T?~=-ioSTMWT2n zpVMW#OkFraZDDl1AGbThhbgZ+F1?GSSdx@kZO5Haj~MBeF{SUq;~E9ZLTH!F-}L`= z9R-u^O8M-JSX%HAk_SryUWg%t0#KU4;pfQJ(F&|lveXepv!_W zeEeCRo0lAkluz;$X+A%6jti;6@TDH}Pp*z!4bWDPK5L!0Zt?kPF&LB5+`WZcESGvA z=xYPmWy_+6tL-0_DKrZ<+27+{V(2df{To2wgFiq1#1`;nWVZa@uU_FbKgB=zulPQO ze(2EC&;ew3sBGEQRHtakarFbFJ+cgMt!a#*A2{@tKm!1FX{9_(0jY$c9Rbcj1!Xd0 z*fI1&hu(qF2Qo0$yBPj8O#>iOz37JW`;;_@p}!1t2jw}iG`5Mj-^!ho(hlc|2CkWR zG4un3J_p8c09iv~z4L8Uf&US>Z3*ntoHd62BG6k%asaG+4V7K*Vj+N__aECa^uvel zpv4I=XA}Br$Ioy9gaw{gxO4w=4E;c$`vNO2fCZ&>Uw_YgqdOV|qHw#Fp2pA*8+sQh zatRE`p?KWBv*>8xs222KCOO-uGF1%yC7@@}B$sL(&fdA<<^F+gpjE-oVEOxhpBVZJ zK%W9jl1d=jhuCFiZbSHGd}r?V%EZuL9C}@4K?7B=iCxr;2~_CdFAEKW82bAF-BBt% zp|%CIu>-d=U`Yq(Jca4U(BA{-mXe8TYNSgWsmJDBq=gD;@Aq1)U2My%_p|L$3#E&|aRBR4d6zWG+$csh0{j^IVMDir-4^A` zZK~-oN4_haR|U(TFEG2DWe6w6;{p{qpiMiAD_lkfBci<)LkA z*gt>71Ybs4l2-(<6Md_)vN7~`1^pZRGF-`j7X9P=6~5c@{BQB9z^ zg)YP9?#sIuQ$32rSB=05ko&v z=tV$V?0))K0H4Ot-!teIuun{-0u5pvLw~QJuYm52Y9f!ii;{DDTfZ3k!9s7tWcGTi z$?cCNFzO>4Lw~QJ+sJaVJGC~F(*Hm#V(9M^bb&gV+?kq%2KjogL`w|)rJ)ZY=44~n zy=)_3MSj1Nk~W6^uAtXpl3eM@-A=EoA0(NPXcEzzeD&whW@Ugdk88hr_5bWuLQM!Tf6UXkDcDu}t0%Dyj^2iwa;X?0R(afav$7R)fo7!n#OU2ON3+VYP?sfN( z7I^uJ#N9Gv4E=q8ezgmmFCNue%h#@Kd~^4%Iuk>G3FzZ%RXy{G#|+l~)p~=Yy%+Tu z`b$7>U+X&9!~c22*~P1EnPkF}G4#WSp1G!dSc-2Sakg^evhHQ1a$p+Wg+Vk zQn}IfhO5IJyKTnMUlRHfVPpAd#{OXYuv-248ZNCplP)pz7l7V}&g+A9`~0eN<98c- z$|GawF91DvW4o#U!S*wBB5YP19dlvD&<`B?TDz%n`o-4R#<$2Ovip?ykDXy3=XMQltvS-(YbRq2{n?@Saohg2>Xu=(%B}0bO7)6}p&u%A z7pYrEaC57()3;lE#eK3aG4yALp18HTyT9cG4J>YVHq=S!kle;aCNcU`ixhbb3Be{Sd>-w{apZmSP_eOEhxzrVs?V(147eT=(e zZ(HTctUCj)^58ACrz=;b?Ivq4n!_3mSO=PN_z zf`$<>^n-)$-(C2*`EdOF?4BAkT^Q>a`hoiC`y2yt_h^=>U5nDi&<`3qFYdDui!z4( zQ-uC3M+`lN9z&0z$IxTwG4vRE3_XS(Lyw`y&|~N^^cZ>!J%%1bkDH39a_*MX=jwBv@XsppxGyMPJbCg2SK*_q+LI^f{7;^s zRbXK}<^Tvj_&z?+T-D@do>Yub?K~!)SxPHQKY3Ce^YYH*`C}T}>7$P8lP4rh|NPMu z)EJMRJV6yI$VzK?8SXD)8&hs%UENo5_9uVQX>$~-CKglKXB@%CW~5*JG^jd2$ZDTL z^R0fr-cAv=xHw^8g|c5Z@K9_%}hu87%r>0vUZLW?ZYs=Rb)x8BeA6aNgY&!g!Iy)pQkJj zdjHKTqQ?GT-NBQe@&DUOnDt)p;h1oi$~9ipe?gJwvQF@=hv$NB|0u&+sx1|2> zNB{$K!p>i`sOi0P6z6{>Cw;@2I!^L`);67s{|flGLmqpD_YD7*O08$iCH%J;B|W0C z|0NLT{}4#LUI&Z5NB|icd%I(E0I3|5x3YNibCb~R!+ovhMSct(3qMo(=enek_WNFY ztkLHgLXRUPkAsV=s-v@m^5nIsNgEncLbcO|GQ`*?|06?D9a>#t)yA>uMH^q=AJmPQ ziv_-M3FjtonT`H$6GvYo%7+A6{`LVWR6*iMfWt!txxWOVcmisZ3M+tuWRV((A=7t4NWmPWoALPG7G z(Gu5GWkK&-zeZ?Gfz%8@00k3?;d1{5gvZvy zI+OhmU0S5T>sOA$=0+yZnUdTmHMCT9)jnFgbGT>aNsO=_vucuKv#kQS{QdYs{g zzXb&aP8&&D*;Q71z!brkWsQw#$a&c5bo&DWRe7;2pSfRGGDMZ|&s<4jRJ5rK82V*W zW9qRfHbjh~Zu7-&IO^_>Y!{Mq?*}X&vTkYaU$=Xm zh29-iP$fgDJw0xYZbYqZ%kv7#A}wHpQq}(qP~lclhQpdx`wap+qW-~+iIMTh5q07C za9LkhcZ_;iMy;Pu8|8StMlH{YA_eRz?e&lnw1A>aZ2B&F`>O2h9#g}`T}C={wiN%h zPss(namIDV0^dz=U$Thu#D9($mwG+uzHnCM8IzV=t?rsnz#B;=)r?GZ|I4yK4hp;X$xj ze*5-~EDBJj$uT}Y{=i?mBA20ivE+ML?R)6}e*4RL9Uyre4t(djsf6-nW>6n_)Ku#e zj%LOAKZvw2I{Hs_YTm{@t3k`Z$>|_dFtvE$?7Vs?bw9W`t)TTm#NAzBauTGbV>t9+ z-pcKi#Ff~{VkA{zb7#*XN zuvf0FuZJ&41WyZj?B3ycALGqdYf=4OnX>=;I{6k-iUtSJ3gx9CB|D&4L@~4(#Dq%4rVNO`MOn~xtZ*;nB9^%O8?e(gY^ zIj)&3jt&eQRa(&$p7D#s1uhiO2WxZZMtS&>U=sq8`q)n3Q$X-Mp2xm$AFao3`1Mfx z4Ww4$VjKUe$CBjNmyv3teYZ>8&lhVdy0^qwt(yT;1>H^y%#X^IOGX|jCAQ{Plt!)m zl!89^syHg@&o(Q=oc-C?Cn$r|ug6*{?2NMVR%3L?TSK#6TGVeN@TK@6C{cA{O1|`k zRSSf8>{+q@ZeVz7bLw{(IC)g!$lIZfJ^AlX`<6=xYQ+=mog{U5*ePPcC_EF^PY}$; zuheZo@@ELc?Hd|o2RrwEJuVf;LEo5uB<};a7W1R5+6Jz}0(XB|q(n@{r##)ndN#g6+3^6T1fHz zDn9rKXeK6etEUHP^$`90>rwmD3Iu)ox4p|UNktct-0XSYDz8icB*np`;tnNe)G6(7-~rt5lc zy!z++-Qx27;-i8I@ba2LomI!i5|D7}{zXxz!V6o$z0uSUkTh%fP({Pq3sl~J7Ma-1 zjwLOCi&_TjShXhDG%Sp+2!?-y$qY_U1Ilq^&7GACdEG@3i4srMoV9_s+E75wX~rsk zXVYfBB4xJ-dXo{|sik8kn!AH?eF2tNMmpqKT%PNIZf{LWF6r*e zK`oy#TIW8@JZ=d6s@ff6)WacaWIaae042n8e8vr!gAWB`1v?F?Z+RcrmQQe z@6T%R8PFb$0>4R_^>+Xk9-*qQ(ebS3BrRM4q>1iFg4m09#zWmWQKr-SWCls$97;K`32tUQN#Ad4H*rk z*l|VNXz9~*^(}c?J4SYfAmNaA$y;&DydUp#eM;w*J>3PUsgZ8PU0Bvb!-jpFFz$__ zJ-%>q=dmh|n0mBwl7Bv{xK`}I#Kc4v0JuR(oD}>m8OzSQkV2hGwH)_QKEuR3J+B03 zQ98Da=Oou#fo=C{r)%wN?dvZ6$o}2v7LgrPd=X5u0Hth;Paa5%%ca)+x#oygU&OLE zQ=*{9#Oli~N-~+Mjxe6zgYPXlm0vSyBqolpxUC)m1>jB23>ZN`0}UV0?{{C}CH?}v zU&pt9Z@8GknvZF`U(Id5!uft%eim#{#)XI*e}*MvWC|L2nW*qZ)4zne=N z^umhhK4x9NPBg2VgWJ+$25U1}e87IOR#@sze)4f#GNlAFkoUd(w5?WqqalI@RLRQo zve-#&?ng1cy~RAxn~=GW03MGF`m#2!-7dH&^G?f8pUyF$q`z&j1GF6f8dXG?0lpAK zHg-&Z)G_4p6*{!o8d0O5{%}Sy6bTqM89s-(z;Sbo&C|12?}UW!dS2dHTM7u=*!^*x zIsz_d2AOS9?q|J~Qf%+{k3a|%>?r?$wRhEUgVg6Y{@8~zG2iknc==K(T3(*^+<%u{ zY6vM@Zu-WQ&n`T7`ihS7q?dMA7+o&1N6JshNSfGSVzk#@rTZt^aa!0e!lKm^})$nTeF z$aW)EIhBeOhGaS-IoB!LthNRxNbXH1(*c=pdhT2Q;3HQVUA#Rj$n zWLVT&3{(8+>|~kp^ZOr`z5G*(|KC7B)A;@SCv$HeyZi?wz{5#;`=}oev;TmhTBd*W z(LeeB7nt$<5d}n9gCEh3n<%vdEMt6J6&10zHa;~4u(jRm0zXJ1(GmZW0{ba#)dXrDD%=PJw08!&970a z_+J2HDmoFEhK`9Bo0`h{SU~orm7O3ZhgJpS+qZV6<^M_tkLX;b6B0_fy7B_QXTX2{ zZ?4S$6ZH9Ky*Lv|#)M|i>57Vp?TkP8`kh~|p5}T0K72sOwDBc7%bae_>Y~f;5VXP9 zfQn~APO^J>eK5s#_R0#I;2*YDx;{OAV+ziHbQz=m;^Hf*`&yJ@X!jgArczQ$f3Y~L z+8WMG)2uQ0P+Z@;mF2`)cz${z5g8QiYgP)on%2mbX)u+7kBdo+FGdHU5y zZk#U#)!W@Udb;1V&#Ju-B$JvA+V}gL&c{IY~%%UUymDd zOphCVcgmLs9wf}ESZm>>7EhA;kPtUM_uFtEaRnpd(c{r3?fYV}X=N-*V zbaBWbaVlVU0smq9vm#DrX3?{=(|4;HKoK!+a}<^`%xrquBX;vwtKFh5&^0FmtyMJT z&4hN#-HVDAyMBfFEfH6|0Ra&FCUdv4sPJc|QR^C`|FvJmeV5;w26hwv0mSYQt$ylq zVoT5zCr54$0dtnq#8D)QZUIp*6S@2CA&wEF4E!6P1fi0As~Y}AHRLYf5&V-fJC}-; zM#l<9F>{+3EvfqKW(_WeFvGIl%K?GnMVEbt+nvKQ$Wb9_$&}^lU_<&mi97+Zu7ayI zjZ`}a>0ZcrnU@zj2Vx2`^35Z(Fl9GOk8Rcn;6I1duYVUMkU$-okmwxJ9Cj0==Y4F< zZGhgpR6VYj7q0Chrp2wW{^Qj$+n^QIoU#D|E#PuZiNvt+Ylc+T&-%~Sku2^MlEpbe z?gkn$MmMhz4#XPGi^Ugd1k$pOkS58tf{GaT-J5OAN_m2u>dZ2x6z4kVXxQiLa_&cD zkW+M)Skp10n;x-jemT{;-_KEyyZ5mo}&J84m7x*38A9t!}-wzy#pK@TK;BPyDXJP?v4Md>iIe!_2bnWxZjmL_xR(=fi~OHO zX%`PB7{Hm!F95_^UUO685Bp|eJIdVq7C$TB?16{4G?iWz%BpkY%D42W^78#YP7APV z+6zH^)hel!KfjpSkx>8a(S*IS0e8`&OOXv^MbE76S59ZHZ>lAX*ZPrXiRxNEqje7G z@o3o#%dDj28pXU$%ZXmFOQjYG@NR#}Ele*8a;!4%rFm%5I!{CId~h3W#orY%LYzLJ zLn|e#a$4-!x95v)jss%m*3g&Qn436YHQ+&xmbUV*Fg!7*%o%!>{$fuotwCw%Wox&u zV{7-z#$hT4kyaI(FIAxdzPJLQjl`s+l0sR|=GljljFyuL3lD^+iTe4qi8)o260>N4 zAe+H;q?;x@_t)w;-lerG@1$1ux0IzXy~)UZO>g$&tRbOD#O(5wZ4T6Bqs*>h{0#DRzRj9bUoPT?+`MQnNBrEPhy z#YOoka#Rg|JypUm^5N(*8olvt?~Vz$rasW20bV46;cA10)OxPu*WGfH&HB4)zLJ@c zU*IoA@M<`QZ+GJ6+)SOw_u8nK;}zo3(;?#azoe8YHM}B`9*Fm?TYR}9r7l^~JN_yn z8b+&STnu6ik$=B%7^V>W9$O4#YWgIDfyi6yZ19@&gP9p`$Z!U$n2m0_fG<;opkGv| zp#Jbp*%z?S)+pwABy=lE%0G}LpeYVl6Y~R5N?BD4_BdtHzr@pF4tcYQWzmDP8^e3s zJ#8B?{PT7*>n=y+O2m~)SpvQigF+91Mv}**+29B7x?&&y2YQ+oPjuVOx9f1BqPQev zrVP1yRr+R?B;-YDU7BgLD2b&TjR@iz5?v<|QFe}h5<38gKln-Xtj8>ND)*}v2oE?- z*_*qzg;(uIiJwJ4yl>JDtDOs9+m2g&0_nx+I6fZ!wx8KdV;x%5b;0Q zECqI6R%~8?PBoUIhX`lo{W}C{9(14oge~;V9onzxMzBZZKbHqqz6i7+rnY|5zfkJY z9F^reIHPL?0k$H@+EZ)Gx)9I@V$dS<%flB zZTPVHFeXv^mVIlUf-5^4t#)Jh>Abf=p~6TKBd7M@#P^po4Fxf~LBmw6mvKe)M(@6} z2_>kAi0%C{`Z-XcEWKX{tI)iW7od$(T%` zEs(TlIGvdEIe*|&kfImUM!;gU+SH~0AW3hk2Q_*t;$dL*5k<$y>YIK?m*KTnBs=;z zGqyWa(Z8t^gGF24xziTZ+;z^Os<$*;V^V7WN=EKX6URBDL+9?`Q46j1>{38ANBuy( z!fGyM`^pJUDX#*3LdFKEf`>(ONZ)9ew8Wg7C?wgi0|4qdW;0ob7k_$a3eU^JJYGQg zCl^4VX8gI)syxcRlv2!8+&Z*7o}=w_o;DpU-Ph1-<6@2xvC#RaE%vY5ne$gT_d&*R@F0y86BsH~zF1 zxTC3%T%VY4<#1l8J-#=(oN1`<$mN|CE_K}A^&u`>LGR?4ep5!y@;OOR4Fgtl05caT zG`|*l2y78=X@buC;;9i2N? z7uYP7)44G2?*{xCX&Z%$({jsTNTL0wV;k4cQu!I*9~IACEwpT6r`L2wqs)PBQ zFBQ7BG+^h<((f1PybpKn%~)#k2ixOjb*s zFoR}R&eMzWr)`ab#?CV#WKqes0nMyAqd4!6x>=i7`CLTJMzg(pK;%#B+;Db1eCm6y zJlDucBo_l}Hh)UYUv^X>FuAjK18HojDgom3m}~Muytg8Y_{7J{_G#m1Vv82+xCeeX zzO$z}U#q5$$i;ZyUAvP{_9LS=&Y{$f>VW}A`k-c0HDzc*l4n-_e(o&Dsm%V5G_`JJ_Ks?NZ45CeX%4C{Q*#Dbbija zUM9O2_%39aj!Q6_yc!UQqicc?LBIhA^Zvo3qjYBH`n6+R+MHe*MmFjlL7b_)Kwe7C z0s_h+L-KPdmOAzF-DMy67T0jmF@Hkvy^*6-ekbkAz|h#%PZ@G~uSp&qO7XBk7) zEK%;sMibZZ`FyjfKm1BrOzc*DTa}%PY3=+886>@VeBW2A56yGMaspS*8D#-{+_f=n zAHZf>-DIJdmagk}G*r^qwXq}TvnH}3XDb@gCQC0dcaG0isrIzaJx!@c)Xb+#)^G)o z`OwHE9V{ohRf_8eo1TE!mf<=C}{wd8G(z$z%=(3wt$!Rb_8} z+J__FP1(}l_3fDpnjGJes`?49RSGuxE@dE4V#~^?mf{zYODuOHH%Fa=7R4cxRtV(5@lH z7j^2KeRZI`(8y~pZbV@#sOmc9I;yN$R+w?MPI|C)D;1EXoB^7<2xogA&AVUdc(k2> zNYt5bm-@b0EidRY>I2f!y#H%1ej#?Xjtvd&EYo@0zT=q<@9+b&mQC_W(bCr#idCHN3$ZQ!k+&wYd-%o0<+s~V@9;p$ z?v@R)>IXeYa!$T-v+M51LMw9HOQ75ybM{A-aZJ%nujb}zdAZV)5JHHi|Mt;!-|=GR zAj(0Ip#50N>nNPXYt0!{k)iRRlKQ+TYfq$X=7`hXP&|Jm!suw_=F5a##w?<2XKha(kgZB4Eg!ns@JZf)D0R&+AWPATaC?UCH52|)OyWL=hwe8Rc6-WA%31t z$ClToK?8kwC0oG|Pu)lm{Q72b^t>USAJBZ%JB~ z{b0*NQwc02S9EeBadqKMOA-kRz9Qp=uVKFwSareY6BP~Nnh6^xiWXrFizRrO9LAd0 zsgxR2H%iX(i~=kABc1y_^}^ZZ>~;jDx^37G5_vBpqPoCsI`!6LvB&ekKA`-(@j`RslbI%fS<6r?Baxg(_KO8UT2@Eqk_|xP zNauj&k3mKBVb}{RUXAy}Hq0%pJCSgFE%e%|?PnJLrW90S5rnNBN@sV2+Be>>^-+WV zb`4z7 z`};#LT^+F!uHrAK<|sx(UlDS}Eh@3%oJdFQZbfCc?KeAp+MQ5uKJ9o4IemRbYreI~ zYybWJvS~~rV&Y&}VQTyqxRVccEu3MvI5e_p!EV>-CISFS3CZNL>ly#X6v4&9k|iZ8 zZgM^Mu|*phxbyUl6ujyIhz`rQZ(%Tg5r9L0wQX}z>$f$MuaZfZqo*&{?e!~dcvqR zA%2TyH4c2uY=pX*zJ?s4!cg;bJstJoxOYTYQHI^SQAVq!%P7)-t1+q5KB}?HPN{|J#fql)#=JM&107tX+108ji1QYJky)MM zbgMTu)$NQr#B4eS2Y>xD>0Wl5M^mf+jBV+pF*NaqC}sWcG%}g|R1*6I7Rc9*rr9lvn8{D?<{wWrM(RvZjax{S^Ax2)D)DV)g4cyFRwn^-14wQe{oP+ zRNk6U(V+Aufhdi(2>QuDOxeb0&Qq<{A86RKZauHdBL_vB!8tb+c+V#XAV^4+O^15c z%x|ds}R!p%UfhzGHf!p@MkE3pvx`sKn+$%cN~fk~|^>Fwpl$!;@9BLy)g*?j?4$_|?3 zWe9y$`VA-L6J$O=u*;(fn&JFqs5>)$2^s+6?4XHU{Y-QFDdQe?)w~-qqqQXSVJp^WIu!9Up#n`z*&CeS(DK87(Whwu zU(LTksc`(0mO-4WgnH-UPk@<@5|S^>C$>NgIi=O6SJZqLaJp3e6VZXdT>V2QSY za<==35m1gnR*-!|3p5$v9xYs_6LJ{A$oM971GYRIQW=m0zPhbE#=i{s2DAtzfY*fH zg`lx((D>S(up%tus`fDs8t(xWMm4E>B)u+j>Bik@MrOQtA0?lWx0V=B*pw*{c;m+wD1`Yo3y4NqL^!Z|cuG~Szu@}d+9N68Dp zwL5P6wZP7Gg?_`wo1wOjPN|!>do_QKUX#K%C`?x(=h`(>L>TqThpOjF*iYj#_6nc_ z{h1;1s8iweW8F*ch@z@U4ei-frBILwte*C z=bieA;PG}s#!T78Yj^l%gFFHSqgnVZAp(uj44sEYyK8)TwYa$WP@*GmrC!z4Jddz7 zv}6D5Wd^r^3f_NZp=nGJYj=|Je7JJY_F7ZG6F)_#x!SN0+zff}B zcRgU@7*bHX&$k>01|iZb3w$z16q?PLa+#8kJ#UThV)#ynV+-b;LaaL_82j#ySTNMpe80% ztp&FZ3T2bpmrajT&I>-sEB;^mFd&bOy0MR|lqryT{5l{dQS5K2C^*nPa zWZYRKq+SkZE??=5M$U9Z%JH)15 z5tf98an-j>8yZ5*R(prNNZb4t#U#D^dr3?D>}U@g-0LNZVW^dA)D^wdT?d2s9X_Sk zO8v$|twYNyMw_#uVA>#wN_k|!y8HYV+0Poj%)XBZZf&XJvENkmi3yGBGwLTPcX(?345KeYx>HNn>hm`#>y1<&n(C#rep| zD=T|T6L4h$eoy?fhiooX5wbo5$+ULVB-IDXOVId=bk{%0JV4W5dNjyWKKmRI6beua z$CD6I(|jy|B-|L>?o94jYoUMpI>J71a`~&hHoWtuTfg3z#P&X?Y@T)AB)@*>!$8Pu z#@-OZJ#hM1_}=rSX=uvke^ax-2Jp7lQJ~P#Akrrs?xrIk1?GP7Bk*K6Imf%-_j7JytT$=ss8p> z4RrA{{1;3mv2}h5Ab&~FY7cKplMWgw}C!|Lj=(%r6X_ zI3ao=#^C%M;+nDBY+41MU+NMQkbG-GvL@r#U^6J9-x70zhsoe77%L%^KEz7v0AYa>Z-jWP=Ze-3K+8}*o{l$Zxlq@+=9S8?UBTr)rHY~qj< zG&p&biu&Et-P=@2Qked>bjur zL%rUVjT!QM=e@~sDN<(G%VoYKK!o~WH|-J^K&TLqGypkyT3O_&26;+s+N(hKV$#di z;lw7hogaDw2-mV;TURn*Q0etMBzH(dule|cxbk@{mj$Hl|$ zeg0EoEP5LY-tbc*GU$TL!6vEqZn&k_^>^5emZLfArf$U}(rT<84~`-WBb$>BSQUIY znpAALb|J)NFa(em!B^6T2O8NR)MH&37$t8Dc=-x)_+NPM#f%=q+9d~zIOk{J7(qp{ zYi4U7u~ZM|{TFM&VW+z}Mr+?&qycZbcxwo@VoeLh^SR+#aQCVEdNqHNS`R z_9ZvmL8HzMq3mbl{1%&}mBKHpK)=7{qsDoT->(}UZhBjU4VNOB#lx5D@JMEpg2;Gu z+(attgj1rlw0FwUiuu_?=6vBl-kDu2*G|>5(T#bA^#t37@yo}rSQjG8b58ed=e@TvfCE9Nez^A3u=KE3_o9*iLW~a8VME^MV zR5EY~Bo%z+lJUJbntC~Uv{qE!QeQ_CIvVN94|~~uo zs?yFpDP{;QJL{+OsNHzbdA7~gs6;19{O9gUIlFE=N&InR^VN_!+mJ%`H<34KA|vSh z4k$|C{fPpie)&y1M{urO&R^FYqrnZ=JS=$DQrjcBL}~FDZMa&hti(UGXY{*mZo=G} zsZF}5^$vNCq{R;<7KSu(1UEY0e4qc-V3)KxlkdU|&)*FZ8cS`2ok0^={ z!t44eJ#6r5;re_^3pZ4c&fWQ+_TXRV#6C7o{7E&CnTiPt3*o+k31v&buAQ1?7lC6n z-0i605)Z$aF+yaFMt0bVY7ZpI0Fso~M`zFJ)ykue9|=xUc;?Fsh=lxCe?tbucXQ) zuf0i&c2R%N`JCJEg?Pku0^;8ws*4LhJzdhE9v=-O&owt)^@*oz@U0Rbn%q;T*BiH>vHU69Mu|7P_q-NEdeKl7 zw=DUMjzTlWKA9HLBL-=9sbpdI=w4zA@{Wxv^=3h&UGZ?1aIzBv?SvNAB$f3 z_=<Gsyc3W|Ceg!A~)&0=u9~8(0nE{5Ytd@zHa)AodU{z=Cbnb*=u%)jFHPZ^Lx4D*LrOs_Dv`-}^m7(ZRZi z$69A*==y|~toowKgIPpUx8j!btvmU{nTjKz@~YSi6aTZ3!SD6<7tFRuQ-`blHz;bw z#=J+4e)rDRSBoD;=C5VK6vG54Z6{w;9FBDEzAe-)7p>{d42ucuw8(F5qdD9~XxH?B zx77oIj~B6SRF~B0@HQ!Kl?<9J$-urYouO87xRe2le!0Z5fYgqsRhRXZS9I3ZyRFrR zXWLkln1mE2Ob!=sP2X&28}&VXic41B&sbEDK<@Zv&TZk+@6nT?uTgYGP2pS}$7cB- zlG>Un-9L=^|Gbmp{*PFf{~dgz_zzM0pAucQO!&_mWUcU@7gtnVfW6sSx37%m{tdk` z^&z97>2ZK1BquXVm3gz3R90Sc|EEDk(*RJ7W?q$OJioqFD#=K2I|)x-gJjI!;dS(9qC` zZ6WOub^2>VAAN--Qf$DiU9+(PfUt-d55v-{@6pkCk9S)im6avD-{;?_`vCwUC}mof za^i^t5^GXN&b}s%27NA6#|v!iV|+s{5>ng7uC%xdCm$}v!{@LX`uj)%Qd(ro!OqUl zrl$0U2I2p&{JVc-E=@^ z=N8HVoH9xVUk5iR;16Sa=M9SvFJ8V3kBMPnVCZb`=(YaxCAgzQ8V3WNIl@sa+v1-mk~S&ao`|XuzY#9dXhWO)W-?uGgO_;w zu@$LFQqUcHOpiPo^1C}nt=|8H5_xjBp3e)%>WzGpad)uU(`d#8ru8^X?H;vE z#t@J)Hy&h0sZYl+nF&}&Ogonj$PVdP{wYb;7rdv78P3Qo^E=2W>rc<19fN4%JLR4a?@r1uA^b-yAW>YsWz+@M#s)om4@BW?WY58G-((dCrg ziZ5?_5=0c)?e*P2DXP`>ETMMywK?a=Y?C^ERaavcy#N&N;RX%eWncAVG86!vyE*of z+6{Lx6u-~n-(OJCQ4jz1@cDd9J4J~2Y5JE}@M z$&b?as_K}&Hrs6T12uYs!k^*!hpK&M+_?=7AJ0RHGhWcYdK}@ol08US z{dbI{@YU0d@R%`1vy7NCU51fKxpx~%w*|bRNt85ye{SV$S=WhIa)Pe}My1?{Ju5!a zEbqVh=`Tu2N_&WEUUawwp9FV?lr{#hS&*6wZmI5NJvtDrV}3j>eT_80K#7eef1(r< z)MITZgV(X!sQbMC}sgEe)`bImXy&p}UhiWj7Op z!Xm=-Jyno@&riD;E>8@S!mnbOiD|zn^a#@S)&Vl>ttB_g5;rHr0|KCZVxW9MK|KhQU*SSfO{O(KnC=US5dd<-afR{eKd&;Ro? z*lm4$_s7}J#|A2xFV68V;BHLPvdWYLa+(Ifx94zqhxR7Kz>WR>0H@`=0$l2vb6c1 z=NPtfQD_(d*&V22O-|H{cP{zigjehbfK*>i0c(UgL(anWiqS7*(g$5<+seOfN(woc z39pvyX~SG-2H}2C?e@Rlw_v9?ODfv6KMEd=@cJ)IMiUOhIns?q9?jls7ngdt>+smN z+UVL~r!|({>v9Z+?+26N;z}<23xKyQY~0Y6ENDw*@yQe|Xvw>WS7r`&)GS3hZllnd zSran*a?1G@>ZIAzJbRHSnB_=QlB2Jb{;9`HMwBFJ#5B25f9O~Dj%>00q|?>e$)=F1 zRE)#=cO&Z0ytF>vDQv^@Lk5i;vsD4l@g2!38`Y_M5fPmT5~!r7 zfDZs0%ZcKw;M+RB^aR4r=KaT)NzmDZrxqy0*Aic`hxJZ?x?&2fDv26HJv zL<-pvbxcKdNqh>nI0u{Fu-M|OpZ>gG{Vlosvi|f)YY@A215k0Zgi)cs!7r-obaqy( znWCap5YBkoe^cnDw#jLMZ0aru)~m|AX!JOd^r+r7BQ2Gz|9oD}f<#~3uv`cTPJQvX z|AO{L9)0m&&U0bovzntEa;rni(=~KD8#+js7IM1$Vm|j`Ptv5FWm&7}lTijBqf$9v zBFlM>aYMAGde{`i<=)_eWU)tA-&KrhADOE=UoEKA?Oi*SbU#|l&zkN9iopF*x65Ez zU!HgG2y#Y47ae*{s|gDIp(q|oO3G7DSzVR_gD&7?cumc>7Sd17x^7+!Po0DWC#Gh? zTNMS8o%nn{y!0>sE{<9jV`bw6vG`JM2>5TWsfTA0hE@mgg`P&t_*RAVTmaJ3L${GU z#Ul)_ZM9kMFVJ^eE7c7_3WLThg`g-6O~lxkM(Chbu4;Lugx6On)bx|y*-XfqPAy#s zR>DgoOI(ncU=0f_xaAi{Qh=C&1ebXBdsB6F?CMl(5ryj7^>?D8pFV$%MKw@yzH=hW zFUgp2;l_O}nOv#TJqG%uHEe>%%*j&B9oFT689x2RHLK0dGZefSmQnN!;11t-cg?F^$LkCFRiouJefGn*O3O2`j_>$1a!;j+09qgcX%$b0Oh@@H&jIlSSm#@g&O4@&q^AY}X)80+kKyCK7ZqsQ19rCDH4VL#&ZaY8Mao z9FF4mG}N708Uphg*}Emsw-86KSjm`-^m}iOl-KGy^B-09GNGreo5R&a1p~I+{e@oh z9`z-skY6RQ_2gqj!6DVMvV=*Qf$Us23J2)Ga*3H@&ePamCeQolsvo(AfgX+piHp6p zp^{Hkwi zS^*il2?l1x#S5sQ)To$Pgcqy}U~9>ML>jnVcpm|nOhD-ER|Lp}f%Ux$jjcI_o0(## zGF^dvpKOEXI{!MTe;s^Xl_4UREO|7fV=j=-K}tsHyT0d0hx?Ysx!DQfm-&$lUrMjm z_vcZrM7jB?n|X^ZpJ`NN&*&72bnBKqMG7wF#jPL!Buq6bKV5gu`sFa)n>UfQsZZQ& zj5d1DuL(c2x+OX=gHbzCaAuC_v?zPi$(f?8PB6z^E^e_InUARd4o9z{B?rfz)myGS zW!mn~cj6>n&rERRM;xHFr#Bxz=Xbv)BqSvL@Ls*-Y5Md`>z0J!{rq4{y)`kn9lNpR zH}pM_jx3;=r#2<-^3142aM=9I;++U0ki{h)e(QQAcgLU1PC| zc=VYXO_Lu-gj1Ch;2VJ^B2vPDUZHD9RF0*6V%7>2=FKDZEw=W2;l}f_>X_msS`;3; zM;(D{=hHv#h=xIrqjjku@9QYLyHz334W%~ev`VBIrXE1^C!bs_xrAzBe&#Q9JPj84 zkN5(IQ}8mCyV#7BF#|BxZ3mIIH+o#F!yi#ythN9VG=oqlM6yYaw~)x`+aav7i)oOS z8p#xJsrTNfAp$@G7)_Lf0$b=&%HfCNIY1a}Dpg1cLAcPF^J1or?5?(Pl^jk`l| zcW>OaA-Fbu``u^nbI-kXs{U2CZdHHl553mvvF4m(JkR(I=Y}A>Q4 zqhhE!xtqfPAs+;8rd*jnIUe{8;TJCM3q>`8}dwe%NBdo`CA@})va`z8VRW;GyhUO6?=j?J-hUT z!JpxLT-BwG5n#ZJN0*B!msUya)``8wtu-YNfA$_dri{vQhrc{uv&%)JHPt-W+%P(_ znXs>gk3Qr`d1(HM%b8)&kL6EwwR7TQwg&LAe9JQchr$-`&N~xl?a0hF+4Jn{(a|u zt9`%r--mJ*SI42GTQ2t-efp=k^=3ynx{`g%>~(K7^hARpI=nsepgvfTCED*&Jh;X@ zCtU|*+~(##m1BVx%)rJ8ANVFi??UOESl>z|3iyUS`DJ^HhECzi^S1NuzhB7#w?ph(mjwY66G{Rhy~*h=ed35L zg~uvUzPl96AAKZyd!?6q%E6!uIM?t<9j75J&u`%S1NvSWwpGu|Z2u@t6rD&@WR+*2 zKvfQ~(eP!&_L9%VC&Y%e?3_28aWeyD!vRrWT`04GF19t%vnyqYX{_wS z8AQWp>imsp28|ag-adn2(VQPiOV(}3s>_%AD2BK|TX`^AkP@?4xc-rhQ3ql<{~8r*zVbR*6LE$qv#PH1!V^jxRaJ2BNC zlqBHe$$6_%U9ww#Wc6W+WJ^rTOcq_U(;zDplHV{!)bQeOxFX#c>|+iXRchpV zoin_O)I#wr&x?ObQ54vS-Ofw|xU5Z4LDfp3a}F4XqDCKk;=_w7yR(V9@66AiK{Ty& z#h;!xHZM=1uN1LezG2PoDaPf%qR%#;RMJs&gqgz|ioDGB&1zkp;f?okTsfA%YK>T9 zeJ(kp@~g=2PRs$x(iO&@(JO-KW9A8LKH_3U)IUxCUh(h$B3;D~=sM3T@P}9L#wr>l zm78s~(Rjb^2+axR6r3M#i^r)qO(!b55-8Dnj{cLu6HL{(>1p46%|1Mt-j@}Fexol~ zIyNIirdtH_vAH1bHjIqAS(s*SVGVL2fbcI|pJsQf>Sd6f$K@hv1m=qn4@fy3IULd5PhAd7Rhg(1{T?oCg4MoEdV*NwsTZs|(L!vsOmROd7VO#92+P1mlgSMNO zT3&TC>+4aKL*Fij?Gh?#&58-rc;_V4OffVx3~t+0?D0zdQgwK}bb5Pxh0?wYoM@yw z7B^Ridw(Zs1SQIUpr@_0$+vBZ6lz8Z6}u%l1m`oWXn)45f2ud!tA90p)M#AmrD2lO z;w5A5nfLSbk_riR=HQ$Oj^EZn8IE9$H&Y!_?yR!+xVmu2KH57@d(Sq&W*TTiLr0M4 z-6>(e1P&O&ju|Lw7&}FsJuGs5EMOt_ddHE(S&ot-)7bg*5=l5~(K$->Ik)&KALLpj zD^{H>m{nS2W-@0HhfBoKWw6gEzpqdpe?PXmS~7cDQVh(psf^a*p5@6X7<`GR3Pr`j zesFf31vsxweT9-4KmnVilW5r^qRT-VdhVzCYmJxa4qa>^RAOjopm1AxM_7Vc=~cAR!Tg9{oSFluX@oa z4vtJ3s9JH=(Ts`}XqZ-vsB6(^g<&LMtnHk#+h95htFUvuvTm?KRzq)#hx9FJVj8_7 zhID;fBFXc3#bQ)Ja@?0k7lual6S8{>7|v6>O4pT0+)hd{Hr|H?(dh-`hbVTQe{1h^ zKNK(qc}>4o1xUt@Om}hODy4bbnyJ@+(6-|+9r%tm2tLr-Wq3r!B4;LWav@fs@!1&cyl2^y@KLF^BE7#^b9!?|PQ!?pLdCiN z_pgs5_@>k(g_bw(SintynErlGHcRTQ<arhgNx4(6fqdu560HV5tXaox{ z#owJEXP;F0l3F`v@isQ?D}&(3QIt8JM6pSMi~ZeN(( z%MiJps6U0?6&0>^|84KyyV5j9(hn4Qn<0ig{cel&9H7={Z77ebQbya)O`KQRCJC0y z7CX_aTbg&`>CQRW;}G55O$Q{fKVb=8yD+MsBE+sNdA1@pxB$E03~lIAtU><$#jvHA z2B1(%2dDuid&pLfL)SJSON1$icS`XYxPcoGsUwwTH^v$cfV<~`wq z&_3cu3(=*7oqy0{qTw>8y#ZYM|U3IIG#Fzj1lEpNj{o+UC zT&hr@YH4j>wa}ad&<$OVXLoe)uXOq_BYhYxwK^%#*C+3=^djvc&k-SNeD_Sd+?tq; zCFdZ6R$R%XXW0@=IRrVo683`R3P5B)eQ{_~>kbt`yr4RVa%?=@<={lm8UwK41P5=)+nIWO+z_|>~_m{#vnRHs=)ANH@)lhfH) zqxa4xIV&;bm7jI1?)G_s7;BB~alNAsA*v}X&mGNV6q6}>9@M9y9tWu|d3EXMPl8Dt zH*wr7sS-;83Agk+BV0>r%Cpkei7AJlk}Z+e?{wYJ`2K9Hx34@+!u>$8Yr!k}#L5rH z8Pt>aq#kUH-&sY}?)N5?eTz6|ZW6qF(9gPI=68IosDo{JGK*%FQ2&0cE$cMfYdPly z4*D?g{J5rMV5z3V-e0x^F%;)P0bv-KZw`BOWr?J?uvbHO_1B=S?JXBb!iO}DNy>Wr zy=4l7f@=AiVX6dRt~k5KghZ^^ks_^UgB$-LAK5<>`zQeke6IzS%BV8y_~HIZv{d@qW)|??VHYh-b`}G05 z3n-VcS7*9FCQdzV`fuJ5<&v1)=8N6e0Ph5v=A_4NvqygZF=CY&a54O`CFzRvV?yYd~t|zXd?ne8=nqR;aLU%y0LMs<& zRRfac=4xBGdWRVBbO-T$u4-?wHEF#-Qo1tye%8Q0wWk^Kqv}dn2NFOG7CD_usXBPl zx#ekoiOMbYek$m$;<_{w!C%^}GuS^w{{f4d&im)$sWSg#vd5khHrWErzY9K^KRTg9 zVN*S=B~O38Hdc45JNrGZ6yMK$MpAvpSd%# zZTjO~D0NC;p*CW2i&i$@-5NRDfpKL=zutS=9q{w{;+gm!V#lu3Wa$K1a#VlR+Wo?L zG+W-2x^U8OHfed<_DmNfyo&l|~z(5dmkJxC!N)ifw7@O5l z6A&WIu_MA`3eC<~Z!fLouko617u^kSK>dh=n+Lj~k=7y_ELXdHxQ}TdE+{O{FS73T-YjQ&u97M} zMR_vGEuHV9PX8#4%P0_=FO|o5CxvNN3v*gv5!d6(y_lC$&A2U2tEkC3N4xt7;EKU| zskF*m`{c9Etg_qmKuZTO6@HhQw6FMN(?G4CDVcXjnMK4RnOoxl&gA{{K(2+?(EXO` zDSw8#PK3J7Q|RT}-@t>Ku<#8rLnlM@b~(_$Hc`@-kQM8 z^;>kYNY(I_nm8*TVMM>Q(ZZ8d%`$&l`EnO9?#KgYc~>2>&x;M)T(7#}5l^8rD14tU zvvvZNvq@#BZC2!P25gqVx>4(QOl5Dk)A?Eyq64((4>&HwV08SZ9n5Sls zU?hKF<^10fn*Y14;Qyp!!|O3ErQL-ZR1bmO)wH#xU0pfYEhldr|2h*A5%rzk7R(*L zj1`-hne}($qawn?!&5IR2K?{3dzL$2wz`%U79O6It}bW0vRre|swaC&l!CDEDrY2pP4tDw0wi4;{fLo7>@y|1mP0XJ7x6M6u`~MH2He``mN?=aT>&N~a$RZGqAh69dI zaPg@1*AU|$I|YhiVu?Jaw4Xm+@T8(+Jpb~1KWez2o!K80V;MZ6`n-cBT_^fi;yxHe zY2!S*Ft6kYh@JM5(Vpl@8#2V+fytY1c6w$OMYZIJvPl=3AB3@H%D*HXrC;_>g-K@b zc(#F#8k?tQtDoR=(K~xYt>iH;XK)MpP(hhY1VeYBVnD|F?$-}vY*^{+uLU3RknM-(CC|zH$85VH2-S_E%}{zT5OQZyX15==N5Hei zZ7S%bQMd-OvU#-{q^bKXh8(T?M|A;d&F>oC!GNH+^EkoTE6oJwrJ1O@nxDJf(m?ZOWPfcyYsK40`ZS~iogFTQo7Z+L?OFdH1BemT$JNSpff-66hXjtUtC0z9R z^Ct9_5`+RnX+HQ0ow@VlM*c1>#qvP}^RqH7)LKIon_7@S&b;4WRtXsMwLhDxzcDrH zKeZS(R)f*GKITyl69GW56{uT87m*3=%&jo$b=+5Q0oYUNc=2i4 zfS}P3`+T^g=Np$a965CkkrJodO$h28=e8R^KFM`i7lSf*?%TIKMTlR>b#KV%ap}Zi ztP;kjt}Ppft_ySrZ9<7}8oU!;&zE{$yxZ~HRQl@8`Hg`&(RCzTHe&)scG@CW$Z*kI zj1wYSYBY?T>z;iRZwYVkCFgxe6gb@O)aC?bTX^3G3r!1W|EXMT=A2j2SCR8m!>ZI5 z<5~A+z*>dzUkJ%qa4(MXo48`!FanZ^9NS`um<$K^Q>VUA@aPww*+ zLz?pmY0EfrD9fK9noMgF`a3>*K~SObTzcTxUBjB4JE6=>Akg`&#&gpjz!}UcE`J7XAA!5N>*Ydf%00vYId#m-o zVN%J}Wxpo<$=1b<(9x*1$s|38dU<@b_uVIM5uHKce8UO6#|F+-Mi2Uk=| z;0r~ACTj76L^Y7iGnV_TftyO-FX2c%CMjLaxjgjZqgWXv-4@#kPF7{SmH}b4gQY0r z{daip+-4r8e_ALr{_eQ%Z}0fqjr6x-q!*J!cHSsd7vhuS*&G5D{5YIZfnTuj&RM&% zx%`${;PN}^^QEKb({H?Gy=l2%$`Es#%)i%MmZD)J@(tHJA{k)Zl=YUlq~SQzizY;% zN)B)Gr;GRT#(m=k?Qtzf?}L!mZ<0DB4PDu)`pw5##fFQWB1@_xsvf~`Z z(-eSo&72$wVMRLQipUf~0&lWyJIFj$vM+@BjvqHxJJ>CC9OwjZ6f6==F+gTxxSm`Cu^mn+?&{b_x^;>j z3ysDoav+b2gmO9C)l=P*YSkB(PBAgPT30Lg&y)~jJW56%by9=fbq|C6&Q6$B23BAj zXV3KFZWgicjv6j?`us$+Q1$v7Z*yZ5m?(VlO(Z;SgNC2Ogu&_1611u!r zulS=@;MD#06DgkM`12AcY)=GNz-I{gutL_&#rtVY(d$d!419}wT>i35T(pQ}sxB8N zBbBH4OkJJ&Msh*u8-Py~YzVft5{towV$Dcu{4{&t^aLm=JKyZCF2gS!Dak8G`ssqCmPQ}suZ%j?3(u0?F=16NSg}je!{M)Sx-NhZ)4LmI?Q<0FXsXl> zpXqQ1qA|G_zsViJ!^?}MA&#y*&J)d}XX0o0;4D?>j4Zg^*!&Ud=g+Q}iD>xo$iOID zk#8kO@yP#F>uVzDV(RnWn!o;LsZwXMW6x}d|0_wl%rfXZWG**_ zanktw%n5g#puqdk|E^Q*+jW%rxSsDjZo}rV{m9^B;b~cynfTXfiMUS5eGxQZBmdj6 zr5cO6pH6!BEVd*zFETZz1sP2#W?u2PxbBC=bpwox>{q((}F9k$Lq35zE zqt~>;Ya*5FQ4822rERaj-=ck-ZqL={r}v}}h-#rtL)~XY8s2m`$WCpaYE0)s_mh-w8G0Cb$k=EtTecVQyw-W^Ba(iI% z=s?CBYRG{(K?seo#Y``mjKwDOF08Dn9A&3voPvgvSZ!M3o`amC-#G@uO7WDfTF{%9 z+(`T#Qz1ShWg3IQ?M01l$BARE?mXWqJ~ihgi>{=`U$*h1u(9r_=vMVVY!ywc9|>_} zq&<16UirLrua9ijqSf^OG+b|0(wTu=13s>yY8bZAoG4l59TVu9K zBZ~tQrgn=jT1>f96>%aV_Rk~DXet+J%gSM~QC#HVS(yt?G%~g z!xY4i?IWAXV>$LdBkMZfL=-R-+=?4g91b7XNz}ayWDM$l{k9niyZbnwIMfv3FuK~A z2l-l8m>yr_$)IJoRe!%Rad_Sln2f@PZ(mga=uF>;r;zlHtiAn~%pb}tW3f{zw0q&)(_G#Ea`KZ)1|nIpv#R>lQuyyR5Z@r zld6IiZZVQmvmX{Y4-jIh&Crs%!ZZ}ss*|KtNhMDi&01^vdzGa{p8eg91xUVh=;Rw zbR#rw+#^0Etr2XEM{>JrP3IM|(bO9*7#^D-qHnvi)1%Xr&M533N9KFEDsZ=V-QiHL zW_`UgPg+6UFC|N~zZci&Pe~N;D3{}TKmcO_vie`%66q|yA{MuL31q|A&*yV{$t%mm zPMk#Dx13##&hLm8wOg;}PIc0gD-oB0e$R959QYL~{gvIJ{AB*W$RImJYxNx@mglAd zPY}nyQ%Yn;a|dj8@7ik?I>)b-gnGHpI})dW`x{a@dqa-PU#sf2U3oNQK}h1jR}GRX zLo%tfI|Xo(*|?62_Pk*wA4(%QE;4`Tvz^TtP=YRxHM53`JJ;)JH0jDvKh}N{#>=T! zcDxM;7hqtB;#mkMXqb#Lt1upG@rN+f)oFIWn=2w| zCQrFH{{GNSjg!)uAVJhUCZ_a4v)QKA8N1}QZ)v!T6kB%Hr7Cq<<(nbLt(H{%`b>2H zqgs>f-apt;AbqN2%>uLv_Ur_a#*Ebi<$nB-RtcE2W-gG`_p#?9ssh?X9FAX-MH1gu z?V7>?H2(pUBrV8#=&WF0yHp&z>%myDIddPZB>hM`&Pj0^8rXImO#A10N&#|=Bq!Zq z8|#5Xn?Y{%NROJVZ8)4gRMNpy3|AneCuT{bPuY>cuTsKwo}^!J>koE{xccY^(Oxy0 zI}Xl#T$JtY?VHb2?tmk2%)Y)Beo+?NRge z8n83hTzT+x^GWo^G|FZQ|Kkp2v4S8PH62sjRg z%?pK*Q5K6pqG82JV}k>?@$XJJ^qz@bC4L>6aOmJi_|*4c3VQGQJC>Amswv$;^QDbZ zdk@1glH4q0x5kDg&Y4diqxd0wnwxhxT~KCdZ#Qt?2l^^T`n1t~wf_C!$AF!ET7^Dg z5HdP?uiYXRerZgokOU-KLQy=HkoUg!VhdKTFB2j|sbARQpSPo)KI|)>z0Zb0Hj=KY z5!W1ok%RC2aO^+SdzW*W>pmX`ULsi%&Ib@7t1u(J%Ra#b*jI>IP8XsqZV-LTlNBSw zj&gRzUSBSS>gWP6@y)1s7*d8?VBQRGw51JiBEzSh{qacBVsANLt9swt zQ;aLYN};ZMzbr|E|%R2x+AvP-*_x;pUlB$dWVD(Y8cIh0lGyxH6!~BBpkn!h)u!; zMP0rcQF{;4jc>D4!vdqE^lL9B=5%w@PMyaLKS%GdGPAxrUS*{>CT4F~1YaK#x*m2% zRCJqD>(Jk_$mk`0>F?jU(T7y#{u1BbEP}UxuYDNxyByc{LCSq;Z*RQ=z8jC#aP!@1 zR0z9vm_O}V*PO~*?2bZY2crGBk%XTx*6tIn2{~CX@|171#y~8LuQ~D@53#C&UK7a`-?Jm~t4W&2elyeMY=z0= z>N&F$bzQx=4}idtwm|*Qp)c8Mt<=e0GKsh8@o7P7!!jD7y$cF6Lj2DWzBYdd2ljc{ zky+mvD~m+Kj>1BTH-HSNGD;7Ge)%UTd=s9Wd7lYT&<31PYNLS?wbt@m~fDtW%!#C z#$B5xD6`E84Kb0!1HoF3Daq+_D9%pAT%i?zqm^n#&0l7f)bS(?e`B9gyyZ?J8DQ7{<^kCsZQl z7UiAW2~CIn{4QDl^0n7GdS$FlWUi>%4V7_<1JJbe2_zmhvnE;Go`|FsWBQEig;WnfnY^r)(M+8e!v$pIk`@K^NF%2>03ixKJ(&v`*qo_m0#@RvK=7N%r|a9 z`3_(GGbS>*E_VTuwCALo)r*T~bhQ@A7R@8_+KT8hCpa#zxJ`?^Ux_x~tLs}m3#tx| z6j6O2$uKSG_AWnZ&Yr(Ntl=9IU!+>%Jf*s=UWn~%``{>vcyg95AZ!5Uu{XX>6yAN_ z^h^>atx?nD`_DfMb8`D*t3B(%YR-YQc3gwg98oEzspM(}AgW&!mNbEUB;LWuTHT?q zIdF(iAq%9Y;bDd{zE9EO)P^Cvc8DQc$_<;vyx=K4_~7a2qcBy3zms=tP2lB`nC#z4 zZCJ>YC0@OaAER%!Mn5MO;=~UDLdF+VP@xzi=B+XX2W3CnGSgu2EKWrlq}1X~n$p z%Th4J~GK;~?bv?FQlYbbt5|r`T32TZe*9j#x7YVoz_VZ6Q*dk3NSW#~YFVWTn{@@42a40j3A<+eDq$Q)61VVjk7R z-v>o+ow+6~SrkU+Le#S0LuW#7lvUIvR;pyP%ILM7_I))O!v-tb9J7U_Zyzm8G@c-U z%vbE|+`=ozbm{KDkQ*>Z3q$|p@1_^UvmpVvD>J2#n~!TNrB_aA7LFKb!TVVuQ9g9IQE)u6t@N`4>qnP=*{&s|M-RV+FVE@J3!EG)A^@1>Dk zT>||1vApJBNWj=F^fgwww44Y5D$mq#hsPp5FHEregA+dhg6GKF-Y^H)al5 zj*7=k4v!DJgZMLewAJOras%Te%5_|?y%)#de|{=BU1(V8gSgH&P8-|yY%D2QekZcW zilqGdN$kuwWm2Aea7#Jc8)YDw3uFhm@rk0UN{ghW&Fnu)*UQC{5_kQIuWqERA@3na zWIllok}7x~%@xPW9e=d4l$ebz0($p+y0c?~ZKdp|p!XI*(0+Lgh4yQCVb{XMH)Vl( zht_n?)G2d`ANV0*>Edr&!rc~JT1taXo-{!r@U>=@*Gl0!-JheSamMv9G5FXCkd^(K zR~BR)J3o-4r>Fs*e%);=2kqdwj7=;#KfcJT7Jg16+V5YPkxd7c)OJRbisDCR^+fHd z?^IHzNrqTe5>xQe1gA&NytFXdoF8ER=GKCh%E3iKpN*p76>Ic_quZ`-nuRX!{&P0ctiRZtdsRbT@XqO4EUyf9>_KKoO% z?`pg;IR`Xf9(7oIairNKh<-#mQe`O;7Ivt$dkon!NeiCwesQ$Fcs4HK z6#mtNX)xW@a_HVp%fLV-B$N{sg$gB#;o>_nwG(eA5#X%`kV*L@k@L727Y=GYI(ZS_p`B>EPUfe z)v4dqSP&z10rrL9ozmAK&Li`Fs{y+Yy}mc89kIuWN;HtNeM7*NaKWrc`HlVsz_I^h z1w=C3hLb7R2BQ#o`a$Jcb>B~T%0S?vx;n3tBQ-kz zhk0~!!$@HE;Zl%goXu35u>g=scz6}*c_Ap}Q!a35L!=|H2iP_E?4Av!_&`IS>aDN< z9XXZK$I{4k#J^_Yvi83@(JsA01>So%Jj??Z-<4u2rS6)j4oQ@IFm8Pk)f;cfwU{wU zIXbeMot;%=&P)GLJ#-9(n-sec>JRgHFQ<<9DO@g0T04r9TJ9YoE0%B`jBhRKODt>6 zG@*uYs8>O>SiiH4R-tZNxyu|88%+#T;O2?Rrn9awSmEcP4eiV&HD58wrhX2uC znTCVE{YSU`f6aIqi06?!|6hkf{(n=n|0Aly2Cl$4H2cUuivi~HUrTCg;$Q<={!x{Q z{?Xpi5%G_JfTQGYmHFx43S>$rAm%y~2Z6{P8ZO><9=X{e-~jUK-pTDit6seIUXX-! zg>19D-9LTediaQlh%c;i^75$G*49T|P{@UF!M~8?Q-^&H&8D^5VG$8m-P@wvC%0S2 zb|sa?ff*^dggy(SZ%B+S`W_JR7?~+aX(kW635ib1Ds1ywTM2xcQ2;P*GF`U;Gxt{i zzzD3rYeiGZ&xPbRJJ=QV1ajE1o#1fo$8&~b_qq4Cm*Shv_)~88_`!n`riJgPH5Q^ z>bhEKT)Q68LB+UZnXij%Yy07E*c8J##@=FUf981w3$6ZlI}iLEbFaJdohz~rJLNiV zE2=`t1c4sQLqEs(FHZ)>3>tzFn1v>YqFLWEum4HyekRB8zaO(}q08hIAw`5A#7|q+ z42z8B{gT)~UuD@>mtG|GcJBCQi|8_d%OzY*zfI^@T+LUL9h2||tDY#X?25<;E&qw8 zHJcAXi#2yB&_A02_ZN?$(cHDvGt#A#a?OgdlZ0~O>e#jM6!^D+S6}2{4|=Y*A@>Ka z)%#w2?!-NEq)!`62F-wk?3{7XS>%n{fC^597a#A&|E1Pjp<91U*eOY6G*k&43OrGU_bK6gal!l>WrGt^XwFdxAD z+^BIo-li3~v4#CZ$$q}te!j-PKH(=J78whZdX%J+l1Q~nTC>`QN@8*}B&3C-!8yu> zDM%8<$LCoLxp>bU!?7_vgc6?e*e*jSrB0H{2Qn6Y5!f(gf~Khj8;x!6te9a+Qu+rx z@=DpSvPSP}1SvV*)z=p(^jjMCCQpRi$9AH}Jx)38_-x5NX_lE0mA5qFMw+Xqh(u0z zppp77iCG_In&khPN9!EO>p!~EfMK<NNDj_rTZfW>i@%p`j&x!}C~J%Sv+bIu&^&ZM3w zb8#MY%$jGdm%Y%~>&(sar47)?d4_T?V-*vS1O?El5oL5Fi>lpLb8*x#h>2I$8d|N+UxHLqaN!JPkg9{2C0Fjm#5DD zHi7@$UZfpJU+mtB*)%Y^-wV+C$pAUEjI%MQI}hBY*fnV_^Z$dihD)Ef9#I z($oB}MU=^D2#JHO(5USat-RKUQc&ntNu7@Nlje@RE=%D%=9A4lqbQ0Ve0YSCm7awX z6fdVnygALzRD?p_qKekU>VRYKDm3QevWlF;2&|DdQ%b{^Ne@q>U6Qp7?QtW^ch%Tv z(^?I|vv;39mWM%uIqPEN%4Bm$<{dO#ko$SgF zw~mmyQWmrHBe;#1OY`W%dmK!?*iox>yTQe|oVCChe9S!z;dj_YvBi47)*K6(rK9sj zXlZw^=Z9iHR{RudZZf415}kAq(03;k!GtrOCq8br1EB(aCcGAg>A8>qfvwKn@s!iWx~)zbeMxIY zQmWjy)D($>t9^z^SyRL>9GqIU#p8kXg@L5ifmNmZ40h@4=LVU59cJu{bCu+& zKz$r;HYlOy+U1wm?Xlc#b{(N{2!z-n>a*YNrt{FIUx<%`t~3ncK8Z_&mg7&1#y>J9 zEFna{&a)1hE9nm=Cq&*~>30#E1+V+Rm6Mcpm|;*&{2wBF&}ncz$(Ih1^bBKu!O`?TIq@;{z+Zf+4N z?bXv(r@I5N95uOUjTLuf4YyO3&UYU5z`Rb8VZCR$?k?U5teGkCiHVXwWbqM$d!T#W zdld{8jAO<+8R1FT^dT)gJM*@hx9E(yV6v1ccYcG50qCCym!8uG)6JK!N&-KaJ%HZx zDM(~KIl{PQyL=qA{{@Qq3^(CgxFqJv0a9B3?cp|ec&%@y#LoT^--?Q=|C@50O^#{d zg8->-Jb`#cOQz2SROaozVf%4+rKx} z_wl@K6~4AJ;Qn$KUIZBb_H#6t)$^s<7asl_V9xYC`k)c&VCmI9G@8tf;Ra-TLSm{m zav0%MzyRtey)?c#aO%a|9CXWlYuFb?s`{S!lxL2o(cq79-Cb}TT9?=e@M)9OH6Cv724?7-JUi{TkbOIyJve~g&OEsJkI zKTt(&Z>Letg(>Lw+~&5%GDG^f9}f^P{!Uc;MKiD0MV!`A)_9NiQ!^Q@&j+d$iSOZ-4K{;FtW8iMF9ryA!LbqKfzMAISGB-=%4wNieA-oV%&JnZRvgvg7 zZ}opI7S}Ivx*ioYVr^insAi2t$p@<-YA#GQ)9BAU)H(A#-XR&MJldO5v6gSE?{+&3 zko@lWKy7U`?LGADpZ@`r!QLNvZbYp9!#Lst^44b@gO^>VroEM#T{UREDgA1175D4# zCa{gxMX|$@kUdQv*aGa}VLfy-{@&@*p(g|`d+(m5NOMO))3q~^w7*|lIUWd8vLntI zG^c7+4K*SvTXi}`BF{n2d|3^vex82rqobqCb;a7n`R@cQrG%4xZJ@`Sx?!=(+H55c z>OWBVYxnIB?gJP~8hoT1)oH{gRU^2C%bwx{xXKYvk`U=&GXM!Q4r1+_<}9ZU!BC$J zEdzfTu0oc!!m6k_KMj;YXCp1;*zmD>VyaF1Z7IIG&l+&%o0S<$Cpelz{mgRd&SSaj zk>p1t$#REv5#ywVyZrl^xdVVwgJtZ>{}U`qRH``+j_kqf@)?D@w%ucit^Rg zE>Gg!XAQV(o%rNYkR5oHi{^mhM=28E12zWQ7b6Uv;ai*b;g5|~bCMe5orp$UdDLBJGoCH`$Mu#t1tr#}r3xkzNWOO;G0lWU zf!;Dx-4IthzI)@GZ%bOA8~Taf_BfhHzRSFG%>#=Dn8|zUweKD!ip!ifYwve?%T5fx zcJr`k3n2Ui;WsvEX-OIPTYXn_mxA$rh4P`?=u~>XFTZaF%KFoTA;MRoia4KrDNwX3 z_EMBA5?GX_ERW%?N~c}&@0M<8NO@-cEM zhQzVOLl%1Hr0tW>vM8BHXo^(U6PygW!of*aP^Aw!92jtjl!L!oi%M@@u;w=r!P`w1 zIMM_0ZQAeHX=i?w`<@6fo3OJ6I6VLPrvZd(wIh-Y@`TC z2nIP>!p7JuMumk`(K*uIe?X_`HzAh>KxX@0^Y=F+%MFtUI3p-}MQcP3q4uc4xhT0l zABTQwp=nAHprFDqeS~(Z!Hwi@6$?IsC$~KmctBbfLL+jPulQZ{k7Rv)Op z&KF(foj}ze=Sk`E5TgRGOvx;_rTJBcKxHwv{TY;~)bu?R`K1T3Hm|8^=zN*BD>v5y zCYlTumm!TsrH#8&%G02iFqNKrpF0_)^~WC)s6J z2V1yygtq1RjKeM{Qh_L(rZl_`|@U!1NTco*Mql=Y9lKkgJ5{V`%mh|9Bd zt%+{i>6_0PY*>vq#*4AI%>i-IfxUYRqkjEX$YkDz%?fS#HS*8I(Uz}KY$rs6`%YVg zciU(@oz~5Tlm;CLov7X&EmAi}^2XZoBEQ~_9U8!5fQjKpC@lMCk_~)&68%ej;8S*- zxTr6~OiEcmsPglMv6D7Ke60)>b^j;4s@a5pCF&gHTJ--Ulm9}${hvJA|0ARQ|HJyt z^x6IC%K@X zBU6I$*aCu4GE?KXMV`KYx4s}M^05-HMCm0?miE*W2+u$1cHRAMAke^eH@Ci~WO)BR zg*W_HhDQ33VMl-RtX{^@)WzsPo3S80slk-&kCm5T0WQZMbyuy9b)WfvpM_TraBPv7 zc-F)&E^<8~3Zh2i&&!ZV_?mEpUuwEFkv*zgs5AEQfGclY?`Fs{WaZ7iUTQW%zL>e1 zrER}z@~u7}ooTuOD%sPJ(UEB=RBj_FfYmKO%lA6=0_MvzB)RW2X|nwaf0dMA64>my zW`ryqn|T_&SF*yEEZl|&c!stSoY?{zD|1Dr-fw(!>p}kTg^oI=CGD%I2Esyibu8Nd zFhn~V8T}!v@9*!AOGyd&-z~sjp+rn}eyB~U$~W`Szx|H6do6UVj@cTF=-Ox z(IL}Y;R?)z!8Wuer->I=J5bU;ofb?fU)|tH0xmI^!t4Kg7cj_F{J>@7QCj@pxNH8} z#x%sI6KiI#P{8Y9=*!&*;9;Wv;;J`CM6$1UL@!A+3}p7gj>5@P5FN}c)HBxogcfi- z{3j2QH&T_UQhAeqS@HXfTE|1bl+dQ>A4&Pb)^4`wYQ9FYYV@6lkHvrFd~D z9;^k56D+}{xVw9cI|YinLvVK}#foc?;0}S{4uPAV|G9U(@5ejF{kBI&Mz*Xcd&zIE zIY(&6jeSLNeJ->aJ$4*WSJJsXP?WhAeGct@p6f-bM%Iy9 z+Ug*Y=M92Hr_t9Tj$%4G-j;hP^dcg-GF(LGiydK$e2MFgkXv*z!J9upeKXxi*k+r_t-(DQzIC>PsSX{hwN%wOM1MH~&eTQLBTH!VB`$u2IVtz`-Ukh z`q_LMVeLn&7ha#I9>O{JMmlj4az#r*L)mvE}u$hvByrkcEnKW&Z? zXxNVeDM&kBo1^WA!=-l89owO0Qo&Zn{ib~WFw)+ykY_J2pWwZxnnt$(Nt$q{vh6*R zQR#4ejST1xJzA)g=}F-l6WS3NyUE-U+)3dgTb=-JhYr*6fy z^TN#-K}uxsI!g-o#fEAv0=>pwk06csZ6qT-m#&@ttF)HqVPdM?7Fr9?mF0iLsnBrh zqt_rKDNWzLB`GOl6@i3PwPEH*yM@{rEcniz*4x!?C1yt^IysziZ{c}J5TTE5#`#r? zfJ;llOao8|qWjwv!!uxQL=nucOc?@+naQL8X9e@YH;g#A!zWBBvibz}Ooe=vB%$9p z7ymrWLgtz)31@?29EJ)N7F%68=}J5u3k!{az`h(csFcsOa1`0?1{Sy5-JW8mWTOw; zR?r?xW}$9(Gf*OJ*QR2vnE@7-SZ1=PPO)jk$7ZH!fOo@&M&hMoFPmysQln4Fs{fc1D`E;4yaHBq3RMj8$8CJ%1!)^l*`uVsAQ|8&Vc1l?cfJb$}G8$A|vs5InvHw^T>GDNdv z#fz{rT1$;NwW%NFMhr<){tPCxn7?`Th-840!O09iaHgd{&)Uj~saSj9iFPX~0tj^O zyP5mbHj=FmJnEGiBJ>zxHNdN}bC~i-{nCD!TYRZ{a%Fe}X@g zgWjFlyke>Q>cQg&v4HT;VZLL()}ysiQqPmr|J36~j+ zM%VYd$55Gij)TNGS^WPL6cC^lU1F54N>0;1%{iGJ{YF~hL`A2<^Bh~$bZXtumRaPk z0h|5dhq$1Au4h+_W~~zISVzri#Oyl`FFhPVzj3iWGdlAq9wZ4e(QKL zm@wOI_NQshKR7dYF57NK7f~A7Xi_*4kt+gnjU*-UhUet71zp039JL!D?cq>SD-Z3A zn2fNhuP6&NxlW18)5_dbn|r|=adK>k2(HtgYRpG5aNpDV2Sqlr9d_8mLq<~ZSP#&r z^lGV6!&l`P$}XyItiOb}x$zB8T;7??euZZF&Lh*YZ$y zQS@vk#DK#GXWnY)gM#JSw3S`hS%aQ4p;eX;hKWV_G$^A*!p9VH`|Zm@yc)=M~JDH02T* zDg3rgNs8W=_(I1M3mTk7$;xhMKBx_iQcojaO;0XkV0Sqte1iSSUke|4{L`mU#-ck+ z-qjMdd?YW+p zRGf50HF4(wW{pjLD=iT;+{aX&AQkS~hxx6!?A`RXBMzud#t+e1qN`=+*(2MS2_houLQkMaGF zCk*$Sl%o9s9uV-7i*?Cvulk7-9O_#+?DfsWqvWT~PS#f<-4f%adzr(VL${lw$8!@3 zjp?AuQ_P381^u;7WLx+S-|U31c_YcUhv=QGTM_-{BN34biY(-V>U~TSti;B;e}@!A zmmw@ED<{`{v(1vu=AyH?ZOF`6xHy~ryBxj%C&HYz?0>@GQR0CQp*gOB{qeX>xkQXZImnLeQLD)=QCRPHiEfWc{0R1RDJ4DT3&-q&5^{ zmZY_zva;`%z*2PIRe3fms*F7A!Xr4PX20K!xJTeydg&{LU1u^aUZjdsZuIZK_U6Bzv?P973_tAedO|>-j3pH*x}Z6|Z}4?nAYbMn=AK zq$Xl6%5(aVhKlM*K-V|6@q31{q8a94IBlu!iL%K)USE-p_@#Z*XrHF%rl~Vn9nk-bpywEa(t6RK&N7N`3yF4tS@!%`zBKr1B9}7pkUQ zG|Zahm&j@IN|U?N*15;QN`dP;zpb!Nq}~1F!`0X|h) zedJ?DH(%!oc8BYNd?KMaWlEN?;oYSnUprC2`YoE57$66MN$f4ob57lzeOjK z&-^?YcXvI!(=n`XfjCh|QI(aOC;E@WAve>Lv?}DV^WrmjnW~L(id5zluzKqic2O<} zd@;2+u4sB<{qfAP+WbgVFM`iPop*&IY1x{xU9VqSqqlAdGPcmW;ES3Z`mwzOuYbGj zPW5?JH?5@Y5GV`{AR<^4bMO$@lKI+xSTrF?Op2YeboKeJN05ZPZwlJKx~g44e4V;y z2OBx_+AoPQ;dDW?qcR>9?au(v;1mdUJ?@amKbW2YBt%VBC8`M>l@W()A3BNwpJO6l zlMuaMEy+`bp3UPHXCA3hA_5^!bJf>gFRs1a#hAL3ZOB1>S64V|jSPl$TK%1!bhXVZ zg6#wHD!w8mC8(%BjVf*D4fTE{FNr%Ht-H7Llpv%)a&cV$YvL~abbggDCN?x7^@4Nt z(5c1A;nhwA$Yo0*Tzj{+rg!>Wv9l)c%@rKX)ybUd6qUlmL& zJVaa*{*cDwMyB(x<{Kah&G& zxDO!-X>Hw`+7Ba%+>i<2ZSxH|VRT}3U$l*Ge8u@1HCNUK&O_3g5z#?!O^7ieJ7P@e zwE1s;DBGhoEr#lswFV`gmyYbdM-Zb*db7S6vK3(-O0>xMQ!{V(FGw30DDpvUPKMY6yQ(`?P z{Cr!I^?u(iAD1=|mC;vU1?%f!bp;aP+e^O-?U1A^KBoeiUbgEe-TgO3QoL2yMk^aR z7?hhKxWyk;D&vL6^}g@a`|TV(B6%`P%_$$T*;r3z3f=3yKr0}bRcTwcdC1Ck$Alg9 z%uJoSaOR{3Bsw$L^1{ZmkXK6D}?BZNxX_^E-^MKs9F*82;Os~u? zM{7sm!>`*w$Q2+Ki7wN#TTmqEadJ@Egx78bm@v|pJ%lpW-SE#!c;>0hK*3uoautv@ z>)3R4aM!^JR5WPq;nNxw8YNfWz0#J6}*$Xgl~M zarsT@k+=yB`Q5uxwko=gyB4NY-0B`IG$+hnsySq{KX0G!n=bW@sKA|UZcPWHJPGvR zUL?iKNI)x}ooTJ-f$-LjGq)`%Db=_>iN_Hs=9mqrd&+C$JP z?Fvpc2+4!J2l;$MNeKy6(k?36!WF$Ae2puWRKODwabQz`VKqB#@)klWZW;ZS5-4l!F#tp65) zx(S;)?kxXlNjTHcNdA%uZ|vScx>mv)(@KP3676o0$y^vky&;D-ZdmF3lG8Mw36)!W zhr+tCr;kLw+rd5#stp@}HA#4(!=CM!0TYrfOe>F>L!E86Nu{?7;2UwseJbDJ)i_yI zya*Pc)bqFvf%Ai~h09oj{Hz>;({C?zXMvf%x+=$BW78-LL_gSE^c1v0`H1@_Vlksr zBUrDsV^qE5g;9xOJ2-JFUrj&knypTA0>N#4hbSHTR=uvZ@S?)|>Yu&Lv(>%>EQNb$ z`K3fEmACfwGa*+H4F}I}wh3AqIx_hwi`<94R!hrmRt3v*mFrG?7!OJ^cHG3s#dp>k z8H#!}n%KK5&AJ}*d&b3=v!$0O8M7j+IouzIS2k!`P5Y=EY3W%T{< zr<@dwH8+eq>!f5-QvDUuE(MqUQCrdB_pRx@SGZOUGmeE7;TdMmD9_aDe$PDwoaph? z*i8Q)KSzP*s*}kX!YLv-o6@{)sHVEhQlK4QFo=sZ4R2CyQR(K?)uuQ}pttqBs-Rccg13$VLCX{li%ccd#OF%TS z$xxN6itxLwgKvnVAJiThBjG`d0MVNf%1^>li2hF;67jwSwS|Si8ly+uITqUDU$)qp zT?^Bnmb#3%Evq>;fBg`M5fp9vZeqg4D6L@H0B;P~Kwc)p8*M$M$|LDZXocNK=11R@ z(R3dPN!DEvt*`>X9UM9Q=Gop%6QM2_XK_2CY zY!NIgTSgNn>qrktVl3E)IgS{{0l37KboNcj0CtX^?!l4T?R$OwHV z4Bi`RI{U7zp_Z=D0AnI2NO*rO{le1%qUw-s7AfLHu(dxlP!+R!oLN{6|A1YTDzLPX zH>>okt)R4dBN6;|XH#W2JTC9n9_dbLTR2||w;iHqbRxOYWO`D4vuovHwNwXCtct>u z37u$tq`fVn%dgNHYB3}%*_fJUtI{Q&&o8|kYf-w}WX-o$7BES{e5+R`Ld*puQ#H2JNd=N`G%|5iyr{3n`9aD-{;}KOs4W8a5@Wo>exH>q1j!({#^HZ z;xmTPN5b3qNwDyV$Y_b8-%zO96wD^ZWcyr^tG?t#NXdz2@87{<3M7AbUx!djfZ_m! z@G?F+!&=g6BIp1z?qb>q$luCpV3SxsUjcg}`Lz2P8WlA?A#W*8DO;bC{<93Izf8t; z-S<@BUF?i>Xh$e!X>XvDVF0@xB^NKW@;sI*;YH91M&3rF8IU8DGo_p#&nEfYQ8oNZ zq25ov{xRF~@mL$Sk^@_D$N`p=Q(|-RpBS~q@6Y-1AO^)-BpE?(vuQIfQ2J1$?J85uS}Pgz4dKwp`q|GaUXFB z7bc7JP(<)aX*3~>?IPXs5vwsqw>}1Q%3Q-{>qA>W;zk9zS|9kgCm>98iOu--Yv{~eAA?J#iL zd51b2y8d;Q>e)2ywjO%l=?!RZE^*}hZ54cgl4>W&ya?&G)5*a^4{!|nE6S!VQrK#l zs{@?u(A=TWm&dYa5K1VZwEkC7v>)}ReFCUr`Vq)u-Z35n3KzwgXBP`)rm05#{$CLL zrja%WMZy0b_pr*C|NRJc>>!8tUviklVq75VB>&I9DvP=aBN(M;d*)XTR3I0&rl#iG zckiMq?QJ4H;t`t`Pl=EH;#gh{)iV7Jm#1Omi8^?TPrqS2G+$>!_Iv-5YmU!9??akI zDQvq|@g--oM1Vvv#_qZEM-DP7enU`*J5$O$qp=wPI)P(gM~Ehz;f(VoG;)_yi!6V8 zCw{$Z6;!IPC@BRZedRK_!1bw8y*{I1*u2+Rky?;BjkY!X-K>3@PQq=BB-NypdQr@B zmogc|j<&PE6LGWmWQ@A4{3HrV~MmRi`d)n8R#0RRoe!k)5FwTclb6ZVK&Cpq z+ppyEr;8uaE)xYRBW4z`Z)$KJMst4=0F^+cpdr&QIi1Zfy?NWq17uYDt`Y zSE|uiCx4+Rt&kNhQXTr6yGn0lY`Vg|bveQv#%`ANPE6i6R@zv|ta<@K%fQg@A;#q$ zY_RfPN-C+^zE?}c_0Bty@N%OZk!{;aIGceblja=Y!XY2&l^A;$Z8Ke1 zaC6+^by9bZ?*g0l5RY-7%_V4cxVp92qwKZdGMwJ;E5Z+iIx2cG7m;e4JC$~}e-8fb zNoGmj4Nl`i$vq<>PmHeL-Zg@&o%C_T8okrC?OLO}W?6G+!HSpD&XIi|`rui$%}b-- z^A&{dS8W!XsnaxFMeqDB0KR4)3q7{v!DzJm7vn*B3g^7D$BVcNDE4WDVxQ~(vd^4| z5;oz_PH*=9hkbrZ0xT=)9=qe>V`8t{l6=k9#x`v?Gq*gpi1iM=I2od})sVrCzQaxC-HN4HsGMidzJSH5H13yL@IBnzcn5Y&%t##>@(HUUT|=8o#J|iiHQ!@FE@f{Eb&}702=E`X)Us&9>$3tICtE&tqk00@jw>>z)DeB zQJFcsa*biee7dZK3cii|FAJiReqpyd@6+5@P$2`0?3lNFqgJT@3*tVIzN08TDwsIz z3+NZO(MRH{wV=zLn=1zR^#~BlP56$;O7;xpZ|UQBTq5;+%&#+UWb96(qQPNau;B#d zKpzZ%u4f%fxKOiWv#zd)w0>JZ=)nRqNV6>W{Dx9)*-ZncrU7E!+5cZSdA%<+%VDL( zq}I+`tQtV^t}@s1*X%{B-Kn85YyTO=dgV-V@^<9MImbZ6e@wOd4@ zH-a(Y*!{nzf5}0Aq^=hf3%#?w=CjoX4Ht%apj6?)pD#v}iuI1|$~3bROK0_EZhH4$ zCWA9aDk$rePJbm#Kk|Y_rfn{2E>hHLYD-IO$#bdF2Mg`&{B`xH6L!|uUWc(lAvjQH zoceV>7Zu&59K41`MNO8dbdcSJhwr5$c4tWxgirRjiYJB%v+eo{Z+#7NkHEKm=}$1;70g;Y$}HPf+IcM=HowW@9vULj5{$uXQVJ{8 zK%UJsLT{1ljrhI z#qonZ@c8a6ot)-Bb#=$zwA%3NlhHa@4)x;Xf`{Z;$PBZ46?!;>>TcvTTCD#ES_%`% z4OQ{u%cNNAf5Dq=7=O>*Ir`8?h11fVytGj4jRZe5*-(Z|fBj(H5Eob0KUtj>Ak2n? zZB}jUNMox-1xl(-aVbAra)XD50|By z$o$4w<^%KnVfL_ExR9<`9Ud>2#G1$A10p}OaRv;HYX)=P#nhe^u}{7IxRF)u59MPq zg}x%!>@#R^8GA3t6I<{cCLv-2gHqufkoCBpp@;tm5uwb4ADP`=?jczNZ`qU|`<8^x zvMQap<06cDZ8oN|w#QiWnmEF0a{q~H#ZfAOPiG3oEY{F1)>K4(IUBjg$;>I=))9JT zc+L$0ko~fgrnc#FwAHBlc`8O)GV>WHtJ=tIE?IfE$1-|#KdhL|;{8!#OpW7`Cofyd zK%2kyc?VTr8+IM!qu@nq%?phmnlD>!-8*d}hmEhk6BEF!@#h5!5^H+r8YBs*NaH8`T}Z9vR?d9rl;6 z8=E2bg=$Na`ZRch_!fUrUwjyeHXtqgdWXsGqRWZ+Nc5`iwTr1?=bE0#O|#;0NsO)G z7fnvizo3r~jfP3`)%5ydK;I{U-e$EL^QQIFqj`7IQrRT?9h)PS#|_I>@Au(+PVX8; z?!gqk2c<&S)!2(|+*n0R#UtNIvl`x}b|ijrTOK16al+UyVuH%?6(mny zpmGt|y;Gz*s=@?k3)cjd#GQ1xkYO_Nnr8-sLrJwlet@B)2kxsyC(Y7 zI>zS&;r9h0qJv9~WmL0Im*eZ*#XtLh=6jMLgvu%HN|n3e{tx*rNo-IfoTj`53zvP8 zlqsQXb}r3GxYiuI)wIVWWGU$L3kTMS$H2Z_|1xY;Ttw^r)YRkf)MH(!$+YUpm1y4Y zjRGG-9tQ_Wmx_VGz?|C=>zl6G>j!<`1Qh*?CR`BaZpwQlD@G&o6$T=RDT;7y{Ey8= zpxB&D=6yf=@mD?8y4l)-iLlCDQ(32+MdaJZt5V#P@!8DPw6WPYBQ9&hs?}=%Bj*B$ z{Waqu^6=`q)$idWF3ag^skeXUW17_U_889TeWE9<)OBL{UNF-O?j_`T)b6b#jB>?M zyjEsz1+t`+$;3}V~`Ea#m-kfap5d{+^65ITWkB23h1O%Nd^80|=`P#Hr{ClHh1CFH?wb zoSbR1XE`)f&c-N*$u0J!ClIU{qeTPgI1Fl*P2xQ2vOE2k*HK*n^wxtID7NnuixJ2r z3rjck3BAUYZm{C1D230Dkh)9vV`U1Tn(!Uwg}qbvP)Nr^G(a2rp|gz)8pU`BDWD?B zZeLQU%87-o=brc|SLnGsAZ{`0FFU30@&z*7_rZ7VR;a1}VyA8!0yUkxV0ge!eO8Z& zjuE~2s-|e9ke#ovc&<6|8eCRx6LQH|_I zx(2UGeIu0-6lh}J-|CLe=}NkO2)Hoy4W|req$uu18lF0tanZN!97)LkC+RONn@x6r8k)EIDJQ<8dK@Jp?we4N4|@(OC6}OfJtq`O1k`e z4g1zOvS;av9ZcEOyfB^O??7TxD0#m!&XF5_H?V8bG2QZYg=)ZAF_Wk(-M>vK9r$A) zdZJ9P^s@X?#b&VXGh#RJSveUEpdFlG)nnZ;%?Q+1Z*QCk?aI|FeK}e3y>Y_23*w*Y z>+F25rC%VrUa0b4#MWEex?db&`q5>{$NK&p&AQ2f z;;hDF11Krx{o~veUuNnQEEe}g)}Q2=rZZ8!T-e<7>Yu{fj}ZM3B64yX*2X&vm9@_6Z?kPiJwCcBI1PLcWHO# z;Zt$DrY%QOxpaj7$H!d6HcBh=4}*%_E!D{r5F()^-&=|Z+%jTXZduZSd7koR-nyqH z@nVF!6bW-T-tdXxZC3C!w3#7O9n?pNI9rop?bU>!2NwWedb?at4>Zl>^$|Jh>fZ~b zr#Yh5EI&gDTv41%-G~3Rby0&_T0_1p(nL29Y6@zl!y-h~fe?j|f`5vbW73AYN>1O}SSnR8i5|%g`cYn7)i+L6 zDEO(O?GI&9l|JW-dHJ2`p~SH+MXlo&klJWhG-zrxzD28A?$C9Je=LR=o4db1yI(b{ zpY}xCIJ)Ztp+cbAnVRiOMAGvzt4l=MeA;lWm`nIn?23Cgofh0Vn>~QC;bqq(jipV9 zym|Fe2p%(CGd^>AzenulEUbTO{8L>M(M|yzf9i6|lvniPncvwT(c`lK3i$qilTM8_A63UK^L~QpgsWDlv5~GKxrVsLCLc?*yx{XH-?yD{pUH znV4{#^1WV85tJEpr|!Kith3K`q+Ia5d%AFSVCdAVY}tY@t$Rb2xTqxS5sj6`dts70 zH!z}T?o8xnMXKA6>uA1EYCVPGOD;NI^74$@V=W0=EG)yuvY&c`GYN1GOR_Cz37BGd z9dZ@1De!9@w7hrGmp~7&sAgyMW-B?c^lV=co z_U-3W{Elx~9jY$eU|X}X8P>KIA3kl|(oH~hU=Z_+!^ULF=6(p+iyP9Dtp|0(xVuCY zz|a3#!UPVF(oV|TlDO$#S0s2EQGPck#CWL6S~kbK{hN*q(C>AtB^mE@YCWx)`lE!X zR7GqER{Ci9TNo#f(f7Zm-a*l(d9W_7lf9YnyL$2b%FeJoRe2O`GU=3%8IbEU<%-hZ zz!Q_#i-(8sM6qE7OW;4?L(?Imqu-6n>#laI30V!6M;h&i+TJ>*$0IJIHnO57Tp&?E z7k_~bM6T-HTkG|SqA|%Ny}{r2WG;sL{rodP1s^QL2--PDq%nJ15M9yF;h)}65lz}6 zL1HeViLBxrsrCoy+9a+C;{!&|LPE1REqAPf=7G05wViBi^bCk51!^cBC`K<@jeN&h zmDEN=xMAL{#&(37cT};b>}taMfT$mbVpV#B7#576-5lOX#IQ9`cEEvEdh1XQL>kuq z$bQ<&YL9+Yf=?!BABgTEpM^O;VK%xkio5drw7K?!v_cN8&9^QfpA;0JUG6f_=jJC8#&>3aV*%e^|Ks4@xI6v6BOV2PHsDb#8cKist$9LcGWlAn=2Vki z=(hAtk!K*J6X-9Z>MxtP5U!Y6!lTw4Ua{=L6=a}XWh9H(#jK&KkR*4J2_B=qCO~A ziK0GATT*z2=b+3_eDxA^a4SvGsV|Vr0C_@KMI_lI_|8nf*yof$xxt;ni3>m3xB51} zC@x1mEW{P;M;o@z!~7w&0(oqben6-TFu^*Lanf3G=zfM;m;c!8s}ZkUr{9eG3j58A zFE6C(6()?h7pmv1X<_Gf-t*3<RF!>%7rDexFbC~&Z#!2CtrdE z{T4g1lB*aX~EAeK%F`Q?pqaj#Ths zoq?*ulr`DsqILKWzDOV)F@2GZP>MhrQ3tW#Q_HN#xwxu@VgBV?Iy(d#^}oz!B|9;? z_!JF-iqRcZH_<4wB9D8%2o(W01p)tV*1Rw_xt~_fP7D01$Ykt|sVYst{P^T3-%n z*)`m`GRV;C4eqt>}C+z zRgqDVtK0WkA5-|N#~b|f?k`E1CAMKwC(^ew_J*a+yV%0guFvBB1wQ|Sa9l=1mv`R_ z2tH3D;nv@kV(QHb_!srWYWz!Hr~*T^-U*gJi$VjHj<|${Bm|?78W8AFUjz&{+??#`0U8B@bR*-6Df?q%m7NU5Oi;x ze68WP=U461e=VBZ^IPOri*%Rd#RO&TSFU}IT|D~CEbH7ziTi6o?LBk5yf4B+8D_f( zTu!nHqgo=)-L0qT$?1mTKG$9_d$&6KLiSJkN{Z_)D?1p+F63rMenMYNMwFxP`o_1) z4P_-is>Vw~&kV$ny64Sl7PfXf!^C{LOTy>abU(7Ej6yFR3fDV}0Zk#oE(q@EQ91^$ zjAm7YSp*^KK~=n|HV^C)!41O^92gjg-+LLA^l)jZhf1uMs(0Xt?ZrKv3vv9Tz^Nc4 zI`2+=Nw%@e?mI|%Nxo4}e{?;Wzemd0x+X$#xB1ku7Oy`ElXL!@(mO1^Qgo;?8ssEK ze#BUNw1EK`Bh;Jq=^(9a{Z9C3f|01n#kg1%t|LVv!!%J#LIc0S0or+dA6$6=)@w5? zJ-m>V;!Sa)+mfBSr4A#OZru`eUbD;Yz?O_Wj#Gz{_yT?^!V ziogGob6&$SJh|p8Heb?q@#og>6+Ad0|qLUz=CY@j~iI2J>%yM*5QsPpjJ^J1K(^>h4RkuZ4)=((3;q%i44Lx=62>HBQ;`~2%lkg z?h+9Tpdj%AoeCDxOhB+#>HzLwav=y#1_bBu)Mk7Ta9gS#&amaHye-dfMwgVVn83oUQ&&g}{dv}JzmZBRZ z7W?VqHXs;_aQze&1bw6w8UcLSnX@rcVtE)meM3Rpo*G1j8p)YZ+&58l}N*}+FzGQ;P zkL{x#^JT@lBK>+mv@8=~IBq<$Ra%ToNnCMCBy%}dtnc^5qQfKhuyoDpcnW8-PX4xO zd}>NycQ&QsIsU(l+#yO(G$-ti__=}Kw?dzg7bMo3W%`PrTjDnd?mxS;pq32?Zu8)e zaaez39O7)Dam1`1oL{+1B_!#%BongxW=B!ZH$g94q3aflatd{Ukzd^GAEjm-18Q-u z22AyYQh{sbS*xRC!oL{~n=?qKEQt?=2WDERyj@x?cEjyy_e^bDc51!157VyyOui~K zCgsq~iZGtvK9ii{ow%+y znB>U~&9ajH-lM3ToYTa4CJKBP1kbv zD47c-;2jyV5Ku2peex3L;R(5n5sl6g=_bw^6tABTTR$y%5CRDGWDCDxQLEce!N;dX zb%&ucR2}%K(Xzq7w&Bs9C=L_iQm*$7aU&e951Z@uY=$GZV&P^2VZl$&$ppoA23V&l z9~d9+S44(pMbA)cD1&+4J4qNGd)a9eSuu0N^TrG~vA(BQ_dD!vrCZ~Q0s~A-UPo8$ zgT02DJqH3o#yk9+M3MPs#<9Ysfo&dJKXmtl3-VX-_^(QahRdx&x=qjEKvOj!h zc$me#?qYX68I0)6GuZDutL&WbuQ1Xz)BmWs3+_vd13YZ$nq?8LNL$A(jSPqCne`rW z7|wKtZ92?G$!Wx4T@H9MT$c78emZiF zT_+9vRV8~qCaHuPOBmLKP6bM)HQ@gyoR}iyh<{^a(o~*`hJjkLd%$Cs5s&8x!gpsc&!b)VI{_-Kqt#bxi)1oC$!`36PE@C zTPe2B^wki>6j#fRXhTK*;&`c7^qkLCE$LOCjsyaCQpud_p%DYrd*K77m?JH~xHBKEyky||wB+vwMCkBaeK=Nd--al2j^ zvt4cY()_pOiOQIA7#Rd7q+B1d+OCIf^=1pXqHq;kcKMrw(6oI=OBM7;yzwi;jL=IH z&IK&Jh<`h}V|i)&m^I3!wLq78e~d{fj!T`-5s=`hRb2(*${Au}nI%>kx5Qtnx;SS# zSg|YNj?G`R8o{@8xzme{cA~X{gO~j#y)-XCkJGlo?|U!?QzGc{zTtIK0B~)$Q_L(a zcCm^x;WV42MZR~6;8!KaW_+(uTZm9?>>&M^apb+@1^Y>Ycq7_qGjrIR*Zs8y(q)Ag zHcFe$c2O0%MpnFLZ2r=WWy?A>3s`6s=aZh6?WmOTJWnP>c;MG3ML{zlSQ%WMffQ_T z*fkf;nD8$AnGly{%0Op(cwM;kFr?6}$5+nKZM;$)na)jUVd>>!%CJ5DPuO=!62;7H z+eaK6^2PqxnI~l}b+8{)048>F3&1Gikc;ezbY#g>B#>PFqZl9v`&R%_x&6 zBOUCNoD1J;0|{rOY}|>bmD5*%q=i$9S597PKW=ooo7mBLMc1#}TI6>&hi^YYLniL! zFLZe?`D7hZH`)L>vbmCF zz=CpZgt;CzjEqWPph(P#XV5mav#I@dd}5}ILCY6xbNUSh>3T*vna!W&rY9L!_TnYP zclLQC+3NPi>qM;W1d{RFD#?a4!WFiDg*HjDZygIc>S?n;r8fsL{%{-16Cv3omYtb2 z(;qW_WMgZ>WMvh(4S7jy`ai4R)UQmPRclCcy2mK1t9Hc#MSWzxu;>fLuivN4;h9x` zMUtIPiocpwcijAhucwQ?H#DoPl`fZPSs4MP`izY}ve#=|vSoM4OiFJBXr_B^>A@5R z$-H$dE#f6eqOA4Hs@waHJa1OCKUHE486_ejCN@Z2R@j(8BeO9tu=$7Dv0#nWT0=MJ zr|m7jocdS+ZGBSa28Mu&vI3$Sc>Ai>zF?D6ck68Df3f$LVQqcwzHXJ4QlJG|97?g` zZb4GKXmFR}5Zs-##fuepC{BXALveR^io08Ygp>CFu65qMueGl0oPF(mKArD#PMBlN zBy)`4{oIcaxf<$wHHa1+1?+eQk(sJ6JkB-I;s_balooe4dt8+xppSc z*d!hyt{)rR85}gJ%$h#-xCqMk>oH(kBe`!w^6z~n5WJoH6=ZSujCc5wp^6dKcN!p7 zs>N2P@-0iRs6j=L>1`Eg0)X=H9JSZ^WL{Q*4)%hnw+O7IH1>;6j%M=@A*nlEp1HyJ z5FM%AO!z>ZBNHEZXV!8;D}h|GyN9*a04VJIBQ!KT@~3k57rNKUi{A%x!wIX@M2_~H zIH!-Jefu?dT>&*k0|YF>sNt(s^P5O0DLP^0negaYz=am7NyMXaN2)MIo01IBO#e77U1#RFY}2c=5|ppuazmuY3JYNJVD(b znln0zEVVU&()z^?AAEg%{YRXedvB;j9*?0^9|bi-Ivt;KkF=VJ6g%qB_gJ6)@}Ga6 zo&SC<&#PSClSuz>Yx&A$6@Kqi)>+N?Ytp2F0mj_n4@8i!|FP6(xbp!@f-QS`YQ;pN zV`Ie?BmZ-2z%nFm#GJ3c&QGFQ^bdFX-~U}|^ss-f_ufY8fA|;erF369k*-ACUkhm0 zkYxxnp{IKPxeiL?^?3EJdQdTw0*E*`IERZ~XX1vG8J5@gBt`o7gO%=+WF;orLCb_d zUvEm@32p$*D7QplK+wx)!Mv!t^)QVvTu>t@YxF}T(&s%IgHg2@3C)PU8bBYl*+LDh zFL|^jNUU+W=&4a02N)KjD~=j9|8!8|BH-;)zbsI?{MpHLDvkQ zL@35lQuRLgeEi^KbdR__GG4O0U1Zhs!x^&r8tp4W3YfCsVD^n3Y}XSC zJJNMYse1(Zc2KW#Qmv1A0+!)5*5PMjXw#3-Qbdw`yR8yUR7Zjs1fmCVAv_N?BIY^Z`3oZuK}+Jce5)t>3pvCnf2W2UQbeqsiY4xtDYQl(31@* zmaT%EWOXssbC9nmApreNe9*y`zwYZz$e#8><-2r~ql}c0PHNk=evQ#qWEJrcxw8{b_)W9d4fFOQ&4>UH_8(`G9yHI zSgIQ69QwO(R`xz*UZcj1tskGoq<5^2@k6>q_+Y5D;XyA&A=x0w(n7~5!q<4I$#4H9 zKA~B9s1XV=T0377Bw2Dz7$OXjl6Pe5^tqh9>W)~RAIMm~i`;yI|Fw+|4;I=1PH?-4 z@;JVzh2B*WJMO%6n2w9ei%a_RFl9dReQ0#^^7Q*wnFi@}2tFvMcBJ*QOz1$l_`o7- zguiAgr*%n|>F}#w*M+W3t^$>p8ktkN9b+36ABJQorDB~m8vutE^gqH( zc08sEH3k;GaXLiH5-4p(r^WQdtOrk)@Tr#}(a|KrEV4nV^1XMOvNB~W^@X4_mbdYh z!FhRn{Z%UgowR}|#kxq!r#5oMz*~Sg|AggS@38v;uVpuA^dY^XLKWpay zDq5ckhj3UE)dCi^$#ml5pBsL;b_*Y+g-O-jN~rnlF~7~viM}1zNcT`VzPn zvPX9;S^5u@y}l9Y5S!~BR1<=wI_6=BeSc#sR6bQ=Fi4B9oEz>R4^ilxTE?oliPtym z-KWC?6+#w+r^Z~Iu{UOfS#>JJzm^(yV5y! zQ$Kl!_iLQYz{*$y6X1IeS5-0(HK;0>V6{i13sxH<1++GETtB-#<~Ln&$lut#P*-Z^ z>h*1D_?qsOOVl2~0EK*~Cx7&q4b4L&L6%+(^>YCnCjFXTFOWC;l{S;8XFYD+Cg>48%9S1OmGP>ud%22Z?9;l|fsx$z-;zNUr?>OX>A1 zCx;mo7X%>0uPj5+R3a&!<8q?@-0Vw5PM)W6_YBEz-`F3HSa`uDRgOFoli>G#yQufc zsn}TkN*khzP1BQ`<*L8zDI}U+pR{bg(aN(}HMJX@Z$X;L76l6*4=bIQ$v)K)IA1d_ zQghDFaLj+x0*wYc>)a0W7t2uM2g@+ntn2esm;ND55lNBre@Iiu(}d`sIDU3tj`JfG zQ;FP?Cx15YY{+yl7uCQt5Fvk{(wW5P7}5ZHMxTUzlZcEYOs1FE&fKsYuV8Su#GMx5 z+2jpu0izQhQhiTtwDWZJ_wAuN`HBypYxDJkAx)7WV2Kp>hHNsH)AznDSBKN{*H~oy zztW1dp#o##A=4syxunS^<#ODkxhZwf<(*upknECRe~))}Oht&S3FqAC_)y&@asyohg)PC>~{edig^;P(> zve5Z!8;y!^?ad8^L-6YH*JvxDS2Px_N}G(@U2Rc2vU!nDByq@eX%cnkXPj%Jixy`K zn=D8fP_7LFMf&m0xTr`@=}Za<^|g0Hnc{eh4m>prrC%ng`POrq=KaKqBB~VNds$-2 zDxOSQtz+TcfW#)195~c22L+Nn|DbzM{ziPk|Ak;lSZ93h^xG#`xr1fT%AU^p3SSN^s{qne8Q%9b!88sVKev9zUx7FF#`i62S5{&CreS(5^Hx) zy$bg>usB{ssk9K}8f-nJ=O%AU<%r*p@?WT|kMTbnd`ZSD zYI#xTM(}IfLcw`v_{We`Ut&Y+JIB5_9|y{9O2jQW@b*lNmo-y#z_-p|42L_`+UKU?HKto~5P5?oRf`1bPy&yy7ydtSCmpXLRCZ4TXDJ z>}nZ0LDxP6TZz(oAL34s@%BOWI3j;P4={hyGCGh@^Zl^?;O=igj?DAL^97-NjO~hjoHHTONj>UKC`-f0upvt_xYm)&}Vdxa`Pi3gkp{ zcw#jc4W-ZXCgbGAXB{Xk3iKtJC`)lwv5z<;Y(WaTRk^;n@A;WtMqN4FlvLAfk7=9!(T&F6NW z=KiZRuc)mwB;hdPtj4WW4D$zr&rk_{qe?xk+8cZmmB-D6jK`BG*A8}b-xctJE6r`! zUC-)jWF>rc+_Vmn*zxG0Kvkec$@0K&Sl)FjC5oACx;i}xB>Nqi2XkvKPi0nZHHUH& zoJOkNKf1qLXHF}4z_O7IGdQ|!p-ha+HC`PUq^uCY$ReWPKXXuR)9HJEvBZ3_tz>E5 zZfXA}U+By3V=bQZxMAu^7n^kO8KR$V_V^t(;tY7UJ`Orthz72wH#Y{0>#``SYqk!9 zCoL!XOYkMk=rxJSR??1qB3f?qSk9p0y4UpSD@XU6uaWa8P8Sv6ET}e^+oEC=;DsRB zXgKwS+qUQKj7M4OoJ0*^sVZ(N3gLiq>CBc=VB{&2K1QiUq`xO_St_)O6ct>`d_2Hs z>fjz=$eS^3-?3>qJ&o;$L5w&KItzMKyBq&7x~cMc-wk$WIKjTNIyyt*3ym3HqM~F- z5l8p6E^&-TOTNqN+8`u|43h6B-q?cy5*WBjSD3#Q;Rtk9*9EvZy9Y^B%}1sGapa_* zI=mVGnZL&xHu}J3vbwbk4IJ{l`%1jdV-mjXc4Bb=iM*6@t~;KZ)|c>Js_Xo_Vw+A! zedUBE6w%R-3>w_*&&nq2byS{C#>AMibJRqvd*Yglrm^RNFWs z1&kxcWuKM9vdBq=iK9XxgmQPi{@;X&z?OvPw^B;JBo(8aCk^ac*X2=hg0Y5N*9-|l zsTLLZtW92QXW!dvNgm$#f>#_#4-%dcKOD>Ig?ao_oPR?rPnCJJ66(`$*`BxI>D>jnh6#`O9N{zQSbi3hFxI9 zz0vE<%KPgt!wby1X->U6b+0W{bBg@%TGi+LA1}`D=fV|6ch|}+;+{~wlJ3u};lrE{ zZ~;xy#W-@XI~i}jI|TW(M+m7U7%S1;kxsiYjo5a%2XPgrm_U%bw!#KzLcG+YcVTjg z1W)g}>7}BetHQG$=Q%p=^o$HTY1PRGgP7jg_`@{Hq|dgrPKqQdFVzoln-p%hojXL1 zaAcPA|5J6d3djh?gl6Z=%ekRi2!E666n-OK)H@Tclbw@PHt(FT;XxY0&Q0_lkBm57 zo*)Em`|z-POF662(F?T=HP_405bnSjCACz4JA1v7H;d9qGWMX&r`I8HCeTM$9bm$u z6p7>Nj<>YrsPF@lS^_z+^g@hE!teA8O^h_@hw`IS?w&HWg%xg(Gi)!ugq8zViRAuVyQP!jPC$}s*;iFhIVoGU4K!_VtDTn zb$)oOjk7>k<(eXOQ){d6H}J0lOc$2nTi)U-{$R}N@x@VL(T4QaPw$Hx;V~t3vHbUj z=o}StPv+;)VZyxe-*wNT?B|#{Yp0joiRz&8rn$G~{D+Evd^Xk+eWvn8S}63^kND3t z8`XWh^}A~i<=ZDERrKZ?RwmPOrUU13rqe()Yx=7i*RVDOSNNwPF9Nn zy9>VbyH9^9%Xp%QT@Py_--ldpo5SG~QW+u4AiQ({^yN*`Y-7&%o14qvtvBgf-FxlP zTGED6=poXnc-OmKdCU_oP`0jgczyFIn9|aQ&mF8?sH#1)RCrl5H%Tw5d^^|vbB-DG z`G>}V=`KCPY{q5Npk|*#6;r|YR8F3WH5*9(rQYkJ*Y#a_eNOHwN%=@V4Rz4jC8-MZ z2A)!U!f&ZNU3aF+k$+PfU(9U%AWu$T@jzg7q)eD4Z4j8{aAwLq4QqZi;u4zt(NQq4 zKnDzI@jsYmVFXk5mmK>j{wm27r&y$6*M<&ka?7|hv+_CQ^Es~2!t#8)Hvc9>{KVY(0&~o=VwIl7tS`qf z{t{Hw7}C@4tfW-9JN7S;je}b3%!g5*mwS(N@GT%k-U67IVj63dAT7<~ zTZ{WT`Sq+Yw)3t4G0&eu_Qmf<$&W(e&pXk071d?rHki3>ms+c>CrK{&S!0%eh3#!A zCz&+70CHY#;i*Lg^Yb6%uej;sR^7T(*v@lT9n9zR3d+iGrZyTsL)XnicT!V!uTP|m z4a_fsWpPbNW@VrtU$@oV2b53R+BpwOa!Yo2B`qTq6&FRk&)Dwj-x+ZnW;lV-a%@}n zeyRTSUdpANnHo^oLk}mhU7s1{mUrstA{~A1Cr_HAOU*MG7_O*14eI&)Uhrt~ zP=3m{q{Y8)I-H$#J$G5R9eFVCX1%P4b(Pp#>rPpq9?J%t=Ry{JsYUv&B(2kqOt+4z zU*Yzo$*rR5k?KF*^2MBdjacd?1o2B^9U4pz9at^aM=S>N^F}L5^zLpHCZ>bJ=h(XT z47$xv>^eY}GW@!$hZ7`{D)cPwHI=R1C~ zJjUZHY3{fbq~~+*wlAXf^3eg{zH^7Ap+bhHyj^pl(rE7zYm@$PK`Z`+-qI{Tc>lEB zAC#E-WwcA#%!Wgxsl#~fZ6k4QK9S{lfY75z=F59~VAE@Sk2k~Ig^67g#{UivM}Wzf z-4DizWN9kAxHajE&Gb3r=2Uepd5=9vZ?SGaX}jW%=MnU{@Pnr@%?4fFN zEtM8G2DZyHWjMzi@7_5}hL@FGax#&X4(awaHrQ;$CDN_yd=|3vBEGkJ2{OVkQ^_2g zS`2Q;@sA6Zj9|tc+bsP6d6C#96q?0EqT(AorR;r2*bqWba5vvMZHk=&;l8vWjzT%^Y%no>UP&+#Dl^Nl*)aYu6tT> zZ{#StW4>^W$;3Cr;z|-(9M^qHk89tL+CLFnUv26DeVT+8c?bD@;wd{^BN1B4>~j@q zWk0+*mxvo4ppY!0>m8VUMS(+**^q&2B#drRA(QZ1K~VgFHB~W!i{GE3g!n2_`cjpA z%dH|pXe`lXnzT?;uMLxLYL7B;bf%DscYh{ee#aVBa@9Ad(_@8GI$foGCtbvwGmlHFn z*zGMD`uZa2oAxFf^{ntIF&jtFeb~msb6i)J{V8m=&wIIW1=0hbTlelNd4%iNTH_w$ zL%Fk_((X_D*6VI2T-^~ocI8>v*y9NePMEINTI~aL%87^H**7xF7*b{D-z|;X7A31~ zp;y0dLs#^;oQ(XTF46~cUf@N6$u19c%p2GpKB*t1J7!$=YKzTg!eh*+bp+x}v!kF# zxfPTHA1A~|>tpdi!&J0P@|PGE1G+JwB;^K-%vXl&f9Rw$@+lIOZ;@im;ZC-&MUu@QBt5C@>2U$Bvcza~;`$7!n8DaygrVG?9ZPxu6_o3Ed*0PZ8(vHb0}R(A{%b5_ci@K}~>cf~w4u$-O(DNg7I+ zoRh>k4Fh)`Zo}NGin-m$FQ8Q3$zBeDzM!Rmc9ZT{b3%|Q^O8&^{V4YDJz`TTA`>TB zOjepco`fP^_R_P z_~KdBa+SVZ4ajSG^M#L7qkdZLd0T^)HiOIKP-p$f|d934N#R8YyvQmc-#s_e(vE(&5+kyap@h(>a7un z^S%~qFE)J+)cREJ?WyulS?qLLIGATubl9_$y*U6RpEZ~w!t-mR?6`gACgI%~Q5?=M zl=fcYHfZcCc~2CoUl4hrq+CQGmAhaxRc(0Cw(1z~>v_zzXTSWbWhV8j?)~Q_Q*l)X zc*35typ{*pVw_#Z#(X3fjazfS*I&8v6W-vMv?S#4oRiUQl6{+MdqMJPLBd2f4H zcD^r?%<8sAJ|vhLYPQX(5gpTsD@p2yZJ0rfB>Im~@s}{^fpaW)Md#~T8YbiIp&+BW zOvzq}jvlTt%0X?e93N?`!%4CbbqnVmz00VbAO>fT>9cJ@nO~G ztom~b8Vm*+OCop2TvUTFcH~!ouS^Kjk3TPT>?lN9Cy*wW9ut#YfLH9Z7{c=IgImZG zXQIjZPmP5Z79v5{ng62!$G9)?KO)WE7>+-QC5q+FrugrI&VLU0cdq)s%|!p-AF3vT zN^QoGBRft{e1*Yaa8F-fW`4f8m%ruG%yY4TovX`{y@PIY|JUB{O+DG&-RXD-&|cye z$YX&$73b%Fo0USINE*<%6rk_T()uT;d_yc=do*k-J##S@i&!#mk4zEPDoTji}Fq56iqbIfqV;eN_q1Jle~ojBCOB=X~rAi<{lx>ak`%+ml{mVs#%#>U198XCMPBW(~l zpuipOzvXu69}nG8Ax^9fy@M0Or)q3We0=Dk|8c*!5b(@Jc{=?5l<+N{2`;UtOwd*K z$%cOU-fZ4A6i~{K2@;J=T2tFEcLf|nLZSs z4L{i`p?%!~&f85tZF6jJ`@JEd!b=sUCFZgN7CK8DF0EHViEen`>BZhiHtv#~ylC-) zMd7P;-_xLQW$C4EHxbgFa?T2Q2qK;Larn~pTXsNZ zs%$qvoSrN$reC;W)_)l*lLpEwi{)*J374M z-N4sagEk!6NtIWZU^u;cY!Pl%WH?REPw+uY>ZIJHP=_~phweubH>tPb>!%i})L&IP-oKTNY%GXu3zF0@B){l*-v@i)S>MO?4Cr)i@ zlHwcFfoo1d`Fj1PW>JY%vJbo1mVB)S|Um!T3i>j1DF zzl3c)Yna+i;ya9E6u1rk_g_K*L<09A50h+m)zm;wn-v3^?|pm+o+Gc$a%dW4t` z;S5eiPyYZ73owyN+pp~SCrp&5Nl@4AmfymXzdey-@!W0l#*`o63$wKP)HLZsubS@Z ztxuXZ;N?U^`BsE#7Yx1ArR1+k{@}H5U~?Z5wos87IyONt)uEG_OY(w4RfJ;+<6P8z|h^>20?SNh|C zJ=4%+q2bioAI08}4lUIKJ0q@ra-z4q``s?fHexpUhU1)@j{lV{YG5RiH=(k{W>mKL zZXcB`LVuCBh0kVp;|LKy^MQt6 z1H_D|V#Ai}-?&`7UV<=_-Pl*E6#ynic5ID$W}rjfsn>|$?9E~IJxEB{*%@6JXMT-G zLVAnFpe=av%VO-es&lM98;#)>D=UNBai+T)F3OtwX`@1hek1v|=ViyNk&3vK01TH{ z<-KIRTxXOudnFGhl7nJ5L`uDN_{lL|gW0 zPQPx)V4$$2Y+frl?N-+_IvQ2e@-pJBn0U}*xC+xdx&Ng*^d{*~0EwC3$v@)- z4( zC*kYr9e))Jb32r#9xZOi6AG(=zZ$+Tdm3Tz!kepp*m{}BFi&^n);u3hPeNw4w_Ez#Z8qPP@OuH*mU_=X6`j_)=4jUk3`RQCr zV3MRIg3dpXF*sxD@ocov#4c-8Ukq-Rn~*Ay&3ni3d8puoTky?*%EiNwYRhH2M8s~= zEQ{34fbIMPl+Mrz`6h{{xF3uz*BA`<@&hbBL4fT_aFTWTtING_`>otJo>tq;w^3ZZ zTWk%E?G&e`N?=RIND#V0n_BW_s99?KR$duI^iIw0m*9ZKLFSKFWdEED2MNDBiHdUhs-DVzFm`)e1%3ux!N1b;{OUj-1Rf>@U;@PV4jk zYW$dDhnXWrjZUcoe_1c3IHEe3r zL68#`_v1BkQ)f-K(Mz;OGM?thca+Uqb4?>FEP1@c(rO~@Z{i{Mfk&UMXO#|{5xTn& zFMQAu#&~pHfLw%Ev}6lXPUyZjY@uAXVLpzi2hEc}5&Qo9g0cBFTHv&<0j{8kqda`? z)7g^`6Mdi#X3OF6{x%Fe<&A*swBL2stK86I+rthy5y8Fd#VyHj47Kv|pFy!#KH;}O zk7w9E`7xEy{)CGBlw@_941T@VQS15H@~S9rei*M;VVHy~wyzxjjJk8mG6|PKdWE0A zmM3FkyVbZNV2Ja$FZh*jMw#mbyi5`})KpVUJ^g5r7QBP;6det<#w5x=U{)gqf-n~* znSm^35zsA`DIwywGi+Cf-tjkn!&6&D%r*MD7`GKL)Da?7VAQ#}n$>=h*_jZL5@MhH{x`$cs)GOxJ{ zJKgJFKAU{gx2wKyRI=9Ffq9urgPVRAUYjQ@$Jf67b!M?4o=0=PPNS4m;x|A@#1^la zQ*M;=Szhf`!}8h@a_99w-6aC=+Ls0Tcp!S6XWF|KC3A9~XBYxk>sM~;OP=sr4}tS0 zS~xjNwetK-ak%Tjml~)fA2lqMXCcLZ9I6Fi!MBupz0urtVti)D`tjI~Nh`?ugF1TH zWPox=x4KrdgXV>;Rc@2po4Oq8{P@hKi5;hKP%JmNHB{%~NF28CNLreO>p%geI&rmO z*4)^wQlpfw3VRA$5Ql{q3zO@DF%R~(@Yfi1hZ>)?wCV%lE!VrgyUvY0N9os(mLaQB zKF1;)RSgAp)7G2E!c~X}feukEPl5C25d!W%wip(ioSk2Xfq8_5N`_!eiq=U5NXEa` znqNh8+%qGetnDMU1l6n3w5%K7+MfPfhSnnEEr5IB-tbrDxEB)F-EqOQRj7s$+`AJ> zgC7~K-;p^+h$qKl))k}Ukb>^yc5{4bxlH>Se*-ADykjkZ7~{UI4$owm`}HltI}UrX zJV+iMV<4AEt0O zC^b?D+bZ}D<3*L5DX?17_1i3T9Jnt13Q*ngBPQN4x61KU0kJ|*?G@_MSs=(WFJZyv z>)4XBo~($I4Qs^v`SF?r0X3O2Pc*^9XdD1l=cpY#WiQt#%6O+xQgM zPo6~9d|}6L%nzIB+l|W%)rCPo06Wr?VN18fjku{ZoXh!zrZVay=SIr2}V~jOU zVlYG^AR%cBd|Yh7i@(&1NcZ}|0zNqDWI5X?fdsNZyeP@F*Qq*-Cr=sydnzzPCfZ?( zyq^8sGP=GD(Z`jX9#Smy6rwWBlLbS-uMy@buL&*6Ycgtcm?_5+uA}C?^slxcxYOui zOw_TJcaM}9dusFH_Nh91F4<1FUeuC4FLe7Z*+#FYjbyTGF3?28>z9P2B>EFyf&-T^$1^ET z)2JBk_;b37-s8K-xEpW$G%`m)j7!`@>)$FeETjmqf_ZXZC7j%FvCG-2(E=^5`JZHp zoy{bs!Vb~obyH@0T4n1MZR>-|)Gi#;SCzp{<^mjuSfjL^X64ymz;rvuszkqt+h zeT7!It<^5yz;>WrC-#sjhwi-Q4*ZtfxmDujmE;J)uJ)@!qw%{6R~k>+gH((jIcIi; zMaeyTY*keu`6?p1WUjDp3zZcGsog)TTEOJ}Pv>aY$xR0gy6vDh12R-nM>!1#oV4L- zncnXThw$wyQEc&aQLVgrW&h#S>Z3klm$iZdqY&D@&lA4$2f59tT`>;lyQr&+eo4+L zf61y4Te}~^`W)KTDvDQA?ruU=;nR}pVDw<>97aZa#g&5Yyt&e9nJ~8X`sQm6Rw7Je z6O-_(b{Lbkxtj0$gO-m!Qz@$scCXVC$Z#9dfTg?<4UdK|@B4vw%Li-Yfdb&jDZrYt zqpEh5WL9W?LZWUqS|7b>eYa7rhmTi|a3&cxS=G=_wJC88YqY+84*S*I959b6)3{3L z;Krtdoz|piY|B;3b}x-w{g{^kh}>jLS=EI`&m9- z)E5#kCN$OLl)r5hQ0bF#=X9-Tr*%32t4~wYFpJ6+)kdL~c?_v_>%_(VDpfIbPw65U zd~1QB{U>~a_o4hU^w<~9{|r47!nOGSAhqeq2Pn(+76d z*!2|vd_3h~(`dpJl1m%uQie^krlcWQ*^ok-=^;r?djnE#u;sa}wl+%kP)WHQ$C09C z=@kC9#o3-Zsgh>%dmAZA0)^#?rv?#Y`gf#s;<|n#qIh-b2!>#K57P3wWQX@9neHY> zuxDeibFcm1u9=VM=z#OLv>B~mb`QJFf%WO${CY;+Y4qVvNm9)Et>3G12KoeHfe4^I|r;u1YDA$y^X|hD(sWI|4lUmOFdILSxf&;E53gzcD46uRoqDa>SGAo_$Zhc-K~O<5m?eNz(_k8xRdy zmYy461Hk@iY_MgxseSa4u&Z#0Ft$agFLCC9bp{QLr)3~~v1;Nx@zebX%~WAh``td3 z)i!z!7srIhw=7zD`+akM+TkakhQ`N%`*}5rnAO;a#>>T3!+pFLQlXX32W`P<&0`B<0X0u>mI+Wadpy5VD}H96qS zrAeOrf=r!{jZc*h07Ib!rdMKQ8x~RN%%jNL z`7w@8?@~tWARaH)4OHEb{DNZWYN{b6Cp){tT_j5+Nz*p#U8l@dq8j*;EH|Sn`b$O1 z9kuIe*##WWRJOV_*V}{ZlbI-nnS6R~Re|s2rfCu_*&=%451~MDxN;At8(TQHGv>M7T=!CuS1$LH@^_R3p5|s7zzHUj{`9hQ8mLvXLbYFKm3A1He{G;f4 z@$~*WXQ+LNglO@9B)xjq4vE@Dr7lzHxjD8^&I&IIYb~g2iW5X&Wnnkg4YTkzGOTkB zp(^TNpL)RDbKVza8!W~y0N&!j(Xc`3Z|&jMwP8!q&h%tzjyj!wYFs~MKe22T^V@C& zoX+C?Np7Y<_ih7)YHSsWL;1l$91#l(|H^HOB;RKbFujNTliSGUQwQ_{Jcx%@Y%dHo zDuSP468BUrO3OzPQCw)Q3djlIj7vPwDi_0~&aWOg3YnvaaGi zRZhwc_s=nD<;S*na)wia8I0)RiG=jO$+By9ik!!H1zNd9G^isNJ@+VFxqAzy?bimV zl#1p!t1zt8yYT*Ho^ilOnP-GHU}a`HsD1-bWYOpv2;83<@%q@ z4l}*RQm0Oi2+%2LO3qNSz}SvZ3y?Xmkns7FRa654t}OZw0nbk0-(F%#c8O*W8FyPv z9_|`;nFk$dIv+W?_?+0aVC&x>Uz_R7MLC{>8wOqQp)QZ>w_h3DuUwZ%OG-|lf3#H? z-cb}4iEY*Dg5Ql zlhc9iev%S|lRK(cm1}kYyL@>I1<8*q@4LVCriD&Iy<6m+cY5EVF`N61Mn3=j+aMrN z^og(8+V2Fts_5D8{m>}PiigT={)V}4qC16r3`-LvM#B6E_pvg@n^9TxDzrNM@~v$! zP_+3u<)sP^scDKWBI@d?(dkAE#QlN?cGIl__fc)Ww`N=Zs^vfPL#-?Sg)Z{|O;wZa z1fSSS*aqzmtbm3={PTkcq!dzO!YV70R|ldhF>3CMXTIZ@~7~sI^-fqzB2=4Ik(&S^Yw^5E3mZ> zu=drWwP)b+BVLxmlUz2AG2By4s#%PXSoq130r$f}S3lZ$4$Gj}o=NdEUs zO7%b5f1NE^0$J1sQf_o1+93W-r1Z(wyFV0$3Duu^$3F?m|Dk~7-*h(r8)KLM|EmAx z2pm#TQH9>O$ltCl0RK)Zsxnc}+&%P99pv9>{{OTI#Q&Mr6945@i~KYgxw(;&B9Fd) z{F0PJ6e>Z9DsWz7_}8=DQS}}tcw}-?Tu+Z|JP*`jCz4f^P0h7>gA*p9h0sS}`Xh8{J7L3{1n+uPT?`9FWItfGgF?@;mcd)_@=y&0XI?fv!Z z0W~%Cj8%1T&Z^er+?=$lE04dwzXoGmaL(W1j@JHww|c%ajw&A25y%+LO_oaqIR8C+ zYDz+1pZsiVxcj%AEaRJLSXY+>002nfvW%np`RCkP8&r8GYD2S&<(D~n*nsl?!u%EO zz025XomOs-BfpPK<=?YVl4&zb|0g*W>8LA+83{$Xa(s2IImrd3Q$0vXAtcHX(VUge zqkMQ20Cu15?SjJijHRqbWP0*!%@Gw7xc6DqNJl{MHNZk}R&1V-WhqGOoQ&I*@h#=* z#VR?81lJq#Ps+OEB4VO?Ln-FnYlI3-mSPB=jxXJ!x4|54qKZ{rRjXF_E!=x3m6XVH zwmO|0Kbm|pNxtI-$ZrVn_<_Dc#Ir7PY*_a+d=COA1(6?QvJeP1+!(L(%d20E-)-+f z`djYqxb*gvLYCS$CA@{|^*qCHpM_^7eeYdRiSL%Py>;3-~7DiB+>MXqI>-UXWTzSoS;*zB*FnB6TU-aU3>2g)WThCkk{StYwwz~6K%&2 z1OU{ajjGxN!$7Ug1EFdpNr%@v|MWDdudLWFYOZt*XVBR_rm^o}TO^~9}ItEg6|_~cD-D7V+% zN=KT{P-RZpsV8>DPPlfhkv%#O9_DJn&ieJC9trVQbd=3|I(D&|`C$c=9poeaAr^}$ z_!SV$Y52lre0fsJQ~O!kp^eAn1KwAo1{DM&d(NR@V!>Di8{kw9d>zTy$@$h+{Grcj zsy#8PowB1iXeIG!#X{fEh|zC8ptGgJeB+VLdN*kGJKM*ok7J1IyN?~l${X8ksWSH> zzG7$q`+}>z?fuLG^(GtMwjlW;BepQJU~~x%4{drnDZX|2K`M^HAXT1$AFf}>s=Qk> z^y(V~!P*TI_g5SwGM^_5i6Id|C5hqDp0hU%)8-^>YoOk?xSu%h+dsV34f1itNW;27 z!h9AH^acc@8629d`O~`-9_nB_yC0ufd65MLG|?7@JGZz*=53A+Jhwi#FOsiRPUa$w zQow~-b(F#fYqD>L`nxtb^(9P;yz%?wHcA!~WXygvxS+Y$TFgPoE(}f&H6?6NQEqTm z6&<+sD|fi9XE;;I{%Q`XB(D!F@@5lj?k1BrZ-A0=Hh^KSb7%QJGS>jN$pY1XYGTek zGl(Jg0>X2FUo@XCkuIGO5D@T5My5SK{LP;q>7c!@aTVv6mr)4`pQNSxCgshCM!ep) z#qh_oQZGu~e0mTdui%c_J8^l;F>wmrL4YTT(vXUnlc;98J;>!_7T}`1?k{N(HJUm( zP{lzDGMXHD47{GiU@0xCkB@6r>HDr^$0sZHxXFpsGYN>i1Hx-Cir4sAG7@1pNk$}Y zC)jtFi3gRYaRyQ(za}6bCk;6Gt6K*4ZuM94fQUE4f;C~J&$Ny~4DE^Q@4G!*_RJUM zy7zz^lK02T$hG+4ljI`)eDhO|sBJ1U53D(`ht`g@stNMKRK8%H-azp!-LCglOKtQr z@;0QB%sY7b?$8~10Q70cU{M*tbNs>D6r*#odgwh|cBKwnRadnpDFhCU(#JlpoKxsj zHnujIk3jMRZzIxAY+GjgFy6?Whf_r*airp1XpNibKlR8fh#aYGMC$K*BY|!iwwV6J zz%KljlX$P)G*!l)UggJLlyn>J8vC0k+zpjiNh6gj)+L*8a!z*E4Vq2J0kOa-)U(!G z7|T&v*V9XSLiNCD+alC^y|~UM0K^k)hMwsXR^y9g~!UeXnY}W zm6X)FLbG2hNdR^nV}I5FK1~G@m|Gjn{P@-;pA&e!wKC; z>~KMTtvBU0((h@5b0nq#dNd$euy$dzZYy51;T$V9bdK^cDk8M}J^RnDGju729lUm8 z)Oro5UV$|AdCW#yaK=r1>fif7QT2}?W!7NL9T$>KJ+y`-)kMtD&8?_1*cX!6^^^rQ z;YmwL0%m&3CUdN_+^r~{xq&aO;$IJ4MXtZDW-j+&{1cl-9?@`i(J6e%=Mq5qN%+3`Ste$q+r%3aa6}a$JYvw2L zRtK{s5XD^mPRSoy+38yDw#393YX5r4F(9n_@piO>Mq}xhJ3NL82M(!EAZopwZ>0>t z-P%G+BJ)S0BkDtuzN#bwxFU0X4e-0nN1JAOKS+o}21&ArR=EvHx!<>+`&~cVwp;-1 zq+Pk)URduhlpu@uGiTp~x7&0X?<1VPn&y+KTR*kE&%i}6?WWb+vWfSWq2v;VhHIsr z{3GcsxhDv9_}XD~iq&4`(5$?3;0u2=N;<`_3=@($WU6K=iAJyi@_X1zm@Ii%4kzoHB^$dXC$>Rqo5?8!B7KR8m_qe?jzd9LN!?p)yBzA=RHaa?ekqT+p7QbLFF%12i3ly2m`Hj{W)ZIl9T-O}K~RT8nae&{$@ozq}Zm zR_Tvya<1(f>!~*?dhu#BJE1am4ThyxSiQ5pbn+m=d+S!&h!f|4}L z_hl7X_PL7S5%)~*b=!2^eK76ylF?PE%M@?(jic4POF%X9cmFVWgVeYUDE-cr5Mv7B z3qj^d!iSP9sJ5T+I>XRQra}9Kbpv|#EHyc%cDDx%8mN2nay<~RaSdHNvd$Y~jZXO1 zP-lkl6+q^6GN$kSvU!Y96-ceyoT$n?`+zB^kfYrfWm2OMllAQh;37S&wvy8n&os*X zg=E8>5t8DDsE^lMY>{@prp)M8yAiR8Rc*_Xm0=mw3gWNsBp2BZB2x~nXT~LcS(BPm z1|{Y}?=X7{`)u-_W+b!%779@3sj7-qA)6as!VU9sTXNjExkfu_*tKAE4_tL!S_j!$ zZ!KEStBx?O^+34;8Y%JV*?Xs#{mvF1x*RcYj_jDe*)0o}DX6>O zVmThLEIFC8WPxrxD;z`{E}ouMpO&f8X2^5q?W5%9Pu}RqE!AkZ<4@%Uk+#mBGi&n* z^|uJzu`Vm1YTg!m&iGSPpsuSf4d~;d-*oqSt0TNy?$C#QZfWma*3?}18vd^U?hO(0 zsB0fpWwiZI@>K7mX5a7G=*d%6o5lV41iNWX(thE#V{xc(pu(0uA`Giz8tJM|1s*q6 zwWIdoVVsqfII%EXu$;x|7P75YA}s0TFPlrY1*~d)jaF`QrOA)G{2%H$)0?HOP|ftoGq_;{Mxmoa1qg5@BoM34^KU=% z(_+mW7To(3Ki;yLSGW9zr&cAC(YBj|ZEntf!!8StIBDQ7EBkqx`mq*g zFS(nCA9#STspY{9-{z4G-{jGy8QdDvNndjbZ|yDSSc__*rhcB;U;HYcUy{%Klu-;J z6O3uE1PMMbsi(m;%E_iU;{8o{2fFy+Jb2Y+leE$F>evPYVWu!bLPLUohpRe8s-5W6 zGBQ5Sh}Vl>)ptBH3TwEI2%U~lT{xzwNFvnL)T#BuTDi%cUV?$p&`3kbm;w|q`eDDw_S{tZp^V9ul1C1^MV_YiPtG~#~2iEcBy9>#) z*3)|UHC}!3SG>5rn(`h!R(morCKIu-cI>H{WI1faTGV}eh59s|YohJkS<1s_VV+*V z>cW}i=geewb|%?b2^hmC)5_S83)ivD96a639&a8C=Vnrr6-~5St!{H6gb+dqah0xf zp!pbW>fsSRX5%>4C?DP3gY@@by6LYs8Zk!O2~Q~C)@AGY`V&9o$shcXA3pgcPd@e# z4=v9kFIokfh7z`@27RS3o@qfQ`YX9`8j_u?8ZBmwYKu^}i@xCiLxBKe zfnhu@4@0W;9x$7URE=R{aG%$h&qzc_3i(S_BmJ&<+>tlVK+P_SkDOrJ84vx#!Sr@x z2vN6IxFHx~!qf#FofyAxoi8CUNWj-Y|4;|5A69T?-(C*9ca#rmYH9QL(bXHkJ9MG! zr=T-gu@$ah(LX+{?wS!pEK9id&7*IrDiP35fhAsg-Nq;pj3PNx3u_0VOT zg+=QcmTe*3Q-jCpq_PWC-nd}0OWXYU^LhN6McjMue5T>1eg8h39#61a)MV)C!sBt% zrH-Zbm~vOw&{SMPc|-&rRZoZd*O8Zp0}m19`zdbnP_61P>}jHMe>pWCRmc2%vbA!- zeO_bEYCL5-*;iJF(`{vXdI78EreRTMP+3_S9MFHm&<3d|BnG>g#j5YiH5#~ZoiD+y zb>Dh}=YIbucC}fFUGrle{N1ZO_0)PEnxnSYdVgJ&C`{H|=B(Vnh9@`hqwg*vp|c5h zYa1PE?Zt<5e{s#~(~5hvkzE~&)IMRJcQ;!r+?2{&HiZyE2qCVS>l|pbsdh`*{qnDQ z`RS*5`sdH_^b2qD=NdDE8TarH`F8S>F5MAH7d?Z-?8Q8|G>W92gY16cX`cVNT3-1h zn-8i$)at`yOu>{qlQ|=e^uGTFul(jkp8wwi9H?!_YliWQXQv&*gxPE+!C@zM`cmem z87YW3&cRb{RB9u%gTK>{(ouhmL+`xE3%`7ZUu-(a))p%{UtUPTf-DjYW=xJHd~V(> zzMSKtW$Vjq`o%AJ?!_&FYjPS zMGNOg`>8v$i9f&c0>64`BbzGS^qOMG%}pZ0cmoZ}2s1)rE=iF?OzYXp?j7YERw>h^ zf@47azpL>Wrw;F+q-B7{_HKqdS~=slGCFMrdAF+X)ULy-3()U_vClGizN-?~iMQGG z_6hb^y6DrH2#>ZC85N1%FiPL>5CbD4!7%fQCp7LW*T-zPlaMkEd+RB6E{z;>!H~+t zLtR~T)z;GG_cKH^X6p=YUvWEMyepq2xhBq+ous~|QC)$_2rYyVLI@$Q&UFejT7WPU zWj7I<=%efSVUF+I$<95+>@01eS)YS_;e9O2wJ|H!sM@|Zl4c}hw@0b1Cb!0vLUj5< z)~+pNZrmX5(w!XIvy=TFRC4mX2lv1jmXuIj)<}yvmz?MhHcPnL*T>IGo83#hCU%l%Bwo06DWn1@}j&i(j)4jr!MY~KXF*f_#HAJTlfgguAK zD0Q2$rf0IeNL`Ca?YK7xojN;PHt8v5X2-NpS#m^O(^8IBlv7@Dl+q)`96Ve`dDjq~ zK6M+8hY=bPMW}w1F;6pHRVQd{YNJ7AO@A=Z=m`zcVK5Bg^9|xs-&r6KhF*mXUFZP4 zy~7NBbSgAYE1t$99N1sVfkP+wprV2bwH!a)$f;%z6EV@4qN0h=g=4j-x(@cxeXfeL z=bSjZyy}=?g#3;Am=e=TnwiHfG~%iMfSpGxI8k1~2PZ1kaT;j%YJnymi#3N8E3#R& zW*+ly%^|k^I6Vz#sdD-81wIj_gb+dqA;hN?5(rGTs*zA}pB97NX61)gT=uFyf=X!$+vugfT`NqjDi>jjIN# zub%<8m;OQ3fYm-XM5yh}!KW<|2GwpJSI6n;VbC|qu=YqsZ^WPvV9*{`7!xt8of%aP zKED5n;Q{=^L-Z3(WJCjlO(*&7BS+A$xQ*QJE+@wqATmTXn2jc)<5c4}Ox0VflV)U) zQLmexexGWTjx!#rQ{~L6@v0VcggQg*OjUjV>b%sV>f!BG%iy@GS~Nz3+UJFH>{X5W z!Eqyr(OUgOnHUQY80^P0=*8n3BcNBo#bQwBGr?egKg0e2BNxs$!eYg2QP)Hr_-Y24 zx3shb-)&M*P!PPnS4X?80u1-p({k<@TQ|K!aYYj~ogQ_40$3c2$eO>FuYGGNg$V=b z>JRbC&wfeqhdtCz#G#MNCed_`#CR1p7j0qv!Wfnqj`D}^|BMr{D+#^xG5%wUkr)r|NU`a`h?7~L z8M78F-&$>^RcfYdHP-v+VX4(wg}de!4n|^q9~7EU&hjzM1=)qD3*?d+x5AFd6eBHrR5 z&ZY`G){&DONt$l5OtUV7v9v-~LD~yIt;D6;iHR`>-w`htMhGE< z5JHF>pS0VB5JCtcgb+6^2{b|oA%qY@h?|y73Lq}hCI#r|=pZ2>0fXV{UJWX)zrMac zd_JE{3Lu0KLWn6vW;qj=r3IR{wl>1U!wC(Qhj%x+k&zL?!onob2qA5&HV zO+vmeA%qY@Ohq3JG}EU~zjUC{UaF`S5L3(f^XKXB?+-qqF&d2*J{31A`M!h@LI^Px zX=8{R8yj&r9G4F?e!m~RULV{*OdWwh0ChhECj`*$2XSMQ?@I_Fgb-8F#Kc5!EV1^Z zZZOb{kB?srG};PnmaEax(O_XAgb+dqA%wUQ*=)Ap5~31LFwh7ggb+dqA;ir_=H?Yb h2qAt#vsLjgM-6XQj~oU2ZzWD2M1q|hVpu6+t4ih z^#|VNy@E7c)j0XV>jlymDOD*rxY`8FM^oh2Yjh{Yk1lX<#Bcxk!YjR}JA;GEa8Z(# z()KhuT0xg2+shGuMs=k|rwMBA$3}^TUjnYhC(H{SW!rzBR+@63a{pdG=8(10xb$>- zt-NI4)^&VRyyDt)kjSgL#A|&-K4w33gUm0G{(u6H;H(tru>KO?9gkacp5l45_gyVf zp}=GHCdXsdt1DAR%Bb4oSC3;KVr7?HLpdtbGv{NBIdUqg7J!H-EFtNAS*UVR=JVW6 z$7^ue-1P(5 z!(nQD`J5>pi9DSM+IM7ebmuLcMHqh%?&eB_ruUFDfgU|Pv!U@^s1@Qwv4aNvwlV-0 zKV4n`0BTWkd*adc@Dzm3(1@GXyGtc^D~mSkg^yQ)-gOl6gy~ikg2<%Tx(u(Sp`k&& zh7=putm$4s*~N6!_cGJG5sNNUs1~*zLk@A9vr}-n!>oCuBUu&|c-~*^lGY1-pu{1Z z?ItP=<6;-$6zpnj>P=5)t|^Cod|Z3z8src$fLN>Qk)`ooHTEx|!bB6+Qbj|mDQ?*s z=i0p&>)T3*u#Mg(nZ3uO1O-1FBpBxIYUGj(AD&37Zw0Ii3{0#ud{BUpf2Dobs>s^h z$&wivx&JHc3QIMWo0K%p(z`YxoDir8-<$IF?Kqs$T}P5vDna#7#Oe>JX>9d8pZ9TI zO!9>hOn`vI58{)$afush)b7~5uJWNdibHeQO?70cMv^3yxLWTX-S8lu1Je<^C*IRn zusq$I@PXRP8c}+OzxE@yjGW%&15d<+xY+6wkAXS_5sU?}7GBx128h~3m-tw|I0vM8 zA_$rE#UH{*Snm- zc{$qBTqAW@uk~bQUEM@j@@W2f3`&ZTl$_!-9lBw21kX%Kh-F3oQ}+M5EQ%d|pMoFz z%n1?UMyodVc4Y$mQ=l_S`Pz~~PjuTOBO_&j^4^*A^Yg&Lp&>*^ynibg#ueteCH~N1 zO++AlHo^G!-Uu-w>3_V94TbmL7SMfSIL&t!ByW!h|M!JeHq0r^oH=-CR)r)XAt7g% zOke(^r9@L!ybzm)pt&Fg!CX?vt#4;H*}qR@b!nN>g#Zvm-OO{!{~;aA>R+*njX=o1 z%}TW6`p*t8m`Td~E8y3_5I+H6Bnc)nOuK(d-s99oW%}_PZ7NP?gIvnv2`yQ315G7b zI$cj0p!Zy`8@l&%j0^zCS$7rIG&ZKX6(P$}i>Rom=w3_c%}B7fe3eS4QegJ8f4qdn zY5R$b^?9O8%IKaEHb!*2CBOpkKExjOvEw0*DS`#OL(hE!jP?MEy7wXd^N=#Ri4odj_G!u^Nv#M4xw^jIT=x8vu>4Uginkm<3Iz5QFpb@QK{wN*&7-%w@2d zNA;l#VpvUjCl>)7bcSI5*wtcT?IWgc=r3XI*`~a*TKJh1i&BRp`51cyqb{@o}}Ir6ydC4%qwkYS<}(rT3|H6}kEA zY{6*0VlQc2{+^mQUX06ZMm<|NeIk^2DoXdiwGjPA64%VxO`rOGe9ORyoogmfv*Knx zNRZC&ua76Jq^n;`;)%xpR+2I`ifGBs|Mrm|<|>f)s~9E6L3h2E9|UTBUUr)^yxrjl z@S3F?>(X#`cK*jWlHJ;=tK&W&uRUWsc3jQE+R)llca=_+Miobub2C_szRJtOOyAfJ znD`*C&TmO-OmbJW+q0!w_JhXrBBX3Xdw}t!o&>$H%&dcfN?t-( zUI#R$xh<7Od@|-+5M^?weVDgD#-@5l#po$gcznTj9x~CG)bO%5;;$+5Z#EEVM^2C^ zJ>>>7gM3VG-?QJtxxWQjCYycfX??+1zLfqu#$fV>z2OO%#aGY-qFIJ+KeuB};~&P} zlz6R+RMv~x=7T1(aslhyyL2sXXH5F*0yWS%iuDLPt1wlO~lG@tZ)Ywd(iR^4k9XZRD`a|c2!zk*%cm00F9{$49f7} zQBlSG0aDSE>j)l&0A1rvYf2DTRyy{{oqG3jMLqnp#c#89^bVCZTfcB%jM^Zk)$<87 z<>xn$Aoi6=unnC$n>9Bexy^hK)VGzJh{R<-_$dei-9r|RuO&Gzha{c>j-7Y(;Smv< znwo&yn#1k*-qF`Wv)QR_kg_ z-}u?R;P020@GsBDO}7Ioe5DRfN*_b$L8L-Aes2U;JxNY}e~fMGyqEDkwoO=XyV;>; zm!`!RQtP>d-YAmy zI{0IeO@f^VL9ZSKTlngtj(~layH4vLOM74QP7RKL0GOs$fQpPf-ixH#!BYUyK<=G3 z-xs^5zkb=c@jPhaF!wOTX7&k(vLTSJg(2}undL;|$+8X)Z9a&{O^7~!T=p}^!q4%k zeMor0?RvT-yPc{v6{P1wLx)P1zn3AiBy>)rl+VG4Ue9ycEvcIdTiqIhZfKgCtlCuk ziR=R-5rDy<#H7#ip_;;{yaNl~glq~%JuHoMu?k-{$K|~H{}O3jM9Rv-5?k+fv(CTg zK5kbiWvCW}eLi_A3-t)wZ%Oehm7;sGQv5v6|H)PVyF;Aa>|ve=)WHj%u^l zpyh{Z^BiGsjE?v5ee>kciu+h~VNOShql7{wuh+bS|J|PGV z0~6Cg#P34MHkEiA$6YZbb+V9JYj+BH!I61k6AEy31 zg7j;Z(i}VDO4h1E*&Hxa#qPyK?@!HIg>XhUOVZk`Cc_+{ky%{;GKo86->2Nup18}t z_3E;qv7KPOhXeLc{)Ko|q}a6H$uPD7Zeu3-RWjpvJA17#TFLY(AH*f;?bbEW@OWdP40Fo^t@f!~t#KQx?WZ-QG zV>}_1IZVGTU5X1Dl!skinZen_(qdzNCE41#Ve2!@s>2g=P+01bhQ%s3NWONAxo}lTKX)d+86mX>ieJ{Pt@}SwNsNW$GPW!_Ea?!7N3h|M1VJW2!P5Bd4SjJ9_(%Pg}!M?x- zzJh`(e76)nE0<;yTmu_=w>8pIZGUHtH~8>t+)RBDqcmI$o7Mf%_fSnC zKZd>5Gvuh&zgw!)e)seef&UbjuJ^+Eyfdpumo?p8NOsm#P+SA2;7;Bfgg9f>B*IlV zX$tx(&TrR=>apTXHe1NF!RAjkw6+>AL1`uXottFCi|kDOMUd(m(Q#|o?(XAtf+w#r zxs33t)Ig{1`DS^X)rm(>WrCFJNr}^*U#(uMcyJRHOUS`Ew%&DvNR6vBl7fPf><$!h zzWC|Wayv6BF1vv091#HEr$%(N6|O6oJDd>i<4Lnn`*z_8%AGu&;rz!GYbcfIX7AfOO8IE9EZUnpJ<#K^BE&%U z?FudW&5e|Su4Wm}_lw<*1N8~;4h;ZiLq@P0f9bmgh#ZHkT0H?RTf@HHv3$TZcj4PG z8aaXB>rH$Z^ClN%R@@HL~K@a*jD zK!}RsztP1P6yE=W7N28YO~^mx|Aa#R?>ONjItB*DJN*Ba_&;kRdv&ZTg-OFVEyYDe zMI9`-R_-4hNO^eNz`FhgAKPp+G_R%>;bu}1K2Es^<4>OL#QE0HD|)~U>47VHFC>=s zPd!DWM}G-&9Msq7KQSeRD19h!SC|@^mx6*quhvYCy7XV1mh=jCn3$QReSJj{GY_K( zA$qLD6(8$RC?muDH|7`X@?pZi&ZL7z`g~yJc z45cVQeXNuFkuowRzp@frZY%_NX#j07B=9xo$6CsST3vSY^NW3tjI6T#N0!Nh7~jKhCv3?ItffZ#zPa4$K#TS0s^d(PCc?bdbuUpZ&On4w*t^#yT$OX4 zTnA{55QesX!Nr+#1^*EyO)nSNGdCL7U-r==1=I2dd3{}{defuv@l80)8L0kSRv#%( zXsbl;@q`Ae;iRXwkB^bL&P*}0M1WS52~}XlmEda<2#N z{Um&NFH3r%yByfSk~Tgs&XF~$QPq-kCC)b)S=Ffjc;SZ1t;5>S*2E@T!Pp~tz%@&G&1ZBMkMn-N!2*x;!L%W&TN%R`YP*)wq- zB8}K6q_f5G(u~rg?)Ml-vj_aQ<0NEGsq?(GDc#VNJ z(x2kpl8E9S#weB#%gOy4Nm#BX`3qW@M-h$%x1QRDEP8Z~(zGrCs zC`A;n`=Oxt5%?SPdMn3+Mf3ejkA?M?IZmuQAGiQ!f3zF`))8M<&lj z+($0RhwxwE-`(fnUC*~R%GX=#s|EA5O>d5ADP!+Y*2zm{ z4Zv5v5dUbo2O%B0cqzFdjb>e>I#7;U;&><%Ky%lX?ux{Gc{Y;2mQ8GuzSG2|lxmGr zzVeFE*PP+H(*qcx{8P@SO8OuXgOH*^Zmu->%PZh0&2bMeevW(T&Y#O2Dj%OPJ+MD? zzR4MhR1gr3$LXFVjs1f!rBJy8+Lq zHQcRZi6y*q4qWr6Nx^Mf6sX}nJ88QYFlIH>M>qP~tH}QWmh{_=X1hcEit3&(bJWB1 zWi!|0qowfdfe*y+QRV1of=q}HHf8Gy)}<`dqB8EL!plUES8gXF)x%tZY0Ir$=>%dx z0H#4$S9ceQ!Y12I>t(KU%RUcpL(MeddI04z?$t5bx0|>!(NL)9#gQ#CrUc?P;{t3s}DC7cmQuDncXU3nte{=RO5h{4TpVQR!hpXma3oeS8sA~M{H6@^Z+$A2 zd-!;JKvqjwH2<<^L(YC>-l6#AgF9=I4;l1v(?f&8gGFA)A3Yb(p7rnJf@mN4U#Dig zV+D_mPcO@GQ;S)(=ZRx_l#X&^jR@M52U7O|j})nYRJx}w`@-W+KYTP95V2tU& zyzZfafhaWT+3;Ou%o=>0*A=m^lRt8?ivQ%=qh({Dx^X}dE|>qpZhp-880SzZ){buN z>|kXFUNy2G_|`_{u!E=nDPqIjHZMUri`hq?H|deM_Gd}W@s6LTN?}xcgQ8wNV3e4n zw@)Pks<#*g)|Z&F{3W=k_$ z9maE;GffP&&kF(lV|Pk=U?S{uAV5NhZ67J=>R(Q>~m3@xr$_GT&?8 z05UuzwaE(0vzKMWKoS$+4|RkNiG#(wwe5;cjWF335Z<1+`cs?jcw#OtyNlR~L9+MV^-JE+PVUPmH&nTgDe(9(H%qJ1aex+M3-Qz~200_~9N0g8tl5~i zpso`rL2^YNFo$AyKX|N1oeD+P`6_)yo(gy@2zm|}It-idD#0Jg5KsOokT+4k^I6iR z^KqYn4Os71;KfRDUQ7QuT`pI&6*J&g34PUjDdN-fMS`9P2axI7UmG?E;{P2P%UHWQ zZtr>WW#;zKAKQUsw1S6El5KHft83QmYD{1g6Sp$-jSl%kpUZq#8(tNMSeWW4cdh0W zebNiSh=OQCZCc0IMFuG;j>P+5j{NV?OxS8M>El5FF35L>bUWZH5AnW&=0h(g`kl(MM}NH)Qq|IuN*Sj2Ob$`MNplZ@l3FM{#PZkUuQ+W^_|B7XSx7=7C^n{DtA|vlMo(YT|r4i#*q6p!5D! zf#+dM-#+kIGQmJ|YbV z45X?hT{tYmhp{#v)0Df0ofRO-Iu%zO&d&w+Q!;@Ye|+AKHTr$el1|{D`RP{oxxb#_ zmXq4g^~oYrDP`8w!f;e(xGH}xy;|_kLXsY+vK1(VYXdD>JXv_VH|62rbj$BL_WbATXebf;k!@ySwp&N!3A(Rcg|)n(aIr1c2iC&Ve?~$JHgzt#st8R81`0 zI1{r{%rS!6Gg*rqgVjB9dE+a!WWo>Nns&J(60^0MW=`JH?)Cv|PToerLe9hKxVMmtOLN zgt*Dk_nK9sU%`z4KYw_1GzKp}Kgy2_uU$HH67%*9PthOUBv;-Yl$x4abFqGS5Jl9D z@Rj+6GWn>l;^J-WL`w45!3Z%qO5{j(o76Qc!QYm#=%NGZmHuGY&U9N^54x-1f91iK zlcdeTuF139V^5}Jl)Ied*l0wh?Dyz$rPV2nGu?+cBvXl6Jn!k6g%#sP;JBLmd>}o! z8{fJ;qQ%_^QoS4Y=tLQ9hL3o{Oe8ax+UrCVG=c=yiag^q`Tf1TEqM?y%jv{obAOBD zF1H>(z?Ghs0;lz!bg-ONam7_)_NmX~d`!fpmcNfsFcP(tHXk3ciO%t@KE`Tad6y63 zLnbybLU3PRA*!bySRtfr$`pVq@m$RfD_V;p>$;-#J-+lCk9s;tqN_knI>sop82@|Mna+MSwxUo4&1zTwI`irF98(I-(3ynt zd1LNO;8T;C);kVx_>E~v07bByfB&7WY>Sa}h&w#JgEzUls6Pj#0cm*ih~{J2Y+xZH zBL8RG0p(FASfx851uyl@23aE643_cnKvBRc8(9sfyzJgqiWOV?@1~WwOFW9SFsB!4 ztfz>xlS>Yhn++rFd9!a;(NfLgNWwdKkV|$WuWHPIGEw6P3BO$LO~*O&0&BD(dvEf3 zE2o=Dpe$J{=e%K%zz@nGo1XWtomOL7#c`E5CEmaefP!-|i7E136XN!fG>v!z7k4$b9gSk?v=|GkEylU0se`BV+jWYA zyv`9SjF?bhX71~c-FEPC9^Ma~o_G_-XS7%6RGU1;_vD?vbJCxYi3(O6WlQcu0xg$$ za3Tgm_ICu#p9+le9tMO9<3Daxh=%{jc7w>>nv!QMa=4%RqjGdUGaIcmVz;S;Lu?Xy zFltRfy+@!@u{CZQ;9*n#QISNxF_Ly|R+EY0w|RG3`uc2qNVbFoKvDQ=I^07xxd|A- zBCoj-IT+``DxayH%kXzYpsT0LZ%;_{C7$X>n1Jb)?&(mfHmz%=0z~Ii5cgP|UOP25 z%T#e=U{?u3pI?sP`iO#!0a7YMjQBFgeNw6kZw!Bzms~blAv-LS$C))t=E*bMzUJte zz-X-rccR?`&VG}+eXALls1x~ie&`~RtVCh{52^|XlqqFv%kunu`a;=tKU0mMekbaZ z6r9muJEz9s*Xn}GJNXus0(qVRr+23F^D+m{&)P{TPk9m`$mi`^Dv)UQ4Yif)9;*EDPXJaNK!{`@fK!4ty$;>1%>?93FtP7gvP80h&ND*NBQ;l z+=vtg63c+eBw^Gr>@(d&f}HFbXE<3xeqjyV(BL~K{om`>Y`rmt8R=b?Vkcb|fJu;y zDb@`2J1VT4Mydu>?^mxIq=k|&xn5q48OCuVnUEDpdkt?5MvdAK zIZl2`$@m~<+NfwU+T(Ij*dHm>`D1ev405U46YTtz+fSMq4mhK)P>(@NRar!JuaI@Tkb}nPFFZ#GUP*go9U5O)QRfyGS7>eJ6kyxdJY5pFB z|1}9fQYl{p1PYL^2I0pbHqc`1e_HMD>3i#9^-{9ul_-Qn8bT4LN?XH^P3zZ(5ZaQ( zsiPIVCeROZJ}_HuRGwDfpd3uHa7`^%zPm%`)Z3 zEWOQ#_eZgK9HLDU)nn(vN$fB#7Yhu`efA4-{kRB6ic2XEJ+Z;!XeUz9*)y|Fn&%i0 z3DQqz%R9$HWb>)5qZAAuxc%dISj){rY8i)`k66S=87;XbyEw8FGT5Qf;tlyy)_309 z!RTv?dwt9%X|cvQ=yEEZxe)v3jPqSI9QQ+b!@ScJik(3=T!YW@(-C)-Ltc57;5DdgQH2kt)JMfLg~L=Oi7Vy|N)F9$pzM*=bd zeQfjTU&23@1S|h^3?pWi;eNmS#njCREqF+D-=>Dv+nGEVy_)TkzAT-Z<(n2X1x&Pi#j* z@1x~EOP2{<9k?sMQ~S~7ADrp2A@DH7DdZ^5Z~rlHAY3X`&Vp9>l6bk38|T~3xrduIBAEr%MZ(MSak(Ta-O_pS_JVK_k__;XE*8iw7(phIP~tg!FX)&#?OzmjhG(+Dtd-nV_o$ zF|*>2cymnmd=HxVIb*G;7A+sDg!#H1ThPOZB3)7}A%IayIT&VJyGiiL`GrJ0s%>t7 znyC<(g0Jmt_Jo;SXfg7K5!tiyrioy!lZ1+;WGRD06vent|AtKtbDCgAMx_df=CVjSfopp4bHCi^|(7MVafFH zG+1tt(#+-!PPiB^;(54SVkj1!V>715%kiGm#E_1OeK;yXV~C)8J)Gl_ zjik9Mf%o40v-)VA{<{$`MSQ4zu}UG&x|E+E$32;d>4X7X4jMRVprlY=G)3iSfTlzU z&vb&3T`u(GMCc@;bTZ6}v45 zxw2ThHD)43CH7Gl&$S`AvxC-t|Hxj!#axVZ)JDUtogn9l{~%r-OK5Q8YX%-^Vg%8R zSY)N~J^rgT?u_jU*mh|a6Ci|!L})JaGo#$^>F?(04TdKr;qy{@p+@*HKEK-PT;ar}H4WGmyFCz-la21|i{iSg`k&?JZ z_q{&t4CIjbg)`b`4-|sY{}wskzbeDS$Hx~mx$~tW4=eolWIg5nPpWU@d975eUKT{p zIK&3(U@I3m$$pI)LD=-e^;x*0yu43Ci{@vFP~<0nRLa&I%H` z**6q;s;K@M#rDG`&x?b-^NUfA-0UA-n*d*zx;ML*IZ4e{DEn9~!%L57l+X8lw|mtU z5etjqngHbM7>^>;tA;~zi#fU8+#9?`|EH0u#-ZHYJLDhUp2&?zuo>Al77GuqvAda*Qev=jT zetV?-jSv`rZlYS!HbiSWL2-=`{os?x1C!g1(>&tqc`Jg25N^nPmyYNoq5t`xT*Tw6 zyOP}grc>qqOdj{J%bEOS)V9dkuMVx~Ekd^6N=N0)R%wU1gug-Vwd`0LFNVaTBH1UO zZq^bQa(&;&YT+aHj780nm<#7YqvL&P@L{xyKu;3Kj;~k`Dn2FzGB{ngFFytm1snH1 z9NAGw7r>AfyEO`_XlV=fo1!cp8@mO(QE{iuKD(w;c?#kd$;a#;+4VE|LIgg59axe2 zGOc746mR0;YzFAs^^xgIzWRD8s*?*}AoxG^0@}3}W1dZjf*ZWwp}?E}0KmMK&lD7B zx%tp{XU)Nsq|V(avC*3eFj!tmBZ`>ALGRBN;fB@zu0mJY%p7C|4W{1`;5pRa!drNn zt*j7tIMnA0*5`*;CS`dFczmyOvu>>6$eM}MW2PIrl%Ss|VjntBPm0~kFvwMf9&YTm znUurBgs>*O#}*sv{|j^Mbqjl%9JfOpUSO}x6oO2{%8ug284 zk=riaLk*to5UnE@=5wLkwJ6gGAW8@k+L(S|dW_A>dy2BebQ8&OQKE3t_`KG|pxJz6 zz3=9d?wf!1aAEJCV(z1|^8M{9?axYzqywrROAXS=1wFm9?2@7GLUHx7uIoQC(4c$R zQ9XClr>x2cG2%6@63VN~LA0$YoNPwnKB=St68@VZBNn+V{;>(^qkbe39q#+~5|;%z9e z$N#9r%NIhT{u3B>@7`w%NPrZ;83K`(&!G6mW@wU^h=XBDC{fvB_d=6N?NgDcz{w-# z^VbSMkr=pr%P29IAFDntzitMtQXcl^03BjcNLya^=KIx3>9KR)idM|Yy%Mj01&x?Y zM5w3cfj>Z0iOj&}UegS-Ty3ql$L!_(p(>}GJdJ*RQ|T}out7OA`xncfA{=vbS2S$R zg31akdwU9C5_^VL8z*EbZ1I=(w7@4$PG2SpE&%jOrDTeRfdN%r^jwxYFAC2b>ma5$ zhRY2%4rc1yeFbaiHLsKldy9s1!)VYc4sFo|x7K6KsQT3~u*z$Da=xP^)5oO@QO%dF z2BIM?kZNf8A`Sf%aWcqANQv3?bHW`f6QCIa0tlLQo{sKndk8?7TR^+o?o|j}7CU*t zwSRL3MUDF+XCPj4Up<i(U4F(!}Q~e1ye26Rbq@XBh0tY!N&we`2BuvnXls8C4 zHW($|Jg)_kcGK~_`E~KFn+pU49)TR+UkQ?;4Q>K?m6d$yS(M(Sd6{!lGm<=Bf zSJU&p2V{%J&zf(#?6DP~(lqK2I&ch_STP!CdcSjR$lIBR*Vdjc;I~00t~3g5z%(-r zBnjbj+qZX!VB^Kua*&`OM9Ft1GTUSEsXhKGx?>k_VNCz~B%9sm#&rReRcxQk$xIOo zC_UY0rXkWN_QCA^yH*qJdT?tknL>g-r?5CKrlVeHmcu*A(0Mo-WleQ|0XxtW6jSwe zEjfHfBOT%*7h4TMOfjQo3?B{A!4%FS)BI={^f!p}o&4C4eN(aI)Ee$YSYtqoL^-+yp-X^ z?hcAX<7-0Y-r4>T!f;yF3b0HWaR<;k$CYZOD0BIZ=;4Li{^gpT!g#?J=q6;J72(2Y zVpKnGbKG2MO4y8KCaHze3}e-T+v>1a`o!mlX3(bMO`7Y7#@2p$>kAO4havw!>Bj=ou%+o^iL4Qx7~;fT8Gcp>9B zP0K%xtLwrRuS+gxpG&cI*#uIBMhxfUlh?)e(4$=U&AQirNX;uWgQGa{++J>^w3f<2 z`Lywr2mh~ZCD$m0j%F0PMsDbx-Q#;Ie$@R*LCXs1f z_JxAw>Q;GNid`fKC6VYQ89`e3fLsdHFHdTON1n(NVwVU;OV8}_jil?boyY?A?}mcY z8G%C|BAreYoEMB9pIda#$8C44$Zkx{oKY4<5A^D&4}uXh(@h$NrJ3JLD|`#*ZhwgA zTCe8lh_n~E*>u9?ERKs15+-)e-*kx>zdeeDR|OX4&S}2#iCjKYt=>+R&l?GbpQ8~F zZ!;h}Tz~k>m!2F$yhrfDl}<%y-+YM72@}2B^lzW@jHl27C0An~uA$*F-sHXJSyE@Ru*+Cd@|v z-VJLr4XiU0_8{h*)u);5sRZL2V6qf-`Z zUatWfJ8dlVO(Zs1h_~HtAj(f?>cx;^nE|WCkFQ(@b?N|BcK&h9EDXk(L^SM}!RUYe zR}~A=$EH16(S97cF`V{?thEh}fJdHZ*tJpn5?*lVfWQV1?rKcRN1VtS@;!HR#qDCfj<9(k&({>HU}tOd|1*Fn+!a*hqV@b*lJD?^JB} z5-*@>i5t<^jxJPIrik`eVSe4Tz3mCP{g*xN>hcsun=$H;EHem8sadAAMXU#{%M5?q z!$@+$$8obo_jyltj7i}%kc&lsGp&R??icy(Okq zvA>>HYXp5a@?0tQ7!i@x-?T zKN~L! z=UW{eg%>6PLRu=LtXD^slwMXAbapx{zN)9&f__V%00tci@)1iaxY{(~yV~-`ZUE&J zmsv~)2?MNm;I9{HV7X1P$G~#&*j$MkOxnA$$j$&RaAko8Q!Lom%+PkAHI`~Rq`Vxx zad%OYVhIo1%@v^^wC_kJt1u+^$94|%VfyBd5{vT?*LJ-2h+fmZ%poD>S6VKsPw@Qe zn_)$Dh4zuRiy=frBHsDqiqc2XSm{L;g&(pjBJ_E+7dSI(iG>abi+ZI4oqW^F;q+Vqkex6U8XF}?d3hcFUwbiMqvXpPjb$HljjHFpIECkF{{BSZ zx6drC7OhYval^aa_1=9NXZ#zmd!Mno)1uX@tLw_-*Q_`v~6B zTMEl981~^L_f>U%*)`e^cYhQz;$m~#-F_y&m4&n^8v^2<>_oP|UWAQX*rj6h!IWIa zzmL(2V^b8zjo>wNH0IStLR5mB8z?PnH-=_F68Czw30bDo34In#;JY(Z-jB!o7itXz z-~9>ctx4inf?ex~(f?{a*jUGbE8cuGGrSyVl?|vMwm+(W_ARy;7c6%+3vdNOg0>H? zX(xr${Wlp}^Ql;eHi|Xp4ND|~rS2)-bj;tR6_O=7kc){(po1jdfFvdpQkCtm>cyqV zZTqHF_dcZ?c+*avbfAt7bP~9mGFXN3BzW-5O;`^l9$d3t zX+lTdfGdk*%r{YwBVK7<6$}1)m$8B2RoOPKIwa9Oy6{+^noO?By4d}Z$0#9?Wk24f z`0+gqyR?n3uJzv&%f-JJ!~zhJ7U_vX;nyTdH{Vgl`|NJ%(pr&Di2?8rFGV~ z31+ggbDawanWJ7YVy}F)H(yO74dTWS!#D+hYSLI5E}N_EE7yKv-M6<7bA0j!e*KF0 z#qNz0KEQCT_%y#|-Q~))Cs~7$)+9PN0=fJbLfT0YLd8{vT{XU&d}eHE%{qb93|cU8V-_zkBRa|4{h0<@?!c^eYurRJL$!jnwr& zeL^Jo54n=}LP`Do{oS@GymRnfYgFm~RFAA8`u_cUP}hHP^K^X0*G4#w?nM4GH|k%a z-D|b~Eqe+1Bp)3IXK;U?@io<|={$!4gi$h+e{x{RA zl~gIgK9zoCBye!+Jg=exOTUsB3WWv%)I^^7)b>a&p;k~cE<)8xbT?R}39fx}~CE6sK`Nbuu z#w0@d6s!^Vfe(-|IBsUuEZ)aX9R6oYy zxol`!outHb9Vd_73tq?2vhGbrM#hw*pX=)^aJ?Q9rYIv<>WGNlXo~^=mJO_~9m`d^ z0cQ_d;4_`5-3T1IXvjRahg2t$QPW0|YsK(LNikltH^n@neM(U)eF7qMRK=IAJxsJn z@$%mclvWa1RCh%GI3vES;;qMkPflC2!;)kb5;@*-yEsaqsnIcc28YU=Wk!XZ*O^ zI7^5(Q#>N+^X7Ss%215K8yj6g`(#UG6i6Qa(+oAahI(s!KIc3ba!u-QeX4auKePfgY@g+jT%cz0HImm`ueIo;mm!a z_o z>M~Gzun)8xD&)3MTHj?kB@D~L-hSz&DMqk+kfL$7b1@k+eg>4geE%kLwHxubqBag_ z?&mo~nu%%MMM+LBTQILvTU)EBLJ(p^!^o&u^~DN>OW2b*(s&Cg@1LrakybM zrM#vW>V5y-lh%jiR9-s38AYf7V}pB z-yT~z5>Lq0r;Kt+hfHZWIQ*tHmbgaCS|Q+KDeL$@IaauG^Ou{Z(^&D*9Zy)_!F)b) zD;`lhf0rQUH)cl{yk~EQ^Ph8^5?sL!YyRY`en6ju=;xYt{I>&gg64sWkVIkvpGI#^Y^ zUWkmIuML|6+%~7p=Fkq77WC?b&RXYeuzfF)+K{Wpm9<@4HO!r}x!2&=y5YQOY2icQ zCrh-0)Qy-E`73Jlermqg4AKEGsjO8RP%1^fYsJJByW{;KTFX{+FjBoW5|K*H^-XfT3Mfurml7j_@Zo-hj;g_ z;;2!Gx}CC&>ut@gUHQMCuG^!U+apf-6iqaB<$>ZjYp2(&wT4o1GydeVLxd7z3Fl2% z`KLd2D={I+4f7)A_dL11;&V(F=KxIkm}ioSWVx;NdHu&Z+L&(}t1-o!b7$&~*xkbQ zaF~;`8!RvNl$ejGrc8@*5ymP5yCNW`HEt?@mcPmkbSO$x>Y*yyq2}7#Jj~d4H@*mW z*3jW}@i1W@Yl!oGJ7>-4yuB^S^}n1nRXS5moa8f2usGR5l!*)fo~7L)p*jT zau|kiD3;c-y)e_Oa&u1xu8oPK?Dr!!!_`4vVm@T@ zu+ECm%^ngT+7leQ#`eZ567Y^W@Zh-UsJwK zpX10bA=K7H;n?WA|Ha;02F2OEYretV-RZ`HyStMRT!Tx3yE{P}Cxjru9fA|wU4jG} z4=w>3*T!W!|99`1U2{%Noik_Gd^vkn_m{4Io~~N!UQe&J?(64_k5G);(X`z|cQ6!}_WCQj3Zfbt{Y|=?| z(BvA9zdy;+GH6qd>+7bpdMxerS#F}mf+=}^t35N&GA_zBCZY8HLckl z^hlbi-t%2WRyPJEy0^;bE;QCD6@8nm+*u&6%Ud#L0H3V#WV( zck<0#Bi1T8wASM^h@l#JY{9?&iR#e|GJoU5*JrFk+QetsE>G#egI~uj$awbM-EsI& zrIHQdoY2LBxX;7gD&%r$YRVSR*G^tGkUg@~lJvR->`{pu&rek5?4;C>RTXz87_jPd)bxB z&Nom0>OjXx2>~8T8M{+ap_Dq8bYx*3>QcQVUr9$ZrqHDB9{$qdSB^HQa<1(I$UXkf9OcEU6xR7 zauxm&2<(e$u;IofIxH72oJ@4V&ad%9iAgkG6mo2GGhSI_G>CKbbA7D&NYemUhtwe1iXh_S>v3NDNbpUH}s2iuX(9v$tzU8+$-#{(Q||G=?1ke9k-#HLz{ z7ks`aUt4LyT5e9+kcy^?q;NNjag&`h4C~u7l_~Us8xjmeg6X7iPFB-nJsi1)s;CFp z+R+Yap5P_gJ*hN@{WiG{F1-E8C)*J$OH&dVff_0G zU?QUl{@N0;s1675FJTl2o^!dM5&Dl4x9TRvqn3X#;YwA!Gi8vX&0 z3+D!s(mY&IwYbZphhldpa(ANj3)|NQ3V!H2US8uo4=)w8+ayen} zwpq4LD5+sW7xS5m%<#R{FC5Kqqy zgc7OcQkbb4QO2gci^%i61Mq!)EyVU62oBjpff6*a5_j@q9P|D+Ser^y@6Sdb=%z@o zMt&wrm+9+0kwG0U;`+_cY472OZR=AGw}u437R%R#CsGS2zFGpk{(!*!Uo(mI>n*`_ z^ZR393%w09J;W1z!gw15(e~Ca*N4C1$;m(wnh5EjBdnXvUguzn7y1(CV8bIW(>9`t z0;~c$e8xeZZDys3kv^>E4?tmlVmxyZQoi1(c+LKGt%&U!vDmcd2SFcbRko1LzEss< ztn@yn%|`ttEIWjR>ccEzOh+KQ+Yp>ZekHiXv>eK%icF7X1S;P`juZ zv-qdBNMoM|=-%0EVsKnA$xN{1jYv>;H&QWl6+%Ou;^u80Iv}Nh#|nITBX_W5PLOSw z`4L_qlhjOsiOyP@Yg((y#_2NJQ_alA1)rOnC7hyI>sZT^h#)rtNqM(7ixf0V&pS<^ zl76Pvv-h;Y(ahBeuMkhr2{P@^vCi$KdAU(r)X+)5AEOm<1hT6LHHe5`9enO-{yr_p zmSk@Cnur&L*PR4O_KIcYqImecxTooniCaACLEuAdmRgG0FRMkb%U`c+*2R$xJ()AI zS-{Ly!%JC&Y`G+{w?e!;dklS)G#HNhh%$q{>NPmB>CEWhO_6ZBqWj05@%?dGO*;-< zr*VahX{=xkq=VrsRIzwxY~M_sT2;h;<+^|_GQ(Y*0uM#3gHbjAq4hVg8AR2&<-$;9 z#e)t2{7&!of!k$Qk`Hje41`Plz+fh=if=I^ANcMzAL`4^IJ(S~a&v1! z$?l8L{W2K5-CZp3yx!fT<@|MH^@~@7*YAzy)I2sWV!+dJ^G#Gk|du*A28GI2>_ zkN9}|`Wr0FPVlye?00(6X~fB3vdbNnpCd+|6cX2SHCxIS_Xm2CVUxjrRH^A#T-iU~ zSy;dmv-8MQ5XH}1gS?BVhz&&z$PcE}HKSuL1R8FjecZOgpDm5}e&9$@kbV2~=L6lW zo&3hVrmN{B;$p6O9pAdJLNCe@fuj>5=Y z_C~RiItsNlJ*@F+qVj#)u<4(lp&=ov`p7z@G~`B{TtB2hY#aw{pAb_ix|pNx--n!`Uc?Z z&=TrL7wKhg&C1}M5s=LcV^X9hi@y+%03RMncC?SAI$5I3U!tD2KPti8xVIqT`q9ayz5 zOvp{PC7A3|LE5|79b$wZotsz9-RCsC5Go^{9?fI<5{R9?~2a0jQ10zfT`8dfR{AY6~ ziVJxdO)WbkG1EvFT>LEfJ28B{ujea1&)f3=46ZOP2c(pl8291gtg%=*T(i6kS~)Hk z8M%f;tAa&MP5p*kz5EOhcU!7#Pd-pi8PWUm`&Be=mUb^EP!S`%^A4oI5q}cv`bUk# z*Et3rYDkh=+pC2hs^tW*MDab{eJeeirDLtVE1*sWtnyn$Y6Q#@{$_?J#t+#obL#9Bcd-Pc-%&erz&&5>DUSVh>wGa5>goZ+teemN4}b#ZX*xm_xl^|-FQf_` zN>I^*B1i8IWvQ!!`)bQGJozx~3NX|OJweuGDd5iz1JKYC)W;7WYjb0=@A@ZAipE-D zrGqfN{g7)~Fg$WYKU@J;QpHEe_|8JJqGv#U^%Z0GwKlB;OppInXfctvZ+ZqK;Vu^X z)vl}`6E%U)!lD+rzaJY@H64$vQf|>mZ|CM!Cl$mUsTZG{##Z@9Ef)Y0?O9@xG6)l? z3+t{dzUQ<#zk59q4AzKC(04ggCnBftFImqOEmjDFAYtHwG;GST^QU-1OEmViyC|BL z46dS7e>0|vuD?=$%XCobp@7hhq3I71BA3r7++cO zR|}V;F**AyAfkEu=LJi^RCCltYa=Nd(Xk=rxJ6i4z7A4vsg{{r>ce*lJErD`;y*8x zP)YapjAHRPfnHrGdC)^Y)A`C6imN(b3ph4fsECP*=#i}Z$sKNu{ZKZzmb|x(3z0c= z<2s>-aj8L4ggoi{8?I)e{L;ENmC8r57N$Q0_&0rASw#qDaIFOB4CzbJ=>5(g4AN&& za+<2YyT!kK(6*;|{QiAvtl?=28a15#?G1_cTtQ_%#i<@e?HOe z#jrm-GV=OfzV}g6lJ=fb*&ME1ZcX9JPszI_3kn^CjkWQvrG;6Xw{#$Lpni4tCk2s3 z)+?Bb$8wtg)AKb8A0d^jaV!$mnlg?}L*3=)&y9$OQ1NtJtmjT+lv?K(I6}hIyp9qq zM_KAc&do85WMN`7w4W||0x`er5o5G@LuIr-aifopkji1s_U^d#6mZi4^@&;toty{@ zoIKPk_@)pOEi1dpviXb4n7>Q)*Aj$<%+zVRgMr$mvguy%32i*HsoDi)Z4?L`>$8^^ zHK_Zuu846%X6cyXHu%ejkeo1BWp`X4w6j2!6H@;2DnbFra^7w{ae;2eIHVwy&L?;h zj#A7A5rlD|zAhZ9QH&iKrEb48|-BFp?D|w`aW0q z>HSjJ47~pspyO%y*vC7VsQl>Dp+!^TGP3ol>sM;gNLdu@&DyfkFpDMk2JB&jY}DvP zX(K0zX}Ru(%@5rTrdP`CwKq!qZfjpJHIkT;;*-Uk*=aAzKE7bKVwtP%f5bWDTLVSIPqG3G5XUBXf-fML($K zs5Eni<#UcnYXxF0)$tN2MZ(2TN%Hds;BN}}(Mi*B5K7R5FY#YX!@;#E{L1vJmBlLo_gX@ z)1>adMz42t!g;Tw{^jZoO&VhF1fP+)`|z;lFwqZuv*P=feaYHr^@-qTPI7Ovltb)9P> zvAyN)L#3w=Otest(FF2XcG^64zu-td4B?#J2A{~e*3h}IAEf}ETHaH;x#8EbOosNE z1|vxNTv6PDPMs88KL9DCNnC&V+@sX%I-A6+IbFvz(T-j~5N;nW*L&2~4&?F&Uu6s6 z#a`lvkk?UlpTDMlD78L6`jye6lFB67LLk|}Fnt%JR4Vv6LEHNUwEo^AslgAc>rS28 zg7XHaL8V5Ji5o9-TvsTi>-&A~j8_LDZ|V(Pz%IDEf4keCVi}zca!dqu{|T-_LP%{s zA9fatbQU{%MV+2Q{nT53JDII}CBm_*9qH0~A!+y&On5APFq2v}yz5)#a`Z?R1U%Tk z3~5`6v{sH=d^~3dO6JPtK+?KAf0*9KLDHV#Bo}qVMn~pur)BMHh0iPp(#%Z>0?mr_ z7uKUZ8FHpkg0`)f&xY*~kTGc#9sq6HVkhJCIFhsp%!w~sv@xcStRhqv14-UYZVi|6 zG+)A?-bDq_?65M9N7~8MgKVEe@5JpoMaeM5;3kC0Yb%ROy%WMal5GZVh-OT0TJOdu zUA;JQe?yIJrH+8@hB5IbVf#2iL({i30^go%cWD(+s$K_AqI)XvjI;8}X^HWY=Qxs) z7&YNL(ByeR>1#i|ANuFsegF z1%{VBD>hYwOj1@v_@jIXO~N#bDs!43ay5i#I}QHESeHh{4V>X#1H4VT-Kbv8juq9<%(yyDj>EO;X#PK}TvjBvOR?GbM< z-q85Vm}9@GmF&RfU}C04?#VE7)K&e%uM^A=1Evc`bjcVSMCNf4{k8A>Ed!5T*cz#B z8mV}kVh3Dc%2ZlbK^QHsz%dHS&)-2Cy(Urs@Ds>+hr&p=``qIq2SDo8iVrdbCHCl%#44i0n9A>Z(jR}b9$jK-H!xSkq zfLWM?ZpO+yyUegqcRZ6}k~c-r*93X`3&B9!08c&trf?&OT${#`u%=`;D^J;ozR9M_$?Rv_WAphyUzTWsU+Xk&8=hFm9KJS=Kl1u{=Jw(a z-=W5;_I~MLP)fk_)g52qlrQ~2>-+}U;)>>|JFTH6+SceQq|m|`3VSgvq%hB?(9M5T zh-*ezi*=BcbMM{$wIg&gzJeorG&YouSh*nBTcUKk;R8r*xbfUnN5ah(z%+KD2zuyw zaN&3(e>FcC^&>&5m@h^wCdf7$k`||#tz4>9lJLF?N>!V&K*u`q`d;QiK7QsG$3k(O z^?@Ir|{~kK|KEnY)Bj zBU6nA9Bo1lI3&A%$2id(NDto<4gPx?Xt52cB6l%{-@<7l92G1tq9^74WDG+%{%s4G z|B!<`$OZvGC#;jZ`BK-1) zaK``VD)ypJy916qrO12%uV4M^qyIZ5QyQ!^C@ZUHpamyrJ^l7DJ4g9nJ?gPz)bvRK z-70`uG^?NLtSz!+@851KoOX&i5l%yGE$Nr(o!`F6z9@o?0#CU={tx#FoZ|AEdim&5 zh)ZNDYW`vmuSmTQxAE0xU2GmNy>wNqTrCh$S~~4CH9OiBM=XJ3u~HUt=-nTNYg2%a zYn~t*3WwUd8>H@U^bY&VJI-umS5e;!9QnE(hrl4f{$;a$;UnW=&$AKE$jMzn> z5yOnB!EBYDTuAHX>T~bU_2F1%Aqs-=i2ho~FI=9fhq74ls|G_Lq|MbY7(&SZdiT2r zDp-*gAbl0<2i7wh)Nzx)klairNAqhtf>7j0=^Ky(u?&oqX3l;epT)&IhRaJ==wy$F zP5w><16bSI6u1t~`$^cAtfOplxeEdnVz0^IUsumkm8az!xid5$%ly^dP%j6(M^ry!(Pl~O5cLj&D)`{v}6a7`f zV^yeA(gF7guo0h?cq>nFKFAppW6YMk!nn2fbv{`FQ4%jOF;iXQq{I z$z%*kNyD{OkWbZLaTJxv=ZyDD^=FnX-2j6wGx4=O6U|^u2f?wp zFp<7$Ax_vDAv-)N(NLh1&@pk{c%FVfyj{G8!KKG2$ryS&RLJYO4N<@u9e-gpPDR?z&?ETm!W!HJ@O8c z$$cjb}p(TnR-0PH~XT6rMeVR$zapD2jL+y1ZyD9q3i*XwzPT@lb zdB*94i!a5OA`4wO_x;3R8ghZPXm-J>{+PQurC7`mAdm*UX|5EPZt_^}9&y1*Wlab` z#g12$*@b5tos=nmgV3MVHE|Pbi>m^{DR@*8uDsNv1&&4ys5hsthhN;ht$Ue}5V~|4 z+=|bvy^CZRiAGbB) z+_7yGkTba)*g*^INSp{WS}(TA{%8aKDr=}0L~K216f4-}bJ z@{#uTvLGU{4jjgIaE!l??b@|?-1KGYBUue^r+K13(I<}1i!|^crVg_{W(m*iOL9@k zj!Z@NBcAQ48k&2K{$&z#I4kn;pdRBKa~PGBB~$|pe}sR z*F;9)U~-AQ6L(~{skB$HS43%h$aZN-nNs7Fz1qwm=h8i*k#l!v6A(XVSn*w`YO$Pi zt2AhQ^({IH^+q(`MZ55iKFxtY&~?l*ajQD9Y9PY{D{^feN$(wE2L=g1!-F$J`RPOs zJ3s|i)z)tsWECQ5O{XjV+B0Xg?xCH6dI492 z9EE#vCJbOGN}l0AwY&`1UP$uv>;iTUcJWQD??yl{R)L&HSZZd_1i0?wB=E<2@@>_q zz32Mo&wYo3zb|Uu{2ToHLqFs*ywzB@-ocBjtJrtF4>8b~Y z@}{f20R}mSauP>jRiwD>y(2|<1xvJ^{oB+UT?ua&6&^{Y5IxKRs2b#W)P4mW#KFet{1QQzb1_ErrtAYb8D%t`3pPR>j_64w}08@A$-wk=(72{A~_FD*b-6aA6Y z$Vigg0l*`-Y=Bha^a=;OY8*-gEa9?abIpvI5)4Rhcfd`gr;pY?d^28r?v_7u7zvSJ z!A!CYw75P!8?R=3bk^V!_#;R6mJ+wqqDyCd{dwH^>`!8F{9d#3aKaZr!|%d6BQ}Dd z!Rl|c8516&HKekoI*B{p9135UudeE=dM&<|Di5|eQ!*Bk>{F1?39!HeES)fQyP`MC zK{n1XrT)%Z2tyr@qXY=73j#cFFf$)=;>pp1bqDALF7wQ4C0lpueAavO7GncJX<5 z*;1KAehszg+TEJ2IXUdD1(JUBN5QMVu(+rp*f&)FQIF2~{P=2#)wD;MvpZsMO(e4J z4*hGVNnByKD46Ejvg5FJq(5^J`b@DH_~)b8)77QVW(3uu&J<&+DYn)JA)vz2VEHpr zO-D1zGON75SQ`q+?x>7(%1l;H^g#JueL7zXhQFX={TU_H2t%Q2)6)+DS1YB;6e!J> zy$TPXO3#yNB;rjaZ{SS=ZeC&YQ{YlN^?hNh`!uW9t?6cv6MPA3o(g#M{fc!6E@*=* zSb|Thj*pfqI`U4m)Jvw3?~NUNyk za9j9PJ}}i*w~{)t$Qc?7U#nCrnEVo}ocz)ytlc-G1MhE2kbqnx>lTN07p-@Y^`dCb z0TLr zMAL#_%`|F9&?C$o2bki;tS`roHn~wQHB&s?5N+uvLu9`i6b(c~ldxdU6BSlD2(Ep1 zmQm5+Cr@bJIR3$1#!GDZd(@#QiraDodKTgM89zA)47zUYGp~@<(O^!9ZFBQ42GPk$ z)nJ5-~4nB8bD_bz(ivEtQu9Zif7Rjfo8VuQ6Q>fR&*bAj_ zy^Q2YbYJ^MZQS?ARNcE**YtWOSb?P$}hQ0UW>9 z6?&LVdWl5v+4O$U5YK_%9`c7zlVqQq><_(iVaqs`+YYf5x(`AVNlv3~PRjB}REY#Vv0s3`t6!VpXKi-L3$Q-{uoC5M`gW@phWE!_g4{!Pp z)d4%zlUqZEPJ_d`9|4@~)G=T@vpj0{#=$c2HIP*WHnJmP-@rMiws=flzNL^)9`-4* z8qn()nQhsJ&Po4E1X3>)I4aOrpdz2ug@xshotv`<#i$jrdqw5MTdpwPBCJfA41L-n zHHu%I)a}8mM@7pdwlMdh$hgj$o;-9w&8Z5~ywWH99rLAN*Zq%m$OukelE5*VyQ7}o zpx3v=j#(F*xrLRPPf-v|*viCRWJNjA1RI^4BxDSc@7~o0DsjHR%9!hOOp=^#ogS_m z$IEw*hS%Z4&3%IYE;*S4uhwUfhb3G-1DBi{dqD{Uxg7(%9)ybR`YQRPw-r}4jnzf# zGvO!OMw+ahq<>L}jX3tMj51WzKa(4%@M!+HsJqzZ*KfA~>_#N?+6zZo#1d3p?;}M^ z@J)ZBhgT>>*1)5y<)6ztfdD91>k*tguLQ7(<_jCw5!8ZN@2iMs8*d7ly71?SP+U6N z2V?OK>`!2*wh~d$_TUFkFfMb8cJ8yAgaELd~*63afsfT_kk@jfNE^POs zF_D-B`Kb}&r*RBgaDP4JO1QtHc{~I zori!~Z8L%FwrU)XP7e<%U&|$zq%=sM&&1>YX3a};<}hiOL;=cNMM%k7iTpZxY(*Bm^ceYL>HH5?cUy(+>9#~4F<1?{< z!M~$!4vk$}m?lRr)4F^lCAvN$;LCGKXq$$>B@(DwGZ`UZm647TE{ov#GFz|bZd2ew zC6%96vPjTVsy4*#Tw@=z&IvI7##F!8`&{_sob@g|<4M?#HtxabOvLdlfxnkm7i-cc zC7q?@IVRXY+w-h7WAnx%dVB5_<0D=ARjk?W>>ETu^kNzjOBg{wYtU>dqH8`7QWgLw zEB*s;zT&@yc$81r9O@RSDRaFX^&^%qj5LCc{r$QYDfAf-3=p-QveW&P}i7Uo}1W>w#Yb688H z#_`4cl3_da=zXt&9jpJtJQ~%;!+=yolv5(mT=mY`A>!k+AN}sGQ~;j~K`Yost`ah! zt!W)8M;bR)=Q}3$=TA(Om+tfrD^mPq+)NUT6jBcgd9uA|k2KLEuBd?P7zVjpepbs9 zayH-F-1B4WX9QD!xd3dKqzl$tl0KSWZ=l55lxzytQ0%WHvBAMmJTc(hFrDe3UM~Ak zQ>g0IwZZ1)8+#$T$pVg~G!Xr{TadFb`9R%*MO_b!uNHH6iLeY*3pg0p?*Yucut5oI zxyJTU$2D)zhD<1$N$)2(s#nP}!F zMMZ?SHlncQ@FoVLNPLLd@Sa_$dl_>7>JG%7Il_MyyNVkw=}iS5d5%bDNh{jSAs#h# z!se!VT*BL%_;+L!R9NH5Ycq%aC419x3YlC}R~$M1$KsR_)KI^37}u~axR2??IB|k( z8&yZuLdI|C6^!ECcEyL7REMTC`BPd(6Mt)(1mFvHWBW-BVqS^w)xhy%uToDh;BsE2 z8c`XS^_s65F@dqNwy7|^DF-t>KN(3mXwfg&zzDST5wecxy)B=BMkuUd!SxFY!d80a5Dal3=#yV=C>Fr z9^Ek>X!W-?E-qZKa*QGr>o*8n8)jHCgPC^FR&2-VKJ?exZ(qw4O(FyIi}JNWQoP)7 zgMZ{U-W%-USI*N8kRoU~2>eJ}jWaxHB{98yWci?|(xV$dDK6XZlDo%x=pZavo12dZ%t*JZfSmd67#y zX)I+CT(EJXZGG-f^U|4iaSXUc%zC4$kgCm@Yi%PIesjQQdif|U4fs#g8d7l0&cK&i z657QJ5;w*(~VD zS_1EOJ>;%B!sasyc}->9tK6>pSC^xfhDaKSi7aJsq$~R3~j5%)U zCQzeC`U)schUPgX5{A1jgs6j$xW%r2Ke)a`YJXrFpSRA)!+IlQQocx74fmC%am%LF z6jPtBj)fB`-+*5mSO$*1@+3)qHoBxKQ5;dq6~Y#tq6^j8N6`yZWy+G>65^8xf?Hov zKJLTH)x#W+7qO_s%vEx)Y$icKXXtoKRAhLKV0q5_Mh&0BPF_tBrQDE;^a6sHT1$$t zuofzMViFUl&yZzodLt z8l?L3?R}oXu-lk*y`q|{Nh8B??#V~uB$aCtp=HWVWMRT;7)N(P9&pWKb785rWoX%2I|7{XFwD<{ zkD^`&fxp2~**61JTu(sNjU1VE@>d(FUjgh2je?m+Dv1Z1@<|M<@k57W$3628zNb}|zfSc>qO+fG5$ za%Y!(>Xcq*VN-+>!45GES`@@c$tVXQwR)Az$auT_T-GaST3c@+aX-}~!lmzxGccZi zG3a9rw!kM@ymC6M>Ro$6seO?mD_=cV=UfjpbjkugoH$Z1P{$d%|+r7B3$LE*ehM%%;F z&G|_?sJ7b(Glt+Ysr?*zrGbwKjgcU9C`;Xd1#IAl``~@j^Y9R>F;}B_H4SY!FZrlX zSsJ0rzjx~Jhjj$)rU*kkn+j6JF;GW!x)BIw>hNzN-{}M>{c0!5oagNQ;cG?jZ@@jj z5L5Vovjyq8QCI&RZosW@Ljfz@5yEw7&U0x;0<@ATt)yevK2o*}FfU?!gwP(0QmDJv zQYXyL={I-*=GkLHRXx_xiw&;sL@4MSCZkI(D_b%HVpu~fmZVPAGTWOsb-|#K!|JES_iHH4020=P_3%tx4ykerOz?@q ztTvV6&u3#Hk6W&UM$AIB@Cd+=i(Cb}jhN7-7Him?Ea@e5bI}w7zWb$c+%S>-P%DX$ z8i;&loyN*6LC#(9oKg^UWIdlKO1|4+L|?w5l+G@hpC9Fw8f*EM3cX?o*L{XvNo~5P zGWn<1{uL1TJ6t_m#3dm%s@gd1YSC&Rg^T}QA40bWJFT9Is%MIqfa~oA6!2E{f7sZK z#T8OCI%}Cj)f@t>bYOB{3eX8SYSFSsXo~m-)HSHH@+omc3z};XigzY#D0BfHKmFKR z{V@dSEATugpmx)9{d5rfeVN>1jQLHtML)kOUh&^^=jwxO13$hB$yFQ`Xr0Q)cOr?W z;>G#!MVWTKS_(HBP%JicH(>)7^u0A28NMeGKd?zV9o;qmTSYOLy5?s=ZaTZJrLa5~@G#y!gdA2n^z5G9enK!MySOheQC zpj&B>9x?m3oWY|9ybw=b_s-uL2N^HsjTX-r0xffaI9bsXIqxT-f(xFcFS*1%Ei!qm zDJ(oos`b}&$f>RjDlN*<(9CHc+{OrlSKgs99V*Kl6;ws+Tl|B+qmbr7KA<>fuw{m#hv zm`<6diZc0Yk1V9K8GraDh{hyMB`!sln?r&irGwh_@{}-p7r)FiNgcKb#3B0vaJCmn#} z967~bHp9gJZo)XAfUPUVzMH7bbQq=`g-cYVtt9vqdqs)e(y@J}`qs2Q=B{^J{jJ`s za$uegtJ;e(d;zPf-CTiqjKt3!k6!kr-Ef;sX>_95{QRkiGP%qwkwczM&;C8Pn5T7& z^#OXuFu7NSFwe$pV)A&@`9YoqBSEgh=$=!5-_?RHBNOoN2YIZR3`|{_e01ruvSwVo z*DQmt?!qM8?Y`0OkH;8bRH3rWj-nx|_;3sSk*yU#Wa&(Ynfp|2eSIG0-|cT1dX=q< zwfbGqH+P=NRO#M*tXt+!uu;(|@qW8%Nlgfg+jOwA~_K*Tc7FzU}UDdD5~ zt43DM6E5hv$2@$c5$^6KfFw0apagc>T`|~(X<ky&J3}NT@Z^X#O0B zLElP`wV2LsPmu<|9xz=c_b{q10G&5Qxr6C1RRC{T4!l>vD4w3hFZs5PUCwuCz*<~0 zzz+8^R4#hwhjD{NyAqTGNleazJvk^tKIVNvLBZ$0$yC9;PgWcO)QTG@LKR+t6x$L^ zS4rQZqD*6=S^`K5+~xA{#Geo{VEIm(h<{bzhq(V!eg7A~KFD|6A3UQ^KTjb z^~cDlczA2mh9No9iCDa3Ke{h&5@bFx-vroldNEEc=B$u#98c z?gbJb&?hN0ed>&`tdaNSmgHXvU+@kr)%ZVKa-xcr-+hh#UliW|zsiFD@A>`w$7=F_ zOQ-+WjsE9>`XAn@|1LTB-|QoFY;^RDpf~?Y?9+3K$^M%qD=_=3F!x`BqQC9GM&#eU za{qr2{sJ&-SXI^kZnveZsowwpF~t7UV)egn^v^Uk{Lc@=(6G?Z64QTVJU=le|IMqp zQibw8^U;AHqLH}2<{nc*$2ja~CiKj3fOonzpNBHj^d#sx3?!a1em^bs^_T#S+ z?%(#GfQR`%c_V3<#x7a4l;GpXkLusGxxT%dasJoJ2hW(Q!-Uh%-#_W=*YK;WtNm7M z7&BN#Q(bm}BzF>}dmX1r7sjvV7Ei0zrA}n3oq$<};!=($SHk+jBk->ScwE@@^t2U@ z4JIebscHSo_A>4RNG?$q4%yRVbgiR@|nJB=$CyQqDXn7{$ zH)XOOmrxCd=`&b~@%p4_9p|*?mBO(lu1*9_ae1|!)9nfZr2H^^PK3>1q2<;Yv0s-} z~6CK%~zARcY?uDFHikWM<+z}9CvRxd5LDb`tnQ| zbpPP((gIHC;@+2AB1MLQFAmRj`LLrJZ%ZWu-V|L2pLG03*XiY*8H_M7 zXJ^hwUb@~!I(=3};R%YIn!|&>G^sO<4UUA`n=^ZrqobTal889cydkl7E!LyK zduC<X%M*^-W7?>o#ND#U!Q_ow0R4G=aiij_!s_uXO+eU_|J&c5 zx0q0s_$>SVl0Y-~OiQwJuoaNWul4L9n=g^nWr&0JXF1j0Z}43+QVR?=MMR^yYA+)to(SOXXsm178O>S z)qp+txp_*pXs{=I@{RMc^Y6P+WwGF&JUNMo8QMfPcHaYTsMh>C)0@J@-suWP_P*5t z1yXXXP52YZcie8-cbpGNW9v2XWaWU^S-upVeVYgCD%|*UUL0w0{(#O2F1l`T4QGPB zH7qHOzLQ}sDa5kQT-sH;c9o8(_`DOnI2Xja#=coavQ~V2#NpNP#5n1^Dy;!_%|IZQ z;Ys^kse2-NjjU+upSn=KB5-w1(B@b9igxUKeZouC9FSCS!&R<`gVU%bogL#m_T(Jx4n$#@5@%nHl< z(IQJG7JoR?ae_ztj-e|&Gn!>q;L0!{LG z$E1;tAEF{Temn4*BokJYX3lb)D%$$-4y*Dj8B}vzIPq}+&$-uu{MIAHs)$U_63e-JKK2>eQ)Sf~BjP8w zPyzd*rA2gtdtSG`%$Pst`OtH6*3nVn_lnGWY9e$jMol0>t~yPMpLVv!M;7gGg3o1` z<>R#MJL19W&D?R-1~KbPiec{X&FtT7JfkE#4sXbm^6+F(0Ru)Jtx}i5Z8|j8q%SV4 zdx@zo9_tddGOMuj)-^;~k%=CB$?2Rj zQaxN*?fT?_Q<%MHV|zR-3-3yX#G?PL4rK{aUQzUOPR-Jiy-_hnSbwhXfuu9nh~|aM zvf9ev?Rx&7Y^ukTD&vlJ_cZjj6iU(6pHa>MO+enq6Wz97G*&Oq_z79ITKUvNje3rM zAGLr1BG(l7c!YLK1k;z_ypNANX})(m>t*{Ohf(;`t_9&)KB-Pc)>3hougbc*#E0_? zW{nY>`v(PwSKMs|>&1{1rn_@loO40D`?chnv#T|ZUjp8n=RT-2vN9dl^veM3rwbb2 zi{+P*?rzP2u4;*lHYRN{#|PdHD9A?W3RvUgt}{n`2^9-Xw4IoG?xRYa%kK+8H@rXN za!8<`*2%u;q;{~AT`es1n46!DNC7{3u6%J~7_*{V$xvNe`uO2}Z%L}4&5o6T9~yRF z|K-my6{er&T2LG) zXnRsVOU2pk4X zyfQ^?;1lZ8agN@)T|D(-Bj;>)u<_U1d4Ah=p8n@Yc;NO#Vj}7*=Jz=8#f)U<@fsS(VJ=%KEupN?LiDyQ9A zFwZ{f7KTn2!sPfkJ~!HX8Eh-%t%D_0 zw5uL!>dh?q@?UZDnmksdOkfC^W>WhkNbr71GZ$PFoNSFHZmbpGP#>o*f={hBLwlQE z?b~1=%p68YXh`sPqpDMc+K5g~<5N?N`+SV4`c6eeVl(Op*Xan=88Jsj5U!4*PAwnR z%FS%_5)6cfMqoA@F&K1&goFei7t#hD_(XV{jL?$)4|lB9sYnJ483aS$F)$e3nj*GCe+hT=dnGMY=4K6vLjS=T%fLVjQ&p> zXmsJ2VpGZ5@MUhl|8Bnal>%~Y&2$`nnU|jX70>Oer`oB<7N3mWY$hfqp7_)ZG9A&x zSk-m=3H50`-%98Cb5t7_V_A^ThJr=pWiMh$Rt8y_37CvCX=QT6g{xv4WoOzr;LByz zvJ46{qli+A)nzV(5JCtcu8^w~Xg)$4dU#xq#WaO2(ocW?FmCsyyZ(BU2~$)&#)N!s zT)UZXe*Z^2{=*;fqsJfT@kbxz!F8GBMyWt^p_J{aLtpEUBWcZFv0=*=?!5g*mM1~P zhkpUro>y|=G0ekfUBQ~TUZz~F>^_NY$2rx|NaxrfeFFh}BeP{c1)bSObisO7|Mf%a`njLGS49v#T1nM=ud{7;4HfSX z1mE`hlM%81jQaGqJL&K4!Rg2)E-jUUXcfs-W6dfYMMv9b1F9eYa5qiI4|1}(p9Xyz z>2XHpS!Q-4gb+dqA+DVNoj@}&3ca;-H8jxBFo4x+zwDz{HirX8W*W&&$LLn&wGUHj zLpf{DkWKXV(mSC&PNsez@X{B(7_0VZSeBJ^Zv)=0E^7Ng<&9Z0kF>2=v4Y3`wvc=8 zT|p8ax{D9d<@E+1i<${NeR#bd`qaL(C#F304YZb&QXL+SSJl&@emZhqnysygQ7k)@RjZu1K3s>fTomqV3Jba`wnNYCevWocMd3u=7 zGqjh~6B2`unZ>B{<(df09_LH&Xpe8b$x|=>j(wdrVmAJS2cCb4AN*i54=z>fYfpcD zE|HjRIV`<>3tJxF!asa>H3_|~cse@iQAH;;vGl(T3VBXa5V&^1>5O@Wjua;)!Q=@cRY}!}IUqFY@Baopgb(V6b3ztl^8x7xT4j7wtta@aivq!Bfv|XGfC(%iIjT~oO9jV(`hQONScreWT$sHQc zC)dXkA5TI`67e0URa;u9aKVVm#3Oxu^fflpH#WuyQCMsXxoQ1PeEF_C*5sJESb37> zh8A@MW+Jo@LI@#*xH7JApwR+^g~)g_F^PWqP8{XL-o5NSP{Q8wcG~pW#IL%KwK>r& zjxnjeZ#453CKDeYsn(iV8*>U#>8seZseom%!+6T~a^%2Xici&Y@}d{d&?HmVbgY@n zS*QB_wyrwLi_180#z~((n$+Bdq{f+uG<{_Is$;8*UPews$i_!Z&ZD&e3aHNuQj|E$L2I~sdv53(2dyUYk)B%y`9?9 zW9pcebG)XS>YC$}A1k5kXeHHsBlP;!Vu(bC$<1(h|&f`LX) zXowDjVFbT_7?(O{fj}5~6*6?8LktXzGV+H*p?N#-wjASdaXE*NRB@`Nh8i`UIMc%E zHZRlmD9n*jgzJphtg5cVPWsQ+aqfHZL{20eywD`tz8D2rZoNGAx4 z`*HX93ALCp*|m36W)s$w>Y)1F40(LGhgAnwn{NnL>sx|%Tfz;h-#n%E<8(6YpI}tG zC8IZC&<8MRH!DnuSk%T$ssiB*`S*v9pB3Z>>(6@nI%>9-MB!>Xc3~6{=I^EUNRWCQG<#q1IAW-#==Xnp8b} z18N$cQdNt>WKi3jZR3FI)DKUYNQ~0zAIkJ(fWWXD@30TAf0BS+1sAJ9wP%`Px0}(i z0OPam4Y%5`Sk*C6JN`T`nzy&N2fuBSpPwH*zMqfQSr0JkZl?Ww1x2sELrG054ZU7< zd;(Yra14$@@+kr(@B_W|3$Y>39gBRtje)Kj4i=SgwDb%$=h|_q z*?vm`k@NHU(mjuI#~0FAV(z2$)n_Owu4dPTDTb3b@R#4nVZ-uq_Ne+Czg&F^Gq@|h zi8BX&!_M7mKNad4RL9?vwwA>!*YfbUpy5ByQT?WeRofqDWmYWd-3^?1{YmzZ70{9K zm;BR)d8FGv`@Ouz#zwlkyMvQAUZQ;BucItu^q-K7l-|lKKlhwDr%t-5(K`O=89}3JV=1 z+9qMJllp^)sP7t}ZOo{>L`9s{OKh|%?6{lk4$EledhLr1sT*ZY^PPaKP^YTYii?rF7d{mk}_!FFY6k2zP>U(M4-68MZH&>tD8x)|Yr-y`u1Pq4H_i0dZ^$iXV;`jSyPyiu>5JJo;GRm2_EG^J@NgOD?OLY|**r8fB!NZ^@vIbT8uA%vKV{xHxiSg>Gr?neTR_EANxfS6k@ zUc89g?GE0dF_}!WbH%kv&X*8E2qESo?H%HlmKGci$K?af*w`3)y?%C)m@5K-0F#rG z!2tn6LPBQeiffgeFCl~wLd-?e)6>CsiM2oK{!yS&3#PRN+9+2O6BDzug%CmrA%qa( z+7lfe9h^Q83^cR93n7FMLI@$mbw$SL6+#Fhgb+epw?aBPI^+(G5JCtcgb?Do6f!zG lDuG4_A%qY@2yq>P{|`qLXYS(NHyHo`002ovPDHLkV1mpVegyyk diff --git a/docs/assets/images/luau-recap-march-2021-debug-dialog.png b/docs/assets/images/luau-recap-march-2021-debug-dialog.png deleted file mode 100644 index 0049b0bd63b3862ca80bce49147b377984af0d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15879 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 diff --git a/docs/assets/images/luau-recap-november-2019-option.png b/docs/assets/images/luau-recap-november-2019-option.png deleted file mode 100644 index 3b2b93c14612739a5652f500323495cf744c00c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 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 g5>$QJ^ zspSn#WWsF4eU^&N#|i!tjNyaNFBhToFX8{Mnju3jWrPIA@Ea7uc0w^;8~s~Au>J`B zvfh_~+V>epEco9H#2^Qd5&Xvz{#UL2jS2*&=Zv7dBuu#6J|(yRx!S*eH02Kno17%} zz%sLcS?2#`QExvmpsJk|3~+TXF{SK{hl(Mx-e(|mTxS7gte^G2A|l{{*aSdI6DX?> za0TH@T;bh6OUnP`gi_fcL}@*o|DSlx5dSYu^{*d&8S>G;o{<tfozxY_)pi5I2fh!IF*Ar^;6T6-dDsDAn(e1h}>+e`S z57l}-{hwrDHVP#-&sM^U5fEr8q(Yok30K5Sde+YfUcSGE;+d^X;xp@YGTwA*qNyV&wghy^bhko6qQI2}NH`&v~hXlrUUUy;x zabD-L$Vw6&14)dGLRaCdzZ>dj9XMxr(-#1_u%-9heYSXQo;Q+YfI?pGuk8zrR+^<$ z`oSh>nL{alVtpfDYtZj>GgK@Ot79?Fpd#@hp3eP!)Y4R;5fQauUNT4rV`!cKSZPGt zWRswFo8d^LtvX)^qF?fPma}+nSjec7`AT zAB-7x(htP14L>{VO%m_5sjsR6&8GfP@nc%6A@kA0INsI*#ZRk>x8#duXU2+m^k(W4 z^KGWwT`*^o<6WFt{>@Hq9sl$-syg7fir}pDC);{#mB)n8ijCOR?#X$e*0Q!hAqX;Q zsV$NLtt;B)!mB?D>r3o+8t55{_MY7u2hDjbrj-Kn2}yM})ab2=uuCnU{J?5ex=}D< z8Dn70481BXDln44Kb|39{=J4Bx&Tn4k+?{fasL>@68ahUZcS}7G9*ZB^0sVhbP|`M zO?O{lmy6r2UF-;{pHh{7Fs0sVfZtrIIoYC_lAjftplRy zVb^LS8M-43E zZR@Kp<=1?>mJBoMu1exoqFu+BV; zOzPW_-5A7S_ZQh<=c3(8V*L0wb{R-JEiaiMy5I4+p+gF{t

iGLo+ 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�{+856lTje$*|Whwf=VOaJ6e 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 QnjFAkW^9QrH*|^l7ta#UdH?_b diff --git a/docs/assets/images/type-annotation-provided.png b/docs/assets/images/type-annotation-provided.png deleted file mode 100644 index 7bac0340f69d9b063575b977ba702d1471ee0310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43135 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 diff --git a/docs/assets/images/type-error-after-syntax-error.png b/docs/assets/images/type-error-after-syntax-error.png deleted file mode 100644 index 6d8b23a92adc1a4e03e918fb0d1065f6bfd0b93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52438 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%0DmPdAJ`mllg?a7Ykjpl^uP_mCY|A7*oYVZp4n(ig z9N1lDX>*J6k$5c3STyoVhRw_CYjc)aQ|q--u_V^g2XrjlaTH3?Cq-uxT2Rm4gnbb0BRm!cl zSdTY4q7^@~-=7v0_@%I!PXDYj-5Ig66 z9d8)mqA~^TQw-YnX+EljlD;glgeAd}?3L{;Z1y(Eu~&N1X{P`Bpuu%_JZAlzbx>84 zvf0w-ZN8VOTJ7~h7oowzhJ$Ptzkp;JCuKLtVnwXg*rOa~#ZsTbV)!Lih?%NDku-7p zS4SMZI!Qy8+fmkgN72`?go8PIk#rn|b?(H|{V5RUlXZB`HW(^@dSfw?svOIB=Y`mf z{IehnSJPi}Ve2>lgKU|OpnTn8Jn%0A;Yivq@1R^CZ_mzwdPW;Lt0-J1AJM)){y@dx z0(Zn23-WzX9?9kUVpEF=4=6~K-$AkhnD{_8a zv+-28;^L=PM|;VlO9IzKlikwERz-)~E#nRYR=30R<3OHHU7$gMp^sylFqxOmr#7U1 z3!jIhw)0ujq^mJf|4*uRRANs!S6|WOPR=$2lVBOKb9c>|$3D(H?xtcbHt$zL~Gvm_*iMFdzJ^k!1=$ zS?aZ7hnzsGnEXRwDT^Ow_qC)t2`H}o0whMfG+2JJ0A`sch~46sm%`nlf3_rytjtXL z+x6P*hthzrubT=z=QV=V?Nn(wN+M{wl9CT`2t>Z}ElQRPMBj3$aF};ob`#J+O>r*v zigBGOE40t0c@)q*7Y({MztPBEcAatf%I8`$v7aZ#2$M zsT<$GY!C}SbUkQpj0mDp2pz7qYWL*BC`A8?KD4?+)s+@`s-9YjD@*DSOTfV=-4oiE zvB;x~AB{^7fcN|CSy zZ^`Xr+eTxnfMd<4_a2h$1#*-OhOO$67B{HMI5B(z3n3e48whAi2K0>!N3Z9|aTq1Kk-yiUqM`1nqiKePLaZ^H`TOgV8$Z0*mbt>Nw3wyBf}ZEC>n+-qM@tVZ z=5@S37=l;##=a-(ZXt}LIpPy%NbXR6co%wm#PI@Db3mdvoBn(}>2PNlUaK24b^}M| zT*)MG)2%%uEVRickL1j&8a~K&!(U{$KdWJopdPT}XM&u!U1$Dq(%2=@aY*~#8NL-Q z)4qUX0x6@>F#O8uP}TO;1d45?^lz$=)y%pLU7sKI*&WvEv+i#BZ#bj>mJ9BUJDcP{=6Oz_WbYVhA(@n6gGHz)}We{sw3KPdB>*Y8Y<6Xrh^St?&- zh`A}>*hQ5}sw`tQimU(DUKVUs5!zQPRQ9y)EL&JlTBp%pEB1~-i?%?bmk z4j^l2Ssbv(+o~m%Cd@_5imPU-%!R9JD#EoDxCFX%Eve(9J| zjjWcyYx&!adfSgR%uej_=Vd8$*I|L8eZ{(rL6qaeR!UTzeNhpNUuj>Y`Ak?(XxSGj zlDocdfRPq>e{R2KG1m*2+Apd(!|iTN!l!+B?hI_2ORgDnh%=0SlbS{2n$;$Ke)_It zU?e$i#(A2q9XCLz!D^^@2Y#{pW0dOlo%QZ5kK05-mc!!^1IJ`=&)q#XjfL;cQd?v! zwZ#`iLv^hv^20d5^eF6Y*+MJgz}%Ipgu1HnY}sl;e4B4vM8y6yC~L4j$%$1Cg9G-2gfWMOer;~$qIT3&oc6UA{&1zk@UDz|#!l`w-LT!K zNv%{%S-ZyaUDPMLteJTZ7QOdOCmr@poSZh-b&-DOc~6`-f0?g+n9@$*`(c)jcgO~4 zwr3)#bhp{}vVgIwrV=Q8MeQW$E6!um^LU6a>90>02aBz2bcL)+B!QI`RF7kc%-oGDu^h@^xJk%If zwa>0CYt1$1+|A9w50Rt+pHXKdH0>+-rm`fIn)WK*$TL9D7}?cNIZSWQe#zEsa0XcE zX#UWtZ6Yu*xj7*?JL%@x=Wv3c6<^0Qk2UIr`0_cnX$XdXau6)*zC=y)!7m_@Dv!yO zyBbW*FE-gX(LLN3GR`MGdOm0)&ebUuEz4Rh=vGUzM4mbFe6%Y{D9$#cdqT(e%LzHO zSZGe+wp3vy#GFF!W6=;1X9w2JB3JtA&rQ0tYkzKcvRll2W?)ShZVU^R*Zn@qp5gr) zZ|`2XMEzmJ`QHhz!7+Me126o(wjX3ya@;D2MM=F_jO@|7*-5>}_1&xHj*WJm=P=m<4+D4%QSla#l1`PJQ z*4zF{?Qt+~R$~40d`u~lEz&Dy z1hWjmx3T3Xyq9PEpxy?LB~QMUCqURURUj&$(b(#CT@;A(lug)xHs^GAHJXWN=ZoZ# z<8(M{Vca11l2y|u2uGuWdjt*_o9pXR4e$$JkuWXuc@@xu76)H`ib6^yhwFtICLFsU z`vOTuEEo=78Ab5vPcoZ73he!LJ5{5dOTcHb<%)NfmwV6lj`riwydlJ_WI;uGxZ2K0 zBOe*{dHrH~33quyWo-qZx_YLzhF z?RcSBd-cmKYL%>B_G;4&wlZ8_i%Y|o_lCfq5(Cw$x9VLf;A4c`oTLOy(fjEoplvzd zcd$TW*UJJRnqP#4JLjD1JOc^n*8_odn>m)7Ed!JE?;I1G`0K?2xIr;TPaxb_qQY^r zS(=R@!)Y2~S zboH|T{l7iV0F|mq_;JM-YYO>@$E?nQh}z_?$ww2JQXaCWNT&%2PP+1X0;X5`^>PN| zCuh=G{4Si^wGb}dIKyd*lD?lw`&W@)68$pR*YC@MqzDbjc&l=gzh-Ecir4B1KG>w| zy!HhDDPK;Tn?v?eUchRLJe&)2UPQMAXLwwxb7c-D4~9-h0QwU$o~V!?S%7LQIx&&1 zHhPSO`HwszVN<^WoD#pX1S?9UvL9PlbavvZpvkxa{+V$YOEQa|HvU#g^X#5VdQ91p z%l0dm-P~kX8lk-;F7uSLzq*B@dWTc-Pa2;a^)9P3!zp3n@72g%VqC9MceM*(EYjVp zf(88~uxy_56y$aV$#EZF)C9A)Danq z;<-B_V`#1<_hJbydwG?o?^>%*bmf#HlivKr$A^unJQ=AF78T9=;sNr~cau)`YFDu< z+^*O5iyTVfoijcsDA-ip2bNSeXD`(;BCE{2F6Dr+l%kPkuVbp`r+cAI78PBIx0Sl` z4{;KLG@@S#o;!V!FSqBFgdTGe?E2&w&e(_BbsOzmMGMN+&JP^Rb$Lbo8qM;nE0V$S zOo)g1jY|KfYrJq4D)=U;?X-{BEYPWjAio0Yic}jOVwZzH)o@2J)ClNadrT`0G8#$| z@ORP!TmLjU^41#=n)OB6v!N=(kp~A8Jc7snKn}P+i&4P0GG7LW_ zsK5!b`%b29*;h~1fSAK%F1;2eC`yK(8=pc2RQnP`#a0=MuT?(5?ctPRueYReKY2`0 zC#UBZ-mEQ@q=iX7aa>Ys)hfEuaQ03wg@jQljBr9FPOp3o?RlemZn`)_8IC?;%zkwM zLmj%7evPF^-Cib0rv_$wTD2UOeT%;|oStXRPZ?1(2zHBWkP4mp>`YLdF>?>B>BTB> zl}5uDx2OG*dw$Hd$p!VCicx{DRT6hx4*sxTHs3{RV_PP^VmI3JQ{r1oX8{CH5{7iS zVhTw{847Rjoz{Bt+a!#zrYa%`0)H7o8(c zh;5dup9DRK3YOQ27-;tH!{HB7_$n;+Cv%mO#99w04E?on93lEFd2H&_L?0_E8NmcU znGwp$!NQ33%hlTwB%Ww2Fl_)(R~oCM;G&-|I;2y19oxchTCLmSuBQLIO~8m`*^0Bo zIi0c)EB3judwy}PqYz!i_(X*yR46Uj>mHQbVpmnMeuv!UZ-Pd~$* z?%9WTjyG`LZ?eY(84Djl>)LiT03U#Ft5A!#2+-XzEFFfq_Mlu+MtaTHSzeYr0eYkz zolc+NhOzRtyQ10B${w@lr`tI55p1I%k|Iihp2PfOHCWCU;FjFyrQ;8$3S;Wm@J+j^yK2|=8s!iW-ser^2S9Wa(?QO>N3obI|u&^kiz-|Lb4 zUh0=wyLzCtzQyYlJi)BQM1*=|DiomwGK0S|KE%EA*0ZW>J#I$SOg7%$4{ZoM=@RRF zB^ZG)Fz`|@UI2a67a=|Z82C)>%-W$&I-xL!bh;ml&E^lAN^J^-TjnqKu^JKBbSced zS+WRde{`6y!qPsTXngmtvf{q|?x(Bl)eV{KRy!L!2^hL#a=Kc>cd;BI5Rq3MYvQ1b zdiwesXR`J?#bws&xn0`Za6b3x@J-3e13L8>*R3S3&#a#skWLje%5-;~TmYG7-1MRy z7q9Kw&(8|S8#0V6rSyNw^gbD7K2E%AsxzN?C|LlLf>2r%_?`?7B!&4a|JC6|{E<-gZ4i$E6=XjFZ9@AGD zGb^tOJ(}*^q!2F#4<6&22tGLnHzT2lqp%^=EY}~$wh6f#oNtenxT{o~WsEkMH#iaa zSdAvboB5Tl&+%!?B8K%xdS;4hxd%s?Yxo;m@6TlOjSIQ!Q^-?rQ&gO9R{PWhY_miu zqr;tbGc>zCn+7Sy$TAQNP~pdNakW;J@F@TbhiAEJ{uLvm6ZR#Jy@6iOeUB-h=KHz-)}s(HWw*y&+W05Q1m)sbG7u6DXKC}VsyCBJac>Uk$F zTP0r+7plgu@NeIUc)8ISX#H!vkpE*JAO0UW0kr>)B+SazCUP}uLhZKyN3_%aGiZtRR z7~C&#^4_Ryur!gns5yp^qQmSUIjGfqoq{|b9$t>6XxisrzkX%q8V$$u8DnT@L5a4q za=AFpNDltuB9I9_ePC1{AsC9Uo#g=Q*k+zn381 z!y}nU2tjYhFBVnNe7U%FRy}P@jWP@Gth3;E7JGxyT8tsd4jUUb?8*{%%k;a zndKi~y)M$y+z6K1-B_2b{4L%>-Ivc!xYw9d_1!;9MlP~{YH)2Bx}0*b`8tT$&~(bs z(N8u}+g6Sk&PAenq0BHSs^gYfqAZPDs1#~egEs|3GPeUAcc_%+> zYimC)mg?}FCUY7qsxEHYTZqIdCwfE@!a4rVD<01uEBjckmn{j4$3n7pU~CnzvSJLX zTvK5WC9RmRujg?N1}_5|7UBv!Ba*;yPxw~1`%K4X>FCz&?XlyIXzI>T04WkVf#|#j| z2LLrTQGn=oc~>E<_WmoRXzQyYb0%DzF1)VZ8&Q*;;*YHJq@}Q*Kaalj0kUhuq*#1# zSQtLP`^R^axtz}NQ;S~rS4TGMecU!qR&b@-z1kx&dwS3J*2WDk_B;&@H9uL~G^4-? zGLPqL?d81T_A86~&TFk(bg}TR`a77cWLY+jVfbZ!f{X}xAs~3p@_wpDjAqei=zLJG;ar zS!jQTOa7pR?tCm+pja)ewkmxQEP+r|Ue5Z%)ivw5FXiL1Fc9kfl%76JTtF;xXa|Hw zcmY6BJt|qgO}$V>BDGwtIDXKxiB=1`hcodxBK*m_P5gRulSq4u{-?f=_VDI#M5cOa z`{vO%>c`t{*DvNNs1o~f4bH4^WZzgjhR~p@`IC{fN^8hBrJAd-=Daa zfT+nM$n+uY&t>#QX?%xb87qli#*?=>KRix4-prJkGUZ)e@CUUG6x!eN(*N20)mU{U zi_(l&eW26e`PHPkv2^E5qqCiS&nWgI%X~4@hvdJ~&L%}g=n%e-jsTfy-m2s3Xnu1n zzx(JF2d?1M035sifweoM~mP5K&(-f z!fIZBm_XC~H8XStGHBt^eUY2W#SPh~-yoJt?r9(1)mfP4Yg2L<3%cNNzS?<8$n5=k zu>*fr5P%i1dd9(EAdz|fZJkt|?I-$62!8xHh+LA4Znyd~j`Q|M z_InQugUZ5In2GtVl9);`ugv2vk; z?>a?<_;V(owY>%mG7znfnoyseZZ$s4f2)O1I0s1UMQ_BV>swicc&BTDB_qo6XhC5D z-KNte-v<58Jfeh4HQ8D38UxTfb)YZ;&F{!HSPt1?PhGC)GsYasb5g99+=E^B*u|mc z+=x$2Ok0CSDK2JwxZ5uW6@lrMX_pm>Uef-po8L-8nVW?% zy7|5U$CA2|`8G?ot+0s47k_XTd?pa*uIzaKwzyiDOR~@AUQCzt;IDl^V3+$f`;F*c zl3**oZo421GxTjPO{+%m%E5$h-*P}fLE;K#t75SK*(S+PeG>yg@|~u|(~$dtsQHt- z^|So7XxD(6i{&@Iasy3rn;j4xwy#~-?t#5Xj#0w7J|>@4zQL}I5Ur;ZE>^oQHB zpY3{hM{h`kgHmS0$Saah@uKKbTm!N6txGP3m=hD$UnjCS2Iw#r7L5(Zqw_nt4^Tu&Vj4*(sTIQz3X8vYpjb7dcssAWlkqSH(Rd0S2&*_vUarOmeqo&{%auPi_7- z_i2loCo;G!70Z1>N=IwQ&2nRa;bfGD>nCyInXW8vU7&C-@*}X{kn{7u%g#@M6WEB` z1Vo_Z%#NyVfRE9soOx;$Iyx91^X$_Ge*vGgyn1WPuXUj*G0A(~ZvFGC8}lVittPN# z<%b!izimHGx5w)&QH@l6!XpgGMHn&Y*zzMc&$&IZzYQ9|>y68b!2JfDp6mVf3T=Z)qbzmF@!|0? z^NUEg2)^~QWQPx8uf!Mi>hI{M!=qx>?gl(9Zf}BS$n_sA4BWYEe_0#F!J^?6gwMQT zgnC!KVKrE)pE;cxo0&oUeef}vQ(Se~yB+?^@`*>5HRHoUS_)stI<8O}OoqNkkL|VU zB1HnEJ?QVNYCo79MTwL*eib2KPab~RvrFE#mzeBYKU=$1Fk0nX_#4KALyj%<8%z7@ zxuAW2i0snDmwqkndA+yfu7OY{+68jF9={Z#Q>Wj6kYS-2fDAW&ORH`0r4_M3;ifXw zpAE|s-^f6t8N1UAoqu+K9d9%T^%!_Q==_lv@7+(2kc5>O`8C4#-hSe6U2_;adBhZs zHw_bcx6HIf5}{CLeaAJOmS2MW4fB}PS8z*JLyZH3Rq$y?t&WwUTKeIKjWF!&Cg_cA z@R7A5gx5#wbf!16camU;BFO217wJzLzvvvxh>hLaL7}>@-PO(EfbV0g8&ibZ_1wqks>2dT znURr{S8l1huud%OlxIUtj1_JjR?-1NPX0^8X5(grJ~Pi9dJu*vnXZ76idPK}vIdtZ zPmfVXG4AApZ&b8CXOZ1L{=Q!A{EOTbT+9d>#QCv5&P-9jVpw6Y5-uExz%VLyO&Ula zN~cB;mwE$Vy!()s_1v!a?8l>IXuwWq34YwYT)jQqW^YTnxwjlhqlhGZCXtoEDNsps z=M=iX<%GhpSJnBazJk18k3b1AksRqfa2dj_+8m>Cd{eIS8t1ZnydAFL(gt3~Smy^o zIks9K>JK7Q3UnjyTF}Xm_z&4>DPTFe=wcOrV7wz^Nk!)~%HWixn#7 zlJjv8T}8}cDYIsMF&O|=bg8{FilV$4bX{~;w!fX4l$Bf68t06pyx+tP`T=Zy%8B=< zoD+P9x+CerLKV3N;ljD>trG&9^$|z(lkZSnu6nmWd6&tFHVWR^<=33aAncXu)PFf% zYF$I`8XLn(V2W5N_o}(~Vw$hFPSAtN;U*}+2};x;C@>?{HuLn%eEs?a#e-4gA^HjV z{kL2kU<7)`q95b1#3&z4Afi9yWD=Hu5j{K&O4*V)b;QDm!cC0i9&|lx_#KJbW3LWG z+L?8$qKA&#c_zZ0hH6BWlop`nEfd&dWA3o zX>M*OJ zUO?=uDyiyRGeBqz#!u(Aoa^ZFLzkezp7R^+?uK9FdlK8Xv)y=P4Q_NF%0!B&x7_z1 z4*W#!^<=h_Rnh+?qsJmNupz)Jq4@MIQS(NL(bGuMx$y2}nk^R%I@;ak$wlGU{ie!B zlT=?ZL=3hP^Afq1d3xl%r`7vTniR|r!aUf8<7aoU7p-{@Ni|efC7?M<95FBhW+6hx z<4sbL`3D*ueJ$tQ*G?X+*Ib0L_E@EA`xDx^jG#DNnW$Y^i0rm0y{CQiXe6o!w&`H9 zU7bp%+jajmVbz=y?*gKQjgjwA-%O&}?f}UN|1N4HzT6OS&vD~nd|eeIgfQ^={XX^W z!IJ13Qe%gF)7*jGcMY7c>oSKGT^*uKBX(m4NQCPn_hBou_;a=4#t0giynzKJ#FS3T za{X^uCc@Kv92)9FK_K0#EJdwM`9<~$f1X7VUs2KP29C;bz9x<~yf@~DPBNe|gU=UGcl(=<@Dtg+NlF)3u$DJ#Z+Szcr4(ClUK=4VSH z)6|7VM|=n980^g9tNQyFer%R=9|SDu6`-=#!c|aN0<}Q{1}#vo=T=*lFjqoi)AK8L zLZ|&Y1*<7aQ0}j$8BObBtDSAa{cM^`xuMyg;-_Axy+|L!1&vhxdJo6cyblI@-j5=y zcBMrYvB4ye=F`WM3JBD%E|S(_uX$Xr>&91P2Hjx#Ot+QK?jqnA1-mC<}2_8x-N8r=ALYSHTYaMhwvRTO#JkP zGYMg4b#HoO$oQGJn;RQ55e+!+=FRRyBS=yLpT2mB&Xn9j_1phkv+9ND$E15xfx?)% zev?FQo-VZ5i#FhYh(zXOM=(>+kjv3!?Bg(@u+hqqOt5E!&5 zO=VKuB{A{O;PsRZ{VIN4Ns7e6`(ekGrq!W6Yh3?L)S0Rd&CJXSL)flj7+x8z=IIKS zYs={irUJ=0#1L{jDfRWy23*~UpZ@mPM+4*37i)MG&M5?^r(Iygq4n}eC+Xts|K)M1 z;(0ig3XS0I#UANgsFamsZN!chaYhSng-)WD&Yy2_#aYq!wrJ}@RXRifmhgD6(ar4B z-Q|9-i=GdV&WUS6i(C?QmteDf8{?Xb6Nx zMHvljhYolzMLfX7-;FaOW>36hn-X7e5A&Tga(i!K_@!^idu*;gN}~Q=sCciLSP;>{CT_&73uu=YLr+; zmy+^mjq@^1OCwVOvC4>%yf59zpWgYg0h`1aaa@jN~(BauGsIvo-MyQRTwnNE@Cn= zf-VnK(ZFXDLe6Cg4!pN&yY~B#Pi4&FWSg<-Oe`SOaR6Ji9kih)47SNeqG$#U zdvuR9N;Fz0ut?b?wY}4>SY*@b6lm1jhp6+Qm7Y_pw@=Z4Ol4ZGdgf?OZ&u8@gUA%U zsefPHm?5Cq!kAC13XuYdKF)u%Aj8##Rg%sT{W&s-Q%L7A*8KnIKj&;rD zE|$;(6sH*PC!5!k`!q=o7@YwfJl&sY!O(;iRa4WWMCMbL0+$;+7uF*ORW#XiDE#$2&m4ERqwL^bb+lQ^jsMp&EKp}BlW z#)%Aa3FwZOx}e z38`#Fh9eO!QL)+??AjO}Z))WespYI{USo;PhU(s2v!TDg9laKz7MhQyo;PbumAKF0 zhRAj*;DL;aq*0HFe_5bxy2jz^QKOrw>MkiHe4fXmP9R{RDJ^9Jy%{3&r9dw_at6L6 z%}jL!V$lOO)uV{CGzt=~L(fX!Yg_iJER`=l9J60!@e6QT`y&kF$LzMlFIl61^=`*8 z7o27ie3HDTh@M0=vpFFjDNSL&!t~^)B%{(U71y-oX?uPDsNG1l(uePI&;2SBkOaHkxma~L+fD^*Cu z7uHEGX4aWo=MF|@lP=?~u_kMtqSX(@icS?a!!4i`+QHWK;5^N5$Mo2vA1_#63Xg0z z8)4|qt4mqA%A7Zl(+qx43XPsa*z17cuO{g4?PgL4DGrUv3!eRDw`RoGBLmw5_KX7e zn$SHDU77il`{VZY$%S{fl*q5%!N~4Y;{Tu6%66KrDwUEcm+BD@wS1)W_VKzFz`Lsx zX{5q28Zgp`A88HYap+_OsYL-BhswYW4YZO>F~*PpLd;*WgW6OQWg6ub>6`3jZXdS! z5y>!#YNSX-O;i0>%lN34MA>9`sn7KT=v@@kngW#5$Z@zC&u=G$hh)bqR)x;q4Z-82 zeG}lSNr@>Fj_Xs_KhvU?BVF{Z8vn(BH!6#DCy-dvf{SEL7eb3<6X^#Op5Q3&ML^@K zEuIAp{pgA0sZKJP-UxOVw3%i_2g^b@?V9n~Uz~kDx2`D~NkBk&y<`LgH1XE};U4e; z{q|bc#NOu@@+bJ*EDklgtPIL0g}5nlkZJA?fu|>!ZW7?q&rsr`AMQDj@Yq9{sC4R9 z@{kBmmByI#m(x$scqIS$?GDq8%P?Fl01lx{O(ebFq@cz#{1`2&p7rul!#t&I%9Bq$ zKdzJo4|p2}eersg#unP2%qS9H@$8?4qp>n zDcPc@@{${cA32aNEEBwE>MPe8230}RyLz^o{G7t(f(lI>hUqR`QcQZbM-zpo)5MBm zj1ua6bMaJFC~QkZPZH+VT?KwdjSRV9T(*1Mzt-lT4@S7~xYO+shW^aM+~a+ttFxOP0m;%sfpK3XfQsS>~2l*GD~GKUMr&<3K-2Ui&BIE}Q7?F1D@-C?)eImKBZCCBh7x35G!|{UF>s2THn9bj6rWwSH>@4|18o+~>F)E9 zAZ7=R`R*A*>y7p)1`LJWb|(dA?{Zf^`8K)^Hp$A}3^8ZrdVcfE-DW*JN{BQjvqV(* zL`lSOXp79sTK;{_Me%qH1jJ8^Q(FFa)CqM|Zwg}T{BZP;k&)K}X2mUVrJF0hjir+~ zv$(*gz9qYkM;OkbOi4ABu-j7etsN(c1*x)%NCAi8X-pY9l*Z zovi~IE~95EweKdxBI9@H%QNCd2@K}!wd==OEpeKHKlF4N2+yc~YL;(Wl+e?Fe(yk7 z8M0K4^Icd>>p5#L3xTyPoO^XHe)r`_qSUW!{dk$UG|^V#m6vy}93!gG6rUqawxi+C zPPtH00ix28eKu+}d4~98F7x1(k-yc(Ax|}kWXTVge0olK+aw%l!>5f8{J z$w=3N(Q-Aia?WpUilyg*Wa>*KI&H}wbLnqAWFn#s+*Dj|!%)(wYv5?F1oX%;@K*7Ku#(%4l^>c*C2*u`(z4!?hp z&scOvdO^jn3O|I4+kCpfP0&Rs2;&yK!BQn^jR+rX!EIqpOzs4km96O$1e`r$=(zMk zznuxqMFlx+#;8xpFUG?o{ZwWUR7HZNS4d|+l|KKChNESUdv=h*dmhSwTz}SfzAA~H zz|FXG>pA2E#N9_i#+nhO;YXFIvp8ADMGYX7xHWY#<+OU1 zPCZ@}31JX28ot3512CIX0@L2fUWsS)iQsbi-P z;!s{hKbg&<v-!uePn5q_B^0r&~cr#=B?TKc09>Cu~hh-`PyBAhhfw*yQ+H%~2iJ zvXUMjC)DHN(*8hYnfb78$1+Y9^=3cIi<^3o)>g*P$zac|lJ!U2m5+vrLJS&ny{aq? zPFKzOR64}1hd$Z&E{2X@aI@i0aIE6TmGAhs?5e%Dy_KGG%<;9a*UrdkOlUicm};n$ zj>lrza&qrugfj4&b>7bT#~tNyUAgMq{}^ z8K&^7T!sa-iw*@m?Iq9C_qr%DScCV*Vr48_f#M}iFPz%wd*<04hqD7W*3~Af*)d0GV<)2)QV2c6H^a~MUH5v z`ZAqUThv@!c@Q%w&YpJbH0u5O1P4Es@AQzt(`t4QZ*6CzdU;udr^&YR$#uWC-!9U< z&HMk59!%bU!G>rCs9&?frb@bFc zaL&%grbS9mL~q}|8cxvY=P&u%z~qFZhou{Hklxi@o+&5oSkts2B6J_K#x=;&hsy~| z(}6Gv0~-Rk(VTpP6y@~;AKus87Wd|EUySf8>Hh3@3xwR_cwSh>N-I-7&B`izxnJxfiO%rCr#hTvHtL zn_u@fP^ETX{p$GmXESc^2Evp;za!A-f8-8r)C%Eg>0rbnNzelGUz`T--EVynLcs*R zi8ZqRR5Mc@_Eih3SfY<^-zyW?8 z_Di}!v`p%3_+PdQaGP)yMF*VPx>V=?!!6|K;4o+d@&6{sbRghJzqHBw|E*1&DEz2s zK9SE)@bi=s9hF4K9p8}nj)q>^Bt8Ao%7-6XKvR1c6TROeyb2}5>i4`wM4K(cY;A2F zB}{5*mXs9q9ZhK#o5%`-x?Zjh-hYqzyQt^(K*+7%hM`lY3lZhD@8ZM48g<@T=R}5s zzZOm5W+Ydo(HUKDcp2M+5img8Gf@Bg1K4~!^6?5H%Jl<&dp*E9_J#Sr3lIOk;JBby zZ?TK$={XD)^&=f`x~ytI&N(F&QA+Q~sy6ncYrWWslFxQp?OFlo^tuuIUjT`v&C!C& z#u9ELYgqB83}ayIyv4oAf#YIhdrc#sNPhBdFd8wQNy`9FZEGYcEWNr1m7pLVIx;J5 zjv$yTEWqi^azMy|z&}&w$3enJMRbRZ^{d+lF>a+h;Cj3~1M4H7xwOpfSu88q03{5XM9uRw!*YA ztRYBmm9YH{PQC*UL9kHx5RfXq14KEVDO8$aKmujP!OhLRhg8N6!INH5(%!_$lC(-4YFL)jV^X0C}!L!oX6 zJZ?|xZ?_8Z(?(~ko%TCL#g(lUa+V~(m>x=`T{l_@z&>il+8x0CneuP3PEIt9gXXu* zUuaec2!ct%0syr~`^_B$UNCfk&t-R#`hvs&Qgq4r9a0pBcWnsgk4ohy>~YC}0f2?r zS=q~?5v0hSe;XmIA++l=N)#Z>)xdIL%vXYN!|~I|=H|qN0(UImMv314z|`}de;H?O z2!cVvVZp&Z-$#>0fV}D9*z4IB*jYLOg^?yS`P8`!ZW=?=v|<0zetTsm>OBWU#d2O$ z{XzMM(Y|_vuUvt%QkoCe#003pO3%h>942_G7&(cJtrvva=R&&Tt}+-Db)7p`gFPL1 zf4#cb{@gYCcuyf#X922{dqX!@fSpra72Pyk{zkpjM*~erjPL9I0Y+J=_Mis_34gN( zahb(mII^Yo0F1xYV!47ID}6_cHjeY$D4pB=Zti4$W-|!e{+N)Z{LHhhTYKofRJ+Uj zzNJ6aQWwlV$NKd-)ph=Mi%lZmKYdzMmE6x)9Q9djmJ<1u>i2bH;ES%AqHzUl>AN(E z47oy3JNG~p+nuh;>Gd`89rp8TH*z8Rhn{P-GF{%rbTBf#9u%iq=!p(ZDFZ1xrOTl} z?>;3*wD+6?_)wUj3e#v1@ zv*i*z(rFOfRX$B?=m*i*d1=>KB%OT#rO*p`sBI&FRhooz>pfRsz6X4~Lf`nM_s;)S ztJy_>C>+}<2v}dE6TN#8%?R&OxkQJD(WlvwxS~Cd#9j7YG?cYA<)Vu)wi9o`oi%b(JuR&g(y=tZJRY-99G z3`)d(ko>wxW;AU3Wr?&!1&Rvc-LWh+Im=Cs<`>g<3N6G01zTPPz)&)dkC(b()_mTC0ct1DqxMKH&j-F-p`K_TU;KK~DL z@hl3t62hFD4+KOka^Nk_dX}6puR2 zJTe!X4cWt^Gp;RfF!@+Udsd}f$kp{u(KvvpuJwjceBuC3(4p1-ydP)}7UvKR@^Y0p9cj zRxF@+8ksypk%4~i^zP|2L8Z1eE*R%{bl0__9p2}m6Aru8mxbdp&J-Otx_25#fmt57 zL7Re@y#1xo*0MAo=zfJ^qDXs@Pwk9oNL`5tkmKH1%+KiSS}ineN3t6_879Qf%TR?2 zha6{kJq300Ykg(BLt1XIg-6P4$m4i}c+~-c-+T&kvANvit{L|CQprnBoD6KFWOrEQoRC21l@_ZI}_joF`DrCm=ClCPag`=cL!s)YcQ~OoCzfLB4Oxp<`4-_jcg>p#zE3;|ZugT#!^R_t@O!fvKe5l=f)8bsWdOp;{q6Ge zSr(&KK?TBW2`>Y^Rn*J2NsfxDDG#-hVno+MLnB~9al1Z}*cX+&wX775Q#KIli9O?BDAgu8PQl-^O)?Ljg<; z|Grg%6yC1~fAYU))9E#R(CuRuECj9W>`fPsroU%L%0VInuK`qEmLHFIsD1no2#)*V zN*Evbk%4fAfC`Ay@9r+m<*!#?U9;nl>LePpKPUdC=`3rg|3TKLP87d`z%ragF%v^got$>4vY%m*to8fLs>NVIL$ehAP=adMz{WU=(<+x2y?b+O=yF*ff29yiT@ z@`gNAX}CC7`~qDq1nvo()+&(AgzG|#;A=e_y2*CpEetMol^9{mtNUXRys8Fujkx&F zK)oCjpqi~Ne0!Eolb=K9iRMp%>A~(#c~9RZM6>%q#%A${EykXDYY@Om zS#>oLQ@9;*HBER5-|@b~#l;@$MM(5UM9~z7N*a6?50>Xrmt0E_1A$&!bm|$~? zrmnB&KK7@+mX(`Z_vu^C9;d7+PZC6Y{QL+4A?4c}p*ferx$(>)8e92B<@z-{M?9Ki zjd&pXl~8kL87kj{q`2ff6M|$QI=-n{DuHiCgG8L+#&n64;NeB--4P1F-N)S_@&<^iW zEKCVAI9LH{r8B1j6*q(S=!*H~YxA9nbr>L2mpjYG1WasHS|9;?-_4&W z#K8*$=YzYyrJt@TQKx2x=j|x={wrS_;YJ}q$K!E2q#el=|#4SFf zc$Sy8U3f9Lmn1^_3tNtri~A$rh}g6G+^CFP=DU*j$~oU28nVuKj;_RykcXo2t5HLn z?4<}QQ`|0KnluU{8!UoE%cHS{6lFDP5&M54Bgu+wXv__GiOeO~AA zf(;CHM?0J^hvlgcckSk0i-5;k2$CC&o|KK^ip#n#luzf^LQ&uRqAkG}mO>jV;V+|? zm7UEN7ptJ6FPZK&5Kh9TVZ5(#o3rMPu)oII{*yGZcvcf2bVfAeId#ah^N!aZ2##;T z>AuA6E-%?ZE*`^%y@a1#_GGk%qpp?3I286`e^x1iiuJTO3ShJUcfx4HBEC(~gsVBE z*9w%$0ceJBcKD1)F0yera?eyYqs+}tm{JtCv_MisiiGj8|GpyyoelE1Jyst0N#-_F zjmV3xcKkUrwqw`j)+yiR+f>7?Ce301`O%&a>x>B|&sB7tRZxN0;*@BR3Tc za^a?26C6oDgi}^7w@GMWUfG*tV9(!flz$!R)L&IO7z#0(<^4E>z$n;@5d8_FL<1T{ z>;}-A(0}NSJODPBB`X0sAI@IAsz`7sJC>^{`V0cN(#tw547|BdDahj=7%&*zp?9H$(I=duBNfr*C{L``;$mNkNVk~7jFjB4deyCq zlL2E%1_-SwD{39#-X!D&dBLVnkVA-ht~y%X1P!+77>g4-czsD4qkxBhQ+j!LMBslQ z3oUGDOCBsCs&&CPM;q^QGQkfH!7mBbKb4HT3LKF8uNeb)0-m#+Is#q!Znj(k#*%8d zs9y)EFQfs;@BZNt(pLY{eDN1V0!Z`!hsZ|wAt^+*be_|1EFSrRxDRsI zjpl|O1^>55hyVp>=M8=JKlr6LL>LVI5KDJTi-0Vo7IuBXgvF>{qg-nXY@Yvqfw0-j z3}2@m`3JEOu)hrR)IK(J{RikV{psC{um`MTnU?c) zG?m{07~<-98O!B-YkD8p2g7>$`Xm=SYQZ8ay&?6W@+FmzZdYwTgqT38z5PShKL2U$ z2-O!`$Q*FU(9PAnHRjUyCWl>&I@R~U_$PW9|65Z)9^QSqzxw+1YczldEB3d_rE{7K zD@V!N$c~7J7T?^Q@yF8xrfv%%8U(T$$!SbuV{Z>*Y^=j}>C66d zK1Irt=Y{in+=P#cItGhz7|CKy7x8vo>>h!#B}Jwi!-!cs8*Gt5Q-VO8JGIn+{i{MnL&M|+)P8=2NlD$#&>$+0yxSs&s9Y*3p6?lng5B`5g@cVxw z82T4k?R~+wxx<|ao$m5NG!ZN)OTX=G>8I5up7%kPp@r4bYq6@>z6FT_!lHh)5hsDRIOq=%&u3YjL z34j@>8fE8yk6d)ZW@|BY-1_IDd)?HhqW?)G-{3lQp!nxk%FRz6p&D;tzCKVXd`>|@J&NUM z_@9+vKjPxXk{$7xN6wpD+;BJ)IO#X%^_d220O0l`4@sHkgq(OM$($0dXABt8&8Y8?2159WkBmtR)3#NzTzYP>c z=%+};wjw+FWUp<;rWQQ^kS0BTZi;?b@N5O(VvCeNzXE=$x4M~N=i~R%fHkK(_}}g- z-}FHtsKNQNfUw1T${9@%gJ4Du)fg^~)nvJi=yD064+#;YmlM+!zpJh;t<_2TV#~{Q z1-A`(&Ui+!+K z@1_s5$$sZkiPh=2XE))a40k2JexS9S)9aVG5)iKLnf2m^Yk9@kiRjm$jvA8KBj&fU z7%`^T#t)SzZNVDFb-#Ih!IQW)R#i)2d4CARisums=3ZsGLbE<+x~+vu2+{L_F$bwA z<`kJH1?Pb`h47vqJhC%eegxtR<_4!hjd+ysLtJnv zs5-fV0*^4-%W!{#m5E1`2<2vo_}BG(Ye9y9Y4s}jhH)8-I%q(NnGn;PV+C`>TvLg%Yq&`S;0S;u@r4%5zD zQb$*V%g(kR^L=OgO{^qFm@TV+lO9Mb%&xp)NHSDXYK@*G@oV_jXJ5D$AsTX8N`uC^ z%(6FG?ps3xzbM1UBy(}&FN@7VtqB>1{0%Od2seW`xD?zABBxBlZ*A(S( zx=vo+ZJ~S0ga%@nQ#I$;^RGbRb05OEK*R))3t;qABa*2h&7TVL3Q*pdq1+oTF5Lug zxbOU6G^W2>h>1XlKsnFihOqZb%`-(DDF8V$$Tsq&#+5`WLGG3xpZNLJb9w<6)p_EtwnqKkRS6u^{S)qH@xu zAvu+Sv3FwCak1_%kQS{&)`gP)KV9e-eB=A)TGhWTJpD%=psQMa)@`^UnhmJTgO``Z z9NwJ+UFqwdX|RJ+kqYhoftfpTWVpIC#{q{kpVZx^Z)h+?%lZX8jDm{};0F${833!f zu2gTeGL-{24gq461ppvTG#E?$XkDAfZJv2b{Oi{Dix5q3Pl-y zPGsn9PdVEJpwK9w^r}=3bcbK~+W=9o&<64s!k;uJNKBc} zcp|y1v2>#OHuuq;W5pO)R7eQYZ|e;AyNB(J#l`-MvZclt&3vu#Tw50xD5$?SAp2Pq zC@AQa$@Uru_AGG4S>(O0Qk^|Z>+btB0_^bC8PawK<@{U8O6DxlPDBtZ*@{7=$p)$cH@?&7pHxoJD-Iv51+udF^NF(iAvY|tQk zy(P}wZ%0Ab6=)U(?7gTm+hBBUxq9nHj@Gx(o8Qw#QzA-T`Uoe02QD>epaZknzW@f{ zwQLYE5hQTZ{hjK%0q zUhC5Q>EE2o%F47Due;$b&^zN{g;hhfZjn{al1^zrWxi@W2sqq6*O(!r7~TFJ(B))% zw^ge0^A5B7#+!lrj zY~wB8q8xi(pj|xB#M|7Q{K}mND)SmSuqXv>o(AUvEpkHJfJaRnZr-s|$b zV5ZlQJUOj(w~*3jmP1X{_tfH24Q*@ERzraac2XJ2V1E(O$3J#{QfR1bT%po2XLr!b z%CiBcaynebVXk3Bg?)&YrK!qU+LdCWb91H-!ZcOR;r0F>5oR0nNB3=wQ7!j1CtM)R z8?dZ@xbu{;^u1vJQDd%7V&<*AU2>@oxNDu|J?BpGX9A3-g_sjj!X5KCK`Uto+}6Eg zRSc+s2f~<_7<40$csZ`OOXMamPPSHmp5Lv0m+!qaX4+MYz0iFxP`|>Sq;t$9PnVKd z`+;q4&UU4zBLz!C0~_Z5UgPf-P8XaVIogEH>RfUp4NkmWTUy9^X_ZgC99x9BbtF~! zsOWw0yhDEx#AH5jXbN6adS#U=u7l@@sx=ZIzKZORgSjw1ja&oR-OpWXwhK~X&!G&9a zr=Is`1?~H^z~h=--e|JJ54>m{>eFA;fGl|7$=aDU>$s}N`d7N%59zNO;8m+CQfLe_ zv|?&#SPH3Drh;r%B?^BaP(-so2VP5hiT)r&7d#|0*4t1)k4RLetSWU<2w2Y#S`YuxgE`EuUsMT&Cv0(@1;#?05k&RlnYr$_Hf9#c$OkF;+?5 zR$1y$rBcgkSGb}!^HBx%75lr!X`sT%2aHe`)CQw=jP#j3pXokIM9>=7&Wl2I z;UerklHjpdYO6MKPP7z-c^0S3_h2UU`s$|c9C^L8V4pDvIKNf{?XNJ*1g<1Xw_~Kt z?&2L{2cw`tsuUgWsXT}n@IcaJ60Uz5i$;*+c`{Taj$rJ-zp)wlhK*e^ou@jnC_K~{ zx@1LJmeO0}1=B=eMz(CRf}&5n8}}-0G_E}h+B(9k=*#%r=hKN!wZ?=%l;e5$0NSa8 z7lD%+4H=BOT^6uj7}D>?gOi(O-<>9kXXG5sd2HZ9feAFCS{b{l)=FYKtT{R9V+!xO zkV1Qh%ZNJpEY=8W|CVj(C(H&nCVqwvNF!PoFKU3%5@eueY+5dGT+OBJ`Sghg_)mmp zKNbuG!IrQ>u1vJC;*%tlSOp#wW=^rQ-kbe^r4Yt;)_S+k8N;jt`Jx8KTUo9%vO?`BTy` z5hH7Ks$zQ^!k)yO&-Y($3xOeQZ$IqCQVI~GZ>I}EAMjJ^8Evz-8%B7hp1JXiS6y9i z;cDJZWBqm>Ve` z-EiMnw5baOvZe!SOw~DAcoJ_}oj&GCawR@rizzqv(K9u&c$&YRpPoM1yu2OHuV~$! zUC{_vok`^nlZ!`twI{EC{u~dFm^)l{>Ao=qr??aC`0Ec5%0VLk48BroM45(_+0AO} zZ~y4A*+-7HWRbDiW2U#@nRB;iTc~54B3o4`a50Wa#e-o*PSfY~Y^O5M8M`IujGJY$ zMi5yMp(1g?{}*hfxcGYRdRpAa9i5pB_L53zilL^-R-47??n{{=g|>fsX7OkT>q$S9 z5SDoBbpW5Osf0mI3MwKF?@X3s6!(mE|B{J&foqO|h>GuEXE_qFCP@g8m=eP2P-}X> z&;@|rs>=eP4kc2z^ZFjb4jG3CkBqcEbeHYExTUGs!lf@h7!W|Ce-weae*z_NH3R4Z zWkQ`K)ImD6{n4%VR|iz?F>=W<_@V#uL^rWVX2>klB2pG}P@$t>D?LwcsCu+t(fd1w i{%;1U|EnboxGKeQzx;hp+!aRw{^?vW&@5KBzWqPfX)u2P diff --git a/docs/assets/js/luau_mode.js b/docs/assets/js/luau_mode.js deleted file mode 100644 index 3bd86505..00000000 --- a/docs/assets/js/luau_mode.js +++ /dev/null @@ -1,168 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -// Luau mode. Based on Lua mode from CodeMirror and Franciszek Wawrzak (https://codemirror.net/mode/lua/lua.js) - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("luau", function(_, parserConfig) { - var indentUnit = 4; - - function prefixRE(words) { - return new RegExp("^(?:" + words.join("|") + ")"); - } - function wordRE(words) { - return new RegExp("^(?:" + words.join("|") + ")$"); - } - var specials = wordRE(parserConfig.specials || ["type"]); - - // long list of standard functions from lua manual - var builtins = wordRE([ - "_G","_VERSION","assert","error","getfenv","getmetatable","ipairs","load", "loadstring","next","pairs","pcall", - "print","rawequal","rawget","rawset","require","select","setfenv","setmetatable","tonumber","tostring","type","typeof", - "unpack","xpcall", - - "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", - - "debug.info","debug.traceback", - - "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", - "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", - "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", - "math.sqrt","math.tan","math.tanh", - - "os.clock","os.date","os.difftime","os.time", - - "string.byte","string.char","string.find","string.format","string.gmatch","string.gsub", - "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", - - "table.concat","table.clone","table.create","table.freeze","table.isfrozen","table.insert","table.maxn","table.move","table.remove","table.sort","table.unpack" - ]); - var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", - "true","function", "end", "if", "then", "else", "do", - "while", "repeat", "until", "for", "in", "local", "continue" ]); - - var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); - var dedentTokens = wordRE(["end", "until", "\\)", "}"]); - var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); - - function readBracket(stream) { - var level = 0; - while (stream.eat("=")) ++level; - stream.eat("["); - return level; - } - - function normal(stream, state) { - var ch = stream.next(); - if (ch == "-" && stream.eat("-")) { - if (stream.eat("[") && stream.eat("[")) - return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); - stream.skipToEnd(); - return "comment"; - } - if (ch == "\"" || ch == "'" || ch == "`") - return (state.cur = string(ch))(stream, state); - if (ch == "[" && /[\[=]/.test(stream.peek())) - return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); - if (/\d/.test(ch)) { - stream.eatWhile(/[\w.%]/); - return "number"; - } - if (/[\w_]/.test(ch)) { - stream.eatWhile(/[\w\\\-_.]/); - return "variable"; - } - return null; - } - - function bracketed(level, style) { - return function(stream, state) { - var curlev = null, ch; - while ((ch = stream.next()) != null) { - if (curlev == null) { - if (ch == "]") curlev = 0; - } else if (ch == "=") { - ++curlev; - } else if (ch == "]" && curlev == level) { - state.cur = normal; - break; - } else { - curlev = null; - } - } - return style; - }; - } - - function string(quote) { - return function(stream, state) { - var escaped = false, ignoreWhitespace = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - break; - } - if (ch == "z" && escaped) { - stream.eatSpace(); - ignoreWhitespace = stream.eol(); - } - escaped = !escaped && ch == "\\"; - } - - if (!ignoreWhitespace) { - state.cur = normal; - } - return "string"; - }; - } - - return { - startState: function(basecol) { - return {basecol: basecol || 0, indentDepth: 0, cur: normal}; - }, - - token: function(stream, state) { - if (stream.eatSpace()) { - return null; - } - var style = state.cur(stream, state); - var word = stream.current(); - if (style == "variable") { - if (keywords.test(word)) { - style = "keyword"; - } else if (builtins.test(word)) { - style = "builtin"; - } else if (specials.test(word)) { - style = "variable-2"; - } - } - if ((style != "comment") && (style != "string")) { - if (indentTokens.test(word)) { - ++state.indentDepth; - } else if (dedentTokens.test(word)) { - --state.indentDepth; - } - } - return style; - }, - - indent: function(state, textAfter) { - var closing = dedentPartial.test(textAfter); - return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); - }, - - electricInput: /^\s*(?:end|until|else|\)|\})$/, - lineComment: "--", - blockCommentStart: "--[[", - blockCommentEnd: "]]" - }}); - CodeMirror.defineMIME("text/x-luau", "luau"); -}); diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 5b06609651e2d3fe292cf8609ef6f1210e55561a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4205 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 DGbA7D diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 3bea3b15..00000000 --- a/docs/index.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Lua*u* -layout: splash -permalink: / - -header: - overlay_color: #000 - overlay_filter: 0.8 - overlay_image: /assets/images/luau-header.png - -excerpt: > - Lua*u* (lowercase *u*, /ˈlu.aʊ/) is a fast, small, safe, gradually typed embeddable scripting language derived from Lua. - -feature_row1: - - - title: Motivation - excerpt: > - Around 2006, [Roblox](https://www.roblox.com) started using Lua 5.1 as a scripting language for games. Over the years we ended up substantially evolving the implementation and the language; to support growing sophistication of games on the Roblox platform, growing team sizes and large internal teams writing a lot of code for application/editor (1+MLOC as of 2020), we had to invest in performance, ease of use and language tooling, and introduce a gradual type system to the language. [More...](/why) - - - - title: Sandboxing - excerpt: > - Luau limits the set of standard libraries exposed to the users and implements extra sandboxing features to be able to run unprivileged code (written by our game developers) side by side with privileged code (written by us). This results in an execution environment that is different from what is commonplace in Lua. [More...](/sandbox) - - - - title: Compatibility - excerpt: > - Whenever possible, Luau aims to be backwards-compatible with Lua 5.1 and at the same time to incorporate features from later revisions of Lua. However, Luau is not a full superset of later versions of Lua - we do not always agree with Lua design decisions, and have different use cases and constraints. All post-5.1 Lua features, along with their support status in Luau, [are documented here](compatibility). - -feature_row2: - - - title: Syntax - image_path: /assets/images/example.png - excerpt: > - Luau is syntactically backwards-compatible with Lua 5.1 (code that is valid Lua 5.1 is also valid Luau); however, we have extended the language with a set of syntactical features that make the language more familiar and ergonomic. The syntax [is described here](syntax). - -feature_row3: - - - title: Analysis - excerpt: > - To make it easier to write correct code, Luau comes with a set of analysis tools that can surface common mistakes. These consist of a linter and a type checker, colloquially known as script analysis, and are integrated into `luau-analyze` command line executable. The linting passes are [described here](lint), and the type checking user guide can [be found here](typecheck). - - - - title: Performance - excerpt: > - In addition to a completely custom front end that implements parsing, linting and type checking, Luau runtime features new bytecode, interpreter and compiler that are heavily tuned for performance. Luau currently does not implement Just-In-Time compilation, but its interpreter can be competitive with LuaJIT interpreter depending on the program. We continue to optimize the runtime and rewrite portions of it to be even more efficient. While our overall goal is to minimize the amount of time programmers spend tuning performance, some details about the performance characteristics are [provided for inquisitive minds](performance). - - - - title: Libraries - excerpt: > - As a language, Luau is a full superset of Lua 5.1. As far as standard library is concerned, some functions had to be removed from the builtin libraries, and some functions had to be added; refer to [full documentation](/library) for details. When Luau is embedded into an application, the scripts normally get access to extra library features that are application-specific. - ---- - -{% include feature_row id="feature_row1" %} - -{% include feature_row id="feature_row2" type="left" %} - -{% include feature_row id="feature_row3" %} diff --git a/docs/logo.svg b/docs/logo.svg deleted file mode 100644 index 55253947..00000000 --- a/docs/logo.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - From 88fcbd58e60e42369a4a1c1e70768e4f90e195c0 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Tue, 24 Oct 2023 10:28:19 -0700 Subject: [PATCH 7/8] Update README.md Fix status badges and various repository links --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 17676303..e3219b52 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Luau ![CI](https://github.com/Roblox/luau/workflows/build/badge.svg) [![codecov](https://codecov.io/gh/Roblox/luau/branch/master/graph/badge.svg?token=S3U44WN416)](https://codecov.io/gh/Roblox/luau) +Luau ![CI](https://github.com/luau-lang/luau/actions/workflows/build.yml/badge.svg) [![codecov](https://codecov.io/gh/luau-lang/luau/branch/master/graph/badge.svg)](https://codecov.io/gh/luau-lang/luau) ==== Luau (lowercase u, /ˈlu.aʊ/) is a fast, small, safe, gradually typed embeddable scripting language derived from [Lua](https://lua.org). @@ -15,11 +15,11 @@ Luau is an embeddable language, but it also comes with two command-line tools by `luau` is a command-line REPL and can also run input files. Note that REPL runs in a sandboxed environment and as such doesn't have access to the underlying file system except for ability to `require` modules. -`luau-analyze` is a command-line type checker and linter; given a set of input files, it produces errors/warnings according to the file configuration, which can be customized by using `--!` comments in the files or [`.luaurc`](https://github.com/Roblox/luau/blob/master/rfcs/config-luaurc.md) files. For details please refer to [type checking]( https://luau-lang.org/typecheck) and [linting](https://luau-lang.org/lint) documentation. +`luau-analyze` is a command-line type checker and linter; given a set of input files, it produces errors/warnings according to the file configuration, which can be customized by using `--!` comments in the files or [`.luaurc`](https://github.com/luau-lang/luau/blob/master/rfcs/config-luaurc.md) files. For details please refer to [type checking]( https://luau-lang.org/typecheck) and [linting](https://luau-lang.org/lint) documentation. # Installation -You can install and run Luau by downloading the compiled binaries from [a recent release](https://github.com/Roblox/luau/releases); note that `luau` and `luau-analyze` binaries from the archives will need to be added to PATH or copied to a directory like `/usr/local/bin` on Linux/macOS. +You can install and run Luau by downloading the compiled binaries from [a recent release](https://github.com/luau-lang/luau/releases); note that `luau` and `luau-analyze` binaries from the archives will need to be added to PATH or copied to a directory like `/usr/local/bin` on Linux/macOS. Alternatively, you can use one of the packaged distributions (note that these are not maintained by Luau development team): @@ -78,6 +78,6 @@ Other than the STL/CRT, Luau library components don't have external dependencies # License -Luau implementation is distributed under the terms of [MIT License](https://github.com/Roblox/luau/blob/master/LICENSE.txt). It is based on Lua 5.x implementation that is MIT licensed as well. +Luau implementation is distributed under the terms of [MIT License](https://github.com/luau-lang/luau/blob/master/LICENSE.txt). It is based on Lua 5.x implementation that is MIT licensed as well. -When Luau is integrated into external projects, we ask to honor the license agreement and include Luau attribution into the user-facing product documentation. The attribution using [Luau logo](https://github.com/Roblox/luau/blob/master/docs/logo.svg) is also encouraged. +When Luau is integrated into external projects, we ask to honor the license agreement and include Luau attribution into the user-facing product documentation. The attribution using [Luau logo](https://github.com/luau-lang/site/blob/master/logo.svg) is also encouraged. From 87d955d5eb579048b16542bb73ed3efd5208928b Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Tue, 24 Oct 2023 10:32:59 -0700 Subject: [PATCH 8/8] Fix remaining references to Roblox org outside of source code --- .github/ISSUE_TEMPLATE/config.yml | 2 +- CONTRIBUTING.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 55f9db39..c7fb782a 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - name: Questions - url: https://github.com/Roblox/luau/discussions + url: https://github.com/luau-lang/luau/discussions about: Please use GitHub Discussions if you have questions or need help. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 460e4b43..7aa4e74b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Thanks for deciding to contribute to Luau! These guidelines will try to help mak ## Questions -If you have a question regarding the language usage/implementation, please [use GitHub discussions](https://github.com/Roblox/luau/discussions). +If you have a question regarding the language usage/implementation, please [use GitHub discussions](https://github.com/luau-lang/luau/discussions). Some questions just need answers, but it's nice to keep them for future reference in case other people want to know the same thing. Some questions help improve the language, implementation or documentation by inspiring future changes. @@ -15,7 +15,7 @@ Please feel free to [create a pull request](https://help.github.com/articles/abo ## Bugs -If the language implementation doesn't compile on your system, compiles with warnings, doesn't seem to run correctly for your code or if anything else is amiss, please [open a GitHub issue](https://github.com/Roblox/luau/issues/new). +If the language implementation doesn't compile on your system, compiles with warnings, doesn't seem to run correctly for your code or if anything else is amiss, please [open a GitHub issue](https://github.com/luau-lang/luau/issues/new). It helps if you note the Git revision issue happens in, the version of your compiler for compilation issues, and a reproduction case for runtime bugs. Of course, feel free to [create a pull request](https://help.github.com/articles/about-pull-requests/) to fix the bug yourself. @@ -25,7 +25,7 @@ Of course, feel free to [create a pull request](https://help.github.com/articles If you're thinking of adding a new feature to the language, library, analysis tools, etc., please *don't* start by submitting a pull request. Luau team has internal priorities and a roadmap that may or may not align with specific features, so before starting to work on a feature please submit an issue describing the missing feature that you'd like to add. -For features that result in observable change of language syntax or semantics, you'd need to [create an RFC](https://github.com/Roblox/luau/blob/master/rfcs/README.md) to make sure that the feature is needed and well designed. +For features that result in observable change of language syntax or semantics, you'd need to [create an RFC](https://github.com/luau-lang/luau/blob/master/rfcs/README.md) to make sure that the feature is needed and well designed. Finally, please note that Luau tries to carry a minimal feature set. All features must be evaluated not just for the benefits that they provide, but also for the downsides/costs in terms of language simplicity, maintainability, cross-feature interaction etc. As such, feature requests may not be accepted even if a comprehensive RFC is written - don't expect Luau to gain a feature just because another programming language has it.

9s=`EW?g|M_Y&dW_e*T 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Ν7tH#LD$+o-iv@N{GBon*p_{<>AVs=U<_Ef8p{ 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 H`RM-ux@AtJ diff --git a/docs/assets/images/create-script.png b/docs/assets/images/create-script.png deleted file mode 100644 index a0481ef0c5d0576efb6a82214ef9377fc5ec433a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200777 zcmZ^L19Y9s7jJT+6FZIB*tTukwr$(CZKG*y+iB3)ZJMM_qrTI7Z}0!E_1-&coy?s1 zW)JqvH?#5EiB?jOM1;eI0|Ns?l$H`x0Rsbcfq_Br0Rf;A)_bwv3An3@qzG8U9R4}z zhn=~Ww1vDp7!4>71cL;}1%vus1@sjF$NM)g0Zs)5@mD#hfkm;S^3I>Kn{`(6qt@8dWXsB@3YFchu@^U<; zj`j@3W{xK23|{t5zp23Zym&xadviBqVlR6;2Ui|1e$u~c@PP8aiy29Y|El6<%TKB$ zuS6{B=weRH&cMdNL@EGBOiaw@VrIdkA|~+7@_Co6-aizOp7 zH#avU6AL2?3q7a?y{or_o3R(YgDctJjr?gx%-q$~#oEcu+R=gdce}p#;1O_1^T6GmnRCdU64nVYr6|A*}NlfTLSn%Cdm@%?U$N6FgD z+)hi(+TPs36*M#f4sH&JHX!0xW!t|F7bIsQ4IvbL&6c`+I5rDg~{L0309Vzw0ajhxBU^v@M0eq{W2Qyuhz| zVY195lfP`M?;OUneOr<$#qoZB6pk-KXdD&>33OzfX3*2Z!usCa^t@xf6W$4brR(q4 zHR{VKBqc?B)ca%iWAeJxVdcl#T}GC<=qb}Fcg-Jd(WM$11rrk!Gl8plQE_oIs+*RD z{!cF#)PP!zdXe3ipLf1A?kaG(?6zyWzF&IHCR3o`v62iwxE#k|(q=Fk23*#6A|WEi zFDBvtVg`6@#XK0Uw7p(bejYe9e8$qXb9Vp5k^TW5x`G5n;K*6j==JGgJ;L^r&V2+v zxa0t;6QobLP;Xfw6T>*$A@%!&;nhDzpQ8S07C)Gfc%U0X84gqzOy=F^f9oeF?=!f9PQt7>S(arI7~sw;va_fMC~iSavzh=9z8=d?m8p~ z0+p|sT@tFJg6R0w9xq)Jhtytt{N?`4KnNLyIBO9xoN)h)^gqo7d7*zQWg_p_Axisu zra@#(G>~jr&5bt^LsdriQ-A0OR>X+y63slzKuoxMeo*HA!<$kOAwIZto8G0J9vxFsxXx)hc;VTMyZd434~ALB$pG%e?YiWXNmWegJ_zW+6(EFR!{!f>Cx zfg1JNin%7g_kTJMB3pom#9}n~qEYIpH23hUF}?SI-qM*!!}12Gu(d%2hAzZ{MZ z0i$GC-BHS-+Kc!x{O?4yfKB)N5kn(SGCiDs#xXD=9Apk-=##}|82Mx5->OEy$A(DQ z@8SPx6gDKN=d!p_B1dq-G34H{#nbdO-_ruv=znc1&ADlo+7NL!1kX4S_Lu#n~5h2TQx z#Y`4+XvL~)k-w7S@cuq==hGWOJ-bi;P*w*+LekgMh@r=qjGlkUz$J}XNQl>ve`(e_ zP{mEISM-H32HeI<8GiJz*R-F>=Y99q|GM3OU6aAe3rIx@=5{^#+P92|$5Ch4AF$-U z%Xoe1&6z+=%B;oY6g zl3kl6=HA$<1`bc9(^i)UgmYCCKXm1^2P{cbD&I!nIS|LUCq8k1-wO;pvn=qYu+FU4 z^g9P%cyWQOUvV?|?Q31rh)=1c%li#I6fG?|I){(N_YG zjbOF<9$m-Y^cRn9dr6<8WXY5kNZF@QqL(1IpWlwlO#Od~+1H^K)O?G^^m;n4bS?FL z{2b|u(eDmf!3}tdTkQ%fVH7TW87K6$qn7Djs9^PtXI1JKp?0Ni-gvq+_`$=aJx%8S zayu^Fe_zh1tsn2DT3<%V^YZqizp|}#jl5tn6bDguo(r%{7|c4yb(kzknEjoJ3k<~Y zBvRsSGTR$vsn6Jprzg3N3cc`*JxOZx?3i~~t@Ab!82t?A8oKu4JOYGJxZkEx&*%Yk zHV&<`920&wA5IULa%MTU{z1I`#s59W)yaUPsUs zzaDBf>QWMvV$IrjpI0#UJszYg3P?Zb?QFJMIyR4D(T#j_jDKv;EOn069(CaiQvdl>Gi_MdAGYxI z%F@-XSN-Y3X~A^8%>Ev{cf1-^eF_s zLS7q!L;y1)#Wd?*FFl)Rkk$BM0&ju}A*bN4pY!R6h_4BrJ)s!%Z}pD;@Z!^CXbNiI zUVrQbejS7vuQf{K|GwcEaF@F=L1l0I_VP2&zX6%obYOz(vaYot@Xfn4&uIwu>;vkf~=57irb%zhfSRwTH&T-L=ml6GM4~@vYS4;>{=EJa8 z5g{ZeIFew2BJBr*aiz~BOa#IM<(URsB5?wq5*?}?;aZF?kYnh)+h5Qt>SV!1I$YXAD#y(CKtLW^8U<+g~7%`Gf?%Gmp5d>zopXn_O~T zC;j@29GG=qYxqiIZAX6TQ<8Dfuk>nJ>uu<)YLYZRASXa)WM&X5j`7&&W+yF z0$-OI58wMm$=dV*lff?mKY01j@jHVY!EA#fw{FLYe#IKT3}vwo=K$viX&ZZ%G_VqQ zE~whktbnax{S3Kl3j7ahI)Uf1hCUCgnq+)fLkkT3FWq`P^bzjoItGEs`(X)ED*&pnq{;bI6)HW^irj89DT4>&)?i*_7=fT0%1{`JlOC_#u2 z{N%R2Q__T7&uI_}63<4S?Y8jO%V|$qi!Y4}^P%;vjJgN2)v8HRP&PsLJe32943BENM1K#@#z^3zvj+afit8IaS=z=%}Dh1B9=PU5;hdSq_G*AT0nDy54^zZx#FoN1c;lCl^4b`w3S%k@bh+P zS1-{oEo?Bcur)Ghl)hutc-Lt&=Up_DFSr&vlz#w}6NP-_Jl-a&{QToa)B{o?3T!LW zKUyPO6axrsGKT_DY`}B}ZIS9MXrRb#=Hj;^Z{6s#k#zCUNevw(QAenbloxnH@(2s< zK~zgvp7vLHt%t6uz|z#GdZbrwJoP=_$R;@$BD*4EXiDN7<;1F(o~Ll$M}_ z{E?7PVsPL-4kQJ%34>V*jDgG5UDob>%Q8(+&J4KB!M7|!_#iaYm0_J(^kHDMYV-#6K=Ajxx`7Bg z5BipL=3!isy3NEQu?_;lfXB}{^Vix@wuAE+FqKf0)Xq*J;xr2lgu!5~P_!eMhdr>H zj{UDr?p{ClYpre<|ABIk~qsvnonr@UkC72)u&j{%pudoq;X5{EDQ@1Yf9%3!~% z;I>+Vj-w((0DFhZ+K!S{Xv#ZYz%mTDzp1}-&zY}WFu81oQkZPeGR8#Hgbe<`rQt81 zZ+6W4^yOx8t-bAXZMXp@QQ7LboGX-!X%w|-(*K+* zJK^q86)%KRt%vB_&Brfe5k(nKm;L33CME$4?4tjQ~Smun{6TAFWzQ-?xmFr&Bigx$tp> zvg@@o@VT?&g*h~VbQiN?UbUUnRAHVMU>ZCyNm)1}1DT>I`09qiH%?T%lg)RYSFu4F zoTN81=`sk(m&0a*HV;{&4?!8bx~;;s7Y&OgjK=legtydQ+|mh>M~wJ8k(EK=_naD( zI(3$u3s&y$%x)V>)Z1Ad3D4Ilee^YVoVVqXDqsIP2usC-#!H~ybEJk}s`oZ>LsvZW zJj^eC?6v=x-=Z5l_XQ}&2>Dof#tc{bGWEc}_w?O)fiAs*_9O0ac>sW~!KsE(@)f2W z^RKo*QU%i>suFTAp;(2Z$%>oN7=n)hY%kF#ris%h;b^0Um#BO*VFNOpyEWQ$oAy0Z z4BRN+xj(9g6C?|;OOgaa@&{-4cSqk5)UWA{e&P2~WC_Iahk|T8Ai1YIRb6+QK(bM6 z>9I(U%xCOxQX>Fq5g{Nx6z7*!R}7iKv0uau|yE|3(o06UL`Oy(L%w-%(~ z=WEar03HlCjr7(Ksr-iB@bQM{{Z-R25``t`G9{mPb}#c`$-l{5^;+K;M>(zM!9nad zA<~q)?;&HNMzQjBIVi&p_gn(?iw5aL^*9;#X8Rxgj1)j3($64C&6c~4btz{*H8H20 zWtH{F4TpY>cl-92`pG1Xx{n_&dyF40@4r6${uTOP1ukI#n`{7ej&O!+4Ev+k-|7rV zFHs>y$sn}p30dNYOa1nIr@;G1@imPBqpbd+UW5OEt*Ca(bZg^1+KrW53FGv~-)H^r zrRV^z9N|O#po*iPVE8Sw|E=WK0mE3UU4&J~-y+U2JWvS0|2`L^KL1P56yo)1OxLWkm>R!iYECh1G3QoG zURtFl9Wy0G_v`UqAXoi<;a~D4XcPlfC{_29lW`R(r25PGN~uaZ^0K;jX&U(4$>Hhu znDSc=)5YZa(+^2B+%gq{=4kPIaK%;v^erh7Ofe=96rbsg?bIgmh?S!)3H~;a;0Ny# z6X&$CBvq9cXge%v z4n|T}qqau!twpNEomUgXvAC$k)cnd493!d0Gpq3XhJ!2fl>DvywFOB>c%p3euDwMs z;Ph`k?gQOof<{1J62}Dz9NgIINX1 z)a5i;THIS*MEjS@s5sKZ9=3CpaCjkur54&q#GlmdYLpci95l(zVm???7nvIyr0o5> zrt~O6wyU=7;NPWOvO`eyv1n^404;Q%8P0@SS;e~7#PxSEU&Kx zRy9<_A4HH|trRZ!uCw8ZMthy)ppxikk+4C-yTh1$Ag8L2H| z?C?WVUT6XIHiIaW@wxF6n{`a-vFJ9^(y-LDs1XY+(kb>?LfUip3LC8&B9{_%D=gJz z8ifwzZ6f2-|JWp^P=Ky)JcLk-R>GH%nCnKfk4t!FF3hG{)hNAGzbdzwO{5>R^(sl^ zWZUJQjLEIp$zY3{X-xb^IONW~ACD7^1%Lo;exV_$9yZ&Q@V ziJ8q*KAFwcl<>&;V>(C@7OKo_*FhZ3^}?WcF* zcXS>_pMsVgPl5L!nLXW^9z|H4&^0E@>~&SREV zK9}`4#oV)^;u0zNsiGt9u+f zh*ia+DbyL%gLNp{L+S_YCn5vR;#Y5k;&B`+56^@w=wvpx+W@LFs26GNsuHny(IffBz-?{U>ELDM&U|B=23&f;2D1h}>VSk|qkrnq?7=T7gRh-WQz(P(~IYS6dfXY&r%M|TZ;GJ=x`UKkNukev;`XL#1$ z9i>zJa$_-@qh7B8GCXn()OxB=MwVIgey8u)0E`Ci`TwZbZmoFGgxW5SB%ERlyN{u5 z@H&X5)VUik=LKDXDde&z^M(B$*IU0$YM_hJM9_04Xk!Otz?-J;%wx5j1DQn$y^oS3 zi2}GR&Y1d*217vV*!kP@7mxwmJW@Sx7Bx!(s8;)kMk-38E@neo<_VBWQB*I+#AH>4 z?UOpC@KC>86n{arn!Pyc%54@#t`+lxZo~U>&GNO}hRGyN*kOEs%dU0S%i~TgU_Th< zK6&<5zA@mT)*3F~8DvjL5Y9!{EQ@~yNppS28M+h>lH)~|zSr&VI)*-daBb|qsKGjz zl?j3=2g&b|h54uxq8X?jd^gM>ZGhh=EYM2BD{$d`-Z=Iyb#h&Nb zwi9h^=zsGmcPk)tTM&Nfu$;^Do@HNmGnnQE>2pCKeQsrefjwGTXb>YFq8MhDtQ_^d zvjC}LwO!pvt}j{&N#%@R$2i5YRTqp7Smg|f{3CfIQem48jnd7bpU&=EYT*z_)tP?j z!np*g%oAxhAeknM*%X@Z5t-2EjD&@+E>}JK+r2ffha1gP)|bwQ`<*&SJ^9YPfae0= zo5{pVQC;KO`VJOaa8CddM9wgU*QBh03&_`Sp%~kv4LjCqx7i{|Rx)gWWDFXl(LXJlgt`~>}J)4!ba+hzn(DVmnj;@i-kNIPe3 zr#@qmb$gZFfQ*pzH74Xv(bhN&CkFIc)I8rN$dbK>5jlIl4#C%R_qr{S1a%e)lq%^y zLYvTjUXo?>XV9~;@-U&@$5YZ$`ifocg`vRp88RRMWIt@jftwl@y-EyxAv0(o@ce{2 z4%S{&TP%bMJw6l;Px6g-U{836&|s{68mbI-4}+55L> z_-Hv)OLmKclDnbynx!EEb6yB8nf!|5Y-1+&IffveVsb$htcbe3;(+H~tjaoH>&R}82- zSHesBjUFo&(t(ia--gfm?5OGfq?TGM@`3Q`piyGSl3KMU%oz+S^o2?W$QUQ&Boi3E zx5q;>tt+O0<6s5q5s<-CF1C(ghqb;Rl&xZw^LBDvK>RksU#HudU{LL8w%KCNoXg^S z0hF_ZJSy~l98aO+4}$u2b8MJszL0ia#*tJ?`mr!2`ztUFGZIYPBISlX07ZSNLLxT4pt6%8b>YJ z1!Bd=PMSu|CC_0vUVAwFni@_knf6wDV>^-_A!c5a5PB#X!e6G=c6^~a^ zM2;9Pn9ij$^mUXO*EzBkF%vY3g2iguH+?4f%1*X-p;)mkJ>BR|bfZi<*6_5#-e(X2 z;T;`-J$3=G8kDG@lM2WCR9$G76=lh4Dk$&srE-kh;~ejrKA2;Y(dr<}*yJ0KG4RK( zFXJBL4J3Wwm28T8 z`Mbo6_W(EyinqeU-s_Dg_i6)+w*gV$%PmErB;UKvvr5-FZpriM40 z98YJ`<`;kr@d8@!$08nv%kDr2A2Vx}xTTCcjZ7xeS4DW(cLrW0TNvm^`=Q7hpXx{= z;sByMBERi0XM`~^3FqJXn~OEho2t#!$b!JE;|OQEyc>GI>nwZg_&;BFS{?@3sFp9# zvXSGlrJ*10n=|_2)GX$Zg%$?w&~ht}1zC&O5qF-ck?B;_rx)erZ@_5@-lr;w)fjL<<#s32}rOU?*M|t1d3mFkKX2<@oJQX+HHOY?v&QwxV^3a~^KP z7}HOczd%!k!|;&VV>J$x42Zwe4>KSB20j@5q*@H;-K$3D)*Fr+Y;X4G%>4MHY>0XJHyiy|}F`apg@fQmH z2}L@B%K~a?eGb@8j0&??xvp3|C^s`|SL`rp2bT9)cyu|_bPQ!fbtKAv0%`F+nA(#oifV4q8EcB>Yp^6;h>hk?a8w>A` z1%?Uj4m+Gw-;J!6<&ta+rTZy&=+%OZ3CenWj}2p<&lZEZ*|ixpjRkyzL_DaH@+>w7 zKhsGRoPA2aDg|s{8AZwI2#1)6qt-G3i|4gSwk%gKvEfdb#_LUFa->;P?Y_c*b2;}? zQ5ZE?K&G6-(wkHjw^}D$Lqw^F6aI+r!Ev?tNe!WNSuNueTXKBB8R{rV8LT_z(1Fxx zL%Yw#+?k~QnYPIhoDsvctT0p0C7Q))i%fJs*JL|HoqCqZFF^c>b=eVdJ7iBWVG|lN zQtrg-Weqhe0qEq%>X>R1-rlt%3$>>w->m%5WQd6#^syr4;F4Qbjx%bNn>1M=fxMT&}4^QSOT zGaAvY=qzf=u37qvqoY*CIc8?%)>HQeD$iI4qu`**4@=BIwlz7&X0!#kqfHKL_(>}3 z6@;k*YHJ1DPOp{RaK&%;lDCH(`y$2*R70kv!95oWd6PBSO2}J~t$x?AHSaJ>#M*dI zfV3D?M%Z#B+KoDH(1b7OR+21jXtfN8LojgeOalWkp$t4(X0s!4VZg*>1LDU_JSHi>$1{zHoHe}(uaf{J{nAxUafb5y6Up5Q zzbxc0XfWXt5V|3>4rJl@N2o|j-{EWSg=Um&=V-%D1s#Y{_`tv85n%$lQ3r>6d-;iV zfK`u$vs%=lU@RVHJA#Tg@nuA5qMkgvjcb^yDOjrAx=$(hruG(w0FKJoW~6CcWFj=> z8?An!KR02zk^QmED`=}004D@#f10jCfUyOV^7BxE^;0?eF>3Kr^RC~|1 z^s*?YA>BeHK70S1HdOfG1YwkXv~l2UO-R+HhN?r|xgn$nSFt#`5LTfR#=}`lYC+}* zgWG~V$j8gD%H8QBY|?$Qid3pOT2i2@bWO+E1X&ti+c{4Lz)aI{Ctm!(3}#gm*9~v%!YrDi8PDO< zTM=Jg)3%_b!5nE~%?gW}miI<9a^#bW5iS!CX=6euMPM($j+#bG30=jasZ$=7MN&Rg zo>(1quR6u1XnJd?AR^g`SWM8I$HsgFjkA+Z^ zKi-`K=)MU$Ev%-o3GHAaz)psyYVs**wY-eBS<5ri&A@~g~X;{Y3f2MrU! zoZv4%KZq^<5i}toIZ{Wd3n$_6Cs>COjvTD<6QeSeLn~N3eRy}I#P1n$=bnpKv0(Nz zHuw^8Li2ZSar9~3Y0JeD#ovp@0rMi02nDe*V zYXY1&4C(jjZRV$A6;UpyCeg^r$t0a^*RfT+?0l8O6SB)ebkEs??3q$7^o2n2IuD16d|A$6jINtr5FP!&cd?eAYiPAO7>Va z;Ql%Q(TrfC9}e=ez^tscI2mv5V-tT%9#BNcu>dUkH7VQh50VsX0LD;?F>Nf3JVqh_ zrKy1%{_(?zvES79L@nR+yD>}{y#__pcm`}ve#V=&2VBN*C#7c5j90!vzZc%@+C#x!~6_Z2I$w=!& zUE<=Cn=>17>_u=}b91S(71k5p=uA%p!267+E;gVAABwb8Gu7YPF7LCm@oXixzZ_r+ zw)0*UopYa@#bxT?Hdk4I?*??hR#BDPDgqD4L=|UX8~Li>%9*sk$mlxV19EZOU~yL= z2-Pae5el(+N>JUo4cl|lu~@NoV3pEX9@aMnYm%GBEp~y!*^|z#I3JLRvNsq;9l>QB z#K)d0A^=>qy(aesmUX8aX+aW7vCwS$6eNwA-Eu{)vTV>JI#8F5@QoQ#3dJRkFsY?GM+K(e%CV5!(Fzh+IV5suJGh3N<4ba8 zB~1(YzTJbz=NN};r9V;OO4sBR3L&Ej;glXytLDeAtsrJw2`ne9q03|^jPo~dHw>{@ z$(EjR^MYqjoK}G?^Vm7WISavNPnzt)6U3>1#%hF^zL3$(B{tyVjD@om+QFWxu68ew zcD1V=tW$WGR{K5G+UHZJmX!6bAD-2wN`wKbebb5AlJVAnwbUJl-(g$#*RRKDXGOg& z{x}`S!Fv)fm>WfQS-rRk)6S3-oPd(l6jR_9LRoRxP)NAfXLag$A@<4Ew#jr1aeU!Y zi61J=p0zDgGg&Tk6!tLewTE_b9P@aYoEfA!HfMf{9~^Jj?X2PzMrJG3tVP2s(wv{! z=DA%}_4mrH)mP23W{P97j4!nTUeoS5bM&^?VUM>~7H{LFFKMa@$^>in^WGKXiS94I zXo9tU`RF-z>dJcrgeb>nww%S56?ukX#k*aDg|k)8%LK8KgR)DuskGRQI^VmaPNNMs zj}uN~;}F|Ki(;@nCMc~PDPIGXEqNm;Fr8IlK6WJF zk4a%B=o~=B4J2qKHD43vkxBEB84_8*nV>$#X!eA3muKeqV2pCeQ&WoBVT@og4p?i9 zo>{Ddlf8j`udAsXKXbAn$%Ra%HI0j3T)y^E4r@cp**A&l~? zY<)w6m`k5Ra$F=YX+*_c`jNmnQeCm`8t1eYc{#>;FbS^ulFd|>jKUG*Sd}S700JwO zb;U#$@Jwed?%@jDZ=KJk8QBYEn>i4_3W1XMfg2YYGX%O_^tnCoF<2hiebp2rD56H0 zmIFAEE5kuv3=(8p1AT_#Qk9?^y2M{LF0K=!2~L=Wn>fDCKmhBvcg67uFYcJQ>5|56 zka_ZjEnRVtW#C8LF61)zC9i`CmGBgqLkR}Tv@t0u0OM4nd}nG$Ms16tb!;mfYp|L# zqO>3Stf^Z)5Z+0^n0(+0>gqmbmZ#fOk64AQczy|Ja_OpL2rh9hAaRLtXrx50$z&D*IeX zO4auHs)QEJ*v3fs!X!pEp%x|Gvh--%=r={oTwvl6T&I$2nG1=xjj59c+Ae{7R@6(l z5(+IW&b5#kIa|y!Db-pw+cK&PqOvrSWSao~Vo~@I^xzr>Zdspz!dx-Wo&HIJ#AzN; z{@FI4*7~~k`;!eKR$yCN1*}%9bdNf-bv-Lq1z4^(#>8n{L>>x9@RMTC%}&)CWR>cVjs7Cd8(ucV;=C~`VDNdMd3#qY2oj+Me*yni<%s@cceDj zaX%G7uqpgjrSZYvqKk>d9{k_(XjM*y&|Fb4bngN$syIF@$UFM6^qA! zn0JQ|FJ7n;EOkOTxIXxjo6s%}W|1&hgh%JJpV5>MFCH=1iV_+vJ^%AT2Sel&mePLy z5OL8RwwZo-(U{9dZHwEvijg1)XLsO8d2$PKM(>~ul#Mxhe);~a@y?D$7P+ENZad6U zNtjlqnWl1A8$}W2jz$Pt%)B`6pFl+R)g5M4@5~a4lDcnjGu|e?(Zvo4 z@w%vKr5Qi0>Z;F38uVyi0%Ug9ry?ZS`b8QJxb{kL$BQYmfX%E$o7l#!N+T+S;_XmP zA9SeZES|~YRQ&}#ws{~}9Y{)WGU#QJA=kbJwm@f!XjqW5K@+&z?oKU9u+X6}9}N+CAl3>` z8cvExR21xS0ZN61-Z4h0Enu%MM&%H@-;(dE4xUAu5>rU+_24B8NJt8u&R!+gwTi2# zBUK-n)XGJk#JJSW9OPJ$5bqm3AEy~iAontf8tWE zm&3Y!vRoO`EF~Ya!m0g?BU#i5+{ayfL?*@bq4hSEUM?r%L!Z^K)Zu06-!7Gi(hKRz^-n0}zH-yA-r{|KH)pAy+uFR^_ zX929ycLK1EGJr;M-^PDM%R?xB^tqm@&)#Ltv6{EzgRIC}+VK+dnFjeb7knW%4lvj} z3Vkr--W^(?=oV+|*eI9zvq7`Cm_w3teoHQfnPa1-mNqNLM}J6lpeTS8CW#aEHDD=Y zim@tX)|X8ta|w=Usj_!aI@AoleHL3$$h;p!rfLj50fj7_lx9oDqeNJROv_GD~(`u(1N0vmG3f+R`g zG@nyE`JE&&45Z8{W(xH)I^!_YEnMvMs~h=TZ?A%vDAKcRyPzzasrH(j(iUUb!$qb) zd>svIbVUt^Q(NsXE1Q*Er*BU_9sS20yo?vTFK?u3CXNuE7i|RBnPrWbbK7Zg+0(`w zd^V*(^PZ+X-Xh(Ezq9BQBozYby3dD4A$rCsU>N!F0V^v_@8VL@x)rd#Kw}Dchxf;k zT4W13L^#nWQ!k(dPb0mGY^_YMqkJjRVmHf{;bN|C_@0wGfl9um*&|M?#3B{~wQpdd z%%xP5CPIy6OrK#<2f0JjXWfnX++rnyJc%7rWLes-+Jo#wPBMutl_gB~(sC>Ez*6({ z0jrjG^lyNRkq(JcwFd3#R1me-WEeei^GVARFelC@<}BZ=+(DH*2Yn&0QH&BR>ofB# zLp{YuKD95I$lx{6i%RoyiDl}vin1xA$u7avs!!A!BCwT{^3!2SC(GUSg0d)+YWwa2 z4&-JixBtv9I0HCw|Bl~=Fr3a+LK@S}G=sBy+GR|ngr+cW^!KZ_fJy?S zCp{BhnMM&s_%J1U&ECA~HgNKcIM(^u&o6r3HU9&E$p4NCP%c+Fo<)*oGNs0YqpKX2 z*(Ao=aG6Tj2FS8%OE9XT6>|@ceG;Z<(@p#c}Tp5?B$-n zs;4?xy@xR8>~8w9t0X>UoS4GJ-P)5eatlk5AbJ`f%Dmrf{TJIafeN(I^5i!QGs6t5 zsM?VijZJsva9_-1wrn${9@at`26I7wkmI#DL$OEshNzzZ`H&((QmVGRP=*NhOm$chK+Y3AV=<@u%@lf@#FbGyUg+d61?1YF@ ze5?*mvgZd&xo&2{PBjzgD zQp|cC%5PLs*<0vVWl_zg9_oHl+UiWEWYyc=x(sV&Y-R6q zQ)K&@jiYAhC4q3RJn?#3FP1T#rM=0odHvjA!Y#cz#adCgn-a}Bslue7*jxa7- zM3L~vRSoLEr|i{CYIQ;BW%3}4P+9w6J@2YQAUxfY_VNgGD@%Cs`=cQxblI{A>F_+c zdOX?KZM0=#YV;Qt@#@W_HbSoUQE1&afwZF$AzE|U@;aS%n%SqyKgaF@VekjnQ;m}t z8)<$x>vX9dHUJz1bMG-UeYu~wd-_zgAX&DE#PrxhiVCJ|_1ThMyp~oeopM9My0yWp#YH(6H^vsV{lZ~p&g`PB9Q%5a{4d2 zOqrCJF#KyKHe9m;3q2vawW50}O1+RY!M(UGTYBB-x!d*#C%PR1=|Ws+m7$0nBG6cx zmd!12%cPYe%>fggV@p=Ny&+32F*^oRRptrDwelyHIepC1)`$6@cc-UR0hfO;Wf-Uf z$g{z+J!i#<`pBau7)dkd>d4g&ig(3QHf3QZ_SDNuEiDo|ODfeH-7E+e4s9p19%R=} zZ(d^^_1c1~REyhP8947zN*lEKC(WKysNp!{eVUI*3swK!g}0(Y73*~TN9wBI1^VE< zrB!;d-ch_Vkg!Xvv@{K_(PVP$0fwknMFI|k#gz{{W@9!zK@{#ka%Qk+#KW=lqQ4b7IV?_ND8H_W(*WicNbBsA+B z(hMeBU#=rcZX}KScvUZ zxPe05j>`V9v2Px_HGQAIl1VA*zR)aTUY;a1T&F&UT3)=Cxk6i{3UrdZAVqY%|Mgby zLF(_6dM6dgs=BnrshOeyL&;4QH~8D1?gYsp0BCt6jsVQBNI`Lm+_gzPRV(f+-68ti z3Sr^oPZamBDW7ZH+NkQ)G2zNoOyAC0`JhfydoZMNXh|$9DR-%I5CX3B@|jJ?xe={Nr2n;ilh*nOLbx+g*Ao63tU1=a2bZjd*u1Gt{vt?>8gw1M;YHnd9wtckb zT$-0-^&zvCIbr3msa`Z0hFva-=dhH}-)dfj`-J`Qu20qvq7vVO>D;!1JM6yN7*?W6 z^E3s?9>s9zf@JfVX@l`R)i`!|zv#uyvJsDT$6fYTG|wmKD(La&B?DP~0qPLWgnWc8 z2>SB$=~N(c=Pgq3<@3A#$5FGhmLH2CHdH_X9^h=CMM+eQs!L+W_lhRn3~q4KvKsIF zngfzkWJ=A%c$z+psJUnsBJjJFW@{BkvX}>PinP~ebek#grUiIt_hLRTg0M3nxKEuy zZ#U-h5hL$eQ797MSD~@nQleKXfis^}c@A$7U>@%EJ18pVC`I-lxbJ&=deMZ^cvSWg>f3R&=s^rZ}{S{^0Mr?E*Y8* z(sYJyF-#Z5pL#^!Afjm!xN>bxMqF|<^;*m(4@P4hKOARlJAAbF^6KI~oREFWob-lm zHJ~^ZFKF4Jm13-p)^DjHJum6*LV|`iUmu?Oj8k^G2AkH&nE69P&8DQdbMr=eDcIXH zsn2H7xNOhBkNf-+IbfkKa$EFQi_@Urrg`R$&t<*Y{g!QGFA}%dC%kRDR{1%lfv_!; zSb8loZ2WtAENX+dbI^2DQNd4`&NvMaFx4K$q{MrndBq7YMrn&B!h`$eBV%2BgruK^ z5@mn+EQoQEF5S4PTE6djeSHPF-1np@^V>i?ODuact8)GI`oosf^ON&bXD@HLIJI%3{4abhgHu=qwr8L%)?7UFl61^M-G?Kpt-aKKRCm>IIC)6{tVlV+s z6hMC~LEyI^cn)2{vhIt)FCgp|_MPwU@2fGmIx%RNcKMHEB z;WkTvf$Xvd72^m51>&rrMb&?()SN-)zgMc)sMV-#mIN;h?nZ3GjDu#yh(k;i`2^EJ ze+7b1rIB8IjwI>>Mb8;{35U=g!t0uWLWk2DKmn$eAebF!Ae$#aKQZq{yurqU!H+@6 z8^7DpckNanhzJOMQR=JIv}*;l*02Qy4wh3cz!ns-e!T9$L+b*?u=y5(g7ZvU5nRqN z4H>>KfPy(ae(ZR@`-pf4iZ!&tPzV!zIxCg(J;7mKzbfG&fCv_k#p1smLDy1dvnl_* zB*D@#V2r~FJ96dfU#C)+rs$!SsH7h-v$eIdI$H;Y7=j`sZKu(#Ugrb8w=(4gJe}8_6nUoq z1Qm-u=!j1jxd}d0D&O?_y6Lx0Dt^-Z1_gbj5#I>-TT%GinN@fZG7MV^Cb7z zW&ay(##FXtfpijuM5yypA<@e|jC0ed!1I;s6m@0MPJAQ+VQFLF>!n!vh?vgrv*CkL zFn(tByHK7lJ$E1=qoFk&<=7yMz*q3QK`LZ>RH7OLYyMwuzd0Nc)Mu%qU}3h|I~7Ol zwO-1%P3krLKFo=H5HdI=NkYJ=;AUdqSvA#@ajLaoVhZ=i=jKKi@)Z^ABgTrvp4ByW zUP86;xY6$iH93jUd7T7hR1HN3Z6acw^eICGi?Q`TB8Fr}K(L%h=EC9y$Ae&VtZ+ z51=?oe)^U`X`S=WI70O6ar~m!>-EymQ6ppv(F=Yf z|2Aj6M*=Y%6a>4>rd}ubGQH@5`T&Z@L}on$9YW#8Ab=au^Tv3c_{xWy9;2+^oE7{z zshE=q_zc?qInHSP)p?D6$Fz-I2XK5aFaL+Aw+f4+>$-NKaSiV7?iSpg;O-jS0t5^0 z?i$=JXn^1r+}+(FxCi-*Jny&nRp;GZ)m5w3oMVi860!KrMs*Qr*P8sc$h4E>Hn@z? zoV;o3e6g!I!3ExsY2L75cU56|lZIuZrFZwCn%6QNop^O70*K;`AZu7&%w^{1lz=>0 zhPf#3EAFUoB+w968%kAz1lo{`FoC^4k$x_du->B*E|o=1TS$sWso5fI@dhB{9j38X zEb*0LxwAz%Cz85Mb}QHCs-~0GEBM*;d6CgwOQ4RQW1l}U+VrV@yM+!HU9=cKE1am_ zNV-YiWHzkXv%XqkM!WwTvehf|cixcE>RWK3q7eNM{3Q*;cSiJ$E#phcnsd@ZJG9vg zWhp`^^!0#6rLKwzD8k^-BfkiVf_gYmL=_*4&F7{+PRPBkyDHJqchbF;9;P4UVnSNKL?(Yq>eM!YE?0CsEI4^KiRJH+M4>VbAV4P zQWI>(zZ!FA2MEu!0v^w;fywTZToc^E_jG3^r5+)WL~Yd$5`~pWL$#*V^L@EJ#WojW z9KppAgY0@w*a2h>E_zhDZq@((uH4&NNUkga1a#xv44w}xpc>3sCE>p}k*%c4Vi`x( z3;7>yOA4@PMIZ*O)4Ul8_Pdln?S@uh5+J%6(;(j7f0(lg@dkWn-*98Y>AN;7#~b;S=DI7U#|xF5^gI|k6l=~{n?C-F{r zt!-)znSQFychv@01*?LCD(H4;!-GFm&Z^7I>slowFnXQIc@63{+lQh zU|2D0ST4BZi2I|YUy!0>xSXx(?F7GIIyc$TeO0f_m+8%ASN~GAZ@;p__y~`?W$Kp5 zIn!cOtbvIkI^AU4{s6sSwGr$x?)L!g;{yffMPPQ`J995P+8y;|QCMQvo^lh6ZK%-l zs=VdhNcNc;v8pqY<2nCfX_yva5Wy-Fk}|Y}aPCJ4$cvx>G~>koEY8AmJne)bUw{hlPw*ieGNASqwd>yd)e4& z?@FCP^giYKiPpe$0@aM9#j>4pBp3q1UFizo{d^Z|Wl}&sFG6p9U={2LS+uJ{C@8K+ zYfVW5aR#4jst%GP)BNoKl!!(uq$IMQMpzYT&&f1DwzYO^$KS5aB5P|9^bGe7rV{n%C1!E>vq{3#i}<-huD-UO zwb1`e!?MBX0l*Q#d48GTIc-&_rBdLA0YAhyTPEzVx~{r<7R^)j(*_Edr!wZzZx>hW zzIPL__JZ_nX1?up^W-|nU#2qYKV8Q9ewSo!IV599_+;?Gc*c_*6gL!COB7}u)ytA+ zV+&a@<0##Oob7pB)|`{l1i`g_`{U~pT2u;~HQR9}tIvC9rE6CdELrDI1-dhdhNuQ+ z(bug+iaCi(NXc3Ev}1N_T15}DpPkB-MR*)mwq|O*!_(Gk2`TC-o-||_SmKA5qaND{%>yl@h}(s5SEfv(&6FTvP=HGNag%F_X7zK9x73;UvJ$9R)*8mL9G)baZ|CC+~CjpvBnMqKA@`3z*G^-b7@t*QTH9FHH(kvh(L zf6+8{kI#6#Dg?w8^l3o3R7;LVO+Qx2NAAy!4H>$rST{}tE&~`j8co+YhykZy^ZK(Y z1dN$b$^m4+PE1~}8uy4{@&X_*@Y}0WyUHo$d9=;*WC=h>4Yxu8Lt_gt=nf!5X zP){0Ocle=^x;qbAQZ(Wl;)AlOaA}?qIQ;%PGbaW|AsA^8JwP}T>6Rp=0HvR*KBW3S zrn=vPFNV8!MT@jiV2_|cqP^Z4z5zbswT&ggV3nbLX{8OYR_a;VT&xuyIJLgYyx)sT zMlMf^zk)TpP)Jfh_bRnVpV|n2>wJ3Ogu(@Y9izX{8XtI;#V99}mubQA7xcUxY7?M{ ztPE2@!I2~>{)C{oQ*Klap??5ZiNAtVPYfdcmE77_I2p3TYyK$BXkE)gKr%h^>bX(5 ziIeAdIQS6)LJUHj9i@Y$9~=upFhm4I08ci&4Ag`$vG$2{Po`$&73EkI1R_H|rknwZ~-^ho3SjwEY^`4YZjen`jZ)+YN0A2xOBAe0m$>k+x+kz$T=-}9 z-1lAm1EP_UB$1hPfU|lNzes>S?FeAC4$T$iqA{tfLF_JurlHbcuOxSL165~G+{Mv= zYj9t