From 66b3c812702a98a7b39261c37fce9fdade3168af Mon Sep 17 00:00:00 2001 From: Barani Muthukumaran Date: Thu, 6 Feb 2020 18:01:20 -0800 Subject: [PATCH] ANDROID: block: Prevent crypto fallback for wrapped keys blk-crypto-fallback does not support wrapped keys, hence prevent falling back when program_key fails. Add 'is_hw_wrapped' flag to blk-crypto-key to mention if the key is wrapped when the key is initialized. Bug: 147209885 Test: Validate FBE, simulate a failure in the underlying blk device and ensure the call fails without falling back to blk-crypto-fallback. Change-Id: I8bc301ca1ac9e55ba6ab622e8325486916b45c56 Signed-off-by: Barani Muthukumaran --- abi_gki_aarch64.xml | 27672 ++++++++++++++++---------------- block/blk-crypto-fallback.c | 6 + block/blk-crypto.c | 17 +- drivers/md/dm-default-key.c | 2 +- fs/crypto/fscrypt_private.h | 3 + fs/crypto/inline_crypt.c | 3 +- fs/crypto/keysetup.c | 14 +- fs/crypto/keysetup_v1.c | 2 +- include/linux/bio-crypt-ctx.h | 3 + include/linux/blk-crypto.h | 1 + 10 files changed, 13931 insertions(+), 13792 deletions(-) diff --git a/abi_gki_aarch64.xml b/abi_gki_aarch64.xml index bcd92a834021..de543c503d75 100644 --- a/abi_gki_aarch64.xml +++ b/abi_gki_aarch64.xml @@ -2328,6 +2328,14 @@ + + + + + + + + @@ -2376,35 +2384,35 @@ - + - - + + - - + + - - + + - + - + - - + + - + @@ -2412,47 +2420,47 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -2470,16 +2478,16 @@ - + - + - + @@ -2488,22 +2496,22 @@ - + - + - + - + @@ -2512,7 +2520,7 @@ - + @@ -2527,7 +2535,7 @@ - + @@ -2542,10 +2550,10 @@ - + - + @@ -2556,7 +2564,7 @@ - + @@ -2567,13 +2575,13 @@ - + - + @@ -2588,7 +2596,7 @@ - + @@ -2599,10 +2607,10 @@ - + - + @@ -2610,8 +2618,8 @@ - - + + @@ -2622,24 +2630,24 @@ - + - + - + - + - + - + @@ -2651,7 +2659,7 @@ - + @@ -2660,29 +2668,29 @@ - + - + - + - + - + - + - + @@ -2700,39 +2708,39 @@ - + - + - + - + - + - + - + - + @@ -2741,18 +2749,18 @@ - + - + - + - + @@ -2764,13 +2772,13 @@ - + - + @@ -2779,18 +2787,18 @@ - + - + - + - + - + @@ -2799,7 +2807,7 @@ - + @@ -2807,19 +2815,19 @@ - - - - - - - - + + + + + + + + - + @@ -2846,55 +2854,55 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2903,98 +2911,98 @@ - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - - - - - - - - - + + + + + - - - - - - - + + + + + - - + + + - + + + + + + - + @@ -3008,7 +3016,7 @@ - + @@ -3048,14 +3056,14 @@ - + - + @@ -3069,7 +3077,7 @@ - + @@ -3081,7 +3089,7 @@ - + @@ -3095,38 +3103,38 @@ - + - + - - + + - + - - + + - - - + + + - + @@ -3147,7 +3155,7 @@ - + @@ -3156,16 +3164,16 @@ - + - + - + - + @@ -3174,12 +3182,12 @@ - + - + @@ -3188,7 +3196,7 @@ - + @@ -3202,21 +3210,21 @@ - + - + - + - + @@ -3227,19 +3235,19 @@ - + - + - + - + @@ -3253,23 +3261,23 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + @@ -3281,69 +3289,69 @@ - + - + - + - + - + - - - - - - + + - - + + + + + + - - + + - + - + - - - - - + + + + + @@ -3367,16 +3375,16 @@ - + - + - + @@ -3385,15 +3393,15 @@ - - - - + + + + - - - + + + @@ -3415,24 +3423,24 @@ - + - + - + - + - + - + @@ -3444,58 +3452,58 @@ - + - + - - - + + - + + - + - + - - - - - - + - - + + - + + + + + + - - + + - - - + + + - + @@ -3504,72 +3512,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3578,10 +3586,10 @@ - + - + @@ -3605,25 +3613,25 @@ - + - + - + - + - + @@ -3632,7 +3640,7 @@ - + @@ -3662,19 +3670,19 @@ - + - + - + @@ -3685,30 +3693,30 @@ - + - + - + - + - + - + - + - + - + @@ -3720,7 +3728,7 @@ - + @@ -3728,7 +3736,7 @@ - + @@ -3739,152 +3747,152 @@ - + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + - + - + - - - - - - + - - + + + + + + + - - - - - - - - - + + + - - - + + + + + - + + + + + - - - + + + - + - + - + - + - - + + - - + + - - + + - + - + - - - + + + @@ -3905,22 +3913,22 @@ - + - + - + - + @@ -3929,7 +3937,7 @@ - + @@ -3938,59 +3946,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3999,7 +4007,7 @@ - + @@ -4016,225 +4024,225 @@ - - - - - - - + + + + + + + - + - + - + - + - - + + - - - - - - - + - + + + + + + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - + + - + - - - - - + + + + + - + - - + + - - + + - + - + - - + + - - + + - - + + @@ -4251,41 +4259,41 @@ - + - + - + - + - - + + - + - + - + - - + + - + + - @@ -4295,34 +4303,34 @@ - + - + - - + + - + - - + + - - + + - + @@ -4339,58 +4347,58 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + @@ -4399,16 +4407,16 @@ - + - + - + - + @@ -4423,10 +4431,10 @@ - + - + @@ -4435,22 +4443,22 @@ - + - + - + - + - + - + @@ -4459,7 +4467,7 @@ - + @@ -4471,10 +4479,10 @@ - + - + @@ -4482,43 +4490,43 @@ - + - + - + - + - + - + - + - + @@ -4533,7 +4541,7 @@ - + @@ -4542,7 +4550,7 @@ - + @@ -4551,25 +4559,25 @@ - + - + - + - + - + @@ -4584,7 +4592,7 @@ - + @@ -4602,78 +4610,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4683,9 +4691,9 @@ - + - + @@ -4694,133 +4702,133 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4844,37 +4852,37 @@ - + - + - + - + - + - + - + - + @@ -4897,28 +4905,28 @@ - + - + - + - + - + - + @@ -4933,13 +4941,13 @@ - + - + @@ -4951,17 +4959,17 @@ - + - + - - + + @@ -4972,21 +4980,21 @@ - + - + - + - + - + @@ -4995,18 +5003,18 @@ - + - + - + - + @@ -5096,7 +5104,7 @@ - + @@ -5108,68 +5116,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -5212,7 +5220,7 @@ - + @@ -5221,12 +5229,12 @@ - + - + - + @@ -5235,16 +5243,16 @@ - + - + - - + + @@ -5264,24 +5272,24 @@ - + - + - + - + - + @@ -5289,33 +5297,33 @@ - - + + - + - + - + - + - + - + - + @@ -5339,15 +5347,15 @@ - + - + - + @@ -5356,7 +5364,7 @@ - + @@ -5377,15 +5385,15 @@ - + - + - + @@ -5409,10 +5417,10 @@ - + - + @@ -5420,48 +5428,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5476,13 +5484,13 @@ - + - + @@ -5521,10 +5529,10 @@ - + - + @@ -5536,169 +5544,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5710,35 +5718,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -5750,62 +5758,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5826,10 +5834,10 @@ - + - + @@ -5840,7 +5848,7 @@ - + @@ -5855,18 +5863,18 @@ - + - + - + - + - + @@ -5880,7 +5888,7 @@ - + @@ -5897,24 +5905,24 @@ - + - + - + - + - + - + - + @@ -5926,50 +5934,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5978,16 +5986,16 @@ - + - + - + - + @@ -5996,131 +6004,131 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6135,33 +6143,33 @@ - + - + - + - + - + - + - + - + - + @@ -6170,7 +6178,7 @@ - + @@ -6182,52 +6190,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6241,35 +6249,35 @@ - + - + - + - + - + - + - + - + - + @@ -6278,24 +6286,24 @@ - + - + - + - + - + - + - + @@ -6304,7 +6312,7 @@ - + @@ -6312,12 +6320,12 @@ - + - + - + @@ -6332,75 +6340,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6439,22 +6447,22 @@ - + - + - + - + - + - + @@ -6463,21 +6471,21 @@ - + - + - + - + - + - + @@ -6492,44 +6500,44 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -6559,67 +6567,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6631,54 +6639,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6693,7 +6701,7 @@ - + @@ -6702,7 +6710,7 @@ - + @@ -6726,13 +6734,13 @@ - + - + @@ -6741,15 +6749,15 @@ - + - + - + - + @@ -6758,7 +6766,7 @@ - + @@ -6766,10 +6774,10 @@ - + - + @@ -6777,74 +6785,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6856,18 +6864,18 @@ - + - + - + - + @@ -6879,51 +6887,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6934,98 +6942,98 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7049,7 +7057,7 @@ - + @@ -7060,7 +7068,7 @@ - + @@ -7074,31 +7082,31 @@ - - + + - + - + - + - + - + - + - + - + @@ -7133,89 +7141,89 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7227,19 +7235,19 @@ - + - + - + - + - + @@ -7251,7 +7259,7 @@ - + @@ -7266,9 +7274,9 @@ - + - + @@ -7277,29 +7285,29 @@ - + - + - + - + - + - + - + - + @@ -7308,21 +7316,21 @@ - + - + - + - + - + @@ -7334,43 +7342,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7390,7 +7398,7 @@ - + @@ -7398,7 +7406,7 @@ - + @@ -7412,46 +7420,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -7463,7 +7471,7 @@ - + @@ -7481,13 +7489,13 @@ - + - + @@ -7513,16 +7521,16 @@ - + - + - + - + @@ -7573,10 +7581,10 @@ - + - + @@ -7587,9 +7595,9 @@ - + - + @@ -7607,13 +7615,13 @@ - + - + - + @@ -7628,30 +7636,30 @@ - + - + - + - + - + - + - + - + - + @@ -7681,43 +7689,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7743,7 +7751,7 @@ - + @@ -7787,7 +7795,7 @@ - + @@ -7816,13 +7824,13 @@ - + - + - + @@ -7830,107 +7838,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7950,7 +7958,7 @@ - + @@ -7970,7 +7978,7 @@ - + @@ -7990,44 +7998,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -8041,7 +8049,7 @@ - + @@ -8049,124 +8057,124 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8180,7 +8188,7 @@ - + @@ -8192,316 +8200,316 @@ - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8514,917 +8522,917 @@ - + - - + + - - + + - + - - + + - - + + - - - + + + - - - - - - - - - - - + - + + + - - + + - - - + + + - - - + + + + + + + - - - + + - - - - - + + + + - - - + + + + - - - - + + + - + + + + + + + - + - - - - - - - + + + - - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + - + - + - - - - + - - + + + + - - - - + + - - - + + + + - - - + + + - - + + + - - - + + - + + + - - - + - - - - + + + - - + + + + - - - - + + - - - - - - + + + + - - - - + + + + + - - - - - - - + + + + + - - - + + + + + - - - + + - - - - - + + + + + + - - - + + + + + - - - + + + - + - - - - - + + + - - + + + + + + - - + - - - + + - - + + + - - - - + + - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - + + + + + + + - + - + - - + + - - - - - - + + - - + + - - - + - - - + + + - - - - - + + + - + + + - - - - - - - - + + + + + + + + - - - - - - - + + + - - - + + + + + + + - - - - - + + + + - - + + - - + + - - + + + + + - + + + + + - - - - - + - + + + + + - - - - - + - - - + - + + + - + - - + - + + - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + - - + - - + + - + + - - + - - + + - - + + - - + + - - + + - - - + + - - + + + - - + + - + + - - + - - + + - - + + - - - + + - - + + + - - - - + + - - + + + + - - + + - - + - + + + - + + + + + - + - + - + - + - - + + - + - + - + - + @@ -9433,16 +9441,16 @@ - + - + - + @@ -9450,7 +9458,7 @@ - + @@ -9459,7 +9467,7 @@ - + @@ -9468,7 +9476,7 @@ - + @@ -9491,16 +9499,16 @@ - + - + - + - + @@ -9509,7 +9517,7 @@ - + @@ -9518,7 +9526,7 @@ - + @@ -9527,9 +9535,9 @@ - + - + @@ -9538,35 +9546,34 @@ - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + @@ -9574,7 +9581,7 @@ - + @@ -9585,7 +9592,7 @@ - + @@ -9593,18 +9600,18 @@ - + - + - + @@ -9613,15 +9620,15 @@ - + - + - + @@ -9632,15 +9639,7 @@ - - - - - - - - - + @@ -9649,7 +9648,7 @@ - + @@ -9660,65 +9659,73 @@ - - - - - + + + + + - + - + - + - + - + - + - + - + + + + + + + + + - - + + - - + + - - + + - + - + - + @@ -9728,22 +9735,22 @@ - + - + - + - + @@ -9751,79 +9758,79 @@ - - + + - - + + - + - + - + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + @@ -9832,27 +9839,27 @@ - + - + - + - + - + - + - + @@ -9861,7 +9868,7 @@ - + @@ -9872,7 +9879,7 @@ - + @@ -9881,13 +9888,13 @@ - + - + - + @@ -9902,12 +9909,12 @@ - + - + - + @@ -9916,7 +9923,7 @@ - + @@ -9927,10 +9934,10 @@ - + - + @@ -9954,59 +9961,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10018,24 +10025,24 @@ - + - + - + - + - + - + - + @@ -10046,156 +10053,156 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - - - + + + - + - - + + - - - - - - - + + - - + + - - - + + + - - + - - + - + + + + - - + - - - + + - + + - - - + + - - + + + - - + + + - + + + + + - + - + @@ -10204,50 +10211,50 @@ - + - + - + - - + + - + - + - - + + - - + + - + - + - + - - + + @@ -10260,28 +10267,28 @@ - + - + - + - + - + - + - + - + @@ -10292,7 +10299,7 @@ - + @@ -10306,7 +10313,7 @@ - + @@ -10322,7 +10329,7 @@ - + @@ -10332,85 +10339,85 @@ - - - - - + + + + + - - + + - + - + - + - + - - + + - + - + - + - + - - - + + + - + - - + + - + @@ -10418,7 +10425,7 @@ - + @@ -10427,64 +10434,56 @@ - + - - - - - - - - - + - + - + - + - - + + - + - - - - - + + + + + - + - - - + + + - - + + - + @@ -10495,8 +10494,8 @@ - - + + @@ -10524,12 +10523,12 @@ - + - + - + @@ -10824,89 +10823,89 @@ - + - + - + - + - - + + - - - + + + - + - + - + - - + + - + - + - - - - - + + + + + - - - + + + - - + + - + @@ -10930,7 +10929,7 @@ - + @@ -10942,7 +10941,7 @@ - + @@ -10954,7 +10953,7 @@ - + @@ -10995,7 +10994,7 @@ - + @@ -11025,10 +11024,10 @@ - + - + @@ -11067,7 +11066,7 @@ - + @@ -11099,27 +11098,27 @@ - + - + - + - + - + - + - + @@ -11151,10 +11150,10 @@ - + - + @@ -11168,13 +11167,13 @@ - + - + @@ -11188,18 +11187,18 @@ - + - + - + - + @@ -11229,16 +11228,16 @@ - + - + - + - + @@ -11254,10 +11253,10 @@ - + - + @@ -11266,7 +11265,7 @@ - + @@ -11280,10 +11279,10 @@ - + - + @@ -11292,7 +11291,7 @@ - + @@ -11300,10 +11299,10 @@ - + - + @@ -11323,7 +11322,7 @@ - + @@ -11429,10 +11428,10 @@ - + - + @@ -11443,16 +11442,16 @@ - + - + - + - + @@ -11654,7 +11653,7 @@ - + @@ -11670,7 +11669,7 @@ - + @@ -11759,10 +11758,10 @@ - + - + @@ -11784,10 +11783,10 @@ - + - + @@ -11803,22 +11802,22 @@ - + - + - + - + - + - + @@ -11874,19 +11873,19 @@ - + - + - + - + @@ -11901,7 +11900,7 @@ - + @@ -11919,13 +11918,13 @@ - + - + @@ -11957,10 +11956,10 @@ - + - + @@ -11989,7 +11988,7 @@ - + @@ -12038,10 +12037,10 @@ - + - + @@ -12055,7 +12054,7 @@ - + @@ -12209,7 +12208,7 @@ - + @@ -12290,7 +12289,7 @@ - + @@ -12332,7 +12331,7 @@ - + @@ -12343,12 +12342,12 @@ - + - + @@ -12420,7 +12419,7 @@ - + @@ -12429,7 +12428,7 @@ - + @@ -12443,21 +12442,7 @@ - - - - - - - - - - - - - - - + @@ -12465,7 +12450,7 @@ - + @@ -12474,27 +12459,27 @@ - + - - - - - - + + + + + + - + - + - - + + @@ -12505,14 +12490,14 @@ - + - + - - + + @@ -12526,7 +12511,7 @@ - + @@ -12541,20 +12526,20 @@ - + - + - + - - - + + + @@ -12567,16 +12552,16 @@ - + - + - + @@ -12584,11 +12569,11 @@ - + - + @@ -12609,11 +12594,11 @@ - + - - + + @@ -12630,7 +12615,7 @@ - + @@ -12649,12 +12634,12 @@ - + - + - + @@ -12675,13 +12660,13 @@ - + - + - + @@ -12698,20 +12683,20 @@ - + - + - + - + - - + + @@ -12737,7 +12722,7 @@ - + @@ -12745,61 +12730,61 @@ + - - - - + + + - - + + - + + + + + - + + + - - - - - - - - + + - + - + - + - + - + - + - + @@ -12841,25 +12826,25 @@ - + - + - + - + - + - + - + @@ -12870,16 +12855,16 @@ - + - - + + - + - + @@ -12887,26 +12872,18 @@ - + - + - - - - - - - - - - + + - + @@ -12921,13 +12898,13 @@ - + - + - + @@ -12935,7 +12912,7 @@ - + @@ -12950,10 +12927,10 @@ - + - + @@ -12964,12 +12941,12 @@ - + - + @@ -12978,7 +12955,7 @@ - + @@ -12993,15 +12970,15 @@ - + - + - + - + @@ -13013,48 +12990,48 @@ - - - - - - - + + + + + + + - - - + + + - - + + - - - + + + - + - + - + - + - + @@ -13063,7 +13040,7 @@ - + @@ -13077,7 +13054,7 @@ - + @@ -13085,14 +13062,14 @@ - - + + - + @@ -13102,7 +13079,7 @@ - + @@ -13146,7 +13123,7 @@ - + @@ -13154,34 +13131,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -13195,13 +13172,13 @@ - - + + + + - - - - + + @@ -13212,26 +13189,26 @@ - + - + - + - + - + @@ -13245,20 +13222,20 @@ - + - + - + - + @@ -13268,20 +13245,20 @@ - + - + - + - - + + @@ -13292,13 +13269,13 @@ - + - + - + @@ -13310,10 +13287,10 @@ - + - + @@ -13322,13 +13299,13 @@ - + - + - + @@ -13349,7 +13326,7 @@ - + @@ -13358,60 +13335,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13419,18 +13396,18 @@ - + - + - + - + - + @@ -13439,78 +13416,78 @@ - - - + + + + + - - + + - - - - - - - - + + + + + + - + - + - + - + - + - + - - - - - - + - + + + + + + - + - + - + - + - + @@ -13518,14 +13495,14 @@ - + - + @@ -13554,19 +13531,19 @@ - + - - + + - - + + - + @@ -13574,19 +13551,19 @@ - + - + - + - + - + @@ -13594,177 +13571,177 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + + + - - - - - - - + + + + + + + - - - + - + - + - + - + - - + + - + - + - + + + + + + + + + + + - + + - - - + + + - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + - - + + - + - + @@ -13772,109 +13749,109 @@ - - + + - - + + - + - + - - + + - - + + - + - + - - + + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - - + + - + - - + + - + - + - + - + @@ -13883,25 +13860,25 @@ - + - + - + - + - + - + @@ -13949,43 +13926,43 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -14026,16 +14003,16 @@ - + - + - + - + @@ -14050,26 +14027,26 @@ - + - + - + - + - + - + @@ -14078,43 +14055,43 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -14207,22 +14184,22 @@ - + - + - + - + - + @@ -14231,7 +14208,7 @@ - + @@ -14243,7 +14220,7 @@ - + @@ -14253,9 +14230,9 @@ - + - + @@ -14276,15 +14253,15 @@ - + - + - + - + @@ -14293,10 +14270,10 @@ - + - + @@ -14308,84 +14285,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14397,107 +14374,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14506,130 +14483,130 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14665,77 +14642,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14743,7 +14720,7 @@ - + @@ -14757,9 +14734,9 @@ - + - + @@ -14780,13 +14757,13 @@ - + - + - + @@ -14804,7 +14781,7 @@ - + @@ -14822,10 +14799,10 @@ - + - + @@ -14843,18 +14820,18 @@ - + - + - + - + @@ -14866,8 +14843,8 @@ - - + + @@ -14881,7 +14858,7 @@ - + @@ -14892,140 +14869,140 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15036,52 +15013,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15093,40 +15070,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -15134,42 +15111,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -15177,10 +15154,10 @@ - + - + @@ -15189,39 +15166,39 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -15241,15 +15218,15 @@ - + - + - + @@ -15266,15 +15243,15 @@ - + - + - + - + @@ -15282,13 +15259,13 @@ - + - + @@ -15314,15 +15291,15 @@ - + - + - + @@ -15333,15 +15310,15 @@ - + - + - + - + @@ -15350,143 +15327,143 @@ - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + + + + + + + + + - - + + + - + - - + + - + + - - + + + - - + + - - - - - - - - - - - - + @@ -15494,211 +15471,211 @@ - - + + - - - + + + - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + - - - - + + + - - - - - - + - - - - + + - + + - - + + - - + - - + + - + + - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + - - - + + + - - + + - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - + - - - - + + + + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - + @@ -15707,31 +15684,31 @@ - + - + - + - + - + - + @@ -15740,16 +15717,16 @@ - + - + - + @@ -15764,18 +15741,18 @@ - + - + - + - + @@ -15793,25 +15770,25 @@ - + - + - + - + - + - + @@ -15820,23 +15797,23 @@ - + - + - + - + - + - + @@ -15845,35 +15822,35 @@ - + - + - + - + - + - + - + - + - + @@ -15882,7 +15859,7 @@ - + @@ -15890,68 +15867,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15972,18 +15949,18 @@ - + - + - + - + - + @@ -16003,8 +15980,8 @@ - - + + @@ -16012,7 +15989,7 @@ - + @@ -16026,12 +16003,82 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -16040,13 +16087,13 @@ - + - + - + @@ -16055,19 +16102,19 @@ - + - + - + - + @@ -16076,16 +16123,16 @@ - + - + - + @@ -16115,58 +16162,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16175,61 +16222,61 @@ - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - - + + - + - + - + @@ -16270,12 +16317,12 @@ - + - + - + @@ -16284,10 +16331,10 @@ - + - + @@ -16295,22 +16342,22 @@ - + - + - - + + - + @@ -16319,60 +16366,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + @@ -16380,113 +16427,113 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - + + + + + + - - + + - - + + - - + + - - - - - - - - - + + + + + - - + + + + + + - - + + - - - + + + - + - + - + - + - + - + @@ -16498,7 +16545,7 @@ - + @@ -16513,7 +16560,7 @@ - + @@ -16528,10 +16575,10 @@ - + - + @@ -16540,7 +16587,7 @@ - + @@ -16549,7 +16596,7 @@ - + @@ -16558,22 +16605,22 @@ - + - + - + - + @@ -16588,92 +16635,92 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - - + + - + - + - + - + - - + + - - + + - - + + @@ -16681,13 +16728,13 @@ - + - + @@ -16714,48 +16761,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16763,7 +16810,7 @@ - + @@ -16790,7 +16837,7 @@ - + @@ -16805,7 +16852,7 @@ - + @@ -16825,12 +16872,12 @@ - + - + - + @@ -16842,33 +16889,33 @@ - + - + - + - + - + - + - + - + - + @@ -16883,12 +16930,12 @@ - + - + - + @@ -16900,225 +16947,225 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - + - + + - - - - - - + + + + + + - - + + + - + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - + + + - - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -17158,13 +17205,13 @@ - + - - + + @@ -17176,8 +17223,8 @@ - - + + @@ -17191,39 +17238,39 @@ - + - + - + - + - + - - + + - + - + @@ -17238,17 +17285,17 @@ - - + + - + - + @@ -17256,80 +17303,80 @@ - + - + - - + + - + - + - - + + - - - + + + - - + + - + - + - + - - + + - + - + - + - + - - + + - - + + - + - + @@ -17337,114 +17384,113 @@ - + - + - + - + - + - - + + - - - - - + + + + + - + - + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + - - + + + + + + + + + + + + - - + + - - + + - - + + - - - + + - + - - + + @@ -17587,7 +17633,7 @@ - + @@ -17602,12 +17648,12 @@ - + - + - + @@ -17616,26 +17662,26 @@ - + - + - + - + - + - + - + @@ -17643,19 +17689,19 @@ - + - + - + - + - + @@ -17664,13 +17710,13 @@ - + - + - + @@ -17691,24 +17737,24 @@ - + - + - + - + - + @@ -17720,36 +17766,36 @@ - + - + - + - + - + - + - + - + - + - + @@ -17782,19 +17828,19 @@ - + - + - + - + - + @@ -17805,7 +17851,7 @@ - + @@ -17814,24 +17860,24 @@ - + - + - + - + - + - + @@ -17842,7 +17888,7 @@ - + @@ -17853,50 +17899,48 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -17908,134 +17952,134 @@ - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + @@ -18047,7 +18091,7 @@ - + @@ -18097,591 +18141,591 @@ - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - - + + - + - + - - + + - + - + - - + + - - + + - + - - + + - - + + - - - - + + + + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - + - + - - + + - + - - + + - - + + - - + + - + - + - + - + - + - + @@ -18693,7 +18737,7 @@ - + @@ -18701,29 +18745,29 @@ - + - + - + - + - + - + - + @@ -18740,30 +18784,30 @@ - + - + - + - + - + - + - + @@ -18778,16 +18822,16 @@ - + - + - + - + @@ -18798,22 +18842,22 @@ - + - + - + - + - + @@ -18824,35 +18868,35 @@ - + - + - + - + - + - + - - + + - + @@ -18863,17 +18907,17 @@ - + - + - + - + @@ -18882,48 +18926,48 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -18932,28 +18976,28 @@ - + - + - + - + - + - + @@ -18971,13 +19015,13 @@ - + - + @@ -18985,44 +19029,44 @@ - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + @@ -19035,10 +19079,10 @@ - + - + @@ -19046,27 +19090,27 @@ - - - - - + + + + + - + - + - + - + @@ -19077,22 +19121,22 @@ - + - - - - - - + + + + + + - - + + @@ -19106,14 +19150,14 @@ - - + + - + - + @@ -19124,7 +19168,7 @@ - + @@ -19133,7 +19177,7 @@ - + @@ -19148,22 +19192,22 @@ - + - + - + - + @@ -19181,7 +19225,7 @@ - + @@ -19193,10 +19237,10 @@ - + - + @@ -19208,13 +19252,13 @@ - + - + @@ -19229,13 +19273,13 @@ - + - + @@ -19247,10 +19291,10 @@ - + - + @@ -19262,52 +19306,52 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -19316,18 +19360,18 @@ - + - + - + - + @@ -19350,10 +19394,10 @@ - + - + @@ -19368,87 +19412,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19460,19 +19504,19 @@ - + - + - + - + @@ -19481,10 +19525,10 @@ - + - + @@ -19493,10 +19537,10 @@ - + - + @@ -19505,19 +19549,19 @@ - + - + - + - + - + @@ -19529,19 +19573,19 @@ - + - + - + - + - + @@ -19556,22 +19600,22 @@ - + - + - + - + @@ -19583,20 +19627,20 @@ - + - + - + @@ -19607,10 +19651,10 @@ - + - + @@ -19624,16 +19668,16 @@ - + - + - + - + @@ -19651,7 +19695,7 @@ - + @@ -19662,120 +19706,120 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - - + + - + - + - + - + - + - + - + - - + + - + - - - - + + + + - + - - - + + + @@ -19783,13 +19827,13 @@ - + - + @@ -19798,36 +19842,36 @@ - + - + - + - + - + - + - + - + - + @@ -19835,23 +19879,23 @@ - + - + - + - + - + @@ -19860,18 +19904,18 @@ - + - + - + - + @@ -19880,7 +19924,7 @@ - + @@ -19888,11 +19932,11 @@ - + - + @@ -19906,22 +19950,30 @@ - + - + - + - + - + - + + + + + + + + + @@ -19931,33 +19983,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -19974,62 +20026,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20038,22 +20090,22 @@ - + - + - + - + - + - + @@ -20071,55 +20123,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20128,7 +20180,7 @@ - + @@ -20137,48 +20189,40 @@ - + - - - - - - - - - - + + - + - + - + - + - + - + - + - + - + @@ -20186,10 +20230,10 @@ - + - + @@ -20200,15 +20244,15 @@ - + - + - + - + @@ -20219,34 +20263,34 @@ - + - + - + - + - + - + - + - + @@ -20255,22 +20299,22 @@ - + - + - + - + - + - + @@ -20285,7 +20329,7 @@ - + @@ -20300,13 +20344,13 @@ - + - + @@ -20339,13 +20383,13 @@ - + - + - + @@ -20357,150 +20401,150 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - - - + + + - + - + @@ -20512,38 +20556,38 @@ - + - + - + - + - + - + - + - + - + - - + + @@ -20554,35 +20598,35 @@ - + - + - + - + - + - + - + - + - + @@ -20591,22 +20635,22 @@ - + - + - + - + - + - + @@ -20618,7 +20662,7 @@ - + @@ -20633,49 +20677,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20684,25 +20728,25 @@ - + - + - + - + @@ -20714,19 +20758,19 @@ - + - + - + - + @@ -20735,7 +20779,7 @@ - + @@ -20753,7 +20797,7 @@ - + @@ -20761,139 +20805,139 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20901,13 +20945,13 @@ - + - + - + @@ -20928,10 +20972,10 @@ - + - + @@ -20952,14 +20996,14 @@ - + - + - + @@ -20983,10 +21027,10 @@ - + - + @@ -21010,13 +21054,13 @@ - + - + @@ -21025,7 +21069,7 @@ - + @@ -21034,16 +21078,16 @@ - + - + - + - + @@ -21052,10 +21096,10 @@ - + - + @@ -21066,7 +21110,7 @@ - + @@ -21075,7 +21119,7 @@ - + @@ -21093,25 +21137,25 @@ - + - + - + - + @@ -21120,17 +21164,17 @@ - + - - + + - - + + @@ -21143,22 +21187,22 @@ - + - + - - + + - + - + @@ -21173,7 +21217,7 @@ - + @@ -21212,19 +21256,19 @@ - + - + - + - + - + @@ -21233,19 +21277,19 @@ - + - + - + @@ -21263,16 +21307,16 @@ - + - + - + @@ -21281,10 +21325,10 @@ - + - + @@ -21341,13 +21385,13 @@ - + - + - + @@ -21374,10 +21418,10 @@ - + - + @@ -21386,13 +21430,13 @@ - + - + - + @@ -21404,13 +21448,13 @@ - + - + @@ -21431,52 +21475,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21488,19 +21532,19 @@ - + - + - + - + @@ -21512,46 +21556,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -21566,10 +21610,10 @@ - + - + @@ -21578,43 +21622,43 @@ - + - + - + - + - + - + - + - + - + @@ -21638,7 +21682,7 @@ - + @@ -21650,13 +21694,13 @@ - + - + @@ -21665,7 +21709,7 @@ - + @@ -21674,15 +21718,15 @@ - + - + - + @@ -21694,16 +21738,16 @@ - - + + - + - + @@ -21727,25 +21771,25 @@ - + - + - + - + - + - + @@ -21753,7 +21797,7 @@ - + @@ -21779,7 +21823,7 @@ - + @@ -21836,8 +21880,8 @@ - - + + @@ -21863,10 +21907,10 @@ - + - + @@ -21874,7 +21918,7 @@ - + @@ -21894,21 +21938,21 @@ - + - + - + - + - + - + @@ -21926,7 +21970,7 @@ - + @@ -21958,16 +22002,16 @@ - + - + - + - + @@ -21979,49 +22023,49 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -22057,33 +22101,33 @@ - + - + - + - + - + - - - + + + - + - - + + @@ -22097,7 +22141,7 @@ - + @@ -22111,7 +22155,7 @@ - + @@ -22122,15 +22166,15 @@ - + - + - + - + @@ -22273,7 +22317,7 @@ - + @@ -22288,7 +22332,7 @@ - + @@ -22302,7 +22346,7 @@ - + @@ -22317,16 +22361,16 @@ - + - + - + @@ -22341,27 +22385,27 @@ - + - + - - + + - + - + - + @@ -22373,63 +22417,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -22446,62 +22490,62 @@ - + - + - + - + - + - + - - + + - + - - - + + + - + - - + + - + - - - + + + - + - + - + @@ -22520,13 +22564,13 @@ - + - + @@ -22534,7 +22578,7 @@ - + @@ -22543,18 +22587,18 @@ - + - + - + - + @@ -22569,7 +22613,7 @@ - + @@ -22587,84 +22631,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -22679,14 +22723,14 @@ - + - + - + @@ -22700,32 +22744,32 @@ - + - + - + - + - + - + - + - + - + @@ -22733,7 +22777,7 @@ - + @@ -22744,7 +22788,7 @@ - + @@ -22752,38 +22796,38 @@ - + - - + + - + - + - + - + - + - + @@ -22804,16 +22848,16 @@ - + - + - + - + @@ -22831,13 +22875,13 @@ - + - + - + @@ -22848,23 +22892,23 @@ - + - + - + - + - + - + @@ -22875,24 +22919,24 @@ - + - + - + - + - + - + @@ -22910,7 +22954,7 @@ - + @@ -22919,7 +22963,7 @@ - + @@ -22934,7 +22978,7 @@ - + @@ -22946,21 +22990,21 @@ - + - + - + - + - + - + @@ -22978,22 +23022,22 @@ - + - + - + - + - + @@ -23001,7 +23045,7 @@ - + @@ -23010,16 +23054,16 @@ - + - + - + - + @@ -23028,28 +23072,28 @@ - + - + - + - + - + - + - + @@ -23061,28 +23105,28 @@ - + - + - + - + - + - + - + @@ -23094,22 +23138,22 @@ - + - + - + - + - + @@ -23124,7 +23168,7 @@ - + @@ -23132,38 +23176,38 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -23172,87 +23216,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23272,52 +23316,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23328,7 +23372,7 @@ - + @@ -23340,57 +23384,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23399,9 +23443,9 @@ - + - + @@ -23414,13 +23458,13 @@ - - + + - + @@ -23437,17 +23481,17 @@ - + - + - + @@ -23491,10 +23535,10 @@ - + - + @@ -23512,7 +23556,7 @@ - + @@ -23521,10 +23565,10 @@ - + - + @@ -23569,10 +23613,10 @@ - + - + @@ -23593,25 +23637,25 @@ - + - + - + - + - + - - + + @@ -23619,7 +23663,7 @@ - + @@ -23633,28 +23677,28 @@ - + - + - + - + - + - + - + @@ -23681,15 +23725,15 @@ - + - + - + @@ -23703,11 +23747,11 @@ - + - - + + @@ -23715,14 +23759,14 @@ - + - + @@ -23733,23 +23777,23 @@ - + - + - + - + - + - + - + @@ -23760,7 +23804,7 @@ - + @@ -23768,7 +23812,7 @@ - + @@ -23776,28 +23820,28 @@ - + - + - + - + - + - + - + @@ -23809,80 +23853,80 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23890,10 +23934,10 @@ - + - + @@ -23904,13 +23948,13 @@ - + - + - + @@ -23918,10 +23962,10 @@ - + - + @@ -23938,56 +23982,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23996,7 +24040,7 @@ - + @@ -24004,10 +24048,10 @@ - + - + @@ -24016,8 +24060,8 @@ - - + + @@ -24025,10 +24069,10 @@ - + - + @@ -24039,10 +24083,10 @@ - + - + @@ -24051,13 +24095,13 @@ - + - + - + @@ -24075,25 +24119,25 @@ - + - + - + - + - + @@ -24101,55 +24145,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -24157,67 +24201,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24226,22 +24270,22 @@ - + - + - + - + @@ -24262,7 +24306,7 @@ - + @@ -24304,19 +24348,19 @@ - + - + - + @@ -24325,13 +24369,13 @@ - + - + - + @@ -24346,13 +24390,13 @@ - + - + @@ -24364,7 +24408,7 @@ - + @@ -24373,10 +24417,10 @@ - + - + @@ -24385,31 +24429,31 @@ - + - + - + - + - + - + @@ -24424,18 +24468,18 @@ - + - + - + - + - + @@ -24447,19 +24491,19 @@ - + - + - + - + - + @@ -24470,7 +24514,7 @@ - + @@ -24479,7 +24523,7 @@ - + @@ -24491,7 +24535,7 @@ - + @@ -24503,13 +24547,13 @@ - + - + @@ -24533,7 +24577,7 @@ - + @@ -24548,7 +24592,7 @@ - + @@ -24557,11 +24601,11 @@ - + - - + + @@ -24581,7 +24625,7 @@ - + @@ -24596,37 +24640,37 @@ - + - + - + - + - + - + - + - + @@ -24638,19 +24682,19 @@ - + - + - + - - + + - + @@ -24665,8 +24709,8 @@ - - + + @@ -24689,10 +24733,10 @@ - + - + @@ -24701,11 +24745,11 @@ - + - + - + @@ -24716,24 +24760,24 @@ - + - + - + - + - + - + @@ -24760,15 +24804,15 @@ - + - + - + - + @@ -24804,13 +24848,13 @@ - + - + - + @@ -24825,77 +24869,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24904,7 +24948,7 @@ - + @@ -24919,39 +24963,39 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -24962,7 +25006,7 @@ - + @@ -24970,18 +25014,18 @@ - + - + - + - + - + @@ -24990,31 +25034,31 @@ - + - + - + - + - + - + - + @@ -25023,7 +25067,7 @@ - + @@ -25032,41 +25076,41 @@ - + - + - + - + - + - + - + - + - + @@ -25083,100 +25127,100 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25203,27 +25247,27 @@ - + - + - + - + - + - + @@ -25238,72 +25282,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25312,18 +25356,18 @@ - + - + - + - + - + @@ -25335,10 +25379,10 @@ - + - + @@ -25359,59 +25403,62 @@ - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + @@ -25419,34 +25466,34 @@ - + - + - + - + - + - + - - + + @@ -25457,24 +25504,24 @@ - + - + - + - + - - - + + + @@ -25482,15 +25529,15 @@ - + - + - + - + @@ -25498,22 +25545,22 @@ - + - - + + - + - + - + @@ -25522,33 +25569,33 @@ - - + + - + - + - + - + - + - + - + @@ -25557,7 +25604,7 @@ - + @@ -25566,15 +25613,15 @@ - + - + - + - + @@ -25583,10 +25630,10 @@ - + - + @@ -25598,206 +25645,206 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + @@ -25818,7 +25865,7 @@ - + @@ -25835,7 +25882,7 @@ - + @@ -25915,17 +25962,17 @@ - + - + - - + + @@ -25936,24 +25983,24 @@ - + - + - + - + - + - + - + @@ -25967,10 +26014,10 @@ - + - + @@ -25985,7 +26032,7 @@ - + @@ -26000,10 +26047,10 @@ - + - + @@ -26012,7 +26059,7 @@ - + @@ -26045,7 +26092,7 @@ - + @@ -26054,17 +26101,17 @@ - - - + + + - + - + @@ -26075,7 +26122,7 @@ - + @@ -26087,15 +26134,15 @@ - + - + - + - + @@ -26104,10 +26151,10 @@ - + - + @@ -26116,17 +26163,17 @@ - + - - - + + + - + - + @@ -26140,10 +26187,10 @@ - + - + @@ -26164,35 +26211,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -26204,7 +26251,7 @@ - + @@ -26225,19 +26272,19 @@ - + - + - + - + - + @@ -26252,7 +26299,7 @@ - + @@ -26261,19 +26308,19 @@ - + - + - + - + - + @@ -26288,7 +26335,7 @@ - + @@ -26300,7 +26347,7 @@ - + @@ -26309,10 +26356,10 @@ - + - + @@ -26320,7 +26367,7 @@ - + @@ -26334,7 +26381,7 @@ - + @@ -26361,7 +26408,7 @@ - + @@ -26375,27 +26422,27 @@ - + - + - + - + - + - + @@ -26403,51 +26450,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26459,52 +26506,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26516,15 +26563,15 @@ - + - + - + - + @@ -26533,23 +26580,23 @@ - + - + - + - + - + - + - + @@ -26567,10 +26614,10 @@ - + - + @@ -26579,7 +26626,7 @@ - + @@ -26588,10 +26635,10 @@ - + - + @@ -26600,42 +26647,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -26659,10 +26706,10 @@ - + - + @@ -26671,7 +26718,7 @@ - + @@ -26680,7 +26727,7 @@ - + @@ -26698,27 +26745,27 @@ - + - + - + - + - + - + - + - + @@ -26729,86 +26776,86 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26816,19 +26863,19 @@ - + - + - + - + @@ -26860,7 +26907,7 @@ - + @@ -26893,122 +26940,122 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -27016,31 +27063,31 @@ - + - + - + - + - + - + - + @@ -27049,21 +27096,21 @@ - + - + - - - - + + + + - + @@ -27072,43 +27119,43 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -27131,27 +27178,27 @@ - + - + - + - + - + - + - + @@ -27172,33 +27219,33 @@ - + - + - + - + - + - + - + - + @@ -27207,35 +27254,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -27246,26 +27293,26 @@ - + - + - + - + - + - + @@ -27276,104 +27323,104 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27385,34 +27432,34 @@ - + - + - + - + - + - + - + - + @@ -27421,38 +27468,38 @@ - + - + - + - + - + - + - + - + - + - + @@ -27470,7 +27517,7 @@ - + @@ -27479,7 +27526,7 @@ - + @@ -27491,13 +27538,13 @@ - + - + - + @@ -27506,59 +27553,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27570,7 +27617,7 @@ - + @@ -27581,16 +27628,16 @@ - + - + - + - + @@ -27599,38 +27646,38 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -27638,23 +27685,23 @@ - + - + - + - + - + - + - + @@ -27666,14 +27713,14 @@ - + - + - - + + @@ -27684,61 +27731,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - - + + + @@ -27746,57 +27793,57 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -27805,15 +27852,15 @@ - + - + - + @@ -27821,7 +27868,7 @@ - + @@ -27832,15 +27879,15 @@ - + - + - + @@ -27852,34 +27899,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -27891,8 +27938,8 @@ - - + + @@ -27903,66 +27950,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27982,55 +28029,55 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + @@ -28045,19 +28092,19 @@ - + - + - + - - + + @@ -28065,27 +28112,27 @@ - + - + - + - + - + - + @@ -28099,13 +28146,13 @@ - + - + @@ -28141,37 +28188,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -28192,7 +28239,7 @@ - + @@ -28237,54 +28284,54 @@ - + - + - + - + - + - + - + - + - + - - + + - + @@ -28292,9 +28339,9 @@ - + - + @@ -28303,7 +28350,7 @@ - + @@ -28314,16 +28361,16 @@ - - + + - + - + @@ -28349,51 +28396,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -28411,132 +28458,132 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + @@ -28547,53 +28594,53 @@ - + - - + + - + - + - + - + - + - + - - - + + + - + - + - + - + - + @@ -28635,7 +28682,7 @@ - + @@ -28653,7 +28700,7 @@ - + @@ -28661,8 +28708,8 @@ - - + + @@ -28673,36 +28720,36 @@ - + - + - + - + - + - + - + - + @@ -28712,21 +28759,21 @@ - + - + - + - - + + - + @@ -28741,12 +28788,12 @@ - + - + - + @@ -28770,12 +28817,12 @@ - + - + - + @@ -28796,10 +28843,10 @@ - + - + @@ -28840,7 +28887,7 @@ - + @@ -28848,12 +28895,12 @@ - + - + - + @@ -28862,11 +28909,11 @@ - + - - + + @@ -28877,13 +28924,13 @@ - + - + - + @@ -28891,27 +28938,27 @@ - + - + - + - + - + - + @@ -28923,9 +28970,9 @@ - + - + @@ -28937,7 +28984,7 @@ - + @@ -28946,84 +28993,84 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + @@ -29037,80 +29084,80 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29136,7 +29183,7 @@ - + @@ -29159,10 +29206,10 @@ - + - + @@ -29180,21 +29227,21 @@ - + - + - + - + @@ -29220,14 +29267,14 @@ - + - + - - + + @@ -29238,24 +29285,24 @@ - + - + - + - + - + - + - + @@ -29263,18 +29310,18 @@ - + - + - + - + - + @@ -29292,69 +29339,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29363,13 +29410,13 @@ - + - + @@ -29377,7 +29424,7 @@ - + @@ -29386,76 +29433,76 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29473,12 +29520,12 @@ - + - + - + @@ -29490,21 +29537,21 @@ - + - + - + - + @@ -29512,137 +29559,137 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + @@ -29657,19 +29704,19 @@ - + - + - + - + @@ -29678,18 +29725,18 @@ - + - + - + - + - + @@ -29698,7 +29745,7 @@ - + @@ -29707,91 +29754,91 @@ - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29799,7 +29846,7 @@ - + @@ -29813,7 +29860,7 @@ - + @@ -29821,32 +29868,32 @@ - + - + - + - + - + - + - + - + @@ -29854,7 +29901,7 @@ - + @@ -29863,27 +29910,27 @@ - + - + - + - + - + - + - + @@ -29891,7 +29938,7 @@ - + @@ -29908,37 +29955,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -29946,27 +29993,27 @@ - + - + - + - + - + - + - + - + @@ -29974,7 +30021,7 @@ - + @@ -29982,47 +30029,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -30030,7 +30077,7 @@ - + @@ -30041,13 +30088,13 @@ - + - + @@ -30055,7 +30102,7 @@ - + @@ -30072,36 +30119,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -30110,58 +30157,58 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - - + + @@ -30175,9 +30222,9 @@ - + - + @@ -30186,10 +30233,10 @@ - - + + - + @@ -30198,18 +30245,18 @@ - + - + - + - - - + + + @@ -30220,12 +30267,12 @@ - + - + - + @@ -30234,13 +30281,13 @@ - + - + @@ -30255,7 +30302,7 @@ - + @@ -30264,22 +30311,22 @@ - - + + - + - - + + - + - + @@ -30290,35 +30337,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -30329,112 +30376,112 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30443,29 +30490,29 @@ - + - + - + - + - + - + - + - + @@ -30480,7 +30527,7 @@ - + @@ -30489,7 +30536,7 @@ - + @@ -30504,23 +30551,23 @@ - + - + - + - + @@ -30530,9 +30577,9 @@ - + - + @@ -30540,7 +30587,7 @@ - + @@ -30559,10 +30606,10 @@ - + - + @@ -30588,13 +30635,13 @@ - + - + - + @@ -30608,7 +30655,7 @@ - + @@ -30616,10 +30663,10 @@ - + - + @@ -30636,29 +30683,29 @@ - + - + - + - + - + - + @@ -30666,16 +30713,16 @@ - - + + - + - + @@ -30687,7 +30734,7 @@ - + @@ -30696,7 +30743,7 @@ - + @@ -30708,19 +30755,19 @@ - + - + - + - + - + @@ -30729,20 +30776,20 @@ - + - + - + - + - + @@ -30751,90 +30798,90 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30842,7 +30889,7 @@ - + @@ -30850,23 +30897,23 @@ - + - + - + - + - + - + - + @@ -30876,795 +30923,795 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + + + + + + - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -31676,27 +31723,27 @@ - - + + - + - + - - + + - - + + - + @@ -31706,39 +31753,39 @@ - - + + - + - - + + - - + + - + - - + + - + @@ -31749,11 +31796,11 @@ - + - + @@ -31773,927 +31820,927 @@ - + - - - - - - - - - + + + - - + + + - - - + - - + + + + - - - - - + + + + - + + + + + + + - + - + - + - - - - - - - - + + + - - - - - + + + - - - - - - - - + - + - - + + + + + + + + + - + + + - - - - - - - - - - - - - + + + + - - + + + + + + + + + + + + - - - - + + - - - + + + + + - - - + + - - - + + + - - + + + - - - + + + - + + - - - + - - - - + + + + - - + + - - + + - - + + - - + + + + + + + - - - + + + - - - - - - + + - - - + - - - + + + - + + + - - + - - + + - + + - - + - - - - + + - + + - - + - + - - - - + + - + + + + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - - - - - - - - - - + + + - - - - - - + + + - - + + - - + + + + + + + + + - + + - + - + + + + + - - - - - - - - + + - - + + + - - + + - + + - - + - + - - - - - - + + + + + + + - + - - - - - + + - - - - - + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + - + - - - - + - - - + + + + - + + + - - + + - - + + - + - - + + + - + - - + - - - + + - - - - - + + + - - - - + + + + - - - + + + + + - - - - + + + - - - - + + + + - - - - + + + + - - + + + + - - + + - - + + - - - + + - - + + + - - - + + - - + + + - + + + + + + - - - - - - - + - - + + - + + + - - + - - - + + - - - - + + + - + + + + + + + + - - + + - - - - - + - + - + - - + - + + - - - + - + + - + + - - + - - + + - - - - - + + + + + + - - - + - + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + + - + - + + - + - - - + + - - - + + - - - - + + + - + - + + - - + + + - - - + + - + + + + + + + - - - - - - - - - - - - - + + + + + + + + - - - + + - + + + - + - - - + - - + + + - - - + + - - - + + + - - - + + + - - - - + + + - + + + + - - - - + + + + + + + + @@ -32701,314 +32748,314 @@ - + - - - - - - - - - + + + + + + + + + - - - - - - + - - - + + + + - - + + + + + + - - + + - + - - - + + + - - + + - + - - - - - - - - - - - - - + + + - + + + + + + + + - - - + - + + - - + - + + - + - - + + + + + + - + - + - - - - - + + - - - - + - - - + + + + - - - + + + - - - - + + + - + - + + - - - - + + + - - + + - - + - + - - + + + + + + + + + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - + - - + + + + - - + + - - - + + + + + - - - - + + + - - - - + + + - - - - + + + + + - - - - - + + + + - - - + + + - - + - + + + + + + + + + - - + + - - + + - - - - - + + - - - - - - + + + - + - + - - + + + + - - - + + - + + + + + + - + @@ -33016,187 +33063,183 @@ - - - - - - + - + + + + + + - - - - - - + + - + + + + + - + - - - - - - - + - - + + + - - + + - + + - + - - + - + + - + - - + - - - - + + - + + + + - - + - + + - - - + + - + - - - - - + + - + + + + + - - - + + + - - + - - + + - + + - + - - + + - - - - - - - - - - + - + + + + + + + + + + @@ -33204,279 +33247,283 @@ - - - + - + + + - - - + + + - + - - + + - + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - + - + - - + - + + - - - + - - - - - - + + + - + + + + + + - + + - - - + + - + - - + + + + + + - - - - - - - + - + + + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33484,54 +33531,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33539,15 +33586,15 @@ - + - + - + @@ -33555,7 +33602,7 @@ - + @@ -33571,7 +33618,7 @@ - + @@ -33584,7 +33631,7 @@ - + @@ -33595,7 +33642,7 @@ - + @@ -33603,7 +33650,7 @@ - + @@ -33622,15 +33669,15 @@ - + - + - + @@ -33638,8 +33685,8 @@ - - + + @@ -33652,137 +33699,137 @@ - - + + - - + + - + - - + + - + - - + + - - + + - - + + - + - + - + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -33790,26 +33837,26 @@ - - + + - + - + - + - + - + - + @@ -33817,15 +33864,15 @@ - + - + - + - + @@ -33861,28 +33908,28 @@ - + - + - + - + - + - + - + - + @@ -33891,7 +33938,7 @@ - + @@ -33909,22 +33956,22 @@ - + - + - + - + - + - + @@ -33975,7 +34022,7 @@ - + @@ -34008,16 +34055,16 @@ - + - + - + - + @@ -34026,25 +34073,25 @@ - + - + - + - + - + - + - + @@ -34053,37 +34100,37 @@ - + - + - + - + - + - + - + - + - + @@ -34092,10 +34139,10 @@ - + - + @@ -34107,19 +34154,19 @@ - + - + - + - + - + @@ -34128,37 +34175,37 @@ - + - + - + - + - + - + - + - + @@ -34167,25 +34214,25 @@ - + - + - + - + - + - + - + @@ -34194,15 +34241,15 @@ - + - + - + @@ -34210,8 +34257,8 @@ - - + + @@ -34282,239 +34329,239 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -34523,32 +34570,32 @@ - + - + - + - + - + - + - + - - - + + + @@ -34568,7 +34615,7 @@ - + @@ -34576,34 +34623,34 @@ - + - + - + - + - + - + - + - + - + - - + + @@ -34611,8 +34658,8 @@ - - + + @@ -34620,8 +34667,8 @@ - - + + @@ -34644,23 +34691,23 @@ - - + + - - + + - + - - + + @@ -34671,8 +34718,8 @@ - - + + @@ -34686,9 +34733,9 @@ - + - + @@ -34697,13 +34744,13 @@ - + - + - + @@ -34721,22 +34768,22 @@ - + - + - + - + - + @@ -34747,7 +34794,7 @@ - + @@ -34756,13 +34803,13 @@ - + - + - + @@ -34777,19 +34824,19 @@ - + - + - + - + - + @@ -34807,7 +34854,7 @@ - + @@ -34825,7 +34872,7 @@ - + @@ -34840,16 +34887,16 @@ - + - + - + - + @@ -34864,7 +34911,7 @@ - + @@ -34900,7 +34947,7 @@ - + @@ -34915,19 +34962,19 @@ - + - + - + - + @@ -34963,10 +35010,10 @@ - + - + @@ -34981,13 +35028,13 @@ - + - + @@ -34996,40 +35043,40 @@ - + - + - + - + - + - + - + - + - + @@ -35037,24 +35084,24 @@ - + - + - + - + - + @@ -35067,7 +35114,7 @@ - + @@ -35080,13 +35127,13 @@ - + - + @@ -35107,7 +35154,7 @@ - + @@ -35119,7 +35166,7 @@ - + @@ -35131,11 +35178,11 @@ - + - - + + @@ -35143,81 +35190,81 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35226,16 +35273,16 @@ - + - + - + @@ -35244,22 +35291,22 @@ - + - + - + - + - + @@ -35274,13 +35321,13 @@ - + - + @@ -35289,31 +35336,31 @@ - + - + - + - + - + - + - + @@ -35321,47 +35368,47 @@ - + - + - + - + - + - + - + - + - - + + - + - - - + + + @@ -35369,10 +35416,10 @@ - + - + @@ -35380,13 +35427,13 @@ - + - + - + @@ -35394,10 +35441,10 @@ - + - + @@ -35432,10 +35479,10 @@ - + - + @@ -35444,22 +35491,22 @@ - + - + - + - + - + - + @@ -35484,7 +35531,7 @@ - + @@ -35507,37 +35554,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -35546,13 +35593,13 @@ - - + + - + - + @@ -35566,7 +35613,7 @@ - + @@ -35575,19 +35622,19 @@ - + - + - + - + @@ -35611,27 +35658,27 @@ - + - + - + - + - + - + @@ -35640,11 +35687,11 @@ - + - - + + @@ -35652,7 +35699,7 @@ - + @@ -35660,85 +35707,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35881,7 +35928,7 @@ - + @@ -35896,8 +35943,8 @@ - - + + @@ -35905,13 +35952,13 @@ - + - + @@ -35919,21 +35966,21 @@ - - + + - + - + - + - + @@ -35947,7 +35994,7 @@ - + @@ -35970,37 +36017,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -36015,7 +36062,7 @@ - + @@ -36053,10 +36100,10 @@ - + - + @@ -36074,61 +36121,61 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36139,35 +36186,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -36176,18 +36223,18 @@ - + - + - + - + - + @@ -36196,26 +36243,26 @@ - + - + - + - + - + - + - + - + @@ -36223,15 +36270,15 @@ - - + + - + - + - + @@ -36243,15 +36290,15 @@ - + - + - + @@ -36260,10 +36307,10 @@ - + - + @@ -36274,7 +36321,7 @@ - + @@ -36283,58 +36330,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36345,7 +36392,7 @@ - + @@ -36353,10 +36400,10 @@ - + - + @@ -36365,15 +36412,15 @@ - + - + - + @@ -36381,12 +36428,12 @@ - + - + @@ -36398,19 +36445,19 @@ - + - + - + @@ -36419,31 +36466,31 @@ - + - + - + - + - + - + - + - + - + @@ -36452,10 +36499,10 @@ - + - + @@ -36466,31 +36513,31 @@ - + - + - + - + - + - + - + - + @@ -36511,39 +36558,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -36552,10 +36599,10 @@ - + - + @@ -36593,123 +36640,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36741,36 +36788,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -36784,41 +36831,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -36839,18 +36886,18 @@ - + - + - + - + @@ -36859,23 +36906,23 @@ - + - + - + - + - + - + @@ -36889,9 +36936,9 @@ - + - + @@ -36901,58 +36948,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36966,13 +37013,13 @@ - + - + @@ -36980,183 +37027,183 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37167,25 +37214,25 @@ - + - + - + - + - + - + - + @@ -37194,42 +37241,42 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -37247,7 +37294,7 @@ - + @@ -37258,10 +37305,10 @@ - + - + @@ -37272,10 +37319,10 @@ - + - + @@ -37289,10 +37336,10 @@ - + - + @@ -37363,7 +37410,7 @@ - + @@ -37392,7 +37439,7 @@ - + @@ -37406,7 +37453,7 @@ - + @@ -37420,17 +37467,17 @@ - + - + - + @@ -37438,10 +37485,10 @@ - + - + @@ -37449,86 +37496,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37536,16 +37583,16 @@ - + - + - + - + @@ -37556,10 +37603,10 @@ - + - + @@ -37570,92 +37617,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37663,7 +37710,7 @@ - + @@ -37674,7 +37721,7 @@ - + @@ -37703,7 +37750,7 @@ - + @@ -37717,10 +37764,10 @@ - + - + @@ -37734,16 +37781,16 @@ - + - + - + @@ -37754,10 +37801,10 @@ - + - + @@ -37783,10 +37830,10 @@ - + - + @@ -37803,15 +37850,15 @@ - + - + - + - + @@ -37819,43 +37866,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37866,7 +37913,7 @@ - + @@ -37880,24 +37927,24 @@ - + - + - + - + - + - + - + @@ -37905,12 +37952,12 @@ - + - + - + @@ -37919,10 +37966,10 @@ - + - + @@ -37930,10 +37977,10 @@ - + - + @@ -37941,10 +37988,10 @@ - + - + @@ -37955,7 +38002,7 @@ - + @@ -37966,44 +38013,44 @@ - + - - - + + + - + - + - + - + - + - + - + - + @@ -38012,39 +38059,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -38052,7 +38099,7 @@ - + @@ -38069,66 +38116,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -38143,13 +38190,13 @@ - + - + @@ -38163,7 +38210,7 @@ - + @@ -38181,15 +38228,15 @@ - + - + - + - + @@ -38198,13 +38245,13 @@ - + - + - + @@ -38213,16 +38260,16 @@ - + - + - + - + @@ -38231,28 +38278,28 @@ - + - + - + - + - + - + - + @@ -38261,15 +38308,15 @@ - + - + - + - + @@ -38278,104 +38325,104 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -38402,10 +38449,10 @@ - + - + @@ -38446,7 +38493,7 @@ - + @@ -38469,15 +38516,15 @@ - + - + - + - + @@ -38495,12 +38542,12 @@ - + - + - + @@ -38524,7 +38571,7 @@ - + @@ -38532,16 +38579,16 @@ - + - + - + @@ -38549,7 +38596,7 @@ - + @@ -38567,37 +38614,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -38605,23 +38652,23 @@ - + - + - + - + - + @@ -38632,10 +38679,10 @@ - + - + @@ -38644,12 +38691,12 @@ - + - + @@ -38663,7 +38710,7 @@ - + @@ -38677,71 +38724,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -38749,645 +38796,640 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + - + - + - - + + - + - - + + - - - - - - + - - - + + - - + + + - - - - - - + + - - + + + + + + - - + + - + - - - - + - + + + - + - - + - - - + + + + - + + + - - - - - - - - + - + + + + + + + + - - - + - - - + + + - - + + - - - - + + + + - - - - - + + + + + + + + + + + - + - - - - - - - - - - + + - - + - + + + + + + - - - - - - + + - + + + + - - - - - - - - + - - - - + + + + + + + + - + + + + + + + + + - - - - - - - + - - - + + - - - + + + - + + + + + + + + - - - - - - - + - + + @@ -39402,29 +39444,29 @@ - + - - + + - + @@ -39449,7 +39491,7 @@ - + @@ -39459,13 +39501,13 @@ - - + - + + @@ -39475,24 +39517,23 @@ - + - + - @@ -39504,100 +39545,101 @@ - + - - + + - + - + - - - + - + + + + + + + + + - + - - - - - - - - + + + - + - + - - - - + - + + + + @@ -39607,59 +39649,57 @@ - - - + - + + - + + - - + - + + - + - + - - + + - - @@ -39667,77 +39707,84 @@ - - + + + + - + + - - - + + + - - + + + + + + - - - - - - - + - - + + + - - + - + + - - - - - + + + + - + + + + + + + - - + + @@ -39745,21 +39792,21 @@ - - - - - - - - - - + + - + + + + + + + + + @@ -39767,21 +39814,13 @@ - - - - - - - - @@ -39789,31 +39828,39 @@ - + - + + + - - + + - + - - - + + + + + + + + + @@ -39821,49 +39868,41 @@ - - - - - - - + + - - + + + + + + + - + - - - - - - - - @@ -39871,391 +39910,399 @@ - + - - + + + + - + - - + + - - + - + + + - - + + + + + + + - - - - - - - - - + - + + + - - + - + + + + + + + + - + - + - - - - + + + + - - - + + + - + - + - - + + - - - - - - - - + + - - - - + + + + + + + + + + - - + + - + - + - - - + + + - - - - - - - - + + - + - - - - - + + - - + + + + + + + - - + - + + - - - - - - + + + + + + + + + + - - - - - - - + - + - - - + + + + + + + + + - - - - - - + - - - + + + - - + - - + + + + - - + - - + + - - + + - + + - - - + - + + + - - + + - - + - + - + - - + - + - + + - + - + - + - + - + - - + + - + - + + - + - - + - - + + - - + + + + + + + @@ -40263,32 +40310,32 @@ - - - - - - - - - + + + + - + + + + + + - + - + - + - + @@ -40302,44 +40349,44 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -40354,72 +40401,72 @@ - + - + - + - + - + - + - + - - - + + + - - + + - - + + - - + + - + - + - + - + @@ -40446,12 +40493,12 @@ - + - + - + @@ -40472,26 +40519,26 @@ - - - + + + - + - - + + - + - + @@ -40647,10 +40694,10 @@ - - + + - + @@ -40660,43 +40707,43 @@ - + - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - + + + - + - + @@ -40705,7 +40752,7 @@ - + @@ -40715,14 +40762,14 @@ - - + + - + @@ -40731,7 +40778,7 @@ - + @@ -40756,7 +40803,7 @@ - + @@ -40769,14 +40816,14 @@ - + - + @@ -40784,28 +40831,28 @@ - + - - - - + + + + + - + - - - + + @@ -40813,23 +40860,23 @@ - + - - - + + + - + - + @@ -40838,15 +40885,15 @@ - + - + - + @@ -40854,8 +40901,8 @@ - - + + @@ -40863,13 +40910,13 @@ - - - + + + - + @@ -40881,27 +40928,27 @@ - + - - + + - + - + - + @@ -40911,25 +40958,25 @@ - - - + + + - + - - - + + + - + @@ -40946,17 +40993,17 @@ - - + + - + - + @@ -40967,19 +41014,19 @@ - - - - - + + + + + - + - + - + @@ -40996,42 +41043,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41046,34 +41093,34 @@ - - - + + + - + - + - + - + - - + + - - + + @@ -41081,42 +41128,42 @@ - + - - + + - + - + - + - + - + - + - + - + @@ -41126,8 +41173,8 @@ - - + + @@ -41137,8 +41184,8 @@ - - + + @@ -41158,7 +41205,7 @@ - + @@ -41173,7 +41220,7 @@ - + @@ -41181,7 +41228,7 @@ - + @@ -41199,174 +41246,174 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - + - - + + - + - - + + - - + + - + - + - + - + - - + + - - + + @@ -41378,15 +41425,15 @@ - + - + - - + + @@ -41397,18 +41444,18 @@ - - + + - + - + - + @@ -41424,26 +41471,26 @@ - - + + - - + + - + - + @@ -41456,169 +41503,169 @@ - + - + - + - + - + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - + - + - + @@ -41636,7 +41683,7 @@ - + @@ -41645,19 +41692,19 @@ - + - + - + - + @@ -41696,10 +41743,10 @@ - + - + @@ -41708,7 +41755,7 @@ - + @@ -41723,7 +41770,7 @@ - + @@ -41735,10 +41782,10 @@ - + - + @@ -41762,13 +41809,13 @@ - + - + @@ -41789,18 +41836,18 @@ - + - + - + - + @@ -41815,15 +41862,15 @@ - + - + - + - + @@ -41831,17 +41878,17 @@ - + - + - + - + @@ -41853,16 +41900,16 @@ - - + + - + - + @@ -41871,7 +41918,7 @@ - + @@ -41886,7 +41933,7 @@ - + @@ -41894,7 +41941,7 @@ - + @@ -42037,7 +42084,7 @@ - + @@ -42052,7 +42099,7 @@ - + @@ -42063,10 +42110,10 @@ - + - + @@ -42075,22 +42122,22 @@ - + - + - + - + - + @@ -42105,21 +42152,21 @@ - + - + - + - + - + - + @@ -42128,21 +42175,21 @@ - + - + - + - + - + @@ -42153,25 +42200,25 @@ - + - + - + - + - + - + - + @@ -42180,29 +42227,29 @@ - + - + - + - + - + - + - + @@ -42213,15 +42260,15 @@ - + - + - + - + @@ -42284,28 +42331,28 @@ - + - + - + - + - + - + - + - + @@ -42347,21 +42394,21 @@ - + - + - + - + - + @@ -42370,16 +42417,16 @@ - + - + - + @@ -42402,10 +42449,10 @@ - + - + @@ -42413,7 +42460,7 @@ - + @@ -42424,33 +42471,33 @@ - + - + - + - - - + + + - + - + - + - + @@ -42468,16 +42515,16 @@ - + - + - + - + @@ -42497,22 +42544,22 @@ - + - + - + - + - + @@ -42529,7 +42576,7 @@ - + @@ -42543,7 +42590,7 @@ - + @@ -42552,22 +42599,22 @@ - + - + - + - - + + @@ -42590,22 +42637,22 @@ - + - + - + - + - + @@ -42614,25 +42661,25 @@ - + - + - + - + - + - + @@ -42650,215 +42697,215 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42867,55 +42914,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42936,7 +42983,7 @@ - + @@ -43119,10 +43166,10 @@ - + - + @@ -43131,7 +43178,7 @@ - + @@ -43140,10 +43187,10 @@ - + - + @@ -43176,7 +43223,7 @@ - + @@ -43188,13 +43235,13 @@ - + - + @@ -43203,10 +43250,10 @@ - + - + @@ -43220,47 +43267,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -43269,19 +43316,19 @@ - + - + - + - + @@ -43290,32 +43337,32 @@ - + - + - + - + - + - + - + - + @@ -43329,15 +43376,15 @@ - + - - + + @@ -43356,26 +43403,26 @@ - + - + - + - + - + - + - + - + @@ -43384,9 +43431,9 @@ - + - + @@ -43395,9 +43442,9 @@ - + - + @@ -43406,18 +43453,18 @@ - + - + - + - + @@ -43428,7 +43475,7 @@ - + @@ -43438,23 +43485,23 @@ - + - + - + - + - + @@ -43466,121 +43513,121 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43592,49 +43639,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43643,55 +43690,55 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + @@ -43717,29 +43764,29 @@ - + - + - + - - - - + + + + - + - + - + @@ -43748,7 +43795,7 @@ - + @@ -43757,7 +43804,7 @@ - + @@ -43766,18 +43813,18 @@ - + - + - + - + @@ -43788,77 +43835,77 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43876,31 +43923,31 @@ - + - + - + - + - + - + - + - + - + @@ -43909,36 +43956,36 @@ - + - + - + - + - + - + - + - + - + - + @@ -44019,7 +44066,7 @@ - + @@ -44027,55 +44074,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44086,27 +44133,27 @@ - + - + - + - + - + - + - + @@ -44115,9 +44162,9 @@ - + - + @@ -44126,7 +44173,7 @@ - + @@ -44134,25 +44181,25 @@ - + - + - + - + - + - + @@ -44176,46 +44223,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44253,54 +44300,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44312,52 +44359,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44366,18 +44413,18 @@ - + - + - + - + @@ -44392,31 +44439,31 @@ - + - + - + - + - + - + - + @@ -44431,13 +44478,13 @@ - + - + - + @@ -44446,12 +44493,12 @@ - + - + - + @@ -44469,12 +44516,12 @@ - + - + @@ -44489,123 +44536,123 @@ - + - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + @@ -44613,45 +44660,45 @@ - + - - - - - - - + + - - - - - + + + + - + + - + + - - - + - - + + + + + + + + @@ -44659,113 +44706,113 @@ - - - + + + - + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - - - - - + + - - - + - - - + + + - - - + + + + + + + + + - - - - - - + - + + - - + + + + + + - - + + - - + + - + - + @@ -44776,41 +44823,41 @@ - + - - + + + - - + - + - + - + - + @@ -44824,7 +44871,7 @@ - + @@ -44832,12 +44879,12 @@ - - + + - + - + @@ -44847,55 +44894,55 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44904,48 +44951,48 @@ - + - + - + - - - - + + + + - + - + - + - + - + - + - + @@ -44965,25 +45012,25 @@ - + - + - + - - + + - + @@ -44992,7 +45039,7 @@ - + @@ -45007,48 +45054,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -45056,48 +45103,48 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + @@ -45105,45 +45152,45 @@ - - + + - + - - + + - - + + - - + + - - + + - + - + - - - - + + + + @@ -45166,72 +45213,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -45239,10 +45286,10 @@ - + - + @@ -45251,7 +45298,7 @@ - + @@ -45260,7 +45307,7 @@ - + @@ -45271,9 +45318,9 @@ - + - + @@ -45284,7 +45331,7 @@ - + @@ -45300,9 +45347,9 @@ - + - + @@ -45313,12 +45360,12 @@ - + - + - + @@ -45332,25 +45379,25 @@ - + - + - + - + - + - + - + @@ -45373,7 +45420,7 @@ - + @@ -45388,15 +45435,15 @@ - + - + - + - + @@ -45410,10 +45457,10 @@ - + - + @@ -45422,7 +45469,7 @@ - + @@ -45436,7 +45483,7 @@ - + @@ -45444,10 +45491,10 @@ - + - + @@ -45461,21 +45508,21 @@ - + - + - + - + @@ -45489,7 +45536,7 @@ - + @@ -45498,24 +45545,24 @@ - + - + - + - + - + - + @@ -45545,13 +45592,13 @@ - + - + @@ -45563,60 +45610,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -45640,9 +45687,9 @@ - + - + @@ -45657,7 +45704,7 @@ - + @@ -45666,7 +45713,7 @@ - + @@ -45675,51 +45722,51 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - + - + @@ -45731,7 +45778,7 @@ - + @@ -45744,86 +45791,86 @@ - - - - - - - + + + - - + - - + - + + + + + + + - - - - - - - - - + + + - - - - + + + + - - - + + + + - + + - - + + - - + - + + + + + + - - + + - - + + - + @@ -45834,7 +45881,7 @@ - + @@ -45851,29 +45898,29 @@ - + - - + + - + - + - + - - + + @@ -45888,14 +45935,14 @@ + - + - @@ -45903,13 +45950,13 @@ - + + - @@ -45917,21 +45964,21 @@ - - + + - - - + + + - + - + @@ -45939,21 +45986,21 @@ - + - + - + - + - + - + @@ -45962,7 +46009,7 @@ - + @@ -45977,29 +46024,29 @@ - + - + - + - + - + - + - + - + @@ -46011,7 +46058,7 @@ - + @@ -46035,7 +46082,7 @@ - + @@ -46067,31 +46114,31 @@ - + - + - + - + - + - + - + - + @@ -46103,60 +46150,60 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + - - - - - + + + + + + - + @@ -46171,7 +46218,7 @@ - + @@ -46179,26 +46226,26 @@ - + - + - + - + - + @@ -46206,82 +46253,82 @@ - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - - - - - - - + + + + + + + - + @@ -46298,8 +46345,8 @@ - - + + @@ -46329,7 +46376,7 @@ - + @@ -46349,20 +46396,20 @@ - + - + - + @@ -46390,23 +46437,23 @@ - + - + - + - + @@ -46451,8 +46498,8 @@ - - + + @@ -46466,7 +46513,7 @@ - + @@ -46477,7 +46524,7 @@ - + @@ -46487,7 +46534,7 @@ - + @@ -46509,7 +46556,7 @@ - + @@ -46518,20 +46565,20 @@ - + - + - + - + @@ -46563,24 +46610,24 @@ - - + + - + - + - + - + - + - + @@ -46594,7 +46641,7 @@ - + @@ -46614,11 +46661,11 @@ - + - + - + @@ -46626,15 +46673,15 @@ - + - + - + @@ -46642,7 +46689,7 @@ - + @@ -46653,7 +46700,7 @@ - + @@ -46661,18 +46708,18 @@ - + - + - + @@ -46681,15 +46728,15 @@ - + - + - + @@ -46700,7 +46747,7 @@ - + @@ -46708,75 +46755,75 @@ - + - + - + - - - - - - - - - + + + + + + + + + - - - + + + - - - + + + - - - + + + - + - - + + - + - - - - - + + + + + - - - + + + - + - - - + + + - + - - + + - + @@ -46789,8 +46836,8 @@ - - + + @@ -46812,7 +46859,7 @@ - + @@ -46847,136 +46894,136 @@ - - + + - + - + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46984,55 +47031,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47049,41 +47096,41 @@ - + - + - + - + - + - + - + - - + + - + - + - + @@ -47113,7 +47160,7 @@ - + @@ -47128,7 +47175,7 @@ - + @@ -47136,18 +47183,18 @@ - + - + - + @@ -47155,29 +47202,29 @@ - + - + - + - + - + - - + + - + @@ -47192,11 +47239,11 @@ - + - - + + @@ -47204,29 +47251,29 @@ - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -47265,44 +47312,44 @@ - + - - + + - + - - + + - + - + - + - + - + @@ -47310,7 +47357,7 @@ - + @@ -47329,30 +47376,30 @@ - - + + - - - - + + + + - + - - + + - + - + - + - - + + @@ -47381,51 +47428,51 @@ - + - + - - + + - - - - + + + + - - + + - + - - + + - + - + - + - + @@ -47455,13 +47502,13 @@ - + - + @@ -47503,13 +47550,13 @@ - + - + - + @@ -47521,30 +47568,30 @@ - + - + - + - + - + - + - + - + @@ -47553,7 +47600,7 @@ - + @@ -47562,7 +47609,7 @@ - + @@ -47570,34 +47617,34 @@ - + - + - + - + - + - + - + @@ -47606,25 +47653,25 @@ - + - + - + - + - + @@ -47645,103 +47692,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47749,15 +47796,15 @@ - + - + - + @@ -47772,8 +47819,8 @@ - - + + @@ -47800,181 +47847,181 @@ - + - + - - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - - - - - - - + - + - - + + + + - - - + - - + + + - - + + - - - - - - - + + + + + + + - - + + - - + + - + - - + - - + + + + + + + + - - - + + + - - - - - + - - - + - - + + + - - - + + - + + + + + + + - - + + - + - + @@ -47985,16 +48032,16 @@ - + - + - + - + @@ -48003,19 +48050,19 @@ - + - + - + @@ -48024,114 +48071,114 @@ - - - + + + - - + + - - + + - - + + - + - - - + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48139,7 +48186,7 @@ - + @@ -48156,27 +48203,27 @@ - + - + - + - + - + - + - + - + @@ -48202,7 +48249,7 @@ - + @@ -48214,38 +48261,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -48254,23 +48301,23 @@ - + - + - + - + - + - + @@ -48279,24 +48326,24 @@ - + - + - + - + - + - + - + @@ -48307,7 +48354,7 @@ - + @@ -48327,27 +48374,27 @@ - + - + - + - + - + - + - + - + @@ -48358,32 +48405,32 @@ - + - + - + - + - + - + - + - + - + @@ -48397,7 +48444,7 @@ - + @@ -48411,48 +48458,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48464,7 +48511,7 @@ - + @@ -48472,55 +48519,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48531,21 +48578,21 @@ - + - + - + - + - + - + @@ -48575,12 +48622,12 @@ - + - + - + @@ -48588,7 +48635,7 @@ - + @@ -48596,18 +48643,18 @@ - + - + - + - + @@ -48616,18 +48663,18 @@ - + - + - + @@ -48635,7 +48682,7 @@ - + @@ -48668,26 +48715,26 @@ - + - + - + - + - + - + - + @@ -48696,10 +48743,10 @@ - + - + @@ -48707,7 +48754,7 @@ - + @@ -48721,7 +48768,7 @@ - + @@ -48729,78 +48776,78 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + @@ -48841,7 +48888,7 @@ - + @@ -48850,156 +48897,156 @@ - - - - - - + + - - - + - - + + + - - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + + + + + + + - - + + - + - - - - - - - - + + + - - + + - + - + - + - + - + + + + + + - + - + - - - - - - + + - - - - + - - + + + + - - + + - + + + + + + - + - + - + - + @@ -49007,58 +49054,58 @@ - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - - - + + + - - + + @@ -49080,26 +49127,26 @@ - + - + - + - + - + - + - + @@ -49111,26 +49158,26 @@ - + - + - + - - - + + + - + @@ -49149,116 +49196,116 @@ - - + + - - + + - + - - + + - - + + - + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + @@ -49285,13 +49332,13 @@ - + - + @@ -49327,7 +49374,7 @@ - + @@ -49345,16 +49392,16 @@ - + - + - + @@ -49381,7 +49428,7 @@ - + @@ -49390,13 +49437,13 @@ - + - + - + @@ -49405,28 +49452,28 @@ - + - + - + - + - + - + - + @@ -49462,15 +49509,15 @@ - + - + - + - + @@ -49478,9 +49525,9 @@ - + - + @@ -49504,7 +49551,7 @@ - + @@ -49512,13 +49559,13 @@ - + - + @@ -49538,12 +49585,12 @@ - + - + - + @@ -49558,7 +49605,7 @@ - + @@ -49569,7 +49616,7 @@ - + @@ -49592,19 +49639,19 @@ - + - + - + - + @@ -49618,7 +49665,7 @@ - + @@ -49635,7 +49682,7 @@ - + @@ -49644,7 +49691,7 @@ - + @@ -49662,32 +49709,32 @@ - + - + - + - + - + - + - + - + - + @@ -49698,7 +49745,7 @@ - + @@ -49706,15 +49753,15 @@ - + - + - + @@ -49723,7 +49770,7 @@ - + @@ -49735,40 +49782,40 @@ - + - + - + - + - + - + - + - + @@ -49792,35 +49839,35 @@ - + - + - + - + - + - + - + - + - + @@ -49828,27 +49875,27 @@ - + - + - + - + - + - + - + @@ -49866,7 +49913,7 @@ - + @@ -49875,10 +49922,10 @@ - + - + @@ -49890,13 +49937,13 @@ - + - + - + @@ -49905,7 +49952,7 @@ - + @@ -49914,13 +49961,13 @@ - + - + - + @@ -49956,10 +50003,10 @@ - + - + @@ -49977,18 +50024,18 @@ - + - + - + - + @@ -50005,7 +50052,7 @@ - + @@ -50013,7 +50060,7 @@ - + @@ -50021,7 +50068,7 @@ - + @@ -50039,33 +50086,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -50074,21 +50121,21 @@ - + - + - + - + - + @@ -50121,7 +50168,7 @@ - + @@ -50130,13 +50177,13 @@ - + - + @@ -50150,15 +50197,15 @@ - + - + - + - + @@ -50167,7 +50214,7 @@ - + @@ -50178,23 +50225,23 @@ - + - + - + - + - + @@ -50206,15 +50253,15 @@ - + - + - + - + @@ -50223,19 +50270,19 @@ - + - + - + - + @@ -50249,7 +50296,7 @@ - + @@ -50263,12 +50310,12 @@ - + - + - + @@ -50277,10 +50324,10 @@ - + - + @@ -50288,10 +50335,10 @@ - + - + @@ -50305,37 +50352,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -50355,7 +50402,7 @@ - + @@ -50363,16 +50410,16 @@ - + - + - + - + @@ -50381,39 +50428,39 @@ - + - + - + - + - + - + @@ -50421,24 +50468,24 @@ - + - + - + - + - + - + - + @@ -50450,7 +50497,7 @@ - + @@ -50461,7 +50508,7 @@ - + @@ -50469,15 +50516,15 @@ - + - + - + - + @@ -50491,26 +50538,26 @@ - + - + - + - + - + - + @@ -50518,27 +50565,27 @@ - + - + - + - + - + - + @@ -50558,21 +50605,21 @@ - + - + - + - + - + @@ -50580,321 +50627,321 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50902,7 +50949,7 @@ - + @@ -50911,12 +50958,12 @@ - + - + - + @@ -50931,19 +50978,19 @@ - + - + - + - + @@ -50955,19 +51002,19 @@ - + - + - + - + @@ -50976,7 +51023,7 @@ - + @@ -51014,13 +51061,13 @@ - + - + @@ -51031,19 +51078,19 @@ - + - + - + @@ -51052,7 +51099,7 @@ - + @@ -51061,7 +51108,7 @@ - + @@ -51075,7 +51122,7 @@ - + @@ -51083,48 +51130,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -51159,10 +51206,10 @@ - + - + @@ -51171,7 +51218,7 @@ - + @@ -51204,13 +51251,13 @@ - + - + @@ -51219,7 +51266,7 @@ - + @@ -51230,7 +51277,7 @@ - + @@ -51256,25 +51303,25 @@ - + - + - + - + - + - + @@ -51292,10 +51339,10 @@ - + - + @@ -51310,16 +51357,16 @@ - + - + - + - + @@ -51334,16 +51381,16 @@ - + - + - + - + @@ -51369,7 +51416,7 @@ - + @@ -51380,7 +51427,7 @@ - + @@ -51388,7 +51435,7 @@ - + @@ -51405,10 +51452,10 @@ - + - + @@ -51446,7 +51493,7 @@ - + @@ -51475,7 +51522,7 @@ - + @@ -51537,7 +51584,7 @@ - + @@ -51552,7 +51599,7 @@ - + @@ -51561,9 +51608,9 @@ - + - + @@ -51605,13 +51652,13 @@ - + - + @@ -51620,12 +51667,12 @@ - + - + - + @@ -51648,15 +51695,15 @@ - + - + - + - + @@ -51671,7 +51718,7 @@ - + @@ -51679,9 +51726,9 @@ - + - + @@ -51690,7 +51737,7 @@ - + @@ -51708,28 +51755,28 @@ - + - + - + - + - + - + - + @@ -51738,23 +51785,23 @@ - + - + - + - + - + @@ -51763,7 +51810,7 @@ - + @@ -51781,9 +51828,9 @@ - + - + @@ -51795,7 +51842,7 @@ - + @@ -51804,16 +51851,16 @@ - + - + - + - + @@ -51825,7 +51872,7 @@ - + @@ -51842,9 +51889,9 @@ - + - + @@ -51859,12 +51906,12 @@ - + - + - + @@ -51879,7 +51926,7 @@ - + @@ -51891,10 +51938,10 @@ - + - + @@ -51912,22 +51959,22 @@ - + - + - + - + - + @@ -51957,21 +52004,21 @@ - + - + - + - + - + @@ -51980,15 +52027,15 @@ - + - + - + - + @@ -51996,7 +52043,7 @@ - + @@ -52029,30 +52076,30 @@ - + - + - + - + - + - + - + @@ -52076,10 +52123,10 @@ - + - + @@ -52102,9 +52149,9 @@ - + - + @@ -52128,10 +52175,10 @@ - + - + @@ -52142,7 +52189,7 @@ - + @@ -52150,7 +52197,7 @@ - + @@ -52161,7 +52208,7 @@ - + @@ -52169,45 +52216,45 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -52216,7 +52263,7 @@ - + @@ -52228,18 +52275,18 @@ - + - + - + - + @@ -52247,7 +52294,7 @@ - + @@ -52255,7 +52302,7 @@ - + @@ -52263,12 +52310,12 @@ - + - + - + @@ -52289,7 +52336,7 @@ - + @@ -52313,16 +52360,16 @@ - + - + - + @@ -52337,7 +52384,7 @@ - + @@ -52345,7 +52392,7 @@ - + @@ -52353,7 +52400,7 @@ - + @@ -52367,15 +52414,15 @@ - + - + - + - + @@ -52384,605 +52431,605 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - - + + - + - + - + - - - - - - + - + - - + + - - + + - - + + - + - - + - + - + - + - + - + - - + - + - - - - - - - + - - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + + - + - - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + + + + + + + + + - - - - - - - - - - - - - - + + - + + + + + + + - + + + + + + + - - - - - - - - + - - + + - + + + + + + + + - - - - - - - - + - - + - + + + + + + + + + - - + + - - + + - - + + @@ -52990,226 +53037,226 @@ - - - - - - - - - + - - + + + + + + + + + + - + - - + + - - + + - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - + + + - - - - + + + + - - - - - + + + + - - - + + + + + - - - + + + + + + + + + - - - + + + - - - + + + - + - - - - - + - - + - + + + + + + - - - - - - - + + - - + + - - + + + + + + + - - - + + + - - + + - - - + + + - + - + - + - + @@ -53218,32 +53265,32 @@ - + - + - + - - + + - - + + - - - + + + @@ -53251,11 +53298,11 @@ - + - + @@ -53270,24 +53317,24 @@ - + - + - + - + - + - + @@ -53295,7 +53342,7 @@ - + @@ -53310,13 +53357,13 @@ - + - + - + @@ -53339,17 +53386,17 @@ - + - + - + @@ -53364,11 +53411,11 @@ - - + + - - + + @@ -53376,64 +53423,64 @@ - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - + - + @@ -53442,20 +53489,20 @@ - + - - - + + + - + - + @@ -53464,34 +53511,34 @@ - + - + - + - + - - + + - + - + - + - + - + @@ -53502,18 +53549,18 @@ - + - + - + - + - + @@ -53521,143 +53568,143 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + @@ -53666,9 +53713,9 @@ - + - + @@ -53677,7 +53724,7 @@ - + @@ -53689,112 +53736,112 @@ - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - + - + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - - - - - + + - - + + + + + + + - + - + - - + + - + - + @@ -53808,28 +53855,206 @@ - - + + - - + + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53846,44 +54071,36 @@ - + - + - + - + - + - + - + - - - - - - - - - + - + - + @@ -53891,172 +54108,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -54065,13 +54181,13 @@ - + - + - + @@ -54080,13 +54196,13 @@ - + - + @@ -54095,15 +54211,15 @@ - + - + - + - + @@ -54123,147 +54239,147 @@ - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - + - + - - + + - + diff --git a/block/blk-crypto-fallback.c b/block/blk-crypto-fallback.c index b8e9ae1c1d5b..195b04b5df0d 100644 --- a/block/blk-crypto-fallback.c +++ b/block/blk-crypto-fallback.c @@ -571,6 +571,12 @@ int blk_crypto_fallback_submit_bio(struct bio **bio_ptr) struct bio_crypt_ctx *bc = bio->bi_crypt_context; struct bio_fallback_crypt_ctx *f_ctx; + if (bc->bc_key->is_hw_wrapped) { + pr_warn_once("HW wrapped key cannot be used with fallback.\n"); + bio->bi_status = BLK_STS_NOTSUPP; + return -EOPNOTSUPP; + } + if (!tfms_inited[bc->bc_key->crypto_mode]) { bio->bi_status = BLK_STS_IOERR; return -EIO; diff --git a/block/blk-crypto.c b/block/blk-crypto.c index a8de0d9680e0..88df1c0e7e5f 100644 --- a/block/blk-crypto.c +++ b/block/blk-crypto.c @@ -175,7 +175,9 @@ bool blk_crypto_endio(struct bio *bio) * @raw_key_size: Size of raw key. Must be at least the required size for the * chosen @crypto_mode; see blk_crypto_modes[]. (It's allowed * to be longer than the mode's actual key size, in order to - * support inline encryption hardware that accepts wrapped keys.) + * support inline encryption hardware that accepts wrapped keys. + * @is_hw_wrapped has to be set for such keys) + * @is_hw_wrapped: Denotes @raw_key is wrapped. * @crypto_mode: identifier for the encryption algorithm to use * @data_unit_size: the data unit size to use for en/decryption * @@ -184,6 +186,7 @@ bool blk_crypto_endio(struct bio *bio) */ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, enum blk_crypto_mode_num crypto_mode, unsigned int data_unit_size) { @@ -198,9 +201,14 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, BUILD_BUG_ON(BLK_CRYPTO_MAX_WRAPPED_KEY_SIZE < BLK_CRYPTO_MAX_KEY_SIZE); mode = &blk_crypto_modes[crypto_mode]; - if (raw_key_size < mode->keysize || - raw_key_size > BLK_CRYPTO_MAX_WRAPPED_KEY_SIZE) - return -EINVAL; + if (is_hw_wrapped) { + if (raw_key_size < mode->keysize || + raw_key_size > BLK_CRYPTO_MAX_WRAPPED_KEY_SIZE) + return -EINVAL; + } else { + if (raw_key_size != mode->keysize) + return -EINVAL; + } if (!is_power_of_2(data_unit_size)) return -EINVAL; @@ -209,6 +217,7 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, blk_key->data_unit_size = data_unit_size; blk_key->data_unit_size_bits = ilog2(data_unit_size); blk_key->size = raw_key_size; + blk_key->is_hw_wrapped = is_hw_wrapped; memcpy(blk_key->raw, raw_key, raw_key_size); /* diff --git a/drivers/md/dm-default-key.c b/drivers/md/dm-default-key.c index 1eb9ddfad04c..c8af8df227c8 100644 --- a/drivers/md/dm-default-key.c +++ b/drivers/md/dm-default-key.c @@ -224,7 +224,7 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv) } err = blk_crypto_init_key(&dkc->key, raw_key, cipher->key_size, - cipher->mode_num, dkc->sector_size); + false, cipher->mode_num, dkc->sector_size); if (err) { ti->error = "Error initializing blk-crypto key"; goto bad; diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h index 2e7a7a8171a1..bc53caf70497 100644 --- a/fs/crypto/fscrypt_private.h +++ b/fs/crypto/fscrypt_private.h @@ -319,6 +319,7 @@ extern int fscrypt_prepare_inline_crypt_key( struct fscrypt_prepared_key *prep_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, const struct fscrypt_info *ci); extern void fscrypt_destroy_inline_crypt_key( @@ -363,6 +364,7 @@ static inline bool fscrypt_using_inline_encryption( static inline int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, const struct fscrypt_info *ci) { WARN_ON(1); @@ -557,6 +559,7 @@ extern struct fscrypt_mode fscrypt_modes[]; extern int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, const struct fscrypt_info *ci); extern void fscrypt_destroy_prepared_key(struct fscrypt_prepared_key *prep_key); diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c index 9c830772b7f5..00da0effa6c9 100644 --- a/fs/crypto/inline_crypt.c +++ b/fs/crypto/inline_crypt.c @@ -50,6 +50,7 @@ void fscrypt_select_encryption_impl(struct fscrypt_info *ci) int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, const struct fscrypt_info *ci) { const struct inode *inode = ci->ci_inode; @@ -80,7 +81,7 @@ int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, BLK_CRYPTO_MAX_WRAPPED_KEY_SIZE); err = blk_crypto_init_key(&blk_key->base, raw_key, raw_key_size, - crypto_mode, sb->s_blocksize); + is_hw_wrapped, crypto_mode, sb->s_blocksize); if (err) { fscrypt_err(inode, "error %d initializing blk-crypto key", err); goto fail; diff --git a/fs/crypto/keysetup.c b/fs/crypto/keysetup.c index e474d6c09cbd..c289f4e32186 100644 --- a/fs/crypto/keysetup.c +++ b/fs/crypto/keysetup.c @@ -117,15 +117,15 @@ fscrypt_allocate_skcipher(struct fscrypt_mode *mode, const u8 *raw_key, */ int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key, const u8 *raw_key, unsigned int raw_key_size, - const struct fscrypt_info *ci) + bool is_hw_wrapped, const struct fscrypt_info *ci) { struct crypto_skcipher *tfm; if (fscrypt_using_inline_encryption(ci)) return fscrypt_prepare_inline_crypt_key(prep_key, - raw_key, raw_key_size, ci); + raw_key, raw_key_size, is_hw_wrapped, ci); - if (WARN_ON(raw_key_size != ci->ci_mode->keysize)) + if (WARN_ON(is_hw_wrapped || raw_key_size != ci->ci_mode->keysize)) return -EINVAL; tfm = fscrypt_allocate_skcipher(ci->ci_mode, raw_key, ci->ci_inode); @@ -150,8 +150,8 @@ void fscrypt_destroy_prepared_key(struct fscrypt_prepared_key *prep_key) int fscrypt_set_per_file_enc_key(struct fscrypt_info *ci, const u8 *raw_key) { ci->ci_owns_key = true; - return fscrypt_prepare_key(&ci->ci_key, raw_key, - ci->ci_mode->keysize, ci); + return fscrypt_prepare_key(&ci->ci_key, raw_key, ci->ci_mode->keysize, + false /*is_hw_wrapped*/, ci); } static int setup_per_mode_enc_key(struct fscrypt_info *ci, @@ -202,7 +202,7 @@ static int setup_per_mode_enc_key(struct fscrypt_info *ci, } } err = fscrypt_prepare_key(prep_key, mk->mk_secret.raw, - mk->mk_secret.size, ci); + mk->mk_secret.size, true, ci); if (err) goto out_unlock; } else { @@ -221,7 +221,7 @@ static int setup_per_mode_enc_key(struct fscrypt_info *ci, if (err) goto out_unlock; err = fscrypt_prepare_key(prep_key, mode_key, mode->keysize, - ci); + false /*is_hw_wrapped*/, ci); memzero_explicit(mode_key, mode->keysize); if (err) goto out_unlock; diff --git a/fs/crypto/keysetup_v1.c b/fs/crypto/keysetup_v1.c index 29fe4df6ec75..3f7bb48f7317 100644 --- a/fs/crypto/keysetup_v1.c +++ b/fs/crypto/keysetup_v1.c @@ -234,7 +234,7 @@ fscrypt_get_direct_key(const struct fscrypt_info *ci, const u8 *raw_key) refcount_set(&dk->dk_refcount, 1); dk->dk_mode = ci->ci_mode; err = fscrypt_prepare_key(&dk->dk_key, raw_key, ci->ci_mode->keysize, - ci); + false /*is_hw_wrapped*/, ci); if (err) goto err_free_dk; memcpy(dk->dk_descriptor, ci->ci_policy.v1.master_key_descriptor, diff --git a/include/linux/bio-crypt-ctx.h b/include/linux/bio-crypt-ctx.h index ab22dbe7b880..8456a409fc21 100644 --- a/include/linux/bio-crypt-ctx.h +++ b/include/linux/bio-crypt-ctx.h @@ -31,6 +31,8 @@ enum blk_crypto_mode_num { * @data_unit_size_bits: log2 of data_unit_size * @size: size of this key in bytes (determined by @crypto_mode) * @hash: hash of this key, for keyslot manager use only + * @is_hw_wrapped: @raw points to a wrapped key to be used by an inline + * encryption hardware that accepts wrapped keys. * @raw: the raw bytes of this key. Only the first @size bytes are used. * * A blk_crypto_key is immutable once created, and many bios can reference it at @@ -42,6 +44,7 @@ struct blk_crypto_key { unsigned int data_unit_size_bits; unsigned int size; unsigned int hash; + bool is_hw_wrapped; u8 raw[BLK_CRYPTO_MAX_WRAPPED_KEY_SIZE]; }; diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h index 6dd37961888a..2d871a7a0f5a 100644 --- a/include/linux/blk-crypto.h +++ b/include/linux/blk-crypto.h @@ -16,6 +16,7 @@ bool blk_crypto_endio(struct bio *bio); int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key, unsigned int raw_key_size, + bool is_hw_wrapped, enum blk_crypto_mode_num crypto_mode, unsigned int data_unit_size);