From c10d56c0f82c3cdbef8c37d9dfcddc5172c0737c Mon Sep 17 00:00:00 2001 From: paladin Date: Fri, 28 Aug 2026 03:08:00 +0100 Subject: [PATCH] Refactored Table into Map for shared use in Compiler and VM. Refactored and modified direct equality for Values. Cleaned a core dump file. Builds and runs. --- Cargo.toml | 1 + mars-49d70575ae6f08.core | Bin 16990208 -> 0 bytes src/lib.rs | 564 +++++++++++++++++++++++++++++---------- src/table.rs | 537 +++++++++++++++++++++---------------- src/tests/script.lua | 2 +- 5 files changed, 730 insertions(+), 374 deletions(-) delete mode 100644 mars-49d70575ae6f08.core diff --git a/Cargo.toml b/Cargo.toml index a734020..55a8c8a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2024" [features] +bighash = [] vector3 = ["dep:glam"] messages = [] assertions = [] diff --git a/mars-49d70575ae6f08.core b/mars-49d70575ae6f08.core deleted file mode 100644 index 40e21fd024dd78054d29a7fff801ed5c9c83b856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16990208 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 zm#Uh*#`^u`(31cOkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ 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 zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNCfa1&@|*?aH2?%}p7>mfjZ009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5;&+l0U{ciA7g=7OfV`3>D&HxKm9 z;PspH;O6^fy=2!hlYsyM0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FqgX*t3`0Hew(Qz?7V$Tkye1B`U!cMC)gs zJ&X$RLARs~m5>giR1zSZxfljkz=i^hd?(>wk~8E-Jq{v3fB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2%JS=d-(o*)7tNMXX(~j_FG@|ezE=exBnsA&*e7t`Ma8*c~#rL?c>+$e6TP_uHRJs zyIz0)k8)(aL)M$i?LN;}2VR(?*4KF+dj09d96A4(`x%|vWA3l+cW{oZf6RWPb9>73 z)%_06QS~qSg^$kdW1cVjjn0w%4t0Msxqa&UtNC*|a{jK~kDvSc%JCw%FMWJd_dAm# z$5&PVYhPbEGVkm2w=lPFz5cIr{T^h$R=)?CFEiKIkXHf(2oNAZfB*pk1PBlyK!5-N z0t5&UAV7csf!77X|0}Ph;N0$d|9yci z%#rJ-tT#Hh`@G+a1RR{>Mg7saJ@oS(>V9T&Bv%~(@aoOR?1zzwN)}PHgUB8;7ZJh;9giAeSH+t+vt~@zT{lB!1@R!2O-N$Y zxEepAurTat2L$_=<3uGFFMANd+XO>2OTZNbL4>ut>-{I&Z@RXpdwM24onOJs>-SOb zz5lPOX8NPLiU0uu1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 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 K=?T2C1^xjL-e#2m diff --git a/src/lib.rs b/src/lib.rs index 2a18593..195bd8e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,8 +18,6 @@ struct Reader<'a> { white: bool, // Is the previous 'thing' whitespace? } -type Error = String; - pub struct LoadError(String, Piece<()>); // Any error returned by a machine loading code impl LoadError { @@ -52,6 +50,9 @@ impl LoadError { } roll } + fn from_runtime(piece: Piece<()>, error: RunError) -> LoadError { + LoadError(error.0,piece) + } } impl std::fmt::Debug for LoadError { @@ -1233,8 +1234,9 @@ use std::any::Any; use std::cmp::PartialEq; use std::rc::Rc; -struct Traversal { +struct Traversal<'a> { // A 'cursor' of where we are in assumed execution + machine: &'a mut Machine, contexts: Vec, // Stack of function prototypes being compiled } @@ -1242,9 +1244,40 @@ struct Context { // Everything known about a closure at a time scopes: Vec, vararg: Option>>, + constants: Map, // map some constant value to an index for not repeating constants prototype: Prototype, } +#[derive(Clone, Debug)] +struct ConstantEntry(Value,Index); + +impl Equivalent for ConstantEntry { + fn matches(&self, other: &Self) -> bool { + self.0 == other.0 + } +} + +impl Equivalent for ConstantEntry { + fn matches(&self, other: &Value) -> bool { + self.0 == *other + } +} + +impl Hashes for ConstantEntry { + fn hashed(&self) -> Hashed { + self.0.hashed() + } +} + +impl TableEntry for ConstantEntry { + fn new_vacant() -> Self { + ConstantEntry(Value::Nil,0) + } + fn is_vacant(&self) -> bool { + matches!(self.0,Value::Nil) + } +} + #[derive(Clone, Debug)] enum BlindJump { Break(usize), @@ -1261,7 +1294,7 @@ struct Scope { upvalue: bool, } -impl Traversal { +impl Traversal<'_> { fn compile(&mut self, it: &T) -> Result<(), LoadError> where T: Compile, @@ -1333,20 +1366,29 @@ impl Traversal { } fn push_constant(&mut self, it: Value) -> Index { // todo: constants need pieces too!!! - let constants = &mut self.contexts.last_mut().unwrap().prototype.constants; - let index; - if let Some(position) = constants.iter().position(|found| it.eq(found)) { - index = position; + // don't use constants that already exist + if let Some(entry) = &mut self.contexts.last_mut().unwrap().constants.get_table(it.clone()) { + entry.1 } else { - index = constants.len(); + let index = { + let constants = &mut self.contexts.last_mut().unwrap().prototype.constants; + constants.push(it.clone()); + constants.len() - 1 + }.try_into().unwrap(); + self.contexts.last_mut().unwrap().constants.set_table(ConstantEntry(it,index)); + index } - constants.push(it); - index as Index } fn push_literal(&mut self, it: Value, piece: Piece<()>) { let constant = self.push_constant(it); self.push_code(piece.swap(Code::Constant(constant))); } + fn push_string(&mut self, string: String, piece: Piece<()>) -> Result<(),LoadError> { + match self.machine.new_string(string.clone().as_str()) { + Err(error) => Err(LoadError(error.0,piece)), + Ok(string) => Ok(self.push_literal(string, piece)), + } + } fn new_scope(&mut self) { let context = &mut self.contexts.last_mut().unwrap(); let scopes = &mut context.scopes; @@ -1449,6 +1491,7 @@ fn compile_function( pieces: vec![], code: vec![], }, + constants: Map::new(), }); traversal.compile(&this.it.2.inner_ref())?; // compile the block let prototype = traversal.close_context()?; @@ -1547,7 +1590,7 @@ fn compile_identifier( } } // break 'search avoids this use of the _G table - traversal.push_literal(name.it.clone().into(), name.unit()); + traversal.push_string(name.it.clone(),name.unit())?; traversal.push_code(name.swap(Code::UpvalueGet(0))); traversal.push_code(name.swap(match access { Access::Set => Code::TableSet, @@ -1625,7 +1668,7 @@ impl Compile for Piece<&Call> { traversal.compile(&self.it.0.as_ref().inner_ref())?; // call prefix match &self.it.1 { Some(name) => { - traversal.push_literal(name.it.0.clone().into(), name.unit()); + traversal.push_string(name.it.0.clone(),name.unit())?; traversal.push_code(name.swap(Code::TableGet)); } None => {} @@ -1759,7 +1802,7 @@ impl Compile for Piece<&Expression> { traversal.push_literal(Value::Number(number), self.unit()); } Expression::String(string) => { - traversal.push_literal(string.clone().into(), self.unit()); + traversal.push_string(string.clone(),self.unit())?; } Expression::VarArg(vararg) => { traversal.compile(&self.swap(vararg))?; @@ -2121,10 +2164,10 @@ impl Compile for Piece<&Block> { while let Some(name) = names.next() { if !names.peek().is_some() { compile_function(&self.swap(function), traversal, is_method)?; - traversal.push_literal(name.it.0.clone().into(), name.unit()); + traversal.push_string(name.it.0.clone(),name.unit())?; traversal.push_code(name.unit().end().swap(Code::TableSet)); } else { - traversal.push_literal(name.it.0.clone().into(), name.unit()); + traversal.push_string(name.it.0.clone(),name.unit())?; traversal.push_code(name.unit().end().swap(Code::TableGet)); } } @@ -2174,10 +2217,10 @@ impl Compile for Chunk { // MACHINE -use crate::table::{Hashed, Table}; +use crate::table::{Equivalent, Hashed, Hashes, Map, Table, TableEntry}; // Rust function to call -struct Native(dyn Fn(&mut Machine, &mut Needle) -> Result<(), RunError>); // A native function in Rust +struct Native(fn(&mut Machine, &mut Needle, usize) -> Result<(), RunError>); // A native function in Rust #[derive(Clone, Debug, Copy, PartialEq)] enum Reference { @@ -2303,7 +2346,8 @@ impl std::fmt::Debug for Callable { } } -struct RunError(String); +#[derive(Debug)] +pub struct RunError(String); pub trait Object: std::fmt::Debug { fn meta_string(&mut self) -> Result { @@ -2316,109 +2360,15 @@ pub trait Object: std::fmt::Debug { Err(RunError(format!("Cannot set index in {:?}", &self))) } fn meta_index(&mut self, index: Value) -> Result { - Ok(Value::Nil) + Err(RunError(format!("Cannot get index in {:?}", &self))) } fn meta_eq(&mut self, other: &Value) -> Result { Ok(Value::Nil) } } -impl From for Value { - fn from(string: String) -> Self { - let mut hasher = DefaultHasher::new(); - string.hash(&mut hasher); - Value::String(Rc::from(string.as_str()), hasher.finish() as Hashed) - } -} - impl Value { - fn number(&mut self) -> Result { - match self { - integer @ Value::Integer(_) => Ok(integer.clone()), - number @ Value::Number(_) => Ok(number.clone()), - Value::Object(object) => object.borrow_mut().0.meta_number(), - Value::Table(table) => { - let mut table = table.borrow_mut(); - if let Some(_metatable) = &table.meta { - Err(RunError("Metatables unimplemented".to_string())) - } else { - Ok(Value::Nil) - } - } - _ => Ok(Value::Nil), - } - } - fn string(&mut self) -> Result { - Ok(match self { - Value::Nil => "nil".to_string(), - Value::Bool(bool) => format!("{}", bool), - Value::Integer(integer) => format!("{}", integer), - Value::Number(number) => format!("{}", number), - it @ Value::String(..) => return Ok(it.clone()), - #[cfg(feature = "vector3")] - Value::Vector(vector) => format!("{}", vector), - Value::Table(table) => { - let mut table = table.borrow_mut(); - if let Some(_metatable) = &table.meta { - return Err(RunError("Metatables unimplemented".to_string())); - } else { - "{...}".to_string() - } - } - Value::Object(object) => match object.borrow_mut().0.meta_string()? { - string @ Value::String(..) => return Ok(string), - it => return Err(RunError(format!("Expected string but got {:?}", it))), - }, - Value::Function(callable) => format!("{:?}", callable), - } - .into()) - } - fn set(&mut self, index: Value, item: Value) -> Result<(), RunError> { - match self { - Value::Nil => Err(RunError("Cannot index nil".to_string())), - Value::Bool(bool) => Err(RunError(format!("Cannot index {:?}", bool))), - Value::Integer(_integer) => Err(RunError("Integer index unimplemented".to_string())), - Value::Number(_number) => Err(RunError("Number index unimplemented".to_string())), - Value::String(_string, _hash) => { - Err(RunError("String index unimplemented".to_string())) - } - #[cfg(feature = "vector3")] - Value::Vector(_vector) => Err(RunError("Vector index unimplemented".to_string())), - Value::Table(table) => { - let mut table = table.borrow_mut(); - if let Some(_metatable) = &table.meta { - Err(RunError("Metatables unimplemented".to_string())) - } else { - table.set(index, item) - } - } - Value::Object(object) => object.borrow_mut().0.meta_new_index(index, item), - Value::Function(_callable) => Err(RunError("Function index unimplemented".to_string())), - } - } - fn get(&mut self, index: Value) -> Result { - match self { - Value::Nil => Err(RunError("Cannot index nil".to_string())), - Value::Bool(bool) => Err(RunError(format!("Cannot index {:?}", bool))), - Value::Integer(_integer) => Err(RunError("Integer index unimplemented".to_string())), - Value::Number(_number) => Err(RunError("Number index unimplemented".to_string())), - Value::String(_string, _hash) => { - Err(RunError("String index unimplemented".to_string())) - } - #[cfg(feature = "vector3")] - Value::Vector(_vector) => Err(RunError("Vector index unimplemented".to_string())), - Value::Table(table) => { - let table = table.borrow_mut(); - if let Some(_metatable) = &table.meta { - Err(RunError("Metatables unimplemented".to_string())) - } else { - table.get(index) - } - } - Value::Object(object) => object.borrow_mut().0.meta_index(index), - Value::Function(_callable) => Err(RunError("Function index unimplemented".to_string())), - } - } + } pub trait Userdata: Traverse + std::fmt::Debug + Any + Object {} @@ -2447,15 +2397,63 @@ struct Phrase { } // Any value in the language +const SHORT_STRING_LEN: usize = 40; +#[derive(Clone, Debug)] +struct CachedString(Rc, Hashed); +#[derive(Clone, Debug)] +struct CachedStringEntry(Option); +impl Hashes for &str { + fn hashed(&self) -> Hashed { + let mut hasher = DefaultHasher::new(); + self[..self.len().min(6)].hash(&mut hasher); + hasher.finish() as Hashed + } +} + +impl Hashes for CachedStringEntry { + fn hashed(&self) -> Hashed { + self.0.as_ref().unwrap().0.deref().hashed() + } +} + +impl Equivalent for CachedStringEntry { // redundant? + fn matches(&self, other: &Self) -> bool { + match self.0 { + Some(ref entry) => match other.0 { + Some(ref other) => entry.0.deref() == other.0.deref(), + None => false, + }, + None => false, + } + } +} + +impl TableEntry for CachedStringEntry { + fn new_vacant() -> Self { + CachedStringEntry(None) + } + fn is_vacant(&self) -> bool { + self.0.is_none() + } +} + +impl Equivalent<&str> for CachedStringEntry { + fn matches(&self, string: &&str) -> bool { + match self.0 { + Some(ref entry) => entry.0.deref() == *string, + None => false + } + } +} + const PHRASE_LEN: usize = 16; #[derive(Debug, Clone)] -// 120 - 8 - 64 -> 56 pub enum Value { - // 32 bytes!!! Nil, // Empty value Bool(bool), Number(f64), Integer(u64), // 64 maybe we should use signed integers... + CachedString(CachedString), String(Rc, Hashed), Table(Gc), Object(Gc), @@ -2464,6 +2462,78 @@ pub enum Value { Vector(Vec3), } +impl Value { + fn bool(&mut self) -> bool { + match self { + Value::Nil => false, + Value::Bool(false) => false, + _ => true, + } + } +} + +impl PartialEq for Value { + fn eq(&self, other: &Self) -> bool { + match self { + Value::Nil => match other { + Value::Nil => true, + _ => false, + } + Value::Bool(this) => match other { + Value::Bool(other) => this == other, + _ => false, + } + Value::Number(this) => match other { + Value::Number(other) => this == other, + Value::Integer(other) => *this == *other as f64, + _ => false, + } + Value::Integer(this) => match other { + Value::Number(other) => *this as f64 == *other, // are these conversions ok? + Value::Integer(other) => this == other, + _ => false, + } + Value::String(string, hash) => match other { + Value::CachedString(other) => + if *hash == other.1 { + other.0.deref() == string.deref() + } else { + false + } + Value::String(other_string, other_hash) => + if hash == other_hash { + string == other_string + } else { + false + } + _ => false + } + Value::CachedString(string) => match other { + Value::CachedString(other) => other.0 == string.0, // pointer equality + Value::String(other_string, other_hash) => + if string.1 == *other_hash { + string.0.deref() == other_string.deref() + } else { + false + } + _ => false + } + Value::Table(this) => match other { + Value::Table(other) => other == this, + _ => false + } + Value::Object(this) => match other { + Value::Object(other) => other == this, + _ => false + } + Value::Function(this) => match other { + Value::Function(other) => other == this, + _ => false + } + } + } +} + impl Traverse for Value { fn traverse(&self) { match self { @@ -2491,6 +2561,7 @@ pub struct Frame { pub struct Machine { global: Gc
, allocator: Allocator, + cache: Map // todo: better to use a generic version of Map } /* @@ -2570,15 +2641,181 @@ impl Code { } impl Machine { - fn load(&mut self, source: &str) -> Result { + fn new_string(&mut self, string: &str) -> Result { + if string.len() < SHORT_STRING_LEN { + let existing = self.cache.get_table(string); + match existing { + Some(ref entry) => { + Ok(Value::CachedString(entry.0.clone().unwrap())) + }, + None => { + let cached = CachedString(Rc::from(string),string.hashed()); + self.cache.set_table(CachedStringEntry(Some(cached.clone()))); + Ok(Value::CachedString(cached)) + } + } + } else { + Ok(Value::String(Rc::from(string), string.hashed())) + } + } + fn try_number(&mut self, value: &mut Value) -> Result { + match value { + integer @ Value::Integer(_) => Ok(integer.clone()), + number @ Value::Number(_) => Ok(number.clone()), + Value::Object(object) => object.borrow_mut().0.meta_number(), + Value::Table(table) => { + let mut table = table.borrow_mut(); + if let Some(_metatable) = &table.meta { + Err(RunError("Metatables unimplemented".to_string())) + } else { + Ok(Value::Nil) + } + } + _ => Ok(Value::Nil), + } + } + /*fn try_string(&mut self, machine: &mut Machine) -> Result { + Ok(match self { + Value::Nil => machine.new_string("nil".to_string().as_str())?, + Value::Bool(bool) => machine.new_string(format!("{}", bool).as_str())?, + Value::Integer(integer) => machine.new_string(format!("{}", integer).as_str())?, + Value::Number(number) => machine.new_string(format!("{}", number).as_str())?, + it @ Value::String(..) => return Ok(it.clone()), + it @ Value::CachedString(..) => return Ok(it.clone()), + #[cfg(feature = "vector3")] + Value::Vector(vector) => format!("{}", vector), + Value::Table(table) => { + let mut table = table.borrow_mut(); + if let Some(_metatable) = &table.meta { + return Err(RunError("Metatables unimplemented".to_string())); + } else { + machine.new_string("{...}".to_string().as_str())? + } + } + Value::Object(object) => match object.borrow_mut().0.meta_string()? { + string @ Value::String(..) => return Ok(string), + it => return Err(RunError(format!("Expected string but got {:?}", it))), + }, + Value::Function(callable) => machine.new_string(format!("{:?}", callable).as_str())?, + }) + }*/ + fn set(&mut self, subject: Value, index: Value, value: Value) -> Result<(), RunError> { + match subject { + Value::Nil => Err(RunError("Cannot get from nil".to_string())), + Value::Bool(bool) => Err(RunError(format!("Cannot index {:?}", bool))), + Value::Integer(_integer) => Err(RunError("Integer index unimplemented".to_string())), + Value::Number(_number) => Err(RunError("Number index unimplemented".to_string())), + Value::String(.. ) | Value::CachedString(.. ) => { + Err(RunError("String index unimplemented".to_string())) + } + #[cfg(feature = "vector3")] + Value::Vector(_vector) => Err(RunError("Vector index unimplemented".to_string())), + Value::Table(mut table) => { + let mut table = table.borrow_mut(); + if let Some(_metatable) = &table.meta { + Err(RunError("Metatables unimplemented".to_string())) + } else { + table.set(index, value) + } + } + Value::Object(mut object) => object.borrow_mut().0.meta_new_index(index, value), + Value::Function(_callable) => Err(RunError("Function index unimplemented".to_string())), + } + } + fn get(&mut self, subject: Value, index: Value) -> Result { + match subject { + Value::Nil => Err(RunError("Cannot set to nil".to_string())), + Value::Bool(bool) => Err(RunError(format!("Cannot index {:?}", bool))), + Value::Integer(_integer) => Err(RunError("Integer index unimplemented".to_string())), + Value::Number(_number) => Err(RunError("Number index unimplemented".to_string())), + Value::String(..) | Value::CachedString(.. ) => { + Err(RunError("String index unimplemented".to_string())) + } + #[cfg(feature = "vector3")] + Value::Vector(_vector) => Err(RunError("Vector index unimplemented".to_string())), + Value::Table(mut table) => { + let mut table = table.borrow_mut(); + if let Some(_metatable) = &table.meta { + Err(RunError("Metatables unimplemented".to_string())) + } else { + table.get(index.clone()) + } + } + Value::Object(mut object) => object.borrow_mut().0.meta_index(index.clone()), + Value::Function(_callable) => Err(RunError("Function index unimplemented".to_string())), + } + } + /*fn equal(&mut self, lhs: &mut Value, rhs: &mut Value) -> Result { // with respect to metamethods + Ok(match lhs { + Value::Nil => match rhs { + Value::Nil => true, + Value::Object(object) => object.borrow_mut().0.meta_eq(rhs)?.bool(), + _ => false, + } + Value::Bool(this) => match rhs { + Value::Bool(other) => this == other, + _ => false, + } + Value::Number(this) => match rhs { + Value::Number(other) => this == other, + Value::Integer(other) => *this == *other as f64, + _ => false, + } + Value::Integer(this) => match rhs { + Value::Number(other) => *this as f64 == *other, // are these conversions ok? + Value::Integer(other) => this == other, + _ => false, + } + Value::String(string, hash) => match rhs { + Value::CachedString(other) => + if *hash == other.1 { + other.0.deref() == (*string).deref() + } else { + false + } + Value::String(other_string, other_hash) => + if hash == other_hash { + string == other_string + } else { + false + } + _ => false + } + Value::CachedString(string) => match rhs { + Value::CachedString(other) => other.0 == string.0, // pointer equality + Value::String(other_string, other_hash) => { + if string.1 == *other_hash { + string.0.deref() == (*other_string).deref() + } else { + false + } + } + _ => false + } + Value::Table(this) => match rhs { + Value::Table(other) => other == this, + _ => false + } + Value::Object(this) => match rhs { + Value::Object(other) => other == this, + _ => false + } + Value::Function(this) => match rhs { + Value::Function(other) => other == this, + _ => false + } + }) + }*/ + fn load(&mut self, source: &str) -> Result { let parsed = match parse(source) { Ok(parsed) => parsed, - Err(error) => return Err(error.msg(source)), + Err(error) => return Err(MarsError(error.msg(source))), }; println!("{:?}", parsed); let mut traversal = Traversal { + machine: self, contexts: vec![Context { scopes: vec![Scope { // Dummy initial scope so the rest can start from index = 0 @@ -2589,6 +2826,7 @@ impl Machine { upvalue: false, }], vararg: Some(Piece::::null().swap(None)), + constants: Map::new(), prototype: Prototype { args: 0, vararg: true, @@ -2603,12 +2841,12 @@ impl Machine { match parsed.compile(&mut traversal) { Ok(compiled) => compiled, - Err(error) => return Err(error.msg(source)), + Err(error) => return Err(MarsError(error.msg(source))), }; let prototype = match traversal.close_context() { Ok(compiled) => compiled, - Err(error) => return Err(error.msg(source)), + Err(error) => return Err(MarsError(error.msg(source))), }; let global = self.global.clone(); @@ -2634,7 +2872,7 @@ impl Machine { Value::Function(callable) => { match callable { Callable::Rust(function) => { - function.0(machine, needle)?; + function.0(machine, needle, offset + index as usize + 1)?; Ok(frame) // nothing changes } Callable::Mars(closure) => { @@ -2655,7 +2893,7 @@ impl Machine { } _ => { return Err(RunError( - "Calling non-function types are not yet implemented".to_string(), + "Calling non-function types are unimplemented".to_string(), )); } } @@ -2671,21 +2909,32 @@ impl Machine { if needle.stack.len() > 65536 { return Err(RunError("Soft stack limit of 65536 reached".to_string())); } - let code = frame.closure.borrow_mut().prototype.code[frame.counter]; + let code = frame.closure.borrow_mut().prototype.code.get(frame.counter).cloned(); + let code = match code { + Some(code) => code, + None => { + if let Some(upper) = needle.frames.pop() { + frame = upper; + } else { + break; + } + continue; + } + }; match code { Code::Comment(number) => { eprintln!("{}", number) } Code::TableSet => { - let value = needle.pop(); + let table = needle.pop(); let index = needle.pop(); - let mut table = needle.pop(); - table.set(index, value)?; + let value = needle.pop(); + self.set(table, index, value)?; } Code::TableGet => { + let table = needle.pop(); let index = needle.pop(); - let mut table = needle.pop(); - needle.push(table.get(index)?); + needle.push(self.get(table, index)?); } Code::TableInsert(index) => { match needle.pop() { @@ -2758,9 +3007,10 @@ impl Machine { #[cfg(feature = "assertions")] assert_ne!(offset, 0); jump(&mut frame, offset); + continue; // Skip the extra offset++ } Code::Skip => { - if matches!(needle.pop(), Value::Nil | Value::Bool(false)) { + if needle.pop().bool() { frame.counter += 1; } } @@ -2774,6 +3024,7 @@ impl Machine { } else { break; } + continue; // todo: is this needed? } Code::Binary(op) => { return Err(RunError( @@ -2837,9 +3088,9 @@ impl Machine { let init = len - 2; let limit = len - 1; let step = len; - let init_value = needle.stack[init].value.number()?; - let limit_value = needle.stack[limit].value.number()?; - let step_value = needle.stack[step].value.number()?; + let init_value = self.try_number(&mut needle.stack[init].value)?; + let limit_value = self.try_number(&mut needle.stack[limit].value)?; + let step_value = self.try_number(&mut needle.stack[step].value)?; if matches!(init_value, Value::Integer(_)) && matches!(limit_value, Value::Integer(_)) && matches!(step_value, Value::Integer(_)) @@ -2874,9 +3125,9 @@ impl Machine { let init_index = len - 2; let limit_index = len - 1; let step_index = len; - let init_value = needle.stack[init_index].value.number()?; - let limit_value = needle.stack[limit_index].value.number()?; - let step_value = needle.stack[step_index].value.number()?; + let init_value = self.try_number(&mut needle.stack[init_index].value)?; + let limit_value = self.try_number(&mut needle.stack[limit_index].value)?; + let step_value = self.try_number(&mut needle.stack[step_index].value)?; match init_value { Value::Integer(init) => { let step = match step_value { @@ -2953,25 +3204,48 @@ impl Machine { }; self.dispatch(&mut needle) } - fn new() -> Machine { + fn new() -> Result { let mut allocator = Allocator::new(); - Machine { + let mut machine = Machine { global: allocator.alloc(Table::new()), allocator, - } + cache: Map::new(), + }; + let string = machine.new_string("print").unwrap(); + machine.global.borrow_mut().set( + string, + Value::Function(Callable::Rust(Rc::from(Native(|machine: &mut Machine, needle: &mut Needle, index: usize| -> Result<(), RunError> { + for i in index..needle.stack.len() { + println!("{:?}",needle.pop()) + } + Ok(()) + })))) + )?; + Ok(machine) } } +#[derive(Debug, Clone)] +pub struct MarsError(String); + #[cfg(test)] mod tests { use super::*; #[test] fn simple() { - let mut machine = Machine::new(); - let result = machine.load(include_str!("tests/script.lua")); - match result { - Err(error) => println!("{}", error), - Ok(result) => println!("{:?}", result), - } + let mut machine = match Machine::new() { + Err(error) => panic!("{:?}",error), + Ok(machine) => machine, + }; + let closure = match machine.load(include_str!("tests/script.lua")) { + Err(error) => panic!("{:?}",error), + Ok(Callable::Mars(closure)) => closure, + _ => panic!() + }; + println!("{:?}",closure.borrow().prototype); + match machine.enter(closure) { + Err(error) => panic!("{:?}",error), + _ => {} + }; } } diff --git a/src/table.rs b/src/table.rs index 6df39b0..c5ae287 100644 --- a/src/table.rs +++ b/src/table.rs @@ -1,5 +1,5 @@ use crate::gc::{Gc, Traverse}; -use crate::{Callable, RunError, Value}; +use crate::{Callable, Object, RunError, Value}; use std::rc::Rc; // I've already spent 2 months on this interpreter, and I'm tired, so I've cut a few corners... @@ -24,57 +24,298 @@ Notes: */ type Displacement = u8; -pub type Hashed = usize; + +#[cfg(feature="bighash")] +pub type Hashed = u64; +#[cfg(not(feature="bighash"))] +pub type Hashed = u32; + +pub trait Equivalent: Sized { + fn matches(&self, other: &T) -> bool; +} + +impl Equivalent for T where T: PartialEq { + fn matches(&self, other: &T) -> bool { + self == other + } +} + +pub trait Hashes { + fn hashed(&self) -> Hashed; +} + +pub trait TableEntry: Equivalent + Hashes { + fn new_vacant() -> Self; + fn is_vacant(&self) -> bool; +} #[derive(Debug, Clone)] -struct Entry { +struct KeyValue { index: Value, - item: Value, + value: Value, +} + +impl Equivalent for KeyValue { + fn matches(&self, other: &Self) -> bool { + self.index == other.index + } +} + +impl Hashes for KeyValue { + fn hashed(&self) -> Hashed { + self.index.hashed() + } +} + +impl TableEntry for KeyValue { + fn new_vacant() -> Self { + KeyValue { + index: Value::Nil, + value: Value::Nil, + } + } + fn is_vacant(&self) -> bool { + matches!(self,KeyValue { index: Value::Nil, .. }) + } +} + +#[derive(Debug, Clone)] +struct Entry { + entry: E, home: usize, displacement: Displacement, } -impl Default for Entry { - fn default() -> Self { - Entry { - index: Value::Nil, - item: Value::Nil, +#[derive(Clone, Debug)] +pub struct Map { // default representing vacancy! + map: Vec>, + map_bounds: std::ops::Range, + map_count: usize, // number of elements in table +} + +impl Map { + pub(crate) fn string_cache() { // todo: this isn't a clean way, maybe make a generic Map and use a specific one for the cache and the rest of the language + + } + fn exchange_table(&mut self, len: usize) { + let old = std::mem::replace(&mut self.map, vec![Entry { + entry: E::new_vacant(), home: 0, displacement: 0, + }; len]); + for Entry { entry, .. } in old { + if entry.is_vacant() { + self.set_table(entry) + } + } + } + pub fn resize_table(&mut self, len: usize) { + self.exchange_table(len.max(self.map_count + (self.map_count / 3))); + self.map_bounds = 0..self.table_upper(); + } + fn table_upper(&self) -> usize { + (self.map.len() / 4) * 3 + } + fn table_lower(&self) -> usize { + self.map.len() / 3 + } + fn ensure_table(&mut self) { + if self.map_count + 1 > self.table_upper() { + // free space is short + self.exchange_table((self.map.len() + 4) * 2); + } else if self.map_count < self.table_lower() { + // too much free space + self.exchange_table(self.map.len() / 2) + } + self.map_bounds = self.table_lower()..self.table_upper() + } + pub(crate) fn set_table(&mut self, entry: E) { + #[cfg(feature = "assertions")] + assert!(!entry.is_vacant()); + if !self.map_bounds.contains(&(self.map_count + 1)) { + // make sure the table is appropriately sized + self.ensure_table(); + } + let range = self.map.len(); + let home = entry.hashed() as usize % range; + if self.map[home].entry.is_vacant() { + // attempt to place it directly in an empty space + // INSERT + self.map[home].home = home; + self.map[home].entry = entry; + self.map[home].displacement = self.map[home].displacement.max(0); + self.map_count += 1; + } else if self.map[home].entry.matches(&entry) { + // attempt to replace it directly + // REPLACE + self.map[home].entry = entry; // home.item.soft_drop() + } else { + // attempt to replace it in a collided neighbour location + for i in 1..self.map[home].displacement + 1 { + let neighbour = &mut self.map[(home + i as usize) % range]; // todo: is mod expensive? + if neighbour.entry.matches(&entry) { + // found where it was displaced to + // REPLACE + neighbour.entry = entry; + return; + } + } + // at this point it must be added, probe to place in an empty space + for j in self.map[home].displacement + 1..Displacement::MAX - 1 { + let neighbour = &mut self.map[(home + j as usize) % range]; + if neighbour.entry.is_vacant() { + // new empty slot hooray! + // INSERT + neighbour.entry = entry; + neighbour.home = home; + self.map[home].displacement = j; + self.map_count += 1; + return; + } + } + // impossible but this still needs to be complete + #[cfg(feature = "messages")] + eprintln!("Large table collision, are the hashes ok?\n\tBrute-force probing..."); + let mut free: Option = None; + for k in 0..self.map.len() { + let neighbour = &mut self.map[k]; + if neighbour.entry.is_vacant() && free.is_none() { + free = Some(k); + } else if neighbour.entry.matches(&entry) { + // REPLACE + neighbour.entry = entry; + return; + } + } + if let Some(k) = free { + // INSERT + self.map[k].home = home; + self.map[k].entry = entry; + self.map[home].displacement = Displacement::MAX; + self.map_count += 1; + return; + } + // must resize + #[cfg(feature = "messages")] + eprintln!("\n\tResizing..."); + self.resize_table((self.map.len() + 4) * 2); + self.set_table(entry); + } + } + pub(crate) fn rem_table(&mut self, index: K) where E: Equivalent, K: Hashes { + if self.map.len() == 0 { + return; + } + let range = self.map.len(); + let home = index.hashed() as usize % range; + if self.map[home].entry.matches(&index) { + self.map[home].entry = E::new_vacant(); + self.map_count -= 1; + } else { + if self.map[home].displacement != Displacement::MAX { + let mut largest = 0; + for i in 1..self.map[home].displacement { + let neighbour = &mut self.map[(home + i as usize) % range]; + if neighbour.entry.matches(&index) { + neighbour.entry = E::new_vacant(); + self.map_count -= 1; + if i == self.map[home].displacement { + self.map[home].displacement = largest + } + return; + } else if !neighbour.entry.is_vacant() && neighbour.home == home { + largest = i; + } + } + } else { + let mut largest = 0; + let mut finished = false; // what + for k in 0..self.map.len() { + let neighbour = &mut self.map[k]; + if neighbour.entry.matches(&index) { + neighbour.entry = E::new_vacant(); + self.map_count -= 1; + #[cfg(feature = "assertions")] + assert!(!finished); + finished = true; + } + if neighbour.home == home && !neighbour.entry.is_vacant() { + largest = largest.max(if k < home { + k + self.map.len() - home - 1 // ? + } else { + k - home + }) + } + } + self.map[home].displacement = if largest > Displacement::MAX as usize { + Displacement::MAX + } else { + largest as Displacement + } + } + } + } + pub(crate) fn get_table(&mut self, index: K) -> Option<&E> + where E: Equivalent, K: Hashes { + if self.map.len() == 0 { + return None + } + let location = index.hashed() as usize % self.map.len(); + let home = &self.map[location]; + if home.entry.matches(&index) { + Some(&home.entry) + } else { + for i in 1..home.displacement as usize { + let neighbour = &self.map[location + i]; + if neighbour.entry.matches(&index) { + return Some(&neighbour.entry); + } + } + None + } + } + pub(crate) fn new() -> Map { + Map { + map: Vec::new(), + map_count: 0, + map_bounds: (0..0).into(), } } } -pub fn hash(value: &Value) -> Hashed { - match value { - Value::Nil => 0, - Value::Bool(boolean) => { - if *boolean { - 1 - } else { - 0 +impl Hashes for Value { + fn hashed(&self) -> Hashed { + match self { + Value::Nil => 0, + Value::Bool(boolean) => { + if *boolean { + 1 + } else { + 0 + } } - } - Value::String(_string, hash) => *hash, - Value::Function(callable) => match callable { - Callable::Rust(native) => Rc::as_ptr(native).addr(), - Callable::Mars(closure) => closure.addr(), - }, - Value::Integer(integer) => *integer as usize, - Value::Number(number) => { - if number.is_nan() { - 0 - } else { - number.to_bits() as usize + Value::CachedString(cached) => cached.1, + Value::String(_string, hash) => *hash, + Value::Function(callable) => match callable { + Callable::Rust(native) => Rc::as_ptr(native).addr() as Hashed, + Callable::Mars(closure) => closure.addr() as Hashed, + }, + Value::Integer(integer) => *integer as Hashed, + Value::Number(number) => { + if number.is_nan() { + 0 + } else { + number.to_bits() as Hashed + } + } + Value::Table(table) => table.addr() as Hashed, + Value::Object(object) => object.addr() as Hashed, + #[cfg(feature = "vector3")] + Value::Vector(vec) => { + let mut hasher = DefaultHasher::new(); + vec.as_u64vec3().hash(&mut hasher); + hasher.finish() as usize } - } - Value::Table(table) => table.addr(), - Value::Object(object) => object.addr(), - #[cfg(feature = "vector3")] - Value::Vector(vec) => { - let mut hasher = DefaultHasher::new(); - vec.as_u64vec3().hash(&mut hasher); - hasher.finish() as usize } } } @@ -82,19 +323,17 @@ pub fn hash(value: &Value) -> Hashed { // todo: displaced items don't ever get shuffled closer to their homes unless the table is resized #[derive(Debug, Clone)] pub struct Table { - table: Vec, + table: Map, array: Vec, - table_bounds: std::ops::Range, - table_count: usize, // number of elements in table pub meta: Option>, } impl Traverse for Table { fn traverse(&self) { - for Entry { index, item, .. } in self.table.iter() { - if !matches!(index, Value::Nil) { - index.traverse(); - item.traverse(); + for Entry { entry, .. } in self.table.map.iter() { + if !entry.is_vacant() { + entry.index.traverse(); + entry.value.traverse(); } } for item in self.array.iter() { @@ -103,174 +342,21 @@ impl Traverse for Table { } } +impl Equivalent for KeyValue { + fn matches(&self, other: &Value) -> bool { + self.index == *other + } +} + impl Table { - fn exchange_table(&mut self, len: usize) { - let old = std::mem::replace(&mut self.table, vec![Entry::default(); len]); - for Entry { index, item, .. } in old { - if index != Value::Nil { - self.set_table(index, item) - } - } - } - pub fn resize_table(&mut self, len: usize) { - self.exchange_table(len.max(self.table_count + (self.table_count / 3))); - self.table_bounds = 0..self.table_upper(); - } pub fn resize_array(&mut self, len: usize) { self.array.resize(len, Value::Nil) } - fn table_upper(&self) -> usize { - (self.table.len() / 4) * 3 - } - fn table_lower(&self) -> usize { - self.table.len() / 3 - } - fn ensure_table(&mut self) { - if self.table_count > self.table_upper() { - // free space is short - self.exchange_table((self.table.len() + 4) * 2); - } else if self.table_count < self.table_lower() { - // too much free space - self.exchange_table(self.table.len() / 2) - } - self.table_bounds = self.table_lower()..self.table_upper() - } - fn set_table(&mut self, index: Value, item: Value) { - #[cfg(feature = "assertions")] - assert_ne!(index, Value::Nil); - #[cfg(feature = "assertions")] - assert_ne!(item, Value::Nil); - if !self.table_bounds.contains(&self.table_count) { - // make sure the table is appropriately sized - self.ensure_table(); - } - let range = self.table.len(); - let home = hash(&index) % range; - if self.table[home].index == Value::Nil { - // attempt to place it directly in an empty space - // INSERT - self.table[home].home = home; - self.table[home].item = item; // home.item.soft_drop() - self.table[home].index = index; - self.table[home].displacement = self.table[home].displacement.max(0); - self.table_count += 1; - } else if self.table[home].index == index { - // attempt to replace it directly - // REPLACE - self.table[home].item = item; // home.item.soft_drop() - } else { - // attempt to replace it in a collided neighbour location - for i in 1..self.table[home].displacement + 1 { - let neighbour = &mut self.table[(home + i as usize) % range]; // todo: is mod expensive? - if neighbour.index == index { - // found where it was displaced to - // REPLACE - neighbour.item = item; - return; - } - } - // at this point it must be added, probe to place in an empty space - for j in self.table[home].displacement + 1..Displacement::MAX - 1 { - let neighbour = &mut self.table[(home + j as usize) % range]; - if neighbour.index == Value::Nil { - // new empty slot hooray! - // INSERT - neighbour.home = home; - neighbour.item = item; - neighbour.index = index; - self.table[home].displacement = j; - self.table_count += 1; - return; - } - } - // impossible but this still needs to be complete - #[cfg(feature = "messages")] - eprintln!("Large table collision, are the hashes ok?\n\tBrute-force probing..."); - let mut free: Option = None; - for k in 0..self.table.len() { - let neighbour = &mut self.table[k]; - if neighbour.index == Value::Nil && free.is_none() { - free = Some(k); - } else if neighbour.index == index { - // REPLACE - neighbour.item = item; - return; - } - } - if let Some(k) = free { - // INSERT - self.table[k].home = home; - self.table[k].index = index; - self.table[k].item = item; - self.table[home].displacement = Displacement::MAX; - self.table_count += 1; - return; - } - // must resize - #[cfg(feature = "messages")] - eprintln!("\n\tResizing..."); - self.resize_table((self.table.len() + 4) * 2); - self.set_table(index, item); - } - } - fn rem_table(&mut self, index: Value) { - let range = self.table.len(); - let home = hash(&index) % range; - if self.table[home].index == index { - self.table[home].index = Value::Nil; - self.table[home].item = Value::Nil; // is this necessary? - self.table_count -= 1; - } else { - if self.table[home].displacement != Displacement::MAX { - let mut largest = 0; - for i in 1..self.table[home].displacement { - let neighbour = &mut self.table[(home + i as usize) % range]; - if neighbour.index == index { - neighbour.index = Value::Nil; - neighbour.item = Value::Nil; - self.table_count -= 1; - if i == self.table[home].displacement { - self.table[home].displacement = largest - } - return; - } else if neighbour.index != Value::Nil && neighbour.home == home { - largest = i; - } - } - } else { - let mut largest = 0; - let mut finished = false; // what - for k in 0..self.table.len() { - let neighbour = &mut self.table[k]; - if neighbour.index == index { - neighbour.index = Value::Nil; - neighbour.item = Value::Nil; - self.table_count -= 1; - #[cfg(feature = "assertions")] - assert!(!finished); - finished = true; - } - if neighbour.home == home && neighbour.index != Value::Nil { - largest = largest.max(if k < home { - k + self.table.len() - home - 1 // ? - } else { - k - home - }) - } - } - self.table[home].displacement = if largest > Displacement::MAX as usize { - Displacement::MAX - } else { - largest as Displacement - } - } - } - } - pub fn set(&mut self, index: Value, item: Value) -> Result<(), RunError> { + pub fn set(&mut self, index: Value, value: Value) -> Result<(), RunError> { match index { Value::Integer(index) => { // This is an integer index, try the array first - match item { + match value { Value::Nil => { if (0..self.array.len() + 1).contains(&(index as usize)) { if self.array.len() == index as usize { @@ -279,7 +365,7 @@ impl Table { self.array[index as usize + 1] = Value::Nil } } - self.rem_table(Value::Integer(index)); + self.table.rem_table(Value::Integer(index)); } item => { if (0..self.array.len() + 1).contains(&(index as usize)) { @@ -289,19 +375,25 @@ impl Table { self.array[index as usize + 1] = item; } } else { - self.set_table(Value::Integer(index), item) + self.table.set_table(KeyValue { + index: Value::Integer(index), + value: item + }) } } } Ok(()) } Value::Nil => Err(RunError( - "Attempt to set new index of tabel with key: nil".to_string(), + "Attempt to set new index of table with key: nil".to_string(), )), - index => Ok(self.set_table(index, item)), + index => Ok(self.table.set_table(KeyValue { + index, + value + })), } } - pub fn get(&self, index: Value) -> Result { + pub fn get(&mut self, index: Value) -> Result { match index { Value::Integer(index) => Ok(self .array @@ -309,20 +401,11 @@ impl Table { .unwrap_or(&Value::Nil) .clone()), Value::Nil => Err(RunError("Attempt to index table with key: nil".to_string())), - index => { - let location = hash(&index) % self.table.len(); - let home = &self.table[location]; - if home.index == index { - Ok(home.item.clone()) - } else { - for i in 1..home.displacement as usize { - let neighbour = &self.table[location + i]; - if neighbour.index == index { - return Ok(neighbour.item.clone()); - } - } - Ok(Value::Nil) - } + index => { // todo: move this into the Map + Ok(self.table.get_table(index).unwrap_or(&KeyValue { + index: Value::Nil, + value: Value::Nil, + }).value.clone()) } } } @@ -331,11 +414,9 @@ impl Table { } pub fn new() -> Self { Table { - table: Vec::new(), + table: Map::new(), array: Vec::new(), - table_count: 0, - table_bounds: (0..0).into(), meta: None, } } -} +} \ No newline at end of file diff --git a/src/tests/script.lua b/src/tests/script.lua index 36d8fd4..6b01721 100644 --- a/src/tests/script.lua +++ b/src/tests/script.lua @@ -2,4 +2,4 @@ if true then print("whats good") else print("oh no") -end +end \ No newline at end of file