From 5adb57d68d93faaffd51a64a35e079bc94294280 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sun, 25 Feb 2024 13:12:00 -0700 Subject: [PATCH] Further expand array sizes (#52) Replaces the existing ad hoc array size selections with the following, which cover all current known use cases: - 0-256 - 272-1024 (multiples of 16) - 1040-4096 (multiples of 32) This also effectively reverts #50, since it was adding considerably to compile times (now noted as a comment in that PR). --- src/sizes.rs | 1030 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 692 insertions(+), 338 deletions(-) diff --git a/src/sizes.rs b/src/sizes.rs index e20740c..b675086 100644 --- a/src/sizes.rs +++ b/src/sizes.rs @@ -1,7 +1,13 @@ //! Macros for defining various array sizes, and their associated invocations. +//! +//! We support the following array sizes: +//! +//! - 0-256 +//! - 272-1024 (multiples of 16) +//! - 1040-4096 (multiples of 32) use super::{ArraySize, AssocArraySize}; -use typenum::{consts::*, Unsigned}; +use typenum::consts::*; /// Additional typenum size aliases beyond what are normally provided. /// @@ -18,362 +24,710 @@ pub mod extra_sizes { (1 $($bs:tt)*) => { UInt< uint!($($bs)*), B1 > }; } - pub type U1088 = uint!(0 0 0 0 0 0 1 0 0 0 1 ); - pub type U1152 = uint!(0 0 0 0 0 0 0 1 0 0 1 ); - pub type U1184 = uint!(0 0 0 0 0 1 0 1 0 0 1 ); - pub type U1408 = uint!(0 0 0 0 0 0 0 1 1 0 1 ); - pub type U1472 = uint!(0 0 0 0 0 0 1 1 1 0 1 ); - pub type U1536 = uint!(0 0 0 0 0 0 0 0 0 1 1 ); - pub type U1568 = uint!(0 0 0 0 0 1 0 0 0 1 1 ); - pub type U1600 = uint!(0 0 0 0 0 0 1 0 0 1 1 ); - pub type U1632 = uint!(0 0 0 0 0 1 1 0 0 1 1 ); + pub type U1040 = uint!(0 0 0 0 1 0 0 0 0 0 1); + pub type U1056 = uint!(0 0 0 0 0 1 0 0 0 0 1); + pub type U1072 = uint!(0 0 0 0 1 1 0 0 0 0 1); + pub type U1088 = uint!(0 0 0 0 0 0 1 0 0 0 1); + pub type U1104 = uint!(0 0 0 0 1 0 1 0 0 0 1); + pub type U1120 = uint!(0 0 0 0 0 1 1 0 0 0 1); + pub type U1136 = uint!(0 0 0 0 1 1 1 0 0 0 1); + pub type U1152 = uint!(0 0 0 0 0 0 0 1 0 0 1); + pub type U1168 = uint!(0 0 0 0 1 0 0 1 0 0 1); + pub type U1184 = uint!(0 0 0 0 0 1 0 1 0 0 1); + pub type U1200 = uint!(0 0 0 0 1 1 0 1 0 0 1); + pub type U1216 = uint!(0 0 0 0 0 0 1 1 0 0 1); + pub type U1232 = uint!(0 0 0 0 1 0 1 1 0 0 1); + pub type U1248 = uint!(0 0 0 0 0 1 1 1 0 0 1); + pub type U1264 = uint!(0 0 0 0 1 1 1 1 0 0 1); + pub type U1280 = uint!(0 0 0 0 0 0 0 0 1 0 1); + pub type U1296 = uint!(0 0 0 0 1 0 0 0 1 0 1); + pub type U1312 = uint!(0 0 0 0 0 1 0 0 1 0 1); + pub type U1328 = uint!(0 0 0 0 1 1 0 0 1 0 1); + pub type U1344 = uint!(0 0 0 0 0 0 1 0 1 0 1); + pub type U1360 = uint!(0 0 0 0 1 0 1 0 1 0 1); + pub type U1376 = uint!(0 0 0 0 0 1 1 0 1 0 1); + pub type U1392 = uint!(0 0 0 0 1 1 1 0 1 0 1); + pub type U1408 = uint!(0 0 0 0 0 0 0 1 1 0 1); + pub type U1424 = uint!(0 0 0 0 1 0 0 1 1 0 1); + pub type U1440 = uint!(0 0 0 0 0 1 0 1 1 0 1); + pub type U1456 = uint!(0 0 0 0 1 1 0 1 1 0 1); + pub type U1472 = uint!(0 0 0 0 0 0 1 1 1 0 1); + pub type U1488 = uint!(0 0 0 0 1 0 1 1 1 0 1); + pub type U1504 = uint!(0 0 0 0 0 1 1 1 1 0 1); + pub type U1520 = uint!(0 0 0 0 1 1 1 1 1 0 1); + pub type U1536 = uint!(0 0 0 0 0 0 0 0 0 1 1); + pub type U1552 = uint!(0 0 0 0 1 0 0 0 0 1 1); + pub type U1568 = uint!(0 0 0 0 0 1 0 0 0 1 1); + pub type U1584 = uint!(0 0 0 0 1 1 0 0 0 1 1); + pub type U1600 = uint!(0 0 0 0 0 0 1 0 0 1 1); + pub type U1616 = uint!(0 0 0 0 1 0 1 0 0 1 1); + pub type U1632 = uint!(0 0 0 0 0 1 1 0 0 1 1); + pub type U1648 = uint!(0 0 0 0 1 1 1 0 0 1 1); + pub type U1664 = uint!(0 0 0 0 0 0 0 1 0 1 1); + pub type U1680 = uint!(0 0 0 0 1 0 0 1 0 1 1); + pub type U1696 = uint!(0 0 0 0 0 1 0 1 0 1 1); + pub type U1712 = uint!(0 0 0 0 1 1 0 1 0 1 1); + pub type U1728 = uint!(0 0 0 0 0 0 1 1 0 1 1); + pub type U1744 = uint!(0 0 0 0 1 0 1 1 0 1 1); + pub type U1760 = uint!(0 0 0 0 0 1 1 1 0 1 1); + pub type U1776 = uint!(0 0 0 0 1 1 1 1 0 1 1); + pub type U1792 = uint!(0 0 0 0 0 0 0 0 1 1 1); + pub type U1808 = uint!(0 0 0 0 1 0 0 0 1 1 1); + pub type U1824 = uint!(0 0 0 0 0 1 0 0 1 1 1); + pub type U1840 = uint!(0 0 0 0 1 1 0 0 1 1 1); + pub type U1856 = uint!(0 0 0 0 0 0 1 0 1 1 1); + pub type U1872 = uint!(0 0 0 0 1 0 1 0 1 1 1); + pub type U1888 = uint!(0 0 0 0 0 1 1 0 1 1 1); + pub type U1904 = uint!(0 0 0 0 1 1 1 0 1 1 1); + pub type U1920 = uint!(0 0 0 0 0 0 0 1 1 1 1); + pub type U1936 = uint!(0 0 0 0 1 0 0 1 1 1 1); + pub type U1952 = uint!(0 0 0 0 0 1 0 1 1 1 1); + pub type U1968 = uint!(0 0 0 0 1 1 0 1 1 1 1); + pub type U1984 = uint!(0 0 0 0 0 0 1 1 1 1 1); + pub type U2000 = uint!(0 0 0 0 1 0 1 1 1 1 1); + pub type U2016 = uint!(0 0 0 0 0 1 1 1 1 1 1); + pub type U2032 = uint!(0 0 0 0 1 1 1 1 1 1 1); + pub type U2064 = uint!(0 0 0 0 1 0 0 0 0 0 0 1); + pub type U2080 = uint!(0 0 0 0 0 1 0 0 0 0 0 1); + pub type U2096 = uint!(0 0 0 0 1 1 0 0 0 0 0 1); + pub type U2112 = uint!(0 0 0 0 0 0 1 0 0 0 0 1); + pub type U2128 = uint!(0 0 0 0 1 0 1 0 0 0 0 1); + pub type U2144 = uint!(0 0 0 0 0 1 1 0 0 0 0 1); + pub type U2160 = uint!(0 0 0 0 1 1 1 0 0 0 0 1); + pub type U2176 = uint!(0 0 0 0 0 0 0 1 0 0 0 1); + pub type U2192 = uint!(0 0 0 0 1 0 0 1 0 0 0 1); + pub type U2208 = uint!(0 0 0 0 0 1 0 1 0 0 0 1); + pub type U2224 = uint!(0 0 0 0 1 1 0 1 0 0 0 1); + pub type U2240 = uint!(0 0 0 0 0 0 1 1 0 0 0 1); + pub type U2256 = uint!(0 0 0 0 1 0 1 1 0 0 0 1); + pub type U2272 = uint!(0 0 0 0 0 1 1 1 0 0 0 1); + pub type U2288 = uint!(0 0 0 0 1 1 1 1 0 0 0 1); + pub type U2304 = uint!(0 0 0 0 0 0 0 0 1 0 0 1); + pub type U2320 = uint!(0 0 0 0 1 0 0 0 1 0 0 1); pub type U2336 = uint!(0 0 0 0 0 1 0 0 1 0 0 1); + pub type U2352 = uint!(0 0 0 0 1 1 0 0 1 0 0 1); pub type U2368 = uint!(0 0 0 0 0 0 1 0 1 0 0 1); + pub type U2384 = uint!(0 0 0 0 1 0 1 0 1 0 0 1); pub type U2400 = uint!(0 0 0 0 0 1 1 0 1 0 0 1); + pub type U2416 = uint!(0 0 0 0 1 1 1 0 1 0 0 1); + pub type U2432 = uint!(0 0 0 0 0 0 0 1 1 0 0 1); + pub type U2448 = uint!(0 0 0 0 1 0 0 1 1 0 0 1); + pub type U2464 = uint!(0 0 0 0 0 1 0 1 1 0 0 1); + pub type U2480 = uint!(0 0 0 0 1 1 0 1 1 0 0 1); + pub type U2496 = uint!(0 0 0 0 0 0 1 1 1 0 0 1); + pub type U2512 = uint!(0 0 0 0 1 0 1 1 1 0 0 1); + pub type U2528 = uint!(0 0 0 0 0 1 1 1 1 0 0 1); + pub type U2544 = uint!(0 0 0 0 1 1 1 1 1 0 0 1); + pub type U2560 = uint!(0 0 0 0 0 0 0 0 0 1 0 1); + pub type U2576 = uint!(0 0 0 0 1 0 0 0 0 1 0 1); + pub type U2592 = uint!(0 0 0 0 0 1 0 0 0 1 0 1); + pub type U2608 = uint!(0 0 0 0 1 1 0 0 0 1 0 1); + pub type U2624 = uint!(0 0 0 0 0 0 1 0 0 1 0 1); + pub type U2640 = uint!(0 0 0 0 1 0 1 0 0 1 0 1); + pub type U2656 = uint!(0 0 0 0 0 1 1 0 0 1 0 1); + pub type U2672 = uint!(0 0 0 0 1 1 1 0 0 1 0 1); + pub type U2688 = uint!(0 0 0 0 0 0 0 1 0 1 0 1); + pub type U2704 = uint!(0 0 0 0 1 0 0 1 0 1 0 1); + pub type U2720 = uint!(0 0 0 0 0 1 0 1 0 1 0 1); + pub type U2736 = uint!(0 0 0 0 1 1 0 1 0 1 0 1); + pub type U2752 = uint!(0 0 0 0 0 0 1 1 0 1 0 1); + pub type U2768 = uint!(0 0 0 0 1 0 1 1 0 1 0 1); + pub type U2784 = uint!(0 0 0 0 0 1 1 1 0 1 0 1); + pub type U2800 = uint!(0 0 0 0 1 1 1 1 0 1 0 1); + pub type U2816 = uint!(0 0 0 0 0 0 0 0 1 1 0 1); + pub type U2832 = uint!(0 0 0 0 1 0 0 0 1 1 0 1); + pub type U2848 = uint!(0 0 0 0 0 1 0 0 1 1 0 1); + pub type U2864 = uint!(0 0 0 0 1 1 0 0 1 1 0 1); + pub type U2880 = uint!(0 0 0 0 0 0 1 0 1 1 0 1); + pub type U2896 = uint!(0 0 0 0 1 0 1 0 1 1 0 1); + pub type U2912 = uint!(0 0 0 0 0 1 1 0 1 1 0 1); + pub type U2928 = uint!(0 0 0 0 1 1 1 0 1 1 0 1); + pub type U2944 = uint!(0 0 0 0 0 0 0 1 1 1 0 1); + pub type U2960 = uint!(0 0 0 0 1 0 0 1 1 1 0 1); + pub type U2976 = uint!(0 0 0 0 0 1 0 1 1 1 0 1); + pub type U2992 = uint!(0 0 0 0 1 1 0 1 1 1 0 1); + pub type U3008 = uint!(0 0 0 0 0 0 1 1 1 1 0 1); + pub type U3024 = uint!(0 0 0 0 1 0 1 1 1 1 0 1); + pub type U3040 = uint!(0 0 0 0 0 1 1 1 1 1 0 1); + pub type U3056 = uint!(0 0 0 0 1 1 1 1 1 1 0 1); pub type U3072 = uint!(0 0 0 0 0 0 0 0 0 0 1 1); + pub type U3088 = uint!(0 0 0 0 1 0 0 0 0 0 1 1); pub type U3104 = uint!(0 0 0 0 0 1 0 0 0 0 1 1); + pub type U3120 = uint!(0 0 0 0 1 1 0 0 0 0 1 1); pub type U3136 = uint!(0 0 0 0 0 0 1 0 0 0 1 1); + pub type U3152 = uint!(0 0 0 0 1 0 1 0 0 0 1 1); pub type U3168 = uint!(0 0 0 0 0 1 1 0 0 0 1 1); + pub type U3184 = uint!(0 0 0 0 1 1 1 0 0 0 1 1); + pub type U3200 = uint!(0 0 0 0 0 0 0 1 0 0 1 1); + pub type U3216 = uint!(0 0 0 0 1 0 0 1 0 0 1 1); + pub type U3232 = uint!(0 0 0 0 0 1 0 1 0 0 1 1); + pub type U3248 = uint!(0 0 0 0 1 1 0 1 0 0 1 1); + pub type U3264 = uint!(0 0 0 0 0 0 1 1 0 0 1 1); + pub type U3280 = uint!(0 0 0 0 1 0 1 1 0 0 1 1); + pub type U3296 = uint!(0 0 0 0 0 1 1 1 0 0 1 1); + pub type U3312 = uint!(0 0 0 0 1 1 1 1 0 0 1 1); + pub type U3328 = uint!(0 0 0 0 0 0 0 0 1 0 1 1); + pub type U3344 = uint!(0 0 0 0 1 0 0 0 1 0 1 1); + pub type U3360 = uint!(0 0 0 0 0 1 0 0 1 0 1 1); + pub type U3376 = uint!(0 0 0 0 1 1 0 0 1 0 1 1); + pub type U3392 = uint!(0 0 0 0 0 0 1 0 1 0 1 1); + pub type U3408 = uint!(0 0 0 0 1 0 1 0 1 0 1 1); + pub type U3424 = uint!(0 0 0 0 0 1 1 0 1 0 1 1); + pub type U3440 = uint!(0 0 0 0 1 1 1 0 1 0 1 1); + pub type U3456 = uint!(0 0 0 0 0 0 0 1 1 0 1 1); + pub type U3472 = uint!(0 0 0 0 1 0 0 1 1 0 1 1); + pub type U3488 = uint!(0 0 0 0 0 1 0 1 1 0 1 1); + pub type U3504 = uint!(0 0 0 0 1 1 0 1 1 0 1 1); + pub type U3520 = uint!(0 0 0 0 0 0 1 1 1 0 1 1); + pub type U3536 = uint!(0 0 0 0 1 0 1 1 1 0 1 1); + pub type U3552 = uint!(0 0 0 0 0 1 1 1 1 0 1 1); + pub type U3568 = uint!(0 0 0 0 1 1 1 1 1 0 1 1); + pub type U3584 = uint!(0 0 0 0 0 0 0 0 0 1 1 1); + pub type U3600 = uint!(0 0 0 0 1 0 0 0 0 1 1 1); + pub type U3616 = uint!(0 0 0 0 0 1 0 0 0 1 1 1); + pub type U3632 = uint!(0 0 0 0 1 1 0 0 0 1 1 1); + pub type U3648 = uint!(0 0 0 0 0 0 1 0 0 1 1 1); + pub type U3664 = uint!(0 0 0 0 1 0 1 0 0 1 1 1); + pub type U3680 = uint!(0 0 0 0 0 1 1 0 0 1 1 1); + pub type U3696 = uint!(0 0 0 0 1 1 1 0 0 1 1 1); + pub type U3712 = uint!(0 0 0 0 0 0 0 1 0 1 1 1); + pub type U3728 = uint!(0 0 0 0 1 0 0 1 0 1 1 1); + pub type U3744 = uint!(0 0 0 0 0 1 0 1 0 1 1 1); + pub type U3760 = uint!(0 0 0 0 1 1 0 1 0 1 1 1); + pub type U3776 = uint!(0 0 0 0 0 0 1 1 0 1 1 1); + pub type U3792 = uint!(0 0 0 0 1 0 1 1 0 1 1 1); + pub type U3808 = uint!(0 0 0 0 0 1 1 1 0 1 1 1); + pub type U3824 = uint!(0 0 0 0 1 1 1 1 0 1 1 1); + pub type U3840 = uint!(0 0 0 0 0 0 0 0 1 1 1 1); + pub type U3856 = uint!(0 0 0 0 1 0 0 0 1 1 1 1); + pub type U3872 = uint!(0 0 0 0 0 1 0 0 1 1 1 1); + pub type U3888 = uint!(0 0 0 0 1 1 0 0 1 1 1 1); + pub type U3904 = uint!(0 0 0 0 0 0 1 0 1 1 1 1); + pub type U3920 = uint!(0 0 0 0 1 0 1 0 1 1 1 1); + pub type U3936 = uint!(0 0 0 0 0 1 1 0 1 1 1 1); + pub type U3952 = uint!(0 0 0 0 1 1 1 0 1 1 1 1); + pub type U3968 = uint!(0 0 0 0 0 0 0 1 1 1 1 1); + pub type U3984 = uint!(0 0 0 0 1 0 0 1 1 1 1 1); + pub type U4000 = uint!(0 0 0 0 0 1 0 1 1 1 1 1); + pub type U4016 = uint!(0 0 0 0 1 1 0 1 1 1 1 1); + pub type U4032 = uint!(0 0 0 0 0 0 1 1 1 1 1 1); + pub type U4048 = uint!(0 0 0 0 1 0 1 1 1 1 1 1); + pub type U4064 = uint!(0 0 0 0 0 1 1 1 1 1 1 1); + pub type U4080 = uint!(0 0 0 0 1 1 1 1 1 1 1 1); } pub use extra_sizes::*; -macro_rules! impl_array_size { - ($($ty:ty),+ $(,)?) => { +macro_rules! impl_array_sizes { + ($($len:expr => $ty:ident),+ $(,)?) => { $( unsafe impl ArraySize for $ty { - type ArrayType = [T; <$ty as Unsigned>::USIZE]; + type ArrayType = [T; $len]; } - impl AssocArraySize for [T; <$ty as Unsigned>::USIZE] { + impl AssocArraySize for [T; $len] { type Size = $ty; } )+ }; } -impl_array_size! { - U0, - U1, - U2, - U3, - U4, - U5, - U6, - U7, - U8, - U9, - U10, - U11, - U12, - U13, - U14, - U15, - U16, - U17, - U18, - U19, - U20, - U21, - U22, - U23, - U24, - U25, - U26, - U27, - U28, - U29, - U30, - U31, - U32, - U33, - U34, - U35, - U36, - U37, - U38, - U39, - U40, - U41, - U42, - U43, - U44, - U45, - U46, - U47, - U48, - U49, - U50, - U51, - U52, - U53, - U54, - U55, - U56, - U57, - U58, - U59, - U60, - U61, - U62, - U63, - U64, - U65, - U66, - U67, - U68, - U69, - U70, - U71, - U72, - U73, - U74, - U75, - U76, - U77, - U78, - U79, - U80, - U81, - U82, - U83, - U84, - U85, - U86, - U87, - U88, - U89, - U90, - U91, - U92, - U93, - U94, - U95, - U96, - U97, - U98, - U99, - U100, - U101, - U102, - U103, - U104, - U105, - U106, - U107, - U108, - U109, - U110, - U111, - U112, - U113, - U114, - U115, - U116, - U117, - U118, - U119, - U120, - U121, - U122, - U123, - U124, - U125, - U126, - U127, - U128, - U129, - U130, - U131, - U132, - U133, - U134, - U135, - U136, - U137, - U138, - U139, - U140, - U141, - U142, - U143, - U144, - U145, - U146, - U147, - U148, - U149, - U150, - U151, - U152, - U153, - U154, - U155, - U156, - U157, - U158, - U159, - U160, - U161, - U162, - U163, - U164, - U165, - U166, - U167, - U168, - U169, - U170, - U171, - U172, - U173, - U174, - U175, - U176, - U177, - U178, - U179, - U180, - U181, - U182, - U183, - U184, - U185, - U186, - U187, - U188, - U189, - U190, - U191, - U192, - U193, - U194, - U195, - U196, - U197, - U198, - U199, - U200, - U201, - U202, - U203, - U204, - U205, - U206, - U207, - U208, - U209, - U210, - U211, - U212, - U213, - U214, - U215, - U216, - U217, - U218, - U219, - U220, - U221, - U222, - U223, - U224, - U225, - U226, - U227, - U228, - U229, - U230, - U231, - U232, - U233, - U234, - U235, - U236, - U237, - U238, - U239, - U240, - U241, - U242, - U243, - U244, - U245, - U246, - U247, - U248, - U249, - U250, - U251, - U252, - U253, - U254, - U255, - U256, - U272, - U288, - U304, - U320, - U336, - U352, - U368, - U384, - U400, - U416, - U432, - U448, - U464, - U480, - U496, - U512, - U528, - U544, - U560, - U576, - U592, - U608, - U624, - U640, - U656, - U672, - U688, - U704, - U720, - U736, - U752, - U768, - U784, - U800, - U816, - U832, - U848, - U864, - U880, - U896, - U912, - U928, - U944, - U960, - U976, - U992, - U1008, - U1024, - U1088, - U1152, - U1184, - U1408, - U1472, - U1536, - U1568, - U1600, - U1632, - U2048, - U2336, - U2368, - U2400, - U3072, - U3104, - U3136, - U3168, - U4096, +impl_array_sizes! { + 0 => U0, + 1 => U1, + 2 => U2, + 3 => U3, + 4 => U4, + 5 => U5, + 6 => U6, + 7 => U7, + 8 => U8, + 9 => U9, + 10 => U10, + 11 => U11, + 12 => U12, + 13 => U13, + 14 => U14, + 15 => U15, + 16 => U16, + 17 => U17, + 18 => U18, + 19 => U19, + 20 => U20, + 21 => U21, + 22 => U22, + 23 => U23, + 24 => U24, + 25 => U25, + 26 => U26, + 27 => U27, + 28 => U28, + 29 => U29, + 30 => U30, + 31 => U31, + 32 => U32, + 33 => U33, + 34 => U34, + 35 => U35, + 36 => U36, + 37 => U37, + 38 => U38, + 39 => U39, + 40 => U40, + 41 => U41, + 42 => U42, + 43 => U43, + 44 => U44, + 45 => U45, + 46 => U46, + 47 => U47, + 48 => U48, + 49 => U49, + 50 => U50, + 51 => U51, + 52 => U52, + 53 => U53, + 54 => U54, + 55 => U55, + 56 => U56, + 57 => U57, + 58 => U58, + 59 => U59, + 60 => U60, + 61 => U61, + 62 => U62, + 63 => U63, + 64 => U64, + 65 => U65, + 66 => U66, + 67 => U67, + 68 => U68, + 69 => U69, + 70 => U70, + 71 => U71, + 72 => U72, + 73 => U73, + 74 => U74, + 75 => U75, + 76 => U76, + 77 => U77, + 78 => U78, + 79 => U79, + 80 => U80, + 81 => U81, + 82 => U82, + 83 => U83, + 84 => U84, + 85 => U85, + 86 => U86, + 87 => U87, + 88 => U88, + 89 => U89, + 90 => U90, + 91 => U91, + 92 => U92, + 93 => U93, + 94 => U94, + 95 => U95, + 96 => U96, + 97 => U97, + 98 => U98, + 99 => U99, + 100 => U100, + 101 => U101, + 102 => U102, + 103 => U103, + 104 => U104, + 105 => U105, + 106 => U106, + 107 => U107, + 108 => U108, + 109 => U109, + 110 => U110, + 111 => U111, + 112 => U112, + 113 => U113, + 114 => U114, + 115 => U115, + 116 => U116, + 117 => U117, + 118 => U118, + 119 => U119, + 120 => U120, + 121 => U121, + 122 => U122, + 123 => U123, + 124 => U124, + 125 => U125, + 126 => U126, + 127 => U127, + 128 => U128, + 129 => U129, + 130 => U130, + 131 => U131, + 132 => U132, + 133 => U133, + 134 => U134, + 135 => U135, + 136 => U136, + 137 => U137, + 138 => U138, + 139 => U139, + 140 => U140, + 141 => U141, + 142 => U142, + 143 => U143, + 144 => U144, + 145 => U145, + 146 => U146, + 147 => U147, + 148 => U148, + 149 => U149, + 150 => U150, + 151 => U151, + 152 => U152, + 153 => U153, + 154 => U154, + 155 => U155, + 156 => U156, + 157 => U157, + 158 => U158, + 159 => U159, + 160 => U160, + 161 => U161, + 162 => U162, + 163 => U163, + 164 => U164, + 165 => U165, + 166 => U166, + 167 => U167, + 168 => U168, + 169 => U169, + 170 => U170, + 171 => U171, + 172 => U172, + 173 => U173, + 174 => U174, + 175 => U175, + 176 => U176, + 177 => U177, + 178 => U178, + 179 => U179, + 180 => U180, + 181 => U181, + 182 => U182, + 183 => U183, + 184 => U184, + 185 => U185, + 186 => U186, + 187 => U187, + 188 => U188, + 189 => U189, + 190 => U190, + 191 => U191, + 192 => U192, + 193 => U193, + 194 => U194, + 195 => U195, + 196 => U196, + 197 => U197, + 198 => U198, + 199 => U199, + 200 => U200, + 201 => U201, + 202 => U202, + 203 => U203, + 204 => U204, + 205 => U205, + 206 => U206, + 207 => U207, + 208 => U208, + 209 => U209, + 210 => U210, + 211 => U211, + 212 => U212, + 213 => U213, + 214 => U214, + 215 => U215, + 216 => U216, + 217 => U217, + 218 => U218, + 219 => U219, + 220 => U220, + 221 => U221, + 222 => U222, + 223 => U223, + 224 => U224, + 225 => U225, + 226 => U226, + 227 => U227, + 228 => U228, + 229 => U229, + 230 => U230, + 231 => U231, + 232 => U232, + 233 => U233, + 234 => U234, + 235 => U235, + 236 => U236, + 237 => U237, + 238 => U238, + 239 => U239, + 240 => U240, + 241 => U241, + 242 => U242, + 243 => U243, + 244 => U244, + 245 => U245, + 246 => U246, + 247 => U247, + 248 => U248, + 249 => U249, + 250 => U250, + 251 => U251, + 252 => U252, + 253 => U253, + 254 => U254, + 255 => U255, + 256 => U256, + 272 => U272, + 288 => U288, + 304 => U304, + 320 => U320, + 336 => U336, + 352 => U352, + 368 => U368, + 384 => U384, + 400 => U400, + 416 => U416, + 432 => U432, + 448 => U448, + 464 => U464, + 480 => U480, + 496 => U496, + 512 => U512, + 528 => U528, + 544 => U544, + 560 => U560, + 576 => U576, + 592 => U592, + 608 => U608, + 624 => U624, + 640 => U640, + 656 => U656, + 672 => U672, + 688 => U688, + 704 => U704, + 720 => U720, + 736 => U736, + 752 => U752, + 768 => U768, + 784 => U784, + 800 => U800, + 816 => U816, + 832 => U832, + 848 => U848, + 864 => U864, + 880 => U880, + 896 => U896, + 912 => U912, + 928 => U928, + 944 => U944, + 960 => U960, + 976 => U976, + 992 => U992, + 1008 => U1008, + 1024 => U1024, + 1040 => U1040, + 1056 => U1056, + 1072 => U1072, + 1088 => U1088, + 1104 => U1104, + 1120 => U1120, + 1136 => U1136, + 1152 => U1152, + 1168 => U1168, + 1184 => U1184, + 1200 => U1200, + 1216 => U1216, + 1232 => U1232, + 1248 => U1248, + 1264 => U1264, + 1280 => U1280, + 1296 => U1296, + 1312 => U1312, + 1328 => U1328, + 1344 => U1344, + 1360 => U1360, + 1376 => U1376, + 1392 => U1392, + 1408 => U1408, + 1424 => U1424, + 1440 => U1440, + 1456 => U1456, + 1472 => U1472, + 1488 => U1488, + 1504 => U1504, + 1520 => U1520, + 1536 => U1536, + 1552 => U1552, + 1568 => U1568, + 1584 => U1584, + 1600 => U1600, + 1616 => U1616, + 1632 => U1632, + 1648 => U1648, + 1664 => U1664, + 1680 => U1680, + 1696 => U1696, + 1712 => U1712, + 1728 => U1728, + 1744 => U1744, + 1760 => U1760, + 1776 => U1776, + 1792 => U1792, + 1808 => U1808, + 1824 => U1824, + 1840 => U1840, + 1856 => U1856, + 1872 => U1872, + 1888 => U1888, + 1904 => U1904, + 1920 => U1920, + 1936 => U1936, + 1952 => U1952, + 1968 => U1968, + 1984 => U1984, + 2000 => U2000, + 2016 => U2016, + 2032 => U2032, + 2048 => U2048, + 2064 => U2064, + 2080 => U2080, + 2096 => U2096, + 2112 => U2112, + 2128 => U2128, + 2144 => U2144, + 2160 => U2160, + 2176 => U2176, + 2192 => U2192, + 2208 => U2208, + 2224 => U2224, + 2240 => U2240, + 2256 => U2256, + 2272 => U2272, + 2288 => U2288, + 2304 => U2304, + 2320 => U2320, + 2336 => U2336, + 2352 => U2352, + 2368 => U2368, + 2384 => U2384, + 2400 => U2400, + 2416 => U2416, + 2432 => U2432, + 2448 => U2448, + 2464 => U2464, + 2480 => U2480, + 2496 => U2496, + 2512 => U2512, + 2528 => U2528, + 2544 => U2544, + 2560 => U2560, + 2576 => U2576, + 2592 => U2592, + 2608 => U2608, + 2624 => U2624, + 2640 => U2640, + 2656 => U2656, + 2672 => U2672, + 2688 => U2688, + 2704 => U2704, + 2720 => U2720, + 2736 => U2736, + 2752 => U2752, + 2768 => U2768, + 2784 => U2784, + 2800 => U2800, + 2816 => U2816, + 2832 => U2832, + 2848 => U2848, + 2864 => U2864, + 2880 => U2880, + 2896 => U2896, + 2912 => U2912, + 2928 => U2928, + 2944 => U2944, + 2960 => U2960, + 2976 => U2976, + 2992 => U2992, + 3008 => U3008, + 3024 => U3024, + 3040 => U3040, + 3056 => U3056, + 3072 => U3072, + 3088 => U3088, + 3104 => U3104, + 3120 => U3120, + 3136 => U3136, + 3152 => U3152, + 3168 => U3168, + 3184 => U3184, + 3200 => U3200, + 3216 => U3216, + 3232 => U3232, + 3248 => U3248, + 3264 => U3264, + 3280 => U3280, + 3296 => U3296, + 3312 => U3312, + 3328 => U3328, + 3344 => U3344, + 3360 => U3360, + 3376 => U3376, + 3392 => U3392, + 3408 => U3408, + 3424 => U3424, + 3440 => U3440, + 3456 => U3456, + 3472 => U3472, + 3488 => U3488, + 3504 => U3504, + 3520 => U3520, + 3536 => U3536, + 3552 => U3552, + 3568 => U3568, + 3584 => U3584, + 3600 => U3600, + 3616 => U3616, + 3632 => U3632, + 3648 => U3648, + 3664 => U3664, + 3680 => U3680, + 3696 => U3696, + 3712 => U3712, + 3728 => U3728, + 3744 => U3744, + 3760 => U3760, + 3776 => U3776, + 3792 => U3792, + 3808 => U3808, + 3824 => U3824, + 3840 => U3840, + 3856 => U3856, + 3872 => U3872, + 3888 => U3888, + 3904 => U3904, + 3920 => U3920, + 3936 => U3936, + 3952 => U3952, + 3968 => U3968, + 3984 => U3984, + 4000 => U4000, + 4016 => U4016, + 4032 => U4032, + 4048 => U4048, + 4064 => U4064, + 4080 => U4080, + 4096 => U4096, }