From 51c506425c2614361efa34f96ef3b3f702a9e6cd Mon Sep 17 00:00:00 2001 From: bendn Date: Thu, 7 Sep 2023 10:02:44 +0700 Subject: [PATCH] use iai --- Cargo.toml | 11 ++++ benches/{3_4x4.imgbuf => 3_8x8.imgbuf} | 0 benches/3x3_at_out.imgbuf | 1 - .../{4_180x180.imgbuf => 4_160x160.imgbuf} | Bin benches/{4_4x4.imgbuf => 4_8x8.imgbuf} | 0 benches/4x3_at_out.imgbuf | 1 - benches/4x4_at_out.imgbuf | 1 - benches/affine_transformations.rs | 21 +++---- benches/overlays.rs | 59 +++++++----------- src/builder.rs | 10 ++- 10 files changed, 49 insertions(+), 55 deletions(-) rename benches/{3_4x4.imgbuf => 3_8x8.imgbuf} (100%) delete mode 100644 benches/3x3_at_out.imgbuf rename benches/{4_180x180.imgbuf => 4_160x160.imgbuf} (100%) rename benches/{4_4x4.imgbuf => 4_8x8.imgbuf} (100%) delete mode 100644 benches/4x3_at_out.imgbuf delete mode 100644 benches/4x4_at_out.imgbuf diff --git a/Cargo.toml b/Cargo.toml index f8d388d..8cd21d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,17 @@ repository = "https://github.com/bend-n/fimg" [dependencies] png = { version = "0.17", features = ["unstable"], optional = true } +[dev-dependencies] +iai = { version = "0.1.1", features = [], git = "https://github.com/bend-n/iai/" } + +[[bench]] +name = "overlays" +harness = false + +[[bench]] +name = "affine_transformations" +harness = false + [features] save = ["png"] default = ["save"] diff --git a/benches/3_4x4.imgbuf b/benches/3_8x8.imgbuf similarity index 100% rename from benches/3_4x4.imgbuf rename to benches/3_8x8.imgbuf diff --git a/benches/3x3_at_out.imgbuf b/benches/3x3_at_out.imgbuf deleted file mode 100644 index 21d0141..0000000 --- a/benches/3x3_at_out.imgbuf +++ /dev/null @@ -1 +0,0 @@ -гЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎїЫЄїЫЄгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎгЎ \ No newline at end of file diff --git a/benches/4_180x180.imgbuf b/benches/4_160x160.imgbuf similarity index 100% rename from benches/4_180x180.imgbuf rename to benches/4_160x160.imgbuf diff --git a/benches/4_4x4.imgbuf b/benches/4_8x8.imgbuf similarity index 100% rename from benches/4_4x4.imgbuf rename to benches/4_8x8.imgbuf diff --git a/benches/4x3_at_out.imgbuf b/benches/4x3_at_out.imgbuf deleted file mode 100644 index d5d8851..0000000 --- a/benches/4x3_at_out.imgbuf +++ /dev/null @@ -1 +0,0 @@ -жлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџЎДФжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџжлчжлчџџџџџџ \ No newline at end of file diff --git a/benches/4x4_at_out.imgbuf b/benches/4x4_at_out.imgbuf deleted file mode 100644 index 4dedb62..0000000 --- a/benches/4x4_at_out.imgbuf +++ /dev/null @@ -1 +0,0 @@ -жлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџжлчџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџЎДФџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџжлчџжлчџџџџџџџџџ \ No newline at end of file diff --git a/benches/affine_transformations.rs b/benches/affine_transformations.rs index de2162a..b74d9ba 100644 --- a/benches/affine_transformations.rs +++ b/benches/affine_transformations.rs @@ -1,20 +1,16 @@ -#![feature(test)] -extern crate test; use fimg::*; -use test::Bencher; macro_rules! bench { (fn $name: ident() { run $fn: ident() }) => { - #[bench] - fn $name(b: &mut Bencher) { + fn $name() { let mut img: Image<_, 4> = - Image::build(64, 64).buf(include_bytes!("4_180x180.imgbuf").to_vec()); - #[allow(unused_unsafe)] - b.iter(|| unsafe { - for _ in 0..256 { - img.$fn(); - } - }); + Image::build(160, 160).buf(include_bytes!("4_160x160.imgbuf").to_vec()); + for _ in 0..256 { + #[allow(unused_unsafe)] + unsafe { + img.$fn() + }; + } } }; } @@ -24,3 +20,4 @@ bench!(fn flip_v() { run flip_v() }); bench!(fn rotate_90() { run rot_90() }); bench!(fn rotate_180() { run rot_180() }); bench!(fn rotate_270() { run rot_270() }); +iai::main!(flip_h, flip_v, rotate_90, rotate_180, rotate_270); diff --git a/benches/overlays.rs b/benches/overlays.rs index b1ee3f3..46e10f6 100644 --- a/benches/overlays.rs +++ b/benches/overlays.rs @@ -1,47 +1,32 @@ -#![feature(test)] -extern crate test; use fimg::*; -use test::Bencher; -#[bench] -fn overlay_3on3at(bench: &mut Bencher) { - let mut v = vec![0u8; 3 * 64 * 64]; - let mut a: Image<_, 3> = Image::build(64, 64).buf(v.as_mut_slice()); - let b: Image<&[u8], 3> = Image::build(4, 4).buf(include_bytes!("3_4x4.imgbuf")); - bench.iter(|| unsafe { - for x in 0..16 { - for y in 0..16 { - a.overlay_at(&b, x * 4, y * 4); - } +fn overlay_3on3at() { + let mut a: Image<_, 3> = Image::alloc(128, 128); + let b: Image<&[u8], 3> = Image::build(8, 8).buf(include_bytes!("3_8x8.imgbuf")); + for x in 0..16 { + for y in 0..16 { + unsafe { a.as_mut().overlay_at(&b, x * 8, y * 8) }; } - }); - assert_eq!(a.as_ref().buffer(), include_bytes!("3x3_at_out.imgbuf")); + } } -#[bench] -fn overlay_4on3at(bench: &mut Bencher) { - let mut a: Image<_, 3> = Image::alloc(64, 64); - let b: Image<&[u8], 4> = Image::build(4, 4).buf(include_bytes!("4_4x4.imgbuf")); - bench.iter(|| unsafe { - for x in 0..16 { - for y in 0..16 { - a.as_mut().overlay_at(&b, x * 4, y * 4); - } +fn overlay_4on3at() { + let mut a: Image<_, 3> = Image::alloc(128, 128); + let b: Image<&[u8], 4> = Image::build(8, 8).buf(include_bytes!("4_8x8.imgbuf")); + for x in 0..16 { + for y in 0..16 { + unsafe { a.as_mut().overlay_at(&b, x * 8, y * 8) }; } - }); - assert_eq!(a.as_ref().buffer(), include_bytes!("4x3_at_out.imgbuf")); + } } -#[bench] -fn overlay_4on4at(bench: &mut Bencher) { - let mut a: Image<_, 4> = Image::alloc(64, 64); - let b: Image<&[u8], 4> = Image::build(4, 4).buf(include_bytes!("4_4x4.imgbuf")); - bench.iter(|| unsafe { - for x in 0..16 { - for y in 0..16 { - a.as_mut().overlay_at(&b, x * 4, y * 4); - } +fn overlay_4on4at() { + let mut a: Image<_, 4> = Image::alloc(128, 128); + let b: Image<&[u8], 4> = Image::build(8, 8).buf(include_bytes!("4_8x8.imgbuf")); + for x in 0..16 { + for y in 0..16 { + unsafe { a.as_mut().overlay_at(&b, x * 8, y * 8) }; } - }); - assert_eq!(a.as_ref().buffer(), include_bytes!("4x4_at_out.imgbuf")); + } } +iai::main!(overlay_3on3at, overlay_4on3at, overlay_4on4at); diff --git a/src/builder.rs b/src/builder.rs index 1f9b880..be5a837 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -32,10 +32,14 @@ impl Builder { } /// apply a buffer, and build + #[track_caller] pub fn buf(self, buffer: B) -> Image { - if buffer.len() as u32 != C as u32 * self.width * self.height { - panic!("invalid buffer size"); - } + let len = C as u32 * self.width * self.height; + assert!( + buffer.len() as u32 == len, + "invalid buffer size (expected {len}, got {})", + buffer.len() + ); Image { buffer, width: self.width.try_into().expect("passed zero width to builder"),