Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: performance_timer Surfboard_ gps2rtty Capstone ... more
Revision 5:3762170b6d4d, committed 2015-11-20
- Comitter:
- mbed_official
- Date:
- Fri Nov 20 08:45:18 2015 +0000
- Parent:
- 4:9cee975aadce
- Commit message:
- Synchronized with git revision 2eb940b9a73af188d3004a2575fdfbb05febe62b
Full URL: https://github.com/mbedmicro/mbed/commit/2eb940b9a73af188d3004a2575fdfbb05febe62b/
Added option to build rpc library. closes #1426
Changed in this revision
--- a/cmsis_dsp/BasicMathFunctions/arm_abs_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_abs_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_abs_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_abs_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_abs_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_abs_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_abs_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_abs_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_abs_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_abs_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/BasicMathFunctions/arm_abs_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_abs_q7.c
@@ -136,7 +136,7 @@
/* Run the below code for Cortex-M0 */
blkCnt = blockSize;
-#endif // #define ARM_MATH_CM0_FAMILY
+#endif /* #define ARM_MATH_CM0_FAMILY */
while(blkCnt > 0u)
{
--- a/cmsis_dsp/BasicMathFunctions/arm_add_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_add_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_add_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_add_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_add_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_add_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_add_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_add_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_add_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_add_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_add_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_add_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_dot_prod_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_dot_prod_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dot_prod_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dot_prod_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dot_prod_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_dot_prod_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dot_prod_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_mult_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_mult_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mult_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_mult_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/BasicMathFunctions/arm_mult_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_mult_q15.c
@@ -118,7 +118,7 @@
*__SIMD32(pDst)++ = __PKHBT(out2, out1, 16);
*__SIMD32(pDst)++ = __PKHBT(out4, out3, 16);
-#endif // #ifndef ARM_MATH_BIG_ENDIAN
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* Decrement the blockSize loop counter */
blkCnt--;
--- a/cmsis_dsp/BasicMathFunctions/arm_mult_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/BasicMathFunctions/arm_mult_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_mult_q31.c
@@ -118,6 +118,20 @@
/* If the blockSize is not a multiple of 4, compute any remaining output samples here.
** No loop unrolling is used. */
blkCnt = blockSize % 0x4u;
+
+ while(blkCnt > 0u)
+ {
+ /* C = A * B */
+ /* Multiply the inputs and then store the results in the destination buffer. */
+ inA1 = *pSrcA++;
+ inB1 = *pSrcB++;
+ out1 = ((q63_t) inA1 * inB1) >> 32;
+ out1 = __SSAT(out1, 31);
+ *pDst++ = out1 << 1u;
+
+ /* Decrement the blockSize loop counter */
+ blkCnt--;
+ }
#else
@@ -126,7 +140,6 @@
/* Initialize blkCnt with number of samples */
blkCnt = blockSize;
-#endif /* #ifndef ARM_MATH_CM0_FAMILY */
while(blkCnt > 0u)
{
@@ -138,6 +151,8 @@
/* Decrement the blockSize loop counter */
blkCnt--;
}
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
}
/**
--- a/cmsis_dsp/BasicMathFunctions/arm_mult_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_mult_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mult_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_negate_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_negate_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_negate_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_negate_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_negate_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_negate_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_negate_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_negate_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_negate_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_negate_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_negate_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_negate_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_offset_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_offset_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_offset_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_offset_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_offset_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_offset_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_offset_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_offset_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_offset_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_offset_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_offset_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_offset_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_scale_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_scale_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_scale_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_scale_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_scale_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_scale_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_scale_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_scale_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_scale_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_scale_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_scale_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_scale_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_shift_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_shift_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_shift_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_shift_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_shift_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_shift_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_shift_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_shift_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_shift_q7.c
--- a/cmsis_dsp/BasicMathFunctions/arm_sub_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_sub_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_sub_f32.c
--- a/cmsis_dsp/BasicMathFunctions/arm_sub_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_sub_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_sub_q15.c
--- a/cmsis_dsp/BasicMathFunctions/arm_sub_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_sub_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_sub_q31.c
--- a/cmsis_dsp/BasicMathFunctions/arm_sub_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/BasicMathFunctions/arm_sub_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_sub_q7.c
--- a/cmsis_dsp/CommonTables/arm_common_tables.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/CommonTables/arm_common_tables.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_common_tables.c
@@ -78,153 +78,109 @@
* @brief Table for bit reversal process
*/
const uint16_t armBitRevTable[1024] = {
- 0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700,
- 0x80, 0x480, 0x280, 0x680, 0x180, 0x580, 0x380,
- 0x780, 0x40, 0x440, 0x240, 0x640, 0x140, 0x540,
- 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0,
- 0x5c0, 0x3c0, 0x7c0, 0x20, 0x420, 0x220, 0x620,
- 0x120, 0x520, 0x320, 0x720, 0xa0, 0x4a0, 0x2a0,
- 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460,
- 0x260, 0x660, 0x160, 0x560, 0x360, 0x760, 0xe0,
- 0x4e0, 0x2e0, 0x6e0, 0x1e0, 0x5e0, 0x3e0, 0x7e0,
- 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310,
- 0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590,
- 0x390, 0x790, 0x50, 0x450, 0x250, 0x650, 0x150,
- 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0, 0x6d0,
- 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230,
- 0x630, 0x130, 0x530, 0x330, 0x730, 0xb0, 0x4b0,
- 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0, 0x7b0, 0x70,
- 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770,
- 0xf0, 0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0,
- 0x7f0, 0x8, 0x408, 0x208, 0x608, 0x108, 0x508,
- 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188,
- 0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648,
- 0x148, 0x548, 0x348, 0x748, 0xc8, 0x4c8, 0x2c8,
- 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28, 0x428,
- 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8,
- 0x4a8, 0x2a8, 0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8,
- 0x68, 0x468, 0x268, 0x668, 0x168, 0x568, 0x368,
- 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8,
- 0x3e8, 0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118,
- 0x518, 0x318, 0x718, 0x98, 0x498, 0x298, 0x698,
- 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258,
- 0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8,
- 0x2d8, 0x6d8, 0x1d8, 0x5d8, 0x3d8, 0x7d8, 0x38,
- 0x438, 0x238, 0x638, 0x138, 0x538, 0x338, 0x738,
- 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8,
- 0x7b8, 0x78, 0x478, 0x278, 0x678, 0x178, 0x578,
- 0x378, 0x778, 0xf8, 0x4f8, 0x2f8, 0x6f8, 0x1f8,
- 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604,
- 0x104, 0x504, 0x304, 0x704, 0x84, 0x484, 0x284,
- 0x684, 0x184, 0x584, 0x384, 0x784, 0x44, 0x444,
- 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4,
- 0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4,
- 0x24, 0x424, 0x224, 0x624, 0x124, 0x524, 0x324,
- 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4, 0x5a4,
- 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164,
- 0x564, 0x364, 0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4,
- 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14, 0x414, 0x214,
- 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494,
- 0x294, 0x694, 0x194, 0x594, 0x394, 0x794, 0x54,
- 0x454, 0x254, 0x654, 0x154, 0x554, 0x354, 0x754,
- 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4,
- 0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534,
- 0x334, 0x734, 0xb4, 0x4b4, 0x2b4, 0x6b4, 0x1b4,
- 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274, 0x674,
- 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4,
- 0x6f4, 0x1f4, 0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c,
- 0x20c, 0x60c, 0x10c, 0x50c, 0x30c, 0x70c, 0x8c,
- 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c,
- 0x4c, 0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c,
- 0x74c, 0xcc, 0x4cc, 0x2cc, 0x6cc, 0x1cc, 0x5cc,
- 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c,
- 0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac,
- 0x1ac, 0x5ac, 0x3ac, 0x7ac, 0x6c, 0x46c, 0x26c,
- 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec, 0x4ec,
- 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c,
- 0x41c, 0x21c, 0x61c, 0x11c, 0x51c, 0x31c, 0x71c,
- 0x9c, 0x49c, 0x29c, 0x69c, 0x19c, 0x59c, 0x39c,
- 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c,
- 0x35c, 0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc,
- 0x5dc, 0x3dc, 0x7dc, 0x3c, 0x43c, 0x23c, 0x63c,
- 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc,
- 0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c,
- 0x27c, 0x67c, 0x17c, 0x57c, 0x37c, 0x77c, 0xfc,
- 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc, 0x7fc,
- 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302,
- 0x702, 0x82, 0x482, 0x282, 0x682, 0x182, 0x582,
- 0x382, 0x782, 0x42, 0x442, 0x242, 0x642, 0x142,
- 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2,
- 0x1c2, 0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222,
- 0x622, 0x122, 0x522, 0x322, 0x722, 0xa2, 0x4a2,
- 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62,
- 0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762,
- 0xe2, 0x4e2, 0x2e2, 0x6e2, 0x1e2, 0x5e2, 0x3e2,
- 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112, 0x512,
- 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192,
- 0x592, 0x392, 0x792, 0x52, 0x452, 0x252, 0x652,
- 0x152, 0x552, 0x352, 0x752, 0xd2, 0x4d2, 0x2d2,
- 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432,
- 0x232, 0x632, 0x132, 0x532, 0x332, 0x732, 0xb2,
- 0x4b2, 0x2b2, 0x6b2, 0x1b2, 0x5b2, 0x3b2, 0x7b2,
- 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372,
- 0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2,
- 0x3f2, 0x7f2, 0xa, 0x40a, 0x20a, 0x60a, 0x10a,
- 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a, 0x68a,
- 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a,
- 0x64a, 0x14a, 0x54a, 0x34a, 0x74a, 0xca, 0x4ca,
- 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca, 0x7ca, 0x2a,
- 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a,
- 0xaa, 0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa,
- 0x7aa, 0x6a, 0x46a, 0x26a, 0x66a, 0x16a, 0x56a,
- 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea,
- 0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a,
- 0x11a, 0x51a, 0x31a, 0x71a, 0x9a, 0x49a, 0x29a,
- 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a, 0x45a,
- 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda,
- 0x4da, 0x2da, 0x6da, 0x1da, 0x5da, 0x3da, 0x7da,
- 0x3a, 0x43a, 0x23a, 0x63a, 0x13a, 0x53a, 0x33a,
- 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba,
- 0x3ba, 0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a,
- 0x57a, 0x37a, 0x77a, 0xfa, 0x4fa, 0x2fa, 0x6fa,
- 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206,
- 0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486,
- 0x286, 0x686, 0x186, 0x586, 0x386, 0x786, 0x46,
- 0x446, 0x246, 0x646, 0x146, 0x546, 0x346, 0x746,
- 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6,
- 0x7c6, 0x26, 0x426, 0x226, 0x626, 0x126, 0x526,
- 0x326, 0x726, 0xa6, 0x4a6, 0x2a6, 0x6a6, 0x1a6,
- 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666,
- 0x166, 0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6,
- 0x6e6, 0x1e6, 0x5e6, 0x3e6, 0x7e6, 0x16, 0x416,
- 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96,
- 0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796,
- 0x56, 0x456, 0x256, 0x656, 0x156, 0x556, 0x356,
- 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6, 0x5d6,
- 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136,
- 0x536, 0x336, 0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6,
- 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76, 0x476, 0x276,
- 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6,
- 0x2f6, 0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe,
- 0x40e, 0x20e, 0x60e, 0x10e, 0x50e, 0x30e, 0x70e,
- 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e,
- 0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e,
- 0x34e, 0x74e, 0xce, 0x4ce, 0x2ce, 0x6ce, 0x1ce,
- 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e, 0x62e,
- 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae,
- 0x6ae, 0x1ae, 0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e,
- 0x26e, 0x66e, 0x16e, 0x56e, 0x36e, 0x76e, 0xee,
- 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee,
- 0x1e, 0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e,
- 0x71e, 0x9e, 0x49e, 0x29e, 0x69e, 0x19e, 0x59e,
- 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e,
- 0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de,
- 0x1de, 0x5de, 0x3de, 0x7de, 0x3e, 0x43e, 0x23e,
- 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe, 0x4be,
- 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e,
- 0x47e, 0x27e, 0x67e, 0x17e, 0x57e, 0x37e, 0x77e,
- 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe, 0x5fe, 0x3fe,
- 0x7fe, 0x1
+ 0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x80, 0x480, 0x280,
+ 0x680, 0x180, 0x580, 0x380, 0x780, 0x40, 0x440, 0x240, 0x640, 0x140,
+ 0x540, 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0,
+ 0x7c0, 0x20, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0xa0,
+ 0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, 0x260,
+ 0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, 0x4e0, 0x2e0, 0x6e0, 0x1e0,
+ 0x5e0, 0x3e0, 0x7e0, 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310,
+ 0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x50,
+ 0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0,
+ 0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, 0x630, 0x130,
+ 0x530, 0x330, 0x730, 0xb0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0,
+ 0x7b0, 0x70, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0xf0,
+ 0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x8, 0x408, 0x208,
+ 0x608, 0x108, 0x508, 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188,
+ 0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348,
+ 0x748, 0xc8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28,
+ 0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, 0x4a8, 0x2a8,
+ 0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x68, 0x468, 0x268, 0x668, 0x168,
+ 0x568, 0x368, 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8,
+ 0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x98,
+ 0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258,
+ 0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, 0x2d8, 0x6d8, 0x1d8,
+ 0x5d8, 0x3d8, 0x7d8, 0x38, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338,
+ 0x738, 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x78,
+ 0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0xf8, 0x4f8, 0x2f8,
+ 0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, 0x104,
+ 0x504, 0x304, 0x704, 0x84, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384,
+ 0x784, 0x44, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4,
+ 0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x24, 0x424, 0x224,
+ 0x624, 0x124, 0x524, 0x324, 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4,
+ 0x5a4, 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364,
+ 0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14,
+ 0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, 0x294,
+ 0x694, 0x194, 0x594, 0x394, 0x794, 0x54, 0x454, 0x254, 0x654, 0x154,
+ 0x554, 0x354, 0x754, 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4,
+ 0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0xb4,
+ 0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274,
+ 0x674, 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, 0x6f4, 0x1f4,
+ 0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c,
+ 0x70c, 0x8c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x4c,
+ 0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0xcc, 0x4cc, 0x2cc,
+ 0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c,
+ 0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac,
+ 0x7ac, 0x6c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec,
+ 0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, 0x41c, 0x21c,
+ 0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x9c, 0x49c, 0x29c, 0x69c, 0x19c,
+ 0x59c, 0x39c, 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c,
+ 0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x3c,
+ 0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc,
+ 0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, 0x27c, 0x67c, 0x17c,
+ 0x57c, 0x37c, 0x77c, 0xfc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc,
+ 0x7fc, 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x82,
+ 0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x42, 0x442, 0x242,
+ 0x642, 0x142, 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, 0x1c2,
+ 0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322,
+ 0x722, 0xa2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62,
+ 0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0xe2, 0x4e2, 0x2e2,
+ 0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112,
+ 0x512, 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392,
+ 0x792, 0x52, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0xd2,
+ 0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, 0x232,
+ 0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, 0x4b2, 0x2b2, 0x6b2, 0x1b2,
+ 0x5b2, 0x3b2, 0x7b2, 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372,
+ 0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0xa,
+ 0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a,
+ 0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, 0x64a, 0x14a,
+ 0x54a, 0x34a, 0x74a, 0xca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca,
+ 0x7ca, 0x2a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0xaa,
+ 0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x6a, 0x46a, 0x26a,
+ 0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea,
+ 0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a,
+ 0x71a, 0x9a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a,
+ 0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, 0x4da, 0x2da,
+ 0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x3a, 0x43a, 0x23a, 0x63a, 0x13a,
+ 0x53a, 0x33a, 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba,
+ 0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0xfa,
+ 0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206,
+ 0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, 0x286, 0x686, 0x186,
+ 0x586, 0x386, 0x786, 0x46, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346,
+ 0x746, 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x26,
+ 0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0xa6, 0x4a6, 0x2a6,
+ 0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, 0x166,
+ 0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6,
+ 0x7e6, 0x16, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96,
+ 0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x56, 0x456, 0x256,
+ 0x656, 0x156, 0x556, 0x356, 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6,
+ 0x5d6, 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336,
+ 0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76,
+ 0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, 0x2f6,
+ 0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, 0x40e, 0x20e, 0x60e, 0x10e,
+ 0x50e, 0x30e, 0x70e, 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e,
+ 0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0xce,
+ 0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e,
+ 0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, 0x6ae, 0x1ae,
+ 0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e,
+ 0x76e, 0xee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x1e,
+ 0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x9e, 0x49e, 0x29e,
+ 0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e,
+ 0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de,
+ 0x7de, 0x3e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe,
+ 0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, 0x47e, 0x27e,
+ 0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe,
+ 0x5fe, 0x3fe, 0x7fe, 0x1
};
@@ -242,7 +198,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 16 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -276,7 +232,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 32 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -326,7 +282,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 64 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -408,141 +364,141 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 128 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
*/
const float32_t twiddleCoef_128[256] = {
-1.000000000f , 0.000000000f ,
-0.998795456f , 0.049067674f ,
-0.995184727f , 0.098017140f ,
-0.989176510f , 0.146730474f ,
-0.980785280f , 0.195090322f ,
-0.970031253f , 0.242980180f ,
-0.956940336f , 0.290284677f ,
-0.941544065f , 0.336889853f ,
-0.923879533f , 0.382683432f ,
-0.903989293f , 0.427555093f ,
-0.881921264f , 0.471396737f ,
-0.857728610f , 0.514102744f ,
-0.831469612f , 0.555570233f ,
-0.803207531f , 0.595699304f ,
-0.773010453f , 0.634393284f ,
-0.740951125f , 0.671558955f ,
-0.707106781f , 0.707106781f ,
-0.671558955f , 0.740951125f ,
-0.634393284f , 0.773010453f ,
-0.595699304f , 0.803207531f ,
-0.555570233f , 0.831469612f ,
-0.514102744f , 0.857728610f ,
-0.471396737f , 0.881921264f ,
-0.427555093f , 0.903989293f ,
-0.382683432f , 0.923879533f ,
-0.336889853f , 0.941544065f ,
-0.290284677f , 0.956940336f ,
-0.242980180f , 0.970031253f ,
-0.195090322f , 0.980785280f ,
-0.146730474f , 0.989176510f ,
-0.098017140f , 0.995184727f ,
-0.049067674f , 0.998795456f ,
-0.000000000f , 1.000000000f ,
--0.049067674f , 0.998795456f ,
--0.098017140f , 0.995184727f ,
--0.146730474f , 0.989176510f ,
--0.195090322f , 0.980785280f ,
--0.242980180f , 0.970031253f ,
--0.290284677f , 0.956940336f ,
--0.336889853f , 0.941544065f ,
--0.382683432f , 0.923879533f ,
--0.427555093f , 0.903989293f ,
--0.471396737f , 0.881921264f ,
--0.514102744f , 0.857728610f ,
--0.555570233f , 0.831469612f ,
--0.595699304f , 0.803207531f ,
--0.634393284f , 0.773010453f ,
--0.671558955f , 0.740951125f ,
--0.707106781f , 0.707106781f ,
--0.740951125f , 0.671558955f ,
--0.773010453f , 0.634393284f ,
--0.803207531f , 0.595699304f ,
--0.831469612f , 0.555570233f ,
--0.857728610f , 0.514102744f ,
--0.881921264f , 0.471396737f ,
--0.903989293f , 0.427555093f ,
--0.923879533f , 0.382683432f ,
--0.941544065f , 0.336889853f ,
--0.956940336f , 0.290284677f ,
--0.970031253f , 0.242980180f ,
--0.980785280f , 0.195090322f ,
--0.989176510f , 0.146730474f ,
--0.995184727f , 0.098017140f ,
--0.998795456f , 0.049067674f ,
--1.000000000f , 0.000000000f ,
--0.998795456f , -0.049067674f ,
--0.995184727f , -0.098017140f ,
--0.989176510f , -0.146730474f ,
--0.980785280f , -0.195090322f ,
--0.970031253f , -0.242980180f ,
--0.956940336f , -0.290284677f ,
--0.941544065f , -0.336889853f ,
--0.923879533f , -0.382683432f ,
--0.903989293f , -0.427555093f ,
--0.881921264f , -0.471396737f ,
--0.857728610f , -0.514102744f ,
--0.831469612f , -0.555570233f ,
--0.803207531f , -0.595699304f ,
--0.773010453f , -0.634393284f ,
--0.740951125f , -0.671558955f ,
--0.707106781f , -0.707106781f ,
--0.671558955f , -0.740951125f ,
--0.634393284f , -0.773010453f ,
--0.595699304f , -0.803207531f ,
--0.555570233f , -0.831469612f ,
--0.514102744f , -0.857728610f ,
--0.471396737f , -0.881921264f ,
--0.427555093f , -0.903989293f ,
--0.382683432f , -0.923879533f ,
--0.336889853f , -0.941544065f ,
--0.290284677f , -0.956940336f ,
--0.242980180f , -0.970031253f ,
--0.195090322f , -0.980785280f ,
--0.146730474f , -0.989176510f ,
--0.098017140f , -0.995184727f ,
--0.049067674f , -0.998795456f ,
--0.000000000f , -1.000000000f ,
-0.049067674f , -0.998795456f ,
-0.098017140f , -0.995184727f ,
-0.146730474f , -0.989176510f ,
-0.195090322f , -0.980785280f ,
-0.242980180f , -0.970031253f ,
-0.290284677f , -0.956940336f ,
-0.336889853f , -0.941544065f ,
-0.382683432f , -0.923879533f ,
-0.427555093f , -0.903989293f ,
-0.471396737f , -0.881921264f ,
-0.514102744f , -0.857728610f ,
-0.555570233f , -0.831469612f ,
-0.595699304f , -0.803207531f ,
-0.634393284f , -0.773010453f ,
-0.671558955f , -0.740951125f ,
-0.707106781f , -0.707106781f ,
-0.740951125f , -0.671558955f ,
-0.773010453f , -0.634393284f ,
-0.803207531f , -0.595699304f ,
-0.831469612f , -0.555570233f ,
-0.857728610f , -0.514102744f ,
-0.881921264f , -0.471396737f ,
-0.903989293f , -0.427555093f ,
-0.923879533f , -0.382683432f ,
-0.941544065f , -0.336889853f ,
-0.956940336f , -0.290284677f ,
-0.970031253f , -0.242980180f ,
-0.980785280f , -0.195090322f ,
-0.989176510f , -0.146730474f ,
-0.995184727f , -0.098017140f ,
-0.998795456f , -0.049067674f
+ 1.000000000f , 0.000000000f ,
+ 0.998795456f , 0.049067674f ,
+ 0.995184727f , 0.098017140f ,
+ 0.989176510f , 0.146730474f ,
+ 0.980785280f , 0.195090322f ,
+ 0.970031253f , 0.242980180f ,
+ 0.956940336f , 0.290284677f ,
+ 0.941544065f , 0.336889853f ,
+ 0.923879533f , 0.382683432f ,
+ 0.903989293f , 0.427555093f ,
+ 0.881921264f , 0.471396737f ,
+ 0.857728610f , 0.514102744f ,
+ 0.831469612f , 0.555570233f ,
+ 0.803207531f , 0.595699304f ,
+ 0.773010453f , 0.634393284f ,
+ 0.740951125f , 0.671558955f ,
+ 0.707106781f , 0.707106781f ,
+ 0.671558955f , 0.740951125f ,
+ 0.634393284f , 0.773010453f ,
+ 0.595699304f , 0.803207531f ,
+ 0.555570233f , 0.831469612f ,
+ 0.514102744f , 0.857728610f ,
+ 0.471396737f , 0.881921264f ,
+ 0.427555093f , 0.903989293f ,
+ 0.382683432f , 0.923879533f ,
+ 0.336889853f , 0.941544065f ,
+ 0.290284677f , 0.956940336f ,
+ 0.242980180f , 0.970031253f ,
+ 0.195090322f , 0.980785280f ,
+ 0.146730474f , 0.989176510f ,
+ 0.098017140f , 0.995184727f ,
+ 0.049067674f , 0.998795456f ,
+ 0.000000000f , 1.000000000f ,
+ -0.049067674f , 0.998795456f ,
+ -0.098017140f , 0.995184727f ,
+ -0.146730474f , 0.989176510f ,
+ -0.195090322f , 0.980785280f ,
+ -0.242980180f , 0.970031253f ,
+ -0.290284677f , 0.956940336f ,
+ -0.336889853f , 0.941544065f ,
+ -0.382683432f , 0.923879533f ,
+ -0.427555093f , 0.903989293f ,
+ -0.471396737f , 0.881921264f ,
+ -0.514102744f , 0.857728610f ,
+ -0.555570233f , 0.831469612f ,
+ -0.595699304f , 0.803207531f ,
+ -0.634393284f , 0.773010453f ,
+ -0.671558955f , 0.740951125f ,
+ -0.707106781f , 0.707106781f ,
+ -0.740951125f , 0.671558955f ,
+ -0.773010453f , 0.634393284f ,
+ -0.803207531f , 0.595699304f ,
+ -0.831469612f , 0.555570233f ,
+ -0.857728610f , 0.514102744f ,
+ -0.881921264f , 0.471396737f ,
+ -0.903989293f , 0.427555093f ,
+ -0.923879533f , 0.382683432f ,
+ -0.941544065f , 0.336889853f ,
+ -0.956940336f , 0.290284677f ,
+ -0.970031253f , 0.242980180f ,
+ -0.980785280f , 0.195090322f ,
+ -0.989176510f , 0.146730474f ,
+ -0.995184727f , 0.098017140f ,
+ -0.998795456f , 0.049067674f ,
+ -1.000000000f , 0.000000000f ,
+ -0.998795456f , -0.049067674f ,
+ -0.995184727f , -0.098017140f ,
+ -0.989176510f , -0.146730474f ,
+ -0.980785280f , -0.195090322f ,
+ -0.970031253f , -0.242980180f ,
+ -0.956940336f , -0.290284677f ,
+ -0.941544065f , -0.336889853f ,
+ -0.923879533f , -0.382683432f ,
+ -0.903989293f , -0.427555093f ,
+ -0.881921264f , -0.471396737f ,
+ -0.857728610f , -0.514102744f ,
+ -0.831469612f , -0.555570233f ,
+ -0.803207531f , -0.595699304f ,
+ -0.773010453f , -0.634393284f ,
+ -0.740951125f , -0.671558955f ,
+ -0.707106781f , -0.707106781f ,
+ -0.671558955f , -0.740951125f ,
+ -0.634393284f , -0.773010453f ,
+ -0.595699304f , -0.803207531f ,
+ -0.555570233f , -0.831469612f ,
+ -0.514102744f , -0.857728610f ,
+ -0.471396737f , -0.881921264f ,
+ -0.427555093f , -0.903989293f ,
+ -0.382683432f , -0.923879533f ,
+ -0.336889853f , -0.941544065f ,
+ -0.290284677f , -0.956940336f ,
+ -0.242980180f , -0.970031253f ,
+ -0.195090322f , -0.980785280f ,
+ -0.146730474f , -0.989176510f ,
+ -0.098017140f , -0.995184727f ,
+ -0.049067674f , -0.998795456f ,
+ -0.000000000f , -1.000000000f ,
+ 0.049067674f , -0.998795456f ,
+ 0.098017140f , -0.995184727f ,
+ 0.146730474f , -0.989176510f ,
+ 0.195090322f , -0.980785280f ,
+ 0.242980180f , -0.970031253f ,
+ 0.290284677f , -0.956940336f ,
+ 0.336889853f , -0.941544065f ,
+ 0.382683432f , -0.923879533f ,
+ 0.427555093f , -0.903989293f ,
+ 0.471396737f , -0.881921264f ,
+ 0.514102744f , -0.857728610f ,
+ 0.555570233f , -0.831469612f ,
+ 0.595699304f , -0.803207531f ,
+ 0.634393284f , -0.773010453f ,
+ 0.671558955f , -0.740951125f ,
+ 0.707106781f , -0.707106781f ,
+ 0.740951125f , -0.671558955f ,
+ 0.773010453f , -0.634393284f ,
+ 0.803207531f , -0.595699304f ,
+ 0.831469612f , -0.555570233f ,
+ 0.857728610f , -0.514102744f ,
+ 0.881921264f , -0.471396737f ,
+ 0.903989293f , -0.427555093f ,
+ 0.923879533f , -0.382683432f ,
+ 0.941544065f , -0.336889853f ,
+ 0.956940336f , -0.290284677f ,
+ 0.970031253f , -0.242980180f ,
+ 0.980785280f , -0.195090322f ,
+ 0.989176510f , -0.146730474f ,
+ 0.995184727f , -0.098017140f ,
+ 0.998795456f , -0.049067674f
};
/**
@@ -555,7 +511,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 256 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -829,7 +785,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 512 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -1358,7 +1314,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 1024 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -2400,7 +2356,7 @@
* twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
-* where N = 4096 and PI = 3.14159265358979
+* where N = 2048 and PI = 3.14159265358979
* \par
* Cos and Sin values are in interleaved fashion
*
@@ -8574,6 +8530,3235 @@
* @brief Q31 Twiddle factors Table
*/
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 16 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_16_q31[24] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x5A82799A, 0x5A82799A,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x00000000, 0x7FFFFFFF,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xA57D8666, 0x5A82799A,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x80000000, 0x00000000,
+ 0x89BE50C3, 0xCF043AB2,
+ 0xA57D8666, 0xA57D8666,
+ 0xCF043AB2, 0x89BE50C3
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 32 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_32_q31[48] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x5A82799A, 0x5A82799A,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x00000000, 0x7FFFFFFF,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xA57D8666, 0x5A82799A,
+ 0x9592675B, 0x471CECE6,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x80000000, 0x00000000,
+ 0x8275A0C0, 0xE70747C3,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x9592675B, 0xB8E31319,
+ 0xA57D8666, 0xA57D8666,
+ 0xB8E31319, 0x9592675B,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xE70747C3, 0x8275A0C0
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 64 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_64_q31[96] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7A7D055B, 0x25280C5D,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x62F201AC, 0x5133CC94,
+ 0x5A82799A, 0x5A82799A,
+ 0x5133CC94, 0x62F201AC,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x25280C5D, 0x7A7D055B,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x00000000, 0x7FFFFFFF,
+ 0xF3742CA1, 0x7F62368F,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xAECC336B, 0x62F201AC,
+ 0xA57D8666, 0x5A82799A,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9592675B, 0x471CECE6,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8582FAA4, 0x25280C5D,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x809DC970, 0x0C8BD35E,
+ 0x80000000, 0x00000000,
+ 0x809DC970, 0xF3742CA1,
+ 0x8275A0C0, 0xE70747C3,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x9592675B, 0xB8E31319,
+ 0x9D0DFE53, 0xAECC336B,
+ 0xA57D8666, 0xA57D8666,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xB8E31319, 0x9592675B,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xE70747C3, 0x8275A0C0,
+ 0xF3742CA1, 0x809DC970
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 128 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_128_q31[192] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7A7D055B, 0x25280C5D,
+ 0x78848413, 0x2B1F34EB,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x62F201AC, 0x5133CC94,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5A82799A, 0x5A82799A,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x5133CC94, 0x62F201AC,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x2B1F34EB, 0x78848413,
+ 0x25280C5D, 0x7A7D055B,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x0647D97C, 0x7FD8878D,
+ 0x00000000, 0x7FFFFFFF,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF3742CA1, 0x7F62368F,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xD4E0CB14, 0x78848413,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB3C0200C, 0x66CF811F,
+ 0xAECC336B, 0x62F201AC,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA57D8666, 0x5A82799A,
+ 0xA1288376, 0x55F5A4D2,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x9592675B, 0x471CECE6,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8C4A142F, 0x36BA2013,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x8582FAA4, 0x25280C5D,
+ 0x83D60411, 0x1F19F97B,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x8162AA03, 0x12C8106E,
+ 0x809DC970, 0x0C8BD35E,
+ 0x80277872, 0x0647D97C,
+ 0x80000000, 0x00000000,
+ 0x80277872, 0xF9B82683,
+ 0x809DC970, 0xF3742CA1,
+ 0x8162AA03, 0xED37EF91,
+ 0x8275A0C0, 0xE70747C3,
+ 0x83D60411, 0xE0E60684,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x9592675B, 0xB8E31319,
+ 0x99307EE0, 0xB3C0200C,
+ 0x9D0DFE53, 0xAECC336B,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA57D8666, 0xA57D8666,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB8E31319, 0x9592675B,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xE0E60684, 0x83D60411,
+ 0xE70747C3, 0x8275A0C0,
+ 0xED37EF91, 0x8162AA03,
+ 0xF3742CA1, 0x809DC970,
+ 0xF9B82683, 0x80277872
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 256 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_256_q31[384] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FF62182, 0x03242ABF,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7FA736B4, 0x096A9049,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7F0991C3, 0x0FAB272B,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7E1D93E9, 0x15E21444,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7CE3CEB1, 0x1C0B826A,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7B5D039D, 0x2223A4C5,
+ 0x7A7D055B, 0x25280C5D,
+ 0x798A23B1, 0x2826B928,
+ 0x78848413, 0x2B1F34EB,
+ 0x776C4EDB, 0x2E110A62,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x7504D345, 0x33DEF287,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x72552C84, 0x398CDD32,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x6F5F02B1, 0x3F1749B7,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6C242960, 0x447ACD50,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x68A69E81, 0x49B41533,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x64E88926, 0x4EBFE8A4,
+ 0x62F201AC, 0x5133CC94,
+ 0x60EC3830, 0x539B2AEF,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5CB420DF, 0x5842DD54,
+ 0x5A82799A, 0x5A82799A,
+ 0x5842DD54, 0x5CB420DF,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x539B2AEF, 0x60EC3830,
+ 0x5133CC94, 0x62F201AC,
+ 0x4EBFE8A4, 0x64E88926,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x49B41533, 0x68A69E81,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x447ACD50, 0x6C242960,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x3F1749B7, 0x6F5F02B1,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x398CDD32, 0x72552C84,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x33DEF287, 0x7504D345,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x2E110A62, 0x776C4EDB,
+ 0x2B1F34EB, 0x78848413,
+ 0x2826B928, 0x798A23B1,
+ 0x25280C5D, 0x7A7D055B,
+ 0x2223A4C5, 0x7B5D039D,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x1C0B826A, 0x7CE3CEB1,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x15E21444, 0x7E1D93E9,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x0FAB272B, 0x7F0991C3,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x096A9049, 0x7FA736B4,
+ 0x0647D97C, 0x7FD8878D,
+ 0x03242ABF, 0x7FF62182,
+ 0x00000000, 0x7FFFFFFF,
+ 0xFCDBD541, 0x7FF62182,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF6956FB6, 0x7FA736B4,
+ 0xF3742CA1, 0x7F62368F,
+ 0xF054D8D4, 0x7F0991C3,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xEA1DEBBB, 0x7E1D93E9,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE3F47D95, 0x7CE3CEB1,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xDDDC5B3A, 0x7B5D039D,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xD7D946D7, 0x798A23B1,
+ 0xD4E0CB14, 0x78848413,
+ 0xD1EEF59E, 0x776C4EDB,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xCC210D78, 0x7504D345,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC67322CD, 0x72552C84,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xC0E8B648, 0x6F5F02B1,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xBB8532AF, 0x6C242960,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB64BEACC, 0x68A69E81,
+ 0xB3C0200C, 0x66CF811F,
+ 0xB140175B, 0x64E88926,
+ 0xAECC336B, 0x62F201AC,
+ 0xAC64D510, 0x60EC3830,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA7BD22AB, 0x5CB420DF,
+ 0xA57D8666, 0x5A82799A,
+ 0xA34BDF20, 0x5842DD54,
+ 0xA1288376, 0x55F5A4D2,
+ 0x9F13C7D0, 0x539B2AEF,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9B1776D9, 0x4EBFE8A4,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x9759617E, 0x49B41533,
+ 0x9592675B, 0x471CECE6,
+ 0x93DBD69F, 0x447ACD50,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x90A0FD4E, 0x3F1749B7,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8DAAD37B, 0x398CDD32,
+ 0x8C4A142F, 0x36BA2013,
+ 0x8AFB2CBA, 0x33DEF287,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8893B124, 0x2E110A62,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x8675DC4E, 0x2826B928,
+ 0x8582FAA4, 0x25280C5D,
+ 0x84A2FC62, 0x2223A4C5,
+ 0x83D60411, 0x1F19F97B,
+ 0x831C314E, 0x1C0B826A,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x81E26C16, 0x15E21444,
+ 0x8162AA03, 0x12C8106E,
+ 0x80F66E3C, 0x0FAB272B,
+ 0x809DC970, 0x0C8BD35E,
+ 0x8058C94C, 0x096A9049,
+ 0x80277872, 0x0647D97C,
+ 0x8009DE7D, 0x03242ABF,
+ 0x80000000, 0x00000000,
+ 0x8009DE7D, 0xFCDBD541,
+ 0x80277872, 0xF9B82683,
+ 0x8058C94C, 0xF6956FB6,
+ 0x809DC970, 0xF3742CA1,
+ 0x80F66E3C, 0xF054D8D4,
+ 0x8162AA03, 0xED37EF91,
+ 0x81E26C16, 0xEA1DEBBB,
+ 0x8275A0C0, 0xE70747C3,
+ 0x831C314E, 0xE3F47D95,
+ 0x83D60411, 0xE0E60684,
+ 0x84A2FC62, 0xDDDC5B3A,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x8675DC4E, 0xD7D946D7,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x8893B124, 0xD1EEF59E,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x8AFB2CBA, 0xCC210D78,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8DAAD37B, 0xC67322CD,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x90A0FD4E, 0xC0E8B648,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x93DBD69F, 0xBB8532AF,
+ 0x9592675B, 0xB8E31319,
+ 0x9759617E, 0xB64BEACC,
+ 0x99307EE0, 0xB3C0200C,
+ 0x9B1776D9, 0xB140175B,
+ 0x9D0DFE53, 0xAECC336B,
+ 0x9F13C7D0, 0xAC64D510,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA34BDF20, 0xA7BD22AB,
+ 0xA57D8666, 0xA57D8666,
+ 0xA7BD22AB, 0xA34BDF20,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAC64D510, 0x9F13C7D0,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xB140175B, 0x9B1776D9,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB64BEACC, 0x9759617E,
+ 0xB8E31319, 0x9592675B,
+ 0xBB8532AF, 0x93DBD69F,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xC0E8B648, 0x90A0FD4E,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC67322CD, 0x8DAAD37B,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xCC210D78, 0x8AFB2CBA,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xD1EEF59E, 0x8893B124,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xD7D946D7, 0x8675DC4E,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xDDDC5B3A, 0x84A2FC62,
+ 0xE0E60684, 0x83D60411,
+ 0xE3F47D95, 0x831C314E,
+ 0xE70747C3, 0x8275A0C0,
+ 0xEA1DEBBB, 0x81E26C16,
+ 0xED37EF91, 0x8162AA03,
+ 0xF054D8D4, 0x80F66E3C,
+ 0xF3742CA1, 0x809DC970,
+ 0xF6956FB6, 0x8058C94C,
+ 0xF9B82683, 0x80277872,
+ 0xFCDBD541, 0x8009DE7D
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 512 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_512_q31[768] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FFD885A, 0x01921D1F,
+ 0x7FF62182, 0x03242ABF,
+ 0x7FE9CBC0, 0x04B6195D,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7FC25596, 0x07D95B9E,
+ 0x7FA736B4, 0x096A9049,
+ 0x7F872BF3, 0x0AFB6805,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7F3857F5, 0x0E1BC2E3,
+ 0x7F0991C3, 0x0FAB272B,
+ 0x7ED5E5C6, 0x1139F0CE,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7E5FE493, 0x145576B1,
+ 0x7E1D93E9, 0x15E21444,
+ 0x7DD6668E, 0x176DD9DE,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7D3980EC, 0x1A82A025,
+ 0x7CE3CEB1, 0x1C0B826A,
+ 0x7C894BDD, 0x1D934FE5,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7BC5E28F, 0x209F701C,
+ 0x7B5D039D, 0x2223A4C5,
+ 0x7AEF6323, 0x23A6887E,
+ 0x7A7D055B, 0x25280C5D,
+ 0x7A05EEAD, 0x26A82185,
+ 0x798A23B1, 0x2826B928,
+ 0x7909A92C, 0x29A3C484,
+ 0x78848413, 0x2B1F34EB,
+ 0x77FAB988, 0x2C98FBBA,
+ 0x776C4EDB, 0x2E110A62,
+ 0x76D94988, 0x2F875262,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x75A585CF, 0x326E54C7,
+ 0x7504D345, 0x33DEF287,
+ 0x745F9DD1, 0x354D9056,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x7307C3D0, 0x382493B0,
+ 0x72552C84, 0x398CDD32,
+ 0x719E2CD2, 0x3AF2EEB7,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x70231099, 0x3DB832A5,
+ 0x6F5F02B1, 0x3F1749B7,
+ 0x6E96A99C, 0x4073F21D,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6CF934FB, 0x4325C135,
+ 0x6C242960, 0x447ACD50,
+ 0x6B4AF278, 0x45CD358F,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x698C246C, 0x4869E664,
+ 0x68A69E81, 0x49B41533,
+ 0x67BD0FBC, 0x4AFB6C97,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x65DDFBD3, 0x4D8162C4,
+ 0x64E88926, 0x4EBFE8A4,
+ 0x63EF328F, 0x4FFB654D,
+ 0x62F201AC, 0x5133CC94,
+ 0x61F1003E, 0x5269126E,
+ 0x60EC3830, 0x539B2AEF,
+ 0x5FE3B38D, 0x54CA0A4A,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5DC79D7C, 0x571DEEF9,
+ 0x5CB420DF, 0x5842DD54,
+ 0x5B9D1153, 0x59646497,
+ 0x5A82799A, 0x5A82799A,
+ 0x59646497, 0x5B9D1153,
+ 0x5842DD54, 0x5CB420DF,
+ 0x571DEEF9, 0x5DC79D7C,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x54CA0A4A, 0x5FE3B38D,
+ 0x539B2AEF, 0x60EC3830,
+ 0x5269126E, 0x61F1003E,
+ 0x5133CC94, 0x62F201AC,
+ 0x4FFB654D, 0x63EF328F,
+ 0x4EBFE8A4, 0x64E88926,
+ 0x4D8162C4, 0x65DDFBD3,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x4AFB6C97, 0x67BD0FBC,
+ 0x49B41533, 0x68A69E81,
+ 0x4869E664, 0x698C246C,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x45CD358F, 0x6B4AF278,
+ 0x447ACD50, 0x6C242960,
+ 0x4325C135, 0x6CF934FB,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x4073F21D, 0x6E96A99C,
+ 0x3F1749B7, 0x6F5F02B1,
+ 0x3DB832A5, 0x70231099,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x3AF2EEB7, 0x719E2CD2,
+ 0x398CDD32, 0x72552C84,
+ 0x382493B0, 0x7307C3D0,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x354D9056, 0x745F9DD1,
+ 0x33DEF287, 0x7504D345,
+ 0x326E54C7, 0x75A585CF,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x2F875262, 0x76D94988,
+ 0x2E110A62, 0x776C4EDB,
+ 0x2C98FBBA, 0x77FAB988,
+ 0x2B1F34EB, 0x78848413,
+ 0x29A3C484, 0x7909A92C,
+ 0x2826B928, 0x798A23B1,
+ 0x26A82185, 0x7A05EEAD,
+ 0x25280C5D, 0x7A7D055B,
+ 0x23A6887E, 0x7AEF6323,
+ 0x2223A4C5, 0x7B5D039D,
+ 0x209F701C, 0x7BC5E28F,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x1D934FE5, 0x7C894BDD,
+ 0x1C0B826A, 0x7CE3CEB1,
+ 0x1A82A025, 0x7D3980EC,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x176DD9DE, 0x7DD6668E,
+ 0x15E21444, 0x7E1D93E9,
+ 0x145576B1, 0x7E5FE493,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x1139F0CE, 0x7ED5E5C6,
+ 0x0FAB272B, 0x7F0991C3,
+ 0x0E1BC2E3, 0x7F3857F5,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x0AFB6805, 0x7F872BF3,
+ 0x096A9049, 0x7FA736B4,
+ 0x07D95B9E, 0x7FC25596,
+ 0x0647D97C, 0x7FD8878D,
+ 0x04B6195D, 0x7FE9CBC0,
+ 0x03242ABF, 0x7FF62182,
+ 0x01921D1F, 0x7FFD885A,
+ 0x00000000, 0x7FFFFFFF,
+ 0xFE6DE2E0, 0x7FFD885A,
+ 0xFCDBD541, 0x7FF62182,
+ 0xFB49E6A2, 0x7FE9CBC0,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF826A461, 0x7FC25596,
+ 0xF6956FB6, 0x7FA736B4,
+ 0xF50497FA, 0x7F872BF3,
+ 0xF3742CA1, 0x7F62368F,
+ 0xF1E43D1C, 0x7F3857F5,
+ 0xF054D8D4, 0x7F0991C3,
+ 0xEEC60F31, 0x7ED5E5C6,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xEBAA894E, 0x7E5FE493,
+ 0xEA1DEBBB, 0x7E1D93E9,
+ 0xE8922621, 0x7DD6668E,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE57D5FDA, 0x7D3980EC,
+ 0xE3F47D95, 0x7CE3CEB1,
+ 0xE26CB01A, 0x7C894BDD,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xDF608FE3, 0x7BC5E28F,
+ 0xDDDC5B3A, 0x7B5D039D,
+ 0xDC597781, 0x7AEF6323,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xD957DE7A, 0x7A05EEAD,
+ 0xD7D946D7, 0x798A23B1,
+ 0xD65C3B7B, 0x7909A92C,
+ 0xD4E0CB14, 0x78848413,
+ 0xD3670445, 0x77FAB988,
+ 0xD1EEF59E, 0x776C4EDB,
+ 0xD078AD9D, 0x76D94988,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xCD91AB38, 0x75A585CF,
+ 0xCC210D78, 0x7504D345,
+ 0xCAB26FA9, 0x745F9DD1,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC7DB6C50, 0x7307C3D0,
+ 0xC67322CD, 0x72552C84,
+ 0xC50D1148, 0x719E2CD2,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xC247CD5A, 0x70231099,
+ 0xC0E8B648, 0x6F5F02B1,
+ 0xBF8C0DE2, 0x6E96A99C,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xBCDA3ECA, 0x6CF934FB,
+ 0xBB8532AF, 0x6C242960,
+ 0xBA32CA70, 0x6B4AF278,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB796199B, 0x698C246C,
+ 0xB64BEACC, 0x68A69E81,
+ 0xB5049368, 0x67BD0FBC,
+ 0xB3C0200C, 0x66CF811F,
+ 0xB27E9D3B, 0x65DDFBD3,
+ 0xB140175B, 0x64E88926,
+ 0xB0049AB2, 0x63EF328F,
+ 0xAECC336B, 0x62F201AC,
+ 0xAD96ED91, 0x61F1003E,
+ 0xAC64D510, 0x60EC3830,
+ 0xAB35F5B5, 0x5FE3B38D,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA8E21106, 0x5DC79D7C,
+ 0xA7BD22AB, 0x5CB420DF,
+ 0xA69B9B68, 0x5B9D1153,
+ 0xA57D8666, 0x5A82799A,
+ 0xA462EEAC, 0x59646497,
+ 0xA34BDF20, 0x5842DD54,
+ 0xA2386283, 0x571DEEF9,
+ 0xA1288376, 0x55F5A4D2,
+ 0xA01C4C72, 0x54CA0A4A,
+ 0x9F13C7D0, 0x539B2AEF,
+ 0x9E0EFFC1, 0x5269126E,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9C10CD70, 0x4FFB654D,
+ 0x9B1776D9, 0x4EBFE8A4,
+ 0x9A22042C, 0x4D8162C4,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x9842F043, 0x4AFB6C97,
+ 0x9759617E, 0x49B41533,
+ 0x9673DB94, 0x4869E664,
+ 0x9592675B, 0x471CECE6,
+ 0x94B50D87, 0x45CD358F,
+ 0x93DBD69F, 0x447ACD50,
+ 0x9306CB04, 0x4325C135,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x91695663, 0x4073F21D,
+ 0x90A0FD4E, 0x3F1749B7,
+ 0x8FDCEF66, 0x3DB832A5,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8E61D32D, 0x3AF2EEB7,
+ 0x8DAAD37B, 0x398CDD32,
+ 0x8CF83C30, 0x382493B0,
+ 0x8C4A142F, 0x36BA2013,
+ 0x8BA0622F, 0x354D9056,
+ 0x8AFB2CBA, 0x33DEF287,
+ 0x8A5A7A30, 0x326E54C7,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8926B677, 0x2F875262,
+ 0x8893B124, 0x2E110A62,
+ 0x88054677, 0x2C98FBBA,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x86F656D3, 0x29A3C484,
+ 0x8675DC4E, 0x2826B928,
+ 0x85FA1152, 0x26A82185,
+ 0x8582FAA4, 0x25280C5D,
+ 0x85109CDC, 0x23A6887E,
+ 0x84A2FC62, 0x2223A4C5,
+ 0x843A1D70, 0x209F701C,
+ 0x83D60411, 0x1F19F97B,
+ 0x8376B422, 0x1D934FE5,
+ 0x831C314E, 0x1C0B826A,
+ 0x82C67F13, 0x1A82A025,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x82299971, 0x176DD9DE,
+ 0x81E26C16, 0x15E21444,
+ 0x81A01B6C, 0x145576B1,
+ 0x8162AA03, 0x12C8106E,
+ 0x812A1A39, 0x1139F0CE,
+ 0x80F66E3C, 0x0FAB272B,
+ 0x80C7A80A, 0x0E1BC2E3,
+ 0x809DC970, 0x0C8BD35E,
+ 0x8078D40D, 0x0AFB6805,
+ 0x8058C94C, 0x096A9049,
+ 0x803DAA69, 0x07D95B9E,
+ 0x80277872, 0x0647D97C,
+ 0x80163440, 0x04B6195D,
+ 0x8009DE7D, 0x03242ABF,
+ 0x800277A5, 0x01921D1F,
+ 0x80000000, 0x00000000,
+ 0x800277A5, 0xFE6DE2E0,
+ 0x8009DE7D, 0xFCDBD541,
+ 0x80163440, 0xFB49E6A2,
+ 0x80277872, 0xF9B82683,
+ 0x803DAA69, 0xF826A461,
+ 0x8058C94C, 0xF6956FB6,
+ 0x8078D40D, 0xF50497FA,
+ 0x809DC970, 0xF3742CA1,
+ 0x80C7A80A, 0xF1E43D1C,
+ 0x80F66E3C, 0xF054D8D4,
+ 0x812A1A39, 0xEEC60F31,
+ 0x8162AA03, 0xED37EF91,
+ 0x81A01B6C, 0xEBAA894E,
+ 0x81E26C16, 0xEA1DEBBB,
+ 0x82299971, 0xE8922621,
+ 0x8275A0C0, 0xE70747C3,
+ 0x82C67F13, 0xE57D5FDA,
+ 0x831C314E, 0xE3F47D95,
+ 0x8376B422, 0xE26CB01A,
+ 0x83D60411, 0xE0E60684,
+ 0x843A1D70, 0xDF608FE3,
+ 0x84A2FC62, 0xDDDC5B3A,
+ 0x85109CDC, 0xDC597781,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x85FA1152, 0xD957DE7A,
+ 0x8675DC4E, 0xD7D946D7,
+ 0x86F656D3, 0xD65C3B7B,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x88054677, 0xD3670445,
+ 0x8893B124, 0xD1EEF59E,
+ 0x8926B677, 0xD078AD9D,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x8A5A7A30, 0xCD91AB38,
+ 0x8AFB2CBA, 0xCC210D78,
+ 0x8BA0622F, 0xCAB26FA9,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8CF83C30, 0xC7DB6C50,
+ 0x8DAAD37B, 0xC67322CD,
+ 0x8E61D32D, 0xC50D1148,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x8FDCEF66, 0xC247CD5A,
+ 0x90A0FD4E, 0xC0E8B648,
+ 0x91695663, 0xBF8C0DE2,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x9306CB04, 0xBCDA3ECA,
+ 0x93DBD69F, 0xBB8532AF,
+ 0x94B50D87, 0xBA32CA70,
+ 0x9592675B, 0xB8E31319,
+ 0x9673DB94, 0xB796199B,
+ 0x9759617E, 0xB64BEACC,
+ 0x9842F043, 0xB5049368,
+ 0x99307EE0, 0xB3C0200C,
+ 0x9A22042C, 0xB27E9D3B,
+ 0x9B1776D9, 0xB140175B,
+ 0x9C10CD70, 0xB0049AB2,
+ 0x9D0DFE53, 0xAECC336B,
+ 0x9E0EFFC1, 0xAD96ED91,
+ 0x9F13C7D0, 0xAC64D510,
+ 0xA01C4C72, 0xAB35F5B5,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA2386283, 0xA8E21106,
+ 0xA34BDF20, 0xA7BD22AB,
+ 0xA462EEAC, 0xA69B9B68,
+ 0xA57D8666, 0xA57D8666,
+ 0xA69B9B68, 0xA462EEAC,
+ 0xA7BD22AB, 0xA34BDF20,
+ 0xA8E21106, 0xA2386283,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAB35F5B5, 0xA01C4C72,
+ 0xAC64D510, 0x9F13C7D0,
+ 0xAD96ED91, 0x9E0EFFC1,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xB0049AB2, 0x9C10CD70,
+ 0xB140175B, 0x9B1776D9,
+ 0xB27E9D3B, 0x9A22042C,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB5049368, 0x9842F043,
+ 0xB64BEACC, 0x9759617E,
+ 0xB796199B, 0x9673DB94,
+ 0xB8E31319, 0x9592675B,
+ 0xBA32CA70, 0x94B50D87,
+ 0xBB8532AF, 0x93DBD69F,
+ 0xBCDA3ECA, 0x9306CB04,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xBF8C0DE2, 0x91695663,
+ 0xC0E8B648, 0x90A0FD4E,
+ 0xC247CD5A, 0x8FDCEF66,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC50D1148, 0x8E61D32D,
+ 0xC67322CD, 0x8DAAD37B,
+ 0xC7DB6C50, 0x8CF83C30,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xCAB26FA9, 0x8BA0622F,
+ 0xCC210D78, 0x8AFB2CBA,
+ 0xCD91AB38, 0x8A5A7A30,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xD078AD9D, 0x8926B677,
+ 0xD1EEF59E, 0x8893B124,
+ 0xD3670445, 0x88054677,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xD65C3B7B, 0x86F656D3,
+ 0xD7D946D7, 0x8675DC4E,
+ 0xD957DE7A, 0x85FA1152,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xDC597781, 0x85109CDC,
+ 0xDDDC5B3A, 0x84A2FC62,
+ 0xDF608FE3, 0x843A1D70,
+ 0xE0E60684, 0x83D60411,
+ 0xE26CB01A, 0x8376B422,
+ 0xE3F47D95, 0x831C314E,
+ 0xE57D5FDA, 0x82C67F13,
+ 0xE70747C3, 0x8275A0C0,
+ 0xE8922621, 0x82299971,
+ 0xEA1DEBBB, 0x81E26C16,
+ 0xEBAA894E, 0x81A01B6C,
+ 0xED37EF91, 0x8162AA03,
+ 0xEEC60F31, 0x812A1A39,
+ 0xF054D8D4, 0x80F66E3C,
+ 0xF1E43D1C, 0x80C7A80A,
+ 0xF3742CA1, 0x809DC970,
+ 0xF50497FA, 0x8078D40D,
+ 0xF6956FB6, 0x8058C94C,
+ 0xF826A461, 0x803DAA69,
+ 0xF9B82683, 0x80277872,
+ 0xFB49E6A2, 0x80163440,
+ 0xFCDBD541, 0x8009DE7D,
+ 0xFE6DE2E0, 0x800277A5
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 1024 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_1024_q31[1536] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FFF6216, 0x00C90F88,
+ 0x7FFD885A, 0x01921D1F,
+ 0x7FFA72D1, 0x025B26D7,
+ 0x7FF62182, 0x03242ABF,
+ 0x7FF09477, 0x03ED26E6,
+ 0x7FE9CBC0, 0x04B6195D,
+ 0x7FE1C76B, 0x057F0034,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7FCE0C3E, 0x0710A344,
+ 0x7FC25596, 0x07D95B9E,
+ 0x7FB563B2, 0x08A2009A,
+ 0x7FA736B4, 0x096A9049,
+ 0x7F97CEBC, 0x0A3308BC,
+ 0x7F872BF3, 0x0AFB6805,
+ 0x7F754E7F, 0x0BC3AC35,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7F4DE450, 0x0D53DB92,
+ 0x7F3857F5, 0x0E1BC2E3,
+ 0x7F2191B4, 0x0EE38765,
+ 0x7F0991C3, 0x0FAB272B,
+ 0x7EF0585F, 0x1072A047,
+ 0x7ED5E5C6, 0x1139F0CE,
+ 0x7EBA3A39, 0x120116D4,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7E7F3956, 0x138EDBB0,
+ 0x7E5FE493, 0x145576B1,
+ 0x7E3F57FE, 0x151BDF85,
+ 0x7E1D93E9, 0x15E21444,
+ 0x7DFA98A7, 0x16A81305,
+ 0x7DD6668E, 0x176DD9DE,
+ 0x7DB0FDF7, 0x183366E8,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7D628AC5, 0x19BDCBF2,
+ 0x7D3980EC, 0x1A82A025,
+ 0x7D0F4218, 0x1B4732EF,
+ 0x7CE3CEB1, 0x1C0B826A,
+ 0x7CB72724, 0x1CCF8CB3,
+ 0x7C894BDD, 0x1D934FE5,
+ 0x7C5A3D4F, 0x1E56CA1E,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7BF88830, 0x1FDCDC1A,
+ 0x7BC5E28F, 0x209F701C,
+ 0x7B920B89, 0x2161B39F,
+ 0x7B5D039D, 0x2223A4C5,
+ 0x7B26CB4F, 0x22E541AE,
+ 0x7AEF6323, 0x23A6887E,
+ 0x7AB6CBA3, 0x24677757,
+ 0x7A7D055B, 0x25280C5D,
+ 0x7A4210D8, 0x25E845B5,
+ 0x7A05EEAD, 0x26A82185,
+ 0x79C89F6D, 0x27679DF4,
+ 0x798A23B1, 0x2826B928,
+ 0x794A7C11, 0x28E5714A,
+ 0x7909A92C, 0x29A3C484,
+ 0x78C7ABA1, 0x2A61B101,
+ 0x78848413, 0x2B1F34EB,
+ 0x78403328, 0x2BDC4E6F,
+ 0x77FAB988, 0x2C98FBBA,
+ 0x77B417DF, 0x2D553AFB,
+ 0x776C4EDB, 0x2E110A62,
+ 0x77235F2D, 0x2ECC681E,
+ 0x76D94988, 0x2F875262,
+ 0x768E0EA5, 0x3041C760,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x75F42C0A, 0x31B54A5D,
+ 0x75A585CF, 0x326E54C7,
+ 0x7555BD4B, 0x3326E2C2,
+ 0x7504D345, 0x33DEF287,
+ 0x74B2C883, 0x3496824F,
+ 0x745F9DD1, 0x354D9056,
+ 0x740B53FA, 0x36041AD9,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x735F6626, 0x376F9E46,
+ 0x7307C3D0, 0x382493B0,
+ 0x72AF05A6, 0x38D8FE93,
+ 0x72552C84, 0x398CDD32,
+ 0x71FA3948, 0x3A402DD1,
+ 0x719E2CD2, 0x3AF2EEB7,
+ 0x71410804, 0x3BA51E29,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x708378FE, 0x3D07C1D5,
+ 0x70231099, 0x3DB832A5,
+ 0x6FC19385, 0x3E680B2C,
+ 0x6F5F02B1, 0x3F1749B7,
+ 0x6EFB5F12, 0x3FC5EC97,
+ 0x6E96A99C, 0x4073F21D,
+ 0x6E30E349, 0x4121589A,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6D6227FA, 0x427A41D0,
+ 0x6CF934FB, 0x4325C135,
+ 0x6C8F351C, 0x43D09AEC,
+ 0x6C242960, 0x447ACD50,
+ 0x6BB812D0, 0x452456BC,
+ 0x6B4AF278, 0x45CD358F,
+ 0x6ADCC964, 0x46756827,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x69FD614A, 0x47C3C22E,
+ 0x698C246C, 0x4869E664,
+ 0x6919E320, 0x490F57EE,
+ 0x68A69E81, 0x49B41533,
+ 0x683257AA, 0x4A581C9D,
+ 0x67BD0FBC, 0x4AFB6C97,
+ 0x6746C7D7, 0x4B9E038F,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x66573CBB, 0x4CE10034,
+ 0x65DDFBD3, 0x4D8162C4,
+ 0x6563BF92, 0x4E210617,
+ 0x64E88926, 0x4EBFE8A4,
+ 0x646C59BF, 0x4F5E08E3,
+ 0x63EF328F, 0x4FFB654D,
+ 0x637114CC, 0x5097FC5E,
+ 0x62F201AC, 0x5133CC94,
+ 0x6271FA69, 0x51CED46E,
+ 0x61F1003E, 0x5269126E,
+ 0x616F146B, 0x53028517,
+ 0x60EC3830, 0x539B2AEF,
+ 0x60686CCE, 0x5433027D,
+ 0x5FE3B38D, 0x54CA0A4A,
+ 0x5F5E0DB3, 0x556040E2,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5E50015D, 0x568A34A9,
+ 0x5DC79D7C, 0x571DEEF9,
+ 0x5D3E5236, 0x57B0D256,
+ 0x5CB420DF, 0x5842DD54,
+ 0x5C290ACC, 0x58D40E8C,
+ 0x5B9D1153, 0x59646497,
+ 0x5B1035CF, 0x59F3DE12,
+ 0x5A82799A, 0x5A82799A,
+ 0x59F3DE12, 0x5B1035CF,
+ 0x59646497, 0x5B9D1153,
+ 0x58D40E8C, 0x5C290ACC,
+ 0x5842DD54, 0x5CB420DF,
+ 0x57B0D256, 0x5D3E5236,
+ 0x571DEEF9, 0x5DC79D7C,
+ 0x568A34A9, 0x5E50015D,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x556040E2, 0x5F5E0DB3,
+ 0x54CA0A4A, 0x5FE3B38D,
+ 0x5433027D, 0x60686CCE,
+ 0x539B2AEF, 0x60EC3830,
+ 0x53028517, 0x616F146B,
+ 0x5269126E, 0x61F1003E,
+ 0x51CED46E, 0x6271FA69,
+ 0x5133CC94, 0x62F201AC,
+ 0x5097FC5E, 0x637114CC,
+ 0x4FFB654D, 0x63EF328F,
+ 0x4F5E08E3, 0x646C59BF,
+ 0x4EBFE8A4, 0x64E88926,
+ 0x4E210617, 0x6563BF92,
+ 0x4D8162C4, 0x65DDFBD3,
+ 0x4CE10034, 0x66573CBB,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x4B9E038F, 0x6746C7D7,
+ 0x4AFB6C97, 0x67BD0FBC,
+ 0x4A581C9D, 0x683257AA,
+ 0x49B41533, 0x68A69E81,
+ 0x490F57EE, 0x6919E320,
+ 0x4869E664, 0x698C246C,
+ 0x47C3C22E, 0x69FD614A,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x46756827, 0x6ADCC964,
+ 0x45CD358F, 0x6B4AF278,
+ 0x452456BC, 0x6BB812D0,
+ 0x447ACD50, 0x6C242960,
+ 0x43D09AEC, 0x6C8F351C,
+ 0x4325C135, 0x6CF934FB,
+ 0x427A41D0, 0x6D6227FA,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x4121589A, 0x6E30E349,
+ 0x4073F21D, 0x6E96A99C,
+ 0x3FC5EC97, 0x6EFB5F12,
+ 0x3F1749B7, 0x6F5F02B1,
+ 0x3E680B2C, 0x6FC19385,
+ 0x3DB832A5, 0x70231099,
+ 0x3D07C1D5, 0x708378FE,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x3BA51E29, 0x71410804,
+ 0x3AF2EEB7, 0x719E2CD2,
+ 0x3A402DD1, 0x71FA3948,
+ 0x398CDD32, 0x72552C84,
+ 0x38D8FE93, 0x72AF05A6,
+ 0x382493B0, 0x7307C3D0,
+ 0x376F9E46, 0x735F6626,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x36041AD9, 0x740B53FA,
+ 0x354D9056, 0x745F9DD1,
+ 0x3496824F, 0x74B2C883,
+ 0x33DEF287, 0x7504D345,
+ 0x3326E2C2, 0x7555BD4B,
+ 0x326E54C7, 0x75A585CF,
+ 0x31B54A5D, 0x75F42C0A,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x3041C760, 0x768E0EA5,
+ 0x2F875262, 0x76D94988,
+ 0x2ECC681E, 0x77235F2D,
+ 0x2E110A62, 0x776C4EDB,
+ 0x2D553AFB, 0x77B417DF,
+ 0x2C98FBBA, 0x77FAB988,
+ 0x2BDC4E6F, 0x78403328,
+ 0x2B1F34EB, 0x78848413,
+ 0x2A61B101, 0x78C7ABA1,
+ 0x29A3C484, 0x7909A92C,
+ 0x28E5714A, 0x794A7C11,
+ 0x2826B928, 0x798A23B1,
+ 0x27679DF4, 0x79C89F6D,
+ 0x26A82185, 0x7A05EEAD,
+ 0x25E845B5, 0x7A4210D8,
+ 0x25280C5D, 0x7A7D055B,
+ 0x24677757, 0x7AB6CBA3,
+ 0x23A6887E, 0x7AEF6323,
+ 0x22E541AE, 0x7B26CB4F,
+ 0x2223A4C5, 0x7B5D039D,
+ 0x2161B39F, 0x7B920B89,
+ 0x209F701C, 0x7BC5E28F,
+ 0x1FDCDC1A, 0x7BF88830,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x1E56CA1E, 0x7C5A3D4F,
+ 0x1D934FE5, 0x7C894BDD,
+ 0x1CCF8CB3, 0x7CB72724,
+ 0x1C0B826A, 0x7CE3CEB1,
+ 0x1B4732EF, 0x7D0F4218,
+ 0x1A82A025, 0x7D3980EC,
+ 0x19BDCBF2, 0x7D628AC5,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x183366E8, 0x7DB0FDF7,
+ 0x176DD9DE, 0x7DD6668E,
+ 0x16A81305, 0x7DFA98A7,
+ 0x15E21444, 0x7E1D93E9,
+ 0x151BDF85, 0x7E3F57FE,
+ 0x145576B1, 0x7E5FE493,
+ 0x138EDBB0, 0x7E7F3956,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x120116D4, 0x7EBA3A39,
+ 0x1139F0CE, 0x7ED5E5C6,
+ 0x1072A047, 0x7EF0585F,
+ 0x0FAB272B, 0x7F0991C3,
+ 0x0EE38765, 0x7F2191B4,
+ 0x0E1BC2E3, 0x7F3857F5,
+ 0x0D53DB92, 0x7F4DE450,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x0BC3AC35, 0x7F754E7F,
+ 0x0AFB6805, 0x7F872BF3,
+ 0x0A3308BC, 0x7F97CEBC,
+ 0x096A9049, 0x7FA736B4,
+ 0x08A2009A, 0x7FB563B2,
+ 0x07D95B9E, 0x7FC25596,
+ 0x0710A344, 0x7FCE0C3E,
+ 0x0647D97C, 0x7FD8878D,
+ 0x057F0034, 0x7FE1C76B,
+ 0x04B6195D, 0x7FE9CBC0,
+ 0x03ED26E6, 0x7FF09477,
+ 0x03242ABF, 0x7FF62182,
+ 0x025B26D7, 0x7FFA72D1,
+ 0x01921D1F, 0x7FFD885A,
+ 0x00C90F88, 0x7FFF6216,
+ 0x00000000, 0x7FFFFFFF,
+ 0xFF36F078, 0x7FFF6216,
+ 0xFE6DE2E0, 0x7FFD885A,
+ 0xFDA4D928, 0x7FFA72D1,
+ 0xFCDBD541, 0x7FF62182,
+ 0xFC12D919, 0x7FF09477,
+ 0xFB49E6A2, 0x7FE9CBC0,
+ 0xFA80FFCB, 0x7FE1C76B,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF8EF5CBB, 0x7FCE0C3E,
+ 0xF826A461, 0x7FC25596,
+ 0xF75DFF65, 0x7FB563B2,
+ 0xF6956FB6, 0x7FA736B4,
+ 0xF5CCF743, 0x7F97CEBC,
+ 0xF50497FA, 0x7F872BF3,
+ 0xF43C53CA, 0x7F754E7F,
+ 0xF3742CA1, 0x7F62368F,
+ 0xF2AC246D, 0x7F4DE450,
+ 0xF1E43D1C, 0x7F3857F5,
+ 0xF11C789A, 0x7F2191B4,
+ 0xF054D8D4, 0x7F0991C3,
+ 0xEF8D5FB8, 0x7EF0585F,
+ 0xEEC60F31, 0x7ED5E5C6,
+ 0xEDFEE92B, 0x7EBA3A39,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xEC71244F, 0x7E7F3956,
+ 0xEBAA894E, 0x7E5FE493,
+ 0xEAE4207A, 0x7E3F57FE,
+ 0xEA1DEBBB, 0x7E1D93E9,
+ 0xE957ECFB, 0x7DFA98A7,
+ 0xE8922621, 0x7DD6668E,
+ 0xE7CC9917, 0x7DB0FDF7,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE642340D, 0x7D628AC5,
+ 0xE57D5FDA, 0x7D3980EC,
+ 0xE4B8CD10, 0x7D0F4218,
+ 0xE3F47D95, 0x7CE3CEB1,
+ 0xE330734C, 0x7CB72724,
+ 0xE26CB01A, 0x7C894BDD,
+ 0xE1A935E1, 0x7C5A3D4F,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xE02323E5, 0x7BF88830,
+ 0xDF608FE3, 0x7BC5E28F,
+ 0xDE9E4C60, 0x7B920B89,
+ 0xDDDC5B3A, 0x7B5D039D,
+ 0xDD1ABE51, 0x7B26CB4F,
+ 0xDC597781, 0x7AEF6323,
+ 0xDB9888A8, 0x7AB6CBA3,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xDA17BA4A, 0x7A4210D8,
+ 0xD957DE7A, 0x7A05EEAD,
+ 0xD898620C, 0x79C89F6D,
+ 0xD7D946D7, 0x798A23B1,
+ 0xD71A8EB5, 0x794A7C11,
+ 0xD65C3B7B, 0x7909A92C,
+ 0xD59E4EFE, 0x78C7ABA1,
+ 0xD4E0CB14, 0x78848413,
+ 0xD423B190, 0x78403328,
+ 0xD3670445, 0x77FAB988,
+ 0xD2AAC504, 0x77B417DF,
+ 0xD1EEF59E, 0x776C4EDB,
+ 0xD13397E1, 0x77235F2D,
+ 0xD078AD9D, 0x76D94988,
+ 0xCFBE389F, 0x768E0EA5,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xCE4AB5A2, 0x75F42C0A,
+ 0xCD91AB38, 0x75A585CF,
+ 0xCCD91D3D, 0x7555BD4B,
+ 0xCC210D78, 0x7504D345,
+ 0xCB697DB0, 0x74B2C883,
+ 0xCAB26FA9, 0x745F9DD1,
+ 0xC9FBE527, 0x740B53FA,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC89061BA, 0x735F6626,
+ 0xC7DB6C50, 0x7307C3D0,
+ 0xC727016C, 0x72AF05A6,
+ 0xC67322CD, 0x72552C84,
+ 0xC5BFD22E, 0x71FA3948,
+ 0xC50D1148, 0x719E2CD2,
+ 0xC45AE1D7, 0x71410804,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xC2F83E2A, 0x708378FE,
+ 0xC247CD5A, 0x70231099,
+ 0xC197F4D3, 0x6FC19385,
+ 0xC0E8B648, 0x6F5F02B1,
+ 0xC03A1368, 0x6EFB5F12,
+ 0xBF8C0DE2, 0x6E96A99C,
+ 0xBEDEA765, 0x6E30E349,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xBD85BE2F, 0x6D6227FA,
+ 0xBCDA3ECA, 0x6CF934FB,
+ 0xBC2F6513, 0x6C8F351C,
+ 0xBB8532AF, 0x6C242960,
+ 0xBADBA943, 0x6BB812D0,
+ 0xBA32CA70, 0x6B4AF278,
+ 0xB98A97D8, 0x6ADCC964,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB83C3DD1, 0x69FD614A,
+ 0xB796199B, 0x698C246C,
+ 0xB6F0A811, 0x6919E320,
+ 0xB64BEACC, 0x68A69E81,
+ 0xB5A7E362, 0x683257AA,
+ 0xB5049368, 0x67BD0FBC,
+ 0xB461FC70, 0x6746C7D7,
+ 0xB3C0200C, 0x66CF811F,
+ 0xB31EFFCB, 0x66573CBB,
+ 0xB27E9D3B, 0x65DDFBD3,
+ 0xB1DEF9E8, 0x6563BF92,
+ 0xB140175B, 0x64E88926,
+ 0xB0A1F71C, 0x646C59BF,
+ 0xB0049AB2, 0x63EF328F,
+ 0xAF6803A1, 0x637114CC,
+ 0xAECC336B, 0x62F201AC,
+ 0xAE312B91, 0x6271FA69,
+ 0xAD96ED91, 0x61F1003E,
+ 0xACFD7AE8, 0x616F146B,
+ 0xAC64D510, 0x60EC3830,
+ 0xABCCFD82, 0x60686CCE,
+ 0xAB35F5B5, 0x5FE3B38D,
+ 0xAA9FBF1D, 0x5F5E0DB3,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA975CB56, 0x5E50015D,
+ 0xA8E21106, 0x5DC79D7C,
+ 0xA84F2DA9, 0x5D3E5236,
+ 0xA7BD22AB, 0x5CB420DF,
+ 0xA72BF173, 0x5C290ACC,
+ 0xA69B9B68, 0x5B9D1153,
+ 0xA60C21ED, 0x5B1035CF,
+ 0xA57D8666, 0x5A82799A,
+ 0xA4EFCA31, 0x59F3DE12,
+ 0xA462EEAC, 0x59646497,
+ 0xA3D6F533, 0x58D40E8C,
+ 0xA34BDF20, 0x5842DD54,
+ 0xA2C1ADC9, 0x57B0D256,
+ 0xA2386283, 0x571DEEF9,
+ 0xA1AFFEA2, 0x568A34A9,
+ 0xA1288376, 0x55F5A4D2,
+ 0xA0A1F24C, 0x556040E2,
+ 0xA01C4C72, 0x54CA0A4A,
+ 0x9F979331, 0x5433027D,
+ 0x9F13C7D0, 0x539B2AEF,
+ 0x9E90EB94, 0x53028517,
+ 0x9E0EFFC1, 0x5269126E,
+ 0x9D8E0596, 0x51CED46E,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9C8EEB33, 0x5097FC5E,
+ 0x9C10CD70, 0x4FFB654D,
+ 0x9B93A640, 0x4F5E08E3,
+ 0x9B1776D9, 0x4EBFE8A4,
+ 0x9A9C406D, 0x4E210617,
+ 0x9A22042C, 0x4D8162C4,
+ 0x99A8C344, 0x4CE10034,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x98B93828, 0x4B9E038F,
+ 0x9842F043, 0x4AFB6C97,
+ 0x97CDA855, 0x4A581C9D,
+ 0x9759617E, 0x49B41533,
+ 0x96E61CDF, 0x490F57EE,
+ 0x9673DB94, 0x4869E664,
+ 0x96029EB5, 0x47C3C22E,
+ 0x9592675B, 0x471CECE6,
+ 0x9523369B, 0x46756827,
+ 0x94B50D87, 0x45CD358F,
+ 0x9447ED2F, 0x452456BC,
+ 0x93DBD69F, 0x447ACD50,
+ 0x9370CAE4, 0x43D09AEC,
+ 0x9306CB04, 0x4325C135,
+ 0x929DD805, 0x427A41D0,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x91CF1CB6, 0x4121589A,
+ 0x91695663, 0x4073F21D,
+ 0x9104A0ED, 0x3FC5EC97,
+ 0x90A0FD4E, 0x3F1749B7,
+ 0x903E6C7A, 0x3E680B2C,
+ 0x8FDCEF66, 0x3DB832A5,
+ 0x8F7C8701, 0x3D07C1D5,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8EBEF7FB, 0x3BA51E29,
+ 0x8E61D32D, 0x3AF2EEB7,
+ 0x8E05C6B7, 0x3A402DD1,
+ 0x8DAAD37B, 0x398CDD32,
+ 0x8D50FA59, 0x38D8FE93,
+ 0x8CF83C30, 0x382493B0,
+ 0x8CA099D9, 0x376F9E46,
+ 0x8C4A142F, 0x36BA2013,
+ 0x8BF4AC05, 0x36041AD9,
+ 0x8BA0622F, 0x354D9056,
+ 0x8B4D377C, 0x3496824F,
+ 0x8AFB2CBA, 0x33DEF287,
+ 0x8AAA42B4, 0x3326E2C2,
+ 0x8A5A7A30, 0x326E54C7,
+ 0x8A0BD3F5, 0x31B54A5D,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8971F15A, 0x3041C760,
+ 0x8926B677, 0x2F875262,
+ 0x88DCA0D3, 0x2ECC681E,
+ 0x8893B124, 0x2E110A62,
+ 0x884BE820, 0x2D553AFB,
+ 0x88054677, 0x2C98FBBA,
+ 0x87BFCCD7, 0x2BDC4E6F,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x8738545E, 0x2A61B101,
+ 0x86F656D3, 0x29A3C484,
+ 0x86B583EE, 0x28E5714A,
+ 0x8675DC4E, 0x2826B928,
+ 0x86376092, 0x27679DF4,
+ 0x85FA1152, 0x26A82185,
+ 0x85BDEF27, 0x25E845B5,
+ 0x8582FAA4, 0x25280C5D,
+ 0x8549345C, 0x24677757,
+ 0x85109CDC, 0x23A6887E,
+ 0x84D934B0, 0x22E541AE,
+ 0x84A2FC62, 0x2223A4C5,
+ 0x846DF476, 0x2161B39F,
+ 0x843A1D70, 0x209F701C,
+ 0x840777CF, 0x1FDCDC1A,
+ 0x83D60411, 0x1F19F97B,
+ 0x83A5C2B0, 0x1E56CA1E,
+ 0x8376B422, 0x1D934FE5,
+ 0x8348D8DB, 0x1CCF8CB3,
+ 0x831C314E, 0x1C0B826A,
+ 0x82F0BDE8, 0x1B4732EF,
+ 0x82C67F13, 0x1A82A025,
+ 0x829D753A, 0x19BDCBF2,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x824F0208, 0x183366E8,
+ 0x82299971, 0x176DD9DE,
+ 0x82056758, 0x16A81305,
+ 0x81E26C16, 0x15E21444,
+ 0x81C0A801, 0x151BDF85,
+ 0x81A01B6C, 0x145576B1,
+ 0x8180C6A9, 0x138EDBB0,
+ 0x8162AA03, 0x12C8106E,
+ 0x8145C5C6, 0x120116D4,
+ 0x812A1A39, 0x1139F0CE,
+ 0x810FA7A0, 0x1072A047,
+ 0x80F66E3C, 0x0FAB272B,
+ 0x80DE6E4C, 0x0EE38765,
+ 0x80C7A80A, 0x0E1BC2E3,
+ 0x80B21BAF, 0x0D53DB92,
+ 0x809DC970, 0x0C8BD35E,
+ 0x808AB180, 0x0BC3AC35,
+ 0x8078D40D, 0x0AFB6805,
+ 0x80683143, 0x0A3308BC,
+ 0x8058C94C, 0x096A9049,
+ 0x804A9C4D, 0x08A2009A,
+ 0x803DAA69, 0x07D95B9E,
+ 0x8031F3C1, 0x0710A344,
+ 0x80277872, 0x0647D97C,
+ 0x801E3894, 0x057F0034,
+ 0x80163440, 0x04B6195D,
+ 0x800F6B88, 0x03ED26E6,
+ 0x8009DE7D, 0x03242ABF,
+ 0x80058D2E, 0x025B26D7,
+ 0x800277A5, 0x01921D1F,
+ 0x80009DE9, 0x00C90F88,
+ 0x80000000, 0x00000000,
+ 0x80009DE9, 0xFF36F078,
+ 0x800277A5, 0xFE6DE2E0,
+ 0x80058D2E, 0xFDA4D928,
+ 0x8009DE7D, 0xFCDBD541,
+ 0x800F6B88, 0xFC12D919,
+ 0x80163440, 0xFB49E6A2,
+ 0x801E3894, 0xFA80FFCB,
+ 0x80277872, 0xF9B82683,
+ 0x8031F3C1, 0xF8EF5CBB,
+ 0x803DAA69, 0xF826A461,
+ 0x804A9C4D, 0xF75DFF65,
+ 0x8058C94C, 0xF6956FB6,
+ 0x80683143, 0xF5CCF743,
+ 0x8078D40D, 0xF50497FA,
+ 0x808AB180, 0xF43C53CA,
+ 0x809DC970, 0xF3742CA1,
+ 0x80B21BAF, 0xF2AC246D,
+ 0x80C7A80A, 0xF1E43D1C,
+ 0x80DE6E4C, 0xF11C789A,
+ 0x80F66E3C, 0xF054D8D4,
+ 0x810FA7A0, 0xEF8D5FB8,
+ 0x812A1A39, 0xEEC60F31,
+ 0x8145C5C6, 0xEDFEE92B,
+ 0x8162AA03, 0xED37EF91,
+ 0x8180C6A9, 0xEC71244F,
+ 0x81A01B6C, 0xEBAA894E,
+ 0x81C0A801, 0xEAE4207A,
+ 0x81E26C16, 0xEA1DEBBB,
+ 0x82056758, 0xE957ECFB,
+ 0x82299971, 0xE8922621,
+ 0x824F0208, 0xE7CC9917,
+ 0x8275A0C0, 0xE70747C3,
+ 0x829D753A, 0xE642340D,
+ 0x82C67F13, 0xE57D5FDA,
+ 0x82F0BDE8, 0xE4B8CD10,
+ 0x831C314E, 0xE3F47D95,
+ 0x8348D8DB, 0xE330734C,
+ 0x8376B422, 0xE26CB01A,
+ 0x83A5C2B0, 0xE1A935E1,
+ 0x83D60411, 0xE0E60684,
+ 0x840777CF, 0xE02323E5,
+ 0x843A1D70, 0xDF608FE3,
+ 0x846DF476, 0xDE9E4C60,
+ 0x84A2FC62, 0xDDDC5B3A,
+ 0x84D934B0, 0xDD1ABE51,
+ 0x85109CDC, 0xDC597781,
+ 0x8549345C, 0xDB9888A8,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x85BDEF27, 0xDA17BA4A,
+ 0x85FA1152, 0xD957DE7A,
+ 0x86376092, 0xD898620C,
+ 0x8675DC4E, 0xD7D946D7,
+ 0x86B583EE, 0xD71A8EB5,
+ 0x86F656D3, 0xD65C3B7B,
+ 0x8738545E, 0xD59E4EFE,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x87BFCCD7, 0xD423B190,
+ 0x88054677, 0xD3670445,
+ 0x884BE820, 0xD2AAC504,
+ 0x8893B124, 0xD1EEF59E,
+ 0x88DCA0D3, 0xD13397E1,
+ 0x8926B677, 0xD078AD9D,
+ 0x8971F15A, 0xCFBE389F,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x8A0BD3F5, 0xCE4AB5A2,
+ 0x8A5A7A30, 0xCD91AB38,
+ 0x8AAA42B4, 0xCCD91D3D,
+ 0x8AFB2CBA, 0xCC210D78,
+ 0x8B4D377C, 0xCB697DB0,
+ 0x8BA0622F, 0xCAB26FA9,
+ 0x8BF4AC05, 0xC9FBE527,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8CA099D9, 0xC89061BA,
+ 0x8CF83C30, 0xC7DB6C50,
+ 0x8D50FA59, 0xC727016C,
+ 0x8DAAD37B, 0xC67322CD,
+ 0x8E05C6B7, 0xC5BFD22E,
+ 0x8E61D32D, 0xC50D1148,
+ 0x8EBEF7FB, 0xC45AE1D7,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x8F7C8701, 0xC2F83E2A,
+ 0x8FDCEF66, 0xC247CD5A,
+ 0x903E6C7A, 0xC197F4D3,
+ 0x90A0FD4E, 0xC0E8B648,
+ 0x9104A0ED, 0xC03A1368,
+ 0x91695663, 0xBF8C0DE2,
+ 0x91CF1CB6, 0xBEDEA765,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x929DD805, 0xBD85BE2F,
+ 0x9306CB04, 0xBCDA3ECA,
+ 0x9370CAE4, 0xBC2F6513,
+ 0x93DBD69F, 0xBB8532AF,
+ 0x9447ED2F, 0xBADBA943,
+ 0x94B50D87, 0xBA32CA70,
+ 0x9523369B, 0xB98A97D8,
+ 0x9592675B, 0xB8E31319,
+ 0x96029EB5, 0xB83C3DD1,
+ 0x9673DB94, 0xB796199B,
+ 0x96E61CDF, 0xB6F0A811,
+ 0x9759617E, 0xB64BEACC,
+ 0x97CDA855, 0xB5A7E362,
+ 0x9842F043, 0xB5049368,
+ 0x98B93828, 0xB461FC70,
+ 0x99307EE0, 0xB3C0200C,
+ 0x99A8C344, 0xB31EFFCB,
+ 0x9A22042C, 0xB27E9D3B,
+ 0x9A9C406D, 0xB1DEF9E8,
+ 0x9B1776D9, 0xB140175B,
+ 0x9B93A640, 0xB0A1F71C,
+ 0x9C10CD70, 0xB0049AB2,
+ 0x9C8EEB33, 0xAF6803A1,
+ 0x9D0DFE53, 0xAECC336B,
+ 0x9D8E0596, 0xAE312B91,
+ 0x9E0EFFC1, 0xAD96ED91,
+ 0x9E90EB94, 0xACFD7AE8,
+ 0x9F13C7D0, 0xAC64D510,
+ 0x9F979331, 0xABCCFD82,
+ 0xA01C4C72, 0xAB35F5B5,
+ 0xA0A1F24C, 0xAA9FBF1D,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA1AFFEA2, 0xA975CB56,
+ 0xA2386283, 0xA8E21106,
+ 0xA2C1ADC9, 0xA84F2DA9,
+ 0xA34BDF20, 0xA7BD22AB,
+ 0xA3D6F533, 0xA72BF173,
+ 0xA462EEAC, 0xA69B9B68,
+ 0xA4EFCA31, 0xA60C21ED,
+ 0xA57D8666, 0xA57D8666,
+ 0xA60C21ED, 0xA4EFCA31,
+ 0xA69B9B68, 0xA462EEAC,
+ 0xA72BF173, 0xA3D6F533,
+ 0xA7BD22AB, 0xA34BDF20,
+ 0xA84F2DA9, 0xA2C1ADC9,
+ 0xA8E21106, 0xA2386283,
+ 0xA975CB56, 0xA1AFFEA2,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAA9FBF1D, 0xA0A1F24C,
+ 0xAB35F5B5, 0xA01C4C72,
+ 0xABCCFD82, 0x9F979331,
+ 0xAC64D510, 0x9F13C7D0,
+ 0xACFD7AE8, 0x9E90EB94,
+ 0xAD96ED91, 0x9E0EFFC1,
+ 0xAE312B91, 0x9D8E0596,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xAF6803A1, 0x9C8EEB33,
+ 0xB0049AB2, 0x9C10CD70,
+ 0xB0A1F71C, 0x9B93A640,
+ 0xB140175B, 0x9B1776D9,
+ 0xB1DEF9E8, 0x9A9C406D,
+ 0xB27E9D3B, 0x9A22042C,
+ 0xB31EFFCB, 0x99A8C344,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB461FC70, 0x98B93828,
+ 0xB5049368, 0x9842F043,
+ 0xB5A7E362, 0x97CDA855,
+ 0xB64BEACC, 0x9759617E,
+ 0xB6F0A811, 0x96E61CDF,
+ 0xB796199B, 0x9673DB94,
+ 0xB83C3DD1, 0x96029EB5,
+ 0xB8E31319, 0x9592675B,
+ 0xB98A97D8, 0x9523369B,
+ 0xBA32CA70, 0x94B50D87,
+ 0xBADBA943, 0x9447ED2F,
+ 0xBB8532AF, 0x93DBD69F,
+ 0xBC2F6513, 0x9370CAE4,
+ 0xBCDA3ECA, 0x9306CB04,
+ 0xBD85BE2F, 0x929DD805,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xBEDEA765, 0x91CF1CB6,
+ 0xBF8C0DE2, 0x91695663,
+ 0xC03A1368, 0x9104A0ED,
+ 0xC0E8B648, 0x90A0FD4E,
+ 0xC197F4D3, 0x903E6C7A,
+ 0xC247CD5A, 0x8FDCEF66,
+ 0xC2F83E2A, 0x8F7C8701,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC45AE1D7, 0x8EBEF7FB,
+ 0xC50D1148, 0x8E61D32D,
+ 0xC5BFD22E, 0x8E05C6B7,
+ 0xC67322CD, 0x8DAAD37B,
+ 0xC727016C, 0x8D50FA59,
+ 0xC7DB6C50, 0x8CF83C30,
+ 0xC89061BA, 0x8CA099D9,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xC9FBE527, 0x8BF4AC05,
+ 0xCAB26FA9, 0x8BA0622F,
+ 0xCB697DB0, 0x8B4D377C,
+ 0xCC210D78, 0x8AFB2CBA,
+ 0xCCD91D3D, 0x8AAA42B4,
+ 0xCD91AB38, 0x8A5A7A30,
+ 0xCE4AB5A2, 0x8A0BD3F5,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xCFBE389F, 0x8971F15A,
+ 0xD078AD9D, 0x8926B677,
+ 0xD13397E1, 0x88DCA0D3,
+ 0xD1EEF59E, 0x8893B124,
+ 0xD2AAC504, 0x884BE820,
+ 0xD3670445, 0x88054677,
+ 0xD423B190, 0x87BFCCD7,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xD59E4EFE, 0x8738545E,
+ 0xD65C3B7B, 0x86F656D3,
+ 0xD71A8EB5, 0x86B583EE,
+ 0xD7D946D7, 0x8675DC4E,
+ 0xD898620C, 0x86376092,
+ 0xD957DE7A, 0x85FA1152,
+ 0xDA17BA4A, 0x85BDEF27,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xDB9888A8, 0x8549345C,
+ 0xDC597781, 0x85109CDC,
+ 0xDD1ABE51, 0x84D934B0,
+ 0xDDDC5B3A, 0x84A2FC62,
+ 0xDE9E4C60, 0x846DF476,
+ 0xDF608FE3, 0x843A1D70,
+ 0xE02323E5, 0x840777CF,
+ 0xE0E60684, 0x83D60411,
+ 0xE1A935E1, 0x83A5C2B0,
+ 0xE26CB01A, 0x8376B422,
+ 0xE330734C, 0x8348D8DB,
+ 0xE3F47D95, 0x831C314E,
+ 0xE4B8CD10, 0x82F0BDE8,
+ 0xE57D5FDA, 0x82C67F13,
+ 0xE642340D, 0x829D753A,
+ 0xE70747C3, 0x8275A0C0,
+ 0xE7CC9917, 0x824F0208,
+ 0xE8922621, 0x82299971,
+ 0xE957ECFB, 0x82056758,
+ 0xEA1DEBBB, 0x81E26C16,
+ 0xEAE4207A, 0x81C0A801,
+ 0xEBAA894E, 0x81A01B6C,
+ 0xEC71244F, 0x8180C6A9,
+ 0xED37EF91, 0x8162AA03,
+ 0xEDFEE92B, 0x8145C5C6,
+ 0xEEC60F31, 0x812A1A39,
+ 0xEF8D5FB8, 0x810FA7A0,
+ 0xF054D8D4, 0x80F66E3C,
+ 0xF11C789A, 0x80DE6E4C,
+ 0xF1E43D1C, 0x80C7A80A,
+ 0xF2AC246D, 0x80B21BAF,
+ 0xF3742CA1, 0x809DC970,
+ 0xF43C53CA, 0x808AB180,
+ 0xF50497FA, 0x8078D40D,
+ 0xF5CCF743, 0x80683143,
+ 0xF6956FB6, 0x8058C94C,
+ 0xF75DFF65, 0x804A9C4D,
+ 0xF826A461, 0x803DAA69,
+ 0xF8EF5CBB, 0x8031F3C1,
+ 0xF9B82683, 0x80277872,
+ 0xFA80FFCB, 0x801E3894,
+ 0xFB49E6A2, 0x80163440,
+ 0xFC12D919, 0x800F6B88,
+ 0xFCDBD541, 0x8009DE7D,
+ 0xFDA4D928, 0x80058D2E,
+ 0xFE6DE2E0, 0x800277A5,
+ 0xFF36F078, 0x80009DE9
+};
+
+/**
+* \par
+* Example code for Q31 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 2048 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to Q31(Fixed point 1.31):
+* round(twiddleCoefQ31(i) * pow(2, 31))
+*
+*/
+const q31_t twiddleCoef_2048_q31[3072] = {
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FFFD885, 0x006487E3,
+ 0x7FFF6216, 0x00C90F88,
+ 0x7FFE9CB2, 0x012D96B0,
+ 0x7FFD885A, 0x01921D1F,
+ 0x7FFC250F, 0x01F6A296,
+ 0x7FFA72D1, 0x025B26D7,
+ 0x7FF871A1, 0x02BFA9A4,
+ 0x7FF62182, 0x03242ABF,
+ 0x7FF38273, 0x0388A9E9,
+ 0x7FF09477, 0x03ED26E6,
+ 0x7FED5790, 0x0451A176,
+ 0x7FE9CBC0, 0x04B6195D,
+ 0x7FE5F108, 0x051A8E5C,
+ 0x7FE1C76B, 0x057F0034,
+ 0x7FDD4EEC, 0x05E36EA9,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7FD37152, 0x06AC406F,
+ 0x7FCE0C3E, 0x0710A344,
+ 0x7FC85853, 0x077501BE,
+ 0x7FC25596, 0x07D95B9E,
+ 0x7FBC040A, 0x083DB0A7,
+ 0x7FB563B2, 0x08A2009A,
+ 0x7FAE7494, 0x09064B3A,
+ 0x7FA736B4, 0x096A9049,
+ 0x7F9FAA15, 0x09CECF89,
+ 0x7F97CEBC, 0x0A3308BC,
+ 0x7F8FA4AF, 0x0A973BA5,
+ 0x7F872BF3, 0x0AFB6805,
+ 0x7F7E648B, 0x0B5F8D9F,
+ 0x7F754E7F, 0x0BC3AC35,
+ 0x7F6BE9D4, 0x0C27C389,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7F5834B6, 0x0CEFDB75,
+ 0x7F4DE450, 0x0D53DB92,
+ 0x7F434563, 0x0DB7D376,
+ 0x7F3857F5, 0x0E1BC2E3,
+ 0x7F2D1C0E, 0x0E7FA99D,
+ 0x7F2191B4, 0x0EE38765,
+ 0x7F15B8EE, 0x0F475BFE,
+ 0x7F0991C3, 0x0FAB272B,
+ 0x7EFD1C3C, 0x100EE8AD,
+ 0x7EF0585F, 0x1072A047,
+ 0x7EE34635, 0x10D64DBC,
+ 0x7ED5E5C6, 0x1139F0CE,
+ 0x7EC8371A, 0x119D8940,
+ 0x7EBA3A39, 0x120116D4,
+ 0x7EABEF2C, 0x1264994E,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7E8E6EB1, 0x132B7BF9,
+ 0x7E7F3956, 0x138EDBB0,
+ 0x7E6FB5F3, 0x13F22F57,
+ 0x7E5FE493, 0x145576B1,
+ 0x7E4FC53E, 0x14B8B17F,
+ 0x7E3F57FE, 0x151BDF85,
+ 0x7E2E9CDF, 0x157F0086,
+ 0x7E1D93E9, 0x15E21444,
+ 0x7E0C3D29, 0x16451A83,
+ 0x7DFA98A7, 0x16A81305,
+ 0x7DE8A670, 0x170AFD8D,
+ 0x7DD6668E, 0x176DD9DE,
+ 0x7DC3D90D, 0x17D0A7BB,
+ 0x7DB0FDF7, 0x183366E8,
+ 0x7D9DD55A, 0x18961727,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7D769BB5, 0x195B49E9,
+ 0x7D628AC5, 0x19BDCBF2,
+ 0x7D4E2C7E, 0x1A203E1B,
+ 0x7D3980EC, 0x1A82A025,
+ 0x7D24881A, 0x1AE4F1D6,
+ 0x7D0F4218, 0x1B4732EF,
+ 0x7CF9AEF0, 0x1BA96334,
+ 0x7CE3CEB1, 0x1C0B826A,
+ 0x7CCDA168, 0x1C6D9053,
+ 0x7CB72724, 0x1CCF8CB3,
+ 0x7CA05FF1, 0x1D31774D,
+ 0x7C894BDD, 0x1D934FE5,
+ 0x7C71EAF8, 0x1DF5163F,
+ 0x7C5A3D4F, 0x1E56CA1E,
+ 0x7C4242F2, 0x1EB86B46,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7C116853, 0x1F7B7480,
+ 0x7BF88830, 0x1FDCDC1A,
+ 0x7BDF5B94, 0x203E300D,
+ 0x7BC5E28F, 0x209F701C,
+ 0x7BAC1D31, 0x21009C0B,
+ 0x7B920B89, 0x2161B39F,
+ 0x7B77ADA8, 0x21C2B69C,
+ 0x7B5D039D, 0x2223A4C5,
+ 0x7B420D7A, 0x22847DDF,
+ 0x7B26CB4F, 0x22E541AE,
+ 0x7B0B3D2C, 0x2345EFF7,
+ 0x7AEF6323, 0x23A6887E,
+ 0x7AD33D45, 0x24070B07,
+ 0x7AB6CBA3, 0x24677757,
+ 0x7A9A0E4F, 0x24C7CD32,
+ 0x7A7D055B, 0x25280C5D,
+ 0x7A5FB0D8, 0x2588349D,
+ 0x7A4210D8, 0x25E845B5,
+ 0x7A24256E, 0x26483F6C,
+ 0x7A05EEAD, 0x26A82185,
+ 0x79E76CA6, 0x2707EBC6,
+ 0x79C89F6D, 0x27679DF4,
+ 0x79A98715, 0x27C737D2,
+ 0x798A23B1, 0x2826B928,
+ 0x796A7554, 0x288621B9,
+ 0x794A7C11, 0x28E5714A,
+ 0x792A37FE, 0x2944A7A2,
+ 0x7909A92C, 0x29A3C484,
+ 0x78E8CFB1, 0x2A02C7B8,
+ 0x78C7ABA1, 0x2A61B101,
+ 0x78A63D10, 0x2AC08025,
+ 0x78848413, 0x2B1F34EB,
+ 0x786280BF, 0x2B7DCF17,
+ 0x78403328, 0x2BDC4E6F,
+ 0x781D9B64, 0x2C3AB2B9,
+ 0x77FAB988, 0x2C98FBBA,
+ 0x77D78DAA, 0x2CF72939,
+ 0x77B417DF, 0x2D553AFB,
+ 0x7790583D, 0x2DB330C7,
+ 0x776C4EDB, 0x2E110A62,
+ 0x7747FBCE, 0x2E6EC792,
+ 0x77235F2D, 0x2ECC681E,
+ 0x76FE790E, 0x2F29EBCC,
+ 0x76D94988, 0x2F875262,
+ 0x76B3D0B3, 0x2FE49BA6,
+ 0x768E0EA5, 0x3041C760,
+ 0x76680376, 0x309ED555,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x761B1211, 0x3158970D,
+ 0x75F42C0A, 0x31B54A5D,
+ 0x75CCFD42, 0x3211DF03,
+ 0x75A585CF, 0x326E54C7,
+ 0x757DC5CA, 0x32CAAB6F,
+ 0x7555BD4B, 0x3326E2C2,
+ 0x752D6C6C, 0x3382FA88,
+ 0x7504D345, 0x33DEF287,
+ 0x74DBF1EF, 0x343ACA87,
+ 0x74B2C883, 0x3496824F,
+ 0x7489571B, 0x34F219A7,
+ 0x745F9DD1, 0x354D9056,
+ 0x74359CBD, 0x35A8E624,
+ 0x740B53FA, 0x36041AD9,
+ 0x73E0C3A3, 0x365F2E3B,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x738ACC9E, 0x3714F02A,
+ 0x735F6626, 0x376F9E46,
+ 0x7333B883, 0x37CA2A30,
+ 0x7307C3D0, 0x382493B0,
+ 0x72DB8828, 0x387EDA8E,
+ 0x72AF05A6, 0x38D8FE93,
+ 0x72823C66, 0x3932FF87,
+ 0x72552C84, 0x398CDD32,
+ 0x7227D61C, 0x39E6975D,
+ 0x71FA3948, 0x3A402DD1,
+ 0x71CC5626, 0x3A99A057,
+ 0x719E2CD2, 0x3AF2EEB7,
+ 0x716FBD68, 0x3B4C18BA,
+ 0x71410804, 0x3BA51E29,
+ 0x71120CC5, 0x3BFDFECD,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x70B34524, 0x3CAF50DA,
+ 0x708378FE, 0x3D07C1D5,
+ 0x70536771, 0x3D600D2B,
+ 0x70231099, 0x3DB832A5,
+ 0x6FF27496, 0x3E10320D,
+ 0x6FC19385, 0x3E680B2C,
+ 0x6F906D84, 0x3EBFBDCC,
+ 0x6F5F02B1, 0x3F1749B7,
+ 0x6F2D532C, 0x3F6EAEB8,
+ 0x6EFB5F12, 0x3FC5EC97,
+ 0x6EC92682, 0x401D0320,
+ 0x6E96A99C, 0x4073F21D,
+ 0x6E63E87F, 0x40CAB957,
+ 0x6E30E349, 0x4121589A,
+ 0x6DFD9A1B, 0x4177CFB0,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6D963C54, 0x42244480,
+ 0x6D6227FA, 0x427A41D0,
+ 0x6D2DD027, 0x42D0161E,
+ 0x6CF934FB, 0x4325C135,
+ 0x6CC45697, 0x437B42E1,
+ 0x6C8F351C, 0x43D09AEC,
+ 0x6C59D0A9, 0x4425C923,
+ 0x6C242960, 0x447ACD50,
+ 0x6BEE3F62, 0x44CFA73F,
+ 0x6BB812D0, 0x452456BC,
+ 0x6B81A3CD, 0x4578DB93,
+ 0x6B4AF278, 0x45CD358F,
+ 0x6B13FEF5, 0x4621647C,
+ 0x6ADCC964, 0x46756827,
+ 0x6AA551E8, 0x46C9405C,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x6A359DB9, 0x47706D93,
+ 0x69FD614A, 0x47C3C22E,
+ 0x69C4E37A, 0x4816EA85,
+ 0x698C246C, 0x4869E664,
+ 0x69532442, 0x48BCB598,
+ 0x6919E320, 0x490F57EE,
+ 0x68E06129, 0x4961CD32,
+ 0x68A69E81, 0x49B41533,
+ 0x686C9B4B, 0x4A062FBD,
+ 0x683257AA, 0x4A581C9D,
+ 0x67F7D3C4, 0x4AA9DBA1,
+ 0x67BD0FBC, 0x4AFB6C97,
+ 0x67820BB6, 0x4B4CCF4D,
+ 0x6746C7D7, 0x4B9E038F,
+ 0x670B4443, 0x4BEF092D,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x66937E90, 0x4C9087B1,
+ 0x66573CBB, 0x4CE10034,
+ 0x661ABBC5, 0x4D31494B,
+ 0x65DDFBD3, 0x4D8162C4,
+ 0x65A0FD0B, 0x4DD14C6E,
+ 0x6563BF92, 0x4E210617,
+ 0x6526438E, 0x4E708F8F,
+ 0x64E88926, 0x4EBFE8A4,
+ 0x64AA907F, 0x4F0F1126,
+ 0x646C59BF, 0x4F5E08E3,
+ 0x642DE50D, 0x4FACCFAB,
+ 0x63EF328F, 0x4FFB654D,
+ 0x63B0426D, 0x5049C999,
+ 0x637114CC, 0x5097FC5E,
+ 0x6331A9D4, 0x50E5FD6C,
+ 0x62F201AC, 0x5133CC94,
+ 0x62B21C7B, 0x518169A4,
+ 0x6271FA69, 0x51CED46E,
+ 0x62319B9D, 0x521C0CC1,
+ 0x61F1003E, 0x5269126E,
+ 0x61B02876, 0x52B5E545,
+ 0x616F146B, 0x53028517,
+ 0x612DC446, 0x534EF1B5,
+ 0x60EC3830, 0x539B2AEF,
+ 0x60AA704F, 0x53E73097,
+ 0x60686CCE, 0x5433027D,
+ 0x60262DD5, 0x547EA073,
+ 0x5FE3B38D, 0x54CA0A4A,
+ 0x5FA0FE1E, 0x55153FD4,
+ 0x5F5E0DB3, 0x556040E2,
+ 0x5F1AE273, 0x55AB0D46,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5E93DC1F, 0x56400757,
+ 0x5E50015D, 0x568A34A9,
+ 0x5E0BEC6E, 0x56D42C99,
+ 0x5DC79D7C, 0x571DEEF9,
+ 0x5D8314B0, 0x57677B9D,
+ 0x5D3E5236, 0x57B0D256,
+ 0x5CF95638, 0x57F9F2F7,
+ 0x5CB420DF, 0x5842DD54,
+ 0x5C6EB258, 0x588B913F,
+ 0x5C290ACC, 0x58D40E8C,
+ 0x5BE32A67, 0x591C550E,
+ 0x5B9D1153, 0x59646497,
+ 0x5B56BFBD, 0x59AC3CFD,
+ 0x5B1035CF, 0x59F3DE12,
+ 0x5AC973B4, 0x5A3B47AA,
+ 0x5A82799A, 0x5A82799A,
+ 0x5A3B47AA, 0x5AC973B4,
+ 0x59F3DE12, 0x5B1035CF,
+ 0x59AC3CFD, 0x5B56BFBD,
+ 0x59646497, 0x5B9D1153,
+ 0x591C550E, 0x5BE32A67,
+ 0x58D40E8C, 0x5C290ACC,
+ 0x588B913F, 0x5C6EB258,
+ 0x5842DD54, 0x5CB420DF,
+ 0x57F9F2F7, 0x5CF95638,
+ 0x57B0D256, 0x5D3E5236,
+ 0x57677B9D, 0x5D8314B0,
+ 0x571DEEF9, 0x5DC79D7C,
+ 0x56D42C99, 0x5E0BEC6E,
+ 0x568A34A9, 0x5E50015D,
+ 0x56400757, 0x5E93DC1F,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x55AB0D46, 0x5F1AE273,
+ 0x556040E2, 0x5F5E0DB3,
+ 0x55153FD4, 0x5FA0FE1E,
+ 0x54CA0A4A, 0x5FE3B38D,
+ 0x547EA073, 0x60262DD5,
+ 0x5433027D, 0x60686CCE,
+ 0x53E73097, 0x60AA704F,
+ 0x539B2AEF, 0x60EC3830,
+ 0x534EF1B5, 0x612DC446,
+ 0x53028517, 0x616F146B,
+ 0x52B5E545, 0x61B02876,
+ 0x5269126E, 0x61F1003E,
+ 0x521C0CC1, 0x62319B9D,
+ 0x51CED46E, 0x6271FA69,
+ 0x518169A4, 0x62B21C7B,
+ 0x5133CC94, 0x62F201AC,
+ 0x50E5FD6C, 0x6331A9D4,
+ 0x5097FC5E, 0x637114CC,
+ 0x5049C999, 0x63B0426D,
+ 0x4FFB654D, 0x63EF328F,
+ 0x4FACCFAB, 0x642DE50D,
+ 0x4F5E08E3, 0x646C59BF,
+ 0x4F0F1126, 0x64AA907F,
+ 0x4EBFE8A4, 0x64E88926,
+ 0x4E708F8F, 0x6526438E,
+ 0x4E210617, 0x6563BF92,
+ 0x4DD14C6E, 0x65A0FD0B,
+ 0x4D8162C4, 0x65DDFBD3,
+ 0x4D31494B, 0x661ABBC5,
+ 0x4CE10034, 0x66573CBB,
+ 0x4C9087B1, 0x66937E90,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x4BEF092D, 0x670B4443,
+ 0x4B9E038F, 0x6746C7D7,
+ 0x4B4CCF4D, 0x67820BB6,
+ 0x4AFB6C97, 0x67BD0FBC,
+ 0x4AA9DBA1, 0x67F7D3C4,
+ 0x4A581C9D, 0x683257AA,
+ 0x4A062FBD, 0x686C9B4B,
+ 0x49B41533, 0x68A69E81,
+ 0x4961CD32, 0x68E06129,
+ 0x490F57EE, 0x6919E320,
+ 0x48BCB598, 0x69532442,
+ 0x4869E664, 0x698C246C,
+ 0x4816EA85, 0x69C4E37A,
+ 0x47C3C22E, 0x69FD614A,
+ 0x47706D93, 0x6A359DB9,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x46C9405C, 0x6AA551E8,
+ 0x46756827, 0x6ADCC964,
+ 0x4621647C, 0x6B13FEF5,
+ 0x45CD358F, 0x6B4AF278,
+ 0x4578DB93, 0x6B81A3CD,
+ 0x452456BC, 0x6BB812D0,
+ 0x44CFA73F, 0x6BEE3F62,
+ 0x447ACD50, 0x6C242960,
+ 0x4425C923, 0x6C59D0A9,
+ 0x43D09AEC, 0x6C8F351C,
+ 0x437B42E1, 0x6CC45697,
+ 0x4325C135, 0x6CF934FB,
+ 0x42D0161E, 0x6D2DD027,
+ 0x427A41D0, 0x6D6227FA,
+ 0x42244480, 0x6D963C54,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x4177CFB0, 0x6DFD9A1B,
+ 0x4121589A, 0x6E30E349,
+ 0x40CAB957, 0x6E63E87F,
+ 0x4073F21D, 0x6E96A99C,
+ 0x401D0320, 0x6EC92682,
+ 0x3FC5EC97, 0x6EFB5F12,
+ 0x3F6EAEB8, 0x6F2D532C,
+ 0x3F1749B7, 0x6F5F02B1,
+ 0x3EBFBDCC, 0x6F906D84,
+ 0x3E680B2C, 0x6FC19385,
+ 0x3E10320D, 0x6FF27496,
+ 0x3DB832A5, 0x70231099,
+ 0x3D600D2B, 0x70536771,
+ 0x3D07C1D5, 0x708378FE,
+ 0x3CAF50DA, 0x70B34524,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x3BFDFECD, 0x71120CC5,
+ 0x3BA51E29, 0x71410804,
+ 0x3B4C18BA, 0x716FBD68,
+ 0x3AF2EEB7, 0x719E2CD2,
+ 0x3A99A057, 0x71CC5626,
+ 0x3A402DD1, 0x71FA3948,
+ 0x39E6975D, 0x7227D61C,
+ 0x398CDD32, 0x72552C84,
+ 0x3932FF87, 0x72823C66,
+ 0x38D8FE93, 0x72AF05A6,
+ 0x387EDA8E, 0x72DB8828,
+ 0x382493B0, 0x7307C3D0,
+ 0x37CA2A30, 0x7333B883,
+ 0x376F9E46, 0x735F6626,
+ 0x3714F02A, 0x738ACC9E,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x365F2E3B, 0x73E0C3A3,
+ 0x36041AD9, 0x740B53FA,
+ 0x35A8E624, 0x74359CBD,
+ 0x354D9056, 0x745F9DD1,
+ 0x34F219A7, 0x7489571B,
+ 0x3496824F, 0x74B2C883,
+ 0x343ACA87, 0x74DBF1EF,
+ 0x33DEF287, 0x7504D345,
+ 0x3382FA88, 0x752D6C6C,
+ 0x3326E2C2, 0x7555BD4B,
+ 0x32CAAB6F, 0x757DC5CA,
+ 0x326E54C7, 0x75A585CF,
+ 0x3211DF03, 0x75CCFD42,
+ 0x31B54A5D, 0x75F42C0A,
+ 0x3158970D, 0x761B1211,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x309ED555, 0x76680376,
+ 0x3041C760, 0x768E0EA5,
+ 0x2FE49BA6, 0x76B3D0B3,
+ 0x2F875262, 0x76D94988,
+ 0x2F29EBCC, 0x76FE790E,
+ 0x2ECC681E, 0x77235F2D,
+ 0x2E6EC792, 0x7747FBCE,
+ 0x2E110A62, 0x776C4EDB,
+ 0x2DB330C7, 0x7790583D,
+ 0x2D553AFB, 0x77B417DF,
+ 0x2CF72939, 0x77D78DAA,
+ 0x2C98FBBA, 0x77FAB988,
+ 0x2C3AB2B9, 0x781D9B64,
+ 0x2BDC4E6F, 0x78403328,
+ 0x2B7DCF17, 0x786280BF,
+ 0x2B1F34EB, 0x78848413,
+ 0x2AC08025, 0x78A63D10,
+ 0x2A61B101, 0x78C7ABA1,
+ 0x2A02C7B8, 0x78E8CFB1,
+ 0x29A3C484, 0x7909A92C,
+ 0x2944A7A2, 0x792A37FE,
+ 0x28E5714A, 0x794A7C11,
+ 0x288621B9, 0x796A7554,
+ 0x2826B928, 0x798A23B1,
+ 0x27C737D2, 0x79A98715,
+ 0x27679DF4, 0x79C89F6D,
+ 0x2707EBC6, 0x79E76CA6,
+ 0x26A82185, 0x7A05EEAD,
+ 0x26483F6C, 0x7A24256E,
+ 0x25E845B5, 0x7A4210D8,
+ 0x2588349D, 0x7A5FB0D8,
+ 0x25280C5D, 0x7A7D055B,
+ 0x24C7CD32, 0x7A9A0E4F,
+ 0x24677757, 0x7AB6CBA3,
+ 0x24070B07, 0x7AD33D45,
+ 0x23A6887E, 0x7AEF6323,
+ 0x2345EFF7, 0x7B0B3D2C,
+ 0x22E541AE, 0x7B26CB4F,
+ 0x22847DDF, 0x7B420D7A,
+ 0x2223A4C5, 0x7B5D039D,
+ 0x21C2B69C, 0x7B77ADA8,
+ 0x2161B39F, 0x7B920B89,
+ 0x21009C0B, 0x7BAC1D31,
+ 0x209F701C, 0x7BC5E28F,
+ 0x203E300D, 0x7BDF5B94,
+ 0x1FDCDC1A, 0x7BF88830,
+ 0x1F7B7480, 0x7C116853,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x1EB86B46, 0x7C4242F2,
+ 0x1E56CA1E, 0x7C5A3D4F,
+ 0x1DF5163F, 0x7C71EAF8,
+ 0x1D934FE5, 0x7C894BDD,
+ 0x1D31774D, 0x7CA05FF1,
+ 0x1CCF8CB3, 0x7CB72724,
+ 0x1C6D9053, 0x7CCDA168,
+ 0x1C0B826A, 0x7CE3CEB1,
+ 0x1BA96334, 0x7CF9AEF0,
+ 0x1B4732EF, 0x7D0F4218,
+ 0x1AE4F1D6, 0x7D24881A,
+ 0x1A82A025, 0x7D3980EC,
+ 0x1A203E1B, 0x7D4E2C7E,
+ 0x19BDCBF2, 0x7D628AC5,
+ 0x195B49E9, 0x7D769BB5,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x18961727, 0x7D9DD55A,
+ 0x183366E8, 0x7DB0FDF7,
+ 0x17D0A7BB, 0x7DC3D90D,
+ 0x176DD9DE, 0x7DD6668E,
+ 0x170AFD8D, 0x7DE8A670,
+ 0x16A81305, 0x7DFA98A7,
+ 0x16451A83, 0x7E0C3D29,
+ 0x15E21444, 0x7E1D93E9,
+ 0x157F0086, 0x7E2E9CDF,
+ 0x151BDF85, 0x7E3F57FE,
+ 0x14B8B17F, 0x7E4FC53E,
+ 0x145576B1, 0x7E5FE493,
+ 0x13F22F57, 0x7E6FB5F3,
+ 0x138EDBB0, 0x7E7F3956,
+ 0x132B7BF9, 0x7E8E6EB1,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x1264994E, 0x7EABEF2C,
+ 0x120116D4, 0x7EBA3A39,
+ 0x119D8940, 0x7EC8371A,
+ 0x1139F0CE, 0x7ED5E5C6,
+ 0x10D64DBC, 0x7EE34635,
+ 0x1072A047, 0x7EF0585F,
+ 0x100EE8AD, 0x7EFD1C3C,
+ 0x0FAB272B, 0x7F0991C3,
+ 0x0F475BFE, 0x7F15B8EE,
+ 0x0EE38765, 0x7F2191B4,
+ 0x0E7FA99D, 0x7F2D1C0E,
+ 0x0E1BC2E3, 0x7F3857F5,
+ 0x0DB7D376, 0x7F434563,
+ 0x0D53DB92, 0x7F4DE450,
+ 0x0CEFDB75, 0x7F5834B6,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x0C27C389, 0x7F6BE9D4,
+ 0x0BC3AC35, 0x7F754E7F,
+ 0x0B5F8D9F, 0x7F7E648B,
+ 0x0AFB6805, 0x7F872BF3,
+ 0x0A973BA5, 0x7F8FA4AF,
+ 0x0A3308BC, 0x7F97CEBC,
+ 0x09CECF89, 0x7F9FAA15,
+ 0x096A9049, 0x7FA736B4,
+ 0x09064B3A, 0x7FAE7494,
+ 0x08A2009A, 0x7FB563B2,
+ 0x083DB0A7, 0x7FBC040A,
+ 0x07D95B9E, 0x7FC25596,
+ 0x077501BE, 0x7FC85853,
+ 0x0710A344, 0x7FCE0C3E,
+ 0x06AC406F, 0x7FD37152,
+ 0x0647D97C, 0x7FD8878D,
+ 0x05E36EA9, 0x7FDD4EEC,
+ 0x057F0034, 0x7FE1C76B,
+ 0x051A8E5C, 0x7FE5F108,
+ 0x04B6195D, 0x7FE9CBC0,
+ 0x0451A176, 0x7FED5790,
+ 0x03ED26E6, 0x7FF09477,
+ 0x0388A9E9, 0x7FF38273,
+ 0x03242ABF, 0x7FF62182,
+ 0x02BFA9A4, 0x7FF871A1,
+ 0x025B26D7, 0x7FFA72D1,
+ 0x01F6A296, 0x7FFC250F,
+ 0x01921D1F, 0x7FFD885A,
+ 0x012D96B0, 0x7FFE9CB2,
+ 0x00C90F88, 0x7FFF6216,
+ 0x006487E3, 0x7FFFD885,
+ 0x00000000, 0x7FFFFFFF,
+ 0xFF9B781D, 0x7FFFD885,
+ 0xFF36F078, 0x7FFF6216,
+ 0xFED2694F, 0x7FFE9CB2,
+ 0xFE6DE2E0, 0x7FFD885A,
+ 0xFE095D69, 0x7FFC250F,
+ 0xFDA4D928, 0x7FFA72D1,
+ 0xFD40565B, 0x7FF871A1,
+ 0xFCDBD541, 0x7FF62182,
+ 0xFC775616, 0x7FF38273,
+ 0xFC12D919, 0x7FF09477,
+ 0xFBAE5E89, 0x7FED5790,
+ 0xFB49E6A2, 0x7FE9CBC0,
+ 0xFAE571A4, 0x7FE5F108,
+ 0xFA80FFCB, 0x7FE1C76B,
+ 0xFA1C9156, 0x7FDD4EEC,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF953BF90, 0x7FD37152,
+ 0xF8EF5CBB, 0x7FCE0C3E,
+ 0xF88AFE41, 0x7FC85853,
+ 0xF826A461, 0x7FC25596,
+ 0xF7C24F58, 0x7FBC040A,
+ 0xF75DFF65, 0x7FB563B2,
+ 0xF6F9B4C5, 0x7FAE7494,
+ 0xF6956FB6, 0x7FA736B4,
+ 0xF6313076, 0x7F9FAA15,
+ 0xF5CCF743, 0x7F97CEBC,
+ 0xF568C45A, 0x7F8FA4AF,
+ 0xF50497FA, 0x7F872BF3,
+ 0xF4A07260, 0x7F7E648B,
+ 0xF43C53CA, 0x7F754E7F,
+ 0xF3D83C76, 0x7F6BE9D4,
+ 0xF3742CA1, 0x7F62368F,
+ 0xF310248A, 0x7F5834B6,
+ 0xF2AC246D, 0x7F4DE450,
+ 0xF2482C89, 0x7F434563,
+ 0xF1E43D1C, 0x7F3857F5,
+ 0xF1805662, 0x7F2D1C0E,
+ 0xF11C789A, 0x7F2191B4,
+ 0xF0B8A401, 0x7F15B8EE,
+ 0xF054D8D4, 0x7F0991C3,
+ 0xEFF11752, 0x7EFD1C3C,
+ 0xEF8D5FB8, 0x7EF0585F,
+ 0xEF29B243, 0x7EE34635,
+ 0xEEC60F31, 0x7ED5E5C6,
+ 0xEE6276BF, 0x7EC8371A,
+ 0xEDFEE92B, 0x7EBA3A39,
+ 0xED9B66B2, 0x7EABEF2C,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xECD48406, 0x7E8E6EB1,
+ 0xEC71244F, 0x7E7F3956,
+ 0xEC0DD0A8, 0x7E6FB5F3,
+ 0xEBAA894E, 0x7E5FE493,
+ 0xEB474E80, 0x7E4FC53E,
+ 0xEAE4207A, 0x7E3F57FE,
+ 0xEA80FF79, 0x7E2E9CDF,
+ 0xEA1DEBBB, 0x7E1D93E9,
+ 0xE9BAE57C, 0x7E0C3D29,
+ 0xE957ECFB, 0x7DFA98A7,
+ 0xE8F50273, 0x7DE8A670,
+ 0xE8922621, 0x7DD6668E,
+ 0xE82F5844, 0x7DC3D90D,
+ 0xE7CC9917, 0x7DB0FDF7,
+ 0xE769E8D8, 0x7D9DD55A,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE6A4B616, 0x7D769BB5,
+ 0xE642340D, 0x7D628AC5,
+ 0xE5DFC1E4, 0x7D4E2C7E,
+ 0xE57D5FDA, 0x7D3980EC,
+ 0xE51B0E2A, 0x7D24881A,
+ 0xE4B8CD10, 0x7D0F4218,
+ 0xE4569CCB, 0x7CF9AEF0,
+ 0xE3F47D95, 0x7CE3CEB1,
+ 0xE3926FAC, 0x7CCDA168,
+ 0xE330734C, 0x7CB72724,
+ 0xE2CE88B2, 0x7CA05FF1,
+ 0xE26CB01A, 0x7C894BDD,
+ 0xE20AE9C1, 0x7C71EAF8,
+ 0xE1A935E1, 0x7C5A3D4F,
+ 0xE14794B9, 0x7C4242F2,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xE0848B7F, 0x7C116853,
+ 0xE02323E5, 0x7BF88830,
+ 0xDFC1CFF2, 0x7BDF5B94,
+ 0xDF608FE3, 0x7BC5E28F,
+ 0xDEFF63F4, 0x7BAC1D31,
+ 0xDE9E4C60, 0x7B920B89,
+ 0xDE3D4963, 0x7B77ADA8,
+ 0xDDDC5B3A, 0x7B5D039D,
+ 0xDD7B8220, 0x7B420D7A,
+ 0xDD1ABE51, 0x7B26CB4F,
+ 0xDCBA1008, 0x7B0B3D2C,
+ 0xDC597781, 0x7AEF6323,
+ 0xDBF8F4F8, 0x7AD33D45,
+ 0xDB9888A8, 0x7AB6CBA3,
+ 0xDB3832CD, 0x7A9A0E4F,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xDA77CB62, 0x7A5FB0D8,
+ 0xDA17BA4A, 0x7A4210D8,
+ 0xD9B7C093, 0x7A24256E,
+ 0xD957DE7A, 0x7A05EEAD,
+ 0xD8F81439, 0x79E76CA6,
+ 0xD898620C, 0x79C89F6D,
+ 0xD838C82D, 0x79A98715,
+ 0xD7D946D7, 0x798A23B1,
+ 0xD779DE46, 0x796A7554,
+ 0xD71A8EB5, 0x794A7C11,
+ 0xD6BB585D, 0x792A37FE,
+ 0xD65C3B7B, 0x7909A92C,
+ 0xD5FD3847, 0x78E8CFB1,
+ 0xD59E4EFE, 0x78C7ABA1,
+ 0xD53F7FDA, 0x78A63D10,
+ 0xD4E0CB14, 0x78848413,
+ 0xD48230E8, 0x786280BF,
+ 0xD423B190, 0x78403328,
+ 0xD3C54D46, 0x781D9B64,
+ 0xD3670445, 0x77FAB988,
+ 0xD308D6C6, 0x77D78DAA,
+ 0xD2AAC504, 0x77B417DF,
+ 0xD24CCF38, 0x7790583D,
+ 0xD1EEF59E, 0x776C4EDB,
+ 0xD191386D, 0x7747FBCE,
+ 0xD13397E1, 0x77235F2D,
+ 0xD0D61433, 0x76FE790E,
+ 0xD078AD9D, 0x76D94988,
+ 0xD01B6459, 0x76B3D0B3,
+ 0xCFBE389F, 0x768E0EA5,
+ 0xCF612AAA, 0x76680376,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xCEA768F2, 0x761B1211,
+ 0xCE4AB5A2, 0x75F42C0A,
+ 0xCDEE20FC, 0x75CCFD42,
+ 0xCD91AB38, 0x75A585CF,
+ 0xCD355490, 0x757DC5CA,
+ 0xCCD91D3D, 0x7555BD4B,
+ 0xCC7D0577, 0x752D6C6C,
+ 0xCC210D78, 0x7504D345,
+ 0xCBC53578, 0x74DBF1EF,
+ 0xCB697DB0, 0x74B2C883,
+ 0xCB0DE658, 0x7489571B,
+ 0xCAB26FA9, 0x745F9DD1,
+ 0xCA5719DB, 0x74359CBD,
+ 0xC9FBE527, 0x740B53FA,
+ 0xC9A0D1C4, 0x73E0C3A3,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC8EB0FD6, 0x738ACC9E,
+ 0xC89061BA, 0x735F6626,
+ 0xC835D5D0, 0x7333B883,
+ 0xC7DB6C50, 0x7307C3D0,
+ 0xC7812571, 0x72DB8828,
+ 0xC727016C, 0x72AF05A6,
+ 0xC6CD0079, 0x72823C66,
+ 0xC67322CD, 0x72552C84,
+ 0xC61968A2, 0x7227D61C,
+ 0xC5BFD22E, 0x71FA3948,
+ 0xC5665FA8, 0x71CC5626,
+ 0xC50D1148, 0x719E2CD2,
+ 0xC4B3E746, 0x716FBD68,
+ 0xC45AE1D7, 0x71410804,
+ 0xC4020132, 0x71120CC5,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xC350AF25, 0x70B34524,
+ 0xC2F83E2A, 0x708378FE,
+ 0xC29FF2D4, 0x70536771,
+ 0xC247CD5A, 0x70231099,
+ 0xC1EFCDF2, 0x6FF27496,
+ 0xC197F4D3, 0x6FC19385,
+ 0xC1404233, 0x6F906D84,
+ 0xC0E8B648, 0x6F5F02B1,
+ 0xC0915147, 0x6F2D532C,
+ 0xC03A1368, 0x6EFB5F12,
+ 0xBFE2FCDF, 0x6EC92682,
+ 0xBF8C0DE2, 0x6E96A99C,
+ 0xBF3546A8, 0x6E63E87F,
+ 0xBEDEA765, 0x6E30E349,
+ 0xBE88304F, 0x6DFD9A1B,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xBDDBBB7F, 0x6D963C54,
+ 0xBD85BE2F, 0x6D6227FA,
+ 0xBD2FE9E1, 0x6D2DD027,
+ 0xBCDA3ECA, 0x6CF934FB,
+ 0xBC84BD1E, 0x6CC45697,
+ 0xBC2F6513, 0x6C8F351C,
+ 0xBBDA36DC, 0x6C59D0A9,
+ 0xBB8532AF, 0x6C242960,
+ 0xBB3058C0, 0x6BEE3F62,
+ 0xBADBA943, 0x6BB812D0,
+ 0xBA87246C, 0x6B81A3CD,
+ 0xBA32CA70, 0x6B4AF278,
+ 0xB9DE9B83, 0x6B13FEF5,
+ 0xB98A97D8, 0x6ADCC964,
+ 0xB936BFA3, 0x6AA551E8,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB88F926C, 0x6A359DB9,
+ 0xB83C3DD1, 0x69FD614A,
+ 0xB7E9157A, 0x69C4E37A,
+ 0xB796199B, 0x698C246C,
+ 0xB7434A67, 0x69532442,
+ 0xB6F0A811, 0x6919E320,
+ 0xB69E32CD, 0x68E06129,
+ 0xB64BEACC, 0x68A69E81,
+ 0xB5F9D042, 0x686C9B4B,
+ 0xB5A7E362, 0x683257AA,
+ 0xB556245E, 0x67F7D3C4,
+ 0xB5049368, 0x67BD0FBC,
+ 0xB4B330B2, 0x67820BB6,
+ 0xB461FC70, 0x6746C7D7,
+ 0xB410F6D2, 0x670B4443,
+ 0xB3C0200C, 0x66CF811F,
+ 0xB36F784E, 0x66937E90,
+ 0xB31EFFCB, 0x66573CBB,
+ 0xB2CEB6B5, 0x661ABBC5,
+ 0xB27E9D3B, 0x65DDFBD3,
+ 0xB22EB392, 0x65A0FD0B,
+ 0xB1DEF9E8, 0x6563BF92,
+ 0xB18F7070, 0x6526438E,
+ 0xB140175B, 0x64E88926,
+ 0xB0F0EEDA, 0x64AA907F,
+ 0xB0A1F71C, 0x646C59BF,
+ 0xB0533055, 0x642DE50D,
+ 0xB0049AB2, 0x63EF328F,
+ 0xAFB63667, 0x63B0426D,
+ 0xAF6803A1, 0x637114CC,
+ 0xAF1A0293, 0x6331A9D4,
+ 0xAECC336B, 0x62F201AC,
+ 0xAE7E965B, 0x62B21C7B,
+ 0xAE312B91, 0x6271FA69,
+ 0xADE3F33E, 0x62319B9D,
+ 0xAD96ED91, 0x61F1003E,
+ 0xAD4A1ABA, 0x61B02876,
+ 0xACFD7AE8, 0x616F146B,
+ 0xACB10E4A, 0x612DC446,
+ 0xAC64D510, 0x60EC3830,
+ 0xAC18CF68, 0x60AA704F,
+ 0xABCCFD82, 0x60686CCE,
+ 0xAB815F8C, 0x60262DD5,
+ 0xAB35F5B5, 0x5FE3B38D,
+ 0xAAEAC02B, 0x5FA0FE1E,
+ 0xAA9FBF1D, 0x5F5E0DB3,
+ 0xAA54F2B9, 0x5F1AE273,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA9BFF8A8, 0x5E93DC1F,
+ 0xA975CB56, 0x5E50015D,
+ 0xA92BD366, 0x5E0BEC6E,
+ 0xA8E21106, 0x5DC79D7C,
+ 0xA8988463, 0x5D8314B0,
+ 0xA84F2DA9, 0x5D3E5236,
+ 0xA8060D08, 0x5CF95638,
+ 0xA7BD22AB, 0x5CB420DF,
+ 0xA7746EC0, 0x5C6EB258,
+ 0xA72BF173, 0x5C290ACC,
+ 0xA6E3AAF2, 0x5BE32A67,
+ 0xA69B9B68, 0x5B9D1153,
+ 0xA653C302, 0x5B56BFBD,
+ 0xA60C21ED, 0x5B1035CF,
+ 0xA5C4B855, 0x5AC973B4,
+ 0xA57D8666, 0x5A82799A,
+ 0xA5368C4B, 0x5A3B47AA,
+ 0xA4EFCA31, 0x59F3DE12,
+ 0xA4A94042, 0x59AC3CFD,
+ 0xA462EEAC, 0x59646497,
+ 0xA41CD598, 0x591C550E,
+ 0xA3D6F533, 0x58D40E8C,
+ 0xA3914DA7, 0x588B913F,
+ 0xA34BDF20, 0x5842DD54,
+ 0xA306A9C7, 0x57F9F2F7,
+ 0xA2C1ADC9, 0x57B0D256,
+ 0xA27CEB4F, 0x57677B9D,
+ 0xA2386283, 0x571DEEF9,
+ 0xA1F41391, 0x56D42C99,
+ 0xA1AFFEA2, 0x568A34A9,
+ 0xA16C23E1, 0x56400757,
+ 0xA1288376, 0x55F5A4D2,
+ 0xA0E51D8C, 0x55AB0D46,
+ 0xA0A1F24C, 0x556040E2,
+ 0xA05F01E1, 0x55153FD4,
+ 0xA01C4C72, 0x54CA0A4A,
+ 0x9FD9D22A, 0x547EA073,
+ 0x9F979331, 0x5433027D,
+ 0x9F558FB0, 0x53E73097,
+ 0x9F13C7D0, 0x539B2AEF,
+ 0x9ED23BB9, 0x534EF1B5,
+ 0x9E90EB94, 0x53028517,
+ 0x9E4FD789, 0x52B5E545,
+ 0x9E0EFFC1, 0x5269126E,
+ 0x9DCE6462, 0x521C0CC1,
+ 0x9D8E0596, 0x51CED46E,
+ 0x9D4DE384, 0x518169A4,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9CCE562B, 0x50E5FD6C,
+ 0x9C8EEB33, 0x5097FC5E,
+ 0x9C4FBD92, 0x5049C999,
+ 0x9C10CD70, 0x4FFB654D,
+ 0x9BD21AF2, 0x4FACCFAB,
+ 0x9B93A640, 0x4F5E08E3,
+ 0x9B556F80, 0x4F0F1126,
+ 0x9B1776D9, 0x4EBFE8A4,
+ 0x9AD9BC71, 0x4E708F8F,
+ 0x9A9C406D, 0x4E210617,
+ 0x9A5F02F5, 0x4DD14C6E,
+ 0x9A22042C, 0x4D8162C4,
+ 0x99E5443A, 0x4D31494B,
+ 0x99A8C344, 0x4CE10034,
+ 0x996C816F, 0x4C9087B1,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x98F4BBBC, 0x4BEF092D,
+ 0x98B93828, 0x4B9E038F,
+ 0x987DF449, 0x4B4CCF4D,
+ 0x9842F043, 0x4AFB6C97,
+ 0x98082C3B, 0x4AA9DBA1,
+ 0x97CDA855, 0x4A581C9D,
+ 0x979364B5, 0x4A062FBD,
+ 0x9759617E, 0x49B41533,
+ 0x971F9ED6, 0x4961CD32,
+ 0x96E61CDF, 0x490F57EE,
+ 0x96ACDBBD, 0x48BCB598,
+ 0x9673DB94, 0x4869E664,
+ 0x963B1C85, 0x4816EA85,
+ 0x96029EB5, 0x47C3C22E,
+ 0x95CA6246, 0x47706D93,
+ 0x9592675B, 0x471CECE6,
+ 0x955AAE17, 0x46C9405C,
+ 0x9523369B, 0x46756827,
+ 0x94EC010B, 0x4621647C,
+ 0x94B50D87, 0x45CD358F,
+ 0x947E5C32, 0x4578DB93,
+ 0x9447ED2F, 0x452456BC,
+ 0x9411C09D, 0x44CFA73F,
+ 0x93DBD69F, 0x447ACD50,
+ 0x93A62F56, 0x4425C923,
+ 0x9370CAE4, 0x43D09AEC,
+ 0x933BA968, 0x437B42E1,
+ 0x9306CB04, 0x4325C135,
+ 0x92D22FD8, 0x42D0161E,
+ 0x929DD805, 0x427A41D0,
+ 0x9269C3AC, 0x42244480,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x920265E4, 0x4177CFB0,
+ 0x91CF1CB6, 0x4121589A,
+ 0x919C1780, 0x40CAB957,
+ 0x91695663, 0x4073F21D,
+ 0x9136D97D, 0x401D0320,
+ 0x9104A0ED, 0x3FC5EC97,
+ 0x90D2ACD3, 0x3F6EAEB8,
+ 0x90A0FD4E, 0x3F1749B7,
+ 0x906F927B, 0x3EBFBDCC,
+ 0x903E6C7A, 0x3E680B2C,
+ 0x900D8B69, 0x3E10320D,
+ 0x8FDCEF66, 0x3DB832A5,
+ 0x8FAC988E, 0x3D600D2B,
+ 0x8F7C8701, 0x3D07C1D5,
+ 0x8F4CBADB, 0x3CAF50DA,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8EEDF33B, 0x3BFDFECD,
+ 0x8EBEF7FB, 0x3BA51E29,
+ 0x8E904298, 0x3B4C18BA,
+ 0x8E61D32D, 0x3AF2EEB7,
+ 0x8E33A9D9, 0x3A99A057,
+ 0x8E05C6B7, 0x3A402DD1,
+ 0x8DD829E4, 0x39E6975D,
+ 0x8DAAD37B, 0x398CDD32,
+ 0x8D7DC399, 0x3932FF87,
+ 0x8D50FA59, 0x38D8FE93,
+ 0x8D2477D8, 0x387EDA8E,
+ 0x8CF83C30, 0x382493B0,
+ 0x8CCC477D, 0x37CA2A30,
+ 0x8CA099D9, 0x376F9E46,
+ 0x8C753361, 0x3714F02A,
+ 0x8C4A142F, 0x36BA2013,
+ 0x8C1F3C5C, 0x365F2E3B,
+ 0x8BF4AC05, 0x36041AD9,
+ 0x8BCA6342, 0x35A8E624,
+ 0x8BA0622F, 0x354D9056,
+ 0x8B76A8E4, 0x34F219A7,
+ 0x8B4D377C, 0x3496824F,
+ 0x8B240E10, 0x343ACA87,
+ 0x8AFB2CBA, 0x33DEF287,
+ 0x8AD29393, 0x3382FA88,
+ 0x8AAA42B4, 0x3326E2C2,
+ 0x8A823A35, 0x32CAAB6F,
+ 0x8A5A7A30, 0x326E54C7,
+ 0x8A3302BD, 0x3211DF03,
+ 0x8A0BD3F5, 0x31B54A5D,
+ 0x89E4EDEE, 0x3158970D,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x8997FC89, 0x309ED555,
+ 0x8971F15A, 0x3041C760,
+ 0x894C2F4C, 0x2FE49BA6,
+ 0x8926B677, 0x2F875262,
+ 0x890186F1, 0x2F29EBCC,
+ 0x88DCA0D3, 0x2ECC681E,
+ 0x88B80431, 0x2E6EC792,
+ 0x8893B124, 0x2E110A62,
+ 0x886FA7C2, 0x2DB330C7,
+ 0x884BE820, 0x2D553AFB,
+ 0x88287255, 0x2CF72939,
+ 0x88054677, 0x2C98FBBA,
+ 0x87E2649B, 0x2C3AB2B9,
+ 0x87BFCCD7, 0x2BDC4E6F,
+ 0x879D7F40, 0x2B7DCF17,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x8759C2EF, 0x2AC08025,
+ 0x8738545E, 0x2A61B101,
+ 0x8717304E, 0x2A02C7B8,
+ 0x86F656D3, 0x29A3C484,
+ 0x86D5C802, 0x2944A7A2,
+ 0x86B583EE, 0x28E5714A,
+ 0x86958AAB, 0x288621B9,
+ 0x8675DC4E, 0x2826B928,
+ 0x865678EA, 0x27C737D2,
+ 0x86376092, 0x27679DF4,
+ 0x86189359, 0x2707EBC6,
+ 0x85FA1152, 0x26A82185,
+ 0x85DBDA91, 0x26483F6C,
+ 0x85BDEF27, 0x25E845B5,
+ 0x85A04F28, 0x2588349D,
+ 0x8582FAA4, 0x25280C5D,
+ 0x8565F1B0, 0x24C7CD32,
+ 0x8549345C, 0x24677757,
+ 0x852CC2BA, 0x24070B07,
+ 0x85109CDC, 0x23A6887E,
+ 0x84F4C2D3, 0x2345EFF7,
+ 0x84D934B0, 0x22E541AE,
+ 0x84BDF285, 0x22847DDF,
+ 0x84A2FC62, 0x2223A4C5,
+ 0x84885257, 0x21C2B69C,
+ 0x846DF476, 0x2161B39F,
+ 0x8453E2CE, 0x21009C0B,
+ 0x843A1D70, 0x209F701C,
+ 0x8420A46B, 0x203E300D,
+ 0x840777CF, 0x1FDCDC1A,
+ 0x83EE97AC, 0x1F7B7480,
+ 0x83D60411, 0x1F19F97B,
+ 0x83BDBD0D, 0x1EB86B46,
+ 0x83A5C2B0, 0x1E56CA1E,
+ 0x838E1507, 0x1DF5163F,
+ 0x8376B422, 0x1D934FE5,
+ 0x835FA00E, 0x1D31774D,
+ 0x8348D8DB, 0x1CCF8CB3,
+ 0x83325E97, 0x1C6D9053,
+ 0x831C314E, 0x1C0B826A,
+ 0x8306510F, 0x1BA96334,
+ 0x82F0BDE8, 0x1B4732EF,
+ 0x82DB77E5, 0x1AE4F1D6,
+ 0x82C67F13, 0x1A82A025,
+ 0x82B1D381, 0x1A203E1B,
+ 0x829D753A, 0x19BDCBF2,
+ 0x8289644A, 0x195B49E9,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x82622AA5, 0x18961727,
+ 0x824F0208, 0x183366E8,
+ 0x823C26F2, 0x17D0A7BB,
+ 0x82299971, 0x176DD9DE,
+ 0x8217598F, 0x170AFD8D,
+ 0x82056758, 0x16A81305,
+ 0x81F3C2D7, 0x16451A83,
+ 0x81E26C16, 0x15E21444,
+ 0x81D16320, 0x157F0086,
+ 0x81C0A801, 0x151BDF85,
+ 0x81B03AC1, 0x14B8B17F,
+ 0x81A01B6C, 0x145576B1,
+ 0x81904A0C, 0x13F22F57,
+ 0x8180C6A9, 0x138EDBB0,
+ 0x8171914E, 0x132B7BF9,
+ 0x8162AA03, 0x12C8106E,
+ 0x815410D3, 0x1264994E,
+ 0x8145C5C6, 0x120116D4,
+ 0x8137C8E6, 0x119D8940,
+ 0x812A1A39, 0x1139F0CE,
+ 0x811CB9CA, 0x10D64DBC,
+ 0x810FA7A0, 0x1072A047,
+ 0x8102E3C3, 0x100EE8AD,
+ 0x80F66E3C, 0x0FAB272B,
+ 0x80EA4712, 0x0F475BFE,
+ 0x80DE6E4C, 0x0EE38765,
+ 0x80D2E3F1, 0x0E7FA99D,
+ 0x80C7A80A, 0x0E1BC2E3,
+ 0x80BCBA9C, 0x0DB7D376,
+ 0x80B21BAF, 0x0D53DB92,
+ 0x80A7CB49, 0x0CEFDB75,
+ 0x809DC970, 0x0C8BD35E,
+ 0x8094162B, 0x0C27C389,
+ 0x808AB180, 0x0BC3AC35,
+ 0x80819B74, 0x0B5F8D9F,
+ 0x8078D40D, 0x0AFB6805,
+ 0x80705B50, 0x0A973BA5,
+ 0x80683143, 0x0A3308BC,
+ 0x806055EA, 0x09CECF89,
+ 0x8058C94C, 0x096A9049,
+ 0x80518B6B, 0x09064B3A,
+ 0x804A9C4D, 0x08A2009A,
+ 0x8043FBF6, 0x083DB0A7,
+ 0x803DAA69, 0x07D95B9E,
+ 0x8037A7AC, 0x077501BE,
+ 0x8031F3C1, 0x0710A344,
+ 0x802C8EAD, 0x06AC406F,
+ 0x80277872, 0x0647D97C,
+ 0x8022B113, 0x05E36EA9,
+ 0x801E3894, 0x057F0034,
+ 0x801A0EF7, 0x051A8E5C,
+ 0x80163440, 0x04B6195D,
+ 0x8012A86F, 0x0451A176,
+ 0x800F6B88, 0x03ED26E6,
+ 0x800C7D8C, 0x0388A9E9,
+ 0x8009DE7D, 0x03242ABF,
+ 0x80078E5E, 0x02BFA9A4,
+ 0x80058D2E, 0x025B26D7,
+ 0x8003DAF0, 0x01F6A296,
+ 0x800277A5, 0x01921D1F,
+ 0x8001634D, 0x012D96B0,
+ 0x80009DE9, 0x00C90F88,
+ 0x8000277A, 0x006487E3,
+ 0x80000000, 0x00000000,
+ 0x8000277A, 0xFF9B781D,
+ 0x80009DE9, 0xFF36F078,
+ 0x8001634D, 0xFED2694F,
+ 0x800277A5, 0xFE6DE2E0,
+ 0x8003DAF0, 0xFE095D69,
+ 0x80058D2E, 0xFDA4D928,
+ 0x80078E5E, 0xFD40565B,
+ 0x8009DE7D, 0xFCDBD541,
+ 0x800C7D8C, 0xFC775616,
+ 0x800F6B88, 0xFC12D919,
+ 0x8012A86F, 0xFBAE5E89,
+ 0x80163440, 0xFB49E6A2,
+ 0x801A0EF7, 0xFAE571A4,
+ 0x801E3894, 0xFA80FFCB,
+ 0x8022B113, 0xFA1C9156,
+ 0x80277872, 0xF9B82683,
+ 0x802C8EAD, 0xF953BF90,
+ 0x8031F3C1, 0xF8EF5CBB,
+ 0x8037A7AC, 0xF88AFE41,
+ 0x803DAA69, 0xF826A461,
+ 0x8043FBF6, 0xF7C24F58,
+ 0x804A9C4D, 0xF75DFF65,
+ 0x80518B6B, 0xF6F9B4C5,
+ 0x8058C94C, 0xF6956FB6,
+ 0x806055EA, 0xF6313076,
+ 0x80683143, 0xF5CCF743,
+ 0x80705B50, 0xF568C45A,
+ 0x8078D40D, 0xF50497FA,
+ 0x80819B74, 0xF4A07260,
+ 0x808AB180, 0xF43C53CA,
+ 0x8094162B, 0xF3D83C76,
+ 0x809DC970, 0xF3742CA1,
+ 0x80A7CB49, 0xF310248A,
+ 0x80B21BAF, 0xF2AC246D,
+ 0x80BCBA9C, 0xF2482C89,
+ 0x80C7A80A, 0xF1E43D1C,
+ 0x80D2E3F1, 0xF1805662,
+ 0x80DE6E4C, 0xF11C789A,
+ 0x80EA4712, 0xF0B8A401,
+ 0x80F66E3C, 0xF054D8D4,
+ 0x8102E3C3, 0xEFF11752,
+ 0x810FA7A0, 0xEF8D5FB8,
+ 0x811CB9CA, 0xEF29B243,
+ 0x812A1A39, 0xEEC60F31,
+ 0x8137C8E6, 0xEE6276BF,
+ 0x8145C5C6, 0xEDFEE92B,
+ 0x815410D3, 0xED9B66B2,
+ 0x8162AA03, 0xED37EF91,
+ 0x8171914E, 0xECD48406,
+ 0x8180C6A9, 0xEC71244F,
+ 0x81904A0C, 0xEC0DD0A8,
+ 0x81A01B6C, 0xEBAA894E,
+ 0x81B03AC1, 0xEB474E80,
+ 0x81C0A801, 0xEAE4207A,
+ 0x81D16320, 0xEA80FF79,
+ 0x81E26C16, 0xEA1DEBBB,
+ 0x81F3C2D7, 0xE9BAE57C,
+ 0x82056758, 0xE957ECFB,
+ 0x8217598F, 0xE8F50273,
+ 0x82299971, 0xE8922621,
+ 0x823C26F2, 0xE82F5844,
+ 0x824F0208, 0xE7CC9917,
+ 0x82622AA5, 0xE769E8D8,
+ 0x8275A0C0, 0xE70747C3,
+ 0x8289644A, 0xE6A4B616,
+ 0x829D753A, 0xE642340D,
+ 0x82B1D381, 0xE5DFC1E4,
+ 0x82C67F13, 0xE57D5FDA,
+ 0x82DB77E5, 0xE51B0E2A,
+ 0x82F0BDE8, 0xE4B8CD10,
+ 0x8306510F, 0xE4569CCB,
+ 0x831C314E, 0xE3F47D95,
+ 0x83325E97, 0xE3926FAC,
+ 0x8348D8DB, 0xE330734C,
+ 0x835FA00E, 0xE2CE88B2,
+ 0x8376B422, 0xE26CB01A,
+ 0x838E1507, 0xE20AE9C1,
+ 0x83A5C2B0, 0xE1A935E1,
+ 0x83BDBD0D, 0xE14794B9,
+ 0x83D60411, 0xE0E60684,
+ 0x83EE97AC, 0xE0848B7F,
+ 0x840777CF, 0xE02323E5,
+ 0x8420A46B, 0xDFC1CFF2,
+ 0x843A1D70, 0xDF608FE3,
+ 0x8453E2CE, 0xDEFF63F4,
+ 0x846DF476, 0xDE9E4C60,
+ 0x84885257, 0xDE3D4963,
+ 0x84A2FC62, 0xDDDC5B3A,
+ 0x84BDF285, 0xDD7B8220,
+ 0x84D934B0, 0xDD1ABE51,
+ 0x84F4C2D3, 0xDCBA1008,
+ 0x85109CDC, 0xDC597781,
+ 0x852CC2BA, 0xDBF8F4F8,
+ 0x8549345C, 0xDB9888A8,
+ 0x8565F1B0, 0xDB3832CD,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x85A04F28, 0xDA77CB62,
+ 0x85BDEF27, 0xDA17BA4A,
+ 0x85DBDA91, 0xD9B7C093,
+ 0x85FA1152, 0xD957DE7A,
+ 0x86189359, 0xD8F81439,
+ 0x86376092, 0xD898620C,
+ 0x865678EA, 0xD838C82D,
+ 0x8675DC4E, 0xD7D946D7,
+ 0x86958AAB, 0xD779DE46,
+ 0x86B583EE, 0xD71A8EB5,
+ 0x86D5C802, 0xD6BB585D,
+ 0x86F656D3, 0xD65C3B7B,
+ 0x8717304E, 0xD5FD3847,
+ 0x8738545E, 0xD59E4EFE,
+ 0x8759C2EF, 0xD53F7FDA,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x879D7F40, 0xD48230E8,
+ 0x87BFCCD7, 0xD423B190,
+ 0x87E2649B, 0xD3C54D46,
+ 0x88054677, 0xD3670445,
+ 0x88287255, 0xD308D6C6,
+ 0x884BE820, 0xD2AAC504,
+ 0x886FA7C2, 0xD24CCF38,
+ 0x8893B124, 0xD1EEF59E,
+ 0x88B80431, 0xD191386D,
+ 0x88DCA0D3, 0xD13397E1,
+ 0x890186F1, 0xD0D61433,
+ 0x8926B677, 0xD078AD9D,
+ 0x894C2F4C, 0xD01B6459,
+ 0x8971F15A, 0xCFBE389F,
+ 0x8997FC89, 0xCF612AAA,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x89E4EDEE, 0xCEA768F2,
+ 0x8A0BD3F5, 0xCE4AB5A2,
+ 0x8A3302BD, 0xCDEE20FC,
+ 0x8A5A7A30, 0xCD91AB38,
+ 0x8A823A35, 0xCD355490,
+ 0x8AAA42B4, 0xCCD91D3D,
+ 0x8AD29393, 0xCC7D0577,
+ 0x8AFB2CBA, 0xCC210D78,
+ 0x8B240E10, 0xCBC53578,
+ 0x8B4D377C, 0xCB697DB0,
+ 0x8B76A8E4, 0xCB0DE658,
+ 0x8BA0622F, 0xCAB26FA9,
+ 0x8BCA6342, 0xCA5719DB,
+ 0x8BF4AC05, 0xC9FBE527,
+ 0x8C1F3C5C, 0xC9A0D1C4,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8C753361, 0xC8EB0FD6,
+ 0x8CA099D9, 0xC89061BA,
+ 0x8CCC477D, 0xC835D5D0,
+ 0x8CF83C30, 0xC7DB6C50,
+ 0x8D2477D8, 0xC7812571,
+ 0x8D50FA59, 0xC727016C,
+ 0x8D7DC399, 0xC6CD0079,
+ 0x8DAAD37B, 0xC67322CD,
+ 0x8DD829E4, 0xC61968A2,
+ 0x8E05C6B7, 0xC5BFD22E,
+ 0x8E33A9D9, 0xC5665FA8,
+ 0x8E61D32D, 0xC50D1148,
+ 0x8E904298, 0xC4B3E746,
+ 0x8EBEF7FB, 0xC45AE1D7,
+ 0x8EEDF33B, 0xC4020132,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x8F4CBADB, 0xC350AF25,
+ 0x8F7C8701, 0xC2F83E2A,
+ 0x8FAC988E, 0xC29FF2D4,
+ 0x8FDCEF66, 0xC247CD5A,
+ 0x900D8B69, 0xC1EFCDF2,
+ 0x903E6C7A, 0xC197F4D3,
+ 0x906F927B, 0xC1404233,
+ 0x90A0FD4E, 0xC0E8B648,
+ 0x90D2ACD3, 0xC0915147,
+ 0x9104A0ED, 0xC03A1368,
+ 0x9136D97D, 0xBFE2FCDF,
+ 0x91695663, 0xBF8C0DE2,
+ 0x919C1780, 0xBF3546A8,
+ 0x91CF1CB6, 0xBEDEA765,
+ 0x920265E4, 0xBE88304F,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x9269C3AC, 0xBDDBBB7F,
+ 0x929DD805, 0xBD85BE2F,
+ 0x92D22FD8, 0xBD2FE9E1,
+ 0x9306CB04, 0xBCDA3ECA,
+ 0x933BA968, 0xBC84BD1E,
+ 0x9370CAE4, 0xBC2F6513,
+ 0x93A62F56, 0xBBDA36DC,
+ 0x93DBD69F, 0xBB8532AF,
+ 0x9411C09D, 0xBB3058C0,
+ 0x9447ED2F, 0xBADBA943,
+ 0x947E5C32, 0xBA87246C,
+ 0x94B50D87, 0xBA32CA70,
+ 0x94EC010B, 0xB9DE9B83,
+ 0x9523369B, 0xB98A97D8,
+ 0x955AAE17, 0xB936BFA3,
+ 0x9592675B, 0xB8E31319,
+ 0x95CA6246, 0xB88F926C,
+ 0x96029EB5, 0xB83C3DD1,
+ 0x963B1C85, 0xB7E9157A,
+ 0x9673DB94, 0xB796199B,
+ 0x96ACDBBD, 0xB7434A67,
+ 0x96E61CDF, 0xB6F0A811,
+ 0x971F9ED6, 0xB69E32CD,
+ 0x9759617E, 0xB64BEACC,
+ 0x979364B5, 0xB5F9D042,
+ 0x97CDA855, 0xB5A7E362,
+ 0x98082C3B, 0xB556245E,
+ 0x9842F043, 0xB5049368,
+ 0x987DF449, 0xB4B330B2,
+ 0x98B93828, 0xB461FC70,
+ 0x98F4BBBC, 0xB410F6D2,
+ 0x99307EE0, 0xB3C0200C,
+ 0x996C816F, 0xB36F784E,
+ 0x99A8C344, 0xB31EFFCB,
+ 0x99E5443A, 0xB2CEB6B5,
+ 0x9A22042C, 0xB27E9D3B,
+ 0x9A5F02F5, 0xB22EB392,
+ 0x9A9C406D, 0xB1DEF9E8,
+ 0x9AD9BC71, 0xB18F7070,
+ 0x9B1776D9, 0xB140175B,
+ 0x9B556F80, 0xB0F0EEDA,
+ 0x9B93A640, 0xB0A1F71C,
+ 0x9BD21AF2, 0xB0533055,
+ 0x9C10CD70, 0xB0049AB2,
+ 0x9C4FBD92, 0xAFB63667,
+ 0x9C8EEB33, 0xAF6803A1,
+ 0x9CCE562B, 0xAF1A0293,
+ 0x9D0DFE53, 0xAECC336B,
+ 0x9D4DE384, 0xAE7E965B,
+ 0x9D8E0596, 0xAE312B91,
+ 0x9DCE6462, 0xADE3F33E,
+ 0x9E0EFFC1, 0xAD96ED91,
+ 0x9E4FD789, 0xAD4A1ABA,
+ 0x9E90EB94, 0xACFD7AE8,
+ 0x9ED23BB9, 0xACB10E4A,
+ 0x9F13C7D0, 0xAC64D510,
+ 0x9F558FB0, 0xAC18CF68,
+ 0x9F979331, 0xABCCFD82,
+ 0x9FD9D22A, 0xAB815F8C,
+ 0xA01C4C72, 0xAB35F5B5,
+ 0xA05F01E1, 0xAAEAC02B,
+ 0xA0A1F24C, 0xAA9FBF1D,
+ 0xA0E51D8C, 0xAA54F2B9,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA16C23E1, 0xA9BFF8A8,
+ 0xA1AFFEA2, 0xA975CB56,
+ 0xA1F41391, 0xA92BD366,
+ 0xA2386283, 0xA8E21106,
+ 0xA27CEB4F, 0xA8988463,
+ 0xA2C1ADC9, 0xA84F2DA9,
+ 0xA306A9C7, 0xA8060D08,
+ 0xA34BDF20, 0xA7BD22AB,
+ 0xA3914DA7, 0xA7746EC0,
+ 0xA3D6F533, 0xA72BF173,
+ 0xA41CD598, 0xA6E3AAF2,
+ 0xA462EEAC, 0xA69B9B68,
+ 0xA4A94042, 0xA653C302,
+ 0xA4EFCA31, 0xA60C21ED,
+ 0xA5368C4B, 0xA5C4B855,
+ 0xA57D8666, 0xA57D8666,
+ 0xA5C4B855, 0xA5368C4B,
+ 0xA60C21ED, 0xA4EFCA31,
+ 0xA653C302, 0xA4A94042,
+ 0xA69B9B68, 0xA462EEAC,
+ 0xA6E3AAF2, 0xA41CD598,
+ 0xA72BF173, 0xA3D6F533,
+ 0xA7746EC0, 0xA3914DA7,
+ 0xA7BD22AB, 0xA34BDF20,
+ 0xA8060D08, 0xA306A9C7,
+ 0xA84F2DA9, 0xA2C1ADC9,
+ 0xA8988463, 0xA27CEB4F,
+ 0xA8E21106, 0xA2386283,
+ 0xA92BD366, 0xA1F41391,
+ 0xA975CB56, 0xA1AFFEA2,
+ 0xA9BFF8A8, 0xA16C23E1,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAA54F2B9, 0xA0E51D8C,
+ 0xAA9FBF1D, 0xA0A1F24C,
+ 0xAAEAC02B, 0xA05F01E1,
+ 0xAB35F5B5, 0xA01C4C72,
+ 0xAB815F8C, 0x9FD9D22A,
+ 0xABCCFD82, 0x9F979331,
+ 0xAC18CF68, 0x9F558FB0,
+ 0xAC64D510, 0x9F13C7D0,
+ 0xACB10E4A, 0x9ED23BB9,
+ 0xACFD7AE8, 0x9E90EB94,
+ 0xAD4A1ABA, 0x9E4FD789,
+ 0xAD96ED91, 0x9E0EFFC1,
+ 0xADE3F33E, 0x9DCE6462,
+ 0xAE312B91, 0x9D8E0596,
+ 0xAE7E965B, 0x9D4DE384,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xAF1A0293, 0x9CCE562B,
+ 0xAF6803A1, 0x9C8EEB33,
+ 0xAFB63667, 0x9C4FBD92,
+ 0xB0049AB2, 0x9C10CD70,
+ 0xB0533055, 0x9BD21AF2,
+ 0xB0A1F71C, 0x9B93A640,
+ 0xB0F0EEDA, 0x9B556F80,
+ 0xB140175B, 0x9B1776D9,
+ 0xB18F7070, 0x9AD9BC71,
+ 0xB1DEF9E8, 0x9A9C406D,
+ 0xB22EB392, 0x9A5F02F5,
+ 0xB27E9D3B, 0x9A22042C,
+ 0xB2CEB6B5, 0x99E5443A,
+ 0xB31EFFCB, 0x99A8C344,
+ 0xB36F784E, 0x996C816F,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB410F6D2, 0x98F4BBBC,
+ 0xB461FC70, 0x98B93828,
+ 0xB4B330B2, 0x987DF449,
+ 0xB5049368, 0x9842F043,
+ 0xB556245E, 0x98082C3B,
+ 0xB5A7E362, 0x97CDA855,
+ 0xB5F9D042, 0x979364B5,
+ 0xB64BEACC, 0x9759617E,
+ 0xB69E32CD, 0x971F9ED6,
+ 0xB6F0A811, 0x96E61CDF,
+ 0xB7434A67, 0x96ACDBBD,
+ 0xB796199B, 0x9673DB94,
+ 0xB7E9157A, 0x963B1C85,
+ 0xB83C3DD1, 0x96029EB5,
+ 0xB88F926C, 0x95CA6246,
+ 0xB8E31319, 0x9592675B,
+ 0xB936BFA3, 0x955AAE17,
+ 0xB98A97D8, 0x9523369B,
+ 0xB9DE9B83, 0x94EC010B,
+ 0xBA32CA70, 0x94B50D87,
+ 0xBA87246C, 0x947E5C32,
+ 0xBADBA943, 0x9447ED2F,
+ 0xBB3058C0, 0x9411C09D,
+ 0xBB8532AF, 0x93DBD69F,
+ 0xBBDA36DC, 0x93A62F56,
+ 0xBC2F6513, 0x9370CAE4,
+ 0xBC84BD1E, 0x933BA968,
+ 0xBCDA3ECA, 0x9306CB04,
+ 0xBD2FE9E1, 0x92D22FD8,
+ 0xBD85BE2F, 0x929DD805,
+ 0xBDDBBB7F, 0x9269C3AC,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xBE88304F, 0x920265E4,
+ 0xBEDEA765, 0x91CF1CB6,
+ 0xBF3546A8, 0x919C1780,
+ 0xBF8C0DE2, 0x91695663,
+ 0xBFE2FCDF, 0x9136D97D,
+ 0xC03A1368, 0x9104A0ED,
+ 0xC0915147, 0x90D2ACD3,
+ 0xC0E8B648, 0x90A0FD4E,
+ 0xC1404233, 0x906F927B,
+ 0xC197F4D3, 0x903E6C7A,
+ 0xC1EFCDF2, 0x900D8B69,
+ 0xC247CD5A, 0x8FDCEF66,
+ 0xC29FF2D4, 0x8FAC988E,
+ 0xC2F83E2A, 0x8F7C8701,
+ 0xC350AF25, 0x8F4CBADB,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC4020132, 0x8EEDF33B,
+ 0xC45AE1D7, 0x8EBEF7FB,
+ 0xC4B3E746, 0x8E904298,
+ 0xC50D1148, 0x8E61D32D,
+ 0xC5665FA8, 0x8E33A9D9,
+ 0xC5BFD22E, 0x8E05C6B7,
+ 0xC61968A2, 0x8DD829E4,
+ 0xC67322CD, 0x8DAAD37B,
+ 0xC6CD0079, 0x8D7DC399,
+ 0xC727016C, 0x8D50FA59,
+ 0xC7812571, 0x8D2477D8,
+ 0xC7DB6C50, 0x8CF83C30,
+ 0xC835D5D0, 0x8CCC477D,
+ 0xC89061BA, 0x8CA099D9,
+ 0xC8EB0FD6, 0x8C753361,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xC9A0D1C4, 0x8C1F3C5C,
+ 0xC9FBE527, 0x8BF4AC05,
+ 0xCA5719DB, 0x8BCA6342,
+ 0xCAB26FA9, 0x8BA0622F,
+ 0xCB0DE658, 0x8B76A8E4,
+ 0xCB697DB0, 0x8B4D377C,
+ 0xCBC53578, 0x8B240E10,
+ 0xCC210D78, 0x8AFB2CBA,
+ 0xCC7D0577, 0x8AD29393,
+ 0xCCD91D3D, 0x8AAA42B4,
+ 0xCD355490, 0x8A823A35,
+ 0xCD91AB38, 0x8A5A7A30,
+ 0xCDEE20FC, 0x8A3302BD,
+ 0xCE4AB5A2, 0x8A0BD3F5,
+ 0xCEA768F2, 0x89E4EDEE,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xCF612AAA, 0x8997FC89,
+ 0xCFBE389F, 0x8971F15A,
+ 0xD01B6459, 0x894C2F4C,
+ 0xD078AD9D, 0x8926B677,
+ 0xD0D61433, 0x890186F1,
+ 0xD13397E1, 0x88DCA0D3,
+ 0xD191386D, 0x88B80431,
+ 0xD1EEF59E, 0x8893B124,
+ 0xD24CCF38, 0x886FA7C2,
+ 0xD2AAC504, 0x884BE820,
+ 0xD308D6C6, 0x88287255,
+ 0xD3670445, 0x88054677,
+ 0xD3C54D46, 0x87E2649B,
+ 0xD423B190, 0x87BFCCD7,
+ 0xD48230E8, 0x879D7F40,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xD53F7FDA, 0x8759C2EF,
+ 0xD59E4EFE, 0x8738545E,
+ 0xD5FD3847, 0x8717304E,
+ 0xD65C3B7B, 0x86F656D3,
+ 0xD6BB585D, 0x86D5C802,
+ 0xD71A8EB5, 0x86B583EE,
+ 0xD779DE46, 0x86958AAB,
+ 0xD7D946D7, 0x8675DC4E,
+ 0xD838C82D, 0x865678EA,
+ 0xD898620C, 0x86376092,
+ 0xD8F81439, 0x86189359,
+ 0xD957DE7A, 0x85FA1152,
+ 0xD9B7C093, 0x85DBDA91,
+ 0xDA17BA4A, 0x85BDEF27,
+ 0xDA77CB62, 0x85A04F28,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xDB3832CD, 0x8565F1B0,
+ 0xDB9888A8, 0x8549345C,
+ 0xDBF8F4F8, 0x852CC2BA,
+ 0xDC597781, 0x85109CDC,
+ 0xDCBA1008, 0x84F4C2D3,
+ 0xDD1ABE51, 0x84D934B0,
+ 0xDD7B8220, 0x84BDF285,
+ 0xDDDC5B3A, 0x84A2FC62,
+ 0xDE3D4963, 0x84885257,
+ 0xDE9E4C60, 0x846DF476,
+ 0xDEFF63F4, 0x8453E2CE,
+ 0xDF608FE3, 0x843A1D70,
+ 0xDFC1CFF2, 0x8420A46B,
+ 0xE02323E5, 0x840777CF,
+ 0xE0848B7F, 0x83EE97AC,
+ 0xE0E60684, 0x83D60411,
+ 0xE14794B9, 0x83BDBD0D,
+ 0xE1A935E1, 0x83A5C2B0,
+ 0xE20AE9C1, 0x838E1507,
+ 0xE26CB01A, 0x8376B422,
+ 0xE2CE88B2, 0x835FA00E,
+ 0xE330734C, 0x8348D8DB,
+ 0xE3926FAC, 0x83325E97,
+ 0xE3F47D95, 0x831C314E,
+ 0xE4569CCB, 0x8306510F,
+ 0xE4B8CD10, 0x82F0BDE8,
+ 0xE51B0E2A, 0x82DB77E5,
+ 0xE57D5FDA, 0x82C67F13,
+ 0xE5DFC1E4, 0x82B1D381,
+ 0xE642340D, 0x829D753A,
+ 0xE6A4B616, 0x8289644A,
+ 0xE70747C3, 0x8275A0C0,
+ 0xE769E8D8, 0x82622AA5,
+ 0xE7CC9917, 0x824F0208,
+ 0xE82F5844, 0x823C26F2,
+ 0xE8922621, 0x82299971,
+ 0xE8F50273, 0x8217598F,
+ 0xE957ECFB, 0x82056758,
+ 0xE9BAE57C, 0x81F3C2D7,
+ 0xEA1DEBBB, 0x81E26C16,
+ 0xEA80FF79, 0x81D16320,
+ 0xEAE4207A, 0x81C0A801,
+ 0xEB474E80, 0x81B03AC1,
+ 0xEBAA894E, 0x81A01B6C,
+ 0xEC0DD0A8, 0x81904A0C,
+ 0xEC71244F, 0x8180C6A9,
+ 0xECD48406, 0x8171914E,
+ 0xED37EF91, 0x8162AA03,
+ 0xED9B66B2, 0x815410D3,
+ 0xEDFEE92B, 0x8145C5C6,
+ 0xEE6276BF, 0x8137C8E6,
+ 0xEEC60F31, 0x812A1A39,
+ 0xEF29B243, 0x811CB9CA,
+ 0xEF8D5FB8, 0x810FA7A0,
+ 0xEFF11752, 0x8102E3C3,
+ 0xF054D8D4, 0x80F66E3C,
+ 0xF0B8A401, 0x80EA4712,
+ 0xF11C789A, 0x80DE6E4C,
+ 0xF1805662, 0x80D2E3F1,
+ 0xF1E43D1C, 0x80C7A80A,
+ 0xF2482C89, 0x80BCBA9C,
+ 0xF2AC246D, 0x80B21BAF,
+ 0xF310248A, 0x80A7CB49,
+ 0xF3742CA1, 0x809DC970,
+ 0xF3D83C76, 0x8094162B,
+ 0xF43C53CA, 0x808AB180,
+ 0xF4A07260, 0x80819B74,
+ 0xF50497FA, 0x8078D40D,
+ 0xF568C45A, 0x80705B50,
+ 0xF5CCF743, 0x80683143,
+ 0xF6313076, 0x806055EA,
+ 0xF6956FB6, 0x8058C94C,
+ 0xF6F9B4C5, 0x80518B6B,
+ 0xF75DFF65, 0x804A9C4D,
+ 0xF7C24F58, 0x8043FBF6,
+ 0xF826A461, 0x803DAA69,
+ 0xF88AFE41, 0x8037A7AC,
+ 0xF8EF5CBB, 0x8031F3C1,
+ 0xF953BF90, 0x802C8EAD,
+ 0xF9B82683, 0x80277872,
+ 0xFA1C9156, 0x8022B113,
+ 0xFA80FFCB, 0x801E3894,
+ 0xFAE571A4, 0x801A0EF7,
+ 0xFB49E6A2, 0x80163440,
+ 0xFBAE5E89, 0x8012A86F,
+ 0xFC12D919, 0x800F6B88,
+ 0xFC775616, 0x800C7D8C,
+ 0xFCDBD541, 0x8009DE7D,
+ 0xFD40565B, 0x80078E5E,
+ 0xFDA4D928, 0x80058D2E,
+ 0xFE095D69, 0x8003DAF0,
+ 0xFE6DE2E0, 0x800277A5,
+ 0xFED2694F, 0x8001634D,
+ 0xFF36F078, 0x80009DE9,
+ 0xFF9B781D, 0x8000277A
+};
+
/**
* \par
* Example code for Q31 Twiddle factors Generation::
@@ -8592,2342 +11777,9411 @@
* round(twiddleCoefQ31(i) * pow(2, 31))
*
*/
-
-const q31_t twiddleCoefQ31[6144] = {
- 0x7fffffff, 0x0, 0x7ffff621, 0x3243f5, 0x7fffd886, 0x6487e3, 0x7fffa72c,
- 0x96cbc1,
- 0x7fff6216, 0xc90f88, 0x7fff0943, 0xfb5330, 0x7ffe9cb2, 0x12d96b1,
- 0x7ffe1c65, 0x15fda03,
- 0x7ffd885a, 0x1921d20, 0x7ffce093, 0x1c45ffe, 0x7ffc250f, 0x1f6a297,
- 0x7ffb55ce, 0x228e4e2,
- 0x7ffa72d1, 0x25b26d7, 0x7ff97c18, 0x28d6870, 0x7ff871a2, 0x2bfa9a4,
- 0x7ff75370, 0x2f1ea6c,
- 0x7ff62182, 0x3242abf, 0x7ff4dbd9, 0x3566a96, 0x7ff38274, 0x388a9ea,
- 0x7ff21553, 0x3bae8b2,
- 0x7ff09478, 0x3ed26e6, 0x7feeffe1, 0x41f6480, 0x7fed5791, 0x451a177,
- 0x7feb9b85, 0x483ddc3,
- 0x7fe9cbc0, 0x4b6195d, 0x7fe7e841, 0x4e8543e, 0x7fe5f108, 0x51a8e5c,
- 0x7fe3e616, 0x54cc7b1,
- 0x7fe1c76b, 0x57f0035, 0x7fdf9508, 0x5b137df, 0x7fdd4eec, 0x5e36ea9,
- 0x7fdaf519, 0x615a48b,
- 0x7fd8878e, 0x647d97c, 0x7fd6064c, 0x67a0d76, 0x7fd37153, 0x6ac406f,
- 0x7fd0c8a3, 0x6de7262,
- 0x7fce0c3e, 0x710a345, 0x7fcb3c23, 0x742d311, 0x7fc85854, 0x77501be,
- 0x7fc560cf, 0x7a72f45,
- 0x7fc25596, 0x7d95b9e, 0x7fbf36aa, 0x80b86c2, 0x7fbc040a, 0x83db0a7,
- 0x7fb8bdb8, 0x86fd947,
- 0x7fb563b3, 0x8a2009a, 0x7fb1f5fc, 0x8d42699, 0x7fae7495, 0x9064b3a,
- 0x7faadf7c, 0x9386e78,
- 0x7fa736b4, 0x96a9049, 0x7fa37a3c, 0x99cb0a7, 0x7f9faa15, 0x9cecf89,
- 0x7f9bc640, 0xa00ece8,
- 0x7f97cebd, 0xa3308bd, 0x7f93c38c, 0xa6522fe, 0x7f8fa4b0, 0xa973ba5,
- 0x7f8b7227, 0xac952aa,
- 0x7f872bf3, 0xafb6805, 0x7f82d214, 0xb2d7baf, 0x7f7e648c, 0xb5f8d9f,
- 0x7f79e35a, 0xb919dcf,
- 0x7f754e80, 0xbc3ac35, 0x7f70a5fe, 0xbf5b8cb, 0x7f6be9d4, 0xc27c389,
- 0x7f671a05, 0xc59cc68,
- 0x7f62368f, 0xc8bd35e, 0x7f5d3f75, 0xcbdd865, 0x7f5834b7, 0xcefdb76,
- 0x7f531655, 0xd21dc87,
- 0x7f4de451, 0xd53db92, 0x7f489eaa, 0xd85d88f, 0x7f434563, 0xdb7d376,
- 0x7f3dd87c, 0xde9cc40,
- 0x7f3857f6, 0xe1bc2e4, 0x7f32c3d1, 0xe4db75b, 0x7f2d1c0e, 0xe7fa99e,
- 0x7f2760af, 0xeb199a4,
- 0x7f2191b4, 0xee38766, 0x7f1baf1e, 0xf1572dc, 0x7f15b8ee, 0xf475bff,
- 0x7f0faf25, 0xf7942c7,
- 0x7f0991c4, 0xfab272b, 0x7f0360cb, 0xfdd0926, 0x7efd1c3c, 0x100ee8ad,
- 0x7ef6c418, 0x1040c5bb,
- 0x7ef05860, 0x1072a048, 0x7ee9d914, 0x10a4784b, 0x7ee34636, 0x10d64dbd,
- 0x7edc9fc6, 0x11082096,
- 0x7ed5e5c6, 0x1139f0cf, 0x7ecf1837, 0x116bbe60, 0x7ec8371a, 0x119d8941,
- 0x7ec14270, 0x11cf516a,
- 0x7eba3a39, 0x120116d5, 0x7eb31e78, 0x1232d979, 0x7eabef2c, 0x1264994e,
- 0x7ea4ac58, 0x1296564d,
- 0x7e9d55fc, 0x12c8106f, 0x7e95ec1a, 0x12f9c7aa, 0x7e8e6eb2, 0x132b7bf9,
- 0x7e86ddc6, 0x135d2d53,
- 0x7e7f3957, 0x138edbb1, 0x7e778166, 0x13c0870a, 0x7e6fb5f4, 0x13f22f58,
- 0x7e67d703, 0x1423d492,
- 0x7e5fe493, 0x145576b1, 0x7e57dea7, 0x148715ae, 0x7e4fc53e, 0x14b8b17f,
- 0x7e47985b, 0x14ea4a1f,
- 0x7e3f57ff, 0x151bdf86, 0x7e37042a, 0x154d71aa, 0x7e2e9cdf, 0x157f0086,
- 0x7e26221f, 0x15b08c12,
- 0x7e1d93ea, 0x15e21445, 0x7e14f242, 0x16139918, 0x7e0c3d29, 0x16451a83,
- 0x7e0374a0, 0x1676987f,
- 0x7dfa98a8, 0x16a81305, 0x7df1a942, 0x16d98a0c, 0x7de8a670, 0x170afd8d,
- 0x7ddf9034, 0x173c6d80,
- 0x7dd6668f, 0x176dd9de, 0x7dcd2981, 0x179f429f, 0x7dc3d90d, 0x17d0a7bc,
- 0x7dba7534, 0x1802092c,
- 0x7db0fdf8, 0x183366e9, 0x7da77359, 0x1864c0ea, 0x7d9dd55a, 0x18961728,
- 0x7d9423fc, 0x18c7699b,
- 0x7d8a5f40, 0x18f8b83c, 0x7d808728, 0x192a0304, 0x7d769bb5, 0x195b49ea,
- 0x7d6c9ce9, 0x198c8ce7,
- 0x7d628ac6, 0x19bdcbf3, 0x7d58654d, 0x19ef0707, 0x7d4e2c7f, 0x1a203e1b,
- 0x7d43e05e, 0x1a517128,
- 0x7d3980ec, 0x1a82a026, 0x7d2f0e2b, 0x1ab3cb0d, 0x7d24881b, 0x1ae4f1d6,
- 0x7d19eebf, 0x1b161479,
- 0x7d0f4218, 0x1b4732ef, 0x7d048228, 0x1b784d30, 0x7cf9aef0, 0x1ba96335,
- 0x7ceec873, 0x1bda74f6,
- 0x7ce3ceb2, 0x1c0b826a, 0x7cd8c1ae, 0x1c3c8b8c, 0x7ccda169, 0x1c6d9053,
- 0x7cc26de5, 0x1c9e90b8,
- 0x7cb72724, 0x1ccf8cb3, 0x7cabcd28, 0x1d00843d, 0x7ca05ff1, 0x1d31774d,
- 0x7c94df83, 0x1d6265dd,
- 0x7c894bde, 0x1d934fe5, 0x7c7da505, 0x1dc4355e, 0x7c71eaf9, 0x1df5163f,
- 0x7c661dbc, 0x1e25f282,
- 0x7c5a3d50, 0x1e56ca1e, 0x7c4e49b7, 0x1e879d0d, 0x7c4242f2, 0x1eb86b46,
- 0x7c362904, 0x1ee934c3,
- 0x7c29fbee, 0x1f19f97b, 0x7c1dbbb3, 0x1f4ab968, 0x7c116853, 0x1f7b7481,
- 0x7c0501d2, 0x1fac2abf,
- 0x7bf88830, 0x1fdcdc1b, 0x7bebfb70, 0x200d888d, 0x7bdf5b94, 0x203e300d,
- 0x7bd2a89e, 0x206ed295,
- 0x7bc5e290, 0x209f701c, 0x7bb9096b, 0x20d0089c, 0x7bac1d31, 0x21009c0c,
- 0x7b9f1de6, 0x21312a65,
- 0x7b920b89, 0x2161b3a0, 0x7b84e61f, 0x219237b5, 0x7b77ada8, 0x21c2b69c,
- 0x7b6a6227, 0x21f3304f,
- 0x7b5d039e, 0x2223a4c5, 0x7b4f920e, 0x225413f8, 0x7b420d7a, 0x22847de0,
- 0x7b3475e5, 0x22b4e274,
- 0x7b26cb4f, 0x22e541af, 0x7b190dbc, 0x23159b88, 0x7b0b3d2c, 0x2345eff8,
- 0x7afd59a4, 0x23763ef7,
- 0x7aef6323, 0x23a6887f, 0x7ae159ae, 0x23d6cc87, 0x7ad33d45, 0x24070b08,
- 0x7ac50dec, 0x243743fa,
- 0x7ab6cba4, 0x24677758, 0x7aa8766f, 0x2497a517, 0x7a9a0e50, 0x24c7cd33,
- 0x7a8b9348, 0x24f7efa2,
- 0x7a7d055b, 0x25280c5e, 0x7a6e648a, 0x2558235f, 0x7a5fb0d8, 0x2588349d,
- 0x7a50ea47, 0x25b84012,
- 0x7a4210d8, 0x25e845b6, 0x7a332490, 0x26184581, 0x7a24256f, 0x26483f6c,
- 0x7a151378, 0x26783370,
- 0x7a05eead, 0x26a82186, 0x79f6b711, 0x26d809a5, 0x79e76ca7, 0x2707ebc7,
- 0x79d80f6f, 0x2737c7e3,
- 0x79c89f6e, 0x27679df4, 0x79b91ca4, 0x27976df1, 0x79a98715, 0x27c737d3,
- 0x7999dec4, 0x27f6fb92,
- 0x798a23b1, 0x2826b928, 0x797a55e0, 0x2856708d, 0x796a7554, 0x288621b9,
- 0x795a820e, 0x28b5cca5,
- 0x794a7c12, 0x28e5714b, 0x793a6361, 0x29150fa1, 0x792a37fe, 0x2944a7a2,
- 0x7919f9ec, 0x29743946,
- 0x7909a92d, 0x29a3c485, 0x78f945c3, 0x29d34958, 0x78e8cfb2, 0x2a02c7b8,
- 0x78d846fb, 0x2a323f9e,
- 0x78c7aba2, 0x2a61b101, 0x78b6fda8, 0x2a911bdc, 0x78a63d11, 0x2ac08026,
- 0x789569df, 0x2aefddd8,
- 0x78848414, 0x2b1f34eb, 0x78738bb3, 0x2b4e8558, 0x786280bf, 0x2b7dcf17,
- 0x7851633b, 0x2bad1221,
- 0x78403329, 0x2bdc4e6f, 0x782ef08b, 0x2c0b83fa, 0x781d9b65, 0x2c3ab2b9,
- 0x780c33b8, 0x2c69daa6,
- 0x77fab989, 0x2c98fbba, 0x77e92cd9, 0x2cc815ee, 0x77d78daa, 0x2cf72939,
- 0x77c5dc01, 0x2d263596,
- 0x77b417df, 0x2d553afc, 0x77a24148, 0x2d843964, 0x7790583e, 0x2db330c7,
- 0x777e5cc3, 0x2de2211e,
- 0x776c4edb, 0x2e110a62, 0x775a2e89, 0x2e3fec8b, 0x7747fbce, 0x2e6ec792,
- 0x7735b6af, 0x2e9d9b70,
- 0x77235f2d, 0x2ecc681e, 0x7710f54c, 0x2efb2d95, 0x76fe790e, 0x2f29ebcc,
- 0x76ebea77, 0x2f58a2be,
- 0x76d94989, 0x2f875262, 0x76c69647, 0x2fb5fab2, 0x76b3d0b4, 0x2fe49ba7,
- 0x76a0f8d2, 0x30133539,
- 0x768e0ea6, 0x3041c761, 0x767b1231, 0x30705217, 0x76680376, 0x309ed556,
- 0x7654e279, 0x30cd5115,
- 0x7641af3d, 0x30fbc54d, 0x762e69c4, 0x312a31f8, 0x761b1211, 0x3158970e,
- 0x7607a828, 0x3186f487,
- 0x75f42c0b, 0x31b54a5e, 0x75e09dbd, 0x31e39889, 0x75ccfd42, 0x3211df04,
- 0x75b94a9c, 0x32401dc6,
- 0x75a585cf, 0x326e54c7, 0x7591aedd, 0x329c8402, 0x757dc5ca, 0x32caab6f,
- 0x7569ca99, 0x32f8cb07,
- 0x7555bd4c, 0x3326e2c3, 0x75419de7, 0x3354f29b, 0x752d6c6c, 0x3382fa88,
- 0x751928e0, 0x33b0fa84,
- 0x7504d345, 0x33def287, 0x74f06b9e, 0x340ce28b, 0x74dbf1ef, 0x343aca87,
- 0x74c7663a, 0x3468aa76,
- 0x74b2c884, 0x34968250, 0x749e18cd, 0x34c4520d, 0x7489571c, 0x34f219a8,
- 0x74748371, 0x351fd918,
- 0x745f9dd1, 0x354d9057, 0x744aa63f, 0x357b3f5d, 0x74359cbd, 0x35a8e625,
- 0x74208150, 0x35d684a6,
- 0x740b53fb, 0x36041ad9, 0x73f614c0, 0x3631a8b8, 0x73e0c3a3, 0x365f2e3b,
- 0x73cb60a8, 0x368cab5c,
- 0x73b5ebd1, 0x36ba2014, 0x73a06522, 0x36e78c5b, 0x738acc9e, 0x3714f02a,
- 0x73752249, 0x37424b7b,
- 0x735f6626, 0x376f9e46, 0x73499838, 0x379ce885, 0x7333b883, 0x37ca2a30,
- 0x731dc70a, 0x37f76341,
- 0x7307c3d0, 0x382493b0, 0x72f1aed9, 0x3851bb77, 0x72db8828, 0x387eda8e,
- 0x72c54fc1, 0x38abf0ef,
- 0x72af05a7, 0x38d8fe93, 0x7298a9dd, 0x39060373, 0x72823c67, 0x3932ff87,
- 0x726bbd48, 0x395ff2c9,
- 0x72552c85, 0x398cdd32, 0x723e8a20, 0x39b9bebc, 0x7227d61c, 0x39e6975e,
- 0x7211107e, 0x3a136712,
- 0x71fa3949, 0x3a402dd2, 0x71e35080, 0x3a6ceb96, 0x71cc5626, 0x3a99a057,
- 0x71b54a41, 0x3ac64c0f,
- 0x719e2cd2, 0x3af2eeb7, 0x7186fdde, 0x3b1f8848, 0x716fbd68, 0x3b4c18ba,
- 0x71586b74, 0x3b78a007,
- 0x71410805, 0x3ba51e29, 0x7129931f, 0x3bd19318, 0x71120cc5, 0x3bfdfecd,
- 0x70fa74fc, 0x3c2a6142,
- 0x70e2cbc6, 0x3c56ba70, 0x70cb1128, 0x3c830a50, 0x70b34525, 0x3caf50da,
- 0x709b67c0, 0x3cdb8e09,
- 0x708378ff, 0x3d07c1d6, 0x706b78e3, 0x3d33ec39, 0x70536771, 0x3d600d2c,
- 0x703b44ad, 0x3d8c24a8,
- 0x7023109a, 0x3db832a6, 0x700acb3c, 0x3de4371f, 0x6ff27497, 0x3e10320d,
- 0x6fda0cae, 0x3e3c2369,
- 0x6fc19385, 0x3e680b2c, 0x6fa90921, 0x3e93e950, 0x6f906d84, 0x3ebfbdcd,
- 0x6f77c0b3, 0x3eeb889c,
- 0x6f5f02b2, 0x3f1749b8, 0x6f463383, 0x3f430119, 0x6f2d532c, 0x3f6eaeb8,
- 0x6f1461b0, 0x3f9a5290,
- 0x6efb5f12, 0x3fc5ec98, 0x6ee24b57, 0x3ff17cca, 0x6ec92683, 0x401d0321,
- 0x6eaff099, 0x40487f94,
- 0x6e96a99d, 0x4073f21d, 0x6e7d5193, 0x409f5ab6, 0x6e63e87f, 0x40cab958,
- 0x6e4a6e66, 0x40f60dfb,
- 0x6e30e34a, 0x4121589b, 0x6e174730, 0x414c992f, 0x6dfd9a1c, 0x4177cfb1,
- 0x6de3dc11, 0x41a2fc1a,
- 0x6dca0d14, 0x41ce1e65, 0x6db02d29, 0x41f93689, 0x6d963c54, 0x42244481,
- 0x6d7c3a98, 0x424f4845,
- 0x6d6227fa, 0x427a41d0, 0x6d48047e, 0x42a5311b, 0x6d2dd027, 0x42d0161e,
- 0x6d138afb, 0x42faf0d4,
- 0x6cf934fc, 0x4325c135, 0x6cdece2f, 0x4350873c, 0x6cc45698, 0x437b42e1,
- 0x6ca9ce3b, 0x43a5f41e,
- 0x6c8f351c, 0x43d09aed, 0x6c748b3f, 0x43fb3746, 0x6c59d0a9, 0x4425c923,
- 0x6c3f055d, 0x4450507e,
- 0x6c242960, 0x447acd50, 0x6c093cb6, 0x44a53f93, 0x6bee3f62, 0x44cfa740,
- 0x6bd3316a, 0x44fa0450,
- 0x6bb812d1, 0x452456bd, 0x6b9ce39b, 0x454e9e80, 0x6b81a3cd, 0x4578db93,
- 0x6b66536b, 0x45a30df0,
- 0x6b4af279, 0x45cd358f, 0x6b2f80fb, 0x45f7526b, 0x6b13fef5, 0x4621647d,
- 0x6af86c6c, 0x464b6bbe,
- 0x6adcc964, 0x46756828, 0x6ac115e2, 0x469f59b4, 0x6aa551e9, 0x46c9405c,
- 0x6a897d7d, 0x46f31c1a,
- 0x6a6d98a4, 0x471cece7, 0x6a51a361, 0x4746b2bc, 0x6a359db9, 0x47706d93,
- 0x6a1987b0, 0x479a1d67,
- 0x69fd614a, 0x47c3c22f, 0x69e12a8c, 0x47ed5be6, 0x69c4e37a, 0x4816ea86,
- 0x69a88c19, 0x48406e08,
- 0x698c246c, 0x4869e665, 0x696fac78, 0x48935397, 0x69532442, 0x48bcb599,
- 0x69368bce, 0x48e60c62,
- 0x6919e320, 0x490f57ee, 0x68fd2a3d, 0x49389836, 0x68e06129, 0x4961cd33,
- 0x68c387e9, 0x498af6df,
- 0x68a69e81, 0x49b41533, 0x6889a4f6, 0x49dd282a, 0x686c9b4b, 0x4a062fbd,
- 0x684f8186, 0x4a2f2be6,
- 0x683257ab, 0x4a581c9e, 0x68151dbe, 0x4a8101de, 0x67f7d3c5, 0x4aa9dba2,
- 0x67da79c3, 0x4ad2a9e2,
- 0x67bd0fbd, 0x4afb6c98, 0x679f95b7, 0x4b2423be, 0x67820bb7, 0x4b4ccf4d,
- 0x676471c0, 0x4b756f40,
- 0x6746c7d8, 0x4b9e0390, 0x67290e02, 0x4bc68c36, 0x670b4444, 0x4bef092d,
- 0x66ed6aa1, 0x4c177a6e,
- 0x66cf8120, 0x4c3fdff4, 0x66b187c3, 0x4c6839b7, 0x66937e91, 0x4c9087b1,
- 0x6675658c, 0x4cb8c9dd,
- 0x66573cbb, 0x4ce10034, 0x66390422, 0x4d092ab0, 0x661abbc5, 0x4d31494b,
- 0x65fc63a9, 0x4d595bfe,
- 0x65ddfbd3, 0x4d8162c4, 0x65bf8447, 0x4da95d96, 0x65a0fd0b, 0x4dd14c6e,
- 0x65826622, 0x4df92f46,
- 0x6563bf92, 0x4e210617, 0x6545095f, 0x4e48d0dd, 0x6526438f, 0x4e708f8f,
- 0x65076e25, 0x4e984229,
- 0x64e88926, 0x4ebfe8a5, 0x64c99498, 0x4ee782fb, 0x64aa907f, 0x4f0f1126,
- 0x648b7ce0, 0x4f369320,
- 0x646c59bf, 0x4f5e08e3, 0x644d2722, 0x4f857269, 0x642de50d, 0x4faccfab,
- 0x640e9386, 0x4fd420a4,
- 0x63ef3290, 0x4ffb654d, 0x63cfc231, 0x50229da1, 0x63b0426d, 0x5049c999,
- 0x6390b34a, 0x5070e92f,
- 0x637114cc, 0x5097fc5e, 0x635166f9, 0x50bf031f, 0x6331a9d4, 0x50e5fd6d,
- 0x6311dd64, 0x510ceb40,
- 0x62f201ac, 0x5133cc94, 0x62d216b3, 0x515aa162, 0x62b21c7b, 0x518169a5,
- 0x6292130c, 0x51a82555,
- 0x6271fa69, 0x51ced46e, 0x6251d298, 0x51f576ea, 0x62319b9d, 0x521c0cc2,
- 0x6211557e, 0x524295f0,
- 0x61f1003f, 0x5269126e, 0x61d09be5, 0x528f8238, 0x61b02876, 0x52b5e546,
- 0x618fa5f7, 0x52dc3b92,
- 0x616f146c, 0x53028518, 0x614e73da, 0x5328c1d0, 0x612dc447, 0x534ef1b5,
- 0x610d05b7, 0x537514c2,
- 0x60ec3830, 0x539b2af0, 0x60cb5bb7, 0x53c13439, 0x60aa7050, 0x53e73097,
- 0x60897601, 0x540d2005,
- 0x60686ccf, 0x5433027d, 0x604754bf, 0x5458d7f9, 0x60262dd6, 0x547ea073,
- 0x6004f819, 0x54a45be6,
- 0x5fe3b38d, 0x54ca0a4b, 0x5fc26038, 0x54efab9c, 0x5fa0fe1f, 0x55153fd4,
- 0x5f7f8d46, 0x553ac6ee,
- 0x5f5e0db3, 0x556040e2, 0x5f3c7f6b, 0x5585adad, 0x5f1ae274, 0x55ab0d46,
- 0x5ef936d1, 0x55d05faa,
- 0x5ed77c8a, 0x55f5a4d2, 0x5eb5b3a2, 0x561adcb9, 0x5e93dc1f, 0x56400758,
- 0x5e71f606, 0x566524aa,
- 0x5e50015d, 0x568a34a9, 0x5e2dfe29, 0x56af3750, 0x5e0bec6e, 0x56d42c99,
- 0x5de9cc33, 0x56f9147e,
- 0x5dc79d7c, 0x571deefa, 0x5da5604f, 0x5742bc06, 0x5d8314b1, 0x57677b9d,
- 0x5d60baa7, 0x578c2dba,
- 0x5d3e5237, 0x57b0d256, 0x5d1bdb65, 0x57d5696d, 0x5cf95638, 0x57f9f2f8,
- 0x5cd6c2b5, 0x581e6ef1,
- 0x5cb420e0, 0x5842dd54, 0x5c9170bf, 0x58673e1b, 0x5c6eb258, 0x588b9140,
- 0x5c4be5b0, 0x58afd6bd,
- 0x5c290acc, 0x58d40e8c, 0x5c0621b2, 0x58f838a9, 0x5be32a67, 0x591c550e,
- 0x5bc024f0, 0x594063b5,
- 0x5b9d1154, 0x59646498, 0x5b79ef96, 0x598857b2, 0x5b56bfbd, 0x59ac3cfd,
- 0x5b3381ce, 0x59d01475,
- 0x5b1035cf, 0x59f3de12, 0x5aecdbc5, 0x5a1799d1, 0x5ac973b5, 0x5a3b47ab,
- 0x5aa5fda5, 0x5a5ee79a,
- 0x5a82799a, 0x5a82799a, 0x5a5ee79a, 0x5aa5fda5, 0x5a3b47ab, 0x5ac973b5,
- 0x5a1799d1, 0x5aecdbc5,
- 0x59f3de12, 0x5b1035cf, 0x59d01475, 0x5b3381ce, 0x59ac3cfd, 0x5b56bfbd,
- 0x598857b2, 0x5b79ef96,
- 0x59646498, 0x5b9d1154, 0x594063b5, 0x5bc024f0, 0x591c550e, 0x5be32a67,
- 0x58f838a9, 0x5c0621b2,
- 0x58d40e8c, 0x5c290acc, 0x58afd6bd, 0x5c4be5b0, 0x588b9140, 0x5c6eb258,
- 0x58673e1b, 0x5c9170bf,
- 0x5842dd54, 0x5cb420e0, 0x581e6ef1, 0x5cd6c2b5, 0x57f9f2f8, 0x5cf95638,
- 0x57d5696d, 0x5d1bdb65,
- 0x57b0d256, 0x5d3e5237, 0x578c2dba, 0x5d60baa7, 0x57677b9d, 0x5d8314b1,
- 0x5742bc06, 0x5da5604f,
- 0x571deefa, 0x5dc79d7c, 0x56f9147e, 0x5de9cc33, 0x56d42c99, 0x5e0bec6e,
- 0x56af3750, 0x5e2dfe29,
- 0x568a34a9, 0x5e50015d, 0x566524aa, 0x5e71f606, 0x56400758, 0x5e93dc1f,
- 0x561adcb9, 0x5eb5b3a2,
- 0x55f5a4d2, 0x5ed77c8a, 0x55d05faa, 0x5ef936d1, 0x55ab0d46, 0x5f1ae274,
- 0x5585adad, 0x5f3c7f6b,
- 0x556040e2, 0x5f5e0db3, 0x553ac6ee, 0x5f7f8d46, 0x55153fd4, 0x5fa0fe1f,
- 0x54efab9c, 0x5fc26038,
- 0x54ca0a4b, 0x5fe3b38d, 0x54a45be6, 0x6004f819, 0x547ea073, 0x60262dd6,
- 0x5458d7f9, 0x604754bf,
- 0x5433027d, 0x60686ccf, 0x540d2005, 0x60897601, 0x53e73097, 0x60aa7050,
- 0x53c13439, 0x60cb5bb7,
- 0x539b2af0, 0x60ec3830, 0x537514c2, 0x610d05b7, 0x534ef1b5, 0x612dc447,
- 0x5328c1d0, 0x614e73da,
- 0x53028518, 0x616f146c, 0x52dc3b92, 0x618fa5f7, 0x52b5e546, 0x61b02876,
- 0x528f8238, 0x61d09be5,
- 0x5269126e, 0x61f1003f, 0x524295f0, 0x6211557e, 0x521c0cc2, 0x62319b9d,
- 0x51f576ea, 0x6251d298,
- 0x51ced46e, 0x6271fa69, 0x51a82555, 0x6292130c, 0x518169a5, 0x62b21c7b,
- 0x515aa162, 0x62d216b3,
- 0x5133cc94, 0x62f201ac, 0x510ceb40, 0x6311dd64, 0x50e5fd6d, 0x6331a9d4,
- 0x50bf031f, 0x635166f9,
- 0x5097fc5e, 0x637114cc, 0x5070e92f, 0x6390b34a, 0x5049c999, 0x63b0426d,
- 0x50229da1, 0x63cfc231,
- 0x4ffb654d, 0x63ef3290, 0x4fd420a4, 0x640e9386, 0x4faccfab, 0x642de50d,
- 0x4f857269, 0x644d2722,
- 0x4f5e08e3, 0x646c59bf, 0x4f369320, 0x648b7ce0, 0x4f0f1126, 0x64aa907f,
- 0x4ee782fb, 0x64c99498,
- 0x4ebfe8a5, 0x64e88926, 0x4e984229, 0x65076e25, 0x4e708f8f, 0x6526438f,
- 0x4e48d0dd, 0x6545095f,
- 0x4e210617, 0x6563bf92, 0x4df92f46, 0x65826622, 0x4dd14c6e, 0x65a0fd0b,
- 0x4da95d96, 0x65bf8447,
- 0x4d8162c4, 0x65ddfbd3, 0x4d595bfe, 0x65fc63a9, 0x4d31494b, 0x661abbc5,
- 0x4d092ab0, 0x66390422,
- 0x4ce10034, 0x66573cbb, 0x4cb8c9dd, 0x6675658c, 0x4c9087b1, 0x66937e91,
- 0x4c6839b7, 0x66b187c3,
- 0x4c3fdff4, 0x66cf8120, 0x4c177a6e, 0x66ed6aa1, 0x4bef092d, 0x670b4444,
- 0x4bc68c36, 0x67290e02,
- 0x4b9e0390, 0x6746c7d8, 0x4b756f40, 0x676471c0, 0x4b4ccf4d, 0x67820bb7,
- 0x4b2423be, 0x679f95b7,
- 0x4afb6c98, 0x67bd0fbd, 0x4ad2a9e2, 0x67da79c3, 0x4aa9dba2, 0x67f7d3c5,
- 0x4a8101de, 0x68151dbe,
- 0x4a581c9e, 0x683257ab, 0x4a2f2be6, 0x684f8186, 0x4a062fbd, 0x686c9b4b,
- 0x49dd282a, 0x6889a4f6,
- 0x49b41533, 0x68a69e81, 0x498af6df, 0x68c387e9, 0x4961cd33, 0x68e06129,
- 0x49389836, 0x68fd2a3d,
- 0x490f57ee, 0x6919e320, 0x48e60c62, 0x69368bce, 0x48bcb599, 0x69532442,
- 0x48935397, 0x696fac78,
- 0x4869e665, 0x698c246c, 0x48406e08, 0x69a88c19, 0x4816ea86, 0x69c4e37a,
- 0x47ed5be6, 0x69e12a8c,
- 0x47c3c22f, 0x69fd614a, 0x479a1d67, 0x6a1987b0, 0x47706d93, 0x6a359db9,
- 0x4746b2bc, 0x6a51a361,
- 0x471cece7, 0x6a6d98a4, 0x46f31c1a, 0x6a897d7d, 0x46c9405c, 0x6aa551e9,
- 0x469f59b4, 0x6ac115e2,
- 0x46756828, 0x6adcc964, 0x464b6bbe, 0x6af86c6c, 0x4621647d, 0x6b13fef5,
- 0x45f7526b, 0x6b2f80fb,
- 0x45cd358f, 0x6b4af279, 0x45a30df0, 0x6b66536b, 0x4578db93, 0x6b81a3cd,
- 0x454e9e80, 0x6b9ce39b,
- 0x452456bd, 0x6bb812d1, 0x44fa0450, 0x6bd3316a, 0x44cfa740, 0x6bee3f62,
- 0x44a53f93, 0x6c093cb6,
- 0x447acd50, 0x6c242960, 0x4450507e, 0x6c3f055d, 0x4425c923, 0x6c59d0a9,
- 0x43fb3746, 0x6c748b3f,
- 0x43d09aed, 0x6c8f351c, 0x43a5f41e, 0x6ca9ce3b, 0x437b42e1, 0x6cc45698,
- 0x4350873c, 0x6cdece2f,
- 0x4325c135, 0x6cf934fc, 0x42faf0d4, 0x6d138afb, 0x42d0161e, 0x6d2dd027,
- 0x42a5311b, 0x6d48047e,
- 0x427a41d0, 0x6d6227fa, 0x424f4845, 0x6d7c3a98, 0x42244481, 0x6d963c54,
- 0x41f93689, 0x6db02d29,
- 0x41ce1e65, 0x6dca0d14, 0x41a2fc1a, 0x6de3dc11, 0x4177cfb1, 0x6dfd9a1c,
- 0x414c992f, 0x6e174730,
- 0x4121589b, 0x6e30e34a, 0x40f60dfb, 0x6e4a6e66, 0x40cab958, 0x6e63e87f,
- 0x409f5ab6, 0x6e7d5193,
- 0x4073f21d, 0x6e96a99d, 0x40487f94, 0x6eaff099, 0x401d0321, 0x6ec92683,
- 0x3ff17cca, 0x6ee24b57,
- 0x3fc5ec98, 0x6efb5f12, 0x3f9a5290, 0x6f1461b0, 0x3f6eaeb8, 0x6f2d532c,
- 0x3f430119, 0x6f463383,
- 0x3f1749b8, 0x6f5f02b2, 0x3eeb889c, 0x6f77c0b3, 0x3ebfbdcd, 0x6f906d84,
- 0x3e93e950, 0x6fa90921,
- 0x3e680b2c, 0x6fc19385, 0x3e3c2369, 0x6fda0cae, 0x3e10320d, 0x6ff27497,
- 0x3de4371f, 0x700acb3c,
- 0x3db832a6, 0x7023109a, 0x3d8c24a8, 0x703b44ad, 0x3d600d2c, 0x70536771,
- 0x3d33ec39, 0x706b78e3,
- 0x3d07c1d6, 0x708378ff, 0x3cdb8e09, 0x709b67c0, 0x3caf50da, 0x70b34525,
- 0x3c830a50, 0x70cb1128,
- 0x3c56ba70, 0x70e2cbc6, 0x3c2a6142, 0x70fa74fc, 0x3bfdfecd, 0x71120cc5,
- 0x3bd19318, 0x7129931f,
- 0x3ba51e29, 0x71410805, 0x3b78a007, 0x71586b74, 0x3b4c18ba, 0x716fbd68,
- 0x3b1f8848, 0x7186fdde,
- 0x3af2eeb7, 0x719e2cd2, 0x3ac64c0f, 0x71b54a41, 0x3a99a057, 0x71cc5626,
- 0x3a6ceb96, 0x71e35080,
- 0x3a402dd2, 0x71fa3949, 0x3a136712, 0x7211107e, 0x39e6975e, 0x7227d61c,
- 0x39b9bebc, 0x723e8a20,
- 0x398cdd32, 0x72552c85, 0x395ff2c9, 0x726bbd48, 0x3932ff87, 0x72823c67,
- 0x39060373, 0x7298a9dd,
- 0x38d8fe93, 0x72af05a7, 0x38abf0ef, 0x72c54fc1, 0x387eda8e, 0x72db8828,
- 0x3851bb77, 0x72f1aed9,
- 0x382493b0, 0x7307c3d0, 0x37f76341, 0x731dc70a, 0x37ca2a30, 0x7333b883,
- 0x379ce885, 0x73499838,
- 0x376f9e46, 0x735f6626, 0x37424b7b, 0x73752249, 0x3714f02a, 0x738acc9e,
- 0x36e78c5b, 0x73a06522,
- 0x36ba2014, 0x73b5ebd1, 0x368cab5c, 0x73cb60a8, 0x365f2e3b, 0x73e0c3a3,
- 0x3631a8b8, 0x73f614c0,
- 0x36041ad9, 0x740b53fb, 0x35d684a6, 0x74208150, 0x35a8e625, 0x74359cbd,
- 0x357b3f5d, 0x744aa63f,
- 0x354d9057, 0x745f9dd1, 0x351fd918, 0x74748371, 0x34f219a8, 0x7489571c,
- 0x34c4520d, 0x749e18cd,
- 0x34968250, 0x74b2c884, 0x3468aa76, 0x74c7663a, 0x343aca87, 0x74dbf1ef,
- 0x340ce28b, 0x74f06b9e,
- 0x33def287, 0x7504d345, 0x33b0fa84, 0x751928e0, 0x3382fa88, 0x752d6c6c,
- 0x3354f29b, 0x75419de7,
- 0x3326e2c3, 0x7555bd4c, 0x32f8cb07, 0x7569ca99, 0x32caab6f, 0x757dc5ca,
- 0x329c8402, 0x7591aedd,
- 0x326e54c7, 0x75a585cf, 0x32401dc6, 0x75b94a9c, 0x3211df04, 0x75ccfd42,
- 0x31e39889, 0x75e09dbd,
- 0x31b54a5e, 0x75f42c0b, 0x3186f487, 0x7607a828, 0x3158970e, 0x761b1211,
- 0x312a31f8, 0x762e69c4,
- 0x30fbc54d, 0x7641af3d, 0x30cd5115, 0x7654e279, 0x309ed556, 0x76680376,
- 0x30705217, 0x767b1231,
- 0x3041c761, 0x768e0ea6, 0x30133539, 0x76a0f8d2, 0x2fe49ba7, 0x76b3d0b4,
- 0x2fb5fab2, 0x76c69647,
- 0x2f875262, 0x76d94989, 0x2f58a2be, 0x76ebea77, 0x2f29ebcc, 0x76fe790e,
- 0x2efb2d95, 0x7710f54c,
- 0x2ecc681e, 0x77235f2d, 0x2e9d9b70, 0x7735b6af, 0x2e6ec792, 0x7747fbce,
- 0x2e3fec8b, 0x775a2e89,
- 0x2e110a62, 0x776c4edb, 0x2de2211e, 0x777e5cc3, 0x2db330c7, 0x7790583e,
- 0x2d843964, 0x77a24148,
- 0x2d553afc, 0x77b417df, 0x2d263596, 0x77c5dc01, 0x2cf72939, 0x77d78daa,
- 0x2cc815ee, 0x77e92cd9,
- 0x2c98fbba, 0x77fab989, 0x2c69daa6, 0x780c33b8, 0x2c3ab2b9, 0x781d9b65,
- 0x2c0b83fa, 0x782ef08b,
- 0x2bdc4e6f, 0x78403329, 0x2bad1221, 0x7851633b, 0x2b7dcf17, 0x786280bf,
- 0x2b4e8558, 0x78738bb3,
- 0x2b1f34eb, 0x78848414, 0x2aefddd8, 0x789569df, 0x2ac08026, 0x78a63d11,
- 0x2a911bdc, 0x78b6fda8,
- 0x2a61b101, 0x78c7aba2, 0x2a323f9e, 0x78d846fb, 0x2a02c7b8, 0x78e8cfb2,
- 0x29d34958, 0x78f945c3,
- 0x29a3c485, 0x7909a92d, 0x29743946, 0x7919f9ec, 0x2944a7a2, 0x792a37fe,
- 0x29150fa1, 0x793a6361,
- 0x28e5714b, 0x794a7c12, 0x28b5cca5, 0x795a820e, 0x288621b9, 0x796a7554,
- 0x2856708d, 0x797a55e0,
- 0x2826b928, 0x798a23b1, 0x27f6fb92, 0x7999dec4, 0x27c737d3, 0x79a98715,
- 0x27976df1, 0x79b91ca4,
- 0x27679df4, 0x79c89f6e, 0x2737c7e3, 0x79d80f6f, 0x2707ebc7, 0x79e76ca7,
- 0x26d809a5, 0x79f6b711,
- 0x26a82186, 0x7a05eead, 0x26783370, 0x7a151378, 0x26483f6c, 0x7a24256f,
- 0x26184581, 0x7a332490,
- 0x25e845b6, 0x7a4210d8, 0x25b84012, 0x7a50ea47, 0x2588349d, 0x7a5fb0d8,
- 0x2558235f, 0x7a6e648a,
- 0x25280c5e, 0x7a7d055b, 0x24f7efa2, 0x7a8b9348, 0x24c7cd33, 0x7a9a0e50,
- 0x2497a517, 0x7aa8766f,
- 0x24677758, 0x7ab6cba4, 0x243743fa, 0x7ac50dec, 0x24070b08, 0x7ad33d45,
- 0x23d6cc87, 0x7ae159ae,
- 0x23a6887f, 0x7aef6323, 0x23763ef7, 0x7afd59a4, 0x2345eff8, 0x7b0b3d2c,
- 0x23159b88, 0x7b190dbc,
- 0x22e541af, 0x7b26cb4f, 0x22b4e274, 0x7b3475e5, 0x22847de0, 0x7b420d7a,
- 0x225413f8, 0x7b4f920e,
- 0x2223a4c5, 0x7b5d039e, 0x21f3304f, 0x7b6a6227, 0x21c2b69c, 0x7b77ada8,
- 0x219237b5, 0x7b84e61f,
- 0x2161b3a0, 0x7b920b89, 0x21312a65, 0x7b9f1de6, 0x21009c0c, 0x7bac1d31,
- 0x20d0089c, 0x7bb9096b,
- 0x209f701c, 0x7bc5e290, 0x206ed295, 0x7bd2a89e, 0x203e300d, 0x7bdf5b94,
- 0x200d888d, 0x7bebfb70,
- 0x1fdcdc1b, 0x7bf88830, 0x1fac2abf, 0x7c0501d2, 0x1f7b7481, 0x7c116853,
- 0x1f4ab968, 0x7c1dbbb3,
- 0x1f19f97b, 0x7c29fbee, 0x1ee934c3, 0x7c362904, 0x1eb86b46, 0x7c4242f2,
- 0x1e879d0d, 0x7c4e49b7,
- 0x1e56ca1e, 0x7c5a3d50, 0x1e25f282, 0x7c661dbc, 0x1df5163f, 0x7c71eaf9,
- 0x1dc4355e, 0x7c7da505,
- 0x1d934fe5, 0x7c894bde, 0x1d6265dd, 0x7c94df83, 0x1d31774d, 0x7ca05ff1,
- 0x1d00843d, 0x7cabcd28,
- 0x1ccf8cb3, 0x7cb72724, 0x1c9e90b8, 0x7cc26de5, 0x1c6d9053, 0x7ccda169,
- 0x1c3c8b8c, 0x7cd8c1ae,
- 0x1c0b826a, 0x7ce3ceb2, 0x1bda74f6, 0x7ceec873, 0x1ba96335, 0x7cf9aef0,
- 0x1b784d30, 0x7d048228,
- 0x1b4732ef, 0x7d0f4218, 0x1b161479, 0x7d19eebf, 0x1ae4f1d6, 0x7d24881b,
- 0x1ab3cb0d, 0x7d2f0e2b,
- 0x1a82a026, 0x7d3980ec, 0x1a517128, 0x7d43e05e, 0x1a203e1b, 0x7d4e2c7f,
- 0x19ef0707, 0x7d58654d,
- 0x19bdcbf3, 0x7d628ac6, 0x198c8ce7, 0x7d6c9ce9, 0x195b49ea, 0x7d769bb5,
- 0x192a0304, 0x7d808728,
- 0x18f8b83c, 0x7d8a5f40, 0x18c7699b, 0x7d9423fc, 0x18961728, 0x7d9dd55a,
- 0x1864c0ea, 0x7da77359,
- 0x183366e9, 0x7db0fdf8, 0x1802092c, 0x7dba7534, 0x17d0a7bc, 0x7dc3d90d,
- 0x179f429f, 0x7dcd2981,
- 0x176dd9de, 0x7dd6668f, 0x173c6d80, 0x7ddf9034, 0x170afd8d, 0x7de8a670,
- 0x16d98a0c, 0x7df1a942,
- 0x16a81305, 0x7dfa98a8, 0x1676987f, 0x7e0374a0, 0x16451a83, 0x7e0c3d29,
- 0x16139918, 0x7e14f242,
- 0x15e21445, 0x7e1d93ea, 0x15b08c12, 0x7e26221f, 0x157f0086, 0x7e2e9cdf,
- 0x154d71aa, 0x7e37042a,
- 0x151bdf86, 0x7e3f57ff, 0x14ea4a1f, 0x7e47985b, 0x14b8b17f, 0x7e4fc53e,
- 0x148715ae, 0x7e57dea7,
- 0x145576b1, 0x7e5fe493, 0x1423d492, 0x7e67d703, 0x13f22f58, 0x7e6fb5f4,
- 0x13c0870a, 0x7e778166,
- 0x138edbb1, 0x7e7f3957, 0x135d2d53, 0x7e86ddc6, 0x132b7bf9, 0x7e8e6eb2,
- 0x12f9c7aa, 0x7e95ec1a,
- 0x12c8106f, 0x7e9d55fc, 0x1296564d, 0x7ea4ac58, 0x1264994e, 0x7eabef2c,
- 0x1232d979, 0x7eb31e78,
- 0x120116d5, 0x7eba3a39, 0x11cf516a, 0x7ec14270, 0x119d8941, 0x7ec8371a,
- 0x116bbe60, 0x7ecf1837,
- 0x1139f0cf, 0x7ed5e5c6, 0x11082096, 0x7edc9fc6, 0x10d64dbd, 0x7ee34636,
- 0x10a4784b, 0x7ee9d914,
- 0x1072a048, 0x7ef05860, 0x1040c5bb, 0x7ef6c418, 0x100ee8ad, 0x7efd1c3c,
- 0xfdd0926, 0x7f0360cb,
- 0xfab272b, 0x7f0991c4, 0xf7942c7, 0x7f0faf25, 0xf475bff, 0x7f15b8ee,
- 0xf1572dc, 0x7f1baf1e,
- 0xee38766, 0x7f2191b4, 0xeb199a4, 0x7f2760af, 0xe7fa99e, 0x7f2d1c0e,
- 0xe4db75b, 0x7f32c3d1,
- 0xe1bc2e4, 0x7f3857f6, 0xde9cc40, 0x7f3dd87c, 0xdb7d376, 0x7f434563,
- 0xd85d88f, 0x7f489eaa,
- 0xd53db92, 0x7f4de451, 0xd21dc87, 0x7f531655, 0xcefdb76, 0x7f5834b7,
- 0xcbdd865, 0x7f5d3f75,
- 0xc8bd35e, 0x7f62368f, 0xc59cc68, 0x7f671a05, 0xc27c389, 0x7f6be9d4,
- 0xbf5b8cb, 0x7f70a5fe,
- 0xbc3ac35, 0x7f754e80, 0xb919dcf, 0x7f79e35a, 0xb5f8d9f, 0x7f7e648c,
- 0xb2d7baf, 0x7f82d214,
- 0xafb6805, 0x7f872bf3, 0xac952aa, 0x7f8b7227, 0xa973ba5, 0x7f8fa4b0,
- 0xa6522fe, 0x7f93c38c,
- 0xa3308bd, 0x7f97cebd, 0xa00ece8, 0x7f9bc640, 0x9cecf89, 0x7f9faa15,
- 0x99cb0a7, 0x7fa37a3c,
- 0x96a9049, 0x7fa736b4, 0x9386e78, 0x7faadf7c, 0x9064b3a, 0x7fae7495,
- 0x8d42699, 0x7fb1f5fc,
- 0x8a2009a, 0x7fb563b3, 0x86fd947, 0x7fb8bdb8, 0x83db0a7, 0x7fbc040a,
- 0x80b86c2, 0x7fbf36aa,
- 0x7d95b9e, 0x7fc25596, 0x7a72f45, 0x7fc560cf, 0x77501be, 0x7fc85854,
- 0x742d311, 0x7fcb3c23,
- 0x710a345, 0x7fce0c3e, 0x6de7262, 0x7fd0c8a3, 0x6ac406f, 0x7fd37153,
- 0x67a0d76, 0x7fd6064c,
- 0x647d97c, 0x7fd8878e, 0x615a48b, 0x7fdaf519, 0x5e36ea9, 0x7fdd4eec,
- 0x5b137df, 0x7fdf9508,
- 0x57f0035, 0x7fe1c76b, 0x54cc7b1, 0x7fe3e616, 0x51a8e5c, 0x7fe5f108,
- 0x4e8543e, 0x7fe7e841,
- 0x4b6195d, 0x7fe9cbc0, 0x483ddc3, 0x7feb9b85, 0x451a177, 0x7fed5791,
- 0x41f6480, 0x7feeffe1,
- 0x3ed26e6, 0x7ff09478, 0x3bae8b2, 0x7ff21553, 0x388a9ea, 0x7ff38274,
- 0x3566a96, 0x7ff4dbd9,
- 0x3242abf, 0x7ff62182, 0x2f1ea6c, 0x7ff75370, 0x2bfa9a4, 0x7ff871a2,
- 0x28d6870, 0x7ff97c18,
- 0x25b26d7, 0x7ffa72d1, 0x228e4e2, 0x7ffb55ce, 0x1f6a297, 0x7ffc250f,
- 0x1c45ffe, 0x7ffce093,
- 0x1921d20, 0x7ffd885a, 0x15fda03, 0x7ffe1c65, 0x12d96b1, 0x7ffe9cb2,
- 0xfb5330, 0x7fff0943,
- 0xc90f88, 0x7fff6216, 0x96cbc1, 0x7fffa72c, 0x6487e3, 0x7fffd886, 0x3243f5,
- 0x7ffff621,
- 0x0, 0x7fffffff, 0xffcdbc0b, 0x7ffff621, 0xff9b781d, 0x7fffd886, 0xff69343f,
- 0x7fffa72c,
- 0xff36f078, 0x7fff6216, 0xff04acd0, 0x7fff0943, 0xfed2694f, 0x7ffe9cb2,
- 0xfea025fd, 0x7ffe1c65,
- 0xfe6de2e0, 0x7ffd885a, 0xfe3ba002, 0x7ffce093, 0xfe095d69, 0x7ffc250f,
- 0xfdd71b1e, 0x7ffb55ce,
- 0xfda4d929, 0x7ffa72d1, 0xfd729790, 0x7ff97c18, 0xfd40565c, 0x7ff871a2,
- 0xfd0e1594, 0x7ff75370,
- 0xfcdbd541, 0x7ff62182, 0xfca9956a, 0x7ff4dbd9, 0xfc775616, 0x7ff38274,
- 0xfc45174e, 0x7ff21553,
- 0xfc12d91a, 0x7ff09478, 0xfbe09b80, 0x7feeffe1, 0xfbae5e89, 0x7fed5791,
- 0xfb7c223d, 0x7feb9b85,
- 0xfb49e6a3, 0x7fe9cbc0, 0xfb17abc2, 0x7fe7e841, 0xfae571a4, 0x7fe5f108,
- 0xfab3384f, 0x7fe3e616,
- 0xfa80ffcb, 0x7fe1c76b, 0xfa4ec821, 0x7fdf9508, 0xfa1c9157, 0x7fdd4eec,
- 0xf9ea5b75, 0x7fdaf519,
- 0xf9b82684, 0x7fd8878e, 0xf985f28a, 0x7fd6064c, 0xf953bf91, 0x7fd37153,
- 0xf9218d9e, 0x7fd0c8a3,
- 0xf8ef5cbb, 0x7fce0c3e, 0xf8bd2cef, 0x7fcb3c23, 0xf88afe42, 0x7fc85854,
- 0xf858d0bb, 0x7fc560cf,
- 0xf826a462, 0x7fc25596, 0xf7f4793e, 0x7fbf36aa, 0xf7c24f59, 0x7fbc040a,
- 0xf79026b9, 0x7fb8bdb8,
- 0xf75dff66, 0x7fb563b3, 0xf72bd967, 0x7fb1f5fc, 0xf6f9b4c6, 0x7fae7495,
- 0xf6c79188, 0x7faadf7c,
- 0xf6956fb7, 0x7fa736b4, 0xf6634f59, 0x7fa37a3c, 0xf6313077, 0x7f9faa15,
- 0xf5ff1318, 0x7f9bc640,
- 0xf5ccf743, 0x7f97cebd, 0xf59add02, 0x7f93c38c, 0xf568c45b, 0x7f8fa4b0,
- 0xf536ad56, 0x7f8b7227,
- 0xf50497fb, 0x7f872bf3, 0xf4d28451, 0x7f82d214, 0xf4a07261, 0x7f7e648c,
- 0xf46e6231, 0x7f79e35a,
- 0xf43c53cb, 0x7f754e80, 0xf40a4735, 0x7f70a5fe, 0xf3d83c77, 0x7f6be9d4,
- 0xf3a63398, 0x7f671a05,
- 0xf3742ca2, 0x7f62368f, 0xf342279b, 0x7f5d3f75, 0xf310248a, 0x7f5834b7,
- 0xf2de2379, 0x7f531655,
- 0xf2ac246e, 0x7f4de451, 0xf27a2771, 0x7f489eaa, 0xf2482c8a, 0x7f434563,
- 0xf21633c0, 0x7f3dd87c,
- 0xf1e43d1c, 0x7f3857f6, 0xf1b248a5, 0x7f32c3d1, 0xf1805662, 0x7f2d1c0e,
- 0xf14e665c, 0x7f2760af,
- 0xf11c789a, 0x7f2191b4, 0xf0ea8d24, 0x7f1baf1e, 0xf0b8a401, 0x7f15b8ee,
- 0xf086bd39, 0x7f0faf25,
- 0xf054d8d5, 0x7f0991c4, 0xf022f6da, 0x7f0360cb, 0xeff11753, 0x7efd1c3c,
- 0xefbf3a45, 0x7ef6c418,
- 0xef8d5fb8, 0x7ef05860, 0xef5b87b5, 0x7ee9d914, 0xef29b243, 0x7ee34636,
- 0xeef7df6a, 0x7edc9fc6,
- 0xeec60f31, 0x7ed5e5c6, 0xee9441a0, 0x7ecf1837, 0xee6276bf, 0x7ec8371a,
- 0xee30ae96, 0x7ec14270,
- 0xedfee92b, 0x7eba3a39, 0xedcd2687, 0x7eb31e78, 0xed9b66b2, 0x7eabef2c,
- 0xed69a9b3, 0x7ea4ac58,
- 0xed37ef91, 0x7e9d55fc, 0xed063856, 0x7e95ec1a, 0xecd48407, 0x7e8e6eb2,
- 0xeca2d2ad, 0x7e86ddc6,
- 0xec71244f, 0x7e7f3957, 0xec3f78f6, 0x7e778166, 0xec0dd0a8, 0x7e6fb5f4,
- 0xebdc2b6e, 0x7e67d703,
- 0xebaa894f, 0x7e5fe493, 0xeb78ea52, 0x7e57dea7, 0xeb474e81, 0x7e4fc53e,
- 0xeb15b5e1, 0x7e47985b,
- 0xeae4207a, 0x7e3f57ff, 0xeab28e56, 0x7e37042a, 0xea80ff7a, 0x7e2e9cdf,
- 0xea4f73ee, 0x7e26221f,
- 0xea1debbb, 0x7e1d93ea, 0xe9ec66e8, 0x7e14f242, 0xe9bae57d, 0x7e0c3d29,
- 0xe9896781, 0x7e0374a0,
- 0xe957ecfb, 0x7dfa98a8, 0xe92675f4, 0x7df1a942, 0xe8f50273, 0x7de8a670,
- 0xe8c39280, 0x7ddf9034,
- 0xe8922622, 0x7dd6668f, 0xe860bd61, 0x7dcd2981, 0xe82f5844, 0x7dc3d90d,
- 0xe7fdf6d4, 0x7dba7534,
- 0xe7cc9917, 0x7db0fdf8, 0xe79b3f16, 0x7da77359, 0xe769e8d8, 0x7d9dd55a,
- 0xe7389665, 0x7d9423fc,
- 0xe70747c4, 0x7d8a5f40, 0xe6d5fcfc, 0x7d808728, 0xe6a4b616, 0x7d769bb5,
- 0xe6737319, 0x7d6c9ce9,
- 0xe642340d, 0x7d628ac6, 0xe610f8f9, 0x7d58654d, 0xe5dfc1e5, 0x7d4e2c7f,
- 0xe5ae8ed8, 0x7d43e05e,
- 0xe57d5fda, 0x7d3980ec, 0xe54c34f3, 0x7d2f0e2b, 0xe51b0e2a, 0x7d24881b,
- 0xe4e9eb87, 0x7d19eebf,
- 0xe4b8cd11, 0x7d0f4218, 0xe487b2d0, 0x7d048228, 0xe4569ccb, 0x7cf9aef0,
- 0xe4258b0a, 0x7ceec873,
- 0xe3f47d96, 0x7ce3ceb2, 0xe3c37474, 0x7cd8c1ae, 0xe3926fad, 0x7ccda169,
- 0xe3616f48, 0x7cc26de5,
- 0xe330734d, 0x7cb72724, 0xe2ff7bc3, 0x7cabcd28, 0xe2ce88b3, 0x7ca05ff1,
- 0xe29d9a23, 0x7c94df83,
- 0xe26cb01b, 0x7c894bde, 0xe23bcaa2, 0x7c7da505, 0xe20ae9c1, 0x7c71eaf9,
- 0xe1da0d7e, 0x7c661dbc,
- 0xe1a935e2, 0x7c5a3d50, 0xe17862f3, 0x7c4e49b7, 0xe14794ba, 0x7c4242f2,
- 0xe116cb3d, 0x7c362904,
- 0xe0e60685, 0x7c29fbee, 0xe0b54698, 0x7c1dbbb3, 0xe0848b7f, 0x7c116853,
- 0xe053d541, 0x7c0501d2,
- 0xe02323e5, 0x7bf88830, 0xdff27773, 0x7bebfb70, 0xdfc1cff3, 0x7bdf5b94,
- 0xdf912d6b, 0x7bd2a89e,
- 0xdf608fe4, 0x7bc5e290, 0xdf2ff764, 0x7bb9096b, 0xdeff63f4, 0x7bac1d31,
- 0xdeced59b, 0x7b9f1de6,
- 0xde9e4c60, 0x7b920b89, 0xde6dc84b, 0x7b84e61f, 0xde3d4964, 0x7b77ada8,
- 0xde0ccfb1, 0x7b6a6227,
- 0xdddc5b3b, 0x7b5d039e, 0xddabec08, 0x7b4f920e, 0xdd7b8220, 0x7b420d7a,
- 0xdd4b1d8c, 0x7b3475e5,
- 0xdd1abe51, 0x7b26cb4f, 0xdcea6478, 0x7b190dbc, 0xdcba1008, 0x7b0b3d2c,
- 0xdc89c109, 0x7afd59a4,
- 0xdc597781, 0x7aef6323, 0xdc293379, 0x7ae159ae, 0xdbf8f4f8, 0x7ad33d45,
- 0xdbc8bc06, 0x7ac50dec,
- 0xdb9888a8, 0x7ab6cba4, 0xdb685ae9, 0x7aa8766f, 0xdb3832cd, 0x7a9a0e50,
- 0xdb08105e, 0x7a8b9348,
- 0xdad7f3a2, 0x7a7d055b, 0xdaa7dca1, 0x7a6e648a, 0xda77cb63, 0x7a5fb0d8,
- 0xda47bfee, 0x7a50ea47,
- 0xda17ba4a, 0x7a4210d8, 0xd9e7ba7f, 0x7a332490, 0xd9b7c094, 0x7a24256f,
- 0xd987cc90, 0x7a151378,
- 0xd957de7a, 0x7a05eead, 0xd927f65b, 0x79f6b711, 0xd8f81439, 0x79e76ca7,
- 0xd8c8381d, 0x79d80f6f,
- 0xd898620c, 0x79c89f6e, 0xd868920f, 0x79b91ca4, 0xd838c82d, 0x79a98715,
- 0xd809046e, 0x7999dec4,
- 0xd7d946d8, 0x798a23b1, 0xd7a98f73, 0x797a55e0, 0xd779de47, 0x796a7554,
- 0xd74a335b, 0x795a820e,
- 0xd71a8eb5, 0x794a7c12, 0xd6eaf05f, 0x793a6361, 0xd6bb585e, 0x792a37fe,
- 0xd68bc6ba, 0x7919f9ec,
- 0xd65c3b7b, 0x7909a92d, 0xd62cb6a8, 0x78f945c3, 0xd5fd3848, 0x78e8cfb2,
- 0xd5cdc062, 0x78d846fb,
- 0xd59e4eff, 0x78c7aba2, 0xd56ee424, 0x78b6fda8, 0xd53f7fda, 0x78a63d11,
- 0xd5102228, 0x789569df,
- 0xd4e0cb15, 0x78848414, 0xd4b17aa8, 0x78738bb3, 0xd48230e9, 0x786280bf,
- 0xd452eddf, 0x7851633b,
- 0xd423b191, 0x78403329, 0xd3f47c06, 0x782ef08b, 0xd3c54d47, 0x781d9b65,
- 0xd396255a, 0x780c33b8,
- 0xd3670446, 0x77fab989, 0xd337ea12, 0x77e92cd9, 0xd308d6c7, 0x77d78daa,
- 0xd2d9ca6a, 0x77c5dc01,
- 0xd2aac504, 0x77b417df, 0xd27bc69c, 0x77a24148, 0xd24ccf39, 0x7790583e,
- 0xd21ddee2, 0x777e5cc3,
- 0xd1eef59e, 0x776c4edb, 0xd1c01375, 0x775a2e89, 0xd191386e, 0x7747fbce,
- 0xd1626490, 0x7735b6af,
- 0xd13397e2, 0x77235f2d, 0xd104d26b, 0x7710f54c, 0xd0d61434, 0x76fe790e,
- 0xd0a75d42, 0x76ebea77,
- 0xd078ad9e, 0x76d94989, 0xd04a054e, 0x76c69647, 0xd01b6459, 0x76b3d0b4,
- 0xcfeccac7, 0x76a0f8d2,
- 0xcfbe389f, 0x768e0ea6, 0xcf8fade9, 0x767b1231, 0xcf612aaa, 0x76680376,
- 0xcf32aeeb, 0x7654e279,
- 0xcf043ab3, 0x7641af3d, 0xced5ce08, 0x762e69c4, 0xcea768f2, 0x761b1211,
- 0xce790b79, 0x7607a828,
- 0xce4ab5a2, 0x75f42c0b, 0xce1c6777, 0x75e09dbd, 0xcdee20fc, 0x75ccfd42,
- 0xcdbfe23a, 0x75b94a9c,
- 0xcd91ab39, 0x75a585cf, 0xcd637bfe, 0x7591aedd, 0xcd355491, 0x757dc5ca,
- 0xcd0734f9, 0x7569ca99,
- 0xccd91d3d, 0x7555bd4c, 0xccab0d65, 0x75419de7, 0xcc7d0578, 0x752d6c6c,
- 0xcc4f057c, 0x751928e0,
- 0xcc210d79, 0x7504d345, 0xcbf31d75, 0x74f06b9e, 0xcbc53579, 0x74dbf1ef,
- 0xcb97558a, 0x74c7663a,
- 0xcb697db0, 0x74b2c884, 0xcb3badf3, 0x749e18cd, 0xcb0de658, 0x7489571c,
- 0xcae026e8, 0x74748371,
- 0xcab26fa9, 0x745f9dd1, 0xca84c0a3, 0x744aa63f, 0xca5719db, 0x74359cbd,
- 0xca297b5a, 0x74208150,
- 0xc9fbe527, 0x740b53fb, 0xc9ce5748, 0x73f614c0, 0xc9a0d1c5, 0x73e0c3a3,
- 0xc97354a4, 0x73cb60a8,
- 0xc945dfec, 0x73b5ebd1, 0xc91873a5, 0x73a06522, 0xc8eb0fd6, 0x738acc9e,
- 0xc8bdb485, 0x73752249,
- 0xc89061ba, 0x735f6626, 0xc863177b, 0x73499838, 0xc835d5d0, 0x7333b883,
- 0xc8089cbf, 0x731dc70a,
- 0xc7db6c50, 0x7307c3d0, 0xc7ae4489, 0x72f1aed9, 0xc7812572, 0x72db8828,
- 0xc7540f11, 0x72c54fc1,
- 0xc727016d, 0x72af05a7, 0xc6f9fc8d, 0x7298a9dd, 0xc6cd0079, 0x72823c67,
- 0xc6a00d37, 0x726bbd48,
- 0xc67322ce, 0x72552c85, 0xc6464144, 0x723e8a20, 0xc61968a2, 0x7227d61c,
- 0xc5ec98ee, 0x7211107e,
- 0xc5bfd22e, 0x71fa3949, 0xc593146a, 0x71e35080, 0xc5665fa9, 0x71cc5626,
- 0xc539b3f1, 0x71b54a41,
- 0xc50d1149, 0x719e2cd2, 0xc4e077b8, 0x7186fdde, 0xc4b3e746, 0x716fbd68,
- 0xc4875ff9, 0x71586b74,
- 0xc45ae1d7, 0x71410805, 0xc42e6ce8, 0x7129931f, 0xc4020133, 0x71120cc5,
- 0xc3d59ebe, 0x70fa74fc,
- 0xc3a94590, 0x70e2cbc6, 0xc37cf5b0, 0x70cb1128, 0xc350af26, 0x70b34525,
- 0xc32471f7, 0x709b67c0,
- 0xc2f83e2a, 0x708378ff, 0xc2cc13c7, 0x706b78e3, 0xc29ff2d4, 0x70536771,
- 0xc273db58, 0x703b44ad,
- 0xc247cd5a, 0x7023109a, 0xc21bc8e1, 0x700acb3c, 0xc1efcdf3, 0x6ff27497,
- 0xc1c3dc97, 0x6fda0cae,
- 0xc197f4d4, 0x6fc19385, 0xc16c16b0, 0x6fa90921, 0xc1404233, 0x6f906d84,
- 0xc1147764, 0x6f77c0b3,
- 0xc0e8b648, 0x6f5f02b2, 0xc0bcfee7, 0x6f463383, 0xc0915148, 0x6f2d532c,
- 0xc065ad70, 0x6f1461b0,
- 0xc03a1368, 0x6efb5f12, 0xc00e8336, 0x6ee24b57, 0xbfe2fcdf, 0x6ec92683,
- 0xbfb7806c, 0x6eaff099,
- 0xbf8c0de3, 0x6e96a99d, 0xbf60a54a, 0x6e7d5193, 0xbf3546a8, 0x6e63e87f,
- 0xbf09f205, 0x6e4a6e66,
- 0xbedea765, 0x6e30e34a, 0xbeb366d1, 0x6e174730, 0xbe88304f, 0x6dfd9a1c,
- 0xbe5d03e6, 0x6de3dc11,
- 0xbe31e19b, 0x6dca0d14, 0xbe06c977, 0x6db02d29, 0xbddbbb7f, 0x6d963c54,
- 0xbdb0b7bb, 0x6d7c3a98,
- 0xbd85be30, 0x6d6227fa, 0xbd5acee5, 0x6d48047e, 0xbd2fe9e2, 0x6d2dd027,
- 0xbd050f2c, 0x6d138afb,
- 0xbcda3ecb, 0x6cf934fc, 0xbcaf78c4, 0x6cdece2f, 0xbc84bd1f, 0x6cc45698,
- 0xbc5a0be2, 0x6ca9ce3b,
- 0xbc2f6513, 0x6c8f351c, 0xbc04c8ba, 0x6c748b3f, 0xbbda36dd, 0x6c59d0a9,
- 0xbbafaf82, 0x6c3f055d,
- 0xbb8532b0, 0x6c242960, 0xbb5ac06d, 0x6c093cb6, 0xbb3058c0, 0x6bee3f62,
- 0xbb05fbb0, 0x6bd3316a,
- 0xbadba943, 0x6bb812d1, 0xbab16180, 0x6b9ce39b, 0xba87246d, 0x6b81a3cd,
- 0xba5cf210, 0x6b66536b,
- 0xba32ca71, 0x6b4af279, 0xba08ad95, 0x6b2f80fb, 0xb9de9b83, 0x6b13fef5,
- 0xb9b49442, 0x6af86c6c,
- 0xb98a97d8, 0x6adcc964, 0xb960a64c, 0x6ac115e2, 0xb936bfa4, 0x6aa551e9,
- 0xb90ce3e6, 0x6a897d7d,
- 0xb8e31319, 0x6a6d98a4, 0xb8b94d44, 0x6a51a361, 0xb88f926d, 0x6a359db9,
- 0xb865e299, 0x6a1987b0,
- 0xb83c3dd1, 0x69fd614a, 0xb812a41a, 0x69e12a8c, 0xb7e9157a, 0x69c4e37a,
- 0xb7bf91f8, 0x69a88c19,
- 0xb796199b, 0x698c246c, 0xb76cac69, 0x696fac78, 0xb7434a67, 0x69532442,
- 0xb719f39e, 0x69368bce,
- 0xb6f0a812, 0x6919e320, 0xb6c767ca, 0x68fd2a3d, 0xb69e32cd, 0x68e06129,
- 0xb6750921, 0x68c387e9,
- 0xb64beacd, 0x68a69e81, 0xb622d7d6, 0x6889a4f6, 0xb5f9d043, 0x686c9b4b,
- 0xb5d0d41a, 0x684f8186,
- 0xb5a7e362, 0x683257ab, 0xb57efe22, 0x68151dbe, 0xb556245e, 0x67f7d3c5,
- 0xb52d561e, 0x67da79c3,
- 0xb5049368, 0x67bd0fbd, 0xb4dbdc42, 0x679f95b7, 0xb4b330b3, 0x67820bb7,
- 0xb48a90c0, 0x676471c0,
- 0xb461fc70, 0x6746c7d8, 0xb43973ca, 0x67290e02, 0xb410f6d3, 0x670b4444,
- 0xb3e88592, 0x66ed6aa1,
- 0xb3c0200c, 0x66cf8120, 0xb397c649, 0x66b187c3, 0xb36f784f, 0x66937e91,
- 0xb3473623, 0x6675658c,
- 0xb31effcc, 0x66573cbb, 0xb2f6d550, 0x66390422, 0xb2ceb6b5, 0x661abbc5,
- 0xb2a6a402, 0x65fc63a9,
- 0xb27e9d3c, 0x65ddfbd3, 0xb256a26a, 0x65bf8447, 0xb22eb392, 0x65a0fd0b,
- 0xb206d0ba, 0x65826622,
- 0xb1def9e9, 0x6563bf92, 0xb1b72f23, 0x6545095f, 0xb18f7071, 0x6526438f,
- 0xb167bdd7, 0x65076e25,
- 0xb140175b, 0x64e88926, 0xb1187d05, 0x64c99498, 0xb0f0eeda, 0x64aa907f,
- 0xb0c96ce0, 0x648b7ce0,
- 0xb0a1f71d, 0x646c59bf, 0xb07a8d97, 0x644d2722, 0xb0533055, 0x642de50d,
- 0xb02bdf5c, 0x640e9386,
- 0xb0049ab3, 0x63ef3290, 0xafdd625f, 0x63cfc231, 0xafb63667, 0x63b0426d,
- 0xaf8f16d1, 0x6390b34a,
- 0xaf6803a2, 0x637114cc, 0xaf40fce1, 0x635166f9, 0xaf1a0293, 0x6331a9d4,
- 0xaef314c0, 0x6311dd64,
- 0xaecc336c, 0x62f201ac, 0xaea55e9e, 0x62d216b3, 0xae7e965b, 0x62b21c7b,
- 0xae57daab, 0x6292130c,
- 0xae312b92, 0x6271fa69, 0xae0a8916, 0x6251d298, 0xade3f33e, 0x62319b9d,
- 0xadbd6a10, 0x6211557e,
- 0xad96ed92, 0x61f1003f, 0xad707dc8, 0x61d09be5, 0xad4a1aba, 0x61b02876,
- 0xad23c46e, 0x618fa5f7,
- 0xacfd7ae8, 0x616f146c, 0xacd73e30, 0x614e73da, 0xacb10e4b, 0x612dc447,
- 0xac8aeb3e, 0x610d05b7,
- 0xac64d510, 0x60ec3830, 0xac3ecbc7, 0x60cb5bb7, 0xac18cf69, 0x60aa7050,
- 0xabf2dffb, 0x60897601,
- 0xabccfd83, 0x60686ccf, 0xaba72807, 0x604754bf, 0xab815f8d, 0x60262dd6,
- 0xab5ba41a, 0x6004f819,
- 0xab35f5b5, 0x5fe3b38d, 0xab105464, 0x5fc26038, 0xaaeac02c, 0x5fa0fe1f,
- 0xaac53912, 0x5f7f8d46,
- 0xaa9fbf1e, 0x5f5e0db3, 0xaa7a5253, 0x5f3c7f6b, 0xaa54f2ba, 0x5f1ae274,
- 0xaa2fa056, 0x5ef936d1,
- 0xaa0a5b2e, 0x5ed77c8a, 0xa9e52347, 0x5eb5b3a2, 0xa9bff8a8, 0x5e93dc1f,
- 0xa99adb56, 0x5e71f606,
- 0xa975cb57, 0x5e50015d, 0xa950c8b0, 0x5e2dfe29, 0xa92bd367, 0x5e0bec6e,
- 0xa906eb82, 0x5de9cc33,
- 0xa8e21106, 0x5dc79d7c, 0xa8bd43fa, 0x5da5604f, 0xa8988463, 0x5d8314b1,
- 0xa873d246, 0x5d60baa7,
- 0xa84f2daa, 0x5d3e5237, 0xa82a9693, 0x5d1bdb65, 0xa8060d08, 0x5cf95638,
- 0xa7e1910f, 0x5cd6c2b5,
- 0xa7bd22ac, 0x5cb420e0, 0xa798c1e5, 0x5c9170bf, 0xa7746ec0, 0x5c6eb258,
- 0xa7502943, 0x5c4be5b0,
- 0xa72bf174, 0x5c290acc, 0xa707c757, 0x5c0621b2, 0xa6e3aaf2, 0x5be32a67,
- 0xa6bf9c4b, 0x5bc024f0,
- 0xa69b9b68, 0x5b9d1154, 0xa677a84e, 0x5b79ef96, 0xa653c303, 0x5b56bfbd,
- 0xa62feb8b, 0x5b3381ce,
- 0xa60c21ee, 0x5b1035cf, 0xa5e8662f, 0x5aecdbc5, 0xa5c4b855, 0x5ac973b5,
- 0xa5a11866, 0x5aa5fda5,
- 0xa57d8666, 0x5a82799a, 0xa55a025b, 0x5a5ee79a, 0xa5368c4b, 0x5a3b47ab,
- 0xa513243b, 0x5a1799d1,
- 0xa4efca31, 0x59f3de12, 0xa4cc7e32, 0x59d01475, 0xa4a94043, 0x59ac3cfd,
- 0xa486106a, 0x598857b2,
- 0xa462eeac, 0x59646498, 0xa43fdb10, 0x594063b5, 0xa41cd599, 0x591c550e,
- 0xa3f9de4e, 0x58f838a9,
- 0xa3d6f534, 0x58d40e8c, 0xa3b41a50, 0x58afd6bd, 0xa3914da8, 0x588b9140,
- 0xa36e8f41, 0x58673e1b,
- 0xa34bdf20, 0x5842dd54, 0xa3293d4b, 0x581e6ef1, 0xa306a9c8, 0x57f9f2f8,
- 0xa2e4249b, 0x57d5696d,
- 0xa2c1adc9, 0x57b0d256, 0xa29f4559, 0x578c2dba, 0xa27ceb4f, 0x57677b9d,
- 0xa25a9fb1, 0x5742bc06,
- 0xa2386284, 0x571deefa, 0xa21633cd, 0x56f9147e, 0xa1f41392, 0x56d42c99,
- 0xa1d201d7, 0x56af3750,
- 0xa1affea3, 0x568a34a9, 0xa18e09fa, 0x566524aa, 0xa16c23e1, 0x56400758,
- 0xa14a4c5e, 0x561adcb9,
- 0xa1288376, 0x55f5a4d2, 0xa106c92f, 0x55d05faa, 0xa0e51d8c, 0x55ab0d46,
- 0xa0c38095, 0x5585adad,
- 0xa0a1f24d, 0x556040e2, 0xa08072ba, 0x553ac6ee, 0xa05f01e1, 0x55153fd4,
- 0xa03d9fc8, 0x54efab9c,
- 0xa01c4c73, 0x54ca0a4b, 0x9ffb07e7, 0x54a45be6, 0x9fd9d22a, 0x547ea073,
- 0x9fb8ab41, 0x5458d7f9,
- 0x9f979331, 0x5433027d, 0x9f7689ff, 0x540d2005, 0x9f558fb0, 0x53e73097,
- 0x9f34a449, 0x53c13439,
- 0x9f13c7d0, 0x539b2af0, 0x9ef2fa49, 0x537514c2, 0x9ed23bb9, 0x534ef1b5,
- 0x9eb18c26, 0x5328c1d0,
- 0x9e90eb94, 0x53028518, 0x9e705a09, 0x52dc3b92, 0x9e4fd78a, 0x52b5e546,
- 0x9e2f641b, 0x528f8238,
- 0x9e0effc1, 0x5269126e, 0x9deeaa82, 0x524295f0, 0x9dce6463, 0x521c0cc2,
- 0x9dae2d68, 0x51f576ea,
- 0x9d8e0597, 0x51ced46e, 0x9d6decf4, 0x51a82555, 0x9d4de385, 0x518169a5,
- 0x9d2de94d, 0x515aa162,
- 0x9d0dfe54, 0x5133cc94, 0x9cee229c, 0x510ceb40, 0x9cce562c, 0x50e5fd6d,
- 0x9cae9907, 0x50bf031f,
- 0x9c8eeb34, 0x5097fc5e, 0x9c6f4cb6, 0x5070e92f, 0x9c4fbd93, 0x5049c999,
- 0x9c303dcf, 0x50229da1,
- 0x9c10cd70, 0x4ffb654d, 0x9bf16c7a, 0x4fd420a4, 0x9bd21af3, 0x4faccfab,
- 0x9bb2d8de, 0x4f857269,
- 0x9b93a641, 0x4f5e08e3, 0x9b748320, 0x4f369320, 0x9b556f81, 0x4f0f1126,
- 0x9b366b68, 0x4ee782fb,
- 0x9b1776da, 0x4ebfe8a5, 0x9af891db, 0x4e984229, 0x9ad9bc71, 0x4e708f8f,
- 0x9abaf6a1, 0x4e48d0dd,
- 0x9a9c406e, 0x4e210617, 0x9a7d99de, 0x4df92f46, 0x9a5f02f5, 0x4dd14c6e,
- 0x9a407bb9, 0x4da95d96,
- 0x9a22042d, 0x4d8162c4, 0x9a039c57, 0x4d595bfe, 0x99e5443b, 0x4d31494b,
- 0x99c6fbde, 0x4d092ab0,
- 0x99a8c345, 0x4ce10034, 0x998a9a74, 0x4cb8c9dd, 0x996c816f, 0x4c9087b1,
- 0x994e783d, 0x4c6839b7,
- 0x99307ee0, 0x4c3fdff4, 0x9912955f, 0x4c177a6e, 0x98f4bbbc, 0x4bef092d,
- 0x98d6f1fe, 0x4bc68c36,
- 0x98b93828, 0x4b9e0390, 0x989b8e40, 0x4b756f40, 0x987df449, 0x4b4ccf4d,
- 0x98606a49, 0x4b2423be,
- 0x9842f043, 0x4afb6c98, 0x9825863d, 0x4ad2a9e2, 0x98082c3b, 0x4aa9dba2,
- 0x97eae242, 0x4a8101de,
- 0x97cda855, 0x4a581c9e, 0x97b07e7a, 0x4a2f2be6, 0x979364b5, 0x4a062fbd,
- 0x97765b0a, 0x49dd282a,
- 0x9759617f, 0x49b41533, 0x973c7817, 0x498af6df, 0x971f9ed7, 0x4961cd33,
- 0x9702d5c3, 0x49389836,
- 0x96e61ce0, 0x490f57ee, 0x96c97432, 0x48e60c62, 0x96acdbbe, 0x48bcb599,
- 0x96905388, 0x48935397,
- 0x9673db94, 0x4869e665, 0x965773e7, 0x48406e08, 0x963b1c86, 0x4816ea86,
- 0x961ed574, 0x47ed5be6,
- 0x96029eb6, 0x47c3c22f, 0x95e67850, 0x479a1d67, 0x95ca6247, 0x47706d93,
- 0x95ae5c9f, 0x4746b2bc,
- 0x9592675c, 0x471cece7, 0x95768283, 0x46f31c1a, 0x955aae17, 0x46c9405c,
- 0x953eea1e, 0x469f59b4,
- 0x9523369c, 0x46756828, 0x95079394, 0x464b6bbe, 0x94ec010b, 0x4621647d,
- 0x94d07f05, 0x45f7526b,
- 0x94b50d87, 0x45cd358f, 0x9499ac95, 0x45a30df0, 0x947e5c33, 0x4578db93,
- 0x94631c65, 0x454e9e80,
- 0x9447ed2f, 0x452456bd, 0x942cce96, 0x44fa0450, 0x9411c09e, 0x44cfa740,
- 0x93f6c34a, 0x44a53f93,
- 0x93dbd6a0, 0x447acd50, 0x93c0faa3, 0x4450507e, 0x93a62f57, 0x4425c923,
- 0x938b74c1, 0x43fb3746,
- 0x9370cae4, 0x43d09aed, 0x935631c5, 0x43a5f41e, 0x933ba968, 0x437b42e1,
- 0x932131d1, 0x4350873c,
- 0x9306cb04, 0x4325c135, 0x92ec7505, 0x42faf0d4, 0x92d22fd9, 0x42d0161e,
- 0x92b7fb82, 0x42a5311b,
- 0x929dd806, 0x427a41d0, 0x9283c568, 0x424f4845, 0x9269c3ac, 0x42244481,
- 0x924fd2d7, 0x41f93689,
- 0x9235f2ec, 0x41ce1e65, 0x921c23ef, 0x41a2fc1a, 0x920265e4, 0x4177cfb1,
- 0x91e8b8d0, 0x414c992f,
- 0x91cf1cb6, 0x4121589b, 0x91b5919a, 0x40f60dfb, 0x919c1781, 0x40cab958,
- 0x9182ae6d, 0x409f5ab6,
- 0x91695663, 0x4073f21d, 0x91500f67, 0x40487f94, 0x9136d97d, 0x401d0321,
- 0x911db4a9, 0x3ff17cca,
- 0x9104a0ee, 0x3fc5ec98, 0x90eb9e50, 0x3f9a5290, 0x90d2acd4, 0x3f6eaeb8,
- 0x90b9cc7d, 0x3f430119,
- 0x90a0fd4e, 0x3f1749b8, 0x90883f4d, 0x3eeb889c, 0x906f927c, 0x3ebfbdcd,
- 0x9056f6df, 0x3e93e950,
- 0x903e6c7b, 0x3e680b2c, 0x9025f352, 0x3e3c2369, 0x900d8b69, 0x3e10320d,
- 0x8ff534c4, 0x3de4371f,
- 0x8fdcef66, 0x3db832a6, 0x8fc4bb53, 0x3d8c24a8, 0x8fac988f, 0x3d600d2c,
- 0x8f94871d, 0x3d33ec39,
- 0x8f7c8701, 0x3d07c1d6, 0x8f649840, 0x3cdb8e09, 0x8f4cbadb, 0x3caf50da,
- 0x8f34eed8, 0x3c830a50,
- 0x8f1d343a, 0x3c56ba70, 0x8f058b04, 0x3c2a6142, 0x8eedf33b, 0x3bfdfecd,
- 0x8ed66ce1, 0x3bd19318,
- 0x8ebef7fb, 0x3ba51e29, 0x8ea7948c, 0x3b78a007, 0x8e904298, 0x3b4c18ba,
- 0x8e790222, 0x3b1f8848,
- 0x8e61d32e, 0x3af2eeb7, 0x8e4ab5bf, 0x3ac64c0f, 0x8e33a9da, 0x3a99a057,
- 0x8e1caf80, 0x3a6ceb96,
- 0x8e05c6b7, 0x3a402dd2, 0x8deeef82, 0x3a136712, 0x8dd829e4, 0x39e6975e,
- 0x8dc175e0, 0x39b9bebc,
- 0x8daad37b, 0x398cdd32, 0x8d9442b8, 0x395ff2c9, 0x8d7dc399, 0x3932ff87,
- 0x8d675623, 0x39060373,
- 0x8d50fa59, 0x38d8fe93, 0x8d3ab03f, 0x38abf0ef, 0x8d2477d8, 0x387eda8e,
- 0x8d0e5127, 0x3851bb77,
- 0x8cf83c30, 0x382493b0, 0x8ce238f6, 0x37f76341, 0x8ccc477d, 0x37ca2a30,
- 0x8cb667c8, 0x379ce885,
- 0x8ca099da, 0x376f9e46, 0x8c8addb7, 0x37424b7b, 0x8c753362, 0x3714f02a,
- 0x8c5f9ade, 0x36e78c5b,
- 0x8c4a142f, 0x36ba2014, 0x8c349f58, 0x368cab5c, 0x8c1f3c5d, 0x365f2e3b,
- 0x8c09eb40, 0x3631a8b8,
- 0x8bf4ac05, 0x36041ad9, 0x8bdf7eb0, 0x35d684a6, 0x8bca6343, 0x35a8e625,
- 0x8bb559c1, 0x357b3f5d,
- 0x8ba0622f, 0x354d9057, 0x8b8b7c8f, 0x351fd918, 0x8b76a8e4, 0x34f219a8,
- 0x8b61e733, 0x34c4520d,
- 0x8b4d377c, 0x34968250, 0x8b3899c6, 0x3468aa76, 0x8b240e11, 0x343aca87,
- 0x8b0f9462, 0x340ce28b,
- 0x8afb2cbb, 0x33def287, 0x8ae6d720, 0x33b0fa84, 0x8ad29394, 0x3382fa88,
- 0x8abe6219, 0x3354f29b,
- 0x8aaa42b4, 0x3326e2c3, 0x8a963567, 0x32f8cb07, 0x8a823a36, 0x32caab6f,
- 0x8a6e5123, 0x329c8402,
- 0x8a5a7a31, 0x326e54c7, 0x8a46b564, 0x32401dc6, 0x8a3302be, 0x3211df04,
- 0x8a1f6243, 0x31e39889,
- 0x8a0bd3f5, 0x31b54a5e, 0x89f857d8, 0x3186f487, 0x89e4edef, 0x3158970e,
- 0x89d1963c, 0x312a31f8,
- 0x89be50c3, 0x30fbc54d, 0x89ab1d87, 0x30cd5115, 0x8997fc8a, 0x309ed556,
- 0x8984edcf, 0x30705217,
- 0x8971f15a, 0x3041c761, 0x895f072e, 0x30133539, 0x894c2f4c, 0x2fe49ba7,
- 0x893969b9, 0x2fb5fab2,
- 0x8926b677, 0x2f875262, 0x89141589, 0x2f58a2be, 0x890186f2, 0x2f29ebcc,
- 0x88ef0ab4, 0x2efb2d95,
- 0x88dca0d3, 0x2ecc681e, 0x88ca4951, 0x2e9d9b70, 0x88b80432, 0x2e6ec792,
- 0x88a5d177, 0x2e3fec8b,
- 0x8893b125, 0x2e110a62, 0x8881a33d, 0x2de2211e, 0x886fa7c2, 0x2db330c7,
- 0x885dbeb8, 0x2d843964,
- 0x884be821, 0x2d553afc, 0x883a23ff, 0x2d263596, 0x88287256, 0x2cf72939,
- 0x8816d327, 0x2cc815ee,
- 0x88054677, 0x2c98fbba, 0x87f3cc48, 0x2c69daa6, 0x87e2649b, 0x2c3ab2b9,
- 0x87d10f75, 0x2c0b83fa,
- 0x87bfccd7, 0x2bdc4e6f, 0x87ae9cc5, 0x2bad1221, 0x879d7f41, 0x2b7dcf17,
- 0x878c744d, 0x2b4e8558,
- 0x877b7bec, 0x2b1f34eb, 0x876a9621, 0x2aefddd8, 0x8759c2ef, 0x2ac08026,
- 0x87490258, 0x2a911bdc,
- 0x8738545e, 0x2a61b101, 0x8727b905, 0x2a323f9e, 0x8717304e, 0x2a02c7b8,
- 0x8706ba3d, 0x29d34958,
- 0x86f656d3, 0x29a3c485, 0x86e60614, 0x29743946, 0x86d5c802, 0x2944a7a2,
- 0x86c59c9f, 0x29150fa1,
- 0x86b583ee, 0x28e5714b, 0x86a57df2, 0x28b5cca5, 0x86958aac, 0x288621b9,
- 0x8685aa20, 0x2856708d,
- 0x8675dc4f, 0x2826b928, 0x8666213c, 0x27f6fb92, 0x865678eb, 0x27c737d3,
- 0x8646e35c, 0x27976df1,
- 0x86376092, 0x27679df4, 0x8627f091, 0x2737c7e3, 0x86189359, 0x2707ebc7,
- 0x860948ef, 0x26d809a5,
- 0x85fa1153, 0x26a82186, 0x85eaec88, 0x26783370, 0x85dbda91, 0x26483f6c,
- 0x85ccdb70, 0x26184581,
- 0x85bdef28, 0x25e845b6, 0x85af15b9, 0x25b84012, 0x85a04f28, 0x2588349d,
- 0x85919b76, 0x2558235f,
- 0x8582faa5, 0x25280c5e, 0x85746cb8, 0x24f7efa2, 0x8565f1b0, 0x24c7cd33,
- 0x85578991, 0x2497a517,
- 0x8549345c, 0x24677758, 0x853af214, 0x243743fa, 0x852cc2bb, 0x24070b08,
- 0x851ea652, 0x23d6cc87,
- 0x85109cdd, 0x23a6887f, 0x8502a65c, 0x23763ef7, 0x84f4c2d4, 0x2345eff8,
- 0x84e6f244, 0x23159b88,
- 0x84d934b1, 0x22e541af, 0x84cb8a1b, 0x22b4e274, 0x84bdf286, 0x22847de0,
- 0x84b06df2, 0x225413f8,
- 0x84a2fc62, 0x2223a4c5, 0x84959dd9, 0x21f3304f, 0x84885258, 0x21c2b69c,
- 0x847b19e1, 0x219237b5,
- 0x846df477, 0x2161b3a0, 0x8460e21a, 0x21312a65, 0x8453e2cf, 0x21009c0c,
- 0x8446f695, 0x20d0089c,
- 0x843a1d70, 0x209f701c, 0x842d5762, 0x206ed295, 0x8420a46c, 0x203e300d,
- 0x84140490, 0x200d888d,
- 0x840777d0, 0x1fdcdc1b, 0x83fafe2e, 0x1fac2abf, 0x83ee97ad, 0x1f7b7481,
- 0x83e2444d, 0x1f4ab968,
- 0x83d60412, 0x1f19f97b, 0x83c9d6fc, 0x1ee934c3, 0x83bdbd0e, 0x1eb86b46,
- 0x83b1b649, 0x1e879d0d,
- 0x83a5c2b0, 0x1e56ca1e, 0x8399e244, 0x1e25f282, 0x838e1507, 0x1df5163f,
- 0x83825afb, 0x1dc4355e,
- 0x8376b422, 0x1d934fe5, 0x836b207d, 0x1d6265dd, 0x835fa00f, 0x1d31774d,
- 0x835432d8, 0x1d00843d,
- 0x8348d8dc, 0x1ccf8cb3, 0x833d921b, 0x1c9e90b8, 0x83325e97, 0x1c6d9053,
- 0x83273e52, 0x1c3c8b8c,
- 0x831c314e, 0x1c0b826a, 0x8311378d, 0x1bda74f6, 0x83065110, 0x1ba96335,
- 0x82fb7dd8, 0x1b784d30,
- 0x82f0bde8, 0x1b4732ef, 0x82e61141, 0x1b161479, 0x82db77e5, 0x1ae4f1d6,
- 0x82d0f1d5, 0x1ab3cb0d,
- 0x82c67f14, 0x1a82a026, 0x82bc1fa2, 0x1a517128, 0x82b1d381, 0x1a203e1b,
- 0x82a79ab3, 0x19ef0707,
- 0x829d753a, 0x19bdcbf3, 0x82936317, 0x198c8ce7, 0x8289644b, 0x195b49ea,
- 0x827f78d8, 0x192a0304,
- 0x8275a0c0, 0x18f8b83c, 0x826bdc04, 0x18c7699b, 0x82622aa6, 0x18961728,
- 0x82588ca7, 0x1864c0ea,
- 0x824f0208, 0x183366e9, 0x82458acc, 0x1802092c, 0x823c26f3, 0x17d0a7bc,
- 0x8232d67f, 0x179f429f,
- 0x82299971, 0x176dd9de, 0x82206fcc, 0x173c6d80, 0x82175990, 0x170afd8d,
- 0x820e56be, 0x16d98a0c,
- 0x82056758, 0x16a81305, 0x81fc8b60, 0x1676987f, 0x81f3c2d7, 0x16451a83,
- 0x81eb0dbe, 0x16139918,
- 0x81e26c16, 0x15e21445, 0x81d9dde1, 0x15b08c12, 0x81d16321, 0x157f0086,
- 0x81c8fbd6, 0x154d71aa,
- 0x81c0a801, 0x151bdf86, 0x81b867a5, 0x14ea4a1f, 0x81b03ac2, 0x14b8b17f,
- 0x81a82159, 0x148715ae,
- 0x81a01b6d, 0x145576b1, 0x819828fd, 0x1423d492, 0x81904a0c, 0x13f22f58,
- 0x81887e9a, 0x13c0870a,
- 0x8180c6a9, 0x138edbb1, 0x8179223a, 0x135d2d53, 0x8171914e, 0x132b7bf9,
- 0x816a13e6, 0x12f9c7aa,
- 0x8162aa04, 0x12c8106f, 0x815b53a8, 0x1296564d, 0x815410d4, 0x1264994e,
- 0x814ce188, 0x1232d979,
- 0x8145c5c7, 0x120116d5, 0x813ebd90, 0x11cf516a, 0x8137c8e6, 0x119d8941,
- 0x8130e7c9, 0x116bbe60,
- 0x812a1a3a, 0x1139f0cf, 0x8123603a, 0x11082096, 0x811cb9ca, 0x10d64dbd,
- 0x811626ec, 0x10a4784b,
- 0x810fa7a0, 0x1072a048, 0x81093be8, 0x1040c5bb, 0x8102e3c4, 0x100ee8ad,
- 0x80fc9f35, 0xfdd0926,
- 0x80f66e3c, 0xfab272b, 0x80f050db, 0xf7942c7, 0x80ea4712, 0xf475bff,
- 0x80e450e2, 0xf1572dc,
- 0x80de6e4c, 0xee38766, 0x80d89f51, 0xeb199a4, 0x80d2e3f2, 0xe7fa99e,
- 0x80cd3c2f, 0xe4db75b,
- 0x80c7a80a, 0xe1bc2e4, 0x80c22784, 0xde9cc40, 0x80bcba9d, 0xdb7d376,
- 0x80b76156, 0xd85d88f,
- 0x80b21baf, 0xd53db92, 0x80ace9ab, 0xd21dc87, 0x80a7cb49, 0xcefdb76,
- 0x80a2c08b, 0xcbdd865,
- 0x809dc971, 0xc8bd35e, 0x8098e5fb, 0xc59cc68, 0x8094162c, 0xc27c389,
- 0x808f5a02, 0xbf5b8cb,
- 0x808ab180, 0xbc3ac35, 0x80861ca6, 0xb919dcf, 0x80819b74, 0xb5f8d9f,
- 0x807d2dec, 0xb2d7baf,
- 0x8078d40d, 0xafb6805, 0x80748dd9, 0xac952aa, 0x80705b50, 0xa973ba5,
- 0x806c3c74, 0xa6522fe,
- 0x80683143, 0xa3308bd, 0x806439c0, 0xa00ece8, 0x806055eb, 0x9cecf89,
- 0x805c85c4, 0x99cb0a7,
- 0x8058c94c, 0x96a9049, 0x80552084, 0x9386e78, 0x80518b6b, 0x9064b3a,
- 0x804e0a04, 0x8d42699,
- 0x804a9c4d, 0x8a2009a, 0x80474248, 0x86fd947, 0x8043fbf6, 0x83db0a7,
- 0x8040c956, 0x80b86c2,
- 0x803daa6a, 0x7d95b9e, 0x803a9f31, 0x7a72f45, 0x8037a7ac, 0x77501be,
- 0x8034c3dd, 0x742d311,
- 0x8031f3c2, 0x710a345, 0x802f375d, 0x6de7262, 0x802c8ead, 0x6ac406f,
- 0x8029f9b4, 0x67a0d76,
- 0x80277872, 0x647d97c, 0x80250ae7, 0x615a48b, 0x8022b114, 0x5e36ea9,
- 0x80206af8, 0x5b137df,
- 0x801e3895, 0x57f0035, 0x801c19ea, 0x54cc7b1, 0x801a0ef8, 0x51a8e5c,
- 0x801817bf, 0x4e8543e,
- 0x80163440, 0x4b6195d, 0x8014647b, 0x483ddc3, 0x8012a86f, 0x451a177,
- 0x8011001f, 0x41f6480,
- 0x800f6b88, 0x3ed26e6, 0x800deaad, 0x3bae8b2, 0x800c7d8c, 0x388a9ea,
- 0x800b2427, 0x3566a96,
- 0x8009de7e, 0x3242abf, 0x8008ac90, 0x2f1ea6c, 0x80078e5e, 0x2bfa9a4,
- 0x800683e8, 0x28d6870,
- 0x80058d2f, 0x25b26d7, 0x8004aa32, 0x228e4e2, 0x8003daf1, 0x1f6a297,
- 0x80031f6d, 0x1c45ffe,
- 0x800277a6, 0x1921d20, 0x8001e39b, 0x15fda03, 0x8001634e, 0x12d96b1,
- 0x8000f6bd, 0xfb5330,
- 0x80009dea, 0xc90f88, 0x800058d4, 0x96cbc1, 0x8000277a, 0x6487e3,
- 0x800009df, 0x3243f5,
- 0x80000000, 0x0, 0x800009df, 0xffcdbc0b, 0x8000277a, 0xff9b781d, 0x800058d4,
- 0xff69343f,
- 0x80009dea, 0xff36f078, 0x8000f6bd, 0xff04acd0, 0x8001634e, 0xfed2694f,
- 0x8001e39b, 0xfea025fd,
- 0x800277a6, 0xfe6de2e0, 0x80031f6d, 0xfe3ba002, 0x8003daf1, 0xfe095d69,
- 0x8004aa32, 0xfdd71b1e,
- 0x80058d2f, 0xfda4d929, 0x800683e8, 0xfd729790, 0x80078e5e, 0xfd40565c,
- 0x8008ac90, 0xfd0e1594,
- 0x8009de7e, 0xfcdbd541, 0x800b2427, 0xfca9956a, 0x800c7d8c, 0xfc775616,
- 0x800deaad, 0xfc45174e,
- 0x800f6b88, 0xfc12d91a, 0x8011001f, 0xfbe09b80, 0x8012a86f, 0xfbae5e89,
- 0x8014647b, 0xfb7c223d,
- 0x80163440, 0xfb49e6a3, 0x801817bf, 0xfb17abc2, 0x801a0ef8, 0xfae571a4,
- 0x801c19ea, 0xfab3384f,
- 0x801e3895, 0xfa80ffcb, 0x80206af8, 0xfa4ec821, 0x8022b114, 0xfa1c9157,
- 0x80250ae7, 0xf9ea5b75,
- 0x80277872, 0xf9b82684, 0x8029f9b4, 0xf985f28a, 0x802c8ead, 0xf953bf91,
- 0x802f375d, 0xf9218d9e,
- 0x8031f3c2, 0xf8ef5cbb, 0x8034c3dd, 0xf8bd2cef, 0x8037a7ac, 0xf88afe42,
- 0x803a9f31, 0xf858d0bb,
- 0x803daa6a, 0xf826a462, 0x8040c956, 0xf7f4793e, 0x8043fbf6, 0xf7c24f59,
- 0x80474248, 0xf79026b9,
- 0x804a9c4d, 0xf75dff66, 0x804e0a04, 0xf72bd967, 0x80518b6b, 0xf6f9b4c6,
- 0x80552084, 0xf6c79188,
- 0x8058c94c, 0xf6956fb7, 0x805c85c4, 0xf6634f59, 0x806055eb, 0xf6313077,
- 0x806439c0, 0xf5ff1318,
- 0x80683143, 0xf5ccf743, 0x806c3c74, 0xf59add02, 0x80705b50, 0xf568c45b,
- 0x80748dd9, 0xf536ad56,
- 0x8078d40d, 0xf50497fb, 0x807d2dec, 0xf4d28451, 0x80819b74, 0xf4a07261,
- 0x80861ca6, 0xf46e6231,
- 0x808ab180, 0xf43c53cb, 0x808f5a02, 0xf40a4735, 0x8094162c, 0xf3d83c77,
- 0x8098e5fb, 0xf3a63398,
- 0x809dc971, 0xf3742ca2, 0x80a2c08b, 0xf342279b, 0x80a7cb49, 0xf310248a,
- 0x80ace9ab, 0xf2de2379,
- 0x80b21baf, 0xf2ac246e, 0x80b76156, 0xf27a2771, 0x80bcba9d, 0xf2482c8a,
- 0x80c22784, 0xf21633c0,
- 0x80c7a80a, 0xf1e43d1c, 0x80cd3c2f, 0xf1b248a5, 0x80d2e3f2, 0xf1805662,
- 0x80d89f51, 0xf14e665c,
- 0x80de6e4c, 0xf11c789a, 0x80e450e2, 0xf0ea8d24, 0x80ea4712, 0xf0b8a401,
- 0x80f050db, 0xf086bd39,
- 0x80f66e3c, 0xf054d8d5, 0x80fc9f35, 0xf022f6da, 0x8102e3c4, 0xeff11753,
- 0x81093be8, 0xefbf3a45,
- 0x810fa7a0, 0xef8d5fb8, 0x811626ec, 0xef5b87b5, 0x811cb9ca, 0xef29b243,
- 0x8123603a, 0xeef7df6a,
- 0x812a1a3a, 0xeec60f31, 0x8130e7c9, 0xee9441a0, 0x8137c8e6, 0xee6276bf,
- 0x813ebd90, 0xee30ae96,
- 0x8145c5c7, 0xedfee92b, 0x814ce188, 0xedcd2687, 0x815410d4, 0xed9b66b2,
- 0x815b53a8, 0xed69a9b3,
- 0x8162aa04, 0xed37ef91, 0x816a13e6, 0xed063856, 0x8171914e, 0xecd48407,
- 0x8179223a, 0xeca2d2ad,
- 0x8180c6a9, 0xec71244f, 0x81887e9a, 0xec3f78f6, 0x81904a0c, 0xec0dd0a8,
- 0x819828fd, 0xebdc2b6e,
- 0x81a01b6d, 0xebaa894f, 0x81a82159, 0xeb78ea52, 0x81b03ac2, 0xeb474e81,
- 0x81b867a5, 0xeb15b5e1,
- 0x81c0a801, 0xeae4207a, 0x81c8fbd6, 0xeab28e56, 0x81d16321, 0xea80ff7a,
- 0x81d9dde1, 0xea4f73ee,
- 0x81e26c16, 0xea1debbb, 0x81eb0dbe, 0xe9ec66e8, 0x81f3c2d7, 0xe9bae57d,
- 0x81fc8b60, 0xe9896781,
- 0x82056758, 0xe957ecfb, 0x820e56be, 0xe92675f4, 0x82175990, 0xe8f50273,
- 0x82206fcc, 0xe8c39280,
- 0x82299971, 0xe8922622, 0x8232d67f, 0xe860bd61, 0x823c26f3, 0xe82f5844,
- 0x82458acc, 0xe7fdf6d4,
- 0x824f0208, 0xe7cc9917, 0x82588ca7, 0xe79b3f16, 0x82622aa6, 0xe769e8d8,
- 0x826bdc04, 0xe7389665,
- 0x8275a0c0, 0xe70747c4, 0x827f78d8, 0xe6d5fcfc, 0x8289644b, 0xe6a4b616,
- 0x82936317, 0xe6737319,
- 0x829d753a, 0xe642340d, 0x82a79ab3, 0xe610f8f9, 0x82b1d381, 0xe5dfc1e5,
- 0x82bc1fa2, 0xe5ae8ed8,
- 0x82c67f14, 0xe57d5fda, 0x82d0f1d5, 0xe54c34f3, 0x82db77e5, 0xe51b0e2a,
- 0x82e61141, 0xe4e9eb87,
- 0x82f0bde8, 0xe4b8cd11, 0x82fb7dd8, 0xe487b2d0, 0x83065110, 0xe4569ccb,
- 0x8311378d, 0xe4258b0a,
- 0x831c314e, 0xe3f47d96, 0x83273e52, 0xe3c37474, 0x83325e97, 0xe3926fad,
- 0x833d921b, 0xe3616f48,
- 0x8348d8dc, 0xe330734d, 0x835432d8, 0xe2ff7bc3, 0x835fa00f, 0xe2ce88b3,
- 0x836b207d, 0xe29d9a23,
- 0x8376b422, 0xe26cb01b, 0x83825afb, 0xe23bcaa2, 0x838e1507, 0xe20ae9c1,
- 0x8399e244, 0xe1da0d7e,
- 0x83a5c2b0, 0xe1a935e2, 0x83b1b649, 0xe17862f3, 0x83bdbd0e, 0xe14794ba,
- 0x83c9d6fc, 0xe116cb3d,
- 0x83d60412, 0xe0e60685, 0x83e2444d, 0xe0b54698, 0x83ee97ad, 0xe0848b7f,
- 0x83fafe2e, 0xe053d541,
- 0x840777d0, 0xe02323e5, 0x84140490, 0xdff27773, 0x8420a46c, 0xdfc1cff3,
- 0x842d5762, 0xdf912d6b,
- 0x843a1d70, 0xdf608fe4, 0x8446f695, 0xdf2ff764, 0x8453e2cf, 0xdeff63f4,
- 0x8460e21a, 0xdeced59b,
- 0x846df477, 0xde9e4c60, 0x847b19e1, 0xde6dc84b, 0x84885258, 0xde3d4964,
- 0x84959dd9, 0xde0ccfb1,
- 0x84a2fc62, 0xdddc5b3b, 0x84b06df2, 0xddabec08, 0x84bdf286, 0xdd7b8220,
- 0x84cb8a1b, 0xdd4b1d8c,
- 0x84d934b1, 0xdd1abe51, 0x84e6f244, 0xdcea6478, 0x84f4c2d4, 0xdcba1008,
- 0x8502a65c, 0xdc89c109,
- 0x85109cdd, 0xdc597781, 0x851ea652, 0xdc293379, 0x852cc2bb, 0xdbf8f4f8,
- 0x853af214, 0xdbc8bc06,
- 0x8549345c, 0xdb9888a8, 0x85578991, 0xdb685ae9, 0x8565f1b0, 0xdb3832cd,
- 0x85746cb8, 0xdb08105e,
- 0x8582faa5, 0xdad7f3a2, 0x85919b76, 0xdaa7dca1, 0x85a04f28, 0xda77cb63,
- 0x85af15b9, 0xda47bfee,
- 0x85bdef28, 0xda17ba4a, 0x85ccdb70, 0xd9e7ba7f, 0x85dbda91, 0xd9b7c094,
- 0x85eaec88, 0xd987cc90,
- 0x85fa1153, 0xd957de7a, 0x860948ef, 0xd927f65b, 0x86189359, 0xd8f81439,
- 0x8627f091, 0xd8c8381d,
- 0x86376092, 0xd898620c, 0x8646e35c, 0xd868920f, 0x865678eb, 0xd838c82d,
- 0x8666213c, 0xd809046e,
- 0x8675dc4f, 0xd7d946d8, 0x8685aa20, 0xd7a98f73, 0x86958aac, 0xd779de47,
- 0x86a57df2, 0xd74a335b,
- 0x86b583ee, 0xd71a8eb5, 0x86c59c9f, 0xd6eaf05f, 0x86d5c802, 0xd6bb585e,
- 0x86e60614, 0xd68bc6ba,
- 0x86f656d3, 0xd65c3b7b, 0x8706ba3d, 0xd62cb6a8, 0x8717304e, 0xd5fd3848,
- 0x8727b905, 0xd5cdc062,
- 0x8738545e, 0xd59e4eff, 0x87490258, 0xd56ee424, 0x8759c2ef, 0xd53f7fda,
- 0x876a9621, 0xd5102228,
- 0x877b7bec, 0xd4e0cb15, 0x878c744d, 0xd4b17aa8, 0x879d7f41, 0xd48230e9,
- 0x87ae9cc5, 0xd452eddf,
- 0x87bfccd7, 0xd423b191, 0x87d10f75, 0xd3f47c06, 0x87e2649b, 0xd3c54d47,
- 0x87f3cc48, 0xd396255a,
- 0x88054677, 0xd3670446, 0x8816d327, 0xd337ea12, 0x88287256, 0xd308d6c7,
- 0x883a23ff, 0xd2d9ca6a,
- 0x884be821, 0xd2aac504, 0x885dbeb8, 0xd27bc69c, 0x886fa7c2, 0xd24ccf39,
- 0x8881a33d, 0xd21ddee2,
- 0x8893b125, 0xd1eef59e, 0x88a5d177, 0xd1c01375, 0x88b80432, 0xd191386e,
- 0x88ca4951, 0xd1626490,
- 0x88dca0d3, 0xd13397e2, 0x88ef0ab4, 0xd104d26b, 0x890186f2, 0xd0d61434,
- 0x89141589, 0xd0a75d42,
- 0x8926b677, 0xd078ad9e, 0x893969b9, 0xd04a054e, 0x894c2f4c, 0xd01b6459,
- 0x895f072e, 0xcfeccac7,
- 0x8971f15a, 0xcfbe389f, 0x8984edcf, 0xcf8fade9, 0x8997fc8a, 0xcf612aaa,
- 0x89ab1d87, 0xcf32aeeb,
- 0x89be50c3, 0xcf043ab3, 0x89d1963c, 0xced5ce08, 0x89e4edef, 0xcea768f2,
- 0x89f857d8, 0xce790b79,
- 0x8a0bd3f5, 0xce4ab5a2, 0x8a1f6243, 0xce1c6777, 0x8a3302be, 0xcdee20fc,
- 0x8a46b564, 0xcdbfe23a,
- 0x8a5a7a31, 0xcd91ab39, 0x8a6e5123, 0xcd637bfe, 0x8a823a36, 0xcd355491,
- 0x8a963567, 0xcd0734f9,
- 0x8aaa42b4, 0xccd91d3d, 0x8abe6219, 0xccab0d65, 0x8ad29394, 0xcc7d0578,
- 0x8ae6d720, 0xcc4f057c,
- 0x8afb2cbb, 0xcc210d79, 0x8b0f9462, 0xcbf31d75, 0x8b240e11, 0xcbc53579,
- 0x8b3899c6, 0xcb97558a,
- 0x8b4d377c, 0xcb697db0, 0x8b61e733, 0xcb3badf3, 0x8b76a8e4, 0xcb0de658,
- 0x8b8b7c8f, 0xcae026e8,
- 0x8ba0622f, 0xcab26fa9, 0x8bb559c1, 0xca84c0a3, 0x8bca6343, 0xca5719db,
- 0x8bdf7eb0, 0xca297b5a,
- 0x8bf4ac05, 0xc9fbe527, 0x8c09eb40, 0xc9ce5748, 0x8c1f3c5d, 0xc9a0d1c5,
- 0x8c349f58, 0xc97354a4,
- 0x8c4a142f, 0xc945dfec, 0x8c5f9ade, 0xc91873a5, 0x8c753362, 0xc8eb0fd6,
- 0x8c8addb7, 0xc8bdb485,
- 0x8ca099da, 0xc89061ba, 0x8cb667c8, 0xc863177b, 0x8ccc477d, 0xc835d5d0,
- 0x8ce238f6, 0xc8089cbf,
- 0x8cf83c30, 0xc7db6c50, 0x8d0e5127, 0xc7ae4489, 0x8d2477d8, 0xc7812572,
- 0x8d3ab03f, 0xc7540f11,
- 0x8d50fa59, 0xc727016d, 0x8d675623, 0xc6f9fc8d, 0x8d7dc399, 0xc6cd0079,
- 0x8d9442b8, 0xc6a00d37,
- 0x8daad37b, 0xc67322ce, 0x8dc175e0, 0xc6464144, 0x8dd829e4, 0xc61968a2,
- 0x8deeef82, 0xc5ec98ee,
- 0x8e05c6b7, 0xc5bfd22e, 0x8e1caf80, 0xc593146a, 0x8e33a9da, 0xc5665fa9,
- 0x8e4ab5bf, 0xc539b3f1,
- 0x8e61d32e, 0xc50d1149, 0x8e790222, 0xc4e077b8, 0x8e904298, 0xc4b3e746,
- 0x8ea7948c, 0xc4875ff9,
- 0x8ebef7fb, 0xc45ae1d7, 0x8ed66ce1, 0xc42e6ce8, 0x8eedf33b, 0xc4020133,
- 0x8f058b04, 0xc3d59ebe,
- 0x8f1d343a, 0xc3a94590, 0x8f34eed8, 0xc37cf5b0, 0x8f4cbadb, 0xc350af26,
- 0x8f649840, 0xc32471f7,
- 0x8f7c8701, 0xc2f83e2a, 0x8f94871d, 0xc2cc13c7, 0x8fac988f, 0xc29ff2d4,
- 0x8fc4bb53, 0xc273db58,
- 0x8fdcef66, 0xc247cd5a, 0x8ff534c4, 0xc21bc8e1, 0x900d8b69, 0xc1efcdf3,
- 0x9025f352, 0xc1c3dc97,
- 0x903e6c7b, 0xc197f4d4, 0x9056f6df, 0xc16c16b0, 0x906f927c, 0xc1404233,
- 0x90883f4d, 0xc1147764,
- 0x90a0fd4e, 0xc0e8b648, 0x90b9cc7d, 0xc0bcfee7, 0x90d2acd4, 0xc0915148,
- 0x90eb9e50, 0xc065ad70,
- 0x9104a0ee, 0xc03a1368, 0x911db4a9, 0xc00e8336, 0x9136d97d, 0xbfe2fcdf,
- 0x91500f67, 0xbfb7806c,
- 0x91695663, 0xbf8c0de3, 0x9182ae6d, 0xbf60a54a, 0x919c1781, 0xbf3546a8,
- 0x91b5919a, 0xbf09f205,
- 0x91cf1cb6, 0xbedea765, 0x91e8b8d0, 0xbeb366d1, 0x920265e4, 0xbe88304f,
- 0x921c23ef, 0xbe5d03e6,
- 0x9235f2ec, 0xbe31e19b, 0x924fd2d7, 0xbe06c977, 0x9269c3ac, 0xbddbbb7f,
- 0x9283c568, 0xbdb0b7bb,
- 0x929dd806, 0xbd85be30, 0x92b7fb82, 0xbd5acee5, 0x92d22fd9, 0xbd2fe9e2,
- 0x92ec7505, 0xbd050f2c,
- 0x9306cb04, 0xbcda3ecb, 0x932131d1, 0xbcaf78c4, 0x933ba968, 0xbc84bd1f,
- 0x935631c5, 0xbc5a0be2,
- 0x9370cae4, 0xbc2f6513, 0x938b74c1, 0xbc04c8ba, 0x93a62f57, 0xbbda36dd,
- 0x93c0faa3, 0xbbafaf82,
- 0x93dbd6a0, 0xbb8532b0, 0x93f6c34a, 0xbb5ac06d, 0x9411c09e, 0xbb3058c0,
- 0x942cce96, 0xbb05fbb0,
- 0x9447ed2f, 0xbadba943, 0x94631c65, 0xbab16180, 0x947e5c33, 0xba87246d,
- 0x9499ac95, 0xba5cf210,
- 0x94b50d87, 0xba32ca71, 0x94d07f05, 0xba08ad95, 0x94ec010b, 0xb9de9b83,
- 0x95079394, 0xb9b49442,
- 0x9523369c, 0xb98a97d8, 0x953eea1e, 0xb960a64c, 0x955aae17, 0xb936bfa4,
- 0x95768283, 0xb90ce3e6,
- 0x9592675c, 0xb8e31319, 0x95ae5c9f, 0xb8b94d44, 0x95ca6247, 0xb88f926d,
- 0x95e67850, 0xb865e299,
- 0x96029eb6, 0xb83c3dd1, 0x961ed574, 0xb812a41a, 0x963b1c86, 0xb7e9157a,
- 0x965773e7, 0xb7bf91f8,
- 0x9673db94, 0xb796199b, 0x96905388, 0xb76cac69, 0x96acdbbe, 0xb7434a67,
- 0x96c97432, 0xb719f39e,
- 0x96e61ce0, 0xb6f0a812, 0x9702d5c3, 0xb6c767ca, 0x971f9ed7, 0xb69e32cd,
- 0x973c7817, 0xb6750921,
- 0x9759617f, 0xb64beacd, 0x97765b0a, 0xb622d7d6, 0x979364b5, 0xb5f9d043,
- 0x97b07e7a, 0xb5d0d41a,
- 0x97cda855, 0xb5a7e362, 0x97eae242, 0xb57efe22, 0x98082c3b, 0xb556245e,
- 0x9825863d, 0xb52d561e,
- 0x9842f043, 0xb5049368, 0x98606a49, 0xb4dbdc42, 0x987df449, 0xb4b330b3,
- 0x989b8e40, 0xb48a90c0,
- 0x98b93828, 0xb461fc70, 0x98d6f1fe, 0xb43973ca, 0x98f4bbbc, 0xb410f6d3,
- 0x9912955f, 0xb3e88592,
- 0x99307ee0, 0xb3c0200c, 0x994e783d, 0xb397c649, 0x996c816f, 0xb36f784f,
- 0x998a9a74, 0xb3473623,
- 0x99a8c345, 0xb31effcc, 0x99c6fbde, 0xb2f6d550, 0x99e5443b, 0xb2ceb6b5,
- 0x9a039c57, 0xb2a6a402,
- 0x9a22042d, 0xb27e9d3c, 0x9a407bb9, 0xb256a26a, 0x9a5f02f5, 0xb22eb392,
- 0x9a7d99de, 0xb206d0ba,
- 0x9a9c406e, 0xb1def9e9, 0x9abaf6a1, 0xb1b72f23, 0x9ad9bc71, 0xb18f7071,
- 0x9af891db, 0xb167bdd7,
- 0x9b1776da, 0xb140175b, 0x9b366b68, 0xb1187d05, 0x9b556f81, 0xb0f0eeda,
- 0x9b748320, 0xb0c96ce0,
- 0x9b93a641, 0xb0a1f71d, 0x9bb2d8de, 0xb07a8d97, 0x9bd21af3, 0xb0533055,
- 0x9bf16c7a, 0xb02bdf5c,
- 0x9c10cd70, 0xb0049ab3, 0x9c303dcf, 0xafdd625f, 0x9c4fbd93, 0xafb63667,
- 0x9c6f4cb6, 0xaf8f16d1,
- 0x9c8eeb34, 0xaf6803a2, 0x9cae9907, 0xaf40fce1, 0x9cce562c, 0xaf1a0293,
- 0x9cee229c, 0xaef314c0,
- 0x9d0dfe54, 0xaecc336c, 0x9d2de94d, 0xaea55e9e, 0x9d4de385, 0xae7e965b,
- 0x9d6decf4, 0xae57daab,
- 0x9d8e0597, 0xae312b92, 0x9dae2d68, 0xae0a8916, 0x9dce6463, 0xade3f33e,
- 0x9deeaa82, 0xadbd6a10,
- 0x9e0effc1, 0xad96ed92, 0x9e2f641b, 0xad707dc8, 0x9e4fd78a, 0xad4a1aba,
- 0x9e705a09, 0xad23c46e,
- 0x9e90eb94, 0xacfd7ae8, 0x9eb18c26, 0xacd73e30, 0x9ed23bb9, 0xacb10e4b,
- 0x9ef2fa49, 0xac8aeb3e,
- 0x9f13c7d0, 0xac64d510, 0x9f34a449, 0xac3ecbc7, 0x9f558fb0, 0xac18cf69,
- 0x9f7689ff, 0xabf2dffb,
- 0x9f979331, 0xabccfd83, 0x9fb8ab41, 0xaba72807, 0x9fd9d22a, 0xab815f8d,
- 0x9ffb07e7, 0xab5ba41a,
- 0xa01c4c73, 0xab35f5b5, 0xa03d9fc8, 0xab105464, 0xa05f01e1, 0xaaeac02c,
- 0xa08072ba, 0xaac53912,
- 0xa0a1f24d, 0xaa9fbf1e, 0xa0c38095, 0xaa7a5253, 0xa0e51d8c, 0xaa54f2ba,
- 0xa106c92f, 0xaa2fa056,
- 0xa1288376, 0xaa0a5b2e, 0xa14a4c5e, 0xa9e52347, 0xa16c23e1, 0xa9bff8a8,
- 0xa18e09fa, 0xa99adb56,
- 0xa1affea3, 0xa975cb57, 0xa1d201d7, 0xa950c8b0, 0xa1f41392, 0xa92bd367,
- 0xa21633cd, 0xa906eb82,
- 0xa2386284, 0xa8e21106, 0xa25a9fb1, 0xa8bd43fa, 0xa27ceb4f, 0xa8988463,
- 0xa29f4559, 0xa873d246,
- 0xa2c1adc9, 0xa84f2daa, 0xa2e4249b, 0xa82a9693, 0xa306a9c8, 0xa8060d08,
- 0xa3293d4b, 0xa7e1910f,
- 0xa34bdf20, 0xa7bd22ac, 0xa36e8f41, 0xa798c1e5, 0xa3914da8, 0xa7746ec0,
- 0xa3b41a50, 0xa7502943,
- 0xa3d6f534, 0xa72bf174, 0xa3f9de4e, 0xa707c757, 0xa41cd599, 0xa6e3aaf2,
- 0xa43fdb10, 0xa6bf9c4b,
- 0xa462eeac, 0xa69b9b68, 0xa486106a, 0xa677a84e, 0xa4a94043, 0xa653c303,
- 0xa4cc7e32, 0xa62feb8b,
- 0xa4efca31, 0xa60c21ee, 0xa513243b, 0xa5e8662f, 0xa5368c4b, 0xa5c4b855,
- 0xa55a025b, 0xa5a11866,
- 0xa57d8666, 0xa57d8666, 0xa5a11866, 0xa55a025b, 0xa5c4b855, 0xa5368c4b,
- 0xa5e8662f, 0xa513243b,
- 0xa60c21ee, 0xa4efca31, 0xa62feb8b, 0xa4cc7e32, 0xa653c303, 0xa4a94043,
- 0xa677a84e, 0xa486106a,
- 0xa69b9b68, 0xa462eeac, 0xa6bf9c4b, 0xa43fdb10, 0xa6e3aaf2, 0xa41cd599,
- 0xa707c757, 0xa3f9de4e,
- 0xa72bf174, 0xa3d6f534, 0xa7502943, 0xa3b41a50, 0xa7746ec0, 0xa3914da8,
- 0xa798c1e5, 0xa36e8f41,
- 0xa7bd22ac, 0xa34bdf20, 0xa7e1910f, 0xa3293d4b, 0xa8060d08, 0xa306a9c8,
- 0xa82a9693, 0xa2e4249b,
- 0xa84f2daa, 0xa2c1adc9, 0xa873d246, 0xa29f4559, 0xa8988463, 0xa27ceb4f,
- 0xa8bd43fa, 0xa25a9fb1,
- 0xa8e21106, 0xa2386284, 0xa906eb82, 0xa21633cd, 0xa92bd367, 0xa1f41392,
- 0xa950c8b0, 0xa1d201d7,
- 0xa975cb57, 0xa1affea3, 0xa99adb56, 0xa18e09fa, 0xa9bff8a8, 0xa16c23e1,
- 0xa9e52347, 0xa14a4c5e,
- 0xaa0a5b2e, 0xa1288376, 0xaa2fa056, 0xa106c92f, 0xaa54f2ba, 0xa0e51d8c,
- 0xaa7a5253, 0xa0c38095,
- 0xaa9fbf1e, 0xa0a1f24d, 0xaac53912, 0xa08072ba, 0xaaeac02c, 0xa05f01e1,
- 0xab105464, 0xa03d9fc8,
- 0xab35f5b5, 0xa01c4c73, 0xab5ba41a, 0x9ffb07e7, 0xab815f8d, 0x9fd9d22a,
- 0xaba72807, 0x9fb8ab41,
- 0xabccfd83, 0x9f979331, 0xabf2dffb, 0x9f7689ff, 0xac18cf69, 0x9f558fb0,
- 0xac3ecbc7, 0x9f34a449,
- 0xac64d510, 0x9f13c7d0, 0xac8aeb3e, 0x9ef2fa49, 0xacb10e4b, 0x9ed23bb9,
- 0xacd73e30, 0x9eb18c26,
- 0xacfd7ae8, 0x9e90eb94, 0xad23c46e, 0x9e705a09, 0xad4a1aba, 0x9e4fd78a,
- 0xad707dc8, 0x9e2f641b,
- 0xad96ed92, 0x9e0effc1, 0xadbd6a10, 0x9deeaa82, 0xade3f33e, 0x9dce6463,
- 0xae0a8916, 0x9dae2d68,
- 0xae312b92, 0x9d8e0597, 0xae57daab, 0x9d6decf4, 0xae7e965b, 0x9d4de385,
- 0xaea55e9e, 0x9d2de94d,
- 0xaecc336c, 0x9d0dfe54, 0xaef314c0, 0x9cee229c, 0xaf1a0293, 0x9cce562c,
- 0xaf40fce1, 0x9cae9907,
- 0xaf6803a2, 0x9c8eeb34, 0xaf8f16d1, 0x9c6f4cb6, 0xafb63667, 0x9c4fbd93,
- 0xafdd625f, 0x9c303dcf,
- 0xb0049ab3, 0x9c10cd70, 0xb02bdf5c, 0x9bf16c7a, 0xb0533055, 0x9bd21af3,
- 0xb07a8d97, 0x9bb2d8de,
- 0xb0a1f71d, 0x9b93a641, 0xb0c96ce0, 0x9b748320, 0xb0f0eeda, 0x9b556f81,
- 0xb1187d05, 0x9b366b68,
- 0xb140175b, 0x9b1776da, 0xb167bdd7, 0x9af891db, 0xb18f7071, 0x9ad9bc71,
- 0xb1b72f23, 0x9abaf6a1,
- 0xb1def9e9, 0x9a9c406e, 0xb206d0ba, 0x9a7d99de, 0xb22eb392, 0x9a5f02f5,
- 0xb256a26a, 0x9a407bb9,
- 0xb27e9d3c, 0x9a22042d, 0xb2a6a402, 0x9a039c57, 0xb2ceb6b5, 0x99e5443b,
- 0xb2f6d550, 0x99c6fbde,
- 0xb31effcc, 0x99a8c345, 0xb3473623, 0x998a9a74, 0xb36f784f, 0x996c816f,
- 0xb397c649, 0x994e783d,
- 0xb3c0200c, 0x99307ee0, 0xb3e88592, 0x9912955f, 0xb410f6d3, 0x98f4bbbc,
- 0xb43973ca, 0x98d6f1fe,
- 0xb461fc70, 0x98b93828, 0xb48a90c0, 0x989b8e40, 0xb4b330b3, 0x987df449,
- 0xb4dbdc42, 0x98606a49,
- 0xb5049368, 0x9842f043, 0xb52d561e, 0x9825863d, 0xb556245e, 0x98082c3b,
- 0xb57efe22, 0x97eae242,
- 0xb5a7e362, 0x97cda855, 0xb5d0d41a, 0x97b07e7a, 0xb5f9d043, 0x979364b5,
- 0xb622d7d6, 0x97765b0a,
- 0xb64beacd, 0x9759617f, 0xb6750921, 0x973c7817, 0xb69e32cd, 0x971f9ed7,
- 0xb6c767ca, 0x9702d5c3,
- 0xb6f0a812, 0x96e61ce0, 0xb719f39e, 0x96c97432, 0xb7434a67, 0x96acdbbe,
- 0xb76cac69, 0x96905388,
- 0xb796199b, 0x9673db94, 0xb7bf91f8, 0x965773e7, 0xb7e9157a, 0x963b1c86,
- 0xb812a41a, 0x961ed574,
- 0xb83c3dd1, 0x96029eb6, 0xb865e299, 0x95e67850, 0xb88f926d, 0x95ca6247,
- 0xb8b94d44, 0x95ae5c9f,
- 0xb8e31319, 0x9592675c, 0xb90ce3e6, 0x95768283, 0xb936bfa4, 0x955aae17,
- 0xb960a64c, 0x953eea1e,
- 0xb98a97d8, 0x9523369c, 0xb9b49442, 0x95079394, 0xb9de9b83, 0x94ec010b,
- 0xba08ad95, 0x94d07f05,
- 0xba32ca71, 0x94b50d87, 0xba5cf210, 0x9499ac95, 0xba87246d, 0x947e5c33,
- 0xbab16180, 0x94631c65,
- 0xbadba943, 0x9447ed2f, 0xbb05fbb0, 0x942cce96, 0xbb3058c0, 0x9411c09e,
- 0xbb5ac06d, 0x93f6c34a,
- 0xbb8532b0, 0x93dbd6a0, 0xbbafaf82, 0x93c0faa3, 0xbbda36dd, 0x93a62f57,
- 0xbc04c8ba, 0x938b74c1,
- 0xbc2f6513, 0x9370cae4, 0xbc5a0be2, 0x935631c5, 0xbc84bd1f, 0x933ba968,
- 0xbcaf78c4, 0x932131d1,
- 0xbcda3ecb, 0x9306cb04, 0xbd050f2c, 0x92ec7505, 0xbd2fe9e2, 0x92d22fd9,
- 0xbd5acee5, 0x92b7fb82,
- 0xbd85be30, 0x929dd806, 0xbdb0b7bb, 0x9283c568, 0xbddbbb7f, 0x9269c3ac,
- 0xbe06c977, 0x924fd2d7,
- 0xbe31e19b, 0x9235f2ec, 0xbe5d03e6, 0x921c23ef, 0xbe88304f, 0x920265e4,
- 0xbeb366d1, 0x91e8b8d0,
- 0xbedea765, 0x91cf1cb6, 0xbf09f205, 0x91b5919a, 0xbf3546a8, 0x919c1781,
- 0xbf60a54a, 0x9182ae6d,
- 0xbf8c0de3, 0x91695663, 0xbfb7806c, 0x91500f67, 0xbfe2fcdf, 0x9136d97d,
- 0xc00e8336, 0x911db4a9,
- 0xc03a1368, 0x9104a0ee, 0xc065ad70, 0x90eb9e50, 0xc0915148, 0x90d2acd4,
- 0xc0bcfee7, 0x90b9cc7d,
- 0xc0e8b648, 0x90a0fd4e, 0xc1147764, 0x90883f4d, 0xc1404233, 0x906f927c,
- 0xc16c16b0, 0x9056f6df,
- 0xc197f4d4, 0x903e6c7b, 0xc1c3dc97, 0x9025f352, 0xc1efcdf3, 0x900d8b69,
- 0xc21bc8e1, 0x8ff534c4,
- 0xc247cd5a, 0x8fdcef66, 0xc273db58, 0x8fc4bb53, 0xc29ff2d4, 0x8fac988f,
- 0xc2cc13c7, 0x8f94871d,
- 0xc2f83e2a, 0x8f7c8701, 0xc32471f7, 0x8f649840, 0xc350af26, 0x8f4cbadb,
- 0xc37cf5b0, 0x8f34eed8,
- 0xc3a94590, 0x8f1d343a, 0xc3d59ebe, 0x8f058b04, 0xc4020133, 0x8eedf33b,
- 0xc42e6ce8, 0x8ed66ce1,
- 0xc45ae1d7, 0x8ebef7fb, 0xc4875ff9, 0x8ea7948c, 0xc4b3e746, 0x8e904298,
- 0xc4e077b8, 0x8e790222,
- 0xc50d1149, 0x8e61d32e, 0xc539b3f1, 0x8e4ab5bf, 0xc5665fa9, 0x8e33a9da,
- 0xc593146a, 0x8e1caf80,
- 0xc5bfd22e, 0x8e05c6b7, 0xc5ec98ee, 0x8deeef82, 0xc61968a2, 0x8dd829e4,
- 0xc6464144, 0x8dc175e0,
- 0xc67322ce, 0x8daad37b, 0xc6a00d37, 0x8d9442b8, 0xc6cd0079, 0x8d7dc399,
- 0xc6f9fc8d, 0x8d675623,
- 0xc727016d, 0x8d50fa59, 0xc7540f11, 0x8d3ab03f, 0xc7812572, 0x8d2477d8,
- 0xc7ae4489, 0x8d0e5127,
- 0xc7db6c50, 0x8cf83c30, 0xc8089cbf, 0x8ce238f6, 0xc835d5d0, 0x8ccc477d,
- 0xc863177b, 0x8cb667c8,
- 0xc89061ba, 0x8ca099da, 0xc8bdb485, 0x8c8addb7, 0xc8eb0fd6, 0x8c753362,
- 0xc91873a5, 0x8c5f9ade,
- 0xc945dfec, 0x8c4a142f, 0xc97354a4, 0x8c349f58, 0xc9a0d1c5, 0x8c1f3c5d,
- 0xc9ce5748, 0x8c09eb40,
- 0xc9fbe527, 0x8bf4ac05, 0xca297b5a, 0x8bdf7eb0, 0xca5719db, 0x8bca6343,
- 0xca84c0a3, 0x8bb559c1,
- 0xcab26fa9, 0x8ba0622f, 0xcae026e8, 0x8b8b7c8f, 0xcb0de658, 0x8b76a8e4,
- 0xcb3badf3, 0x8b61e733,
- 0xcb697db0, 0x8b4d377c, 0xcb97558a, 0x8b3899c6, 0xcbc53579, 0x8b240e11,
- 0xcbf31d75, 0x8b0f9462,
- 0xcc210d79, 0x8afb2cbb, 0xcc4f057c, 0x8ae6d720, 0xcc7d0578, 0x8ad29394,
- 0xccab0d65, 0x8abe6219,
- 0xccd91d3d, 0x8aaa42b4, 0xcd0734f9, 0x8a963567, 0xcd355491, 0x8a823a36,
- 0xcd637bfe, 0x8a6e5123,
- 0xcd91ab39, 0x8a5a7a31, 0xcdbfe23a, 0x8a46b564, 0xcdee20fc, 0x8a3302be,
- 0xce1c6777, 0x8a1f6243,
- 0xce4ab5a2, 0x8a0bd3f5, 0xce790b79, 0x89f857d8, 0xcea768f2, 0x89e4edef,
- 0xced5ce08, 0x89d1963c,
- 0xcf043ab3, 0x89be50c3, 0xcf32aeeb, 0x89ab1d87, 0xcf612aaa, 0x8997fc8a,
- 0xcf8fade9, 0x8984edcf,
- 0xcfbe389f, 0x8971f15a, 0xcfeccac7, 0x895f072e, 0xd01b6459, 0x894c2f4c,
- 0xd04a054e, 0x893969b9,
- 0xd078ad9e, 0x8926b677, 0xd0a75d42, 0x89141589, 0xd0d61434, 0x890186f2,
- 0xd104d26b, 0x88ef0ab4,
- 0xd13397e2, 0x88dca0d3, 0xd1626490, 0x88ca4951, 0xd191386e, 0x88b80432,
- 0xd1c01375, 0x88a5d177,
- 0xd1eef59e, 0x8893b125, 0xd21ddee2, 0x8881a33d, 0xd24ccf39, 0x886fa7c2,
- 0xd27bc69c, 0x885dbeb8,
- 0xd2aac504, 0x884be821, 0xd2d9ca6a, 0x883a23ff, 0xd308d6c7, 0x88287256,
- 0xd337ea12, 0x8816d327,
- 0xd3670446, 0x88054677, 0xd396255a, 0x87f3cc48, 0xd3c54d47, 0x87e2649b,
- 0xd3f47c06, 0x87d10f75,
- 0xd423b191, 0x87bfccd7, 0xd452eddf, 0x87ae9cc5, 0xd48230e9, 0x879d7f41,
- 0xd4b17aa8, 0x878c744d,
- 0xd4e0cb15, 0x877b7bec, 0xd5102228, 0x876a9621, 0xd53f7fda, 0x8759c2ef,
- 0xd56ee424, 0x87490258,
- 0xd59e4eff, 0x8738545e, 0xd5cdc062, 0x8727b905, 0xd5fd3848, 0x8717304e,
- 0xd62cb6a8, 0x8706ba3d,
- 0xd65c3b7b, 0x86f656d3, 0xd68bc6ba, 0x86e60614, 0xd6bb585e, 0x86d5c802,
- 0xd6eaf05f, 0x86c59c9f,
- 0xd71a8eb5, 0x86b583ee, 0xd74a335b, 0x86a57df2, 0xd779de47, 0x86958aac,
- 0xd7a98f73, 0x8685aa20,
- 0xd7d946d8, 0x8675dc4f, 0xd809046e, 0x8666213c, 0xd838c82d, 0x865678eb,
- 0xd868920f, 0x8646e35c,
- 0xd898620c, 0x86376092, 0xd8c8381d, 0x8627f091, 0xd8f81439, 0x86189359,
- 0xd927f65b, 0x860948ef,
- 0xd957de7a, 0x85fa1153, 0xd987cc90, 0x85eaec88, 0xd9b7c094, 0x85dbda91,
- 0xd9e7ba7f, 0x85ccdb70,
- 0xda17ba4a, 0x85bdef28, 0xda47bfee, 0x85af15b9, 0xda77cb63, 0x85a04f28,
- 0xdaa7dca1, 0x85919b76,
- 0xdad7f3a2, 0x8582faa5, 0xdb08105e, 0x85746cb8, 0xdb3832cd, 0x8565f1b0,
- 0xdb685ae9, 0x85578991,
- 0xdb9888a8, 0x8549345c, 0xdbc8bc06, 0x853af214, 0xdbf8f4f8, 0x852cc2bb,
- 0xdc293379, 0x851ea652,
- 0xdc597781, 0x85109cdd, 0xdc89c109, 0x8502a65c, 0xdcba1008, 0x84f4c2d4,
- 0xdcea6478, 0x84e6f244,
- 0xdd1abe51, 0x84d934b1, 0xdd4b1d8c, 0x84cb8a1b, 0xdd7b8220, 0x84bdf286,
- 0xddabec08, 0x84b06df2,
- 0xdddc5b3b, 0x84a2fc62, 0xde0ccfb1, 0x84959dd9, 0xde3d4964, 0x84885258,
- 0xde6dc84b, 0x847b19e1,
- 0xde9e4c60, 0x846df477, 0xdeced59b, 0x8460e21a, 0xdeff63f4, 0x8453e2cf,
- 0xdf2ff764, 0x8446f695,
- 0xdf608fe4, 0x843a1d70, 0xdf912d6b, 0x842d5762, 0xdfc1cff3, 0x8420a46c,
- 0xdff27773, 0x84140490,
- 0xe02323e5, 0x840777d0, 0xe053d541, 0x83fafe2e, 0xe0848b7f, 0x83ee97ad,
- 0xe0b54698, 0x83e2444d,
- 0xe0e60685, 0x83d60412, 0xe116cb3d, 0x83c9d6fc, 0xe14794ba, 0x83bdbd0e,
- 0xe17862f3, 0x83b1b649,
- 0xe1a935e2, 0x83a5c2b0, 0xe1da0d7e, 0x8399e244, 0xe20ae9c1, 0x838e1507,
- 0xe23bcaa2, 0x83825afb,
- 0xe26cb01b, 0x8376b422, 0xe29d9a23, 0x836b207d, 0xe2ce88b3, 0x835fa00f,
- 0xe2ff7bc3, 0x835432d8,
- 0xe330734d, 0x8348d8dc, 0xe3616f48, 0x833d921b, 0xe3926fad, 0x83325e97,
- 0xe3c37474, 0x83273e52,
- 0xe3f47d96, 0x831c314e, 0xe4258b0a, 0x8311378d, 0xe4569ccb, 0x83065110,
- 0xe487b2d0, 0x82fb7dd8,
- 0xe4b8cd11, 0x82f0bde8, 0xe4e9eb87, 0x82e61141, 0xe51b0e2a, 0x82db77e5,
- 0xe54c34f3, 0x82d0f1d5,
- 0xe57d5fda, 0x82c67f14, 0xe5ae8ed8, 0x82bc1fa2, 0xe5dfc1e5, 0x82b1d381,
- 0xe610f8f9, 0x82a79ab3,
- 0xe642340d, 0x829d753a, 0xe6737319, 0x82936317, 0xe6a4b616, 0x8289644b,
- 0xe6d5fcfc, 0x827f78d8,
- 0xe70747c4, 0x8275a0c0, 0xe7389665, 0x826bdc04, 0xe769e8d8, 0x82622aa6,
- 0xe79b3f16, 0x82588ca7,
- 0xe7cc9917, 0x824f0208, 0xe7fdf6d4, 0x82458acc, 0xe82f5844, 0x823c26f3,
- 0xe860bd61, 0x8232d67f,
- 0xe8922622, 0x82299971, 0xe8c39280, 0x82206fcc, 0xe8f50273, 0x82175990,
- 0xe92675f4, 0x820e56be,
- 0xe957ecfb, 0x82056758, 0xe9896781, 0x81fc8b60, 0xe9bae57d, 0x81f3c2d7,
- 0xe9ec66e8, 0x81eb0dbe,
- 0xea1debbb, 0x81e26c16, 0xea4f73ee, 0x81d9dde1, 0xea80ff7a, 0x81d16321,
- 0xeab28e56, 0x81c8fbd6,
- 0xeae4207a, 0x81c0a801, 0xeb15b5e1, 0x81b867a5, 0xeb474e81, 0x81b03ac2,
- 0xeb78ea52, 0x81a82159,
- 0xebaa894f, 0x81a01b6d, 0xebdc2b6e, 0x819828fd, 0xec0dd0a8, 0x81904a0c,
- 0xec3f78f6, 0x81887e9a,
- 0xec71244f, 0x8180c6a9, 0xeca2d2ad, 0x8179223a, 0xecd48407, 0x8171914e,
- 0xed063856, 0x816a13e6,
- 0xed37ef91, 0x8162aa04, 0xed69a9b3, 0x815b53a8, 0xed9b66b2, 0x815410d4,
- 0xedcd2687, 0x814ce188,
- 0xedfee92b, 0x8145c5c7, 0xee30ae96, 0x813ebd90, 0xee6276bf, 0x8137c8e6,
- 0xee9441a0, 0x8130e7c9,
- 0xeec60f31, 0x812a1a3a, 0xeef7df6a, 0x8123603a, 0xef29b243, 0x811cb9ca,
- 0xef5b87b5, 0x811626ec,
- 0xef8d5fb8, 0x810fa7a0, 0xefbf3a45, 0x81093be8, 0xeff11753, 0x8102e3c4,
- 0xf022f6da, 0x80fc9f35,
- 0xf054d8d5, 0x80f66e3c, 0xf086bd39, 0x80f050db, 0xf0b8a401, 0x80ea4712,
- 0xf0ea8d24, 0x80e450e2,
- 0xf11c789a, 0x80de6e4c, 0xf14e665c, 0x80d89f51, 0xf1805662, 0x80d2e3f2,
- 0xf1b248a5, 0x80cd3c2f,
- 0xf1e43d1c, 0x80c7a80a, 0xf21633c0, 0x80c22784, 0xf2482c8a, 0x80bcba9d,
- 0xf27a2771, 0x80b76156,
- 0xf2ac246e, 0x80b21baf, 0xf2de2379, 0x80ace9ab, 0xf310248a, 0x80a7cb49,
- 0xf342279b, 0x80a2c08b,
- 0xf3742ca2, 0x809dc971, 0xf3a63398, 0x8098e5fb, 0xf3d83c77, 0x8094162c,
- 0xf40a4735, 0x808f5a02,
- 0xf43c53cb, 0x808ab180, 0xf46e6231, 0x80861ca6, 0xf4a07261, 0x80819b74,
- 0xf4d28451, 0x807d2dec,
- 0xf50497fb, 0x8078d40d, 0xf536ad56, 0x80748dd9, 0xf568c45b, 0x80705b50,
- 0xf59add02, 0x806c3c74,
- 0xf5ccf743, 0x80683143, 0xf5ff1318, 0x806439c0, 0xf6313077, 0x806055eb,
- 0xf6634f59, 0x805c85c4,
- 0xf6956fb7, 0x8058c94c, 0xf6c79188, 0x80552084, 0xf6f9b4c6, 0x80518b6b,
- 0xf72bd967, 0x804e0a04,
- 0xf75dff66, 0x804a9c4d, 0xf79026b9, 0x80474248, 0xf7c24f59, 0x8043fbf6,
- 0xf7f4793e, 0x8040c956,
- 0xf826a462, 0x803daa6a, 0xf858d0bb, 0x803a9f31, 0xf88afe42, 0x8037a7ac,
- 0xf8bd2cef, 0x8034c3dd,
- 0xf8ef5cbb, 0x8031f3c2, 0xf9218d9e, 0x802f375d, 0xf953bf91, 0x802c8ead,
- 0xf985f28a, 0x8029f9b4,
- 0xf9b82684, 0x80277872, 0xf9ea5b75, 0x80250ae7, 0xfa1c9157, 0x8022b114,
- 0xfa4ec821, 0x80206af8,
- 0xfa80ffcb, 0x801e3895, 0xfab3384f, 0x801c19ea, 0xfae571a4, 0x801a0ef8,
- 0xfb17abc2, 0x801817bf,
- 0xfb49e6a3, 0x80163440, 0xfb7c223d, 0x8014647b, 0xfbae5e89, 0x8012a86f,
- 0xfbe09b80, 0x8011001f,
- 0xfc12d91a, 0x800f6b88, 0xfc45174e, 0x800deaad, 0xfc775616, 0x800c7d8c,
- 0xfca9956a, 0x800b2427,
- 0xfcdbd541, 0x8009de7e, 0xfd0e1594, 0x8008ac90, 0xfd40565c, 0x80078e5e,
- 0xfd729790, 0x800683e8,
- 0xfda4d929, 0x80058d2f, 0xfdd71b1e, 0x8004aa32, 0xfe095d69, 0x8003daf1,
- 0xfe3ba002, 0x80031f6d,
- 0xfe6de2e0, 0x800277a6, 0xfea025fd, 0x8001e39b, 0xfed2694f, 0x8001634e,
- 0xff04acd0, 0x8000f6bd,
- 0xff36f078, 0x80009dea, 0xff69343f, 0x800058d4, 0xff9b781d, 0x8000277a,
- 0xffcdbc0b, 0x800009df,
-
-};
+const q31_t twiddleCoef_4096_q31[6144] =
+{
+ 0x7FFFFFFF, 0x00000000,
+ 0x7FFFF621, 0x003243F5,
+ 0x7FFFD885, 0x006487E3,
+ 0x7FFFA72C, 0x0096CBC1,
+ 0x7FFF6216, 0x00C90F88,
+ 0x7FFF0942, 0x00FB532F,
+ 0x7FFE9CB2, 0x012D96B0,
+ 0x7FFE1C64, 0x015FDA03,
+ 0x7FFD885A, 0x01921D1F,
+ 0x7FFCE093, 0x01C45FFE,
+ 0x7FFC250F, 0x01F6A296,
+ 0x7FFB55CE, 0x0228E4E1,
+ 0x7FFA72D1, 0x025B26D7,
+ 0x7FF97C17, 0x028D6870,
+ 0x7FF871A1, 0x02BFA9A4,
+ 0x7FF7536F, 0x02F1EA6B,
+ 0x7FF62182, 0x03242ABF,
+ 0x7FF4DBD8, 0x03566A96,
+ 0x7FF38273, 0x0388A9E9,
+ 0x7FF21553, 0x03BAE8B1,
+ 0x7FF09477, 0x03ED26E6,
+ 0x7FEEFFE1, 0x041F647F,
+ 0x7FED5790, 0x0451A176,
+ 0x7FEB9B85, 0x0483DDC3,
+ 0x7FE9CBC0, 0x04B6195D,
+ 0x7FE7E840, 0x04E8543D,
+ 0x7FE5F108, 0x051A8E5C,
+ 0x7FE3E616, 0x054CC7B0,
+ 0x7FE1C76B, 0x057F0034,
+ 0x7FDF9508, 0x05B137DF,
+ 0x7FDD4EEC, 0x05E36EA9,
+ 0x7FDAF518, 0x0615A48A,
+ 0x7FD8878D, 0x0647D97C,
+ 0x7FD6064B, 0x067A0D75,
+ 0x7FD37152, 0x06AC406F,
+ 0x7FD0C8A3, 0x06DE7261,
+ 0x7FCE0C3E, 0x0710A344,
+ 0x7FCB3C23, 0x0742D310,
+ 0x7FC85853, 0x077501BE,
+ 0x7FC560CF, 0x07A72F45,
+ 0x7FC25596, 0x07D95B9E,
+ 0x7FBF36A9, 0x080B86C1,
+ 0x7FBC040A, 0x083DB0A7,
+ 0x7FB8BDB7, 0x086FD947,
+ 0x7FB563B2, 0x08A2009A,
+ 0x7FB1F5FC, 0x08D42698,
+ 0x7FAE7494, 0x09064B3A,
+ 0x7FAADF7C, 0x09386E77,
+ 0x7FA736B4, 0x096A9049,
+ 0x7FA37A3C, 0x099CB0A7,
+ 0x7F9FAA15, 0x09CECF89,
+ 0x7F9BC63F, 0x0A00ECE8,
+ 0x7F97CEBC, 0x0A3308BC,
+ 0x7F93C38C, 0x0A6522FE,
+ 0x7F8FA4AF, 0x0A973BA5,
+ 0x7F8B7226, 0x0AC952AA,
+ 0x7F872BF3, 0x0AFB6805,
+ 0x7F82D214, 0x0B2D7BAE,
+ 0x7F7E648B, 0x0B5F8D9F,
+ 0x7F79E35A, 0x0B919DCE,
+ 0x7F754E7F, 0x0BC3AC35,
+ 0x7F70A5FD, 0x0BF5B8CB,
+ 0x7F6BE9D4, 0x0C27C389,
+ 0x7F671A04, 0x0C59CC67,
+ 0x7F62368F, 0x0C8BD35E,
+ 0x7F5D3F75, 0x0CBDD865,
+ 0x7F5834B6, 0x0CEFDB75,
+ 0x7F531654, 0x0D21DC87,
+ 0x7F4DE450, 0x0D53DB92,
+ 0x7F489EAA, 0x0D85D88F,
+ 0x7F434563, 0x0DB7D376,
+ 0x7F3DD87C, 0x0DE9CC3F,
+ 0x7F3857F5, 0x0E1BC2E3,
+ 0x7F32C3D0, 0x0E4DB75B,
+ 0x7F2D1C0E, 0x0E7FA99D,
+ 0x7F2760AF, 0x0EB199A3,
+ 0x7F2191B4, 0x0EE38765,
+ 0x7F1BAF1E, 0x0F1572DC,
+ 0x7F15B8EE, 0x0F475BFE,
+ 0x7F0FAF24, 0x0F7942C6,
+ 0x7F0991C3, 0x0FAB272B,
+ 0x7F0360CB, 0x0FDD0925,
+ 0x7EFD1C3C, 0x100EE8AD,
+ 0x7EF6C418, 0x1040C5BB,
+ 0x7EF0585F, 0x1072A047,
+ 0x7EE9D913, 0x10A4784A,
+ 0x7EE34635, 0x10D64DBC,
+ 0x7EDC9FC6, 0x11082096,
+ 0x7ED5E5C6, 0x1139F0CE,
+ 0x7ECF1837, 0x116BBE5F,
+ 0x7EC8371A, 0x119D8940,
+ 0x7EC1426F, 0x11CF516A,
+ 0x7EBA3A39, 0x120116D4,
+ 0x7EB31E77, 0x1232D978,
+ 0x7EABEF2C, 0x1264994E,
+ 0x7EA4AC58, 0x1296564D,
+ 0x7E9D55FC, 0x12C8106E,
+ 0x7E95EC19, 0x12F9C7AA,
+ 0x7E8E6EB1, 0x132B7BF9,
+ 0x7E86DDC5, 0x135D2D53,
+ 0x7E7F3956, 0x138EDBB0,
+ 0x7E778165, 0x13C0870A,
+ 0x7E6FB5F3, 0x13F22F57,
+ 0x7E67D702, 0x1423D492,
+ 0x7E5FE493, 0x145576B1,
+ 0x7E57DEA6, 0x148715AD,
+ 0x7E4FC53E, 0x14B8B17F,
+ 0x7E47985B, 0x14EA4A1F,
+ 0x7E3F57FE, 0x151BDF85,
+ 0x7E37042A, 0x154D71AA,
+ 0x7E2E9CDF, 0x157F0086,
+ 0x7E26221E, 0x15B08C11,
+ 0x7E1D93E9, 0x15E21444,
+ 0x7E14F242, 0x16139917,
+ 0x7E0C3D29, 0x16451A83,
+ 0x7E03749F, 0x1676987F,
+ 0x7DFA98A7, 0x16A81305,
+ 0x7DF1A942, 0x16D98A0C,
+ 0x7DE8A670, 0x170AFD8D,
+ 0x7DDF9034, 0x173C6D80,
+ 0x7DD6668E, 0x176DD9DE,
+ 0x7DCD2981, 0x179F429F,
+ 0x7DC3D90D, 0x17D0A7BB,
+ 0x7DBA7534, 0x1802092C,
+ 0x7DB0FDF7, 0x183366E8,
+ 0x7DA77359, 0x1864C0E9,
+ 0x7D9DD55A, 0x18961727,
+ 0x7D9423FB, 0x18C7699B,
+ 0x7D8A5F3F, 0x18F8B83C,
+ 0x7D808727, 0x192A0303,
+ 0x7D769BB5, 0x195B49E9,
+ 0x7D6C9CE9, 0x198C8CE6,
+ 0x7D628AC5, 0x19BDCBF2,
+ 0x7D58654C, 0x19EF0706,
+ 0x7D4E2C7E, 0x1A203E1B,
+ 0x7D43E05E, 0x1A517127,
+ 0x7D3980EC, 0x1A82A025,
+ 0x7D2F0E2A, 0x1AB3CB0C,
+ 0x7D24881A, 0x1AE4F1D6,
+ 0x7D19EEBE, 0x1B161479,
+ 0x7D0F4218, 0x1B4732EF,
+ 0x7D048228, 0x1B784D30,
+ 0x7CF9AEF0, 0x1BA96334,
+ 0x7CEEC873, 0x1BDA74F5,
+ 0x7CE3CEB1, 0x1C0B826A,
+ 0x7CD8C1AD, 0x1C3C8B8C,
+ 0x7CCDA168, 0x1C6D9053,
+ 0x7CC26DE5, 0x1C9E90B8,
+ 0x7CB72724, 0x1CCF8CB3,
+ 0x7CABCD27, 0x1D00843C,
+ 0x7CA05FF1, 0x1D31774D,
+ 0x7C94DF82, 0x1D6265DD,
+ 0x7C894BDD, 0x1D934FE5,
+ 0x7C7DA504, 0x1DC4355D,
+ 0x7C71EAF8, 0x1DF5163F,
+ 0x7C661DBB, 0x1E25F281,
+ 0x7C5A3D4F, 0x1E56CA1E,
+ 0x7C4E49B6, 0x1E879D0C,
+ 0x7C4242F2, 0x1EB86B46,
+ 0x7C362904, 0x1EE934C2,
+ 0x7C29FBEE, 0x1F19F97B,
+ 0x7C1DBBB2, 0x1F4AB967,
+ 0x7C116853, 0x1F7B7480,
+ 0x7C0501D1, 0x1FAC2ABF,
+ 0x7BF88830, 0x1FDCDC1A,
+ 0x7BEBFB70, 0x200D888C,
+ 0x7BDF5B94, 0x203E300D,
+ 0x7BD2A89E, 0x206ED295,
+ 0x7BC5E28F, 0x209F701C,
+ 0x7BB9096A, 0x20D0089B,
+ 0x7BAC1D31, 0x21009C0B,
+ 0x7B9F1DE5, 0x21312A65,
+ 0x7B920B89, 0x2161B39F,
+ 0x7B84E61E, 0x219237B4,
+ 0x7B77ADA8, 0x21C2B69C,
+ 0x7B6A6227, 0x21F3304E,
+ 0x7B5D039D, 0x2223A4C5,
+ 0x7B4F920E, 0x225413F8,
+ 0x7B420D7A, 0x22847DDF,
+ 0x7B3475E4, 0x22B4E274,
+ 0x7B26CB4F, 0x22E541AE,
+ 0x7B190DBB, 0x23159B87,
+ 0x7B0B3D2C, 0x2345EFF7,
+ 0x7AFD59A3, 0x23763EF7,
+ 0x7AEF6323, 0x23A6887E,
+ 0x7AE159AE, 0x23D6CC86,
+ 0x7AD33D45, 0x24070B07,
+ 0x7AC50DEB, 0x243743FA,
+ 0x7AB6CBA3, 0x24677757,
+ 0x7AA8766E, 0x2497A517,
+ 0x7A9A0E4F, 0x24C7CD32,
+ 0x7A8B9348, 0x24F7EFA1,
+ 0x7A7D055B, 0x25280C5D,
+ 0x7A6E648A, 0x2558235E,
+ 0x7A5FB0D8, 0x2588349D,
+ 0x7A50EA46, 0x25B84012,
+ 0x7A4210D8, 0x25E845B5,
+ 0x7A33248F, 0x26184581,
+ 0x7A24256E, 0x26483F6C,
+ 0x7A151377, 0x26783370,
+ 0x7A05EEAD, 0x26A82185,
+ 0x79F6B711, 0x26D809A5,
+ 0x79E76CA6, 0x2707EBC6,
+ 0x79D80F6F, 0x2737C7E3,
+ 0x79C89F6D, 0x27679DF4,
+ 0x79B91CA4, 0x27976DF1,
+ 0x79A98715, 0x27C737D2,
+ 0x7999DEC3, 0x27F6FB92,
+ 0x798A23B1, 0x2826B928,
+ 0x797A55E0, 0x2856708C,
+ 0x796A7554, 0x288621B9,
+ 0x795A820E, 0x28B5CCA5,
+ 0x794A7C11, 0x28E5714A,
+ 0x793A6360, 0x29150FA1,
+ 0x792A37FE, 0x2944A7A2,
+ 0x7919F9EB, 0x29743945,
+ 0x7909A92C, 0x29A3C484,
+ 0x78F945C3, 0x29D34958,
+ 0x78E8CFB1, 0x2A02C7B8,
+ 0x78D846FB, 0x2A323F9D,
+ 0x78C7ABA1, 0x2A61B101,
+ 0x78B6FDA8, 0x2A911BDB,
+ 0x78A63D10, 0x2AC08025,
+ 0x789569DE, 0x2AEFDDD8,
+ 0x78848413, 0x2B1F34EB,
+ 0x78738BB3, 0x2B4E8558,
+ 0x786280BF, 0x2B7DCF17,
+ 0x7851633B, 0x2BAD1221,
+ 0x78403328, 0x2BDC4E6F,
+ 0x782EF08B, 0x2C0B83F9,
+ 0x781D9B64, 0x2C3AB2B9,
+ 0x780C33B8, 0x2C69DAA6,
+ 0x77FAB988, 0x2C98FBBA,
+ 0x77E92CD8, 0x2CC815ED,
+ 0x77D78DAA, 0x2CF72939,
+ 0x77C5DC01, 0x2D263595,
+ 0x77B417DF, 0x2D553AFB,
+ 0x77A24148, 0x2D843963,
+ 0x7790583D, 0x2DB330C7,
+ 0x777E5CC3, 0x2DE2211E,
+ 0x776C4EDB, 0x2E110A62,
+ 0x775A2E88, 0x2E3FEC8B,
+ 0x7747FBCE, 0x2E6EC792,
+ 0x7735B6AE, 0x2E9D9B70,
+ 0x77235F2D, 0x2ECC681E,
+ 0x7710F54B, 0x2EFB2D94,
+ 0x76FE790E, 0x2F29EBCC,
+ 0x76EBEA77, 0x2F58A2BD,
+ 0x76D94988, 0x2F875262,
+ 0x76C69646, 0x2FB5FAB2,
+ 0x76B3D0B3, 0x2FE49BA6,
+ 0x76A0F8D2, 0x30133538,
+ 0x768E0EA5, 0x3041C760,
+ 0x767B1230, 0x30705217,
+ 0x76680376, 0x309ED555,
+ 0x7654E279, 0x30CD5114,
+ 0x7641AF3C, 0x30FBC54D,
+ 0x762E69C3, 0x312A31F8,
+ 0x761B1211, 0x3158970D,
+ 0x7607A827, 0x3186F487,
+ 0x75F42C0A, 0x31B54A5D,
+ 0x75E09DBD, 0x31E39889,
+ 0x75CCFD42, 0x3211DF03,
+ 0x75B94A9C, 0x32401DC5,
+ 0x75A585CF, 0x326E54C7,
+ 0x7591AEDD, 0x329C8402,
+ 0x757DC5CA, 0x32CAAB6F,
+ 0x7569CA98, 0x32F8CB07,
+ 0x7555BD4B, 0x3326E2C2,
+ 0x75419DE6, 0x3354F29A,
+ 0x752D6C6C, 0x3382FA88,
+ 0x751928E0, 0x33B0FA84,
+ 0x7504D345, 0x33DEF287,
+ 0x74F06B9E, 0x340CE28A,
+ 0x74DBF1EF, 0x343ACA87,
+ 0x74C7663A, 0x3468AA76,
+ 0x74B2C883, 0x3496824F,
+ 0x749E18CD, 0x34C4520D,
+ 0x7489571B, 0x34F219A7,
+ 0x74748371, 0x351FD917,
+ 0x745F9DD1, 0x354D9056,
+ 0x744AA63E, 0x357B3F5D,
+ 0x74359CBD, 0x35A8E624,
+ 0x74208150, 0x35D684A5,
+ 0x740B53FA, 0x36041AD9,
+ 0x73F614C0, 0x3631A8B7,
+ 0x73E0C3A3, 0x365F2E3B,
+ 0x73CB60A7, 0x368CAB5C,
+ 0x73B5EBD0, 0x36BA2013,
+ 0x73A06522, 0x36E78C5A,
+ 0x738ACC9E, 0x3714F02A,
+ 0x73752249, 0x37424B7A,
+ 0x735F6626, 0x376F9E46,
+ 0x73499838, 0x379CE884,
+ 0x7333B883, 0x37CA2A30,
+ 0x731DC709, 0x37F76340,
+ 0x7307C3D0, 0x382493B0,
+ 0x72F1AED8, 0x3851BB76,
+ 0x72DB8828, 0x387EDA8E,
+ 0x72C54FC0, 0x38ABF0EF,
+ 0x72AF05A6, 0x38D8FE93,
+ 0x7298A9DC, 0x39060372,
+ 0x72823C66, 0x3932FF87,
+ 0x726BBD48, 0x395FF2C9,
+ 0x72552C84, 0x398CDD32,
+ 0x723E8A1F, 0x39B9BEBB,
+ 0x7227D61C, 0x39E6975D,
+ 0x7211107D, 0x3A136712,
+ 0x71FA3948, 0x3A402DD1,
+ 0x71E3507F, 0x3A6CEB95,
+ 0x71CC5626, 0x3A99A057,
+ 0x71B54A40, 0x3AC64C0F,
+ 0x719E2CD2, 0x3AF2EEB7,
+ 0x7186FDDE, 0x3B1F8847,
+ 0x716FBD68, 0x3B4C18BA,
+ 0x71586B73, 0x3B78A007,
+ 0x71410804, 0x3BA51E29,
+ 0x7129931E, 0x3BD19317,
+ 0x71120CC5, 0x3BFDFECD,
+ 0x70FA74FB, 0x3C2A6142,
+ 0x70E2CBC6, 0x3C56BA70,
+ 0x70CB1127, 0x3C830A4F,
+ 0x70B34524, 0x3CAF50DA,
+ 0x709B67C0, 0x3CDB8E09,
+ 0x708378FE, 0x3D07C1D5,
+ 0x706B78E3, 0x3D33EC39,
+ 0x70536771, 0x3D600D2B,
+ 0x703B44AC, 0x3D8C24A7,
+ 0x70231099, 0x3DB832A5,
+ 0x700ACB3B, 0x3DE4371F,
+ 0x6FF27496, 0x3E10320D,
+ 0x6FDA0CAD, 0x3E3C2369,
+ 0x6FC19385, 0x3E680B2C,
+ 0x6FA90920, 0x3E93E94F,
+ 0x6F906D84, 0x3EBFBDCC,
+ 0x6F77C0B3, 0x3EEB889C,
+ 0x6F5F02B1, 0x3F1749B7,
+ 0x6F463383, 0x3F430118,
+ 0x6F2D532C, 0x3F6EAEB8,
+ 0x6F1461AF, 0x3F9A528F,
+ 0x6EFB5F12, 0x3FC5EC97,
+ 0x6EE24B57, 0x3FF17CCA,
+ 0x6EC92682, 0x401D0320,
+ 0x6EAFF098, 0x40487F93,
+ 0x6E96A99C, 0x4073F21D,
+ 0x6E7D5193, 0x409F5AB6,
+ 0x6E63E87F, 0x40CAB957,
+ 0x6E4A6E65, 0x40F60DFB,
+ 0x6E30E349, 0x4121589A,
+ 0x6E17472F, 0x414C992E,
+ 0x6DFD9A1B, 0x4177CFB0,
+ 0x6DE3DC11, 0x41A2FC1A,
+ 0x6DCA0D14, 0x41CE1E64,
+ 0x6DB02D29, 0x41F93688,
+ 0x6D963C54, 0x42244480,
+ 0x6D7C3A98, 0x424F4845,
+ 0x6D6227FA, 0x427A41D0,
+ 0x6D48047E, 0x42A5311A,
+ 0x6D2DD027, 0x42D0161E,
+ 0x6D138AFA, 0x42FAF0D4,
+ 0x6CF934FB, 0x4325C135,
+ 0x6CDECE2E, 0x4350873C,
+ 0x6CC45697, 0x437B42E1,
+ 0x6CA9CE3A, 0x43A5F41E,
+ 0x6C8F351C, 0x43D09AEC,
+ 0x6C748B3F, 0x43FB3745,
+ 0x6C59D0A9, 0x4425C923,
+ 0x6C3F055D, 0x4450507E,
+ 0x6C242960, 0x447ACD50,
+ 0x6C093CB6, 0x44A53F93,
+ 0x6BEE3F62, 0x44CFA73F,
+ 0x6BD3316A, 0x44FA044F,
+ 0x6BB812D0, 0x452456BC,
+ 0x6B9CE39B, 0x454E9E80,
+ 0x6B81A3CD, 0x4578DB93,
+ 0x6B66536A, 0x45A30DF0,
+ 0x6B4AF278, 0x45CD358F,
+ 0x6B2F80FA, 0x45F7526B,
+ 0x6B13FEF5, 0x4621647C,
+ 0x6AF86C6C, 0x464B6BBD,
+ 0x6ADCC964, 0x46756827,
+ 0x6AC115E1, 0x469F59B4,
+ 0x6AA551E8, 0x46C9405C,
+ 0x6A897D7D, 0x46F31C1A,
+ 0x6A6D98A4, 0x471CECE6,
+ 0x6A51A361, 0x4746B2BC,
+ 0x6A359DB9, 0x47706D93,
+ 0x6A1987B0, 0x479A1D66,
+ 0x69FD614A, 0x47C3C22E,
+ 0x69E12A8C, 0x47ED5BE6,
+ 0x69C4E37A, 0x4816EA85,
+ 0x69A88C18, 0x48406E07,
+ 0x698C246C, 0x4869E664,
+ 0x696FAC78, 0x48935397,
+ 0x69532442, 0x48BCB598,
+ 0x69368BCE, 0x48E60C62,
+ 0x6919E320, 0x490F57EE,
+ 0x68FD2A3D, 0x49389836,
+ 0x68E06129, 0x4961CD32,
+ 0x68C387E9, 0x498AF6DE,
+ 0x68A69E81, 0x49B41533,
+ 0x6889A4F5, 0x49DD282A,
+ 0x686C9B4B, 0x4A062FBD,
+ 0x684F8186, 0x4A2F2BE5,
+ 0x683257AA, 0x4A581C9D,
+ 0x68151DBE, 0x4A8101DE,
+ 0x67F7D3C4, 0x4AA9DBA1,
+ 0x67DA79C2, 0x4AD2A9E1,
+ 0x67BD0FBC, 0x4AFB6C97,
+ 0x679F95B7, 0x4B2423BD,
+ 0x67820BB6, 0x4B4CCF4D,
+ 0x676471C0, 0x4B756F3F,
+ 0x6746C7D7, 0x4B9E038F,
+ 0x67290E02, 0x4BC68C36,
+ 0x670B4443, 0x4BEF092D,
+ 0x66ED6AA1, 0x4C177A6E,
+ 0x66CF811F, 0x4C3FDFF3,
+ 0x66B187C3, 0x4C6839B6,
+ 0x66937E90, 0x4C9087B1,
+ 0x6675658C, 0x4CB8C9DD,
+ 0x66573CBB, 0x4CE10034,
+ 0x66390422, 0x4D092AB0,
+ 0x661ABBC5, 0x4D31494B,
+ 0x65FC63A9, 0x4D595BFE,
+ 0x65DDFBD3, 0x4D8162C4,
+ 0x65BF8447, 0x4DA95D96,
+ 0x65A0FD0B, 0x4DD14C6E,
+ 0x65826622, 0x4DF92F45,
+ 0x6563BF92, 0x4E210617,
+ 0x6545095F, 0x4E48D0DC,
+ 0x6526438E, 0x4E708F8F,
+ 0x65076E24, 0x4E984229,
+ 0x64E88926, 0x4EBFE8A4,
+ 0x64C99498, 0x4EE782FA,
+ 0x64AA907F, 0x4F0F1126,
+ 0x648B7CDF, 0x4F369320,
+ 0x646C59BF, 0x4F5E08E3,
+ 0x644D2722, 0x4F857268,
+ 0x642DE50D, 0x4FACCFAB,
+ 0x640E9385, 0x4FD420A3,
+ 0x63EF328F, 0x4FFB654D,
+ 0x63CFC230, 0x50229DA0,
+ 0x63B0426D, 0x5049C999,
+ 0x6390B34A, 0x5070E92F,
+ 0x637114CC, 0x5097FC5E,
+ 0x635166F8, 0x50BF031F,
+ 0x6331A9D4, 0x50E5FD6C,
+ 0x6311DD63, 0x510CEB40,
+ 0x62F201AC, 0x5133CC94,
+ 0x62D216B2, 0x515AA162,
+ 0x62B21C7B, 0x518169A4,
+ 0x6292130C, 0x51A82555,
+ 0x6271FA69, 0x51CED46E,
+ 0x6251D297, 0x51F576E9,
+ 0x62319B9D, 0x521C0CC1,
+ 0x6211557D, 0x524295EF,
+ 0x61F1003E, 0x5269126E,
+ 0x61D09BE5, 0x528F8237,
+ 0x61B02876, 0x52B5E545,
+ 0x618FA5F6, 0x52DC3B92,
+ 0x616F146B, 0x53028517,
+ 0x614E73D9, 0x5328C1D0,
+ 0x612DC446, 0x534EF1B5,
+ 0x610D05B7, 0x537514C1,
+ 0x60EC3830, 0x539B2AEF,
+ 0x60CB5BB6, 0x53C13438,
+ 0x60AA704F, 0x53E73097,
+ 0x60897600, 0x540D2005,
+ 0x60686CCE, 0x5433027D,
+ 0x604754BE, 0x5458D7F9,
+ 0x60262DD5, 0x547EA073,
+ 0x6004F818, 0x54A45BE5,
+ 0x5FE3B38D, 0x54CA0A4A,
+ 0x5FC26038, 0x54EFAB9C,
+ 0x5FA0FE1E, 0x55153FD4,
+ 0x5F7F8D46, 0x553AC6ED,
+ 0x5F5E0DB3, 0x556040E2,
+ 0x5F3C7F6B, 0x5585ADAC,
+ 0x5F1AE273, 0x55AB0D46,
+ 0x5EF936D1, 0x55D05FAA,
+ 0x5ED77C89, 0x55F5A4D2,
+ 0x5EB5B3A1, 0x561ADCB8,
+ 0x5E93DC1F, 0x56400757,
+ 0x5E71F606, 0x566524AA,
+ 0x5E50015D, 0x568A34A9,
+ 0x5E2DFE28, 0x56AF3750,
+ 0x5E0BEC6E, 0x56D42C99,
+ 0x5DE9CC32, 0x56F9147E,
+ 0x5DC79D7C, 0x571DEEF9,
+ 0x5DA5604E, 0x5742BC05,
+ 0x5D8314B0, 0x57677B9D,
+ 0x5D60BAA6, 0x578C2DB9,
+ 0x5D3E5236, 0x57B0D256,
+ 0x5D1BDB65, 0x57D5696C,
+ 0x5CF95638, 0x57F9F2F7,
+ 0x5CD6C2B4, 0x581E6EF1,
+ 0x5CB420DF, 0x5842DD54,
+ 0x5C9170BF, 0x58673E1B,
+ 0x5C6EB258, 0x588B913F,
+ 0x5C4BE5B0, 0x58AFD6BC,
+ 0x5C290ACC, 0x58D40E8C,
+ 0x5C0621B2, 0x58F838A9,
+ 0x5BE32A67, 0x591C550E,
+ 0x5BC024F0, 0x594063B4,
+ 0x5B9D1153, 0x59646497,
+ 0x5B79EF96, 0x598857B1,
+ 0x5B56BFBD, 0x59AC3CFD,
+ 0x5B3381CE, 0x59D01474,
+ 0x5B1035CF, 0x59F3DE12,
+ 0x5AECDBC4, 0x5A1799D0,
+ 0x5AC973B4, 0x5A3B47AA,
+ 0x5AA5FDA4, 0x5A5EE79A,
+ 0x5A82799A, 0x5A82799A,
+ 0x5A5EE79A, 0x5AA5FDA4,
+ 0x5A3B47AA, 0x5AC973B4,
+ 0x5A1799D0, 0x5AECDBC4,
+ 0x59F3DE12, 0x5B1035CF,
+ 0x59D01474, 0x5B3381CE,
+ 0x59AC3CFD, 0x5B56BFBD,
+ 0x598857B1, 0x5B79EF96,
+ 0x59646497, 0x5B9D1153,
+ 0x594063B4, 0x5BC024F0,
+ 0x591C550E, 0x5BE32A67,
+ 0x58F838A9, 0x5C0621B2,
+ 0x58D40E8C, 0x5C290ACC,
+ 0x58AFD6BC, 0x5C4BE5B0,
+ 0x588B913F, 0x5C6EB258,
+ 0x58673E1B, 0x5C9170BF,
+ 0x5842DD54, 0x5CB420DF,
+ 0x581E6EF1, 0x5CD6C2B4,
+ 0x57F9F2F7, 0x5CF95638,
+ 0x57D5696C, 0x5D1BDB65,
+ 0x57B0D256, 0x5D3E5236,
+ 0x578C2DB9, 0x5D60BAA6,
+ 0x57677B9D, 0x5D8314B0,
+ 0x5742BC05, 0x5DA5604E,
+ 0x571DEEF9, 0x5DC79D7C,
+ 0x56F9147E, 0x5DE9CC32,
+ 0x56D42C99, 0x5E0BEC6E,
+ 0x56AF3750, 0x5E2DFE28,
+ 0x568A34A9, 0x5E50015D,
+ 0x566524AA, 0x5E71F606,
+ 0x56400757, 0x5E93DC1F,
+ 0x561ADCB8, 0x5EB5B3A1,
+ 0x55F5A4D2, 0x5ED77C89,
+ 0x55D05FAA, 0x5EF936D1,
+ 0x55AB0D46, 0x5F1AE273,
+ 0x5585ADAC, 0x5F3C7F6B,
+ 0x556040E2, 0x5F5E0DB3,
+ 0x553AC6ED, 0x5F7F8D46,
+ 0x55153FD4, 0x5FA0FE1E,
+ 0x54EFAB9C, 0x5FC26038,
+ 0x54CA0A4A, 0x5FE3B38D,
+ 0x54A45BE5, 0x6004F818,
+ 0x547EA073, 0x60262DD5,
+ 0x5458D7F9, 0x604754BE,
+ 0x5433027D, 0x60686CCE,
+ 0x540D2005, 0x60897600,
+ 0x53E73097, 0x60AA704F,
+ 0x53C13438, 0x60CB5BB6,
+ 0x539B2AEF, 0x60EC3830,
+ 0x537514C1, 0x610D05B7,
+ 0x534EF1B5, 0x612DC446,
+ 0x5328C1D0, 0x614E73D9,
+ 0x53028517, 0x616F146B,
+ 0x52DC3B92, 0x618FA5F6,
+ 0x52B5E545, 0x61B02876,
+ 0x528F8237, 0x61D09BE5,
+ 0x5269126E, 0x61F1003E,
+ 0x524295EF, 0x6211557D,
+ 0x521C0CC1, 0x62319B9D,
+ 0x51F576E9, 0x6251D297,
+ 0x51CED46E, 0x6271FA69,
+ 0x51A82555, 0x6292130C,
+ 0x518169A4, 0x62B21C7B,
+ 0x515AA162, 0x62D216B2,
+ 0x5133CC94, 0x62F201AC,
+ 0x510CEB40, 0x6311DD63,
+ 0x50E5FD6C, 0x6331A9D4,
+ 0x50BF031F, 0x635166F8,
+ 0x5097FC5E, 0x637114CC,
+ 0x5070E92F, 0x6390B34A,
+ 0x5049C999, 0x63B0426D,
+ 0x50229DA0, 0x63CFC230,
+ 0x4FFB654D, 0x63EF328F,
+ 0x4FD420A3, 0x640E9385,
+ 0x4FACCFAB, 0x642DE50D,
+ 0x4F857268, 0x644D2722,
+ 0x4F5E08E3, 0x646C59BF,
+ 0x4F369320, 0x648B7CDF,
+ 0x4F0F1126, 0x64AA907F,
+ 0x4EE782FA, 0x64C99498,
+ 0x4EBFE8A4, 0x64E88926,
+ 0x4E984229, 0x65076E24,
+ 0x4E708F8F, 0x6526438E,
+ 0x4E48D0DC, 0x6545095F,
+ 0x4E210617, 0x6563BF92,
+ 0x4DF92F45, 0x65826622,
+ 0x4DD14C6E, 0x65A0FD0B,
+ 0x4DA95D96, 0x65BF8447,
+ 0x4D8162C4, 0x65DDFBD3,
+ 0x4D595BFE, 0x65FC63A9,
+ 0x4D31494B, 0x661ABBC5,
+ 0x4D092AB0, 0x66390422,
+ 0x4CE10034, 0x66573CBB,
+ 0x4CB8C9DD, 0x6675658C,
+ 0x4C9087B1, 0x66937E90,
+ 0x4C6839B6, 0x66B187C3,
+ 0x4C3FDFF3, 0x66CF811F,
+ 0x4C177A6E, 0x66ED6AA1,
+ 0x4BEF092D, 0x670B4443,
+ 0x4BC68C36, 0x67290E02,
+ 0x4B9E038F, 0x6746C7D7,
+ 0x4B756F3F, 0x676471C0,
+ 0x4B4CCF4D, 0x67820BB6,
+ 0x4B2423BD, 0x679F95B7,
+ 0x4AFB6C97, 0x67BD0FBC,
+ 0x4AD2A9E1, 0x67DA79C2,
+ 0x4AA9DBA1, 0x67F7D3C4,
+ 0x4A8101DE, 0x68151DBE,
+ 0x4A581C9D, 0x683257AA,
+ 0x4A2F2BE5, 0x684F8186,
+ 0x4A062FBD, 0x686C9B4B,
+ 0x49DD282A, 0x6889A4F5,
+ 0x49B41533, 0x68A69E81,
+ 0x498AF6DE, 0x68C387E9,
+ 0x4961CD32, 0x68E06129,
+ 0x49389836, 0x68FD2A3D,
+ 0x490F57EE, 0x6919E320,
+ 0x48E60C62, 0x69368BCE,
+ 0x48BCB598, 0x69532442,
+ 0x48935397, 0x696FAC78,
+ 0x4869E664, 0x698C246C,
+ 0x48406E07, 0x69A88C18,
+ 0x4816EA85, 0x69C4E37A,
+ 0x47ED5BE6, 0x69E12A8C,
+ 0x47C3C22E, 0x69FD614A,
+ 0x479A1D66, 0x6A1987B0,
+ 0x47706D93, 0x6A359DB9,
+ 0x4746B2BC, 0x6A51A361,
+ 0x471CECE6, 0x6A6D98A4,
+ 0x46F31C1A, 0x6A897D7D,
+ 0x46C9405C, 0x6AA551E8,
+ 0x469F59B4, 0x6AC115E1,
+ 0x46756827, 0x6ADCC964,
+ 0x464B6BBD, 0x6AF86C6C,
+ 0x4621647C, 0x6B13FEF5,
+ 0x45F7526B, 0x6B2F80FA,
+ 0x45CD358F, 0x6B4AF278,
+ 0x45A30DF0, 0x6B66536A,
+ 0x4578DB93, 0x6B81A3CD,
+ 0x454E9E80, 0x6B9CE39B,
+ 0x452456BC, 0x6BB812D0,
+ 0x44FA044F, 0x6BD3316A,
+ 0x44CFA73F, 0x6BEE3F62,
+ 0x44A53F93, 0x6C093CB6,
+ 0x447ACD50, 0x6C242960,
+ 0x4450507E, 0x6C3F055D,
+ 0x4425C923, 0x6C59D0A9,
+ 0x43FB3745, 0x6C748B3F,
+ 0x43D09AEC, 0x6C8F351C,
+ 0x43A5F41E, 0x6CA9CE3A,
+ 0x437B42E1, 0x6CC45697,
+ 0x4350873C, 0x6CDECE2E,
+ 0x4325C135, 0x6CF934FB,
+ 0x42FAF0D4, 0x6D138AFA,
+ 0x42D0161E, 0x6D2DD027,
+ 0x42A5311A, 0x6D48047E,
+ 0x427A41D0, 0x6D6227FA,
+ 0x424F4845, 0x6D7C3A98,
+ 0x42244480, 0x6D963C54,
+ 0x41F93688, 0x6DB02D29,
+ 0x41CE1E64, 0x6DCA0D14,
+ 0x41A2FC1A, 0x6DE3DC11,
+ 0x4177CFB0, 0x6DFD9A1B,
+ 0x414C992E, 0x6E17472F,
+ 0x4121589A, 0x6E30E349,
+ 0x40F60DFB, 0x6E4A6E65,
+ 0x40CAB957, 0x6E63E87F,
+ 0x409F5AB6, 0x6E7D5193,
+ 0x4073F21D, 0x6E96A99C,
+ 0x40487F93, 0x6EAFF098,
+ 0x401D0320, 0x6EC92682,
+ 0x3FF17CCA, 0x6EE24B57,
+ 0x3FC5EC97, 0x6EFB5F12,
+ 0x3F9A528F, 0x6F1461AF,
+ 0x3F6EAEB8, 0x6F2D532C,
+ 0x3F430118, 0x6F463383,
+ 0x3F1749B7, 0x6F5F02B1,
+ 0x3EEB889C, 0x6F77C0B3,
+ 0x3EBFBDCC, 0x6F906D84,
+ 0x3E93E94F, 0x6FA90920,
+ 0x3E680B2C, 0x6FC19385,
+ 0x3E3C2369, 0x6FDA0CAD,
+ 0x3E10320D, 0x6FF27496,
+ 0x3DE4371F, 0x700ACB3B,
+ 0x3DB832A5, 0x70231099,
+ 0x3D8C24A7, 0x703B44AC,
+ 0x3D600D2B, 0x70536771,
+ 0x3D33EC39, 0x706B78E3,
+ 0x3D07C1D5, 0x708378FE,
+ 0x3CDB8E09, 0x709B67C0,
+ 0x3CAF50DA, 0x70B34524,
+ 0x3C830A4F, 0x70CB1127,
+ 0x3C56BA70, 0x70E2CBC6,
+ 0x3C2A6142, 0x70FA74FB,
+ 0x3BFDFECD, 0x71120CC5,
+ 0x3BD19317, 0x7129931E,
+ 0x3BA51E29, 0x71410804,
+ 0x3B78A007, 0x71586B73,
+ 0x3B4C18BA, 0x716FBD68,
+ 0x3B1F8847, 0x7186FDDE,
+ 0x3AF2EEB7, 0x719E2CD2,
+ 0x3AC64C0F, 0x71B54A40,
+ 0x3A99A057, 0x71CC5626,
+ 0x3A6CEB95, 0x71E3507F,
+ 0x3A402DD1, 0x71FA3948,
+ 0x3A136712, 0x7211107D,
+ 0x39E6975D, 0x7227D61C,
+ 0x39B9BEBB, 0x723E8A1F,
+ 0x398CDD32, 0x72552C84,
+ 0x395FF2C9, 0x726BBD48,
+ 0x3932FF87, 0x72823C66,
+ 0x39060372, 0x7298A9DC,
+ 0x38D8FE93, 0x72AF05A6,
+ 0x38ABF0EF, 0x72C54FC0,
+ 0x387EDA8E, 0x72DB8828,
+ 0x3851BB76, 0x72F1AED8,
+ 0x382493B0, 0x7307C3D0,
+ 0x37F76340, 0x731DC709,
+ 0x37CA2A30, 0x7333B883,
+ 0x379CE884, 0x73499838,
+ 0x376F9E46, 0x735F6626,
+ 0x37424B7A, 0x73752249,
+ 0x3714F02A, 0x738ACC9E,
+ 0x36E78C5A, 0x73A06522,
+ 0x36BA2013, 0x73B5EBD0,
+ 0x368CAB5C, 0x73CB60A7,
+ 0x365F2E3B, 0x73E0C3A3,
+ 0x3631A8B7, 0x73F614C0,
+ 0x36041AD9, 0x740B53FA,
+ 0x35D684A5, 0x74208150,
+ 0x35A8E624, 0x74359CBD,
+ 0x357B3F5D, 0x744AA63E,
+ 0x354D9056, 0x745F9DD1,
+ 0x351FD917, 0x74748371,
+ 0x34F219A7, 0x7489571B,
+ 0x34C4520D, 0x749E18CD,
+ 0x3496824F, 0x74B2C883,
+ 0x3468AA76, 0x74C7663A,
+ 0x343ACA87, 0x74DBF1EF,
+ 0x340CE28A, 0x74F06B9E,
+ 0x33DEF287, 0x7504D345,
+ 0x33B0FA84, 0x751928E0,
+ 0x3382FA88, 0x752D6C6C,
+ 0x3354F29A, 0x75419DE6,
+ 0x3326E2C2, 0x7555BD4B,
+ 0x32F8CB07, 0x7569CA98,
+ 0x32CAAB6F, 0x757DC5CA,
+ 0x329C8402, 0x7591AEDD,
+ 0x326E54C7, 0x75A585CF,
+ 0x32401DC5, 0x75B94A9C,
+ 0x3211DF03, 0x75CCFD42,
+ 0x31E39889, 0x75E09DBD,
+ 0x31B54A5D, 0x75F42C0A,
+ 0x3186F487, 0x7607A827,
+ 0x3158970D, 0x761B1211,
+ 0x312A31F8, 0x762E69C3,
+ 0x30FBC54D, 0x7641AF3C,
+ 0x30CD5114, 0x7654E279,
+ 0x309ED555, 0x76680376,
+ 0x30705217, 0x767B1230,
+ 0x3041C760, 0x768E0EA5,
+ 0x30133538, 0x76A0F8D2,
+ 0x2FE49BA6, 0x76B3D0B3,
+ 0x2FB5FAB2, 0x76C69646,
+ 0x2F875262, 0x76D94988,
+ 0x2F58A2BD, 0x76EBEA77,
+ 0x2F29EBCC, 0x76FE790E,
+ 0x2EFB2D94, 0x7710F54B,
+ 0x2ECC681E, 0x77235F2D,
+ 0x2E9D9B70, 0x7735B6AE,
+ 0x2E6EC792, 0x7747FBCE,
+ 0x2E3FEC8B, 0x775A2E88,
+ 0x2E110A62, 0x776C4EDB,
+ 0x2DE2211E, 0x777E5CC3,
+ 0x2DB330C7, 0x7790583D,
+ 0x2D843963, 0x77A24148,
+ 0x2D553AFB, 0x77B417DF,
+ 0x2D263595, 0x77C5DC01,
+ 0x2CF72939, 0x77D78DAA,
+ 0x2CC815ED, 0x77E92CD8,
+ 0x2C98FBBA, 0x77FAB988,
+ 0x2C69DAA6, 0x780C33B8,
+ 0x2C3AB2B9, 0x781D9B64,
+ 0x2C0B83F9, 0x782EF08B,
+ 0x2BDC4E6F, 0x78403328,
+ 0x2BAD1221, 0x7851633B,
+ 0x2B7DCF17, 0x786280BF,
+ 0x2B4E8558, 0x78738BB3,
+ 0x2B1F34EB, 0x78848413,
+ 0x2AEFDDD8, 0x789569DE,
+ 0x2AC08025, 0x78A63D10,
+ 0x2A911BDB, 0x78B6FDA8,
+ 0x2A61B101, 0x78C7ABA1,
+ 0x2A323F9D, 0x78D846FB,
+ 0x2A02C7B8, 0x78E8CFB1,
+ 0x29D34958, 0x78F945C3,
+ 0x29A3C484, 0x7909A92C,
+ 0x29743945, 0x7919F9EB,
+ 0x2944A7A2, 0x792A37FE,
+ 0x29150FA1, 0x793A6360,
+ 0x28E5714A, 0x794A7C11,
+ 0x28B5CCA5, 0x795A820E,
+ 0x288621B9, 0x796A7554,
+ 0x2856708C, 0x797A55E0,
+ 0x2826B928, 0x798A23B1,
+ 0x27F6FB92, 0x7999DEC3,
+ 0x27C737D2, 0x79A98715,
+ 0x27976DF1, 0x79B91CA4,
+ 0x27679DF4, 0x79C89F6D,
+ 0x2737C7E3, 0x79D80F6F,
+ 0x2707EBC6, 0x79E76CA6,
+ 0x26D809A5, 0x79F6B711,
+ 0x26A82185, 0x7A05EEAD,
+ 0x26783370, 0x7A151377,
+ 0x26483F6C, 0x7A24256E,
+ 0x26184581, 0x7A33248F,
+ 0x25E845B5, 0x7A4210D8,
+ 0x25B84012, 0x7A50EA46,
+ 0x2588349D, 0x7A5FB0D8,
+ 0x2558235E, 0x7A6E648A,
+ 0x25280C5D, 0x7A7D055B,
+ 0x24F7EFA1, 0x7A8B9348,
+ 0x24C7CD32, 0x7A9A0E4F,
+ 0x2497A517, 0x7AA8766E,
+ 0x24677757, 0x7AB6CBA3,
+ 0x243743FA, 0x7AC50DEB,
+ 0x24070B07, 0x7AD33D45,
+ 0x23D6CC86, 0x7AE159AE,
+ 0x23A6887E, 0x7AEF6323,
+ 0x23763EF7, 0x7AFD59A3,
+ 0x2345EFF7, 0x7B0B3D2C,
+ 0x23159B87, 0x7B190DBB,
+ 0x22E541AE, 0x7B26CB4F,
+ 0x22B4E274, 0x7B3475E4,
+ 0x22847DDF, 0x7B420D7A,
+ 0x225413F8, 0x7B4F920E,
+ 0x2223A4C5, 0x7B5D039D,
+ 0x21F3304E, 0x7B6A6227,
+ 0x21C2B69C, 0x7B77ADA8,
+ 0x219237B4, 0x7B84E61E,
+ 0x2161B39F, 0x7B920B89,
+ 0x21312A65, 0x7B9F1DE5,
+ 0x21009C0B, 0x7BAC1D31,
+ 0x20D0089B, 0x7BB9096A,
+ 0x209F701C, 0x7BC5E28F,
+ 0x206ED295, 0x7BD2A89E,
+ 0x203E300D, 0x7BDF5B94,
+ 0x200D888C, 0x7BEBFB70,
+ 0x1FDCDC1A, 0x7BF88830,
+ 0x1FAC2ABF, 0x7C0501D1,
+ 0x1F7B7480, 0x7C116853,
+ 0x1F4AB967, 0x7C1DBBB2,
+ 0x1F19F97B, 0x7C29FBEE,
+ 0x1EE934C2, 0x7C362904,
+ 0x1EB86B46, 0x7C4242F2,
+ 0x1E879D0C, 0x7C4E49B6,
+ 0x1E56CA1E, 0x7C5A3D4F,
+ 0x1E25F281, 0x7C661DBB,
+ 0x1DF5163F, 0x7C71EAF8,
+ 0x1DC4355D, 0x7C7DA504,
+ 0x1D934FE5, 0x7C894BDD,
+ 0x1D6265DD, 0x7C94DF82,
+ 0x1D31774D, 0x7CA05FF1,
+ 0x1D00843C, 0x7CABCD27,
+ 0x1CCF8CB3, 0x7CB72724,
+ 0x1C9E90B8, 0x7CC26DE5,
+ 0x1C6D9053, 0x7CCDA168,
+ 0x1C3C8B8C, 0x7CD8C1AD,
+ 0x1C0B826A, 0x7CE3CEB1,
+ 0x1BDA74F5, 0x7CEEC873,
+ 0x1BA96334, 0x7CF9AEF0,
+ 0x1B784D30, 0x7D048228,
+ 0x1B4732EF, 0x7D0F4218,
+ 0x1B161479, 0x7D19EEBE,
+ 0x1AE4F1D6, 0x7D24881A,
+ 0x1AB3CB0C, 0x7D2F0E2A,
+ 0x1A82A025, 0x7D3980EC,
+ 0x1A517127, 0x7D43E05E,
+ 0x1A203E1B, 0x7D4E2C7E,
+ 0x19EF0706, 0x7D58654C,
+ 0x19BDCBF2, 0x7D628AC5,
+ 0x198C8CE6, 0x7D6C9CE9,
+ 0x195B49E9, 0x7D769BB5,
+ 0x192A0303, 0x7D808727,
+ 0x18F8B83C, 0x7D8A5F3F,
+ 0x18C7699B, 0x7D9423FB,
+ 0x18961727, 0x7D9DD55A,
+ 0x1864C0E9, 0x7DA77359,
+ 0x183366E8, 0x7DB0FDF7,
+ 0x1802092C, 0x7DBA7534,
+ 0x17D0A7BB, 0x7DC3D90D,
+ 0x179F429F, 0x7DCD2981,
+ 0x176DD9DE, 0x7DD6668E,
+ 0x173C6D80, 0x7DDF9034,
+ 0x170AFD8D, 0x7DE8A670,
+ 0x16D98A0C, 0x7DF1A942,
+ 0x16A81305, 0x7DFA98A7,
+ 0x1676987F, 0x7E03749F,
+ 0x16451A83, 0x7E0C3D29,
+ 0x16139917, 0x7E14F242,
+ 0x15E21444, 0x7E1D93E9,
+ 0x15B08C11, 0x7E26221E,
+ 0x157F0086, 0x7E2E9CDF,
+ 0x154D71AA, 0x7E37042A,
+ 0x151BDF85, 0x7E3F57FE,
+ 0x14EA4A1F, 0x7E47985B,
+ 0x14B8B17F, 0x7E4FC53E,
+ 0x148715AD, 0x7E57DEA6,
+ 0x145576B1, 0x7E5FE493,
+ 0x1423D492, 0x7E67D702,
+ 0x13F22F57, 0x7E6FB5F3,
+ 0x13C0870A, 0x7E778165,
+ 0x138EDBB0, 0x7E7F3956,
+ 0x135D2D53, 0x7E86DDC5,
+ 0x132B7BF9, 0x7E8E6EB1,
+ 0x12F9C7AA, 0x7E95EC19,
+ 0x12C8106E, 0x7E9D55FC,
+ 0x1296564D, 0x7EA4AC58,
+ 0x1264994E, 0x7EABEF2C,
+ 0x1232D978, 0x7EB31E77,
+ 0x120116D4, 0x7EBA3A39,
+ 0x11CF516A, 0x7EC1426F,
+ 0x119D8940, 0x7EC8371A,
+ 0x116BBE5F, 0x7ECF1837,
+ 0x1139F0CE, 0x7ED5E5C6,
+ 0x11082096, 0x7EDC9FC6,
+ 0x10D64DBC, 0x7EE34635,
+ 0x10A4784A, 0x7EE9D913,
+ 0x1072A047, 0x7EF0585F,
+ 0x1040C5BB, 0x7EF6C418,
+ 0x100EE8AD, 0x7EFD1C3C,
+ 0x0FDD0925, 0x7F0360CB,
+ 0x0FAB272B, 0x7F0991C3,
+ 0x0F7942C6, 0x7F0FAF24,
+ 0x0F475BFE, 0x7F15B8EE,
+ 0x0F1572DC, 0x7F1BAF1E,
+ 0x0EE38765, 0x7F2191B4,
+ 0x0EB199A3, 0x7F2760AF,
+ 0x0E7FA99D, 0x7F2D1C0E,
+ 0x0E4DB75B, 0x7F32C3D0,
+ 0x0E1BC2E3, 0x7F3857F5,
+ 0x0DE9CC3F, 0x7F3DD87C,
+ 0x0DB7D376, 0x7F434563,
+ 0x0D85D88F, 0x7F489EAA,
+ 0x0D53DB92, 0x7F4DE450,
+ 0x0D21DC87, 0x7F531654,
+ 0x0CEFDB75, 0x7F5834B6,
+ 0x0CBDD865, 0x7F5D3F75,
+ 0x0C8BD35E, 0x7F62368F,
+ 0x0C59CC67, 0x7F671A04,
+ 0x0C27C389, 0x7F6BE9D4,
+ 0x0BF5B8CB, 0x7F70A5FD,
+ 0x0BC3AC35, 0x7F754E7F,
+ 0x0B919DCE, 0x7F79E35A,
+ 0x0B5F8D9F, 0x7F7E648B,
+ 0x0B2D7BAE, 0x7F82D214,
+ 0x0AFB6805, 0x7F872BF3,
+ 0x0AC952AA, 0x7F8B7226,
+ 0x0A973BA5, 0x7F8FA4AF,
+ 0x0A6522FE, 0x7F93C38C,
+ 0x0A3308BC, 0x7F97CEBC,
+ 0x0A00ECE8, 0x7F9BC63F,
+ 0x09CECF89, 0x7F9FAA15,
+ 0x099CB0A7, 0x7FA37A3C,
+ 0x096A9049, 0x7FA736B4,
+ 0x09386E77, 0x7FAADF7C,
+ 0x09064B3A, 0x7FAE7494,
+ 0x08D42698, 0x7FB1F5FC,
+ 0x08A2009A, 0x7FB563B2,
+ 0x086FD947, 0x7FB8BDB7,
+ 0x083DB0A7, 0x7FBC040A,
+ 0x080B86C1, 0x7FBF36A9,
+ 0x07D95B9E, 0x7FC25596,
+ 0x07A72F45, 0x7FC560CF,
+ 0x077501BE, 0x7FC85853,
+ 0x0742D310, 0x7FCB3C23,
+ 0x0710A344, 0x7FCE0C3E,
+ 0x06DE7261, 0x7FD0C8A3,
+ 0x06AC406F, 0x7FD37152,
+ 0x067A0D75, 0x7FD6064B,
+ 0x0647D97C, 0x7FD8878D,
+ 0x0615A48A, 0x7FDAF518,
+ 0x05E36EA9, 0x7FDD4EEC,
+ 0x05B137DF, 0x7FDF9508,
+ 0x057F0034, 0x7FE1C76B,
+ 0x054CC7B0, 0x7FE3E616,
+ 0x051A8E5C, 0x7FE5F108,
+ 0x04E8543D, 0x7FE7E840,
+ 0x04B6195D, 0x7FE9CBC0,
+ 0x0483DDC3, 0x7FEB9B85,
+ 0x0451A176, 0x7FED5790,
+ 0x041F647F, 0x7FEEFFE1,
+ 0x03ED26E6, 0x7FF09477,
+ 0x03BAE8B1, 0x7FF21553,
+ 0x0388A9E9, 0x7FF38273,
+ 0x03566A96, 0x7FF4DBD8,
+ 0x03242ABF, 0x7FF62182,
+ 0x02F1EA6B, 0x7FF7536F,
+ 0x02BFA9A4, 0x7FF871A1,
+ 0x028D6870, 0x7FF97C17,
+ 0x025B26D7, 0x7FFA72D1,
+ 0x0228E4E1, 0x7FFB55CE,
+ 0x01F6A296, 0x7FFC250F,
+ 0x01C45FFE, 0x7FFCE093,
+ 0x01921D1F, 0x7FFD885A,
+ 0x015FDA03, 0x7FFE1C64,
+ 0x012D96B0, 0x7FFE9CB2,
+ 0x00FB532F, 0x7FFF0942,
+ 0x00C90F88, 0x7FFF6216,
+ 0x0096CBC1, 0x7FFFA72C,
+ 0x006487E3, 0x7FFFD885,
+ 0x003243F5, 0x7FFFF621,
+ 0x00000000, 0x7FFFFFFF,
+ 0xFFCDBC0A, 0x7FFFF621,
+ 0xFF9B781D, 0x7FFFD885,
+ 0xFF69343E, 0x7FFFA72C,
+ 0xFF36F078, 0x7FFF6216,
+ 0xFF04ACD0, 0x7FFF0942,
+ 0xFED2694F, 0x7FFE9CB2,
+ 0xFEA025FC, 0x7FFE1C64,
+ 0xFE6DE2E0, 0x7FFD885A,
+ 0xFE3BA001, 0x7FFCE093,
+ 0xFE095D69, 0x7FFC250F,
+ 0xFDD71B1E, 0x7FFB55CE,
+ 0xFDA4D928, 0x7FFA72D1,
+ 0xFD72978F, 0x7FF97C17,
+ 0xFD40565B, 0x7FF871A1,
+ 0xFD0E1594, 0x7FF7536F,
+ 0xFCDBD541, 0x7FF62182,
+ 0xFCA99569, 0x7FF4DBD8,
+ 0xFC775616, 0x7FF38273,
+ 0xFC45174E, 0x7FF21553,
+ 0xFC12D919, 0x7FF09477,
+ 0xFBE09B80, 0x7FEEFFE1,
+ 0xFBAE5E89, 0x7FED5790,
+ 0xFB7C223C, 0x7FEB9B85,
+ 0xFB49E6A2, 0x7FE9CBC0,
+ 0xFB17ABC2, 0x7FE7E840,
+ 0xFAE571A4, 0x7FE5F108,
+ 0xFAB3384F, 0x7FE3E616,
+ 0xFA80FFCB, 0x7FE1C76B,
+ 0xFA4EC820, 0x7FDF9508,
+ 0xFA1C9156, 0x7FDD4EEC,
+ 0xF9EA5B75, 0x7FDAF518,
+ 0xF9B82683, 0x7FD8878D,
+ 0xF985F28A, 0x7FD6064B,
+ 0xF953BF90, 0x7FD37152,
+ 0xF9218D9E, 0x7FD0C8A3,
+ 0xF8EF5CBB, 0x7FCE0C3E,
+ 0xF8BD2CEF, 0x7FCB3C23,
+ 0xF88AFE41, 0x7FC85853,
+ 0xF858D0BA, 0x7FC560CF,
+ 0xF826A461, 0x7FC25596,
+ 0xF7F4793E, 0x7FBF36A9,
+ 0xF7C24F58, 0x7FBC040A,
+ 0xF79026B8, 0x7FB8BDB7,
+ 0xF75DFF65, 0x7FB563B2,
+ 0xF72BD967, 0x7FB1F5FC,
+ 0xF6F9B4C5, 0x7FAE7494,
+ 0xF6C79188, 0x7FAADF7C,
+ 0xF6956FB6, 0x7FA736B4,
+ 0xF6634F58, 0x7FA37A3C,
+ 0xF6313076, 0x7F9FAA15,
+ 0xF5FF1317, 0x7F9BC63F,
+ 0xF5CCF743, 0x7F97CEBC,
+ 0xF59ADD01, 0x7F93C38C,
+ 0xF568C45A, 0x7F8FA4AF,
+ 0xF536AD55, 0x7F8B7226,
+ 0xF50497FA, 0x7F872BF3,
+ 0xF4D28451, 0x7F82D214,
+ 0xF4A07260, 0x7F7E648B,
+ 0xF46E6231, 0x7F79E35A,
+ 0xF43C53CA, 0x7F754E7F,
+ 0xF40A4734, 0x7F70A5FD,
+ 0xF3D83C76, 0x7F6BE9D4,
+ 0xF3A63398, 0x7F671A04,
+ 0xF3742CA1, 0x7F62368F,
+ 0xF342279A, 0x7F5D3F75,
+ 0xF310248A, 0x7F5834B6,
+ 0xF2DE2378, 0x7F531654,
+ 0xF2AC246D, 0x7F4DE450,
+ 0xF27A2770, 0x7F489EAA,
+ 0xF2482C89, 0x7F434563,
+ 0xF21633C0, 0x7F3DD87C,
+ 0xF1E43D1C, 0x7F3857F5,
+ 0xF1B248A5, 0x7F32C3D0,
+ 0xF1805662, 0x7F2D1C0E,
+ 0xF14E665C, 0x7F2760AF,
+ 0xF11C789A, 0x7F2191B4,
+ 0xF0EA8D23, 0x7F1BAF1E,
+ 0xF0B8A401, 0x7F15B8EE,
+ 0xF086BD39, 0x7F0FAF24,
+ 0xF054D8D4, 0x7F0991C3,
+ 0xF022F6DA, 0x7F0360CB,
+ 0xEFF11752, 0x7EFD1C3C,
+ 0xEFBF3A44, 0x7EF6C418,
+ 0xEF8D5FB8, 0x7EF0585F,
+ 0xEF5B87B5, 0x7EE9D913,
+ 0xEF29B243, 0x7EE34635,
+ 0xEEF7DF6A, 0x7EDC9FC6,
+ 0xEEC60F31, 0x7ED5E5C6,
+ 0xEE9441A0, 0x7ECF1837,
+ 0xEE6276BF, 0x7EC8371A,
+ 0xEE30AE95, 0x7EC1426F,
+ 0xEDFEE92B, 0x7EBA3A39,
+ 0xEDCD2687, 0x7EB31E77,
+ 0xED9B66B2, 0x7EABEF2C,
+ 0xED69A9B2, 0x7EA4AC58,
+ 0xED37EF91, 0x7E9D55FC,
+ 0xED063855, 0x7E95EC19,
+ 0xECD48406, 0x7E8E6EB1,
+ 0xECA2D2AC, 0x7E86DDC5,
+ 0xEC71244F, 0x7E7F3956,
+ 0xEC3F78F5, 0x7E778165,
+ 0xEC0DD0A8, 0x7E6FB5F3,
+ 0xEBDC2B6D, 0x7E67D702,
+ 0xEBAA894E, 0x7E5FE493,
+ 0xEB78EA52, 0x7E57DEA6,
+ 0xEB474E80, 0x7E4FC53E,
+ 0xEB15B5E0, 0x7E47985B,
+ 0xEAE4207A, 0x7E3F57FE,
+ 0xEAB28E55, 0x7E37042A,
+ 0xEA80FF79, 0x7E2E9CDF,
+ 0xEA4F73EE, 0x7E26221E,
+ 0xEA1DEBBB, 0x7E1D93E9,
+ 0xE9EC66E8, 0x7E14F242,
+ 0xE9BAE57C, 0x7E0C3D29,
+ 0xE9896780, 0x7E03749F,
+ 0xE957ECFB, 0x7DFA98A7,
+ 0xE92675F4, 0x7DF1A942,
+ 0xE8F50273, 0x7DE8A670,
+ 0xE8C3927F, 0x7DDF9034,
+ 0xE8922621, 0x7DD6668E,
+ 0xE860BD60, 0x7DCD2981,
+ 0xE82F5844, 0x7DC3D90D,
+ 0xE7FDF6D3, 0x7DBA7534,
+ 0xE7CC9917, 0x7DB0FDF7,
+ 0xE79B3F16, 0x7DA77359,
+ 0xE769E8D8, 0x7D9DD55A,
+ 0xE7389664, 0x7D9423FB,
+ 0xE70747C3, 0x7D8A5F3F,
+ 0xE6D5FCFC, 0x7D808727,
+ 0xE6A4B616, 0x7D769BB5,
+ 0xE6737319, 0x7D6C9CE9,
+ 0xE642340D, 0x7D628AC5,
+ 0xE610F8F9, 0x7D58654C,
+ 0xE5DFC1E4, 0x7D4E2C7E,
+ 0xE5AE8ED8, 0x7D43E05E,
+ 0xE57D5FDA, 0x7D3980EC,
+ 0xE54C34F3, 0x7D2F0E2A,
+ 0xE51B0E2A, 0x7D24881A,
+ 0xE4E9EB86, 0x7D19EEBE,
+ 0xE4B8CD10, 0x7D0F4218,
+ 0xE487B2CF, 0x7D048228,
+ 0xE4569CCB, 0x7CF9AEF0,
+ 0xE4258B0A, 0x7CEEC873,
+ 0xE3F47D95, 0x7CE3CEB1,
+ 0xE3C37473, 0x7CD8C1AD,
+ 0xE3926FAC, 0x7CCDA168,
+ 0xE3616F47, 0x7CC26DE5,
+ 0xE330734C, 0x7CB72724,
+ 0xE2FF7BC3, 0x7CABCD27,
+ 0xE2CE88B2, 0x7CA05FF1,
+ 0xE29D9A22, 0x7C94DF82,
+ 0xE26CB01A, 0x7C894BDD,
+ 0xE23BCAA2, 0x7C7DA504,
+ 0xE20AE9C1, 0x7C71EAF8,
+ 0xE1DA0D7E, 0x7C661DBB,
+ 0xE1A935E1, 0x7C5A3D4F,
+ 0xE17862F3, 0x7C4E49B6,
+ 0xE14794B9, 0x7C4242F2,
+ 0xE116CB3D, 0x7C362904,
+ 0xE0E60684, 0x7C29FBEE,
+ 0xE0B54698, 0x7C1DBBB2,
+ 0xE0848B7F, 0x7C116853,
+ 0xE053D541, 0x7C0501D1,
+ 0xE02323E5, 0x7BF88830,
+ 0xDFF27773, 0x7BEBFB70,
+ 0xDFC1CFF2, 0x7BDF5B94,
+ 0xDF912D6A, 0x7BD2A89E,
+ 0xDF608FE3, 0x7BC5E28F,
+ 0xDF2FF764, 0x7BB9096A,
+ 0xDEFF63F4, 0x7BAC1D31,
+ 0xDECED59B, 0x7B9F1DE5,
+ 0xDE9E4C60, 0x7B920B89,
+ 0xDE6DC84B, 0x7B84E61E,
+ 0xDE3D4963, 0x7B77ADA8,
+ 0xDE0CCFB1, 0x7B6A6227,
+ 0xDDDC5B3A, 0x7B5D039D,
+ 0xDDABEC07, 0x7B4F920E,
+ 0xDD7B8220, 0x7B420D7A,
+ 0xDD4B1D8B, 0x7B3475E4,
+ 0xDD1ABE51, 0x7B26CB4F,
+ 0xDCEA6478, 0x7B190DBB,
+ 0xDCBA1008, 0x7B0B3D2C,
+ 0xDC89C108, 0x7AFD59A3,
+ 0xDC597781, 0x7AEF6323,
+ 0xDC293379, 0x7AE159AE,
+ 0xDBF8F4F8, 0x7AD33D45,
+ 0xDBC8BC05, 0x7AC50DEB,
+ 0xDB9888A8, 0x7AB6CBA3,
+ 0xDB685AE8, 0x7AA8766E,
+ 0xDB3832CD, 0x7A9A0E4F,
+ 0xDB08105E, 0x7A8B9348,
+ 0xDAD7F3A2, 0x7A7D055B,
+ 0xDAA7DCA1, 0x7A6E648A,
+ 0xDA77CB62, 0x7A5FB0D8,
+ 0xDA47BFED, 0x7A50EA46,
+ 0xDA17BA4A, 0x7A4210D8,
+ 0xD9E7BA7E, 0x7A33248F,
+ 0xD9B7C093, 0x7A24256E,
+ 0xD987CC8F, 0x7A151377,
+ 0xD957DE7A, 0x7A05EEAD,
+ 0xD927F65B, 0x79F6B711,
+ 0xD8F81439, 0x79E76CA6,
+ 0xD8C8381C, 0x79D80F6F,
+ 0xD898620C, 0x79C89F6D,
+ 0xD868920F, 0x79B91CA4,
+ 0xD838C82D, 0x79A98715,
+ 0xD809046D, 0x7999DEC3,
+ 0xD7D946D7, 0x798A23B1,
+ 0xD7A98F73, 0x797A55E0,
+ 0xD779DE46, 0x796A7554,
+ 0xD74A335A, 0x795A820E,
+ 0xD71A8EB5, 0x794A7C11,
+ 0xD6EAF05E, 0x793A6360,
+ 0xD6BB585D, 0x792A37FE,
+ 0xD68BC6BA, 0x7919F9EB,
+ 0xD65C3B7B, 0x7909A92C,
+ 0xD62CB6A7, 0x78F945C3,
+ 0xD5FD3847, 0x78E8CFB1,
+ 0xD5CDC062, 0x78D846FB,
+ 0xD59E4EFE, 0x78C7ABA1,
+ 0xD56EE424, 0x78B6FDA8,
+ 0xD53F7FDA, 0x78A63D10,
+ 0xD5102227, 0x789569DE,
+ 0xD4E0CB14, 0x78848413,
+ 0xD4B17AA7, 0x78738BB3,
+ 0xD48230E8, 0x786280BF,
+ 0xD452EDDE, 0x7851633B,
+ 0xD423B190, 0x78403328,
+ 0xD3F47C06, 0x782EF08B,
+ 0xD3C54D46, 0x781D9B64,
+ 0xD3962559, 0x780C33B8,
+ 0xD3670445, 0x77FAB988,
+ 0xD337EA12, 0x77E92CD8,
+ 0xD308D6C6, 0x77D78DAA,
+ 0xD2D9CA6A, 0x77C5DC01,
+ 0xD2AAC504, 0x77B417DF,
+ 0xD27BC69C, 0x77A24148,
+ 0xD24CCF38, 0x7790583D,
+ 0xD21DDEE1, 0x777E5CC3,
+ 0xD1EEF59E, 0x776C4EDB,
+ 0xD1C01374, 0x775A2E88,
+ 0xD191386D, 0x7747FBCE,
+ 0xD162648F, 0x7735B6AE,
+ 0xD13397E1, 0x77235F2D,
+ 0xD104D26B, 0x7710F54B,
+ 0xD0D61433, 0x76FE790E,
+ 0xD0A75D42, 0x76EBEA77,
+ 0xD078AD9D, 0x76D94988,
+ 0xD04A054D, 0x76C69646,
+ 0xD01B6459, 0x76B3D0B3,
+ 0xCFECCAC7, 0x76A0F8D2,
+ 0xCFBE389F, 0x768E0EA5,
+ 0xCF8FADE8, 0x767B1230,
+ 0xCF612AAA, 0x76680376,
+ 0xCF32AEEB, 0x7654E279,
+ 0xCF043AB2, 0x7641AF3C,
+ 0xCED5CE08, 0x762E69C3,
+ 0xCEA768F2, 0x761B1211,
+ 0xCE790B78, 0x7607A827,
+ 0xCE4AB5A2, 0x75F42C0A,
+ 0xCE1C6776, 0x75E09DBD,
+ 0xCDEE20FC, 0x75CCFD42,
+ 0xCDBFE23A, 0x75B94A9C,
+ 0xCD91AB38, 0x75A585CF,
+ 0xCD637BFD, 0x7591AEDD,
+ 0xCD355490, 0x757DC5CA,
+ 0xCD0734F8, 0x7569CA98,
+ 0xCCD91D3D, 0x7555BD4B,
+ 0xCCAB0D65, 0x75419DE6,
+ 0xCC7D0577, 0x752D6C6C,
+ 0xCC4F057B, 0x751928E0,
+ 0xCC210D78, 0x7504D345,
+ 0xCBF31D75, 0x74F06B9E,
+ 0xCBC53578, 0x74DBF1EF,
+ 0xCB975589, 0x74C7663A,
+ 0xCB697DB0, 0x74B2C883,
+ 0xCB3BADF2, 0x749E18CD,
+ 0xCB0DE658, 0x7489571B,
+ 0xCAE026E8, 0x74748371,
+ 0xCAB26FA9, 0x745F9DD1,
+ 0xCA84C0A2, 0x744AA63E,
+ 0xCA5719DB, 0x74359CBD,
+ 0xCA297B5A, 0x74208150,
+ 0xC9FBE527, 0x740B53FA,
+ 0xC9CE5748, 0x73F614C0,
+ 0xC9A0D1C4, 0x73E0C3A3,
+ 0xC97354A3, 0x73CB60A7,
+ 0xC945DFEC, 0x73B5EBD0,
+ 0xC91873A5, 0x73A06522,
+ 0xC8EB0FD6, 0x738ACC9E,
+ 0xC8BDB485, 0x73752249,
+ 0xC89061BA, 0x735F6626,
+ 0xC863177B, 0x73499838,
+ 0xC835D5D0, 0x7333B883,
+ 0xC8089CBF, 0x731DC709,
+ 0xC7DB6C50, 0x7307C3D0,
+ 0xC7AE4489, 0x72F1AED8,
+ 0xC7812571, 0x72DB8828,
+ 0xC7540F10, 0x72C54FC0,
+ 0xC727016C, 0x72AF05A6,
+ 0xC6F9FC8D, 0x7298A9DC,
+ 0xC6CD0079, 0x72823C66,
+ 0xC6A00D36, 0x726BBD48,
+ 0xC67322CD, 0x72552C84,
+ 0xC6464144, 0x723E8A1F,
+ 0xC61968A2, 0x7227D61C,
+ 0xC5EC98ED, 0x7211107D,
+ 0xC5BFD22E, 0x71FA3948,
+ 0xC593146A, 0x71E3507F,
+ 0xC5665FA8, 0x71CC5626,
+ 0xC539B3F0, 0x71B54A40,
+ 0xC50D1148, 0x719E2CD2,
+ 0xC4E077B8, 0x7186FDDE,
+ 0xC4B3E746, 0x716FBD68,
+ 0xC4875FF8, 0x71586B73,
+ 0xC45AE1D7, 0x71410804,
+ 0xC42E6CE8, 0x7129931E,
+ 0xC4020132, 0x71120CC5,
+ 0xC3D59EBD, 0x70FA74FB,
+ 0xC3A9458F, 0x70E2CBC6,
+ 0xC37CF5B0, 0x70CB1127,
+ 0xC350AF25, 0x70B34524,
+ 0xC32471F6, 0x709B67C0,
+ 0xC2F83E2A, 0x708378FE,
+ 0xC2CC13C7, 0x706B78E3,
+ 0xC29FF2D4, 0x70536771,
+ 0xC273DB58, 0x703B44AC,
+ 0xC247CD5A, 0x70231099,
+ 0xC21BC8E0, 0x700ACB3B,
+ 0xC1EFCDF2, 0x6FF27496,
+ 0xC1C3DC96, 0x6FDA0CAD,
+ 0xC197F4D3, 0x6FC19385,
+ 0xC16C16B0, 0x6FA90920,
+ 0xC1404233, 0x6F906D84,
+ 0xC1147763, 0x6F77C0B3,
+ 0xC0E8B648, 0x6F5F02B1,
+ 0xC0BCFEE7, 0x6F463383,
+ 0xC0915147, 0x6F2D532C,
+ 0xC065AD70, 0x6F1461AF,
+ 0xC03A1368, 0x6EFB5F12,
+ 0xC00E8335, 0x6EE24B57,
+ 0xBFE2FCDF, 0x6EC92682,
+ 0xBFB7806C, 0x6EAFF098,
+ 0xBF8C0DE2, 0x6E96A99C,
+ 0xBF60A54A, 0x6E7D5193,
+ 0xBF3546A8, 0x6E63E87F,
+ 0xBF09F204, 0x6E4A6E65,
+ 0xBEDEA765, 0x6E30E349,
+ 0xBEB366D1, 0x6E17472F,
+ 0xBE88304F, 0x6DFD9A1B,
+ 0xBE5D03E5, 0x6DE3DC11,
+ 0xBE31E19B, 0x6DCA0D14,
+ 0xBE06C977, 0x6DB02D29,
+ 0xBDDBBB7F, 0x6D963C54,
+ 0xBDB0B7BA, 0x6D7C3A98,
+ 0xBD85BE2F, 0x6D6227FA,
+ 0xBD5ACEE5, 0x6D48047E,
+ 0xBD2FE9E1, 0x6D2DD027,
+ 0xBD050F2C, 0x6D138AFA,
+ 0xBCDA3ECA, 0x6CF934FB,
+ 0xBCAF78C3, 0x6CDECE2E,
+ 0xBC84BD1E, 0x6CC45697,
+ 0xBC5A0BE1, 0x6CA9CE3A,
+ 0xBC2F6513, 0x6C8F351C,
+ 0xBC04C8BA, 0x6C748B3F,
+ 0xBBDA36DC, 0x6C59D0A9,
+ 0xBBAFAF81, 0x6C3F055D,
+ 0xBB8532AF, 0x6C242960,
+ 0xBB5AC06C, 0x6C093CB6,
+ 0xBB3058C0, 0x6BEE3F62,
+ 0xBB05FBB0, 0x6BD3316A,
+ 0xBADBA943, 0x6BB812D0,
+ 0xBAB1617F, 0x6B9CE39B,
+ 0xBA87246C, 0x6B81A3CD,
+ 0xBA5CF210, 0x6B66536A,
+ 0xBA32CA70, 0x6B4AF278,
+ 0xBA08AD94, 0x6B2F80FA,
+ 0xB9DE9B83, 0x6B13FEF5,
+ 0xB9B49442, 0x6AF86C6C,
+ 0xB98A97D8, 0x6ADCC964,
+ 0xB960A64B, 0x6AC115E1,
+ 0xB936BFA3, 0x6AA551E8,
+ 0xB90CE3E6, 0x6A897D7D,
+ 0xB8E31319, 0x6A6D98A4,
+ 0xB8B94D44, 0x6A51A361,
+ 0xB88F926C, 0x6A359DB9,
+ 0xB865E299, 0x6A1987B0,
+ 0xB83C3DD1, 0x69FD614A,
+ 0xB812A419, 0x69E12A8C,
+ 0xB7E9157A, 0x69C4E37A,
+ 0xB7BF91F8, 0x69A88C18,
+ 0xB796199B, 0x698C246C,
+ 0xB76CAC68, 0x696FAC78,
+ 0xB7434A67, 0x69532442,
+ 0xB719F39D, 0x69368BCE,
+ 0xB6F0A811, 0x6919E320,
+ 0xB6C767CA, 0x68FD2A3D,
+ 0xB69E32CD, 0x68E06129,
+ 0xB6750921, 0x68C387E9,
+ 0xB64BEACC, 0x68A69E81,
+ 0xB622D7D5, 0x6889A4F5,
+ 0xB5F9D042, 0x686C9B4B,
+ 0xB5D0D41A, 0x684F8186,
+ 0xB5A7E362, 0x683257AA,
+ 0xB57EFE21, 0x68151DBE,
+ 0xB556245E, 0x67F7D3C4,
+ 0xB52D561E, 0x67DA79C2,
+ 0xB5049368, 0x67BD0FBC,
+ 0xB4DBDC42, 0x679F95B7,
+ 0xB4B330B2, 0x67820BB6,
+ 0xB48A90C0, 0x676471C0,
+ 0xB461FC70, 0x6746C7D7,
+ 0xB43973C9, 0x67290E02,
+ 0xB410F6D2, 0x670B4443,
+ 0xB3E88591, 0x66ED6AA1,
+ 0xB3C0200C, 0x66CF811F,
+ 0xB397C649, 0x66B187C3,
+ 0xB36F784E, 0x66937E90,
+ 0xB3473622, 0x6675658C,
+ 0xB31EFFCB, 0x66573CBB,
+ 0xB2F6D54F, 0x66390422,
+ 0xB2CEB6B5, 0x661ABBC5,
+ 0xB2A6A401, 0x65FC63A9,
+ 0xB27E9D3B, 0x65DDFBD3,
+ 0xB256A26A, 0x65BF8447,
+ 0xB22EB392, 0x65A0FD0B,
+ 0xB206D0BA, 0x65826622,
+ 0xB1DEF9E8, 0x6563BF92,
+ 0xB1B72F23, 0x6545095F,
+ 0xB18F7070, 0x6526438E,
+ 0xB167BDD6, 0x65076E24,
+ 0xB140175B, 0x64E88926,
+ 0xB1187D05, 0x64C99498,
+ 0xB0F0EEDA, 0x64AA907F,
+ 0xB0C96CDF, 0x648B7CDF,
+ 0xB0A1F71C, 0x646C59BF,
+ 0xB07A8D97, 0x644D2722,
+ 0xB0533055, 0x642DE50D,
+ 0xB02BDF5C, 0x640E9385,
+ 0xB0049AB2, 0x63EF328F,
+ 0xAFDD625F, 0x63CFC230,
+ 0xAFB63667, 0x63B0426D,
+ 0xAF8F16D0, 0x6390B34A,
+ 0xAF6803A1, 0x637114CC,
+ 0xAF40FCE0, 0x635166F8,
+ 0xAF1A0293, 0x6331A9D4,
+ 0xAEF314BF, 0x6311DD63,
+ 0xAECC336B, 0x62F201AC,
+ 0xAEA55E9D, 0x62D216B2,
+ 0xAE7E965B, 0x62B21C7B,
+ 0xAE57DAAA, 0x6292130C,
+ 0xAE312B91, 0x6271FA69,
+ 0xAE0A8916, 0x6251D297,
+ 0xADE3F33E, 0x62319B9D,
+ 0xADBD6A10, 0x6211557D,
+ 0xAD96ED91, 0x61F1003E,
+ 0xAD707DC8, 0x61D09BE5,
+ 0xAD4A1ABA, 0x61B02876,
+ 0xAD23C46D, 0x618FA5F6,
+ 0xACFD7AE8, 0x616F146B,
+ 0xACD73E30, 0x614E73D9,
+ 0xACB10E4A, 0x612DC446,
+ 0xAC8AEB3E, 0x610D05B7,
+ 0xAC64D510, 0x60EC3830,
+ 0xAC3ECBC7, 0x60CB5BB6,
+ 0xAC18CF68, 0x60AA704F,
+ 0xABF2DFFA, 0x60897600,
+ 0xABCCFD82, 0x60686CCE,
+ 0xABA72806, 0x604754BE,
+ 0xAB815F8C, 0x60262DD5,
+ 0xAB5BA41A, 0x6004F818,
+ 0xAB35F5B5, 0x5FE3B38D,
+ 0xAB105464, 0x5FC26038,
+ 0xAAEAC02B, 0x5FA0FE1E,
+ 0xAAC53912, 0x5F7F8D46,
+ 0xAA9FBF1D, 0x5F5E0DB3,
+ 0xAA7A5253, 0x5F3C7F6B,
+ 0xAA54F2B9, 0x5F1AE273,
+ 0xAA2FA055, 0x5EF936D1,
+ 0xAA0A5B2D, 0x5ED77C89,
+ 0xA9E52347, 0x5EB5B3A1,
+ 0xA9BFF8A8, 0x5E93DC1F,
+ 0xA99ADB56, 0x5E71F606,
+ 0xA975CB56, 0x5E50015D,
+ 0xA950C8AF, 0x5E2DFE28,
+ 0xA92BD366, 0x5E0BEC6E,
+ 0xA906EB81, 0x5DE9CC32,
+ 0xA8E21106, 0x5DC79D7C,
+ 0xA8BD43FA, 0x5DA5604E,
+ 0xA8988463, 0x5D8314B0,
+ 0xA873D246, 0x5D60BAA6,
+ 0xA84F2DA9, 0x5D3E5236,
+ 0xA82A9693, 0x5D1BDB65,
+ 0xA8060D08, 0x5CF95638,
+ 0xA7E1910E, 0x5CD6C2B4,
+ 0xA7BD22AB, 0x5CB420DF,
+ 0xA798C1E4, 0x5C9170BF,
+ 0xA7746EC0, 0x5C6EB258,
+ 0xA7502943, 0x5C4BE5B0,
+ 0xA72BF173, 0x5C290ACC,
+ 0xA707C756, 0x5C0621B2,
+ 0xA6E3AAF2, 0x5BE32A67,
+ 0xA6BF9C4B, 0x5BC024F0,
+ 0xA69B9B68, 0x5B9D1153,
+ 0xA677A84E, 0x5B79EF96,
+ 0xA653C302, 0x5B56BFBD,
+ 0xA62FEB8B, 0x5B3381CE,
+ 0xA60C21ED, 0x5B1035CF,
+ 0xA5E8662F, 0x5AECDBC4,
+ 0xA5C4B855, 0x5AC973B4,
+ 0xA5A11865, 0x5AA5FDA4,
+ 0xA57D8666, 0x5A82799A,
+ 0xA55A025B, 0x5A5EE79A,
+ 0xA5368C4B, 0x5A3B47AA,
+ 0xA513243B, 0x5A1799D0,
+ 0xA4EFCA31, 0x59F3DE12,
+ 0xA4CC7E31, 0x59D01474,
+ 0xA4A94042, 0x59AC3CFD,
+ 0xA4861069, 0x598857B1,
+ 0xA462EEAC, 0x59646497,
+ 0xA43FDB0F, 0x594063B4,
+ 0xA41CD598, 0x591C550E,
+ 0xA3F9DE4D, 0x58F838A9,
+ 0xA3D6F533, 0x58D40E8C,
+ 0xA3B41A4F, 0x58AFD6BC,
+ 0xA3914DA7, 0x588B913F,
+ 0xA36E8F40, 0x58673E1B,
+ 0xA34BDF20, 0x5842DD54,
+ 0xA3293D4B, 0x581E6EF1,
+ 0xA306A9C7, 0x57F9F2F7,
+ 0xA2E4249A, 0x57D5696C,
+ 0xA2C1ADC9, 0x57B0D256,
+ 0xA29F4559, 0x578C2DB9,
+ 0xA27CEB4F, 0x57677B9D,
+ 0xA25A9FB1, 0x5742BC05,
+ 0xA2386283, 0x571DEEF9,
+ 0xA21633CD, 0x56F9147E,
+ 0xA1F41391, 0x56D42C99,
+ 0xA1D201D7, 0x56AF3750,
+ 0xA1AFFEA2, 0x568A34A9,
+ 0xA18E09F9, 0x566524AA,
+ 0xA16C23E1, 0x56400757,
+ 0xA14A4C5E, 0x561ADCB8,
+ 0xA1288376, 0x55F5A4D2,
+ 0xA106C92E, 0x55D05FAA,
+ 0xA0E51D8C, 0x55AB0D46,
+ 0xA0C38094, 0x5585ADAC,
+ 0xA0A1F24C, 0x556040E2,
+ 0xA08072BA, 0x553AC6ED,
+ 0xA05F01E1, 0x55153FD4,
+ 0xA03D9FC7, 0x54EFAB9C,
+ 0xA01C4C72, 0x54CA0A4A,
+ 0x9FFB07E7, 0x54A45BE5,
+ 0x9FD9D22A, 0x547EA073,
+ 0x9FB8AB41, 0x5458D7F9,
+ 0x9F979331, 0x5433027D,
+ 0x9F7689FF, 0x540D2005,
+ 0x9F558FB0, 0x53E73097,
+ 0x9F34A449, 0x53C13438,
+ 0x9F13C7D0, 0x539B2AEF,
+ 0x9EF2FA48, 0x537514C1,
+ 0x9ED23BB9, 0x534EF1B5,
+ 0x9EB18C26, 0x5328C1D0,
+ 0x9E90EB94, 0x53028517,
+ 0x9E705A09, 0x52DC3B92,
+ 0x9E4FD789, 0x52B5E545,
+ 0x9E2F641A, 0x528F8237,
+ 0x9E0EFFC1, 0x5269126E,
+ 0x9DEEAA82, 0x524295EF,
+ 0x9DCE6462, 0x521C0CC1,
+ 0x9DAE2D68, 0x51F576E9,
+ 0x9D8E0596, 0x51CED46E,
+ 0x9D6DECF4, 0x51A82555,
+ 0x9D4DE384, 0x518169A4,
+ 0x9D2DE94D, 0x515AA162,
+ 0x9D0DFE53, 0x5133CC94,
+ 0x9CEE229C, 0x510CEB40,
+ 0x9CCE562B, 0x50E5FD6C,
+ 0x9CAE9907, 0x50BF031F,
+ 0x9C8EEB33, 0x5097FC5E,
+ 0x9C6F4CB5, 0x5070E92F,
+ 0x9C4FBD92, 0x5049C999,
+ 0x9C303DCF, 0x50229DA0,
+ 0x9C10CD70, 0x4FFB654D,
+ 0x9BF16C7A, 0x4FD420A3,
+ 0x9BD21AF2, 0x4FACCFAB,
+ 0x9BB2D8DD, 0x4F857268,
+ 0x9B93A640, 0x4F5E08E3,
+ 0x9B748320, 0x4F369320,
+ 0x9B556F80, 0x4F0F1126,
+ 0x9B366B67, 0x4EE782FA,
+ 0x9B1776D9, 0x4EBFE8A4,
+ 0x9AF891DB, 0x4E984229,
+ 0x9AD9BC71, 0x4E708F8F,
+ 0x9ABAF6A0, 0x4E48D0DC,
+ 0x9A9C406D, 0x4E210617,
+ 0x9A7D99DD, 0x4DF92F45,
+ 0x9A5F02F5, 0x4DD14C6E,
+ 0x9A407BB8, 0x4DA95D96,
+ 0x9A22042C, 0x4D8162C4,
+ 0x9A039C56, 0x4D595BFE,
+ 0x99E5443A, 0x4D31494B,
+ 0x99C6FBDE, 0x4D092AB0,
+ 0x99A8C344, 0x4CE10034,
+ 0x998A9A73, 0x4CB8C9DD,
+ 0x996C816F, 0x4C9087B1,
+ 0x994E783C, 0x4C6839B6,
+ 0x99307EE0, 0x4C3FDFF3,
+ 0x9912955E, 0x4C177A6E,
+ 0x98F4BBBC, 0x4BEF092D,
+ 0x98D6F1FE, 0x4BC68C36,
+ 0x98B93828, 0x4B9E038F,
+ 0x989B8E3F, 0x4B756F3F,
+ 0x987DF449, 0x4B4CCF4D,
+ 0x98606A48, 0x4B2423BD,
+ 0x9842F043, 0x4AFB6C97,
+ 0x9825863D, 0x4AD2A9E1,
+ 0x98082C3B, 0x4AA9DBA1,
+ 0x97EAE241, 0x4A8101DE,
+ 0x97CDA855, 0x4A581C9D,
+ 0x97B07E7A, 0x4A2F2BE5,
+ 0x979364B5, 0x4A062FBD,
+ 0x97765B0A, 0x49DD282A,
+ 0x9759617E, 0x49B41533,
+ 0x973C7816, 0x498AF6DE,
+ 0x971F9ED6, 0x4961CD32,
+ 0x9702D5C2, 0x49389836,
+ 0x96E61CDF, 0x490F57EE,
+ 0x96C97431, 0x48E60C62,
+ 0x96ACDBBD, 0x48BCB598,
+ 0x96905387, 0x48935397,
+ 0x9673DB94, 0x4869E664,
+ 0x965773E7, 0x48406E07,
+ 0x963B1C85, 0x4816EA85,
+ 0x961ED573, 0x47ED5BE6,
+ 0x96029EB5, 0x47C3C22E,
+ 0x95E6784F, 0x479A1D66,
+ 0x95CA6246, 0x47706D93,
+ 0x95AE5C9E, 0x4746B2BC,
+ 0x9592675B, 0x471CECE6,
+ 0x95768282, 0x46F31C1A,
+ 0x955AAE17, 0x46C9405C,
+ 0x953EEA1E, 0x469F59B4,
+ 0x9523369B, 0x46756827,
+ 0x95079393, 0x464B6BBD,
+ 0x94EC010B, 0x4621647C,
+ 0x94D07F05, 0x45F7526B,
+ 0x94B50D87, 0x45CD358F,
+ 0x9499AC95, 0x45A30DF0,
+ 0x947E5C32, 0x4578DB93,
+ 0x94631C64, 0x454E9E80,
+ 0x9447ED2F, 0x452456BC,
+ 0x942CCE95, 0x44FA044F,
+ 0x9411C09D, 0x44CFA73F,
+ 0x93F6C34A, 0x44A53F93,
+ 0x93DBD69F, 0x447ACD50,
+ 0x93C0FAA2, 0x4450507E,
+ 0x93A62F56, 0x4425C923,
+ 0x938B74C0, 0x43FB3745,
+ 0x9370CAE4, 0x43D09AEC,
+ 0x935631C5, 0x43A5F41E,
+ 0x933BA968, 0x437B42E1,
+ 0x932131D1, 0x4350873C,
+ 0x9306CB04, 0x4325C135,
+ 0x92EC7505, 0x42FAF0D4,
+ 0x92D22FD8, 0x42D0161E,
+ 0x92B7FB82, 0x42A5311A,
+ 0x929DD805, 0x427A41D0,
+ 0x9283C567, 0x424F4845,
+ 0x9269C3AC, 0x42244480,
+ 0x924FD2D6, 0x41F93688,
+ 0x9235F2EB, 0x41CE1E64,
+ 0x921C23EE, 0x41A2FC1A,
+ 0x920265E4, 0x4177CFB0,
+ 0x91E8B8D0, 0x414C992E,
+ 0x91CF1CB6, 0x4121589A,
+ 0x91B5919A, 0x40F60DFB,
+ 0x919C1780, 0x40CAB957,
+ 0x9182AE6C, 0x409F5AB6,
+ 0x91695663, 0x4073F21D,
+ 0x91500F67, 0x40487F93,
+ 0x9136D97D, 0x401D0320,
+ 0x911DB4A8, 0x3FF17CCA,
+ 0x9104A0ED, 0x3FC5EC97,
+ 0x90EB9E50, 0x3F9A528F,
+ 0x90D2ACD3, 0x3F6EAEB8,
+ 0x90B9CC7C, 0x3F430118,
+ 0x90A0FD4E, 0x3F1749B7,
+ 0x90883F4C, 0x3EEB889C,
+ 0x906F927B, 0x3EBFBDCC,
+ 0x9056F6DF, 0x3E93E94F,
+ 0x903E6C7A, 0x3E680B2C,
+ 0x9025F352, 0x3E3C2369,
+ 0x900D8B69, 0x3E10320D,
+ 0x8FF534C4, 0x3DE4371F,
+ 0x8FDCEF66, 0x3DB832A5,
+ 0x8FC4BB53, 0x3D8C24A7,
+ 0x8FAC988E, 0x3D600D2B,
+ 0x8F94871D, 0x3D33EC39,
+ 0x8F7C8701, 0x3D07C1D5,
+ 0x8F64983F, 0x3CDB8E09,
+ 0x8F4CBADB, 0x3CAF50DA,
+ 0x8F34EED8, 0x3C830A4F,
+ 0x8F1D343A, 0x3C56BA70,
+ 0x8F058B04, 0x3C2A6142,
+ 0x8EEDF33B, 0x3BFDFECD,
+ 0x8ED66CE1, 0x3BD19317,
+ 0x8EBEF7FB, 0x3BA51E29,
+ 0x8EA7948C, 0x3B78A007,
+ 0x8E904298, 0x3B4C18BA,
+ 0x8E790222, 0x3B1F8847,
+ 0x8E61D32D, 0x3AF2EEB7,
+ 0x8E4AB5BF, 0x3AC64C0F,
+ 0x8E33A9D9, 0x3A99A057,
+ 0x8E1CAF80, 0x3A6CEB95,
+ 0x8E05C6B7, 0x3A402DD1,
+ 0x8DEEEF82, 0x3A136712,
+ 0x8DD829E4, 0x39E6975D,
+ 0x8DC175E0, 0x39B9BEBB,
+ 0x8DAAD37B, 0x398CDD32,
+ 0x8D9442B7, 0x395FF2C9,
+ 0x8D7DC399, 0x3932FF87,
+ 0x8D675623, 0x39060372,
+ 0x8D50FA59, 0x38D8FE93,
+ 0x8D3AB03F, 0x38ABF0EF,
+ 0x8D2477D8, 0x387EDA8E,
+ 0x8D0E5127, 0x3851BB76,
+ 0x8CF83C30, 0x382493B0,
+ 0x8CE238F6, 0x37F76340,
+ 0x8CCC477D, 0x37CA2A30,
+ 0x8CB667C7, 0x379CE884,
+ 0x8CA099D9, 0x376F9E46,
+ 0x8C8ADDB6, 0x37424B7A,
+ 0x8C753361, 0x3714F02A,
+ 0x8C5F9ADD, 0x36E78C5A,
+ 0x8C4A142F, 0x36BA2013,
+ 0x8C349F58, 0x368CAB5C,
+ 0x8C1F3C5C, 0x365F2E3B,
+ 0x8C09EB40, 0x3631A8B7,
+ 0x8BF4AC05, 0x36041AD9,
+ 0x8BDF7EAF, 0x35D684A5,
+ 0x8BCA6342, 0x35A8E624,
+ 0x8BB559C1, 0x357B3F5D,
+ 0x8BA0622F, 0x354D9056,
+ 0x8B8B7C8F, 0x351FD917,
+ 0x8B76A8E4, 0x34F219A7,
+ 0x8B61E732, 0x34C4520D,
+ 0x8B4D377C, 0x3496824F,
+ 0x8B3899C5, 0x3468AA76,
+ 0x8B240E10, 0x343ACA87,
+ 0x8B0F9461, 0x340CE28A,
+ 0x8AFB2CBA, 0x33DEF287,
+ 0x8AE6D71F, 0x33B0FA84,
+ 0x8AD29393, 0x3382FA88,
+ 0x8ABE6219, 0x3354F29A,
+ 0x8AAA42B4, 0x3326E2C2,
+ 0x8A963567, 0x32F8CB07,
+ 0x8A823A35, 0x32CAAB6F,
+ 0x8A6E5122, 0x329C8402,
+ 0x8A5A7A30, 0x326E54C7,
+ 0x8A46B563, 0x32401DC5,
+ 0x8A3302BD, 0x3211DF03,
+ 0x8A1F6242, 0x31E39889,
+ 0x8A0BD3F5, 0x31B54A5D,
+ 0x89F857D8, 0x3186F487,
+ 0x89E4EDEE, 0x3158970D,
+ 0x89D1963C, 0x312A31F8,
+ 0x89BE50C3, 0x30FBC54D,
+ 0x89AB1D86, 0x30CD5114,
+ 0x8997FC89, 0x309ED555,
+ 0x8984EDCF, 0x30705217,
+ 0x8971F15A, 0x3041C760,
+ 0x895F072D, 0x30133538,
+ 0x894C2F4C, 0x2FE49BA6,
+ 0x893969B9, 0x2FB5FAB2,
+ 0x8926B677, 0x2F875262,
+ 0x89141589, 0x2F58A2BD,
+ 0x890186F1, 0x2F29EBCC,
+ 0x88EF0AB4, 0x2EFB2D94,
+ 0x88DCA0D3, 0x2ECC681E,
+ 0x88CA4951, 0x2E9D9B70,
+ 0x88B80431, 0x2E6EC792,
+ 0x88A5D177, 0x2E3FEC8B,
+ 0x8893B124, 0x2E110A62,
+ 0x8881A33C, 0x2DE2211E,
+ 0x886FA7C2, 0x2DB330C7,
+ 0x885DBEB7, 0x2D843963,
+ 0x884BE820, 0x2D553AFB,
+ 0x883A23FE, 0x2D263595,
+ 0x88287255, 0x2CF72939,
+ 0x8816D327, 0x2CC815ED,
+ 0x88054677, 0x2C98FBBA,
+ 0x87F3CC47, 0x2C69DAA6,
+ 0x87E2649B, 0x2C3AB2B9,
+ 0x87D10F75, 0x2C0B83F9,
+ 0x87BFCCD7, 0x2BDC4E6F,
+ 0x87AE9CC5, 0x2BAD1221,
+ 0x879D7F40, 0x2B7DCF17,
+ 0x878C744C, 0x2B4E8558,
+ 0x877B7BEC, 0x2B1F34EB,
+ 0x876A9621, 0x2AEFDDD8,
+ 0x8759C2EF, 0x2AC08025,
+ 0x87490257, 0x2A911BDB,
+ 0x8738545E, 0x2A61B101,
+ 0x8727B904, 0x2A323F9D,
+ 0x8717304E, 0x2A02C7B8,
+ 0x8706BA3C, 0x29D34958,
+ 0x86F656D3, 0x29A3C484,
+ 0x86E60614, 0x29743945,
+ 0x86D5C802, 0x2944A7A2,
+ 0x86C59C9F, 0x29150FA1,
+ 0x86B583EE, 0x28E5714A,
+ 0x86A57DF1, 0x28B5CCA5,
+ 0x86958AAB, 0x288621B9,
+ 0x8685AA1F, 0x2856708C,
+ 0x8675DC4E, 0x2826B928,
+ 0x8666213C, 0x27F6FB92,
+ 0x865678EA, 0x27C737D2,
+ 0x8646E35B, 0x27976DF1,
+ 0x86376092, 0x27679DF4,
+ 0x8627F090, 0x2737C7E3,
+ 0x86189359, 0x2707EBC6,
+ 0x860948EE, 0x26D809A5,
+ 0x85FA1152, 0x26A82185,
+ 0x85EAEC88, 0x26783370,
+ 0x85DBDA91, 0x26483F6C,
+ 0x85CCDB70, 0x26184581,
+ 0x85BDEF27, 0x25E845B5,
+ 0x85AF15B9, 0x25B84012,
+ 0x85A04F28, 0x2588349D,
+ 0x85919B75, 0x2558235E,
+ 0x8582FAA4, 0x25280C5D,
+ 0x85746CB7, 0x24F7EFA1,
+ 0x8565F1B0, 0x24C7CD32,
+ 0x85578991, 0x2497A517,
+ 0x8549345C, 0x24677757,
+ 0x853AF214, 0x243743FA,
+ 0x852CC2BA, 0x24070B07,
+ 0x851EA652, 0x23D6CC86,
+ 0x85109CDC, 0x23A6887E,
+ 0x8502A65C, 0x23763EF7,
+ 0x84F4C2D3, 0x2345EFF7,
+ 0x84E6F244, 0x23159B87,
+ 0x84D934B0, 0x22E541AE,
+ 0x84CB8A1B, 0x22B4E274,
+ 0x84BDF285, 0x22847DDF,
+ 0x84B06DF1, 0x225413F8,
+ 0x84A2FC62, 0x2223A4C5,
+ 0x84959DD9, 0x21F3304E,
+ 0x84885257, 0x21C2B69C,
+ 0x847B19E1, 0x219237B4,
+ 0x846DF476, 0x2161B39F,
+ 0x8460E21A, 0x21312A65,
+ 0x8453E2CE, 0x21009C0B,
+ 0x8446F695, 0x20D0089B,
+ 0x843A1D70, 0x209F701C,
+ 0x842D5761, 0x206ED295,
+ 0x8420A46B, 0x203E300D,
+ 0x8414048F, 0x200D888C,
+ 0x840777CF, 0x1FDCDC1A,
+ 0x83FAFE2E, 0x1FAC2ABF,
+ 0x83EE97AC, 0x1F7B7480,
+ 0x83E2444D, 0x1F4AB967,
+ 0x83D60411, 0x1F19F97B,
+ 0x83C9D6FB, 0x1EE934C2,
+ 0x83BDBD0D, 0x1EB86B46,
+ 0x83B1B649, 0x1E879D0C,
+ 0x83A5C2B0, 0x1E56CA1E,
+ 0x8399E244, 0x1E25F281,
+ 0x838E1507, 0x1DF5163F,
+ 0x83825AFB, 0x1DC4355D,
+ 0x8376B422, 0x1D934FE5,
+ 0x836B207D, 0x1D6265DD,
+ 0x835FA00E, 0x1D31774D,
+ 0x835432D8, 0x1D00843C,
+ 0x8348D8DB, 0x1CCF8CB3,
+ 0x833D921A, 0x1C9E90B8,
+ 0x83325E97, 0x1C6D9053,
+ 0x83273E52, 0x1C3C8B8C,
+ 0x831C314E, 0x1C0B826A,
+ 0x8311378C, 0x1BDA74F5,
+ 0x8306510F, 0x1BA96334,
+ 0x82FB7DD8, 0x1B784D30,
+ 0x82F0BDE8, 0x1B4732EF,
+ 0x82E61141, 0x1B161479,
+ 0x82DB77E5, 0x1AE4F1D6,
+ 0x82D0F1D5, 0x1AB3CB0C,
+ 0x82C67F13, 0x1A82A025,
+ 0x82BC1FA1, 0x1A517127,
+ 0x82B1D381, 0x1A203E1B,
+ 0x82A79AB3, 0x19EF0706,
+ 0x829D753A, 0x19BDCBF2,
+ 0x82936316, 0x198C8CE6,
+ 0x8289644A, 0x195B49E9,
+ 0x827F78D8, 0x192A0303,
+ 0x8275A0C0, 0x18F8B83C,
+ 0x826BDC04, 0x18C7699B,
+ 0x82622AA5, 0x18961727,
+ 0x82588CA6, 0x1864C0E9,
+ 0x824F0208, 0x183366E8,
+ 0x82458ACB, 0x1802092C,
+ 0x823C26F2, 0x17D0A7BB,
+ 0x8232D67E, 0x179F429F,
+ 0x82299971, 0x176DD9DE,
+ 0x82206FCB, 0x173C6D80,
+ 0x8217598F, 0x170AFD8D,
+ 0x820E56BE, 0x16D98A0C,
+ 0x82056758, 0x16A81305,
+ 0x81FC8B60, 0x1676987F,
+ 0x81F3C2D7, 0x16451A83,
+ 0x81EB0DBD, 0x16139917,
+ 0x81E26C16, 0x15E21444,
+ 0x81D9DDE1, 0x15B08C11,
+ 0x81D16320, 0x157F0086,
+ 0x81C8FBD5, 0x154D71AA,
+ 0x81C0A801, 0x151BDF85,
+ 0x81B867A4, 0x14EA4A1F,
+ 0x81B03AC1, 0x14B8B17F,
+ 0x81A82159, 0x148715AD,
+ 0x81A01B6C, 0x145576B1,
+ 0x819828FD, 0x1423D492,
+ 0x81904A0C, 0x13F22F57,
+ 0x81887E9A, 0x13C0870A,
+ 0x8180C6A9, 0x138EDBB0,
+ 0x8179223A, 0x135D2D53,
+ 0x8171914E, 0x132B7BF9,
+ 0x816A13E6, 0x12F9C7AA,
+ 0x8162AA03, 0x12C8106E,
+ 0x815B53A8, 0x1296564D,
+ 0x815410D3, 0x1264994E,
+ 0x814CE188, 0x1232D978,
+ 0x8145C5C6, 0x120116D4,
+ 0x813EBD90, 0x11CF516A,
+ 0x8137C8E6, 0x119D8940,
+ 0x8130E7C8, 0x116BBE5F,
+ 0x812A1A39, 0x1139F0CE,
+ 0x81236039, 0x11082096,
+ 0x811CB9CA, 0x10D64DBC,
+ 0x811626EC, 0x10A4784A,
+ 0x810FA7A0, 0x1072A047,
+ 0x81093BE8, 0x1040C5BB,
+ 0x8102E3C3, 0x100EE8AD,
+ 0x80FC9F35, 0x0FDD0925,
+ 0x80F66E3C, 0x0FAB272B,
+ 0x80F050DB, 0x0F7942C6,
+ 0x80EA4712, 0x0F475BFE,
+ 0x80E450E2, 0x0F1572DC,
+ 0x80DE6E4C, 0x0EE38765,
+ 0x80D89F51, 0x0EB199A3,
+ 0x80D2E3F1, 0x0E7FA99D,
+ 0x80CD3C2F, 0x0E4DB75B,
+ 0x80C7A80A, 0x0E1BC2E3,
+ 0x80C22783, 0x0DE9CC3F,
+ 0x80BCBA9C, 0x0DB7D376,
+ 0x80B76155, 0x0D85D88F,
+ 0x80B21BAF, 0x0D53DB92,
+ 0x80ACE9AB, 0x0D21DC87,
+ 0x80A7CB49, 0x0CEFDB75,
+ 0x80A2C08B, 0x0CBDD865,
+ 0x809DC970, 0x0C8BD35E,
+ 0x8098E5FB, 0x0C59CC67,
+ 0x8094162B, 0x0C27C389,
+ 0x808F5A02, 0x0BF5B8CB,
+ 0x808AB180, 0x0BC3AC35,
+ 0x80861CA5, 0x0B919DCE,
+ 0x80819B74, 0x0B5F8D9F,
+ 0x807D2DEB, 0x0B2D7BAE,
+ 0x8078D40D, 0x0AFB6805,
+ 0x80748DD9, 0x0AC952AA,
+ 0x80705B50, 0x0A973BA5,
+ 0x806C3C73, 0x0A6522FE,
+ 0x80683143, 0x0A3308BC,
+ 0x806439C0, 0x0A00ECE8,
+ 0x806055EA, 0x09CECF89,
+ 0x805C85C3, 0x099CB0A7,
+ 0x8058C94C, 0x096A9049,
+ 0x80552083, 0x09386E77,
+ 0x80518B6B, 0x09064B3A,
+ 0x804E0A03, 0x08D42698,
+ 0x804A9C4D, 0x08A2009A,
+ 0x80474248, 0x086FD947,
+ 0x8043FBF6, 0x083DB0A7,
+ 0x8040C956, 0x080B86C1,
+ 0x803DAA69, 0x07D95B9E,
+ 0x803A9F31, 0x07A72F45,
+ 0x8037A7AC, 0x077501BE,
+ 0x8034C3DC, 0x0742D310,
+ 0x8031F3C1, 0x0710A344,
+ 0x802F375C, 0x06DE7261,
+ 0x802C8EAD, 0x06AC406F,
+ 0x8029F9B4, 0x067A0D75,
+ 0x80277872, 0x0647D97C,
+ 0x80250AE7, 0x0615A48A,
+ 0x8022B113, 0x05E36EA9,
+ 0x80206AF8, 0x05B137DF,
+ 0x801E3894, 0x057F0034,
+ 0x801C19E9, 0x054CC7B0,
+ 0x801A0EF7, 0x051A8E5C,
+ 0x801817BF, 0x04E8543D,
+ 0x80163440, 0x04B6195D,
+ 0x8014647A, 0x0483DDC3,
+ 0x8012A86F, 0x0451A176,
+ 0x8011001E, 0x041F647F,
+ 0x800F6B88, 0x03ED26E6,
+ 0x800DEAAC, 0x03BAE8B1,
+ 0x800C7D8C, 0x0388A9E9,
+ 0x800B2427, 0x03566A96,
+ 0x8009DE7D, 0x03242ABF,
+ 0x8008AC90, 0x02F1EA6B,
+ 0x80078E5E, 0x02BFA9A4,
+ 0x800683E8, 0x028D6870,
+ 0x80058D2E, 0x025B26D7,
+ 0x8004AA31, 0x0228E4E1,
+ 0x8003DAF0, 0x01F6A296,
+ 0x80031F6C, 0x01C45FFE,
+ 0x800277A5, 0x01921D1F,
+ 0x8001E39B, 0x015FDA03,
+ 0x8001634D, 0x012D96B0,
+ 0x8000F6BD, 0x00FB532F,
+ 0x80009DE9, 0x00C90F88,
+ 0x800058D3, 0x0096CBC1,
+ 0x8000277A, 0x006487E3,
+ 0x800009DE, 0x003243F5,
+ 0x80000000, 0x00000000,
+ 0x800009DE, 0xFFCDBC0A,
+ 0x8000277A, 0xFF9B781D,
+ 0x800058D3, 0xFF69343E,
+ 0x80009DE9, 0xFF36F078,
+ 0x8000F6BD, 0xFF04ACD0,
+ 0x8001634D, 0xFED2694F,
+ 0x8001E39B, 0xFEA025FC,
+ 0x800277A5, 0xFE6DE2E0,
+ 0x80031F6C, 0xFE3BA001,
+ 0x8003DAF0, 0xFE095D69,
+ 0x8004AA31, 0xFDD71B1E,
+ 0x80058D2E, 0xFDA4D928,
+ 0x800683E8, 0xFD72978F,
+ 0x80078E5E, 0xFD40565B,
+ 0x8008AC90, 0xFD0E1594,
+ 0x8009DE7D, 0xFCDBD541,
+ 0x800B2427, 0xFCA99569,
+ 0x800C7D8C, 0xFC775616,
+ 0x800DEAAC, 0xFC45174E,
+ 0x800F6B88, 0xFC12D919,
+ 0x8011001E, 0xFBE09B80,
+ 0x8012A86F, 0xFBAE5E89,
+ 0x8014647A, 0xFB7C223C,
+ 0x80163440, 0xFB49E6A2,
+ 0x801817BF, 0xFB17ABC2,
+ 0x801A0EF7, 0xFAE571A4,
+ 0x801C19E9, 0xFAB3384F,
+ 0x801E3894, 0xFA80FFCB,
+ 0x80206AF8, 0xFA4EC820,
+ 0x8022B113, 0xFA1C9156,
+ 0x80250AE7, 0xF9EA5B75,
+ 0x80277872, 0xF9B82683,
+ 0x8029F9B4, 0xF985F28A,
+ 0x802C8EAD, 0xF953BF90,
+ 0x802F375C, 0xF9218D9E,
+ 0x8031F3C1, 0xF8EF5CBB,
+ 0x8034C3DC, 0xF8BD2CEF,
+ 0x8037A7AC, 0xF88AFE41,
+ 0x803A9F31, 0xF858D0BA,
+ 0x803DAA69, 0xF826A461,
+ 0x8040C956, 0xF7F4793E,
+ 0x8043FBF6, 0xF7C24F58,
+ 0x80474248, 0xF79026B8,
+ 0x804A9C4D, 0xF75DFF65,
+ 0x804E0A03, 0xF72BD967,
+ 0x80518B6B, 0xF6F9B4C5,
+ 0x80552083, 0xF6C79188,
+ 0x8058C94C, 0xF6956FB6,
+ 0x805C85C3, 0xF6634F58,
+ 0x806055EA, 0xF6313076,
+ 0x806439C0, 0xF5FF1317,
+ 0x80683143, 0xF5CCF743,
+ 0x806C3C73, 0xF59ADD01,
+ 0x80705B50, 0xF568C45A,
+ 0x80748DD9, 0xF536AD55,
+ 0x8078D40D, 0xF50497FA,
+ 0x807D2DEB, 0xF4D28451,
+ 0x80819B74, 0xF4A07260,
+ 0x80861CA5, 0xF46E6231,
+ 0x808AB180, 0xF43C53CA,
+ 0x808F5A02, 0xF40A4734,
+ 0x8094162B, 0xF3D83C76,
+ 0x8098E5FB, 0xF3A63398,
+ 0x809DC970, 0xF3742CA1,
+ 0x80A2C08B, 0xF342279A,
+ 0x80A7CB49, 0xF310248A,
+ 0x80ACE9AB, 0xF2DE2378,
+ 0x80B21BAF, 0xF2AC246D,
+ 0x80B76155, 0xF27A2770,
+ 0x80BCBA9C, 0xF2482C89,
+ 0x80C22783, 0xF21633C0,
+ 0x80C7A80A, 0xF1E43D1C,
+ 0x80CD3C2F, 0xF1B248A5,
+ 0x80D2E3F1, 0xF1805662,
+ 0x80D89F51, 0xF14E665C,
+ 0x80DE6E4C, 0xF11C789A,
+ 0x80E450E2, 0xF0EA8D23,
+ 0x80EA4712, 0xF0B8A401,
+ 0x80F050DB, 0xF086BD39,
+ 0x80F66E3C, 0xF054D8D4,
+ 0x80FC9F35, 0xF022F6DA,
+ 0x8102E3C3, 0xEFF11752,
+ 0x81093BE8, 0xEFBF3A44,
+ 0x810FA7A0, 0xEF8D5FB8,
+ 0x811626EC, 0xEF5B87B5,
+ 0x811CB9CA, 0xEF29B243,
+ 0x81236039, 0xEEF7DF6A,
+ 0x812A1A39, 0xEEC60F31,
+ 0x8130E7C8, 0xEE9441A0,
+ 0x8137C8E6, 0xEE6276BF,
+ 0x813EBD90, 0xEE30AE95,
+ 0x8145C5C6, 0xEDFEE92B,
+ 0x814CE188, 0xEDCD2687,
+ 0x815410D3, 0xED9B66B2,
+ 0x815B53A8, 0xED69A9B2,
+ 0x8162AA03, 0xED37EF91,
+ 0x816A13E6, 0xED063855,
+ 0x8171914E, 0xECD48406,
+ 0x8179223A, 0xECA2D2AC,
+ 0x8180C6A9, 0xEC71244F,
+ 0x81887E9A, 0xEC3F78F5,
+ 0x81904A0C, 0xEC0DD0A8,
+ 0x819828FD, 0xEBDC2B6D,
+ 0x81A01B6C, 0xEBAA894E,
+ 0x81A82159, 0xEB78EA52,
+ 0x81B03AC1, 0xEB474E80,
+ 0x81B867A4, 0xEB15B5E0,
+ 0x81C0A801, 0xEAE4207A,
+ 0x81C8FBD5, 0xEAB28E55,
+ 0x81D16320, 0xEA80FF79,
+ 0x81D9DDE1, 0xEA4F73EE,
+ 0x81E26C16, 0xEA1DEBBB,
+ 0x81EB0DBD, 0xE9EC66E8,
+ 0x81F3C2D7, 0xE9BAE57C,
+ 0x81FC8B60, 0xE9896780,
+ 0x82056758, 0xE957ECFB,
+ 0x820E56BE, 0xE92675F4,
+ 0x8217598F, 0xE8F50273,
+ 0x82206FCB, 0xE8C3927F,
+ 0x82299971, 0xE8922621,
+ 0x8232D67E, 0xE860BD60,
+ 0x823C26F2, 0xE82F5844,
+ 0x82458ACB, 0xE7FDF6D3,
+ 0x824F0208, 0xE7CC9917,
+ 0x82588CA6, 0xE79B3F16,
+ 0x82622AA5, 0xE769E8D8,
+ 0x826BDC04, 0xE7389664,
+ 0x8275A0C0, 0xE70747C3,
+ 0x827F78D8, 0xE6D5FCFC,
+ 0x8289644A, 0xE6A4B616,
+ 0x82936316, 0xE6737319,
+ 0x829D753A, 0xE642340D,
+ 0x82A79AB3, 0xE610F8F9,
+ 0x82B1D381, 0xE5DFC1E4,
+ 0x82BC1FA1, 0xE5AE8ED8,
+ 0x82C67F13, 0xE57D5FDA,
+ 0x82D0F1D5, 0xE54C34F3,
+ 0x82DB77E5, 0xE51B0E2A,
+ 0x82E61141, 0xE4E9EB86,
+ 0x82F0BDE8, 0xE4B8CD10,
+ 0x82FB7DD8, 0xE487B2CF,
+ 0x8306510F, 0xE4569CCB,
+ 0x8311378C, 0xE4258B0A,
+ 0x831C314E, 0xE3F47D95,
+ 0x83273E52, 0xE3C37473,
+ 0x83325E97, 0xE3926FAC,
+ 0x833D921A, 0xE3616F47,
+ 0x8348D8DB, 0xE330734C,
+ 0x835432D8, 0xE2FF7BC3,
+ 0x835FA00E, 0xE2CE88B2,
+ 0x836B207D, 0xE29D9A22,
+ 0x8376B422, 0xE26CB01A,
+ 0x83825AFB, 0xE23BCAA2,
+ 0x838E1507, 0xE20AE9C1,
+ 0x8399E244, 0xE1DA0D7E,
+ 0x83A5C2B0, 0xE1A935E1,
+ 0x83B1B649, 0xE17862F3,
+ 0x83BDBD0D, 0xE14794B9,
+ 0x83C9D6FB, 0xE116CB3D,
+ 0x83D60411, 0xE0E60684,
+ 0x83E2444D, 0xE0B54698,
+ 0x83EE97AC, 0xE0848B7F,
+ 0x83FAFE2E, 0xE053D541,
+ 0x840777CF, 0xE02323E5,
+ 0x8414048F, 0xDFF27773,
+ 0x8420A46B, 0xDFC1CFF2,
+ 0x842D5761, 0xDF912D6A,
+ 0x843A1D70, 0xDF608FE3,
+ 0x8446F695, 0xDF2FF764,
+ 0x8453E2CE, 0xDEFF63F4,
+ 0x8460E21A, 0xDECED59B,
+ 0x846DF476, 0xDE9E4C60,
+ 0x847B19E1, 0xDE6DC84B,
+ 0x84885257, 0xDE3D4963,
+ 0x84959DD9, 0xDE0CCFB1,
+ 0x84A2FC62, 0xDDDC5B3A,
+ 0x84B06DF1, 0xDDABEC07,
+ 0x84BDF285, 0xDD7B8220,
+ 0x84CB8A1B, 0xDD4B1D8B,
+ 0x84D934B0, 0xDD1ABE51,
+ 0x84E6F244, 0xDCEA6478,
+ 0x84F4C2D3, 0xDCBA1008,
+ 0x8502A65C, 0xDC89C108,
+ 0x85109CDC, 0xDC597781,
+ 0x851EA652, 0xDC293379,
+ 0x852CC2BA, 0xDBF8F4F8,
+ 0x853AF214, 0xDBC8BC05,
+ 0x8549345C, 0xDB9888A8,
+ 0x85578991, 0xDB685AE8,
+ 0x8565F1B0, 0xDB3832CD,
+ 0x85746CB7, 0xDB08105E,
+ 0x8582FAA4, 0xDAD7F3A2,
+ 0x85919B75, 0xDAA7DCA1,
+ 0x85A04F28, 0xDA77CB62,
+ 0x85AF15B9, 0xDA47BFED,
+ 0x85BDEF27, 0xDA17BA4A,
+ 0x85CCDB70, 0xD9E7BA7E,
+ 0x85DBDA91, 0xD9B7C093,
+ 0x85EAEC88, 0xD987CC8F,
+ 0x85FA1152, 0xD957DE7A,
+ 0x860948EE, 0xD927F65B,
+ 0x86189359, 0xD8F81439,
+ 0x8627F090, 0xD8C8381C,
+ 0x86376092, 0xD898620C,
+ 0x8646E35B, 0xD868920F,
+ 0x865678EA, 0xD838C82D,
+ 0x8666213C, 0xD809046D,
+ 0x8675DC4E, 0xD7D946D7,
+ 0x8685AA1F, 0xD7A98F73,
+ 0x86958AAB, 0xD779DE46,
+ 0x86A57DF1, 0xD74A335A,
+ 0x86B583EE, 0xD71A8EB5,
+ 0x86C59C9F, 0xD6EAF05E,
+ 0x86D5C802, 0xD6BB585D,
+ 0x86E60614, 0xD68BC6BA,
+ 0x86F656D3, 0xD65C3B7B,
+ 0x8706BA3C, 0xD62CB6A7,
+ 0x8717304E, 0xD5FD3847,
+ 0x8727B904, 0xD5CDC062,
+ 0x8738545E, 0xD59E4EFE,
+ 0x87490257, 0xD56EE424,
+ 0x8759C2EF, 0xD53F7FDA,
+ 0x876A9621, 0xD5102227,
+ 0x877B7BEC, 0xD4E0CB14,
+ 0x878C744C, 0xD4B17AA7,
+ 0x879D7F40, 0xD48230E8,
+ 0x87AE9CC5, 0xD452EDDE,
+ 0x87BFCCD7, 0xD423B190,
+ 0x87D10F75, 0xD3F47C06,
+ 0x87E2649B, 0xD3C54D46,
+ 0x87F3CC47, 0xD3962559,
+ 0x88054677, 0xD3670445,
+ 0x8816D327, 0xD337EA12,
+ 0x88287255, 0xD308D6C6,
+ 0x883A23FE, 0xD2D9CA6A,
+ 0x884BE820, 0xD2AAC504,
+ 0x885DBEB7, 0xD27BC69C,
+ 0x886FA7C2, 0xD24CCF38,
+ 0x8881A33C, 0xD21DDEE1,
+ 0x8893B124, 0xD1EEF59E,
+ 0x88A5D177, 0xD1C01374,
+ 0x88B80431, 0xD191386D,
+ 0x88CA4951, 0xD162648F,
+ 0x88DCA0D3, 0xD13397E1,
+ 0x88EF0AB4, 0xD104D26B,
+ 0x890186F1, 0xD0D61433,
+ 0x89141589, 0xD0A75D42,
+ 0x8926B677, 0xD078AD9D,
+ 0x893969B9, 0xD04A054D,
+ 0x894C2F4C, 0xD01B6459,
+ 0x895F072D, 0xCFECCAC7,
+ 0x8971F15A, 0xCFBE389F,
+ 0x8984EDCF, 0xCF8FADE8,
+ 0x8997FC89, 0xCF612AAA,
+ 0x89AB1D86, 0xCF32AEEB,
+ 0x89BE50C3, 0xCF043AB2,
+ 0x89D1963C, 0xCED5CE08,
+ 0x89E4EDEE, 0xCEA768F2,
+ 0x89F857D8, 0xCE790B78,
+ 0x8A0BD3F5, 0xCE4AB5A2,
+ 0x8A1F6242, 0xCE1C6776,
+ 0x8A3302BD, 0xCDEE20FC,
+ 0x8A46B563, 0xCDBFE23A,
+ 0x8A5A7A30, 0xCD91AB38,
+ 0x8A6E5122, 0xCD637BFD,
+ 0x8A823A35, 0xCD355490,
+ 0x8A963567, 0xCD0734F8,
+ 0x8AAA42B4, 0xCCD91D3D,
+ 0x8ABE6219, 0xCCAB0D65,
+ 0x8AD29393, 0xCC7D0577,
+ 0x8AE6D71F, 0xCC4F057B,
+ 0x8AFB2CBA, 0xCC210D78,
+ 0x8B0F9461, 0xCBF31D75,
+ 0x8B240E10, 0xCBC53578,
+ 0x8B3899C5, 0xCB975589,
+ 0x8B4D377C, 0xCB697DB0,
+ 0x8B61E732, 0xCB3BADF2,
+ 0x8B76A8E4, 0xCB0DE658,
+ 0x8B8B7C8F, 0xCAE026E8,
+ 0x8BA0622F, 0xCAB26FA9,
+ 0x8BB559C1, 0xCA84C0A2,
+ 0x8BCA6342, 0xCA5719DB,
+ 0x8BDF7EAF, 0xCA297B5A,
+ 0x8BF4AC05, 0xC9FBE527,
+ 0x8C09EB40, 0xC9CE5748,
+ 0x8C1F3C5C, 0xC9A0D1C4,
+ 0x8C349F58, 0xC97354A3,
+ 0x8C4A142F, 0xC945DFEC,
+ 0x8C5F9ADD, 0xC91873A5,
+ 0x8C753361, 0xC8EB0FD6,
+ 0x8C8ADDB6, 0xC8BDB485,
+ 0x8CA099D9, 0xC89061BA,
+ 0x8CB667C7, 0xC863177B,
+ 0x8CCC477D, 0xC835D5D0,
+ 0x8CE238F6, 0xC8089CBF,
+ 0x8CF83C30, 0xC7DB6C50,
+ 0x8D0E5127, 0xC7AE4489,
+ 0x8D2477D8, 0xC7812571,
+ 0x8D3AB03F, 0xC7540F10,
+ 0x8D50FA59, 0xC727016C,
+ 0x8D675623, 0xC6F9FC8D,
+ 0x8D7DC399, 0xC6CD0079,
+ 0x8D9442B7, 0xC6A00D36,
+ 0x8DAAD37B, 0xC67322CD,
+ 0x8DC175E0, 0xC6464144,
+ 0x8DD829E4, 0xC61968A2,
+ 0x8DEEEF82, 0xC5EC98ED,
+ 0x8E05C6B7, 0xC5BFD22E,
+ 0x8E1CAF80, 0xC593146A,
+ 0x8E33A9D9, 0xC5665FA8,
+ 0x8E4AB5BF, 0xC539B3F0,
+ 0x8E61D32D, 0xC50D1148,
+ 0x8E790222, 0xC4E077B8,
+ 0x8E904298, 0xC4B3E746,
+ 0x8EA7948C, 0xC4875FF8,
+ 0x8EBEF7FB, 0xC45AE1D7,
+ 0x8ED66CE1, 0xC42E6CE8,
+ 0x8EEDF33B, 0xC4020132,
+ 0x8F058B04, 0xC3D59EBD,
+ 0x8F1D343A, 0xC3A9458F,
+ 0x8F34EED8, 0xC37CF5B0,
+ 0x8F4CBADB, 0xC350AF25,
+ 0x8F64983F, 0xC32471F6,
+ 0x8F7C8701, 0xC2F83E2A,
+ 0x8F94871D, 0xC2CC13C7,
+ 0x8FAC988E, 0xC29FF2D4,
+ 0x8FC4BB53, 0xC273DB58,
+ 0x8FDCEF66, 0xC247CD5A,
+ 0x8FF534C4, 0xC21BC8E0,
+ 0x900D8B69, 0xC1EFCDF2,
+ 0x9025F352, 0xC1C3DC96,
+ 0x903E6C7A, 0xC197F4D3,
+ 0x9056F6DF, 0xC16C16B0,
+ 0x906F927B, 0xC1404233,
+ 0x90883F4C, 0xC1147763,
+ 0x90A0FD4E, 0xC0E8B648,
+ 0x90B9CC7C, 0xC0BCFEE7,
+ 0x90D2ACD3, 0xC0915147,
+ 0x90EB9E50, 0xC065AD70,
+ 0x9104A0ED, 0xC03A1368,
+ 0x911DB4A8, 0xC00E8335,
+ 0x9136D97D, 0xBFE2FCDF,
+ 0x91500F67, 0xBFB7806C,
+ 0x91695663, 0xBF8C0DE2,
+ 0x9182AE6C, 0xBF60A54A,
+ 0x919C1780, 0xBF3546A8,
+ 0x91B5919A, 0xBF09F204,
+ 0x91CF1CB6, 0xBEDEA765,
+ 0x91E8B8D0, 0xBEB366D1,
+ 0x920265E4, 0xBE88304F,
+ 0x921C23EE, 0xBE5D03E5,
+ 0x9235F2EB, 0xBE31E19B,
+ 0x924FD2D6, 0xBE06C977,
+ 0x9269C3AC, 0xBDDBBB7F,
+ 0x9283C567, 0xBDB0B7BA,
+ 0x929DD805, 0xBD85BE2F,
+ 0x92B7FB82, 0xBD5ACEE5,
+ 0x92D22FD8, 0xBD2FE9E1,
+ 0x92EC7505, 0xBD050F2C,
+ 0x9306CB04, 0xBCDA3ECA,
+ 0x932131D1, 0xBCAF78C3,
+ 0x933BA968, 0xBC84BD1E,
+ 0x935631C5, 0xBC5A0BE1,
+ 0x9370CAE4, 0xBC2F6513,
+ 0x938B74C0, 0xBC04C8BA,
+ 0x93A62F56, 0xBBDA36DC,
+ 0x93C0FAA2, 0xBBAFAF81,
+ 0x93DBD69F, 0xBB8532AF,
+ 0x93F6C34A, 0xBB5AC06C,
+ 0x9411C09D, 0xBB3058C0,
+ 0x942CCE95, 0xBB05FBB0,
+ 0x9447ED2F, 0xBADBA943,
+ 0x94631C64, 0xBAB1617F,
+ 0x947E5C32, 0xBA87246C,
+ 0x9499AC95, 0xBA5CF210,
+ 0x94B50D87, 0xBA32CA70,
+ 0x94D07F05, 0xBA08AD94,
+ 0x94EC010B, 0xB9DE9B83,
+ 0x95079393, 0xB9B49442,
+ 0x9523369B, 0xB98A97D8,
+ 0x953EEA1E, 0xB960A64B,
+ 0x955AAE17, 0xB936BFA3,
+ 0x95768282, 0xB90CE3E6,
+ 0x9592675B, 0xB8E31319,
+ 0x95AE5C9E, 0xB8B94D44,
+ 0x95CA6246, 0xB88F926C,
+ 0x95E6784F, 0xB865E299,
+ 0x96029EB5, 0xB83C3DD1,
+ 0x961ED573, 0xB812A419,
+ 0x963B1C85, 0xB7E9157A,
+ 0x965773E7, 0xB7BF91F8,
+ 0x9673DB94, 0xB796199B,
+ 0x96905387, 0xB76CAC68,
+ 0x96ACDBBD, 0xB7434A67,
+ 0x96C97431, 0xB719F39D,
+ 0x96E61CDF, 0xB6F0A811,
+ 0x9702D5C2, 0xB6C767CA,
+ 0x971F9ED6, 0xB69E32CD,
+ 0x973C7816, 0xB6750921,
+ 0x9759617E, 0xB64BEACC,
+ 0x97765B0A, 0xB622D7D5,
+ 0x979364B5, 0xB5F9D042,
+ 0x97B07E7A, 0xB5D0D41A,
+ 0x97CDA855, 0xB5A7E362,
+ 0x97EAE241, 0xB57EFE21,
+ 0x98082C3B, 0xB556245E,
+ 0x9825863D, 0xB52D561E,
+ 0x9842F043, 0xB5049368,
+ 0x98606A48, 0xB4DBDC42,
+ 0x987DF449, 0xB4B330B2,
+ 0x989B8E3F, 0xB48A90C0,
+ 0x98B93828, 0xB461FC70,
+ 0x98D6F1FE, 0xB43973C9,
+ 0x98F4BBBC, 0xB410F6D2,
+ 0x9912955E, 0xB3E88591,
+ 0x99307EE0, 0xB3C0200C,
+ 0x994E783C, 0xB397C649,
+ 0x996C816F, 0xB36F784E,
+ 0x998A9A73, 0xB3473622,
+ 0x99A8C344, 0xB31EFFCB,
+ 0x99C6FBDE, 0xB2F6D54F,
+ 0x99E5443A, 0xB2CEB6B5,
+ 0x9A039C56, 0xB2A6A401,
+ 0x9A22042C, 0xB27E9D3B,
+ 0x9A407BB8, 0xB256A26A,
+ 0x9A5F02F5, 0xB22EB392,
+ 0x9A7D99DD, 0xB206D0BA,
+ 0x9A9C406D, 0xB1DEF9E8,
+ 0x9ABAF6A0, 0xB1B72F23,
+ 0x9AD9BC71, 0xB18F7070,
+ 0x9AF891DB, 0xB167BDD6,
+ 0x9B1776D9, 0xB140175B,
+ 0x9B366B67, 0xB1187D05,
+ 0x9B556F80, 0xB0F0EEDA,
+ 0x9B748320, 0xB0C96CDF,
+ 0x9B93A640, 0xB0A1F71C,
+ 0x9BB2D8DD, 0xB07A8D97,
+ 0x9BD21AF2, 0xB0533055,
+ 0x9BF16C7A, 0xB02BDF5C,
+ 0x9C10CD70, 0xB0049AB2,
+ 0x9C303DCF, 0xAFDD625F,
+ 0x9C4FBD92, 0xAFB63667,
+ 0x9C6F4CB5, 0xAF8F16D0,
+ 0x9C8EEB33, 0xAF6803A1,
+ 0x9CAE9907, 0xAF40FCE0,
+ 0x9CCE562B, 0xAF1A0293,
+ 0x9CEE229C, 0xAEF314BF,
+ 0x9D0DFE53, 0xAECC336B,
+ 0x9D2DE94D, 0xAEA55E9D,
+ 0x9D4DE384, 0xAE7E965B,
+ 0x9D6DECF4, 0xAE57DAAA,
+ 0x9D8E0596, 0xAE312B91,
+ 0x9DAE2D68, 0xAE0A8916,
+ 0x9DCE6462, 0xADE3F33E,
+ 0x9DEEAA82, 0xADBD6A10,
+ 0x9E0EFFC1, 0xAD96ED91,
+ 0x9E2F641A, 0xAD707DC8,
+ 0x9E4FD789, 0xAD4A1ABA,
+ 0x9E705A09, 0xAD23C46D,
+ 0x9E90EB94, 0xACFD7AE8,
+ 0x9EB18C26, 0xACD73E30,
+ 0x9ED23BB9, 0xACB10E4A,
+ 0x9EF2FA48, 0xAC8AEB3E,
+ 0x9F13C7D0, 0xAC64D510,
+ 0x9F34A449, 0xAC3ECBC7,
+ 0x9F558FB0, 0xAC18CF68,
+ 0x9F7689FF, 0xABF2DFFA,
+ 0x9F979331, 0xABCCFD82,
+ 0x9FB8AB41, 0xABA72806,
+ 0x9FD9D22A, 0xAB815F8C,
+ 0x9FFB07E7, 0xAB5BA41A,
+ 0xA01C4C72, 0xAB35F5B5,
+ 0xA03D9FC7, 0xAB105464,
+ 0xA05F01E1, 0xAAEAC02B,
+ 0xA08072BA, 0xAAC53912,
+ 0xA0A1F24C, 0xAA9FBF1D,
+ 0xA0C38094, 0xAA7A5253,
+ 0xA0E51D8C, 0xAA54F2B9,
+ 0xA106C92E, 0xAA2FA055,
+ 0xA1288376, 0xAA0A5B2D,
+ 0xA14A4C5E, 0xA9E52347,
+ 0xA16C23E1, 0xA9BFF8A8,
+ 0xA18E09F9, 0xA99ADB56,
+ 0xA1AFFEA2, 0xA975CB56,
+ 0xA1D201D7, 0xA950C8AF,
+ 0xA1F41391, 0xA92BD366,
+ 0xA21633CD, 0xA906EB81,
+ 0xA2386283, 0xA8E21106,
+ 0xA25A9FB1, 0xA8BD43FA,
+ 0xA27CEB4F, 0xA8988463,
+ 0xA29F4559, 0xA873D246,
+ 0xA2C1ADC9, 0xA84F2DA9,
+ 0xA2E4249A, 0xA82A9693,
+ 0xA306A9C7, 0xA8060D08,
+ 0xA3293D4B, 0xA7E1910E,
+ 0xA34BDF20, 0xA7BD22AB,
+ 0xA36E8F40, 0xA798C1E4,
+ 0xA3914DA7, 0xA7746EC0,
+ 0xA3B41A4F, 0xA7502943,
+ 0xA3D6F533, 0xA72BF173,
+ 0xA3F9DE4D, 0xA707C756,
+ 0xA41CD598, 0xA6E3AAF2,
+ 0xA43FDB0F, 0xA6BF9C4B,
+ 0xA462EEAC, 0xA69B9B68,
+ 0xA4861069, 0xA677A84E,
+ 0xA4A94042, 0xA653C302,
+ 0xA4CC7E31, 0xA62FEB8B,
+ 0xA4EFCA31, 0xA60C21ED,
+ 0xA513243B, 0xA5E8662F,
+ 0xA5368C4B, 0xA5C4B855,
+ 0xA55A025B, 0xA5A11865,
+ 0xA57D8666, 0xA57D8666,
+ 0xA5A11865, 0xA55A025B,
+ 0xA5C4B855, 0xA5368C4B,
+ 0xA5E8662F, 0xA513243B,
+ 0xA60C21ED, 0xA4EFCA31,
+ 0xA62FEB8B, 0xA4CC7E31,
+ 0xA653C302, 0xA4A94042,
+ 0xA677A84E, 0xA4861069,
+ 0xA69B9B68, 0xA462EEAC,
+ 0xA6BF9C4B, 0xA43FDB0F,
+ 0xA6E3AAF2, 0xA41CD598,
+ 0xA707C756, 0xA3F9DE4D,
+ 0xA72BF173, 0xA3D6F533,
+ 0xA7502943, 0xA3B41A4F,
+ 0xA7746EC0, 0xA3914DA7,
+ 0xA798C1E4, 0xA36E8F40,
+ 0xA7BD22AB, 0xA34BDF20,
+ 0xA7E1910E, 0xA3293D4B,
+ 0xA8060D08, 0xA306A9C7,
+ 0xA82A9693, 0xA2E4249A,
+ 0xA84F2DA9, 0xA2C1ADC9,
+ 0xA873D246, 0xA29F4559,
+ 0xA8988463, 0xA27CEB4F,
+ 0xA8BD43FA, 0xA25A9FB1,
+ 0xA8E21106, 0xA2386283,
+ 0xA906EB81, 0xA21633CD,
+ 0xA92BD366, 0xA1F41391,
+ 0xA950C8AF, 0xA1D201D7,
+ 0xA975CB56, 0xA1AFFEA2,
+ 0xA99ADB56, 0xA18E09F9,
+ 0xA9BFF8A8, 0xA16C23E1,
+ 0xA9E52347, 0xA14A4C5E,
+ 0xAA0A5B2D, 0xA1288376,
+ 0xAA2FA055, 0xA106C92E,
+ 0xAA54F2B9, 0xA0E51D8C,
+ 0xAA7A5253, 0xA0C38094,
+ 0xAA9FBF1D, 0xA0A1F24C,
+ 0xAAC53912, 0xA08072BA,
+ 0xAAEAC02B, 0xA05F01E1,
+ 0xAB105464, 0xA03D9FC7,
+ 0xAB35F5B5, 0xA01C4C72,
+ 0xAB5BA41A, 0x9FFB07E7,
+ 0xAB815F8C, 0x9FD9D22A,
+ 0xABA72806, 0x9FB8AB41,
+ 0xABCCFD82, 0x9F979331,
+ 0xABF2DFFA, 0x9F7689FF,
+ 0xAC18CF68, 0x9F558FB0,
+ 0xAC3ECBC7, 0x9F34A449,
+ 0xAC64D510, 0x9F13C7D0,
+ 0xAC8AEB3E, 0x9EF2FA48,
+ 0xACB10E4A, 0x9ED23BB9,
+ 0xACD73E30, 0x9EB18C26,
+ 0xACFD7AE8, 0x9E90EB94,
+ 0xAD23C46D, 0x9E705A09,
+ 0xAD4A1ABA, 0x9E4FD789,
+ 0xAD707DC8, 0x9E2F641A,
+ 0xAD96ED91, 0x9E0EFFC1,
+ 0xADBD6A10, 0x9DEEAA82,
+ 0xADE3F33E, 0x9DCE6462,
+ 0xAE0A8916, 0x9DAE2D68,
+ 0xAE312B91, 0x9D8E0596,
+ 0xAE57DAAA, 0x9D6DECF4,
+ 0xAE7E965B, 0x9D4DE384,
+ 0xAEA55E9D, 0x9D2DE94D,
+ 0xAECC336B, 0x9D0DFE53,
+ 0xAEF314BF, 0x9CEE229C,
+ 0xAF1A0293, 0x9CCE562B,
+ 0xAF40FCE0, 0x9CAE9907,
+ 0xAF6803A1, 0x9C8EEB33,
+ 0xAF8F16D0, 0x9C6F4CB5,
+ 0xAFB63667, 0x9C4FBD92,
+ 0xAFDD625F, 0x9C303DCF,
+ 0xB0049AB2, 0x9C10CD70,
+ 0xB02BDF5C, 0x9BF16C7A,
+ 0xB0533055, 0x9BD21AF2,
+ 0xB07A8D97, 0x9BB2D8DD,
+ 0xB0A1F71C, 0x9B93A640,
+ 0xB0C96CDF, 0x9B748320,
+ 0xB0F0EEDA, 0x9B556F80,
+ 0xB1187D05, 0x9B366B67,
+ 0xB140175B, 0x9B1776D9,
+ 0xB167BDD6, 0x9AF891DB,
+ 0xB18F7070, 0x9AD9BC71,
+ 0xB1B72F23, 0x9ABAF6A0,
+ 0xB1DEF9E8, 0x9A9C406D,
+ 0xB206D0BA, 0x9A7D99DD,
+ 0xB22EB392, 0x9A5F02F5,
+ 0xB256A26A, 0x9A407BB8,
+ 0xB27E9D3B, 0x9A22042C,
+ 0xB2A6A401, 0x9A039C56,
+ 0xB2CEB6B5, 0x99E5443A,
+ 0xB2F6D54F, 0x99C6FBDE,
+ 0xB31EFFCB, 0x99A8C344,
+ 0xB3473622, 0x998A9A73,
+ 0xB36F784E, 0x996C816F,
+ 0xB397C649, 0x994E783C,
+ 0xB3C0200C, 0x99307EE0,
+ 0xB3E88591, 0x9912955E,
+ 0xB410F6D2, 0x98F4BBBC,
+ 0xB43973C9, 0x98D6F1FE,
+ 0xB461FC70, 0x98B93828,
+ 0xB48A90C0, 0x989B8E3F,
+ 0xB4B330B2, 0x987DF449,
+ 0xB4DBDC42, 0x98606A48,
+ 0xB5049368, 0x9842F043,
+ 0xB52D561E, 0x9825863D,
+ 0xB556245E, 0x98082C3B,
+ 0xB57EFE21, 0x97EAE241,
+ 0xB5A7E362, 0x97CDA855,
+ 0xB5D0D41A, 0x97B07E7A,
+ 0xB5F9D042, 0x979364B5,
+ 0xB622D7D5, 0x97765B0A,
+ 0xB64BEACC, 0x9759617E,
+ 0xB6750921, 0x973C7816,
+ 0xB69E32CD, 0x971F9ED6,
+ 0xB6C767CA, 0x9702D5C2,
+ 0xB6F0A811, 0x96E61CDF,
+ 0xB719F39D, 0x96C97431,
+ 0xB7434A67, 0x96ACDBBD,
+ 0xB76CAC68, 0x96905387,
+ 0xB796199B, 0x9673DB94,
+ 0xB7BF91F8, 0x965773E7,
+ 0xB7E9157A, 0x963B1C85,
+ 0xB812A419, 0x961ED573,
+ 0xB83C3DD1, 0x96029EB5,
+ 0xB865E299, 0x95E6784F,
+ 0xB88F926C, 0x95CA6246,
+ 0xB8B94D44, 0x95AE5C9E,
+ 0xB8E31319, 0x9592675B,
+ 0xB90CE3E6, 0x95768282,
+ 0xB936BFA3, 0x955AAE17,
+ 0xB960A64B, 0x953EEA1E,
+ 0xB98A97D8, 0x9523369B,
+ 0xB9B49442, 0x95079393,
+ 0xB9DE9B83, 0x94EC010B,
+ 0xBA08AD94, 0x94D07F05,
+ 0xBA32CA70, 0x94B50D87,
+ 0xBA5CF210, 0x9499AC95,
+ 0xBA87246C, 0x947E5C32,
+ 0xBAB1617F, 0x94631C64,
+ 0xBADBA943, 0x9447ED2F,
+ 0xBB05FBB0, 0x942CCE95,
+ 0xBB3058C0, 0x9411C09D,
+ 0xBB5AC06C, 0x93F6C34A,
+ 0xBB8532AF, 0x93DBD69F,
+ 0xBBAFAF81, 0x93C0FAA2,
+ 0xBBDA36DC, 0x93A62F56,
+ 0xBC04C8BA, 0x938B74C0,
+ 0xBC2F6513, 0x9370CAE4,
+ 0xBC5A0BE1, 0x935631C5,
+ 0xBC84BD1E, 0x933BA968,
+ 0xBCAF78C3, 0x932131D1,
+ 0xBCDA3ECA, 0x9306CB04,
+ 0xBD050F2C, 0x92EC7505,
+ 0xBD2FE9E1, 0x92D22FD8,
+ 0xBD5ACEE5, 0x92B7FB82,
+ 0xBD85BE2F, 0x929DD805,
+ 0xBDB0B7BA, 0x9283C567,
+ 0xBDDBBB7F, 0x9269C3AC,
+ 0xBE06C977, 0x924FD2D6,
+ 0xBE31E19B, 0x9235F2EB,
+ 0xBE5D03E5, 0x921C23EE,
+ 0xBE88304F, 0x920265E4,
+ 0xBEB366D1, 0x91E8B8D0,
+ 0xBEDEA765, 0x91CF1CB6,
+ 0xBF09F204, 0x91B5919A,
+ 0xBF3546A8, 0x919C1780,
+ 0xBF60A54A, 0x9182AE6C,
+ 0xBF8C0DE2, 0x91695663,
+ 0xBFB7806C, 0x91500F67,
+ 0xBFE2FCDF, 0x9136D97D,
+ 0xC00E8335, 0x911DB4A8,
+ 0xC03A1368, 0x9104A0ED,
+ 0xC065AD70, 0x90EB9E50,
+ 0xC0915147, 0x90D2ACD3,
+ 0xC0BCFEE7, 0x90B9CC7C,
+ 0xC0E8B648, 0x90A0FD4E,
+ 0xC1147763, 0x90883F4C,
+ 0xC1404233, 0x906F927B,
+ 0xC16C16B0, 0x9056F6DF,
+ 0xC197F4D3, 0x903E6C7A,
+ 0xC1C3DC96, 0x9025F352,
+ 0xC1EFCDF2, 0x900D8B69,
+ 0xC21BC8E0, 0x8FF534C4,
+ 0xC247CD5A, 0x8FDCEF66,
+ 0xC273DB58, 0x8FC4BB53,
+ 0xC29FF2D4, 0x8FAC988E,
+ 0xC2CC13C7, 0x8F94871D,
+ 0xC2F83E2A, 0x8F7C8701,
+ 0xC32471F6, 0x8F64983F,
+ 0xC350AF25, 0x8F4CBADB,
+ 0xC37CF5B0, 0x8F34EED8,
+ 0xC3A9458F, 0x8F1D343A,
+ 0xC3D59EBD, 0x8F058B04,
+ 0xC4020132, 0x8EEDF33B,
+ 0xC42E6CE8, 0x8ED66CE1,
+ 0xC45AE1D7, 0x8EBEF7FB,
+ 0xC4875FF8, 0x8EA7948C,
+ 0xC4B3E746, 0x8E904298,
+ 0xC4E077B8, 0x8E790222,
+ 0xC50D1148, 0x8E61D32D,
+ 0xC539B3F0, 0x8E4AB5BF,
+ 0xC5665FA8, 0x8E33A9D9,
+ 0xC593146A, 0x8E1CAF80,
+ 0xC5BFD22E, 0x8E05C6B7,
+ 0xC5EC98ED, 0x8DEEEF82,
+ 0xC61968A2, 0x8DD829E4,
+ 0xC6464144, 0x8DC175E0,
+ 0xC67322CD, 0x8DAAD37B,
+ 0xC6A00D36, 0x8D9442B7,
+ 0xC6CD0079, 0x8D7DC399,
+ 0xC6F9FC8D, 0x8D675623,
+ 0xC727016C, 0x8D50FA59,
+ 0xC7540F10, 0x8D3AB03F,
+ 0xC7812571, 0x8D2477D8,
+ 0xC7AE4489, 0x8D0E5127,
+ 0xC7DB6C50, 0x8CF83C30,
+ 0xC8089CBF, 0x8CE238F6,
+ 0xC835D5D0, 0x8CCC477D,
+ 0xC863177B, 0x8CB667C7,
+ 0xC89061BA, 0x8CA099D9,
+ 0xC8BDB485, 0x8C8ADDB6,
+ 0xC8EB0FD6, 0x8C753361,
+ 0xC91873A5, 0x8C5F9ADD,
+ 0xC945DFEC, 0x8C4A142F,
+ 0xC97354A3, 0x8C349F58,
+ 0xC9A0D1C4, 0x8C1F3C5C,
+ 0xC9CE5748, 0x8C09EB40,
+ 0xC9FBE527, 0x8BF4AC05,
+ 0xCA297B5A, 0x8BDF7EAF,
+ 0xCA5719DB, 0x8BCA6342,
+ 0xCA84C0A2, 0x8BB559C1,
+ 0xCAB26FA9, 0x8BA0622F,
+ 0xCAE026E8, 0x8B8B7C8F,
+ 0xCB0DE658, 0x8B76A8E4,
+ 0xCB3BADF2, 0x8B61E732,
+ 0xCB697DB0, 0x8B4D377C,
+ 0xCB975589, 0x8B3899C5,
+ 0xCBC53578, 0x8B240E10,
+ 0xCBF31D75, 0x8B0F9461,
+ 0xCC210D78, 0x8AFB2CBA,
+ 0xCC4F057B, 0x8AE6D71F,
+ 0xCC7D0577, 0x8AD29393,
+ 0xCCAB0D65, 0x8ABE6219,
+ 0xCCD91D3D, 0x8AAA42B4,
+ 0xCD0734F8, 0x8A963567,
+ 0xCD355490, 0x8A823A35,
+ 0xCD637BFD, 0x8A6E5122,
+ 0xCD91AB38, 0x8A5A7A30,
+ 0xCDBFE23A, 0x8A46B563,
+ 0xCDEE20FC, 0x8A3302BD,
+ 0xCE1C6776, 0x8A1F6242,
+ 0xCE4AB5A2, 0x8A0BD3F5,
+ 0xCE790B78, 0x89F857D8,
+ 0xCEA768F2, 0x89E4EDEE,
+ 0xCED5CE08, 0x89D1963C,
+ 0xCF043AB2, 0x89BE50C3,
+ 0xCF32AEEB, 0x89AB1D86,
+ 0xCF612AAA, 0x8997FC89,
+ 0xCF8FADE8, 0x8984EDCF,
+ 0xCFBE389F, 0x8971F15A,
+ 0xCFECCAC7, 0x895F072D,
+ 0xD01B6459, 0x894C2F4C,
+ 0xD04A054D, 0x893969B9,
+ 0xD078AD9D, 0x8926B677,
+ 0xD0A75D42, 0x89141589,
+ 0xD0D61433, 0x890186F1,
+ 0xD104D26B, 0x88EF0AB4,
+ 0xD13397E1, 0x88DCA0D3,
+ 0xD162648F, 0x88CA4951,
+ 0xD191386D, 0x88B80431,
+ 0xD1C01374, 0x88A5D177,
+ 0xD1EEF59E, 0x8893B124,
+ 0xD21DDEE1, 0x8881A33C,
+ 0xD24CCF38, 0x886FA7C2,
+ 0xD27BC69C, 0x885DBEB7,
+ 0xD2AAC504, 0x884BE820,
+ 0xD2D9CA6A, 0x883A23FE,
+ 0xD308D6C6, 0x88287255,
+ 0xD337EA12, 0x8816D327,
+ 0xD3670445, 0x88054677,
+ 0xD3962559, 0x87F3CC47,
+ 0xD3C54D46, 0x87E2649B,
+ 0xD3F47C06, 0x87D10F75,
+ 0xD423B190, 0x87BFCCD7,
+ 0xD452EDDE, 0x87AE9CC5,
+ 0xD48230E8, 0x879D7F40,
+ 0xD4B17AA7, 0x878C744C,
+ 0xD4E0CB14, 0x877B7BEC,
+ 0xD5102227, 0x876A9621,
+ 0xD53F7FDA, 0x8759C2EF,
+ 0xD56EE424, 0x87490257,
+ 0xD59E4EFE, 0x8738545E,
+ 0xD5CDC062, 0x8727B904,
+ 0xD5FD3847, 0x8717304E,
+ 0xD62CB6A7, 0x8706BA3C,
+ 0xD65C3B7B, 0x86F656D3,
+ 0xD68BC6BA, 0x86E60614,
+ 0xD6BB585D, 0x86D5C802,
+ 0xD6EAF05E, 0x86C59C9F,
+ 0xD71A8EB5, 0x86B583EE,
+ 0xD74A335A, 0x86A57DF1,
+ 0xD779DE46, 0x86958AAB,
+ 0xD7A98F73, 0x8685AA1F,
+ 0xD7D946D7, 0x8675DC4E,
+ 0xD809046D, 0x8666213C,
+ 0xD838C82D, 0x865678EA,
+ 0xD868920F, 0x8646E35B,
+ 0xD898620C, 0x86376092,
+ 0xD8C8381C, 0x8627F090,
+ 0xD8F81439, 0x86189359,
+ 0xD927F65B, 0x860948EE,
+ 0xD957DE7A, 0x85FA1152,
+ 0xD987CC8F, 0x85EAEC88,
+ 0xD9B7C093, 0x85DBDA91,
+ 0xD9E7BA7E, 0x85CCDB70,
+ 0xDA17BA4A, 0x85BDEF27,
+ 0xDA47BFED, 0x85AF15B9,
+ 0xDA77CB62, 0x85A04F28,
+ 0xDAA7DCA1, 0x85919B75,
+ 0xDAD7F3A2, 0x8582FAA4,
+ 0xDB08105E, 0x85746CB7,
+ 0xDB3832CD, 0x8565F1B0,
+ 0xDB685AE8, 0x85578991,
+ 0xDB9888A8, 0x8549345C,
+ 0xDBC8BC05, 0x853AF214,
+ 0xDBF8F4F8, 0x852CC2BA,
+ 0xDC293379, 0x851EA652,
+ 0xDC597781, 0x85109CDC,
+ 0xDC89C108, 0x8502A65C,
+ 0xDCBA1008, 0x84F4C2D3,
+ 0xDCEA6478, 0x84E6F244,
+ 0xDD1ABE51, 0x84D934B0,
+ 0xDD4B1D8B, 0x84CB8A1B,
+ 0xDD7B8220, 0x84BDF285,
+ 0xDDABEC07, 0x84B06DF1,
+ 0xDDDC5B3A, 0x84A2FC62,
+ 0xDE0CCFB1, 0x84959DD9,
+ 0xDE3D4963, 0x84885257,
+ 0xDE6DC84B, 0x847B19E1,
+ 0xDE9E4C60, 0x846DF476,
+ 0xDECED59B, 0x8460E21A,
+ 0xDEFF63F4, 0x8453E2CE,
+ 0xDF2FF764, 0x8446F695,
+ 0xDF608FE3, 0x843A1D70,
+ 0xDF912D6A, 0x842D5761,
+ 0xDFC1CFF2, 0x8420A46B,
+ 0xDFF27773, 0x8414048F,
+ 0xE02323E5, 0x840777CF,
+ 0xE053D541, 0x83FAFE2E,
+ 0xE0848B7F, 0x83EE97AC,
+ 0xE0B54698, 0x83E2444D,
+ 0xE0E60684, 0x83D60411,
+ 0xE116CB3D, 0x83C9D6FB,
+ 0xE14794B9, 0x83BDBD0D,
+ 0xE17862F3, 0x83B1B649,
+ 0xE1A935E1, 0x83A5C2B0,
+ 0xE1DA0D7E, 0x8399E244,
+ 0xE20AE9C1, 0x838E1507,
+ 0xE23BCAA2, 0x83825AFB,
+ 0xE26CB01A, 0x8376B422,
+ 0xE29D9A22, 0x836B207D,
+ 0xE2CE88B2, 0x835FA00E,
+ 0xE2FF7BC3, 0x835432D8,
+ 0xE330734C, 0x8348D8DB,
+ 0xE3616F47, 0x833D921A,
+ 0xE3926FAC, 0x83325E97,
+ 0xE3C37473, 0x83273E52,
+ 0xE3F47D95, 0x831C314E,
+ 0xE4258B0A, 0x8311378C,
+ 0xE4569CCB, 0x8306510F,
+ 0xE487B2CF, 0x82FB7DD8,
+ 0xE4B8CD10, 0x82F0BDE8,
+ 0xE4E9EB86, 0x82E61141,
+ 0xE51B0E2A, 0x82DB77E5,
+ 0xE54C34F3, 0x82D0F1D5,
+ 0xE57D5FDA, 0x82C67F13,
+ 0xE5AE8ED8, 0x82BC1FA1,
+ 0xE5DFC1E4, 0x82B1D381,
+ 0xE610F8F9, 0x82A79AB3,
+ 0xE642340D, 0x829D753A,
+ 0xE6737319, 0x82936316,
+ 0xE6A4B616, 0x8289644A,
+ 0xE6D5FCFC, 0x827F78D8,
+ 0xE70747C3, 0x8275A0C0,
+ 0xE7389664, 0x826BDC04,
+ 0xE769E8D8, 0x82622AA5,
+ 0xE79B3F16, 0x82588CA6,
+ 0xE7CC9917, 0x824F0208,
+ 0xE7FDF6D3, 0x82458ACB,
+ 0xE82F5844, 0x823C26F2,
+ 0xE860BD60, 0x8232D67E,
+ 0xE8922621, 0x82299971,
+ 0xE8C3927F, 0x82206FCB,
+ 0xE8F50273, 0x8217598F,
+ 0xE92675F4, 0x820E56BE,
+ 0xE957ECFB, 0x82056758,
+ 0xE9896780, 0x81FC8B60,
+ 0xE9BAE57C, 0x81F3C2D7,
+ 0xE9EC66E8, 0x81EB0DBD,
+ 0xEA1DEBBB, 0x81E26C16,
+ 0xEA4F73EE, 0x81D9DDE1,
+ 0xEA80FF79, 0x81D16320,
+ 0xEAB28E55, 0x81C8FBD5,
+ 0xEAE4207A, 0x81C0A801,
+ 0xEB15B5E0, 0x81B867A4,
+ 0xEB474E80, 0x81B03AC1,
+ 0xEB78EA52, 0x81A82159,
+ 0xEBAA894E, 0x81A01B6C,
+ 0xEBDC2B6D, 0x819828FD,
+ 0xEC0DD0A8, 0x81904A0C,
+ 0xEC3F78F5, 0x81887E9A,
+ 0xEC71244F, 0x8180C6A9,
+ 0xECA2D2AC, 0x8179223A,
+ 0xECD48406, 0x8171914E,
+ 0xED063855, 0x816A13E6,
+ 0xED37EF91, 0x8162AA03,
+ 0xED69A9B2, 0x815B53A8,
+ 0xED9B66B2, 0x815410D3,
+ 0xEDCD2687, 0x814CE188,
+ 0xEDFEE92B, 0x8145C5C6,
+ 0xEE30AE95, 0x813EBD90,
+ 0xEE6276BF, 0x8137C8E6,
+ 0xEE9441A0, 0x8130E7C8,
+ 0xEEC60F31, 0x812A1A39,
+ 0xEEF7DF6A, 0x81236039,
+ 0xEF29B243, 0x811CB9CA,
+ 0xEF5B87B5, 0x811626EC,
+ 0xEF8D5FB8, 0x810FA7A0,
+ 0xEFBF3A44, 0x81093BE8,
+ 0xEFF11752, 0x8102E3C3,
+ 0xF022F6DA, 0x80FC9F35,
+ 0xF054D8D4, 0x80F66E3C,
+ 0xF086BD39, 0x80F050DB,
+ 0xF0B8A401, 0x80EA4712,
+ 0xF0EA8D23, 0x80E450E2,
+ 0xF11C789A, 0x80DE6E4C,
+ 0xF14E665C, 0x80D89F51,
+ 0xF1805662, 0x80D2E3F1,
+ 0xF1B248A5, 0x80CD3C2F,
+ 0xF1E43D1C, 0x80C7A80A,
+ 0xF21633C0, 0x80C22783,
+ 0xF2482C89, 0x80BCBA9C,
+ 0xF27A2770, 0x80B76155,
+ 0xF2AC246D, 0x80B21BAF,
+ 0xF2DE2378, 0x80ACE9AB,
+ 0xF310248A, 0x80A7CB49,
+ 0xF342279A, 0x80A2C08B,
+ 0xF3742CA1, 0x809DC970,
+ 0xF3A63398, 0x8098E5FB,
+ 0xF3D83C76, 0x8094162B,
+ 0xF40A4734, 0x808F5A02,
+ 0xF43C53CA, 0x808AB180,
+ 0xF46E6231, 0x80861CA5,
+ 0xF4A07260, 0x80819B74,
+ 0xF4D28451, 0x807D2DEB,
+ 0xF50497FA, 0x8078D40D,
+ 0xF536AD55, 0x80748DD9,
+ 0xF568C45A, 0x80705B50,
+ 0xF59ADD01, 0x806C3C73,
+ 0xF5CCF743, 0x80683143,
+ 0xF5FF1317, 0x806439C0,
+ 0xF6313076, 0x806055EA,
+ 0xF6634F58, 0x805C85C3,
+ 0xF6956FB6, 0x8058C94C,
+ 0xF6C79188, 0x80552083,
+ 0xF6F9B4C5, 0x80518B6B,
+ 0xF72BD967, 0x804E0A03,
+ 0xF75DFF65, 0x804A9C4D,
+ 0xF79026B8, 0x80474248,
+ 0xF7C24F58, 0x8043FBF6,
+ 0xF7F4793E, 0x8040C956,
+ 0xF826A461, 0x803DAA69,
+ 0xF858D0BA, 0x803A9F31,
+ 0xF88AFE41, 0x8037A7AC,
+ 0xF8BD2CEF, 0x8034C3DC,
+ 0xF8EF5CBB, 0x8031F3C1,
+ 0xF9218D9E, 0x802F375C,
+ 0xF953BF90, 0x802C8EAD,
+ 0xF985F28A, 0x8029F9B4,
+ 0xF9B82683, 0x80277872,
+ 0xF9EA5B75, 0x80250AE7,
+ 0xFA1C9156, 0x8022B113,
+ 0xFA4EC820, 0x80206AF8,
+ 0xFA80FFCB, 0x801E3894,
+ 0xFAB3384F, 0x801C19E9,
+ 0xFAE571A4, 0x801A0EF7,
+ 0xFB17ABC2, 0x801817BF,
+ 0xFB49E6A2, 0x80163440,
+ 0xFB7C223C, 0x8014647A,
+ 0xFBAE5E89, 0x8012A86F,
+ 0xFBE09B80, 0x8011001E,
+ 0xFC12D919, 0x800F6B88,
+ 0xFC45174E, 0x800DEAAC,
+ 0xFC775616, 0x800C7D8C,
+ 0xFCA99569, 0x800B2427,
+ 0xFCDBD541, 0x8009DE7D,
+ 0xFD0E1594, 0x8008AC90,
+ 0xFD40565B, 0x80078E5E,
+ 0xFD72978F, 0x800683E8,
+ 0xFDA4D928, 0x80058D2E,
+ 0xFDD71B1E, 0x8004AA31,
+ 0xFE095D69, 0x8003DAF0,
+ 0xFE3BA001, 0x80031F6C,
+ 0xFE6DE2E0, 0x800277A5,
+ 0xFEA025FC, 0x8001E39B,
+ 0xFED2694F, 0x8001634D,
+ 0xFF04ACD0, 0x8000F6BD,
+ 0xFF36F078, 0x80009DE9,
+ 0xFF69343E, 0x800058D3,
+ 0xFF9B781D, 0x8000277A,
+ 0xFFCDBC0A, 0x800009DE
+};
+
/*
-* @brief Q15 Twiddle factors Table
+* @brief q15 Twiddle factors Table
+*/
+
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 16 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_16_q15[24] = {
+ 0x7FFF, 0x0000,
+ 0x7641, 0x30FB,
+ 0x5A82, 0x5A82,
+ 0x30FB, 0x7641,
+ 0x0000, 0x7FFF,
+ 0xCF04, 0x7641,
+ 0xA57D, 0x5A82,
+ 0x89BE, 0x30FB,
+ 0x8000, 0x0000,
+ 0x89BE, 0xCF04,
+ 0xA57D, 0xA57D,
+ 0xCF04, 0x89BE
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 32 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_32_q15[48] = {
+ 0x7FFF, 0x0000,
+ 0x7D8A, 0x18F8,
+ 0x7641, 0x30FB,
+ 0x6A6D, 0x471C,
+ 0x5A82, 0x5A82,
+ 0x471C, 0x6A6D,
+ 0x30FB, 0x7641,
+ 0x18F8, 0x7D8A,
+ 0x0000, 0x7FFF,
+ 0xE707, 0x7D8A,
+ 0xCF04, 0x7641,
+ 0xB8E3, 0x6A6D,
+ 0xA57D, 0x5A82,
+ 0x9592, 0x471C,
+ 0x89BE, 0x30FB,
+ 0x8275, 0x18F8,
+ 0x8000, 0x0000,
+ 0x8275, 0xE707,
+ 0x89BE, 0xCF04,
+ 0x9592, 0xB8E3,
+ 0xA57D, 0xA57D,
+ 0xB8E3, 0x9592,
+ 0xCF04, 0x89BE,
+ 0xE707, 0x8275
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 64 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_64_q15[96] = {
+ 0x7FFF, 0x0000,
+ 0x7F62, 0x0C8B,
+ 0x7D8A, 0x18F8,
+ 0x7A7D, 0x2528,
+ 0x7641, 0x30FB,
+ 0x70E2, 0x3C56,
+ 0x6A6D, 0x471C,
+ 0x62F2, 0x5133,
+ 0x5A82, 0x5A82,
+ 0x5133, 0x62F2,
+ 0x471C, 0x6A6D,
+ 0x3C56, 0x70E2,
+ 0x30FB, 0x7641,
+ 0x2528, 0x7A7D,
+ 0x18F8, 0x7D8A,
+ 0x0C8B, 0x7F62,
+ 0x0000, 0x7FFF,
+ 0xF374, 0x7F62,
+ 0xE707, 0x7D8A,
+ 0xDAD7, 0x7A7D,
+ 0xCF04, 0x7641,
+ 0xC3A9, 0x70E2,
+ 0xB8E3, 0x6A6D,
+ 0xAECC, 0x62F2,
+ 0xA57D, 0x5A82,
+ 0x9D0D, 0x5133,
+ 0x9592, 0x471C,
+ 0x8F1D, 0x3C56,
+ 0x89BE, 0x30FB,
+ 0x8582, 0x2528,
+ 0x8275, 0x18F8,
+ 0x809D, 0x0C8B,
+ 0x8000, 0x0000,
+ 0x809D, 0xF374,
+ 0x8275, 0xE707,
+ 0x8582, 0xDAD7,
+ 0x89BE, 0xCF04,
+ 0x8F1D, 0xC3A9,
+ 0x9592, 0xB8E3,
+ 0x9D0D, 0xAECC,
+ 0xA57D, 0xA57D,
+ 0xAECC, 0x9D0D,
+ 0xB8E3, 0x9592,
+ 0xC3A9, 0x8F1D,
+ 0xCF04, 0x89BE,
+ 0xDAD7, 0x8582,
+ 0xE707, 0x8275,
+ 0xF374, 0x809D
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 128 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_128_q15[192] = {
+ 0x7FFF, 0x0000,
+ 0x7FD8, 0x0647,
+ 0x7F62, 0x0C8B,
+ 0x7E9D, 0x12C8,
+ 0x7D8A, 0x18F8,
+ 0x7C29, 0x1F19,
+ 0x7A7D, 0x2528,
+ 0x7884, 0x2B1F,
+ 0x7641, 0x30FB,
+ 0x73B5, 0x36BA,
+ 0x70E2, 0x3C56,
+ 0x6DCA, 0x41CE,
+ 0x6A6D, 0x471C,
+ 0x66CF, 0x4C3F,
+ 0x62F2, 0x5133,
+ 0x5ED7, 0x55F5,
+ 0x5A82, 0x5A82,
+ 0x55F5, 0x5ED7,
+ 0x5133, 0x62F2,
+ 0x4C3F, 0x66CF,
+ 0x471C, 0x6A6D,
+ 0x41CE, 0x6DCA,
+ 0x3C56, 0x70E2,
+ 0x36BA, 0x73B5,
+ 0x30FB, 0x7641,
+ 0x2B1F, 0x7884,
+ 0x2528, 0x7A7D,
+ 0x1F19, 0x7C29,
+ 0x18F8, 0x7D8A,
+ 0x12C8, 0x7E9D,
+ 0x0C8B, 0x7F62,
+ 0x0647, 0x7FD8,
+ 0x0000, 0x7FFF,
+ 0xF9B8, 0x7FD8,
+ 0xF374, 0x7F62,
+ 0xED37, 0x7E9D,
+ 0xE707, 0x7D8A,
+ 0xE0E6, 0x7C29,
+ 0xDAD7, 0x7A7D,
+ 0xD4E0, 0x7884,
+ 0xCF04, 0x7641,
+ 0xC945, 0x73B5,
+ 0xC3A9, 0x70E2,
+ 0xBE31, 0x6DCA,
+ 0xB8E3, 0x6A6D,
+ 0xB3C0, 0x66CF,
+ 0xAECC, 0x62F2,
+ 0xAA0A, 0x5ED7,
+ 0xA57D, 0x5A82,
+ 0xA128, 0x55F5,
+ 0x9D0D, 0x5133,
+ 0x9930, 0x4C3F,
+ 0x9592, 0x471C,
+ 0x9235, 0x41CE,
+ 0x8F1D, 0x3C56,
+ 0x8C4A, 0x36BA,
+ 0x89BE, 0x30FB,
+ 0x877B, 0x2B1F,
+ 0x8582, 0x2528,
+ 0x83D6, 0x1F19,
+ 0x8275, 0x18F8,
+ 0x8162, 0x12C8,
+ 0x809D, 0x0C8B,
+ 0x8027, 0x0647,
+ 0x8000, 0x0000,
+ 0x8027, 0xF9B8,
+ 0x809D, 0xF374,
+ 0x8162, 0xED37,
+ 0x8275, 0xE707,
+ 0x83D6, 0xE0E6,
+ 0x8582, 0xDAD7,
+ 0x877B, 0xD4E0,
+ 0x89BE, 0xCF04,
+ 0x8C4A, 0xC945,
+ 0x8F1D, 0xC3A9,
+ 0x9235, 0xBE31,
+ 0x9592, 0xB8E3,
+ 0x9930, 0xB3C0,
+ 0x9D0D, 0xAECC,
+ 0xA128, 0xAA0A,
+ 0xA57D, 0xA57D,
+ 0xAA0A, 0xA128,
+ 0xAECC, 0x9D0D,
+ 0xB3C0, 0x9930,
+ 0xB8E3, 0x9592,
+ 0xBE31, 0x9235,
+ 0xC3A9, 0x8F1D,
+ 0xC945, 0x8C4A,
+ 0xCF04, 0x89BE,
+ 0xD4E0, 0x877B,
+ 0xDAD7, 0x8582,
+ 0xE0E6, 0x83D6,
+ 0xE707, 0x8275,
+ 0xED37, 0x8162,
+ 0xF374, 0x809D,
+ 0xF9B8, 0x8027
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 256 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
*/
-
-/**
-* \par
-* Example code for Q15 Twiddle factors Generation::
+const q15_t twiddleCoef_256_q15[384] = {
+ 0x7FFF, 0x0000,
+ 0x7FF6, 0x0324,
+ 0x7FD8, 0x0647,
+ 0x7FA7, 0x096A,
+ 0x7F62, 0x0C8B,
+ 0x7F09, 0x0FAB,
+ 0x7E9D, 0x12C8,
+ 0x7E1D, 0x15E2,
+ 0x7D8A, 0x18F8,
+ 0x7CE3, 0x1C0B,
+ 0x7C29, 0x1F19,
+ 0x7B5D, 0x2223,
+ 0x7A7D, 0x2528,
+ 0x798A, 0x2826,
+ 0x7884, 0x2B1F,
+ 0x776C, 0x2E11,
+ 0x7641, 0x30FB,
+ 0x7504, 0x33DE,
+ 0x73B5, 0x36BA,
+ 0x7255, 0x398C,
+ 0x70E2, 0x3C56,
+ 0x6F5F, 0x3F17,
+ 0x6DCA, 0x41CE,
+ 0x6C24, 0x447A,
+ 0x6A6D, 0x471C,
+ 0x68A6, 0x49B4,
+ 0x66CF, 0x4C3F,
+ 0x64E8, 0x4EBF,
+ 0x62F2, 0x5133,
+ 0x60EC, 0x539B,
+ 0x5ED7, 0x55F5,
+ 0x5CB4, 0x5842,
+ 0x5A82, 0x5A82,
+ 0x5842, 0x5CB4,
+ 0x55F5, 0x5ED7,
+ 0x539B, 0x60EC,
+ 0x5133, 0x62F2,
+ 0x4EBF, 0x64E8,
+ 0x4C3F, 0x66CF,
+ 0x49B4, 0x68A6,
+ 0x471C, 0x6A6D,
+ 0x447A, 0x6C24,
+ 0x41CE, 0x6DCA,
+ 0x3F17, 0x6F5F,
+ 0x3C56, 0x70E2,
+ 0x398C, 0x7255,
+ 0x36BA, 0x73B5,
+ 0x33DE, 0x7504,
+ 0x30FB, 0x7641,
+ 0x2E11, 0x776C,
+ 0x2B1F, 0x7884,
+ 0x2826, 0x798A,
+ 0x2528, 0x7A7D,
+ 0x2223, 0x7B5D,
+ 0x1F19, 0x7C29,
+ 0x1C0B, 0x7CE3,
+ 0x18F8, 0x7D8A,
+ 0x15E2, 0x7E1D,
+ 0x12C8, 0x7E9D,
+ 0x0FAB, 0x7F09,
+ 0x0C8B, 0x7F62,
+ 0x096A, 0x7FA7,
+ 0x0647, 0x7FD8,
+ 0x0324, 0x7FF6,
+ 0x0000, 0x7FFF,
+ 0xFCDB, 0x7FF6,
+ 0xF9B8, 0x7FD8,
+ 0xF695, 0x7FA7,
+ 0xF374, 0x7F62,
+ 0xF054, 0x7F09,
+ 0xED37, 0x7E9D,
+ 0xEA1D, 0x7E1D,
+ 0xE707, 0x7D8A,
+ 0xE3F4, 0x7CE3,
+ 0xE0E6, 0x7C29,
+ 0xDDDC, 0x7B5D,
+ 0xDAD7, 0x7A7D,
+ 0xD7D9, 0x798A,
+ 0xD4E0, 0x7884,
+ 0xD1EE, 0x776C,
+ 0xCF04, 0x7641,
+ 0xCC21, 0x7504,
+ 0xC945, 0x73B5,
+ 0xC673, 0x7255,
+ 0xC3A9, 0x70E2,
+ 0xC0E8, 0x6F5F,
+ 0xBE31, 0x6DCA,
+ 0xBB85, 0x6C24,
+ 0xB8E3, 0x6A6D,
+ 0xB64B, 0x68A6,
+ 0xB3C0, 0x66CF,
+ 0xB140, 0x64E8,
+ 0xAECC, 0x62F2,
+ 0xAC64, 0x60EC,
+ 0xAA0A, 0x5ED7,
+ 0xA7BD, 0x5CB4,
+ 0xA57D, 0x5A82,
+ 0xA34B, 0x5842,
+ 0xA128, 0x55F5,
+ 0x9F13, 0x539B,
+ 0x9D0D, 0x5133,
+ 0x9B17, 0x4EBF,
+ 0x9930, 0x4C3F,
+ 0x9759, 0x49B4,
+ 0x9592, 0x471C,
+ 0x93DB, 0x447A,
+ 0x9235, 0x41CE,
+ 0x90A0, 0x3F17,
+ 0x8F1D, 0x3C56,
+ 0x8DAA, 0x398C,
+ 0x8C4A, 0x36BA,
+ 0x8AFB, 0x33DE,
+ 0x89BE, 0x30FB,
+ 0x8893, 0x2E11,
+ 0x877B, 0x2B1F,
+ 0x8675, 0x2826,
+ 0x8582, 0x2528,
+ 0x84A2, 0x2223,
+ 0x83D6, 0x1F19,
+ 0x831C, 0x1C0B,
+ 0x8275, 0x18F8,
+ 0x81E2, 0x15E2,
+ 0x8162, 0x12C8,
+ 0x80F6, 0x0FAB,
+ 0x809D, 0x0C8B,
+ 0x8058, 0x096A,
+ 0x8027, 0x0647,
+ 0x8009, 0x0324,
+ 0x8000, 0x0000,
+ 0x8009, 0xFCDB,
+ 0x8027, 0xF9B8,
+ 0x8058, 0xF695,
+ 0x809D, 0xF374,
+ 0x80F6, 0xF054,
+ 0x8162, 0xED37,
+ 0x81E2, 0xEA1D,
+ 0x8275, 0xE707,
+ 0x831C, 0xE3F4,
+ 0x83D6, 0xE0E6,
+ 0x84A2, 0xDDDC,
+ 0x8582, 0xDAD7,
+ 0x8675, 0xD7D9,
+ 0x877B, 0xD4E0,
+ 0x8893, 0xD1EE,
+ 0x89BE, 0xCF04,
+ 0x8AFB, 0xCC21,
+ 0x8C4A, 0xC945,
+ 0x8DAA, 0xC673,
+ 0x8F1D, 0xC3A9,
+ 0x90A0, 0xC0E8,
+ 0x9235, 0xBE31,
+ 0x93DB, 0xBB85,
+ 0x9592, 0xB8E3,
+ 0x9759, 0xB64B,
+ 0x9930, 0xB3C0,
+ 0x9B17, 0xB140,
+ 0x9D0D, 0xAECC,
+ 0x9F13, 0xAC64,
+ 0xA128, 0xAA0A,
+ 0xA34B, 0xA7BD,
+ 0xA57D, 0xA57D,
+ 0xA7BD, 0xA34B,
+ 0xAA0A, 0xA128,
+ 0xAC64, 0x9F13,
+ 0xAECC, 0x9D0D,
+ 0xB140, 0x9B17,
+ 0xB3C0, 0x9930,
+ 0xB64B, 0x9759,
+ 0xB8E3, 0x9592,
+ 0xBB85, 0x93DB,
+ 0xBE31, 0x9235,
+ 0xC0E8, 0x90A0,
+ 0xC3A9, 0x8F1D,
+ 0xC673, 0x8DAA,
+ 0xC945, 0x8C4A,
+ 0xCC21, 0x8AFB,
+ 0xCF04, 0x89BE,
+ 0xD1EE, 0x8893,
+ 0xD4E0, 0x877B,
+ 0xD7D9, 0x8675,
+ 0xDAD7, 0x8582,
+ 0xDDDC, 0x84A2,
+ 0xE0E6, 0x83D6,
+ 0xE3F4, 0x831C,
+ 0xE707, 0x8275,
+ 0xEA1D, 0x81E2,
+ 0xED37, 0x8162,
+ 0xF054, 0x80F6,
+ 0xF374, 0x809D,
+ 0xF695, 0x8058,
+ 0xF9B8, 0x8027,
+ 0xFCDB, 0x8009
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 512 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_512_q15[768] = {
+ 0x7FFF, 0x0000,
+ 0x7FFD, 0x0192,
+ 0x7FF6, 0x0324,
+ 0x7FE9, 0x04B6,
+ 0x7FD8, 0x0647,
+ 0x7FC2, 0x07D9,
+ 0x7FA7, 0x096A,
+ 0x7F87, 0x0AFB,
+ 0x7F62, 0x0C8B,
+ 0x7F38, 0x0E1B,
+ 0x7F09, 0x0FAB,
+ 0x7ED5, 0x1139,
+ 0x7E9D, 0x12C8,
+ 0x7E5F, 0x1455,
+ 0x7E1D, 0x15E2,
+ 0x7DD6, 0x176D,
+ 0x7D8A, 0x18F8,
+ 0x7D39, 0x1A82,
+ 0x7CE3, 0x1C0B,
+ 0x7C89, 0x1D93,
+ 0x7C29, 0x1F19,
+ 0x7BC5, 0x209F,
+ 0x7B5D, 0x2223,
+ 0x7AEF, 0x23A6,
+ 0x7A7D, 0x2528,
+ 0x7A05, 0x26A8,
+ 0x798A, 0x2826,
+ 0x7909, 0x29A3,
+ 0x7884, 0x2B1F,
+ 0x77FA, 0x2C98,
+ 0x776C, 0x2E11,
+ 0x76D9, 0x2F87,
+ 0x7641, 0x30FB,
+ 0x75A5, 0x326E,
+ 0x7504, 0x33DE,
+ 0x745F, 0x354D,
+ 0x73B5, 0x36BA,
+ 0x7307, 0x3824,
+ 0x7255, 0x398C,
+ 0x719E, 0x3AF2,
+ 0x70E2, 0x3C56,
+ 0x7023, 0x3DB8,
+ 0x6F5F, 0x3F17,
+ 0x6E96, 0x4073,
+ 0x6DCA, 0x41CE,
+ 0x6CF9, 0x4325,
+ 0x6C24, 0x447A,
+ 0x6B4A, 0x45CD,
+ 0x6A6D, 0x471C,
+ 0x698C, 0x4869,
+ 0x68A6, 0x49B4,
+ 0x67BD, 0x4AFB,
+ 0x66CF, 0x4C3F,
+ 0x65DD, 0x4D81,
+ 0x64E8, 0x4EBF,
+ 0x63EF, 0x4FFB,
+ 0x62F2, 0x5133,
+ 0x61F1, 0x5269,
+ 0x60EC, 0x539B,
+ 0x5FE3, 0x54CA,
+ 0x5ED7, 0x55F5,
+ 0x5DC7, 0x571D,
+ 0x5CB4, 0x5842,
+ 0x5B9D, 0x5964,
+ 0x5A82, 0x5A82,
+ 0x5964, 0x5B9D,
+ 0x5842, 0x5CB4,
+ 0x571D, 0x5DC7,
+ 0x55F5, 0x5ED7,
+ 0x54CA, 0x5FE3,
+ 0x539B, 0x60EC,
+ 0x5269, 0x61F1,
+ 0x5133, 0x62F2,
+ 0x4FFB, 0x63EF,
+ 0x4EBF, 0x64E8,
+ 0x4D81, 0x65DD,
+ 0x4C3F, 0x66CF,
+ 0x4AFB, 0x67BD,
+ 0x49B4, 0x68A6,
+ 0x4869, 0x698C,
+ 0x471C, 0x6A6D,
+ 0x45CD, 0x6B4A,
+ 0x447A, 0x6C24,
+ 0x4325, 0x6CF9,
+ 0x41CE, 0x6DCA,
+ 0x4073, 0x6E96,
+ 0x3F17, 0x6F5F,
+ 0x3DB8, 0x7023,
+ 0x3C56, 0x70E2,
+ 0x3AF2, 0x719E,
+ 0x398C, 0x7255,
+ 0x3824, 0x7307,
+ 0x36BA, 0x73B5,
+ 0x354D, 0x745F,
+ 0x33DE, 0x7504,
+ 0x326E, 0x75A5,
+ 0x30FB, 0x7641,
+ 0x2F87, 0x76D9,
+ 0x2E11, 0x776C,
+ 0x2C98, 0x77FA,
+ 0x2B1F, 0x7884,
+ 0x29A3, 0x7909,
+ 0x2826, 0x798A,
+ 0x26A8, 0x7A05,
+ 0x2528, 0x7A7D,
+ 0x23A6, 0x7AEF,
+ 0x2223, 0x7B5D,
+ 0x209F, 0x7BC5,
+ 0x1F19, 0x7C29,
+ 0x1D93, 0x7C89,
+ 0x1C0B, 0x7CE3,
+ 0x1A82, 0x7D39,
+ 0x18F8, 0x7D8A,
+ 0x176D, 0x7DD6,
+ 0x15E2, 0x7E1D,
+ 0x1455, 0x7E5F,
+ 0x12C8, 0x7E9D,
+ 0x1139, 0x7ED5,
+ 0x0FAB, 0x7F09,
+ 0x0E1B, 0x7F38,
+ 0x0C8B, 0x7F62,
+ 0x0AFB, 0x7F87,
+ 0x096A, 0x7FA7,
+ 0x07D9, 0x7FC2,
+ 0x0647, 0x7FD8,
+ 0x04B6, 0x7FE9,
+ 0x0324, 0x7FF6,
+ 0x0192, 0x7FFD,
+ 0x0000, 0x7FFF,
+ 0xFE6D, 0x7FFD,
+ 0xFCDB, 0x7FF6,
+ 0xFB49, 0x7FE9,
+ 0xF9B8, 0x7FD8,
+ 0xF826, 0x7FC2,
+ 0xF695, 0x7FA7,
+ 0xF504, 0x7F87,
+ 0xF374, 0x7F62,
+ 0xF1E4, 0x7F38,
+ 0xF054, 0x7F09,
+ 0xEEC6, 0x7ED5,
+ 0xED37, 0x7E9D,
+ 0xEBAA, 0x7E5F,
+ 0xEA1D, 0x7E1D,
+ 0xE892, 0x7DD6,
+ 0xE707, 0x7D8A,
+ 0xE57D, 0x7D39,
+ 0xE3F4, 0x7CE3,
+ 0xE26C, 0x7C89,
+ 0xE0E6, 0x7C29,
+ 0xDF60, 0x7BC5,
+ 0xDDDC, 0x7B5D,
+ 0xDC59, 0x7AEF,
+ 0xDAD7, 0x7A7D,
+ 0xD957, 0x7A05,
+ 0xD7D9, 0x798A,
+ 0xD65C, 0x7909,
+ 0xD4E0, 0x7884,
+ 0xD367, 0x77FA,
+ 0xD1EE, 0x776C,
+ 0xD078, 0x76D9,
+ 0xCF04, 0x7641,
+ 0xCD91, 0x75A5,
+ 0xCC21, 0x7504,
+ 0xCAB2, 0x745F,
+ 0xC945, 0x73B5,
+ 0xC7DB, 0x7307,
+ 0xC673, 0x7255,
+ 0xC50D, 0x719E,
+ 0xC3A9, 0x70E2,
+ 0xC247, 0x7023,
+ 0xC0E8, 0x6F5F,
+ 0xBF8C, 0x6E96,
+ 0xBE31, 0x6DCA,
+ 0xBCDA, 0x6CF9,
+ 0xBB85, 0x6C24,
+ 0xBA32, 0x6B4A,
+ 0xB8E3, 0x6A6D,
+ 0xB796, 0x698C,
+ 0xB64B, 0x68A6,
+ 0xB504, 0x67BD,
+ 0xB3C0, 0x66CF,
+ 0xB27E, 0x65DD,
+ 0xB140, 0x64E8,
+ 0xB004, 0x63EF,
+ 0xAECC, 0x62F2,
+ 0xAD96, 0x61F1,
+ 0xAC64, 0x60EC,
+ 0xAB35, 0x5FE3,
+ 0xAA0A, 0x5ED7,
+ 0xA8E2, 0x5DC7,
+ 0xA7BD, 0x5CB4,
+ 0xA69B, 0x5B9D,
+ 0xA57D, 0x5A82,
+ 0xA462, 0x5964,
+ 0xA34B, 0x5842,
+ 0xA238, 0x571D,
+ 0xA128, 0x55F5,
+ 0xA01C, 0x54CA,
+ 0x9F13, 0x539B,
+ 0x9E0E, 0x5269,
+ 0x9D0D, 0x5133,
+ 0x9C10, 0x4FFB,
+ 0x9B17, 0x4EBF,
+ 0x9A22, 0x4D81,
+ 0x9930, 0x4C3F,
+ 0x9842, 0x4AFB,
+ 0x9759, 0x49B4,
+ 0x9673, 0x4869,
+ 0x9592, 0x471C,
+ 0x94B5, 0x45CD,
+ 0x93DB, 0x447A,
+ 0x9306, 0x4325,
+ 0x9235, 0x41CE,
+ 0x9169, 0x4073,
+ 0x90A0, 0x3F17,
+ 0x8FDC, 0x3DB8,
+ 0x8F1D, 0x3C56,
+ 0x8E61, 0x3AF2,
+ 0x8DAA, 0x398C,
+ 0x8CF8, 0x3824,
+ 0x8C4A, 0x36BA,
+ 0x8BA0, 0x354D,
+ 0x8AFB, 0x33DE,
+ 0x8A5A, 0x326E,
+ 0x89BE, 0x30FB,
+ 0x8926, 0x2F87,
+ 0x8893, 0x2E11,
+ 0x8805, 0x2C98,
+ 0x877B, 0x2B1F,
+ 0x86F6, 0x29A3,
+ 0x8675, 0x2826,
+ 0x85FA, 0x26A8,
+ 0x8582, 0x2528,
+ 0x8510, 0x23A6,
+ 0x84A2, 0x2223,
+ 0x843A, 0x209F,
+ 0x83D6, 0x1F19,
+ 0x8376, 0x1D93,
+ 0x831C, 0x1C0B,
+ 0x82C6, 0x1A82,
+ 0x8275, 0x18F8,
+ 0x8229, 0x176D,
+ 0x81E2, 0x15E2,
+ 0x81A0, 0x1455,
+ 0x8162, 0x12C8,
+ 0x812A, 0x1139,
+ 0x80F6, 0x0FAB,
+ 0x80C7, 0x0E1B,
+ 0x809D, 0x0C8B,
+ 0x8078, 0x0AFB,
+ 0x8058, 0x096A,
+ 0x803D, 0x07D9,
+ 0x8027, 0x0647,
+ 0x8016, 0x04B6,
+ 0x8009, 0x0324,
+ 0x8002, 0x0192,
+ 0x8000, 0x0000,
+ 0x8002, 0xFE6D,
+ 0x8009, 0xFCDB,
+ 0x8016, 0xFB49,
+ 0x8027, 0xF9B8,
+ 0x803D, 0xF826,
+ 0x8058, 0xF695,
+ 0x8078, 0xF504,
+ 0x809D, 0xF374,
+ 0x80C7, 0xF1E4,
+ 0x80F6, 0xF054,
+ 0x812A, 0xEEC6,
+ 0x8162, 0xED37,
+ 0x81A0, 0xEBAA,
+ 0x81E2, 0xEA1D,
+ 0x8229, 0xE892,
+ 0x8275, 0xE707,
+ 0x82C6, 0xE57D,
+ 0x831C, 0xE3F4,
+ 0x8376, 0xE26C,
+ 0x83D6, 0xE0E6,
+ 0x843A, 0xDF60,
+ 0x84A2, 0xDDDC,
+ 0x8510, 0xDC59,
+ 0x8582, 0xDAD7,
+ 0x85FA, 0xD957,
+ 0x8675, 0xD7D9,
+ 0x86F6, 0xD65C,
+ 0x877B, 0xD4E0,
+ 0x8805, 0xD367,
+ 0x8893, 0xD1EE,
+ 0x8926, 0xD078,
+ 0x89BE, 0xCF04,
+ 0x8A5A, 0xCD91,
+ 0x8AFB, 0xCC21,
+ 0x8BA0, 0xCAB2,
+ 0x8C4A, 0xC945,
+ 0x8CF8, 0xC7DB,
+ 0x8DAA, 0xC673,
+ 0x8E61, 0xC50D,
+ 0x8F1D, 0xC3A9,
+ 0x8FDC, 0xC247,
+ 0x90A0, 0xC0E8,
+ 0x9169, 0xBF8C,
+ 0x9235, 0xBE31,
+ 0x9306, 0xBCDA,
+ 0x93DB, 0xBB85,
+ 0x94B5, 0xBA32,
+ 0x9592, 0xB8E3,
+ 0x9673, 0xB796,
+ 0x9759, 0xB64B,
+ 0x9842, 0xB504,
+ 0x9930, 0xB3C0,
+ 0x9A22, 0xB27E,
+ 0x9B17, 0xB140,
+ 0x9C10, 0xB004,
+ 0x9D0D, 0xAECC,
+ 0x9E0E, 0xAD96,
+ 0x9F13, 0xAC64,
+ 0xA01C, 0xAB35,
+ 0xA128, 0xAA0A,
+ 0xA238, 0xA8E2,
+ 0xA34B, 0xA7BD,
+ 0xA462, 0xA69B,
+ 0xA57D, 0xA57D,
+ 0xA69B, 0xA462,
+ 0xA7BD, 0xA34B,
+ 0xA8E2, 0xA238,
+ 0xAA0A, 0xA128,
+ 0xAB35, 0xA01C,
+ 0xAC64, 0x9F13,
+ 0xAD96, 0x9E0E,
+ 0xAECC, 0x9D0D,
+ 0xB004, 0x9C10,
+ 0xB140, 0x9B17,
+ 0xB27E, 0x9A22,
+ 0xB3C0, 0x9930,
+ 0xB504, 0x9842,
+ 0xB64B, 0x9759,
+ 0xB796, 0x9673,
+ 0xB8E3, 0x9592,
+ 0xBA32, 0x94B5,
+ 0xBB85, 0x93DB,
+ 0xBCDA, 0x9306,
+ 0xBE31, 0x9235,
+ 0xBF8C, 0x9169,
+ 0xC0E8, 0x90A0,
+ 0xC247, 0x8FDC,
+ 0xC3A9, 0x8F1D,
+ 0xC50D, 0x8E61,
+ 0xC673, 0x8DAA,
+ 0xC7DB, 0x8CF8,
+ 0xC945, 0x8C4A,
+ 0xCAB2, 0x8BA0,
+ 0xCC21, 0x8AFB,
+ 0xCD91, 0x8A5A,
+ 0xCF04, 0x89BE,
+ 0xD078, 0x8926,
+ 0xD1EE, 0x8893,
+ 0xD367, 0x8805,
+ 0xD4E0, 0x877B,
+ 0xD65C, 0x86F6,
+ 0xD7D9, 0x8675,
+ 0xD957, 0x85FA,
+ 0xDAD7, 0x8582,
+ 0xDC59, 0x8510,
+ 0xDDDC, 0x84A2,
+ 0xDF60, 0x843A,
+ 0xE0E6, 0x83D6,
+ 0xE26C, 0x8376,
+ 0xE3F4, 0x831C,
+ 0xE57D, 0x82C6,
+ 0xE707, 0x8275,
+ 0xE892, 0x8229,
+ 0xEA1D, 0x81E2,
+ 0xEBAA, 0x81A0,
+ 0xED37, 0x8162,
+ 0xEEC6, 0x812A,
+ 0xF054, 0x80F6,
+ 0xF1E4, 0x80C7,
+ 0xF374, 0x809D,
+ 0xF504, 0x8078,
+ 0xF695, 0x8058,
+ 0xF826, 0x803D,
+ 0xF9B8, 0x8027,
+ 0xFB49, 0x8016,
+ 0xFCDB, 0x8009,
+ 0xFE6D, 0x8002
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
* \par
* <pre>for(i = 0; i< 3N/4; i++)
* {
-* twiddleCoefQ15[2*i]= cos(i * 2*PI/(float)N);
-* twiddleCoefQ15[2*i+1]= sin(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 1024 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_1024_q15[1536] = {
+ 0x7FFF, 0x0000,
+ 0x7FFF, 0x00C9,
+ 0x7FFD, 0x0192,
+ 0x7FFA, 0x025B,
+ 0x7FF6, 0x0324,
+ 0x7FF0, 0x03ED,
+ 0x7FE9, 0x04B6,
+ 0x7FE1, 0x057F,
+ 0x7FD8, 0x0647,
+ 0x7FCE, 0x0710,
+ 0x7FC2, 0x07D9,
+ 0x7FB5, 0x08A2,
+ 0x7FA7, 0x096A,
+ 0x7F97, 0x0A33,
+ 0x7F87, 0x0AFB,
+ 0x7F75, 0x0BC3,
+ 0x7F62, 0x0C8B,
+ 0x7F4D, 0x0D53,
+ 0x7F38, 0x0E1B,
+ 0x7F21, 0x0EE3,
+ 0x7F09, 0x0FAB,
+ 0x7EF0, 0x1072,
+ 0x7ED5, 0x1139,
+ 0x7EBA, 0x1201,
+ 0x7E9D, 0x12C8,
+ 0x7E7F, 0x138E,
+ 0x7E5F, 0x1455,
+ 0x7E3F, 0x151B,
+ 0x7E1D, 0x15E2,
+ 0x7DFA, 0x16A8,
+ 0x7DD6, 0x176D,
+ 0x7DB0, 0x1833,
+ 0x7D8A, 0x18F8,
+ 0x7D62, 0x19BD,
+ 0x7D39, 0x1A82,
+ 0x7D0F, 0x1B47,
+ 0x7CE3, 0x1C0B,
+ 0x7CB7, 0x1CCF,
+ 0x7C89, 0x1D93,
+ 0x7C5A, 0x1E56,
+ 0x7C29, 0x1F19,
+ 0x7BF8, 0x1FDC,
+ 0x7BC5, 0x209F,
+ 0x7B92, 0x2161,
+ 0x7B5D, 0x2223,
+ 0x7B26, 0x22E5,
+ 0x7AEF, 0x23A6,
+ 0x7AB6, 0x2467,
+ 0x7A7D, 0x2528,
+ 0x7A42, 0x25E8,
+ 0x7A05, 0x26A8,
+ 0x79C8, 0x2767,
+ 0x798A, 0x2826,
+ 0x794A, 0x28E5,
+ 0x7909, 0x29A3,
+ 0x78C7, 0x2A61,
+ 0x7884, 0x2B1F,
+ 0x7840, 0x2BDC,
+ 0x77FA, 0x2C98,
+ 0x77B4, 0x2D55,
+ 0x776C, 0x2E11,
+ 0x7723, 0x2ECC,
+ 0x76D9, 0x2F87,
+ 0x768E, 0x3041,
+ 0x7641, 0x30FB,
+ 0x75F4, 0x31B5,
+ 0x75A5, 0x326E,
+ 0x7555, 0x3326,
+ 0x7504, 0x33DE,
+ 0x74B2, 0x3496,
+ 0x745F, 0x354D,
+ 0x740B, 0x3604,
+ 0x73B5, 0x36BA,
+ 0x735F, 0x376F,
+ 0x7307, 0x3824,
+ 0x72AF, 0x38D8,
+ 0x7255, 0x398C,
+ 0x71FA, 0x3A40,
+ 0x719E, 0x3AF2,
+ 0x7141, 0x3BA5,
+ 0x70E2, 0x3C56,
+ 0x7083, 0x3D07,
+ 0x7023, 0x3DB8,
+ 0x6FC1, 0x3E68,
+ 0x6F5F, 0x3F17,
+ 0x6EFB, 0x3FC5,
+ 0x6E96, 0x4073,
+ 0x6E30, 0x4121,
+ 0x6DCA, 0x41CE,
+ 0x6D62, 0x427A,
+ 0x6CF9, 0x4325,
+ 0x6C8F, 0x43D0,
+ 0x6C24, 0x447A,
+ 0x6BB8, 0x4524,
+ 0x6B4A, 0x45CD,
+ 0x6ADC, 0x4675,
+ 0x6A6D, 0x471C,
+ 0x69FD, 0x47C3,
+ 0x698C, 0x4869,
+ 0x6919, 0x490F,
+ 0x68A6, 0x49B4,
+ 0x6832, 0x4A58,
+ 0x67BD, 0x4AFB,
+ 0x6746, 0x4B9E,
+ 0x66CF, 0x4C3F,
+ 0x6657, 0x4CE1,
+ 0x65DD, 0x4D81,
+ 0x6563, 0x4E21,
+ 0x64E8, 0x4EBF,
+ 0x646C, 0x4F5E,
+ 0x63EF, 0x4FFB,
+ 0x6371, 0x5097,
+ 0x62F2, 0x5133,
+ 0x6271, 0x51CE,
+ 0x61F1, 0x5269,
+ 0x616F, 0x5302,
+ 0x60EC, 0x539B,
+ 0x6068, 0x5433,
+ 0x5FE3, 0x54CA,
+ 0x5F5E, 0x5560,
+ 0x5ED7, 0x55F5,
+ 0x5E50, 0x568A,
+ 0x5DC7, 0x571D,
+ 0x5D3E, 0x57B0,
+ 0x5CB4, 0x5842,
+ 0x5C29, 0x58D4,
+ 0x5B9D, 0x5964,
+ 0x5B10, 0x59F3,
+ 0x5A82, 0x5A82,
+ 0x59F3, 0x5B10,
+ 0x5964, 0x5B9D,
+ 0x58D4, 0x5C29,
+ 0x5842, 0x5CB4,
+ 0x57B0, 0x5D3E,
+ 0x571D, 0x5DC7,
+ 0x568A, 0x5E50,
+ 0x55F5, 0x5ED7,
+ 0x5560, 0x5F5E,
+ 0x54CA, 0x5FE3,
+ 0x5433, 0x6068,
+ 0x539B, 0x60EC,
+ 0x5302, 0x616F,
+ 0x5269, 0x61F1,
+ 0x51CE, 0x6271,
+ 0x5133, 0x62F2,
+ 0x5097, 0x6371,
+ 0x4FFB, 0x63EF,
+ 0x4F5E, 0x646C,
+ 0x4EBF, 0x64E8,
+ 0x4E21, 0x6563,
+ 0x4D81, 0x65DD,
+ 0x4CE1, 0x6657,
+ 0x4C3F, 0x66CF,
+ 0x4B9E, 0x6746,
+ 0x4AFB, 0x67BD,
+ 0x4A58, 0x6832,
+ 0x49B4, 0x68A6,
+ 0x490F, 0x6919,
+ 0x4869, 0x698C,
+ 0x47C3, 0x69FD,
+ 0x471C, 0x6A6D,
+ 0x4675, 0x6ADC,
+ 0x45CD, 0x6B4A,
+ 0x4524, 0x6BB8,
+ 0x447A, 0x6C24,
+ 0x43D0, 0x6C8F,
+ 0x4325, 0x6CF9,
+ 0x427A, 0x6D62,
+ 0x41CE, 0x6DCA,
+ 0x4121, 0x6E30,
+ 0x4073, 0x6E96,
+ 0x3FC5, 0x6EFB,
+ 0x3F17, 0x6F5F,
+ 0x3E68, 0x6FC1,
+ 0x3DB8, 0x7023,
+ 0x3D07, 0x7083,
+ 0x3C56, 0x70E2,
+ 0x3BA5, 0x7141,
+ 0x3AF2, 0x719E,
+ 0x3A40, 0x71FA,
+ 0x398C, 0x7255,
+ 0x38D8, 0x72AF,
+ 0x3824, 0x7307,
+ 0x376F, 0x735F,
+ 0x36BA, 0x73B5,
+ 0x3604, 0x740B,
+ 0x354D, 0x745F,
+ 0x3496, 0x74B2,
+ 0x33DE, 0x7504,
+ 0x3326, 0x7555,
+ 0x326E, 0x75A5,
+ 0x31B5, 0x75F4,
+ 0x30FB, 0x7641,
+ 0x3041, 0x768E,
+ 0x2F87, 0x76D9,
+ 0x2ECC, 0x7723,
+ 0x2E11, 0x776C,
+ 0x2D55, 0x77B4,
+ 0x2C98, 0x77FA,
+ 0x2BDC, 0x7840,
+ 0x2B1F, 0x7884,
+ 0x2A61, 0x78C7,
+ 0x29A3, 0x7909,
+ 0x28E5, 0x794A,
+ 0x2826, 0x798A,
+ 0x2767, 0x79C8,
+ 0x26A8, 0x7A05,
+ 0x25E8, 0x7A42,
+ 0x2528, 0x7A7D,
+ 0x2467, 0x7AB6,
+ 0x23A6, 0x7AEF,
+ 0x22E5, 0x7B26,
+ 0x2223, 0x7B5D,
+ 0x2161, 0x7B92,
+ 0x209F, 0x7BC5,
+ 0x1FDC, 0x7BF8,
+ 0x1F19, 0x7C29,
+ 0x1E56, 0x7C5A,
+ 0x1D93, 0x7C89,
+ 0x1CCF, 0x7CB7,
+ 0x1C0B, 0x7CE3,
+ 0x1B47, 0x7D0F,
+ 0x1A82, 0x7D39,
+ 0x19BD, 0x7D62,
+ 0x18F8, 0x7D8A,
+ 0x1833, 0x7DB0,
+ 0x176D, 0x7DD6,
+ 0x16A8, 0x7DFA,
+ 0x15E2, 0x7E1D,
+ 0x151B, 0x7E3F,
+ 0x1455, 0x7E5F,
+ 0x138E, 0x7E7F,
+ 0x12C8, 0x7E9D,
+ 0x1201, 0x7EBA,
+ 0x1139, 0x7ED5,
+ 0x1072, 0x7EF0,
+ 0x0FAB, 0x7F09,
+ 0x0EE3, 0x7F21,
+ 0x0E1B, 0x7F38,
+ 0x0D53, 0x7F4D,
+ 0x0C8B, 0x7F62,
+ 0x0BC3, 0x7F75,
+ 0x0AFB, 0x7F87,
+ 0x0A33, 0x7F97,
+ 0x096A, 0x7FA7,
+ 0x08A2, 0x7FB5,
+ 0x07D9, 0x7FC2,
+ 0x0710, 0x7FCE,
+ 0x0647, 0x7FD8,
+ 0x057F, 0x7FE1,
+ 0x04B6, 0x7FE9,
+ 0x03ED, 0x7FF0,
+ 0x0324, 0x7FF6,
+ 0x025B, 0x7FFA,
+ 0x0192, 0x7FFD,
+ 0x00C9, 0x7FFF,
+ 0x0000, 0x7FFF,
+ 0xFF36, 0x7FFF,
+ 0xFE6D, 0x7FFD,
+ 0xFDA4, 0x7FFA,
+ 0xFCDB, 0x7FF6,
+ 0xFC12, 0x7FF0,
+ 0xFB49, 0x7FE9,
+ 0xFA80, 0x7FE1,
+ 0xF9B8, 0x7FD8,
+ 0xF8EF, 0x7FCE,
+ 0xF826, 0x7FC2,
+ 0xF75D, 0x7FB5,
+ 0xF695, 0x7FA7,
+ 0xF5CC, 0x7F97,
+ 0xF504, 0x7F87,
+ 0xF43C, 0x7F75,
+ 0xF374, 0x7F62,
+ 0xF2AC, 0x7F4D,
+ 0xF1E4, 0x7F38,
+ 0xF11C, 0x7F21,
+ 0xF054, 0x7F09,
+ 0xEF8D, 0x7EF0,
+ 0xEEC6, 0x7ED5,
+ 0xEDFE, 0x7EBA,
+ 0xED37, 0x7E9D,
+ 0xEC71, 0x7E7F,
+ 0xEBAA, 0x7E5F,
+ 0xEAE4, 0x7E3F,
+ 0xEA1D, 0x7E1D,
+ 0xE957, 0x7DFA,
+ 0xE892, 0x7DD6,
+ 0xE7CC, 0x7DB0,
+ 0xE707, 0x7D8A,
+ 0xE642, 0x7D62,
+ 0xE57D, 0x7D39,
+ 0xE4B8, 0x7D0F,
+ 0xE3F4, 0x7CE3,
+ 0xE330, 0x7CB7,
+ 0xE26C, 0x7C89,
+ 0xE1A9, 0x7C5A,
+ 0xE0E6, 0x7C29,
+ 0xE023, 0x7BF8,
+ 0xDF60, 0x7BC5,
+ 0xDE9E, 0x7B92,
+ 0xDDDC, 0x7B5D,
+ 0xDD1A, 0x7B26,
+ 0xDC59, 0x7AEF,
+ 0xDB98, 0x7AB6,
+ 0xDAD7, 0x7A7D,
+ 0xDA17, 0x7A42,
+ 0xD957, 0x7A05,
+ 0xD898, 0x79C8,
+ 0xD7D9, 0x798A,
+ 0xD71A, 0x794A,
+ 0xD65C, 0x7909,
+ 0xD59E, 0x78C7,
+ 0xD4E0, 0x7884,
+ 0xD423, 0x7840,
+ 0xD367, 0x77FA,
+ 0xD2AA, 0x77B4,
+ 0xD1EE, 0x776C,
+ 0xD133, 0x7723,
+ 0xD078, 0x76D9,
+ 0xCFBE, 0x768E,
+ 0xCF04, 0x7641,
+ 0xCE4A, 0x75F4,
+ 0xCD91, 0x75A5,
+ 0xCCD9, 0x7555,
+ 0xCC21, 0x7504,
+ 0xCB69, 0x74B2,
+ 0xCAB2, 0x745F,
+ 0xC9FB, 0x740B,
+ 0xC945, 0x73B5,
+ 0xC890, 0x735F,
+ 0xC7DB, 0x7307,
+ 0xC727, 0x72AF,
+ 0xC673, 0x7255,
+ 0xC5BF, 0x71FA,
+ 0xC50D, 0x719E,
+ 0xC45A, 0x7141,
+ 0xC3A9, 0x70E2,
+ 0xC2F8, 0x7083,
+ 0xC247, 0x7023,
+ 0xC197, 0x6FC1,
+ 0xC0E8, 0x6F5F,
+ 0xC03A, 0x6EFB,
+ 0xBF8C, 0x6E96,
+ 0xBEDE, 0x6E30,
+ 0xBE31, 0x6DCA,
+ 0xBD85, 0x6D62,
+ 0xBCDA, 0x6CF9,
+ 0xBC2F, 0x6C8F,
+ 0xBB85, 0x6C24,
+ 0xBADB, 0x6BB8,
+ 0xBA32, 0x6B4A,
+ 0xB98A, 0x6ADC,
+ 0xB8E3, 0x6A6D,
+ 0xB83C, 0x69FD,
+ 0xB796, 0x698C,
+ 0xB6F0, 0x6919,
+ 0xB64B, 0x68A6,
+ 0xB5A7, 0x6832,
+ 0xB504, 0x67BD,
+ 0xB461, 0x6746,
+ 0xB3C0, 0x66CF,
+ 0xB31E, 0x6657,
+ 0xB27E, 0x65DD,
+ 0xB1DE, 0x6563,
+ 0xB140, 0x64E8,
+ 0xB0A1, 0x646C,
+ 0xB004, 0x63EF,
+ 0xAF68, 0x6371,
+ 0xAECC, 0x62F2,
+ 0xAE31, 0x6271,
+ 0xAD96, 0x61F1,
+ 0xACFD, 0x616F,
+ 0xAC64, 0x60EC,
+ 0xABCC, 0x6068,
+ 0xAB35, 0x5FE3,
+ 0xAA9F, 0x5F5E,
+ 0xAA0A, 0x5ED7,
+ 0xA975, 0x5E50,
+ 0xA8E2, 0x5DC7,
+ 0xA84F, 0x5D3E,
+ 0xA7BD, 0x5CB4,
+ 0xA72B, 0x5C29,
+ 0xA69B, 0x5B9D,
+ 0xA60C, 0x5B10,
+ 0xA57D, 0x5A82,
+ 0xA4EF, 0x59F3,
+ 0xA462, 0x5964,
+ 0xA3D6, 0x58D4,
+ 0xA34B, 0x5842,
+ 0xA2C1, 0x57B0,
+ 0xA238, 0x571D,
+ 0xA1AF, 0x568A,
+ 0xA128, 0x55F5,
+ 0xA0A1, 0x5560,
+ 0xA01C, 0x54CA,
+ 0x9F97, 0x5433,
+ 0x9F13, 0x539B,
+ 0x9E90, 0x5302,
+ 0x9E0E, 0x5269,
+ 0x9D8E, 0x51CE,
+ 0x9D0D, 0x5133,
+ 0x9C8E, 0x5097,
+ 0x9C10, 0x4FFB,
+ 0x9B93, 0x4F5E,
+ 0x9B17, 0x4EBF,
+ 0x9A9C, 0x4E21,
+ 0x9A22, 0x4D81,
+ 0x99A8, 0x4CE1,
+ 0x9930, 0x4C3F,
+ 0x98B9, 0x4B9E,
+ 0x9842, 0x4AFB,
+ 0x97CD, 0x4A58,
+ 0x9759, 0x49B4,
+ 0x96E6, 0x490F,
+ 0x9673, 0x4869,
+ 0x9602, 0x47C3,
+ 0x9592, 0x471C,
+ 0x9523, 0x4675,
+ 0x94B5, 0x45CD,
+ 0x9447, 0x4524,
+ 0x93DB, 0x447A,
+ 0x9370, 0x43D0,
+ 0x9306, 0x4325,
+ 0x929D, 0x427A,
+ 0x9235, 0x41CE,
+ 0x91CF, 0x4121,
+ 0x9169, 0x4073,
+ 0x9104, 0x3FC5,
+ 0x90A0, 0x3F17,
+ 0x903E, 0x3E68,
+ 0x8FDC, 0x3DB8,
+ 0x8F7C, 0x3D07,
+ 0x8F1D, 0x3C56,
+ 0x8EBE, 0x3BA5,
+ 0x8E61, 0x3AF2,
+ 0x8E05, 0x3A40,
+ 0x8DAA, 0x398C,
+ 0x8D50, 0x38D8,
+ 0x8CF8, 0x3824,
+ 0x8CA0, 0x376F,
+ 0x8C4A, 0x36BA,
+ 0x8BF4, 0x3604,
+ 0x8BA0, 0x354D,
+ 0x8B4D, 0x3496,
+ 0x8AFB, 0x33DE,
+ 0x8AAA, 0x3326,
+ 0x8A5A, 0x326E,
+ 0x8A0B, 0x31B5,
+ 0x89BE, 0x30FB,
+ 0x8971, 0x3041,
+ 0x8926, 0x2F87,
+ 0x88DC, 0x2ECC,
+ 0x8893, 0x2E11,
+ 0x884B, 0x2D55,
+ 0x8805, 0x2C98,
+ 0x87BF, 0x2BDC,
+ 0x877B, 0x2B1F,
+ 0x8738, 0x2A61,
+ 0x86F6, 0x29A3,
+ 0x86B5, 0x28E5,
+ 0x8675, 0x2826,
+ 0x8637, 0x2767,
+ 0x85FA, 0x26A8,
+ 0x85BD, 0x25E8,
+ 0x8582, 0x2528,
+ 0x8549, 0x2467,
+ 0x8510, 0x23A6,
+ 0x84D9, 0x22E5,
+ 0x84A2, 0x2223,
+ 0x846D, 0x2161,
+ 0x843A, 0x209F,
+ 0x8407, 0x1FDC,
+ 0x83D6, 0x1F19,
+ 0x83A5, 0x1E56,
+ 0x8376, 0x1D93,
+ 0x8348, 0x1CCF,
+ 0x831C, 0x1C0B,
+ 0x82F0, 0x1B47,
+ 0x82C6, 0x1A82,
+ 0x829D, 0x19BD,
+ 0x8275, 0x18F8,
+ 0x824F, 0x1833,
+ 0x8229, 0x176D,
+ 0x8205, 0x16A8,
+ 0x81E2, 0x15E2,
+ 0x81C0, 0x151B,
+ 0x81A0, 0x1455,
+ 0x8180, 0x138E,
+ 0x8162, 0x12C8,
+ 0x8145, 0x1201,
+ 0x812A, 0x1139,
+ 0x810F, 0x1072,
+ 0x80F6, 0x0FAB,
+ 0x80DE, 0x0EE3,
+ 0x80C7, 0x0E1B,
+ 0x80B2, 0x0D53,
+ 0x809D, 0x0C8B,
+ 0x808A, 0x0BC3,
+ 0x8078, 0x0AFB,
+ 0x8068, 0x0A33,
+ 0x8058, 0x096A,
+ 0x804A, 0x08A2,
+ 0x803D, 0x07D9,
+ 0x8031, 0x0710,
+ 0x8027, 0x0647,
+ 0x801E, 0x057F,
+ 0x8016, 0x04B6,
+ 0x800F, 0x03ED,
+ 0x8009, 0x0324,
+ 0x8005, 0x025B,
+ 0x8002, 0x0192,
+ 0x8000, 0x00C9,
+ 0x8000, 0x0000,
+ 0x8000, 0xFF36,
+ 0x8002, 0xFE6D,
+ 0x8005, 0xFDA4,
+ 0x8009, 0xFCDB,
+ 0x800F, 0xFC12,
+ 0x8016, 0xFB49,
+ 0x801E, 0xFA80,
+ 0x8027, 0xF9B8,
+ 0x8031, 0xF8EF,
+ 0x803D, 0xF826,
+ 0x804A, 0xF75D,
+ 0x8058, 0xF695,
+ 0x8068, 0xF5CC,
+ 0x8078, 0xF504,
+ 0x808A, 0xF43C,
+ 0x809D, 0xF374,
+ 0x80B2, 0xF2AC,
+ 0x80C7, 0xF1E4,
+ 0x80DE, 0xF11C,
+ 0x80F6, 0xF054,
+ 0x810F, 0xEF8D,
+ 0x812A, 0xEEC6,
+ 0x8145, 0xEDFE,
+ 0x8162, 0xED37,
+ 0x8180, 0xEC71,
+ 0x81A0, 0xEBAA,
+ 0x81C0, 0xEAE4,
+ 0x81E2, 0xEA1D,
+ 0x8205, 0xE957,
+ 0x8229, 0xE892,
+ 0x824F, 0xE7CC,
+ 0x8275, 0xE707,
+ 0x829D, 0xE642,
+ 0x82C6, 0xE57D,
+ 0x82F0, 0xE4B8,
+ 0x831C, 0xE3F4,
+ 0x8348, 0xE330,
+ 0x8376, 0xE26C,
+ 0x83A5, 0xE1A9,
+ 0x83D6, 0xE0E6,
+ 0x8407, 0xE023,
+ 0x843A, 0xDF60,
+ 0x846D, 0xDE9E,
+ 0x84A2, 0xDDDC,
+ 0x84D9, 0xDD1A,
+ 0x8510, 0xDC59,
+ 0x8549, 0xDB98,
+ 0x8582, 0xDAD7,
+ 0x85BD, 0xDA17,
+ 0x85FA, 0xD957,
+ 0x8637, 0xD898,
+ 0x8675, 0xD7D9,
+ 0x86B5, 0xD71A,
+ 0x86F6, 0xD65C,
+ 0x8738, 0xD59E,
+ 0x877B, 0xD4E0,
+ 0x87BF, 0xD423,
+ 0x8805, 0xD367,
+ 0x884B, 0xD2AA,
+ 0x8893, 0xD1EE,
+ 0x88DC, 0xD133,
+ 0x8926, 0xD078,
+ 0x8971, 0xCFBE,
+ 0x89BE, 0xCF04,
+ 0x8A0B, 0xCE4A,
+ 0x8A5A, 0xCD91,
+ 0x8AAA, 0xCCD9,
+ 0x8AFB, 0xCC21,
+ 0x8B4D, 0xCB69,
+ 0x8BA0, 0xCAB2,
+ 0x8BF4, 0xC9FB,
+ 0x8C4A, 0xC945,
+ 0x8CA0, 0xC890,
+ 0x8CF8, 0xC7DB,
+ 0x8D50, 0xC727,
+ 0x8DAA, 0xC673,
+ 0x8E05, 0xC5BF,
+ 0x8E61, 0xC50D,
+ 0x8EBE, 0xC45A,
+ 0x8F1D, 0xC3A9,
+ 0x8F7C, 0xC2F8,
+ 0x8FDC, 0xC247,
+ 0x903E, 0xC197,
+ 0x90A0, 0xC0E8,
+ 0x9104, 0xC03A,
+ 0x9169, 0xBF8C,
+ 0x91CF, 0xBEDE,
+ 0x9235, 0xBE31,
+ 0x929D, 0xBD85,
+ 0x9306, 0xBCDA,
+ 0x9370, 0xBC2F,
+ 0x93DB, 0xBB85,
+ 0x9447, 0xBADB,
+ 0x94B5, 0xBA32,
+ 0x9523, 0xB98A,
+ 0x9592, 0xB8E3,
+ 0x9602, 0xB83C,
+ 0x9673, 0xB796,
+ 0x96E6, 0xB6F0,
+ 0x9759, 0xB64B,
+ 0x97CD, 0xB5A7,
+ 0x9842, 0xB504,
+ 0x98B9, 0xB461,
+ 0x9930, 0xB3C0,
+ 0x99A8, 0xB31E,
+ 0x9A22, 0xB27E,
+ 0x9A9C, 0xB1DE,
+ 0x9B17, 0xB140,
+ 0x9B93, 0xB0A1,
+ 0x9C10, 0xB004,
+ 0x9C8E, 0xAF68,
+ 0x9D0D, 0xAECC,
+ 0x9D8E, 0xAE31,
+ 0x9E0E, 0xAD96,
+ 0x9E90, 0xACFD,
+ 0x9F13, 0xAC64,
+ 0x9F97, 0xABCC,
+ 0xA01C, 0xAB35,
+ 0xA0A1, 0xAA9F,
+ 0xA128, 0xAA0A,
+ 0xA1AF, 0xA975,
+ 0xA238, 0xA8E2,
+ 0xA2C1, 0xA84F,
+ 0xA34B, 0xA7BD,
+ 0xA3D6, 0xA72B,
+ 0xA462, 0xA69B,
+ 0xA4EF, 0xA60C,
+ 0xA57D, 0xA57D,
+ 0xA60C, 0xA4EF,
+ 0xA69B, 0xA462,
+ 0xA72B, 0xA3D6,
+ 0xA7BD, 0xA34B,
+ 0xA84F, 0xA2C1,
+ 0xA8E2, 0xA238,
+ 0xA975, 0xA1AF,
+ 0xAA0A, 0xA128,
+ 0xAA9F, 0xA0A1,
+ 0xAB35, 0xA01C,
+ 0xABCC, 0x9F97,
+ 0xAC64, 0x9F13,
+ 0xACFD, 0x9E90,
+ 0xAD96, 0x9E0E,
+ 0xAE31, 0x9D8E,
+ 0xAECC, 0x9D0D,
+ 0xAF68, 0x9C8E,
+ 0xB004, 0x9C10,
+ 0xB0A1, 0x9B93,
+ 0xB140, 0x9B17,
+ 0xB1DE, 0x9A9C,
+ 0xB27E, 0x9A22,
+ 0xB31E, 0x99A8,
+ 0xB3C0, 0x9930,
+ 0xB461, 0x98B9,
+ 0xB504, 0x9842,
+ 0xB5A7, 0x97CD,
+ 0xB64B, 0x9759,
+ 0xB6F0, 0x96E6,
+ 0xB796, 0x9673,
+ 0xB83C, 0x9602,
+ 0xB8E3, 0x9592,
+ 0xB98A, 0x9523,
+ 0xBA32, 0x94B5,
+ 0xBADB, 0x9447,
+ 0xBB85, 0x93DB,
+ 0xBC2F, 0x9370,
+ 0xBCDA, 0x9306,
+ 0xBD85, 0x929D,
+ 0xBE31, 0x9235,
+ 0xBEDE, 0x91CF,
+ 0xBF8C, 0x9169,
+ 0xC03A, 0x9104,
+ 0xC0E8, 0x90A0,
+ 0xC197, 0x903E,
+ 0xC247, 0x8FDC,
+ 0xC2F8, 0x8F7C,
+ 0xC3A9, 0x8F1D,
+ 0xC45A, 0x8EBE,
+ 0xC50D, 0x8E61,
+ 0xC5BF, 0x8E05,
+ 0xC673, 0x8DAA,
+ 0xC727, 0x8D50,
+ 0xC7DB, 0x8CF8,
+ 0xC890, 0x8CA0,
+ 0xC945, 0x8C4A,
+ 0xC9FB, 0x8BF4,
+ 0xCAB2, 0x8BA0,
+ 0xCB69, 0x8B4D,
+ 0xCC21, 0x8AFB,
+ 0xCCD9, 0x8AAA,
+ 0xCD91, 0x8A5A,
+ 0xCE4A, 0x8A0B,
+ 0xCF04, 0x89BE,
+ 0xCFBE, 0x8971,
+ 0xD078, 0x8926,
+ 0xD133, 0x88DC,
+ 0xD1EE, 0x8893,
+ 0xD2AA, 0x884B,
+ 0xD367, 0x8805,
+ 0xD423, 0x87BF,
+ 0xD4E0, 0x877B,
+ 0xD59E, 0x8738,
+ 0xD65C, 0x86F6,
+ 0xD71A, 0x86B5,
+ 0xD7D9, 0x8675,
+ 0xD898, 0x8637,
+ 0xD957, 0x85FA,
+ 0xDA17, 0x85BD,
+ 0xDAD7, 0x8582,
+ 0xDB98, 0x8549,
+ 0xDC59, 0x8510,
+ 0xDD1A, 0x84D9,
+ 0xDDDC, 0x84A2,
+ 0xDE9E, 0x846D,
+ 0xDF60, 0x843A,
+ 0xE023, 0x8407,
+ 0xE0E6, 0x83D6,
+ 0xE1A9, 0x83A5,
+ 0xE26C, 0x8376,
+ 0xE330, 0x8348,
+ 0xE3F4, 0x831C,
+ 0xE4B8, 0x82F0,
+ 0xE57D, 0x82C6,
+ 0xE642, 0x829D,
+ 0xE707, 0x8275,
+ 0xE7CC, 0x824F,
+ 0xE892, 0x8229,
+ 0xE957, 0x8205,
+ 0xEA1D, 0x81E2,
+ 0xEAE4, 0x81C0,
+ 0xEBAA, 0x81A0,
+ 0xEC71, 0x8180,
+ 0xED37, 0x8162,
+ 0xEDFE, 0x8145,
+ 0xEEC6, 0x812A,
+ 0xEF8D, 0x810F,
+ 0xF054, 0x80F6,
+ 0xF11C, 0x80DE,
+ 0xF1E4, 0x80C7,
+ 0xF2AC, 0x80B2,
+ 0xF374, 0x809D,
+ 0xF43C, 0x808A,
+ 0xF504, 0x8078,
+ 0xF5CC, 0x8068,
+ 0xF695, 0x8058,
+ 0xF75D, 0x804A,
+ 0xF826, 0x803D,
+ 0xF8EF, 0x8031,
+ 0xF9B8, 0x8027,
+ 0xFA80, 0x801E,
+ 0xFB49, 0x8016,
+ 0xFC12, 0x800F,
+ 0xFCDB, 0x8009,
+ 0xFDA4, 0x8005,
+ 0xFE6D, 0x8002,
+ 0xFF36, 0x8000
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } </pre>
+* \par
+* where N = 2048 and PI = 3.14159265358979
+* \par
+* Cos and Sin values are interleaved fashion
+* \par
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
+*
+*/
+const q15_t twiddleCoef_2048_q15[3072] = {
+ 0x7FFF, 0x0000,
+ 0x7FFF, 0x0064,
+ 0x7FFF, 0x00C9,
+ 0x7FFE, 0x012D,
+ 0x7FFD, 0x0192,
+ 0x7FFC, 0x01F6,
+ 0x7FFA, 0x025B,
+ 0x7FF8, 0x02BF,
+ 0x7FF6, 0x0324,
+ 0x7FF3, 0x0388,
+ 0x7FF0, 0x03ED,
+ 0x7FED, 0x0451,
+ 0x7FE9, 0x04B6,
+ 0x7FE5, 0x051A,
+ 0x7FE1, 0x057F,
+ 0x7FDD, 0x05E3,
+ 0x7FD8, 0x0647,
+ 0x7FD3, 0x06AC,
+ 0x7FCE, 0x0710,
+ 0x7FC8, 0x0775,
+ 0x7FC2, 0x07D9,
+ 0x7FBC, 0x083D,
+ 0x7FB5, 0x08A2,
+ 0x7FAE, 0x0906,
+ 0x7FA7, 0x096A,
+ 0x7F9F, 0x09CE,
+ 0x7F97, 0x0A33,
+ 0x7F8F, 0x0A97,
+ 0x7F87, 0x0AFB,
+ 0x7F7E, 0x0B5F,
+ 0x7F75, 0x0BC3,
+ 0x7F6B, 0x0C27,
+ 0x7F62, 0x0C8B,
+ 0x7F58, 0x0CEF,
+ 0x7F4D, 0x0D53,
+ 0x7F43, 0x0DB7,
+ 0x7F38, 0x0E1B,
+ 0x7F2D, 0x0E7F,
+ 0x7F21, 0x0EE3,
+ 0x7F15, 0x0F47,
+ 0x7F09, 0x0FAB,
+ 0x7EFD, 0x100E,
+ 0x7EF0, 0x1072,
+ 0x7EE3, 0x10D6,
+ 0x7ED5, 0x1139,
+ 0x7EC8, 0x119D,
+ 0x7EBA, 0x1201,
+ 0x7EAB, 0x1264,
+ 0x7E9D, 0x12C8,
+ 0x7E8E, 0x132B,
+ 0x7E7F, 0x138E,
+ 0x7E6F, 0x13F2,
+ 0x7E5F, 0x1455,
+ 0x7E4F, 0x14B8,
+ 0x7E3F, 0x151B,
+ 0x7E2E, 0x157F,
+ 0x7E1D, 0x15E2,
+ 0x7E0C, 0x1645,
+ 0x7DFA, 0x16A8,
+ 0x7DE8, 0x170A,
+ 0x7DD6, 0x176D,
+ 0x7DC3, 0x17D0,
+ 0x7DB0, 0x1833,
+ 0x7D9D, 0x1896,
+ 0x7D8A, 0x18F8,
+ 0x7D76, 0x195B,
+ 0x7D62, 0x19BD,
+ 0x7D4E, 0x1A20,
+ 0x7D39, 0x1A82,
+ 0x7D24, 0x1AE4,
+ 0x7D0F, 0x1B47,
+ 0x7CF9, 0x1BA9,
+ 0x7CE3, 0x1C0B,
+ 0x7CCD, 0x1C6D,
+ 0x7CB7, 0x1CCF,
+ 0x7CA0, 0x1D31,
+ 0x7C89, 0x1D93,
+ 0x7C71, 0x1DF5,
+ 0x7C5A, 0x1E56,
+ 0x7C42, 0x1EB8,
+ 0x7C29, 0x1F19,
+ 0x7C11, 0x1F7B,
+ 0x7BF8, 0x1FDC,
+ 0x7BDF, 0x203E,
+ 0x7BC5, 0x209F,
+ 0x7BAC, 0x2100,
+ 0x7B92, 0x2161,
+ 0x7B77, 0x21C2,
+ 0x7B5D, 0x2223,
+ 0x7B42, 0x2284,
+ 0x7B26, 0x22E5,
+ 0x7B0B, 0x2345,
+ 0x7AEF, 0x23A6,
+ 0x7AD3, 0x2407,
+ 0x7AB6, 0x2467,
+ 0x7A9A, 0x24C7,
+ 0x7A7D, 0x2528,
+ 0x7A5F, 0x2588,
+ 0x7A42, 0x25E8,
+ 0x7A24, 0x2648,
+ 0x7A05, 0x26A8,
+ 0x79E7, 0x2707,
+ 0x79C8, 0x2767,
+ 0x79A9, 0x27C7,
+ 0x798A, 0x2826,
+ 0x796A, 0x2886,
+ 0x794A, 0x28E5,
+ 0x792A, 0x2944,
+ 0x7909, 0x29A3,
+ 0x78E8, 0x2A02,
+ 0x78C7, 0x2A61,
+ 0x78A6, 0x2AC0,
+ 0x7884, 0x2B1F,
+ 0x7862, 0x2B7D,
+ 0x7840, 0x2BDC,
+ 0x781D, 0x2C3A,
+ 0x77FA, 0x2C98,
+ 0x77D7, 0x2CF7,
+ 0x77B4, 0x2D55,
+ 0x7790, 0x2DB3,
+ 0x776C, 0x2E11,
+ 0x7747, 0x2E6E,
+ 0x7723, 0x2ECC,
+ 0x76FE, 0x2F29,
+ 0x76D9, 0x2F87,
+ 0x76B3, 0x2FE4,
+ 0x768E, 0x3041,
+ 0x7668, 0x309E,
+ 0x7641, 0x30FB,
+ 0x761B, 0x3158,
+ 0x75F4, 0x31B5,
+ 0x75CC, 0x3211,
+ 0x75A5, 0x326E,
+ 0x757D, 0x32CA,
+ 0x7555, 0x3326,
+ 0x752D, 0x3382,
+ 0x7504, 0x33DE,
+ 0x74DB, 0x343A,
+ 0x74B2, 0x3496,
+ 0x7489, 0x34F2,
+ 0x745F, 0x354D,
+ 0x7435, 0x35A8,
+ 0x740B, 0x3604,
+ 0x73E0, 0x365F,
+ 0x73B5, 0x36BA,
+ 0x738A, 0x3714,
+ 0x735F, 0x376F,
+ 0x7333, 0x37CA,
+ 0x7307, 0x3824,
+ 0x72DB, 0x387E,
+ 0x72AF, 0x38D8,
+ 0x7282, 0x3932,
+ 0x7255, 0x398C,
+ 0x7227, 0x39E6,
+ 0x71FA, 0x3A40,
+ 0x71CC, 0x3A99,
+ 0x719E, 0x3AF2,
+ 0x716F, 0x3B4C,
+ 0x7141, 0x3BA5,
+ 0x7112, 0x3BFD,
+ 0x70E2, 0x3C56,
+ 0x70B3, 0x3CAF,
+ 0x7083, 0x3D07,
+ 0x7053, 0x3D60,
+ 0x7023, 0x3DB8,
+ 0x6FF2, 0x3E10,
+ 0x6FC1, 0x3E68,
+ 0x6F90, 0x3EBF,
+ 0x6F5F, 0x3F17,
+ 0x6F2D, 0x3F6E,
+ 0x6EFB, 0x3FC5,
+ 0x6EC9, 0x401D,
+ 0x6E96, 0x4073,
+ 0x6E63, 0x40CA,
+ 0x6E30, 0x4121,
+ 0x6DFD, 0x4177,
+ 0x6DCA, 0x41CE,
+ 0x6D96, 0x4224,
+ 0x6D62, 0x427A,
+ 0x6D2D, 0x42D0,
+ 0x6CF9, 0x4325,
+ 0x6CC4, 0x437B,
+ 0x6C8F, 0x43D0,
+ 0x6C59, 0x4425,
+ 0x6C24, 0x447A,
+ 0x6BEE, 0x44CF,
+ 0x6BB8, 0x4524,
+ 0x6B81, 0x4578,
+ 0x6B4A, 0x45CD,
+ 0x6B13, 0x4621,
+ 0x6ADC, 0x4675,
+ 0x6AA5, 0x46C9,
+ 0x6A6D, 0x471C,
+ 0x6A35, 0x4770,
+ 0x69FD, 0x47C3,
+ 0x69C4, 0x4816,
+ 0x698C, 0x4869,
+ 0x6953, 0x48BC,
+ 0x6919, 0x490F,
+ 0x68E0, 0x4961,
+ 0x68A6, 0x49B4,
+ 0x686C, 0x4A06,
+ 0x6832, 0x4A58,
+ 0x67F7, 0x4AA9,
+ 0x67BD, 0x4AFB,
+ 0x6782, 0x4B4C,
+ 0x6746, 0x4B9E,
+ 0x670B, 0x4BEF,
+ 0x66CF, 0x4C3F,
+ 0x6693, 0x4C90,
+ 0x6657, 0x4CE1,
+ 0x661A, 0x4D31,
+ 0x65DD, 0x4D81,
+ 0x65A0, 0x4DD1,
+ 0x6563, 0x4E21,
+ 0x6526, 0x4E70,
+ 0x64E8, 0x4EBF,
+ 0x64AA, 0x4F0F,
+ 0x646C, 0x4F5E,
+ 0x642D, 0x4FAC,
+ 0x63EF, 0x4FFB,
+ 0x63B0, 0x5049,
+ 0x6371, 0x5097,
+ 0x6331, 0x50E5,
+ 0x62F2, 0x5133,
+ 0x62B2, 0x5181,
+ 0x6271, 0x51CE,
+ 0x6231, 0x521C,
+ 0x61F1, 0x5269,
+ 0x61B0, 0x52B5,
+ 0x616F, 0x5302,
+ 0x612D, 0x534E,
+ 0x60EC, 0x539B,
+ 0x60AA, 0x53E7,
+ 0x6068, 0x5433,
+ 0x6026, 0x547E,
+ 0x5FE3, 0x54CA,
+ 0x5FA0, 0x5515,
+ 0x5F5E, 0x5560,
+ 0x5F1A, 0x55AB,
+ 0x5ED7, 0x55F5,
+ 0x5E93, 0x5640,
+ 0x5E50, 0x568A,
+ 0x5E0B, 0x56D4,
+ 0x5DC7, 0x571D,
+ 0x5D83, 0x5767,
+ 0x5D3E, 0x57B0,
+ 0x5CF9, 0x57F9,
+ 0x5CB4, 0x5842,
+ 0x5C6E, 0x588B,
+ 0x5C29, 0x58D4,
+ 0x5BE3, 0x591C,
+ 0x5B9D, 0x5964,
+ 0x5B56, 0x59AC,
+ 0x5B10, 0x59F3,
+ 0x5AC9, 0x5A3B,
+ 0x5A82, 0x5A82,
+ 0x5A3B, 0x5AC9,
+ 0x59F3, 0x5B10,
+ 0x59AC, 0x5B56,
+ 0x5964, 0x5B9D,
+ 0x591C, 0x5BE3,
+ 0x58D4, 0x5C29,
+ 0x588B, 0x5C6E,
+ 0x5842, 0x5CB4,
+ 0x57F9, 0x5CF9,
+ 0x57B0, 0x5D3E,
+ 0x5767, 0x5D83,
+ 0x571D, 0x5DC7,
+ 0x56D4, 0x5E0B,
+ 0x568A, 0x5E50,
+ 0x5640, 0x5E93,
+ 0x55F5, 0x5ED7,
+ 0x55AB, 0x5F1A,
+ 0x5560, 0x5F5E,
+ 0x5515, 0x5FA0,
+ 0x54CA, 0x5FE3,
+ 0x547E, 0x6026,
+ 0x5433, 0x6068,
+ 0x53E7, 0x60AA,
+ 0x539B, 0x60EC,
+ 0x534E, 0x612D,
+ 0x5302, 0x616F,
+ 0x52B5, 0x61B0,
+ 0x5269, 0x61F1,
+ 0x521C, 0x6231,
+ 0x51CE, 0x6271,
+ 0x5181, 0x62B2,
+ 0x5133, 0x62F2,
+ 0x50E5, 0x6331,
+ 0x5097, 0x6371,
+ 0x5049, 0x63B0,
+ 0x4FFB, 0x63EF,
+ 0x4FAC, 0x642D,
+ 0x4F5E, 0x646C,
+ 0x4F0F, 0x64AA,
+ 0x4EBF, 0x64E8,
+ 0x4E70, 0x6526,
+ 0x4E21, 0x6563,
+ 0x4DD1, 0x65A0,
+ 0x4D81, 0x65DD,
+ 0x4D31, 0x661A,
+ 0x4CE1, 0x6657,
+ 0x4C90, 0x6693,
+ 0x4C3F, 0x66CF,
+ 0x4BEF, 0x670B,
+ 0x4B9E, 0x6746,
+ 0x4B4C, 0x6782,
+ 0x4AFB, 0x67BD,
+ 0x4AA9, 0x67F7,
+ 0x4A58, 0x6832,
+ 0x4A06, 0x686C,
+ 0x49B4, 0x68A6,
+ 0x4961, 0x68E0,
+ 0x490F, 0x6919,
+ 0x48BC, 0x6953,
+ 0x4869, 0x698C,
+ 0x4816, 0x69C4,
+ 0x47C3, 0x69FD,
+ 0x4770, 0x6A35,
+ 0x471C, 0x6A6D,
+ 0x46C9, 0x6AA5,
+ 0x4675, 0x6ADC,
+ 0x4621, 0x6B13,
+ 0x45CD, 0x6B4A,
+ 0x4578, 0x6B81,
+ 0x4524, 0x6BB8,
+ 0x44CF, 0x6BEE,
+ 0x447A, 0x6C24,
+ 0x4425, 0x6C59,
+ 0x43D0, 0x6C8F,
+ 0x437B, 0x6CC4,
+ 0x4325, 0x6CF9,
+ 0x42D0, 0x6D2D,
+ 0x427A, 0x6D62,
+ 0x4224, 0x6D96,
+ 0x41CE, 0x6DCA,
+ 0x4177, 0x6DFD,
+ 0x4121, 0x6E30,
+ 0x40CA, 0x6E63,
+ 0x4073, 0x6E96,
+ 0x401D, 0x6EC9,
+ 0x3FC5, 0x6EFB,
+ 0x3F6E, 0x6F2D,
+ 0x3F17, 0x6F5F,
+ 0x3EBF, 0x6F90,
+ 0x3E68, 0x6FC1,
+ 0x3E10, 0x6FF2,
+ 0x3DB8, 0x7023,
+ 0x3D60, 0x7053,
+ 0x3D07, 0x7083,
+ 0x3CAF, 0x70B3,
+ 0x3C56, 0x70E2,
+ 0x3BFD, 0x7112,
+ 0x3BA5, 0x7141,
+ 0x3B4C, 0x716F,
+ 0x3AF2, 0x719E,
+ 0x3A99, 0x71CC,
+ 0x3A40, 0x71FA,
+ 0x39E6, 0x7227,
+ 0x398C, 0x7255,
+ 0x3932, 0x7282,
+ 0x38D8, 0x72AF,
+ 0x387E, 0x72DB,
+ 0x3824, 0x7307,
+ 0x37CA, 0x7333,
+ 0x376F, 0x735F,
+ 0x3714, 0x738A,
+ 0x36BA, 0x73B5,
+ 0x365F, 0x73E0,
+ 0x3604, 0x740B,
+ 0x35A8, 0x7435,
+ 0x354D, 0x745F,
+ 0x34F2, 0x7489,
+ 0x3496, 0x74B2,
+ 0x343A, 0x74DB,
+ 0x33DE, 0x7504,
+ 0x3382, 0x752D,
+ 0x3326, 0x7555,
+ 0x32CA, 0x757D,
+ 0x326E, 0x75A5,
+ 0x3211, 0x75CC,
+ 0x31B5, 0x75F4,
+ 0x3158, 0x761B,
+ 0x30FB, 0x7641,
+ 0x309E, 0x7668,
+ 0x3041, 0x768E,
+ 0x2FE4, 0x76B3,
+ 0x2F87, 0x76D9,
+ 0x2F29, 0x76FE,
+ 0x2ECC, 0x7723,
+ 0x2E6E, 0x7747,
+ 0x2E11, 0x776C,
+ 0x2DB3, 0x7790,
+ 0x2D55, 0x77B4,
+ 0x2CF7, 0x77D7,
+ 0x2C98, 0x77FA,
+ 0x2C3A, 0x781D,
+ 0x2BDC, 0x7840,
+ 0x2B7D, 0x7862,
+ 0x2B1F, 0x7884,
+ 0x2AC0, 0x78A6,
+ 0x2A61, 0x78C7,
+ 0x2A02, 0x78E8,
+ 0x29A3, 0x7909,
+ 0x2944, 0x792A,
+ 0x28E5, 0x794A,
+ 0x2886, 0x796A,
+ 0x2826, 0x798A,
+ 0x27C7, 0x79A9,
+ 0x2767, 0x79C8,
+ 0x2707, 0x79E7,
+ 0x26A8, 0x7A05,
+ 0x2648, 0x7A24,
+ 0x25E8, 0x7A42,
+ 0x2588, 0x7A5F,
+ 0x2528, 0x7A7D,
+ 0x24C7, 0x7A9A,
+ 0x2467, 0x7AB6,
+ 0x2407, 0x7AD3,
+ 0x23A6, 0x7AEF,
+ 0x2345, 0x7B0B,
+ 0x22E5, 0x7B26,
+ 0x2284, 0x7B42,
+ 0x2223, 0x7B5D,
+ 0x21C2, 0x7B77,
+ 0x2161, 0x7B92,
+ 0x2100, 0x7BAC,
+ 0x209F, 0x7BC5,
+ 0x203E, 0x7BDF,
+ 0x1FDC, 0x7BF8,
+ 0x1F7B, 0x7C11,
+ 0x1F19, 0x7C29,
+ 0x1EB8, 0x7C42,
+ 0x1E56, 0x7C5A,
+ 0x1DF5, 0x7C71,
+ 0x1D93, 0x7C89,
+ 0x1D31, 0x7CA0,
+ 0x1CCF, 0x7CB7,
+ 0x1C6D, 0x7CCD,
+ 0x1C0B, 0x7CE3,
+ 0x1BA9, 0x7CF9,
+ 0x1B47, 0x7D0F,
+ 0x1AE4, 0x7D24,
+ 0x1A82, 0x7D39,
+ 0x1A20, 0x7D4E,
+ 0x19BD, 0x7D62,
+ 0x195B, 0x7D76,
+ 0x18F8, 0x7D8A,
+ 0x1896, 0x7D9D,
+ 0x1833, 0x7DB0,
+ 0x17D0, 0x7DC3,
+ 0x176D, 0x7DD6,
+ 0x170A, 0x7DE8,
+ 0x16A8, 0x7DFA,
+ 0x1645, 0x7E0C,
+ 0x15E2, 0x7E1D,
+ 0x157F, 0x7E2E,
+ 0x151B, 0x7E3F,
+ 0x14B8, 0x7E4F,
+ 0x1455, 0x7E5F,
+ 0x13F2, 0x7E6F,
+ 0x138E, 0x7E7F,
+ 0x132B, 0x7E8E,
+ 0x12C8, 0x7E9D,
+ 0x1264, 0x7EAB,
+ 0x1201, 0x7EBA,
+ 0x119D, 0x7EC8,
+ 0x1139, 0x7ED5,
+ 0x10D6, 0x7EE3,
+ 0x1072, 0x7EF0,
+ 0x100E, 0x7EFD,
+ 0x0FAB, 0x7F09,
+ 0x0F47, 0x7F15,
+ 0x0EE3, 0x7F21,
+ 0x0E7F, 0x7F2D,
+ 0x0E1B, 0x7F38,
+ 0x0DB7, 0x7F43,
+ 0x0D53, 0x7F4D,
+ 0x0CEF, 0x7F58,
+ 0x0C8B, 0x7F62,
+ 0x0C27, 0x7F6B,
+ 0x0BC3, 0x7F75,
+ 0x0B5F, 0x7F7E,
+ 0x0AFB, 0x7F87,
+ 0x0A97, 0x7F8F,
+ 0x0A33, 0x7F97,
+ 0x09CE, 0x7F9F,
+ 0x096A, 0x7FA7,
+ 0x0906, 0x7FAE,
+ 0x08A2, 0x7FB5,
+ 0x083D, 0x7FBC,
+ 0x07D9, 0x7FC2,
+ 0x0775, 0x7FC8,
+ 0x0710, 0x7FCE,
+ 0x06AC, 0x7FD3,
+ 0x0647, 0x7FD8,
+ 0x05E3, 0x7FDD,
+ 0x057F, 0x7FE1,
+ 0x051A, 0x7FE5,
+ 0x04B6, 0x7FE9,
+ 0x0451, 0x7FED,
+ 0x03ED, 0x7FF0,
+ 0x0388, 0x7FF3,
+ 0x0324, 0x7FF6,
+ 0x02BF, 0x7FF8,
+ 0x025B, 0x7FFA,
+ 0x01F6, 0x7FFC,
+ 0x0192, 0x7FFD,
+ 0x012D, 0x7FFE,
+ 0x00C9, 0x7FFF,
+ 0x0064, 0x7FFF,
+ 0x0000, 0x7FFF,
+ 0xFF9B, 0x7FFF,
+ 0xFF36, 0x7FFF,
+ 0xFED2, 0x7FFE,
+ 0xFE6D, 0x7FFD,
+ 0xFE09, 0x7FFC,
+ 0xFDA4, 0x7FFA,
+ 0xFD40, 0x7FF8,
+ 0xFCDB, 0x7FF6,
+ 0xFC77, 0x7FF3,
+ 0xFC12, 0x7FF0,
+ 0xFBAE, 0x7FED,
+ 0xFB49, 0x7FE9,
+ 0xFAE5, 0x7FE5,
+ 0xFA80, 0x7FE1,
+ 0xFA1C, 0x7FDD,
+ 0xF9B8, 0x7FD8,
+ 0xF953, 0x7FD3,
+ 0xF8EF, 0x7FCE,
+ 0xF88A, 0x7FC8,
+ 0xF826, 0x7FC2,
+ 0xF7C2, 0x7FBC,
+ 0xF75D, 0x7FB5,
+ 0xF6F9, 0x7FAE,
+ 0xF695, 0x7FA7,
+ 0xF631, 0x7F9F,
+ 0xF5CC, 0x7F97,
+ 0xF568, 0x7F8F,
+ 0xF504, 0x7F87,
+ 0xF4A0, 0x7F7E,
+ 0xF43C, 0x7F75,
+ 0xF3D8, 0x7F6B,
+ 0xF374, 0x7F62,
+ 0xF310, 0x7F58,
+ 0xF2AC, 0x7F4D,
+ 0xF248, 0x7F43,
+ 0xF1E4, 0x7F38,
+ 0xF180, 0x7F2D,
+ 0xF11C, 0x7F21,
+ 0xF0B8, 0x7F15,
+ 0xF054, 0x7F09,
+ 0xEFF1, 0x7EFD,
+ 0xEF8D, 0x7EF0,
+ 0xEF29, 0x7EE3,
+ 0xEEC6, 0x7ED5,
+ 0xEE62, 0x7EC8,
+ 0xEDFE, 0x7EBA,
+ 0xED9B, 0x7EAB,
+ 0xED37, 0x7E9D,
+ 0xECD4, 0x7E8E,
+ 0xEC71, 0x7E7F,
+ 0xEC0D, 0x7E6F,
+ 0xEBAA, 0x7E5F,
+ 0xEB47, 0x7E4F,
+ 0xEAE4, 0x7E3F,
+ 0xEA80, 0x7E2E,
+ 0xEA1D, 0x7E1D,
+ 0xE9BA, 0x7E0C,
+ 0xE957, 0x7DFA,
+ 0xE8F5, 0x7DE8,
+ 0xE892, 0x7DD6,
+ 0xE82F, 0x7DC3,
+ 0xE7CC, 0x7DB0,
+ 0xE769, 0x7D9D,
+ 0xE707, 0x7D8A,
+ 0xE6A4, 0x7D76,
+ 0xE642, 0x7D62,
+ 0xE5DF, 0x7D4E,
+ 0xE57D, 0x7D39,
+ 0xE51B, 0x7D24,
+ 0xE4B8, 0x7D0F,
+ 0xE456, 0x7CF9,
+ 0xE3F4, 0x7CE3,
+ 0xE392, 0x7CCD,
+ 0xE330, 0x7CB7,
+ 0xE2CE, 0x7CA0,
+ 0xE26C, 0x7C89,
+ 0xE20A, 0x7C71,
+ 0xE1A9, 0x7C5A,
+ 0xE147, 0x7C42,
+ 0xE0E6, 0x7C29,
+ 0xE084, 0x7C11,
+ 0xE023, 0x7BF8,
+ 0xDFC1, 0x7BDF,
+ 0xDF60, 0x7BC5,
+ 0xDEFF, 0x7BAC,
+ 0xDE9E, 0x7B92,
+ 0xDE3D, 0x7B77,
+ 0xDDDC, 0x7B5D,
+ 0xDD7B, 0x7B42,
+ 0xDD1A, 0x7B26,
+ 0xDCBA, 0x7B0B,
+ 0xDC59, 0x7AEF,
+ 0xDBF8, 0x7AD3,
+ 0xDB98, 0x7AB6,
+ 0xDB38, 0x7A9A,
+ 0xDAD7, 0x7A7D,
+ 0xDA77, 0x7A5F,
+ 0xDA17, 0x7A42,
+ 0xD9B7, 0x7A24,
+ 0xD957, 0x7A05,
+ 0xD8F8, 0x79E7,
+ 0xD898, 0x79C8,
+ 0xD838, 0x79A9,
+ 0xD7D9, 0x798A,
+ 0xD779, 0x796A,
+ 0xD71A, 0x794A,
+ 0xD6BB, 0x792A,
+ 0xD65C, 0x7909,
+ 0xD5FD, 0x78E8,
+ 0xD59E, 0x78C7,
+ 0xD53F, 0x78A6,
+ 0xD4E0, 0x7884,
+ 0xD482, 0x7862,
+ 0xD423, 0x7840,
+ 0xD3C5, 0x781D,
+ 0xD367, 0x77FA,
+ 0xD308, 0x77D7,
+ 0xD2AA, 0x77B4,
+ 0xD24C, 0x7790,
+ 0xD1EE, 0x776C,
+ 0xD191, 0x7747,
+ 0xD133, 0x7723,
+ 0xD0D6, 0x76FE,
+ 0xD078, 0x76D9,
+ 0xD01B, 0x76B3,
+ 0xCFBE, 0x768E,
+ 0xCF61, 0x7668,
+ 0xCF04, 0x7641,
+ 0xCEA7, 0x761B,
+ 0xCE4A, 0x75F4,
+ 0xCDEE, 0x75CC,
+ 0xCD91, 0x75A5,
+ 0xCD35, 0x757D,
+ 0xCCD9, 0x7555,
+ 0xCC7D, 0x752D,
+ 0xCC21, 0x7504,
+ 0xCBC5, 0x74DB,
+ 0xCB69, 0x74B2,
+ 0xCB0D, 0x7489,
+ 0xCAB2, 0x745F,
+ 0xCA57, 0x7435,
+ 0xC9FB, 0x740B,
+ 0xC9A0, 0x73E0,
+ 0xC945, 0x73B5,
+ 0xC8EB, 0x738A,
+ 0xC890, 0x735F,
+ 0xC835, 0x7333,
+ 0xC7DB, 0x7307,
+ 0xC781, 0x72DB,
+ 0xC727, 0x72AF,
+ 0xC6CD, 0x7282,
+ 0xC673, 0x7255,
+ 0xC619, 0x7227,
+ 0xC5BF, 0x71FA,
+ 0xC566, 0x71CC,
+ 0xC50D, 0x719E,
+ 0xC4B3, 0x716F,
+ 0xC45A, 0x7141,
+ 0xC402, 0x7112,
+ 0xC3A9, 0x70E2,
+ 0xC350, 0x70B3,
+ 0xC2F8, 0x7083,
+ 0xC29F, 0x7053,
+ 0xC247, 0x7023,
+ 0xC1EF, 0x6FF2,
+ 0xC197, 0x6FC1,
+ 0xC140, 0x6F90,
+ 0xC0E8, 0x6F5F,
+ 0xC091, 0x6F2D,
+ 0xC03A, 0x6EFB,
+ 0xBFE2, 0x6EC9,
+ 0xBF8C, 0x6E96,
+ 0xBF35, 0x6E63,
+ 0xBEDE, 0x6E30,
+ 0xBE88, 0x6DFD,
+ 0xBE31, 0x6DCA,
+ 0xBDDB, 0x6D96,
+ 0xBD85, 0x6D62,
+ 0xBD2F, 0x6D2D,
+ 0xBCDA, 0x6CF9,
+ 0xBC84, 0x6CC4,
+ 0xBC2F, 0x6C8F,
+ 0xBBDA, 0x6C59,
+ 0xBB85, 0x6C24,
+ 0xBB30, 0x6BEE,
+ 0xBADB, 0x6BB8,
+ 0xBA87, 0x6B81,
+ 0xBA32, 0x6B4A,
+ 0xB9DE, 0x6B13,
+ 0xB98A, 0x6ADC,
+ 0xB936, 0x6AA5,
+ 0xB8E3, 0x6A6D,
+ 0xB88F, 0x6A35,
+ 0xB83C, 0x69FD,
+ 0xB7E9, 0x69C4,
+ 0xB796, 0x698C,
+ 0xB743, 0x6953,
+ 0xB6F0, 0x6919,
+ 0xB69E, 0x68E0,
+ 0xB64B, 0x68A6,
+ 0xB5F9, 0x686C,
+ 0xB5A7, 0x6832,
+ 0xB556, 0x67F7,
+ 0xB504, 0x67BD,
+ 0xB4B3, 0x6782,
+ 0xB461, 0x6746,
+ 0xB410, 0x670B,
+ 0xB3C0, 0x66CF,
+ 0xB36F, 0x6693,
+ 0xB31E, 0x6657,
+ 0xB2CE, 0x661A,
+ 0xB27E, 0x65DD,
+ 0xB22E, 0x65A0,
+ 0xB1DE, 0x6563,
+ 0xB18F, 0x6526,
+ 0xB140, 0x64E8,
+ 0xB0F0, 0x64AA,
+ 0xB0A1, 0x646C,
+ 0xB053, 0x642D,
+ 0xB004, 0x63EF,
+ 0xAFB6, 0x63B0,
+ 0xAF68, 0x6371,
+ 0xAF1A, 0x6331,
+ 0xAECC, 0x62F2,
+ 0xAE7E, 0x62B2,
+ 0xAE31, 0x6271,
+ 0xADE3, 0x6231,
+ 0xAD96, 0x61F1,
+ 0xAD4A, 0x61B0,
+ 0xACFD, 0x616F,
+ 0xACB1, 0x612D,
+ 0xAC64, 0x60EC,
+ 0xAC18, 0x60AA,
+ 0xABCC, 0x6068,
+ 0xAB81, 0x6026,
+ 0xAB35, 0x5FE3,
+ 0xAAEA, 0x5FA0,
+ 0xAA9F, 0x5F5E,
+ 0xAA54, 0x5F1A,
+ 0xAA0A, 0x5ED7,
+ 0xA9BF, 0x5E93,
+ 0xA975, 0x5E50,
+ 0xA92B, 0x5E0B,
+ 0xA8E2, 0x5DC7,
+ 0xA898, 0x5D83,
+ 0xA84F, 0x5D3E,
+ 0xA806, 0x5CF9,
+ 0xA7BD, 0x5CB4,
+ 0xA774, 0x5C6E,
+ 0xA72B, 0x5C29,
+ 0xA6E3, 0x5BE3,
+ 0xA69B, 0x5B9D,
+ 0xA653, 0x5B56,
+ 0xA60C, 0x5B10,
+ 0xA5C4, 0x5AC9,
+ 0xA57D, 0x5A82,
+ 0xA536, 0x5A3B,
+ 0xA4EF, 0x59F3,
+ 0xA4A9, 0x59AC,
+ 0xA462, 0x5964,
+ 0xA41C, 0x591C,
+ 0xA3D6, 0x58D4,
+ 0xA391, 0x588B,
+ 0xA34B, 0x5842,
+ 0xA306, 0x57F9,
+ 0xA2C1, 0x57B0,
+ 0xA27C, 0x5767,
+ 0xA238, 0x571D,
+ 0xA1F4, 0x56D4,
+ 0xA1AF, 0x568A,
+ 0xA16C, 0x5640,
+ 0xA128, 0x55F5,
+ 0xA0E5, 0x55AB,
+ 0xA0A1, 0x5560,
+ 0xA05F, 0x5515,
+ 0xA01C, 0x54CA,
+ 0x9FD9, 0x547E,
+ 0x9F97, 0x5433,
+ 0x9F55, 0x53E7,
+ 0x9F13, 0x539B,
+ 0x9ED2, 0x534E,
+ 0x9E90, 0x5302,
+ 0x9E4F, 0x52B5,
+ 0x9E0E, 0x5269,
+ 0x9DCE, 0x521C,
+ 0x9D8E, 0x51CE,
+ 0x9D4D, 0x5181,
+ 0x9D0D, 0x5133,
+ 0x9CCE, 0x50E5,
+ 0x9C8E, 0x5097,
+ 0x9C4F, 0x5049,
+ 0x9C10, 0x4FFB,
+ 0x9BD2, 0x4FAC,
+ 0x9B93, 0x4F5E,
+ 0x9B55, 0x4F0F,
+ 0x9B17, 0x4EBF,
+ 0x9AD9, 0x4E70,
+ 0x9A9C, 0x4E21,
+ 0x9A5F, 0x4DD1,
+ 0x9A22, 0x4D81,
+ 0x99E5, 0x4D31,
+ 0x99A8, 0x4CE1,
+ 0x996C, 0x4C90,
+ 0x9930, 0x4C3F,
+ 0x98F4, 0x4BEF,
+ 0x98B9, 0x4B9E,
+ 0x987D, 0x4B4C,
+ 0x9842, 0x4AFB,
+ 0x9808, 0x4AA9,
+ 0x97CD, 0x4A58,
+ 0x9793, 0x4A06,
+ 0x9759, 0x49B4,
+ 0x971F, 0x4961,
+ 0x96E6, 0x490F,
+ 0x96AC, 0x48BC,
+ 0x9673, 0x4869,
+ 0x963B, 0x4816,
+ 0x9602, 0x47C3,
+ 0x95CA, 0x4770,
+ 0x9592, 0x471C,
+ 0x955A, 0x46C9,
+ 0x9523, 0x4675,
+ 0x94EC, 0x4621,
+ 0x94B5, 0x45CD,
+ 0x947E, 0x4578,
+ 0x9447, 0x4524,
+ 0x9411, 0x44CF,
+ 0x93DB, 0x447A,
+ 0x93A6, 0x4425,
+ 0x9370, 0x43D0,
+ 0x933B, 0x437B,
+ 0x9306, 0x4325,
+ 0x92D2, 0x42D0,
+ 0x929D, 0x427A,
+ 0x9269, 0x4224,
+ 0x9235, 0x41CE,
+ 0x9202, 0x4177,
+ 0x91CF, 0x4121,
+ 0x919C, 0x40CA,
+ 0x9169, 0x4073,
+ 0x9136, 0x401D,
+ 0x9104, 0x3FC5,
+ 0x90D2, 0x3F6E,
+ 0x90A0, 0x3F17,
+ 0x906F, 0x3EBF,
+ 0x903E, 0x3E68,
+ 0x900D, 0x3E10,
+ 0x8FDC, 0x3DB8,
+ 0x8FAC, 0x3D60,
+ 0x8F7C, 0x3D07,
+ 0x8F4C, 0x3CAF,
+ 0x8F1D, 0x3C56,
+ 0x8EED, 0x3BFD,
+ 0x8EBE, 0x3BA5,
+ 0x8E90, 0x3B4C,
+ 0x8E61, 0x3AF2,
+ 0x8E33, 0x3A99,
+ 0x8E05, 0x3A40,
+ 0x8DD8, 0x39E6,
+ 0x8DAA, 0x398C,
+ 0x8D7D, 0x3932,
+ 0x8D50, 0x38D8,
+ 0x8D24, 0x387E,
+ 0x8CF8, 0x3824,
+ 0x8CCC, 0x37CA,
+ 0x8CA0, 0x376F,
+ 0x8C75, 0x3714,
+ 0x8C4A, 0x36BA,
+ 0x8C1F, 0x365F,
+ 0x8BF4, 0x3604,
+ 0x8BCA, 0x35A8,
+ 0x8BA0, 0x354D,
+ 0x8B76, 0x34F2,
+ 0x8B4D, 0x3496,
+ 0x8B24, 0x343A,
+ 0x8AFB, 0x33DE,
+ 0x8AD2, 0x3382,
+ 0x8AAA, 0x3326,
+ 0x8A82, 0x32CA,
+ 0x8A5A, 0x326E,
+ 0x8A33, 0x3211,
+ 0x8A0B, 0x31B5,
+ 0x89E4, 0x3158,
+ 0x89BE, 0x30FB,
+ 0x8997, 0x309E,
+ 0x8971, 0x3041,
+ 0x894C, 0x2FE4,
+ 0x8926, 0x2F87,
+ 0x8901, 0x2F29,
+ 0x88DC, 0x2ECC,
+ 0x88B8, 0x2E6E,
+ 0x8893, 0x2E11,
+ 0x886F, 0x2DB3,
+ 0x884B, 0x2D55,
+ 0x8828, 0x2CF7,
+ 0x8805, 0x2C98,
+ 0x87E2, 0x2C3A,
+ 0x87BF, 0x2BDC,
+ 0x879D, 0x2B7D,
+ 0x877B, 0x2B1F,
+ 0x8759, 0x2AC0,
+ 0x8738, 0x2A61,
+ 0x8717, 0x2A02,
+ 0x86F6, 0x29A3,
+ 0x86D5, 0x2944,
+ 0x86B5, 0x28E5,
+ 0x8695, 0x2886,
+ 0x8675, 0x2826,
+ 0x8656, 0x27C7,
+ 0x8637, 0x2767,
+ 0x8618, 0x2707,
+ 0x85FA, 0x26A8,
+ 0x85DB, 0x2648,
+ 0x85BD, 0x25E8,
+ 0x85A0, 0x2588,
+ 0x8582, 0x2528,
+ 0x8565, 0x24C7,
+ 0x8549, 0x2467,
+ 0x852C, 0x2407,
+ 0x8510, 0x23A6,
+ 0x84F4, 0x2345,
+ 0x84D9, 0x22E5,
+ 0x84BD, 0x2284,
+ 0x84A2, 0x2223,
+ 0x8488, 0x21C2,
+ 0x846D, 0x2161,
+ 0x8453, 0x2100,
+ 0x843A, 0x209F,
+ 0x8420, 0x203E,
+ 0x8407, 0x1FDC,
+ 0x83EE, 0x1F7B,
+ 0x83D6, 0x1F19,
+ 0x83BD, 0x1EB8,
+ 0x83A5, 0x1E56,
+ 0x838E, 0x1DF5,
+ 0x8376, 0x1D93,
+ 0x835F, 0x1D31,
+ 0x8348, 0x1CCF,
+ 0x8332, 0x1C6D,
+ 0x831C, 0x1C0B,
+ 0x8306, 0x1BA9,
+ 0x82F0, 0x1B47,
+ 0x82DB, 0x1AE4,
+ 0x82C6, 0x1A82,
+ 0x82B1, 0x1A20,
+ 0x829D, 0x19BD,
+ 0x8289, 0x195B,
+ 0x8275, 0x18F8,
+ 0x8262, 0x1896,
+ 0x824F, 0x1833,
+ 0x823C, 0x17D0,
+ 0x8229, 0x176D,
+ 0x8217, 0x170A,
+ 0x8205, 0x16A8,
+ 0x81F3, 0x1645,
+ 0x81E2, 0x15E2,
+ 0x81D1, 0x157F,
+ 0x81C0, 0x151B,
+ 0x81B0, 0x14B8,
+ 0x81A0, 0x1455,
+ 0x8190, 0x13F2,
+ 0x8180, 0x138E,
+ 0x8171, 0x132B,
+ 0x8162, 0x12C8,
+ 0x8154, 0x1264,
+ 0x8145, 0x1201,
+ 0x8137, 0x119D,
+ 0x812A, 0x1139,
+ 0x811C, 0x10D6,
+ 0x810F, 0x1072,
+ 0x8102, 0x100E,
+ 0x80F6, 0x0FAB,
+ 0x80EA, 0x0F47,
+ 0x80DE, 0x0EE3,
+ 0x80D2, 0x0E7F,
+ 0x80C7, 0x0E1B,
+ 0x80BC, 0x0DB7,
+ 0x80B2, 0x0D53,
+ 0x80A7, 0x0CEF,
+ 0x809D, 0x0C8B,
+ 0x8094, 0x0C27,
+ 0x808A, 0x0BC3,
+ 0x8081, 0x0B5F,
+ 0x8078, 0x0AFB,
+ 0x8070, 0x0A97,
+ 0x8068, 0x0A33,
+ 0x8060, 0x09CE,
+ 0x8058, 0x096A,
+ 0x8051, 0x0906,
+ 0x804A, 0x08A2,
+ 0x8043, 0x083D,
+ 0x803D, 0x07D9,
+ 0x8037, 0x0775,
+ 0x8031, 0x0710,
+ 0x802C, 0x06AC,
+ 0x8027, 0x0647,
+ 0x8022, 0x05E3,
+ 0x801E, 0x057F,
+ 0x801A, 0x051A,
+ 0x8016, 0x04B6,
+ 0x8012, 0x0451,
+ 0x800F, 0x03ED,
+ 0x800C, 0x0388,
+ 0x8009, 0x0324,
+ 0x8007, 0x02BF,
+ 0x8005, 0x025B,
+ 0x8003, 0x01F6,
+ 0x8002, 0x0192,
+ 0x8001, 0x012D,
+ 0x8000, 0x00C9,
+ 0x8000, 0x0064,
+ 0x8000, 0x0000,
+ 0x8000, 0xFF9B,
+ 0x8000, 0xFF36,
+ 0x8001, 0xFED2,
+ 0x8002, 0xFE6D,
+ 0x8003, 0xFE09,
+ 0x8005, 0xFDA4,
+ 0x8007, 0xFD40,
+ 0x8009, 0xFCDB,
+ 0x800C, 0xFC77,
+ 0x800F, 0xFC12,
+ 0x8012, 0xFBAE,
+ 0x8016, 0xFB49,
+ 0x801A, 0xFAE5,
+ 0x801E, 0xFA80,
+ 0x8022, 0xFA1C,
+ 0x8027, 0xF9B8,
+ 0x802C, 0xF953,
+ 0x8031, 0xF8EF,
+ 0x8037, 0xF88A,
+ 0x803D, 0xF826,
+ 0x8043, 0xF7C2,
+ 0x804A, 0xF75D,
+ 0x8051, 0xF6F9,
+ 0x8058, 0xF695,
+ 0x8060, 0xF631,
+ 0x8068, 0xF5CC,
+ 0x8070, 0xF568,
+ 0x8078, 0xF504,
+ 0x8081, 0xF4A0,
+ 0x808A, 0xF43C,
+ 0x8094, 0xF3D8,
+ 0x809D, 0xF374,
+ 0x80A7, 0xF310,
+ 0x80B2, 0xF2AC,
+ 0x80BC, 0xF248,
+ 0x80C7, 0xF1E4,
+ 0x80D2, 0xF180,
+ 0x80DE, 0xF11C,
+ 0x80EA, 0xF0B8,
+ 0x80F6, 0xF054,
+ 0x8102, 0xEFF1,
+ 0x810F, 0xEF8D,
+ 0x811C, 0xEF29,
+ 0x812A, 0xEEC6,
+ 0x8137, 0xEE62,
+ 0x8145, 0xEDFE,
+ 0x8154, 0xED9B,
+ 0x8162, 0xED37,
+ 0x8171, 0xECD4,
+ 0x8180, 0xEC71,
+ 0x8190, 0xEC0D,
+ 0x81A0, 0xEBAA,
+ 0x81B0, 0xEB47,
+ 0x81C0, 0xEAE4,
+ 0x81D1, 0xEA80,
+ 0x81E2, 0xEA1D,
+ 0x81F3, 0xE9BA,
+ 0x8205, 0xE957,
+ 0x8217, 0xE8F5,
+ 0x8229, 0xE892,
+ 0x823C, 0xE82F,
+ 0x824F, 0xE7CC,
+ 0x8262, 0xE769,
+ 0x8275, 0xE707,
+ 0x8289, 0xE6A4,
+ 0x829D, 0xE642,
+ 0x82B1, 0xE5DF,
+ 0x82C6, 0xE57D,
+ 0x82DB, 0xE51B,
+ 0x82F0, 0xE4B8,
+ 0x8306, 0xE456,
+ 0x831C, 0xE3F4,
+ 0x8332, 0xE392,
+ 0x8348, 0xE330,
+ 0x835F, 0xE2CE,
+ 0x8376, 0xE26C,
+ 0x838E, 0xE20A,
+ 0x83A5, 0xE1A9,
+ 0x83BD, 0xE147,
+ 0x83D6, 0xE0E6,
+ 0x83EE, 0xE084,
+ 0x8407, 0xE023,
+ 0x8420, 0xDFC1,
+ 0x843A, 0xDF60,
+ 0x8453, 0xDEFF,
+ 0x846D, 0xDE9E,
+ 0x8488, 0xDE3D,
+ 0x84A2, 0xDDDC,
+ 0x84BD, 0xDD7B,
+ 0x84D9, 0xDD1A,
+ 0x84F4, 0xDCBA,
+ 0x8510, 0xDC59,
+ 0x852C, 0xDBF8,
+ 0x8549, 0xDB98,
+ 0x8565, 0xDB38,
+ 0x8582, 0xDAD7,
+ 0x85A0, 0xDA77,
+ 0x85BD, 0xDA17,
+ 0x85DB, 0xD9B7,
+ 0x85FA, 0xD957,
+ 0x8618, 0xD8F8,
+ 0x8637, 0xD898,
+ 0x8656, 0xD838,
+ 0x8675, 0xD7D9,
+ 0x8695, 0xD779,
+ 0x86B5, 0xD71A,
+ 0x86D5, 0xD6BB,
+ 0x86F6, 0xD65C,
+ 0x8717, 0xD5FD,
+ 0x8738, 0xD59E,
+ 0x8759, 0xD53F,
+ 0x877B, 0xD4E0,
+ 0x879D, 0xD482,
+ 0x87BF, 0xD423,
+ 0x87E2, 0xD3C5,
+ 0x8805, 0xD367,
+ 0x8828, 0xD308,
+ 0x884B, 0xD2AA,
+ 0x886F, 0xD24C,
+ 0x8893, 0xD1EE,
+ 0x88B8, 0xD191,
+ 0x88DC, 0xD133,
+ 0x8901, 0xD0D6,
+ 0x8926, 0xD078,
+ 0x894C, 0xD01B,
+ 0x8971, 0xCFBE,
+ 0x8997, 0xCF61,
+ 0x89BE, 0xCF04,
+ 0x89E4, 0xCEA7,
+ 0x8A0B, 0xCE4A,
+ 0x8A33, 0xCDEE,
+ 0x8A5A, 0xCD91,
+ 0x8A82, 0xCD35,
+ 0x8AAA, 0xCCD9,
+ 0x8AD2, 0xCC7D,
+ 0x8AFB, 0xCC21,
+ 0x8B24, 0xCBC5,
+ 0x8B4D, 0xCB69,
+ 0x8B76, 0xCB0D,
+ 0x8BA0, 0xCAB2,
+ 0x8BCA, 0xCA57,
+ 0x8BF4, 0xC9FB,
+ 0x8C1F, 0xC9A0,
+ 0x8C4A, 0xC945,
+ 0x8C75, 0xC8EB,
+ 0x8CA0, 0xC890,
+ 0x8CCC, 0xC835,
+ 0x8CF8, 0xC7DB,
+ 0x8D24, 0xC781,
+ 0x8D50, 0xC727,
+ 0x8D7D, 0xC6CD,
+ 0x8DAA, 0xC673,
+ 0x8DD8, 0xC619,
+ 0x8E05, 0xC5BF,
+ 0x8E33, 0xC566,
+ 0x8E61, 0xC50D,
+ 0x8E90, 0xC4B3,
+ 0x8EBE, 0xC45A,
+ 0x8EED, 0xC402,
+ 0x8F1D, 0xC3A9,
+ 0x8F4C, 0xC350,
+ 0x8F7C, 0xC2F8,
+ 0x8FAC, 0xC29F,
+ 0x8FDC, 0xC247,
+ 0x900D, 0xC1EF,
+ 0x903E, 0xC197,
+ 0x906F, 0xC140,
+ 0x90A0, 0xC0E8,
+ 0x90D2, 0xC091,
+ 0x9104, 0xC03A,
+ 0x9136, 0xBFE2,
+ 0x9169, 0xBF8C,
+ 0x919C, 0xBF35,
+ 0x91CF, 0xBEDE,
+ 0x9202, 0xBE88,
+ 0x9235, 0xBE31,
+ 0x9269, 0xBDDB,
+ 0x929D, 0xBD85,
+ 0x92D2, 0xBD2F,
+ 0x9306, 0xBCDA,
+ 0x933B, 0xBC84,
+ 0x9370, 0xBC2F,
+ 0x93A6, 0xBBDA,
+ 0x93DB, 0xBB85,
+ 0x9411, 0xBB30,
+ 0x9447, 0xBADB,
+ 0x947E, 0xBA87,
+ 0x94B5, 0xBA32,
+ 0x94EC, 0xB9DE,
+ 0x9523, 0xB98A,
+ 0x955A, 0xB936,
+ 0x9592, 0xB8E3,
+ 0x95CA, 0xB88F,
+ 0x9602, 0xB83C,
+ 0x963B, 0xB7E9,
+ 0x9673, 0xB796,
+ 0x96AC, 0xB743,
+ 0x96E6, 0xB6F0,
+ 0x971F, 0xB69E,
+ 0x9759, 0xB64B,
+ 0x9793, 0xB5F9,
+ 0x97CD, 0xB5A7,
+ 0x9808, 0xB556,
+ 0x9842, 0xB504,
+ 0x987D, 0xB4B3,
+ 0x98B9, 0xB461,
+ 0x98F4, 0xB410,
+ 0x9930, 0xB3C0,
+ 0x996C, 0xB36F,
+ 0x99A8, 0xB31E,
+ 0x99E5, 0xB2CE,
+ 0x9A22, 0xB27E,
+ 0x9A5F, 0xB22E,
+ 0x9A9C, 0xB1DE,
+ 0x9AD9, 0xB18F,
+ 0x9B17, 0xB140,
+ 0x9B55, 0xB0F0,
+ 0x9B93, 0xB0A1,
+ 0x9BD2, 0xB053,
+ 0x9C10, 0xB004,
+ 0x9C4F, 0xAFB6,
+ 0x9C8E, 0xAF68,
+ 0x9CCE, 0xAF1A,
+ 0x9D0D, 0xAECC,
+ 0x9D4D, 0xAE7E,
+ 0x9D8E, 0xAE31,
+ 0x9DCE, 0xADE3,
+ 0x9E0E, 0xAD96,
+ 0x9E4F, 0xAD4A,
+ 0x9E90, 0xACFD,
+ 0x9ED2, 0xACB1,
+ 0x9F13, 0xAC64,
+ 0x9F55, 0xAC18,
+ 0x9F97, 0xABCC,
+ 0x9FD9, 0xAB81,
+ 0xA01C, 0xAB35,
+ 0xA05F, 0xAAEA,
+ 0xA0A1, 0xAA9F,
+ 0xA0E5, 0xAA54,
+ 0xA128, 0xAA0A,
+ 0xA16C, 0xA9BF,
+ 0xA1AF, 0xA975,
+ 0xA1F4, 0xA92B,
+ 0xA238, 0xA8E2,
+ 0xA27C, 0xA898,
+ 0xA2C1, 0xA84F,
+ 0xA306, 0xA806,
+ 0xA34B, 0xA7BD,
+ 0xA391, 0xA774,
+ 0xA3D6, 0xA72B,
+ 0xA41C, 0xA6E3,
+ 0xA462, 0xA69B,
+ 0xA4A9, 0xA653,
+ 0xA4EF, 0xA60C,
+ 0xA536, 0xA5C4,
+ 0xA57D, 0xA57D,
+ 0xA5C4, 0xA536,
+ 0xA60C, 0xA4EF,
+ 0xA653, 0xA4A9,
+ 0xA69B, 0xA462,
+ 0xA6E3, 0xA41C,
+ 0xA72B, 0xA3D6,
+ 0xA774, 0xA391,
+ 0xA7BD, 0xA34B,
+ 0xA806, 0xA306,
+ 0xA84F, 0xA2C1,
+ 0xA898, 0xA27C,
+ 0xA8E2, 0xA238,
+ 0xA92B, 0xA1F4,
+ 0xA975, 0xA1AF,
+ 0xA9BF, 0xA16C,
+ 0xAA0A, 0xA128,
+ 0xAA54, 0xA0E5,
+ 0xAA9F, 0xA0A1,
+ 0xAAEA, 0xA05F,
+ 0xAB35, 0xA01C,
+ 0xAB81, 0x9FD9,
+ 0xABCC, 0x9F97,
+ 0xAC18, 0x9F55,
+ 0xAC64, 0x9F13,
+ 0xACB1, 0x9ED2,
+ 0xACFD, 0x9E90,
+ 0xAD4A, 0x9E4F,
+ 0xAD96, 0x9E0E,
+ 0xADE3, 0x9DCE,
+ 0xAE31, 0x9D8E,
+ 0xAE7E, 0x9D4D,
+ 0xAECC, 0x9D0D,
+ 0xAF1A, 0x9CCE,
+ 0xAF68, 0x9C8E,
+ 0xAFB6, 0x9C4F,
+ 0xB004, 0x9C10,
+ 0xB053, 0x9BD2,
+ 0xB0A1, 0x9B93,
+ 0xB0F0, 0x9B55,
+ 0xB140, 0x9B17,
+ 0xB18F, 0x9AD9,
+ 0xB1DE, 0x9A9C,
+ 0xB22E, 0x9A5F,
+ 0xB27E, 0x9A22,
+ 0xB2CE, 0x99E5,
+ 0xB31E, 0x99A8,
+ 0xB36F, 0x996C,
+ 0xB3C0, 0x9930,
+ 0xB410, 0x98F4,
+ 0xB461, 0x98B9,
+ 0xB4B3, 0x987D,
+ 0xB504, 0x9842,
+ 0xB556, 0x9808,
+ 0xB5A7, 0x97CD,
+ 0xB5F9, 0x9793,
+ 0xB64B, 0x9759,
+ 0xB69E, 0x971F,
+ 0xB6F0, 0x96E6,
+ 0xB743, 0x96AC,
+ 0xB796, 0x9673,
+ 0xB7E9, 0x963B,
+ 0xB83C, 0x9602,
+ 0xB88F, 0x95CA,
+ 0xB8E3, 0x9592,
+ 0xB936, 0x955A,
+ 0xB98A, 0x9523,
+ 0xB9DE, 0x94EC,
+ 0xBA32, 0x94B5,
+ 0xBA87, 0x947E,
+ 0xBADB, 0x9447,
+ 0xBB30, 0x9411,
+ 0xBB85, 0x93DB,
+ 0xBBDA, 0x93A6,
+ 0xBC2F, 0x9370,
+ 0xBC84, 0x933B,
+ 0xBCDA, 0x9306,
+ 0xBD2F, 0x92D2,
+ 0xBD85, 0x929D,
+ 0xBDDB, 0x9269,
+ 0xBE31, 0x9235,
+ 0xBE88, 0x9202,
+ 0xBEDE, 0x91CF,
+ 0xBF35, 0x919C,
+ 0xBF8C, 0x9169,
+ 0xBFE2, 0x9136,
+ 0xC03A, 0x9104,
+ 0xC091, 0x90D2,
+ 0xC0E8, 0x90A0,
+ 0xC140, 0x906F,
+ 0xC197, 0x903E,
+ 0xC1EF, 0x900D,
+ 0xC247, 0x8FDC,
+ 0xC29F, 0x8FAC,
+ 0xC2F8, 0x8F7C,
+ 0xC350, 0x8F4C,
+ 0xC3A9, 0x8F1D,
+ 0xC402, 0x8EED,
+ 0xC45A, 0x8EBE,
+ 0xC4B3, 0x8E90,
+ 0xC50D, 0x8E61,
+ 0xC566, 0x8E33,
+ 0xC5BF, 0x8E05,
+ 0xC619, 0x8DD8,
+ 0xC673, 0x8DAA,
+ 0xC6CD, 0x8D7D,
+ 0xC727, 0x8D50,
+ 0xC781, 0x8D24,
+ 0xC7DB, 0x8CF8,
+ 0xC835, 0x8CCC,
+ 0xC890, 0x8CA0,
+ 0xC8EB, 0x8C75,
+ 0xC945, 0x8C4A,
+ 0xC9A0, 0x8C1F,
+ 0xC9FB, 0x8BF4,
+ 0xCA57, 0x8BCA,
+ 0xCAB2, 0x8BA0,
+ 0xCB0D, 0x8B76,
+ 0xCB69, 0x8B4D,
+ 0xCBC5, 0x8B24,
+ 0xCC21, 0x8AFB,
+ 0xCC7D, 0x8AD2,
+ 0xCCD9, 0x8AAA,
+ 0xCD35, 0x8A82,
+ 0xCD91, 0x8A5A,
+ 0xCDEE, 0x8A33,
+ 0xCE4A, 0x8A0B,
+ 0xCEA7, 0x89E4,
+ 0xCF04, 0x89BE,
+ 0xCF61, 0x8997,
+ 0xCFBE, 0x8971,
+ 0xD01B, 0x894C,
+ 0xD078, 0x8926,
+ 0xD0D6, 0x8901,
+ 0xD133, 0x88DC,
+ 0xD191, 0x88B8,
+ 0xD1EE, 0x8893,
+ 0xD24C, 0x886F,
+ 0xD2AA, 0x884B,
+ 0xD308, 0x8828,
+ 0xD367, 0x8805,
+ 0xD3C5, 0x87E2,
+ 0xD423, 0x87BF,
+ 0xD482, 0x879D,
+ 0xD4E0, 0x877B,
+ 0xD53F, 0x8759,
+ 0xD59E, 0x8738,
+ 0xD5FD, 0x8717,
+ 0xD65C, 0x86F6,
+ 0xD6BB, 0x86D5,
+ 0xD71A, 0x86B5,
+ 0xD779, 0x8695,
+ 0xD7D9, 0x8675,
+ 0xD838, 0x8656,
+ 0xD898, 0x8637,
+ 0xD8F8, 0x8618,
+ 0xD957, 0x85FA,
+ 0xD9B7, 0x85DB,
+ 0xDA17, 0x85BD,
+ 0xDA77, 0x85A0,
+ 0xDAD7, 0x8582,
+ 0xDB38, 0x8565,
+ 0xDB98, 0x8549,
+ 0xDBF8, 0x852C,
+ 0xDC59, 0x8510,
+ 0xDCBA, 0x84F4,
+ 0xDD1A, 0x84D9,
+ 0xDD7B, 0x84BD,
+ 0xDDDC, 0x84A2,
+ 0xDE3D, 0x8488,
+ 0xDE9E, 0x846D,
+ 0xDEFF, 0x8453,
+ 0xDF60, 0x843A,
+ 0xDFC1, 0x8420,
+ 0xE023, 0x8407,
+ 0xE084, 0x83EE,
+ 0xE0E6, 0x83D6,
+ 0xE147, 0x83BD,
+ 0xE1A9, 0x83A5,
+ 0xE20A, 0x838E,
+ 0xE26C, 0x8376,
+ 0xE2CE, 0x835F,
+ 0xE330, 0x8348,
+ 0xE392, 0x8332,
+ 0xE3F4, 0x831C,
+ 0xE456, 0x8306,
+ 0xE4B8, 0x82F0,
+ 0xE51B, 0x82DB,
+ 0xE57D, 0x82C6,
+ 0xE5DF, 0x82B1,
+ 0xE642, 0x829D,
+ 0xE6A4, 0x8289,
+ 0xE707, 0x8275,
+ 0xE769, 0x8262,
+ 0xE7CC, 0x824F,
+ 0xE82F, 0x823C,
+ 0xE892, 0x8229,
+ 0xE8F5, 0x8217,
+ 0xE957, 0x8205,
+ 0xE9BA, 0x81F3,
+ 0xEA1D, 0x81E2,
+ 0xEA80, 0x81D1,
+ 0xEAE4, 0x81C0,
+ 0xEB47, 0x81B0,
+ 0xEBAA, 0x81A0,
+ 0xEC0D, 0x8190,
+ 0xEC71, 0x8180,
+ 0xECD4, 0x8171,
+ 0xED37, 0x8162,
+ 0xED9B, 0x8154,
+ 0xEDFE, 0x8145,
+ 0xEE62, 0x8137,
+ 0xEEC6, 0x812A,
+ 0xEF29, 0x811C,
+ 0xEF8D, 0x810F,
+ 0xEFF1, 0x8102,
+ 0xF054, 0x80F6,
+ 0xF0B8, 0x80EA,
+ 0xF11C, 0x80DE,
+ 0xF180, 0x80D2,
+ 0xF1E4, 0x80C7,
+ 0xF248, 0x80BC,
+ 0xF2AC, 0x80B2,
+ 0xF310, 0x80A7,
+ 0xF374, 0x809D,
+ 0xF3D8, 0x8094,
+ 0xF43C, 0x808A,
+ 0xF4A0, 0x8081,
+ 0xF504, 0x8078,
+ 0xF568, 0x8070,
+ 0xF5CC, 0x8068,
+ 0xF631, 0x8060,
+ 0xF695, 0x8058,
+ 0xF6F9, 0x8051,
+ 0xF75D, 0x804A,
+ 0xF7C2, 0x8043,
+ 0xF826, 0x803D,
+ 0xF88A, 0x8037,
+ 0xF8EF, 0x8031,
+ 0xF953, 0x802C,
+ 0xF9B8, 0x8027,
+ 0xFA1C, 0x8022,
+ 0xFA80, 0x801E,
+ 0xFAE5, 0x801A,
+ 0xFB49, 0x8016,
+ 0xFBAE, 0x8012,
+ 0xFC12, 0x800F,
+ 0xFC77, 0x800C,
+ 0xFCDB, 0x8009,
+ 0xFD40, 0x8007,
+ 0xFDA4, 0x8005,
+ 0xFE09, 0x8003,
+ 0xFE6D, 0x8002,
+ 0xFED2, 0x8001,
+ 0xFF36, 0x8000,
+ 0xFF9B, 0x8000
+};
+
+/**
+* \par
+* Example code for q15 Twiddle factors Generation::
+* \par
+* <pre>for(i = 0; i< 3N/4; i++)
+* {
+* twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+* twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
* } </pre>
* \par
* where N = 4096 and PI = 3.14159265358979
* \par
* Cos and Sin values are interleaved fashion
* \par
-* Convert Floating point to Q15(Fixed point 1.15):
-* round(twiddleCoefQ15(i) * pow(2, 15))
+* Convert Floating point to q15(Fixed point 1.15):
+* round(twiddleCoefq15(i) * pow(2, 15))
*
*/
-
-const q15_t ALIGN4 twiddleCoefQ15[6144] = {
-
- 0x7fff, 0x0, 0x7fff, 0x32, 0x7fff, 0x65, 0x7fff, 0x97,
- 0x7fff, 0xc9, 0x7fff, 0xfb, 0x7fff, 0x12e, 0x7ffe, 0x160,
- 0x7ffe, 0x192, 0x7ffd, 0x1c4, 0x7ffc, 0x1f7, 0x7ffb, 0x229,
- 0x7ffa, 0x25b, 0x7ff9, 0x28d, 0x7ff8, 0x2c0, 0x7ff7, 0x2f2,
- 0x7ff6, 0x324, 0x7ff5, 0x356, 0x7ff4, 0x389, 0x7ff2, 0x3bb,
- 0x7ff1, 0x3ed, 0x7fef, 0x41f, 0x7fed, 0x452, 0x7fec, 0x484,
- 0x7fea, 0x4b6, 0x7fe8, 0x4e8, 0x7fe6, 0x51b, 0x7fe4, 0x54d,
- 0x7fe2, 0x57f, 0x7fe0, 0x5b1, 0x7fdd, 0x5e3, 0x7fdb, 0x616,
- 0x7fd9, 0x648, 0x7fd6, 0x67a, 0x7fd3, 0x6ac, 0x7fd1, 0x6de,
- 0x7fce, 0x711, 0x7fcb, 0x743, 0x7fc8, 0x775, 0x7fc5, 0x7a7,
- 0x7fc2, 0x7d9, 0x7fbf, 0x80c, 0x7fbc, 0x83e, 0x7fb9, 0x870,
- 0x7fb5, 0x8a2, 0x7fb2, 0x8d4, 0x7fae, 0x906, 0x7fab, 0x938,
- 0x7fa7, 0x96b, 0x7fa3, 0x99d, 0x7fa0, 0x9cf, 0x7f9c, 0xa01,
- 0x7f98, 0xa33, 0x7f94, 0xa65, 0x7f90, 0xa97, 0x7f8b, 0xac9,
- 0x7f87, 0xafb, 0x7f83, 0xb2d, 0x7f7e, 0xb60, 0x7f7a, 0xb92,
- 0x7f75, 0xbc4, 0x7f71, 0xbf6, 0x7f6c, 0xc28, 0x7f67, 0xc5a,
- 0x7f62, 0xc8c, 0x7f5d, 0xcbe, 0x7f58, 0xcf0, 0x7f53, 0xd22,
- 0x7f4e, 0xd54, 0x7f49, 0xd86, 0x7f43, 0xdb8, 0x7f3e, 0xdea,
- 0x7f38, 0xe1c, 0x7f33, 0xe4e, 0x7f2d, 0xe80, 0x7f27, 0xeb2,
- 0x7f22, 0xee4, 0x7f1c, 0xf15, 0x7f16, 0xf47, 0x7f10, 0xf79,
- 0x7f0a, 0xfab, 0x7f03, 0xfdd, 0x7efd, 0x100f, 0x7ef7, 0x1041,
- 0x7ef0, 0x1073, 0x7eea, 0x10a4, 0x7ee3, 0x10d6, 0x7edd, 0x1108,
- 0x7ed6, 0x113a, 0x7ecf, 0x116c, 0x7ec8, 0x119e, 0x7ec1, 0x11cf,
- 0x7eba, 0x1201, 0x7eb3, 0x1233, 0x7eac, 0x1265, 0x7ea5, 0x1296,
- 0x7e9d, 0x12c8, 0x7e96, 0x12fa, 0x7e8e, 0x132b, 0x7e87, 0x135d,
- 0x7e7f, 0x138f, 0x7e78, 0x13c1, 0x7e70, 0x13f2, 0x7e68, 0x1424,
- 0x7e60, 0x1455, 0x7e58, 0x1487, 0x7e50, 0x14b9, 0x7e48, 0x14ea,
- 0x7e3f, 0x151c, 0x7e37, 0x154d, 0x7e2f, 0x157f, 0x7e26, 0x15b1,
- 0x7e1e, 0x15e2, 0x7e15, 0x1614, 0x7e0c, 0x1645, 0x7e03, 0x1677,
- 0x7dfb, 0x16a8, 0x7df2, 0x16da, 0x7de9, 0x170b, 0x7de0, 0x173c,
- 0x7dd6, 0x176e, 0x7dcd, 0x179f, 0x7dc4, 0x17d1, 0x7dba, 0x1802,
- 0x7db1, 0x1833, 0x7da7, 0x1865, 0x7d9e, 0x1896, 0x7d94, 0x18c7,
- 0x7d8a, 0x18f9, 0x7d81, 0x192a, 0x7d77, 0x195b, 0x7d6d, 0x198d,
- 0x7d63, 0x19be, 0x7d58, 0x19ef, 0x7d4e, 0x1a20, 0x7d44, 0x1a51,
- 0x7d3a, 0x1a83, 0x7d2f, 0x1ab4, 0x7d25, 0x1ae5, 0x7d1a, 0x1b16,
- 0x7d0f, 0x1b47, 0x7d05, 0x1b78, 0x7cfa, 0x1ba9, 0x7cef, 0x1bda,
- 0x7ce4, 0x1c0c, 0x7cd9, 0x1c3d, 0x7cce, 0x1c6e, 0x7cc2, 0x1c9f,
- 0x7cb7, 0x1cd0, 0x7cac, 0x1d01, 0x7ca0, 0x1d31, 0x7c95, 0x1d62,
- 0x7c89, 0x1d93, 0x7c7e, 0x1dc4, 0x7c72, 0x1df5, 0x7c66, 0x1e26,
- 0x7c5a, 0x1e57, 0x7c4e, 0x1e88, 0x7c42, 0x1eb8, 0x7c36, 0x1ee9,
- 0x7c2a, 0x1f1a, 0x7c1e, 0x1f4b, 0x7c11, 0x1f7b, 0x7c05, 0x1fac,
- 0x7bf9, 0x1fdd, 0x7bec, 0x200e, 0x7bdf, 0x203e, 0x7bd3, 0x206f,
- 0x7bc6, 0x209f, 0x7bb9, 0x20d0, 0x7bac, 0x2101, 0x7b9f, 0x2131,
- 0x7b92, 0x2162, 0x7b85, 0x2192, 0x7b78, 0x21c3, 0x7b6a, 0x21f3,
- 0x7b5d, 0x2224, 0x7b50, 0x2254, 0x7b42, 0x2284, 0x7b34, 0x22b5,
- 0x7b27, 0x22e5, 0x7b19, 0x2316, 0x7b0b, 0x2346, 0x7afd, 0x2376,
- 0x7aef, 0x23a7, 0x7ae1, 0x23d7, 0x7ad3, 0x2407, 0x7ac5, 0x2437,
- 0x7ab7, 0x2467, 0x7aa8, 0x2498, 0x7a9a, 0x24c8, 0x7a8c, 0x24f8,
- 0x7a7d, 0x2528, 0x7a6e, 0x2558, 0x7a60, 0x2588, 0x7a51, 0x25b8,
- 0x7a42, 0x25e8, 0x7a33, 0x2618, 0x7a24, 0x2648, 0x7a15, 0x2678,
- 0x7a06, 0x26a8, 0x79f7, 0x26d8, 0x79e7, 0x2708, 0x79d8, 0x2738,
- 0x79c9, 0x2768, 0x79b9, 0x2797, 0x79aa, 0x27c7, 0x799a, 0x27f7,
- 0x798a, 0x2827, 0x797a, 0x2856, 0x796a, 0x2886, 0x795b, 0x28b6,
- 0x794a, 0x28e5, 0x793a, 0x2915, 0x792a, 0x2945, 0x791a, 0x2974,
- 0x790a, 0x29a4, 0x78f9, 0x29d3, 0x78e9, 0x2a03, 0x78d8, 0x2a32,
- 0x78c8, 0x2a62, 0x78b7, 0x2a91, 0x78a6, 0x2ac1, 0x7895, 0x2af0,
- 0x7885, 0x2b1f, 0x7874, 0x2b4f, 0x7863, 0x2b7e, 0x7851, 0x2bad,
- 0x7840, 0x2bdc, 0x782f, 0x2c0c, 0x781e, 0x2c3b, 0x780c, 0x2c6a,
- 0x77fb, 0x2c99, 0x77e9, 0x2cc8, 0x77d8, 0x2cf7, 0x77c6, 0x2d26,
- 0x77b4, 0x2d55, 0x77a2, 0x2d84, 0x7790, 0x2db3, 0x777e, 0x2de2,
- 0x776c, 0x2e11, 0x775a, 0x2e40, 0x7748, 0x2e6f, 0x7736, 0x2e9e,
- 0x7723, 0x2ecc, 0x7711, 0x2efb, 0x76fe, 0x2f2a, 0x76ec, 0x2f59,
- 0x76d9, 0x2f87, 0x76c7, 0x2fb6, 0x76b4, 0x2fe5, 0x76a1, 0x3013,
- 0x768e, 0x3042, 0x767b, 0x3070, 0x7668, 0x309f, 0x7655, 0x30cd,
- 0x7642, 0x30fc, 0x762e, 0x312a, 0x761b, 0x3159, 0x7608, 0x3187,
- 0x75f4, 0x31b5, 0x75e1, 0x31e4, 0x75cd, 0x3212, 0x75b9, 0x3240,
- 0x75a6, 0x326e, 0x7592, 0x329d, 0x757e, 0x32cb, 0x756a, 0x32f9,
- 0x7556, 0x3327, 0x7542, 0x3355, 0x752d, 0x3383, 0x7519, 0x33b1,
- 0x7505, 0x33df, 0x74f0, 0x340d, 0x74dc, 0x343b, 0x74c7, 0x3469,
- 0x74b3, 0x3497, 0x749e, 0x34c4, 0x7489, 0x34f2, 0x7475, 0x3520,
- 0x7460, 0x354e, 0x744b, 0x357b, 0x7436, 0x35a9, 0x7421, 0x35d7,
- 0x740b, 0x3604, 0x73f6, 0x3632, 0x73e1, 0x365f, 0x73cb, 0x368d,
- 0x73b6, 0x36ba, 0x73a0, 0x36e8, 0x738b, 0x3715, 0x7375, 0x3742,
- 0x735f, 0x3770, 0x734a, 0x379d, 0x7334, 0x37ca, 0x731e, 0x37f7,
- 0x7308, 0x3825, 0x72f2, 0x3852, 0x72dc, 0x387f, 0x72c5, 0x38ac,
- 0x72af, 0x38d9, 0x7299, 0x3906, 0x7282, 0x3933, 0x726c, 0x3960,
- 0x7255, 0x398d, 0x723f, 0x39ba, 0x7228, 0x39e7, 0x7211, 0x3a13,
- 0x71fa, 0x3a40, 0x71e3, 0x3a6d, 0x71cc, 0x3a9a, 0x71b5, 0x3ac6,
- 0x719e, 0x3af3, 0x7187, 0x3b20, 0x7170, 0x3b4c, 0x7158, 0x3b79,
- 0x7141, 0x3ba5, 0x712a, 0x3bd2, 0x7112, 0x3bfe, 0x70fa, 0x3c2a,
- 0x70e3, 0x3c57, 0x70cb, 0x3c83, 0x70b3, 0x3caf, 0x709b, 0x3cdc,
- 0x7083, 0x3d08, 0x706b, 0x3d34, 0x7053, 0x3d60, 0x703b, 0x3d8c,
- 0x7023, 0x3db8, 0x700b, 0x3de4, 0x6ff2, 0x3e10, 0x6fda, 0x3e3c,
- 0x6fc2, 0x3e68, 0x6fa9, 0x3e94, 0x6f90, 0x3ec0, 0x6f78, 0x3eec,
- 0x6f5f, 0x3f17, 0x6f46, 0x3f43, 0x6f2d, 0x3f6f, 0x6f14, 0x3f9a,
- 0x6efb, 0x3fc6, 0x6ee2, 0x3ff1, 0x6ec9, 0x401d, 0x6eb0, 0x4048,
- 0x6e97, 0x4074, 0x6e7d, 0x409f, 0x6e64, 0x40cb, 0x6e4a, 0x40f6,
- 0x6e31, 0x4121, 0x6e17, 0x414d, 0x6dfe, 0x4178, 0x6de4, 0x41a3,
- 0x6dca, 0x41ce, 0x6db0, 0x41f9, 0x6d96, 0x4224, 0x6d7c, 0x424f,
- 0x6d62, 0x427a, 0x6d48, 0x42a5, 0x6d2e, 0x42d0, 0x6d14, 0x42fb,
- 0x6cf9, 0x4326, 0x6cdf, 0x4351, 0x6cc4, 0x437b, 0x6caa, 0x43a6,
- 0x6c8f, 0x43d1, 0x6c75, 0x43fb, 0x6c5a, 0x4426, 0x6c3f, 0x4450,
- 0x6c24, 0x447b, 0x6c09, 0x44a5, 0x6bee, 0x44d0, 0x6bd3, 0x44fa,
- 0x6bb8, 0x4524, 0x6b9d, 0x454f, 0x6b82, 0x4579, 0x6b66, 0x45a3,
- 0x6b4b, 0x45cd, 0x6b30, 0x45f7, 0x6b14, 0x4621, 0x6af8, 0x464b,
- 0x6add, 0x4675, 0x6ac1, 0x469f, 0x6aa5, 0x46c9, 0x6a89, 0x46f3,
- 0x6a6e, 0x471d, 0x6a52, 0x4747, 0x6a36, 0x4770, 0x6a1a, 0x479a,
- 0x69fd, 0x47c4, 0x69e1, 0x47ed, 0x69c5, 0x4817, 0x69a9, 0x4840,
- 0x698c, 0x486a, 0x6970, 0x4893, 0x6953, 0x48bd, 0x6937, 0x48e6,
- 0x691a, 0x490f, 0x68fd, 0x4939, 0x68e0, 0x4962, 0x68c4, 0x498b,
- 0x68a7, 0x49b4, 0x688a, 0x49dd, 0x686d, 0x4a06, 0x6850, 0x4a2f,
- 0x6832, 0x4a58, 0x6815, 0x4a81, 0x67f8, 0x4aaa, 0x67da, 0x4ad3,
- 0x67bd, 0x4afb, 0x67a0, 0x4b24, 0x6782, 0x4b4d, 0x6764, 0x4b75,
- 0x6747, 0x4b9e, 0x6729, 0x4bc7, 0x670b, 0x4bef, 0x66ed, 0x4c17,
- 0x66d0, 0x4c40, 0x66b2, 0x4c68, 0x6693, 0x4c91, 0x6675, 0x4cb9,
- 0x6657, 0x4ce1, 0x6639, 0x4d09, 0x661b, 0x4d31, 0x65fc, 0x4d59,
- 0x65de, 0x4d81, 0x65c0, 0x4da9, 0x65a1, 0x4dd1, 0x6582, 0x4df9,
- 0x6564, 0x4e21, 0x6545, 0x4e49, 0x6526, 0x4e71, 0x6507, 0x4e98,
- 0x64e9, 0x4ec0, 0x64ca, 0x4ee8, 0x64ab, 0x4f0f, 0x648b, 0x4f37,
- 0x646c, 0x4f5e, 0x644d, 0x4f85, 0x642e, 0x4fad, 0x640f, 0x4fd4,
- 0x63ef, 0x4ffb, 0x63d0, 0x5023, 0x63b0, 0x504a, 0x6391, 0x5071,
- 0x6371, 0x5098, 0x6351, 0x50bf, 0x6332, 0x50e6, 0x6312, 0x510d,
- 0x62f2, 0x5134, 0x62d2, 0x515b, 0x62b2, 0x5181, 0x6292, 0x51a8,
- 0x6272, 0x51cf, 0x6252, 0x51f5, 0x6232, 0x521c, 0x6211, 0x5243,
- 0x61f1, 0x5269, 0x61d1, 0x5290, 0x61b0, 0x52b6, 0x6190, 0x52dc,
- 0x616f, 0x5303, 0x614e, 0x5329, 0x612e, 0x534f, 0x610d, 0x5375,
- 0x60ec, 0x539b, 0x60cb, 0x53c1, 0x60aa, 0x53e7, 0x6089, 0x540d,
- 0x6068, 0x5433, 0x6047, 0x5459, 0x6026, 0x547f, 0x6005, 0x54a4,
- 0x5fe4, 0x54ca, 0x5fc2, 0x54f0, 0x5fa1, 0x5515, 0x5f80, 0x553b,
- 0x5f5e, 0x5560, 0x5f3c, 0x5586, 0x5f1b, 0x55ab, 0x5ef9, 0x55d0,
- 0x5ed7, 0x55f6, 0x5eb6, 0x561b, 0x5e94, 0x5640, 0x5e72, 0x5665,
- 0x5e50, 0x568a, 0x5e2e, 0x56af, 0x5e0c, 0x56d4, 0x5dea, 0x56f9,
- 0x5dc8, 0x571e, 0x5da5, 0x5743, 0x5d83, 0x5767, 0x5d61, 0x578c,
- 0x5d3e, 0x57b1, 0x5d1c, 0x57d5, 0x5cf9, 0x57fa, 0x5cd7, 0x581e,
- 0x5cb4, 0x5843, 0x5c91, 0x5867, 0x5c6f, 0x588c, 0x5c4c, 0x58b0,
- 0x5c29, 0x58d4, 0x5c06, 0x58f8, 0x5be3, 0x591c, 0x5bc0, 0x5940,
- 0x5b9d, 0x5964, 0x5b7a, 0x5988, 0x5b57, 0x59ac, 0x5b34, 0x59d0,
- 0x5b10, 0x59f4, 0x5aed, 0x5a18, 0x5ac9, 0x5a3b, 0x5aa6, 0x5a5f,
- 0x5a82, 0x5a82, 0x5a5f, 0x5aa6, 0x5a3b, 0x5ac9, 0x5a18, 0x5aed,
- 0x59f4, 0x5b10, 0x59d0, 0x5b34, 0x59ac, 0x5b57, 0x5988, 0x5b7a,
- 0x5964, 0x5b9d, 0x5940, 0x5bc0, 0x591c, 0x5be3, 0x58f8, 0x5c06,
- 0x58d4, 0x5c29, 0x58b0, 0x5c4c, 0x588c, 0x5c6f, 0x5867, 0x5c91,
- 0x5843, 0x5cb4, 0x581e, 0x5cd7, 0x57fa, 0x5cf9, 0x57d5, 0x5d1c,
- 0x57b1, 0x5d3e, 0x578c, 0x5d61, 0x5767, 0x5d83, 0x5743, 0x5da5,
- 0x571e, 0x5dc8, 0x56f9, 0x5dea, 0x56d4, 0x5e0c, 0x56af, 0x5e2e,
- 0x568a, 0x5e50, 0x5665, 0x5e72, 0x5640, 0x5e94, 0x561b, 0x5eb6,
- 0x55f6, 0x5ed7, 0x55d0, 0x5ef9, 0x55ab, 0x5f1b, 0x5586, 0x5f3c,
- 0x5560, 0x5f5e, 0x553b, 0x5f80, 0x5515, 0x5fa1, 0x54f0, 0x5fc2,
- 0x54ca, 0x5fe4, 0x54a4, 0x6005, 0x547f, 0x6026, 0x5459, 0x6047,
- 0x5433, 0x6068, 0x540d, 0x6089, 0x53e7, 0x60aa, 0x53c1, 0x60cb,
- 0x539b, 0x60ec, 0x5375, 0x610d, 0x534f, 0x612e, 0x5329, 0x614e,
- 0x5303, 0x616f, 0x52dc, 0x6190, 0x52b6, 0x61b0, 0x5290, 0x61d1,
- 0x5269, 0x61f1, 0x5243, 0x6211, 0x521c, 0x6232, 0x51f5, 0x6252,
- 0x51cf, 0x6272, 0x51a8, 0x6292, 0x5181, 0x62b2, 0x515b, 0x62d2,
- 0x5134, 0x62f2, 0x510d, 0x6312, 0x50e6, 0x6332, 0x50bf, 0x6351,
- 0x5098, 0x6371, 0x5071, 0x6391, 0x504a, 0x63b0, 0x5023, 0x63d0,
- 0x4ffb, 0x63ef, 0x4fd4, 0x640f, 0x4fad, 0x642e, 0x4f85, 0x644d,
- 0x4f5e, 0x646c, 0x4f37, 0x648b, 0x4f0f, 0x64ab, 0x4ee8, 0x64ca,
- 0x4ec0, 0x64e9, 0x4e98, 0x6507, 0x4e71, 0x6526, 0x4e49, 0x6545,
- 0x4e21, 0x6564, 0x4df9, 0x6582, 0x4dd1, 0x65a1, 0x4da9, 0x65c0,
- 0x4d81, 0x65de, 0x4d59, 0x65fc, 0x4d31, 0x661b, 0x4d09, 0x6639,
- 0x4ce1, 0x6657, 0x4cb9, 0x6675, 0x4c91, 0x6693, 0x4c68, 0x66b2,
- 0x4c40, 0x66d0, 0x4c17, 0x66ed, 0x4bef, 0x670b, 0x4bc7, 0x6729,
- 0x4b9e, 0x6747, 0x4b75, 0x6764, 0x4b4d, 0x6782, 0x4b24, 0x67a0,
- 0x4afb, 0x67bd, 0x4ad3, 0x67da, 0x4aaa, 0x67f8, 0x4a81, 0x6815,
- 0x4a58, 0x6832, 0x4a2f, 0x6850, 0x4a06, 0x686d, 0x49dd, 0x688a,
- 0x49b4, 0x68a7, 0x498b, 0x68c4, 0x4962, 0x68e0, 0x4939, 0x68fd,
- 0x490f, 0x691a, 0x48e6, 0x6937, 0x48bd, 0x6953, 0x4893, 0x6970,
- 0x486a, 0x698c, 0x4840, 0x69a9, 0x4817, 0x69c5, 0x47ed, 0x69e1,
- 0x47c4, 0x69fd, 0x479a, 0x6a1a, 0x4770, 0x6a36, 0x4747, 0x6a52,
- 0x471d, 0x6a6e, 0x46f3, 0x6a89, 0x46c9, 0x6aa5, 0x469f, 0x6ac1,
- 0x4675, 0x6add, 0x464b, 0x6af8, 0x4621, 0x6b14, 0x45f7, 0x6b30,
- 0x45cd, 0x6b4b, 0x45a3, 0x6b66, 0x4579, 0x6b82, 0x454f, 0x6b9d,
- 0x4524, 0x6bb8, 0x44fa, 0x6bd3, 0x44d0, 0x6bee, 0x44a5, 0x6c09,
- 0x447b, 0x6c24, 0x4450, 0x6c3f, 0x4426, 0x6c5a, 0x43fb, 0x6c75,
- 0x43d1, 0x6c8f, 0x43a6, 0x6caa, 0x437b, 0x6cc4, 0x4351, 0x6cdf,
- 0x4326, 0x6cf9, 0x42fb, 0x6d14, 0x42d0, 0x6d2e, 0x42a5, 0x6d48,
- 0x427a, 0x6d62, 0x424f, 0x6d7c, 0x4224, 0x6d96, 0x41f9, 0x6db0,
- 0x41ce, 0x6dca, 0x41a3, 0x6de4, 0x4178, 0x6dfe, 0x414d, 0x6e17,
- 0x4121, 0x6e31, 0x40f6, 0x6e4a, 0x40cb, 0x6e64, 0x409f, 0x6e7d,
- 0x4074, 0x6e97, 0x4048, 0x6eb0, 0x401d, 0x6ec9, 0x3ff1, 0x6ee2,
- 0x3fc6, 0x6efb, 0x3f9a, 0x6f14, 0x3f6f, 0x6f2d, 0x3f43, 0x6f46,
- 0x3f17, 0x6f5f, 0x3eec, 0x6f78, 0x3ec0, 0x6f90, 0x3e94, 0x6fa9,
- 0x3e68, 0x6fc2, 0x3e3c, 0x6fda, 0x3e10, 0x6ff2, 0x3de4, 0x700b,
- 0x3db8, 0x7023, 0x3d8c, 0x703b, 0x3d60, 0x7053, 0x3d34, 0x706b,
- 0x3d08, 0x7083, 0x3cdc, 0x709b, 0x3caf, 0x70b3, 0x3c83, 0x70cb,
- 0x3c57, 0x70e3, 0x3c2a, 0x70fa, 0x3bfe, 0x7112, 0x3bd2, 0x712a,
- 0x3ba5, 0x7141, 0x3b79, 0x7158, 0x3b4c, 0x7170, 0x3b20, 0x7187,
- 0x3af3, 0x719e, 0x3ac6, 0x71b5, 0x3a9a, 0x71cc, 0x3a6d, 0x71e3,
- 0x3a40, 0x71fa, 0x3a13, 0x7211, 0x39e7, 0x7228, 0x39ba, 0x723f,
- 0x398d, 0x7255, 0x3960, 0x726c, 0x3933, 0x7282, 0x3906, 0x7299,
- 0x38d9, 0x72af, 0x38ac, 0x72c5, 0x387f, 0x72dc, 0x3852, 0x72f2,
- 0x3825, 0x7308, 0x37f7, 0x731e, 0x37ca, 0x7334, 0x379d, 0x734a,
- 0x3770, 0x735f, 0x3742, 0x7375, 0x3715, 0x738b, 0x36e8, 0x73a0,
- 0x36ba, 0x73b6, 0x368d, 0x73cb, 0x365f, 0x73e1, 0x3632, 0x73f6,
- 0x3604, 0x740b, 0x35d7, 0x7421, 0x35a9, 0x7436, 0x357b, 0x744b,
- 0x354e, 0x7460, 0x3520, 0x7475, 0x34f2, 0x7489, 0x34c4, 0x749e,
- 0x3497, 0x74b3, 0x3469, 0x74c7, 0x343b, 0x74dc, 0x340d, 0x74f0,
- 0x33df, 0x7505, 0x33b1, 0x7519, 0x3383, 0x752d, 0x3355, 0x7542,
- 0x3327, 0x7556, 0x32f9, 0x756a, 0x32cb, 0x757e, 0x329d, 0x7592,
- 0x326e, 0x75a6, 0x3240, 0x75b9, 0x3212, 0x75cd, 0x31e4, 0x75e1,
- 0x31b5, 0x75f4, 0x3187, 0x7608, 0x3159, 0x761b, 0x312a, 0x762e,
- 0x30fc, 0x7642, 0x30cd, 0x7655, 0x309f, 0x7668, 0x3070, 0x767b,
- 0x3042, 0x768e, 0x3013, 0x76a1, 0x2fe5, 0x76b4, 0x2fb6, 0x76c7,
- 0x2f87, 0x76d9, 0x2f59, 0x76ec, 0x2f2a, 0x76fe, 0x2efb, 0x7711,
- 0x2ecc, 0x7723, 0x2e9e, 0x7736, 0x2e6f, 0x7748, 0x2e40, 0x775a,
- 0x2e11, 0x776c, 0x2de2, 0x777e, 0x2db3, 0x7790, 0x2d84, 0x77a2,
- 0x2d55, 0x77b4, 0x2d26, 0x77c6, 0x2cf7, 0x77d8, 0x2cc8, 0x77e9,
- 0x2c99, 0x77fb, 0x2c6a, 0x780c, 0x2c3b, 0x781e, 0x2c0c, 0x782f,
- 0x2bdc, 0x7840, 0x2bad, 0x7851, 0x2b7e, 0x7863, 0x2b4f, 0x7874,
- 0x2b1f, 0x7885, 0x2af0, 0x7895, 0x2ac1, 0x78a6, 0x2a91, 0x78b7,
- 0x2a62, 0x78c8, 0x2a32, 0x78d8, 0x2a03, 0x78e9, 0x29d3, 0x78f9,
- 0x29a4, 0x790a, 0x2974, 0x791a, 0x2945, 0x792a, 0x2915, 0x793a,
- 0x28e5, 0x794a, 0x28b6, 0x795b, 0x2886, 0x796a, 0x2856, 0x797a,
- 0x2827, 0x798a, 0x27f7, 0x799a, 0x27c7, 0x79aa, 0x2797, 0x79b9,
- 0x2768, 0x79c9, 0x2738, 0x79d8, 0x2708, 0x79e7, 0x26d8, 0x79f7,
- 0x26a8, 0x7a06, 0x2678, 0x7a15, 0x2648, 0x7a24, 0x2618, 0x7a33,
- 0x25e8, 0x7a42, 0x25b8, 0x7a51, 0x2588, 0x7a60, 0x2558, 0x7a6e,
- 0x2528, 0x7a7d, 0x24f8, 0x7a8c, 0x24c8, 0x7a9a, 0x2498, 0x7aa8,
- 0x2467, 0x7ab7, 0x2437, 0x7ac5, 0x2407, 0x7ad3, 0x23d7, 0x7ae1,
- 0x23a7, 0x7aef, 0x2376, 0x7afd, 0x2346, 0x7b0b, 0x2316, 0x7b19,
- 0x22e5, 0x7b27, 0x22b5, 0x7b34, 0x2284, 0x7b42, 0x2254, 0x7b50,
- 0x2224, 0x7b5d, 0x21f3, 0x7b6a, 0x21c3, 0x7b78, 0x2192, 0x7b85,
- 0x2162, 0x7b92, 0x2131, 0x7b9f, 0x2101, 0x7bac, 0x20d0, 0x7bb9,
- 0x209f, 0x7bc6, 0x206f, 0x7bd3, 0x203e, 0x7bdf, 0x200e, 0x7bec,
- 0x1fdd, 0x7bf9, 0x1fac, 0x7c05, 0x1f7b, 0x7c11, 0x1f4b, 0x7c1e,
- 0x1f1a, 0x7c2a, 0x1ee9, 0x7c36, 0x1eb8, 0x7c42, 0x1e88, 0x7c4e,
- 0x1e57, 0x7c5a, 0x1e26, 0x7c66, 0x1df5, 0x7c72, 0x1dc4, 0x7c7e,
- 0x1d93, 0x7c89, 0x1d62, 0x7c95, 0x1d31, 0x7ca0, 0x1d01, 0x7cac,
- 0x1cd0, 0x7cb7, 0x1c9f, 0x7cc2, 0x1c6e, 0x7cce, 0x1c3d, 0x7cd9,
- 0x1c0c, 0x7ce4, 0x1bda, 0x7cef, 0x1ba9, 0x7cfa, 0x1b78, 0x7d05,
- 0x1b47, 0x7d0f, 0x1b16, 0x7d1a, 0x1ae5, 0x7d25, 0x1ab4, 0x7d2f,
- 0x1a83, 0x7d3a, 0x1a51, 0x7d44, 0x1a20, 0x7d4e, 0x19ef, 0x7d58,
- 0x19be, 0x7d63, 0x198d, 0x7d6d, 0x195b, 0x7d77, 0x192a, 0x7d81,
- 0x18f9, 0x7d8a, 0x18c7, 0x7d94, 0x1896, 0x7d9e, 0x1865, 0x7da7,
- 0x1833, 0x7db1, 0x1802, 0x7dba, 0x17d1, 0x7dc4, 0x179f, 0x7dcd,
- 0x176e, 0x7dd6, 0x173c, 0x7de0, 0x170b, 0x7de9, 0x16da, 0x7df2,
- 0x16a8, 0x7dfb, 0x1677, 0x7e03, 0x1645, 0x7e0c, 0x1614, 0x7e15,
- 0x15e2, 0x7e1e, 0x15b1, 0x7e26, 0x157f, 0x7e2f, 0x154d, 0x7e37,
- 0x151c, 0x7e3f, 0x14ea, 0x7e48, 0x14b9, 0x7e50, 0x1487, 0x7e58,
- 0x1455, 0x7e60, 0x1424, 0x7e68, 0x13f2, 0x7e70, 0x13c1, 0x7e78,
- 0x138f, 0x7e7f, 0x135d, 0x7e87, 0x132b, 0x7e8e, 0x12fa, 0x7e96,
- 0x12c8, 0x7e9d, 0x1296, 0x7ea5, 0x1265, 0x7eac, 0x1233, 0x7eb3,
- 0x1201, 0x7eba, 0x11cf, 0x7ec1, 0x119e, 0x7ec8, 0x116c, 0x7ecf,
- 0x113a, 0x7ed6, 0x1108, 0x7edd, 0x10d6, 0x7ee3, 0x10a4, 0x7eea,
- 0x1073, 0x7ef0, 0x1041, 0x7ef7, 0x100f, 0x7efd, 0xfdd, 0x7f03,
- 0xfab, 0x7f0a, 0xf79, 0x7f10, 0xf47, 0x7f16, 0xf15, 0x7f1c,
- 0xee4, 0x7f22, 0xeb2, 0x7f27, 0xe80, 0x7f2d, 0xe4e, 0x7f33,
- 0xe1c, 0x7f38, 0xdea, 0x7f3e, 0xdb8, 0x7f43, 0xd86, 0x7f49,
- 0xd54, 0x7f4e, 0xd22, 0x7f53, 0xcf0, 0x7f58, 0xcbe, 0x7f5d,
- 0xc8c, 0x7f62, 0xc5a, 0x7f67, 0xc28, 0x7f6c, 0xbf6, 0x7f71,
- 0xbc4, 0x7f75, 0xb92, 0x7f7a, 0xb60, 0x7f7e, 0xb2d, 0x7f83,
- 0xafb, 0x7f87, 0xac9, 0x7f8b, 0xa97, 0x7f90, 0xa65, 0x7f94,
- 0xa33, 0x7f98, 0xa01, 0x7f9c, 0x9cf, 0x7fa0, 0x99d, 0x7fa3,
- 0x96b, 0x7fa7, 0x938, 0x7fab, 0x906, 0x7fae, 0x8d4, 0x7fb2,
- 0x8a2, 0x7fb5, 0x870, 0x7fb9, 0x83e, 0x7fbc, 0x80c, 0x7fbf,
- 0x7d9, 0x7fc2, 0x7a7, 0x7fc5, 0x775, 0x7fc8, 0x743, 0x7fcb,
- 0x711, 0x7fce, 0x6de, 0x7fd1, 0x6ac, 0x7fd3, 0x67a, 0x7fd6,
- 0x648, 0x7fd9, 0x616, 0x7fdb, 0x5e3, 0x7fdd, 0x5b1, 0x7fe0,
- 0x57f, 0x7fe2, 0x54d, 0x7fe4, 0x51b, 0x7fe6, 0x4e8, 0x7fe8,
- 0x4b6, 0x7fea, 0x484, 0x7fec, 0x452, 0x7fed, 0x41f, 0x7fef,
- 0x3ed, 0x7ff1, 0x3bb, 0x7ff2, 0x389, 0x7ff4, 0x356, 0x7ff5,
- 0x324, 0x7ff6, 0x2f2, 0x7ff7, 0x2c0, 0x7ff8, 0x28d, 0x7ff9,
- 0x25b, 0x7ffa, 0x229, 0x7ffb, 0x1f7, 0x7ffc, 0x1c4, 0x7ffd,
- 0x192, 0x7ffe, 0x160, 0x7ffe, 0x12e, 0x7fff, 0xfb, 0x7fff,
- 0xc9, 0x7fff, 0x97, 0x7fff, 0x65, 0x7fff, 0x32, 0x7fff,
- 0x0, 0x7fff, 0xffce, 0x7fff, 0xff9b, 0x7fff, 0xff69, 0x7fff,
- 0xff37, 0x7fff, 0xff05, 0x7fff, 0xfed2, 0x7fff, 0xfea0, 0x7ffe,
- 0xfe6e, 0x7ffe, 0xfe3c, 0x7ffd, 0xfe09, 0x7ffc, 0xfdd7, 0x7ffb,
- 0xfda5, 0x7ffa, 0xfd73, 0x7ff9, 0xfd40, 0x7ff8, 0xfd0e, 0x7ff7,
- 0xfcdc, 0x7ff6, 0xfcaa, 0x7ff5, 0xfc77, 0x7ff4, 0xfc45, 0x7ff2,
- 0xfc13, 0x7ff1, 0xfbe1, 0x7fef, 0xfbae, 0x7fed, 0xfb7c, 0x7fec,
- 0xfb4a, 0x7fea, 0xfb18, 0x7fe8, 0xfae5, 0x7fe6, 0xfab3, 0x7fe4,
- 0xfa81, 0x7fe2, 0xfa4f, 0x7fe0, 0xfa1d, 0x7fdd, 0xf9ea, 0x7fdb,
- 0xf9b8, 0x7fd9, 0xf986, 0x7fd6, 0xf954, 0x7fd3, 0xf922, 0x7fd1,
- 0xf8ef, 0x7fce, 0xf8bd, 0x7fcb, 0xf88b, 0x7fc8, 0xf859, 0x7fc5,
- 0xf827, 0x7fc2, 0xf7f4, 0x7fbf, 0xf7c2, 0x7fbc, 0xf790, 0x7fb9,
- 0xf75e, 0x7fb5, 0xf72c, 0x7fb2, 0xf6fa, 0x7fae, 0xf6c8, 0x7fab,
- 0xf695, 0x7fa7, 0xf663, 0x7fa3, 0xf631, 0x7fa0, 0xf5ff, 0x7f9c,
- 0xf5cd, 0x7f98, 0xf59b, 0x7f94, 0xf569, 0x7f90, 0xf537, 0x7f8b,
- 0xf505, 0x7f87, 0xf4d3, 0x7f83, 0xf4a0, 0x7f7e, 0xf46e, 0x7f7a,
- 0xf43c, 0x7f75, 0xf40a, 0x7f71, 0xf3d8, 0x7f6c, 0xf3a6, 0x7f67,
- 0xf374, 0x7f62, 0xf342, 0x7f5d, 0xf310, 0x7f58, 0xf2de, 0x7f53,
- 0xf2ac, 0x7f4e, 0xf27a, 0x7f49, 0xf248, 0x7f43, 0xf216, 0x7f3e,
- 0xf1e4, 0x7f38, 0xf1b2, 0x7f33, 0xf180, 0x7f2d, 0xf14e, 0x7f27,
- 0xf11c, 0x7f22, 0xf0eb, 0x7f1c, 0xf0b9, 0x7f16, 0xf087, 0x7f10,
- 0xf055, 0x7f0a, 0xf023, 0x7f03, 0xeff1, 0x7efd, 0xefbf, 0x7ef7,
- 0xef8d, 0x7ef0, 0xef5c, 0x7eea, 0xef2a, 0x7ee3, 0xeef8, 0x7edd,
- 0xeec6, 0x7ed6, 0xee94, 0x7ecf, 0xee62, 0x7ec8, 0xee31, 0x7ec1,
- 0xedff, 0x7eba, 0xedcd, 0x7eb3, 0xed9b, 0x7eac, 0xed6a, 0x7ea5,
- 0xed38, 0x7e9d, 0xed06, 0x7e96, 0xecd5, 0x7e8e, 0xeca3, 0x7e87,
- 0xec71, 0x7e7f, 0xec3f, 0x7e78, 0xec0e, 0x7e70, 0xebdc, 0x7e68,
- 0xebab, 0x7e60, 0xeb79, 0x7e58, 0xeb47, 0x7e50, 0xeb16, 0x7e48,
- 0xeae4, 0x7e3f, 0xeab3, 0x7e37, 0xea81, 0x7e2f, 0xea4f, 0x7e26,
- 0xea1e, 0x7e1e, 0xe9ec, 0x7e15, 0xe9bb, 0x7e0c, 0xe989, 0x7e03,
- 0xe958, 0x7dfb, 0xe926, 0x7df2, 0xe8f5, 0x7de9, 0xe8c4, 0x7de0,
- 0xe892, 0x7dd6, 0xe861, 0x7dcd, 0xe82f, 0x7dc4, 0xe7fe, 0x7dba,
- 0xe7cd, 0x7db1, 0xe79b, 0x7da7, 0xe76a, 0x7d9e, 0xe739, 0x7d94,
- 0xe707, 0x7d8a, 0xe6d6, 0x7d81, 0xe6a5, 0x7d77, 0xe673, 0x7d6d,
- 0xe642, 0x7d63, 0xe611, 0x7d58, 0xe5e0, 0x7d4e, 0xe5af, 0x7d44,
- 0xe57d, 0x7d3a, 0xe54c, 0x7d2f, 0xe51b, 0x7d25, 0xe4ea, 0x7d1a,
- 0xe4b9, 0x7d0f, 0xe488, 0x7d05, 0xe457, 0x7cfa, 0xe426, 0x7cef,
- 0xe3f4, 0x7ce4, 0xe3c3, 0x7cd9, 0xe392, 0x7cce, 0xe361, 0x7cc2,
- 0xe330, 0x7cb7, 0xe2ff, 0x7cac, 0xe2cf, 0x7ca0, 0xe29e, 0x7c95,
- 0xe26d, 0x7c89, 0xe23c, 0x7c7e, 0xe20b, 0x7c72, 0xe1da, 0x7c66,
- 0xe1a9, 0x7c5a, 0xe178, 0x7c4e, 0xe148, 0x7c42, 0xe117, 0x7c36,
- 0xe0e6, 0x7c2a, 0xe0b5, 0x7c1e, 0xe085, 0x7c11, 0xe054, 0x7c05,
- 0xe023, 0x7bf9, 0xdff2, 0x7bec, 0xdfc2, 0x7bdf, 0xdf91, 0x7bd3,
- 0xdf61, 0x7bc6, 0xdf30, 0x7bb9, 0xdeff, 0x7bac, 0xdecf, 0x7b9f,
- 0xde9e, 0x7b92, 0xde6e, 0x7b85, 0xde3d, 0x7b78, 0xde0d, 0x7b6a,
- 0xdddc, 0x7b5d, 0xddac, 0x7b50, 0xdd7c, 0x7b42, 0xdd4b, 0x7b34,
- 0xdd1b, 0x7b27, 0xdcea, 0x7b19, 0xdcba, 0x7b0b, 0xdc8a, 0x7afd,
- 0xdc59, 0x7aef, 0xdc29, 0x7ae1, 0xdbf9, 0x7ad3, 0xdbc9, 0x7ac5,
- 0xdb99, 0x7ab7, 0xdb68, 0x7aa8, 0xdb38, 0x7a9a, 0xdb08, 0x7a8c,
- 0xdad8, 0x7a7d, 0xdaa8, 0x7a6e, 0xda78, 0x7a60, 0xda48, 0x7a51,
- 0xda18, 0x7a42, 0xd9e8, 0x7a33, 0xd9b8, 0x7a24, 0xd988, 0x7a15,
- 0xd958, 0x7a06, 0xd928, 0x79f7, 0xd8f8, 0x79e7, 0xd8c8, 0x79d8,
- 0xd898, 0x79c9, 0xd869, 0x79b9, 0xd839, 0x79aa, 0xd809, 0x799a,
- 0xd7d9, 0x798a, 0xd7aa, 0x797a, 0xd77a, 0x796a, 0xd74a, 0x795b,
- 0xd71b, 0x794a, 0xd6eb, 0x793a, 0xd6bb, 0x792a, 0xd68c, 0x791a,
- 0xd65c, 0x790a, 0xd62d, 0x78f9, 0xd5fd, 0x78e9, 0xd5ce, 0x78d8,
- 0xd59e, 0x78c8, 0xd56f, 0x78b7, 0xd53f, 0x78a6, 0xd510, 0x7895,
- 0xd4e1, 0x7885, 0xd4b1, 0x7874, 0xd482, 0x7863, 0xd453, 0x7851,
- 0xd424, 0x7840, 0xd3f4, 0x782f, 0xd3c5, 0x781e, 0xd396, 0x780c,
- 0xd367, 0x77fb, 0xd338, 0x77e9, 0xd309, 0x77d8, 0xd2da, 0x77c6,
- 0xd2ab, 0x77b4, 0xd27c, 0x77a2, 0xd24d, 0x7790, 0xd21e, 0x777e,
- 0xd1ef, 0x776c, 0xd1c0, 0x775a, 0xd191, 0x7748, 0xd162, 0x7736,
- 0xd134, 0x7723, 0xd105, 0x7711, 0xd0d6, 0x76fe, 0xd0a7, 0x76ec,
- 0xd079, 0x76d9, 0xd04a, 0x76c7, 0xd01b, 0x76b4, 0xcfed, 0x76a1,
- 0xcfbe, 0x768e, 0xcf90, 0x767b, 0xcf61, 0x7668, 0xcf33, 0x7655,
- 0xcf04, 0x7642, 0xced6, 0x762e, 0xcea7, 0x761b, 0xce79, 0x7608,
- 0xce4b, 0x75f4, 0xce1c, 0x75e1, 0xcdee, 0x75cd, 0xcdc0, 0x75b9,
- 0xcd92, 0x75a6, 0xcd63, 0x7592, 0xcd35, 0x757e, 0xcd07, 0x756a,
- 0xccd9, 0x7556, 0xccab, 0x7542, 0xcc7d, 0x752d, 0xcc4f, 0x7519,
- 0xcc21, 0x7505, 0xcbf3, 0x74f0, 0xcbc5, 0x74dc, 0xcb97, 0x74c7,
- 0xcb69, 0x74b3, 0xcb3c, 0x749e, 0xcb0e, 0x7489, 0xcae0, 0x7475,
- 0xcab2, 0x7460, 0xca85, 0x744b, 0xca57, 0x7436, 0xca29, 0x7421,
- 0xc9fc, 0x740b, 0xc9ce, 0x73f6, 0xc9a1, 0x73e1, 0xc973, 0x73cb,
- 0xc946, 0x73b6, 0xc918, 0x73a0, 0xc8eb, 0x738b, 0xc8be, 0x7375,
- 0xc890, 0x735f, 0xc863, 0x734a, 0xc836, 0x7334, 0xc809, 0x731e,
- 0xc7db, 0x7308, 0xc7ae, 0x72f2, 0xc781, 0x72dc, 0xc754, 0x72c5,
- 0xc727, 0x72af, 0xc6fa, 0x7299, 0xc6cd, 0x7282, 0xc6a0, 0x726c,
- 0xc673, 0x7255, 0xc646, 0x723f, 0xc619, 0x7228, 0xc5ed, 0x7211,
- 0xc5c0, 0x71fa, 0xc593, 0x71e3, 0xc566, 0x71cc, 0xc53a, 0x71b5,
- 0xc50d, 0x719e, 0xc4e0, 0x7187, 0xc4b4, 0x7170, 0xc487, 0x7158,
- 0xc45b, 0x7141, 0xc42e, 0x712a, 0xc402, 0x7112, 0xc3d6, 0x70fa,
- 0xc3a9, 0x70e3, 0xc37d, 0x70cb, 0xc351, 0x70b3, 0xc324, 0x709b,
- 0xc2f8, 0x7083, 0xc2cc, 0x706b, 0xc2a0, 0x7053, 0xc274, 0x703b,
- 0xc248, 0x7023, 0xc21c, 0x700b, 0xc1f0, 0x6ff2, 0xc1c4, 0x6fda,
- 0xc198, 0x6fc2, 0xc16c, 0x6fa9, 0xc140, 0x6f90, 0xc114, 0x6f78,
- 0xc0e9, 0x6f5f, 0xc0bd, 0x6f46, 0xc091, 0x6f2d, 0xc066, 0x6f14,
- 0xc03a, 0x6efb, 0xc00f, 0x6ee2, 0xbfe3, 0x6ec9, 0xbfb8, 0x6eb0,
- 0xbf8c, 0x6e97, 0xbf61, 0x6e7d, 0xbf35, 0x6e64, 0xbf0a, 0x6e4a,
- 0xbedf, 0x6e31, 0xbeb3, 0x6e17, 0xbe88, 0x6dfe, 0xbe5d, 0x6de4,
- 0xbe32, 0x6dca, 0xbe07, 0x6db0, 0xbddc, 0x6d96, 0xbdb1, 0x6d7c,
- 0xbd86, 0x6d62, 0xbd5b, 0x6d48, 0xbd30, 0x6d2e, 0xbd05, 0x6d14,
- 0xbcda, 0x6cf9, 0xbcaf, 0x6cdf, 0xbc85, 0x6cc4, 0xbc5a, 0x6caa,
- 0xbc2f, 0x6c8f, 0xbc05, 0x6c75, 0xbbda, 0x6c5a, 0xbbb0, 0x6c3f,
- 0xbb85, 0x6c24, 0xbb5b, 0x6c09, 0xbb30, 0x6bee, 0xbb06, 0x6bd3,
- 0xbadc, 0x6bb8, 0xbab1, 0x6b9d, 0xba87, 0x6b82, 0xba5d, 0x6b66,
- 0xba33, 0x6b4b, 0xba09, 0x6b30, 0xb9df, 0x6b14, 0xb9b5, 0x6af8,
- 0xb98b, 0x6add, 0xb961, 0x6ac1, 0xb937, 0x6aa5, 0xb90d, 0x6a89,
- 0xb8e3, 0x6a6e, 0xb8b9, 0x6a52, 0xb890, 0x6a36, 0xb866, 0x6a1a,
- 0xb83c, 0x69fd, 0xb813, 0x69e1, 0xb7e9, 0x69c5, 0xb7c0, 0x69a9,
- 0xb796, 0x698c, 0xb76d, 0x6970, 0xb743, 0x6953, 0xb71a, 0x6937,
- 0xb6f1, 0x691a, 0xb6c7, 0x68fd, 0xb69e, 0x68e0, 0xb675, 0x68c4,
- 0xb64c, 0x68a7, 0xb623, 0x688a, 0xb5fa, 0x686d, 0xb5d1, 0x6850,
- 0xb5a8, 0x6832, 0xb57f, 0x6815, 0xb556, 0x67f8, 0xb52d, 0x67da,
- 0xb505, 0x67bd, 0xb4dc, 0x67a0, 0xb4b3, 0x6782, 0xb48b, 0x6764,
- 0xb462, 0x6747, 0xb439, 0x6729, 0xb411, 0x670b, 0xb3e9, 0x66ed,
- 0xb3c0, 0x66d0, 0xb398, 0x66b2, 0xb36f, 0x6693, 0xb347, 0x6675,
- 0xb31f, 0x6657, 0xb2f7, 0x6639, 0xb2cf, 0x661b, 0xb2a7, 0x65fc,
- 0xb27f, 0x65de, 0xb257, 0x65c0, 0xb22f, 0x65a1, 0xb207, 0x6582,
- 0xb1df, 0x6564, 0xb1b7, 0x6545, 0xb18f, 0x6526, 0xb168, 0x6507,
- 0xb140, 0x64e9, 0xb118, 0x64ca, 0xb0f1, 0x64ab, 0xb0c9, 0x648b,
- 0xb0a2, 0x646c, 0xb07b, 0x644d, 0xb053, 0x642e, 0xb02c, 0x640f,
- 0xb005, 0x63ef, 0xafdd, 0x63d0, 0xafb6, 0x63b0, 0xaf8f, 0x6391,
- 0xaf68, 0x6371, 0xaf41, 0x6351, 0xaf1a, 0x6332, 0xaef3, 0x6312,
- 0xaecc, 0x62f2, 0xaea5, 0x62d2, 0xae7f, 0x62b2, 0xae58, 0x6292,
- 0xae31, 0x6272, 0xae0b, 0x6252, 0xade4, 0x6232, 0xadbd, 0x6211,
- 0xad97, 0x61f1, 0xad70, 0x61d1, 0xad4a, 0x61b0, 0xad24, 0x6190,
- 0xacfd, 0x616f, 0xacd7, 0x614e, 0xacb1, 0x612e, 0xac8b, 0x610d,
- 0xac65, 0x60ec, 0xac3f, 0x60cb, 0xac19, 0x60aa, 0xabf3, 0x6089,
- 0xabcd, 0x6068, 0xaba7, 0x6047, 0xab81, 0x6026, 0xab5c, 0x6005,
- 0xab36, 0x5fe4, 0xab10, 0x5fc2, 0xaaeb, 0x5fa1, 0xaac5, 0x5f80,
- 0xaaa0, 0x5f5e, 0xaa7a, 0x5f3c, 0xaa55, 0x5f1b, 0xaa30, 0x5ef9,
- 0xaa0a, 0x5ed7, 0xa9e5, 0x5eb6, 0xa9c0, 0x5e94, 0xa99b, 0x5e72,
- 0xa976, 0x5e50, 0xa951, 0x5e2e, 0xa92c, 0x5e0c, 0xa907, 0x5dea,
- 0xa8e2, 0x5dc8, 0xa8bd, 0x5da5, 0xa899, 0x5d83, 0xa874, 0x5d61,
- 0xa84f, 0x5d3e, 0xa82b, 0x5d1c, 0xa806, 0x5cf9, 0xa7e2, 0x5cd7,
- 0xa7bd, 0x5cb4, 0xa799, 0x5c91, 0xa774, 0x5c6f, 0xa750, 0x5c4c,
- 0xa72c, 0x5c29, 0xa708, 0x5c06, 0xa6e4, 0x5be3, 0xa6c0, 0x5bc0,
- 0xa69c, 0x5b9d, 0xa678, 0x5b7a, 0xa654, 0x5b57, 0xa630, 0x5b34,
- 0xa60c, 0x5b10, 0xa5e8, 0x5aed, 0xa5c5, 0x5ac9, 0xa5a1, 0x5aa6,
- 0xa57e, 0x5a82, 0xa55a, 0x5a5f, 0xa537, 0x5a3b, 0xa513, 0x5a18,
- 0xa4f0, 0x59f4, 0xa4cc, 0x59d0, 0xa4a9, 0x59ac, 0xa486, 0x5988,
- 0xa463, 0x5964, 0xa440, 0x5940, 0xa41d, 0x591c, 0xa3fa, 0x58f8,
- 0xa3d7, 0x58d4, 0xa3b4, 0x58b0, 0xa391, 0x588c, 0xa36f, 0x5867,
- 0xa34c, 0x5843, 0xa329, 0x581e, 0xa307, 0x57fa, 0xa2e4, 0x57d5,
- 0xa2c2, 0x57b1, 0xa29f, 0x578c, 0xa27d, 0x5767, 0xa25b, 0x5743,
- 0xa238, 0x571e, 0xa216, 0x56f9, 0xa1f4, 0x56d4, 0xa1d2, 0x56af,
- 0xa1b0, 0x568a, 0xa18e, 0x5665, 0xa16c, 0x5640, 0xa14a, 0x561b,
- 0xa129, 0x55f6, 0xa107, 0x55d0, 0xa0e5, 0x55ab, 0xa0c4, 0x5586,
- 0xa0a2, 0x5560, 0xa080, 0x553b, 0xa05f, 0x5515, 0xa03e, 0x54f0,
- 0xa01c, 0x54ca, 0x9ffb, 0x54a4, 0x9fda, 0x547f, 0x9fb9, 0x5459,
- 0x9f98, 0x5433, 0x9f77, 0x540d, 0x9f56, 0x53e7, 0x9f35, 0x53c1,
- 0x9f14, 0x539b, 0x9ef3, 0x5375, 0x9ed2, 0x534f, 0x9eb2, 0x5329,
- 0x9e91, 0x5303, 0x9e70, 0x52dc, 0x9e50, 0x52b6, 0x9e2f, 0x5290,
- 0x9e0f, 0x5269, 0x9def, 0x5243, 0x9dce, 0x521c, 0x9dae, 0x51f5,
- 0x9d8e, 0x51cf, 0x9d6e, 0x51a8, 0x9d4e, 0x5181, 0x9d2e, 0x515b,
- 0x9d0e, 0x5134, 0x9cee, 0x510d, 0x9cce, 0x50e6, 0x9caf, 0x50bf,
- 0x9c8f, 0x5098, 0x9c6f, 0x5071, 0x9c50, 0x504a, 0x9c30, 0x5023,
- 0x9c11, 0x4ffb, 0x9bf1, 0x4fd4, 0x9bd2, 0x4fad, 0x9bb3, 0x4f85,
- 0x9b94, 0x4f5e, 0x9b75, 0x4f37, 0x9b55, 0x4f0f, 0x9b36, 0x4ee8,
- 0x9b17, 0x4ec0, 0x9af9, 0x4e98, 0x9ada, 0x4e71, 0x9abb, 0x4e49,
- 0x9a9c, 0x4e21, 0x9a7e, 0x4df9, 0x9a5f, 0x4dd1, 0x9a40, 0x4da9,
- 0x9a22, 0x4d81, 0x9a04, 0x4d59, 0x99e5, 0x4d31, 0x99c7, 0x4d09,
- 0x99a9, 0x4ce1, 0x998b, 0x4cb9, 0x996d, 0x4c91, 0x994e, 0x4c68,
- 0x9930, 0x4c40, 0x9913, 0x4c17, 0x98f5, 0x4bef, 0x98d7, 0x4bc7,
- 0x98b9, 0x4b9e, 0x989c, 0x4b75, 0x987e, 0x4b4d, 0x9860, 0x4b24,
- 0x9843, 0x4afb, 0x9826, 0x4ad3, 0x9808, 0x4aaa, 0x97eb, 0x4a81,
- 0x97ce, 0x4a58, 0x97b0, 0x4a2f, 0x9793, 0x4a06, 0x9776, 0x49dd,
- 0x9759, 0x49b4, 0x973c, 0x498b, 0x9720, 0x4962, 0x9703, 0x4939,
- 0x96e6, 0x490f, 0x96c9, 0x48e6, 0x96ad, 0x48bd, 0x9690, 0x4893,
- 0x9674, 0x486a, 0x9657, 0x4840, 0x963b, 0x4817, 0x961f, 0x47ed,
- 0x9603, 0x47c4, 0x95e6, 0x479a, 0x95ca, 0x4770, 0x95ae, 0x4747,
- 0x9592, 0x471d, 0x9577, 0x46f3, 0x955b, 0x46c9, 0x953f, 0x469f,
- 0x9523, 0x4675, 0x9508, 0x464b, 0x94ec, 0x4621, 0x94d0, 0x45f7,
- 0x94b5, 0x45cd, 0x949a, 0x45a3, 0x947e, 0x4579, 0x9463, 0x454f,
- 0x9448, 0x4524, 0x942d, 0x44fa, 0x9412, 0x44d0, 0x93f7, 0x44a5,
- 0x93dc, 0x447b, 0x93c1, 0x4450, 0x93a6, 0x4426, 0x938b, 0x43fb,
- 0x9371, 0x43d1, 0x9356, 0x43a6, 0x933c, 0x437b, 0x9321, 0x4351,
- 0x9307, 0x4326, 0x92ec, 0x42fb, 0x92d2, 0x42d0, 0x92b8, 0x42a5,
- 0x929e, 0x427a, 0x9284, 0x424f, 0x926a, 0x4224, 0x9250, 0x41f9,
- 0x9236, 0x41ce, 0x921c, 0x41a3, 0x9202, 0x4178, 0x91e9, 0x414d,
- 0x91cf, 0x4121, 0x91b6, 0x40f6, 0x919c, 0x40cb, 0x9183, 0x409f,
- 0x9169, 0x4074, 0x9150, 0x4048, 0x9137, 0x401d, 0x911e, 0x3ff1,
- 0x9105, 0x3fc6, 0x90ec, 0x3f9a, 0x90d3, 0x3f6f, 0x90ba, 0x3f43,
- 0x90a1, 0x3f17, 0x9088, 0x3eec, 0x9070, 0x3ec0, 0x9057, 0x3e94,
- 0x903e, 0x3e68, 0x9026, 0x3e3c, 0x900e, 0x3e10, 0x8ff5, 0x3de4,
- 0x8fdd, 0x3db8, 0x8fc5, 0x3d8c, 0x8fad, 0x3d60, 0x8f95, 0x3d34,
- 0x8f7d, 0x3d08, 0x8f65, 0x3cdc, 0x8f4d, 0x3caf, 0x8f35, 0x3c83,
- 0x8f1d, 0x3c57, 0x8f06, 0x3c2a, 0x8eee, 0x3bfe, 0x8ed6, 0x3bd2,
- 0x8ebf, 0x3ba5, 0x8ea8, 0x3b79, 0x8e90, 0x3b4c, 0x8e79, 0x3b20,
- 0x8e62, 0x3af3, 0x8e4b, 0x3ac6, 0x8e34, 0x3a9a, 0x8e1d, 0x3a6d,
- 0x8e06, 0x3a40, 0x8def, 0x3a13, 0x8dd8, 0x39e7, 0x8dc1, 0x39ba,
- 0x8dab, 0x398d, 0x8d94, 0x3960, 0x8d7e, 0x3933, 0x8d67, 0x3906,
- 0x8d51, 0x38d9, 0x8d3b, 0x38ac, 0x8d24, 0x387f, 0x8d0e, 0x3852,
- 0x8cf8, 0x3825, 0x8ce2, 0x37f7, 0x8ccc, 0x37ca, 0x8cb6, 0x379d,
- 0x8ca1, 0x3770, 0x8c8b, 0x3742, 0x8c75, 0x3715, 0x8c60, 0x36e8,
- 0x8c4a, 0x36ba, 0x8c35, 0x368d, 0x8c1f, 0x365f, 0x8c0a, 0x3632,
- 0x8bf5, 0x3604, 0x8bdf, 0x35d7, 0x8bca, 0x35a9, 0x8bb5, 0x357b,
- 0x8ba0, 0x354e, 0x8b8b, 0x3520, 0x8b77, 0x34f2, 0x8b62, 0x34c4,
- 0x8b4d, 0x3497, 0x8b39, 0x3469, 0x8b24, 0x343b, 0x8b10, 0x340d,
- 0x8afb, 0x33df, 0x8ae7, 0x33b1, 0x8ad3, 0x3383, 0x8abe, 0x3355,
- 0x8aaa, 0x3327, 0x8a96, 0x32f9, 0x8a82, 0x32cb, 0x8a6e, 0x329d,
- 0x8a5a, 0x326e, 0x8a47, 0x3240, 0x8a33, 0x3212, 0x8a1f, 0x31e4,
- 0x8a0c, 0x31b5, 0x89f8, 0x3187, 0x89e5, 0x3159, 0x89d2, 0x312a,
- 0x89be, 0x30fc, 0x89ab, 0x30cd, 0x8998, 0x309f, 0x8985, 0x3070,
- 0x8972, 0x3042, 0x895f, 0x3013, 0x894c, 0x2fe5, 0x8939, 0x2fb6,
- 0x8927, 0x2f87, 0x8914, 0x2f59, 0x8902, 0x2f2a, 0x88ef, 0x2efb,
- 0x88dd, 0x2ecc, 0x88ca, 0x2e9e, 0x88b8, 0x2e6f, 0x88a6, 0x2e40,
- 0x8894, 0x2e11, 0x8882, 0x2de2, 0x8870, 0x2db3, 0x885e, 0x2d84,
- 0x884c, 0x2d55, 0x883a, 0x2d26, 0x8828, 0x2cf7, 0x8817, 0x2cc8,
- 0x8805, 0x2c99, 0x87f4, 0x2c6a, 0x87e2, 0x2c3b, 0x87d1, 0x2c0c,
- 0x87c0, 0x2bdc, 0x87af, 0x2bad, 0x879d, 0x2b7e, 0x878c, 0x2b4f,
- 0x877b, 0x2b1f, 0x876b, 0x2af0, 0x875a, 0x2ac1, 0x8749, 0x2a91,
- 0x8738, 0x2a62, 0x8728, 0x2a32, 0x8717, 0x2a03, 0x8707, 0x29d3,
- 0x86f6, 0x29a4, 0x86e6, 0x2974, 0x86d6, 0x2945, 0x86c6, 0x2915,
- 0x86b6, 0x28e5, 0x86a5, 0x28b6, 0x8696, 0x2886, 0x8686, 0x2856,
- 0x8676, 0x2827, 0x8666, 0x27f7, 0x8656, 0x27c7, 0x8647, 0x2797,
- 0x8637, 0x2768, 0x8628, 0x2738, 0x8619, 0x2708, 0x8609, 0x26d8,
- 0x85fa, 0x26a8, 0x85eb, 0x2678, 0x85dc, 0x2648, 0x85cd, 0x2618,
- 0x85be, 0x25e8, 0x85af, 0x25b8, 0x85a0, 0x2588, 0x8592, 0x2558,
- 0x8583, 0x2528, 0x8574, 0x24f8, 0x8566, 0x24c8, 0x8558, 0x2498,
- 0x8549, 0x2467, 0x853b, 0x2437, 0x852d, 0x2407, 0x851f, 0x23d7,
- 0x8511, 0x23a7, 0x8503, 0x2376, 0x84f5, 0x2346, 0x84e7, 0x2316,
- 0x84d9, 0x22e5, 0x84cc, 0x22b5, 0x84be, 0x2284, 0x84b0, 0x2254,
- 0x84a3, 0x2224, 0x8496, 0x21f3, 0x8488, 0x21c3, 0x847b, 0x2192,
- 0x846e, 0x2162, 0x8461, 0x2131, 0x8454, 0x2101, 0x8447, 0x20d0,
- 0x843a, 0x209f, 0x842d, 0x206f, 0x8421, 0x203e, 0x8414, 0x200e,
- 0x8407, 0x1fdd, 0x83fb, 0x1fac, 0x83ef, 0x1f7b, 0x83e2, 0x1f4b,
- 0x83d6, 0x1f1a, 0x83ca, 0x1ee9, 0x83be, 0x1eb8, 0x83b2, 0x1e88,
- 0x83a6, 0x1e57, 0x839a, 0x1e26, 0x838e, 0x1df5, 0x8382, 0x1dc4,
- 0x8377, 0x1d93, 0x836b, 0x1d62, 0x8360, 0x1d31, 0x8354, 0x1d01,
- 0x8349, 0x1cd0, 0x833e, 0x1c9f, 0x8332, 0x1c6e, 0x8327, 0x1c3d,
- 0x831c, 0x1c0c, 0x8311, 0x1bda, 0x8306, 0x1ba9, 0x82fb, 0x1b78,
- 0x82f1, 0x1b47, 0x82e6, 0x1b16, 0x82db, 0x1ae5, 0x82d1, 0x1ab4,
- 0x82c6, 0x1a83, 0x82bc, 0x1a51, 0x82b2, 0x1a20, 0x82a8, 0x19ef,
- 0x829d, 0x19be, 0x8293, 0x198d, 0x8289, 0x195b, 0x827f, 0x192a,
- 0x8276, 0x18f9, 0x826c, 0x18c7, 0x8262, 0x1896, 0x8259, 0x1865,
- 0x824f, 0x1833, 0x8246, 0x1802, 0x823c, 0x17d1, 0x8233, 0x179f,
- 0x822a, 0x176e, 0x8220, 0x173c, 0x8217, 0x170b, 0x820e, 0x16da,
- 0x8205, 0x16a8, 0x81fd, 0x1677, 0x81f4, 0x1645, 0x81eb, 0x1614,
- 0x81e2, 0x15e2, 0x81da, 0x15b1, 0x81d1, 0x157f, 0x81c9, 0x154d,
- 0x81c1, 0x151c, 0x81b8, 0x14ea, 0x81b0, 0x14b9, 0x81a8, 0x1487,
- 0x81a0, 0x1455, 0x8198, 0x1424, 0x8190, 0x13f2, 0x8188, 0x13c1,
- 0x8181, 0x138f, 0x8179, 0x135d, 0x8172, 0x132b, 0x816a, 0x12fa,
- 0x8163, 0x12c8, 0x815b, 0x1296, 0x8154, 0x1265, 0x814d, 0x1233,
- 0x8146, 0x1201, 0x813f, 0x11cf, 0x8138, 0x119e, 0x8131, 0x116c,
- 0x812a, 0x113a, 0x8123, 0x1108, 0x811d, 0x10d6, 0x8116, 0x10a4,
- 0x8110, 0x1073, 0x8109, 0x1041, 0x8103, 0x100f, 0x80fd, 0xfdd,
- 0x80f6, 0xfab, 0x80f0, 0xf79, 0x80ea, 0xf47, 0x80e4, 0xf15,
- 0x80de, 0xee4, 0x80d9, 0xeb2, 0x80d3, 0xe80, 0x80cd, 0xe4e,
- 0x80c8, 0xe1c, 0x80c2, 0xdea, 0x80bd, 0xdb8, 0x80b7, 0xd86,
- 0x80b2, 0xd54, 0x80ad, 0xd22, 0x80a8, 0xcf0, 0x80a3, 0xcbe,
- 0x809e, 0xc8c, 0x8099, 0xc5a, 0x8094, 0xc28, 0x808f, 0xbf6,
- 0x808b, 0xbc4, 0x8086, 0xb92, 0x8082, 0xb60, 0x807d, 0xb2d,
- 0x8079, 0xafb, 0x8075, 0xac9, 0x8070, 0xa97, 0x806c, 0xa65,
- 0x8068, 0xa33, 0x8064, 0xa01, 0x8060, 0x9cf, 0x805d, 0x99d,
- 0x8059, 0x96b, 0x8055, 0x938, 0x8052, 0x906, 0x804e, 0x8d4,
- 0x804b, 0x8a2, 0x8047, 0x870, 0x8044, 0x83e, 0x8041, 0x80c,
- 0x803e, 0x7d9, 0x803b, 0x7a7, 0x8038, 0x775, 0x8035, 0x743,
- 0x8032, 0x711, 0x802f, 0x6de, 0x802d, 0x6ac, 0x802a, 0x67a,
- 0x8027, 0x648, 0x8025, 0x616, 0x8023, 0x5e3, 0x8020, 0x5b1,
- 0x801e, 0x57f, 0x801c, 0x54d, 0x801a, 0x51b, 0x8018, 0x4e8,
- 0x8016, 0x4b6, 0x8014, 0x484, 0x8013, 0x452, 0x8011, 0x41f,
- 0x800f, 0x3ed, 0x800e, 0x3bb, 0x800c, 0x389, 0x800b, 0x356,
- 0x800a, 0x324, 0x8009, 0x2f2, 0x8008, 0x2c0, 0x8007, 0x28d,
- 0x8006, 0x25b, 0x8005, 0x229, 0x8004, 0x1f7, 0x8003, 0x1c4,
- 0x8002, 0x192, 0x8002, 0x160, 0x8001, 0x12e, 0x8001, 0xfb,
- 0x8001, 0xc9, 0x8000, 0x97, 0x8000, 0x65, 0x8000, 0x32,
- 0x8000, 0x0, 0x8000, 0xffce, 0x8000, 0xff9b, 0x8000, 0xff69,
- 0x8001, 0xff37, 0x8001, 0xff05, 0x8001, 0xfed2, 0x8002, 0xfea0,
- 0x8002, 0xfe6e, 0x8003, 0xfe3c, 0x8004, 0xfe09, 0x8005, 0xfdd7,
- 0x8006, 0xfda5, 0x8007, 0xfd73, 0x8008, 0xfd40, 0x8009, 0xfd0e,
- 0x800a, 0xfcdc, 0x800b, 0xfcaa, 0x800c, 0xfc77, 0x800e, 0xfc45,
- 0x800f, 0xfc13, 0x8011, 0xfbe1, 0x8013, 0xfbae, 0x8014, 0xfb7c,
- 0x8016, 0xfb4a, 0x8018, 0xfb18, 0x801a, 0xfae5, 0x801c, 0xfab3,
- 0x801e, 0xfa81, 0x8020, 0xfa4f, 0x8023, 0xfa1d, 0x8025, 0xf9ea,
- 0x8027, 0xf9b8, 0x802a, 0xf986, 0x802d, 0xf954, 0x802f, 0xf922,
- 0x8032, 0xf8ef, 0x8035, 0xf8bd, 0x8038, 0xf88b, 0x803b, 0xf859,
- 0x803e, 0xf827, 0x8041, 0xf7f4, 0x8044, 0xf7c2, 0x8047, 0xf790,
- 0x804b, 0xf75e, 0x804e, 0xf72c, 0x8052, 0xf6fa, 0x8055, 0xf6c8,
- 0x8059, 0xf695, 0x805d, 0xf663, 0x8060, 0xf631, 0x8064, 0xf5ff,
- 0x8068, 0xf5cd, 0x806c, 0xf59b, 0x8070, 0xf569, 0x8075, 0xf537,
- 0x8079, 0xf505, 0x807d, 0xf4d3, 0x8082, 0xf4a0, 0x8086, 0xf46e,
- 0x808b, 0xf43c, 0x808f, 0xf40a, 0x8094, 0xf3d8, 0x8099, 0xf3a6,
- 0x809e, 0xf374, 0x80a3, 0xf342, 0x80a8, 0xf310, 0x80ad, 0xf2de,
- 0x80b2, 0xf2ac, 0x80b7, 0xf27a, 0x80bd, 0xf248, 0x80c2, 0xf216,
- 0x80c8, 0xf1e4, 0x80cd, 0xf1b2, 0x80d3, 0xf180, 0x80d9, 0xf14e,
- 0x80de, 0xf11c, 0x80e4, 0xf0eb, 0x80ea, 0xf0b9, 0x80f0, 0xf087,
- 0x80f6, 0xf055, 0x80fd, 0xf023, 0x8103, 0xeff1, 0x8109, 0xefbf,
- 0x8110, 0xef8d, 0x8116, 0xef5c, 0x811d, 0xef2a, 0x8123, 0xeef8,
- 0x812a, 0xeec6, 0x8131, 0xee94, 0x8138, 0xee62, 0x813f, 0xee31,
- 0x8146, 0xedff, 0x814d, 0xedcd, 0x8154, 0xed9b, 0x815b, 0xed6a,
- 0x8163, 0xed38, 0x816a, 0xed06, 0x8172, 0xecd5, 0x8179, 0xeca3,
- 0x8181, 0xec71, 0x8188, 0xec3f, 0x8190, 0xec0e, 0x8198, 0xebdc,
- 0x81a0, 0xebab, 0x81a8, 0xeb79, 0x81b0, 0xeb47, 0x81b8, 0xeb16,
- 0x81c1, 0xeae4, 0x81c9, 0xeab3, 0x81d1, 0xea81, 0x81da, 0xea4f,
- 0x81e2, 0xea1e, 0x81eb, 0xe9ec, 0x81f4, 0xe9bb, 0x81fd, 0xe989,
- 0x8205, 0xe958, 0x820e, 0xe926, 0x8217, 0xe8f5, 0x8220, 0xe8c4,
- 0x822a, 0xe892, 0x8233, 0xe861, 0x823c, 0xe82f, 0x8246, 0xe7fe,
- 0x824f, 0xe7cd, 0x8259, 0xe79b, 0x8262, 0xe76a, 0x826c, 0xe739,
- 0x8276, 0xe707, 0x827f, 0xe6d6, 0x8289, 0xe6a5, 0x8293, 0xe673,
- 0x829d, 0xe642, 0x82a8, 0xe611, 0x82b2, 0xe5e0, 0x82bc, 0xe5af,
- 0x82c6, 0xe57d, 0x82d1, 0xe54c, 0x82db, 0xe51b, 0x82e6, 0xe4ea,
- 0x82f1, 0xe4b9, 0x82fb, 0xe488, 0x8306, 0xe457, 0x8311, 0xe426,
- 0x831c, 0xe3f4, 0x8327, 0xe3c3, 0x8332, 0xe392, 0x833e, 0xe361,
- 0x8349, 0xe330, 0x8354, 0xe2ff, 0x8360, 0xe2cf, 0x836b, 0xe29e,
- 0x8377, 0xe26d, 0x8382, 0xe23c, 0x838e, 0xe20b, 0x839a, 0xe1da,
- 0x83a6, 0xe1a9, 0x83b2, 0xe178, 0x83be, 0xe148, 0x83ca, 0xe117,
- 0x83d6, 0xe0e6, 0x83e2, 0xe0b5, 0x83ef, 0xe085, 0x83fb, 0xe054,
- 0x8407, 0xe023, 0x8414, 0xdff2, 0x8421, 0xdfc2, 0x842d, 0xdf91,
- 0x843a, 0xdf61, 0x8447, 0xdf30, 0x8454, 0xdeff, 0x8461, 0xdecf,
- 0x846e, 0xde9e, 0x847b, 0xde6e, 0x8488, 0xde3d, 0x8496, 0xde0d,
- 0x84a3, 0xdddc, 0x84b0, 0xddac, 0x84be, 0xdd7c, 0x84cc, 0xdd4b,
- 0x84d9, 0xdd1b, 0x84e7, 0xdcea, 0x84f5, 0xdcba, 0x8503, 0xdc8a,
- 0x8511, 0xdc59, 0x851f, 0xdc29, 0x852d, 0xdbf9, 0x853b, 0xdbc9,
- 0x8549, 0xdb99, 0x8558, 0xdb68, 0x8566, 0xdb38, 0x8574, 0xdb08,
- 0x8583, 0xdad8, 0x8592, 0xdaa8, 0x85a0, 0xda78, 0x85af, 0xda48,
- 0x85be, 0xda18, 0x85cd, 0xd9e8, 0x85dc, 0xd9b8, 0x85eb, 0xd988,
- 0x85fa, 0xd958, 0x8609, 0xd928, 0x8619, 0xd8f8, 0x8628, 0xd8c8,
- 0x8637, 0xd898, 0x8647, 0xd869, 0x8656, 0xd839, 0x8666, 0xd809,
- 0x8676, 0xd7d9, 0x8686, 0xd7aa, 0x8696, 0xd77a, 0x86a5, 0xd74a,
- 0x86b6, 0xd71b, 0x86c6, 0xd6eb, 0x86d6, 0xd6bb, 0x86e6, 0xd68c,
- 0x86f6, 0xd65c, 0x8707, 0xd62d, 0x8717, 0xd5fd, 0x8728, 0xd5ce,
- 0x8738, 0xd59e, 0x8749, 0xd56f, 0x875a, 0xd53f, 0x876b, 0xd510,
- 0x877b, 0xd4e1, 0x878c, 0xd4b1, 0x879d, 0xd482, 0x87af, 0xd453,
- 0x87c0, 0xd424, 0x87d1, 0xd3f4, 0x87e2, 0xd3c5, 0x87f4, 0xd396,
- 0x8805, 0xd367, 0x8817, 0xd338, 0x8828, 0xd309, 0x883a, 0xd2da,
- 0x884c, 0xd2ab, 0x885e, 0xd27c, 0x8870, 0xd24d, 0x8882, 0xd21e,
- 0x8894, 0xd1ef, 0x88a6, 0xd1c0, 0x88b8, 0xd191, 0x88ca, 0xd162,
- 0x88dd, 0xd134, 0x88ef, 0xd105, 0x8902, 0xd0d6, 0x8914, 0xd0a7,
- 0x8927, 0xd079, 0x8939, 0xd04a, 0x894c, 0xd01b, 0x895f, 0xcfed,
- 0x8972, 0xcfbe, 0x8985, 0xcf90, 0x8998, 0xcf61, 0x89ab, 0xcf33,
- 0x89be, 0xcf04, 0x89d2, 0xced6, 0x89e5, 0xcea7, 0x89f8, 0xce79,
- 0x8a0c, 0xce4b, 0x8a1f, 0xce1c, 0x8a33, 0xcdee, 0x8a47, 0xcdc0,
- 0x8a5a, 0xcd92, 0x8a6e, 0xcd63, 0x8a82, 0xcd35, 0x8a96, 0xcd07,
- 0x8aaa, 0xccd9, 0x8abe, 0xccab, 0x8ad3, 0xcc7d, 0x8ae7, 0xcc4f,
- 0x8afb, 0xcc21, 0x8b10, 0xcbf3, 0x8b24, 0xcbc5, 0x8b39, 0xcb97,
- 0x8b4d, 0xcb69, 0x8b62, 0xcb3c, 0x8b77, 0xcb0e, 0x8b8b, 0xcae0,
- 0x8ba0, 0xcab2, 0x8bb5, 0xca85, 0x8bca, 0xca57, 0x8bdf, 0xca29,
- 0x8bf5, 0xc9fc, 0x8c0a, 0xc9ce, 0x8c1f, 0xc9a1, 0x8c35, 0xc973,
- 0x8c4a, 0xc946, 0x8c60, 0xc918, 0x8c75, 0xc8eb, 0x8c8b, 0xc8be,
- 0x8ca1, 0xc890, 0x8cb6, 0xc863, 0x8ccc, 0xc836, 0x8ce2, 0xc809,
- 0x8cf8, 0xc7db, 0x8d0e, 0xc7ae, 0x8d24, 0xc781, 0x8d3b, 0xc754,
- 0x8d51, 0xc727, 0x8d67, 0xc6fa, 0x8d7e, 0xc6cd, 0x8d94, 0xc6a0,
- 0x8dab, 0xc673, 0x8dc1, 0xc646, 0x8dd8, 0xc619, 0x8def, 0xc5ed,
- 0x8e06, 0xc5c0, 0x8e1d, 0xc593, 0x8e34, 0xc566, 0x8e4b, 0xc53a,
- 0x8e62, 0xc50d, 0x8e79, 0xc4e0, 0x8e90, 0xc4b4, 0x8ea8, 0xc487,
- 0x8ebf, 0xc45b, 0x8ed6, 0xc42e, 0x8eee, 0xc402, 0x8f06, 0xc3d6,
- 0x8f1d, 0xc3a9, 0x8f35, 0xc37d, 0x8f4d, 0xc351, 0x8f65, 0xc324,
- 0x8f7d, 0xc2f8, 0x8f95, 0xc2cc, 0x8fad, 0xc2a0, 0x8fc5, 0xc274,
- 0x8fdd, 0xc248, 0x8ff5, 0xc21c, 0x900e, 0xc1f0, 0x9026, 0xc1c4,
- 0x903e, 0xc198, 0x9057, 0xc16c, 0x9070, 0xc140, 0x9088, 0xc114,
- 0x90a1, 0xc0e9, 0x90ba, 0xc0bd, 0x90d3, 0xc091, 0x90ec, 0xc066,
- 0x9105, 0xc03a, 0x911e, 0xc00f, 0x9137, 0xbfe3, 0x9150, 0xbfb8,
- 0x9169, 0xbf8c, 0x9183, 0xbf61, 0x919c, 0xbf35, 0x91b6, 0xbf0a,
- 0x91cf, 0xbedf, 0x91e9, 0xbeb3, 0x9202, 0xbe88, 0x921c, 0xbe5d,
- 0x9236, 0xbe32, 0x9250, 0xbe07, 0x926a, 0xbddc, 0x9284, 0xbdb1,
- 0x929e, 0xbd86, 0x92b8, 0xbd5b, 0x92d2, 0xbd30, 0x92ec, 0xbd05,
- 0x9307, 0xbcda, 0x9321, 0xbcaf, 0x933c, 0xbc85, 0x9356, 0xbc5a,
- 0x9371, 0xbc2f, 0x938b, 0xbc05, 0x93a6, 0xbbda, 0x93c1, 0xbbb0,
- 0x93dc, 0xbb85, 0x93f7, 0xbb5b, 0x9412, 0xbb30, 0x942d, 0xbb06,
- 0x9448, 0xbadc, 0x9463, 0xbab1, 0x947e, 0xba87, 0x949a, 0xba5d,
- 0x94b5, 0xba33, 0x94d0, 0xba09, 0x94ec, 0xb9df, 0x9508, 0xb9b5,
- 0x9523, 0xb98b, 0x953f, 0xb961, 0x955b, 0xb937, 0x9577, 0xb90d,
- 0x9592, 0xb8e3, 0x95ae, 0xb8b9, 0x95ca, 0xb890, 0x95e6, 0xb866,
- 0x9603, 0xb83c, 0x961f, 0xb813, 0x963b, 0xb7e9, 0x9657, 0xb7c0,
- 0x9674, 0xb796, 0x9690, 0xb76d, 0x96ad, 0xb743, 0x96c9, 0xb71a,
- 0x96e6, 0xb6f1, 0x9703, 0xb6c7, 0x9720, 0xb69e, 0x973c, 0xb675,
- 0x9759, 0xb64c, 0x9776, 0xb623, 0x9793, 0xb5fa, 0x97b0, 0xb5d1,
- 0x97ce, 0xb5a8, 0x97eb, 0xb57f, 0x9808, 0xb556, 0x9826, 0xb52d,
- 0x9843, 0xb505, 0x9860, 0xb4dc, 0x987e, 0xb4b3, 0x989c, 0xb48b,
- 0x98b9, 0xb462, 0x98d7, 0xb439, 0x98f5, 0xb411, 0x9913, 0xb3e9,
- 0x9930, 0xb3c0, 0x994e, 0xb398, 0x996d, 0xb36f, 0x998b, 0xb347,
- 0x99a9, 0xb31f, 0x99c7, 0xb2f7, 0x99e5, 0xb2cf, 0x9a04, 0xb2a7,
- 0x9a22, 0xb27f, 0x9a40, 0xb257, 0x9a5f, 0xb22f, 0x9a7e, 0xb207,
- 0x9a9c, 0xb1df, 0x9abb, 0xb1b7, 0x9ada, 0xb18f, 0x9af9, 0xb168,
- 0x9b17, 0xb140, 0x9b36, 0xb118, 0x9b55, 0xb0f1, 0x9b75, 0xb0c9,
- 0x9b94, 0xb0a2, 0x9bb3, 0xb07b, 0x9bd2, 0xb053, 0x9bf1, 0xb02c,
- 0x9c11, 0xb005, 0x9c30, 0xafdd, 0x9c50, 0xafb6, 0x9c6f, 0xaf8f,
- 0x9c8f, 0xaf68, 0x9caf, 0xaf41, 0x9cce, 0xaf1a, 0x9cee, 0xaef3,
- 0x9d0e, 0xaecc, 0x9d2e, 0xaea5, 0x9d4e, 0xae7f, 0x9d6e, 0xae58,
- 0x9d8e, 0xae31, 0x9dae, 0xae0b, 0x9dce, 0xade4, 0x9def, 0xadbd,
- 0x9e0f, 0xad97, 0x9e2f, 0xad70, 0x9e50, 0xad4a, 0x9e70, 0xad24,
- 0x9e91, 0xacfd, 0x9eb2, 0xacd7, 0x9ed2, 0xacb1, 0x9ef3, 0xac8b,
- 0x9f14, 0xac65, 0x9f35, 0xac3f, 0x9f56, 0xac19, 0x9f77, 0xabf3,
- 0x9f98, 0xabcd, 0x9fb9, 0xaba7, 0x9fda, 0xab81, 0x9ffb, 0xab5c,
- 0xa01c, 0xab36, 0xa03e, 0xab10, 0xa05f, 0xaaeb, 0xa080, 0xaac5,
- 0xa0a2, 0xaaa0, 0xa0c4, 0xaa7a, 0xa0e5, 0xaa55, 0xa107, 0xaa30,
- 0xa129, 0xaa0a, 0xa14a, 0xa9e5, 0xa16c, 0xa9c0, 0xa18e, 0xa99b,
- 0xa1b0, 0xa976, 0xa1d2, 0xa951, 0xa1f4, 0xa92c, 0xa216, 0xa907,
- 0xa238, 0xa8e2, 0xa25b, 0xa8bd, 0xa27d, 0xa899, 0xa29f, 0xa874,
- 0xa2c2, 0xa84f, 0xa2e4, 0xa82b, 0xa307, 0xa806, 0xa329, 0xa7e2,
- 0xa34c, 0xa7bd, 0xa36f, 0xa799, 0xa391, 0xa774, 0xa3b4, 0xa750,
- 0xa3d7, 0xa72c, 0xa3fa, 0xa708, 0xa41d, 0xa6e4, 0xa440, 0xa6c0,
- 0xa463, 0xa69c, 0xa486, 0xa678, 0xa4a9, 0xa654, 0xa4cc, 0xa630,
- 0xa4f0, 0xa60c, 0xa513, 0xa5e8, 0xa537, 0xa5c5, 0xa55a, 0xa5a1,
- 0xa57e, 0xa57e, 0xa5a1, 0xa55a, 0xa5c5, 0xa537, 0xa5e8, 0xa513,
- 0xa60c, 0xa4f0, 0xa630, 0xa4cc, 0xa654, 0xa4a9, 0xa678, 0xa486,
- 0xa69c, 0xa463, 0xa6c0, 0xa440, 0xa6e4, 0xa41d, 0xa708, 0xa3fa,
- 0xa72c, 0xa3d7, 0xa750, 0xa3b4, 0xa774, 0xa391, 0xa799, 0xa36f,
- 0xa7bd, 0xa34c, 0xa7e2, 0xa329, 0xa806, 0xa307, 0xa82b, 0xa2e4,
- 0xa84f, 0xa2c2, 0xa874, 0xa29f, 0xa899, 0xa27d, 0xa8bd, 0xa25b,
- 0xa8e2, 0xa238, 0xa907, 0xa216, 0xa92c, 0xa1f4, 0xa951, 0xa1d2,
- 0xa976, 0xa1b0, 0xa99b, 0xa18e, 0xa9c0, 0xa16c, 0xa9e5, 0xa14a,
- 0xaa0a, 0xa129, 0xaa30, 0xa107, 0xaa55, 0xa0e5, 0xaa7a, 0xa0c4,
- 0xaaa0, 0xa0a2, 0xaac5, 0xa080, 0xaaeb, 0xa05f, 0xab10, 0xa03e,
- 0xab36, 0xa01c, 0xab5c, 0x9ffb, 0xab81, 0x9fda, 0xaba7, 0x9fb9,
- 0xabcd, 0x9f98, 0xabf3, 0x9f77, 0xac19, 0x9f56, 0xac3f, 0x9f35,
- 0xac65, 0x9f14, 0xac8b, 0x9ef3, 0xacb1, 0x9ed2, 0xacd7, 0x9eb2,
- 0xacfd, 0x9e91, 0xad24, 0x9e70, 0xad4a, 0x9e50, 0xad70, 0x9e2f,
- 0xad97, 0x9e0f, 0xadbd, 0x9def, 0xade4, 0x9dce, 0xae0b, 0x9dae,
- 0xae31, 0x9d8e, 0xae58, 0x9d6e, 0xae7f, 0x9d4e, 0xaea5, 0x9d2e,
- 0xaecc, 0x9d0e, 0xaef3, 0x9cee, 0xaf1a, 0x9cce, 0xaf41, 0x9caf,
- 0xaf68, 0x9c8f, 0xaf8f, 0x9c6f, 0xafb6, 0x9c50, 0xafdd, 0x9c30,
- 0xb005, 0x9c11, 0xb02c, 0x9bf1, 0xb053, 0x9bd2, 0xb07b, 0x9bb3,
- 0xb0a2, 0x9b94, 0xb0c9, 0x9b75, 0xb0f1, 0x9b55, 0xb118, 0x9b36,
- 0xb140, 0x9b17, 0xb168, 0x9af9, 0xb18f, 0x9ada, 0xb1b7, 0x9abb,
- 0xb1df, 0x9a9c, 0xb207, 0x9a7e, 0xb22f, 0x9a5f, 0xb257, 0x9a40,
- 0xb27f, 0x9a22, 0xb2a7, 0x9a04, 0xb2cf, 0x99e5, 0xb2f7, 0x99c7,
- 0xb31f, 0x99a9, 0xb347, 0x998b, 0xb36f, 0x996d, 0xb398, 0x994e,
- 0xb3c0, 0x9930, 0xb3e9, 0x9913, 0xb411, 0x98f5, 0xb439, 0x98d7,
- 0xb462, 0x98b9, 0xb48b, 0x989c, 0xb4b3, 0x987e, 0xb4dc, 0x9860,
- 0xb505, 0x9843, 0xb52d, 0x9826, 0xb556, 0x9808, 0xb57f, 0x97eb,
- 0xb5a8, 0x97ce, 0xb5d1, 0x97b0, 0xb5fa, 0x9793, 0xb623, 0x9776,
- 0xb64c, 0x9759, 0xb675, 0x973c, 0xb69e, 0x9720, 0xb6c7, 0x9703,
- 0xb6f1, 0x96e6, 0xb71a, 0x96c9, 0xb743, 0x96ad, 0xb76d, 0x9690,
- 0xb796, 0x9674, 0xb7c0, 0x9657, 0xb7e9, 0x963b, 0xb813, 0x961f,
- 0xb83c, 0x9603, 0xb866, 0x95e6, 0xb890, 0x95ca, 0xb8b9, 0x95ae,
- 0xb8e3, 0x9592, 0xb90d, 0x9577, 0xb937, 0x955b, 0xb961, 0x953f,
- 0xb98b, 0x9523, 0xb9b5, 0x9508, 0xb9df, 0x94ec, 0xba09, 0x94d0,
- 0xba33, 0x94b5, 0xba5d, 0x949a, 0xba87, 0x947e, 0xbab1, 0x9463,
- 0xbadc, 0x9448, 0xbb06, 0x942d, 0xbb30, 0x9412, 0xbb5b, 0x93f7,
- 0xbb85, 0x93dc, 0xbbb0, 0x93c1, 0xbbda, 0x93a6, 0xbc05, 0x938b,
- 0xbc2f, 0x9371, 0xbc5a, 0x9356, 0xbc85, 0x933c, 0xbcaf, 0x9321,
- 0xbcda, 0x9307, 0xbd05, 0x92ec, 0xbd30, 0x92d2, 0xbd5b, 0x92b8,
- 0xbd86, 0x929e, 0xbdb1, 0x9284, 0xbddc, 0x926a, 0xbe07, 0x9250,
- 0xbe32, 0x9236, 0xbe5d, 0x921c, 0xbe88, 0x9202, 0xbeb3, 0x91e9,
- 0xbedf, 0x91cf, 0xbf0a, 0x91b6, 0xbf35, 0x919c, 0xbf61, 0x9183,
- 0xbf8c, 0x9169, 0xbfb8, 0x9150, 0xbfe3, 0x9137, 0xc00f, 0x911e,
- 0xc03a, 0x9105, 0xc066, 0x90ec, 0xc091, 0x90d3, 0xc0bd, 0x90ba,
- 0xc0e9, 0x90a1, 0xc114, 0x9088, 0xc140, 0x9070, 0xc16c, 0x9057,
- 0xc198, 0x903e, 0xc1c4, 0x9026, 0xc1f0, 0x900e, 0xc21c, 0x8ff5,
- 0xc248, 0x8fdd, 0xc274, 0x8fc5, 0xc2a0, 0x8fad, 0xc2cc, 0x8f95,
- 0xc2f8, 0x8f7d, 0xc324, 0x8f65, 0xc351, 0x8f4d, 0xc37d, 0x8f35,
- 0xc3a9, 0x8f1d, 0xc3d6, 0x8f06, 0xc402, 0x8eee, 0xc42e, 0x8ed6,
- 0xc45b, 0x8ebf, 0xc487, 0x8ea8, 0xc4b4, 0x8e90, 0xc4e0, 0x8e79,
- 0xc50d, 0x8e62, 0xc53a, 0x8e4b, 0xc566, 0x8e34, 0xc593, 0x8e1d,
- 0xc5c0, 0x8e06, 0xc5ed, 0x8def, 0xc619, 0x8dd8, 0xc646, 0x8dc1,
- 0xc673, 0x8dab, 0xc6a0, 0x8d94, 0xc6cd, 0x8d7e, 0xc6fa, 0x8d67,
- 0xc727, 0x8d51, 0xc754, 0x8d3b, 0xc781, 0x8d24, 0xc7ae, 0x8d0e,
- 0xc7db, 0x8cf8, 0xc809, 0x8ce2, 0xc836, 0x8ccc, 0xc863, 0x8cb6,
- 0xc890, 0x8ca1, 0xc8be, 0x8c8b, 0xc8eb, 0x8c75, 0xc918, 0x8c60,
- 0xc946, 0x8c4a, 0xc973, 0x8c35, 0xc9a1, 0x8c1f, 0xc9ce, 0x8c0a,
- 0xc9fc, 0x8bf5, 0xca29, 0x8bdf, 0xca57, 0x8bca, 0xca85, 0x8bb5,
- 0xcab2, 0x8ba0, 0xcae0, 0x8b8b, 0xcb0e, 0x8b77, 0xcb3c, 0x8b62,
- 0xcb69, 0x8b4d, 0xcb97, 0x8b39, 0xcbc5, 0x8b24, 0xcbf3, 0x8b10,
- 0xcc21, 0x8afb, 0xcc4f, 0x8ae7, 0xcc7d, 0x8ad3, 0xccab, 0x8abe,
- 0xccd9, 0x8aaa, 0xcd07, 0x8a96, 0xcd35, 0x8a82, 0xcd63, 0x8a6e,
- 0xcd92, 0x8a5a, 0xcdc0, 0x8a47, 0xcdee, 0x8a33, 0xce1c, 0x8a1f,
- 0xce4b, 0x8a0c, 0xce79, 0x89f8, 0xcea7, 0x89e5, 0xced6, 0x89d2,
- 0xcf04, 0x89be, 0xcf33, 0x89ab, 0xcf61, 0x8998, 0xcf90, 0x8985,
- 0xcfbe, 0x8972, 0xcfed, 0x895f, 0xd01b, 0x894c, 0xd04a, 0x8939,
- 0xd079, 0x8927, 0xd0a7, 0x8914, 0xd0d6, 0x8902, 0xd105, 0x88ef,
- 0xd134, 0x88dd, 0xd162, 0x88ca, 0xd191, 0x88b8, 0xd1c0, 0x88a6,
- 0xd1ef, 0x8894, 0xd21e, 0x8882, 0xd24d, 0x8870, 0xd27c, 0x885e,
- 0xd2ab, 0x884c, 0xd2da, 0x883a, 0xd309, 0x8828, 0xd338, 0x8817,
- 0xd367, 0x8805, 0xd396, 0x87f4, 0xd3c5, 0x87e2, 0xd3f4, 0x87d1,
- 0xd424, 0x87c0, 0xd453, 0x87af, 0xd482, 0x879d, 0xd4b1, 0x878c,
- 0xd4e1, 0x877b, 0xd510, 0x876b, 0xd53f, 0x875a, 0xd56f, 0x8749,
- 0xd59e, 0x8738, 0xd5ce, 0x8728, 0xd5fd, 0x8717, 0xd62d, 0x8707,
- 0xd65c, 0x86f6, 0xd68c, 0x86e6, 0xd6bb, 0x86d6, 0xd6eb, 0x86c6,
- 0xd71b, 0x86b6, 0xd74a, 0x86a5, 0xd77a, 0x8696, 0xd7aa, 0x8686,
- 0xd7d9, 0x8676, 0xd809, 0x8666, 0xd839, 0x8656, 0xd869, 0x8647,
- 0xd898, 0x8637, 0xd8c8, 0x8628, 0xd8f8, 0x8619, 0xd928, 0x8609,
- 0xd958, 0x85fa, 0xd988, 0x85eb, 0xd9b8, 0x85dc, 0xd9e8, 0x85cd,
- 0xda18, 0x85be, 0xda48, 0x85af, 0xda78, 0x85a0, 0xdaa8, 0x8592,
- 0xdad8, 0x8583, 0xdb08, 0x8574, 0xdb38, 0x8566, 0xdb68, 0x8558,
- 0xdb99, 0x8549, 0xdbc9, 0x853b, 0xdbf9, 0x852d, 0xdc29, 0x851f,
- 0xdc59, 0x8511, 0xdc8a, 0x8503, 0xdcba, 0x84f5, 0xdcea, 0x84e7,
- 0xdd1b, 0x84d9, 0xdd4b, 0x84cc, 0xdd7c, 0x84be, 0xddac, 0x84b0,
- 0xdddc, 0x84a3, 0xde0d, 0x8496, 0xde3d, 0x8488, 0xde6e, 0x847b,
- 0xde9e, 0x846e, 0xdecf, 0x8461, 0xdeff, 0x8454, 0xdf30, 0x8447,
- 0xdf61, 0x843a, 0xdf91, 0x842d, 0xdfc2, 0x8421, 0xdff2, 0x8414,
- 0xe023, 0x8407, 0xe054, 0x83fb, 0xe085, 0x83ef, 0xe0b5, 0x83e2,
- 0xe0e6, 0x83d6, 0xe117, 0x83ca, 0xe148, 0x83be, 0xe178, 0x83b2,
- 0xe1a9, 0x83a6, 0xe1da, 0x839a, 0xe20b, 0x838e, 0xe23c, 0x8382,
- 0xe26d, 0x8377, 0xe29e, 0x836b, 0xe2cf, 0x8360, 0xe2ff, 0x8354,
- 0xe330, 0x8349, 0xe361, 0x833e, 0xe392, 0x8332, 0xe3c3, 0x8327,
- 0xe3f4, 0x831c, 0xe426, 0x8311, 0xe457, 0x8306, 0xe488, 0x82fb,
- 0xe4b9, 0x82f1, 0xe4ea, 0x82e6, 0xe51b, 0x82db, 0xe54c, 0x82d1,
- 0xe57d, 0x82c6, 0xe5af, 0x82bc, 0xe5e0, 0x82b2, 0xe611, 0x82a8,
- 0xe642, 0x829d, 0xe673, 0x8293, 0xe6a5, 0x8289, 0xe6d6, 0x827f,
- 0xe707, 0x8276, 0xe739, 0x826c, 0xe76a, 0x8262, 0xe79b, 0x8259,
- 0xe7cd, 0x824f, 0xe7fe, 0x8246, 0xe82f, 0x823c, 0xe861, 0x8233,
- 0xe892, 0x822a, 0xe8c4, 0x8220, 0xe8f5, 0x8217, 0xe926, 0x820e,
- 0xe958, 0x8205, 0xe989, 0x81fd, 0xe9bb, 0x81f4, 0xe9ec, 0x81eb,
- 0xea1e, 0x81e2, 0xea4f, 0x81da, 0xea81, 0x81d1, 0xeab3, 0x81c9,
- 0xeae4, 0x81c1, 0xeb16, 0x81b8, 0xeb47, 0x81b0, 0xeb79, 0x81a8,
- 0xebab, 0x81a0, 0xebdc, 0x8198, 0xec0e, 0x8190, 0xec3f, 0x8188,
- 0xec71, 0x8181, 0xeca3, 0x8179, 0xecd5, 0x8172, 0xed06, 0x816a,
- 0xed38, 0x8163, 0xed6a, 0x815b, 0xed9b, 0x8154, 0xedcd, 0x814d,
- 0xedff, 0x8146, 0xee31, 0x813f, 0xee62, 0x8138, 0xee94, 0x8131,
- 0xeec6, 0x812a, 0xeef8, 0x8123, 0xef2a, 0x811d, 0xef5c, 0x8116,
- 0xef8d, 0x8110, 0xefbf, 0x8109, 0xeff1, 0x8103, 0xf023, 0x80fd,
- 0xf055, 0x80f6, 0xf087, 0x80f0, 0xf0b9, 0x80ea, 0xf0eb, 0x80e4,
- 0xf11c, 0x80de, 0xf14e, 0x80d9, 0xf180, 0x80d3, 0xf1b2, 0x80cd,
- 0xf1e4, 0x80c8, 0xf216, 0x80c2, 0xf248, 0x80bd, 0xf27a, 0x80b7,
- 0xf2ac, 0x80b2, 0xf2de, 0x80ad, 0xf310, 0x80a8, 0xf342, 0x80a3,
- 0xf374, 0x809e, 0xf3a6, 0x8099, 0xf3d8, 0x8094, 0xf40a, 0x808f,
- 0xf43c, 0x808b, 0xf46e, 0x8086, 0xf4a0, 0x8082, 0xf4d3, 0x807d,
- 0xf505, 0x8079, 0xf537, 0x8075, 0xf569, 0x8070, 0xf59b, 0x806c,
- 0xf5cd, 0x8068, 0xf5ff, 0x8064, 0xf631, 0x8060, 0xf663, 0x805d,
- 0xf695, 0x8059, 0xf6c8, 0x8055, 0xf6fa, 0x8052, 0xf72c, 0x804e,
- 0xf75e, 0x804b, 0xf790, 0x8047, 0xf7c2, 0x8044, 0xf7f4, 0x8041,
- 0xf827, 0x803e, 0xf859, 0x803b, 0xf88b, 0x8038, 0xf8bd, 0x8035,
- 0xf8ef, 0x8032, 0xf922, 0x802f, 0xf954, 0x802d, 0xf986, 0x802a,
- 0xf9b8, 0x8027, 0xf9ea, 0x8025, 0xfa1d, 0x8023, 0xfa4f, 0x8020,
- 0xfa81, 0x801e, 0xfab3, 0x801c, 0xfae5, 0x801a, 0xfb18, 0x8018,
- 0xfb4a, 0x8016, 0xfb7c, 0x8014, 0xfbae, 0x8013, 0xfbe1, 0x8011,
- 0xfc13, 0x800f, 0xfc45, 0x800e, 0xfc77, 0x800c, 0xfcaa, 0x800b,
- 0xfcdc, 0x800a, 0xfd0e, 0x8009, 0xfd40, 0x8008, 0xfd73, 0x8007,
- 0xfda5, 0x8006, 0xfdd7, 0x8005, 0xfe09, 0x8004, 0xfe3c, 0x8003,
- 0xfe6e, 0x8002, 0xfea0, 0x8002, 0xfed2, 0x8001, 0xff05, 0x8001,
- 0xff37, 0x8001, 0xff69, 0x8000, 0xff9b, 0x8000, 0xffce, 0x8000,
-};
+const q15_t twiddleCoef_4096_q15[6144] =
+{
+ 0x7FFF, 0x0000,
+ 0x7FFF, 0x0032,
+ 0x7FFF, 0x0064,
+ 0x7FFF, 0x0096,
+ 0x7FFF, 0x00C9,
+ 0x7FFF, 0x00FB,
+ 0x7FFE, 0x012D,
+ 0x7FFE, 0x015F,
+ 0x7FFD, 0x0192,
+ 0x7FFC, 0x01C4,
+ 0x7FFC, 0x01F6,
+ 0x7FFB, 0x0228,
+ 0x7FFA, 0x025B,
+ 0x7FF9, 0x028D,
+ 0x7FF8, 0x02BF,
+ 0x7FF7, 0x02F1,
+ 0x7FF6, 0x0324,
+ 0x7FF4, 0x0356,
+ 0x7FF3, 0x0388,
+ 0x7FF2, 0x03BA,
+ 0x7FF0, 0x03ED,
+ 0x7FEE, 0x041F,
+ 0x7FED, 0x0451,
+ 0x7FEB, 0x0483,
+ 0x7FE9, 0x04B6,
+ 0x7FE7, 0x04E8,
+ 0x7FE5, 0x051A,
+ 0x7FE3, 0x054C,
+ 0x7FE1, 0x057F,
+ 0x7FDF, 0x05B1,
+ 0x7FDD, 0x05E3,
+ 0x7FDA, 0x0615,
+ 0x7FD8, 0x0647,
+ 0x7FD6, 0x067A,
+ 0x7FD3, 0x06AC,
+ 0x7FD0, 0x06DE,
+ 0x7FCE, 0x0710,
+ 0x7FCB, 0x0742,
+ 0x7FC8, 0x0775,
+ 0x7FC5, 0x07A7,
+ 0x7FC2, 0x07D9,
+ 0x7FBF, 0x080B,
+ 0x7FBC, 0x083D,
+ 0x7FB8, 0x086F,
+ 0x7FB5, 0x08A2,
+ 0x7FB1, 0x08D4,
+ 0x7FAE, 0x0906,
+ 0x7FAA, 0x0938,
+ 0x7FA7, 0x096A,
+ 0x7FA3, 0x099C,
+ 0x7F9F, 0x09CE,
+ 0x7F9B, 0x0A00,
+ 0x7F97, 0x0A33,
+ 0x7F93, 0x0A65,
+ 0x7F8F, 0x0A97,
+ 0x7F8B, 0x0AC9,
+ 0x7F87, 0x0AFB,
+ 0x7F82, 0x0B2D,
+ 0x7F7E, 0x0B5F,
+ 0x7F79, 0x0B91,
+ 0x7F75, 0x0BC3,
+ 0x7F70, 0x0BF5,
+ 0x7F6B, 0x0C27,
+ 0x7F67, 0x0C59,
+ 0x7F62, 0x0C8B,
+ 0x7F5D, 0x0CBD,
+ 0x7F58, 0x0CEF,
+ 0x7F53, 0x0D21,
+ 0x7F4D, 0x0D53,
+ 0x7F48, 0x0D85,
+ 0x7F43, 0x0DB7,
+ 0x7F3D, 0x0DE9,
+ 0x7F38, 0x0E1B,
+ 0x7F32, 0x0E4D,
+ 0x7F2D, 0x0E7F,
+ 0x7F27, 0x0EB1,
+ 0x7F21, 0x0EE3,
+ 0x7F1B, 0x0F15,
+ 0x7F15, 0x0F47,
+ 0x7F0F, 0x0F79,
+ 0x7F09, 0x0FAB,
+ 0x7F03, 0x0FDD,
+ 0x7EFD, 0x100E,
+ 0x7EF6, 0x1040,
+ 0x7EF0, 0x1072,
+ 0x7EE9, 0x10A4,
+ 0x7EE3, 0x10D6,
+ 0x7EDC, 0x1108,
+ 0x7ED5, 0x1139,
+ 0x7ECF, 0x116B,
+ 0x7EC8, 0x119D,
+ 0x7EC1, 0x11CF,
+ 0x7EBA, 0x1201,
+ 0x7EB3, 0x1232,
+ 0x7EAB, 0x1264,
+ 0x7EA4, 0x1296,
+ 0x7E9D, 0x12C8,
+ 0x7E95, 0x12F9,
+ 0x7E8E, 0x132B,
+ 0x7E86, 0x135D,
+ 0x7E7F, 0x138E,
+ 0x7E77, 0x13C0,
+ 0x7E6F, 0x13F2,
+ 0x7E67, 0x1423,
+ 0x7E5F, 0x1455,
+ 0x7E57, 0x1487,
+ 0x7E4F, 0x14B8,
+ 0x7E47, 0x14EA,
+ 0x7E3F, 0x151B,
+ 0x7E37, 0x154D,
+ 0x7E2E, 0x157F,
+ 0x7E26, 0x15B0,
+ 0x7E1D, 0x15E2,
+ 0x7E14, 0x1613,
+ 0x7E0C, 0x1645,
+ 0x7E03, 0x1676,
+ 0x7DFA, 0x16A8,
+ 0x7DF1, 0x16D9,
+ 0x7DE8, 0x170A,
+ 0x7DDF, 0x173C,
+ 0x7DD6, 0x176D,
+ 0x7DCD, 0x179F,
+ 0x7DC3, 0x17D0,
+ 0x7DBA, 0x1802,
+ 0x7DB0, 0x1833,
+ 0x7DA7, 0x1864,
+ 0x7D9D, 0x1896,
+ 0x7D94, 0x18C7,
+ 0x7D8A, 0x18F8,
+ 0x7D80, 0x192A,
+ 0x7D76, 0x195B,
+ 0x7D6C, 0x198C,
+ 0x7D62, 0x19BD,
+ 0x7D58, 0x19EF,
+ 0x7D4E, 0x1A20,
+ 0x7D43, 0x1A51,
+ 0x7D39, 0x1A82,
+ 0x7D2F, 0x1AB3,
+ 0x7D24, 0x1AE4,
+ 0x7D19, 0x1B16,
+ 0x7D0F, 0x1B47,
+ 0x7D04, 0x1B78,
+ 0x7CF9, 0x1BA9,
+ 0x7CEE, 0x1BDA,
+ 0x7CE3, 0x1C0B,
+ 0x7CD8, 0x1C3C,
+ 0x7CCD, 0x1C6D,
+ 0x7CC2, 0x1C9E,
+ 0x7CB7, 0x1CCF,
+ 0x7CAB, 0x1D00,
+ 0x7CA0, 0x1D31,
+ 0x7C94, 0x1D62,
+ 0x7C89, 0x1D93,
+ 0x7C7D, 0x1DC4,
+ 0x7C71, 0x1DF5,
+ 0x7C66, 0x1E25,
+ 0x7C5A, 0x1E56,
+ 0x7C4E, 0x1E87,
+ 0x7C42, 0x1EB8,
+ 0x7C36, 0x1EE9,
+ 0x7C29, 0x1F19,
+ 0x7C1D, 0x1F4A,
+ 0x7C11, 0x1F7B,
+ 0x7C05, 0x1FAC,
+ 0x7BF8, 0x1FDC,
+ 0x7BEB, 0x200D,
+ 0x7BDF, 0x203E,
+ 0x7BD2, 0x206E,
+ 0x7BC5, 0x209F,
+ 0x7BB9, 0x20D0,
+ 0x7BAC, 0x2100,
+ 0x7B9F, 0x2131,
+ 0x7B92, 0x2161,
+ 0x7B84, 0x2192,
+ 0x7B77, 0x21C2,
+ 0x7B6A, 0x21F3,
+ 0x7B5D, 0x2223,
+ 0x7B4F, 0x2254,
+ 0x7B42, 0x2284,
+ 0x7B34, 0x22B4,
+ 0x7B26, 0x22E5,
+ 0x7B19, 0x2315,
+ 0x7B0B, 0x2345,
+ 0x7AFD, 0x2376,
+ 0x7AEF, 0x23A6,
+ 0x7AE1, 0x23D6,
+ 0x7AD3, 0x2407,
+ 0x7AC5, 0x2437,
+ 0x7AB6, 0x2467,
+ 0x7AA8, 0x2497,
+ 0x7A9A, 0x24C7,
+ 0x7A8B, 0x24F7,
+ 0x7A7D, 0x2528,
+ 0x7A6E, 0x2558,
+ 0x7A5F, 0x2588,
+ 0x7A50, 0x25B8,
+ 0x7A42, 0x25E8,
+ 0x7A33, 0x2618,
+ 0x7A24, 0x2648,
+ 0x7A15, 0x2678,
+ 0x7A05, 0x26A8,
+ 0x79F6, 0x26D8,
+ 0x79E7, 0x2707,
+ 0x79D8, 0x2737,
+ 0x79C8, 0x2767,
+ 0x79B9, 0x2797,
+ 0x79A9, 0x27C7,
+ 0x7999, 0x27F6,
+ 0x798A, 0x2826,
+ 0x797A, 0x2856,
+ 0x796A, 0x2886,
+ 0x795A, 0x28B5,
+ 0x794A, 0x28E5,
+ 0x793A, 0x2915,
+ 0x792A, 0x2944,
+ 0x7919, 0x2974,
+ 0x7909, 0x29A3,
+ 0x78F9, 0x29D3,
+ 0x78E8, 0x2A02,
+ 0x78D8, 0x2A32,
+ 0x78C7, 0x2A61,
+ 0x78B6, 0x2A91,
+ 0x78A6, 0x2AC0,
+ 0x7895, 0x2AEF,
+ 0x7884, 0x2B1F,
+ 0x7873, 0x2B4E,
+ 0x7862, 0x2B7D,
+ 0x7851, 0x2BAD,
+ 0x7840, 0x2BDC,
+ 0x782E, 0x2C0B,
+ 0x781D, 0x2C3A,
+ 0x780C, 0x2C69,
+ 0x77FA, 0x2C98,
+ 0x77E9, 0x2CC8,
+ 0x77D7, 0x2CF7,
+ 0x77C5, 0x2D26,
+ 0x77B4, 0x2D55,
+ 0x77A2, 0x2D84,
+ 0x7790, 0x2DB3,
+ 0x777E, 0x2DE2,
+ 0x776C, 0x2E11,
+ 0x775A, 0x2E3F,
+ 0x7747, 0x2E6E,
+ 0x7735, 0x2E9D,
+ 0x7723, 0x2ECC,
+ 0x7710, 0x2EFB,
+ 0x76FE, 0x2F29,
+ 0x76EB, 0x2F58,
+ 0x76D9, 0x2F87,
+ 0x76C6, 0x2FB5,
+ 0x76B3, 0x2FE4,
+ 0x76A0, 0x3013,
+ 0x768E, 0x3041,
+ 0x767B, 0x3070,
+ 0x7668, 0x309E,
+ 0x7654, 0x30CD,
+ 0x7641, 0x30FB,
+ 0x762E, 0x312A,
+ 0x761B, 0x3158,
+ 0x7607, 0x3186,
+ 0x75F4, 0x31B5,
+ 0x75E0, 0x31E3,
+ 0x75CC, 0x3211,
+ 0x75B9, 0x3240,
+ 0x75A5, 0x326E,
+ 0x7591, 0x329C,
+ 0x757D, 0x32CA,
+ 0x7569, 0x32F8,
+ 0x7555, 0x3326,
+ 0x7541, 0x3354,
+ 0x752D, 0x3382,
+ 0x7519, 0x33B0,
+ 0x7504, 0x33DE,
+ 0x74F0, 0x340C,
+ 0x74DB, 0x343A,
+ 0x74C7, 0x3468,
+ 0x74B2, 0x3496,
+ 0x749E, 0x34C4,
+ 0x7489, 0x34F2,
+ 0x7474, 0x351F,
+ 0x745F, 0x354D,
+ 0x744A, 0x357B,
+ 0x7435, 0x35A8,
+ 0x7420, 0x35D6,
+ 0x740B, 0x3604,
+ 0x73F6, 0x3631,
+ 0x73E0, 0x365F,
+ 0x73CB, 0x368C,
+ 0x73B5, 0x36BA,
+ 0x73A0, 0x36E7,
+ 0x738A, 0x3714,
+ 0x7375, 0x3742,
+ 0x735F, 0x376F,
+ 0x7349, 0x379C,
+ 0x7333, 0x37CA,
+ 0x731D, 0x37F7,
+ 0x7307, 0x3824,
+ 0x72F1, 0x3851,
+ 0x72DB, 0x387E,
+ 0x72C5, 0x38AB,
+ 0x72AF, 0x38D8,
+ 0x7298, 0x3906,
+ 0x7282, 0x3932,
+ 0x726B, 0x395F,
+ 0x7255, 0x398C,
+ 0x723E, 0x39B9,
+ 0x7227, 0x39E6,
+ 0x7211, 0x3A13,
+ 0x71FA, 0x3A40,
+ 0x71E3, 0x3A6C,
+ 0x71CC, 0x3A99,
+ 0x71B5, 0x3AC6,
+ 0x719E, 0x3AF2,
+ 0x7186, 0x3B1F,
+ 0x716F, 0x3B4C,
+ 0x7158, 0x3B78,
+ 0x7141, 0x3BA5,
+ 0x7129, 0x3BD1,
+ 0x7112, 0x3BFD,
+ 0x70FA, 0x3C2A,
+ 0x70E2, 0x3C56,
+ 0x70CB, 0x3C83,
+ 0x70B3, 0x3CAF,
+ 0x709B, 0x3CDB,
+ 0x7083, 0x3D07,
+ 0x706B, 0x3D33,
+ 0x7053, 0x3D60,
+ 0x703B, 0x3D8C,
+ 0x7023, 0x3DB8,
+ 0x700A, 0x3DE4,
+ 0x6FF2, 0x3E10,
+ 0x6FDA, 0x3E3C,
+ 0x6FC1, 0x3E68,
+ 0x6FA9, 0x3E93,
+ 0x6F90, 0x3EBF,
+ 0x6F77, 0x3EEB,
+ 0x6F5F, 0x3F17,
+ 0x6F46, 0x3F43,
+ 0x6F2D, 0x3F6E,
+ 0x6F14, 0x3F9A,
+ 0x6EFB, 0x3FC5,
+ 0x6EE2, 0x3FF1,
+ 0x6EC9, 0x401D,
+ 0x6EAF, 0x4048,
+ 0x6E96, 0x4073,
+ 0x6E7D, 0x409F,
+ 0x6E63, 0x40CA,
+ 0x6E4A, 0x40F6,
+ 0x6E30, 0x4121,
+ 0x6E17, 0x414C,
+ 0x6DFD, 0x4177,
+ 0x6DE3, 0x41A2,
+ 0x6DCA, 0x41CE,
+ 0x6DB0, 0x41F9,
+ 0x6D96, 0x4224,
+ 0x6D7C, 0x424F,
+ 0x6D62, 0x427A,
+ 0x6D48, 0x42A5,
+ 0x6D2D, 0x42D0,
+ 0x6D13, 0x42FA,
+ 0x6CF9, 0x4325,
+ 0x6CDE, 0x4350,
+ 0x6CC4, 0x437B,
+ 0x6CA9, 0x43A5,
+ 0x6C8F, 0x43D0,
+ 0x6C74, 0x43FB,
+ 0x6C59, 0x4425,
+ 0x6C3F, 0x4450,
+ 0x6C24, 0x447A,
+ 0x6C09, 0x44A5,
+ 0x6BEE, 0x44CF,
+ 0x6BD3, 0x44FA,
+ 0x6BB8, 0x4524,
+ 0x6B9C, 0x454E,
+ 0x6B81, 0x4578,
+ 0x6B66, 0x45A3,
+ 0x6B4A, 0x45CD,
+ 0x6B2F, 0x45F7,
+ 0x6B13, 0x4621,
+ 0x6AF8, 0x464B,
+ 0x6ADC, 0x4675,
+ 0x6AC1, 0x469F,
+ 0x6AA5, 0x46C9,
+ 0x6A89, 0x46F3,
+ 0x6A6D, 0x471C,
+ 0x6A51, 0x4746,
+ 0x6A35, 0x4770,
+ 0x6A19, 0x479A,
+ 0x69FD, 0x47C3,
+ 0x69E1, 0x47ED,
+ 0x69C4, 0x4816,
+ 0x69A8, 0x4840,
+ 0x698C, 0x4869,
+ 0x696F, 0x4893,
+ 0x6953, 0x48BC,
+ 0x6936, 0x48E6,
+ 0x6919, 0x490F,
+ 0x68FD, 0x4938,
+ 0x68E0, 0x4961,
+ 0x68C3, 0x498A,
+ 0x68A6, 0x49B4,
+ 0x6889, 0x49DD,
+ 0x686C, 0x4A06,
+ 0x684F, 0x4A2F,
+ 0x6832, 0x4A58,
+ 0x6815, 0x4A81,
+ 0x67F7, 0x4AA9,
+ 0x67DA, 0x4AD2,
+ 0x67BD, 0x4AFB,
+ 0x679F, 0x4B24,
+ 0x6782, 0x4B4C,
+ 0x6764, 0x4B75,
+ 0x6746, 0x4B9E,
+ 0x6729, 0x4BC6,
+ 0x670B, 0x4BEF,
+ 0x66ED, 0x4C17,
+ 0x66CF, 0x4C3F,
+ 0x66B1, 0x4C68,
+ 0x6693, 0x4C90,
+ 0x6675, 0x4CB8,
+ 0x6657, 0x4CE1,
+ 0x6639, 0x4D09,
+ 0x661A, 0x4D31,
+ 0x65FC, 0x4D59,
+ 0x65DD, 0x4D81,
+ 0x65BF, 0x4DA9,
+ 0x65A0, 0x4DD1,
+ 0x6582, 0x4DF9,
+ 0x6563, 0x4E21,
+ 0x6545, 0x4E48,
+ 0x6526, 0x4E70,
+ 0x6507, 0x4E98,
+ 0x64E8, 0x4EBF,
+ 0x64C9, 0x4EE7,
+ 0x64AA, 0x4F0F,
+ 0x648B, 0x4F36,
+ 0x646C, 0x4F5E,
+ 0x644D, 0x4F85,
+ 0x642D, 0x4FAC,
+ 0x640E, 0x4FD4,
+ 0x63EF, 0x4FFB,
+ 0x63CF, 0x5022,
+ 0x63B0, 0x5049,
+ 0x6390, 0x5070,
+ 0x6371, 0x5097,
+ 0x6351, 0x50BF,
+ 0x6331, 0x50E5,
+ 0x6311, 0x510C,
+ 0x62F2, 0x5133,
+ 0x62D2, 0x515A,
+ 0x62B2, 0x5181,
+ 0x6292, 0x51A8,
+ 0x6271, 0x51CE,
+ 0x6251, 0x51F5,
+ 0x6231, 0x521C,
+ 0x6211, 0x5242,
+ 0x61F1, 0x5269,
+ 0x61D0, 0x528F,
+ 0x61B0, 0x52B5,
+ 0x618F, 0x52DC,
+ 0x616F, 0x5302,
+ 0x614E, 0x5328,
+ 0x612D, 0x534E,
+ 0x610D, 0x5375,
+ 0x60EC, 0x539B,
+ 0x60CB, 0x53C1,
+ 0x60AA, 0x53E7,
+ 0x6089, 0x540D,
+ 0x6068, 0x5433,
+ 0x6047, 0x5458,
+ 0x6026, 0x547E,
+ 0x6004, 0x54A4,
+ 0x5FE3, 0x54CA,
+ 0x5FC2, 0x54EF,
+ 0x5FA0, 0x5515,
+ 0x5F7F, 0x553A,
+ 0x5F5E, 0x5560,
+ 0x5F3C, 0x5585,
+ 0x5F1A, 0x55AB,
+ 0x5EF9, 0x55D0,
+ 0x5ED7, 0x55F5,
+ 0x5EB5, 0x561A,
+ 0x5E93, 0x5640,
+ 0x5E71, 0x5665,
+ 0x5E50, 0x568A,
+ 0x5E2D, 0x56AF,
+ 0x5E0B, 0x56D4,
+ 0x5DE9, 0x56F9,
+ 0x5DC7, 0x571D,
+ 0x5DA5, 0x5742,
+ 0x5D83, 0x5767,
+ 0x5D60, 0x578C,
+ 0x5D3E, 0x57B0,
+ 0x5D1B, 0x57D5,
+ 0x5CF9, 0x57F9,
+ 0x5CD6, 0x581E,
+ 0x5CB4, 0x5842,
+ 0x5C91, 0x5867,
+ 0x5C6E, 0x588B,
+ 0x5C4B, 0x58AF,
+ 0x5C29, 0x58D4,
+ 0x5C06, 0x58F8,
+ 0x5BE3, 0x591C,
+ 0x5BC0, 0x5940,
+ 0x5B9D, 0x5964,
+ 0x5B79, 0x5988,
+ 0x5B56, 0x59AC,
+ 0x5B33, 0x59D0,
+ 0x5B10, 0x59F3,
+ 0x5AEC, 0x5A17,
+ 0x5AC9, 0x5A3B,
+ 0x5AA5, 0x5A5E,
+ 0x5A82, 0x5A82,
+ 0x5A5E, 0x5AA5,
+ 0x5A3B, 0x5AC9,
+ 0x5A17, 0x5AEC,
+ 0x59F3, 0x5B10,
+ 0x59D0, 0x5B33,
+ 0x59AC, 0x5B56,
+ 0x5988, 0x5B79,
+ 0x5964, 0x5B9D,
+ 0x5940, 0x5BC0,
+ 0x591C, 0x5BE3,
+ 0x58F8, 0x5C06,
+ 0x58D4, 0x5C29,
+ 0x58AF, 0x5C4B,
+ 0x588B, 0x5C6E,
+ 0x5867, 0x5C91,
+ 0x5842, 0x5CB4,
+ 0x581E, 0x5CD6,
+ 0x57F9, 0x5CF9,
+ 0x57D5, 0x5D1B,
+ 0x57B0, 0x5D3E,
+ 0x578C, 0x5D60,
+ 0x5767, 0x5D83,
+ 0x5742, 0x5DA5,
+ 0x571D, 0x5DC7,
+ 0x56F9, 0x5DE9,
+ 0x56D4, 0x5E0B,
+ 0x56AF, 0x5E2D,
+ 0x568A, 0x5E50,
+ 0x5665, 0x5E71,
+ 0x5640, 0x5E93,
+ 0x561A, 0x5EB5,
+ 0x55F5, 0x5ED7,
+ 0x55D0, 0x5EF9,
+ 0x55AB, 0x5F1A,
+ 0x5585, 0x5F3C,
+ 0x5560, 0x5F5E,
+ 0x553A, 0x5F7F,
+ 0x5515, 0x5FA0,
+ 0x54EF, 0x5FC2,
+ 0x54CA, 0x5FE3,
+ 0x54A4, 0x6004,
+ 0x547E, 0x6026,
+ 0x5458, 0x6047,
+ 0x5433, 0x6068,
+ 0x540D, 0x6089,
+ 0x53E7, 0x60AA,
+ 0x53C1, 0x60CB,
+ 0x539B, 0x60EC,
+ 0x5375, 0x610D,
+ 0x534E, 0x612D,
+ 0x5328, 0x614E,
+ 0x5302, 0x616F,
+ 0x52DC, 0x618F,
+ 0x52B5, 0x61B0,
+ 0x528F, 0x61D0,
+ 0x5269, 0x61F1,
+ 0x5242, 0x6211,
+ 0x521C, 0x6231,
+ 0x51F5, 0x6251,
+ 0x51CE, 0x6271,
+ 0x51A8, 0x6292,
+ 0x5181, 0x62B2,
+ 0x515A, 0x62D2,
+ 0x5133, 0x62F2,
+ 0x510C, 0x6311,
+ 0x50E5, 0x6331,
+ 0x50BF, 0x6351,
+ 0x5097, 0x6371,
+ 0x5070, 0x6390,
+ 0x5049, 0x63B0,
+ 0x5022, 0x63CF,
+ 0x4FFB, 0x63EF,
+ 0x4FD4, 0x640E,
+ 0x4FAC, 0x642D,
+ 0x4F85, 0x644D,
+ 0x4F5E, 0x646C,
+ 0x4F36, 0x648B,
+ 0x4F0F, 0x64AA,
+ 0x4EE7, 0x64C9,
+ 0x4EBF, 0x64E8,
+ 0x4E98, 0x6507,
+ 0x4E70, 0x6526,
+ 0x4E48, 0x6545,
+ 0x4E21, 0x6563,
+ 0x4DF9, 0x6582,
+ 0x4DD1, 0x65A0,
+ 0x4DA9, 0x65BF,
+ 0x4D81, 0x65DD,
+ 0x4D59, 0x65FC,
+ 0x4D31, 0x661A,
+ 0x4D09, 0x6639,
+ 0x4CE1, 0x6657,
+ 0x4CB8, 0x6675,
+ 0x4C90, 0x6693,
+ 0x4C68, 0x66B1,
+ 0x4C3F, 0x66CF,
+ 0x4C17, 0x66ED,
+ 0x4BEF, 0x670B,
+ 0x4BC6, 0x6729,
+ 0x4B9E, 0x6746,
+ 0x4B75, 0x6764,
+ 0x4B4C, 0x6782,
+ 0x4B24, 0x679F,
+ 0x4AFB, 0x67BD,
+ 0x4AD2, 0x67DA,
+ 0x4AA9, 0x67F7,
+ 0x4A81, 0x6815,
+ 0x4A58, 0x6832,
+ 0x4A2F, 0x684F,
+ 0x4A06, 0x686C,
+ 0x49DD, 0x6889,
+ 0x49B4, 0x68A6,
+ 0x498A, 0x68C3,
+ 0x4961, 0x68E0,
+ 0x4938, 0x68FD,
+ 0x490F, 0x6919,
+ 0x48E6, 0x6936,
+ 0x48BC, 0x6953,
+ 0x4893, 0x696F,
+ 0x4869, 0x698C,
+ 0x4840, 0x69A8,
+ 0x4816, 0x69C4,
+ 0x47ED, 0x69E1,
+ 0x47C3, 0x69FD,
+ 0x479A, 0x6A19,
+ 0x4770, 0x6A35,
+ 0x4746, 0x6A51,
+ 0x471C, 0x6A6D,
+ 0x46F3, 0x6A89,
+ 0x46C9, 0x6AA5,
+ 0x469F, 0x6AC1,
+ 0x4675, 0x6ADC,
+ 0x464B, 0x6AF8,
+ 0x4621, 0x6B13,
+ 0x45F7, 0x6B2F,
+ 0x45CD, 0x6B4A,
+ 0x45A3, 0x6B66,
+ 0x4578, 0x6B81,
+ 0x454E, 0x6B9C,
+ 0x4524, 0x6BB8,
+ 0x44FA, 0x6BD3,
+ 0x44CF, 0x6BEE,
+ 0x44A5, 0x6C09,
+ 0x447A, 0x6C24,
+ 0x4450, 0x6C3F,
+ 0x4425, 0x6C59,
+ 0x43FB, 0x6C74,
+ 0x43D0, 0x6C8F,
+ 0x43A5, 0x6CA9,
+ 0x437B, 0x6CC4,
+ 0x4350, 0x6CDE,
+ 0x4325, 0x6CF9,
+ 0x42FA, 0x6D13,
+ 0x42D0, 0x6D2D,
+ 0x42A5, 0x6D48,
+ 0x427A, 0x6D62,
+ 0x424F, 0x6D7C,
+ 0x4224, 0x6D96,
+ 0x41F9, 0x6DB0,
+ 0x41CE, 0x6DCA,
+ 0x41A2, 0x6DE3,
+ 0x4177, 0x6DFD,
+ 0x414C, 0x6E17,
+ 0x4121, 0x6E30,
+ 0x40F6, 0x6E4A,
+ 0x40CA, 0x6E63,
+ 0x409F, 0x6E7D,
+ 0x4073, 0x6E96,
+ 0x4048, 0x6EAF,
+ 0x401D, 0x6EC9,
+ 0x3FF1, 0x6EE2,
+ 0x3FC5, 0x6EFB,
+ 0x3F9A, 0x6F14,
+ 0x3F6E, 0x6F2D,
+ 0x3F43, 0x6F46,
+ 0x3F17, 0x6F5F,
+ 0x3EEB, 0x6F77,
+ 0x3EBF, 0x6F90,
+ 0x3E93, 0x6FA9,
+ 0x3E68, 0x6FC1,
+ 0x3E3C, 0x6FDA,
+ 0x3E10, 0x6FF2,
+ 0x3DE4, 0x700A,
+ 0x3DB8, 0x7023,
+ 0x3D8C, 0x703B,
+ 0x3D60, 0x7053,
+ 0x3D33, 0x706B,
+ 0x3D07, 0x7083,
+ 0x3CDB, 0x709B,
+ 0x3CAF, 0x70B3,
+ 0x3C83, 0x70CB,
+ 0x3C56, 0x70E2,
+ 0x3C2A, 0x70FA,
+ 0x3BFD, 0x7112,
+ 0x3BD1, 0x7129,
+ 0x3BA5, 0x7141,
+ 0x3B78, 0x7158,
+ 0x3B4C, 0x716F,
+ 0x3B1F, 0x7186,
+ 0x3AF2, 0x719E,
+ 0x3AC6, 0x71B5,
+ 0x3A99, 0x71CC,
+ 0x3A6C, 0x71E3,
+ 0x3A40, 0x71FA,
+ 0x3A13, 0x7211,
+ 0x39E6, 0x7227,
+ 0x39B9, 0x723E,
+ 0x398C, 0x7255,
+ 0x395F, 0x726B,
+ 0x3932, 0x7282,
+ 0x3906, 0x7298,
+ 0x38D8, 0x72AF,
+ 0x38AB, 0x72C5,
+ 0x387E, 0x72DB,
+ 0x3851, 0x72F1,
+ 0x3824, 0x7307,
+ 0x37F7, 0x731D,
+ 0x37CA, 0x7333,
+ 0x379C, 0x7349,
+ 0x376F, 0x735F,
+ 0x3742, 0x7375,
+ 0x3714, 0x738A,
+ 0x36E7, 0x73A0,
+ 0x36BA, 0x73B5,
+ 0x368C, 0x73CB,
+ 0x365F, 0x73E0,
+ 0x3631, 0x73F6,
+ 0x3604, 0x740B,
+ 0x35D6, 0x7420,
+ 0x35A8, 0x7435,
+ 0x357B, 0x744A,
+ 0x354D, 0x745F,
+ 0x351F, 0x7474,
+ 0x34F2, 0x7489,
+ 0x34C4, 0x749E,
+ 0x3496, 0x74B2,
+ 0x3468, 0x74C7,
+ 0x343A, 0x74DB,
+ 0x340C, 0x74F0,
+ 0x33DE, 0x7504,
+ 0x33B0, 0x7519,
+ 0x3382, 0x752D,
+ 0x3354, 0x7541,
+ 0x3326, 0x7555,
+ 0x32F8, 0x7569,
+ 0x32CA, 0x757D,
+ 0x329C, 0x7591,
+ 0x326E, 0x75A5,
+ 0x3240, 0x75B9,
+ 0x3211, 0x75CC,
+ 0x31E3, 0x75E0,
+ 0x31B5, 0x75F4,
+ 0x3186, 0x7607,
+ 0x3158, 0x761B,
+ 0x312A, 0x762E,
+ 0x30FB, 0x7641,
+ 0x30CD, 0x7654,
+ 0x309E, 0x7668,
+ 0x3070, 0x767B,
+ 0x3041, 0x768E,
+ 0x3013, 0x76A0,
+ 0x2FE4, 0x76B3,
+ 0x2FB5, 0x76C6,
+ 0x2F87, 0x76D9,
+ 0x2F58, 0x76EB,
+ 0x2F29, 0x76FE,
+ 0x2EFB, 0x7710,
+ 0x2ECC, 0x7723,
+ 0x2E9D, 0x7735,
+ 0x2E6E, 0x7747,
+ 0x2E3F, 0x775A,
+ 0x2E11, 0x776C,
+ 0x2DE2, 0x777E,
+ 0x2DB3, 0x7790,
+ 0x2D84, 0x77A2,
+ 0x2D55, 0x77B4,
+ 0x2D26, 0x77C5,
+ 0x2CF7, 0x77D7,
+ 0x2CC8, 0x77E9,
+ 0x2C98, 0x77FA,
+ 0x2C69, 0x780C,
+ 0x2C3A, 0x781D,
+ 0x2C0B, 0x782E,
+ 0x2BDC, 0x7840,
+ 0x2BAD, 0x7851,
+ 0x2B7D, 0x7862,
+ 0x2B4E, 0x7873,
+ 0x2B1F, 0x7884,
+ 0x2AEF, 0x7895,
+ 0x2AC0, 0x78A6,
+ 0x2A91, 0x78B6,
+ 0x2A61, 0x78C7,
+ 0x2A32, 0x78D8,
+ 0x2A02, 0x78E8,
+ 0x29D3, 0x78F9,
+ 0x29A3, 0x7909,
+ 0x2974, 0x7919,
+ 0x2944, 0x792A,
+ 0x2915, 0x793A,
+ 0x28E5, 0x794A,
+ 0x28B5, 0x795A,
+ 0x2886, 0x796A,
+ 0x2856, 0x797A,
+ 0x2826, 0x798A,
+ 0x27F6, 0x7999,
+ 0x27C7, 0x79A9,
+ 0x2797, 0x79B9,
+ 0x2767, 0x79C8,
+ 0x2737, 0x79D8,
+ 0x2707, 0x79E7,
+ 0x26D8, 0x79F6,
+ 0x26A8, 0x7A05,
+ 0x2678, 0x7A15,
+ 0x2648, 0x7A24,
+ 0x2618, 0x7A33,
+ 0x25E8, 0x7A42,
+ 0x25B8, 0x7A50,
+ 0x2588, 0x7A5F,
+ 0x2558, 0x7A6E,
+ 0x2528, 0x7A7D,
+ 0x24F7, 0x7A8B,
+ 0x24C7, 0x7A9A,
+ 0x2497, 0x7AA8,
+ 0x2467, 0x7AB6,
+ 0x2437, 0x7AC5,
+ 0x2407, 0x7AD3,
+ 0x23D6, 0x7AE1,
+ 0x23A6, 0x7AEF,
+ 0x2376, 0x7AFD,
+ 0x2345, 0x7B0B,
+ 0x2315, 0x7B19,
+ 0x22E5, 0x7B26,
+ 0x22B4, 0x7B34,
+ 0x2284, 0x7B42,
+ 0x2254, 0x7B4F,
+ 0x2223, 0x7B5D,
+ 0x21F3, 0x7B6A,
+ 0x21C2, 0x7B77,
+ 0x2192, 0x7B84,
+ 0x2161, 0x7B92,
+ 0x2131, 0x7B9F,
+ 0x2100, 0x7BAC,
+ 0x20D0, 0x7BB9,
+ 0x209F, 0x7BC5,
+ 0x206E, 0x7BD2,
+ 0x203E, 0x7BDF,
+ 0x200D, 0x7BEB,
+ 0x1FDC, 0x7BF8,
+ 0x1FAC, 0x7C05,
+ 0x1F7B, 0x7C11,
+ 0x1F4A, 0x7C1D,
+ 0x1F19, 0x7C29,
+ 0x1EE9, 0x7C36,
+ 0x1EB8, 0x7C42,
+ 0x1E87, 0x7C4E,
+ 0x1E56, 0x7C5A,
+ 0x1E25, 0x7C66,
+ 0x1DF5, 0x7C71,
+ 0x1DC4, 0x7C7D,
+ 0x1D93, 0x7C89,
+ 0x1D62, 0x7C94,
+ 0x1D31, 0x7CA0,
+ 0x1D00, 0x7CAB,
+ 0x1CCF, 0x7CB7,
+ 0x1C9E, 0x7CC2,
+ 0x1C6D, 0x7CCD,
+ 0x1C3C, 0x7CD8,
+ 0x1C0B, 0x7CE3,
+ 0x1BDA, 0x7CEE,
+ 0x1BA9, 0x7CF9,
+ 0x1B78, 0x7D04,
+ 0x1B47, 0x7D0F,
+ 0x1B16, 0x7D19,
+ 0x1AE4, 0x7D24,
+ 0x1AB3, 0x7D2F,
+ 0x1A82, 0x7D39,
+ 0x1A51, 0x7D43,
+ 0x1A20, 0x7D4E,
+ 0x19EF, 0x7D58,
+ 0x19BD, 0x7D62,
+ 0x198C, 0x7D6C,
+ 0x195B, 0x7D76,
+ 0x192A, 0x7D80,
+ 0x18F8, 0x7D8A,
+ 0x18C7, 0x7D94,
+ 0x1896, 0x7D9D,
+ 0x1864, 0x7DA7,
+ 0x1833, 0x7DB0,
+ 0x1802, 0x7DBA,
+ 0x17D0, 0x7DC3,
+ 0x179F, 0x7DCD,
+ 0x176D, 0x7DD6,
+ 0x173C, 0x7DDF,
+ 0x170A, 0x7DE8,
+ 0x16D9, 0x7DF1,
+ 0x16A8, 0x7DFA,
+ 0x1676, 0x7E03,
+ 0x1645, 0x7E0C,
+ 0x1613, 0x7E14,
+ 0x15E2, 0x7E1D,
+ 0x15B0, 0x7E26,
+ 0x157F, 0x7E2E,
+ 0x154D, 0x7E37,
+ 0x151B, 0x7E3F,
+ 0x14EA, 0x7E47,
+ 0x14B8, 0x7E4F,
+ 0x1487, 0x7E57,
+ 0x1455, 0x7E5F,
+ 0x1423, 0x7E67,
+ 0x13F2, 0x7E6F,
+ 0x13C0, 0x7E77,
+ 0x138E, 0x7E7F,
+ 0x135D, 0x7E86,
+ 0x132B, 0x7E8E,
+ 0x12F9, 0x7E95,
+ 0x12C8, 0x7E9D,
+ 0x1296, 0x7EA4,
+ 0x1264, 0x7EAB,
+ 0x1232, 0x7EB3,
+ 0x1201, 0x7EBA,
+ 0x11CF, 0x7EC1,
+ 0x119D, 0x7EC8,
+ 0x116B, 0x7ECF,
+ 0x1139, 0x7ED5,
+ 0x1108, 0x7EDC,
+ 0x10D6, 0x7EE3,
+ 0x10A4, 0x7EE9,
+ 0x1072, 0x7EF0,
+ 0x1040, 0x7EF6,
+ 0x100E, 0x7EFD,
+ 0x0FDD, 0x7F03,
+ 0x0FAB, 0x7F09,
+ 0x0F79, 0x7F0F,
+ 0x0F47, 0x7F15,
+ 0x0F15, 0x7F1B,
+ 0x0EE3, 0x7F21,
+ 0x0EB1, 0x7F27,
+ 0x0E7F, 0x7F2D,
+ 0x0E4D, 0x7F32,
+ 0x0E1B, 0x7F38,
+ 0x0DE9, 0x7F3D,
+ 0x0DB7, 0x7F43,
+ 0x0D85, 0x7F48,
+ 0x0D53, 0x7F4D,
+ 0x0D21, 0x7F53,
+ 0x0CEF, 0x7F58,
+ 0x0CBD, 0x7F5D,
+ 0x0C8B, 0x7F62,
+ 0x0C59, 0x7F67,
+ 0x0C27, 0x7F6B,
+ 0x0BF5, 0x7F70,
+ 0x0BC3, 0x7F75,
+ 0x0B91, 0x7F79,
+ 0x0B5F, 0x7F7E,
+ 0x0B2D, 0x7F82,
+ 0x0AFB, 0x7F87,
+ 0x0AC9, 0x7F8B,
+ 0x0A97, 0x7F8F,
+ 0x0A65, 0x7F93,
+ 0x0A33, 0x7F97,
+ 0x0A00, 0x7F9B,
+ 0x09CE, 0x7F9F,
+ 0x099C, 0x7FA3,
+ 0x096A, 0x7FA7,
+ 0x0938, 0x7FAA,
+ 0x0906, 0x7FAE,
+ 0x08D4, 0x7FB1,
+ 0x08A2, 0x7FB5,
+ 0x086F, 0x7FB8,
+ 0x083D, 0x7FBC,
+ 0x080B, 0x7FBF,
+ 0x07D9, 0x7FC2,
+ 0x07A7, 0x7FC5,
+ 0x0775, 0x7FC8,
+ 0x0742, 0x7FCB,
+ 0x0710, 0x7FCE,
+ 0x06DE, 0x7FD0,
+ 0x06AC, 0x7FD3,
+ 0x067A, 0x7FD6,
+ 0x0647, 0x7FD8,
+ 0x0615, 0x7FDA,
+ 0x05E3, 0x7FDD,
+ 0x05B1, 0x7FDF,
+ 0x057F, 0x7FE1,
+ 0x054C, 0x7FE3,
+ 0x051A, 0x7FE5,
+ 0x04E8, 0x7FE7,
+ 0x04B6, 0x7FE9,
+ 0x0483, 0x7FEB,
+ 0x0451, 0x7FED,
+ 0x041F, 0x7FEE,
+ 0x03ED, 0x7FF0,
+ 0x03BA, 0x7FF2,
+ 0x0388, 0x7FF3,
+ 0x0356, 0x7FF4,
+ 0x0324, 0x7FF6,
+ 0x02F1, 0x7FF7,
+ 0x02BF, 0x7FF8,
+ 0x028D, 0x7FF9,
+ 0x025B, 0x7FFA,
+ 0x0228, 0x7FFB,
+ 0x01F6, 0x7FFC,
+ 0x01C4, 0x7FFC,
+ 0x0192, 0x7FFD,
+ 0x015F, 0x7FFE,
+ 0x012D, 0x7FFE,
+ 0x00FB, 0x7FFF,
+ 0x00C9, 0x7FFF,
+ 0x0096, 0x7FFF,
+ 0x0064, 0x7FFF,
+ 0x0032, 0x7FFF,
+ 0x0000, 0x7FFF,
+ 0xFFCD, 0x7FFF,
+ 0xFF9B, 0x7FFF,
+ 0xFF69, 0x7FFF,
+ 0xFF36, 0x7FFF,
+ 0xFF04, 0x7FFF,
+ 0xFED2, 0x7FFE,
+ 0xFEA0, 0x7FFE,
+ 0xFE6D, 0x7FFD,
+ 0xFE3B, 0x7FFC,
+ 0xFE09, 0x7FFC,
+ 0xFDD7, 0x7FFB,
+ 0xFDA4, 0x7FFA,
+ 0xFD72, 0x7FF9,
+ 0xFD40, 0x7FF8,
+ 0xFD0E, 0x7FF7,
+ 0xFCDB, 0x7FF6,
+ 0xFCA9, 0x7FF4,
+ 0xFC77, 0x7FF3,
+ 0xFC45, 0x7FF2,
+ 0xFC12, 0x7FF0,
+ 0xFBE0, 0x7FEE,
+ 0xFBAE, 0x7FED,
+ 0xFB7C, 0x7FEB,
+ 0xFB49, 0x7FE9,
+ 0xFB17, 0x7FE7,
+ 0xFAE5, 0x7FE5,
+ 0xFAB3, 0x7FE3,
+ 0xFA80, 0x7FE1,
+ 0xFA4E, 0x7FDF,
+ 0xFA1C, 0x7FDD,
+ 0xF9EA, 0x7FDA,
+ 0xF9B8, 0x7FD8,
+ 0xF985, 0x7FD6,
+ 0xF953, 0x7FD3,
+ 0xF921, 0x7FD0,
+ 0xF8EF, 0x7FCE,
+ 0xF8BD, 0x7FCB,
+ 0xF88A, 0x7FC8,
+ 0xF858, 0x7FC5,
+ 0xF826, 0x7FC2,
+ 0xF7F4, 0x7FBF,
+ 0xF7C2, 0x7FBC,
+ 0xF790, 0x7FB8,
+ 0xF75D, 0x7FB5,
+ 0xF72B, 0x7FB1,
+ 0xF6F9, 0x7FAE,
+ 0xF6C7, 0x7FAA,
+ 0xF695, 0x7FA7,
+ 0xF663, 0x7FA3,
+ 0xF631, 0x7F9F,
+ 0xF5FF, 0x7F9B,
+ 0xF5CC, 0x7F97,
+ 0xF59A, 0x7F93,
+ 0xF568, 0x7F8F,
+ 0xF536, 0x7F8B,
+ 0xF504, 0x7F87,
+ 0xF4D2, 0x7F82,
+ 0xF4A0, 0x7F7E,
+ 0xF46E, 0x7F79,
+ 0xF43C, 0x7F75,
+ 0xF40A, 0x7F70,
+ 0xF3D8, 0x7F6B,
+ 0xF3A6, 0x7F67,
+ 0xF374, 0x7F62,
+ 0xF342, 0x7F5D,
+ 0xF310, 0x7F58,
+ 0xF2DE, 0x7F53,
+ 0xF2AC, 0x7F4D,
+ 0xF27A, 0x7F48,
+ 0xF248, 0x7F43,
+ 0xF216, 0x7F3D,
+ 0xF1E4, 0x7F38,
+ 0xF1B2, 0x7F32,
+ 0xF180, 0x7F2D,
+ 0xF14E, 0x7F27,
+ 0xF11C, 0x7F21,
+ 0xF0EA, 0x7F1B,
+ 0xF0B8, 0x7F15,
+ 0xF086, 0x7F0F,
+ 0xF054, 0x7F09,
+ 0xF022, 0x7F03,
+ 0xEFF1, 0x7EFD,
+ 0xEFBF, 0x7EF6,
+ 0xEF8D, 0x7EF0,
+ 0xEF5B, 0x7EE9,
+ 0xEF29, 0x7EE3,
+ 0xEEF7, 0x7EDC,
+ 0xEEC6, 0x7ED5,
+ 0xEE94, 0x7ECF,
+ 0xEE62, 0x7EC8,
+ 0xEE30, 0x7EC1,
+ 0xEDFE, 0x7EBA,
+ 0xEDCD, 0x7EB3,
+ 0xED9B, 0x7EAB,
+ 0xED69, 0x7EA4,
+ 0xED37, 0x7E9D,
+ 0xED06, 0x7E95,
+ 0xECD4, 0x7E8E,
+ 0xECA2, 0x7E86,
+ 0xEC71, 0x7E7F,
+ 0xEC3F, 0x7E77,
+ 0xEC0D, 0x7E6F,
+ 0xEBDC, 0x7E67,
+ 0xEBAA, 0x7E5F,
+ 0xEB78, 0x7E57,
+ 0xEB47, 0x7E4F,
+ 0xEB15, 0x7E47,
+ 0xEAE4, 0x7E3F,
+ 0xEAB2, 0x7E37,
+ 0xEA80, 0x7E2E,
+ 0xEA4F, 0x7E26,
+ 0xEA1D, 0x7E1D,
+ 0xE9EC, 0x7E14,
+ 0xE9BA, 0x7E0C,
+ 0xE989, 0x7E03,
+ 0xE957, 0x7DFA,
+ 0xE926, 0x7DF1,
+ 0xE8F5, 0x7DE8,
+ 0xE8C3, 0x7DDF,
+ 0xE892, 0x7DD6,
+ 0xE860, 0x7DCD,
+ 0xE82F, 0x7DC3,
+ 0xE7FD, 0x7DBA,
+ 0xE7CC, 0x7DB0,
+ 0xE79B, 0x7DA7,
+ 0xE769, 0x7D9D,
+ 0xE738, 0x7D94,
+ 0xE707, 0x7D8A,
+ 0xE6D5, 0x7D80,
+ 0xE6A4, 0x7D76,
+ 0xE673, 0x7D6C,
+ 0xE642, 0x7D62,
+ 0xE610, 0x7D58,
+ 0xE5DF, 0x7D4E,
+ 0xE5AE, 0x7D43,
+ 0xE57D, 0x7D39,
+ 0xE54C, 0x7D2F,
+ 0xE51B, 0x7D24,
+ 0xE4E9, 0x7D19,
+ 0xE4B8, 0x7D0F,
+ 0xE487, 0x7D04,
+ 0xE456, 0x7CF9,
+ 0xE425, 0x7CEE,
+ 0xE3F4, 0x7CE3,
+ 0xE3C3, 0x7CD8,
+ 0xE392, 0x7CCD,
+ 0xE361, 0x7CC2,
+ 0xE330, 0x7CB7,
+ 0xE2FF, 0x7CAB,
+ 0xE2CE, 0x7CA0,
+ 0xE29D, 0x7C94,
+ 0xE26C, 0x7C89,
+ 0xE23B, 0x7C7D,
+ 0xE20A, 0x7C71,
+ 0xE1DA, 0x7C66,
+ 0xE1A9, 0x7C5A,
+ 0xE178, 0x7C4E,
+ 0xE147, 0x7C42,
+ 0xE116, 0x7C36,
+ 0xE0E6, 0x7C29,
+ 0xE0B5, 0x7C1D,
+ 0xE084, 0x7C11,
+ 0xE053, 0x7C05,
+ 0xE023, 0x7BF8,
+ 0xDFF2, 0x7BEB,
+ 0xDFC1, 0x7BDF,
+ 0xDF91, 0x7BD2,
+ 0xDF60, 0x7BC5,
+ 0xDF2F, 0x7BB9,
+ 0xDEFF, 0x7BAC,
+ 0xDECE, 0x7B9F,
+ 0xDE9E, 0x7B92,
+ 0xDE6D, 0x7B84,
+ 0xDE3D, 0x7B77,
+ 0xDE0C, 0x7B6A,
+ 0xDDDC, 0x7B5D,
+ 0xDDAB, 0x7B4F,
+ 0xDD7B, 0x7B42,
+ 0xDD4B, 0x7B34,
+ 0xDD1A, 0x7B26,
+ 0xDCEA, 0x7B19,
+ 0xDCBA, 0x7B0B,
+ 0xDC89, 0x7AFD,
+ 0xDC59, 0x7AEF,
+ 0xDC29, 0x7AE1,
+ 0xDBF8, 0x7AD3,
+ 0xDBC8, 0x7AC5,
+ 0xDB98, 0x7AB6,
+ 0xDB68, 0x7AA8,
+ 0xDB38, 0x7A9A,
+ 0xDB08, 0x7A8B,
+ 0xDAD7, 0x7A7D,
+ 0xDAA7, 0x7A6E,
+ 0xDA77, 0x7A5F,
+ 0xDA47, 0x7A50,
+ 0xDA17, 0x7A42,
+ 0xD9E7, 0x7A33,
+ 0xD9B7, 0x7A24,
+ 0xD987, 0x7A15,
+ 0xD957, 0x7A05,
+ 0xD927, 0x79F6,
+ 0xD8F8, 0x79E7,
+ 0xD8C8, 0x79D8,
+ 0xD898, 0x79C8,
+ 0xD868, 0x79B9,
+ 0xD838, 0x79A9,
+ 0xD809, 0x7999,
+ 0xD7D9, 0x798A,
+ 0xD7A9, 0x797A,
+ 0xD779, 0x796A,
+ 0xD74A, 0x795A,
+ 0xD71A, 0x794A,
+ 0xD6EA, 0x793A,
+ 0xD6BB, 0x792A,
+ 0xD68B, 0x7919,
+ 0xD65C, 0x7909,
+ 0xD62C, 0x78F9,
+ 0xD5FD, 0x78E8,
+ 0xD5CD, 0x78D8,
+ 0xD59E, 0x78C7,
+ 0xD56E, 0x78B6,
+ 0xD53F, 0x78A6,
+ 0xD510, 0x7895,
+ 0xD4E0, 0x7884,
+ 0xD4B1, 0x7873,
+ 0xD482, 0x7862,
+ 0xD452, 0x7851,
+ 0xD423, 0x7840,
+ 0xD3F4, 0x782E,
+ 0xD3C5, 0x781D,
+ 0xD396, 0x780C,
+ 0xD367, 0x77FA,
+ 0xD337, 0x77E9,
+ 0xD308, 0x77D7,
+ 0xD2D9, 0x77C5,
+ 0xD2AA, 0x77B4,
+ 0xD27B, 0x77A2,
+ 0xD24C, 0x7790,
+ 0xD21D, 0x777E,
+ 0xD1EE, 0x776C,
+ 0xD1C0, 0x775A,
+ 0xD191, 0x7747,
+ 0xD162, 0x7735,
+ 0xD133, 0x7723,
+ 0xD104, 0x7710,
+ 0xD0D6, 0x76FE,
+ 0xD0A7, 0x76EB,
+ 0xD078, 0x76D9,
+ 0xD04A, 0x76C6,
+ 0xD01B, 0x76B3,
+ 0xCFEC, 0x76A0,
+ 0xCFBE, 0x768E,
+ 0xCF8F, 0x767B,
+ 0xCF61, 0x7668,
+ 0xCF32, 0x7654,
+ 0xCF04, 0x7641,
+ 0xCED5, 0x762E,
+ 0xCEA7, 0x761B,
+ 0xCE79, 0x7607,
+ 0xCE4A, 0x75F4,
+ 0xCE1C, 0x75E0,
+ 0xCDEE, 0x75CC,
+ 0xCDBF, 0x75B9,
+ 0xCD91, 0x75A5,
+ 0xCD63, 0x7591,
+ 0xCD35, 0x757D,
+ 0xCD07, 0x7569,
+ 0xCCD9, 0x7555,
+ 0xCCAB, 0x7541,
+ 0xCC7D, 0x752D,
+ 0xCC4F, 0x7519,
+ 0xCC21, 0x7504,
+ 0xCBF3, 0x74F0,
+ 0xCBC5, 0x74DB,
+ 0xCB97, 0x74C7,
+ 0xCB69, 0x74B2,
+ 0xCB3B, 0x749E,
+ 0xCB0D, 0x7489,
+ 0xCAE0, 0x7474,
+ 0xCAB2, 0x745F,
+ 0xCA84, 0x744A,
+ 0xCA57, 0x7435,
+ 0xCA29, 0x7420,
+ 0xC9FB, 0x740B,
+ 0xC9CE, 0x73F6,
+ 0xC9A0, 0x73E0,
+ 0xC973, 0x73CB,
+ 0xC945, 0x73B5,
+ 0xC918, 0x73A0,
+ 0xC8EB, 0x738A,
+ 0xC8BD, 0x7375,
+ 0xC890, 0x735F,
+ 0xC863, 0x7349,
+ 0xC835, 0x7333,
+ 0xC808, 0x731D,
+ 0xC7DB, 0x7307,
+ 0xC7AE, 0x72F1,
+ 0xC781, 0x72DB,
+ 0xC754, 0x72C5,
+ 0xC727, 0x72AF,
+ 0xC6F9, 0x7298,
+ 0xC6CD, 0x7282,
+ 0xC6A0, 0x726B,
+ 0xC673, 0x7255,
+ 0xC646, 0x723E,
+ 0xC619, 0x7227,
+ 0xC5EC, 0x7211,
+ 0xC5BF, 0x71FA,
+ 0xC593, 0x71E3,
+ 0xC566, 0x71CC,
+ 0xC539, 0x71B5,
+ 0xC50D, 0x719E,
+ 0xC4E0, 0x7186,
+ 0xC4B3, 0x716F,
+ 0xC487, 0x7158,
+ 0xC45A, 0x7141,
+ 0xC42E, 0x7129,
+ 0xC402, 0x7112,
+ 0xC3D5, 0x70FA,
+ 0xC3A9, 0x70E2,
+ 0xC37C, 0x70CB,
+ 0xC350, 0x70B3,
+ 0xC324, 0x709B,
+ 0xC2F8, 0x7083,
+ 0xC2CC, 0x706B,
+ 0xC29F, 0x7053,
+ 0xC273, 0x703B,
+ 0xC247, 0x7023,
+ 0xC21B, 0x700A,
+ 0xC1EF, 0x6FF2,
+ 0xC1C3, 0x6FDA,
+ 0xC197, 0x6FC1,
+ 0xC16C, 0x6FA9,
+ 0xC140, 0x6F90,
+ 0xC114, 0x6F77,
+ 0xC0E8, 0x6F5F,
+ 0xC0BC, 0x6F46,
+ 0xC091, 0x6F2D,
+ 0xC065, 0x6F14,
+ 0xC03A, 0x6EFB,
+ 0xC00E, 0x6EE2,
+ 0xBFE2, 0x6EC9,
+ 0xBFB7, 0x6EAF,
+ 0xBF8C, 0x6E96,
+ 0xBF60, 0x6E7D,
+ 0xBF35, 0x6E63,
+ 0xBF09, 0x6E4A,
+ 0xBEDE, 0x6E30,
+ 0xBEB3, 0x6E17,
+ 0xBE88, 0x6DFD,
+ 0xBE5D, 0x6DE3,
+ 0xBE31, 0x6DCA,
+ 0xBE06, 0x6DB0,
+ 0xBDDB, 0x6D96,
+ 0xBDB0, 0x6D7C,
+ 0xBD85, 0x6D62,
+ 0xBD5A, 0x6D48,
+ 0xBD2F, 0x6D2D,
+ 0xBD05, 0x6D13,
+ 0xBCDA, 0x6CF9,
+ 0xBCAF, 0x6CDE,
+ 0xBC84, 0x6CC4,
+ 0xBC5A, 0x6CA9,
+ 0xBC2F, 0x6C8F,
+ 0xBC04, 0x6C74,
+ 0xBBDA, 0x6C59,
+ 0xBBAF, 0x6C3F,
+ 0xBB85, 0x6C24,
+ 0xBB5A, 0x6C09,
+ 0xBB30, 0x6BEE,
+ 0xBB05, 0x6BD3,
+ 0xBADB, 0x6BB8,
+ 0xBAB1, 0x6B9C,
+ 0xBA87, 0x6B81,
+ 0xBA5C, 0x6B66,
+ 0xBA32, 0x6B4A,
+ 0xBA08, 0x6B2F,
+ 0xB9DE, 0x6B13,
+ 0xB9B4, 0x6AF8,
+ 0xB98A, 0x6ADC,
+ 0xB960, 0x6AC1,
+ 0xB936, 0x6AA5,
+ 0xB90C, 0x6A89,
+ 0xB8E3, 0x6A6D,
+ 0xB8B9, 0x6A51,
+ 0xB88F, 0x6A35,
+ 0xB865, 0x6A19,
+ 0xB83C, 0x69FD,
+ 0xB812, 0x69E1,
+ 0xB7E9, 0x69C4,
+ 0xB7BF, 0x69A8,
+ 0xB796, 0x698C,
+ 0xB76C, 0x696F,
+ 0xB743, 0x6953,
+ 0xB719, 0x6936,
+ 0xB6F0, 0x6919,
+ 0xB6C7, 0x68FD,
+ 0xB69E, 0x68E0,
+ 0xB675, 0x68C3,
+ 0xB64B, 0x68A6,
+ 0xB622, 0x6889,
+ 0xB5F9, 0x686C,
+ 0xB5D0, 0x684F,
+ 0xB5A7, 0x6832,
+ 0xB57E, 0x6815,
+ 0xB556, 0x67F7,
+ 0xB52D, 0x67DA,
+ 0xB504, 0x67BD,
+ 0xB4DB, 0x679F,
+ 0xB4B3, 0x6782,
+ 0xB48A, 0x6764,
+ 0xB461, 0x6746,
+ 0xB439, 0x6729,
+ 0xB410, 0x670B,
+ 0xB3E8, 0x66ED,
+ 0xB3C0, 0x66CF,
+ 0xB397, 0x66B1,
+ 0xB36F, 0x6693,
+ 0xB347, 0x6675,
+ 0xB31E, 0x6657,
+ 0xB2F6, 0x6639,
+ 0xB2CE, 0x661A,
+ 0xB2A6, 0x65FC,
+ 0xB27E, 0x65DD,
+ 0xB256, 0x65BF,
+ 0xB22E, 0x65A0,
+ 0xB206, 0x6582,
+ 0xB1DE, 0x6563,
+ 0xB1B7, 0x6545,
+ 0xB18F, 0x6526,
+ 0xB167, 0x6507,
+ 0xB140, 0x64E8,
+ 0xB118, 0x64C9,
+ 0xB0F0, 0x64AA,
+ 0xB0C9, 0x648B,
+ 0xB0A1, 0x646C,
+ 0xB07A, 0x644D,
+ 0xB053, 0x642D,
+ 0xB02B, 0x640E,
+ 0xB004, 0x63EF,
+ 0xAFDD, 0x63CF,
+ 0xAFB6, 0x63B0,
+ 0xAF8F, 0x6390,
+ 0xAF68, 0x6371,
+ 0xAF40, 0x6351,
+ 0xAF1A, 0x6331,
+ 0xAEF3, 0x6311,
+ 0xAECC, 0x62F2,
+ 0xAEA5, 0x62D2,
+ 0xAE7E, 0x62B2,
+ 0xAE57, 0x6292,
+ 0xAE31, 0x6271,
+ 0xAE0A, 0x6251,
+ 0xADE3, 0x6231,
+ 0xADBD, 0x6211,
+ 0xAD96, 0x61F1,
+ 0xAD70, 0x61D0,
+ 0xAD4A, 0x61B0,
+ 0xAD23, 0x618F,
+ 0xACFD, 0x616F,
+ 0xACD7, 0x614E,
+ 0xACB1, 0x612D,
+ 0xAC8A, 0x610D,
+ 0xAC64, 0x60EC,
+ 0xAC3E, 0x60CB,
+ 0xAC18, 0x60AA,
+ 0xABF2, 0x6089,
+ 0xABCC, 0x6068,
+ 0xABA7, 0x6047,
+ 0xAB81, 0x6026,
+ 0xAB5B, 0x6004,
+ 0xAB35, 0x5FE3,
+ 0xAB10, 0x5FC2,
+ 0xAAEA, 0x5FA0,
+ 0xAAC5, 0x5F7F,
+ 0xAA9F, 0x5F5E,
+ 0xAA7A, 0x5F3C,
+ 0xAA54, 0x5F1A,
+ 0xAA2F, 0x5EF9,
+ 0xAA0A, 0x5ED7,
+ 0xA9E5, 0x5EB5,
+ 0xA9BF, 0x5E93,
+ 0xA99A, 0x5E71,
+ 0xA975, 0x5E50,
+ 0xA950, 0x5E2D,
+ 0xA92B, 0x5E0B,
+ 0xA906, 0x5DE9,
+ 0xA8E2, 0x5DC7,
+ 0xA8BD, 0x5DA5,
+ 0xA898, 0x5D83,
+ 0xA873, 0x5D60,
+ 0xA84F, 0x5D3E,
+ 0xA82A, 0x5D1B,
+ 0xA806, 0x5CF9,
+ 0xA7E1, 0x5CD6,
+ 0xA7BD, 0x5CB4,
+ 0xA798, 0x5C91,
+ 0xA774, 0x5C6E,
+ 0xA750, 0x5C4B,
+ 0xA72B, 0x5C29,
+ 0xA707, 0x5C06,
+ 0xA6E3, 0x5BE3,
+ 0xA6BF, 0x5BC0,
+ 0xA69B, 0x5B9D,
+ 0xA677, 0x5B79,
+ 0xA653, 0x5B56,
+ 0xA62F, 0x5B33,
+ 0xA60C, 0x5B10,
+ 0xA5E8, 0x5AEC,
+ 0xA5C4, 0x5AC9,
+ 0xA5A1, 0x5AA5,
+ 0xA57D, 0x5A82,
+ 0xA55A, 0x5A5E,
+ 0xA536, 0x5A3B,
+ 0xA513, 0x5A17,
+ 0xA4EF, 0x59F3,
+ 0xA4CC, 0x59D0,
+ 0xA4A9, 0x59AC,
+ 0xA486, 0x5988,
+ 0xA462, 0x5964,
+ 0xA43F, 0x5940,
+ 0xA41C, 0x591C,
+ 0xA3F9, 0x58F8,
+ 0xA3D6, 0x58D4,
+ 0xA3B4, 0x58AF,
+ 0xA391, 0x588B,
+ 0xA36E, 0x5867,
+ 0xA34B, 0x5842,
+ 0xA329, 0x581E,
+ 0xA306, 0x57F9,
+ 0xA2E4, 0x57D5,
+ 0xA2C1, 0x57B0,
+ 0xA29F, 0x578C,
+ 0xA27C, 0x5767,
+ 0xA25A, 0x5742,
+ 0xA238, 0x571D,
+ 0xA216, 0x56F9,
+ 0xA1F4, 0x56D4,
+ 0xA1D2, 0x56AF,
+ 0xA1AF, 0x568A,
+ 0xA18E, 0x5665,
+ 0xA16C, 0x5640,
+ 0xA14A, 0x561A,
+ 0xA128, 0x55F5,
+ 0xA106, 0x55D0,
+ 0xA0E5, 0x55AB,
+ 0xA0C3, 0x5585,
+ 0xA0A1, 0x5560,
+ 0xA080, 0x553A,
+ 0xA05F, 0x5515,
+ 0xA03D, 0x54EF,
+ 0xA01C, 0x54CA,
+ 0x9FFB, 0x54A4,
+ 0x9FD9, 0x547E,
+ 0x9FB8, 0x5458,
+ 0x9F97, 0x5433,
+ 0x9F76, 0x540D,
+ 0x9F55, 0x53E7,
+ 0x9F34, 0x53C1,
+ 0x9F13, 0x539B,
+ 0x9EF2, 0x5375,
+ 0x9ED2, 0x534E,
+ 0x9EB1, 0x5328,
+ 0x9E90, 0x5302,
+ 0x9E70, 0x52DC,
+ 0x9E4F, 0x52B5,
+ 0x9E2F, 0x528F,
+ 0x9E0E, 0x5269,
+ 0x9DEE, 0x5242,
+ 0x9DCE, 0x521C,
+ 0x9DAE, 0x51F5,
+ 0x9D8E, 0x51CE,
+ 0x9D6D, 0x51A8,
+ 0x9D4D, 0x5181,
+ 0x9D2D, 0x515A,
+ 0x9D0D, 0x5133,
+ 0x9CEE, 0x510C,
+ 0x9CCE, 0x50E5,
+ 0x9CAE, 0x50BF,
+ 0x9C8E, 0x5097,
+ 0x9C6F, 0x5070,
+ 0x9C4F, 0x5049,
+ 0x9C30, 0x5022,
+ 0x9C10, 0x4FFB,
+ 0x9BF1, 0x4FD4,
+ 0x9BD2, 0x4FAC,
+ 0x9BB2, 0x4F85,
+ 0x9B93, 0x4F5E,
+ 0x9B74, 0x4F36,
+ 0x9B55, 0x4F0F,
+ 0x9B36, 0x4EE7,
+ 0x9B17, 0x4EBF,
+ 0x9AF8, 0x4E98,
+ 0x9AD9, 0x4E70,
+ 0x9ABA, 0x4E48,
+ 0x9A9C, 0x4E21,
+ 0x9A7D, 0x4DF9,
+ 0x9A5F, 0x4DD1,
+ 0x9A40, 0x4DA9,
+ 0x9A22, 0x4D81,
+ 0x9A03, 0x4D59,
+ 0x99E5, 0x4D31,
+ 0x99C6, 0x4D09,
+ 0x99A8, 0x4CE1,
+ 0x998A, 0x4CB8,
+ 0x996C, 0x4C90,
+ 0x994E, 0x4C68,
+ 0x9930, 0x4C3F,
+ 0x9912, 0x4C17,
+ 0x98F4, 0x4BEF,
+ 0x98D6, 0x4BC6,
+ 0x98B9, 0x4B9E,
+ 0x989B, 0x4B75,
+ 0x987D, 0x4B4C,
+ 0x9860, 0x4B24,
+ 0x9842, 0x4AFB,
+ 0x9825, 0x4AD2,
+ 0x9808, 0x4AA9,
+ 0x97EA, 0x4A81,
+ 0x97CD, 0x4A58,
+ 0x97B0, 0x4A2F,
+ 0x9793, 0x4A06,
+ 0x9776, 0x49DD,
+ 0x9759, 0x49B4,
+ 0x973C, 0x498A,
+ 0x971F, 0x4961,
+ 0x9702, 0x4938,
+ 0x96E6, 0x490F,
+ 0x96C9, 0x48E6,
+ 0x96AC, 0x48BC,
+ 0x9690, 0x4893,
+ 0x9673, 0x4869,
+ 0x9657, 0x4840,
+ 0x963B, 0x4816,
+ 0x961E, 0x47ED,
+ 0x9602, 0x47C3,
+ 0x95E6, 0x479A,
+ 0x95CA, 0x4770,
+ 0x95AE, 0x4746,
+ 0x9592, 0x471C,
+ 0x9576, 0x46F3,
+ 0x955A, 0x46C9,
+ 0x953E, 0x469F,
+ 0x9523, 0x4675,
+ 0x9507, 0x464B,
+ 0x94EC, 0x4621,
+ 0x94D0, 0x45F7,
+ 0x94B5, 0x45CD,
+ 0x9499, 0x45A3,
+ 0x947E, 0x4578,
+ 0x9463, 0x454E,
+ 0x9447, 0x4524,
+ 0x942C, 0x44FA,
+ 0x9411, 0x44CF,
+ 0x93F6, 0x44A5,
+ 0x93DB, 0x447A,
+ 0x93C0, 0x4450,
+ 0x93A6, 0x4425,
+ 0x938B, 0x43FB,
+ 0x9370, 0x43D0,
+ 0x9356, 0x43A5,
+ 0x933B, 0x437B,
+ 0x9321, 0x4350,
+ 0x9306, 0x4325,
+ 0x92EC, 0x42FA,
+ 0x92D2, 0x42D0,
+ 0x92B7, 0x42A5,
+ 0x929D, 0x427A,
+ 0x9283, 0x424F,
+ 0x9269, 0x4224,
+ 0x924F, 0x41F9,
+ 0x9235, 0x41CE,
+ 0x921C, 0x41A2,
+ 0x9202, 0x4177,
+ 0x91E8, 0x414C,
+ 0x91CF, 0x4121,
+ 0x91B5, 0x40F6,
+ 0x919C, 0x40CA,
+ 0x9182, 0x409F,
+ 0x9169, 0x4073,
+ 0x9150, 0x4048,
+ 0x9136, 0x401D,
+ 0x911D, 0x3FF1,
+ 0x9104, 0x3FC5,
+ 0x90EB, 0x3F9A,
+ 0x90D2, 0x3F6E,
+ 0x90B9, 0x3F43,
+ 0x90A0, 0x3F17,
+ 0x9088, 0x3EEB,
+ 0x906F, 0x3EBF,
+ 0x9056, 0x3E93,
+ 0x903E, 0x3E68,
+ 0x9025, 0x3E3C,
+ 0x900D, 0x3E10,
+ 0x8FF5, 0x3DE4,
+ 0x8FDC, 0x3DB8,
+ 0x8FC4, 0x3D8C,
+ 0x8FAC, 0x3D60,
+ 0x8F94, 0x3D33,
+ 0x8F7C, 0x3D07,
+ 0x8F64, 0x3CDB,
+ 0x8F4C, 0x3CAF,
+ 0x8F34, 0x3C83,
+ 0x8F1D, 0x3C56,
+ 0x8F05, 0x3C2A,
+ 0x8EED, 0x3BFD,
+ 0x8ED6, 0x3BD1,
+ 0x8EBE, 0x3BA5,
+ 0x8EA7, 0x3B78,
+ 0x8E90, 0x3B4C,
+ 0x8E79, 0x3B1F,
+ 0x8E61, 0x3AF2,
+ 0x8E4A, 0x3AC6,
+ 0x8E33, 0x3A99,
+ 0x8E1C, 0x3A6C,
+ 0x8E05, 0x3A40,
+ 0x8DEE, 0x3A13,
+ 0x8DD8, 0x39E6,
+ 0x8DC1, 0x39B9,
+ 0x8DAA, 0x398C,
+ 0x8D94, 0x395F,
+ 0x8D7D, 0x3932,
+ 0x8D67, 0x3906,
+ 0x8D50, 0x38D8,
+ 0x8D3A, 0x38AB,
+ 0x8D24, 0x387E,
+ 0x8D0E, 0x3851,
+ 0x8CF8, 0x3824,
+ 0x8CE2, 0x37F7,
+ 0x8CCC, 0x37CA,
+ 0x8CB6, 0x379C,
+ 0x8CA0, 0x376F,
+ 0x8C8A, 0x3742,
+ 0x8C75, 0x3714,
+ 0x8C5F, 0x36E7,
+ 0x8C4A, 0x36BA,
+ 0x8C34, 0x368C,
+ 0x8C1F, 0x365F,
+ 0x8C09, 0x3631,
+ 0x8BF4, 0x3604,
+ 0x8BDF, 0x35D6,
+ 0x8BCA, 0x35A8,
+ 0x8BB5, 0x357B,
+ 0x8BA0, 0x354D,
+ 0x8B8B, 0x351F,
+ 0x8B76, 0x34F2,
+ 0x8B61, 0x34C4,
+ 0x8B4D, 0x3496,
+ 0x8B38, 0x3468,
+ 0x8B24, 0x343A,
+ 0x8B0F, 0x340C,
+ 0x8AFB, 0x33DE,
+ 0x8AE6, 0x33B0,
+ 0x8AD2, 0x3382,
+ 0x8ABE, 0x3354,
+ 0x8AAA, 0x3326,
+ 0x8A96, 0x32F8,
+ 0x8A82, 0x32CA,
+ 0x8A6E, 0x329C,
+ 0x8A5A, 0x326E,
+ 0x8A46, 0x3240,
+ 0x8A33, 0x3211,
+ 0x8A1F, 0x31E3,
+ 0x8A0B, 0x31B5,
+ 0x89F8, 0x3186,
+ 0x89E4, 0x3158,
+ 0x89D1, 0x312A,
+ 0x89BE, 0x30FB,
+ 0x89AB, 0x30CD,
+ 0x8997, 0x309E,
+ 0x8984, 0x3070,
+ 0x8971, 0x3041,
+ 0x895F, 0x3013,
+ 0x894C, 0x2FE4,
+ 0x8939, 0x2FB5,
+ 0x8926, 0x2F87,
+ 0x8914, 0x2F58,
+ 0x8901, 0x2F29,
+ 0x88EF, 0x2EFB,
+ 0x88DC, 0x2ECC,
+ 0x88CA, 0x2E9D,
+ 0x88B8, 0x2E6E,
+ 0x88A5, 0x2E3F,
+ 0x8893, 0x2E11,
+ 0x8881, 0x2DE2,
+ 0x886F, 0x2DB3,
+ 0x885D, 0x2D84,
+ 0x884B, 0x2D55,
+ 0x883A, 0x2D26,
+ 0x8828, 0x2CF7,
+ 0x8816, 0x2CC8,
+ 0x8805, 0x2C98,
+ 0x87F3, 0x2C69,
+ 0x87E2, 0x2C3A,
+ 0x87D1, 0x2C0B,
+ 0x87BF, 0x2BDC,
+ 0x87AE, 0x2BAD,
+ 0x879D, 0x2B7D,
+ 0x878C, 0x2B4E,
+ 0x877B, 0x2B1F,
+ 0x876A, 0x2AEF,
+ 0x8759, 0x2AC0,
+ 0x8749, 0x2A91,
+ 0x8738, 0x2A61,
+ 0x8727, 0x2A32,
+ 0x8717, 0x2A02,
+ 0x8706, 0x29D3,
+ 0x86F6, 0x29A3,
+ 0x86E6, 0x2974,
+ 0x86D5, 0x2944,
+ 0x86C5, 0x2915,
+ 0x86B5, 0x28E5,
+ 0x86A5, 0x28B5,
+ 0x8695, 0x2886,
+ 0x8685, 0x2856,
+ 0x8675, 0x2826,
+ 0x8666, 0x27F6,
+ 0x8656, 0x27C7,
+ 0x8646, 0x2797,
+ 0x8637, 0x2767,
+ 0x8627, 0x2737,
+ 0x8618, 0x2707,
+ 0x8609, 0x26D8,
+ 0x85FA, 0x26A8,
+ 0x85EA, 0x2678,
+ 0x85DB, 0x2648,
+ 0x85CC, 0x2618,
+ 0x85BD, 0x25E8,
+ 0x85AF, 0x25B8,
+ 0x85A0, 0x2588,
+ 0x8591, 0x2558,
+ 0x8582, 0x2528,
+ 0x8574, 0x24F7,
+ 0x8565, 0x24C7,
+ 0x8557, 0x2497,
+ 0x8549, 0x2467,
+ 0x853A, 0x2437,
+ 0x852C, 0x2407,
+ 0x851E, 0x23D6,
+ 0x8510, 0x23A6,
+ 0x8502, 0x2376,
+ 0x84F4, 0x2345,
+ 0x84E6, 0x2315,
+ 0x84D9, 0x22E5,
+ 0x84CB, 0x22B4,
+ 0x84BD, 0x2284,
+ 0x84B0, 0x2254,
+ 0x84A2, 0x2223,
+ 0x8495, 0x21F3,
+ 0x8488, 0x21C2,
+ 0x847B, 0x2192,
+ 0x846D, 0x2161,
+ 0x8460, 0x2131,
+ 0x8453, 0x2100,
+ 0x8446, 0x20D0,
+ 0x843A, 0x209F,
+ 0x842D, 0x206E,
+ 0x8420, 0x203E,
+ 0x8414, 0x200D,
+ 0x8407, 0x1FDC,
+ 0x83FA, 0x1FAC,
+ 0x83EE, 0x1F7B,
+ 0x83E2, 0x1F4A,
+ 0x83D6, 0x1F19,
+ 0x83C9, 0x1EE9,
+ 0x83BD, 0x1EB8,
+ 0x83B1, 0x1E87,
+ 0x83A5, 0x1E56,
+ 0x8399, 0x1E25,
+ 0x838E, 0x1DF5,
+ 0x8382, 0x1DC4,
+ 0x8376, 0x1D93,
+ 0x836B, 0x1D62,
+ 0x835F, 0x1D31,
+ 0x8354, 0x1D00,
+ 0x8348, 0x1CCF,
+ 0x833D, 0x1C9E,
+ 0x8332, 0x1C6D,
+ 0x8327, 0x1C3C,
+ 0x831C, 0x1C0B,
+ 0x8311, 0x1BDA,
+ 0x8306, 0x1BA9,
+ 0x82FB, 0x1B78,
+ 0x82F0, 0x1B47,
+ 0x82E6, 0x1B16,
+ 0x82DB, 0x1AE4,
+ 0x82D0, 0x1AB3,
+ 0x82C6, 0x1A82,
+ 0x82BC, 0x1A51,
+ 0x82B1, 0x1A20,
+ 0x82A7, 0x19EF,
+ 0x829D, 0x19BD,
+ 0x8293, 0x198C,
+ 0x8289, 0x195B,
+ 0x827F, 0x192A,
+ 0x8275, 0x18F8,
+ 0x826B, 0x18C7,
+ 0x8262, 0x1896,
+ 0x8258, 0x1864,
+ 0x824F, 0x1833,
+ 0x8245, 0x1802,
+ 0x823C, 0x17D0,
+ 0x8232, 0x179F,
+ 0x8229, 0x176D,
+ 0x8220, 0x173C,
+ 0x8217, 0x170A,
+ 0x820E, 0x16D9,
+ 0x8205, 0x16A8,
+ 0x81FC, 0x1676,
+ 0x81F3, 0x1645,
+ 0x81EB, 0x1613,
+ 0x81E2, 0x15E2,
+ 0x81D9, 0x15B0,
+ 0x81D1, 0x157F,
+ 0x81C8, 0x154D,
+ 0x81C0, 0x151B,
+ 0x81B8, 0x14EA,
+ 0x81B0, 0x14B8,
+ 0x81A8, 0x1487,
+ 0x81A0, 0x1455,
+ 0x8198, 0x1423,
+ 0x8190, 0x13F2,
+ 0x8188, 0x13C0,
+ 0x8180, 0x138E,
+ 0x8179, 0x135D,
+ 0x8171, 0x132B,
+ 0x816A, 0x12F9,
+ 0x8162, 0x12C8,
+ 0x815B, 0x1296,
+ 0x8154, 0x1264,
+ 0x814C, 0x1232,
+ 0x8145, 0x1201,
+ 0x813E, 0x11CF,
+ 0x8137, 0x119D,
+ 0x8130, 0x116B,
+ 0x812A, 0x1139,
+ 0x8123, 0x1108,
+ 0x811C, 0x10D6,
+ 0x8116, 0x10A4,
+ 0x810F, 0x1072,
+ 0x8109, 0x1040,
+ 0x8102, 0x100E,
+ 0x80FC, 0x0FDD,
+ 0x80F6, 0x0FAB,
+ 0x80F0, 0x0F79,
+ 0x80EA, 0x0F47,
+ 0x80E4, 0x0F15,
+ 0x80DE, 0x0EE3,
+ 0x80D8, 0x0EB1,
+ 0x80D2, 0x0E7F,
+ 0x80CD, 0x0E4D,
+ 0x80C7, 0x0E1B,
+ 0x80C2, 0x0DE9,
+ 0x80BC, 0x0DB7,
+ 0x80B7, 0x0D85,
+ 0x80B2, 0x0D53,
+ 0x80AC, 0x0D21,
+ 0x80A7, 0x0CEF,
+ 0x80A2, 0x0CBD,
+ 0x809D, 0x0C8B,
+ 0x8098, 0x0C59,
+ 0x8094, 0x0C27,
+ 0x808F, 0x0BF5,
+ 0x808A, 0x0BC3,
+ 0x8086, 0x0B91,
+ 0x8081, 0x0B5F,
+ 0x807D, 0x0B2D,
+ 0x8078, 0x0AFB,
+ 0x8074, 0x0AC9,
+ 0x8070, 0x0A97,
+ 0x806C, 0x0A65,
+ 0x8068, 0x0A33,
+ 0x8064, 0x0A00,
+ 0x8060, 0x09CE,
+ 0x805C, 0x099C,
+ 0x8058, 0x096A,
+ 0x8055, 0x0938,
+ 0x8051, 0x0906,
+ 0x804E, 0x08D4,
+ 0x804A, 0x08A2,
+ 0x8047, 0x086F,
+ 0x8043, 0x083D,
+ 0x8040, 0x080B,
+ 0x803D, 0x07D9,
+ 0x803A, 0x07A7,
+ 0x8037, 0x0775,
+ 0x8034, 0x0742,
+ 0x8031, 0x0710,
+ 0x802F, 0x06DE,
+ 0x802C, 0x06AC,
+ 0x8029, 0x067A,
+ 0x8027, 0x0647,
+ 0x8025, 0x0615,
+ 0x8022, 0x05E3,
+ 0x8020, 0x05B1,
+ 0x801E, 0x057F,
+ 0x801C, 0x054C,
+ 0x801A, 0x051A,
+ 0x8018, 0x04E8,
+ 0x8016, 0x04B6,
+ 0x8014, 0x0483,
+ 0x8012, 0x0451,
+ 0x8011, 0x041F,
+ 0x800F, 0x03ED,
+ 0x800D, 0x03BA,
+ 0x800C, 0x0388,
+ 0x800B, 0x0356,
+ 0x8009, 0x0324,
+ 0x8008, 0x02F1,
+ 0x8007, 0x02BF,
+ 0x8006, 0x028D,
+ 0x8005, 0x025B,
+ 0x8004, 0x0228,
+ 0x8003, 0x01F6,
+ 0x8003, 0x01C4,
+ 0x8002, 0x0192,
+ 0x8001, 0x015F,
+ 0x8001, 0x012D,
+ 0x8000, 0x00FB,
+ 0x8000, 0x00C9,
+ 0x8000, 0x0096,
+ 0x8000, 0x0064,
+ 0x8000, 0x0032,
+ 0x8000, 0x0000,
+ 0x8000, 0xFFCD,
+ 0x8000, 0xFF9B,
+ 0x8000, 0xFF69,
+ 0x8000, 0xFF36,
+ 0x8000, 0xFF04,
+ 0x8001, 0xFED2,
+ 0x8001, 0xFEA0,
+ 0x8002, 0xFE6D,
+ 0x8003, 0xFE3B,
+ 0x8003, 0xFE09,
+ 0x8004, 0xFDD7,
+ 0x8005, 0xFDA4,
+ 0x8006, 0xFD72,
+ 0x8007, 0xFD40,
+ 0x8008, 0xFD0E,
+ 0x8009, 0xFCDB,
+ 0x800B, 0xFCA9,
+ 0x800C, 0xFC77,
+ 0x800D, 0xFC45,
+ 0x800F, 0xFC12,
+ 0x8011, 0xFBE0,
+ 0x8012, 0xFBAE,
+ 0x8014, 0xFB7C,
+ 0x8016, 0xFB49,
+ 0x8018, 0xFB17,
+ 0x801A, 0xFAE5,
+ 0x801C, 0xFAB3,
+ 0x801E, 0xFA80,
+ 0x8020, 0xFA4E,
+ 0x8022, 0xFA1C,
+ 0x8025, 0xF9EA,
+ 0x8027, 0xF9B8,
+ 0x8029, 0xF985,
+ 0x802C, 0xF953,
+ 0x802F, 0xF921,
+ 0x8031, 0xF8EF,
+ 0x8034, 0xF8BD,
+ 0x8037, 0xF88A,
+ 0x803A, 0xF858,
+ 0x803D, 0xF826,
+ 0x8040, 0xF7F4,
+ 0x8043, 0xF7C2,
+ 0x8047, 0xF790,
+ 0x804A, 0xF75D,
+ 0x804E, 0xF72B,
+ 0x8051, 0xF6F9,
+ 0x8055, 0xF6C7,
+ 0x8058, 0xF695,
+ 0x805C, 0xF663,
+ 0x8060, 0xF631,
+ 0x8064, 0xF5FF,
+ 0x8068, 0xF5CC,
+ 0x806C, 0xF59A,
+ 0x8070, 0xF568,
+ 0x8074, 0xF536,
+ 0x8078, 0xF504,
+ 0x807D, 0xF4D2,
+ 0x8081, 0xF4A0,
+ 0x8086, 0xF46E,
+ 0x808A, 0xF43C,
+ 0x808F, 0xF40A,
+ 0x8094, 0xF3D8,
+ 0x8098, 0xF3A6,
+ 0x809D, 0xF374,
+ 0x80A2, 0xF342,
+ 0x80A7, 0xF310,
+ 0x80AC, 0xF2DE,
+ 0x80B2, 0xF2AC,
+ 0x80B7, 0xF27A,
+ 0x80BC, 0xF248,
+ 0x80C2, 0xF216,
+ 0x80C7, 0xF1E4,
+ 0x80CD, 0xF1B2,
+ 0x80D2, 0xF180,
+ 0x80D8, 0xF14E,
+ 0x80DE, 0xF11C,
+ 0x80E4, 0xF0EA,
+ 0x80EA, 0xF0B8,
+ 0x80F0, 0xF086,
+ 0x80F6, 0xF054,
+ 0x80FC, 0xF022,
+ 0x8102, 0xEFF1,
+ 0x8109, 0xEFBF,
+ 0x810F, 0xEF8D,
+ 0x8116, 0xEF5B,
+ 0x811C, 0xEF29,
+ 0x8123, 0xEEF7,
+ 0x812A, 0xEEC6,
+ 0x8130, 0xEE94,
+ 0x8137, 0xEE62,
+ 0x813E, 0xEE30,
+ 0x8145, 0xEDFE,
+ 0x814C, 0xEDCD,
+ 0x8154, 0xED9B,
+ 0x815B, 0xED69,
+ 0x8162, 0xED37,
+ 0x816A, 0xED06,
+ 0x8171, 0xECD4,
+ 0x8179, 0xECA2,
+ 0x8180, 0xEC71,
+ 0x8188, 0xEC3F,
+ 0x8190, 0xEC0D,
+ 0x8198, 0xEBDC,
+ 0x81A0, 0xEBAA,
+ 0x81A8, 0xEB78,
+ 0x81B0, 0xEB47,
+ 0x81B8, 0xEB15,
+ 0x81C0, 0xEAE4,
+ 0x81C8, 0xEAB2,
+ 0x81D1, 0xEA80,
+ 0x81D9, 0xEA4F,
+ 0x81E2, 0xEA1D,
+ 0x81EB, 0xE9EC,
+ 0x81F3, 0xE9BA,
+ 0x81FC, 0xE989,
+ 0x8205, 0xE957,
+ 0x820E, 0xE926,
+ 0x8217, 0xE8F5,
+ 0x8220, 0xE8C3,
+ 0x8229, 0xE892,
+ 0x8232, 0xE860,
+ 0x823C, 0xE82F,
+ 0x8245, 0xE7FD,
+ 0x824F, 0xE7CC,
+ 0x8258, 0xE79B,
+ 0x8262, 0xE769,
+ 0x826B, 0xE738,
+ 0x8275, 0xE707,
+ 0x827F, 0xE6D5,
+ 0x8289, 0xE6A4,
+ 0x8293, 0xE673,
+ 0x829D, 0xE642,
+ 0x82A7, 0xE610,
+ 0x82B1, 0xE5DF,
+ 0x82BC, 0xE5AE,
+ 0x82C6, 0xE57D,
+ 0x82D0, 0xE54C,
+ 0x82DB, 0xE51B,
+ 0x82E6, 0xE4E9,
+ 0x82F0, 0xE4B8,
+ 0x82FB, 0xE487,
+ 0x8306, 0xE456,
+ 0x8311, 0xE425,
+ 0x831C, 0xE3F4,
+ 0x8327, 0xE3C3,
+ 0x8332, 0xE392,
+ 0x833D, 0xE361,
+ 0x8348, 0xE330,
+ 0x8354, 0xE2FF,
+ 0x835F, 0xE2CE,
+ 0x836B, 0xE29D,
+ 0x8376, 0xE26C,
+ 0x8382, 0xE23B,
+ 0x838E, 0xE20A,
+ 0x8399, 0xE1DA,
+ 0x83A5, 0xE1A9,
+ 0x83B1, 0xE178,
+ 0x83BD, 0xE147,
+ 0x83C9, 0xE116,
+ 0x83D6, 0xE0E6,
+ 0x83E2, 0xE0B5,
+ 0x83EE, 0xE084,
+ 0x83FA, 0xE053,
+ 0x8407, 0xE023,
+ 0x8414, 0xDFF2,
+ 0x8420, 0xDFC1,
+ 0x842D, 0xDF91,
+ 0x843A, 0xDF60,
+ 0x8446, 0xDF2F,
+ 0x8453, 0xDEFF,
+ 0x8460, 0xDECE,
+ 0x846D, 0xDE9E,
+ 0x847B, 0xDE6D,
+ 0x8488, 0xDE3D,
+ 0x8495, 0xDE0C,
+ 0x84A2, 0xDDDC,
+ 0x84B0, 0xDDAB,
+ 0x84BD, 0xDD7B,
+ 0x84CB, 0xDD4B,
+ 0x84D9, 0xDD1A,
+ 0x84E6, 0xDCEA,
+ 0x84F4, 0xDCBA,
+ 0x8502, 0xDC89,
+ 0x8510, 0xDC59,
+ 0x851E, 0xDC29,
+ 0x852C, 0xDBF8,
+ 0x853A, 0xDBC8,
+ 0x8549, 0xDB98,
+ 0x8557, 0xDB68,
+ 0x8565, 0xDB38,
+ 0x8574, 0xDB08,
+ 0x8582, 0xDAD7,
+ 0x8591, 0xDAA7,
+ 0x85A0, 0xDA77,
+ 0x85AF, 0xDA47,
+ 0x85BD, 0xDA17,
+ 0x85CC, 0xD9E7,
+ 0x85DB, 0xD9B7,
+ 0x85EA, 0xD987,
+ 0x85FA, 0xD957,
+ 0x8609, 0xD927,
+ 0x8618, 0xD8F8,
+ 0x8627, 0xD8C8,
+ 0x8637, 0xD898,
+ 0x8646, 0xD868,
+ 0x8656, 0xD838,
+ 0x8666, 0xD809,
+ 0x8675, 0xD7D9,
+ 0x8685, 0xD7A9,
+ 0x8695, 0xD779,
+ 0x86A5, 0xD74A,
+ 0x86B5, 0xD71A,
+ 0x86C5, 0xD6EA,
+ 0x86D5, 0xD6BB,
+ 0x86E6, 0xD68B,
+ 0x86F6, 0xD65C,
+ 0x8706, 0xD62C,
+ 0x8717, 0xD5FD,
+ 0x8727, 0xD5CD,
+ 0x8738, 0xD59E,
+ 0x8749, 0xD56E,
+ 0x8759, 0xD53F,
+ 0x876A, 0xD510,
+ 0x877B, 0xD4E0,
+ 0x878C, 0xD4B1,
+ 0x879D, 0xD482,
+ 0x87AE, 0xD452,
+ 0x87BF, 0xD423,
+ 0x87D1, 0xD3F4,
+ 0x87E2, 0xD3C5,
+ 0x87F3, 0xD396,
+ 0x8805, 0xD367,
+ 0x8816, 0xD337,
+ 0x8828, 0xD308,
+ 0x883A, 0xD2D9,
+ 0x884B, 0xD2AA,
+ 0x885D, 0xD27B,
+ 0x886F, 0xD24C,
+ 0x8881, 0xD21D,
+ 0x8893, 0xD1EE,
+ 0x88A5, 0xD1C0,
+ 0x88B8, 0xD191,
+ 0x88CA, 0xD162,
+ 0x88DC, 0xD133,
+ 0x88EF, 0xD104,
+ 0x8901, 0xD0D6,
+ 0x8914, 0xD0A7,
+ 0x8926, 0xD078,
+ 0x8939, 0xD04A,
+ 0x894C, 0xD01B,
+ 0x895F, 0xCFEC,
+ 0x8971, 0xCFBE,
+ 0x8984, 0xCF8F,
+ 0x8997, 0xCF61,
+ 0x89AB, 0xCF32,
+ 0x89BE, 0xCF04,
+ 0x89D1, 0xCED5,
+ 0x89E4, 0xCEA7,
+ 0x89F8, 0xCE79,
+ 0x8A0B, 0xCE4A,
+ 0x8A1F, 0xCE1C,
+ 0x8A33, 0xCDEE,
+ 0x8A46, 0xCDBF,
+ 0x8A5A, 0xCD91,
+ 0x8A6E, 0xCD63,
+ 0x8A82, 0xCD35,
+ 0x8A96, 0xCD07,
+ 0x8AAA, 0xCCD9,
+ 0x8ABE, 0xCCAB,
+ 0x8AD2, 0xCC7D,
+ 0x8AE6, 0xCC4F,
+ 0x8AFB, 0xCC21,
+ 0x8B0F, 0xCBF3,
+ 0x8B24, 0xCBC5,
+ 0x8B38, 0xCB97,
+ 0x8B4D, 0xCB69,
+ 0x8B61, 0xCB3B,
+ 0x8B76, 0xCB0D,
+ 0x8B8B, 0xCAE0,
+ 0x8BA0, 0xCAB2,
+ 0x8BB5, 0xCA84,
+ 0x8BCA, 0xCA57,
+ 0x8BDF, 0xCA29,
+ 0x8BF4, 0xC9FB,
+ 0x8C09, 0xC9CE,
+ 0x8C1F, 0xC9A0,
+ 0x8C34, 0xC973,
+ 0x8C4A, 0xC945,
+ 0x8C5F, 0xC918,
+ 0x8C75, 0xC8EB,
+ 0x8C8A, 0xC8BD,
+ 0x8CA0, 0xC890,
+ 0x8CB6, 0xC863,
+ 0x8CCC, 0xC835,
+ 0x8CE2, 0xC808,
+ 0x8CF8, 0xC7DB,
+ 0x8D0E, 0xC7AE,
+ 0x8D24, 0xC781,
+ 0x8D3A, 0xC754,
+ 0x8D50, 0xC727,
+ 0x8D67, 0xC6F9,
+ 0x8D7D, 0xC6CD,
+ 0x8D94, 0xC6A0,
+ 0x8DAA, 0xC673,
+ 0x8DC1, 0xC646,
+ 0x8DD8, 0xC619,
+ 0x8DEE, 0xC5EC,
+ 0x8E05, 0xC5BF,
+ 0x8E1C, 0xC593,
+ 0x8E33, 0xC566,
+ 0x8E4A, 0xC539,
+ 0x8E61, 0xC50D,
+ 0x8E79, 0xC4E0,
+ 0x8E90, 0xC4B3,
+ 0x8EA7, 0xC487,
+ 0x8EBE, 0xC45A,
+ 0x8ED6, 0xC42E,
+ 0x8EED, 0xC402,
+ 0x8F05, 0xC3D5,
+ 0x8F1D, 0xC3A9,
+ 0x8F34, 0xC37C,
+ 0x8F4C, 0xC350,
+ 0x8F64, 0xC324,
+ 0x8F7C, 0xC2F8,
+ 0x8F94, 0xC2CC,
+ 0x8FAC, 0xC29F,
+ 0x8FC4, 0xC273,
+ 0x8FDC, 0xC247,
+ 0x8FF5, 0xC21B,
+ 0x900D, 0xC1EF,
+ 0x9025, 0xC1C3,
+ 0x903E, 0xC197,
+ 0x9056, 0xC16C,
+ 0x906F, 0xC140,
+ 0x9088, 0xC114,
+ 0x90A0, 0xC0E8,
+ 0x90B9, 0xC0BC,
+ 0x90D2, 0xC091,
+ 0x90EB, 0xC065,
+ 0x9104, 0xC03A,
+ 0x911D, 0xC00E,
+ 0x9136, 0xBFE2,
+ 0x9150, 0xBFB7,
+ 0x9169, 0xBF8C,
+ 0x9182, 0xBF60,
+ 0x919C, 0xBF35,
+ 0x91B5, 0xBF09,
+ 0x91CF, 0xBEDE,
+ 0x91E8, 0xBEB3,
+ 0x9202, 0xBE88,
+ 0x921C, 0xBE5D,
+ 0x9235, 0xBE31,
+ 0x924F, 0xBE06,
+ 0x9269, 0xBDDB,
+ 0x9283, 0xBDB0,
+ 0x929D, 0xBD85,
+ 0x92B7, 0xBD5A,
+ 0x92D2, 0xBD2F,
+ 0x92EC, 0xBD05,
+ 0x9306, 0xBCDA,
+ 0x9321, 0xBCAF,
+ 0x933B, 0xBC84,
+ 0x9356, 0xBC5A,
+ 0x9370, 0xBC2F,
+ 0x938B, 0xBC04,
+ 0x93A6, 0xBBDA,
+ 0x93C0, 0xBBAF,
+ 0x93DB, 0xBB85,
+ 0x93F6, 0xBB5A,
+ 0x9411, 0xBB30,
+ 0x942C, 0xBB05,
+ 0x9447, 0xBADB,
+ 0x9463, 0xBAB1,
+ 0x947E, 0xBA87,
+ 0x9499, 0xBA5C,
+ 0x94B5, 0xBA32,
+ 0x94D0, 0xBA08,
+ 0x94EC, 0xB9DE,
+ 0x9507, 0xB9B4,
+ 0x9523, 0xB98A,
+ 0x953E, 0xB960,
+ 0x955A, 0xB936,
+ 0x9576, 0xB90C,
+ 0x9592, 0xB8E3,
+ 0x95AE, 0xB8B9,
+ 0x95CA, 0xB88F,
+ 0x95E6, 0xB865,
+ 0x9602, 0xB83C,
+ 0x961E, 0xB812,
+ 0x963B, 0xB7E9,
+ 0x9657, 0xB7BF,
+ 0x9673, 0xB796,
+ 0x9690, 0xB76C,
+ 0x96AC, 0xB743,
+ 0x96C9, 0xB719,
+ 0x96E6, 0xB6F0,
+ 0x9702, 0xB6C7,
+ 0x971F, 0xB69E,
+ 0x973C, 0xB675,
+ 0x9759, 0xB64B,
+ 0x9776, 0xB622,
+ 0x9793, 0xB5F9,
+ 0x97B0, 0xB5D0,
+ 0x97CD, 0xB5A7,
+ 0x97EA, 0xB57E,
+ 0x9808, 0xB556,
+ 0x9825, 0xB52D,
+ 0x9842, 0xB504,
+ 0x9860, 0xB4DB,
+ 0x987D, 0xB4B3,
+ 0x989B, 0xB48A,
+ 0x98B9, 0xB461,
+ 0x98D6, 0xB439,
+ 0x98F4, 0xB410,
+ 0x9912, 0xB3E8,
+ 0x9930, 0xB3C0,
+ 0x994E, 0xB397,
+ 0x996C, 0xB36F,
+ 0x998A, 0xB347,
+ 0x99A8, 0xB31E,
+ 0x99C6, 0xB2F6,
+ 0x99E5, 0xB2CE,
+ 0x9A03, 0xB2A6,
+ 0x9A22, 0xB27E,
+ 0x9A40, 0xB256,
+ 0x9A5F, 0xB22E,
+ 0x9A7D, 0xB206,
+ 0x9A9C, 0xB1DE,
+ 0x9ABA, 0xB1B7,
+ 0x9AD9, 0xB18F,
+ 0x9AF8, 0xB167,
+ 0x9B17, 0xB140,
+ 0x9B36, 0xB118,
+ 0x9B55, 0xB0F0,
+ 0x9B74, 0xB0C9,
+ 0x9B93, 0xB0A1,
+ 0x9BB2, 0xB07A,
+ 0x9BD2, 0xB053,
+ 0x9BF1, 0xB02B,
+ 0x9C10, 0xB004,
+ 0x9C30, 0xAFDD,
+ 0x9C4F, 0xAFB6,
+ 0x9C6F, 0xAF8F,
+ 0x9C8E, 0xAF68,
+ 0x9CAE, 0xAF40,
+ 0x9CCE, 0xAF1A,
+ 0x9CEE, 0xAEF3,
+ 0x9D0D, 0xAECC,
+ 0x9D2D, 0xAEA5,
+ 0x9D4D, 0xAE7E,
+ 0x9D6D, 0xAE57,
+ 0x9D8E, 0xAE31,
+ 0x9DAE, 0xAE0A,
+ 0x9DCE, 0xADE3,
+ 0x9DEE, 0xADBD,
+ 0x9E0E, 0xAD96,
+ 0x9E2F, 0xAD70,
+ 0x9E4F, 0xAD4A,
+ 0x9E70, 0xAD23,
+ 0x9E90, 0xACFD,
+ 0x9EB1, 0xACD7,
+ 0x9ED2, 0xACB1,
+ 0x9EF2, 0xAC8A,
+ 0x9F13, 0xAC64,
+ 0x9F34, 0xAC3E,
+ 0x9F55, 0xAC18,
+ 0x9F76, 0xABF2,
+ 0x9F97, 0xABCC,
+ 0x9FB8, 0xABA7,
+ 0x9FD9, 0xAB81,
+ 0x9FFB, 0xAB5B,
+ 0xA01C, 0xAB35,
+ 0xA03D, 0xAB10,
+ 0xA05F, 0xAAEA,
+ 0xA080, 0xAAC5,
+ 0xA0A1, 0xAA9F,
+ 0xA0C3, 0xAA7A,
+ 0xA0E5, 0xAA54,
+ 0xA106, 0xAA2F,
+ 0xA128, 0xAA0A,
+ 0xA14A, 0xA9E5,
+ 0xA16C, 0xA9BF,
+ 0xA18E, 0xA99A,
+ 0xA1AF, 0xA975,
+ 0xA1D2, 0xA950,
+ 0xA1F4, 0xA92B,
+ 0xA216, 0xA906,
+ 0xA238, 0xA8E2,
+ 0xA25A, 0xA8BD,
+ 0xA27C, 0xA898,
+ 0xA29F, 0xA873,
+ 0xA2C1, 0xA84F,
+ 0xA2E4, 0xA82A,
+ 0xA306, 0xA806,
+ 0xA329, 0xA7E1,
+ 0xA34B, 0xA7BD,
+ 0xA36E, 0xA798,
+ 0xA391, 0xA774,
+ 0xA3B4, 0xA750,
+ 0xA3D6, 0xA72B,
+ 0xA3F9, 0xA707,
+ 0xA41C, 0xA6E3,
+ 0xA43F, 0xA6BF,
+ 0xA462, 0xA69B,
+ 0xA486, 0xA677,
+ 0xA4A9, 0xA653,
+ 0xA4CC, 0xA62F,
+ 0xA4EF, 0xA60C,
+ 0xA513, 0xA5E8,
+ 0xA536, 0xA5C4,
+ 0xA55A, 0xA5A1,
+ 0xA57D, 0xA57D,
+ 0xA5A1, 0xA55A,
+ 0xA5C4, 0xA536,
+ 0xA5E8, 0xA513,
+ 0xA60C, 0xA4EF,
+ 0xA62F, 0xA4CC,
+ 0xA653, 0xA4A9,
+ 0xA677, 0xA486,
+ 0xA69B, 0xA462,
+ 0xA6BF, 0xA43F,
+ 0xA6E3, 0xA41C,
+ 0xA707, 0xA3F9,
+ 0xA72B, 0xA3D6,
+ 0xA750, 0xA3B4,
+ 0xA774, 0xA391,
+ 0xA798, 0xA36E,
+ 0xA7BD, 0xA34B,
+ 0xA7E1, 0xA329,
+ 0xA806, 0xA306,
+ 0xA82A, 0xA2E4,
+ 0xA84F, 0xA2C1,
+ 0xA873, 0xA29F,
+ 0xA898, 0xA27C,
+ 0xA8BD, 0xA25A,
+ 0xA8E2, 0xA238,
+ 0xA906, 0xA216,
+ 0xA92B, 0xA1F4,
+ 0xA950, 0xA1D2,
+ 0xA975, 0xA1AF,
+ 0xA99A, 0xA18E,
+ 0xA9BF, 0xA16C,
+ 0xA9E5, 0xA14A,
+ 0xAA0A, 0xA128,
+ 0xAA2F, 0xA106,
+ 0xAA54, 0xA0E5,
+ 0xAA7A, 0xA0C3,
+ 0xAA9F, 0xA0A1,
+ 0xAAC5, 0xA080,
+ 0xAAEA, 0xA05F,
+ 0xAB10, 0xA03D,
+ 0xAB35, 0xA01C,
+ 0xAB5B, 0x9FFB,
+ 0xAB81, 0x9FD9,
+ 0xABA7, 0x9FB8,
+ 0xABCC, 0x9F97,
+ 0xABF2, 0x9F76,
+ 0xAC18, 0x9F55,
+ 0xAC3E, 0x9F34,
+ 0xAC64, 0x9F13,
+ 0xAC8A, 0x9EF2,
+ 0xACB1, 0x9ED2,
+ 0xACD7, 0x9EB1,
+ 0xACFD, 0x9E90,
+ 0xAD23, 0x9E70,
+ 0xAD4A, 0x9E4F,
+ 0xAD70, 0x9E2F,
+ 0xAD96, 0x9E0E,
+ 0xADBD, 0x9DEE,
+ 0xADE3, 0x9DCE,
+ 0xAE0A, 0x9DAE,
+ 0xAE31, 0x9D8E,
+ 0xAE57, 0x9D6D,
+ 0xAE7E, 0x9D4D,
+ 0xAEA5, 0x9D2D,
+ 0xAECC, 0x9D0D,
+ 0xAEF3, 0x9CEE,
+ 0xAF1A, 0x9CCE,
+ 0xAF40, 0x9CAE,
+ 0xAF68, 0x9C8E,
+ 0xAF8F, 0x9C6F,
+ 0xAFB6, 0x9C4F,
+ 0xAFDD, 0x9C30,
+ 0xB004, 0x9C10,
+ 0xB02B, 0x9BF1,
+ 0xB053, 0x9BD2,
+ 0xB07A, 0x9BB2,
+ 0xB0A1, 0x9B93,
+ 0xB0C9, 0x9B74,
+ 0xB0F0, 0x9B55,
+ 0xB118, 0x9B36,
+ 0xB140, 0x9B17,
+ 0xB167, 0x9AF8,
+ 0xB18F, 0x9AD9,
+ 0xB1B7, 0x9ABA,
+ 0xB1DE, 0x9A9C,
+ 0xB206, 0x9A7D,
+ 0xB22E, 0x9A5F,
+ 0xB256, 0x9A40,
+ 0xB27E, 0x9A22,
+ 0xB2A6, 0x9A03,
+ 0xB2CE, 0x99E5,
+ 0xB2F6, 0x99C6,
+ 0xB31E, 0x99A8,
+ 0xB347, 0x998A,
+ 0xB36F, 0x996C,
+ 0xB397, 0x994E,
+ 0xB3C0, 0x9930,
+ 0xB3E8, 0x9912,
+ 0xB410, 0x98F4,
+ 0xB439, 0x98D6,
+ 0xB461, 0x98B9,
+ 0xB48A, 0x989B,
+ 0xB4B3, 0x987D,
+ 0xB4DB, 0x9860,
+ 0xB504, 0x9842,
+ 0xB52D, 0x9825,
+ 0xB556, 0x9808,
+ 0xB57E, 0x97EA,
+ 0xB5A7, 0x97CD,
+ 0xB5D0, 0x97B0,
+ 0xB5F9, 0x9793,
+ 0xB622, 0x9776,
+ 0xB64B, 0x9759,
+ 0xB675, 0x973C,
+ 0xB69E, 0x971F,
+ 0xB6C7, 0x9702,
+ 0xB6F0, 0x96E6,
+ 0xB719, 0x96C9,
+ 0xB743, 0x96AC,
+ 0xB76C, 0x9690,
+ 0xB796, 0x9673,
+ 0xB7BF, 0x9657,
+ 0xB7E9, 0x963B,
+ 0xB812, 0x961E,
+ 0xB83C, 0x9602,
+ 0xB865, 0x95E6,
+ 0xB88F, 0x95CA,
+ 0xB8B9, 0x95AE,
+ 0xB8E3, 0x9592,
+ 0xB90C, 0x9576,
+ 0xB936, 0x955A,
+ 0xB960, 0x953E,
+ 0xB98A, 0x9523,
+ 0xB9B4, 0x9507,
+ 0xB9DE, 0x94EC,
+ 0xBA08, 0x94D0,
+ 0xBA32, 0x94B5,
+ 0xBA5C, 0x9499,
+ 0xBA87, 0x947E,
+ 0xBAB1, 0x9463,
+ 0xBADB, 0x9447,
+ 0xBB05, 0x942C,
+ 0xBB30, 0x9411,
+ 0xBB5A, 0x93F6,
+ 0xBB85, 0x93DB,
+ 0xBBAF, 0x93C0,
+ 0xBBDA, 0x93A6,
+ 0xBC04, 0x938B,
+ 0xBC2F, 0x9370,
+ 0xBC5A, 0x9356,
+ 0xBC84, 0x933B,
+ 0xBCAF, 0x9321,
+ 0xBCDA, 0x9306,
+ 0xBD05, 0x92EC,
+ 0xBD2F, 0x92D2,
+ 0xBD5A, 0x92B7,
+ 0xBD85, 0x929D,
+ 0xBDB0, 0x9283,
+ 0xBDDB, 0x9269,
+ 0xBE06, 0x924F,
+ 0xBE31, 0x9235,
+ 0xBE5D, 0x921C,
+ 0xBE88, 0x9202,
+ 0xBEB3, 0x91E8,
+ 0xBEDE, 0x91CF,
+ 0xBF09, 0x91B5,
+ 0xBF35, 0x919C,
+ 0xBF60, 0x9182,
+ 0xBF8C, 0x9169,
+ 0xBFB7, 0x9150,
+ 0xBFE2, 0x9136,
+ 0xC00E, 0x911D,
+ 0xC03A, 0x9104,
+ 0xC065, 0x90EB,
+ 0xC091, 0x90D2,
+ 0xC0BC, 0x90B9,
+ 0xC0E8, 0x90A0,
+ 0xC114, 0x9088,
+ 0xC140, 0x906F,
+ 0xC16C, 0x9056,
+ 0xC197, 0x903E,
+ 0xC1C3, 0x9025,
+ 0xC1EF, 0x900D,
+ 0xC21B, 0x8FF5,
+ 0xC247, 0x8FDC,
+ 0xC273, 0x8FC4,
+ 0xC29F, 0x8FAC,
+ 0xC2CC, 0x8F94,
+ 0xC2F8, 0x8F7C,
+ 0xC324, 0x8F64,
+ 0xC350, 0x8F4C,
+ 0xC37C, 0x8F34,
+ 0xC3A9, 0x8F1D,
+ 0xC3D5, 0x8F05,
+ 0xC402, 0x8EED,
+ 0xC42E, 0x8ED6,
+ 0xC45A, 0x8EBE,
+ 0xC487, 0x8EA7,
+ 0xC4B3, 0x8E90,
+ 0xC4E0, 0x8E79,
+ 0xC50D, 0x8E61,
+ 0xC539, 0x8E4A,
+ 0xC566, 0x8E33,
+ 0xC593, 0x8E1C,
+ 0xC5BF, 0x8E05,
+ 0xC5EC, 0x8DEE,
+ 0xC619, 0x8DD8,
+ 0xC646, 0x8DC1,
+ 0xC673, 0x8DAA,
+ 0xC6A0, 0x8D94,
+ 0xC6CD, 0x8D7D,
+ 0xC6F9, 0x8D67,
+ 0xC727, 0x8D50,
+ 0xC754, 0x8D3A,
+ 0xC781, 0x8D24,
+ 0xC7AE, 0x8D0E,
+ 0xC7DB, 0x8CF8,
+ 0xC808, 0x8CE2,
+ 0xC835, 0x8CCC,
+ 0xC863, 0x8CB6,
+ 0xC890, 0x8CA0,
+ 0xC8BD, 0x8C8A,
+ 0xC8EB, 0x8C75,
+ 0xC918, 0x8C5F,
+ 0xC945, 0x8C4A,
+ 0xC973, 0x8C34,
+ 0xC9A0, 0x8C1F,
+ 0xC9CE, 0x8C09,
+ 0xC9FB, 0x8BF4,
+ 0xCA29, 0x8BDF,
+ 0xCA57, 0x8BCA,
+ 0xCA84, 0x8BB5,
+ 0xCAB2, 0x8BA0,
+ 0xCAE0, 0x8B8B,
+ 0xCB0D, 0x8B76,
+ 0xCB3B, 0x8B61,
+ 0xCB69, 0x8B4D,
+ 0xCB97, 0x8B38,
+ 0xCBC5, 0x8B24,
+ 0xCBF3, 0x8B0F,
+ 0xCC21, 0x8AFB,
+ 0xCC4F, 0x8AE6,
+ 0xCC7D, 0x8AD2,
+ 0xCCAB, 0x8ABE,
+ 0xCCD9, 0x8AAA,
+ 0xCD07, 0x8A96,
+ 0xCD35, 0x8A82,
+ 0xCD63, 0x8A6E,
+ 0xCD91, 0x8A5A,
+ 0xCDBF, 0x8A46,
+ 0xCDEE, 0x8A33,
+ 0xCE1C, 0x8A1F,
+ 0xCE4A, 0x8A0B,
+ 0xCE79, 0x89F8,
+ 0xCEA7, 0x89E4,
+ 0xCED5, 0x89D1,
+ 0xCF04, 0x89BE,
+ 0xCF32, 0x89AB,
+ 0xCF61, 0x8997,
+ 0xCF8F, 0x8984,
+ 0xCFBE, 0x8971,
+ 0xCFEC, 0x895F,
+ 0xD01B, 0x894C,
+ 0xD04A, 0x8939,
+ 0xD078, 0x8926,
+ 0xD0A7, 0x8914,
+ 0xD0D6, 0x8901,
+ 0xD104, 0x88EF,
+ 0xD133, 0x88DC,
+ 0xD162, 0x88CA,
+ 0xD191, 0x88B8,
+ 0xD1C0, 0x88A5,
+ 0xD1EE, 0x8893,
+ 0xD21D, 0x8881,
+ 0xD24C, 0x886F,
+ 0xD27B, 0x885D,
+ 0xD2AA, 0x884B,
+ 0xD2D9, 0x883A,
+ 0xD308, 0x8828,
+ 0xD337, 0x8816,
+ 0xD367, 0x8805,
+ 0xD396, 0x87F3,
+ 0xD3C5, 0x87E2,
+ 0xD3F4, 0x87D1,
+ 0xD423, 0x87BF,
+ 0xD452, 0x87AE,
+ 0xD482, 0x879D,
+ 0xD4B1, 0x878C,
+ 0xD4E0, 0x877B,
+ 0xD510, 0x876A,
+ 0xD53F, 0x8759,
+ 0xD56E, 0x8749,
+ 0xD59E, 0x8738,
+ 0xD5CD, 0x8727,
+ 0xD5FD, 0x8717,
+ 0xD62C, 0x8706,
+ 0xD65C, 0x86F6,
+ 0xD68B, 0x86E6,
+ 0xD6BB, 0x86D5,
+ 0xD6EA, 0x86C5,
+ 0xD71A, 0x86B5,
+ 0xD74A, 0x86A5,
+ 0xD779, 0x8695,
+ 0xD7A9, 0x8685,
+ 0xD7D9, 0x8675,
+ 0xD809, 0x8666,
+ 0xD838, 0x8656,
+ 0xD868, 0x8646,
+ 0xD898, 0x8637,
+ 0xD8C8, 0x8627,
+ 0xD8F8, 0x8618,
+ 0xD927, 0x8609,
+ 0xD957, 0x85FA,
+ 0xD987, 0x85EA,
+ 0xD9B7, 0x85DB,
+ 0xD9E7, 0x85CC,
+ 0xDA17, 0x85BD,
+ 0xDA47, 0x85AF,
+ 0xDA77, 0x85A0,
+ 0xDAA7, 0x8591,
+ 0xDAD7, 0x8582,
+ 0xDB08, 0x8574,
+ 0xDB38, 0x8565,
+ 0xDB68, 0x8557,
+ 0xDB98, 0x8549,
+ 0xDBC8, 0x853A,
+ 0xDBF8, 0x852C,
+ 0xDC29, 0x851E,
+ 0xDC59, 0x8510,
+ 0xDC89, 0x8502,
+ 0xDCBA, 0x84F4,
+ 0xDCEA, 0x84E6,
+ 0xDD1A, 0x84D9,
+ 0xDD4B, 0x84CB,
+ 0xDD7B, 0x84BD,
+ 0xDDAB, 0x84B0,
+ 0xDDDC, 0x84A2,
+ 0xDE0C, 0x8495,
+ 0xDE3D, 0x8488,
+ 0xDE6D, 0x847B,
+ 0xDE9E, 0x846D,
+ 0xDECE, 0x8460,
+ 0xDEFF, 0x8453,
+ 0xDF2F, 0x8446,
+ 0xDF60, 0x843A,
+ 0xDF91, 0x842D,
+ 0xDFC1, 0x8420,
+ 0xDFF2, 0x8414,
+ 0xE023, 0x8407,
+ 0xE053, 0x83FA,
+ 0xE084, 0x83EE,
+ 0xE0B5, 0x83E2,
+ 0xE0E6, 0x83D6,
+ 0xE116, 0x83C9,
+ 0xE147, 0x83BD,
+ 0xE178, 0x83B1,
+ 0xE1A9, 0x83A5,
+ 0xE1DA, 0x8399,
+ 0xE20A, 0x838E,
+ 0xE23B, 0x8382,
+ 0xE26C, 0x8376,
+ 0xE29D, 0x836B,
+ 0xE2CE, 0x835F,
+ 0xE2FF, 0x8354,
+ 0xE330, 0x8348,
+ 0xE361, 0x833D,
+ 0xE392, 0x8332,
+ 0xE3C3, 0x8327,
+ 0xE3F4, 0x831C,
+ 0xE425, 0x8311,
+ 0xE456, 0x8306,
+ 0xE487, 0x82FB,
+ 0xE4B8, 0x82F0,
+ 0xE4E9, 0x82E6,
+ 0xE51B, 0x82DB,
+ 0xE54C, 0x82D0,
+ 0xE57D, 0x82C6,
+ 0xE5AE, 0x82BC,
+ 0xE5DF, 0x82B1,
+ 0xE610, 0x82A7,
+ 0xE642, 0x829D,
+ 0xE673, 0x8293,
+ 0xE6A4, 0x8289,
+ 0xE6D5, 0x827F,
+ 0xE707, 0x8275,
+ 0xE738, 0x826B,
+ 0xE769, 0x8262,
+ 0xE79B, 0x8258,
+ 0xE7CC, 0x824F,
+ 0xE7FD, 0x8245,
+ 0xE82F, 0x823C,
+ 0xE860, 0x8232,
+ 0xE892, 0x8229,
+ 0xE8C3, 0x8220,
+ 0xE8F5, 0x8217,
+ 0xE926, 0x820E,
+ 0xE957, 0x8205,
+ 0xE989, 0x81FC,
+ 0xE9BA, 0x81F3,
+ 0xE9EC, 0x81EB,
+ 0xEA1D, 0x81E2,
+ 0xEA4F, 0x81D9,
+ 0xEA80, 0x81D1,
+ 0xEAB2, 0x81C8,
+ 0xEAE4, 0x81C0,
+ 0xEB15, 0x81B8,
+ 0xEB47, 0x81B0,
+ 0xEB78, 0x81A8,
+ 0xEBAA, 0x81A0,
+ 0xEBDC, 0x8198,
+ 0xEC0D, 0x8190,
+ 0xEC3F, 0x8188,
+ 0xEC71, 0x8180,
+ 0xECA2, 0x8179,
+ 0xECD4, 0x8171,
+ 0xED06, 0x816A,
+ 0xED37, 0x8162,
+ 0xED69, 0x815B,
+ 0xED9B, 0x8154,
+ 0xEDCD, 0x814C,
+ 0xEDFE, 0x8145,
+ 0xEE30, 0x813E,
+ 0xEE62, 0x8137,
+ 0xEE94, 0x8130,
+ 0xEEC6, 0x812A,
+ 0xEEF7, 0x8123,
+ 0xEF29, 0x811C,
+ 0xEF5B, 0x8116,
+ 0xEF8D, 0x810F,
+ 0xEFBF, 0x8109,
+ 0xEFF1, 0x8102,
+ 0xF022, 0x80FC,
+ 0xF054, 0x80F6,
+ 0xF086, 0x80F0,
+ 0xF0B8, 0x80EA,
+ 0xF0EA, 0x80E4,
+ 0xF11C, 0x80DE,
+ 0xF14E, 0x80D8,
+ 0xF180, 0x80D2,
+ 0xF1B2, 0x80CD,
+ 0xF1E4, 0x80C7,
+ 0xF216, 0x80C2,
+ 0xF248, 0x80BC,
+ 0xF27A, 0x80B7,
+ 0xF2AC, 0x80B2,
+ 0xF2DE, 0x80AC,
+ 0xF310, 0x80A7,
+ 0xF342, 0x80A2,
+ 0xF374, 0x809D,
+ 0xF3A6, 0x8098,
+ 0xF3D8, 0x8094,
+ 0xF40A, 0x808F,
+ 0xF43C, 0x808A,
+ 0xF46E, 0x8086,
+ 0xF4A0, 0x8081,
+ 0xF4D2, 0x807D,
+ 0xF504, 0x8078,
+ 0xF536, 0x8074,
+ 0xF568, 0x8070,
+ 0xF59A, 0x806C,
+ 0xF5CC, 0x8068,
+ 0xF5FF, 0x8064,
+ 0xF631, 0x8060,
+ 0xF663, 0x805C,
+ 0xF695, 0x8058,
+ 0xF6C7, 0x8055,
+ 0xF6F9, 0x8051,
+ 0xF72B, 0x804E,
+ 0xF75D, 0x804A,
+ 0xF790, 0x8047,
+ 0xF7C2, 0x8043,
+ 0xF7F4, 0x8040,
+ 0xF826, 0x803D,
+ 0xF858, 0x803A,
+ 0xF88A, 0x8037,
+ 0xF8BD, 0x8034,
+ 0xF8EF, 0x8031,
+ 0xF921, 0x802F,
+ 0xF953, 0x802C,
+ 0xF985, 0x8029,
+ 0xF9B8, 0x8027,
+ 0xF9EA, 0x8025,
+ 0xFA1C, 0x8022,
+ 0xFA4E, 0x8020,
+ 0xFA80, 0x801E,
+ 0xFAB3, 0x801C,
+ 0xFAE5, 0x801A,
+ 0xFB17, 0x8018,
+ 0xFB49, 0x8016,
+ 0xFB7C, 0x8014,
+ 0xFBAE, 0x8012,
+ 0xFBE0, 0x8011,
+ 0xFC12, 0x800F,
+ 0xFC45, 0x800D,
+ 0xFC77, 0x800C,
+ 0xFCA9, 0x800B,
+ 0xFCDB, 0x8009,
+ 0xFD0E, 0x8008,
+ 0xFD40, 0x8007,
+ 0xFD72, 0x8006,
+ 0xFDA4, 0x8005,
+ 0xFDD7, 0x8004,
+ 0xFE09, 0x8003,
+ 0xFE3B, 0x8003,
+ 0xFE6D, 0x8002,
+ 0xFEA0, 0x8001,
+ 0xFED2, 0x8001,
+ 0xFF04, 0x8000,
+ 0xFF36, 0x8000,
+ 0xFF69, 0x8000,
+ 0xFF9B, 0x8000,
+ 0xFFCD, 0x8000
+};
+
/**
* @} end of CFFT_CIFFT group
@@ -11952,6 +22206,659 @@
};
+const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH] =
+{
+ //radix 4, size 12
+ 8,64, 16,32, 24,96, 40,80, 56,112, 88,104
+};
+
+const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH] =
+{
+ //4x2, size 24
+ 8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144,
+ 88,208, 104,176, 120,240, 152,200, 184,232
+};
+
+const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH] =
+{
+ //radix 4, size 56
+ 8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352,
+ 112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432,
+ 232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472
+};
+
+const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH] =
+{
+ //4x2, size 112
+ 8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192,
+ 104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608,
+ 208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912,
+ 328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624,
+ 472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968,
+ 664,808, 696,936, 728,872, 760,1000, 824,920, 888,984
+};
+
+const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH] =
+{
+ //radix 4, size 240
+ 8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640,
+ 88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320,
+ 168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960,
+ 248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672,
+ 344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376,
+ 432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040,
+ 536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912,
+ 632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488,
+ 752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456,
+ 880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520,
+ 1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928,
+ 1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832,
+ 1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816,
+ 1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976
+};
+
+const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH] =
+{
+ //4x2, size 480
+ 8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280,
+ 88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640,
+ 168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944,
+ 240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648,
+ 328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216,
+ 408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960,
+ 488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616,
+ 584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184,
+ 664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976,
+ 752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400,
+ 848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784,
+ 944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064,
+ 1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344,
+ 1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728,
+ 1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152,
+ 1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920,
+ 1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024,
+ 1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376,
+ 1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480,
+ 1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696,
+ 1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824,
+ 1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312,
+ 2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464,
+ 2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912,
+ 2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624,
+ 2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008,
+ 2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072,
+ 3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928,
+ 3512,3800, 3576,4056, 3704,3896, 3832,4024
+};
+
+const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] =
+{
+ //radix 4, size 992
+ 8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608,
+ 80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352,
+ 144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864,
+ 208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176,
+ 280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688,
+ 344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528,
+ 416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040,
+ 480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088,
+ 552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696,
+ 624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392,
+ 696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904,
+ 760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360,
+ 840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544,
+ 912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008,
+ 984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080,
+ 1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688,
+ 1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432,
+ 1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944,
+ 1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304,
+ 1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696,
+ 1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536,
+ 1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048,
+ 1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168,
+ 1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776,
+ 1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960,
+ 1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320,
+ 1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784,
+ 1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624,
+ 1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112,
+ 2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184,
+ 2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368,
+ 2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832,
+ 2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264,
+ 2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728,
+ 2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008,
+ 2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224,
+ 2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664,
+ 2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944,
+ 2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352,
+ 2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792,
+ 2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072,
+ 3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168,
+ 3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400,
+ 3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936,
+ 3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784,
+ 3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552,
+ 3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208,
+ 3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792,
+ 3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000,
+ 3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848,
+ 3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664,
+ 4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176,
+ 4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384,
+ 4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256,
+ 4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512,
+ 4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192,
+ 4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496,
+ 4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368,
+ 4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112,
+ 5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720,
+ 5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312,
+ 5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080,
+ 5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504,
+ 5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888,
+ 6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680,
+ 6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808,
+ 6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512,
+ 6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736,
+ 7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056
+};
+
+const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] =
+{
+ //4x2, size 1984
+ 8,8192, 16,4096, 24,12288, 32,2048, 40,10240, 48,6144, 56,14336, 64,1024,
+ 72,9216, 80,5120, 88,13312, 96,3072, 104,11264, 112,7168, 120,15360, 128,512,
+ 136,8704, 144,4608, 152,12800, 160,2560, 168,10752, 176,6656, 184,14848,
+ 192,1536, 200,9728, 208,5632, 216,13824, 224,3584, 232,11776, 240,7680,
+ 248,15872, 264,8448, 272,4352, 280,12544, 288,2304, 296,10496, 304,6400,
+ 312,14592, 320,1280, 328,9472, 336,5376, 344,13568, 352,3328, 360,11520,
+ 368,7424, 376,15616, 384,768, 392,8960, 400,4864, 408,13056, 416,2816,
+ 424,11008, 432,6912, 440,15104, 448,1792, 456,9984, 464,5888, 472,14080,
+ 480,3840, 488,12032, 496,7936, 504,16128, 520,8320, 528,4224, 536,12416,
+ 544,2176, 552,10368, 560,6272, 568,14464, 576,1152, 584,9344, 592,5248,
+ 600,13440, 608,3200, 616,11392, 624,7296, 632,15488, 648,8832, 656,4736,
+ 664,12928, 672,2688, 680,10880, 688,6784, 696,14976, 704,1664, 712,9856,
+ 720,5760, 728,13952, 736,3712, 744,11904, 752,7808, 760,16000, 776,8576,
+ 784,4480, 792,12672, 800,2432, 808,10624, 816,6528, 824,14720, 832,1408,
+ 840,9600, 848,5504, 856,13696, 864,3456, 872,11648, 880,7552, 888,15744,
+ 904,9088, 912,4992, 920,13184, 928,2944, 936,11136, 944,7040, 952,15232,
+ 960,1920, 968,10112, 976,6016, 984,14208, 992,3968, 1000,12160, 1008,8064,
+ 1016,16256, 1032,8256, 1040,4160, 1048,12352, 1056,2112, 1064,10304, 1072,6208,
+ 1080,14400, 1096,9280, 1104,5184, 1112,13376, 1120,3136, 1128,11328, 1136,7232,
+ 1144,15424, 1160,8768, 1168,4672, 1176,12864, 1184,2624, 1192,10816, 1200,6720,
+ 1208,14912, 1216,1600, 1224,9792, 1232,5696, 1240,13888, 1248,3648, 1256,11840,
+ 1264,7744, 1272,15936, 1288,8512, 1296,4416, 1304,12608, 1312,2368, 1320,10560,
+ 1328,6464, 1336,14656, 1352,9536, 1360,5440, 1368,13632, 1376,3392, 1384,11584,
+ 1392,7488, 1400,15680, 1416,9024, 1424,4928, 1432,13120, 1440,2880, 1448,11072,
+ 1456,6976, 1464,15168, 1472,1856, 1480,10048, 1488,5952, 1496,14144, 1504,3904,
+ 1512,12096, 1520,8000, 1528,16192, 1544,8384, 1552,4288, 1560,12480, 1568,2240,
+ 1576,10432, 1584,6336, 1592,14528, 1608,9408, 1616,5312, 1624,13504, 1632,3264,
+ 1640,11456, 1648,7360, 1656,15552, 1672,8896, 1680,4800, 1688,12992, 1696,2752,
+ 1704,10944, 1712,6848, 1720,15040, 1736,9920, 1744,5824, 1752,14016, 1760,3776,
+ 1768,11968, 1776,7872, 1784,16064, 1800,8640, 1808,4544, 1816,12736, 1824,2496,
+ 1832,10688, 1840,6592, 1848,14784, 1864,9664, 1872,5568, 1880,13760, 1888,3520,
+ 1896,11712, 1904,7616, 1912,15808, 1928,9152, 1936,5056, 1944,13248, 1952,3008,
+ 1960,11200, 1968,7104, 1976,15296, 1992,10176, 2000,6080, 2008,14272, 2016,4032,
+ 2024,12224, 2032,8128, 2040,16320, 2056,8224, 2064,4128, 2072,12320, 2088,10272,
+ 2096,6176, 2104,14368, 2120,9248, 2128,5152, 2136,13344, 2144,3104, 2152,11296,
+ 2160,7200, 2168,15392, 2184,8736, 2192,4640, 2200,12832, 2208,2592, 2216,10784,
+ 2224,6688, 2232,14880, 2248,9760, 2256,5664, 2264,13856, 2272,3616, 2280,11808,
+ 2288,7712, 2296,15904, 2312,8480, 2320,4384, 2328,12576, 2344,10528, 2352,6432,
+ 2360,14624, 2376,9504, 2384,5408, 2392,13600, 2400,3360, 2408,11552, 2416,7456,
+ 2424,15648, 2440,8992, 2448,4896, 2456,13088, 2464,2848, 2472,11040, 2480,6944,
+ 2488,15136, 2504,10016, 2512,5920, 2520,14112, 2528,3872, 2536,12064, 2544,7968,
+ 2552,16160, 2568,8352, 2576,4256, 2584,12448, 2600,10400, 2608,6304, 2616,14496,
+ 2632,9376, 2640,5280, 2648,13472, 2656,3232, 2664,11424, 2672,7328, 2680,15520,
+ 2696,8864, 2704,4768, 2712,12960, 2728,10912, 2736,6816, 2744,15008, 2760,9888,
+ 2768,5792, 2776,13984, 2784,3744, 2792,11936, 2800,7840, 2808,16032, 2824,8608,
+ 2832,4512, 2840,12704, 2856,10656, 2864,6560, 2872,14752, 2888,9632, 2896,5536,
+ 2904,13728, 2912,3488, 2920,11680, 2928,7584, 2936,15776, 2952,9120, 2960,5024,
+ 2968,13216, 2984,11168, 2992,7072, 3000,15264, 3016,10144, 3024,6048,
+ 3032,14240, 3040,4000, 3048,12192, 3056,8096, 3064,16288, 3080,8288, 3088,4192,
+ 3096,12384, 3112,10336, 3120,6240, 3128,14432, 3144,9312, 3152,5216, 3160,13408,
+ 3176,11360, 3184,7264, 3192,15456, 3208,8800, 3216,4704, 3224,12896, 3240,10848,
+ 3248,6752, 3256,14944, 3272,9824, 3280,5728, 3288,13920, 3296,3680, 3304,11872,
+ 3312,7776, 3320,15968, 3336,8544, 3344,4448, 3352,12640, 3368,10592, 3376,6496,
+ 3384,14688, 3400,9568, 3408,5472, 3416,13664, 3432,11616, 3440,7520, 3448,15712,
+ 3464,9056, 3472,4960, 3480,13152, 3496,11104, 3504,7008, 3512,15200, 3528,10080,
+ 3536,5984, 3544,14176, 3552,3936, 3560,12128, 3568,8032, 3576,16224, 3592,8416,
+ 3600,4320, 3608,12512, 3624,10464, 3632,6368, 3640,14560, 3656,9440, 3664,5344,
+ 3672,13536, 3688,11488, 3696,7392, 3704,15584, 3720,8928, 3728,4832, 3736,13024,
+ 3752,10976, 3760,6880, 3768,15072, 3784,9952, 3792,5856, 3800,14048, 3816,12000,
+ 3824,7904, 3832,16096, 3848,8672, 3856,4576, 3864,12768, 3880,10720, 3888,6624,
+ 3896,14816, 3912,9696, 3920,5600, 3928,13792, 3944,11744, 3952,7648, 3960,15840,
+ 3976,9184, 3984,5088, 3992,13280, 4008,11232, 4016,7136, 4024,15328, 4040,10208,
+ 4048,6112, 4056,14304, 4072,12256, 4080,8160, 4088,16352, 4104,8208, 4120,12304,
+ 4136,10256, 4144,6160, 4152,14352, 4168,9232, 4176,5136, 4184,13328, 4200,11280,
+ 4208,7184, 4216,15376, 4232,8720, 4240,4624, 4248,12816, 4264,10768, 4272,6672,
+ 4280,14864, 4296,9744, 4304,5648, 4312,13840, 4328,11792, 4336,7696, 4344,15888,
+ 4360,8464, 4376,12560, 4392,10512, 4400,6416, 4408,14608, 4424,9488, 4432,5392,
+ 4440,13584, 4456,11536, 4464,7440, 4472,15632, 4488,8976, 4496,4880, 4504,13072,
+ 4520,11024, 4528,6928, 4536,15120, 4552,10000, 4560,5904, 4568,14096,
+ 4584,12048, 4592,7952, 4600,16144, 4616,8336, 4632,12432, 4648,10384, 4656,6288,
+ 4664,14480, 4680,9360, 4688,5264, 4696,13456, 4712,11408, 4720,7312, 4728,15504,
+ 4744,8848, 4760,12944, 4776,10896, 4784,6800, 4792,14992, 4808,9872, 4816,5776,
+ 4824,13968, 4840,11920, 4848,7824, 4856,16016, 4872,8592, 4888,12688,
+ 4904,10640, 4912,6544, 4920,14736, 4936,9616, 4944,5520, 4952,13712, 4968,11664,
+ 4976,7568, 4984,15760, 5000,9104, 5016,13200, 5032,11152, 5040,7056, 5048,15248,
+ 5064,10128, 5072,6032, 5080,14224, 5096,12176, 5104,8080, 5112,16272, 5128,8272,
+ 5144,12368, 5160,10320, 5168,6224, 5176,14416, 5192,9296, 5208,13392,
+ 5224,11344, 5232,7248, 5240,15440, 5256,8784, 5272,12880, 5288,10832, 5296,6736,
+ 5304,14928, 5320,9808, 5328,5712, 5336,13904, 5352,11856, 5360,7760, 5368,15952,
+ 5384,8528, 5400,12624, 5416,10576, 5424,6480, 5432,14672, 5448,9552, 5464,13648,
+ 5480,11600, 5488,7504, 5496,15696, 5512,9040, 5528,13136, 5544,11088, 5552,6992,
+ 5560,15184, 5576,10064, 5584,5968, 5592,14160, 5608,12112, 5616,8016,
+ 5624,16208, 5640,8400, 5656,12496, 5672,10448, 5680,6352, 5688,14544, 5704,9424,
+ 5720,13520, 5736,11472, 5744,7376, 5752,15568, 5768,8912, 5784,13008,
+ 5800,10960, 5808,6864, 5816,15056, 5832,9936, 5848,14032, 5864,11984, 5872,7888,
+ 5880,16080, 5896,8656, 5912,12752, 5928,10704, 5936,6608, 5944,14800, 5960,9680,
+ 5976,13776, 5992,11728, 6000,7632, 6008,15824, 6024,9168, 6040,13264,
+ 6056,11216, 6064,7120, 6072,15312, 6088,10192, 6104,14288, 6120,12240,
+ 6128,8144, 6136,16336, 6152,8240, 6168,12336, 6184,10288, 6200,14384, 6216,9264,
+ 6232,13360, 6248,11312, 6256,7216, 6264,15408, 6280,8752, 6296,12848,
+ 6312,10800, 6320,6704, 6328,14896, 6344,9776, 6360,13872, 6376,11824, 6384,7728,
+ 6392,15920, 6408,8496, 6424,12592, 6440,10544, 6456,14640, 6472,9520,
+ 6488,13616, 6504,11568, 6512,7472, 6520,15664, 6536,9008, 6552,13104,
+ 6568,11056, 6576,6960, 6584,15152, 6600,10032, 6616,14128, 6632,12080,
+ 6640,7984, 6648,16176, 6664,8368, 6680,12464, 6696,10416, 6712,14512, 6728,9392,
+ 6744,13488, 6760,11440, 6768,7344, 6776,15536, 6792,8880, 6808,12976,
+ 6824,10928, 6840,15024, 6856,9904, 6872,14000, 6888,11952, 6896,7856,
+ 6904,16048, 6920,8624, 6936,12720, 6952,10672, 6968,14768, 6984,9648,
+ 7000,13744, 7016,11696, 7024,7600, 7032,15792, 7048,9136, 7064,13232,
+ 7080,11184, 7096,15280, 7112,10160, 7128,14256, 7144,12208, 7152,8112,
+ 7160,16304, 7176,8304, 7192,12400, 7208,10352, 7224,14448, 7240,9328,
+ 7256,13424, 7272,11376, 7288,15472, 7304,8816, 7320,12912, 7336,10864,
+ 7352,14960, 7368,9840, 7384,13936, 7400,11888, 7408,7792, 7416,15984, 7432,8560,
+ 7448,12656, 7464,10608, 7480,14704, 7496,9584, 7512,13680, 7528,11632,
+ 7544,15728, 7560,9072, 7576,13168, 7592,11120, 7608,15216, 7624,10096,
+ 7640,14192, 7656,12144, 7664,8048, 7672,16240, 7688,8432, 7704,12528,
+ 7720,10480, 7736,14576, 7752,9456, 7768,13552, 7784,11504, 7800,15600,
+ 7816,8944, 7832,13040, 7848,10992, 7864,15088, 7880,9968, 7896,14064,
+ 7912,12016, 7928,16112, 7944,8688, 7960,12784, 7976,10736, 7992,14832,
+ 8008,9712, 8024,13808, 8040,11760, 8056,15856, 8072,9200, 8088,13296,
+ 8104,11248, 8120,15344, 8136,10224, 8152,14320, 8168,12272, 8184,16368,
+ 8216,12296, 8232,10248, 8248,14344, 8264,9224, 8280,13320, 8296,11272,
+ 8312,15368, 8328,8712, 8344,12808, 8360,10760, 8376,14856, 8392,9736,
+ 8408,13832, 8424,11784, 8440,15880, 8472,12552, 8488,10504, 8504,14600,
+ 8520,9480, 8536,13576, 8552,11528, 8568,15624, 8584,8968, 8600,13064,
+ 8616,11016, 8632,15112, 8648,9992, 8664,14088, 8680,12040, 8696,16136,
+ 8728,12424, 8744,10376, 8760,14472, 8776,9352, 8792,13448, 8808,11400,
+ 8824,15496, 8856,12936, 8872,10888, 8888,14984, 8904,9864, 8920,13960,
+ 8936,11912, 8952,16008, 8984,12680, 9000,10632, 9016,14728, 9032,9608,
+ 9048,13704, 9064,11656, 9080,15752, 9112,13192, 9128,11144, 9144,15240,
+ 9160,10120, 9176,14216, 9192,12168, 9208,16264, 9240,12360, 9256,10312,
+ 9272,14408, 9304,13384, 9320,11336, 9336,15432, 9368,12872, 9384,10824,
+ 9400,14920, 9416,9800, 9432,13896, 9448,11848, 9464,15944, 9496,12616,
+ 9512,10568, 9528,14664, 9560,13640, 9576,11592, 9592,15688, 9624,13128,
+ 9640,11080, 9656,15176, 9672,10056, 9688,14152, 9704,12104, 9720,16200,
+ 9752,12488, 9768,10440, 9784,14536, 9816,13512, 9832,11464, 9848,15560,
+ 9880,13000, 9896,10952, 9912,15048, 9944,14024, 9960,11976, 9976,16072,
+ 10008,12744, 10024,10696, 10040,14792, 10072,13768, 10088,11720, 10104,15816,
+ 10136,13256, 10152,11208, 10168,15304, 10200,14280, 10216,12232, 10232,16328,
+ 10264,12328, 10296,14376, 10328,13352, 10344,11304, 10360,15400, 10392,12840,
+ 10408,10792, 10424,14888, 10456,13864, 10472,11816, 10488,15912, 10520,12584,
+ 10552,14632, 10584,13608, 10600,11560, 10616,15656, 10648,13096, 10664,11048,
+ 10680,15144, 10712,14120, 10728,12072, 10744,16168, 10776,12456, 10808,14504,
+ 10840,13480, 10856,11432, 10872,15528, 10904,12968, 10936,15016, 10968,13992,
+ 10984,11944, 11000,16040, 11032,12712, 11064,14760, 11096,13736, 11112,11688,
+ 11128,15784, 11160,13224, 11192,15272, 11224,14248, 11240,12200, 11256,16296,
+ 11288,12392, 11320,14440, 11352,13416, 11384,15464, 11416,12904, 11448,14952,
+ 11480,13928, 11496,11880, 11512,15976, 11544,12648, 11576,14696, 11608,13672,
+ 11640,15720, 11672,13160, 11704,15208, 11736,14184, 11752,12136, 11768,16232,
+ 11800,12520, 11832,14568, 11864,13544, 11896,15592, 11928,13032, 11960,15080,
+ 11992,14056, 12024,16104, 12056,12776, 12088,14824, 12120,13800, 12152,15848,
+ 12184,13288, 12216,15336, 12248,14312, 12280,16360, 12344,14360, 12376,13336,
+ 12408,15384, 12440,12824, 12472,14872, 12504,13848, 12536,15896, 12600,14616,
+ 12632,13592, 12664,15640, 12696,13080, 12728,15128, 12760,14104, 12792,16152,
+ 12856,14488, 12888,13464, 12920,15512, 12984,15000, 13016,13976, 13048,16024,
+ 13112,14744, 13144,13720, 13176,15768, 13240,15256, 13272,14232, 13304,16280,
+ 13368,14424, 13432,15448, 13496,14936, 13528,13912, 13560,15960, 13624,14680,
+ 13688,15704, 13752,15192, 13784,14168, 13816,16216, 13880,14552, 13944,15576,
+ 14008,15064, 14072,16088, 14136,14808, 14200,15832, 14264,15320, 14328,16344,
+ 14456,15416, 14520,14904, 14584,15928, 14712,15672, 14776,15160, 14840,16184,
+ 14968,15544, 15096,16056, 15224,15800, 15352,16312, 15608,15992, 15864,16248
+};
+
+const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH] =
+{
+ //radix 4, size 4032
+ 8,16384, 16,8192, 24,24576, 32,4096, 40,20480, 48,12288, 56,28672, 64,2048,
+ 72,18432, 80,10240, 88,26624, 96,6144, 104,22528, 112,14336, 120,30720,
+ 128,1024, 136,17408, 144,9216, 152,25600, 160,5120, 168,21504, 176,13312,
+ 184,29696, 192,3072, 200,19456, 208,11264, 216,27648, 224,7168, 232,23552,
+ 240,15360, 248,31744, 256,512, 264,16896, 272,8704, 280,25088, 288,4608,
+ 296,20992, 304,12800, 312,29184, 320,2560, 328,18944, 336,10752, 344,27136,
+ 352,6656, 360,23040, 368,14848, 376,31232, 384,1536, 392,17920, 400,9728,
+ 408,26112, 416,5632, 424,22016, 432,13824, 440,30208, 448,3584, 456,19968,
+ 464,11776, 472,28160, 480,7680, 488,24064, 496,15872, 504,32256, 520,16640,
+ 528,8448, 536,24832, 544,4352, 552,20736, 560,12544, 568,28928, 576,2304,
+ 584,18688, 592,10496, 600,26880, 608,6400, 616,22784, 624,14592, 632,30976,
+ 640,1280, 648,17664, 656,9472, 664,25856, 672,5376, 680,21760, 688,13568,
+ 696,29952, 704,3328, 712,19712, 720,11520, 728,27904, 736,7424, 744,23808,
+ 752,15616, 760,32000, 776,17152, 784,8960, 792,25344, 800,4864, 808,21248,
+ 816,13056, 824,29440, 832,2816, 840,19200, 848,11008, 856,27392, 864,6912,
+ 872,23296, 880,15104, 888,31488, 896,1792, 904,18176, 912,9984, 920,26368,
+ 928,5888, 936,22272, 944,14080, 952,30464, 960,3840, 968,20224, 976,12032,
+ 984,28416, 992,7936, 1000,24320, 1008,16128, 1016,32512, 1032,16512, 1040,8320,
+ 1048,24704, 1056,4224, 1064,20608, 1072,12416, 1080,28800, 1088,2176,
+ 1096,18560, 1104,10368, 1112,26752, 1120,6272, 1128,22656, 1136,14464,
+ 1144,30848, 1160,17536, 1168,9344, 1176,25728, 1184,5248, 1192,21632,
+ 1200,13440, 1208,29824, 1216,3200, 1224,19584, 1232,11392, 1240,27776,
+ 1248,7296, 1256,23680, 1264,15488, 1272,31872, 1288,17024, 1296,8832,
+ 1304,25216, 1312,4736, 1320,21120, 1328,12928, 1336,29312, 1344,2688,
+ 1352,19072, 1360,10880, 1368,27264, 1376,6784, 1384,23168, 1392,14976,
+ 1400,31360, 1408,1664, 1416,18048, 1424,9856, 1432,26240, 1440,5760, 1448,22144,
+ 1456,13952, 1464,30336, 1472,3712, 1480,20096, 1488,11904, 1496,28288,
+ 1504,7808, 1512,24192, 1520,16000, 1528,32384, 1544,16768, 1552,8576,
+ 1560,24960, 1568,4480, 1576,20864, 1584,12672, 1592,29056, 1600,2432,
+ 1608,18816, 1616,10624, 1624,27008, 1632,6528, 1640,22912, 1648,14720,
+ 1656,31104, 1672,17792, 1680,9600, 1688,25984, 1696,5504, 1704,21888,
+ 1712,13696, 1720,30080, 1728,3456, 1736,19840, 1744,11648, 1752,28032,
+ 1760,7552, 1768,23936, 1776,15744, 1784,32128, 1800,17280, 1808,9088,
+ 1816,25472, 1824,4992, 1832,21376, 1840,13184, 1848,29568, 1856,2944,
+ 1864,19328, 1872,11136, 1880,27520, 1888,7040, 1896,23424, 1904,15232,
+ 1912,31616, 1928,18304, 1936,10112, 1944,26496, 1952,6016, 1960,22400,
+ 1968,14208, 1976,30592, 1984,3968, 1992,20352, 2000,12160, 2008,28544,
+ 2016,8064, 2024,24448, 2032,16256, 2040,32640, 2056,16448, 2064,8256,
+ 2072,24640, 2080,4160, 2088,20544, 2096,12352, 2104,28736, 2120,18496,
+ 2128,10304, 2136,26688, 2144,6208, 2152,22592, 2160,14400, 2168,30784,
+ 2184,17472, 2192,9280, 2200,25664, 2208,5184, 2216,21568, 2224,13376,
+ 2232,29760, 2240,3136, 2248,19520, 2256,11328, 2264,27712, 2272,7232,
+ 2280,23616, 2288,15424, 2296,31808, 2312,16960, 2320,8768, 2328,25152,
+ 2336,4672, 2344,21056, 2352,12864, 2360,29248, 2368,2624, 2376,19008,
+ 2384,10816, 2392,27200, 2400,6720, 2408,23104, 2416,14912, 2424,31296,
+ 2440,17984, 2448,9792, 2456,26176, 2464,5696, 2472,22080, 2480,13888,
+ 2488,30272, 2496,3648, 2504,20032, 2512,11840, 2520,28224, 2528,7744,
+ 2536,24128, 2544,15936, 2552,32320, 2568,16704, 2576,8512, 2584,24896,
+ 2592,4416, 2600,20800, 2608,12608, 2616,28992, 2632,18752, 2640,10560,
+ 2648,26944, 2656,6464, 2664,22848, 2672,14656, 2680,31040, 2696,17728,
+ 2704,9536, 2712,25920, 2720,5440, 2728,21824, 2736,13632, 2744,30016, 2752,3392,
+ 2760,19776, 2768,11584, 2776,27968, 2784,7488, 2792,23872, 2800,15680,
+ 2808,32064, 2824,17216, 2832,9024, 2840,25408, 2848,4928, 2856,21312,
+ 2864,13120, 2872,29504, 2888,19264, 2896,11072, 2904,27456, 2912,6976,
+ 2920,23360, 2928,15168, 2936,31552, 2952,18240, 2960,10048, 2968,26432,
+ 2976,5952, 2984,22336, 2992,14144, 3000,30528, 3008,3904, 3016,20288,
+ 3024,12096, 3032,28480, 3040,8000, 3048,24384, 3056,16192, 3064,32576,
+ 3080,16576, 3088,8384, 3096,24768, 3104,4288, 3112,20672, 3120,12480,
+ 3128,28864, 3144,18624, 3152,10432, 3160,26816, 3168,6336, 3176,22720,
+ 3184,14528, 3192,30912, 3208,17600, 3216,9408, 3224,25792, 3232,5312,
+ 3240,21696, 3248,13504, 3256,29888, 3272,19648, 3280,11456, 3288,27840,
+ 3296,7360, 3304,23744, 3312,15552, 3320,31936, 3336,17088, 3344,8896,
+ 3352,25280, 3360,4800, 3368,21184, 3376,12992, 3384,29376, 3400,19136,
+ 3408,10944, 3416,27328, 3424,6848, 3432,23232, 3440,15040, 3448,31424,
+ 3464,18112, 3472,9920, 3480,26304, 3488,5824, 3496,22208, 3504,14016,
+ 3512,30400, 3520,3776, 3528,20160, 3536,11968, 3544,28352, 3552,7872,
+ 3560,24256, 3568,16064, 3576,32448, 3592,16832, 3600,8640, 3608,25024,
+ 3616,4544, 3624,20928, 3632,12736, 3640,29120, 3656,18880, 3664,10688,
+ 3672,27072, 3680,6592, 3688,22976, 3696,14784, 3704,31168, 3720,17856,
+ 3728,9664, 3736,26048, 3744,5568, 3752,21952, 3760,13760, 3768,30144,
+ 3784,19904, 3792,11712, 3800,28096, 3808,7616, 3816,24000, 3824,15808,
+ 3832,32192, 3848,17344, 3856,9152, 3864,25536, 3872,5056, 3880,21440,
+ 3888,13248, 3896,29632, 3912,19392, 3920,11200, 3928,27584, 3936,7104,
+ 3944,23488, 3952,15296, 3960,31680, 3976,18368, 3984,10176, 3992,26560,
+ 4000,6080, 4008,22464, 4016,14272, 4024,30656, 4040,20416, 4048,12224,
+ 4056,28608, 4064,8128, 4072,24512, 4080,16320, 4088,32704, 4104,16416,
+ 4112,8224, 4120,24608, 4136,20512, 4144,12320, 4152,28704, 4168,18464,
+ 4176,10272, 4184,26656, 4192,6176, 4200,22560, 4208,14368, 4216,30752,
+ 4232,17440, 4240,9248, 4248,25632, 4256,5152, 4264,21536, 4272,13344,
+ 4280,29728, 4296,19488, 4304,11296, 4312,27680, 4320,7200, 4328,23584,
+ 4336,15392, 4344,31776, 4360,16928, 4368,8736, 4376,25120, 4384,4640,
+ 4392,21024, 4400,12832, 4408,29216, 4424,18976, 4432,10784, 4440,27168,
+ 4448,6688, 4456,23072, 4464,14880, 4472,31264, 4488,17952, 4496,9760,
+ 4504,26144, 4512,5664, 4520,22048, 4528,13856, 4536,30240, 4552,20000,
+ 4560,11808, 4568,28192, 4576,7712, 4584,24096, 4592,15904, 4600,32288,
+ 4616,16672, 4624,8480, 4632,24864, 4648,20768, 4656,12576, 4664,28960,
+ 4680,18720, 4688,10528, 4696,26912, 4704,6432, 4712,22816, 4720,14624,
+ 4728,31008, 4744,17696, 4752,9504, 4760,25888, 4768,5408, 4776,21792,
+ 4784,13600, 4792,29984, 4808,19744, 4816,11552, 4824,27936, 4832,7456,
+ 4840,23840, 4848,15648, 4856,32032, 4872,17184, 4880,8992, 4888,25376,
+ 4904,21280, 4912,13088, 4920,29472, 4936,19232, 4944,11040, 4952,27424,
+ 4960,6944, 4968,23328, 4976,15136, 4984,31520, 5000,18208, 5008,10016,
+ 5016,26400, 5024,5920, 5032,22304, 5040,14112, 5048,30496, 5064,20256,
+ 5072,12064, 5080,28448, 5088,7968, 5096,24352, 5104,16160, 5112,32544,
+ 5128,16544, 5136,8352, 5144,24736, 5160,20640, 5168,12448, 5176,28832,
+ 5192,18592, 5200,10400, 5208,26784, 5216,6304, 5224,22688, 5232,14496,
+ 5240,30880, 5256,17568, 5264,9376, 5272,25760, 5288,21664, 5296,13472,
+ 5304,29856, 5320,19616, 5328,11424, 5336,27808, 5344,7328, 5352,23712,
+ 5360,15520, 5368,31904, 5384,17056, 5392,8864, 5400,25248, 5416,21152,
+ 5424,12960, 5432,29344, 5448,19104, 5456,10912, 5464,27296, 5472,6816,
+ 5480,23200, 5488,15008, 5496,31392, 5512,18080, 5520,9888, 5528,26272,
+ 5536,5792, 5544,22176, 5552,13984, 5560,30368, 5576,20128, 5584,11936,
+ 5592,28320, 5600,7840, 5608,24224, 5616,16032, 5624,32416, 5640,16800,
+ 5648,8608, 5656,24992, 5672,20896, 5680,12704, 5688,29088, 5704,18848,
+ 5712,10656, 5720,27040, 5728,6560, 5736,22944, 5744,14752, 5752,31136,
+ 5768,17824, 5776,9632, 5784,26016, 5800,21920, 5808,13728, 5816,30112,
+ 5832,19872, 5840,11680, 5848,28064, 5856,7584, 5864,23968, 5872,15776,
+ 5880,32160, 5896,17312, 5904,9120, 5912,25504, 5928,21408, 5936,13216,
+ 5944,29600, 5960,19360, 5968,11168, 5976,27552, 5984,7072, 5992,23456,
+ 6000,15264, 6008,31648, 6024,18336, 6032,10144, 6040,26528, 6056,22432,
+ 6064,14240, 6072,30624, 6088,20384, 6096,12192, 6104,28576, 6112,8096,
+ 6120,24480, 6128,16288, 6136,32672, 6152,16480, 6160,8288, 6168,24672,
+ 6184,20576, 6192,12384, 6200,28768, 6216,18528, 6224,10336, 6232,26720,
+ 6248,22624, 6256,14432, 6264,30816, 6280,17504, 6288,9312, 6296,25696,
+ 6312,21600, 6320,13408, 6328,29792, 6344,19552, 6352,11360, 6360,27744,
+ 6368,7264, 6376,23648, 6384,15456, 6392,31840, 6408,16992, 6416,8800,
+ 6424,25184, 6440,21088, 6448,12896, 6456,29280, 6472,19040, 6480,10848,
+ 6488,27232, 6496,6752, 6504,23136, 6512,14944, 6520,31328, 6536,18016,
+ 6544,9824, 6552,26208, 6568,22112, 6576,13920, 6584,30304, 6600,20064,
+ 6608,11872, 6616,28256, 6624,7776, 6632,24160, 6640,15968, 6648,32352,
+ 6664,16736, 6672,8544, 6680,24928, 6696,20832, 6704,12640, 6712,29024,
+ 6728,18784, 6736,10592, 6744,26976, 6760,22880, 6768,14688, 6776,31072,
+ 6792,17760, 6800,9568, 6808,25952, 6824,21856, 6832,13664, 6840,30048,
+ 6856,19808, 6864,11616, 6872,28000, 6880,7520, 6888,23904, 6896,15712,
+ 6904,32096, 6920,17248, 6928,9056, 6936,25440, 6952,21344, 6960,13152,
+ 6968,29536, 6984,19296, 6992,11104, 7000,27488, 7016,23392, 7024,15200,
+ 7032,31584, 7048,18272, 7056,10080, 7064,26464, 7080,22368, 7088,14176,
+ 7096,30560, 7112,20320, 7120,12128, 7128,28512, 7136,8032, 7144,24416,
+ 7152,16224, 7160,32608, 7176,16608, 7184,8416, 7192,24800, 7208,20704,
+ 7216,12512, 7224,28896, 7240,18656, 7248,10464, 7256,26848, 7272,22752,
+ 7280,14560, 7288,30944, 7304,17632, 7312,9440, 7320,25824, 7336,21728,
+ 7344,13536, 7352,29920, 7368,19680, 7376,11488, 7384,27872, 7400,23776,
+ 7408,15584, 7416,31968, 7432,17120, 7440,8928, 7448,25312, 7464,21216,
+ 7472,13024, 7480,29408, 7496,19168, 7504,10976, 7512,27360, 7528,23264,
+ 7536,15072, 7544,31456, 7560,18144, 7568,9952, 7576,26336, 7592,22240,
+ 7600,14048, 7608,30432, 7624,20192, 7632,12000, 7640,28384, 7648,7904,
+ 7656,24288, 7664,16096, 7672,32480, 7688,16864, 7696,8672, 7704,25056,
+ 7720,20960, 7728,12768, 7736,29152, 7752,18912, 7760,10720, 7768,27104,
+ 7784,23008, 7792,14816, 7800,31200, 7816,17888, 7824,9696, 7832,26080,
+ 7848,21984, 7856,13792, 7864,30176, 7880,19936, 7888,11744, 7896,28128,
+ 7912,24032, 7920,15840, 7928,32224, 7944,17376, 7952,9184, 7960,25568,
+ 7976,21472, 7984,13280, 7992,29664, 8008,19424, 8016,11232, 8024,27616,
+ 8040,23520, 8048,15328, 8056,31712, 8072,18400, 8080,10208, 8088,26592,
+ 8104,22496, 8112,14304, 8120,30688, 8136,20448, 8144,12256, 8152,28640,
+ 8168,24544, 8176,16352, 8184,32736, 8200,16400, 8216,24592, 8232,20496,
+ 8240,12304, 8248,28688, 8264,18448, 8272,10256, 8280,26640, 8296,22544,
+ 8304,14352, 8312,30736, 8328,17424, 8336,9232, 8344,25616, 8360,21520,
+ 8368,13328, 8376,29712, 8392,19472, 8400,11280, 8408,27664, 8424,23568,
+ 8432,15376, 8440,31760, 8456,16912, 8464,8720, 8472,25104, 8488,21008,
+ 8496,12816, 8504,29200, 8520,18960, 8528,10768, 8536,27152, 8552,23056,
+ 8560,14864, 8568,31248, 8584,17936, 8592,9744, 8600,26128, 8616,22032,
+ 8624,13840, 8632,30224, 8648,19984, 8656,11792, 8664,28176, 8680,24080,
+ 8688,15888, 8696,32272, 8712,16656, 8728,24848, 8744,20752, 8752,12560,
+ 8760,28944, 8776,18704, 8784,10512, 8792,26896, 8808,22800, 8816,14608,
+ 8824,30992, 8840,17680, 8848,9488, 8856,25872, 8872,21776, 8880,13584,
+ 8888,29968, 8904,19728, 8912,11536, 8920,27920, 8936,23824, 8944,15632,
+ 8952,32016, 8968,17168, 8984,25360, 9000,21264, 9008,13072, 9016,29456,
+ 9032,19216, 9040,11024, 9048,27408, 9064,23312, 9072,15120, 9080,31504,
+ 9096,18192, 9104,10000, 9112,26384, 9128,22288, 9136,14096, 9144,30480,
+ 9160,20240, 9168,12048, 9176,28432, 9192,24336, 9200,16144, 9208,32528,
+ 9224,16528, 9240,24720, 9256,20624, 9264,12432, 9272,28816, 9288,18576,
+ 9296,10384, 9304,26768, 9320,22672, 9328,14480, 9336,30864, 9352,17552,
+ 9368,25744, 9384,21648, 9392,13456, 9400,29840, 9416,19600, 9424,11408,
+ 9432,27792, 9448,23696, 9456,15504, 9464,31888, 9480,17040, 9496,25232,
+ 9512,21136, 9520,12944, 9528,29328, 9544,19088, 9552,10896, 9560,27280,
+ 9576,23184, 9584,14992, 9592,31376, 9608,18064, 9616,9872, 9624,26256,
+ 9640,22160, 9648,13968, 9656,30352, 9672,20112, 9680,11920, 9688,28304,
+ 9704,24208, 9712,16016, 9720,32400, 9736,16784, 9752,24976, 9768,20880,
+ 9776,12688, 9784,29072, 9800,18832, 9808,10640, 9816,27024, 9832,22928,
+ 9840,14736, 9848,31120, 9864,17808, 9880,26000, 9896,21904, 9904,13712,
+ 9912,30096, 9928,19856, 9936,11664, 9944,28048, 9960,23952, 9968,15760,
+ 9976,32144, 9992,17296, 10008,25488, 10024,21392, 10032,13200, 10040,29584,
+ 10056,19344, 10064,11152, 10072,27536, 10088,23440, 10096,15248, 10104,31632,
+ 10120,18320, 10136,26512, 10152,22416, 10160,14224, 10168,30608, 10184,20368,
+ 10192,12176, 10200,28560, 10216,24464, 10224,16272, 10232,32656, 10248,16464,
+ 10264,24656, 10280,20560, 10288,12368, 10296,28752, 10312,18512, 10328,26704,
+ 10344,22608, 10352,14416, 10360,30800, 10376,17488, 10392,25680, 10408,21584,
+ 10416,13392, 10424,29776, 10440,19536, 10448,11344, 10456,27728, 10472,23632,
+ 10480,15440, 10488,31824, 10504,16976, 10520,25168, 10536,21072, 10544,12880,
+ 10552,29264, 10568,19024, 10576,10832, 10584,27216, 10600,23120, 10608,14928,
+ 10616,31312, 10632,18000, 10648,26192, 10664,22096, 10672,13904, 10680,30288,
+ 10696,20048, 10704,11856, 10712,28240, 10728,24144, 10736,15952, 10744,32336,
+ 10760,16720, 10776,24912, 10792,20816, 10800,12624, 10808,29008, 10824,18768,
+ 10840,26960, 10856,22864, 10864,14672, 10872,31056, 10888,17744, 10904,25936,
+ 10920,21840, 10928,13648, 10936,30032, 10952,19792, 10960,11600, 10968,27984,
+ 10984,23888, 10992,15696, 11000,32080, 11016,17232, 11032,25424, 11048,21328,
+ 11056,13136, 11064,29520, 11080,19280, 11096,27472, 11112,23376, 11120,15184,
+ 11128,31568, 11144,18256, 11160,26448, 11176,22352, 11184,14160, 11192,30544,
+ 11208,20304, 11216,12112, 11224,28496, 11240,24400, 11248,16208, 11256,32592,
+ 11272,16592, 11288,24784, 11304,20688, 11312,12496, 11320,28880, 11336,18640,
+ 11352,26832, 11368,22736, 11376,14544, 11384,30928, 11400,17616, 11416,25808,
+ 11432,21712, 11440,13520, 11448,29904, 11464,19664, 11480,27856, 11496,23760,
+ 11504,15568, 11512,31952, 11528,17104, 11544,25296, 11560,21200, 11568,13008,
+ 11576,29392, 11592,19152, 11608,27344, 11624,23248, 11632,15056, 11640,31440,
+ 11656,18128, 11672,26320, 11688,22224, 11696,14032, 11704,30416, 11720,20176,
+ 11728,11984, 11736,28368, 11752,24272, 11760,16080, 11768,32464, 11784,16848,
+ 11800,25040, 11816,20944, 11824,12752, 11832,29136, 11848,18896, 11864,27088,
+ 11880,22992, 11888,14800, 11896,31184, 11912,17872, 11928,26064, 11944,21968,
+ 11952,13776, 11960,30160, 11976,19920, 11992,28112, 12008,24016, 12016,15824,
+ 12024,32208, 12040,17360, 12056,25552, 12072,21456, 12080,13264, 12088,29648,
+ 12104,19408, 12120,27600, 12136,23504, 12144,15312, 12152,31696, 12168,18384,
+ 12184,26576, 12200,22480, 12208,14288, 12216,30672, 12232,20432, 12248,28624,
+ 12264,24528, 12272,16336, 12280,32720, 12296,16432, 12312,24624, 12328,20528,
+ 12344,28720, 12360,18480, 12376,26672, 12392,22576, 12400,14384, 12408,30768,
+ 12424,17456, 12440,25648, 12456,21552, 12464,13360, 12472,29744, 12488,19504,
+ 12504,27696, 12520,23600, 12528,15408, 12536,31792, 12552,16944, 12568,25136,
+ 12584,21040, 12592,12848, 12600,29232, 12616,18992, 12632,27184, 12648,23088,
+ 12656,14896, 12664,31280, 12680,17968, 12696,26160, 12712,22064, 12720,13872,
+ 12728,30256, 12744,20016, 12760,28208, 12776,24112, 12784,15920, 12792,32304,
+ 12808,16688, 12824,24880, 12840,20784, 12856,28976, 12872,18736, 12888,26928,
+ 12904,22832, 12912,14640, 12920,31024, 12936,17712, 12952,25904, 12968,21808,
+ 12976,13616, 12984,30000, 13000,19760, 13016,27952, 13032,23856, 13040,15664,
+ 13048,32048, 13064,17200, 13080,25392, 13096,21296, 13112,29488, 13128,19248,
+ 13144,27440, 13160,23344, 13168,15152, 13176,31536, 13192,18224, 13208,26416,
+ 13224,22320, 13232,14128, 13240,30512, 13256,20272, 13272,28464, 13288,24368,
+ 13296,16176, 13304,32560, 13320,16560, 13336,24752, 13352,20656, 13368,28848,
+ 13384,18608, 13400,26800, 13416,22704, 13424,14512, 13432,30896, 13448,17584,
+ 13464,25776, 13480,21680, 13496,29872, 13512,19632, 13528,27824, 13544,23728,
+ 13552,15536, 13560,31920, 13576,17072, 13592,25264, 13608,21168, 13624,29360,
+ 13640,19120, 13656,27312, 13672,23216, 13680,15024, 13688,31408, 13704,18096,
+ 13720,26288, 13736,22192, 13744,14000, 13752,30384, 13768,20144, 13784,28336,
+ 13800,24240, 13808,16048, 13816,32432, 13832,16816, 13848,25008, 13864,20912,
+ 13880,29104, 13896,18864, 13912,27056, 13928,22960, 13936,14768, 13944,31152,
+ 13960,17840, 13976,26032, 13992,21936, 14008,30128, 14024,19888, 14040,28080,
+ 14056,23984, 14064,15792, 14072,32176, 14088,17328, 14104,25520, 14120,21424,
+ 14136,29616, 14152,19376, 14168,27568, 14184,23472, 14192,15280, 14200,31664,
+ 14216,18352, 14232,26544, 14248,22448, 14264,30640, 14280,20400, 14296,28592,
+ 14312,24496, 14320,16304, 14328,32688, 14344,16496, 14360,24688, 14376,20592,
+ 14392,28784, 14408,18544, 14424,26736, 14440,22640, 14456,30832, 14472,17520,
+ 14488,25712, 14504,21616, 14520,29808, 14536,19568, 14552,27760, 14568,23664,
+ 14576,15472, 14584,31856, 14600,17008, 14616,25200, 14632,21104, 14648,29296,
+ 14664,19056, 14680,27248, 14696,23152, 14704,14960, 14712,31344, 14728,18032,
+ 14744,26224, 14760,22128, 14776,30320, 14792,20080, 14808,28272, 14824,24176,
+ 14832,15984, 14840,32368, 14856,16752, 14872,24944, 14888,20848, 14904,29040,
+ 14920,18800, 14936,26992, 14952,22896, 14968,31088, 14984,17776, 15000,25968,
+ 15016,21872, 15032,30064, 15048,19824, 15064,28016, 15080,23920, 15088,15728,
+ 15096,32112, 15112,17264, 15128,25456, 15144,21360, 15160,29552, 15176,19312,
+ 15192,27504, 15208,23408, 15224,31600, 15240,18288, 15256,26480, 15272,22384,
+ 15288,30576, 15304,20336, 15320,28528, 15336,24432, 15344,16240, 15352,32624,
+ 15368,16624, 15384,24816, 15400,20720, 15416,28912, 15432,18672, 15448,26864,
+ 15464,22768, 15480,30960, 15496,17648, 15512,25840, 15528,21744, 15544,29936,
+ 15560,19696, 15576,27888, 15592,23792, 15608,31984, 15624,17136, 15640,25328,
+ 15656,21232, 15672,29424, 15688,19184, 15704,27376, 15720,23280, 15736,31472,
+ 15752,18160, 15768,26352, 15784,22256, 15800,30448, 15816,20208, 15832,28400,
+ 15848,24304, 15856,16112, 15864,32496, 15880,16880, 15896,25072, 15912,20976,
+ 15928,29168, 15944,18928, 15960,27120, 15976,23024, 15992,31216, 16008,17904,
+ 16024,26096, 16040,22000, 16056,30192, 16072,19952, 16088,28144, 16104,24048,
+ 16120,32240, 16136,17392, 16152,25584, 16168,21488, 16184,29680, 16200,19440,
+ 16216,27632, 16232,23536, 16248,31728, 16264,18416, 16280,26608, 16296,22512,
+ 16312,30704, 16328,20464, 16344,28656, 16360,24560, 16376,32752, 16408,24584,
+ 16424,20488, 16440,28680, 16456,18440, 16472,26632, 16488,22536, 16504,30728,
+ 16520,17416, 16536,25608, 16552,21512, 16568,29704, 16584,19464, 16600,27656,
+ 16616,23560, 16632,31752, 16648,16904, 16664,25096, 16680,21000, 16696,29192,
+ 16712,18952, 16728,27144, 16744,23048, 16760,31240, 16776,17928, 16792,26120,
+ 16808,22024, 16824,30216, 16840,19976, 16856,28168, 16872,24072, 16888,32264,
+ 16920,24840, 16936,20744, 16952,28936, 16968,18696, 16984,26888, 17000,22792,
+ 17016,30984, 17032,17672, 17048,25864, 17064,21768, 17080,29960, 17096,19720,
+ 17112,27912, 17128,23816, 17144,32008, 17176,25352, 17192,21256, 17208,29448,
+ 17224,19208, 17240,27400, 17256,23304, 17272,31496, 17288,18184, 17304,26376,
+ 17320,22280, 17336,30472, 17352,20232, 17368,28424, 17384,24328, 17400,32520,
+ 17432,24712, 17448,20616, 17464,28808, 17480,18568, 17496,26760, 17512,22664,
+ 17528,30856, 17560,25736, 17576,21640, 17592,29832, 17608,19592, 17624,27784,
+ 17640,23688, 17656,31880, 17688,25224, 17704,21128, 17720,29320, 17736,19080,
+ 17752,27272, 17768,23176, 17784,31368, 17800,18056, 17816,26248, 17832,22152,
+ 17848,30344, 17864,20104, 17880,28296, 17896,24200, 17912,32392, 17944,24968,
+ 17960,20872, 17976,29064, 17992,18824, 18008,27016, 18024,22920, 18040,31112,
+ 18072,25992, 18088,21896, 18104,30088, 18120,19848, 18136,28040, 18152,23944,
+ 18168,32136, 18200,25480, 18216,21384, 18232,29576, 18248,19336, 18264,27528,
+ 18280,23432, 18296,31624, 18328,26504, 18344,22408, 18360,30600, 18376,20360,
+ 18392,28552, 18408,24456, 18424,32648, 18456,24648, 18472,20552, 18488,28744,
+ 18520,26696, 18536,22600, 18552,30792, 18584,25672, 18600,21576, 18616,29768,
+ 18632,19528, 18648,27720, 18664,23624, 18680,31816, 18712,25160, 18728,21064,
+ 18744,29256, 18760,19016, 18776,27208, 18792,23112, 18808,31304, 18840,26184,
+ 18856,22088, 18872,30280, 18888,20040, 18904,28232, 18920,24136, 18936,32328,
+ 18968,24904, 18984,20808, 19000,29000, 19032,26952, 19048,22856, 19064,31048,
+ 19096,25928, 19112,21832, 19128,30024, 19144,19784, 19160,27976, 19176,23880,
+ 19192,32072, 19224,25416, 19240,21320, 19256,29512, 19288,27464, 19304,23368,
+ 19320,31560, 19352,26440, 19368,22344, 19384,30536, 19400,20296, 19416,28488,
+ 19432,24392, 19448,32584, 19480,24776, 19496,20680, 19512,28872, 19544,26824,
+ 19560,22728, 19576,30920, 19608,25800, 19624,21704, 19640,29896, 19672,27848,
+ 19688,23752, 19704,31944, 19736,25288, 19752,21192, 19768,29384, 19800,27336,
+ 19816,23240, 19832,31432, 19864,26312, 19880,22216, 19896,30408, 19912,20168,
+ 19928,28360, 19944,24264, 19960,32456, 19992,25032, 20008,20936, 20024,29128,
+ 20056,27080, 20072,22984, 20088,31176, 20120,26056, 20136,21960, 20152,30152,
+ 20184,28104, 20200,24008, 20216,32200, 20248,25544, 20264,21448, 20280,29640,
+ 20312,27592, 20328,23496, 20344,31688, 20376,26568, 20392,22472, 20408,30664,
+ 20440,28616, 20456,24520, 20472,32712, 20504,24616, 20536,28712, 20568,26664,
+ 20584,22568, 20600,30760, 20632,25640, 20648,21544, 20664,29736, 20696,27688,
+ 20712,23592, 20728,31784, 20760,25128, 20776,21032, 20792,29224, 20824,27176,
+ 20840,23080, 20856,31272, 20888,26152, 20904,22056, 20920,30248, 20952,28200,
+ 20968,24104, 20984,32296, 21016,24872, 21048,28968, 21080,26920, 21096,22824,
+ 21112,31016, 21144,25896, 21160,21800, 21176,29992, 21208,27944, 21224,23848,
+ 21240,32040, 21272,25384, 21304,29480, 21336,27432, 21352,23336, 21368,31528,
+ 21400,26408, 21416,22312, 21432,30504, 21464,28456, 21480,24360, 21496,32552,
+ 21528,24744, 21560,28840, 21592,26792, 21608,22696, 21624,30888, 21656,25768,
+ 21688,29864, 21720,27816, 21736,23720, 21752,31912, 21784,25256, 21816,29352,
+ 21848,27304, 21864,23208, 21880,31400, 21912,26280, 21928,22184, 21944,30376,
+ 21976,28328, 21992,24232, 22008,32424, 22040,25000, 22072,29096, 22104,27048,
+ 22120,22952, 22136,31144, 22168,26024, 22200,30120, 22232,28072, 22248,23976,
+ 22264,32168, 22296,25512, 22328,29608, 22360,27560, 22376,23464, 22392,31656,
+ 22424,26536, 22456,30632, 22488,28584, 22504,24488, 22520,32680, 22552,24680,
+ 22584,28776, 22616,26728, 22648,30824, 22680,25704, 22712,29800, 22744,27752,
+ 22760,23656, 22776,31848, 22808,25192, 22840,29288, 22872,27240, 22888,23144,
+ 22904,31336, 22936,26216, 22968,30312, 23000,28264, 23016,24168, 23032,32360,
+ 23064,24936, 23096,29032, 23128,26984, 23160,31080, 23192,25960, 23224,30056,
+ 23256,28008, 23272,23912, 23288,32104, 23320,25448, 23352,29544, 23384,27496,
+ 23416,31592, 23448,26472, 23480,30568, 23512,28520, 23528,24424, 23544,32616,
+ 23576,24808, 23608,28904, 23640,26856, 23672,30952, 23704,25832, 23736,29928,
+ 23768,27880, 23800,31976, 23832,25320, 23864,29416, 23896,27368, 23928,31464,
+ 23960,26344, 23992,30440, 24024,28392, 24040,24296, 24056,32488, 24088,25064,
+ 24120,29160, 24152,27112, 24184,31208, 24216,26088, 24248,30184, 24280,28136,
+ 24312,32232, 24344,25576, 24376,29672, 24408,27624, 24440,31720, 24472,26600,
+ 24504,30696, 24536,28648, 24568,32744, 24632,28696, 24664,26648, 24696,30744,
+ 24728,25624, 24760,29720, 24792,27672, 24824,31768, 24856,25112, 24888,29208,
+ 24920,27160, 24952,31256, 24984,26136, 25016,30232, 25048,28184, 25080,32280,
+ 25144,28952, 25176,26904, 25208,31000, 25240,25880, 25272,29976, 25304,27928,
+ 25336,32024, 25400,29464, 25432,27416, 25464,31512, 25496,26392, 25528,30488,
+ 25560,28440, 25592,32536, 25656,28824, 25688,26776, 25720,30872, 25784,29848,
+ 25816,27800, 25848,31896, 25912,29336, 25944,27288, 25976,31384, 26008,26264,
+ 26040,30360, 26072,28312, 26104,32408, 26168,29080, 26200,27032, 26232,31128,
+ 26296,30104, 26328,28056, 26360,32152, 26424,29592, 26456,27544, 26488,31640,
+ 26552,30616, 26584,28568, 26616,32664, 26680,28760, 26744,30808, 26808,29784,
+ 26840,27736, 26872,31832, 26936,29272, 26968,27224, 27000,31320, 27064,30296,
+ 27096,28248, 27128,32344, 27192,29016, 27256,31064, 27320,30040, 27352,27992,
+ 27384,32088, 27448,29528, 27512,31576, 27576,30552, 27608,28504, 27640,32600,
+ 27704,28888, 27768,30936, 27832,29912, 27896,31960, 27960,29400, 28024,31448,
+ 28088,30424, 28120,28376, 28152,32472, 28216,29144, 28280,31192, 28344,30168,
+ 28408,32216, 28472,29656, 28536,31704, 28600,30680, 28664,32728, 28792,30776,
+ 28856,29752, 28920,31800, 28984,29240, 29048,31288, 29112,30264, 29176,32312,
+ 29304,31032, 29368,30008, 29432,32056, 29560,31544, 29624,30520, 29688,32568,
+ 29816,30904, 29944,31928, 30072,31416, 30136,30392, 30200,32440, 30328,31160,
+ 30456,32184, 30584,31672, 30712,32696, 30968,31864, 31096,31352, 31224,32376,
+ 31480,32120, 31736,32632, 32248,32504
+};
+
/**
* \par
* Example code for Floating-point RFFT Twiddle factors Generation:
@@ -16063,3 +26970,282 @@
0.003067957f, -0.999995294f,
0.001533980f, -0.999998823f
};
+
+
+/**
+ * \par
+ * Example code for the generation of the floating-point sine table:
+ * <pre>
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ * sinTable[n]=sin(2*pi*n/tableSize);
+ * }</pre>
+ * \par
+ * where pi value is 3.14159265358979
+ */
+
+const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = {
+ 0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f,
+ 0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f,
+ 0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f,
+ 0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f,
+ 0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f,
+ 0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f,
+ 0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f,
+ 0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f,
+ 0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f,
+ 0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f,
+ 0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f,
+ 0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f,
+ 0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f,
+ 0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f,
+ 0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f,
+ 0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f,
+ 0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f,
+ 0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f,
+ 0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f,
+ 0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f,
+ 0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f,
+ 0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f,
+ 0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f,
+ 0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f,
+ 0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f,
+ 0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f,
+ 0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f,
+ 0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f,
+ 0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f,
+ 0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f,
+ 0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f,
+ 0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f,
+ 0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f,
+ 0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f,
+ 0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f,
+ 0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f,
+ 0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f,
+ 0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f,
+ 0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f,
+ 0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f,
+ 0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f,
+ 0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f,
+ 0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f,
+ -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f,
+ -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f,
+ -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f,
+ -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f,
+ -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f,
+ -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f,
+ -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f,
+ -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f,
+ -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f,
+ -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f,
+ -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f,
+ -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f,
+ -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f,
+ -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f,
+ -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f,
+ -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f,
+ -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f,
+ -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f,
+ -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f,
+ -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f,
+ -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f,
+ -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f,
+ -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f,
+ -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f,
+ -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f,
+ -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f,
+ -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f,
+ -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f,
+ -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f,
+ -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f,
+ -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f,
+ -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f,
+ -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f,
+ -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f,
+ -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f,
+ -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f,
+ -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f,
+ -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f,
+ -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f,
+ -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f,
+ -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f,
+ -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f,
+ -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f,
+ -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f,
+ -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f,
+ -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f,
+ -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f,
+ -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f,
+ -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f,
+ -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f,
+ -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f
+};
+
+/**
+ * \par
+ * Table values are in Q31 (1.31 fixed-point format) and generation is done in
+ * three steps. First, generate sin values in floating point:
+ * <pre>
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ * sinTable[n]= sin(2*pi*n/tableSize);
+ * } </pre>
+ * where pi value is 3.14159265358979
+ * \par
+ * Second, convert floating-point to Q31 (Fixed point):
+ * (sinTable[i] * pow(2, 31))
+ * \par
+ * Finally, round to the nearest integer value:
+ * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
+ */
+const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = {
+ 0x00000000, 0x01921D20, 0x03242ABF, 0x04B6195D, 0x0647D97C, 0x07D95B9E,
+ 0x096A9049, 0x0AFB6805, 0x0C8BD35E, 0x0E1BC2E4, 0x0FAB272B, 0x1139F0CF,
+ 0x12C8106F, 0x145576B1, 0x15E21445, 0x176DD9DE, 0x18F8B83C, 0x1A82A026,
+ 0x1C0B826A, 0x1D934FE5, 0x1F19F97B, 0x209F701C, 0x2223A4C5, 0x23A6887F,
+ 0x25280C5E, 0x26A82186, 0x2826B928, 0x29A3C485, 0x2B1F34EB, 0x2C98FBBA,
+ 0x2E110A62, 0x2F875262, 0x30FBC54D, 0x326E54C7, 0x33DEF287, 0x354D9057,
+ 0x36BA2014, 0x382493B0, 0x398CDD32, 0x3AF2EEB7, 0x3C56BA70, 0x3DB832A6,
+ 0x3F1749B8, 0x4073F21D, 0x41CE1E65, 0x4325C135, 0x447ACD50, 0x45CD358F,
+ 0x471CECE7, 0x4869E665, 0x49B41533, 0x4AFB6C98, 0x4C3FDFF4, 0x4D8162C4,
+ 0x4EBFE8A5, 0x4FFB654D, 0x5133CC94, 0x5269126E, 0x539B2AF0, 0x54CA0A4B,
+ 0x55F5A4D2, 0x571DEEFA, 0x5842DD54, 0x59646498, 0x5A82799A, 0x5B9D1154,
+ 0x5CB420E0, 0x5DC79D7C, 0x5ED77C8A, 0x5FE3B38D, 0x60EC3830, 0x61F1003F,
+ 0x62F201AC, 0x63EF3290, 0x64E88926, 0x65DDFBD3, 0x66CF8120, 0x67BD0FBD,
+ 0x68A69E81, 0x698C246C, 0x6A6D98A4, 0x6B4AF279, 0x6C242960, 0x6CF934FC,
+ 0x6DCA0D14, 0x6E96A99D, 0x6F5F02B2, 0x7023109A, 0x70E2CBC6, 0x719E2CD2,
+ 0x72552C85, 0x7307C3D0, 0x73B5EBD1, 0x745F9DD1, 0x7504D345, 0x75A585CF,
+ 0x7641AF3D, 0x76D94989, 0x776C4EDB, 0x77FAB989, 0x78848414, 0x7909A92D,
+ 0x798A23B1, 0x7A05EEAD, 0x7A7D055B, 0x7AEF6323, 0x7B5D039E, 0x7BC5E290,
+ 0x7C29FBEE, 0x7C894BDE, 0x7CE3CEB2, 0x7D3980EC, 0x7D8A5F40, 0x7DD6668F,
+ 0x7E1D93EA, 0x7E5FE493, 0x7E9D55FC, 0x7ED5E5C6, 0x7F0991C4, 0x7F3857F6,
+ 0x7F62368F, 0x7F872BF3, 0x7FA736B4, 0x7FC25596, 0x7FD8878E, 0x7FE9CBC0,
+ 0x7FF62182, 0x7FFD885A, 0x7FFFFFFF, 0x7FFD885A, 0x7FF62182, 0x7FE9CBC0,
+ 0x7FD8878E, 0x7FC25596, 0x7FA736B4, 0x7F872BF3, 0x7F62368F, 0x7F3857F6,
+ 0x7F0991C4, 0x7ED5E5C6, 0x7E9D55FC, 0x7E5FE493, 0x7E1D93EA, 0x7DD6668F,
+ 0x7D8A5F40, 0x7D3980EC, 0x7CE3CEB2, 0x7C894BDE, 0x7C29FBEE, 0x7BC5E290,
+ 0x7B5D039E, 0x7AEF6323, 0x7A7D055B, 0x7A05EEAD, 0x798A23B1, 0x7909A92D,
+ 0x78848414, 0x77FAB989, 0x776C4EDB, 0x76D94989, 0x7641AF3D, 0x75A585CF,
+ 0x7504D345, 0x745F9DD1, 0x73B5EBD1, 0x7307C3D0, 0x72552C85, 0x719E2CD2,
+ 0x70E2CBC6, 0x7023109A, 0x6F5F02B2, 0x6E96A99D, 0x6DCA0D14, 0x6CF934FC,
+ 0x6C242960, 0x6B4AF279, 0x6A6D98A4, 0x698C246C, 0x68A69E81, 0x67BD0FBD,
+ 0x66CF8120, 0x65DDFBD3, 0x64E88926, 0x63EF3290, 0x62F201AC, 0x61F1003F,
+ 0x60EC3830, 0x5FE3B38D, 0x5ED77C8A, 0x5DC79D7C, 0x5CB420E0, 0x5B9D1154,
+ 0x5A82799A, 0x59646498, 0x5842DD54, 0x571DEEFA, 0x55F5A4D2, 0x54CA0A4B,
+ 0x539B2AF0, 0x5269126E, 0x5133CC94, 0x4FFB654D, 0x4EBFE8A5, 0x4D8162C4,
+ 0x4C3FDFF4, 0x4AFB6C98, 0x49B41533, 0x4869E665, 0x471CECE7, 0x45CD358F,
+ 0x447ACD50, 0x4325C135, 0x41CE1E65, 0x4073F21D, 0x3F1749B8, 0x3DB832A6,
+ 0x3C56BA70, 0x3AF2EEB7, 0x398CDD32, 0x382493B0, 0x36BA2014, 0x354D9057,
+ 0x33DEF287, 0x326E54C7, 0x30FBC54D, 0x2F875262, 0x2E110A62, 0x2C98FBBA,
+ 0x2B1F34EB, 0x29A3C485, 0x2826B928, 0x26A82186, 0x25280C5E, 0x23A6887F,
+ 0x2223A4C5, 0x209F701C, 0x1F19F97B, 0x1D934FE5, 0x1C0B826A, 0x1A82A026,
+ 0x18F8B83C, 0x176DD9DE, 0x15E21445, 0x145576B1, 0x12C8106F, 0x1139F0CF,
+ 0x0FAB272B, 0x0E1BC2E4, 0x0C8BD35E, 0x0AFB6805, 0x096A9049, 0x07D95B9E,
+ 0x0647D97C, 0x04B6195D, 0x03242ABF, 0x01921D20, 0x00000000, 0xFE6DE2E0,
+ 0xFCDBD541, 0xFB49E6A3, 0xF9B82684, 0xF826A462, 0xF6956FB7, 0xF50497FB,
+ 0xF3742CA2, 0xF1E43D1C, 0xF054D8D5, 0xEEC60F31, 0xED37EF91, 0xEBAA894F,
+ 0xEA1DEBBB, 0xE8922622, 0xE70747C4, 0xE57D5FDA, 0xE3F47D96, 0xE26CB01B,
+ 0xE0E60685, 0xDF608FE4, 0xDDDC5B3B, 0xDC597781, 0xDAD7F3A2, 0xD957DE7A,
+ 0xD7D946D8, 0xD65C3B7B, 0xD4E0CB15, 0xD3670446, 0xD1EEF59E, 0xD078AD9E,
+ 0xCF043AB3, 0xCD91AB39, 0xCC210D79, 0xCAB26FA9, 0xC945DFEC, 0xC7DB6C50,
+ 0xC67322CE, 0xC50D1149, 0xC3A94590, 0xC247CD5A, 0xC0E8B648, 0xBF8C0DE3,
+ 0xBE31E19B, 0xBCDA3ECB, 0xBB8532B0, 0xBA32CA71, 0xB8E31319, 0xB796199B,
+ 0xB64BEACD, 0xB5049368, 0xB3C0200C, 0xB27E9D3C, 0xB140175B, 0xB0049AB3,
+ 0xAECC336C, 0xAD96ED92, 0xAC64D510, 0xAB35F5B5, 0xAA0A5B2E, 0xA8E21106,
+ 0xA7BD22AC, 0xA69B9B68, 0xA57D8666, 0xA462EEAC, 0xA34BDF20, 0xA2386284,
+ 0xA1288376, 0xA01C4C73, 0x9F13C7D0, 0x9E0EFFC1, 0x9D0DFE54, 0x9C10CD70,
+ 0x9B1776DA, 0x9A22042D, 0x99307EE0, 0x9842F043, 0x9759617F, 0x9673DB94,
+ 0x9592675C, 0x94B50D87, 0x93DBD6A0, 0x9306CB04, 0x9235F2EC, 0x91695663,
+ 0x90A0FD4E, 0x8FDCEF66, 0x8F1D343A, 0x8E61D32E, 0x8DAAD37B, 0x8CF83C30,
+ 0x8C4A142F, 0x8BA0622F, 0x8AFB2CBB, 0x8A5A7A31, 0x89BE50C3, 0x8926B677,
+ 0x8893B125, 0x88054677, 0x877B7BEC, 0x86F656D3, 0x8675DC4F, 0x85FA1153,
+ 0x8582FAA5, 0x85109CDD, 0x84A2FC62, 0x843A1D70, 0x83D60412, 0x8376B422,
+ 0x831C314E, 0x82C67F14, 0x8275A0C0, 0x82299971, 0x81E26C16, 0x81A01B6D,
+ 0x8162AA04, 0x812A1A3A, 0x80F66E3C, 0x80C7A80A, 0x809DC971, 0x8078D40D,
+ 0x8058C94C, 0x803DAA6A, 0x80277872, 0x80163440, 0x8009DE7E, 0x800277A6,
+ 0x80000000, 0x800277A6, 0x8009DE7E, 0x80163440, 0x80277872, 0x803DAA6A,
+ 0x8058C94C, 0x8078D40D, 0x809DC971, 0x80C7A80A, 0x80F66E3C, 0x812A1A3A,
+ 0x8162AA04, 0x81A01B6D, 0x81E26C16, 0x82299971, 0x8275A0C0, 0x82C67F14,
+ 0x831C314E, 0x8376B422, 0x83D60412, 0x843A1D70, 0x84A2FC62, 0x85109CDD,
+ 0x8582FAA5, 0x85FA1153, 0x8675DC4F, 0x86F656D3, 0x877B7BEC, 0x88054677,
+ 0x8893B125, 0x8926B677, 0x89BE50C3, 0x8A5A7A31, 0x8AFB2CBB, 0x8BA0622F,
+ 0x8C4A142F, 0x8CF83C30, 0x8DAAD37B, 0x8E61D32E, 0x8F1D343A, 0x8FDCEF66,
+ 0x90A0FD4E, 0x91695663, 0x9235F2EC, 0x9306CB04, 0x93DBD6A0, 0x94B50D87,
+ 0x9592675C, 0x9673DB94, 0x9759617F, 0x9842F043, 0x99307EE0, 0x9A22042D,
+ 0x9B1776DA, 0x9C10CD70, 0x9D0DFE54, 0x9E0EFFC1, 0x9F13C7D0, 0xA01C4C73,
+ 0xA1288376, 0xA2386284, 0xA34BDF20, 0xA462EEAC, 0xA57D8666, 0xA69B9B68,
+ 0xA7BD22AC, 0xA8E21106, 0xAA0A5B2E, 0xAB35F5B5, 0xAC64D510, 0xAD96ED92,
+ 0xAECC336C, 0xB0049AB3, 0xB140175B, 0xB27E9D3C, 0xB3C0200C, 0xB5049368,
+ 0xB64BEACD, 0xB796199B, 0xB8E31319, 0xBA32CA71, 0xBB8532B0, 0xBCDA3ECB,
+ 0xBE31E19B, 0xBF8C0DE3, 0xC0E8B648, 0xC247CD5A, 0xC3A94590, 0xC50D1149,
+ 0xC67322CE, 0xC7DB6C50, 0xC945DFEC, 0xCAB26FA9, 0xCC210D79, 0xCD91AB39,
+ 0xCF043AB3, 0xD078AD9E, 0xD1EEF59E, 0xD3670446, 0xD4E0CB15, 0xD65C3B7B,
+ 0xD7D946D8, 0xD957DE7A, 0xDAD7F3A2, 0xDC597781, 0xDDDC5B3B, 0xDF608FE4,
+ 0xE0E60685, 0xE26CB01B, 0xE3F47D96, 0xE57D5FDA, 0xE70747C4, 0xE8922622,
+ 0xEA1DEBBB, 0xEBAA894F, 0xED37EF91, 0xEEC60F31, 0xF054D8D5, 0xF1E43D1C,
+ 0xF3742CA2, 0xF50497FB, 0xF6956FB7, 0xF826A462, 0xF9B82684, 0xFB49E6A3,
+ 0xFCDBD541, 0xFE6DE2E0, 0x00000000
+};
+
+/**
+ * \par
+ * Table values are in Q15 (1.15 fixed-point format) and generation is done in
+ * three steps. First, generate sin values in floating point:
+ * <pre>
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ * sinTable[n]= sin(2*pi*n/tableSize);
+ * } </pre>
+ * where pi value is 3.14159265358979
+ * \par
+ * Second, convert floating-point to Q15 (Fixed point):
+ * (sinTable[i] * pow(2, 15))
+ * \par
+ * Finally, round to the nearest integer value:
+ * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
+ */
+const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = {
+ 0x0000, 0x0192, 0x0324, 0x04B6, 0x0648, 0x07D9, 0x096B, 0x0AFB, 0x0C8C, 0x0E1C, 0x0FAB, 0x113A, 0x12C8,
+ 0x1455, 0x15E2, 0x176E, 0x18F9, 0x1A83, 0x1C0C, 0x1D93, 0x1F1A, 0x209F, 0x2224, 0x23A7, 0x2528, 0x26A8,
+ 0x2827, 0x29A4, 0x2B1F, 0x2C99, 0x2E11, 0x2F87, 0x30FC, 0x326E, 0x33DF, 0x354E, 0x36BA, 0x3825, 0x398D,
+ 0x3AF3, 0x3C57, 0x3DB8, 0x3F17, 0x4074, 0x41CE, 0x4326, 0x447B, 0x45CD, 0x471D, 0x486A, 0x49B4, 0x4AFB,
+ 0x4C40, 0x4D81, 0x4EC0, 0x4FFB, 0x5134, 0x5269, 0x539B, 0x54CA, 0x55F6, 0x571E, 0x5843, 0x5964, 0x5A82,
+ 0x5B9D, 0x5CB4, 0x5DC8, 0x5ED7, 0x5FE4, 0x60EC, 0x61F1, 0x62F2, 0x63EF, 0x64E9, 0x65DE, 0x66D0, 0x67BD,
+ 0x68A7, 0x698C, 0x6A6E, 0x6B4B, 0x6C24, 0x6CF9, 0x6DCA, 0x6E97, 0x6F5F, 0x7023, 0x70E3, 0x719E, 0x7255,
+ 0x7308, 0x73B6, 0x7460, 0x7505, 0x75A6, 0x7642, 0x76D9, 0x776C, 0x77FB, 0x7885, 0x790A, 0x798A, 0x7A06,
+ 0x7A7D, 0x7AEF, 0x7B5D, 0x7BC6, 0x7C2A, 0x7C89, 0x7CE4, 0x7D3A, 0x7D8A, 0x7DD6, 0x7E1E, 0x7E60, 0x7E9D,
+ 0x7ED6, 0x7F0A, 0x7F38, 0x7F62, 0x7F87, 0x7FA7, 0x7FC2, 0x7FD9, 0x7FEA, 0x7FF6, 0x7FFE, 0x7FFF, 0x7FFE,
+ 0x7FF6, 0x7FEA, 0x7FD9, 0x7FC2, 0x7FA7, 0x7F87, 0x7F62, 0x7F38, 0x7F0A, 0x7ED6, 0x7E9D, 0x7E60, 0x7E1E,
+ 0x7DD6, 0x7D8A, 0x7D3A, 0x7CE4, 0x7C89, 0x7C2A, 0x7BC6, 0x7B5D, 0x7AEF, 0x7A7D, 0x7A06, 0x798A, 0x790A,
+ 0x7885, 0x77FB, 0x776C, 0x76D9, 0x7642, 0x75A6, 0x7505, 0x7460, 0x73B6, 0x7308, 0x7255, 0x719E, 0x70E3,
+ 0x7023, 0x6F5F, 0x6E97, 0x6DCA, 0x6CF9, 0x6C24, 0x6B4B, 0x6A6E, 0x698C, 0x68A7, 0x67BD, 0x66D0, 0x65DE,
+ 0x64E9, 0x63EF, 0x62F2, 0x61F1, 0x60EC, 0x5FE4, 0x5ED7, 0x5DC8, 0x5CB4, 0x5B9D, 0x5A82, 0x5964, 0x5843,
+ 0x571E, 0x55F6, 0x54CA, 0x539B, 0x5269, 0x5134, 0x4FFB, 0x4EC0, 0x4D81, 0x4C40, 0x4AFB, 0x49B4, 0x486A,
+ 0x471D, 0x45CD, 0x447B, 0x4326, 0x41CE, 0x4074, 0x3F17, 0x3DB8, 0x3C57, 0x3AF3, 0x398D, 0x3825, 0x36BA,
+ 0x354E, 0x33DF, 0x326E, 0x30FC, 0x2F87, 0x2E11, 0x2C99, 0x2B1F, 0x29A4, 0x2827, 0x26A8, 0x2528, 0x23A7,
+ 0x2224, 0x209F, 0x1F1A, 0x1D93, 0x1C0C, 0x1A83, 0x18F9, 0x176E, 0x15E2, 0x1455, 0x12C8, 0x113A, 0x0FAB,
+ 0x0E1C, 0x0C8C, 0x0AFB, 0x096B, 0x07D9, 0x0648, 0x04B6, 0x0324, 0x0192, 0x0000, 0xFE6E, 0xFCDC, 0xFB4A,
+ 0xF9B8, 0xF827, 0xF695, 0xF505, 0xF374, 0xF1E4, 0xF055, 0xEEC6, 0xED38, 0xEBAB, 0xEA1E, 0xE892, 0xE707,
+ 0xE57D, 0xE3F4, 0xE26D, 0xE0E6, 0xDF61, 0xDDDC, 0xDC59, 0xDAD8, 0xD958, 0xD7D9, 0xD65C, 0xD4E1, 0xD367,
+ 0xD1EF, 0xD079, 0xCF04, 0xCD92, 0xCC21, 0xCAB2, 0xC946, 0xC7DB, 0xC673, 0xC50D, 0xC3A9, 0xC248, 0xC0E9,
+ 0xBF8C, 0xBE32, 0xBCDA, 0xBB85, 0xBA33, 0xB8E3, 0xB796, 0xB64C, 0xB505, 0xB3C0, 0xB27F, 0xB140, 0xB005,
+ 0xAECC, 0xAD97, 0xAC65, 0xAB36, 0xAA0A, 0xA8E2, 0xA7BD, 0xA69C, 0xA57E, 0xA463, 0xA34C, 0xA238, 0xA129,
+ 0xA01C, 0x9F14, 0x9E0F, 0x9D0E, 0x9C11, 0x9B17, 0x9A22, 0x9930, 0x9843, 0x9759, 0x9674, 0x9592, 0x94B5,
+ 0x93DC, 0x9307, 0x9236, 0x9169, 0x90A1, 0x8FDD, 0x8F1D, 0x8E62, 0x8DAB, 0x8CF8, 0x8C4A, 0x8BA0, 0x8AFB,
+ 0x8A5A, 0x89BE, 0x8927, 0x8894, 0x8805, 0x877B, 0x86F6, 0x8676, 0x85FA, 0x8583, 0x8511, 0x84A3, 0x843A,
+ 0x83D6, 0x8377, 0x831C, 0x82C6, 0x8276, 0x822A, 0x81E2, 0x81A0, 0x8163, 0x812A, 0x80F6, 0x80C8, 0x809E,
+ 0x8079, 0x8059, 0x803E, 0x8027, 0x8016, 0x800A, 0x8002, 0x8000, 0x8002, 0x800A, 0x8016, 0x8027, 0x803E,
+ 0x8059, 0x8079, 0x809E, 0x80C8, 0x80F6, 0x812A, 0x8163, 0x81A0, 0x81E2, 0x822A, 0x8276, 0x82C6, 0x831C,
+ 0x8377, 0x83D6, 0x843A, 0x84A3, 0x8511, 0x8583, 0x85FA, 0x8676, 0x86F6, 0x877B, 0x8805, 0x8894, 0x8927,
+ 0x89BE, 0x8A5A, 0x8AFB, 0x8BA0, 0x8C4A, 0x8CF8, 0x8DAB, 0x8E62, 0x8F1D, 0x8FDD, 0x90A1, 0x9169, 0x9236,
+ 0x9307, 0x93DC, 0x94B5, 0x9592, 0x9674, 0x9759, 0x9843, 0x9930, 0x9A22, 0x9B17, 0x9C11, 0x9D0E, 0x9E0F,
+ 0x9F14, 0xA01C, 0xA129, 0xA238, 0xA34C, 0xA463, 0xA57E, 0xA69C, 0xA7BD, 0xA8E2, 0xAA0A, 0xAB36, 0xAC65,
+ 0xAD97, 0xAECC, 0xB005, 0xB140, 0xB27F, 0xB3C0, 0xB505, 0xB64C, 0xB796, 0xB8E3, 0xBA33, 0xBB85, 0xBCDA,
+ 0xBE32, 0xBF8C, 0xC0E9, 0xC248, 0xC3A9, 0xC50D, 0xC673, 0xC7DB, 0xC946, 0xCAB2, 0xCC21, 0xCD92, 0xCF04,
+ 0xD079, 0xD1EF, 0xD367, 0xD4E1, 0xD65C, 0xD7D9, 0xD958, 0xDAD8, 0xDC59, 0xDDDC, 0xDF61, 0xE0E6, 0xE26D,
+ 0xE3F4, 0xE57D, 0xE707, 0xE892, 0xEA1E, 0xEBAB, 0xED38, 0xEEC6, 0xF055, 0xF1E4, 0xF374, 0xF505, 0xF695,
+ 0xF827, 0xF9B8, 0xFB4A, 0xFCDC, 0xFE6E, 0x0000
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/CommonTables/arm_const_structs.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,156 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_const_structs.c
+*
+* Description: This file has constant structs that are initialized for
+* user convenience. For example, some can be given as
+* arguments to the arm_cfft_f32() function.
+*
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_const_structs.h"
+
+//Floating-point structs
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {
+ 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE__16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {
+ 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE__32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {
+ 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE__64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {
+ 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {
+ 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {
+ 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
+ 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {
+ 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {
+ 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE4096_TABLE_LENGTH
+};
+
+//Fixed-point structs
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = {
+ 16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = {
+ 32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = {
+ 64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = {
+ 128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = {
+ 256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = {
+ 512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = {
+ 1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = {
+ 2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = {
+ 4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
+};
+
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = {
+ 16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = {
+ 32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = {
+ 64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = {
+ 128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = {
+ 256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = {
+ 512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = {
+ 1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = {
+ 2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
+};
+
+const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = {
+ 4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
+};
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_conj_f32.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_cmplx_conj_q15.c
@@ -103,7 +103,7 @@
in3 = __QSAX(zero, in3);
in4 = __QSAX(zero, in4);
-#endif // #ifndef ARM_MATH_BIG_ENDIAN
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
in1 = ((uint32_t) in1 >> 16) | ((uint32_t) in1 << 16);
in2 = ((uint32_t) in2 >> 16) | ((uint32_t) in2 << 16);
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_conj_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_conj_q31.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cmplx_dot_prod_f32.c
@@ -93,6 +93,7 @@
float32_t * imagResult)
{
float32_t real_sum = 0.0f, imag_sum = 0.0f; /* Temporary result storage */
+ float32_t a0,b0,c0,d0;
#ifndef ARM_MATH_CM0_FAMILY
@@ -106,38 +107,68 @@
** a second loop below computes the remaining 1 to 3 samples. */
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += (*pSrcA++) * (*pSrcB++);
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += (*pSrcA++) * (*pSrcB++);
-
- real_sum += (*pSrcA++) * (*pSrcB++);
- imag_sum += (*pSrcA++) * (*pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
- real_sum += (*pSrcA++) * (*pSrcB++);
- imag_sum += (*pSrcA++) * (*pSrcB++);
-
- real_sum += (*pSrcA++) * (*pSrcB++);
- imag_sum += (*pSrcA++) * (*pSrcB++);
-
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
/* If the numSamples is not a multiple of 4, compute any remaining output samples here.
** No loop unrolling is used. */
- blkCnt = numSamples % 0x4u;
+ blkCnt = numSamples & 0x3u;
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += (*pSrcA++) * (*pSrcB++);
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += (*pSrcA++) * (*pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
-
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
#else
@@ -146,14 +177,18 @@
while(numSamples > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += (*pSrcA++) * (*pSrcB++);
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += (*pSrcA++) * (*pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
-
- /* Decrement the loop counter */
- numSamples--;
+ /* Decrement the loop counter */
+ numSamples--;
}
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cmplx_dot_prod_q15.c
@@ -75,6 +75,7 @@
q31_t * imagResult)
{
q63_t real_sum = 0, imag_sum = 0; /* Temporary result storage */
+ q15_t a0,b0,c0,d0;
#ifndef ARM_MATH_CM0_FAMILY
@@ -89,23 +90,48 @@
** a second loop below computes the remaining 1 to 3 samples. */
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
-
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
-
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += (q31_t)a0 * c0;
+ imag_sum += (q31_t)a0 * d0;
+ real_sum -= (q31_t)b0 * d0;
+ imag_sum += (q31_t)b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += (q31_t)a0 * c0;
+ imag_sum += (q31_t)a0 * d0;
+ real_sum -= (q31_t)b0 * d0;
+ imag_sum += (q31_t)b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += (q31_t)a0 * c0;
+ imag_sum += (q31_t)a0 * d0;
+ real_sum -= (q31_t)b0 * d0;
+ imag_sum += (q31_t)b0 * c0;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += (q31_t)a0 * c0;
+ imag_sum += (q31_t)a0 * d0;
+ real_sum -= (q31_t)b0 * d0;
+ imag_sum += (q31_t)b0 * c0;
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
-
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
-
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
/* If the numSamples is not a multiple of 4, compute any remaining output samples here.
@@ -114,13 +140,18 @@
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += (q31_t)a0 * c0;
+ imag_sum += (q31_t)a0 * d0;
+ real_sum -= (q31_t)b0 * d0;
+ imag_sum += (q31_t)b0 * c0;
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
#else
@@ -129,22 +160,28 @@
while(numSamples > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += a0 * c0;
+ imag_sum += a0 * d0;
+ real_sum -= b0 * d0;
+ imag_sum += b0 * c0;
- /* Decrement the loop counter */
- numSamples--;
+
+ /* Decrement the loop counter */
+ numSamples--;
}
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
/* Store the real and imaginary results in 8.24 format */
/* Convert real data in 34.30 to 8.24 by 6 right shifts */
- *realResult = (q31_t) (real_sum) >> 6;
+ *realResult = (q31_t) (real_sum >> 6);
/* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */
- *imagResult = (q31_t) (imag_sum) >> 6;
+ *imagResult = (q31_t) (imag_sum >> 6);
}
/**
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cmplx_dot_prod_q31.c
@@ -76,6 +76,7 @@
q63_t * imagResult)
{
q63_t real_sum = 0, imag_sum = 0; /* Temporary result storage */
+ q31_t a0,b0,c0,d0;
#ifndef ARM_MATH_CM0_FAMILY
@@ -90,25 +91,48 @@
** a second loop below computes the remaining 1 to 3 samples. */
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- /* Convert real data in 2.62 to 16.48 by 14 right shifts */
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- /* Convert imag data in 2.62 to 16.48 by 14 right shifts */
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
-
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
+
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
-
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
-
-
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
/* If the numSamples is not a multiple of 4, compute any remaining output samples here.
@@ -117,13 +141,18 @@
while(blkCnt > 0u)
{
- /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
- /* Decrement the loop counter */
- blkCnt--;
+ /* Decrement the loop counter */
+ blkCnt--;
}
#else
@@ -132,13 +161,18 @@
while(numSamples > 0u)
{
- /* outReal = realA[0]* realB[0] + realA[2]* realB[2] + realA[4]* realB[4] + .....+ realA[numSamples-2]* realB[numSamples-2] */
- real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
- /* outImag = imagA[1]* imagB[1] + imagA[3]* imagB[3] + imagA[5]* imagB[5] + .....+ imagA[numSamples-1]* imagB[numSamples-1] */
- imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+ a0 = *pSrcA++;
+ b0 = *pSrcA++;
+ c0 = *pSrcB++;
+ d0 = *pSrcB++;
+
+ real_sum += ((q63_t)a0 * c0) >> 14;
+ imag_sum += ((q63_t)a0 * d0) >> 14;
+ real_sum -= ((q63_t)b0 * d0) >> 14;
+ imag_sum += ((q63_t)b0 * c0) >> 14;
- /* Decrement the loop counter */
- numSamples--;
+ /* Decrement the loop counter */
+ numSamples--;
}
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_f32.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_q15.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_q31.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_squared_f32.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_squared_q15.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mag_squared_q31.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mult_cmplx_f32.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mult_cmplx_q15.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mult_cmplx_q31.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mult_real_f32.c
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_cmplx_mult_real_q15.c
@@ -112,7 +112,7 @@
mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
-#endif // #ifndef ARM_MATH_BIG_ENDIAN
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* saturate the result */
out1 = (q15_t) __SSAT(mul1 >> 15u, 16);
@@ -142,7 +142,7 @@
mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
-#endif // #ifndef ARM_MATH_BIG_ENDIAN
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
out1 = (q15_t) __SSAT(mul1 >> 15u, 16);
out2 = (q15_t) __SSAT(mul2 >> 15u, 16);
--- a/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ComplexMathFunctions/arm_cmplx_mult_real_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cmplx_mult_real_q31.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_init_f32.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_init_q15.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_init_q31.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_reset_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_reset_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_reset_f32.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_reset_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_reset_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_reset_q15.c
--- a/cmsis_dsp/ControllerFunctions/arm_pid_reset_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/ControllerFunctions/arm_pid_reset_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_pid_reset_q31.c
--- a/cmsis_dsp/ControllerFunctions/arm_sin_cos_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ControllerFunctions/arm_sin_cos_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_sin_cos_f32.c
@@ -39,6 +39,7 @@
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
/**
* @ingroup groupController
@@ -52,7 +53,10 @@
* There are separate functions for Q31 and floating-point data types.
* The input to the floating-point version is in degrees while the
* fixed-point Q31 have a scaled input with the range
- * [-1 0.9999] mapping to [-180 179] degrees.
+ * [-1 0.9999] mapping to [-180 +180] degrees.
+ *
+ * The floating point function also allows values that are out of the usual range. When this happens, the function will
+ * take extra time to adjust the input value to the range of [-180 180].
*
* The implementation is based on table lookup using 360 values together with linear interpolation.
* The steps used are:
@@ -69,303 +73,6 @@
* @{
*/
-
-/**
-* \par
-* Cosine Table is generated from following loop
-* <pre>for(i = 0; i < 360; i++)
-* {
-* cosTable[i]= cos((i-180) * PI/180.0);
-* } </pre>
-*/
-
-static const float32_t cosTable[360] = {
- -0.999847695156391270f, -0.999390827019095760f, -0.998629534754573830f,
- -0.997564050259824200f, -0.996194698091745550f, -0.994521895368273290f,
- -0.992546151641321980f, -0.990268068741570250f,
- -0.987688340595137660f, -0.984807753012208020f, -0.981627183447663980f,
- -0.978147600733805690f, -0.974370064785235250f, -0.970295726275996470f,
- -0.965925826289068200f, -0.961261695938318670f,
- -0.956304755963035440f, -0.951056516295153530f, -0.945518575599316740f,
- -0.939692620785908320f, -0.933580426497201740f, -0.927183854566787310f,
- -0.920504853452440150f, -0.913545457642600760f,
- -0.906307787036649940f, -0.898794046299167040f, -0.891006524188367790f,
- -0.882947592858926770f, -0.874619707139395740f, -0.866025403784438710f,
- -0.857167300702112220f, -0.848048096156425960f,
- -0.838670567945424160f, -0.829037572555041620f, -0.819152044288991580f,
- -0.809016994374947340f, -0.798635510047292940f, -0.788010753606721900f,
- -0.777145961456970680f, -0.766044443118977900f,
- -0.754709580222772010f, -0.743144825477394130f, -0.731353701619170460f,
- -0.719339800338651300f, -0.707106781186547460f, -0.694658370458997030f,
- -0.681998360062498370f, -0.669130606358858240f,
- -0.656059028990507500f, -0.642787609686539360f, -0.629320391049837280f,
- -0.615661475325658290f, -0.601815023152048380f, -0.587785252292473030f,
- -0.573576436351045830f, -0.559192903470746680f,
- -0.544639035015027080f, -0.529919264233204790f, -0.515038074910054270f,
- -0.499999999999999780f, -0.484809620246337000f, -0.469471562785890530f,
- -0.453990499739546750f, -0.438371146789077510f,
- -0.422618261740699330f, -0.406736643075800100f, -0.390731128489273600f,
- -0.374606593415912070f, -0.358367949545300270f, -0.342020143325668710f,
- -0.325568154457156420f, -0.309016994374947340f,
- -0.292371704722736660f, -0.275637355816999050f, -0.258819045102520850f,
- -0.241921895599667790f, -0.224951054343864810f, -0.207911690817759120f,
- -0.190808995376544800f, -0.173648177666930300f,
- -0.156434465040231040f, -0.139173100960065350f, -0.121869343405147370f,
- -0.104528463267653330f, -0.087155742747658235f, -0.069756473744125330f,
- -0.052335956242943620f, -0.034899496702500733f,
- -0.017452406437283477f, 0.000000000000000061f, 0.017452406437283376f,
- 0.034899496702501080f, 0.052335956242943966f, 0.069756473744125455f,
- 0.087155742747658138f, 0.104528463267653460f,
- 0.121869343405147490f, 0.139173100960065690f, 0.156434465040230920f,
- 0.173648177666930410f, 0.190808995376544920f, 0.207911690817759450f,
- 0.224951054343864920f, 0.241921895599667900f,
- 0.258819045102520740f, 0.275637355816999160f, 0.292371704722736770f,
- 0.309016994374947450f, 0.325568154457156760f, 0.342020143325668820f,
- 0.358367949545300380f, 0.374606593415911960f,
- 0.390731128489273940f, 0.406736643075800210f, 0.422618261740699440f,
- 0.438371146789077460f, 0.453990499739546860f, 0.469471562785890860f,
- 0.484809620246337110f, 0.500000000000000110f,
- 0.515038074910054380f, 0.529919264233204900f, 0.544639035015027200f,
- 0.559192903470746790f, 0.573576436351046050f, 0.587785252292473140f,
- 0.601815023152048270f, 0.615661475325658290f,
- 0.629320391049837500f, 0.642787609686539360f, 0.656059028990507280f,
- 0.669130606358858240f, 0.681998360062498480f, 0.694658370458997370f,
- 0.707106781186547570f, 0.719339800338651190f,
- 0.731353701619170570f, 0.743144825477394240f, 0.754709580222772010f,
- 0.766044443118978010f, 0.777145961456970900f, 0.788010753606722010f,
- 0.798635510047292830f, 0.809016994374947450f,
- 0.819152044288991800f, 0.829037572555041620f, 0.838670567945424050f,
- 0.848048096156425960f, 0.857167300702112330f, 0.866025403784438710f,
- 0.874619707139395740f, 0.882947592858926990f,
- 0.891006524188367900f, 0.898794046299167040f, 0.906307787036649940f,
- 0.913545457642600870f, 0.920504853452440370f, 0.927183854566787420f,
- 0.933580426497201740f, 0.939692620785908430f,
- 0.945518575599316850f, 0.951056516295153530f, 0.956304755963035440f,
- 0.961261695938318890f, 0.965925826289068310f, 0.970295726275996470f,
- 0.974370064785235250f, 0.978147600733805690f,
- 0.981627183447663980f, 0.984807753012208020f, 0.987688340595137770f,
- 0.990268068741570360f, 0.992546151641321980f, 0.994521895368273290f,
- 0.996194698091745550f, 0.997564050259824200f,
- 0.998629534754573830f, 0.999390827019095760f, 0.999847695156391270f,
- 1.000000000000000000f, 0.999847695156391270f, 0.999390827019095760f,
- 0.998629534754573830f, 0.997564050259824200f,
- 0.996194698091745550f, 0.994521895368273290f, 0.992546151641321980f,
- 0.990268068741570360f, 0.987688340595137770f, 0.984807753012208020f,
- 0.981627183447663980f, 0.978147600733805690f,
- 0.974370064785235250f, 0.970295726275996470f, 0.965925826289068310f,
- 0.961261695938318890f, 0.956304755963035440f, 0.951056516295153530f,
- 0.945518575599316850f, 0.939692620785908430f,
- 0.933580426497201740f, 0.927183854566787420f, 0.920504853452440370f,
- 0.913545457642600870f, 0.906307787036649940f, 0.898794046299167040f,
- 0.891006524188367900f, 0.882947592858926990f,
- 0.874619707139395740f, 0.866025403784438710f, 0.857167300702112330f,
- 0.848048096156425960f, 0.838670567945424050f, 0.829037572555041620f,
- 0.819152044288991800f, 0.809016994374947450f,
- 0.798635510047292830f, 0.788010753606722010f, 0.777145961456970900f,
- 0.766044443118978010f, 0.754709580222772010f, 0.743144825477394240f,
- 0.731353701619170570f, 0.719339800338651190f,
- 0.707106781186547570f, 0.694658370458997370f, 0.681998360062498480f,
- 0.669130606358858240f, 0.656059028990507280f, 0.642787609686539360f,
- 0.629320391049837500f, 0.615661475325658290f,
- 0.601815023152048270f, 0.587785252292473140f, 0.573576436351046050f,
- 0.559192903470746790f, 0.544639035015027200f, 0.529919264233204900f,
- 0.515038074910054380f, 0.500000000000000110f,
- 0.484809620246337110f, 0.469471562785890860f, 0.453990499739546860f,
- 0.438371146789077460f, 0.422618261740699440f, 0.406736643075800210f,
- 0.390731128489273940f, 0.374606593415911960f,
- 0.358367949545300380f, 0.342020143325668820f, 0.325568154457156760f,
- 0.309016994374947450f, 0.292371704722736770f, 0.275637355816999160f,
- 0.258819045102520740f, 0.241921895599667900f,
- 0.224951054343864920f, 0.207911690817759450f, 0.190808995376544920f,
- 0.173648177666930410f, 0.156434465040230920f, 0.139173100960065690f,
- 0.121869343405147490f, 0.104528463267653460f,
- 0.087155742747658138f, 0.069756473744125455f, 0.052335956242943966f,
- 0.034899496702501080f, 0.017452406437283376f, 0.000000000000000061f,
- -0.017452406437283477f, -0.034899496702500733f,
- -0.052335956242943620f, -0.069756473744125330f, -0.087155742747658235f,
- -0.104528463267653330f, -0.121869343405147370f, -0.139173100960065350f,
- -0.156434465040231040f, -0.173648177666930300f,
- -0.190808995376544800f, -0.207911690817759120f, -0.224951054343864810f,
- -0.241921895599667790f, -0.258819045102520850f, -0.275637355816999050f,
- -0.292371704722736660f, -0.309016994374947340f,
- -0.325568154457156420f, -0.342020143325668710f, -0.358367949545300270f,
- -0.374606593415912070f, -0.390731128489273600f, -0.406736643075800100f,
- -0.422618261740699330f, -0.438371146789077510f,
- -0.453990499739546750f, -0.469471562785890530f, -0.484809620246337000f,
- -0.499999999999999780f, -0.515038074910054270f, -0.529919264233204790f,
- -0.544639035015027080f, -0.559192903470746680f,
- -0.573576436351045830f, -0.587785252292473030f, -0.601815023152048380f,
- -0.615661475325658290f, -0.629320391049837280f, -0.642787609686539360f,
- -0.656059028990507500f, -0.669130606358858240f,
- -0.681998360062498370f, -0.694658370458997030f, -0.707106781186547460f,
- -0.719339800338651300f, -0.731353701619170460f, -0.743144825477394130f,
- -0.754709580222772010f, -0.766044443118977900f,
- -0.777145961456970680f, -0.788010753606721900f, -0.798635510047292940f,
- -0.809016994374947340f, -0.819152044288991580f, -0.829037572555041620f,
- -0.838670567945424160f, -0.848048096156425960f,
- -0.857167300702112220f, -0.866025403784438710f, -0.874619707139395740f,
- -0.882947592858926770f, -0.891006524188367790f, -0.898794046299167040f,
- -0.906307787036649940f, -0.913545457642600760f,
- -0.920504853452440150f, -0.927183854566787310f, -0.933580426497201740f,
- -0.939692620785908320f, -0.945518575599316740f, -0.951056516295153530f,
- -0.956304755963035440f, -0.961261695938318670f,
- -0.965925826289068200f, -0.970295726275996470f, -0.974370064785235250f,
- -0.978147600733805690f, -0.981627183447663980f, -0.984807753012208020f,
- -0.987688340595137660f, -0.990268068741570250f,
- -0.992546151641321980f, -0.994521895368273290f, -0.996194698091745550f,
- -0.997564050259824200f, -0.998629534754573830f, -0.999390827019095760f,
- -0.999847695156391270f, -1.000000000000000000f
-};
-
-/**
-* \par
-* Sine Table is generated from following loop
-* <pre>for(i = 0; i < 360; i++)
-* {
-* sinTable[i]= sin((i-180) * PI/180.0);
-* } </pre>
-*/
-
-
-static const float32_t sinTable[360] = {
- -0.017452406437283439f, -0.034899496702500699f, -0.052335956242943807f,
- -0.069756473744125524f, -0.087155742747658638f, -0.104528463267653730f,
- -0.121869343405147550f, -0.139173100960065740f,
- -0.156434465040230980f, -0.173648177666930280f, -0.190808995376544970f,
- -0.207911690817759310f, -0.224951054343864780f, -0.241921895599667730f,
- -0.258819045102521020f, -0.275637355816999660f,
- -0.292371704722737050f, -0.309016994374947510f, -0.325568154457156980f,
- -0.342020143325668880f, -0.358367949545300210f, -0.374606593415912240f,
- -0.390731128489274160f, -0.406736643075800430f,
- -0.422618261740699500f, -0.438371146789077290f, -0.453990499739546860f,
- -0.469471562785891080f, -0.484809620246337170f, -0.499999999999999940f,
- -0.515038074910054380f, -0.529919264233204900f,
- -0.544639035015026860f, -0.559192903470746900f, -0.573576436351046380f,
- -0.587785252292473250f, -0.601815023152048160f, -0.615661475325658400f,
- -0.629320391049837720f, -0.642787609686539470f,
- -0.656059028990507280f, -0.669130606358858350f, -0.681998360062498590f,
- -0.694658370458997140f, -0.707106781186547570f, -0.719339800338651410f,
- -0.731353701619170570f, -0.743144825477394240f,
- -0.754709580222771790f, -0.766044443118978010f, -0.777145961456971010f,
- -0.788010753606722010f, -0.798635510047292720f, -0.809016994374947450f,
- -0.819152044288992020f, -0.829037572555041740f,
- -0.838670567945424050f, -0.848048096156426070f, -0.857167300702112330f,
- -0.866025403784438710f, -0.874619707139395850f, -0.882947592858927100f,
- -0.891006524188367900f, -0.898794046299166930f,
- -0.906307787036650050f, -0.913545457642600980f, -0.920504853452440370f,
- -0.927183854566787420f, -0.933580426497201740f, -0.939692620785908430f,
- -0.945518575599316850f, -0.951056516295153640f,
- -0.956304755963035550f, -0.961261695938318890f, -0.965925826289068310f,
- -0.970295726275996470f, -0.974370064785235250f, -0.978147600733805690f,
- -0.981627183447663980f, -0.984807753012208020f,
- -0.987688340595137660f, -0.990268068741570360f, -0.992546151641322090f,
- -0.994521895368273400f, -0.996194698091745550f, -0.997564050259824200f,
- -0.998629534754573830f, -0.999390827019095760f,
- -0.999847695156391270f, -1.000000000000000000f, -0.999847695156391270f,
- -0.999390827019095760f, -0.998629534754573830f, -0.997564050259824200f,
- -0.996194698091745550f, -0.994521895368273290f,
- -0.992546151641321980f, -0.990268068741570250f, -0.987688340595137770f,
- -0.984807753012208020f, -0.981627183447663980f, -0.978147600733805580f,
- -0.974370064785235250f, -0.970295726275996470f,
- -0.965925826289068310f, -0.961261695938318890f, -0.956304755963035440f,
- -0.951056516295153530f, -0.945518575599316740f, -0.939692620785908320f,
- -0.933580426497201740f, -0.927183854566787420f,
- -0.920504853452440260f, -0.913545457642600870f, -0.906307787036649940f,
- -0.898794046299167040f, -0.891006524188367790f, -0.882947592858926880f,
- -0.874619707139395740f, -0.866025403784438600f,
- -0.857167300702112220f, -0.848048096156426070f, -0.838670567945423940f,
- -0.829037572555041740f, -0.819152044288991800f, -0.809016994374947450f,
- -0.798635510047292830f, -0.788010753606722010f,
- -0.777145961456970790f, -0.766044443118978010f, -0.754709580222772010f,
- -0.743144825477394240f, -0.731353701619170460f, -0.719339800338651080f,
- -0.707106781186547460f, -0.694658370458997250f,
- -0.681998360062498480f, -0.669130606358858240f, -0.656059028990507160f,
- -0.642787609686539250f, -0.629320391049837390f, -0.615661475325658180f,
- -0.601815023152048270f, -0.587785252292473140f,
- -0.573576436351046050f, -0.559192903470746900f, -0.544639035015027080f,
- -0.529919264233204900f, -0.515038074910054160f, -0.499999999999999940f,
- -0.484809620246337060f, -0.469471562785890810f,
- -0.453990499739546750f, -0.438371146789077400f, -0.422618261740699440f,
- -0.406736643075800150f, -0.390731128489273720f, -0.374606593415912010f,
- -0.358367949545300270f, -0.342020143325668710f,
- -0.325568154457156640f, -0.309016994374947400f, -0.292371704722736770f,
- -0.275637355816999160f, -0.258819045102520740f, -0.241921895599667730f,
- -0.224951054343865000f, -0.207911690817759310f,
- -0.190808995376544800f, -0.173648177666930330f, -0.156434465040230870f,
- -0.139173100960065440f, -0.121869343405147480f, -0.104528463267653460f,
- -0.087155742747658166f, -0.069756473744125302f,
- -0.052335956242943828f, -0.034899496702500969f, -0.017452406437283512f,
- 0.000000000000000000f, 0.017452406437283512f, 0.034899496702500969f,
- 0.052335956242943828f, 0.069756473744125302f,
- 0.087155742747658166f, 0.104528463267653460f, 0.121869343405147480f,
- 0.139173100960065440f, 0.156434465040230870f, 0.173648177666930330f,
- 0.190808995376544800f, 0.207911690817759310f,
- 0.224951054343865000f, 0.241921895599667730f, 0.258819045102520740f,
- 0.275637355816999160f, 0.292371704722736770f, 0.309016994374947400f,
- 0.325568154457156640f, 0.342020143325668710f,
- 0.358367949545300270f, 0.374606593415912010f, 0.390731128489273720f,
- 0.406736643075800150f, 0.422618261740699440f, 0.438371146789077400f,
- 0.453990499739546750f, 0.469471562785890810f,
- 0.484809620246337060f, 0.499999999999999940f, 0.515038074910054160f,
- 0.529919264233204900f, 0.544639035015027080f, 0.559192903470746900f,
- 0.573576436351046050f, 0.587785252292473140f,
- 0.601815023152048270f, 0.615661475325658180f, 0.629320391049837390f,
- 0.642787609686539250f, 0.656059028990507160f, 0.669130606358858240f,
- 0.681998360062498480f, 0.694658370458997250f,
- 0.707106781186547460f, 0.719339800338651080f, 0.731353701619170460f,
- 0.743144825477394240f, 0.754709580222772010f, 0.766044443118978010f,
- 0.777145961456970790f, 0.788010753606722010f,
- 0.798635510047292830f, 0.809016994374947450f, 0.819152044288991800f,
- 0.829037572555041740f, 0.838670567945423940f, 0.848048096156426070f,
- 0.857167300702112220f, 0.866025403784438600f,
- 0.874619707139395740f, 0.882947592858926880f, 0.891006524188367790f,
- 0.898794046299167040f, 0.906307787036649940f, 0.913545457642600870f,
- 0.920504853452440260f, 0.927183854566787420f,
- 0.933580426497201740f, 0.939692620785908320f, 0.945518575599316740f,
- 0.951056516295153530f, 0.956304755963035440f, 0.961261695938318890f,
- 0.965925826289068310f, 0.970295726275996470f,
- 0.974370064785235250f, 0.978147600733805580f, 0.981627183447663980f,
- 0.984807753012208020f, 0.987688340595137770f, 0.990268068741570250f,
- 0.992546151641321980f, 0.994521895368273290f,
- 0.996194698091745550f, 0.997564050259824200f, 0.998629534754573830f,
- 0.999390827019095760f, 0.999847695156391270f, 1.000000000000000000f,
- 0.999847695156391270f, 0.999390827019095760f,
- 0.998629534754573830f, 0.997564050259824200f, 0.996194698091745550f,
- 0.994521895368273400f, 0.992546151641322090f, 0.990268068741570360f,
- 0.987688340595137660f, 0.984807753012208020f,
- 0.981627183447663980f, 0.978147600733805690f, 0.974370064785235250f,
- 0.970295726275996470f, 0.965925826289068310f, 0.961261695938318890f,
- 0.956304755963035550f, 0.951056516295153640f,
- 0.945518575599316850f, 0.939692620785908430f, 0.933580426497201740f,
- 0.927183854566787420f, 0.920504853452440370f, 0.913545457642600980f,
- 0.906307787036650050f, 0.898794046299166930f,
- 0.891006524188367900f, 0.882947592858927100f, 0.874619707139395850f,
- 0.866025403784438710f, 0.857167300702112330f, 0.848048096156426070f,
- 0.838670567945424050f, 0.829037572555041740f,
- 0.819152044288992020f, 0.809016994374947450f, 0.798635510047292720f,
- 0.788010753606722010f, 0.777145961456971010f, 0.766044443118978010f,
- 0.754709580222771790f, 0.743144825477394240f,
- 0.731353701619170570f, 0.719339800338651410f, 0.707106781186547570f,
- 0.694658370458997140f, 0.681998360062498590f, 0.669130606358858350f,
- 0.656059028990507280f, 0.642787609686539470f,
- 0.629320391049837720f, 0.615661475325658400f, 0.601815023152048160f,
- 0.587785252292473250f, 0.573576436351046380f, 0.559192903470746900f,
- 0.544639035015026860f, 0.529919264233204900f,
- 0.515038074910054380f, 0.499999999999999940f, 0.484809620246337170f,
- 0.469471562785891080f, 0.453990499739546860f, 0.438371146789077290f,
- 0.422618261740699500f, 0.406736643075800430f,
- 0.390731128489274160f, 0.374606593415912240f, 0.358367949545300210f,
- 0.342020143325668880f, 0.325568154457156980f, 0.309016994374947510f,
- 0.292371704722737050f, 0.275637355816999660f,
- 0.258819045102521020f, 0.241921895599667730f, 0.224951054343864780f,
- 0.207911690817759310f, 0.190808995376544970f, 0.173648177666930280f,
- 0.156434465040230980f, 0.139173100960065740f,
- 0.121869343405147550f, 0.104528463267653730f, 0.087155742747658638f,
- 0.069756473744125524f, 0.052335956242943807f, 0.034899496702500699f,
- 0.017452406437283439f, 0.000000000000000122f
-};
-
-
/**
* @brief Floating-point sin_cos function.
* @param[in] theta input value in degrees
@@ -374,63 +81,69 @@
* @return none.
*/
-
void arm_sin_cos_f32(
float32_t theta,
float32_t * pSinVal,
float32_t * pCosVal)
{
- int32_t i; /* Index for reading nearwst output values */
- float32_t x1 = -179.0f; /* Initial input value */
- float32_t y0, y1; /* nearest output values */
- float32_t y2, y3;
- float32_t fract; /* fractional part of input */
+ float32_t fract, in; /* Temporary variables for input, output */
+ uint16_t indexS, indexC; /* Index variable */
+ float32_t f1, f2, d1, d2; /* Two nearest output values */
+ int32_t n;
+ float32_t findex, Dn, Df, temp;
- /* Calculation of fractional part */
- if(theta > 0.0f)
- {
- fract = theta - (float32_t) ((int32_t) theta);
- }
- else
- {
- fract = (theta - (float32_t) ((int32_t) theta)) + 1.0f;
- }
+ /* input x is in degrees */
+ /* Scale the input, divide input by 360, for cosine add 0.25 (pi/2) to read sine table */
+ in = theta * 0.00277777777778f;
- /* index calculation for reading nearest output values */
- i = (uint32_t) (theta - x1);
+ /* Calculation of floor value of input */
+ n = (int32_t) in;
- /* Checking min and max index of table */
- if(i < 0)
+ /* Make negative values towards -infinity */
+ if(in < 0.0f)
{
- i = 0;
+ n--;
}
- else if(i >= 359)
- {
- i = 358;
- }
+ /* Map input value to [0 1] */
+ in = in - (float32_t) n;
- /* reading nearest sine output values */
- y0 = sinTable[i];
- y1 = sinTable[i + 1u];
+ /* Calculation of index of the table */
+ findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+ indexS = ((uint16_t)findex) & 0x1ff;
+ indexC = (indexS + (FAST_MATH_TABLE_SIZE / 4)) & 0x1ff;
- /* reading nearest cosine output values */
- y2 = cosTable[i];
- y3 = cosTable[i + 1u];
+ /* fractional value calculation */
+ fract = findex - (float32_t) indexS;
- y1 = y1 - y0;
- y3 = y3 - y2;
+ /* Read two nearest values of input value from the cos & sin tables */
+ f1 = sinTable_f32[indexC+0];
+ f2 = sinTable_f32[indexC+1];
+ d1 = -sinTable_f32[indexS+0];
+ d2 = -sinTable_f32[indexS+1];
- y1 = fract * y1;
- y3 = fract * y3;
-
- /* Calculation of sine value */
- *pSinVal = y0 + y1;
+ Dn = 0.0122718463030f; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+ Df = f2 - f1; // delta between the values of the functions
+ temp = Dn*(d1 + d2) - 2*Df;
+ temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
+ temp = fract*temp + d1*Dn;
/* Calculation of cosine value */
- *pCosVal = y2 + y3;
+ *pCosVal = fract*temp + f1;
+
+ /* Read two nearest values of input value from the cos & sin tables */
+ f1 = sinTable_f32[indexS+0];
+ f2 = sinTable_f32[indexS+1];
+ d1 = sinTable_f32[indexC+0];
+ d2 = sinTable_f32[indexC+1];
+ Df = f2 - f1; // delta between the values of the functions
+ temp = Dn*(d1 + d2) - 2*Df;
+ temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
+ temp = fract*temp + d1*Dn;
+
+ /* Calculation of sine value */
+ *pSinVal = fract*temp + f1;
}
-
/**
* @} end of SinCos group
*/
--- a/cmsis_dsp/ControllerFunctions/arm_sin_cos_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/ControllerFunctions/arm_sin_cos_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_sin_cos_q31.c
@@ -39,6 +39,7 @@
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
/**
* @ingroup groupController
@@ -50,217 +51,6 @@
*/
/**
-* \par
-* Sine Table is generated from following loop
-* <pre>for(i = 0; i < 360; i++)
-* {
-* sinTable[i]= sin((i-180) * PI/180.0);
-* } </pre>
-* Convert above coefficients to fixed point 1.31 format.
-*/
-
-static const int32_t sinTableQ31[360] = {
-
- 0x0, 0xfdc41e9b, 0xfb8869ce, 0xf94d0e2e, 0xf7123849, 0xf4d814a4, 0xf29ecfb2,
- 0xf06695da,
- 0xee2f9369, 0xebf9f498, 0xe9c5e582, 0xe7939223, 0xe5632654, 0xe334cdc9,
- 0xe108b40d, 0xdedf047d,
- 0xdcb7ea46, 0xda939061, 0xd8722192, 0xd653c860, 0xd438af17, 0xd220ffc0,
- 0xd00ce422, 0xcdfc85bb,
- 0xcbf00dbe, 0xc9e7a512, 0xc7e3744b, 0xc5e3a3a9, 0xc3e85b18, 0xc1f1c224,
- 0xc0000000, 0xbe133b7c,
- 0xbc2b9b05, 0xba4944a2, 0xb86c5df0, 0xb6950c1e, 0xb4c373ee, 0xb2f7b9af,
- 0xb1320139, 0xaf726def,
- 0xadb922b7, 0xac0641fb, 0xaa59eda4, 0xa8b4471a, 0xa7156f3c, 0xa57d8666,
- 0xa3ecac65, 0xa263007d,
- 0xa0e0a15f, 0x9f65ad2d, 0x9df24175, 0x9c867b2c, 0x9b2276b0, 0x99c64fc5,
- 0x98722192, 0x9726069c,
- 0x95e218c9, 0x94a6715d, 0x937328f5, 0x92485786, 0x9126145f, 0x900c7621,
- 0x8efb92c2, 0x8df37f8b,
- 0x8cf45113, 0x8bfe1b3f, 0x8b10f144, 0x8a2ce59f, 0x89520a1a, 0x88806fc4,
- 0x87b826f7, 0x86f93f50,
- 0x8643c7b3, 0x8597ce46, 0x84f56073, 0x845c8ae3, 0x83cd5982, 0x8347d77b,
- 0x82cc0f36, 0x825a0a5b,
- 0x81f1d1ce, 0x81936daf, 0x813ee55b, 0x80f43f69, 0x80b381ac, 0x807cb130,
- 0x804fd23a, 0x802ce84c,
- 0x8013f61d, 0x8004fda0, 0x80000000, 0x8004fda0, 0x8013f61d, 0x802ce84c,
- 0x804fd23a, 0x807cb130,
- 0x80b381ac, 0x80f43f69, 0x813ee55b, 0x81936daf, 0x81f1d1ce, 0x825a0a5b,
- 0x82cc0f36, 0x8347d77b,
- 0x83cd5982, 0x845c8ae3, 0x84f56073, 0x8597ce46, 0x8643c7b3, 0x86f93f50,
- 0x87b826f7, 0x88806fc4,
- 0x89520a1a, 0x8a2ce59f, 0x8b10f144, 0x8bfe1b3f, 0x8cf45113, 0x8df37f8b,
- 0x8efb92c2, 0x900c7621,
- 0x9126145f, 0x92485786, 0x937328f5, 0x94a6715d, 0x95e218c9, 0x9726069c,
- 0x98722192, 0x99c64fc5,
- 0x9b2276b0, 0x9c867b2c, 0x9df24175, 0x9f65ad2d, 0xa0e0a15f, 0xa263007d,
- 0xa3ecac65, 0xa57d8666,
- 0xa7156f3c, 0xa8b4471a, 0xaa59eda4, 0xac0641fb, 0xadb922b7, 0xaf726def,
- 0xb1320139, 0xb2f7b9af,
- 0xb4c373ee, 0xb6950c1e, 0xb86c5df0, 0xba4944a2, 0xbc2b9b05, 0xbe133b7c,
- 0xc0000000, 0xc1f1c224,
- 0xc3e85b18, 0xc5e3a3a9, 0xc7e3744b, 0xc9e7a512, 0xcbf00dbe, 0xcdfc85bb,
- 0xd00ce422, 0xd220ffc0,
- 0xd438af17, 0xd653c860, 0xd8722192, 0xda939061, 0xdcb7ea46, 0xdedf047d,
- 0xe108b40d, 0xe334cdc9,
- 0xe5632654, 0xe7939223, 0xe9c5e582, 0xebf9f498, 0xee2f9369, 0xf06695da,
- 0xf29ecfb2, 0xf4d814a4,
- 0xf7123849, 0xf94d0e2e, 0xfb8869ce, 0xfdc41e9b, 0x0, 0x23be165, 0x4779632,
- 0x6b2f1d2,
- 0x8edc7b7, 0xb27eb5c, 0xd61304e, 0xf996a26, 0x11d06c97, 0x14060b68,
- 0x163a1a7e, 0x186c6ddd,
- 0x1a9cd9ac, 0x1ccb3237, 0x1ef74bf3, 0x2120fb83, 0x234815ba, 0x256c6f9f,
- 0x278dde6e, 0x29ac37a0,
- 0x2bc750e9, 0x2ddf0040, 0x2ff31bde, 0x32037a45, 0x340ff242, 0x36185aee,
- 0x381c8bb5, 0x3a1c5c57,
- 0x3c17a4e8, 0x3e0e3ddc, 0x40000000, 0x41ecc484, 0x43d464fb, 0x45b6bb5e,
- 0x4793a210, 0x496af3e2,
- 0x4b3c8c12, 0x4d084651, 0x4ecdfec7, 0x508d9211, 0x5246dd49, 0x53f9be05,
- 0x55a6125c, 0x574bb8e6,
- 0x58ea90c4, 0x5a82799a, 0x5c13539b, 0x5d9cff83, 0x5f1f5ea1, 0x609a52d3,
- 0x620dbe8b, 0x637984d4,
- 0x64dd8950, 0x6639b03b, 0x678dde6e, 0x68d9f964, 0x6a1de737, 0x6b598ea3,
- 0x6c8cd70b, 0x6db7a87a,
- 0x6ed9eba1, 0x6ff389df, 0x71046d3e, 0x720c8075, 0x730baeed, 0x7401e4c1,
- 0x74ef0ebc, 0x75d31a61,
- 0x76adf5e6, 0x777f903c, 0x7847d909, 0x7906c0b0, 0x79bc384d, 0x7a6831ba,
- 0x7b0a9f8d, 0x7ba3751d,
- 0x7c32a67e, 0x7cb82885, 0x7d33f0ca, 0x7da5f5a5, 0x7e0e2e32, 0x7e6c9251,
- 0x7ec11aa5, 0x7f0bc097,
- 0x7f4c7e54, 0x7f834ed0, 0x7fb02dc6, 0x7fd317b4, 0x7fec09e3, 0x7ffb0260,
- 0x7fffffff, 0x7ffb0260,
- 0x7fec09e3, 0x7fd317b4, 0x7fb02dc6, 0x7f834ed0, 0x7f4c7e54, 0x7f0bc097,
- 0x7ec11aa5, 0x7e6c9251,
- 0x7e0e2e32, 0x7da5f5a5, 0x7d33f0ca, 0x7cb82885, 0x7c32a67e, 0x7ba3751d,
- 0x7b0a9f8d, 0x7a6831ba,
- 0x79bc384d, 0x7906c0b0, 0x7847d909, 0x777f903c, 0x76adf5e6, 0x75d31a61,
- 0x74ef0ebc, 0x7401e4c1,
- 0x730baeed, 0x720c8075, 0x71046d3e, 0x6ff389df, 0x6ed9eba1, 0x6db7a87a,
- 0x6c8cd70b, 0x6b598ea3,
- 0x6a1de737, 0x68d9f964, 0x678dde6e, 0x6639b03b, 0x64dd8950, 0x637984d4,
- 0x620dbe8b, 0x609a52d3,
- 0x5f1f5ea1, 0x5d9cff83, 0x5c13539b, 0x5a82799a, 0x58ea90c4, 0x574bb8e6,
- 0x55a6125c, 0x53f9be05,
- 0x5246dd49, 0x508d9211, 0x4ecdfec7, 0x4d084651, 0x4b3c8c12, 0x496af3e2,
- 0x4793a210, 0x45b6bb5e,
- 0x43d464fb, 0x41ecc484, 0x40000000, 0x3e0e3ddc, 0x3c17a4e8, 0x3a1c5c57,
- 0x381c8bb5, 0x36185aee,
- 0x340ff242, 0x32037a45, 0x2ff31bde, 0x2ddf0040, 0x2bc750e9, 0x29ac37a0,
- 0x278dde6e, 0x256c6f9f,
- 0x234815ba, 0x2120fb83, 0x1ef74bf3, 0x1ccb3237, 0x1a9cd9ac, 0x186c6ddd,
- 0x163a1a7e, 0x14060b68,
- 0x11d06c97, 0xf996a26, 0xd61304e, 0xb27eb5c, 0x8edc7b7, 0x6b2f1d2,
- 0x4779632, 0x23be165,
-
-
-};
-
-/**
-* \par
-* Cosine Table is generated from following loop
-* <pre>for(i = 0; i < 360; i++)
-* {
-* cosTable[i]= cos((i-180) * PI/180.0);
-* } </pre>
-* \par
-* Convert above coefficients to fixed point 1.31 format.
-*/
-static const int32_t cosTableQ31[360] = {
- 0x80000000, 0x8004fda0, 0x8013f61d, 0x802ce84c, 0x804fd23a, 0x807cb130,
- 0x80b381ac, 0x80f43f69,
- 0x813ee55b, 0x81936daf, 0x81f1d1ce, 0x825a0a5b, 0x82cc0f36, 0x8347d77b,
- 0x83cd5982, 0x845c8ae3,
- 0x84f56073, 0x8597ce46, 0x8643c7b3, 0x86f93f50, 0x87b826f7, 0x88806fc4,
- 0x89520a1a, 0x8a2ce59f,
- 0x8b10f144, 0x8bfe1b3f, 0x8cf45113, 0x8df37f8b, 0x8efb92c2, 0x900c7621,
- 0x9126145f, 0x92485786,
- 0x937328f5, 0x94a6715d, 0x95e218c9, 0x9726069c, 0x98722192, 0x99c64fc5,
- 0x9b2276b0, 0x9c867b2c,
- 0x9df24175, 0x9f65ad2d, 0xa0e0a15f, 0xa263007d, 0xa3ecac65, 0xa57d8666,
- 0xa7156f3c, 0xa8b4471a,
- 0xaa59eda4, 0xac0641fb, 0xadb922b7, 0xaf726def, 0xb1320139, 0xb2f7b9af,
- 0xb4c373ee, 0xb6950c1e,
- 0xb86c5df0, 0xba4944a2, 0xbc2b9b05, 0xbe133b7c, 0xc0000000, 0xc1f1c224,
- 0xc3e85b18, 0xc5e3a3a9,
- 0xc7e3744b, 0xc9e7a512, 0xcbf00dbe, 0xcdfc85bb, 0xd00ce422, 0xd220ffc0,
- 0xd438af17, 0xd653c860,
- 0xd8722192, 0xda939061, 0xdcb7ea46, 0xdedf047d, 0xe108b40d, 0xe334cdc9,
- 0xe5632654, 0xe7939223,
- 0xe9c5e582, 0xebf9f498, 0xee2f9369, 0xf06695da, 0xf29ecfb2, 0xf4d814a4,
- 0xf7123849, 0xf94d0e2e,
- 0xfb8869ce, 0xfdc41e9b, 0x0, 0x23be165, 0x4779632, 0x6b2f1d2, 0x8edc7b7,
- 0xb27eb5c,
- 0xd61304e, 0xf996a26, 0x11d06c97, 0x14060b68, 0x163a1a7e, 0x186c6ddd,
- 0x1a9cd9ac, 0x1ccb3237,
- 0x1ef74bf3, 0x2120fb83, 0x234815ba, 0x256c6f9f, 0x278dde6e, 0x29ac37a0,
- 0x2bc750e9, 0x2ddf0040,
- 0x2ff31bde, 0x32037a45, 0x340ff242, 0x36185aee, 0x381c8bb5, 0x3a1c5c57,
- 0x3c17a4e8, 0x3e0e3ddc,
- 0x40000000, 0x41ecc484, 0x43d464fb, 0x45b6bb5e, 0x4793a210, 0x496af3e2,
- 0x4b3c8c12, 0x4d084651,
- 0x4ecdfec7, 0x508d9211, 0x5246dd49, 0x53f9be05, 0x55a6125c, 0x574bb8e6,
- 0x58ea90c4, 0x5a82799a,
- 0x5c13539b, 0x5d9cff83, 0x5f1f5ea1, 0x609a52d3, 0x620dbe8b, 0x637984d4,
- 0x64dd8950, 0x6639b03b,
- 0x678dde6e, 0x68d9f964, 0x6a1de737, 0x6b598ea3, 0x6c8cd70b, 0x6db7a87a,
- 0x6ed9eba1, 0x6ff389df,
- 0x71046d3e, 0x720c8075, 0x730baeed, 0x7401e4c1, 0x74ef0ebc, 0x75d31a61,
- 0x76adf5e6, 0x777f903c,
- 0x7847d909, 0x7906c0b0, 0x79bc384d, 0x7a6831ba, 0x7b0a9f8d, 0x7ba3751d,
- 0x7c32a67e, 0x7cb82885,
- 0x7d33f0ca, 0x7da5f5a5, 0x7e0e2e32, 0x7e6c9251, 0x7ec11aa5, 0x7f0bc097,
- 0x7f4c7e54, 0x7f834ed0,
- 0x7fb02dc6, 0x7fd317b4, 0x7fec09e3, 0x7ffb0260, 0x7fffffff, 0x7ffb0260,
- 0x7fec09e3, 0x7fd317b4,
- 0x7fb02dc6, 0x7f834ed0, 0x7f4c7e54, 0x7f0bc097, 0x7ec11aa5, 0x7e6c9251,
- 0x7e0e2e32, 0x7da5f5a5,
- 0x7d33f0ca, 0x7cb82885, 0x7c32a67e, 0x7ba3751d, 0x7b0a9f8d, 0x7a6831ba,
- 0x79bc384d, 0x7906c0b0,
- 0x7847d909, 0x777f903c, 0x76adf5e6, 0x75d31a61, 0x74ef0ebc, 0x7401e4c1,
- 0x730baeed, 0x720c8075,
- 0x71046d3e, 0x6ff389df, 0x6ed9eba1, 0x6db7a87a, 0x6c8cd70b, 0x6b598ea3,
- 0x6a1de737, 0x68d9f964,
- 0x678dde6e, 0x6639b03b, 0x64dd8950, 0x637984d4, 0x620dbe8b, 0x609a52d3,
- 0x5f1f5ea1, 0x5d9cff83,
- 0x5c13539b, 0x5a82799a, 0x58ea90c4, 0x574bb8e6, 0x55a6125c, 0x53f9be05,
- 0x5246dd49, 0x508d9211,
- 0x4ecdfec7, 0x4d084651, 0x4b3c8c12, 0x496af3e2, 0x4793a210, 0x45b6bb5e,
- 0x43d464fb, 0x41ecc484,
- 0x40000000, 0x3e0e3ddc, 0x3c17a4e8, 0x3a1c5c57, 0x381c8bb5, 0x36185aee,
- 0x340ff242, 0x32037a45,
- 0x2ff31bde, 0x2ddf0040, 0x2bc750e9, 0x29ac37a0, 0x278dde6e, 0x256c6f9f,
- 0x234815ba, 0x2120fb83,
- 0x1ef74bf3, 0x1ccb3237, 0x1a9cd9ac, 0x186c6ddd, 0x163a1a7e, 0x14060b68,
- 0x11d06c97, 0xf996a26,
- 0xd61304e, 0xb27eb5c, 0x8edc7b7, 0x6b2f1d2, 0x4779632, 0x23be165, 0x0,
- 0xfdc41e9b,
- 0xfb8869ce, 0xf94d0e2e, 0xf7123849, 0xf4d814a4, 0xf29ecfb2, 0xf06695da,
- 0xee2f9369, 0xebf9f498,
- 0xe9c5e582, 0xe7939223, 0xe5632654, 0xe334cdc9, 0xe108b40d, 0xdedf047d,
- 0xdcb7ea46, 0xda939061,
- 0xd8722192, 0xd653c860, 0xd438af17, 0xd220ffc0, 0xd00ce422, 0xcdfc85bb,
- 0xcbf00dbe, 0xc9e7a512,
- 0xc7e3744b, 0xc5e3a3a9, 0xc3e85b18, 0xc1f1c224, 0xc0000000, 0xbe133b7c,
- 0xbc2b9b05, 0xba4944a2,
- 0xb86c5df0, 0xb6950c1e, 0xb4c373ee, 0xb2f7b9af, 0xb1320139, 0xaf726def,
- 0xadb922b7, 0xac0641fb,
- 0xaa59eda4, 0xa8b4471a, 0xa7156f3c, 0xa57d8666, 0xa3ecac65, 0xa263007d,
- 0xa0e0a15f, 0x9f65ad2d,
- 0x9df24175, 0x9c867b2c, 0x9b2276b0, 0x99c64fc5, 0x98722192, 0x9726069c,
- 0x95e218c9, 0x94a6715d,
- 0x937328f5, 0x92485786, 0x9126145f, 0x900c7621, 0x8efb92c2, 0x8df37f8b,
- 0x8cf45113, 0x8bfe1b3f,
- 0x8b10f144, 0x8a2ce59f, 0x89520a1a, 0x88806fc4, 0x87b826f7, 0x86f93f50,
- 0x8643c7b3, 0x8597ce46,
- 0x84f56073, 0x845c8ae3, 0x83cd5982, 0x8347d77b, 0x82cc0f36, 0x825a0a5b,
- 0x81f1d1ce, 0x81936daf,
- 0x813ee55b, 0x80f43f69, 0x80b381ac, 0x807cb130, 0x804fd23a, 0x802ce84c,
- 0x8013f61d, 0x8004fda0,
-
-};
-
-
-/**
* @brief Q31 sin_cos function.
* @param[in] theta scaled input value in degrees
* @param[out] *pSinVal points to the processed sine output.
@@ -271,56 +61,60 @@
*
*/
-
void arm_sin_cos_q31(
q31_t theta,
q31_t * pSinVal,
q31_t * pCosVal)
{
- q31_t x0; /* Nearest input value */
- q31_t y0, y1; /* Nearest output values */
- q31_t xSpacing = INPUT_SPACING; /* Spaing between inputs */
- uint32_t i; /* Index */
- q31_t oneByXSpacing; /* 1/ xSpacing value */
- q31_t out; /* temporary variable */
- uint32_t sign_bits; /* No.of sign bits */
- uint32_t firstX = 0x80000000; /* First X value */
+ q31_t fract; /* Temporary variables for input, output */
+ uint16_t indexS, indexC; /* Index variable */
+ q31_t f1, f2, d1, d2; /* Two nearest output values */
+ q31_t Dn, Df;
+ q63_t temp;
+
+ /* Calculate the nearest index */
+ indexS = (uint32_t)theta >> CONTROLLER_Q31_SHIFT;
+ indexC = (indexS + 128) & 0x1ff;
- /* Calculation of index */
- i = ((uint32_t) theta - firstX) / (uint32_t) xSpacing;
-
- /* Checking min and max index of table */
- if(i >= 359)
- {
- i = 358;
- }
-
- /* Calculation of first nearest input value */
- x0 = (q31_t) firstX + ((q31_t) i * xSpacing);
+ /* Calculation of fractional value */
+ fract = (theta - (indexS << CONTROLLER_Q31_SHIFT)) << 8;
+
+ /* Read two nearest values of input value from the cos & sin tables */
+ f1 = sinTable_q31[indexC+0];
+ f2 = sinTable_q31[indexC+1];
+ d1 = -sinTable_q31[indexS+0];
+ d2 = -sinTable_q31[indexS+1];
- /* Reading nearest sine output values from table */
- y0 = sinTableQ31[i];
- y1 = sinTableQ31[i + 1u];
-
- /* Calculation of 1/(x1-x0) */
- /* (x1-x0) is xSpacing which is fixed value */
- sign_bits = 8u;
- oneByXSpacing = 0x5A000000;
+ Dn = 0x1921FB5; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+ Df = f2 - f1; // delta between the values of the functions
+ temp = Dn*((q63_t)d1 + d2);
+ temp = temp - ((q63_t)Df << 32);
+ temp = (q63_t)fract*(temp >> 31);
+ temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+ temp = (q63_t)fract*(temp >> 31);
+ temp = temp + (q63_t)d1*Dn;
+ temp = (q63_t)fract*(temp >> 31);
- /* Calculation of (theta - x0)/(x1-x0) */
- out =
- (((q31_t) (((q63_t) (theta - x0) * oneByXSpacing) >> 32)) << sign_bits);
-
- /* Calculation of y0 + (y1 - y0) * ((theta - x0)/(x1-x0)) */
- *pSinVal = __QADD(y0, ((q31_t) (((q63_t) (y1 - y0) * out) >> 30)));
+ /* Calculation of cosine value */
+ *pCosVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
+
+ /* Read two nearest values of input value from the cos & sin tables */
+ f1 = sinTable_q31[indexS+0];
+ f2 = sinTable_q31[indexS+1];
+ d1 = sinTable_q31[indexC+0];
+ d2 = sinTable_q31[indexC+1];
- /* Reading nearest cosine output values from table */
- y0 = cosTableQ31[i];
- y1 = cosTableQ31[i + 1u];
-
- /* Calculation of y0 + (y1 - y0) * ((theta - x0)/(x1-x0)) */
- *pCosVal = __QADD(y0, ((q31_t) (((q63_t) (y1 - y0) * out) >> 30)));
-
+ Df = f2 - f1; // delta between the values of the functions
+ temp = Dn*((q63_t)d1 + d2);
+ temp = temp - ((q63_t)Df << 32);
+ temp = (q63_t)fract*(temp >> 31);
+ temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+ temp = (q63_t)fract*(temp >> 31);
+ temp = temp + (q63_t)d1*Dn;
+ temp = (q63_t)fract*(temp >> 31);
+
+ /* Calculation of sine value */
+ *pSinVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
}
/**
--- a/cmsis_dsp/FastMathFunctions/arm_cos_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_cos_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,24 +1,24 @@
-/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
-*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
-*
-* Project: CMSIS DSP Library
-* Title: arm_cos_f32.c
-*
-* Description: Fast cosine calculation for floating-point values.
-*
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 21. September 2015
+* $Revision: V.1.4.5 a
+*
+* Project: CMSIS DSP Library
+* Title: arm_cos_f32.c
+*
+* Description: Fast cosine calculation for floating-point values.
+*
* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
-*
-* Redistribution and use in source and binary forms, with or without
+*
+* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
+* the documentation and/or other materials provided with the
* distribution.
* - Neither the name of ARM LIMITED nor the names of its contributors
* may be used to endorse or promote products derived from this
@@ -27,7 +27,7 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
@@ -35,256 +35,93 @@
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
+* POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------- */
#include "arm_math.h"
-/**
- * @ingroup groupFastMath
- */
-
-/**
- * @defgroup cos Cosine
- *
- * Computes the trigonometric cosine function using a combination of table lookup
- * and cubic interpolation. There are separate functions for
- * Q15, Q31, and floating-point data types.
- * The input to the floating-point version is in radians while the
- * fixed-point Q15 and Q31 have a scaled input with the range
- * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a
- * value of 2*pi wraps around to 0.
- *
- * The implementation is based on table lookup using 256 values together with cubic interpolation.
- * The steps used are:
- * -# Calculation of the nearest integer table index
- * -# Fetch the four table values a, b, c, and d
- * -# Compute the fractional portion (fract) of the table index.
- * -# Calculation of wa, wb, wc, wd
- * -# The final result equals <code>a*wa + b*wb + c*wc + d*wd</code>
- *
- * where
- * <pre>
- * a=Table[index-1];
- * b=Table[index+0];
- * c=Table[index+1];
- * d=Table[index+2];
- * </pre>
- * and
- * <pre>
- * wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;
- * wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;
- * wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;
- * wd=(1/6)*fract.^3 - (1/6)*fract;
- * </pre>
- */
-
- /**
- * @addtogroup cos
- * @{
+#include "arm_common_tables.h"
+/**
+ * @ingroup groupFastMath
*/
-
-/**
-* \par
-* <b>Example code for Generation of Cos Table:</b>
-* <pre>
-* tableSize = 256;
-* for(n = -1; n < (tableSize + 2); n++)
-* {
-* cosTable[n+1]= cos(2*pi*n/tableSize);
-* } </pre>
-* where pi value is 3.14159265358979
-*/
-
-static const float32_t cosTable[260] = {
- 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f,
- 0.998795449733734130f, 0.997290432453155520f, 0.995184719562530520f,
- 0.992479562759399410f, 0.989176511764526370f,
- 0.985277652740478520f, 0.980785250663757320f, 0.975702106952667240f,
- 0.970031261444091800f, 0.963776051998138430f, 0.956940352916717530f,
- 0.949528157711029050f, 0.941544055938720700f,
- 0.932992815971374510f, 0.923879504203796390f, 0.914209783077239990f,
- 0.903989315032958980f, 0.893224298954010010f, 0.881921291351318360f,
- 0.870086967945098880f, 0.857728600502014160f,
- 0.844853579998016360f, 0.831469595432281490f, 0.817584812641143800f,
- 0.803207516670227050f, 0.788346409797668460f, 0.773010432720184330f,
- 0.757208824157714840f, 0.740951120853424070f,
- 0.724247097969055180f, 0.707106769084930420f, 0.689540565013885500f,
- 0.671558976173400880f, 0.653172850608825680f, 0.634393274784088130f,
- 0.615231573581695560f, 0.595699310302734380f,
- 0.575808167457580570f, 0.555570244789123540f, 0.534997642040252690f,
- 0.514102756977081300f, 0.492898195981979370f, 0.471396744251251220f,
- 0.449611335992813110f, 0.427555084228515630f,
- 0.405241310596466060f, 0.382683426141738890f, 0.359895050525665280f,
- 0.336889863014221190f, 0.313681751489639280f, 0.290284663438797000f,
- 0.266712754964828490f, 0.242980182170867920f,
- 0.219101235270500180f, 0.195090323686599730f, 0.170961886644363400f,
- 0.146730467677116390f, 0.122410677373409270f, 0.098017141222953796f,
- 0.073564566671848297f, 0.049067676067352295f,
- 0.024541229009628296f, 0.000000000000000061f, -0.024541229009628296f,
- -0.049067676067352295f, -0.073564566671848297f, -0.098017141222953796f,
- -0.122410677373409270f, -0.146730467677116390f,
- -0.170961886644363400f, -0.195090323686599730f, -0.219101235270500180f,
- -0.242980182170867920f, -0.266712754964828490f, -0.290284663438797000f,
- -0.313681751489639280f, -0.336889863014221190f,
- -0.359895050525665280f, -0.382683426141738890f, -0.405241310596466060f,
- -0.427555084228515630f, -0.449611335992813110f, -0.471396744251251220f,
- -0.492898195981979370f, -0.514102756977081300f,
- -0.534997642040252690f, -0.555570244789123540f, -0.575808167457580570f,
- -0.595699310302734380f, -0.615231573581695560f, -0.634393274784088130f,
- -0.653172850608825680f, -0.671558976173400880f,
- -0.689540565013885500f, -0.707106769084930420f, -0.724247097969055180f,
- -0.740951120853424070f, -0.757208824157714840f, -0.773010432720184330f,
- -0.788346409797668460f, -0.803207516670227050f,
- -0.817584812641143800f, -0.831469595432281490f, -0.844853579998016360f,
- -0.857728600502014160f, -0.870086967945098880f, -0.881921291351318360f,
- -0.893224298954010010f, -0.903989315032958980f,
- -0.914209783077239990f, -0.923879504203796390f, -0.932992815971374510f,
- -0.941544055938720700f, -0.949528157711029050f, -0.956940352916717530f,
- -0.963776051998138430f, -0.970031261444091800f,
- -0.975702106952667240f, -0.980785250663757320f, -0.985277652740478520f,
- -0.989176511764526370f, -0.992479562759399410f, -0.995184719562530520f,
- -0.997290432453155520f, -0.998795449733734130f,
- -0.999698817729949950f, -1.000000000000000000f, -0.999698817729949950f,
- -0.998795449733734130f, -0.997290432453155520f, -0.995184719562530520f,
- -0.992479562759399410f, -0.989176511764526370f,
- -0.985277652740478520f, -0.980785250663757320f, -0.975702106952667240f,
- -0.970031261444091800f, -0.963776051998138430f, -0.956940352916717530f,
- -0.949528157711029050f, -0.941544055938720700f,
- -0.932992815971374510f, -0.923879504203796390f, -0.914209783077239990f,
- -0.903989315032958980f, -0.893224298954010010f, -0.881921291351318360f,
- -0.870086967945098880f, -0.857728600502014160f,
- -0.844853579998016360f, -0.831469595432281490f, -0.817584812641143800f,
- -0.803207516670227050f, -0.788346409797668460f, -0.773010432720184330f,
- -0.757208824157714840f, -0.740951120853424070f,
- -0.724247097969055180f, -0.707106769084930420f, -0.689540565013885500f,
- -0.671558976173400880f, -0.653172850608825680f, -0.634393274784088130f,
- -0.615231573581695560f, -0.595699310302734380f,
- -0.575808167457580570f, -0.555570244789123540f, -0.534997642040252690f,
- -0.514102756977081300f, -0.492898195981979370f, -0.471396744251251220f,
- -0.449611335992813110f, -0.427555084228515630f,
- -0.405241310596466060f, -0.382683426141738890f, -0.359895050525665280f,
- -0.336889863014221190f, -0.313681751489639280f, -0.290284663438797000f,
- -0.266712754964828490f, -0.242980182170867920f,
- -0.219101235270500180f, -0.195090323686599730f, -0.170961886644363400f,
- -0.146730467677116390f, -0.122410677373409270f, -0.098017141222953796f,
- -0.073564566671848297f, -0.049067676067352295f,
- -0.024541229009628296f, -0.000000000000000184f, 0.024541229009628296f,
- 0.049067676067352295f, 0.073564566671848297f, 0.098017141222953796f,
- 0.122410677373409270f, 0.146730467677116390f,
- 0.170961886644363400f, 0.195090323686599730f, 0.219101235270500180f,
- 0.242980182170867920f, 0.266712754964828490f, 0.290284663438797000f,
- 0.313681751489639280f, 0.336889863014221190f,
- 0.359895050525665280f, 0.382683426141738890f, 0.405241310596466060f,
- 0.427555084228515630f, 0.449611335992813110f, 0.471396744251251220f,
- 0.492898195981979370f, 0.514102756977081300f,
- 0.534997642040252690f, 0.555570244789123540f, 0.575808167457580570f,
- 0.595699310302734380f, 0.615231573581695560f, 0.634393274784088130f,
- 0.653172850608825680f, 0.671558976173400880f,
- 0.689540565013885500f, 0.707106769084930420f, 0.724247097969055180f,
- 0.740951120853424070f, 0.757208824157714840f, 0.773010432720184330f,
- 0.788346409797668460f, 0.803207516670227050f,
- 0.817584812641143800f, 0.831469595432281490f, 0.844853579998016360f,
- 0.857728600502014160f, 0.870086967945098880f, 0.881921291351318360f,
- 0.893224298954010010f, 0.903989315032958980f,
- 0.914209783077239990f, 0.923879504203796390f, 0.932992815971374510f,
- 0.941544055938720700f, 0.949528157711029050f, 0.956940352916717530f,
- 0.963776051998138430f, 0.970031261444091800f,
- 0.975702106952667240f, 0.980785250663757320f, 0.985277652740478520f,
- 0.989176511764526370f, 0.992479562759399410f, 0.995184719562530520f,
- 0.997290432453155520f, 0.998795449733734130f,
- 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f,
- 0.998795449733734130f
-};
-
-/**
- * @brief Fast approximation to the trigonometric cosine function for floating-point data.
- * @param[in] x input value in radians.
- * @return cos(x).
+/**
+ * @defgroup cos Cosine
+ *
+ * Computes the trigonometric cosine function using a combination of table lookup
+ * and linear interpolation. There are separate functions for
+ * Q15, Q31, and floating-point data types.
+ * The input to the floating-point version is in radians while the
+ * fixed-point Q15 and Q31 have a scaled input with the range
+ * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a
+ * value of 2*pi wraps around to 0.
+ *
+ * The implementation is based on table lookup using 256 values together with linear interpolation.
+ * The steps used are:
+ * -# Calculation of the nearest integer table index
+ * -# Compute the fractional portion (fract) of the table index.
+ * -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>
+ *
+ * where
+ * <pre>
+ * b=Table[index+0];
+ * c=Table[index+1];
+ * </pre>
*/
+ /**
+ * @addtogroup cos
+ * @{
+ */
+
+/**
+ * @brief Fast approximation to the trigonometric cosine function for floating-point data.
+ * @param[in] x input value in radians.
+ * @return cos(x).
+ */
float32_t arm_cos_f32(
float32_t x)
{
- float32_t cosVal, fract, in;
- int32_t index;
- uint32_t tableSize = (uint32_t) TABLE_SIZE;
- float32_t wa, wb, wc, wd;
- float32_t a, b, c, d;
- float32_t *tablePtr;
+ float32_t cosVal, fract, in; /* Temporary variables for input, output */
+ uint16_t index; /* Index variable */
+ float32_t a, b; /* Two nearest output values */
int32_t n;
- float32_t fractsq, fractby2, fractby6, fractby3, fractsqby2;
- float32_t oneminusfractby2;
- float32_t frby2xfrsq, frby6xfrsq;
+ float32_t findex;
/* input x is in radians */
- /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */
- in = x * 0.159154943092f;
+ /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi, add 0.25 (pi/2) to read sine table */
+ in = x * 0.159154943092f + 0.25f;
/* Calculation of floor value of input */
n = (int32_t) in;
/* Make negative values towards -infinity */
- if(x < 0.0f)
+ if(in < 0.0f)
{
- n = n - 1;
+ n--;
}
/* Map input value to [0 1] */
in = in - (float32_t) n;
/* Calculation of index of the table */
- index = (uint32_t) (tableSize * in);
+ findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+ index = ((uint16_t)findex) & 0x1ff;
/* fractional value calculation */
- fract = ((float32_t) tableSize * in) - (float32_t) index;
-
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
- }
-
- /* Initialise table pointer */
- tablePtr = (float32_t *) & cosTable[index];
-
- /* Read four nearest values of input value from the cos table */
- a = tablePtr[0];
- b = tablePtr[1];
- c = tablePtr[2];
- d = tablePtr[3];
+ fract = findex - (float32_t) index;
- /* Cubic interpolation process */
- fractsq = fract * fract;
- fractby2 = fract * 0.5f;
- fractby6 = fract * 0.166666667f;
- fractby3 = fract * 0.3333333333333f;
- fractsqby2 = fractsq * 0.5f;
- frby2xfrsq = (fractby2) * fractsq;
- frby6xfrsq = (fractby6) * fractsq;
- oneminusfractby2 = 1.0f - fractby2;
- wb = fractsqby2 - fractby3;
- wc = (fractsqby2 + fract);
- wa = wb - frby6xfrsq;
- wb = frby2xfrsq - fractsq;
- cosVal = wa * a;
- wc = wc - frby2xfrsq;
- wd = (frby6xfrsq) - fractby6;
- wb = wb + oneminusfractby2;
+ /* Read two nearest values of input value from the cos table */
+ a = sinTable_f32[index];
+ b = sinTable_f32[index+1];
- /* Calculate cos value */
- cosVal = (cosVal + (b * wb)) + ((c * wc) + (d * wd));
+ /* Linear interpolation process */
+ cosVal = (1.0f-fract)*a + fract*b;
/* Return the output value */
return (cosVal);
-
}
-/**
- * @} end of cos group
+/**
+ * @} end of cos group
*/
--- a/cmsis_dsp/FastMathFunctions/arm_cos_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_cos_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,24 +1,24 @@
-/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
-*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
-*
-* Project: CMSIS DSP Library
-* Title: arm_cos_q15.c
-*
-* Description: Fast cosine calculation for Q15 values.
-*
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 07. September 2015
+* $Revision: V.1.4.5 a
+*
+* Project: CMSIS DSP Library
+* Title: arm_cos_q15.c
+*
+* Description: Fast cosine calculation for Q15 values.
+*
* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
-*
-* Redistribution and use in source and binary forms, with or without
+*
+* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
+* the documentation and/or other materials provided with the
* distribution.
* - Neither the name of ARM LIMITED nor the names of its contributors
* may be used to endorse or promote products derived from this
@@ -27,7 +27,7 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
@@ -35,81 +35,26 @@
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
+* POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
-/**
- * @ingroup groupFastMath
- */
-
- /**
- * @addtogroup cos
- * @{
+/**
+ * @ingroup groupFastMath
*/
-/**
-* \par
- * Table values are in Q15 (1.15 fixed-point format) and generation is done in
- * three steps. First, generate cos values in floating point:
- * <pre>
- * tableSize = 256;
- * for(n = -1; n < (tableSize + 1); n++)
- * {
- * cosTable[n+1]= cos(2*pi*n/tableSize);
- * } </pre>
- * where pi value is 3.14159265358979
- * \par
- * Second, convert floating-point to Q15 (fixed-point):
- * (cosTable[i] * pow(2, 15))
- * \par
- * Finally, round to the nearest integer value:
- * cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
-*/
+ /**
+ * @addtogroup cos
+ * @{
+ */
-static const q15_t cosTableQ15[259] = {
- 0x7ff6, 0x7fff, 0x7ff6, 0x7fd9, 0x7fa7, 0x7f62, 0x7f0a, 0x7e9d,
- 0x7e1e, 0x7d8a, 0x7ce4, 0x7c2a, 0x7b5d, 0x7a7d, 0x798a, 0x7885,
- 0x776c, 0x7642, 0x7505, 0x73b6, 0x7255, 0x70e3, 0x6f5f, 0x6dca,
- 0x6c24, 0x6a6e, 0x68a7, 0x66d0, 0x64e9, 0x62f2, 0x60ec, 0x5ed7,
- 0x5cb4, 0x5a82, 0x5843, 0x55f6, 0x539b, 0x5134, 0x4ec0, 0x4c40,
- 0x49b4, 0x471d, 0x447b, 0x41ce, 0x3f17, 0x3c57, 0x398d, 0x36ba,
- 0x33df, 0x30fc, 0x2e11, 0x2b1f, 0x2827, 0x2528, 0x2224, 0x1f1a,
- 0x1c0c, 0x18f9, 0x15e2, 0x12c8, 0xfab, 0xc8c, 0x96b, 0x648,
- 0x324, 0x0, 0xfcdc, 0xf9b8, 0xf695, 0xf374, 0xf055, 0xed38,
- 0xea1e, 0xe707, 0xe3f4, 0xe0e6, 0xdddc, 0xdad8, 0xd7d9, 0xd4e1,
- 0xd1ef, 0xcf04, 0xcc21, 0xc946, 0xc673, 0xc3a9, 0xc0e9, 0xbe32,
- 0xbb85, 0xb8e3, 0xb64c, 0xb3c0, 0xb140, 0xaecc, 0xac65, 0xaa0a,
- 0xa7bd, 0xa57e, 0xa34c, 0xa129, 0x9f14, 0x9d0e, 0x9b17, 0x9930,
- 0x9759, 0x9592, 0x93dc, 0x9236, 0x90a1, 0x8f1d, 0x8dab, 0x8c4a,
- 0x8afb, 0x89be, 0x8894, 0x877b, 0x8676, 0x8583, 0x84a3, 0x83d6,
- 0x831c, 0x8276, 0x81e2, 0x8163, 0x80f6, 0x809e, 0x8059, 0x8027,
- 0x800a, 0x8000, 0x800a, 0x8027, 0x8059, 0x809e, 0x80f6, 0x8163,
- 0x81e2, 0x8276, 0x831c, 0x83d6, 0x84a3, 0x8583, 0x8676, 0x877b,
- 0x8894, 0x89be, 0x8afb, 0x8c4a, 0x8dab, 0x8f1d, 0x90a1, 0x9236,
- 0x93dc, 0x9592, 0x9759, 0x9930, 0x9b17, 0x9d0e, 0x9f14, 0xa129,
- 0xa34c, 0xa57e, 0xa7bd, 0xaa0a, 0xac65, 0xaecc, 0xb140, 0xb3c0,
- 0xb64c, 0xb8e3, 0xbb85, 0xbe32, 0xc0e9, 0xc3a9, 0xc673, 0xc946,
- 0xcc21, 0xcf04, 0xd1ef, 0xd4e1, 0xd7d9, 0xdad8, 0xdddc, 0xe0e6,
- 0xe3f4, 0xe707, 0xea1e, 0xed38, 0xf055, 0xf374, 0xf695, 0xf9b8,
- 0xfcdc, 0x0, 0x324, 0x648, 0x96b, 0xc8c, 0xfab, 0x12c8,
- 0x15e2, 0x18f9, 0x1c0c, 0x1f1a, 0x2224, 0x2528, 0x2827, 0x2b1f,
- 0x2e11, 0x30fc, 0x33df, 0x36ba, 0x398d, 0x3c57, 0x3f17, 0x41ce,
- 0x447b, 0x471d, 0x49b4, 0x4c40, 0x4ec0, 0x5134, 0x539b, 0x55f6,
- 0x5843, 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e9, 0x66d0,
- 0x68a7, 0x6a6e, 0x6c24, 0x6dca, 0x6f5f, 0x70e3, 0x7255, 0x73b6,
- 0x7505, 0x7642, 0x776c, 0x7885, 0x798a, 0x7a7d, 0x7b5d, 0x7c2a,
- 0x7ce4, 0x7d8a, 0x7e1e, 0x7e9d, 0x7f0a, 0x7f62, 0x7fa7, 0x7fd9,
- 0x7ff6, 0x7fff, 0x7ff6
-};
-
-
-/**
- * @brief Fast approximation to the trigonometric cosine function for Q15 data.
- * @param[in] x Scaled input value in radians.
- * @return cos(x).
- *
+/**
+ * @brief Fast approximation to the trigonometric cosine function for Q15 data.
+ * @param[in] x Scaled input value in radians.
+ * @return cos(x).
+ *
* The Q15 input value is in the range [0 +0.9999] and is mapped to a radian
* value in the range [0 2*pi).
*/
@@ -117,98 +62,35 @@
q15_t arm_cos_q15(
q15_t x)
{
- q31_t cosVal; /* Temporary variable for output */
- q15_t *tablePtr; /* Pointer to table */
- q15_t in, in2; /* Temporary variables for input */
- q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */
- q15_t a, b, c, d; /* Four nearest output values */
- q15_t fract, fractCube, fractSquare; /* Variables for fractional value */
- q15_t oneBy6 = 0x1555; /* Fixed point value of 1/6 */
- q15_t tableSpacing = TABLE_SPACING_Q15; /* Table spacing */
- int32_t index; /* Index variable */
-
- in = x;
-
- /* Calculate the nearest index */
- index = (int32_t) in / tableSpacing;
-
- /* Calculate the nearest value of input */
- in2 = (q15_t) index *tableSpacing;
+ q15_t cosVal; /* Temporary variables for input, output */
+ int32_t index; /* Index variables */
+ q15_t a, b; /* Four nearest output values */
+ q15_t fract; /* Temporary values for fractional values */
- /* Calculation of fractional value */
- fract = (in - in2) << 8;
-
- /* fractSquare = fract * fract */
- fractSquare = (q15_t) ((fract * fract) >> 15);
-
- /* fractCube = fract * fract * fract */
- fractCube = (q15_t) ((fractSquare * fract) >> 15);
-
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
+ /* add 0.25 (pi/2) to read sine table */
+ x = (uint16_t)x + 0x2000;
+ if(x < 0)
+ { /* convert negative numbers to corresponding positive ones */
+ x = (uint16_t)x + 0x8000;
}
- /* Initialise table pointer */
- tablePtr = (q15_t *) & cosTableQ15[index];
-
- /* Cubic interpolation process */
- /* Calculation of wa */
- /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAA)*fract; */
- wa = (q31_t) oneBy6 *fractCube;
- wa += (q31_t) 0x2AAA *fract;
- wa = -(wa >> 15);
- wa += (fractSquare >> 1u);
+ /* Calculate the nearest index */
+ index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;
- /* Read first nearest value of output from the cos table */
- a = *tablePtr++;
-
- /* cosVal = a * wa */
- cosVal = a * wa;
-
- /* Calculation of wb */
- wb = (((fractCube >> 1u) - fractSquare) - (fract >> 1u)) + 0x7FFF;
-
- /* Read second nearest value of output from the cos table */
- b = *tablePtr++;
-
- /* cosVal += b*wb */
- cosVal += b * wb;
+ /* Calculation of fractional value */
+ fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;
- /* Calculation of wc */
- wc = -(q31_t) fractCube + fractSquare;
- wc = (wc >> 1u) + fract;
-
- /* Read third nearest value of output from the cos table */
- c = *tablePtr++;
-
- /* cosVal += c*wc */
- cosVal += c * wc;
+ /* Read two nearest values of input value from the sin table */
+ a = sinTable_q15[index];
+ b = sinTable_q15[index+1];
- /* Calculation of wd */
- /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */
- fractCube = fractCube - fract;
- wd = ((q15_t) (((q31_t) oneBy6 * fractCube) >> 15));
-
- /* Read fourth nearest value of output from the cos table */
- d = *tablePtr++;
+ /* Linear interpolation process */
+ cosVal = (q31_t)(0x8000-fract)*a >> 16;
+ cosVal = (q15_t)((((q31_t)cosVal << 16) + ((q31_t)fract*b)) >> 16);
- /* cosVal += d*wd; */
- cosVal += d * wd;
-
- /* Convert output value in 1.15(q15) format and saturate */
- cosVal = __SSAT((cosVal >> 15), 16);
-
- /* Return the output value in 1.15(q15) format */
- return ((q15_t) cosVal);
-
+ return cosVal << 1;
}
-/**
- * @} end of cos group
+/**
+ * @} end of cos group
*/
--- a/cmsis_dsp/FastMathFunctions/arm_cos_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_cos_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,24 +1,24 @@
-/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
-*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
-*
-* Project: CMSIS DSP Library
-* Title: arm_cos_q31.c
-*
-* Description: Fast cosine calculation for Q31 values.
-*
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 07. September 2015
+* $Revision: V.1.4.5 a
+*
+* Project: CMSIS DSP Library
+* Title: arm_cos_q31.c
+*
+* Description: Fast cosine calculation for Q31 values.
+*
* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
-*
-* Redistribution and use in source and binary forms, with or without
+*
+* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
+* the documentation and/or other materials provided with the
* distribution.
* - Neither the name of ARM LIMITED nor the names of its contributors
* may be used to endorse or promote products derived from this
@@ -27,7 +27,7 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
@@ -35,113 +35,26 @@
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
+* POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------- */
#include "arm_math.h"
-
-/**
- * @ingroup groupFastMath
- */
-
- /**
- * @addtogroup cos
- * @{
- */
+#include "arm_common_tables.h"
-/**
- * \par
- * Table values are in Q31 (1.31 fixed-point format) and generation is done in
- * three steps. First, generate cos values in floating point:
- * <pre>
- * tableSize = 256;
- * for(n = -1; n < (tableSize + 1); n++)
- * {
- * cosTable[n+1]= cos(2*pi*n/tableSize);
- * } </pre>
- * where pi value is 3.14159265358979
- * \par
- * Second, convert floating-point to Q31 (Fixed point):
- * (cosTable[i] * pow(2, 31))
- * \par
- * Finally, round to the nearest integer value:
- * cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
+/**
+ * @ingroup groupFastMath
*/
+ /**
+ * @addtogroup cos
+ * @{
+ */
-static const q31_t cosTableQ31[259] = {
- 0x7ff62182, 0x7fffffff, 0x7ff62182, 0x7fd8878e, 0x7fa736b4, 0x7f62368f,
- 0x7f0991c4, 0x7e9d55fc,
- 0x7e1d93ea, 0x7d8a5f40, 0x7ce3ceb2, 0x7c29fbee, 0x7b5d039e, 0x7a7d055b,
- 0x798a23b1, 0x78848414,
- 0x776c4edb, 0x7641af3d, 0x7504d345, 0x73b5ebd1, 0x72552c85, 0x70e2cbc6,
- 0x6f5f02b2, 0x6dca0d14,
- 0x6c242960, 0x6a6d98a4, 0x68a69e81, 0x66cf8120, 0x64e88926, 0x62f201ac,
- 0x60ec3830, 0x5ed77c8a,
- 0x5cb420e0, 0x5a82799a, 0x5842dd54, 0x55f5a4d2, 0x539b2af0, 0x5133cc94,
- 0x4ebfe8a5, 0x4c3fdff4,
- 0x49b41533, 0x471cece7, 0x447acd50, 0x41ce1e65, 0x3f1749b8, 0x3c56ba70,
- 0x398cdd32, 0x36ba2014,
- 0x33def287, 0x30fbc54d, 0x2e110a62, 0x2b1f34eb, 0x2826b928, 0x25280c5e,
- 0x2223a4c5, 0x1f19f97b,
- 0x1c0b826a, 0x18f8b83c, 0x15e21445, 0x12c8106f, 0xfab272b, 0xc8bd35e,
- 0x96a9049, 0x647d97c,
- 0x3242abf, 0x0, 0xfcdbd541, 0xf9b82684, 0xf6956fb7, 0xf3742ca2, 0xf054d8d5,
- 0xed37ef91,
- 0xea1debbb, 0xe70747c4, 0xe3f47d96, 0xe0e60685, 0xdddc5b3b, 0xdad7f3a2,
- 0xd7d946d8, 0xd4e0cb15,
- 0xd1eef59e, 0xcf043ab3, 0xcc210d79, 0xc945dfec, 0xc67322ce, 0xc3a94590,
- 0xc0e8b648, 0xbe31e19b,
- 0xbb8532b0, 0xb8e31319, 0xb64beacd, 0xb3c0200c, 0xb140175b, 0xaecc336c,
- 0xac64d510, 0xaa0a5b2e,
- 0xa7bd22ac, 0xa57d8666, 0xa34bdf20, 0xa1288376, 0x9f13c7d0, 0x9d0dfe54,
- 0x9b1776da, 0x99307ee0,
- 0x9759617f, 0x9592675c, 0x93dbd6a0, 0x9235f2ec, 0x90a0fd4e, 0x8f1d343a,
- 0x8daad37b, 0x8c4a142f,
- 0x8afb2cbb, 0x89be50c3, 0x8893b125, 0x877b7bec, 0x8675dc4f, 0x8582faa5,
- 0x84a2fc62, 0x83d60412,
- 0x831c314e, 0x8275a0c0, 0x81e26c16, 0x8162aa04, 0x80f66e3c, 0x809dc971,
- 0x8058c94c, 0x80277872,
- 0x8009de7e, 0x80000000, 0x8009de7e, 0x80277872, 0x8058c94c, 0x809dc971,
- 0x80f66e3c, 0x8162aa04,
- 0x81e26c16, 0x8275a0c0, 0x831c314e, 0x83d60412, 0x84a2fc62, 0x8582faa5,
- 0x8675dc4f, 0x877b7bec,
- 0x8893b125, 0x89be50c3, 0x8afb2cbb, 0x8c4a142f, 0x8daad37b, 0x8f1d343a,
- 0x90a0fd4e, 0x9235f2ec,
- 0x93dbd6a0, 0x9592675c, 0x9759617f, 0x99307ee0, 0x9b1776da, 0x9d0dfe54,
- 0x9f13c7d0, 0xa1288376,
- 0xa34bdf20, 0xa57d8666, 0xa7bd22ac, 0xaa0a5b2e, 0xac64d510, 0xaecc336c,
- 0xb140175b, 0xb3c0200c,
- 0xb64beacd, 0xb8e31319, 0xbb8532b0, 0xbe31e19b, 0xc0e8b648, 0xc3a94590,
- 0xc67322ce, 0xc945dfec,
- 0xcc210d79, 0xcf043ab3, 0xd1eef59e, 0xd4e0cb15, 0xd7d946d8, 0xdad7f3a2,
- 0xdddc5b3b, 0xe0e60685,
- 0xe3f47d96, 0xe70747c4, 0xea1debbb, 0xed37ef91, 0xf054d8d5, 0xf3742ca2,
- 0xf6956fb7, 0xf9b82684,
- 0xfcdbd541, 0x0, 0x3242abf, 0x647d97c, 0x96a9049, 0xc8bd35e, 0xfab272b,
- 0x12c8106f,
- 0x15e21445, 0x18f8b83c, 0x1c0b826a, 0x1f19f97b, 0x2223a4c5, 0x25280c5e,
- 0x2826b928, 0x2b1f34eb,
- 0x2e110a62, 0x30fbc54d, 0x33def287, 0x36ba2014, 0x398cdd32, 0x3c56ba70,
- 0x3f1749b8, 0x41ce1e65,
- 0x447acd50, 0x471cece7, 0x49b41533, 0x4c3fdff4, 0x4ebfe8a5, 0x5133cc94,
- 0x539b2af0, 0x55f5a4d2,
- 0x5842dd54, 0x5a82799a, 0x5cb420e0, 0x5ed77c8a, 0x60ec3830, 0x62f201ac,
- 0x64e88926, 0x66cf8120,
- 0x68a69e81, 0x6a6d98a4, 0x6c242960, 0x6dca0d14, 0x6f5f02b2, 0x70e2cbc6,
- 0x72552c85, 0x73b5ebd1,
- 0x7504d345, 0x7641af3d, 0x776c4edb, 0x78848414, 0x798a23b1, 0x7a7d055b,
- 0x7b5d039e, 0x7c29fbee,
- 0x7ce3ceb2, 0x7d8a5f40, 0x7e1d93ea, 0x7e9d55fc, 0x7f0991c4, 0x7f62368f,
- 0x7fa736b4, 0x7fd8878e,
- 0x7ff62182, 0x7fffffff, 0x7ff62182
-};
-
-/**
- * @brief Fast approximation to the trigonometric cosine function for Q31 data.
- * @param[in] x Scaled input value in radians.
- * @return cos(x).
- *
+/**
+ * @brief Fast approximation to the trigonometric cosine function for Q31 data.
+ * @param[in] x Scaled input value in radians.
+ * @return cos(x).
+ *
* The Q31 input value is in the range [0 +0.9999] and is mapped to a radian
* value in the range [0 2*pi).
*/
@@ -149,101 +62,35 @@
q31_t arm_cos_q31(
q31_t x)
{
- q31_t cosVal, in, in2; /* Temporary variables for input, output */
- q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */
- q31_t a, b, c, d; /* Four nearest output values */
- q31_t *tablePtr; /* Pointer to table */
- q31_t fract, fractCube, fractSquare; /* Temporary values for fractional values */
- q31_t oneBy6 = 0x15555555; /* Fixed point value of 1/6 */
- q31_t tableSpacing = TABLE_SPACING_Q31; /* Table spacing */
- q31_t temp; /* Temporary variable for intermediate process */
- int32_t index; /* Index variable */
-
- in = x;
-
- /* Calculate the nearest index */
- index = in / tableSpacing;
-
- /* Calculate the nearest value of input */
- in2 = ((q31_t) index) * tableSpacing;
+ q31_t cosVal; /* Temporary variables for input, output */
+ int32_t index; /* Index variables */
+ q31_t a, b; /* Four nearest output values */
+ q31_t fract; /* Temporary values for fractional values */
- /* Calculation of fractional value */
- fract = (in - in2) << 8;
-
- /* fractSquare = fract * fract */
- fractSquare = ((q31_t) (((q63_t) fract * fract) >> 32));
- fractSquare = fractSquare << 1;
-
- /* fractCube = fract * fract * fract */
- fractCube = ((q31_t) (((q63_t) fractSquare * fract) >> 32));
- fractCube = fractCube << 1;
-
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
+ /* add 0.25 (pi/2) to read sine table */
+ x = (uint32_t)x + 0x20000000;
+ if(x < 0)
+ { /* convert negative numbers to corresponding positive ones */
+ x = (uint32_t)x + 0x80000000;
}
- /* Initialise table pointer */
- tablePtr = (q31_t *) & cosTableQ31[index];
-
- /* Cubic interpolation process */
- /* Calculation of wa */
- /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAAAAAA)*fract; */
- wa = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32));
- temp = 0x2AAAAAAA;
- wa = (q31_t) ((((q63_t) wa << 32) + ((q63_t) temp * fract)) >> 32);
- wa = -(wa << 1u);
- wa += (fractSquare >> 1u);
+ /* Calculate the nearest index */
+ index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;
- /* Read first nearest value of output from the cos table */
- a = *tablePtr++;
-
- /* cosVal = a*wa */
- cosVal = ((q31_t) (((q63_t) a * wa) >> 32));
-
- /* q31(1.31) Fixed point value of 1 */
- temp = 0x7FFFFFFF;
-
- /* Calculation of wb */
- wb = ((fractCube >> 1u) - (fractSquare + (fract >> 1u))) + temp;
- /* Read second nearest value of output from the cos table */
- b = *tablePtr++;
+ /* Calculation of fractional value */
+ fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;
- /* cosVal += b*wb */
- cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) b * (wb))) >> 32);
-
- /* Calculation of wc */
- wc = -fractCube + fractSquare;
- wc = (wc >> 1u) + fract;
- /* Read third nearest values of output value from the cos table */
- c = *tablePtr++;
-
- /* cosVal += c*wc */
- cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) c * (wc))) >> 32);
+ /* Read two nearest values of input value from the sin table */
+ a = sinTable_q31[index];
+ b = sinTable_q31[index+1];
- /* Calculation of wd */
- /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */
- fractCube = fractCube - fract;
- wd = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32));
- wd = (wd << 1u);
+ /* Linear interpolation process */
+ cosVal = (q63_t)(0x80000000-fract)*a >> 32;
+ cosVal = (q31_t)((((q63_t)cosVal << 32) + ((q63_t)fract*b)) >> 32);
- /* Read fourth nearest value of output from the cos table */
- d = *tablePtr++;
-
- /* cosVal += d*wd; */
- cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) d * (wd))) >> 32);
-
-
- /* convert cosVal in 2.30 format to 1.31 format */
- return (__QADD(cosVal, cosVal));
-
+ return cosVal << 1;
}
-/**
- * @} end of cos group
+/**
+ * @} end of cos group
*/
--- a/cmsis_dsp/FastMathFunctions/arm_sin_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_sin_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,24 +1,24 @@
-/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
-*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
-*
-* Project: CMSIS DSP Library
-* Title: arm_sin_f32.c
-*
-* Description: Fast sine calculation for floating-point values.
-*
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 21. September 2015
+* $Revision: V.1.4.5 a
+*
+* Project: CMSIS DSP Library
+* Title: arm_sin_f32.c
+*
+* Description: Fast sine calculation for floating-point values.
+*
* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
-*
-* Redistribution and use in source and binary forms, with or without
+*
+* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
+* the documentation and/or other materials provided with the
* distribution.
* - Neither the name of ARM LIMITED nor the names of its contributors
* may be used to endorse or promote products derived from this
@@ -27,7 +27,7 @@
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
@@ -35,189 +35,60 @@
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
+* POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------- */
#include "arm_math.h"
-
-/**
- * @ingroup groupFastMath
- */
+#include "arm_common_tables.h"
+#include <math.h>
-/**
- * @defgroup sin Sine
- *
- * Computes the trigonometric sine function using a combination of table lookup
- * and cubic interpolation. There are separate functions for
- * Q15, Q31, and floating-point data types.
- * The input to the floating-point version is in radians while the
- * fixed-point Q15 and Q31 have a scaled input with the range
- * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a
- * value of 2*pi wraps around to 0.
- *
- * The implementation is based on table lookup using 256 values together with cubic interpolation.
- * The steps used are:
- * -# Calculation of the nearest integer table index
- * -# Fetch the four table values a, b, c, and d
- * -# Compute the fractional portion (fract) of the table index.
- * -# Calculation of wa, wb, wc, wd
- * -# The final result equals <code>a*wa + b*wb + c*wc + d*wd</code>
- *
- * where
- * <pre>
- * a=Table[index-1];
- * b=Table[index+0];
- * c=Table[index+1];
- * d=Table[index+2];
- * </pre>
- * and
- * <pre>
- * wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;
- * wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;
- * wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;
- * wd=(1/6)*fract.^3 - (1/6)*fract;
- * </pre>
- */
-
-/**
- * @addtogroup sin
- * @{
- */
-
-
-/**
- * \par
- * Example code for the generation of the floating-point sine table:
- * <pre>
- * tableSize = 256;
- * for(n = -1; n < (tableSize + 1); n++)
- * {
- * sinTable[n+1]=sin(2*pi*n/tableSize);
- * }</pre>
- * \par
- * where pi value is 3.14159265358979
+/**
+ * @ingroup groupFastMath
*/
-static const float32_t sinTable[259] = {
- -0.024541229009628296f, 0.000000000000000000f, 0.024541229009628296f,
- 0.049067676067352295f, 0.073564566671848297f, 0.098017141222953796f,
- 0.122410677373409270f, 0.146730467677116390f,
- 0.170961886644363400f, 0.195090323686599730f, 0.219101235270500180f,
- 0.242980182170867920f, 0.266712754964828490f, 0.290284663438797000f,
- 0.313681751489639280f, 0.336889863014221190f,
- 0.359895050525665280f, 0.382683426141738890f, 0.405241310596466060f,
- 0.427555084228515630f, 0.449611335992813110f, 0.471396744251251220f,
- 0.492898195981979370f, 0.514102756977081300f,
- 0.534997642040252690f, 0.555570244789123540f, 0.575808167457580570f,
- 0.595699310302734380f, 0.615231573581695560f, 0.634393274784088130f,
- 0.653172850608825680f, 0.671558976173400880f,
- 0.689540565013885500f, 0.707106769084930420f, 0.724247097969055180f,
- 0.740951120853424070f, 0.757208824157714840f, 0.773010432720184330f,
- 0.788346409797668460f, 0.803207516670227050f,
- 0.817584812641143800f, 0.831469595432281490f, 0.844853579998016360f,
- 0.857728600502014160f, 0.870086967945098880f, 0.881921291351318360f,
- 0.893224298954010010f, 0.903989315032958980f,
- 0.914209783077239990f, 0.923879504203796390f, 0.932992815971374510f,
- 0.941544055938720700f, 0.949528157711029050f, 0.956940352916717530f,
- 0.963776051998138430f, 0.970031261444091800f,
- 0.975702106952667240f, 0.980785250663757320f, 0.985277652740478520f,
- 0.989176511764526370f, 0.992479562759399410f, 0.995184719562530520f,
- 0.997290432453155520f, 0.998795449733734130f,
- 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f,
- 0.998795449733734130f, 0.997290432453155520f, 0.995184719562530520f,
- 0.992479562759399410f, 0.989176511764526370f,
- 0.985277652740478520f, 0.980785250663757320f, 0.975702106952667240f,
- 0.970031261444091800f, 0.963776051998138430f, 0.956940352916717530f,
- 0.949528157711029050f, 0.941544055938720700f,
- 0.932992815971374510f, 0.923879504203796390f, 0.914209783077239990f,
- 0.903989315032958980f, 0.893224298954010010f, 0.881921291351318360f,
- 0.870086967945098880f, 0.857728600502014160f,
- 0.844853579998016360f, 0.831469595432281490f, 0.817584812641143800f,
- 0.803207516670227050f, 0.788346409797668460f, 0.773010432720184330f,
- 0.757208824157714840f, 0.740951120853424070f,
- 0.724247097969055180f, 0.707106769084930420f, 0.689540565013885500f,
- 0.671558976173400880f, 0.653172850608825680f, 0.634393274784088130f,
- 0.615231573581695560f, 0.595699310302734380f,
- 0.575808167457580570f, 0.555570244789123540f, 0.534997642040252690f,
- 0.514102756977081300f, 0.492898195981979370f, 0.471396744251251220f,
- 0.449611335992813110f, 0.427555084228515630f,
- 0.405241310596466060f, 0.382683426141738890f, 0.359895050525665280f,
- 0.336889863014221190f, 0.313681751489639280f, 0.290284663438797000f,
- 0.266712754964828490f, 0.242980182170867920f,
- 0.219101235270500180f, 0.195090323686599730f, 0.170961886644363400f,
- 0.146730467677116390f, 0.122410677373409270f, 0.098017141222953796f,
- 0.073564566671848297f, 0.049067676067352295f,
- 0.024541229009628296f, 0.000000000000000122f, -0.024541229009628296f,
- -0.049067676067352295f, -0.073564566671848297f, -0.098017141222953796f,
- -0.122410677373409270f, -0.146730467677116390f,
- -0.170961886644363400f, -0.195090323686599730f, -0.219101235270500180f,
- -0.242980182170867920f, -0.266712754964828490f, -0.290284663438797000f,
- -0.313681751489639280f, -0.336889863014221190f,
- -0.359895050525665280f, -0.382683426141738890f, -0.405241310596466060f,
- -0.427555084228515630f, -0.449611335992813110f, -0.471396744251251220f,
- -0.492898195981979370f, -0.514102756977081300f,
- -0.534997642040252690f, -0.555570244789123540f, -0.575808167457580570f,
- -0.595699310302734380f, -0.615231573581695560f, -0.634393274784088130f,
- -0.653172850608825680f, -0.671558976173400880f,
- -0.689540565013885500f, -0.707106769084930420f, -0.724247097969055180f,
- -0.740951120853424070f, -0.757208824157714840f, -0.773010432720184330f,
- -0.788346409797668460f, -0.803207516670227050f,
- -0.817584812641143800f, -0.831469595432281490f, -0.844853579998016360f,
- -0.857728600502014160f, -0.870086967945098880f, -0.881921291351318360f,
- -0.893224298954010010f, -0.903989315032958980f,
- -0.914209783077239990f, -0.923879504203796390f, -0.932992815971374510f,
- -0.941544055938720700f, -0.949528157711029050f, -0.956940352916717530f,
- -0.963776051998138430f, -0.970031261444091800f,
- -0.975702106952667240f, -0.980785250663757320f, -0.985277652740478520f,
- -0.989176511764526370f, -0.992479562759399410f, -0.995184719562530520f,
- -0.997290432453155520f, -0.998795449733734130f,
- -0.999698817729949950f, -1.000000000000000000f, -0.999698817729949950f,
- -0.998795449733734130f, -0.997290432453155520f, -0.995184719562530520f,
- -0.992479562759399410f, -0.989176511764526370f,
- -0.985277652740478520f, -0.980785250663757320f, -0.975702106952667240f,
- -0.970031261444091800f, -0.963776051998138430f, -0.956940352916717530f,
- -0.949528157711029050f, -0.941544055938720700f,
- -0.932992815971374510f, -0.923879504203796390f, -0.914209783077239990f,
- -0.903989315032958980f, -0.893224298954010010f, -0.881921291351318360f,
- -0.870086967945098880f, -0.857728600502014160f,
- -0.844853579998016360f, -0.831469595432281490f, -0.817584812641143800f,
- -0.803207516670227050f, -0.788346409797668460f, -0.773010432720184330f,
- -0.757208824157714840f, -0.740951120853424070f,
- -0.724247097969055180f, -0.707106769084930420f, -0.689540565013885500f,
- -0.671558976173400880f, -0.653172850608825680f, -0.634393274784088130f,
- -0.615231573581695560f, -0.595699310302734380f,
- -0.575808167457580570f, -0.555570244789123540f, -0.534997642040252690f,
- -0.514102756977081300f, -0.492898195981979370f, -0.471396744251251220f,
- -0.449611335992813110f, -0.427555084228515630f,
- -0.405241310596466060f, -0.382683426141738890f, -0.359895050525665280f,
- -0.336889863014221190f, -0.313681751489639280f, -0.290284663438797000f,
- -0.266712754964828490f, -0.242980182170867920f,
- -0.219101235270500180f, -0.195090323686599730f, -0.170961886644363400f,
- -0.146730467677116390f, -0.122410677373409270f, -0.098017141222953796f,
- -0.073564566671848297f, -0.049067676067352295f,
- -0.024541229009628296f, -0.000000000000000245f, 0.024541229009628296f
-};
+/**
+ * @defgroup sin Sine
+ *
+ * Computes the trigonometric sine function using a combination of table lookup
+ * and linear interpolation. There are separate functions for
+ * Q15, Q31, and floating-point data types.
+ * The input to the floating-point version is in radians while the
+ * fixed-point Q15 and Q31 have a scaled input with the range
+ * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a
+ * value of 2*pi wraps around to 0.
+ *
+ * The implementation is based on table lookup using 256 values together with linear interpolation.
+ * The steps used are:
+ * -# Calculation of the nearest integer table index
+ * -# Compute the fractional portion (fract) of the table index.
+ * -# The final result equals <code>(1.0f-fract)*a + fract*b;</code>
+ *
+ * where
+ * <pre>
+ * b=Table[index+0];
+ * c=Table[index+1];
+ * </pre>
+ */
+/**
+ * @addtogroup sin
+ * @{
+ */
-/**
- * @brief Fast approximation to the trigonometric sine function for floating-point data.
- * @param[in] x input value in radians.
- * @return sin(x).
+/**
+ * @brief Fast approximation to the trigonometric sine function for floating-point data.
+ * @param[in] x input value in radians.
+ * @return sin(x).
*/
float32_t arm_sin_f32(
float32_t x)
{
- float32_t sinVal, fract, in; /* Temporary variables for input, output */
- int32_t index; /* Index variable */
- uint32_t tableSize = (uint32_t) TABLE_SIZE; /* Initialise tablesize */
- float32_t wa, wb, wc, wd; /* Cubic interpolation coefficients */
- float32_t a, b, c, d; /* Four nearest output values */
- float32_t *tablePtr; /* Pointer to table */
+ float32_t sinVal, fract, in; /* Temporary variables for input, output */
+ uint16_t index; /* Index variable */
+ float32_t a, b; /* Two nearest output values */
int32_t n;
- float32_t fractsq, fractby2, fractby6, fractby3, fractsqby2;
- float32_t oneminusfractby2;
- float32_t frby2xfrsq, frby6xfrsq;
+ float32_t findex;
/* input x is in radians */
/* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */
@@ -229,63 +100,34 @@
/* Make negative values towards -infinity */
if(x < 0.0f)
{
- n = n - 1;
+ n--;
}
/* Map input value to [0 1] */
in = in - (float32_t) n;
/* Calculation of index of the table */
- index = (uint32_t) (tableSize * in);
-
- /* fractional value calculation */
- fract = ((float32_t) tableSize * in) - (float32_t) index;
-
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
+ findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+ if (findex >= 512.0f) {
+ findex -= 512.0f;
}
- /* Initialise table pointer */
- tablePtr = (float32_t *) & sinTable[index];
+ index = ((uint16_t)findex) & 0x1ff;
- /* Read four nearest values of input value from the sin table */
- a = tablePtr[0];
- b = tablePtr[1];
- c = tablePtr[2];
- d = tablePtr[3];
+ /* fractional value calculation */
+ fract = findex - (float32_t) index;
- /* Cubic interpolation process */
- fractsq = fract * fract;
- fractby2 = fract * 0.5f;
- fractby6 = fract * 0.166666667f;
- fractby3 = fract * 0.3333333333333f;
- fractsqby2 = fractsq * 0.5f;
- frby2xfrsq = (fractby2) * fractsq;
- frby6xfrsq = (fractby6) * fractsq;
- oneminusfractby2 = 1.0f - fractby2;
- wb = fractsqby2 - fractby3;
- wc = (fractsqby2 + fract);
- wa = wb - frby6xfrsq;
- wb = frby2xfrsq - fractsq;
- sinVal = wa * a;
- wc = wc - frby2xfrsq;
- wd = (frby6xfrsq) - fractby6;
- wb = wb + oneminusfractby2;
+ /* Read two nearest values of input value from the sin table */
+ a = sinTable_f32[index];
+ b = sinTable_f32[index+1];
- /* Calculate sin value */
- sinVal = (sinVal + (b * wb)) + ((c * wc) + (d * wd));
+ /* Linear interpolation process */
+ sinVal = (1.0f-fract)*a + fract*b;
/* Return the output value */
return (sinVal);
-
}
-/**
- * @} end of sin group
+/**
+ * @} end of sin group
*/
--- a/cmsis_dsp/FastMathFunctions/arm_sin_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_sin_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_sin_q15.c
@@ -39,6 +39,7 @@
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
/**
* @ingroup groupFastMath
@@ -49,63 +50,6 @@
* @{
*/
-
-/**
-* \par
- * Table values are in Q15 (1.15 fixed-point format) and generation is done in
- * three steps. First, generate sin values in floating point:
- * <pre>
- * tableSize = 256;
- * for(n = -1; n < (tableSize + 1); n++)
- * {
- * sinTable[n+1]= sin(2*pi*n/tableSize);
- * } </pre>
- * where pi value is 3.14159265358979
- * \par
- * Second, convert floating-point to Q15 (fixed-point):
- * (sinTable[i] * pow(2, 15))
- * \par
- * Finally, round to the nearest integer value:
- * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
-*/
-
-static const q15_t sinTableQ15[259] = {
- 0xfcdc, 0x0, 0x324, 0x648, 0x96b, 0xc8c, 0xfab, 0x12c8,
- 0x15e2, 0x18f9, 0x1c0c, 0x1f1a, 0x2224, 0x2528, 0x2827, 0x2b1f,
- 0x2e11, 0x30fc, 0x33df, 0x36ba, 0x398d, 0x3c57, 0x3f17, 0x41ce,
- 0x447b, 0x471d, 0x49b4, 0x4c40, 0x4ec0, 0x5134, 0x539b, 0x55f6,
- 0x5843, 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e9, 0x66d0,
- 0x68a7, 0x6a6e, 0x6c24, 0x6dca, 0x6f5f, 0x70e3, 0x7255, 0x73b6,
- 0x7505, 0x7642, 0x776c, 0x7885, 0x798a, 0x7a7d, 0x7b5d, 0x7c2a,
- 0x7ce4, 0x7d8a, 0x7e1e, 0x7e9d, 0x7f0a, 0x7f62, 0x7fa7, 0x7fd9,
- 0x7ff6, 0x7fff, 0x7ff6, 0x7fd9, 0x7fa7, 0x7f62, 0x7f0a, 0x7e9d,
- 0x7e1e, 0x7d8a, 0x7ce4, 0x7c2a, 0x7b5d, 0x7a7d, 0x798a, 0x7885,
- 0x776c, 0x7642, 0x7505, 0x73b6, 0x7255, 0x70e3, 0x6f5f, 0x6dca,
- 0x6c24, 0x6a6e, 0x68a7, 0x66d0, 0x64e9, 0x62f2, 0x60ec, 0x5ed7,
- 0x5cb4, 0x5a82, 0x5843, 0x55f6, 0x539b, 0x5134, 0x4ec0, 0x4c40,
- 0x49b4, 0x471d, 0x447b, 0x41ce, 0x3f17, 0x3c57, 0x398d, 0x36ba,
- 0x33df, 0x30fc, 0x2e11, 0x2b1f, 0x2827, 0x2528, 0x2224, 0x1f1a,
- 0x1c0c, 0x18f9, 0x15e2, 0x12c8, 0xfab, 0xc8c, 0x96b, 0x648,
- 0x324, 0x0, 0xfcdc, 0xf9b8, 0xf695, 0xf374, 0xf055, 0xed38,
- 0xea1e, 0xe707, 0xe3f4, 0xe0e6, 0xdddc, 0xdad8, 0xd7d9, 0xd4e1,
- 0xd1ef, 0xcf04, 0xcc21, 0xc946, 0xc673, 0xc3a9, 0xc0e9, 0xbe32,
- 0xbb85, 0xb8e3, 0xb64c, 0xb3c0, 0xb140, 0xaecc, 0xac65, 0xaa0a,
- 0xa7bd, 0xa57e, 0xa34c, 0xa129, 0x9f14, 0x9d0e, 0x9b17, 0x9930,
- 0x9759, 0x9592, 0x93dc, 0x9236, 0x90a1, 0x8f1d, 0x8dab, 0x8c4a,
- 0x8afb, 0x89be, 0x8894, 0x877b, 0x8676, 0x8583, 0x84a3, 0x83d6,
- 0x831c, 0x8276, 0x81e2, 0x8163, 0x80f6, 0x809e, 0x8059, 0x8027,
- 0x800a, 0x8000, 0x800a, 0x8027, 0x8059, 0x809e, 0x80f6, 0x8163,
- 0x81e2, 0x8276, 0x831c, 0x83d6, 0x84a3, 0x8583, 0x8676, 0x877b,
- 0x8894, 0x89be, 0x8afb, 0x8c4a, 0x8dab, 0x8f1d, 0x90a1, 0x9236,
- 0x93dc, 0x9592, 0x9759, 0x9930, 0x9b17, 0x9d0e, 0x9f14, 0xa129,
- 0xa34c, 0xa57e, 0xa7bd, 0xaa0a, 0xac65, 0xaecc, 0xb140, 0xb3c0,
- 0xb64c, 0xb8e3, 0xbb85, 0xbe32, 0xc0e9, 0xc3a9, 0xc673, 0xc946,
- 0xcc21, 0xcf04, 0xd1ef, 0xd4e1, 0xd7d9, 0xdad8, 0xdddc, 0xe0e6,
- 0xe3f4, 0xe707, 0xea1e, 0xed38, 0xf055, 0xf374, 0xf695, 0xf9b8,
- 0xfcdc, 0x0, 0x324
-};
-
-
/**
* @brief Fast approximation to the trigonometric sine function for Q15 data.
* @param[in] x Scaled input value in radians.
@@ -117,98 +61,26 @@
q15_t arm_sin_q15(
q15_t x)
{
- q31_t sinVal; /* Temporary variables output */
- q15_t *tablePtr; /* Pointer to table */
- q15_t fract, in, in2; /* Temporary variables for input, output */
- q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */
- q15_t a, b, c, d; /* Four nearest output values */
- q15_t fractCube, fractSquare; /* Temporary values for fractional value */
- q15_t oneBy6 = 0x1555; /* Fixed point value of 1/6 */
- q15_t tableSpacing = TABLE_SPACING_Q15; /* Table spacing */
- int32_t index; /* Index variable */
-
- in = x;
+ q15_t sinVal; /* Temporary variables for input, output */
+ int32_t index; /* Index variables */
+ q15_t a, b; /* Four nearest output values */
+ q15_t fract; /* Temporary values for fractional values */
/* Calculate the nearest index */
- index = (int32_t) in / tableSpacing;
-
- /* Calculate the nearest value of input */
- in2 = (q15_t) ((index) * tableSpacing);
+ index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;
/* Calculation of fractional value */
- fract = (in - in2) << 8;
-
- /* fractSquare = fract * fract */
- fractSquare = (q15_t) ((fract * fract) >> 15);
-
- /* fractCube = fract * fract * fract */
- fractCube = (q15_t) ((fractSquare * fract) >> 15);
+ fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
- }
-
- /* Initialise table pointer */
- tablePtr = (q15_t *) & sinTableQ15[index];
-
- /* Cubic interpolation process */
- /* Calculation of wa */
- /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAA)*fract; */
- wa = (q31_t) oneBy6 *fractCube;
- wa += (q31_t) 0x2AAA *fract;
- wa = -(wa >> 15);
- wa += ((q31_t) fractSquare >> 1u);
-
- /* Read first nearest value of output from the sin table */
- a = *tablePtr++;
-
- /* sinVal = a * wa */
- sinVal = a * wa;
+ /* Read two nearest values of input value from the sin table */
+ a = sinTable_q15[index];
+ b = sinTable_q15[index+1];
- /* Calculation of wb */
- wb = (((q31_t) fractCube >> 1u) - (q31_t) fractSquare) -
- (((q31_t) fract >> 1u) - 0x7FFF);
-
- /* Read second nearest value of output from the sin table */
- b = *tablePtr++;
-
- /* sinVal += b*wb */
- sinVal += b * wb;
-
-
- /* Calculation of wc */
- wc = -(q31_t) fractCube + fractSquare;
- wc = (wc >> 1u) + fract;
-
- /* Read third nearest value of output from the sin table */
- c = *tablePtr++;
+ /* Linear interpolation process */
+ sinVal = (q31_t)(0x8000-fract)*a >> 16;
+ sinVal = (q15_t)((((q31_t)sinVal << 16) + ((q31_t)fract*b)) >> 16);
- /* sinVal += c*wc */
- sinVal += c * wc;
-
- /* Calculation of wd */
- /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */
- fractCube = fractCube - fract;
- wd = ((q15_t) (((q31_t) oneBy6 * fractCube) >> 15));
-
- /* Read fourth nearest value of output from the sin table */
- d = *tablePtr++;
-
- /* sinVal += d*wd; */
- sinVal += d * wd;
-
- /* Convert output value in 1.15(q15) format and saturate */
- sinVal = __SSAT((sinVal >> 15), 16);
-
- /* Return the output value in 1.15(q15) format */
- return ((q15_t) sinVal);
-
+ return sinVal << 1;
}
/**
--- a/cmsis_dsp/FastMathFunctions/arm_sin_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_sin_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_sin_q31.c
@@ -39,6 +39,7 @@
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
/**
* @ingroup groupFastMath
@@ -50,94 +51,6 @@
*/
/**
- * \par
- * Table values are in Q31 (1.31 fixed-point format) and generation is done in
- * three steps. First, generate sin values in floating point:
- * <pre>
- * tableSize = 256;
- * for(n = -1; n < (tableSize + 1); n++)
- * {
- * sinTable[n+1]= sin(2*pi*n/tableSize);
- * } </pre>
- * where pi value is 3.14159265358979
- * \par
- * Second, convert floating-point to Q31 (Fixed point):
- * (sinTable[i] * pow(2, 31))
- * \par
- * Finally, round to the nearest integer value:
- * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
- */
-
-static const q31_t sinTableQ31[259] = {
- 0xfcdbd541, 0x0, 0x3242abf, 0x647d97c, 0x96a9049, 0xc8bd35e, 0xfab272b,
- 0x12c8106f,
- 0x15e21445, 0x18f8b83c, 0x1c0b826a, 0x1f19f97b, 0x2223a4c5, 0x25280c5e,
- 0x2826b928, 0x2b1f34eb,
- 0x2e110a62, 0x30fbc54d, 0x33def287, 0x36ba2014, 0x398cdd32, 0x3c56ba70,
- 0x3f1749b8, 0x41ce1e65,
- 0x447acd50, 0x471cece7, 0x49b41533, 0x4c3fdff4, 0x4ebfe8a5, 0x5133cc94,
- 0x539b2af0, 0x55f5a4d2,
- 0x5842dd54, 0x5a82799a, 0x5cb420e0, 0x5ed77c8a, 0x60ec3830, 0x62f201ac,
- 0x64e88926, 0x66cf8120,
- 0x68a69e81, 0x6a6d98a4, 0x6c242960, 0x6dca0d14, 0x6f5f02b2, 0x70e2cbc6,
- 0x72552c85, 0x73b5ebd1,
- 0x7504d345, 0x7641af3d, 0x776c4edb, 0x78848414, 0x798a23b1, 0x7a7d055b,
- 0x7b5d039e, 0x7c29fbee,
- 0x7ce3ceb2, 0x7d8a5f40, 0x7e1d93ea, 0x7e9d55fc, 0x7f0991c4, 0x7f62368f,
- 0x7fa736b4, 0x7fd8878e,
- 0x7ff62182, 0x7fffffff, 0x7ff62182, 0x7fd8878e, 0x7fa736b4, 0x7f62368f,
- 0x7f0991c4, 0x7e9d55fc,
- 0x7e1d93ea, 0x7d8a5f40, 0x7ce3ceb2, 0x7c29fbee, 0x7b5d039e, 0x7a7d055b,
- 0x798a23b1, 0x78848414,
- 0x776c4edb, 0x7641af3d, 0x7504d345, 0x73b5ebd1, 0x72552c85, 0x70e2cbc6,
- 0x6f5f02b2, 0x6dca0d14,
- 0x6c242960, 0x6a6d98a4, 0x68a69e81, 0x66cf8120, 0x64e88926, 0x62f201ac,
- 0x60ec3830, 0x5ed77c8a,
- 0x5cb420e0, 0x5a82799a, 0x5842dd54, 0x55f5a4d2, 0x539b2af0, 0x5133cc94,
- 0x4ebfe8a5, 0x4c3fdff4,
- 0x49b41533, 0x471cece7, 0x447acd50, 0x41ce1e65, 0x3f1749b8, 0x3c56ba70,
- 0x398cdd32, 0x36ba2014,
- 0x33def287, 0x30fbc54d, 0x2e110a62, 0x2b1f34eb, 0x2826b928, 0x25280c5e,
- 0x2223a4c5, 0x1f19f97b,
- 0x1c0b826a, 0x18f8b83c, 0x15e21445, 0x12c8106f, 0xfab272b, 0xc8bd35e,
- 0x96a9049, 0x647d97c,
- 0x3242abf, 0x0, 0xfcdbd541, 0xf9b82684, 0xf6956fb7, 0xf3742ca2, 0xf054d8d5,
- 0xed37ef91,
- 0xea1debbb, 0xe70747c4, 0xe3f47d96, 0xe0e60685, 0xdddc5b3b, 0xdad7f3a2,
- 0xd7d946d8, 0xd4e0cb15,
- 0xd1eef59e, 0xcf043ab3, 0xcc210d79, 0xc945dfec, 0xc67322ce, 0xc3a94590,
- 0xc0e8b648, 0xbe31e19b,
- 0xbb8532b0, 0xb8e31319, 0xb64beacd, 0xb3c0200c, 0xb140175b, 0xaecc336c,
- 0xac64d510, 0xaa0a5b2e,
- 0xa7bd22ac, 0xa57d8666, 0xa34bdf20, 0xa1288376, 0x9f13c7d0, 0x9d0dfe54,
- 0x9b1776da, 0x99307ee0,
- 0x9759617f, 0x9592675c, 0x93dbd6a0, 0x9235f2ec, 0x90a0fd4e, 0x8f1d343a,
- 0x8daad37b, 0x8c4a142f,
- 0x8afb2cbb, 0x89be50c3, 0x8893b125, 0x877b7bec, 0x8675dc4f, 0x8582faa5,
- 0x84a2fc62, 0x83d60412,
- 0x831c314e, 0x8275a0c0, 0x81e26c16, 0x8162aa04, 0x80f66e3c, 0x809dc971,
- 0x8058c94c, 0x80277872,
- 0x8009de7e, 0x80000000, 0x8009de7e, 0x80277872, 0x8058c94c, 0x809dc971,
- 0x80f66e3c, 0x8162aa04,
- 0x81e26c16, 0x8275a0c0, 0x831c314e, 0x83d60412, 0x84a2fc62, 0x8582faa5,
- 0x8675dc4f, 0x877b7bec,
- 0x8893b125, 0x89be50c3, 0x8afb2cbb, 0x8c4a142f, 0x8daad37b, 0x8f1d343a,
- 0x90a0fd4e, 0x9235f2ec,
- 0x93dbd6a0, 0x9592675c, 0x9759617f, 0x99307ee0, 0x9b1776da, 0x9d0dfe54,
- 0x9f13c7d0, 0xa1288376,
- 0xa34bdf20, 0xa57d8666, 0xa7bd22ac, 0xaa0a5b2e, 0xac64d510, 0xaecc336c,
- 0xb140175b, 0xb3c0200c,
- 0xb64beacd, 0xb8e31319, 0xbb8532b0, 0xbe31e19b, 0xc0e8b648, 0xc3a94590,
- 0xc67322ce, 0xc945dfec,
- 0xcc210d79, 0xcf043ab3, 0xd1eef59e, 0xd4e0cb15, 0xd7d946d8, 0xdad7f3a2,
- 0xdddc5b3b, 0xe0e60685,
- 0xe3f47d96, 0xe70747c4, 0xea1debbb, 0xed37ef91, 0xf054d8d5, 0xf3742ca2,
- 0xf6956fb7, 0xf9b82684,
- 0xfcdbd541, 0x0, 0x3242abf
-};
-
-
-/**
* @brief Fast approximation to the trigonometric sine function for Q31 data.
* @param[in] x Scaled input value in radians.
* @return sin(x).
@@ -147,100 +60,26 @@
q31_t arm_sin_q31(
q31_t x)
{
- q31_t sinVal, in, in2; /* Temporary variables for input, output */
+ q31_t sinVal; /* Temporary variables for input, output */
int32_t index; /* Index variables */
- q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */
- q31_t a, b, c, d; /* Four nearest output values */
- q31_t *tablePtr; /* Pointer to table */
- q31_t fract, fractCube, fractSquare; /* Temporary values for fractional values */
- q31_t oneBy6 = 0x15555555; /* Fixed point value of 1/6 */
- q31_t tableSpacing = TABLE_SPACING_Q31; /* Table spacing */
- q31_t temp; /* Temporary variable for intermediate process */
-
- in = x;
+ q31_t a, b; /* Four nearest output values */
+ q31_t fract; /* Temporary values for fractional values */
/* Calculate the nearest index */
- index = (uint32_t) in / (uint32_t) tableSpacing;
-
- /* Calculate the nearest value of input */
- in2 = (q31_t) index *tableSpacing;
+ index = (uint32_t)x >> FAST_MATH_Q31_SHIFT;
/* Calculation of fractional value */
- fract = (in - in2) << 8;
-
- /* fractSquare = fract * fract */
- fractSquare = ((q31_t) (((q63_t) fract * fract) >> 32));
- fractSquare = fractSquare << 1;
-
- /* fractCube = fract * fract * fract */
- fractCube = ((q31_t) (((q63_t) fractSquare * fract) >> 32));
- fractCube = fractCube << 1;
+ fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9;
- /* Checking min and max index of table */
- if(index < 0)
- {
- index = 0;
- }
- else if(index > 256)
- {
- index = 256;
- }
-
- /* Initialise table pointer */
- tablePtr = (q31_t *) & sinTableQ31[index];
-
- /* Cubic interpolation process */
- /* Calculation of wa */
- /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAAAAAA)*fract; */
- wa = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32));
- temp = 0x2AAAAAAA;
- wa = (q31_t) ((((q63_t) wa << 32) + ((q63_t) temp * fract)) >> 32);
- wa = -(wa << 1u);
- wa += (fractSquare >> 1u);
-
- /* Read first nearest value of output from the sin table */
- a = *tablePtr++;
-
- /* sinVal = a*wa */
- sinVal = ((q31_t) (((q63_t) a * wa) >> 32));
+ /* Read two nearest values of input value from the sin table */
+ a = sinTable_q31[index];
+ b = sinTable_q31[index+1];
- /* q31(1.31) Fixed point value of 1 */
- temp = 0x7FFFFFFF;
-
- /* Calculation of wb */
- wb = ((fractCube >> 1u) - (fractSquare + (fract >> 1u))) + temp;
-
- /* Read second nearest value of output from the sin table */
- b = *tablePtr++;
-
- /* sinVal += b*wb */
- sinVal = (q31_t) ((((q63_t) sinVal << 32) + (q63_t) b * (wb)) >> 32);
-
- /* Calculation of wc */
- wc = -fractCube + fractSquare;
- wc = (wc >> 1u) + fract;
-
- /* Read third nearest value of output from the sin table */
- c = *tablePtr++;
+ /* Linear interpolation process */
+ sinVal = (q63_t)(0x80000000-fract)*a >> 32;
+ sinVal = (q31_t)((((q63_t)sinVal << 32) + ((q63_t)fract*b)) >> 32);
- /* sinVal += c*wc */
- sinVal = (q31_t) ((((q63_t) sinVal << 32) + ((q63_t) c * wc)) >> 32);
-
- /* Calculation of wd */
- /* wd = (oneBy6) * fractCube - (oneBy6) * fract; */
- fractCube = fractCube - fract;
- wd = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32));
- wd = (wd << 1u);
-
- /* Read fourth nearest value of output from the sin table */
- d = *tablePtr++;
-
- /* sinVal += d*wd; */
- sinVal = (q31_t) ((((q63_t) sinVal << 32) + ((q63_t) d * wd)) >> 32);
-
- /* convert sinVal in 2.30 format to 1.31 format */
- return (__QADD(sinVal, sinVal));
-
+ return sinVal << 1;
}
/**
--- a/cmsis_dsp/FastMathFunctions/arm_sqrt_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_sqrt_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_sqrt_q15.c
@@ -94,13 +94,13 @@
/* Store the number for later use */
temp1 = number;
- /*Convert to float */
+ /* Convert to float */
temp_float1 = number * 3.051757812500000e-005f;
/*Store as integer */
tempconv.floatval = temp_float1;
bits_val1 = tempconv.fracval;
/* Subtract the shifted value from the magic number to give intial guess */
- bits_val1 = 0x5f3759df - (bits_val1 >> 1); // gives initial guess
+ bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */
/* Store as float */
tempconv.fracval = bits_val1;
temp_float1 = tempconv.floatval;
--- a/cmsis_dsp/FastMathFunctions/arm_sqrt_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FastMathFunctions/arm_sqrt_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_sqrt_q31.c
@@ -98,7 +98,7 @@
tempconv.floatval = temp_float1;
bits_val1 = tempconv.fracval;
/* Subtract the shifted value from the magic number to give intial guess */
- bits_val1 = 0x5f3759df - (bits_val1 >> 1); // gives initial guess
+ bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */
/* Store as float */
tempconv.fracval = bits_val1;
temp_float1 = tempconv.floatval;
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_32x64_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_biquad_cascade_df1_32x64_q31.c
@@ -438,10 +438,10 @@
/* Store the output in the destination buffer in 1.31 format. */
*pOut++ = acc_h;
- //Yn1 = acc << shift;
+ /* Yn1 = acc << shift; */
/* Store the output in the destination buffer in 1.31 format. */
-// *pOut++ = (q31_t) (acc >> (32 - shift));
+/* *pOut++ = (q31_t) (acc >> (32 - shift)); */
/* decrement the loop counter */
sample--;
@@ -530,10 +530,10 @@
/* Store the output in the destination buffer in 1.31 format. */
*pOut++ = acc_h;
- //Yn1 = acc << shift;
+ /* Yn1 = acc << shift; */
/* Store the output in the destination buffer in 1.31 format. */
- //*pOut++ = (q31_t) (acc >> (32 - shift));
+ /* *pOut++ = (q31_t) (acc >> (32 - shift)); */
/* decrement the loop counter */
sample--;
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_fast_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. October 2015
+* $Revision: V.1.4.5 a
*
* Project: CMSIS DSP Library
* Title: arm_biquad_cascade_df1_fast_q31.c
@@ -124,19 +124,19 @@
/* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
/* acc = b0 * x[n] */
- //acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);
+ /*acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);*/
mult_32x32_keep32_R(acc, b1, Xn1);
/* acc += b1 * x[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);*/
multAcc_32x32_keep32_R(acc, b0, Xn);
/* acc += b[2] * x[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, b2, Xn2);
/* acc += a1 * y[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, a1, Yn1);
/* acc += a2 * y[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, a2, Yn2);
/* The result is converted to 1.31 , Yn2 variable is reused */
@@ -150,19 +150,19 @@
/* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
/* acc = b0 * x[n] */
- //acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);
+ /*acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);*/
mult_32x32_keep32_R(acc, b0, Xn2);
/* acc += b1 * x[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);*/
multAcc_32x32_keep32_R(acc, b1, Xn);
/* acc += b[2] * x[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, b2, Xn1);
/* acc += a1 * y[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, a1, Yn2);
/* acc += a2 * y[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, a2, Yn1);
/* The result is converted to 1.31, Yn1 variable is reused */
@@ -176,19 +176,19 @@
/* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
/* acc = b0 * x[n] */
- //acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);
+ /*acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);*/
mult_32x32_keep32_R(acc, b0, Xn1);
/* acc += b1 * x[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, b1, Xn2);
/* acc += b[2] * x[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);*/
multAcc_32x32_keep32_R(acc, b2, Xn);
/* acc += a1 * y[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, a1, Yn1);
/* acc += a2 * y[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, a2, Yn2);
/* The result is converted to 1.31, Yn2 variable is reused */
@@ -203,19 +203,19 @@
/* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
/* acc = b0 * x[n] */
- //acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);
+ /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/
mult_32x32_keep32_R(acc, b0, Xn);
/* acc += b1 * x[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, b1, Xn1);
/* acc += b[2] * x[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, b2, Xn2);
/* acc += a1 * y[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, a1, Yn2);
/* acc += a2 * y[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, a2, Yn1);
/* Every time after the output is computed state should be updated. */
@@ -248,19 +248,19 @@
/* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */
/* acc = b0 * x[n] */
- //acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);
+ /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/
mult_32x32_keep32_R(acc, b0, Xn);
/* acc += b1 * x[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, b1, Xn1);
/* acc += b[2] * x[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, b2, Xn2);
/* acc += a1 * y[n-1] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/
multAcc_32x32_keep32_R(acc, a1, Yn1);
/* acc += a2 * y[n-2] */
- //acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);
+ /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/
multAcc_32x32_keep32_R(acc, a2, Yn2);
/* The result is converted to 1.31 */
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df1_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df1_q31.c @@ -90,7 +90,7 @@ uint32_t sample, stage = S->numStages; /* loop counters */ -#ifndef ARM_MATH_CM0_FAMILY +#ifndef ARM_MATH_CM0_FAMILY_FAMILY q31_t acc_l, acc_h; /* temporary output variables */ @@ -394,9 +394,12 @@ } while(--stage); -#endif /* #ifndef ARM_MATH_CM0_FAMILY */ +#endif /* #ifndef ARM_MATH_CM0_FAMILY_FAMILY */ } + + + /** * @} end of BiquadCascadeDF1 group */
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,7 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_biquad_cascade_df2T_f32.c
@@ -168,7 +169,307 @@
float32_t d1, d2; /* state variables */
uint32_t sample, stage = S->numStages; /* loop counters */
-#ifndef ARM_MATH_CM0_FAMILY_FAMILY
+#if defined(ARM_MATH_CM7)
+
+ float32_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */
+ float32_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16;
+ float32_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */
+ float32_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16;
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = pCoeffs[0];
+ b1 = pCoeffs[1];
+ b2 = pCoeffs[2];
+ a1 = pCoeffs[3];
+ /* Apply loop unrolling and compute 16 output values simultaneously. */
+ sample = blockSize >> 4u;
+ a2 = pCoeffs[4];
+
+ /*Reading the state values */
+ d1 = pState[0];
+ d2 = pState[1];
+
+ pCoeffs += 5u;
+
+
+ /* First part of the processing with loop unrolling. Compute 16 outputs at a time.
+ ** a second loop below computes the remaining 1 to 15 samples. */
+ while(sample > 0u) {
+
+ /* y[n] = b0 * x[n] + d1 */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ /* d2 = b2 * x[n] + a2 * y[n] */
+
+ /* Read the first 2 inputs. 2 cycles */
+ Xn1 = pIn[0 ];
+ Xn2 = pIn[1 ];
+
+ /* Sample 1. 5 cycles */
+ Xn3 = pIn[2 ];
+ acc1 = b0 * Xn1 + d1;
+
+ Xn4 = pIn[3 ];
+ d1 = b1 * Xn1 + d2;
+
+ Xn5 = pIn[4 ];
+ d2 = b2 * Xn1;
+
+ Xn6 = pIn[5 ];
+ d1 += a1 * acc1;
+
+ Xn7 = pIn[6 ];
+ d2 += a2 * acc1;
+
+ /* Sample 2. 5 cycles */
+ Xn8 = pIn[7 ];
+ acc2 = b0 * Xn2 + d1;
+
+ Xn9 = pIn[8 ];
+ d1 = b1 * Xn2 + d2;
+
+ Xn10 = pIn[9 ];
+ d2 = b2 * Xn2;
+
+ Xn11 = pIn[10];
+ d1 += a1 * acc2;
+
+ Xn12 = pIn[11];
+ d2 += a2 * acc2;
+
+ /* Sample 3. 5 cycles */
+ Xn13 = pIn[12];
+ acc3 = b0 * Xn3 + d1;
+
+ Xn14 = pIn[13];
+ d1 = b1 * Xn3 + d2;
+
+ Xn15 = pIn[14];
+ d2 = b2 * Xn3;
+
+ Xn16 = pIn[15];
+ d1 += a1 * acc3;
+
+ pIn += 16;
+ d2 += a2 * acc3;
+
+ /* Sample 4. 5 cycles */
+ acc4 = b0 * Xn4 + d1;
+ d1 = b1 * Xn4 + d2;
+ d2 = b2 * Xn4;
+ d1 += a1 * acc4;
+ d2 += a2 * acc4;
+
+ /* Sample 5. 5 cycles */
+ acc5 = b0 * Xn5 + d1;
+ d1 = b1 * Xn5 + d2;
+ d2 = b2 * Xn5;
+ d1 += a1 * acc5;
+ d2 += a2 * acc5;
+
+ /* Sample 6. 5 cycles */
+ acc6 = b0 * Xn6 + d1;
+ d1 = b1 * Xn6 + d2;
+ d2 = b2 * Xn6;
+ d1 += a1 * acc6;
+ d2 += a2 * acc6;
+
+ /* Sample 7. 5 cycles */
+ acc7 = b0 * Xn7 + d1;
+ d1 = b1 * Xn7 + d2;
+ d2 = b2 * Xn7;
+ d1 += a1 * acc7;
+ d2 += a2 * acc7;
+
+ /* Sample 8. 5 cycles */
+ acc8 = b0 * Xn8 + d1;
+ d1 = b1 * Xn8 + d2;
+ d2 = b2 * Xn8;
+ d1 += a1 * acc8;
+ d2 += a2 * acc8;
+
+ /* Sample 9. 5 cycles */
+ acc9 = b0 * Xn9 + d1;
+ d1 = b1 * Xn9 + d2;
+ d2 = b2 * Xn9;
+ d1 += a1 * acc9;
+ d2 += a2 * acc9;
+
+ /* Sample 10. 5 cycles */
+ acc10 = b0 * Xn10 + d1;
+ d1 = b1 * Xn10 + d2;
+ d2 = b2 * Xn10;
+ d1 += a1 * acc10;
+ d2 += a2 * acc10;
+
+ /* Sample 11. 5 cycles */
+ acc11 = b0 * Xn11 + d1;
+ d1 = b1 * Xn11 + d2;
+ d2 = b2 * Xn11;
+ d1 += a1 * acc11;
+ d2 += a2 * acc11;
+
+ /* Sample 12. 5 cycles */
+ acc12 = b0 * Xn12 + d1;
+ d1 = b1 * Xn12 + d2;
+ d2 = b2 * Xn12;
+ d1 += a1 * acc12;
+ d2 += a2 * acc12;
+
+ /* Sample 13. 5 cycles */
+ acc13 = b0 * Xn13 + d1;
+ d1 = b1 * Xn13 + d2;
+ d2 = b2 * Xn13;
+
+ pOut[0 ] = acc1 ;
+ d1 += a1 * acc13;
+
+ pOut[1 ] = acc2 ;
+ d2 += a2 * acc13;
+
+ /* Sample 14. 5 cycles */
+ pOut[2 ] = acc3 ;
+ acc14 = b0 * Xn14 + d1;
+
+ pOut[3 ] = acc4 ;
+ d1 = b1 * Xn14 + d2;
+
+ pOut[4 ] = acc5 ;
+ d2 = b2 * Xn14;
+
+ pOut[5 ] = acc6 ;
+ d1 += a1 * acc14;
+
+ pOut[6 ] = acc7 ;
+ d2 += a2 * acc14;
+
+ /* Sample 15. 5 cycles */
+ pOut[7 ] = acc8 ;
+ pOut[8 ] = acc9 ;
+ acc15 = b0 * Xn15 + d1;
+
+ pOut[9 ] = acc10;
+ d1 = b1 * Xn15 + d2;
+
+ pOut[10] = acc11;
+ d2 = b2 * Xn15;
+
+ pOut[11] = acc12;
+ d1 += a1 * acc15;
+
+ pOut[12] = acc13;
+ d2 += a2 * acc15;
+
+ /* Sample 16. 5 cycles */
+ pOut[13] = acc14;
+ acc16 = b0 * Xn16 + d1;
+
+ pOut[14] = acc15;
+ d1 = b1 * Xn16 + d2;
+
+ pOut[15] = acc16;
+ d2 = b2 * Xn16;
+
+ sample--;
+ d1 += a1 * acc16;
+
+ pOut += 16;
+ d2 += a2 * acc16;
+ }
+
+ sample = blockSize & 0xFu;
+ while(sample > 0u) {
+ Xn1 = *pIn;
+ acc1 = b0 * Xn1 + d1;
+
+ pIn++;
+ d1 = b1 * Xn1 + d2;
+
+ *pOut = acc1;
+ d2 = b2 * Xn1;
+
+ pOut++;
+ d1 += a1 * acc1;
+
+ sample--;
+ d2 += a2 * acc1;
+ }
+
+ /* Store the updated state variables back into the state array */
+ pState[0] = d1;
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ pState[1] = d2;
+ /* decrement the loop counter */
+ stage--;
+
+ pState += 2u;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ } while(stage > 0u);
+
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+ /* Run the below code for Cortex-M0 */
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = *pCoeffs++;
+ b1 = *pCoeffs++;
+ b2 = *pCoeffs++;
+ a1 = *pCoeffs++;
+ a2 = *pCoeffs++;
+
+ /*Reading the state values */
+ d1 = pState[0];
+ d2 = pState[1];
+
+
+ sample = blockSize;
+
+ while(sample > 0u)
+ {
+ /* Read the input */
+ Xn1 = *pIn++;
+
+ /* y[n] = b0 * x[n] + d1 */
+ acc1 = (b0 * Xn1) + d1;
+
+ /* Store the result in the accumulator in the destination buffer. */
+ *pOut++ = acc1;
+
+ /* Every time after the output is computed state should be updated. */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;
+
+ /* d2 = b2 * x[n] + a2 * y[n] */
+ d2 = (b2 * Xn1) + (a2 * acc1);
+
+ /* decrement the loop counter */
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ *pState++ = d1;
+ *pState++ = d2;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ /* decrement the loop counter */
+ stage--;
+
+ } while(stage > 0u);
+
+#else
float32_t Xn2, Xn3, Xn4; /* Input State variables */
float32_t acc2, acc3, acc4; /* accumulator */
@@ -253,7 +554,7 @@
pOut[1] = acc2;
pOut[2] = acc3;
pOut[3] = acc4;
- pOut += 4;
+ pOut += 4;
sample--;
}
@@ -292,64 +593,7 @@
} while(stage > 0u);
-#else
-
- /* Run the below code for Cortex-M0 */
-
- do
- {
- /* Reading the coefficients */
- b0 = *pCoeffs++;
- b1 = *pCoeffs++;
- b2 = *pCoeffs++;
- a1 = *pCoeffs++;
- a2 = *pCoeffs++;
-
- /*Reading the state values */
- d1 = pState[0];
- d2 = pState[1];
-
-
- sample = blockSize;
-
- while(sample > 0u)
- {
- /* Read the input */
- Xn1 = *pIn++;
-
- /* y[n] = b0 * x[n] + d1 */
- acc1 = (b0 * Xn1) + d1;
-
- /* Store the result in the accumulator in the destination buffer. */
- *pOut++ = acc1;
-
- /* Every time after the output is computed state should be updated. */
- /* d1 = b1 * x[n] + a1 * y[n] + d2 */
- d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;
-
- /* d2 = b2 * x[n] + a2 * y[n] */
- d2 = (b2 * Xn1) + (a2 * acc1);
-
- /* decrement the loop counter */
- sample--;
- }
-
- /* Store the updated state variables back into the state array */
- *pState++ = d1;
- *pState++ = d2;
-
- /* The current stage input is given as the output to the next stage */
- pIn = pDst;
-
- /*Reset the output working pointer */
- pOut = pDst;
-
- /* decrement the loop counter */
- stage--;
-
- } while(stage > 0u);
-
-#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+#endif
}
LOW_OPTIMIZATION_EXIT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_f64.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,603 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_biquad_cascade_df2T_f64.c
+*
+* Description: Processing function for the floating-point transposed
+* direct form II Biquad cascade filter.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**
+* @ingroup groupFilters
+*/
+
+/**
+* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure
+*
+* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.
+* The filters are implemented as a cascade of second order Biquad sections.
+* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.
+* Only floating-point data is supported.
+*
+* This function operate on blocks of input and output data and each call to the function
+* processes <code>blockSize</code> samples through the filter.
+* <code>pSrc</code> points to the array of input data and
+* <code>pDst</code> points to the array of output data.
+* Both arrays contain <code>blockSize</code> values.
+*
+* \par Algorithm
+* Each Biquad stage implements a second order filter using the difference equation:
+* <pre>
+* y[n] = b0 * x[n] + d1
+* d1 = b1 * x[n] + a1 * y[n] + d2
+* d2 = b2 * x[n] + a2 * y[n]
+* </pre>
+* where d1 and d2 represent the two state values.
+*
+* \par
+* A Biquad filter using a transposed Direct Form II structure is shown below.
+* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad"
+* Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.
+* Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.
+* Pay careful attention to the sign of the feedback coefficients.
+* Some design tools flip the sign of the feedback coefficients:
+* <pre>
+* y[n] = b0 * x[n] + d1;
+* d1 = b1 * x[n] - a1 * y[n] + d2;
+* d2 = b2 * x[n] - a2 * y[n];
+* </pre>
+* In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.
+*
+* \par
+* Higher order filters are realized as a cascade of second order sections.
+* <code>numStages</code> refers to the number of second order stages used.
+* For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.
+* A 9th order filter would be realized with <code>numStages=5</code> second order stages with the
+* coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).
+*
+* \par
+* <code>pState</code> points to the state variable array.
+* Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.
+* The state variables are arranged in the <code>pState</code> array as:
+* <pre>
+* {d11, d12, d21, d22, ...}
+* </pre>
+* where <code>d1x</code> refers to the state variables for the first Biquad and
+* <code>d2x</code> refers to the state variables for the second Biquad.
+* The state array has a total length of <code>2*numStages</code> values.
+* The state variables are updated after each block of data is processed; the coefficients are untouched.
+*
+* \par
+* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.
+* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.
+* That is why the Direct Form I structure supports Q15 and Q31 data types.
+* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.
+* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.
+* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.
+*
+* \par Instance Structure
+* The coefficients and state variables for a filter are stored together in an instance data structure.
+* A separate instance structure must be defined for each filter.
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.
+*
+* \par Init Functions
+* There is also an associated initialization function.
+* The initialization function performs following operations:
+* - Sets the values of the internal structure fields.
+* - Zeros out the values in the state buffer.
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numStages, pCoeffs, pState. Also set all of the values in pState to zero.
+*
+* \par
+* Use of the initialization function is optional.
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.
+* To place an instance structure into a const data section, the instance structure must be manually initialized.
+* Set the values in the state buffer to zeros before static initialization.
+* For example, to statically initialize the instance structure use
+* <pre>
+* arm_biquad_cascade_df2T_instance_f64 S1 = {numStages, pState, pCoeffs};
+* </pre>
+* where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer.
+* <code>pCoeffs</code> is the address of the coefficient buffer;
+*
+*/
+
+/**
+* @addtogroup BiquadCascadeDF2T
+* @{
+*/
+
+/**
+* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+* @param[in] *S points to an instance of the filter data structure.
+* @param[in] *pSrc points to the block of input data.
+* @param[out] *pDst points to the block of output data
+* @param[in] blockSize number of samples to process.
+* @return none.
+*/
+
+
+LOW_OPTIMIZATION_ENTER
+void arm_biquad_cascade_df2T_f64(
+const arm_biquad_cascade_df2T_instance_f64 * S,
+float64_t * pSrc,
+float64_t * pDst,
+uint32_t blockSize)
+{
+
+ float64_t *pIn = pSrc; /* source pointer */
+ float64_t *pOut = pDst; /* destination pointer */
+ float64_t *pState = S->pState; /* State pointer */
+ float64_t *pCoeffs = S->pCoeffs; /* coefficient pointer */
+ float64_t acc1; /* accumulator */
+ float64_t b0, b1, b2, a1, a2; /* Filter coefficients */
+ float64_t Xn1; /* temporary input */
+ float64_t d1, d2; /* state variables */
+ uint32_t sample, stage = S->numStages; /* loop counters */
+
+#if defined(ARM_MATH_CM7)
+
+ float64_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */
+ float64_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16;
+ float64_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */
+ float64_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16;
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = pCoeffs[0];
+ b1 = pCoeffs[1];
+ b2 = pCoeffs[2];
+ a1 = pCoeffs[3];
+ /* Apply loop unrolling and compute 16 output values simultaneously. */
+ sample = blockSize >> 4u;
+ a2 = pCoeffs[4];
+
+ /*Reading the state values */
+ d1 = pState[0];
+ d2 = pState[1];
+
+ pCoeffs += 5u;
+
+
+ /* First part of the processing with loop unrolling. Compute 16 outputs at a time.
+ ** a second loop below computes the remaining 1 to 15 samples. */
+ while(sample > 0u) {
+
+ /* y[n] = b0 * x[n] + d1 */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ /* d2 = b2 * x[n] + a2 * y[n] */
+
+ /* Read the first 2 inputs. 2 cycles */
+ Xn1 = pIn[0 ];
+ Xn2 = pIn[1 ];
+
+ /* Sample 1. 5 cycles */
+ Xn3 = pIn[2 ];
+ acc1 = b0 * Xn1 + d1;
+
+ Xn4 = pIn[3 ];
+ d1 = b1 * Xn1 + d2;
+
+ Xn5 = pIn[4 ];
+ d2 = b2 * Xn1;
+
+ Xn6 = pIn[5 ];
+ d1 += a1 * acc1;
+
+ Xn7 = pIn[6 ];
+ d2 += a2 * acc1;
+
+ /* Sample 2. 5 cycles */
+ Xn8 = pIn[7 ];
+ acc2 = b0 * Xn2 + d1;
+
+ Xn9 = pIn[8 ];
+ d1 = b1 * Xn2 + d2;
+
+ Xn10 = pIn[9 ];
+ d2 = b2 * Xn2;
+
+ Xn11 = pIn[10];
+ d1 += a1 * acc2;
+
+ Xn12 = pIn[11];
+ d2 += a2 * acc2;
+
+ /* Sample 3. 5 cycles */
+ Xn13 = pIn[12];
+ acc3 = b0 * Xn3 + d1;
+
+ Xn14 = pIn[13];
+ d1 = b1 * Xn3 + d2;
+
+ Xn15 = pIn[14];
+ d2 = b2 * Xn3;
+
+ Xn16 = pIn[15];
+ d1 += a1 * acc3;
+
+ pIn += 16;
+ d2 += a2 * acc3;
+
+ /* Sample 4. 5 cycles */
+ acc4 = b0 * Xn4 + d1;
+ d1 = b1 * Xn4 + d2;
+ d2 = b2 * Xn4;
+ d1 += a1 * acc4;
+ d2 += a2 * acc4;
+
+ /* Sample 5. 5 cycles */
+ acc5 = b0 * Xn5 + d1;
+ d1 = b1 * Xn5 + d2;
+ d2 = b2 * Xn5;
+ d1 += a1 * acc5;
+ d2 += a2 * acc5;
+
+ /* Sample 6. 5 cycles */
+ acc6 = b0 * Xn6 + d1;
+ d1 = b1 * Xn6 + d2;
+ d2 = b2 * Xn6;
+ d1 += a1 * acc6;
+ d2 += a2 * acc6;
+
+ /* Sample 7. 5 cycles */
+ acc7 = b0 * Xn7 + d1;
+ d1 = b1 * Xn7 + d2;
+ d2 = b2 * Xn7;
+ d1 += a1 * acc7;
+ d2 += a2 * acc7;
+
+ /* Sample 8. 5 cycles */
+ acc8 = b0 * Xn8 + d1;
+ d1 = b1 * Xn8 + d2;
+ d2 = b2 * Xn8;
+ d1 += a1 * acc8;
+ d2 += a2 * acc8;
+
+ /* Sample 9. 5 cycles */
+ acc9 = b0 * Xn9 + d1;
+ d1 = b1 * Xn9 + d2;
+ d2 = b2 * Xn9;
+ d1 += a1 * acc9;
+ d2 += a2 * acc9;
+
+ /* Sample 10. 5 cycles */
+ acc10 = b0 * Xn10 + d1;
+ d1 = b1 * Xn10 + d2;
+ d2 = b2 * Xn10;
+ d1 += a1 * acc10;
+ d2 += a2 * acc10;
+
+ /* Sample 11. 5 cycles */
+ acc11 = b0 * Xn11 + d1;
+ d1 = b1 * Xn11 + d2;
+ d2 = b2 * Xn11;
+ d1 += a1 * acc11;
+ d2 += a2 * acc11;
+
+ /* Sample 12. 5 cycles */
+ acc12 = b0 * Xn12 + d1;
+ d1 = b1 * Xn12 + d2;
+ d2 = b2 * Xn12;
+ d1 += a1 * acc12;
+ d2 += a2 * acc12;
+
+ /* Sample 13. 5 cycles */
+ acc13 = b0 * Xn13 + d1;
+ d1 = b1 * Xn13 + d2;
+ d2 = b2 * Xn13;
+
+ pOut[0 ] = acc1 ;
+ d1 += a1 * acc13;
+
+ pOut[1 ] = acc2 ;
+ d2 += a2 * acc13;
+
+ /* Sample 14. 5 cycles */
+ pOut[2 ] = acc3 ;
+ acc14 = b0 * Xn14 + d1;
+
+ pOut[3 ] = acc4 ;
+ d1 = b1 * Xn14 + d2;
+
+ pOut[4 ] = acc5 ;
+ d2 = b2 * Xn14;
+
+ pOut[5 ] = acc6 ;
+ d1 += a1 * acc14;
+
+ pOut[6 ] = acc7 ;
+ d2 += a2 * acc14;
+
+ /* Sample 15. 5 cycles */
+ pOut[7 ] = acc8 ;
+ pOut[8 ] = acc9 ;
+ acc15 = b0 * Xn15 + d1;
+
+ pOut[9 ] = acc10;
+ d1 = b1 * Xn15 + d2;
+
+ pOut[10] = acc11;
+ d2 = b2 * Xn15;
+
+ pOut[11] = acc12;
+ d1 += a1 * acc15;
+
+ pOut[12] = acc13;
+ d2 += a2 * acc15;
+
+ /* Sample 16. 5 cycles */
+ pOut[13] = acc14;
+ acc16 = b0 * Xn16 + d1;
+
+ pOut[14] = acc15;
+ d1 = b1 * Xn16 + d2;
+
+ pOut[15] = acc16;
+ d2 = b2 * Xn16;
+
+ sample--;
+ d1 += a1 * acc16;
+
+ pOut += 16;
+ d2 += a2 * acc16;
+ }
+
+ sample = blockSize & 0xFu;
+ while(sample > 0u) {
+ Xn1 = *pIn;
+ acc1 = b0 * Xn1 + d1;
+
+ pIn++;
+ d1 = b1 * Xn1 + d2;
+
+ *pOut = acc1;
+ d2 = b2 * Xn1;
+
+ pOut++;
+ d1 += a1 * acc1;
+
+ sample--;
+ d2 += a2 * acc1;
+ }
+
+ /* Store the updated state variables back into the state array */
+ pState[0] = d1;
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ pState[1] = d2;
+ /* decrement the loop counter */
+ stage--;
+
+ pState += 2u;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ } while(stage > 0u);
+
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+ /* Run the below code for Cortex-M0 */
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = *pCoeffs++;
+ b1 = *pCoeffs++;
+ b2 = *pCoeffs++;
+ a1 = *pCoeffs++;
+ a2 = *pCoeffs++;
+
+ /*Reading the state values */
+ d1 = pState[0];
+ d2 = pState[1];
+
+
+ sample = blockSize;
+
+ while(sample > 0u)
+ {
+ /* Read the input */
+ Xn1 = *pIn++;
+
+ /* y[n] = b0 * x[n] + d1 */
+ acc1 = (b0 * Xn1) + d1;
+
+ /* Store the result in the accumulator in the destination buffer. */
+ *pOut++ = acc1;
+
+ /* Every time after the output is computed state should be updated. */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ d1 = ((b1 * Xn1) + (a1 * acc1)) + d2;
+
+ /* d2 = b2 * x[n] + a2 * y[n] */
+ d2 = (b2 * Xn1) + (a2 * acc1);
+
+ /* decrement the loop counter */
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ *pState++ = d1;
+ *pState++ = d2;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ /* decrement the loop counter */
+ stage--;
+
+ } while(stage > 0u);
+
+#else
+
+ float64_t Xn2, Xn3, Xn4; /* Input State variables */
+ float64_t acc2, acc3, acc4; /* accumulator */
+
+
+ float64_t p0, p1, p2, p3, p4, A1;
+
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+ do
+ {
+ /* Reading the coefficients */
+ b0 = *pCoeffs++;
+ b1 = *pCoeffs++;
+ b2 = *pCoeffs++;
+ a1 = *pCoeffs++;
+ a2 = *pCoeffs++;
+
+
+ /*Reading the state values */
+ d1 = pState[0];
+ d2 = pState[1];
+
+ /* Apply loop unrolling and compute 4 output values simultaneously. */
+ sample = blockSize >> 2u;
+
+ /* First part of the processing with loop unrolling. Compute 4 outputs at a time.
+ ** a second loop below computes the remaining 1 to 3 samples. */
+ while(sample > 0u) {
+
+ /* y[n] = b0 * x[n] + d1 */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ /* d2 = b2 * x[n] + a2 * y[n] */
+
+ /* Read the four inputs */
+ Xn1 = pIn[0];
+ Xn2 = pIn[1];
+ Xn3 = pIn[2];
+ Xn4 = pIn[3];
+ pIn += 4;
+
+ p0 = b0 * Xn1;
+ p1 = b1 * Xn1;
+ acc1 = p0 + d1;
+ p0 = b0 * Xn2;
+ p3 = a1 * acc1;
+ p2 = b2 * Xn1;
+ A1 = p1 + p3;
+ p4 = a2 * acc1;
+ d1 = A1 + d2;
+ d2 = p2 + p4;
+
+ p1 = b1 * Xn2;
+ acc2 = p0 + d1;
+ p0 = b0 * Xn3;
+ p3 = a1 * acc2;
+ p2 = b2 * Xn2;
+ A1 = p1 + p3;
+ p4 = a2 * acc2;
+ d1 = A1 + d2;
+ d2 = p2 + p4;
+
+ p1 = b1 * Xn3;
+ acc3 = p0 + d1;
+ p0 = b0 * Xn4;
+ p3 = a1 * acc3;
+ p2 = b2 * Xn3;
+ A1 = p1 + p3;
+ p4 = a2 * acc3;
+ d1 = A1 + d2;
+ d2 = p2 + p4;
+
+ acc4 = p0 + d1;
+ p1 = b1 * Xn4;
+ p3 = a1 * acc4;
+ p2 = b2 * Xn4;
+ A1 = p1 + p3;
+ p4 = a2 * acc4;
+ d1 = A1 + d2;
+ d2 = p2 + p4;
+
+ pOut[0] = acc1;
+ pOut[1] = acc2;
+ pOut[2] = acc3;
+ pOut[3] = acc4;
+ pOut += 4;
+
+ sample--;
+ }
+
+ sample = blockSize & 0x3u;
+ while(sample > 0u) {
+ Xn1 = *pIn++;
+
+ p0 = b0 * Xn1;
+ p1 = b1 * Xn1;
+ acc1 = p0 + d1;
+ p3 = a1 * acc1;
+ p2 = b2 * Xn1;
+ A1 = p1 + p3;
+ p4 = a2 * acc1;
+ d1 = A1 + d2;
+ d2 = p2 + p4;
+
+ *pOut++ = acc1;
+
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ *pState++ = d1;
+ *pState++ = d2;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ /* decrement the loop counter */
+ stage--;
+
+ } while(stage > 0u);
+
+#endif
+
+}
+LOW_OPTIMIZATION_EXIT
+
+/**
+ * @} end of BiquadCascadeDF2T group
+ */
--- a/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_biquad_cascade_df2T_init_f32.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,102 @@
+/*-----------------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_biquad_cascade_df2T_init_f64.c
+*
+* Description: Initialization function for the floating-point transposed
+* direct form II Biquad cascade filter.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupFilters
+ */
+
+/**
+ * @addtogroup BiquadCascadeDF2T
+ * @{
+ */
+
+/**
+ * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+ * @param[in,out] *S points to an instance of the filter data structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] *pCoeffs points to the filter coefficients.
+ * @param[in] *pState points to the state buffer.
+ * @return none
+ *
+ * <b>Coefficient and State Ordering:</b>
+ * \par
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:
+ * <pre>
+ * {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * </pre>
+ *
+ * \par
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,
+ * and so on. The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.
+ *
+ * \par
+ * The <code>pState</code> is a pointer to state array.
+ * Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code>.
+ * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.
+ * The state array has a total length of <code>2*numStages</code> values.
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.
+ */
+
+void arm_biquad_cascade_df2T_init_f64(
+ arm_biquad_cascade_df2T_instance_f64 * S,
+ uint8_t numStages,
+ float64_t * pCoeffs,
+ float64_t * pState)
+{
+ /* Assign filter stages */
+ S->numStages = numStages;
+
+ /* Assign coefficient pointer */
+ S->pCoeffs = pCoeffs;
+
+ /* Clear state buffer and size is always 2 * numStages */
+ memset(pState, 0, (2u * (uint32_t) numStages) * sizeof(float64_t));
+
+ /* Assign state pointer */
+ S->pState = pState;
+}
+
+/**
+ * @} end of BiquadCascadeDF2T group
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,683 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_biquad_cascade_stereo_df2T_f32.c
+*
+* Description: Processing function for the floating-point transposed
+* direct form II Biquad cascade filter. 2 channels
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**
+* @ingroup groupFilters
+*/
+
+/**
+* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure
+*
+* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure.
+* The filters are implemented as a cascade of second order Biquad sections.
+* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions.
+* Only floating-point data is supported.
+*
+* This function operate on blocks of input and output data and each call to the function
+* processes <code>blockSize</code> samples through the filter.
+* <code>pSrc</code> points to the array of input data and
+* <code>pDst</code> points to the array of output data.
+* Both arrays contain <code>blockSize</code> values.
+*
+* \par Algorithm
+* Each Biquad stage implements a second order filter using the difference equation:
+* <pre>
+* y[n] = b0 * x[n] + d1
+* d1 = b1 * x[n] + a1 * y[n] + d2
+* d2 = b2 * x[n] + a2 * y[n]
+* </pre>
+* where d1 and d2 represent the two state values.
+*
+* \par
+* A Biquad filter using a transposed Direct Form II structure is shown below.
+* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad"
+* Coefficients <code>b0, b1, and b2 </code> multiply the input signal <code>x[n]</code> and are referred to as the feedforward coefficients.
+* Coefficients <code>a1</code> and <code>a2</code> multiply the output signal <code>y[n]</code> and are referred to as the feedback coefficients.
+* Pay careful attention to the sign of the feedback coefficients.
+* Some design tools flip the sign of the feedback coefficients:
+* <pre>
+* y[n] = b0 * x[n] + d1;
+* d1 = b1 * x[n] - a1 * y[n] + d2;
+* d2 = b2 * x[n] - a2 * y[n];
+* </pre>
+* In this case the feedback coefficients <code>a1</code> and <code>a2</code> must be negated when used with the CMSIS DSP Library.
+*
+* \par
+* Higher order filters are realized as a cascade of second order sections.
+* <code>numStages</code> refers to the number of second order stages used.
+* For example, an 8th order filter would be realized with <code>numStages=4</code> second order stages.
+* A 9th order filter would be realized with <code>numStages=5</code> second order stages with the
+* coefficients for one of the stages configured as a first order filter (<code>b2=0</code> and <code>a2=0</code>).
+*
+* \par
+* <code>pState</code> points to the state variable array.
+* Each Biquad stage has 2 state variables <code>d1</code> and <code>d2</code>.
+* The state variables are arranged in the <code>pState</code> array as:
+* <pre>
+* {d11, d12, d21, d22, ...}
+* </pre>
+* where <code>d1x</code> refers to the state variables for the first Biquad and
+* <code>d2x</code> refers to the state variables for the second Biquad.
+* The state array has a total length of <code>2*numStages</code> values.
+* The state variables are updated after each block of data is processed; the coefficients are untouched.
+*
+* \par
+* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II.
+* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types.
+* That is why the Direct Form I structure supports Q15 and Q31 data types.
+* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables <code>d1</code> and <code>d2</code>.
+* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad.
+* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.
+*
+* \par Instance Structure
+* The coefficients and state variables for a filter are stored together in an instance data structure.
+* A separate instance structure must be defined for each filter.
+* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.
+*
+* \par Init Functions
+* There is also an associated initialization function.
+* The initialization function performs following operations:
+* - Sets the values of the internal structure fields.
+* - Zeros out the values in the state buffer.
+* To do this manually without calling the init function, assign the follow subfields of the instance structure:
+* numStages, pCoeffs, pState. Also set all of the values in pState to zero.
+*
+* \par
+* Use of the initialization function is optional.
+* However, if the initialization function is used, then the instance structure cannot be placed into a const data section.
+* To place an instance structure into a const data section, the instance structure must be manually initialized.
+* Set the values in the state buffer to zeros before static initialization.
+* For example, to statically initialize the instance structure use
+* <pre>
+* arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};
+* </pre>
+* where <code>numStages</code> is the number of Biquad stages in the filter; <code>pState</code> is the address of the state buffer.
+* <code>pCoeffs</code> is the address of the coefficient buffer;
+*
+*/
+
+/**
+* @addtogroup BiquadCascadeDF2T
+* @{
+*/
+
+/**
+* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+* @param[in] *S points to an instance of the filter data structure.
+* @param[in] *pSrc points to the block of input data.
+* @param[out] *pDst points to the block of output data
+* @param[in] blockSize number of samples to process.
+* @return none.
+*/
+
+
+LOW_OPTIMIZATION_ENTER
+void arm_biquad_cascade_stereo_df2T_f32(
+const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+
+ float32_t *pIn = pSrc; /* source pointer */
+ float32_t *pOut = pDst; /* destination pointer */
+ float32_t *pState = S->pState; /* State pointer */
+ float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */
+ float32_t acc1a, acc1b; /* accumulator */
+ float32_t b0, b1, b2, a1, a2; /* Filter coefficients */
+ float32_t Xn1a, Xn1b; /* temporary input */
+ float32_t d1a, d2a, d1b, d2b; /* state variables */
+ uint32_t sample, stage = S->numStages; /* loop counters */
+
+#if defined(ARM_MATH_CM7)
+
+ float32_t Xn2a, Xn3a, Xn4a, Xn5a, Xn6a, Xn7a, Xn8a; /* Input State variables */
+ float32_t Xn2b, Xn3b, Xn4b, Xn5b, Xn6b, Xn7b, Xn8b; /* Input State variables */
+ float32_t acc2a, acc3a, acc4a, acc5a, acc6a, acc7a, acc8a; /* Simulates the accumulator */
+ float32_t acc2b, acc3b, acc4b, acc5b, acc6b, acc7b, acc8b; /* Simulates the accumulator */
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = pCoeffs[0];
+ b1 = pCoeffs[1];
+ b2 = pCoeffs[2];
+ a1 = pCoeffs[3];
+ /* Apply loop unrolling and compute 8 output values simultaneously. */
+ sample = blockSize >> 3u;
+ a2 = pCoeffs[4];
+
+ /*Reading the state values */
+ d1a = pState[0];
+ d2a = pState[1];
+ d1b = pState[2];
+ d2b = pState[3];
+
+ pCoeffs += 5u;
+
+ /* First part of the processing with loop unrolling. Compute 8 outputs at a time.
+ ** a second loop below computes the remaining 1 to 7 samples. */
+ while(sample > 0u) {
+
+ /* y[n] = b0 * x[n] + d1 */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ /* d2 = b2 * x[n] + a2 * y[n] */
+
+ /* Read the first 2 inputs. 2 cycles */
+ Xn1a = pIn[0 ];
+ Xn1b = pIn[1 ];
+
+ /* Sample 1. 5 cycles */
+ Xn2a = pIn[2 ];
+ acc1a = b0 * Xn1a + d1a;
+
+ Xn2b = pIn[3 ];
+ d1a = b1 * Xn1a + d2a;
+
+ Xn3a = pIn[4 ];
+ d2a = b2 * Xn1a;
+
+ Xn3b = pIn[5 ];
+ d1a += a1 * acc1a;
+
+ Xn4a = pIn[6 ];
+ d2a += a2 * acc1a;
+
+ /* Sample 2. 5 cycles */
+ Xn4b = pIn[7 ];
+ acc1b = b0 * Xn1b + d1b;
+
+ Xn5a = pIn[8 ];
+ d1b = b1 * Xn1b + d2b;
+
+ Xn5b = pIn[9 ];
+ d2b = b2 * Xn1b;
+
+ Xn6a = pIn[10];
+ d1b += a1 * acc1b;
+
+ Xn6b = pIn[11];
+ d2b += a2 * acc1b;
+
+ /* Sample 3. 5 cycles */
+ Xn7a = pIn[12];
+ acc2a = b0 * Xn2a + d1a;
+
+ Xn7b = pIn[13];
+ d1a = b1 * Xn2a + d2a;
+
+ Xn8a = pIn[14];
+ d2a = b2 * Xn2a;
+
+ Xn8b = pIn[15];
+ d1a += a1 * acc2a;
+
+ pIn += 16;
+ d2a += a2 * acc2a;
+
+ /* Sample 4. 5 cycles */
+ acc2b = b0 * Xn2b + d1b;
+ d1b = b1 * Xn2b + d2b;
+ d2b = b2 * Xn2b;
+ d1b += a1 * acc2b;
+ d2b += a2 * acc2b;
+
+ /* Sample 5. 5 cycles */
+ acc3a = b0 * Xn3a + d1a;
+ d1a = b1 * Xn3a + d2a;
+ d2a = b2 * Xn3a;
+ d1a += a1 * acc3a;
+ d2a += a2 * acc3a;
+
+ /* Sample 6. 5 cycles */
+ acc3b = b0 * Xn3b + d1b;
+ d1b = b1 * Xn3b + d2b;
+ d2b = b2 * Xn3b;
+ d1b += a1 * acc3b;
+ d2b += a2 * acc3b;
+
+ /* Sample 7. 5 cycles */
+ acc4a = b0 * Xn4a + d1a;
+ d1a = b1 * Xn4a + d2a;
+ d2a = b2 * Xn4a;
+ d1a += a1 * acc4a;
+ d2a += a2 * acc4a;
+
+ /* Sample 8. 5 cycles */
+ acc4b = b0 * Xn4b + d1b;
+ d1b = b1 * Xn4b + d2b;
+ d2b = b2 * Xn4b;
+ d1b += a1 * acc4b;
+ d2b += a2 * acc4b;
+
+ /* Sample 9. 5 cycles */
+ acc5a = b0 * Xn5a + d1a;
+ d1a = b1 * Xn5a + d2a;
+ d2a = b2 * Xn5a;
+ d1a += a1 * acc5a;
+ d2a += a2 * acc5a;
+
+ /* Sample 10. 5 cycles */
+ acc5b = b0 * Xn5b + d1b;
+ d1b = b1 * Xn5b + d2b;
+ d2b = b2 * Xn5b;
+ d1b += a1 * acc5b;
+ d2b += a2 * acc5b;
+
+ /* Sample 11. 5 cycles */
+ acc6a = b0 * Xn6a + d1a;
+ d1a = b1 * Xn6a + d2a;
+ d2a = b2 * Xn6a;
+ d1a += a1 * acc6a;
+ d2a += a2 * acc6a;
+
+ /* Sample 12. 5 cycles */
+ acc6b = b0 * Xn6b + d1b;
+ d1b = b1 * Xn6b + d2b;
+ d2b = b2 * Xn6b;
+ d1b += a1 * acc6b;
+ d2b += a2 * acc6b;
+
+ /* Sample 13. 5 cycles */
+ acc7a = b0 * Xn7a + d1a;
+ d1a = b1 * Xn7a + d2a;
+
+ pOut[0 ] = acc1a ;
+ d2a = b2 * Xn7a;
+
+ pOut[1 ] = acc1b ;
+ d1a += a1 * acc7a;
+
+ pOut[2 ] = acc2a ;
+ d2a += a2 * acc7a;
+
+ /* Sample 14. 5 cycles */
+ pOut[3 ] = acc2b ;
+ acc7b = b0 * Xn7b + d1b;
+
+ pOut[4 ] = acc3a ;
+ d1b = b1 * Xn7b + d2b;
+
+ pOut[5 ] = acc3b ;
+ d2b = b2 * Xn7b;
+
+ pOut[6 ] = acc4a ;
+ d1b += a1 * acc7b;
+
+ pOut[7 ] = acc4b ;
+ d2b += a2 * acc7b;
+
+ /* Sample 15. 5 cycles */
+ pOut[8 ] = acc5a ;
+ acc8a = b0 * Xn8a + d1a;
+
+ pOut[9 ] = acc5b;
+ d1a = b1 * Xn8a + d2a;
+
+ pOut[10] = acc6a;
+ d2a = b2 * Xn8a;
+
+ pOut[11] = acc6b;
+ d1a += a1 * acc8a;
+
+ pOut[12] = acc7a;
+ d2a += a2 * acc8a;
+
+ /* Sample 16. 5 cycles */
+ pOut[13] = acc7b;
+ acc8b = b0 * Xn8b + d1b;
+
+ pOut[14] = acc8a;
+ d1b = b1 * Xn8b + d2b;
+
+ pOut[15] = acc8b;
+ d2b = b2 * Xn8b;
+
+ sample--;
+ d1b += a1 * acc8b;
+
+ pOut += 16;
+ d2b += a2 * acc8b;
+ }
+
+ sample = blockSize & 0x7u;
+ while(sample > 0u) {
+ /* Read the input */
+ Xn1a = *pIn++; //Channel a
+ Xn1b = *pIn++; //Channel b
+
+ /* y[n] = b0 * x[n] + d1 */
+ acc1a = (b0 * Xn1a) + d1a;
+ acc1b = (b0 * Xn1b) + d1b;
+
+ /* Store the result in the accumulator in the destination buffer. */
+ *pOut++ = acc1a;
+ *pOut++ = acc1b;
+
+ /* Every time after the output is computed state should be updated. */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;
+ d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;
+
+ /* d2 = b2 * x[n] + a2 * y[n] */
+ d2a = (b2 * Xn1a) + (a2 * acc1a);
+ d2b = (b2 * Xn1b) + (a2 * acc1b);
+
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ pState[0] = d1a;
+ pState[1] = d2a;
+
+ pState[2] = d1b;
+ pState[3] = d2b;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+ /* decrement the loop counter */
+ stage--;
+
+ pState += 4u;
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ } while(stage > 0u);
+
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+ /* Run the below code for Cortex-M0 */
+
+ do
+ {
+ /* Reading the coefficients */
+ b0 = *pCoeffs++;
+ b1 = *pCoeffs++;
+ b2 = *pCoeffs++;
+ a1 = *pCoeffs++;
+ a2 = *pCoeffs++;
+
+ /*Reading the state values */
+ d1a = pState[0];
+ d2a = pState[1];
+ d1b = pState[2];
+ d2b = pState[3];
+
+
+ sample = blockSize;
+
+ while(sample > 0u)
+ {
+ /* Read the input */
+ Xn1a = *pIn++; //Channel a
+ Xn1b = *pIn++; //Channel b
+
+ /* y[n] = b0 * x[n] + d1 */
+ acc1a = (b0 * Xn1a) + d1a;
+ acc1b = (b0 * Xn1b) + d1b;
+
+ /* Store the result in the accumulator in the destination buffer. */
+ *pOut++ = acc1a;
+ *pOut++ = acc1b;
+
+ /* Every time after the output is computed state should be updated. */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a;
+ d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b;
+
+ /* d2 = b2 * x[n] + a2 * y[n] */
+ d2a = (b2 * Xn1a) + (a2 * acc1a);
+ d2b = (b2 * Xn1b) + (a2 * acc1b);
+
+ /* decrement the loop counter */
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ *pState++ = d1a;
+ *pState++ = d2a;
+ *pState++ = d1b;
+ *pState++ = d2b;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ /* decrement the loop counter */
+ stage--;
+
+ } while(stage > 0u);
+
+#else
+
+ float32_t Xn2a, Xn3a, Xn4a; /* Input State variables */
+ float32_t Xn2b, Xn3b, Xn4b; /* Input State variables */
+ float32_t acc2a, acc3a, acc4a; /* accumulator */
+ float32_t acc2b, acc3b, acc4b; /* accumulator */
+ float32_t p0a, p1a, p2a, p3a, p4a, A1a;
+ float32_t p0b, p1b, p2b, p3b, p4b, A1b;
+
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+ do
+ {
+ /* Reading the coefficients */
+ b0 = *pCoeffs++;
+ b1 = *pCoeffs++;
+ b2 = *pCoeffs++;
+ a1 = *pCoeffs++;
+ a2 = *pCoeffs++;
+
+ /*Reading the state values */
+ d1a = pState[0];
+ d2a = pState[1];
+ d1b = pState[2];
+ d2b = pState[3];
+
+ /* Apply loop unrolling and compute 4 output values simultaneously. */
+ sample = blockSize >> 2u;
+
+ /* First part of the processing with loop unrolling. Compute 4 outputs at a time.
+ ** a second loop below computes the remaining 1 to 3 samples. */
+ while(sample > 0u) {
+
+ /* y[n] = b0 * x[n] + d1 */
+ /* d1 = b1 * x[n] + a1 * y[n] + d2 */
+ /* d2 = b2 * x[n] + a2 * y[n] */
+
+ /* Read the four inputs */
+ Xn1a = pIn[0];
+ Xn1b = pIn[1];
+ Xn2a = pIn[2];
+ Xn2b = pIn[3];
+ Xn3a = pIn[4];
+ Xn3b = pIn[5];
+ Xn4a = pIn[6];
+ Xn4b = pIn[7];
+ pIn += 8;
+
+ p0a = b0 * Xn1a;
+ p0b = b0 * Xn1b;
+ p1a = b1 * Xn1a;
+ p1b = b1 * Xn1b;
+ acc1a = p0a + d1a;
+ acc1b = p0b + d1b;
+ p0a = b0 * Xn2a;
+ p0b = b0 * Xn2b;
+ p3a = a1 * acc1a;
+ p3b = a1 * acc1b;
+ p2a = b2 * Xn1a;
+ p2b = b2 * Xn1b;
+ A1a = p1a + p3a;
+ A1b = p1b + p3b;
+ p4a = a2 * acc1a;
+ p4b = a2 * acc1b;
+ d1a = A1a + d2a;
+ d1b = A1b + d2b;
+ d2a = p2a + p4a;
+ d2b = p2b + p4b;
+
+ p1a = b1 * Xn2a;
+ p1b = b1 * Xn2b;
+ acc2a = p0a + d1a;
+ acc2b = p0b + d1b;
+ p0a = b0 * Xn3a;
+ p0b = b0 * Xn3b;
+ p3a = a1 * acc2a;
+ p3b = a1 * acc2b;
+ p2a = b2 * Xn2a;
+ p2b = b2 * Xn2b;
+ A1a = p1a + p3a;
+ A1b = p1b + p3b;
+ p4a = a2 * acc2a;
+ p4b = a2 * acc2b;
+ d1a = A1a + d2a;
+ d1b = A1b + d2b;
+ d2a = p2a + p4a;
+ d2b = p2b + p4b;
+
+ p1a = b1 * Xn3a;
+ p1b = b1 * Xn3b;
+ acc3a = p0a + d1a;
+ acc3b = p0b + d1b;
+ p0a = b0 * Xn4a;
+ p0b = b0 * Xn4b;
+ p3a = a1 * acc3a;
+ p3b = a1 * acc3b;
+ p2a = b2 * Xn3a;
+ p2b = b2 * Xn3b;
+ A1a = p1a + p3a;
+ A1b = p1b + p3b;
+ p4a = a2 * acc3a;
+ p4b = a2 * acc3b;
+ d1a = A1a + d2a;
+ d1b = A1b + d2b;
+ d2a = p2a + p4a;
+ d2b = p2b + p4b;
+
+ acc4a = p0a + d1a;
+ acc4b = p0b + d1b;
+ p1a = b1 * Xn4a;
+ p1b = b1 * Xn4b;
+ p3a = a1 * acc4a;
+ p3b = a1 * acc4b;
+ p2a = b2 * Xn4a;
+ p2b = b2 * Xn4b;
+ A1a = p1a + p3a;
+ A1b = p1b + p3b;
+ p4a = a2 * acc4a;
+ p4b = a2 * acc4b;
+ d1a = A1a + d2a;
+ d1b = A1b + d2b;
+ d2a = p2a + p4a;
+ d2b = p2b + p4b;
+
+ pOut[0] = acc1a;
+ pOut[1] = acc1b;
+ pOut[2] = acc2a;
+ pOut[3] = acc2b;
+ pOut[4] = acc3a;
+ pOut[5] = acc3b;
+ pOut[6] = acc4a;
+ pOut[7] = acc4b;
+ pOut += 8;
+
+ sample--;
+ }
+
+ sample = blockSize & 0x3u;
+ while(sample > 0u) {
+ Xn1a = *pIn++;
+ Xn1b = *pIn++;
+
+ p0a = b0 * Xn1a;
+ p0b = b0 * Xn1b;
+ p1a = b1 * Xn1a;
+ p1b = b1 * Xn1b;
+ acc1a = p0a + d1a;
+ acc1b = p0b + d1b;
+ p3a = a1 * acc1a;
+ p3b = a1 * acc1b;
+ p2a = b2 * Xn1a;
+ p2b = b2 * Xn1b;
+ A1a = p1a + p3a;
+ A1b = p1b + p3b;
+ p4a = a2 * acc1a;
+ p4b = a2 * acc1b;
+ d1a = A1a + d2a;
+ d1b = A1b + d2b;
+ d2a = p2a + p4a;
+ d2b = p2b + p4b;
+
+ *pOut++ = acc1a;
+ *pOut++ = acc1b;
+
+ sample--;
+ }
+
+ /* Store the updated state variables back into the state array */
+ *pState++ = d1a;
+ *pState++ = d2a;
+ *pState++ = d1b;
+ *pState++ = d2b;
+
+ /* The current stage input is given as the output to the next stage */
+ pIn = pDst;
+
+ /*Reset the output working pointer */
+ pOut = pDst;
+
+ /* decrement the loop counter */
+ stage--;
+
+ } while(stage > 0u);
+
+#endif
+
+}
+LOW_OPTIMIZATION_EXIT
+
+/**
+ * @} end of BiquadCascadeDF2T group
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,102 @@
+/*-----------------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_biquad_cascade_stereo_df2T_init_f32.c
+*
+* Description: Initialization function for the floating-point transposed
+* direct form II Biquad cascade filter.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* ---------------------------------------------------------------------------*/
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupFilters
+ */
+
+/**
+ * @addtogroup BiquadCascadeDF2T
+ * @{
+ */
+
+/**
+ * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+ * @param[in,out] *S points to an instance of the filter data structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] *pCoeffs points to the filter coefficients.
+ * @param[in] *pState points to the state buffer.
+ * @return none
+ *
+ * <b>Coefficient and State Ordering:</b>
+ * \par
+ * The coefficients are stored in the array <code>pCoeffs</code> in the following order:
+ * <pre>
+ * {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * </pre>
+ *
+ * \par
+ * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage,
+ * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage,
+ * and so on. The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values.
+ *
+ * \par
+ * The <code>pState</code> is a pointer to state array.
+ * Each Biquad stage has 2 state variables <code>d1,</code> and <code>d2</code> for each channel.
+ * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on.
+ * The state array has a total length of <code>2*numStages</code> values.
+ * The state variables are updated after each block of data is processed; the coefficients are untouched.
+ */
+
+void arm_biquad_cascade_stereo_df2T_init_f32(
+ arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+ uint8_t numStages,
+ float32_t * pCoeffs,
+ float32_t * pState)
+{
+ /* Assign filter stages */
+ S->numStages = numStages;
+
+ /* Assign coefficient pointer */
+ S->pCoeffs = pCoeffs;
+
+ /* Clear state buffer and size is always 4 * numStages */
+ memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(float32_t));
+
+ /* Assign state pointer */
+ S->pState = pState;
+}
+
+/**
+ * @} end of BiquadCascadeDF2T group
+ */
--- a/cmsis_dsp/FilteringFunctions/arm_conv_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_fast_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_fast_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_fast_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_fast_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_fast_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_fast_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_fast_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_opt_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_opt_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_opt_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_f32.c
@@ -157,8 +157,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = (int32_t) check - (int32_t) srcALen;
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -273,7 +273,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_partial_fast_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_fast_q15.c
@@ -124,8 +124,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -280,7 +280,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
@@ -764,13 +771,13 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
- blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
+ blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
- blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) +
- (int32_t) firstIndex);
+ blockSize2 = ((int32_t) check - blockSize3) -
+ (blockSize1 + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;
/* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */
@@ -818,7 +825,7 @@
/* Second part of this stage computes the MAC operations greater than or equal to 4 */
/* The first part of the stage starts here */
- while((count < 4u) && (blockSize1 > 0u))
+ while((count < 4u) && (blockSize1 > 0))
{
/* Accumulator is made zero for every iteration */
sum = 0;
@@ -856,7 +863,7 @@
* y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */
py = py - 1;
- while(blockSize1 > 0u)
+ while(blockSize1 > 0)
{
/* Accumulator is made zero for every iteration */
sum = 0;
@@ -918,7 +925,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
@@ -1431,7 +1445,7 @@
* so pointer py is updated to read only one sample at a time */
py = py + 1u;
- while(blockSize3 > 0u)
+ while(blockSize3 > 0)
{
/* Accumulator is made zero for every iteration */
sum = 0;
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_fast_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_fast_q31.c
@@ -123,8 +123,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -244,7 +244,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_partial_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_opt_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_opt_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_opt_q7.c
@@ -446,7 +446,6 @@
q7_t *pOut = pDst; /* output pointer */
q15_t x10, x11, x20, x21; /* Temporary input variables */
q15_t y10, y11; /* Temporary input variables */
- q7_t out0, out1, out2, out3; /* temporary variables */
/* Check for range of output samples to be calculated */
if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u))))
@@ -717,13 +716,10 @@
blkCnt--;
/* Store the result in the accumulator in the destination buffer. */
- out0 = (q7_t) (__SSAT(acc0 >> 7u, 8));
- out1 = (q7_t) (__SSAT(acc1 >> 7u, 8));
- out2 = (q7_t) (__SSAT(acc2 >> 7u, 8));
- out3 = (q7_t) (__SSAT(acc3 >> 7u, 8));
-
-
- *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3);
+ *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8));
+ *pOut++ = (q7_t) (__SSAT(acc1 >> 7u, 8));
+ *pOut++ = (q7_t) (__SSAT(acc2 >> 7u, 8));
+ *pOut++ = (q7_t) (__SSAT(acc3 >> 7u, 8));
/* Initialization of inputB pointer */
pScr2 = py;
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_q15.c
@@ -131,8 +131,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -287,7 +287,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_q31.c
@@ -128,8 +128,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -241,7 +241,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
--- a/cmsis_dsp/FilteringFunctions/arm_conv_partial_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_conv_partial_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_conv_partial_q7.c
@@ -132,8 +132,8 @@
/* Conditions to check which loopCounter holds
* the first and last indices of the output samples to be calculated. */
check = firstIndex + numPoints;
- blockSize3 = ((int32_t) check - (int32_t) srcALen);
- blockSize3 = (blockSize3 > 0) ? blockSize3 : 0;
+ blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
+ blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex);
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 :
(int32_t) numPoints) : 0;
@@ -264,7 +264,14 @@
*/
/* Working pointer of inputA */
- px = pIn1;
+ if((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0)
+ {
+ px = pIn1 + firstIndex - srcBLen + 1;
+ }
+ else
+ {
+ px = pIn1;
+ }
/* Working pointer of inputB */
pSrc2 = pIn2 + (srcBLen - 1u);
--- a/cmsis_dsp/FilteringFunctions/arm_conv_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_conv_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_conv_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_conv_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_correlate_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_correlate_f32.c
@@ -146,7 +146,7 @@
/* and the destination pointer modifier, inc is set to -1 */
/* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
/* But to improve the performance,
- * we include zeroes in the output instead of zero padding either of the the inputs*/
+ * we assume zeroes in the output instead of zero padding either of the the inputs*/
/* If srcALen > srcBLen,
* (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
/* If srcALen < srcBLen,
@@ -665,7 +665,7 @@
/* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
/* and a varaible, inv is set to 1 */
/* If lengths are not equal then zero pad has to be done to make the two
- * inputs of same length. But to improve the performance, we include zeroes
+ * inputs of same length. But to improve the performance, we assume zeroes
* in the output instead of zero padding either of the the inputs*/
/* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the
* starting of the output buffer */
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_fast_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_fast_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_fast_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_fast_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_fast_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_fast_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_fast_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_opt_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_opt_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_opt_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_opt_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_opt_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_opt_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_correlate_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_correlate_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_correlate_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_fast_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_fast_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_fast_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_fast_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_decimate_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_decimate_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_decimate_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_f32.c
@@ -131,7 +131,434 @@
*
*/
-#ifndef ARM_MATH_CM0_FAMILY
+#if defined(ARM_MATH_CM7)
+
+void arm_fir_f32(
+const arm_fir_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+ float32_t *pState = S->pState; /* State pointer */
+ float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */
+ float32_t *pStateCurnt; /* Points to the current sample of the state */
+ float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */
+ float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7; /* Accumulators */
+ float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0; /* Temporary variables to hold state and coefficient values */
+ uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */
+ uint32_t i, tapCnt, blkCnt; /* Loop counters */
+
+ /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+ /* pStateCurnt points to the location where the new input data should be written */
+ pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+ /* Apply loop unrolling and compute 8 output values simultaneously.
+ * The variables acc0 ... acc7 hold output values that are being computed:
+ *
+ * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0]
+ * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1]
+ * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2]
+ * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3]
+ */
+ blkCnt = blockSize >> 3;
+
+ /* First part of the processing with loop unrolling. Compute 8 outputs at a time.
+ ** a second loop below computes the remaining 1 to 7 samples. */
+ while(blkCnt > 0u)
+ {
+ /* Copy four new input samples into the state buffer */
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+
+ /* Set all accumulators to zero */
+ acc0 = 0.0f;
+ acc1 = 0.0f;
+ acc2 = 0.0f;
+ acc3 = 0.0f;
+ acc4 = 0.0f;
+ acc5 = 0.0f;
+ acc6 = 0.0f;
+ acc7 = 0.0f;
+
+ /* Initialize state pointer */
+ px = pState;
+
+ /* Initialize coeff pointer */
+ pb = (pCoeffs);
+
+ /* This is separated from the others to avoid
+ * a call to __aeabi_memmove which would be slower
+ */
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+ *pStateCurnt++ = *pSrc++;
+
+ /* Read the first seven samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */
+ x0 = *px++;
+ x1 = *px++;
+ x2 = *px++;
+ x3 = *px++;
+ x4 = *px++;
+ x5 = *px++;
+ x6 = *px++;
+
+ /* Loop unrolling. Process 8 taps at a time. */
+ tapCnt = numTaps >> 3u;
+
+ /* Loop over the number of taps. Unroll by a factor of 8.
+ ** Repeat until we've computed numTaps-8 coefficients. */
+ while(tapCnt > 0u)
+ {
+ /* Read the b[numTaps-1] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-3] sample */
+ x7 = *(px++);
+
+ /* acc0 += b[numTaps-1] * x[n-numTaps] */
+ acc0 += x0 * c0;
+
+ /* acc1 += b[numTaps-1] * x[n-numTaps-1] */
+ acc1 += x1 * c0;
+
+ /* acc2 += b[numTaps-1] * x[n-numTaps-2] */
+ acc2 += x2 * c0;
+
+ /* acc3 += b[numTaps-1] * x[n-numTaps-3] */
+ acc3 += x3 * c0;
+
+ /* acc4 += b[numTaps-1] * x[n-numTaps-4] */
+ acc4 += x4 * c0;
+
+ /* acc1 += b[numTaps-1] * x[n-numTaps-5] */
+ acc5 += x5 * c0;
+
+ /* acc2 += b[numTaps-1] * x[n-numTaps-6] */
+ acc6 += x6 * c0;
+
+ /* acc3 += b[numTaps-1] * x[n-numTaps-7] */
+ acc7 += x7 * c0;
+
+ /* Read the b[numTaps-2] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-4] sample */
+ x0 = *(px++);
+
+ /* Perform the multiply-accumulate */
+ acc0 += x1 * c0;
+ acc1 += x2 * c0;
+ acc2 += x3 * c0;
+ acc3 += x4 * c0;
+ acc4 += x5 * c0;
+ acc5 += x6 * c0;
+ acc6 += x7 * c0;
+ acc7 += x0 * c0;
+
+ /* Read the b[numTaps-3] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-5] sample */
+ x1 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x2 * c0;
+ acc1 += x3 * c0;
+ acc2 += x4 * c0;
+ acc3 += x5 * c0;
+ acc4 += x6 * c0;
+ acc5 += x7 * c0;
+ acc6 += x0 * c0;
+ acc7 += x1 * c0;
+
+ /* Read the b[numTaps-4] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-6] sample */
+ x2 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x3 * c0;
+ acc1 += x4 * c0;
+ acc2 += x5 * c0;
+ acc3 += x6 * c0;
+ acc4 += x7 * c0;
+ acc5 += x0 * c0;
+ acc6 += x1 * c0;
+ acc7 += x2 * c0;
+
+ /* Read the b[numTaps-4] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-6] sample */
+ x3 = *(px++);
+ /* Perform the multiply-accumulates */
+ acc0 += x4 * c0;
+ acc1 += x5 * c0;
+ acc2 += x6 * c0;
+ acc3 += x7 * c0;
+ acc4 += x0 * c0;
+ acc5 += x1 * c0;
+ acc6 += x2 * c0;
+ acc7 += x3 * c0;
+
+ /* Read the b[numTaps-4] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-6] sample */
+ x4 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x5 * c0;
+ acc1 += x6 * c0;
+ acc2 += x7 * c0;
+ acc3 += x0 * c0;
+ acc4 += x1 * c0;
+ acc5 += x2 * c0;
+ acc6 += x3 * c0;
+ acc7 += x4 * c0;
+
+ /* Read the b[numTaps-4] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-6] sample */
+ x5 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x6 * c0;
+ acc1 += x7 * c0;
+ acc2 += x0 * c0;
+ acc3 += x1 * c0;
+ acc4 += x2 * c0;
+ acc5 += x3 * c0;
+ acc6 += x4 * c0;
+ acc7 += x5 * c0;
+
+ /* Read the b[numTaps-4] coefficient */
+ c0 = *(pb++);
+
+ /* Read x[n-numTaps-6] sample */
+ x6 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x7 * c0;
+ acc1 += x0 * c0;
+ acc2 += x1 * c0;
+ acc3 += x2 * c0;
+ acc4 += x3 * c0;
+ acc5 += x4 * c0;
+ acc6 += x5 * c0;
+ acc7 += x6 * c0;
+
+ tapCnt--;
+ }
+
+ /* If the filter length is not a multiple of 8, compute the remaining filter taps */
+ tapCnt = numTaps % 0x8u;
+
+ while(tapCnt > 0u)
+ {
+ /* Read coefficients */
+ c0 = *(pb++);
+
+ /* Fetch 1 state variable */
+ x7 = *(px++);
+
+ /* Perform the multiply-accumulates */
+ acc0 += x0 * c0;
+ acc1 += x1 * c0;
+ acc2 += x2 * c0;
+ acc3 += x3 * c0;
+ acc4 += x4 * c0;
+ acc5 += x5 * c0;
+ acc6 += x6 * c0;
+ acc7 += x7 * c0;
+
+ /* Reuse the present sample states for next sample */
+ x0 = x1;
+ x1 = x2;
+ x2 = x3;
+ x3 = x4;
+ x4 = x5;
+ x5 = x6;
+ x6 = x7;
+
+ /* Decrement the loop counter */
+ tapCnt--;
+ }
+
+ /* Advance the state pointer by 8 to process the next group of 8 samples */
+ pState = pState + 8;
+
+ /* The results in the 8 accumulators, store in the destination buffer. */
+ *pDst++ = acc0;
+ *pDst++ = acc1;
+ *pDst++ = acc2;
+ *pDst++ = acc3;
+ *pDst++ = acc4;
+ *pDst++ = acc5;
+ *pDst++ = acc6;
+ *pDst++ = acc7;
+
+ blkCnt--;
+ }
+
+ /* If the blockSize is not a multiple of 8, compute any remaining output samples here.
+ ** No loop unrolling is used. */
+ blkCnt = blockSize % 0x8u;
+
+ while(blkCnt > 0u)
+ {
+ /* Copy one sample at a time into state buffer */
+ *pStateCurnt++ = *pSrc++;
+
+ /* Set the accumulator to zero */
+ acc0 = 0.0f;
+
+ /* Initialize state pointer */
+ px = pState;
+
+ /* Initialize Coefficient pointer */
+ pb = (pCoeffs);
+
+ i = numTaps;
+
+ /* Perform the multiply-accumulates */
+ do
+ {
+ acc0 += *px++ * *pb++;
+ i--;
+
+ } while(i > 0u);
+
+ /* The result is store in the destination buffer. */
+ *pDst++ = acc0;
+
+ /* Advance state pointer by 1 for the next sample */
+ pState = pState + 1;
+
+ blkCnt--;
+ }
+
+ /* Processing is complete.
+ ** Now copy the last numTaps - 1 samples to the start of the state buffer.
+ ** This prepares the state buffer for the next function call. */
+
+ /* Points to the start of the state buffer */
+ pStateCurnt = S->pState;
+
+ tapCnt = (numTaps - 1u) >> 2u;
+
+ /* copy data */
+ while(tapCnt > 0u)
+ {
+ *pStateCurnt++ = *pState++;
+ *pStateCurnt++ = *pState++;
+ *pStateCurnt++ = *pState++;
+ *pStateCurnt++ = *pState++;
+
+ /* Decrement the loop counter */
+ tapCnt--;
+ }
+
+ /* Calculate remaining number of copies */
+ tapCnt = (numTaps - 1u) % 0x4u;
+
+ /* Copy the remaining q31_t data */
+ while(tapCnt > 0u)
+ {
+ *pStateCurnt++ = *pState++;
+
+ /* Decrement the loop counter */
+ tapCnt--;
+ }
+}
+
+#elif defined(ARM_MATH_CM0_FAMILY)
+
+void arm_fir_f32(
+const arm_fir_instance_f32 * S,
+float32_t * pSrc,
+float32_t * pDst,
+uint32_t blockSize)
+{
+ float32_t *pState = S->pState; /* State pointer */
+ float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */
+ float32_t *pStateCurnt; /* Points to the current sample of the state */
+ float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */
+ uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */
+ uint32_t i, tapCnt, blkCnt; /* Loop counters */
+
+ /* Run the below code for Cortex-M0 */
+
+ float32_t acc;
+
+ /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
+ /* pStateCurnt points to the location where the new input data should be written */
+ pStateCurnt = &(S->pState[(numTaps - 1u)]);
+
+ /* Initialize blkCnt with blockSize */
+ blkCnt = blockSize;
+
+ while(blkCnt > 0u)
+ {
+ /* Copy one sample at a time into state buffer */
+ *pStateCurnt++ = *pSrc++;
+
+ /* Set the accumulator to zero */
+ acc = 0.0f;
+
+ /* Initialize state pointer */
+ px = pState;
+
+ /* Initialize Coefficient pointer */
+ pb = pCoeffs;
+
+ i = numTaps;
+
+ /* Perform the multiply-accumulates */
+ do
+ {
+ /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
+ acc += *px++ * *pb++;
+ i--;
+
+ } while(i > 0u);
+
+ /* The result is store in the destination buffer. */
+ *pDst++ = acc;
+
+ /* Advance state pointer by 1 for the next sample */
+ pState = pState + 1;
+
+ blkCnt--;
+ }
+
+ /* Processing is complete.
+ ** Now copy the last numTaps - 1 samples to the starting of the state buffer.
+ ** This prepares the state buffer for the next function call. */
+
+ /* Points to the start of the state buffer */
+ pStateCurnt = S->pState;
+
+ /* Copy numTaps number of values */
+ tapCnt = numTaps - 1u;
+
+ /* Copy data */
+ while(tapCnt > 0u)
+ {
+ *pStateCurnt++ = *pState++;
+
+ /* Decrement the loop counter */
+ tapCnt--;
+ }
+
+}
+
+#else
/* Run the below code for Cortex-M4 and Cortex-M3 */
@@ -563,88 +990,7 @@
}
}
-#else
-
-void arm_fir_f32(
-const arm_fir_instance_f32 * S,
-float32_t * pSrc,
-float32_t * pDst,
-uint32_t blockSize)
-{
- float32_t *pState = S->pState; /* State pointer */
- float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */
- float32_t *pStateCurnt; /* Points to the current sample of the state */
- float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */
- uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */
- uint32_t i, tapCnt, blkCnt; /* Loop counters */
-
- /* Run the below code for Cortex-M0 */
-
- float32_t acc;
-
- /* S->pState points to state array which contains previous frame (numTaps - 1) samples */
- /* pStateCurnt points to the location where the new input data should be written */
- pStateCurnt = &(S->pState[(numTaps - 1u)]);
-
- /* Initialize blkCnt with blockSize */
- blkCnt = blockSize;
-
- while(blkCnt > 0u)
- {
- /* Copy one sample at a time into state buffer */
- *pStateCurnt++ = *pSrc++;
-
- /* Set the accumulator to zero */
- acc = 0.0f;
-
- /* Initialize state pointer */
- px = pState;
-
- /* Initialize Coefficient pointer */
- pb = pCoeffs;
-
- i = numTaps;
-
- /* Perform the multiply-accumulates */
- do
- {
- /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */
- acc += *px++ * *pb++;
- i--;
-
- } while(i > 0u);
-
- /* The result is store in the destination buffer. */
- *pDst++ = acc;
-
- /* Advance state pointer by 1 for the next sample */
- pState = pState + 1;
-
- blkCnt--;
- }
-
- /* Processing is complete.
- ** Now copy the last numTaps - 1 samples to the starting of the state buffer.
- ** This prepares the state buffer for the next function call. */
-
- /* Points to the start of the state buffer */
- pStateCurnt = S->pState;
-
- /* Copy numTaps number of values */
- tapCnt = numTaps - 1u;
-
- /* Copy data */
- while(tapCnt > 0u)
- {
- *pStateCurnt++ = *pState++;
-
- /* Decrement the loop counter */
- tapCnt--;
- }
-
-}
-
-#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+#endif
/**
* @} end of FIR group
--- a/cmsis_dsp/FilteringFunctions/arm_fir_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_fast_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_fast_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_fast_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_fast_q31.c
@@ -138,10 +138,10 @@
while(i > 0u)
{
/* Read the b[numTaps] coefficient */
- c0 = *(pb++);
+ c0 = *pb;
/* Read x[n-numTaps-3] sample */
- x3 = *(px++);
+ x3 = *px;
/* acc0 += b[numTaps] * x[n-numTaps] */
multAcc_32x32_keep32_R(acc0, x0, c0);
@@ -156,10 +156,10 @@
multAcc_32x32_keep32_R(acc3, x3, c0);
/* Read the b[numTaps-1] coefficient */
- c0 = *(pb++);
+ c0 = *(pb + 1u);
/* Read x[n-numTaps-4] sample */
- x0 = *(px++);
+ x0 = *(px + 1u);
/* Perform the multiply-accumulates */
multAcc_32x32_keep32_R(acc0, x1, c0);
@@ -168,10 +168,10 @@
multAcc_32x32_keep32_R(acc3, x0, c0);
/* Read the b[numTaps-2] coefficient */
- c0 = *(pb++);
+ c0 = *(pb + 2u);
/* Read x[n-numTaps-5] sample */
- x1 = *(px++);
+ x1 = *(px + 2u);
/* Perform the multiply-accumulates */
multAcc_32x32_keep32_R(acc0, x2, c0);
@@ -180,16 +180,22 @@
multAcc_32x32_keep32_R(acc3, x1, c0);
/* Read the b[numTaps-3] coefficients */
- c0 = *(pb++);
+ c0 = *(pb + 3u);
/* Read x[n-numTaps-6] sample */
- x2 = *(px++);
+ x2 = *(px + 3u);
/* Perform the multiply-accumulates */
multAcc_32x32_keep32_R(acc0, x3, c0);
multAcc_32x32_keep32_R(acc1, x0, c0);
multAcc_32x32_keep32_R(acc2, x1, c0);
multAcc_32x32_keep32_R(acc3, x2, c0);
+
+ /* update coefficient pointer */
+ pb += 4u;
+ px += 4u;
+
+ /* Decrement the loop counter */
i--;
}
--- a/cmsis_dsp/FilteringFunctions/arm_fir_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_init_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_init_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_init_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_interpolate_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_interpolate_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_lattice_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_lattice_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_lattice_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_q7.c
@@ -137,11 +137,11 @@
while(i > 0u)
{
/* Read the b[numTaps] coefficient */
- c0 = *(pb++);
+ c0 = *pb;
/* Read x[n-numTaps-3] sample */
- x3 = *(px++);
-
+ x3 = *px;
+
/* acc0 += b[numTaps] * x[n-numTaps] */
acc0 += ((q15_t) x0 * c0);
@@ -155,10 +155,10 @@
acc3 += ((q15_t) x3 * c0);
/* Read the b[numTaps-1] coefficient */
- c0 = *(pb++);
+ c0 = *(pb + 1u);
/* Read x[n-numTaps-4] sample */
- x0 = *(px++);
+ x0 = *(px + 1u);
/* Perform the multiply-accumulates */
acc0 += ((q15_t) x1 * c0);
@@ -167,27 +167,34 @@
acc3 += ((q15_t) x0 * c0);
/* Read the b[numTaps-2] coefficient */
- c0 = *(pb++);
+ c0 = *(pb + 2u);
/* Read x[n-numTaps-5] sample */
- x1 = *(px++);
+ x1 = *(px + 2u);
/* Perform the multiply-accumulates */
acc0 += ((q15_t) x2 * c0);
acc1 += ((q15_t) x3 * c0);
acc2 += ((q15_t) x0 * c0);
acc3 += ((q15_t) x1 * c0);
+
/* Read the b[numTaps-3] coefficients */
- c0 = *(pb++);
+ c0 = *(pb + 3u);
/* Read x[n-numTaps-6] sample */
- x2 = *(px++);
-
+ x2 = *(px + 3u);
+
/* Perform the multiply-accumulates */
acc0 += ((q15_t) x3 * c0);
acc1 += ((q15_t) x0 * c0);
acc2 += ((q15_t) x1 * c0);
acc3 += ((q15_t) x2 * c0);
+
+ /* update coefficient pointer */
+ pb += 4u;
+ px += 4u;
+
+ /* Decrement the loop counter */
i--;
}
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_sparse_f32.c
@@ -220,7 +220,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -285,6 +285,51 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+ (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+ blockSize);
+
+ /* Working pointer for the scratch buffer */
+ px = pb;
+
+ /* Working pointer for destination buffer */
+ pOut = pDst;
+
+ /* Loop over the blockSize. Unroll by a factor of 4.
+ * Compute 4 MACS at a time. */
+ blkCnt = blockSize >> 2u;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pOut++ += *px++ * coeff;
+ *pOut++ += *px++ * coeff;
+ *pOut++ += *px++ * coeff;
+ *pOut++ += *px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
+
+ /* If the blockSize is not a multiple of 4,
+ * compute the remaining samples */
+ blkCnt = blockSize % 0x4u;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pOut++ += *px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
#else
@@ -315,7 +360,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -362,6 +407,33 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+ (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+ blockSize);
+
+ /* Working pointer for the scratch buffer */
+ px = pb;
+
+ /* Working pointer for destination buffer */
+ pOut = pDst;
+
+ blkCnt = blockSize;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pOut++ += *px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_sparse_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_sparse_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_sparse_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_init_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fir_sparse_init_q7.c
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_sparse_q15.c
@@ -169,7 +169,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -231,6 +231,50 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_q15(py, delaySize, &readIndex, 1,
+ pb, pb, blockSize, 1, blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pScratchOut = pScr2;
+
+ /* Loop over the blockSize. Unroll by a factor of 4.
+ * Compute 4 MACS at a time. */
+ blkCnt = blockSize >> 2;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
+
+ /* If the blockSize is not a multiple of 4,
+ * compute the remaining samples */
+ blkCnt = blockSize % 0x4u;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* All the output values are in pScratchOut buffer.
Convert them into 1.15 format, saturate and store in the destination buffer. */
@@ -346,7 +390,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -390,6 +434,32 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_q15(py, delaySize, &readIndex, 1,
+ pb, pb, blockSize, 1, blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pScratchOut = pScr2;
+
+ blkCnt = blockSize;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ *pScratchOut++ += (q31_t) * px++ * coeff;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* All the output values are in pScratchOut buffer.
Convert them into 1.15 format, saturate and store in the destination buffer. */
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_sparse_q31.c
@@ -163,7 +163,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -238,6 +238,63 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+ (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+ blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pOut = pDst;
+
+ /* Loop over the blockSize. Unroll by a factor of 4.
+ * Compute 4 MACS at a time. */
+ blkCnt = blockSize >> 2;
+
+ while(blkCnt > 0u)
+ {
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
+
+ /* If the blockSize is not a multiple of 4,
+ * compute the remaining samples */
+ blkCnt = blockSize % 0x4u;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* Working output pointer is updated */
pOut = pDst;
@@ -303,7 +360,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -350,6 +407,35 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1,
+ (int32_t *) pb, (int32_t *) pb, blockSize, 1,
+ blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pOut = pDst;
+
+ blkCnt = blockSize;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ out = *pOut;
+ out += ((q63_t) * px++ * coeff) >> 32;
+ *pOut++ = (q31_t) (out);
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* Working output pointer is updated */
pOut = pDst;
--- a/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_fir_sparse_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_fir_sparse_q7.c
@@ -174,7 +174,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -242,6 +242,55 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+ (int32_t) blockSize, 1, blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pScratchOut = pScr2;
+
+ /* Loop over the blockSize. Unroll by a factor of 4.
+ * Compute 4 MACS at a time. */
+ blkCnt = blockSize >> 2;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
+
+ /* If the blockSize is not a multiple of 4,
+ * compute the remaining samples */
+ blkCnt = blockSize % 0x4u;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* All the output values are in pScratchOut buffer.
Convert them into 1.15 format, saturate and store in the destination buffer. */
@@ -333,7 +382,7 @@
}
/* Loop over the number of taps. */
- tapCnt = (uint32_t) numTaps - 1u;
+ tapCnt = (uint32_t) numTaps - 2u;
while(tapCnt > 0u)
{
@@ -380,6 +429,34 @@
/* Decrement the tap loop counter */
tapCnt--;
}
+
+ /* Compute last tap without the final read of pTapDelay */
+
+ /* Working pointer for state buffer is updated */
+ py = pState;
+
+ /* blockSize samples are read from the state buffer */
+ arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb,
+ (int32_t) blockSize, 1, blockSize);
+
+ /* Working pointer for the scratch buffer of state values */
+ px = pb;
+
+ /* Working pointer for scratch buffer of output values */
+ pScratchOut = pScr2;
+
+ /* Loop over the blockSize */
+ blkCnt = blockSize;
+
+ while(blkCnt > 0u)
+ {
+ /* Perform Multiply-Accumulate */
+ in = *pScratchOut + ((q31_t) * px++ * coeff);
+ *pScratchOut++ = in;
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
/* All the output values are in pScratchOut buffer.
Convert them into 1.15 format, saturate and store in the destination buffer. */
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_iir_lattice_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_iir_lattice_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_iir_lattice_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_init_f32.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_init_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /*----------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_init_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_q15.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_norm_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/FilteringFunctions/arm_lms_norm_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_lms_norm_q31.c
--- a/cmsis_dsp/FilteringFunctions/arm_lms_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_lms_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_lms_q15.c
@@ -90,6 +90,7 @@
q63_t acc; /* Accumulator */
q15_t e = 0; /* error of data sample */
q15_t alpha; /* Intermediate constant for taps update */
+ q31_t coef; /* Teporary variable for coefficient */
q31_t acc_l, acc_h;
int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */
int32_t uShift = (32 - lShift);
@@ -99,7 +100,6 @@
/* Run the below code for Cortex-M4 and Cortex-M3 */
- q31_t coef; /* Teporary variable for coefficient */
/* S->pState points to buffer which contains previous frame (numTaps - 1) samples */
/* pStateCurnt points to the location where the new input data should be written */
@@ -340,7 +340,8 @@
while(tapCnt > 0u)
{
/* Perform the multiply-accumulate */
- *pb++ += (q15_t) (((q31_t) alpha * (*px++)) >> 15);
+ coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15);
+ *pb++ = (q15_t) __SSAT((coef), 16);
/* Decrement the loop counter */
tapCnt--;
--- a/cmsis_dsp/FilteringFunctions/arm_lms_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/FilteringFunctions/arm_lms_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_lms_q31.c
@@ -330,7 +330,7 @@
{
/* Perform the multiply-accumulate */
coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32));
- *pb += (coef << 1u);
+ *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u));
pb++;
/* Decrement the loop counter */
--- a/cmsis_dsp/MatrixFunctions/arm_mat_add_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_add_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_add_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_add_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_add_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_add_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_add_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_add_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_add_q31.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_cmplx_mult_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,283 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_mat_cmplx_mult_f32.c
+*
+* Description: Floating-point matrix multiplication.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**
+ * @ingroup groupMatrix
+ */
+
+/**
+ * @defgroup CmplxMatrixMult Complex Matrix Multiplication
+ *
+ * Complex Matrix multiplication is only defined if the number of columns of the
+ * first matrix equals the number of rows of the second matrix.
+ * Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results
+ * in an <code>M x P</code> matrix.
+ * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of
+ * <code>pSrcA</code> and <code>pSrcB</code> are equal; and (2) that the size of the output
+ * matrix equals the outer dimensions of <code>pSrcA</code> and <code>pSrcB</code>.
+ */
+
+
+/**
+ * @addtogroup CmplxMatrixMult
+ * @{
+ */
+
+/**
+ * @brief Floating-point Complex matrix multiplication.
+ * @param[in] *pSrcA points to the first input complex matrix structure
+ * @param[in] *pSrcB points to the second input complex matrix structure
+ * @param[out] *pDst points to output complex matrix structure
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ */
+
+arm_status arm_mat_cmplx_mult_f32(
+ const arm_matrix_instance_f32 * pSrcA,
+ const arm_matrix_instance_f32 * pSrcB,
+ arm_matrix_instance_f32 * pDst)
+{
+ float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */
+ float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */
+ float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */
+ float32_t *pOut = pDst->pData; /* output data matrix pointer */
+ float32_t *px; /* Temporary output data matrix pointer */
+ uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */
+ uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */
+ uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */
+ float32_t sumReal1, sumImag1; /* accumulator */
+ float32_t a0, b0, c0, d0;
+ float32_t a1, b1, c1, d1;
+ float32_t sumReal2, sumImag2; /* accumulator */
+
+
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+ uint16_t col, i = 0u, j, row = numRowsA, colCnt; /* loop counters */
+ arm_status status; /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+ /* Check for matrix mismatch condition */
+ if((pSrcA->numCols != pSrcB->numRows) ||
+ (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+ {
+
+ /* Set status as ARM_MATH_SIZE_MISMATCH */
+ status = ARM_MATH_SIZE_MISMATCH;
+ }
+ else
+#endif /* #ifdef ARM_MATH_MATRIX_CHECK */
+
+ {
+ /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+ /* row loop */
+ do
+ {
+ /* Output pointer is set to starting address of the row being processed */
+ px = pOut + 2 * i;
+
+ /* For every row wise process, the column loop counter is to be initiated */
+ col = numColsB;
+
+ /* For every row wise process, the pIn2 pointer is set
+ ** to the starting address of the pSrcB data */
+ pIn2 = pSrcB->pData;
+
+ j = 0u;
+
+ /* column loop */
+ do
+ {
+ /* Set the variable sum, that acts as accumulator, to zero */
+ sumReal1 = 0.0f;
+ sumImag1 = 0.0f;
+
+ sumReal2 = 0.0f;
+ sumImag2 = 0.0f;
+
+ /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+ pIn1 = pInA;
+
+ /* Apply loop unrolling and compute 4 MACs simultaneously. */
+ colCnt = numColsA >> 2;
+
+ /* matrix multiplication */
+ while(colCnt > 0u)
+ {
+
+ /* Reading real part of complex matrix A */
+ a0 = *pIn1;
+
+ /* Reading real part of complex matrix B */
+ c0 = *pIn2;
+
+ /* Reading imaginary part of complex matrix A */
+ b0 = *(pIn1 + 1u);
+
+ /* Reading imaginary part of complex matrix B */
+ d0 = *(pIn2 + 1u);
+
+ sumReal1 += a0 * c0;
+ sumImag1 += b0 * c0;
+
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ sumReal2 -= b0 * d0;
+ sumImag2 += a0 * d0;
+
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+ a1 = *pIn1;
+ c1 = *pIn2;
+
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ sumReal1 += a1 * c1;
+ sumImag1 += b1 * c1;
+
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ sumReal2 -= b1 * d1;
+ sumImag2 += a1 * d1;
+
+ a0 = *pIn1;
+ c0 = *pIn2;
+
+ b0 = *(pIn1 + 1u);
+ d0 = *(pIn2 + 1u);
+
+ sumReal1 += a0 * c0;
+ sumImag1 += b0 * c0;
+
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ sumReal2 -= b0 * d0;
+ sumImag2 += a0 * d0;
+
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+ a1 = *pIn1;
+ c1 = *pIn2;
+
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ sumReal1 += a1 * c1;
+ sumImag1 += b1 * c1;
+
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ sumReal2 -= b1 * d1;
+ sumImag2 += a1 * d1;
+
+ /* Decrement the loop count */
+ colCnt--;
+ }
+
+ /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.
+ ** No loop unrolling is used. */
+ colCnt = numColsA % 0x4u;
+
+ while(colCnt > 0u)
+ {
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+ a1 = *pIn1;
+ c1 = *pIn2;
+
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ sumReal1 += a1 * c1;
+ sumImag1 += b1 * c1;
+
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ sumReal2 -= b1 * d1;
+ sumImag2 += a1 * d1;
+
+ /* Decrement the loop counter */
+ colCnt--;
+ }
+
+ sumReal1 += sumReal2;
+ sumImag1 += sumImag2;
+
+ /* Store the result in the destination buffer */
+ *px++ = sumReal1;
+ *px++ = sumImag1;
+
+ /* Update the pointer pIn2 to point to the starting address of the next column */
+ j++;
+ pIn2 = pSrcB->pData + 2u * j;
+
+ /* Decrement the column loop counter */
+ col--;
+
+ } while(col > 0u);
+
+ /* Update the pointer pInA to point to the starting address of the next row */
+ i = i + numColsB;
+ pInA = pInA + 2 * numColsA;
+
+ /* Decrement the row loop counter */
+ row--;
+
+ } while(row > 0u);
+
+ /* Set status as ARM_MATH_SUCCESS */
+ status = ARM_MATH_SUCCESS;
+ }
+
+ /* Return to application */
+ return (status);
+}
+
+/**
+ * @} end of MatrixMult group
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_cmplx_mult_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,424 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_cmplx_mat_mult_q15.c
+*
+* Description: Q15 complex matrix multiplication.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**
+ * @ingroup groupMatrix
+ */
+
+/**
+ * @addtogroup CmplxMatrixMult
+ * @{
+ */
+
+
+/**
+ * @brief Q15 Complex matrix multiplication
+ * @param[in] *pSrcA points to the first input complex matrix structure
+ * @param[in] *pSrcB points to the second input complex matrix structure
+ * @param[out] *pDst points to output complex matrix structure
+ * @param[in] *pScratch points to the array for storing intermediate results
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ *
+ * \par Conditions for optimum performance
+ * Input, output and state buffers should be aligned by 32-bit
+ *
+ * \par Restrictions
+ * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE
+ * In this case input, output, scratch buffers should be aligned by 32-bit
+ *
+ * @details
+ * <b>Scaling and Overflow Behavior:</b>
+ *
+ * \par
+ * The function is implemented using a 64-bit internal accumulator. The inputs to the
+ * multiplications are in 1.15 format and multiplications yield a 2.30 result.
+ * The 2.30 intermediate
+ * results are accumulated in a 64-bit accumulator in 34.30 format. This approach
+ * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then
+ * truncated to 34.15 format by discarding the low 15 bits and then saturated to
+ * 1.15 format.
+ *
+ * \par
+ * Refer to <code>arm_mat_mult_fast_q15()</code> for a faster but less precise version of this function.
+ *
+ */
+
+
+
+
+arm_status arm_mat_cmplx_mult_q15(
+ const arm_matrix_instance_q15 * pSrcA,
+ const arm_matrix_instance_q15 * pSrcB,
+ arm_matrix_instance_q15 * pDst,
+ q15_t * pScratch)
+{
+ /* accumulator */
+ q15_t *pSrcBT = pScratch; /* input data matrix pointer for transpose */
+ q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */
+ q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */
+ q15_t *px; /* Temporary output data matrix pointer */
+ uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */
+ uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */
+ uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */
+ uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */
+ uint16_t col, i = 0u, row = numRowsB, colCnt; /* loop counters */
+ arm_status status; /* status of matrix multiplication */
+ q63_t sumReal, sumImag;
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+ q15_t in; /* Temporary variable to hold the input value */
+ q15_t a, b, c, d;
+#else
+ q31_t in; /* Temporary variable to hold the input value */
+ q31_t prod1, prod2;
+ q31_t pSourceA, pSourceB;
+#endif
+
+#ifdef ARM_MATH_MATRIX_CHECK
+ /* Check for matrix mismatch condition */
+ if((pSrcA->numCols != pSrcB->numRows) ||
+ (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+ {
+ /* Set status as ARM_MATH_SIZE_MISMATCH */
+ status = ARM_MATH_SIZE_MISMATCH;
+ }
+ else
+#endif
+ {
+ /* Matrix transpose */
+ do
+ {
+ /* Apply loop unrolling and exchange the columns with row elements */
+ col = numColsB >> 2;
+
+ /* The pointer px is set to starting address of the column being processed */
+ px = pSrcBT + i;
+
+ /* First part of the processing with loop unrolling. Compute 4 outputs at a time.
+ ** a second loop below computes the remaining 1 to 3 samples. */
+ while(col > 0u)
+ {
+#ifdef UNALIGNED_SUPPORT_DISABLE
+ /* Read two elements from the row */
+ in = *pInB++;
+ *px = in;
+ in = *pInB++;
+ px[1] = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Read two elements from the row */
+ in = *pInB++;
+ *px = in;
+ in = *pInB++;
+ px[1] = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Read two elements from the row */
+ in = *pInB++;
+ *px = in;
+ in = *pInB++;
+ px[1] = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Read two elements from the row */
+ in = *pInB++;
+ *px = in;
+ in = *pInB++;
+ px[1] = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Decrement the column loop counter */
+ col--;
+ }
+
+ /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.
+ ** No loop unrolling is used. */
+ col = numColsB % 0x4u;
+
+ while(col > 0u)
+ {
+ /* Read two elements from the row */
+ in = *pInB++;
+ *px = in;
+ in = *pInB++;
+ px[1] = in;
+#else
+
+ /* Read two elements from the row */
+ in = *__SIMD32(pInB)++;
+
+ *__SIMD32(px) = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+
+ /* Read two elements from the row */
+ in = *__SIMD32(pInB)++;
+
+ *__SIMD32(px) = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Read two elements from the row */
+ in = *__SIMD32(pInB)++;
+
+ *__SIMD32(px) = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Read two elements from the row */
+ in = *__SIMD32(pInB)++;
+
+ *__SIMD32(px) = in;
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Decrement the column loop counter */
+ col--;
+ }
+
+ /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here.
+ ** No loop unrolling is used. */
+ col = numColsB % 0x4u;
+
+ while(col > 0u)
+ {
+ /* Read two elements from the row */
+ in = *__SIMD32(pInB)++;
+
+ *__SIMD32(px) = in;
+#endif
+
+ /* Update the pointer px to point to the next row of the transposed matrix */
+ px += numRowsB * 2;
+
+ /* Decrement the column loop counter */
+ col--;
+ }
+
+ i = i + 2u;
+
+ /* Decrement the row loop counter */
+ row--;
+
+ } while(row > 0u);
+
+ /* Reset the variables for the usage in the following multiplication process */
+ row = numRowsA;
+ i = 0u;
+ px = pDst->pData;
+
+ /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+ /* row loop */
+ do
+ {
+ /* For every row wise process, the column loop counter is to be initiated */
+ col = numColsB;
+
+ /* For every row wise process, the pIn2 pointer is set
+ ** to the starting address of the transposed pSrcB data */
+ pInB = pSrcBT;
+
+ /* column loop */
+ do
+ {
+ /* Set the variable sum, that acts as accumulator, to zero */
+ sumReal = 0;
+ sumImag = 0;
+
+ /* Apply loop unrolling and compute 2 MACs simultaneously. */
+ colCnt = numColsA >> 1;
+
+ /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+ pInA = pSrcA->pData + i * 2;
+
+
+ /* matrix multiplication */
+ while(colCnt > 0u)
+ {
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+ /* read real and imag values from pSrcA buffer */
+ a = *pInA;
+ b = *(pInA + 1u);
+ /* read real and imag values from pSrcB buffer */
+ c = *pInB;
+ d = *(pInB + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal += (q31_t) a *c;
+ sumImag += (q31_t) a *d;
+ sumReal -= (q31_t) b *d;
+ sumImag += (q31_t) b *c;
+
+ /* read next real and imag values from pSrcA buffer */
+ a = *(pInA + 2u);
+ b = *(pInA + 3u);
+ /* read next real and imag values from pSrcB buffer */
+ c = *(pInB + 2u);
+ d = *(pInB + 3u);
+
+ /* update pointer */
+ pInA += 4u;
+
+ /* Multiply and Accumlates */
+ sumReal += (q31_t) a *c;
+ sumImag += (q31_t) a *d;
+ sumReal -= (q31_t) b *d;
+ sumImag += (q31_t) b *c;
+ /* update pointer */
+ pInB += 4u;
+#else
+ /* read real and imag values from pSrcA and pSrcB buffer */
+ pSourceA = *__SIMD32(pInA)++;
+ pSourceB = *__SIMD32(pInB)++;
+
+ /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+ prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+ prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+ prod2 = __SMUADX(pSourceA, pSourceB);
+ sumReal += (q63_t) prod1;
+ sumImag += (q63_t) prod2;
+
+ /* read real and imag values from pSrcA and pSrcB buffer */
+ pSourceA = *__SIMD32(pInA)++;
+ pSourceB = *__SIMD32(pInB)++;
+
+ /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+ prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+ prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+ prod2 = __SMUADX(pSourceA, pSourceB);
+ sumReal += (q63_t) prod1;
+ sumImag += (q63_t) prod2;
+
+#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */
+
+ /* Decrement the loop counter */
+ colCnt--;
+ }
+
+ /* process odd column samples */
+ if((numColsA & 0x1u) > 0u)
+ {
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+#ifdef UNALIGNED_SUPPORT_DISABLE
+
+ /* read real and imag values from pSrcA and pSrcB buffer */
+ a = *pInA++;
+ b = *pInA++;
+ c = *pInB++;
+ d = *pInB++;
+
+ /* Multiply and Accumlates */
+ sumReal += (q31_t) a *c;
+ sumImag += (q31_t) a *d;
+ sumReal -= (q31_t) b *d;
+ sumImag += (q31_t) b *c;
+
+#else
+ /* read real and imag values from pSrcA and pSrcB buffer */
+ pSourceA = *__SIMD32(pInA)++;
+ pSourceB = *__SIMD32(pInB)++;
+
+ /* Multiply and Accumlates */
+#ifdef ARM_MATH_BIG_ENDIAN
+ prod1 = -__SMUSD(pSourceA, pSourceB);
+#else
+ prod1 = __SMUSD(pSourceA, pSourceB);
+#endif
+ prod2 = __SMUADX(pSourceA, pSourceB);
+ sumReal += (q63_t) prod1;
+ sumImag += (q63_t) prod2;
+
+#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */
+
+ }
+
+ /* Saturate and store the result in the destination buffer */
+
+ *px++ = (q15_t) (__SSAT(sumReal >> 15, 16));
+ *px++ = (q15_t) (__SSAT(sumImag >> 15, 16));
+
+ /* Decrement the column loop counter */
+ col--;
+
+ } while(col > 0u);
+
+ i = i + numColsA;
+
+ /* Decrement the row loop counter */
+ row--;
+
+ } while(row > 0u);
+
+ /* set status as ARM_MATH_SUCCESS */
+ status = ARM_MATH_SUCCESS;
+ }
+
+ /* Return to application */
+ return (status);
+}
+
+/**
+ * @} end of MatrixMult group
+ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_cmplx_mult_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,293 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_mat_cmplx_mult_q31.c
+*
+* Description: Floating-point matrix multiplication.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+#include "arm_math.h"
+
+/**
+ * @ingroup groupMatrix
+ */
+
+/**
+ * @addtogroup CmplxMatrixMult
+ * @{
+ */
+
+/**
+ * @brief Q31 Complex matrix multiplication
+ * @param[in] *pSrcA points to the first input complex matrix structure
+ * @param[in] *pSrcB points to the second input complex matrix structure
+ * @param[out] *pDst points to output complex matrix structure
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ *
+ * @details
+ * <b>Scaling and Overflow Behavior:</b>
+ *
+ * \par
+ * The function is implemented using an internal 64-bit accumulator.
+ * The accumulator has a 2.62 format and maintains full precision of the intermediate
+ * multiplication results but provides only a single guard bit. There is no saturation
+ * on intermediate additions. Thus, if the accumulator overflows it wraps around and
+ * distorts the result. The input signals should be scaled down to avoid intermediate
+ * overflows. The input is thus scaled down by log2(numColsA) bits
+ * to avoid overflows, as a total of numColsA additions are performed internally.
+ * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.
+ *
+ *
+ */
+
+arm_status arm_mat_cmplx_mult_q31(
+ const arm_matrix_instance_q31 * pSrcA,
+ const arm_matrix_instance_q31 * pSrcB,
+ arm_matrix_instance_q31 * pDst)
+{
+ q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */
+ q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */
+ q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */
+ q31_t *pOut = pDst->pData; /* output data matrix pointer */
+ q31_t *px; /* Temporary output data matrix pointer */
+ uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */
+ uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */
+ uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */
+ q63_t sumReal1, sumImag1; /* accumulator */
+ q31_t a0, b0, c0, d0;
+ q31_t a1, b1, c1, d1;
+
+
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+ uint16_t col, i = 0u, j, row = numRowsA, colCnt; /* loop counters */
+ arm_status status; /* status of matrix multiplication */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+ /* Check for matrix mismatch condition */
+ if((pSrcA->numCols != pSrcB->numRows) ||
+ (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols))
+ {
+
+ /* Set status as ARM_MATH_SIZE_MISMATCH */
+ status = ARM_MATH_SIZE_MISMATCH;
+ }
+ else
+#endif /* #ifdef ARM_MATH_MATRIX_CHECK */
+
+ {
+ /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */
+ /* row loop */
+ do
+ {
+ /* Output pointer is set to starting address of the row being processed */
+ px = pOut + 2 * i;
+
+ /* For every row wise process, the column loop counter is to be initiated */
+ col = numColsB;
+
+ /* For every row wise process, the pIn2 pointer is set
+ ** to the starting address of the pSrcB data */
+ pIn2 = pSrcB->pData;
+
+ j = 0u;
+
+ /* column loop */
+ do
+ {
+ /* Set the variable sum, that acts as accumulator, to zero */
+ sumReal1 = 0.0;
+ sumImag1 = 0.0;
+
+ /* Initiate the pointer pIn1 to point to the starting address of the column being processed */
+ pIn1 = pInA;
+
+ /* Apply loop unrolling and compute 4 MACs simultaneously. */
+ colCnt = numColsA >> 2;
+
+ /* matrix multiplication */
+ while(colCnt > 0u)
+ {
+
+ /* Reading real part of complex matrix A */
+ a0 = *pIn1;
+
+ /* Reading real part of complex matrix B */
+ c0 = *pIn2;
+
+ /* Reading imaginary part of complex matrix A */
+ b0 = *(pIn1 + 1u);
+
+ /* Reading imaginary part of complex matrix B */
+ d0 = *(pIn2 + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal1 += (q63_t) a0 *c0;
+ sumImag1 += (q63_t) b0 *c0;
+
+ /* update pointers */
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ /* Multiply and Accumlates */
+ sumReal1 -= (q63_t) b0 *d0;
+ sumImag1 += (q63_t) a0 *d0;
+
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+ /* read real and imag values from pSrcA and pSrcB buffer */
+ a1 = *pIn1;
+ c1 = *pIn2;
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal1 += (q63_t) a1 *c1;
+ sumImag1 += (q63_t) b1 *c1;
+
+ /* update pointers */
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ /* Multiply and Accumlates */
+ sumReal1 -= (q63_t) b1 *d1;
+ sumImag1 += (q63_t) a1 *d1;
+
+ a0 = *pIn1;
+ c0 = *pIn2;
+
+ b0 = *(pIn1 + 1u);
+ d0 = *(pIn2 + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal1 += (q63_t) a0 *c0;
+ sumImag1 += (q63_t) b0 *c0;
+
+ /* update pointers */
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ /* Multiply and Accumlates */
+ sumReal1 -= (q63_t) b0 *d0;
+ sumImag1 += (q63_t) a0 *d0;
+
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+
+ a1 = *pIn1;
+ c1 = *pIn2;
+
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal1 += (q63_t) a1 *c1;
+ sumImag1 += (q63_t) b1 *c1;
+
+ /* update pointers */
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ /* Multiply and Accumlates */
+ sumReal1 -= (q63_t) b1 *d1;
+ sumImag1 += (q63_t) a1 *d1;
+
+ /* Decrement the loop count */
+ colCnt--;
+ }
+
+ /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here.
+ ** No loop unrolling is used. */
+ colCnt = numColsA % 0x4u;
+
+ while(colCnt > 0u)
+ {
+ /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */
+ a1 = *pIn1;
+ c1 = *pIn2;
+
+ b1 = *(pIn1 + 1u);
+ d1 = *(pIn2 + 1u);
+
+ /* Multiply and Accumlates */
+ sumReal1 += (q63_t) a1 *c1;
+ sumImag1 += (q63_t) b1 *c1;
+
+ /* update pointers */
+ pIn1 += 2u;
+ pIn2 += 2 * numColsB;
+
+ /* Multiply and Accumlates */
+ sumReal1 -= (q63_t) b1 *d1;
+ sumImag1 += (q63_t) a1 *d1;
+
+ /* Decrement the loop counter */
+ colCnt--;
+ }
+
+ /* Store the result in the destination buffer */
+ *px++ = (q31_t) clip_q63_to_q31(sumReal1 >> 31);
+ *px++ = (q31_t) clip_q63_to_q31(sumImag1 >> 31);
+
+ /* Update the pointer pIn2 to point to the starting address of the next column */
+ j++;
+ pIn2 = pSrcB->pData + 2u * j;
+
+ /* Decrement the column loop counter */
+ col--;
+
+ } while(col > 0u);
+
+ /* Update the pointer pInA to point to the starting address of the next row */
+ i = i + numColsB;
+ pInA = pInA + 2 * numColsA;
+
+ /* Decrement the row loop counter */
+ row--;
+
+ } while(row > 0u);
+
+ /* Set status as ARM_MATH_SUCCESS */
+ status = ARM_MATH_SUCCESS;
+ }
+
+ /* Return to application */
+ return (status);
+}
+
+/**
+ * @} end of MatrixMult group
+ */
--- a/cmsis_dsp/MatrixFunctions/arm_mat_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_init_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_init_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_init_q31.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_inverse_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_inverse_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 1. March 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_mat_inverse_f32.c
@@ -58,7 +58,7 @@
*
* \par Algorithm
* The Gauss-Jordan method is used to find the inverse.
- * The algorithm performs a sequence of elementary row-operations till it
+ * The algorithm performs a sequence of elementary row-operations until it
* reduces the input matrix to an identity matrix. Applying the same sequence
* of elementary row-operations to an identity matrix yields the inverse matrix.
* If the input matrix is singular, then the algorithm terminates and returns error status
@@ -89,7 +89,7 @@
float32_t *pIn = pSrc->pData; /* input data matrix pointer */
float32_t *pOut = pDst->pData; /* output data matrix pointer */
float32_t *pInT1, *pInT2; /* Temporary input data matrix pointer */
- float32_t *pInT3, *pInT4; /* Temporary output data matrix pointer */
+ float32_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */
float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */
uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */
uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */
@@ -137,10 +137,10 @@
* 4. Check to see if the pivot for column i is the greatest of the column.
* The pivot is the element of the main diagonal that is on the current row.
* For instance, if working with row i, then the pivot element is aii.
- * If the pivot is not the most significant of the coluimns, exchange that row with a row
+ * If the pivot is not the most significant of the columns, exchange that row with a row
* below it that does contain the most significant value in column i. If the most
* significant value of the column is zero, then an inverse to that matrix does not exist.
- * The most significant value of the column is the absolut maximum.
+ * The most significant value of the column is the absolute maximum.
*
* 5. Divide every element of row i by the pivot.
*
@@ -155,7 +155,7 @@
*----------------------------------------------------------------------------------------------------------------*/
/* Working pointer for destination matrix */
- pInT2 = pOut;
+ pOutT1 = pOut;
/* Loop over the number of rows */
rowCnt = numRows;
@@ -167,18 +167,18 @@
j = numRows - rowCnt;
while(j > 0u)
{
- *pInT2++ = 0.0f;
+ *pOutT1++ = 0.0f;
j--;
}
/* Writing all ones in the diagonal of the destination matrix */
- *pInT2++ = 1.0f;
+ *pOutT1++ = 1.0f;
/* Writing all zeroes in upper triangle of the destination matrix */
j = rowCnt - 1u;
while(j > 0u)
{
- *pInT2++ = 0.0f;
+ *pOutT1++ = 0.0f;
j--;
}
@@ -206,17 +206,14 @@
/* Working pointer for the destination matrix that points
* to the pivot element of the particular row */
- pInT3 = pOut + (l * numCols);
+ pOutT1 = pOut + (l * numCols);
/* Temporary variable to hold the pivot value */
in = *pInT1;
- /* Destination pointer modifier */
- k = 1u;
-
- /* Grab the most significant value from column l */
+ /* Grab the most significant value from column l */
maxC = 0;
- for (i = 0; i < numRows; i++)
+ for (i = l; i < numRows; i++)
{
maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);
pInT1 += numCols;
@@ -225,12 +222,14 @@
/* Update the status if the matrix is singular */
if(maxC == 0.0f)
{
- status = ARM_MATH_SINGULAR;
- break;
+ return ARM_MATH_SINGULAR;
}
/* Restore pInT1 */
- pInT1 -= numRows * numCols;
+ pInT1 = pIn;
+
+ /* Destination pointer modifier */
+ k = 1u;
/* Check if the pivot element is the most significant of the column */
if( (in > 0.0f ? in : -in) != maxC)
@@ -242,7 +241,7 @@
{
/* Update the input and destination pointers */
pInT2 = pInT1 + (numCols * l);
- pInT4 = pInT3 + (numCols * k);
+ pOutT2 = pOutT1 + (numCols * k);
/* Look for the most significant element to
* replace in the rows below */
@@ -269,9 +268,9 @@
while(j > 0u)
{
/* Exchange the row elements of the destination matrix */
- Xchg = *pInT4;
- *pInT4++ = *pInT3;
- *pInT3++ = Xchg;
+ Xchg = *pOutT2;
+ *pOutT2++ = *pOutT1;
+ *pOutT1++ = Xchg;
/* Decrement the loop counter */
j--;
@@ -295,9 +294,7 @@
/* Update the status if the matrix is singular */
if((flag != 1u) && (in == 0.0f))
{
- status = ARM_MATH_SINGULAR;
-
- break;
+ return ARM_MATH_SINGULAR;
}
/* Points to the pivot row of input and destination matrices */
@@ -484,7 +481,7 @@
*----------------------------------------------------------------------------------------------------------------*/
/* Working pointer for destination matrix */
- pInT2 = pOut;
+ pOutT1 = pOut;
/* Loop over the number of rows */
rowCnt = numRows;
@@ -496,18 +493,18 @@
j = numRows - rowCnt;
while(j > 0u)
{
- *pInT2++ = 0.0f;
+ *pOutT1++ = 0.0f;
j--;
}
/* Writing all ones in the diagonal of the destination matrix */
- *pInT2++ = 1.0f;
+ *pOutT1++ = 1.0f;
/* Writing all zeroes in upper triangle of the destination matrix */
j = rowCnt - 1u;
while(j > 0u)
{
- *pInT2++ = 0.0f;
+ *pOutT1++ = 0.0f;
j--;
}
@@ -535,7 +532,7 @@
/* Working pointer for the destination matrix that points
* to the pivot element of the particular row */
- pInT3 = pOut + (l * numCols);
+ pOutT1 = pOut + (l * numCols);
/* Temporary variable to hold the pivot value */
in = *pInT1;
@@ -551,7 +548,7 @@
{
/* Update the input and destination pointers */
pInT2 = pInT1 + (numCols * l);
- pInT4 = pInT3 + (numCols * k);
+ pOutT2 = pOutT1 + (numCols * k);
/* Check if there is a non zero pivot element to
* replace in the rows below */
@@ -569,9 +566,9 @@
for (j = 0u; j < numCols; j++)
{
- Xchg = *pInT4;
- *pInT4++ = *pInT3;
- *pInT3++ = Xchg;
+ Xchg = *pOutT2;
+ *pOutT2++ = *pOutT1;
+ *pOutT1++ = Xchg;
}
/* Flag to indicate whether exchange is done or not */
@@ -589,9 +586,7 @@
/* Update the status if the matrix is singular */
if((flag != 1u) && (in == 0.0f))
{
- status = ARM_MATH_SINGULAR;
-
- break;
+ return ARM_MATH_SINGULAR;
}
/* Points to the pivot row of input and destination matrices */
@@ -600,7 +595,7 @@
/* Temporary pointers to the pivot row pointers */
pInT1 = pPivotRowIn;
- pInT2 = pPivotRowDst;
+ pOutT1 = pPivotRowDst;
/* Pivot element of the row */
in = *(pIn + (l * numCols));
@@ -618,8 +613,8 @@
{
/* Divide each element of the row of the destination matrix
* by the pivot element */
- *pInT2 = *pInT2 / in;
- pInT2++;
+ *pOutT1 = *pOutT1 / in;
+ pOutT1++;
}
/* Replace the rows with the sum of that row and a multiple of row i
@@ -627,7 +622,7 @@
/* Temporary pointers for input and destination matrices */
pInT1 = pIn;
- pInT2 = pOut;
+ pOutT1 = pOut;
for (i = 0u; i < numRows; i++)
{
@@ -637,7 +632,7 @@
/* If the processing element is the pivot element,
only the columns to the right are to be processed */
pInT1 += numCols - l;
- pInT2 += numCols;
+ pOutT1 += numCols;
}
else
{
@@ -663,8 +658,8 @@
{
/* Replace the element by the sum of that row
and a multiple of the reference row */
- *pInT2 = *pInT2 - (in * *pPRT_pDst++);
- pInT2++;
+ *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);
+ pOutT1++;
}
}
@@ -688,7 +683,15 @@
if((flag != 1u) && (in == 0.0f))
{
- status = ARM_MATH_SINGULAR;
+ pIn = pSrc->pData;
+ for (i = 0; i < numRows * numCols; i++)
+ {
+ if (pIn[i] != 0.0f)
+ break;
+ }
+
+ if (i == numRows * numCols)
+ status = ARM_MATH_SINGULAR;
}
}
/* Return to application */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_inverse_f64.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,703 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_mat_inverse_f64.c
+*
+* Description: Floating-point matrix inverse.
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupMatrix
+ */
+
+/**
+ * @defgroup MatrixInv Matrix Inverse
+ *
+ * Computes the inverse of a matrix.
+ *
+ * The inverse is defined only if the input matrix is square and non-singular (the determinant
+ * is non-zero). The function checks that the input and output matrices are square and of the
+ * same size.
+ *
+ * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix
+ * inversion of floating-point matrices.
+ *
+ * \par Algorithm
+ * The Gauss-Jordan method is used to find the inverse.
+ * The algorithm performs a sequence of elementary row-operations until it
+ * reduces the input matrix to an identity matrix. Applying the same sequence
+ * of elementary row-operations to an identity matrix yields the inverse matrix.
+ * If the input matrix is singular, then the algorithm terminates and returns error status
+ * <code>ARM_MATH_SINGULAR</code>.
+ * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method"
+ */
+
+/**
+ * @addtogroup MatrixInv
+ * @{
+ */
+
+/**
+ * @brief Floating-point matrix inverse.
+ * @param[in] *pSrc points to input matrix structure
+ * @param[out] *pDst points to output matrix structure
+ * @return The function returns
+ * <code>ARM_MATH_SIZE_MISMATCH</code> if the input matrix is not square or if the size
+ * of the output matrix does not match the size of the input matrix.
+ * If the input matrix is found to be singular (non-invertible), then the function returns
+ * <code>ARM_MATH_SINGULAR</code>. Otherwise, the function returns <code>ARM_MATH_SUCCESS</code>.
+ */
+
+arm_status arm_mat_inverse_f64(
+ const arm_matrix_instance_f64 * pSrc,
+ arm_matrix_instance_f64 * pDst)
+{
+ float64_t *pIn = pSrc->pData; /* input data matrix pointer */
+ float64_t *pOut = pDst->pData; /* output data matrix pointer */
+ float64_t *pInT1, *pInT2; /* Temporary input data matrix pointer */
+ float64_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */
+ float64_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */
+ uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */
+ uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */
+
+#ifndef ARM_MATH_CM0_FAMILY
+ float64_t maxC; /* maximum value in the column */
+
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+ float64_t Xchg, in = 0.0f, in1; /* Temporary input values */
+ uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l; /* loop counters */
+ arm_status status; /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+
+ /* Check for matrix mismatch condition */
+ if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+ || (pSrc->numRows != pDst->numRows))
+ {
+ /* Set status as ARM_MATH_SIZE_MISMATCH */
+ status = ARM_MATH_SIZE_MISMATCH;
+ }
+ else
+#endif /* #ifdef ARM_MATH_MATRIX_CHECK */
+
+ {
+
+ /*--------------------------------------------------------------------------------------------------------------
+ * Matrix Inverse can be solved using elementary row operations.
+ *
+ * Gauss-Jordan Method:
+ *
+ * 1. First combine the identity matrix and the input matrix separated by a bar to form an
+ * augmented matrix as follows:
+ * _ _ _ _
+ * | a11 a12 | 1 0 | | X11 X12 |
+ * | | | = | |
+ * |_ a21 a22 | 0 1 _| |_ X21 X21 _|
+ *
+ * 2. In our implementation, pDst Matrix is used as identity matrix.
+ *
+ * 3. Begin with the first row. Let i = 1.
+ *
+ * 4. Check to see if the pivot for column i is the greatest of the column.
+ * The pivot is the element of the main diagonal that is on the current row.
+ * For instance, if working with row i, then the pivot element is aii.
+ * If the pivot is not the most significant of the columns, exchange that row with a row
+ * below it that does contain the most significant value in column i. If the most
+ * significant value of the column is zero, then an inverse to that matrix does not exist.
+ * The most significant value of the column is the absolute maximum.
+ *
+ * 5. Divide every element of row i by the pivot.
+ *
+ * 6. For every row below and row i, replace that row with the sum of that row and
+ * a multiple of row i so that each new element in column i below row i is zero.
+ *
+ * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros
+ * for every element below and above the main diagonal.
+ *
+ * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc).
+ * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst).
+ *----------------------------------------------------------------------------------------------------------------*/
+
+ /* Working pointer for destination matrix */
+ pOutT1 = pOut;
+
+ /* Loop over the number of rows */
+ rowCnt = numRows;
+
+ /* Making the destination matrix as identity matrix */
+ while(rowCnt > 0u)
+ {
+ /* Writing all zeroes in lower triangle of the destination matrix */
+ j = numRows - rowCnt;
+ while(j > 0u)
+ {
+ *pOutT1++ = 0.0f;
+ j--;
+ }
+
+ /* Writing all ones in the diagonal of the destination matrix */
+ *pOutT1++ = 1.0f;
+
+ /* Writing all zeroes in upper triangle of the destination matrix */
+ j = rowCnt - 1u;
+ while(j > 0u)
+ {
+ *pOutT1++ = 0.0f;
+ j--;
+ }
+
+ /* Decrement the loop counter */
+ rowCnt--;
+ }
+
+ /* Loop over the number of columns of the input matrix.
+ All the elements in each column are processed by the row operations */
+ loopCnt = numCols;
+
+ /* Index modifier to navigate through the columns */
+ l = 0u;
+
+ while(loopCnt > 0u)
+ {
+ /* Check if the pivot element is zero..
+ * If it is zero then interchange the row with non zero row below.
+ * If there is no non zero element to replace in the rows below,
+ * then the matrix is Singular. */
+
+ /* Working pointer for the input matrix that points
+ * to the pivot element of the particular row */
+ pInT1 = pIn + (l * numCols);
+
+ /* Working pointer for the destination matrix that points
+ * to the pivot element of the particular row */
+ pOutT1 = pOut + (l * numCols);
+
+ /* Temporary variable to hold the pivot value */
+ in = *pInT1;
+
+ /* Grab the most significant value from column l */
+ maxC = 0;
+ for (i = l; i < numRows; i++)
+ {
+ maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC);
+ pInT1 += numCols;
+ }
+
+ /* Update the status if the matrix is singular */
+ if(maxC == 0.0f)
+ {
+ return ARM_MATH_SINGULAR;
+ }
+
+ /* Restore pInT1 */
+ pInT1 = pIn;
+
+ /* Destination pointer modifier */
+ k = 1u;
+
+ /* Check if the pivot element is the most significant of the column */
+ if( (in > 0.0f ? in : -in) != maxC)
+ {
+ /* Loop over the number rows present below */
+ i = numRows - (l + 1u);
+
+ while(i > 0u)
+ {
+ /* Update the input and destination pointers */
+ pInT2 = pInT1 + (numCols * l);
+ pOutT2 = pOutT1 + (numCols * k);
+
+ /* Look for the most significant element to
+ * replace in the rows below */
+ if((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC)
+ {
+ /* Loop over number of columns
+ * to the right of the pilot element */
+ j = numCols - l;
+
+ while(j > 0u)
+ {
+ /* Exchange the row elements of the input matrix */
+ Xchg = *pInT2;
+ *pInT2++ = *pInT1;
+ *pInT1++ = Xchg;
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ /* Loop over number of columns of the destination matrix */
+ j = numCols;
+
+ while(j > 0u)
+ {
+ /* Exchange the row elements of the destination matrix */
+ Xchg = *pOutT2;
+ *pOutT2++ = *pOutT1;
+ *pOutT1++ = Xchg;
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ /* Flag to indicate whether exchange is done or not */
+ flag = 1u;
+
+ /* Break after exchange is done */
+ break;
+ }
+
+ /* Update the destination pointer modifier */
+ k++;
+
+ /* Decrement the loop counter */
+ i--;
+ }
+ }
+
+ /* Update the status if the matrix is singular */
+ if((flag != 1u) && (in == 0.0f))
+ {
+ return ARM_MATH_SINGULAR;
+ }
+
+ /* Points to the pivot row of input and destination matrices */
+ pPivotRowIn = pIn + (l * numCols);
+ pPivotRowDst = pOut + (l * numCols);
+
+ /* Temporary pointers to the pivot row pointers */
+ pInT1 = pPivotRowIn;
+ pInT2 = pPivotRowDst;
+
+ /* Pivot element of the row */
+ in = *pPivotRowIn;
+
+ /* Loop over number of columns
+ * to the right of the pilot element */
+ j = (numCols - l);
+
+ while(j > 0u)
+ {
+ /* Divide each element of the row of the input matrix
+ * by the pivot element */
+ in1 = *pInT1;
+ *pInT1++ = in1 / in;
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ /* Loop over number of columns of the destination matrix */
+ j = numCols;
+
+ while(j > 0u)
+ {
+ /* Divide each element of the row of the destination matrix
+ * by the pivot element */
+ in1 = *pInT2;
+ *pInT2++ = in1 / in;
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ /* Replace the rows with the sum of that row and a multiple of row i
+ * so that each new element in column i above row i is zero.*/
+
+ /* Temporary pointers for input and destination matrices */
+ pInT1 = pIn;
+ pInT2 = pOut;
+
+ /* index used to check for pivot element */
+ i = 0u;
+
+ /* Loop over number of rows */
+ /* to be replaced by the sum of that row and a multiple of row i */
+ k = numRows;
+
+ while(k > 0u)
+ {
+ /* Check for the pivot element */
+ if(i == l)
+ {
+ /* If the processing element is the pivot element,
+ only the columns to the right are to be processed */
+ pInT1 += numCols - l;
+
+ pInT2 += numCols;
+ }
+ else
+ {
+ /* Element of the reference row */
+ in = *pInT1;
+
+ /* Working pointers for input and destination pivot rows */
+ pPRT_in = pPivotRowIn;
+ pPRT_pDst = pPivotRowDst;
+
+ /* Loop over the number of columns to the right of the pivot element,
+ to replace the elements in the input matrix */
+ j = (numCols - l);
+
+ while(j > 0u)
+ {
+ /* Replace the element by the sum of that row
+ and a multiple of the reference row */
+ in1 = *pInT1;
+ *pInT1++ = in1 - (in * *pPRT_in++);
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ /* Loop over the number of columns to
+ replace the elements in the destination matrix */
+ j = numCols;
+
+ while(j > 0u)
+ {
+ /* Replace the element by the sum of that row
+ and a multiple of the reference row */
+ in1 = *pInT2;
+ *pInT2++ = in1 - (in * *pPRT_pDst++);
+
+ /* Decrement the loop counter */
+ j--;
+ }
+
+ }
+
+ /* Increment the temporary input pointer */
+ pInT1 = pInT1 + l;
+
+ /* Decrement the loop counter */
+ k--;
+
+ /* Increment the pivot index */
+ i++;
+ }
+
+ /* Increment the input pointer */
+ pIn++;
+
+ /* Decrement the loop counter */
+ loopCnt--;
+
+ /* Increment the index modifier */
+ l++;
+ }
+
+
+#else
+
+ /* Run the below code for Cortex-M0 */
+
+ float64_t Xchg, in = 0.0f; /* Temporary input values */
+ uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l; /* loop counters */
+ arm_status status; /* status of matrix inverse */
+
+#ifdef ARM_MATH_MATRIX_CHECK
+
+ /* Check for matrix mismatch condition */
+ if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols)
+ || (pSrc->numRows != pDst->numRows))
+ {
+ /* Set status as ARM_MATH_SIZE_MISMATCH */
+ status = ARM_MATH_SIZE_MISMATCH;
+ }
+ else
+#endif /* #ifdef ARM_MATH_MATRIX_CHECK */
+ {
+
+ /*--------------------------------------------------------------------------------------------------------------
+ * Matrix Inverse can be solved using elementary row operations.
+ *
+ * Gauss-Jordan Method:
+ *
+ * 1. First combine the identity matrix and the input matrix separated by a bar to form an
+ * augmented matrix as follows:
+ * _ _ _ _ _ _ _ _
+ * | | a11 a12 | | | 1 0 | | | X11 X12 |
+ * | | | | | | | = | |
+ * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _|
+ *
+ * 2. In our implementation, pDst Matrix is used as identity matrix.
+ *
+ * 3. Begin with the first row. Let i = 1.
+ *
+ * 4. Check to see if the pivot for row i is zero.
+ * The pivot is the element of the main diagonal that is on the current row.
+ * For instance, if working with row i, then the pivot element is aii.
+ * If the pivot is zero, exchange that row with a row below it that does not
+ * contain a zero in column i. If this is not possible, then an inverse
+ * to that matrix does not exist.
+ *
+ * 5. Divide every element of row i by the pivot.
+ *
+ * 6. For every row below and row i, replace that row with the sum of that row and
+ * a multiple of row i so that each new element in column i below row i is zero.
+ *
+ * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros
+ * for every element below and above the main diagonal.
+ *
+ * 8. Now an identical matrix is formed to the left of the bar(input matrix, src).
+ * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst).
+ *----------------------------------------------------------------------------------------------------------------*/
+
+ /* Working pointer for destination matrix */
+ pOutT1 = pOut;
+
+ /* Loop over the number of rows */
+ rowCnt = numRows;
+
+ /* Making the destination matrix as identity matrix */
+ while(rowCnt > 0u)
+ {
+ /* Writing all zeroes in lower triangle of the destination matrix */
+ j = numRows - rowCnt;
+ while(j > 0u)
+ {
+ *pOutT1++ = 0.0f;
+ j--;
+ }
+
+ /* Writing all ones in the diagonal of the destination matrix */
+ *pOutT1++ = 1.0f;
+
+ /* Writing all zeroes in upper triangle of the destination matrix */
+ j = rowCnt - 1u;
+ while(j > 0u)
+ {
+ *pOutT1++ = 0.0f;
+ j--;
+ }
+
+ /* Decrement the loop counter */
+ rowCnt--;
+ }
+
+ /* Loop over the number of columns of the input matrix.
+ All the elements in each column are processed by the row operations */
+ loopCnt = numCols;
+
+ /* Index modifier to navigate through the columns */
+ l = 0u;
+ //for(loopCnt = 0u; loopCnt < numCols; loopCnt++)
+ while(loopCnt > 0u)
+ {
+ /* Check if the pivot element is zero..
+ * If it is zero then interchange the row with non zero row below.
+ * If there is no non zero element to replace in the rows below,
+ * then the matrix is Singular. */
+
+ /* Working pointer for the input matrix that points
+ * to the pivot element of the particular row */
+ pInT1 = pIn + (l * numCols);
+
+ /* Working pointer for the destination matrix that points
+ * to the pivot element of the particular row */
+ pOutT1 = pOut + (l * numCols);
+
+ /* Temporary variable to hold the pivot value */
+ in = *pInT1;
+
+ /* Destination pointer modifier */
+ k = 1u;
+
+ /* Check if the pivot element is zero */
+ if(*pInT1 == 0.0f)
+ {
+ /* Loop over the number rows present below */
+ for (i = (l + 1u); i < numRows; i++)
+ {
+ /* Update the input and destination pointers */
+ pInT2 = pInT1 + (numCols * l);
+ pOutT2 = pOutT1 + (numCols * k);
+
+ /* Check if there is a non zero pivot element to
+ * replace in the rows below */
+ if(*pInT2 != 0.0f)
+ {
+ /* Loop over number of columns
+ * to the right of the pilot element */
+ for (j = 0u; j < (numCols - l); j++)
+ {
+ /* Exchange the row elements of the input matrix */
+ Xchg = *pInT2;
+ *pInT2++ = *pInT1;
+ *pInT1++ = Xchg;
+ }
+
+ for (j = 0u; j < numCols; j++)
+ {
+ Xchg = *pOutT2;
+ *pOutT2++ = *pOutT1;
+ *pOutT1++ = Xchg;
+ }
+
+ /* Flag to indicate whether exchange is done or not */
+ flag = 1u;
+
+ /* Break after exchange is done */
+ break;
+ }
+
+ /* Update the destination pointer modifier */
+ k++;
+ }
+ }
+
+ /* Update the status if the matrix is singular */
+ if((flag != 1u) && (in == 0.0f))
+ {
+ return ARM_MATH_SINGULAR;
+ }
+
+ /* Points to the pivot row of input and destination matrices */
+ pPivotRowIn = pIn + (l * numCols);
+ pPivotRowDst = pOut + (l * numCols);
+
+ /* Temporary pointers to the pivot row pointers */
+ pInT1 = pPivotRowIn;
+ pOutT1 = pPivotRowDst;
+
+ /* Pivot element of the row */
+ in = *(pIn + (l * numCols));
+
+ /* Loop over number of columns
+ * to the right of the pilot element */
+ for (j = 0u; j < (numCols - l); j++)
+ {
+ /* Divide each element of the row of the input matrix
+ * by the pivot element */
+ *pInT1 = *pInT1 / in;
+ pInT1++;
+ }
+ for (j = 0u; j < numCols; j++)
+ {
+ /* Divide each element of the row of the destination matrix
+ * by the pivot element */
+ *pOutT1 = *pOutT1 / in;
+ pOutT1++;
+ }
+
+ /* Replace the rows with the sum of that row and a multiple of row i
+ * so that each new element in column i above row i is zero.*/
+
+ /* Temporary pointers for input and destination matrices */
+ pInT1 = pIn;
+ pOutT1 = pOut;
+
+ for (i = 0u; i < numRows; i++)
+ {
+ /* Check for the pivot element */
+ if(i == l)
+ {
+ /* If the processing element is the pivot element,
+ only the columns to the right are to be processed */
+ pInT1 += numCols - l;
+ pOutT1 += numCols;
+ }
+ else
+ {
+ /* Element of the reference row */
+ in = *pInT1;
+
+ /* Working pointers for input and destination pivot rows */
+ pPRT_in = pPivotRowIn;
+ pPRT_pDst = pPivotRowDst;
+
+ /* Loop over the number of columns to the right of the pivot element,
+ to replace the elements in the input matrix */
+ for (j = 0u; j < (numCols - l); j++)
+ {
+ /* Replace the element by the sum of that row
+ and a multiple of the reference row */
+ *pInT1 = *pInT1 - (in * *pPRT_in++);
+ pInT1++;
+ }
+ /* Loop over the number of columns to
+ replace the elements in the destination matrix */
+ for (j = 0u; j < numCols; j++)
+ {
+ /* Replace the element by the sum of that row
+ and a multiple of the reference row */
+ *pOutT1 = *pOutT1 - (in * *pPRT_pDst++);
+ pOutT1++;
+ }
+
+ }
+ /* Increment the temporary input pointer */
+ pInT1 = pInT1 + l;
+ }
+ /* Increment the input pointer */
+ pIn++;
+
+ /* Decrement the loop counter */
+ loopCnt--;
+ /* Increment the index modifier */
+ l++;
+ }
+
+
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
+
+ /* Set status as ARM_MATH_SUCCESS */
+ status = ARM_MATH_SUCCESS;
+
+ if((flag != 1u) && (in == 0.0f))
+ {
+ pIn = pSrc->pData;
+ for (i = 0; i < numRows * numCols; i++)
+ {
+ if (pIn[i] != 0.0f)
+ break;
+ }
+
+ if (i == numRows * numCols)
+ status = ARM_MATH_SINGULAR;
+ }
+ }
+ /* Return to application */
+ return (status);
+}
+
+/**
+ * @} end of MatrixInv group
+ */
--- a/cmsis_dsp/MatrixFunctions/arm_mat_mult_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_mult_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_mult_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_mult_fast_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_mult_fast_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_mult_fast_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_mult_fast_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_mult_fast_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_mult_fast_q31.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_mult_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_mult_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_mult_q15.c @@ -55,7 +55,7 @@ * @param[in] *pSrcA points to the first input matrix structure * @param[in] *pSrcB points to the second input matrix structure * @param[out] *pDst points to output matrix structure - * @param[in] *pState points to the array for storing intermediate results + * @param[in] *pState points to the array for storing intermediate results (Unused) * @return The function returns either * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking. *
--- a/cmsis_dsp/MatrixFunctions/arm_mat_mult_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/MatrixFunctions/arm_mat_mult_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_mat_mult_q31.c
@@ -261,7 +261,7 @@
}
/* Convert the result from 2.62 to 1.31 format and store in destination buffer */
- *px++ = (q31_t) (sum >> 31);
+ *px++ = (q31_t) clip_q63_to_q31(sum >> 31);
/* Decrement the column loop counter */
col--;
--- a/cmsis_dsp/MatrixFunctions/arm_mat_scale_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_scale_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_scale_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_scale_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_scale_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_scale_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_scale_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_scale_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_scale_q31.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_sub_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_sub_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_sub_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_sub_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_sub_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_sub_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_sub_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_sub_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_sub_q31.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_trans_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_trans_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_trans_f32.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_trans_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_trans_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_trans_q15.c
--- a/cmsis_dsp/MatrixFunctions/arm_mat_trans_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/MatrixFunctions/arm_mat_trans_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mat_trans_q31.c
--- a/cmsis_dsp/StatisticsFunctions/arm_max_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_max_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_max_f32.c
--- a/cmsis_dsp/StatisticsFunctions/arm_max_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_max_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_max_q15.c
--- a/cmsis_dsp/StatisticsFunctions/arm_max_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_max_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_max_q31.c
--- a/cmsis_dsp/StatisticsFunctions/arm_max_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_max_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_max_q7.c
--- a/cmsis_dsp/StatisticsFunctions/arm_mean_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_mean_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mean_f32.c
--- a/cmsis_dsp/StatisticsFunctions/arm_mean_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_mean_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mean_q15.c @@ -125,7 +125,7 @@ /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ /* Store the result to the destination */ - *pResult = (q15_t) (sum / blockSize); + *pResult = (q15_t) (sum / (q31_t)blockSize); } /**
--- a/cmsis_dsp/StatisticsFunctions/arm_mean_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_mean_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mean_q31.c
--- a/cmsis_dsp/StatisticsFunctions/arm_mean_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_mean_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_mean_q7.c
--- a/cmsis_dsp/StatisticsFunctions/arm_min_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_min_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_min_f32.c
--- a/cmsis_dsp/StatisticsFunctions/arm_min_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_min_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_min_q15.c
--- a/cmsis_dsp/StatisticsFunctions/arm_min_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_min_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_min_q31.c
--- a/cmsis_dsp/StatisticsFunctions/arm_min_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_min_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_min_q7.c
--- a/cmsis_dsp/StatisticsFunctions/arm_power_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_power_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_power_f32.c
--- a/cmsis_dsp/StatisticsFunctions/arm_power_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_power_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_power_q15.c
--- a/cmsis_dsp/StatisticsFunctions/arm_power_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_power_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_power_q31.c
--- a/cmsis_dsp/StatisticsFunctions/arm_power_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_power_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_power_q7.c
--- a/cmsis_dsp/StatisticsFunctions/arm_rms_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_rms_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_rms_f32.c
--- a/cmsis_dsp/StatisticsFunctions/arm_rms_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_rms_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_rms_q15.c @@ -116,19 +116,14 @@ } /* Truncating and saturating the accumulator to 1.15 format */ - in = (q31_t)(sum >> 15); - - in1 = __SSAT(in / blockSize, 16); - /* Store the result in the destination */ - arm_sqrt_q15(in1, pResult); + arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); #else /* Run the below code for Cortex-M0 */ q15_t in; /* temporary variable to store the input value */ - q31_t tmp; /* temporary variable to store the input value */ uint32_t blkCnt; /* loop counter */ /* Loop over blockSize number of values */ @@ -146,12 +141,8 @@ } /* Truncating and saturating the accumulator to 1.15 format */ - tmp = (q31_t)(sum >> 15); - - in = __SSAT(tmp / blockSize, 16); - /* Store the result in the destination */ - arm_sqrt_q15(in, pResult); + arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); #endif /* #ifndef ARM_MATH_CM0_FAMILY */
--- a/cmsis_dsp/StatisticsFunctions/arm_rms_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/StatisticsFunctions/arm_rms_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_rms_q31.c @@ -141,12 +141,8 @@ } /* Convert data in 2.62 to 1.31 by 31 right shifts and saturate */ - - sum = __SSAT(sum >> 31, 31); - - /* Compute Rms and store the result in the destination vector */ - arm_sqrt_q31((q31_t) ((q31_t) sum / (int32_t) blockSize), pResult); + arm_sqrt_q31(clip_q63_to_q31((sum / (q63_t) blockSize) >> 31), pResult); } /**
--- a/cmsis_dsp/StatisticsFunctions/arm_std_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_std_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_std_f32.c
@@ -86,13 +86,19 @@
float32_t sumOfSquares = 0.0f; /* Sum of squares */
float32_t in; /* input value */
uint32_t blkCnt; /* loop counter */
-
+
#ifndef ARM_MATH_CM0_FAMILY
/* Run the below code for Cortex-M4 and Cortex-M3 */
float32_t meanOfSquares, mean, squareOfMean;
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/*loop Unrolling */
blkCnt = blockSize >> 2u;
@@ -158,6 +164,12 @@
float32_t squareOfSum; /* Square of Sum */
float32_t var; /* Temporary varaince storage */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/* Loop over blockSize number of values */
blkCnt = blockSize;
--- a/cmsis_dsp/StatisticsFunctions/arm_std_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_std_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_std_q15.c
@@ -77,11 +77,9 @@
{
q31_t sum = 0; /* Accumulator */
q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
- q15_t mean; /* mean */
uint32_t blkCnt; /* loop counter */
- q15_t t; /* Temporary variable */
q63_t sumOfSquares = 0; /* Accumulator */
-
+
#ifndef ARM_MATH_CM0_FAMILY
/* Run the below code for Cortex-M4 and Cortex-M3 */
@@ -89,6 +87,12 @@
q31_t in; /* input value */
q15_t in1; /* input value */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/*loop Unrolling */
blkCnt = blockSize >> 2u;
@@ -131,30 +135,26 @@
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- t = (q15_t) ((1.0 / (blockSize - 1)) * 16384LL);
- sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u);
-
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u);
-
- /* Compute mean of all input values */
- t = (q15_t) ((1.0 / (blockSize * (blockSize - 1))) * 32768LL);
- mean = (q15_t) __SSAT(sum, 16u);
+ meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1));
/* Compute square of mean */
- squareOfMean = ((q31_t) mean * mean) >> 15;
- squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15);
+ squareOfMean = (q31_t) ((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
/* mean of the squares minus the square of the mean. */
- in1 = (q15_t) (meanOfSquares - squareOfMean);
-
/* Compute standard deviation and store the result to the destination */
- arm_sqrt_q15(in1, pResult);
+ arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15, 16u), pResult);
#else
/* Run the below code for Cortex-M0 */
q15_t in; /* input value */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/* Loop over blockSize number of values */
blkCnt = blockSize;
@@ -176,24 +176,14 @@
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- t = (q15_t) ((1.0 / (blockSize - 1)) * 16384LL);
- sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u);
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u);
+ meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1));
- /* Compute mean of all input values */
- mean = (q15_t) __SSAT(sum, 16u);
-
- /* Compute square of mean of the input samples
- * and then store the result in a temporary variable, squareOfMean.*/
- t = (q15_t) ((1.0 / (blockSize * (blockSize - 1))) * 32768LL);
- squareOfMean = ((q31_t) mean * mean) >> 15;
- squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15);
+ /* Compute square of mean */
+ squareOfMean = (q31_t) ((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
/* mean of the squares minus the square of the mean. */
- in = (q15_t) (meanOfSquares - squareOfMean);
-
/* Compute standard deviation and store the result to the destination */
- arm_sqrt_q15(in, pResult);
+ arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15, 16u), pResult);
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
--- a/cmsis_dsp/StatisticsFunctions/arm_std_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_std_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_std_q31.c
@@ -60,16 +60,17 @@
* <b>Scaling and Overflow Behavior:</b>
*
*\par
- * The function is implemented using an internal 64-bit accumulator.
- * The input is represented in 1.31 format, and intermediate multiplication
- * yields a 2.62 format.
- * The accumulator maintains full precision of the intermediate multiplication results,
- * but provides only a single guard bit.
- * There is no saturation on intermediate additions.
- * If the accumulator overflows it wraps around and distorts the result.
- * In order to avoid overflows completely the input signal must be scaled down by
- * log2(blockSize) bits, as a total of blockSize additions are performed internally.
- * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.
+ * The function is implemented using an internal 64-bit accumulator.
+ * The input is represented in 1.31 format, which is then downshifted by 8 bits
+ * which yields 1.23, and intermediate multiplication yields a 2.46 format.
+ * The accumulator maintains full precision of the intermediate multiplication results,
+ * but provides only a 16 guard bits.
+ * There is no saturation on intermediate additions.
+ * If the accumulator overflows it wraps around and distorts the result.
+ * In order to avoid overflows completely the input signal must be scaled down by
+ * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.
+ * After division, internal variables should be Q18.46
+ * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value.
*
*/
@@ -80,13 +81,17 @@
q31_t * pResult)
{
q63_t sum = 0; /* Accumulator */
- q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
- q31_t mean; /* mean */
+ q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
q31_t in; /* input value */
- q31_t t; /* Temporary variable */
uint32_t blkCnt; /* loop counter */
q63_t sumOfSquares = 0; /* Accumulator */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
#ifndef ARM_MATH_CM0_FAMILY
/* Run the below code for Cortex-M4 and Cortex-M3 */
@@ -101,16 +106,16 @@
/* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
/* Compute Sum of squares of the input samples
* and then store the result in a temporary variable, sum. */
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sum += in;
sumOfSquares += ((q63_t) (in) * (in));
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sum += in;
sumOfSquares += ((q63_t) (in) * (in));
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sum += in;
sumOfSquares += ((q63_t) (in) * (in));
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sum += in;
sumOfSquares += ((q63_t) (in) * (in));
@@ -127,7 +132,7 @@
/* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
/* Compute Sum of squares of the input samples
* and then store the result in a temporary variable, sum. */
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sum += in;
sumOfSquares += ((q63_t) (in) * (in));
@@ -135,12 +140,9 @@
blkCnt--;
}
- t = (q31_t) ((1.0f / (float32_t) (blockSize - 1u)) * 1073741824.0f);
-
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- sumOfSquares = (sumOfSquares >> 31);
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 30);
+ meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
#else
@@ -154,7 +156,7 @@
/* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
/* Compute Sum of squares of the input samples
* and then store the result in a temporary variable, sumOfSquares. */
- in = *pSrc++;
+ in = *pSrc++ >> 8;
sumOfSquares += ((q63_t) (in) * (in));
/* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
@@ -167,23 +169,15 @@
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- t = (q31_t) ((1.0f / (float32_t) (blockSize - 1u)) * 1073741824.0f);
- sumOfSquares = (sumOfSquares >> 31);
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 30);
+ meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
- /* Compute mean of all input values */
- t = (q31_t) ((1.0f / (blockSize * (blockSize - 1u))) * 2147483648.0f);
- mean = (q31_t) (sum);
-
/* Compute square of mean */
- squareOfMean = (q31_t) (((q63_t) mean * mean) >> 31);
- squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 31);
-
+ squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1u));
/* Compute standard deviation and then store the result to the destination */
- arm_sqrt_q31(meanOfSquares - squareOfMean, pResult);
+ arm_sqrt_q31((meanOfSquares - squareOfMean) >> 15, pResult);
}
--- a/cmsis_dsp/StatisticsFunctions/arm_var_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_var_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_var_f32.c
@@ -87,13 +87,19 @@
float32_t sumOfSquares = 0.0f; /* Sum of squares */
float32_t in; /* input value */
uint32_t blkCnt; /* loop counter */
-
+
#ifndef ARM_MATH_CM0_FAMILY
-
+
/* Run the below code for Cortex-M4 and Cortex-M3 */
float32_t meanOfSquares, mean, squareOfMean; /* Temporary variables */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/*loop Unrolling */
blkCnt = blockSize >> 2u;
@@ -157,6 +163,12 @@
/* Run the below code for Cortex-M0 */
float32_t squareOfSum; /* Square of Sum */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/* Loop over blockSize number of values */
blkCnt = blockSize;
--- a/cmsis_dsp/StatisticsFunctions/arm_var_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_var_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_var_q15.c
@@ -75,21 +75,26 @@
void arm_var_q15(
q15_t * pSrc,
uint32_t blockSize,
- q31_t * pResult)
+ q15_t * pResult)
{
+
q31_t sum = 0; /* Accumulator */
- q31_t meanOfSquares, squareOfMean; /* Mean of square and square of mean */
- q15_t mean; /* mean */
+ q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
uint32_t blkCnt; /* loop counter */
- q15_t t; /* Temporary variable */
q63_t sumOfSquares = 0; /* Accumulator */
-
+
#ifndef ARM_MATH_CM0_FAMILY
/* Run the below code for Cortex-M4 and Cortex-M3 */
- q31_t in; /* Input variable */
- q15_t in1; /* Temporary variable */
+ q31_t in; /* input value */
+ q15_t in1; /* input value */
+
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
/*loop Unrolling */
blkCnt = blockSize >> 2u;
@@ -124,8 +129,8 @@
/* Compute Sum of squares of the input samples
* and then store the result in a temporary variable, sum. */
in1 = *pSrc++;
+ sumOfSquares = __SMLALD(in1, in1, sumOfSquares);
sum += in1;
- sumOfSquares = __SMLALD(in1, in1, sumOfSquares);
/* Decrement the loop counter */
blkCnt--;
@@ -133,16 +138,25 @@
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- t = (q15_t) ((1.0f / (float32_t) (blockSize - 1u)) * 16384);
- sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u);
+ meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1));
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u);
+ /* Compute square of mean */
+ squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+ /* mean of the squares minus the square of the mean. */
+ *pResult = (meanOfSquares - squareOfMean) >> 15;
#else
/* Run the below code for Cortex-M0 */
+ q15_t in; /* input value */
- q15_t in; /* Temporary variable */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
/* Loop over blockSize number of values */
blkCnt = blockSize;
@@ -164,23 +178,16 @@
/* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- t = (q15_t) ((1.0f / (float32_t) (blockSize - 1u)) * 16384);
- sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u);
- meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u);
+ meanOfSquares = (q31_t) (sumOfSquares / (q63_t)(blockSize - 1));
+
+ /* Compute square of mean */
+ squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
+
+ /* mean of the squares minus the square of the mean. */
+ *pResult = (meanOfSquares - squareOfMean) >> 15;
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
- /* Compute mean of all input values */
- t = (q15_t) ((1.0f / (float32_t) (blockSize * (blockSize - 1u))) * 32768);
- mean = __SSAT(sum, 16u);
-
- /* Compute square of mean */
- squareOfMean = ((q31_t) mean * mean) >> 15;
- squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15);
-
- /* Compute variance and then store the result to the destination */
- *pResult = (meanOfSquares - squareOfMean);
-
}
/**
--- a/cmsis_dsp/StatisticsFunctions/arm_var_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/StatisticsFunctions/arm_var_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_var_q31.c
@@ -61,15 +61,16 @@
*
*\par
* The function is implemented using an internal 64-bit accumulator.
- * The input is represented in 1.31 format, and intermediate multiplication
- * yields a 2.62 format.
+ * The input is represented in 1.31 format, which is then downshifted by 8 bits
+ * which yields 1.23, and intermediate multiplication yields a 2.46 format.
* The accumulator maintains full precision of the intermediate multiplication results,
- * but provides only a single guard bit.
+ * but provides only a 16 guard bits.
* There is no saturation on intermediate additions.
* If the accumulator overflows it wraps around and distorts the result.
* In order to avoid overflows completely the input signal must be scaled down by
- * log2(blockSize) bits, as a total of blockSize additions are performed internally.
- * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.
+ * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally.
+ * After division, internal variables should be Q18.46
+ * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value.
*
*/
@@ -77,20 +78,23 @@
void arm_var_q31(
q31_t * pSrc,
uint32_t blockSize,
- q63_t * pResult)
+ q31_t * pResult)
{
- q63_t sum = 0, sumSquare = 0; /* Accumulator */
- q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
- q31_t mean; /* mean */
+ q63_t sum = 0; /* Accumulator */
+ q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */
q31_t in; /* input value */
- q31_t t; /* Temporary variable */
uint32_t blkCnt; /* loop counter */
+ q63_t sumOfSquares = 0; /* Accumulator */
+ if(blockSize == 1)
+ {
+ *pResult = 0;
+ return;
+ }
+
#ifndef ARM_MATH_CM0_FAMILY
/* Run the below code for Cortex-M4 and Cortex-M3 */
- q63_t sumSquare1 = 0; /* Accumulator */
- q31_t in1, in2, in3, in4; /* Temporary input variables */
/*loop Unrolling */
blkCnt = blockSize >> 2u;
@@ -100,76 +104,81 @@
while(blkCnt > 0u)
{
/* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
- /* Compute Sum of squares of the input samples
+ /* Compute Sum of squares of the input samples
* and then store the result in a temporary variable, sum. */
- /* read input samples from source buffer */
- in1 = pSrc[0];
- in2 = pSrc[1];
-
- /* calculate sum of inputs */
- sum += in1;
- /* calculate sum of squares */
- sumSquare += ((q63_t) (in1) * (in1));
- in3 = pSrc[2];
- sum += in2;
- sumSquare1 += ((q63_t) (in2) * (in2));
- in4 = pSrc[3];
- sum += in3;
- sumSquare += ((q63_t) (in3) * (in3));
- sum += in4;
- sumSquare1 += ((q63_t) (in4) * (in4));
-
- /* update input pointer to process next samples */
- pSrc += 4u;
+ in = *pSrc++ >> 8;
+ sum += in;
+ sumOfSquares += ((q63_t) (in) * (in));
+ in = *pSrc++ >> 8;
+ sum += in;
+ sumOfSquares += ((q63_t) (in) * (in));
+ in = *pSrc++ >> 8;
+ sum += in;
+ sumOfSquares += ((q63_t) (in) * (in));
+ in = *pSrc++ >> 8;
+ sum += in;
+ sumOfSquares += ((q63_t) (in) * (in));
/* Decrement the loop counter */
blkCnt--;
}
- /* add two accumulators */
- sumSquare = sumSquare + sumSquare1;
-
/* If the blockSize is not a multiple of 4, compute any remaining output samples here.
** No loop unrolling is used. */
blkCnt = blockSize % 0x4u;
+ while(blkCnt > 0u)
+ {
+ /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
+ /* Compute Sum of squares of the input samples
+ * and then store the result in a temporary variable, sum. */
+ in = *pSrc++ >> 8;
+ sum += in;
+ sumOfSquares += ((q63_t) (in) * (in));
+
+ /* Decrement the loop counter */
+ blkCnt--;
+ }
+
+ /* Compute Mean of squares of the input samples
+ * and then store the result in a temporary variable, meanOfSquares. */
+ meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
+
#else
/* Run the below code for Cortex-M0 */
+
+ /* Loop over blockSize number of values */
blkCnt = blockSize;
-#endif /* #ifndef ARM_MATH_CM0_FAMILY */
-
while(blkCnt > 0u)
{
/* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */
- /* Compute Sum of squares of the input samples
- * and then store the result in a temporary variable, sum. */
- in = *pSrc++;
- sumSquare += ((q63_t) (in) * (in));
+ /* Compute Sum of squares of the input samples
+ * and then store the result in a temporary variable, sumOfSquares. */
+ in = *pSrc++ >> 8;
+ sumOfSquares += ((q63_t) (in) * (in));
+
+ /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */
+ /* Compute sum of all input values and then store the result in a temporary variable, sum. */
sum += in;
/* Decrement the loop counter */
blkCnt--;
}
- t = (q31_t) ((1.0f / (float32_t) (blockSize - 1u)) * 1073741824.0f);
-
- /* Compute Mean of squares of the input samples
+ /* Compute Mean of squares of the input samples
* and then store the result in a temporary variable, meanOfSquares. */
- sumSquare = (sumSquare >> 31);
- meanOfSquares = (q31_t) ((sumSquare * t) >> 30);
+ meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1);
- /* Compute mean of all input values */
- t = (q31_t) ((1.0f / (blockSize * (blockSize - 1u))) * 2147483648.0f);
- mean = (q31_t) (sum);
+#endif /* #ifndef ARM_MATH_CM0_FAMILY */
/* Compute square of mean */
- squareOfMean = (q31_t) (((q63_t) mean * mean) >> 31);
- squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 31);
+ squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1u));
+
- /* Compute variance and then store the result to the destination */
- *pResult = (q63_t) meanOfSquares - squareOfMean;
+ /* Compute standard deviation and then store the result to the destination */
+ *pResult = (meanOfSquares - squareOfMean) >> 15;
}
--- a/cmsis_dsp/SupportFunctions/arm_copy_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_copy_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_copy_f32.c
--- a/cmsis_dsp/SupportFunctions/arm_copy_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_copy_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_copy_q15.c
--- a/cmsis_dsp/SupportFunctions/arm_copy_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_copy_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_copy_q31.c
--- a/cmsis_dsp/SupportFunctions/arm_copy_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_copy_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_copy_q7.c
--- a/cmsis_dsp/SupportFunctions/arm_fill_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_fill_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fill_f32.c
--- a/cmsis_dsp/SupportFunctions/arm_fill_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_fill_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fill_q15.c
--- a/cmsis_dsp/SupportFunctions/arm_fill_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_fill_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fill_q31.c
--- a/cmsis_dsp/SupportFunctions/arm_fill_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_fill_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_fill_q7.c
--- a/cmsis_dsp/SupportFunctions/arm_float_to_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/SupportFunctions/arm_float_to_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_float_to_q15.c
@@ -104,22 +104,22 @@
/* convert from float to q15 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 32768.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
in = *pIn++;
in = (in * 32768.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
in = *pIn++;
in = (in * 32768.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
in = *pIn++;
in = (in * 32768.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
#else
@@ -149,7 +149,7 @@
/* convert from float to q15 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 32768.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q15_t) (__SSAT((q31_t) (in), 16));
#else
--- a/cmsis_dsp/SupportFunctions/arm_float_to_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/SupportFunctions/arm_float_to_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_float_to_q31.c
@@ -109,22 +109,22 @@
/* convert from float to Q31 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 2147483648.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = clip_q63_to_q31((q63_t) (in));
in = *pIn++;
in = (in * 2147483648.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = clip_q63_to_q31((q63_t) (in));
in = *pIn++;
in = (in * 2147483648.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = clip_q63_to_q31((q63_t) (in));
in = *pIn++;
in = (in * 2147483648.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = clip_q63_to_q31((q63_t) (in));
#else
@@ -155,7 +155,7 @@
/* convert from float to Q31 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 2147483648.0f);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = clip_q63_to_q31((q63_t) (in));
#else
--- a/cmsis_dsp/SupportFunctions/arm_float_to_q7.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/SupportFunctions/arm_float_to_q7.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_float_to_q7.c
@@ -103,22 +103,22 @@
/* convert from float to q7 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 128);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
in = *pIn++;
in = (in * 128);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
in = *pIn++;
in = (in * 128);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
in = *pIn++;
in = (in * 128);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
#else
@@ -148,7 +148,7 @@
/* convert from float to q7 and then store the results in the destination buffer */
in = *pIn++;
in = (in * 128);
- in += in > 0 ? 0.5 : -0.5;
+ in += in > 0.0f ? 0.5f : -0.5f;
*pDst++ = (q7_t) (__SSAT((q15_t) (in), 8));
#else
--- a/cmsis_dsp/SupportFunctions/arm_q15_to_float.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q15_to_float.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q15_to_float.c
--- a/cmsis_dsp/SupportFunctions/arm_q15_to_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q15_to_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q15_to_q31.c
--- a/cmsis_dsp/SupportFunctions/arm_q15_to_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q15_to_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q15_to_q7.c
--- a/cmsis_dsp/SupportFunctions/arm_q31_to_float.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q31_to_float.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q31_to_float.c
--- a/cmsis_dsp/SupportFunctions/arm_q31_to_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q31_to_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q31_to_q15.c
--- a/cmsis_dsp/SupportFunctions/arm_q31_to_q7.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q31_to_q7.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q31_to_q7.c
--- a/cmsis_dsp/SupportFunctions/arm_q7_to_float.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q7_to_float.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q7_to_float.c
--- a/cmsis_dsp/SupportFunctions/arm_q7_to_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q7_to_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q7_to_q15.c
--- a/cmsis_dsp/SupportFunctions/arm_q7_to_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/SupportFunctions/arm_q7_to_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_q7_to_q31.c
--- a/cmsis_dsp/SupportFunctions/math_helper.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/SupportFunctions/math_helper.c Fri Nov 20 08:45:18 2015 +0000
@@ -164,8 +164,7 @@
uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples)
{
uint32_t i;
- int32_t diff;
- uint32_t diffCrnt = 0;
+ int32_t diff, diffCrnt = 0;
uint32_t maxDiff = 0;
for (i = 0; i < numSamples; i++)
@@ -193,8 +192,7 @@
uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples)
{
uint32_t i;
- int32_t diff;
- uint32_t diffCrnt = 0;
+ int32_t diff, diffCrnt = 0;
uint32_t maxDiff = 0;
for (i = 0; i < numSamples; i++)
--- a/cmsis_dsp/TransformFunctions/arm_bitreversal.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_bitreversal.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_bitreversal.c
--- a/cmsis_dsp/TransformFunctions/arm_bitreversal2.S Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_bitreversal2.S Fri Nov 20 08:45:18 2015 +0000
@@ -1,27 +1,27 @@
-;/* ----------------------------------------------------------------------
-;* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
-;*
-;* $Date: 17. January 2013
-;* $Revision: V1.4.1
-;*
-;* Project: CMSIS DSP Library
-;* Title: arm_bitreversal2.S
-;*
+;/* ----------------------------------------------------------------------
+;* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+;*
+;* $Date: 19. March 2015
+;* $Revision: V.1.4.5
+;*
+;* Project: CMSIS DSP Library
+;* Title: arm_bitreversal2.S
+;*
;* Description: This is the arm_bitreversal_32 function done in
-;* assembly for maximum speed. This function is called
-;* after doing an fft to reorder the output. The function
-;* is loop unrolled by 2.
-;*
+;* assembly for maximum speed. This function is called
+;* after doing an fft to reorder the output. The function
+;* is loop unrolled by 2. arm_bitreversal_16 as well.
+;*
;* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
-;*
-;* Redistribution and use in source and binary forms, with or without
+;*
+;* Redistribution and use in source and binary forms, with or without
;* modification, are permitted provided that the following conditions
;* are met:
;* - Redistributions of source code must retain the above copyright
;* notice, this list of conditions and the following disclaimer.
;* - Redistributions in binary form must reproduce the above copyright
;* notice, this list of conditions and the following disclaimer in
-;* the documentation and/or other materials provided with the
+;* the documentation and/or other materials provided with the
;* distribution.
;* - Neither the name of ARM LIMITED nor the names of its contributors
;* may be used to endorse or promote products derived from this
@@ -30,7 +30,7 @@
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
;* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
@@ -38,69 +38,100 @@
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-;* POSSIBILITY OF SUCH DAMAGE.
+;* POSSIBILITY OF SUCH DAMAGE.
;* -------------------------------------------------------------------- */
-#if defined(__CC_ARM) //Keil
- #define CODESECT AREA ||.text||, CODE, READONLY, ALIGN=2
- #define LABEL
-#elif defined(__IASMARM__) //IAR
- #define CODESECT SECTION `.text`:CODE
- #define PROC
- #define LABEL
+#if defined(__CC_ARM) // Keil
+ #define CODESECT AREA ||.text||, CODE, READONLY, ALIGN=2
+ #define LABEL
+#elif defined(__IASMARM__) // IAR
+ #define CODESECT SECTION `.text`:CODE
+ #define PROC
+ #define LABEL
+ #define ENDP
+ #define EXPORT PUBLIC
+#elif defined(__CSMC__) /* Cosmic */
+ #define CODESECT switch .text
+ #define THUMB
+ #define EXPORT xdef
+ #define PROC :
+ #define LABEL :
#define ENDP
- #define EXPORT PUBLIC
-#elif defined (__GNUC__) //GCC
- .syntax unified
- .cpu cortex-m4
- .fpu softvfp
- #define THUMB .thumb
- #define CODESECT .section text
- #define EXPORT .global
- #define PROC :
- #define LABEL :
- #define ENDP
- #define END
+ #define arm_bitreversal_32 _arm_bitreversal_32
+#elif defined (__GNUC__) // GCC
+ #define THUMB .thumb
+ #define CODESECT .section .text
+ #define EXPORT .global
+ #define PROC :
+ #define LABEL :
+ #define ENDP
+ #define END
+
+ .syntax unified
#endif
CODESECT
THUMB
-;/*
-;* @brief In-place bit reversal function.
-;* @param[in, out] *pSrc points to the in-place buffer of unknown 32-bit data type.
+;/*
+;* @brief In-place bit reversal function.
+;* @param[in, out] *pSrc points to the in-place buffer of unknown 32-bit data type.
;* @param[in] bitRevLen bit reversal table length
-;* @param[in] *pBitRevTab points to bit reversal table.
-;* @return none.
+;* @param[in] *pBitRevTab points to bit reversal table.
+;* @return none.
;*/
EXPORT arm_bitreversal_32
-
+ EXPORT arm_bitreversal_16
+
#if defined(ARM_MATH_CM0) || defined(ARM_MATH_CM0PLUS)
arm_bitreversal_32 PROC
ADDS r3,r1,#1
- PUSH {r4-r6}
- ADDS r1,r2,#0
- LSRS r3,r3,#1
+ PUSH {r4-r6}
+ ADDS r1,r2,#0
+ LSRS r3,r3,#1
arm_bitreversal_32_0 LABEL
- LDRH r2,[r1,#2]
- LDRH r6,[r1,#0]
- ADD r2,r0,r2
- ADD r6,r0,r6
- LDR r5,[r2,#0]
+ LDRH r2,[r1,#2]
+ LDRH r6,[r1,#0]
+ ADD r2,r0,r2
+ ADD r6,r0,r6
+ LDR r5,[r2,#0]
LDR r4,[r6,#0]
STR r5,[r6,#0]
- STR r4,[r2,#0]
- LDR r5,[r2,#4]
- LDR r4,[r6,#4]
- STR r5,[r6,#4]
- STR r4,[r2,#4]
- ADDS r1,r1,#4
- SUBS r3,r3,#1
+ STR r4,[r2,#0]
+ LDR r5,[r2,#4]
+ LDR r4,[r6,#4]
+ STR r5,[r6,#4]
+ STR r4,[r2,#4]
+ ADDS r1,r1,#4
+ SUBS r3,r3,#1
BNE arm_bitreversal_32_0
POP {r4-r6}
BX lr
ENDP
+arm_bitreversal_16 PROC
+ ADDS r3,r1,#1
+ PUSH {r4-r6}
+ ADDS r1,r2,#0
+ LSRS r3,r3,#1
+arm_bitreversal_16_0 LABEL
+ LDRH r2,[r1,#2]
+ LDRH r6,[r1,#0]
+ LSRS r2,r2,#1
+ LSRS r6,r6,#1
+ ADD r2,r0,r2
+ ADD r6,r0,r6
+ LDR r5,[r2,#0]
+ LDR r4,[r6,#0]
+ STR r5,[r6,#0]
+ STR r4,[r2,#0]
+ ADDS r1,r1,#4
+ SUBS r3,r3,#1
+ BNE arm_bitreversal_16_0
+ POP {r4-r6}
+ BX lr
+ ENDP
+
#else
arm_bitreversal_32 PROC
@@ -108,41 +139,73 @@
CMP r3,#1
IT LS
BXLS lr
- PUSH {r4-r9}
- ADDS r1,r2,#2
- LSRS r3,r3,#2
+ PUSH {r4-r9}
+ ADDS r1,r2,#2
+ LSRS r3,r3,#2
arm_bitreversal_32_0 LABEL ;/* loop unrolled by 2 */
- LDRH r8,[r1,#4]
- LDRH r9,[r1,#2]
- LDRH r2,[r1,#0]
- LDRH r12,[r1,#-2]
- ADD r8,r0,r8
- ADD r9,r0,r9
- ADD r2,r0,r2
- ADD r12,r0,r12
- LDR r7,[r9,#0]
+ LDRH r8,[r1,#4]
+ LDRH r9,[r1,#2]
+ LDRH r2,[r1,#0]
+ LDRH r12,[r1,#-2]
+ ADD r8,r0,r8
+ ADD r9,r0,r9
+ ADD r2,r0,r2
+ ADD r12,r0,r12
+ LDR r7,[r9,#0]
LDR r6,[r8,#0]
- LDR r5,[r2,#0]
+ LDR r5,[r2,#0]
LDR r4,[r12,#0]
STR r6,[r9,#0]
- STR r7,[r8,#0]
+ STR r7,[r8,#0]
STR r5,[r12,#0]
- STR r4,[r2,#0]
- LDR r7,[r9,#4]
- LDR r6,[r8,#4]
- LDR r5,[r2,#4]
- LDR r4,[r12,#4]
- STR r6,[r9,#4]
- STR r7,[r8,#4]
- STR r5,[r12,#4]
- STR r4,[r2,#4]
- ADDS r1,r1,#8
- SUBS r3,r3,#1
+ STR r4,[r2,#0]
+ LDR r7,[r9,#4]
+ LDR r6,[r8,#4]
+ LDR r5,[r2,#4]
+ LDR r4,[r12,#4]
+ STR r6,[r9,#4]
+ STR r7,[r8,#4]
+ STR r5,[r12,#4]
+ STR r4,[r2,#4]
+ ADDS r1,r1,#8
+ SUBS r3,r3,#1
BNE arm_bitreversal_32_0
POP {r4-r9}
BX lr
ENDP
-
+
+arm_bitreversal_16 PROC
+ ADDS r3,r1,#1
+ CMP r3,#1
+ IT LS
+ BXLS lr
+ PUSH {r4-r9}
+ ADDS r1,r2,#2
+ LSRS r3,r3,#2
+arm_bitreversal_16_0 LABEL ;/* loop unrolled by 2 */
+ LDRH r8,[r1,#4]
+ LDRH r9,[r1,#2]
+ LDRH r2,[r1,#0]
+ LDRH r12,[r1,#-2]
+ ADD r8,r0,r8,LSR #1
+ ADD r9,r0,r9,LSR #1
+ ADD r2,r0,r2,LSR #1
+ ADD r12,r0,r12,LSR #1
+ LDR r7,[r9,#0]
+ LDR r6,[r8,#0]
+ LDR r5,[r2,#0]
+ LDR r4,[r12,#0]
+ STR r6,[r9,#0]
+ STR r7,[r8,#0]
+ STR r5,[r12,#0]
+ STR r4,[r2,#0]
+ ADDS r1,r1,#8
+ SUBS r3,r3,#1
+ BNE arm_bitreversal_16_0
+ POP {r4-r9}
+ BX lr
+ ENDP
+
#endif
-
+
END
--- a/cmsis_dsp/TransformFunctions/arm_cfft_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_f32.c
@@ -38,20 +38,19 @@
* POSSIBILITY OF SUCH DAMAGE.
* -------------------------------------------------------------------- */
-
#include "arm_math.h"
#include "arm_common_tables.h"
extern void arm_radix8_butterfly_f32(
- float32_t * pSrc,
- uint16_t fftLen,
- const float32_t * pCoef,
- uint16_t twidCoefModifier);
+ float32_t * pSrc,
+ uint16_t fftLen,
+ const float32_t * pCoef,
+ uint16_t twidCoefModifier);
extern void arm_bitreversal_32(
- uint32_t * pSrc,
- const uint16_t bitRevLen,
- const uint16_t * pBitRevTable);
+ uint32_t * pSrc,
+ const uint16_t bitRevLen,
+ const uint16_t * pBitRevTable);
/**
* @ingroup groupTransforms
@@ -89,7 +88,7 @@
* inverse transform includes a scale of <code>1/fftLen</code> as part of the
* calculation and this matches the textbook definition of the inverse FFT.
* \par
-* Preinitialized data structures containing twiddle factors and bit reversal
+* Pre-initialized data structures containing twiddle factors and bit reversal
* tables are provided and defined in <code>arm_const_structs.h</code>. Include
* this header in your function and then pass one of the constant structures as
* an argument to arm_cfft_f32. For example:
@@ -107,442 +106,454 @@
* than the new functions.
* \par
* An example of initialization of the constants for the arm_cfft_f32 function follows:
-* \par
+* \code
* const static arm_cfft_instance_f32 *S;
* ...
-* switch (length) {
-* case 16:
-* S = & arm_cfft_sR_f32_len16;
-* break;
-* case 32:
-* S = & arm_cfft_sR_f32_len32;
-* break;
-* case 64:
-* S = & arm_cfft_sR_f32_len64;
-* break;
-* case 128:
-* S = & arm_cfft_sR_f32_len128;
-* break;
-* case 256:
-* S = & arm_cfft_sR_f32_len256;
-* break;
-* case 512:
-* S = & arm_cfft_sR_f32_len512;
-* break;
-* case 1024:
-* S = & arm_cfft_sR_f32_len1024;
-* break;
-* case 2048:
-* S = & arm_cfft_sR_f32_len2048;
-* break;
-* case 4096:
-* S = & arm_cfft_sR_f32_len4096;
-* break;
-* }
+* switch (length) {
+* case 16:
+* S = &arm_cfft_sR_f32_len16;
+* break;
+* case 32:
+* S = &arm_cfft_sR_f32_len32;
+* break;
+* case 64:
+* S = &arm_cfft_sR_f32_len64;
+* break;
+* case 128:
+* S = &arm_cfft_sR_f32_len128;
+* break;
+* case 256:
+* S = &arm_cfft_sR_f32_len256;
+* break;
+* case 512:
+* S = &arm_cfft_sR_f32_len512;
+* break;
+* case 1024:
+* S = &arm_cfft_sR_f32_len1024;
+* break;
+* case 2048:
+* S = &arm_cfft_sR_f32_len2048;
+* break;
+* case 4096:
+* S = &arm_cfft_sR_f32_len4096;
+* break;
+* }
+* \endcode
* \par Q15 and Q31
-* The library provides radix-2 and radix-4 FFT algorithms for fixed-point data. The
-* radix-2 algorithm supports lengths of [16, 32, 64, ..., 4096]. The radix-4
-* algorithm supports lengths of [16, 64, 256, ..., 4096]. When possible, you
-* should use the radix-4 algorithm since it is faster than the radix-2 of the
-* same length.
+* The floating-point complex FFT uses a mixed-radix algorithm. Multiple radix-4
+* stages are performed along with a single radix-2 stage, as needed.
+* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses
+* a different twiddle factor table.
+* \par
+* The function uses the standard FFT definition and output values may grow by a
+* factor of <code>fftLen</code> when computing the forward transform. The
+* inverse transform includes a scale of <code>1/fftLen</code> as part of the
+* calculation and this matches the textbook definition of the inverse FFT.
+* \par
+* Pre-initialized data structures containing twiddle factors and bit reversal
+* tables are provided and defined in <code>arm_const_structs.h</code>. Include
+* this header in your function and then pass one of the constant structures as
+* an argument to arm_cfft_q31. For example:
* \par
-* The forward FFTs include scaling in order to prevent results from overflowing.
-* Intermediate results are scaled down during each butterfly stage. In the
-* radix-2 algorithm, a scale of 0.5 is applied during each butterfly. In the
-* radix-4 algorithm, a scale of 0.25 is applied. The scaling applies to both
-* the forward and the inverse FFTs. Thus the forward FFT contains an additional
-* scale factor of <code>1/fftLen</code> as compared to the standard textbook
-* definition of the FFT. The inverse FFT also scales down during each butterfly
-* stage and this corresponds to the standard textbook definition.
+* <code>arm_cfft_q31(arm_cfft_sR_q31_len64, pSrc, 1, 1)</code>
+* \par
+* computes a 64-point inverse complex FFT including bit reversal.
+* The data structures are treated as constant data and not modified during the
+* calculation. The same data structure can be reused for multiple transforms
+* including mixing forward and inverse transforms.
+* \par
+* Earlier releases of the library provided separate radix-2 and radix-4
+* algorithms that operated on floating-point data. These functions are still
+* provided but are deprecated. The older functions are slower and less general
+* than the new functions.
* \par
-* A separate instance structure must be defined for each transform used but
-* twiddle factor and bit reversal tables can be reused.
-* \par
-* There is also an associated initialization function for each data type.
-* The initialization function performs the following operations:
-* - Sets the values of the internal structure fields.
-* - Initializes twiddle factor table and bit reversal table pointers.
-* \par
-* Use of the initialization function is optional.
-* However, if the initialization function is used, then the instance structure
-* cannot be placed into a const data section. To place an instance structure
-* into a const data section, the instance structure should be manually
-* initialized as follows:
-* <pre>
-*arm_cfft_radix2_instance_q31 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};
-*arm_cfft_radix2_instance_q15 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};
-*arm_cfft_radix4_instance_q31 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};
-*arm_cfft_radix4_instance_q15 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};
-*arm_cfft_instance_f32 S = {fftLen, pTwiddle, pBitRevTable, bitRevLength};
-* </pre>
-* \par
-* where <code>fftLen</code> length of CFFT/CIFFT; <code>ifftFlag</code> Flag for
-* selection of forward or inverse transform. When ifftFlag is set the inverse
-* transform is calculated.
-* <code>bitReverseFlag</code> Flag for selection of output order (Set bitReverseFlag to output in normal order otherwise output in bit reversed order);
-* <code>pTwiddle</code>points to array of twiddle coefficients; <code>pBitRevTable</code> points to the bit reversal table.
-* <code>twidCoefModifier</code> modifier for twiddle factor table which supports all FFT lengths with same table;
-* <code>pBitRevTable</code> modifier for bit reversal table which supports all FFT lengths with same table.
-* <code>onebyfftLen</code> value of 1/fftLen to calculate CIFFT;
-* \par
-* The Q15 and Q31 FFT functions use a large bit reversal and twiddle factor
-* table. The tables are defined for the maximum length transform and a subset
-* of the coefficients are used in shorter transforms.
+* An example of initialization of the constants for the arm_cfft_q31 function follows:
+* \code
+* const static arm_cfft_instance_q31 *S;
+* ...
+* switch (length) {
+* case 16:
+* S = &arm_cfft_sR_q31_len16;
+* break;
+* case 32:
+* S = &arm_cfft_sR_q31_len32;
+* break;
+* case 64:
+* S = &arm_cfft_sR_q31_len64;
+* break;
+* case 128:
+* S = &arm_cfft_sR_q31_len128;
+* break;
+* case 256:
+* S = &arm_cfft_sR_q31_len256;
+* break;
+* case 512:
+* S = &arm_cfft_sR_q31_len512;
+* break;
+* case 1024:
+* S = &arm_cfft_sR_q31_len1024;
+* break;
+* case 2048:
+* S = &arm_cfft_sR_q31_len2048;
+* break;
+* case 4096:
+* S = &arm_cfft_sR_q31_len4096;
+* break;
+* }
+* \endcode
*
*/
void arm_cfft_radix8by2_f32( arm_cfft_instance_f32 * S, float32_t * p1)
{
- uint32_t L = S->fftLen;
- float32_t * pCol1, * pCol2, * pMid1, * pMid2;
- float32_t * p2 = p1 + L;
- const float32_t * tw = (float32_t *) S->pTwiddle;
- float32_t t1[4], t2[4], t3[4], t4[4], twR, twI;
- float32_t m0, m1, m2, m3;
- uint32_t l;
+ uint32_t L = S->fftLen;
+ float32_t * pCol1, * pCol2, * pMid1, * pMid2;
+ float32_t * p2 = p1 + L;
+ const float32_t * tw = (float32_t *) S->pTwiddle;
+ float32_t t1[4], t2[4], t3[4], t4[4], twR, twI;
+ float32_t m0, m1, m2, m3;
+ uint32_t l;
- pCol1 = p1;
- pCol2 = p2;
+ pCol1 = p1;
+ pCol2 = p2;
- // Define new length
- L >>= 1;
- // Initialize mid pointers
- pMid1 = p1 + L;
- pMid2 = p2 + L;
+ // Define new length
+ L >>= 1;
+ // Initialize mid pointers
+ pMid1 = p1 + L;
+ pMid2 = p2 + L;
- // do two dot Fourier transform
- for ( l = L >> 2; l > 0; l-- )
- {
- t1[0] = p1[0];
- t1[1] = p1[1];
- t1[2] = p1[2];
- t1[3] = p1[3];
+ // do two dot Fourier transform
+ for ( l = L >> 2; l > 0; l-- )
+ {
+ t1[0] = p1[0];
+ t1[1] = p1[1];
+ t1[2] = p1[2];
+ t1[3] = p1[3];
- t2[0] = p2[0];
- t2[1] = p2[1];
- t2[2] = p2[2];
- t2[3] = p2[3];
+ t2[0] = p2[0];
+ t2[1] = p2[1];
+ t2[2] = p2[2];
+ t2[3] = p2[3];
- t3[0] = pMid1[0];
- t3[1] = pMid1[1];
- t3[2] = pMid1[2];
- t3[3] = pMid1[3];
-
- t4[0] = pMid2[0];
- t4[1] = pMid2[1];
- t4[2] = pMid2[2];
- t4[3] = pMid2[3];
+ t3[0] = pMid1[0];
+ t3[1] = pMid1[1];
+ t3[2] = pMid1[2];
+ t3[3] = pMid1[3];
- *p1++ = t1[0] + t2[0];
- *p1++ = t1[1] + t2[1];
- *p1++ = t1[2] + t2[2];
- *p1++ = t1[3] + t2[3]; // col 1
+ t4[0] = pMid2[0];
+ t4[1] = pMid2[1];
+ t4[2] = pMid2[2];
+ t4[3] = pMid2[3];
- t2[0] = t1[0] - t2[0];
- t2[1] = t1[1] - t2[1];
- t2[2] = t1[2] - t2[2];
- t2[3] = t1[3] - t2[3]; // for col 2
+ *p1++ = t1[0] + t2[0];
+ *p1++ = t1[1] + t2[1];
+ *p1++ = t1[2] + t2[2];
+ *p1++ = t1[3] + t2[3]; // col 1
- *pMid1++ = t3[0] + t4[0];
- *pMid1++ = t3[1] + t4[1];
- *pMid1++ = t3[2] + t4[2];
- *pMid1++ = t3[3] + t4[3]; // col 1
+ t2[0] = t1[0] - t2[0];
+ t2[1] = t1[1] - t2[1];
+ t2[2] = t1[2] - t2[2];
+ t2[3] = t1[3] - t2[3]; // for col 2
- t4[0] = t4[0] - t3[0];
- t4[1] = t4[1] - t3[1];
- t4[2] = t4[2] - t3[2];
- t4[3] = t4[3] - t3[3]; // for col 2
+ *pMid1++ = t3[0] + t4[0];
+ *pMid1++ = t3[1] + t4[1];
+ *pMid1++ = t3[2] + t4[2];
+ *pMid1++ = t3[3] + t4[3]; // col 1
- twR = *tw++;
- twI = *tw++;
+ t4[0] = t4[0] - t3[0];
+ t4[1] = t4[1] - t3[1];
+ t4[2] = t4[2] - t3[2];
+ t4[3] = t4[3] - t3[3]; // for col 2
+
+ twR = *tw++;
+ twI = *tw++;
- // multiply by twiddle factors
- m0 = t2[0] * twR;
- m1 = t2[1] * twI;
- m2 = t2[1] * twR;
- m3 = t2[0] * twI;
-
- // R = R * Tr - I * Ti
- *p2++ = m0 + m1;
- // I = I * Tr + R * Ti
- *p2++ = m2 - m3;
-
- // use vertical symmetry
- // 0.9988 - 0.0491i <==> -0.0491 - 0.9988i
- m0 = t4[0] * twI;
- m1 = t4[1] * twR;
- m2 = t4[1] * twI;
- m3 = t4[0] * twR;
-
- *pMid2++ = m0 - m1;
- *pMid2++ = m2 + m3;
+ // multiply by twiddle factors
+ m0 = t2[0] * twR;
+ m1 = t2[1] * twI;
+ m2 = t2[1] * twR;
+ m3 = t2[0] * twI;
+
+ // R = R * Tr - I * Ti
+ *p2++ = m0 + m1;
+ // I = I * Tr + R * Ti
+ *p2++ = m2 - m3;
+
+ // use vertical symmetry
+ // 0.9988 - 0.0491i <==> -0.0491 - 0.9988i
+ m0 = t4[0] * twI;
+ m1 = t4[1] * twR;
+ m2 = t4[1] * twI;
+ m3 = t4[0] * twR;
+
+ *pMid2++ = m0 - m1;
+ *pMid2++ = m2 + m3;
- twR = *tw++;
- twI = *tw++;
-
- m0 = t2[2] * twR;
- m1 = t2[3] * twI;
- m2 = t2[3] * twR;
- m3 = t2[2] * twI;
-
- *p2++ = m0 + m1;
- *p2++ = m2 - m3;
-
- m0 = t4[2] * twI;
- m1 = t4[3] * twR;
- m2 = t4[3] * twI;
- m3 = t4[2] * twR;
-
- *pMid2++ = m0 - m1;
- *pMid2++ = m2 + m3;
- }
+ twR = *tw++;
+ twI = *tw++;
+
+ m0 = t2[2] * twR;
+ m1 = t2[3] * twI;
+ m2 = t2[3] * twR;
+ m3 = t2[2] * twI;
+
+ *p2++ = m0 + m1;
+ *p2++ = m2 - m3;
+
+ m0 = t4[2] * twI;
+ m1 = t4[3] * twR;
+ m2 = t4[3] * twI;
+ m3 = t4[2] * twR;
+
+ *pMid2++ = m0 - m1;
+ *pMid2++ = m2 + m3;
+ }
- // first col
- arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 2u);
- // second col
- arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 2u);
-
+ // first col
+ arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 2u);
+ // second col
+ arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 2u);
}
void arm_cfft_radix8by4_f32( arm_cfft_instance_f32 * S, float32_t * p1)
{
- uint32_t L = S->fftLen >> 1;
- float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4;
- const float32_t *tw2, *tw3, *tw4;
- float32_t * p2 = p1 + L;
- float32_t * p3 = p2 + L;
- float32_t * p4 = p3 + L;
- float32_t t2[4], t3[4], t4[4], twR, twI;
- float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1;
- float32_t m0, m1, m2, m3;
- uint32_t l, twMod2, twMod3, twMod4;
+ uint32_t L = S->fftLen >> 1;
+ float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4;
+ const float32_t *tw2, *tw3, *tw4;
+ float32_t * p2 = p1 + L;
+ float32_t * p3 = p2 + L;
+ float32_t * p4 = p3 + L;
+ float32_t t2[4], t3[4], t4[4], twR, twI;
+ float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1;
+ float32_t m0, m1, m2, m3;
+ uint32_t l, twMod2, twMod3, twMod4;
- pCol1 = p1; // points to real values by default
- pCol2 = p2;
- pCol3 = p3;
- pCol4 = p4;
- pEnd1 = p2 - 1; // points to imaginary values by default
- pEnd2 = p3 - 1;
- pEnd3 = p4 - 1;
- pEnd4 = pEnd3 + L;
-
- tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle;
-
- L >>= 1;
+ pCol1 = p1; // points to real values by default
+ pCol2 = p2;
+ pCol3 = p3;
+ pCol4 = p4;
+ pEnd1 = p2 - 1; // points to imaginary values by default
+ pEnd2 = p3 - 1;
+ pEnd3 = p4 - 1;
+ pEnd4 = pEnd3 + L;
+
+ tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle;
+
+ L >>= 1;
- // do four dot Fourier transform
+ // do four dot Fourier transform
- twMod2 = 2;
- twMod3 = 4;
- twMod4 = 6;
+ twMod2 = 2;
+ twMod3 = 4;
+ twMod4 = 6;
- // TOP
- p1ap3_0 = p1[0] + p3[0];
- p1sp3_0 = p1[0] - p3[0];
- p1ap3_1 = p1[1] + p3[1];
- p1sp3_1 = p1[1] - p3[1];
+ // TOP
+ p1ap3_0 = p1[0] + p3[0];
+ p1sp3_0 = p1[0] - p3[0];
+ p1ap3_1 = p1[1] + p3[1];
+ p1sp3_1 = p1[1] - p3[1];
- // col 2
- t2[0] = p1sp3_0 + p2[1] - p4[1];
- t2[1] = p1sp3_1 - p2[0] + p4[0];
- // col 3
- t3[0] = p1ap3_0 - p2[0] - p4[0];
- t3[1] = p1ap3_1 - p2[1] - p4[1];
- // col 4
- t4[0] = p1sp3_0 - p2[1] + p4[1];
- t4[1] = p1sp3_1 + p2[0] - p4[0];
- // col 1
- *p1++ = p1ap3_0 + p2[0] + p4[0];
- *p1++ = p1ap3_1 + p2[1] + p4[1];
+ // col 2
+ t2[0] = p1sp3_0 + p2[1] - p4[1];
+ t2[1] = p1sp3_1 - p2[0] + p4[0];
+ // col 3
+ t3[0] = p1ap3_0 - p2[0] - p4[0];
+ t3[1] = p1ap3_1 - p2[1] - p4[1];
+ // col 4
+ t4[0] = p1sp3_0 - p2[1] + p4[1];
+ t4[1] = p1sp3_1 + p2[0] - p4[0];
+ // col 1
+ *p1++ = p1ap3_0 + p2[0] + p4[0];
+ *p1++ = p1ap3_1 + p2[1] + p4[1];
- // Twiddle factors are ones
- *p2++ = t2[0];
- *p2++ = t2[1];
- *p3++ = t3[0];
- *p3++ = t3[1];
- *p4++ = t4[0];
- *p4++ = t4[1];
-
- tw2 += twMod2;
- tw3 += twMod3;
- tw4 += twMod4;
-
- for (l = (L - 2) >> 1; l > 0; l-- )
- {
+ // Twiddle factors are ones
+ *p2++ = t2[0];
+ *p2++ = t2[1];
+ *p3++ = t3[0];
+ *p3++ = t3[1];
+ *p4++ = t4[0];
+ *p4++ = t4[1];
+
+ tw2 += twMod2;
+ tw3 += twMod3;
+ tw4 += twMod4;
- // TOP
- p1ap3_0 = p1[0] + p3[0];
- p1sp3_0 = p1[0] - p3[0];
- p1ap3_1 = p1[1] + p3[1];
- p1sp3_1 = p1[1] - p3[1];
- // col 2
- t2[0] = p1sp3_0 + p2[1] - p4[1];
- t2[1] = p1sp3_1 - p2[0] + p4[0];
- // col 3
- t3[0] = p1ap3_0 - p2[0] - p4[0];
- t3[1] = p1ap3_1 - p2[1] - p4[1];
- // col 4
- t4[0] = p1sp3_0 - p2[1] + p4[1];
- t4[1] = p1sp3_1 + p2[0] - p4[0];
- // col 1 - top
- *p1++ = p1ap3_0 + p2[0] + p4[0];
- *p1++ = p1ap3_1 + p2[1] + p4[1];
+ for (l = (L - 2) >> 1; l > 0; l-- )
+ {
+ // TOP
+ p1ap3_0 = p1[0] + p3[0];
+ p1sp3_0 = p1[0] - p3[0];
+ p1ap3_1 = p1[1] + p3[1];
+ p1sp3_1 = p1[1] - p3[1];
+ // col 2
+ t2[0] = p1sp3_0 + p2[1] - p4[1];
+ t2[1] = p1sp3_1 - p2[0] + p4[0];
+ // col 3
+ t3[0] = p1ap3_0 - p2[0] - p4[0];
+ t3[1] = p1ap3_1 - p2[1] - p4[1];
+ // col 4
+ t4[0] = p1sp3_0 - p2[1] + p4[1];
+ t4[1] = p1sp3_1 + p2[0] - p4[0];
+ // col 1 - top
+ *p1++ = p1ap3_0 + p2[0] + p4[0];
+ *p1++ = p1ap3_1 + p2[1] + p4[1];
- // BOTTOM
- p1ap3_1 = pEnd1[-1] + pEnd3[-1];
- p1sp3_1 = pEnd1[-1] - pEnd3[-1];
- p1ap3_0 = pEnd1[0] + pEnd3[0];
- p1sp3_0 = pEnd1[0] - pEnd3[0];
- // col 2
- t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1;
- t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1];
- // col 3
- t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1];
- t3[3] = p1ap3_0 - pEnd2[0] - pEnd4[0];
- // col 4
- t4[2] = pEnd2[0] - pEnd4[0] - p1sp3_1;
- t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0;
- // col 1 - Bottom
- *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0];
- *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1];
+ // BOTTOM
+ p1ap3_1 = pEnd1[-1] + pEnd3[-1];
+ p1sp3_1 = pEnd1[-1] - pEnd3[-1];
+ p1ap3_0 = pEnd1[0] + pEnd3[0];
+ p1sp3_0 = pEnd1[0] - pEnd3[0];
+ // col 2
+ t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1;
+ t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1];
+ // col 3
+ t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1];
+ t3[3] = p1ap3_0 - pEnd2[0] - pEnd4[0];
+ // col 4
+ t4[2] = pEnd2[0] - pEnd4[0] - p1sp3_1;
+ t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0;
+ // col 1 - Bottom
+ *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0];
+ *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1];
- // COL 2
- // read twiddle factors
- twR = *tw2++;
- twI = *tw2++;
- // multiply by twiddle factors
- // let Z1 = a + i(b), Z2 = c + i(d)
- // => Z1 * Z2 = (a*c - b*d) + i(b*c + a*d)
- // Top
- m0 = t2[0] * twR;
- m1 = t2[1] * twI;
- m2 = t2[1] * twR;
- m3 = t2[0] * twI;
-
- *p2++ = m0 + m1;
- *p2++ = m2 - m3;
- // use vertical symmetry col 2
- // 0.9997 - 0.0245i <==> 0.0245 - 0.9997i
- // Bottom
- m0 = t2[3] * twI;
- m1 = t2[2] * twR;
- m2 = t2[2] * twI;
- m3 = t2[3] * twR;
-
- *pEnd2-- = m0 - m1;
- *pEnd2-- = m2 + m3;
+ // COL 2
+ // read twiddle factors
+ twR = *tw2++;
+ twI = *tw2++;
+ // multiply by twiddle factors
+ // let Z1 = a + i(b), Z2 = c + i(d)
+ // => Z1 * Z2 = (a*c - b*d) + i(b*c + a*d)
+
+ // Top
+ m0 = t2[0] * twR;
+ m1 = t2[1] * twI;
+ m2 = t2[1] * twR;
+ m3 = t2[0] * twI;
+
+ *p2++ = m0 + m1;
+ *p2++ = m2 - m3;
+ // use vertical symmetry col 2
+ // 0.9997 - 0.0245i <==> 0.0245 - 0.9997i
+ // Bottom
+ m0 = t2[3] * twI;
+ m1 = t2[2] * twR;
+ m2 = t2[2] * twI;
+ m3 = t2[3] * twR;
+
+ *pEnd2-- = m0 - m1;
+ *pEnd2-- = m2 + m3;
- // COL 3
- twR = tw3[0];
- twI = tw3[1];
- tw3 += twMod3;
- // Top
- m0 = t3[0] * twR;
- m1 = t3[1] * twI;
- m2 = t3[1] * twR;
- m3 = t3[0] * twI;
-
- *p3++ = m0 + m1;
- *p3++ = m2 - m3;
- // use vertical symmetry col 3
- // 0.9988 - 0.0491i <==> -0.9988 - 0.0491i
- // Bottom
- m0 = -t3[3] * twR;
- m1 = t3[2] * twI;
- m2 = t3[2] * twR;
- m3 = t3[3] * twI;
-
- *pEnd3-- = m0 - m1;
- *pEnd3-- = m3 - m2;
-
- // COL 4
- twR = tw4[0];
- twI = tw4[1];
- tw4 += twMod4;
- // Top
- m0 = t4[0] * twR;
- m1 = t4[1] * twI;
- m2 = t4[1] * twR;
- m3 = t4[0] * twI;
-
- *p4++ = m0 + m1;
- *p4++ = m2 - m3;
- // use vertical symmetry col 4
- // 0.9973 - 0.0736i <==> -0.0736 + 0.9973i
- // Bottom
- m0 = t4[3] * twI;
- m1 = t4[2] * twR;
- m2 = t4[2] * twI;
- m3 = t4[3] * twR;
-
- *pEnd4-- = m0 - m1;
- *pEnd4-- = m2 + m3;
- }
+ // COL 3
+ twR = tw3[0];
+ twI = tw3[1];
+ tw3 += twMod3;
+ // Top
+ m0 = t3[0] * twR;
+ m1 = t3[1] * twI;
+ m2 = t3[1] * twR;
+ m3 = t3[0] * twI;
+
+ *p3++ = m0 + m1;
+ *p3++ = m2 - m3;
+ // use vertical symmetry col 3
+ // 0.9988 - 0.0491i <==> -0.9988 - 0.0491i
+ // Bottom
+ m0 = -t3[3] * twR;
+ m1 = t3[2] * twI;
+ m2 = t3[2] * twR;
+ m3 = t3[3] * twI;
+
+ *pEnd3-- = m0 - m1;
+ *pEnd3-- = m3 - m2;
+
+ // COL 4
+ twR = tw4[0];
+ twI = tw4[1];
+ tw4 += twMod4;
+ // Top
+ m0 = t4[0] * twR;
+ m1 = t4[1] * twI;
+ m2 = t4[1] * twR;
+ m3 = t4[0] * twI;
+
+ *p4++ = m0 + m1;
+ *p4++ = m2 - m3;
+ // use vertical symmetry col 4
+ // 0.9973 - 0.0736i <==> -0.0736 + 0.9973i
+ // Bottom
+ m0 = t4[3] * twI;
+ m1 = t4[2] * twR;
+ m2 = t4[2] * twI;
+ m3 = t4[3] * twR;
+
+ *pEnd4-- = m0 - m1;
+ *pEnd4-- = m2 + m3;
+ }
- //MIDDLE
- // Twiddle factors are
- // 1.0000 0.7071-0.7071i -1.0000i -0.7071-0.7071i
- p1ap3_0 = p1[0] + p3[0];
- p1sp3_0 = p1[0] - p3[0];
- p1ap3_1 = p1[1] + p3[1];
- p1sp3_1 = p1[1] - p3[1];
+ //MIDDLE
+ // Twiddle factors are
+ // 1.0000 0.7071-0.7071i -1.0000i -0.7071-0.7071i
+ p1ap3_0 = p1[0] + p3[0];
+ p1sp3_0 = p1[0] - p3[0];
+ p1ap3_1 = p1[1] + p3[1];
+ p1sp3_1 = p1[1] - p3[1];
- // col 2
- t2[0] = p1sp3_0 + p2[1] - p4[1];
- t2[1] = p1sp3_1 - p2[0] + p4[0];
- // col 3
- t3[0] = p1ap3_0 - p2[0] - p4[0];
- t3[1] = p1ap3_1 - p2[1] - p4[1];
- // col 4
- t4[0] = p1sp3_0 - p2[1] + p4[1];
- t4[1] = p1sp3_1 + p2[0] - p4[0];
- // col 1 - Top
- *p1++ = p1ap3_0 + p2[0] + p4[0];
- *p1++ = p1ap3_1 + p2[1] + p4[1];
-
- // COL 2
- twR = tw2[0];
- twI = tw2[1];
-
- m0 = t2[0] * twR;
- m1 = t2[1] * twI;
- m2 = t2[1] * twR;
- m3 = t2[0] * twI;
-
- *p2++ = m0 + m1;
- *p2++ = m2 - m3;
- // COL 3
- twR = tw3[0];
- twI = tw3[1];
-
- m0 = t3[0] * twR;
- m1 = t3[1] * twI;
- m2 = t3[1] * twR;
- m3 = t3[0] * twI;
-
- *p3++ = m0 + m1;
- *p3++ = m2 - m3;
- // COL 4
- twR = tw4[0];
- twI = tw4[1];
-
- m0 = t4[0] * twR;
- m1 = t4[1] * twI;
- m2 = t4[1] * twR;
- m3 = t4[0] * twI;
-
- *p4++ = m0 + m1;
- *p4++ = m2 - m3;
+ // col 2
+ t2[0] = p1sp3_0 + p2[1] - p4[1];
+ t2[1] = p1sp3_1 - p2[0] + p4[0];
+ // col 3
+ t3[0] = p1ap3_0 - p2[0] - p4[0];
+ t3[1] = p1ap3_1 - p2[1] - p4[1];
+ // col 4
+ t4[0] = p1sp3_0 - p2[1] + p4[1];
+ t4[1] = p1sp3_1 + p2[0] - p4[0];
+ // col 1 - Top
+ *p1++ = p1ap3_0 + p2[0] + p4[0];
+ *p1++ = p1ap3_1 + p2[1] + p4[1];
+
+ // COL 2
+ twR = tw2[0];
+ twI = tw2[1];
+
+ m0 = t2[0] * twR;
+ m1 = t2[1] * twI;
+ m2 = t2[1] * twR;
+ m3 = t2[0] * twI;
+
+ *p2++ = m0 + m1;
+ *p2++ = m2 - m3;
+ // COL 3
+ twR = tw3[0];
+ twI = tw3[1];
- // first col
- arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 4u);
- // second col
- arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 4u);
- // third col
- arm_radix8_butterfly_f32( pCol3, L, (float32_t *) S->pTwiddle, 4u);
- // fourth col
- arm_radix8_butterfly_f32( pCol4, L, (float32_t *) S->pTwiddle, 4u);
+ m0 = t3[0] * twR;
+ m1 = t3[1] * twI;
+ m2 = t3[1] * twR;
+ m3 = t3[0] * twI;
+
+ *p3++ = m0 + m1;
+ *p3++ = m2 - m3;
+ // COL 4
+ twR = tw4[0];
+ twI = tw4[1];
+ m0 = t4[0] * twR;
+ m1 = t4[1] * twI;
+ m2 = t4[1] * twR;
+ m3 = t4[0] * twI;
+
+ *p4++ = m0 + m1;
+ *p4++ = m2 - m3;
+
+ // first col
+ arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 4u);
+ // second col
+ arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 4u);
+ // third col
+ arm_radix8_butterfly_f32( pCol3, L, (float32_t *) S->pTwiddle, 4u);
+ // fourth col
+ arm_radix8_butterfly_f32( pCol4, L, (float32_t *) S->pTwiddle, 4u);
}
/**
@@ -561,56 +572,61 @@
*/
void arm_cfft_f32(
- const arm_cfft_instance_f32 * S,
- float32_t * p1,
- uint8_t ifftFlag,
- uint8_t bitReverseFlag)
+ const arm_cfft_instance_f32 * S,
+ float32_t * p1,
+ uint8_t ifftFlag,
+ uint8_t bitReverseFlag)
{
-
- uint32_t L = S->fftLen, l;
- float32_t invL, * pSrc;
+ uint32_t L = S->fftLen, l;
+ float32_t invL, * pSrc;
- if(ifftFlag == 1u)
- {
- /* Conjugate input data */
- pSrc = p1 + 1;
- for(l=0; l<L; l++) {
- *pSrc = -*pSrc;
- pSrc += 2;
- }
- }
+ if(ifftFlag == 1u)
+ {
+ /* Conjugate input data */
+ pSrc = p1 + 1;
+ for(l=0; l<L; l++)
+ {
+ *pSrc = -*pSrc;
+ pSrc += 2;
+ }
+ }
- switch (L) {
- case 16:
- case 128:
- case 1024:
- arm_cfft_radix8by2_f32 ( (arm_cfft_instance_f32 *) S, p1);
- break;
- case 32:
- case 256:
- case 2048:
- arm_cfft_radix8by4_f32 ( (arm_cfft_instance_f32 *) S, p1);
- break;
- case 64:
- case 512:
- case 4096:
- arm_radix8_butterfly_f32( p1, L, (float32_t *) S->pTwiddle, 1);
- break;
- }
+ switch (L)
+ {
+ case 16:
+ case 128:
+ case 1024:
+ arm_cfft_radix8by2_f32 ( (arm_cfft_instance_f32 *) S, p1);
+ break;
+ case 32:
+ case 256:
+ case 2048:
+ arm_cfft_radix8by4_f32 ( (arm_cfft_instance_f32 *) S, p1);
+ break;
+ case 64:
+ case 512:
+ case 4096:
+ arm_radix8_butterfly_f32( p1, L, (float32_t *) S->pTwiddle, 1);
+ break;
+ }
- if( bitReverseFlag )
- arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable);
+ if( bitReverseFlag )
+ arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable);
- if(ifftFlag == 1u)
- {
- invL = 1.0f/(float32_t)L;
- /* Conjugate and scale output data */
- pSrc = p1;
- for(l=0; l<L; l++) {
- *pSrc++ *= invL ;
- *pSrc = -(*pSrc) * invL;
- pSrc++;
- }
- }
+ if(ifftFlag == 1u)
+ {
+ invL = 1.0f/(float32_t)L;
+ /* Conjugate and scale output data */
+ pSrc = p1;
+ for(l=0; l<L; l++)
+ {
+ *pSrc++ *= invL ;
+ *pSrc = -(*pSrc) * invL;
+ pSrc++;
+ }
+ }
}
+/**
+* @} end of ComplexFFT group
+*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,357 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_cfft_q15.c
+*
+* Description: Combined Radix Decimation in Q15 Frequency CFFT processing function
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_radix4_butterfly_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pCoef,
+ uint32_t twidCoefModifier);
+
+extern void arm_radix4_butterfly_inverse_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pCoef,
+ uint32_t twidCoefModifier);
+
+extern void arm_bitreversal_16(
+ uint16_t * pSrc,
+ const uint16_t bitRevLen,
+ const uint16_t * pBitRevTable);
+
+void arm_cfft_radix4by2_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ const q15_t * pCoef);
+
+void arm_cfft_radix4by2_inverse_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ const q15_t * pCoef);
+
+/**
+* @ingroup groupTransforms
+*/
+
+/**
+* @addtogroup ComplexFFT
+* @{
+*/
+
+/**
+* @details
+* @brief Processing function for the Q15 complex FFT.
+* @param[in] *S points to an instance of the Q15 CFFT structure.
+* @param[in, out] *p1 points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
+* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.
+* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+* @return none.
+*/
+
+void arm_cfft_q15(
+ const arm_cfft_instance_q15 * S,
+ q15_t * p1,
+ uint8_t ifftFlag,
+ uint8_t bitReverseFlag)
+{
+ uint32_t L = S->fftLen;
+
+ if(ifftFlag == 1u)
+ {
+ switch (L)
+ {
+ case 16:
+ case 64:
+ case 256:
+ case 1024:
+ case 4096:
+ arm_radix4_butterfly_inverse_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 );
+ break;
+
+ case 32:
+ case 128:
+ case 512:
+ case 2048:
+ arm_cfft_radix4by2_inverse_q15 ( p1, L, S->pTwiddle );
+ break;
+ }
+ }
+ else
+ {
+ switch (L)
+ {
+ case 16:
+ case 64:
+ case 256:
+ case 1024:
+ case 4096:
+ arm_radix4_butterfly_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 );
+ break;
+
+ case 32:
+ case 128:
+ case 512:
+ case 2048:
+ arm_cfft_radix4by2_q15 ( p1, L, S->pTwiddle );
+ break;
+ }
+ }
+
+ if( bitReverseFlag )
+ arm_bitreversal_16((uint16_t*)p1,S->bitRevLength,S->pBitRevTable);
+}
+
+/**
+* @} end of ComplexFFT group
+*/
+
+void arm_cfft_radix4by2_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ const q15_t * pCoef)
+{
+ uint32_t i;
+ uint32_t n2;
+ q15_t p0, p1, p2, p3;
+#ifndef ARM_MATH_CM0_FAMILY
+ q31_t T, S, R;
+ q31_t coeff, out1, out2;
+ const q15_t *pC = pCoef;
+ q15_t *pSi = pSrc;
+ q15_t *pSl = pSrc + fftLen;
+#else
+ uint32_t ia, l;
+ q15_t xt, yt, cosVal, sinVal;
+#endif
+
+ n2 = fftLen >> 1;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+ for (i = n2; i > 0; i--)
+ {
+ coeff = _SIMD32_OFFSET(pC);
+ pC += 2;
+
+ T = _SIMD32_OFFSET(pSi);
+ T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+
+ S = _SIMD32_OFFSET(pSl);
+ S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1
+
+ R = __QSUB16(T, S);
+
+ _SIMD32_OFFSET(pSi) = __SHADD16(T, S);
+ pSi += 2;
+
+ #ifndef ARM_MATH_BIG_ENDIAN
+
+ out1 = __SMUAD(coeff, R) >> 16;
+ out2 = __SMUSDX(coeff, R);
+
+ #else
+
+ out1 = __SMUSDX(R, coeff) >> 16u;
+ out2 = __SMUAD(coeff, R);
+
+ #endif // #ifndef ARM_MATH_BIG_ENDIAN
+
+ _SIMD32_OFFSET(pSl) =
+ (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSl += 2;
+ }
+
+#else // #ifndef ARM_MATH_CM0_FAMILY
+
+ ia = 0;
+ for (i = 0; i < n2; i++)
+ {
+ cosVal = pCoef[ia * 2];
+ sinVal = pCoef[(ia * 2) + 1];
+ ia++;
+
+ l = i + n2;
+
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+ pSrc[2 * i + 1] =
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+ pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +
+ ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+ pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) -
+ ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+ }
+
+#endif // #ifndef ARM_MATH_CM0_FAMILY
+
+ // first col
+ arm_radix4_butterfly_q15( pSrc, n2, (q15_t*)pCoef, 2u);
+ // second col
+ arm_radix4_butterfly_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2u);
+
+ for (i = 0; i < fftLen >> 1; i++)
+ {
+ p0 = pSrc[4*i+0];
+ p1 = pSrc[4*i+1];
+ p2 = pSrc[4*i+2];
+ p3 = pSrc[4*i+3];
+
+ p0 <<= 1;
+ p1 <<= 1;
+ p2 <<= 1;
+ p3 <<= 1;
+
+ pSrc[4*i+0] = p0;
+ pSrc[4*i+1] = p1;
+ pSrc[4*i+2] = p2;
+ pSrc[4*i+3] = p3;
+ }
+}
+
+void arm_cfft_radix4by2_inverse_q15(
+ q15_t * pSrc,
+ uint32_t fftLen,
+ const q15_t * pCoef)
+{
+ uint32_t i;
+ uint32_t n2;
+ q15_t p0, p1, p2, p3;
+#ifndef ARM_MATH_CM0_FAMILY
+ q31_t T, S, R;
+ q31_t coeff, out1, out2;
+ const q15_t *pC = pCoef;
+ q15_t *pSi = pSrc;
+ q15_t *pSl = pSrc + fftLen;
+#else
+ uint32_t ia, l;
+ q15_t xt, yt, cosVal, sinVal;
+#endif
+
+ n2 = fftLen >> 1;
+
+#ifndef ARM_MATH_CM0_FAMILY
+
+ for (i = n2; i > 0; i--)
+ {
+ coeff = _SIMD32_OFFSET(pC);
+ pC += 2;
+
+ T = _SIMD32_OFFSET(pSi);
+ T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+
+ S = _SIMD32_OFFSET(pSl);
+ S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1
+
+ R = __QSUB16(T, S);
+
+ _SIMD32_OFFSET(pSi) = __SHADD16(T, S);
+ pSi += 2;
+
+ #ifndef ARM_MATH_BIG_ENDIAN
+
+ out1 = __SMUSD(coeff, R) >> 16;
+ out2 = __SMUADX(coeff, R);
+ #else
+
+ out1 = __SMUADX(R, coeff) >> 16u;
+ out2 = __SMUSD(__QSUB(0, coeff), R);
+
+ #endif // #ifndef ARM_MATH_BIG_ENDIAN
+
+ _SIMD32_OFFSET(pSl) =
+ (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSl += 2;
+ }
+
+#else // #ifndef ARM_MATH_CM0_FAMILY
+
+ ia = 0;
+ for (i = 0; i < n2; i++)
+ {
+ cosVal = pCoef[ia * 2];
+ sinVal = pCoef[(ia * 2) + 1];
+ ia++;
+
+ l = i + n2;
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
+
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
+ pSrc[2 * i + 1] =
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
+
+ pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -
+ ((int16_t) (((q31_t) yt * sinVal) >> 16)));
+
+ pSrc[2u * l + 1u] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) +
+ ((int16_t) (((q31_t) xt * sinVal) >> 16)));
+ }
+
+#endif // #ifndef ARM_MATH_CM0_FAMILY
+
+ // first col
+ arm_radix4_butterfly_inverse_q15( pSrc, n2, (q15_t*)pCoef, 2u);
+ // second col
+ arm_radix4_butterfly_inverse_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2u);
+
+ for (i = 0; i < fftLen >> 1; i++)
+ {
+ p0 = pSrc[4*i+0];
+ p1 = pSrc[4*i+1];
+ p2 = pSrc[4*i+2];
+ p3 = pSrc[4*i+3];
+
+ p0 <<= 1;
+ p1 <<= 1;
+ p2 <<= 1;
+ p3 <<= 1;
+
+ pSrc[4*i+0] = p0;
+ pSrc[4*i+1] = p1;
+ pSrc[4*i+2] = p2;
+ pSrc[4*i+3] = p3;
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -0,0 +1,264 @@
+/* ----------------------------------------------------------------------
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
+*
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
+*
+* Project: CMSIS DSP Library
+* Title: arm_cfft_q31.c
+*
+* Description: Combined Radix Decimation in Frequency CFFT fixed point processing function
+*
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* - Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* - Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in
+* the documentation and/or other materials provided with the
+* distribution.
+* - Neither the name of ARM LIMITED nor the names of its contributors
+* may be used to endorse or promote products derived from this
+* software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+extern void arm_radix4_butterfly_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pCoef,
+ uint32_t twidCoefModifier);
+
+extern void arm_radix4_butterfly_inverse_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pCoef,
+ uint32_t twidCoefModifier);
+
+extern void arm_bitreversal_32(
+ uint32_t * pSrc,
+ const uint16_t bitRevLen,
+ const uint16_t * pBitRevTable);
+
+void arm_cfft_radix4by2_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ const q31_t * pCoef);
+
+void arm_cfft_radix4by2_inverse_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ const q31_t * pCoef);
+
+/**
+* @ingroup groupTransforms
+*/
+
+/**
+* @addtogroup ComplexFFT
+* @{
+*/
+
+/**
+* @details
+* @brief Processing function for the fixed-point complex FFT in Q31 format.
+* @param[in] *S points to an instance of the fixed-point CFFT structure.
+* @param[in, out] *p1 points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
+* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.
+* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+* @return none.
+*/
+
+void arm_cfft_q31(
+ const arm_cfft_instance_q31 * S,
+ q31_t * p1,
+ uint8_t ifftFlag,
+ uint8_t bitReverseFlag)
+{
+ uint32_t L = S->fftLen;
+
+ if(ifftFlag == 1u)
+ {
+ switch (L)
+ {
+ case 16:
+ case 64:
+ case 256:
+ case 1024:
+ case 4096:
+ arm_radix4_butterfly_inverse_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 );
+ break;
+
+ case 32:
+ case 128:
+ case 512:
+ case 2048:
+ arm_cfft_radix4by2_inverse_q31 ( p1, L, S->pTwiddle );
+ break;
+ }
+ }
+ else
+ {
+ switch (L)
+ {
+ case 16:
+ case 64:
+ case 256:
+ case 1024:
+ case 4096:
+ arm_radix4_butterfly_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 );
+ break;
+
+ case 32:
+ case 128:
+ case 512:
+ case 2048:
+ arm_cfft_radix4by2_q31 ( p1, L, S->pTwiddle );
+ break;
+ }
+ }
+
+ if( bitReverseFlag )
+ arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable);
+}
+
+/**
+* @} end of ComplexFFT group
+*/
+
+void arm_cfft_radix4by2_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ const q31_t * pCoef)
+{
+ uint32_t i, l;
+ uint32_t n2, ia;
+ q31_t xt, yt, cosVal, sinVal;
+ q31_t p0, p1;
+
+ n2 = fftLen >> 1;
+ ia = 0;
+ for (i = 0; i < n2; i++)
+ {
+ cosVal = pCoef[2*ia];
+ sinVal = pCoef[2*ia + 1];
+ ia++;
+
+ l = i + n2;
+ xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2);
+ pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2);
+
+ yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2);
+ pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2);
+
+ mult_32x32_keep32_R(p0, xt, cosVal);
+ mult_32x32_keep32_R(p1, yt, cosVal);
+ multAcc_32x32_keep32_R(p0, yt, sinVal);
+ multSub_32x32_keep32_R(p1, xt, sinVal);
+
+ pSrc[2u * l] = p0 << 1;
+ pSrc[2u * l + 1u] = p1 << 1;
+
+ }
+
+ // first col
+ arm_radix4_butterfly_q31( pSrc, n2, (q31_t*)pCoef, 2u);
+ // second col
+ arm_radix4_butterfly_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2u);
+
+ for (i = 0; i < fftLen >> 1; i++)
+ {
+ p0 = pSrc[4*i+0];
+ p1 = pSrc[4*i+1];
+ xt = pSrc[4*i+2];
+ yt = pSrc[4*i+3];
+
+ p0 <<= 1;
+ p1 <<= 1;
+ xt <<= 1;
+ yt <<= 1;
+
+ pSrc[4*i+0] = p0;
+ pSrc[4*i+1] = p1;
+ pSrc[4*i+2] = xt;
+ pSrc[4*i+3] = yt;
+ }
+
+}
+
+void arm_cfft_radix4by2_inverse_q31(
+ q31_t * pSrc,
+ uint32_t fftLen,
+ const q31_t * pCoef)
+{
+ uint32_t i, l;
+ uint32_t n2, ia;
+ q31_t xt, yt, cosVal, sinVal;
+ q31_t p0, p1;
+
+ n2 = fftLen >> 1;
+ ia = 0;
+ for (i = 0; i < n2; i++)
+ {
+ cosVal = pCoef[2*ia];
+ sinVal = pCoef[2*ia + 1];
+ ia++;
+
+ l = i + n2;
+ xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2);
+ pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2);
+
+ yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2);
+ pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2);
+
+ mult_32x32_keep32_R(p0, xt, cosVal);
+ mult_32x32_keep32_R(p1, yt, cosVal);
+ multSub_32x32_keep32_R(p0, yt, sinVal);
+ multAcc_32x32_keep32_R(p1, xt, sinVal);
+
+ pSrc[2u * l] = p0 << 1;
+ pSrc[2u * l + 1u] = p1 << 1;
+
+ }
+
+ // first col
+ arm_radix4_butterfly_inverse_q31( pSrc, n2, (q31_t*)pCoef, 2u);
+ // second col
+ arm_radix4_butterfly_inverse_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2u);
+
+ for (i = 0; i < fftLen >> 1; i++)
+ {
+ p0 = pSrc[4*i+0];
+ p1 = pSrc[4*i+1];
+ xt = pSrc[4*i+2];
+ yt = pSrc[4*i+3];
+
+ p0 <<= 1;
+ p1 <<= 1;
+ xt <<= 1;
+ yt <<= 1;
+
+ pSrc[4*i+0] = p0;
+ pSrc[4*i+1] = p1;
+ pSrc[4*i+2] = xt;
+ pSrc[4*i+3] = yt;
+ }
+}
+
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix2_f32.c @@ -72,7 +72,7 @@ /** * @details * @brief Radix-2 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superceded by \ref arm_cfft_f32 and will be removed +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed * in the future. * @param[in] *S points to an instance of the floating-point Radix-2 CFFT/CIFFT structure. * @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix4_init_f32.c @@ -53,7 +53,7 @@ /** * @brief Initialization function for the floating-point CFFT/CIFFT. -* @deprecated Do not use this function. It has been superceded by \ref arm_cfft_f32 and will be removed +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed * in the future. * @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. * @param[in] fftLen length of the FFT.
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix2_init_q15.c @@ -53,6 +53,7 @@ /** * @brief Initialization function for the Q15 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed * @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. * @param[in] fftLen length of the FFT. * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. @@ -85,7 +86,7 @@ S->fftLen = fftLen; /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q15_t *) twiddleCoefQ15; + S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; /* Initialise the Flag for selection of CFFT or CIFFT */ S->ifftFlag = ifftFlag; /* Initialise the Flag for calculation Bit reversal or not */
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix2_init_q31.c @@ -55,6 +55,7 @@ /** * * @brief Initialization function for the Q31 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed * @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. * @param[in] fftLen length of the FFT. * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. @@ -87,7 +88,7 @@ S->fftLen = fftLen; /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q31_t *) twiddleCoefQ31; + S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; /* Initialise the Flag for selection of CFFT or CIFFT */ S->ifftFlag = ifftFlag; /* Initialise the Flag for calculation Bit reversal or not */
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_radix2_q15.c
@@ -71,6 +71,7 @@
/**
* @details
* @brief Processing function for the fixed-point CFFT/CIFFT.
+ * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed
* @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure.
* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
* @return none.
@@ -130,12 +131,12 @@
l = i + n2;
T = _SIMD32_OFFSET(pSrc + (2 * i));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (T & 0xFFFF)) >> 1;
+ T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
S = _SIMD32_OFFSET(pSrc + (2 * l));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (S & 0xFFFF)) >> 1;
+ S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
R = __QSUB16(T, S);
@@ -165,12 +166,12 @@
l++;
T = _SIMD32_OFFSET(pSrc + (2 * i));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (T & 0xFFFF)) >> 1;
+ T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
S = _SIMD32_OFFSET(pSrc + (2 * l));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (S & 0xFFFF)) >> 1;
+ S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
R = __QSUB16(T, S);
@@ -335,12 +336,12 @@
for (i = j; i < fftLen; i += n1)
{
l = i + n2;
- xt = (pSrc[2 * i] >> 2u) - (pSrc[2 * l] >> 2u);
- pSrc[2 * i] = ((pSrc[2 * i] >> 2u) + (pSrc[2 * l] >> 2u)) >> 1u;
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
- yt = (pSrc[2 * i + 1] >> 2u) - (pSrc[2 * l + 1] >> 2u);
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
pSrc[2 * i + 1] =
- ((pSrc[2 * l + 1] >> 2u) + (pSrc[2 * i + 1] >> 2u)) >> 1u;
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) +
((int16_t) (((q31_t) yt * sinVal) >> 16)));
@@ -459,12 +460,12 @@
l = i + n2;
T = _SIMD32_OFFSET(pSrc + (2 * i));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (T & 0xFFFF)) >> 1;
+ T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
S = _SIMD32_OFFSET(pSrc + (2 * l));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (S & 0xFFFF)) >> 1;
+ S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
R = __QSUB16(T, S);
@@ -493,12 +494,12 @@
l++;
T = _SIMD32_OFFSET(pSrc + (2 * i));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (T & 0xFFFF)) >> 1;
+ T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF);
S = _SIMD32_OFFSET(pSrc + (2 * l));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ in = ((int16_t) (S & 0xFFFF)) >> 1;
+ S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF);
R = __QSUB16(T, S);
@@ -654,12 +655,12 @@
for (i = j; i < fftLen; i += n1)
{
l = i + n2;
- xt = (pSrc[2 * i] >> 2u) - (pSrc[2 * l] >> 2u);
- pSrc[2 * i] = ((pSrc[2 * i] >> 2u) + (pSrc[2 * l] >> 2u)) >> 1u;
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
- yt = (pSrc[2 * i + 1] >> 2u) - (pSrc[2 * l + 1] >> 2u);
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
pSrc[2 * i + 1] =
- ((pSrc[2 * l + 1] >> 2u) + (pSrc[2 * i + 1] >> 2u)) >> 1u;
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
pSrc[2u * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) -
((int16_t) (((q31_t) yt * sinVal) >> 16)));
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix2_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix2_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_radix2_q31.c
@@ -71,6 +71,7 @@
/**
* @details
* @brief Processing function for the fixed-point CFFT/CIFFT.
+* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed
* @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure.
* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
* @return none.
@@ -126,12 +127,12 @@
ia = ia + twidCoefModifier;
l = i + n2;
- xt = (pSrc[2 * i] >> 2u) - (pSrc[2 * l] >> 2u);
- pSrc[2 * i] = ((pSrc[2 * i] >> 2u) + (pSrc[2 * l] >> 2u)) >> 1u;
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
- yt = (pSrc[2 * i + 1] >> 2u) - (pSrc[2 * l + 1] >> 2u);
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
pSrc[2 * i + 1] =
- ((pSrc[2 * l + 1] >> 2u) + (pSrc[2 * i + 1] >> 2u)) >> 1u;
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
mult_32x32_keep32_R(p0, xt, cosVal);
mult_32x32_keep32_R(p1, yt, cosVal);
@@ -254,12 +255,12 @@
ia = ia + twidCoefModifier;
l = i + n2;
- xt = (pSrc[2 * i] >> 2u) - (pSrc[2 * l] >> 2u);
- pSrc[2 * i] = ((pSrc[2 * i] >> 2u) + (pSrc[2 * l] >> 2u)) >> 1u;
+ xt = (pSrc[2 * i] >> 1u) - (pSrc[2 * l] >> 1u);
+ pSrc[2 * i] = ((pSrc[2 * i] >> 1u) + (pSrc[2 * l] >> 1u)) >> 1u;
- yt = (pSrc[2 * i + 1] >> 2u) - (pSrc[2 * l + 1] >> 2u);
+ yt = (pSrc[2 * i + 1] >> 1u) - (pSrc[2 * l + 1] >> 1u);
pSrc[2 * i + 1] =
- ((pSrc[2 * l + 1] >> 2u) + (pSrc[2 * i + 1] >> 2u)) >> 1u;
+ ((pSrc[2 * l + 1] >> 1u) + (pSrc[2 * i + 1] >> 1u)) >> 1u;
mult_32x32_keep32_R(p0, xt, cosVal);
mult_32x32_keep32_R(p1, yt, cosVal);
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix4_f32.c @@ -1171,7 +1171,7 @@ /** * @details * @brief Processing function for the floating-point Radix-4 CFFT/CIFFT. -* @deprecated Do not use this function. It has been superceded by \ref arm_cfft_f32 and will be removed +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed * in the future. * @param[in] *S points to an instance of the floating-point Radix-4 CFFT/CIFFT structure. * @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix4_init_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix4_init_q15.c @@ -54,6 +54,7 @@ /** * @brief Initialization function for the Q15 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed * @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. * @param[in] fftLen length of the FFT. * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. @@ -84,7 +85,7 @@ /* Initialise the FFT length */ S->fftLen = fftLen; /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q15_t *) twiddleCoefQ15; + S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; /* Initialise the Flag for selection of CFFT or CIFFT */ S->ifftFlag = ifftFlag; /* Initialise the Flag for calculation Bit reversal or not */
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix4_init_q31.c @@ -53,6 +53,7 @@ /** * * @brief Initialization function for the Q31 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed * @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. * @param[in] fftLen length of the FFT. * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. @@ -83,7 +84,7 @@ /* Initialise the FFT length */ S->fftLen = fftLen; /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (q31_t *) twiddleCoefQ31; + S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; /* Initialise the Flag for selection of CFFT or CIFFT */ S->ifftFlag = ifftFlag; /* Initialise the Flag for calculation Bit reversal or not */
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_radix4_q15.c
@@ -73,6 +73,7 @@
/**
* @details
* @brief Processing function for the Q15 CFFT/CIFFT.
+ * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed
* @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure.
* @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place.
* @return none.
@@ -172,12 +173,13 @@
q31_t R, S, T, U;
q31_t C1, C2, C3, out1, out2;
- uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;
- q15_t in;
+ uint32_t n1, n2, ic, i0, j, k;
q15_t *ptr1;
-
-
+ q15_t *pSi0;
+ q15_t *pSi1;
+ q15_t *pSi2;
+ q15_t *pSi3;
q31_t xaya, xbyb, xcyc, xdyd;
@@ -196,8 +198,12 @@
ic = 0u;
/* Index for input read and output write */
- i0 = 0u;
j = n2;
+
+ pSi0 = pSrc16;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
/* Input is in 1.15(q15) format */
@@ -206,22 +212,18 @@
{
/* Butterfly implementation */
- /* index calculation for the input as, */
- /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
- i1 = i0 + n2;
- i2 = i1 + n2;
- i3 = i2 + n2;
-
/* Reading i0, i0+fftLen/2 inputs */
/* Read ya (real), xa(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i0));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi0);
+ T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1
+ T = __SHADD16(T, 0); // it turns out doing this twice is 2 cycles, the alternative takes 3 cycles
+ //in = ((int16_t) (T & 0xFFFF)) >> 2; // alternative code that takes 3 cycles
+ //T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
/* Read yc (real), xc(imag) input */
- S = _SIMD32_OFFSET(pSrc16 + (2u * i2));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ S = _SIMD32_OFFSET(pSi2);
+ S = __SHADD16(S, 0);
+ S = __SHADD16(S, 0);
/* R = packed((ya + yc), (xa + xc) ) */
R = __QADD16(T, S);
@@ -231,14 +233,14 @@
/* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi1);
+ T = __SHADD16(T, 0);
+ T = __SHADD16(T, 0);
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
- in = ((int16_t) (U & 0xFFFF)) >> 2;
- U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ U = _SIMD32_OFFSET(pSi3);
+ U = __SHADD16(U, 0);
+ U = __SHADD16(U, 0);
/* T = packed((yb + yd), (xb + xd) ) */
T = __QADD16(T, U);
@@ -246,7 +248,8 @@
/* writing the butterfly processed i0 sample */
/* xa' = xa + xb + xc + xd */
/* ya' = ya + yb + yc + yd */
- _SIMD32_OFFSET(pSrc16 + (2u * i0)) = __SHADD16(R, T);
+ _SIMD32_OFFSET(pSi0) = __SHADD16(R, T);
+ pSi0 += 2;
/* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */
R = __QSUB16(R, T);
@@ -272,20 +275,21 @@
/* Reading i0+fftLen/4 */
/* T = packed(yb, xb) */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi1);
+ T = __SHADD16(T, 0);
+ T = __SHADD16(T, 0);
/* writing the butterfly processed i0 + fftLen/4 sample */
/* writing output(xc', yc') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i1)) =
+ _SIMD32_OFFSET(pSi1) =
(q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi1 += 2;
/* Butterfly calculations */
/* U = packed(yd, xd) */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
- in = ((int16_t) (U & 0xFFFF)) >> 2;
- U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ U = _SIMD32_OFFSET(pSi3);
+ U = __SHADD16(U, 0);
+ U = __SHADD16(U, 0);
/* T = packed(yb-yd, xb-xd) */
T = __QSUB16(T, U);
@@ -327,8 +331,9 @@
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* writing output(xb', yb') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i2)) =
+ _SIMD32_OFFSET(pSi2) =
((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF);
+ pSi2 += 2;
/* co3 & si3 are read from SIMD Coefficient pointer */
@@ -352,15 +357,13 @@
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* writing output(xd', yd') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i3)) =
+ _SIMD32_OFFSET(pSi3) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi3 += 2;
/* Twiddle coefficients index modifier */
ic = ic + twidCoefModifier;
- /* Updating input index */
- i0 = i0 + 1u;
-
} while(--j);
/* data is in 4.11(q11) format */
@@ -389,22 +392,21 @@
/* Twiddle coefficients index modifier */
ic = ic + twidCoefModifier;
+
+ pSi0 = pSrc16 + 2 * j;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
/* Butterfly implementation */
for (i0 = j; i0 < fftLen; i0 += n1)
{
- /* index calculation for the input as, */
- /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
- i1 = i0 + n2;
- i2 = i1 + n2;
- i3 = i2 + n2;
-
/* Reading i0, i0+fftLen/2 inputs */
/* Read ya (real), xa(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i0));
+ T = _SIMD32_OFFSET(pSi0);
/* Read yc (real), xc(imag) input */
- S = _SIMD32_OFFSET(pSrc16 + (2u * i2));
+ S = _SIMD32_OFFSET(pSi2);
/* R = packed( (ya + yc), (xa + xc)) */
R = __QADD16(T, S);
@@ -414,10 +416,10 @@
/* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
+ T = _SIMD32_OFFSET(pSi1);
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
+ U = _SIMD32_OFFSET(pSi3);
/* T = packed( (yb + yd), (xb + xd)) */
T = __QADD16(T, U);
@@ -427,9 +429,9 @@
/* xa' = xa + xb + xc + xd */
/* ya' = ya + yb + yc + yd */
out1 = __SHADD16(R, T);
- in = ((int16_t) (out1 & 0xFFFF)) >> 1;
- out1 = ((out1 >> 1) & 0xFFFF0000) | (in & 0xFFFF);
- _SIMD32_OFFSET(pSrc16 + (2u * i0)) = out1;
+ out1 = __SHADD16(out1, 0);
+ _SIMD32_OFFSET(pSi0) = out1;
+ pSi0 += 2 * n1;
/* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */
R = __SHSUB16(R, T);
@@ -454,18 +456,19 @@
/* Reading i0+3fftLen/4 */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
+ T = _SIMD32_OFFSET(pSi1);
/* writing the butterfly processed i0 + fftLen/4 sample */
/* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
/* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
- _SIMD32_OFFSET(pSrc16 + (2u * i1)) =
+ _SIMD32_OFFSET(pSi1) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi1 += 2 * n1;
/* Butterfly calculations */
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
+ U = _SIMD32_OFFSET(pSi3);
/* T = packed(yb-yd, xb-xd) */
T = __QSUB16(T, U);
@@ -500,8 +503,9 @@
/* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
/* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
- _SIMD32_OFFSET(pSrc16 + (2u * i2)) =
+ _SIMD32_OFFSET(pSi2) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi2 += 2 * n1;
/* Butterfly process for the i0+3fftLen/4 sample */
@@ -519,8 +523,9 @@
/* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
/* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
- _SIMD32_OFFSET(pSrc16 + (2u * i3)) =
+ _SIMD32_OFFSET(pSi3) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi3 += 2 * n1;
}
}
/* Twiddle coefficients index modifier */
@@ -711,9 +716,9 @@
Si2 = pCoef16[(2u * ic * 2u) + 1];
/* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
- out1 = (short) ((Co2 * R0 + Si2 * R1) >> 16u);
+ out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16u);
/* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
- out2 = (short) ((-Si2 * R0 + Co2 * R1) >> 16u);
+ out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16u);
/* Reading i0+fftLen/4 */
/* input is down scale by 4 to avoid overflow */
@@ -737,21 +742,21 @@
T1 = __SSAT(T1 - U1, 16);
/* R1 = (ya-yc) + (xb- xd), R0 = (xa-xc) - (yb-yd)) */
- R0 = (short) __SSAT((q31_t) (S0 - T1), 16);
- R1 = (short) __SSAT((q31_t) (S1 + T0), 16);
+ R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);
+ R1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);
/* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */
- S0 = (short) __SSAT(((q31_t) S0 + T1), 16u);
- S1 = (short) __SSAT(((q31_t) S1 - T0), 16u);
+ S0 = (q15_t) __SSAT(((q31_t) S0 + T1), 16u);
+ S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16u);
/* co1 & si1 are read from Coefficient pointer */
Co1 = pCoef16[ic * 2u];
Si1 = pCoef16[(ic * 2u) + 1];
/* Butterfly process for the i0+fftLen/2 sample */
/* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
- out1 = (short) ((Si1 * S1 + Co1 * S0) >> 16);
+ out1 = (q15_t) ((Si1 * S1 + Co1 * S0) >> 16);
/* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
- out2 = (short) ((-Si1 * S0 + Co1 * S1) >> 16);
+ out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16);
/* writing output(xb', yb') in little endian format */
pSrc16[i2 * 2u] = out1;
@@ -762,9 +767,9 @@
Si3 = pCoef16[(3u * (ic * 2u)) + 1];
/* Butterfly process for the i0+3fftLen/4 sample */
/* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */
- out1 = (short) ((Si3 * R1 + Co3 * R0) >> 16u);
+ out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16u);
/* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */
- out2 = (short) ((-Si3 * R0 + Co3 * R1) >> 16u);
+ out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16u);
/* writing output(xd', yd') in little endian format */
pSrc16[i3 * 2u] = out1;
pSrc16[(i3 * 2u) + 1] = out2;
@@ -862,10 +867,10 @@
R1 = (R1 >> 1u) - (T1 >> 1u);
/* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */
- out1 = (short) ((Co2 * R0 + Si2 * R1) >> 16u);
+ out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16u);
/* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
- out2 = (short) ((-Si2 * R0 + Co2 * R1) >> 16u);
+ out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16u);
/* Reading i0+3fftLen/4 */
/* Read yb (real), xb(imag) input */
@@ -897,9 +902,9 @@
S1 = (S1 >> 1u) - (T0 >> 1u);
/* Butterfly process for the i0+fftLen/2 sample */
- out1 = (short) ((Co1 * S0 + Si1 * S1) >> 16u);
+ out1 = (q15_t) ((Co1 * S0 + Si1 * S1) >> 16u);
- out2 = (short) ((-Si1 * S0 + Co1 * S1) >> 16u);
+ out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16u);
/* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
/* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
@@ -907,9 +912,9 @@
pSrc16[(i2 * 2u) + 1u] = out2;
/* Butterfly process for the i0+3fftLen/4 sample */
- out1 = (short) ((Si3 * R1 + Co3 * R0) >> 16u);
+ out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16u);
- out2 = (short) ((-Si3 * R0 + Co3 * R1) >> 16u);
+ out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16u);
/* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */
/* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */
pSrc16[i3 * 2u] = out1;
@@ -1085,12 +1090,13 @@
q31_t R, S, T, U;
q31_t C1, C2, C3, out1, out2;
- uint32_t n1, n2, ic, i0, i1, i2, i3, j, k;
- q15_t in;
+ uint32_t n1, n2, ic, i0, j, k;
q15_t *ptr1;
-
-
+ q15_t *pSi0;
+ q15_t *pSi1;
+ q15_t *pSi2;
+ q15_t *pSi3;
q31_t xaya, xbyb, xcyc, xdyd;
@@ -1109,8 +1115,12 @@
ic = 0u;
/* Index for input read and output write */
- i0 = 0u;
j = n2;
+
+ pSi0 = pSrc16;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
/* Input is in 1.15(q15) format */
@@ -1119,22 +1129,16 @@
{
/* Butterfly implementation */
- /* index calculation for the input as, */
- /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
- i1 = i0 + n2;
- i2 = i1 + n2;
- i3 = i2 + n2;
-
/* Reading i0, i0+fftLen/2 inputs */
/* Read ya (real), xa(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i0));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi0);
+ T = __SHADD16(T, 0);
+ T = __SHADD16(T, 0);
/* Read yc (real), xc(imag) input */
- S = _SIMD32_OFFSET(pSrc16 + (2u * i2));
- in = ((int16_t) (S & 0xFFFF)) >> 2;
- S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ S = _SIMD32_OFFSET(pSi2);
+ S = __SHADD16(S, 0);
+ S = __SHADD16(S, 0);
/* R = packed((ya + yc), (xa + xc) ) */
R = __QADD16(T, S);
@@ -1144,14 +1148,14 @@
/* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi1);
+ T = __SHADD16(T, 0);
+ T = __SHADD16(T, 0);
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
- in = ((int16_t) (U & 0xFFFF)) >> 2;
- U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ U = _SIMD32_OFFSET(pSi3);
+ U = __SHADD16(U, 0);
+ U = __SHADD16(U, 0);
/* T = packed((yb + yd), (xb + xd) ) */
T = __QADD16(T, U);
@@ -1159,7 +1163,8 @@
/* writing the butterfly processed i0 sample */
/* xa' = xa + xb + xc + xd */
/* ya' = ya + yb + yc + yd */
- _SIMD32_OFFSET(pSrc16 + (2u * i0)) = __SHADD16(R, T);
+ _SIMD32_OFFSET(pSi0) = __SHADD16(R, T);
+ pSi0 += 2;
/* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */
R = __QSUB16(R, T);
@@ -1185,20 +1190,21 @@
/* Reading i0+fftLen/4 */
/* T = packed(yb, xb) */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
- in = ((int16_t) (T & 0xFFFF)) >> 2;
- T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ T = _SIMD32_OFFSET(pSi1);
+ T = __SHADD16(T, 0);
+ T = __SHADD16(T, 0);
/* writing the butterfly processed i0 + fftLen/4 sample */
/* writing output(xc', yc') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i1)) =
+ _SIMD32_OFFSET(pSi1) =
(q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi1 += 2;
/* Butterfly calculations */
/* U = packed(yd, xd) */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
- in = ((int16_t) (U & 0xFFFF)) >> 2;
- U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF);
+ U = _SIMD32_OFFSET(pSi3);
+ U = __SHADD16(U, 0);
+ U = __SHADD16(U, 0);
/* T = packed(yb-yd, xb-xd) */
T = __QSUB16(T, U);
@@ -1240,8 +1246,9 @@
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* writing output(xb', yb') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i2)) =
+ _SIMD32_OFFSET(pSi2) =
((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF);
+ pSi2 += 2;
/* co3 & si3 are read from SIMD Coefficient pointer */
@@ -1265,15 +1272,13 @@
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
/* writing output(xd', yd') in little endian format */
- _SIMD32_OFFSET(pSrc16 + (2u * i3)) =
+ _SIMD32_OFFSET(pSi3) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi3 += 2;
/* Twiddle coefficients index modifier */
ic = ic + twidCoefModifier;
- /* Updating input index */
- i0 = i0 + 1u;
-
} while(--j);
/* data is in 4.11(q11) format */
@@ -1302,22 +1307,21 @@
/* Twiddle coefficients index modifier */
ic = ic + twidCoefModifier;
+
+ pSi0 = pSrc16 + 2 * j;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
/* Butterfly implementation */
for (i0 = j; i0 < fftLen; i0 += n1)
{
- /* index calculation for the input as, */
- /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */
- i1 = i0 + n2;
- i2 = i1 + n2;
- i3 = i2 + n2;
-
/* Reading i0, i0+fftLen/2 inputs */
/* Read ya (real), xa(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i0));
+ T = _SIMD32_OFFSET(pSi0);
/* Read yc (real), xc(imag) input */
- S = _SIMD32_OFFSET(pSrc16 + (2u * i2));
+ S = _SIMD32_OFFSET(pSi2);
/* R = packed( (ya + yc), (xa + xc)) */
R = __QADD16(T, S);
@@ -1327,10 +1331,10 @@
/* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
+ T = _SIMD32_OFFSET(pSi1);
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
+ U = _SIMD32_OFFSET(pSi3);
/* T = packed( (yb + yd), (xb + xd)) */
T = __QADD16(T, U);
@@ -1340,9 +1344,9 @@
/* xa' = xa + xb + xc + xd */
/* ya' = ya + yb + yc + yd */
out1 = __SHADD16(R, T);
- in = ((int16_t) (out1 & 0xFFFF)) >> 1;
- out1 = ((out1 >> 1) & 0xFFFF0000) | (in & 0xFFFF);
- _SIMD32_OFFSET(pSrc16 + (2u * i0)) = out1;
+ out1 = __SHADD16(out1, 0);
+ _SIMD32_OFFSET(pSi0) = out1;
+ pSi0 += 2 * n1;
/* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */
R = __SHSUB16(R, T);
@@ -1367,18 +1371,19 @@
/* Reading i0+3fftLen/4 */
/* Read yb (real), xb(imag) input */
- T = _SIMD32_OFFSET(pSrc16 + (2u * i1));
+ T = _SIMD32_OFFSET(pSi1);
/* writing the butterfly processed i0 + fftLen/4 sample */
/* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */
/* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */
- _SIMD32_OFFSET(pSrc16 + (2u * i1)) =
+ _SIMD32_OFFSET(pSi1) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi1 += 2 * n1;
/* Butterfly calculations */
/* Read yd (real), xd(imag) input */
- U = _SIMD32_OFFSET(pSrc16 + (2u * i3));
+ U = _SIMD32_OFFSET(pSi3);
/* T = packed(yb-yd, xb-xd) */
T = __QSUB16(T, U);
@@ -1413,8 +1418,9 @@
/* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */
/* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */
- _SIMD32_OFFSET(pSrc16 + (2u * i2)) =
+ _SIMD32_OFFSET(pSi2) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi2 += 2 * n1;
/* Butterfly process for the i0+3fftLen/4 sample */
@@ -1432,8 +1438,9 @@
/* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */
/* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */
- _SIMD32_OFFSET(pSrc16 + (2u * i3)) =
+ _SIMD32_OFFSET(pSi3) =
((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF);
+ pSi3 += 2 * n1;
}
}
/* Twiddle coefficients index modifier */
@@ -1615,9 +1622,9 @@
Co2 = pCoef16[2u * ic * 2u];
Si2 = pCoef16[(2u * ic * 2u) + 1u];
/* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */
- out1 = (short) ((Co2 * R0 - Si2 * R1) >> 16u);
+ out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16u);
/* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */
- out2 = (short) ((Si2 * R0 + Co2 * R1) >> 16u);
+ out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16u);
/* Reading i0+fftLen/4 */
/* input is down scale by 4 to avoid overflow */
@@ -1640,20 +1647,20 @@
T0 = __SSAT(T0 - U0, 16u);
T1 = __SSAT(T1 - U1, 16u);
/* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */
- R0 = (short) __SSAT((q31_t) (S0 + T1), 16);
- R1 = (short) __SSAT((q31_t) (S1 - T0), 16);
+ R0 = (q15_t) __SSAT((q31_t) (S0 + T1), 16);
+ R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16);
/* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */
- S0 = (short) __SSAT((q31_t) (S0 - T1), 16);
- S1 = (short) __SSAT((q31_t) (S1 + T0), 16);
+ S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16);
+ S1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16);
/* co1 & si1 are read from Coefficient pointer */
Co1 = pCoef16[ic * 2u];
Si1 = pCoef16[(ic * 2u) + 1u];
/* Butterfly process for the i0+fftLen/2 sample */
/* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */
- out1 = (short) ((Co1 * S0 - Si1 * S1) >> 16u);
+ out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16u);
/* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */
- out2 = (short) ((Si1 * S0 + Co1 * S1) >> 16u);
+ out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16u);
/* writing output(xb', yb') in little endian format */
pSrc16[i2 * 2u] = out1;
pSrc16[(i2 * 2u) + 1u] = out2;
@@ -1663,9 +1670,9 @@
Si3 = pCoef16[(3u * ic * 2u) + 1u];
/* Butterfly process for the i0+3fftLen/4 sample */
/* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */
- out1 = (short) ((Co3 * R0 - Si3 * R1) >> 16u);
+ out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16u);
/* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */
- out2 = (short) ((Si3 * R0 + Co3 * R1) >> 16u);
+ out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16u);
/* writing output(xd', yd') in little endian format */
pSrc16[i3 * 2u] = out1;
pSrc16[(i3 * 2u) + 1u] = out2;
@@ -1759,9 +1766,9 @@
R1 = (R1 >> 1u) - (T1 >> 1u);
/* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */
- out1 = (short) ((Co2 * R0 - Si2 * R1) >> 16);
+ out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16);
/* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */
- out2 = (short) ((Si2 * R0 + Co2 * R1) >> 16);
+ out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16);
/* Reading i0+3fftLen/4 */
/* Read yb (real), xb(imag) input */
@@ -1792,17 +1799,17 @@
S1 = (S1 >> 1u) + (T0 >> 1u);
/* Butterfly process for the i0+fftLen/2 sample */
- out1 = (short) ((Co1 * S0 - Si1 * S1) >> 16u);
- out2 = (short) ((Si1 * S0 + Co1 * S1) >> 16u);
+ out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16u);
+ out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16u);
/* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */
/* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */
pSrc16[i2 * 2u] = out1;
pSrc16[(i2 * 2u) + 1u] = out2;
/* Butterfly process for the i0+3fftLen/4 sample */
- out1 = (short) ((Co3 * R0 - Si3 * R1) >> 16u);
+ out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16u);
- out2 = (short) ((Si3 * R0 + Co3 * R1) >> 16u);
+ out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16u);
/* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */
/* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */
pSrc16[i3 * 2u] = out1;
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix4_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix4_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_radix4_q31.c
@@ -71,6 +71,7 @@
/**
* @details
* @brief Processing function for the Q31 CFFT/CIFFT.
+ * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed
* @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure.
* @param[in, out] *pSrc points to the complex data buffer of size <code>2*fftLen</code>. Processing occurs in-place.
* @return none.
@@ -165,6 +166,7 @@
q31_t * pCoef,
uint32_t twidCoefModifier)
{
+#if defined(ARM_MATH_CM7)
uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;
q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
@@ -402,6 +404,256 @@
}
twidCoefModifier <<= 2u;
}
+#else
+ uint32_t n1, n2, ia1, ia2, ia3, i0, j, k;
+ q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+
+ q31_t xa, xb, xc, xd;
+ q31_t ya, yb, yc, yd;
+ q31_t xa_out, xb_out, xc_out, xd_out;
+ q31_t ya_out, yb_out, yc_out, yd_out;
+
+ q31_t *ptr1;
+ q31_t *pSi0;
+ q31_t *pSi1;
+ q31_t *pSi2;
+ q31_t *pSi3;
+ q63_t xaya, xbyb, xcyc, xdyd;
+ /* Total process is divided into three stages */
+
+ /* process first stage, middle stages, & last stage */
+
+
+ /* start of first stage process */
+
+ /* Initializations for the first stage */
+ n2 = fftLen;
+ n1 = n2;
+ /* n2 = fftLen/4 */
+ n2 >>= 2u;
+
+ ia1 = 0u;
+
+ j = n2;
+
+ pSi0 = pSrc;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
+
+ /* Calculation of first stage */
+ do
+ {
+ /* input is in 1.31(q31) format and provide 4 guard bits for the input */
+
+ /* Butterfly implementation */
+ /* xa + xc */
+ r1 = (pSi0[0] >> 4u) + (pSi2[0] >> 4u);
+ /* xa - xc */
+ r2 = (pSi0[0] >> 4u) - (pSi2[0] >> 4u);
+
+ /* xb + xd */
+ t1 = (pSi1[0] >> 4u) + (pSi3[0] >> 4u);
+
+ /* ya + yc */
+ s1 = (pSi0[1] >> 4u) + (pSi2[1] >> 4u);
+ /* ya - yc */
+ s2 = (pSi0[1] >> 4u) - (pSi2[1] >> 4u);
+
+ /* xa' = xa + xb + xc + xd */
+ *pSi0++ = (r1 + t1);
+ /* (xa + xc) - (xb + xd) */
+ r1 = r1 - t1;
+ /* yb + yd */
+ t2 = (pSi1[1] >> 4u) + (pSi3[1] >> 4u);
+
+ /* ya' = ya + yb + yc + yd */
+ *pSi0++ = (s1 + t2);
+
+ /* (ya + yc) - (yb + yd) */
+ s1 = s1 - t2;
+
+ /* yb - yd */
+ t1 = (pSi1[1] >> 4u) - (pSi3[1] >> 4u);
+ /* xb - xd */
+ t2 = (pSi1[0] >> 4u) - (pSi3[0] >> 4u);
+
+ /* index calculation for the coefficients */
+ ia2 = 2u * ia1;
+ co2 = pCoef[ia2 * 2u];
+ si2 = pCoef[(ia2 * 2u) + 1u];
+
+ /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+ *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+ ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+ /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+ *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+ ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+ /* (xa - xc) + (yb - yd) */
+ r1 = r2 + t1;
+ /* (xa - xc) - (yb - yd) */
+ r2 = r2 - t1;
+
+ /* (ya - yc) - (xb - xd) */
+ s1 = s2 - t2;
+ /* (ya - yc) + (xb - xd) */
+ s2 = s2 + t2;
+
+ co1 = pCoef[ia1 * 2u];
+ si1 = pCoef[(ia1 * 2u) + 1u];
+
+ /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+ *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+ ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+ /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+ *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+ ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+ /* index calculation for the coefficients */
+ ia3 = 3u * ia1;
+ co3 = pCoef[ia3 * 2u];
+ si3 = pCoef[(ia3 * 2u) + 1u];
+
+ /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+ *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+ ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+ /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+ *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+ ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+ /* Twiddle coefficients index modifier */
+ ia1 = ia1 + twidCoefModifier;
+
+ } while(--j);
+
+ /* end of first stage process */
+
+ /* data is in 5.27(q27) format */
+
+
+ /* start of Middle stages process */
+
+
+ /* each stage in middle stages provides two down scaling of the input */
+
+ twidCoefModifier <<= 2u;
+
+
+ for (k = fftLen / 4u; k > 4u; k >>= 2u)
+ {
+ /* Initializations for the first stage */
+ n1 = n2;
+ n2 >>= 2u;
+ ia1 = 0u;
+
+ /* Calculation of first stage */
+ for (j = 0u; j <= (n2 - 1u); j++)
+ {
+ /* index calculation for the coefficients */
+ ia2 = ia1 + ia1;
+ ia3 = ia2 + ia1;
+ co1 = pCoef[ia1 * 2u];
+ si1 = pCoef[(ia1 * 2u) + 1u];
+ co2 = pCoef[ia2 * 2u];
+ si2 = pCoef[(ia2 * 2u) + 1u];
+ co3 = pCoef[ia3 * 2u];
+ si3 = pCoef[(ia3 * 2u) + 1u];
+ /* Twiddle coefficients index modifier */
+ ia1 = ia1 + twidCoefModifier;
+
+ pSi0 = pSrc + 2 * j;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
+
+ for (i0 = j; i0 < fftLen; i0 += n1)
+ {
+ /* Butterfly implementation */
+ /* xa + xc */
+ r1 = pSi0[0] + pSi2[0];
+
+ /* xa - xc */
+ r2 = pSi0[0] - pSi2[0];
+
+
+ /* ya + yc */
+ s1 = pSi0[1] + pSi2[1];
+
+ /* ya - yc */
+ s2 = pSi0[1] - pSi2[1];
+
+
+ /* xb + xd */
+ t1 = pSi1[0] + pSi3[0];
+
+
+ /* xa' = xa + xb + xc + xd */
+ pSi0[0] = (r1 + t1) >> 2u;
+ /* xa + xc -(xb + xd) */
+ r1 = r1 - t1;
+
+ /* yb + yd */
+ t2 = pSi1[1] + pSi3[1];
+
+ /* ya' = ya + yb + yc + yd */
+ pSi0[1] = (s1 + t2) >> 2u;
+ pSi0 += 2 * n1;
+
+ /* (ya + yc) - (yb + yd) */
+ s1 = s1 - t2;
+
+ /* (yb - yd) */
+ t1 = pSi1[1] - pSi3[1];
+
+ /* (xb - xd) */
+ t2 = pSi1[0] - pSi3[0];
+
+
+ /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */
+ pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32)) +
+ ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1u;
+
+ /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */
+ pSi1[1] = (((int32_t) (((q63_t) s1 * co2) >> 32)) -
+ ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1u;
+ pSi1 += 2 * n1;
+
+ /* (xa - xc) + (yb - yd) */
+ r1 = r2 + t1;
+ /* (xa - xc) - (yb - yd) */
+ r2 = r2 - t1;
+
+ /* (ya - yc) - (xb - xd) */
+ s1 = s2 - t2;
+ /* (ya - yc) + (xb - xd) */
+ s2 = s2 + t2;
+
+ /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */
+ pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) +
+ ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+ /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */
+ pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) -
+ ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+ pSi2 += 2 * n1;
+
+ /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */
+ pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) +
+ ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+ /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */
+ pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) -
+ ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+ pSi3 += 2 * n1;
+ }
+ }
+ twidCoefModifier <<= 2u;
+ }
+#endif
/* End of Middle stages process */
@@ -570,6 +822,7 @@
q31_t * pCoef,
uint32_t twidCoefModifier)
{
+#if defined(ARM_MATH_CM7)
uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k;
q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
q31_t xa, xb, xc, xd;
@@ -800,6 +1053,247 @@
}
twidCoefModifier <<= 2u;
}
+#else
+ uint32_t n1, n2, ia1, ia2, ia3, i0, j, k;
+ q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3;
+ q31_t xa, xb, xc, xd;
+ q31_t ya, yb, yc, yd;
+ q31_t xa_out, xb_out, xc_out, xd_out;
+ q31_t ya_out, yb_out, yc_out, yd_out;
+
+ q31_t *ptr1;
+ q31_t *pSi0;
+ q31_t *pSi1;
+ q31_t *pSi2;
+ q31_t *pSi3;
+ q63_t xaya, xbyb, xcyc, xdyd;
+
+ /* input is be 1.31(q31) format for all FFT sizes */
+ /* Total process is divided into three stages */
+ /* process first stage, middle stages, & last stage */
+
+ /* Start of first stage process */
+
+ /* Initializations for the first stage */
+ n2 = fftLen;
+ n1 = n2;
+ /* n2 = fftLen/4 */
+ n2 >>= 2u;
+
+ ia1 = 0u;
+
+ j = n2;
+
+ pSi0 = pSrc;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
+
+ do
+ {
+ /* Butterfly implementation */
+ /* xa + xc */
+ r1 = (pSi0[0] >> 4u) + (pSi2[0] >> 4u);
+ /* xa - xc */
+ r2 = (pSi0[0] >> 4u) - (pSi2[0] >> 4u);
+
+ /* xb + xd */
+ t1 = (pSi1[0] >> 4u) + (pSi3[0] >> 4u);
+
+ /* ya + yc */
+ s1 = (pSi0[1] >> 4u) + (pSi2[1] >> 4u);
+ /* ya - yc */
+ s2 = (pSi0[1] >> 4u) - (pSi2[1] >> 4u);
+
+ /* xa' = xa + xb + xc + xd */
+ *pSi0++ = (r1 + t1);
+ /* (xa + xc) - (xb + xd) */
+ r1 = r1 - t1;
+ /* yb + yd */
+ t2 = (pSi1[1] >> 4u) + (pSi3[1] >> 4u);
+ /* ya' = ya + yb + yc + yd */
+ *pSi0++ = (s1 + t2);
+
+ /* (ya + yc) - (yb + yd) */
+ s1 = s1 - t2;
+
+ /* yb - yd */
+ t1 = (pSi1[1] >> 4u) - (pSi3[1] >> 4u);
+ /* xb - xd */
+ t2 = (pSi1[0] >> 4u) - (pSi3[0] >> 4u);
+
+ /* index calculation for the coefficients */
+ ia2 = 2u * ia1;
+ co2 = pCoef[ia2 * 2u];
+ si2 = pCoef[(ia2 * 2u) + 1u];
+
+ /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+ *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) -
+ ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u;
+
+ /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+ *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) +
+ ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u;
+
+ /* (xa - xc) - (yb - yd) */
+ r1 = r2 - t1;
+ /* (xa - xc) + (yb - yd) */
+ r2 = r2 + t1;
+
+ /* (ya - yc) + (xb - xd) */
+ s1 = s2 + t2;
+ /* (ya - yc) - (xb - xd) */
+ s2 = s2 - t2;
+
+ co1 = pCoef[ia1 * 2u];
+ si1 = pCoef[(ia1 * 2u) + 1u];
+
+ /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+ *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+ ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u;
+
+ /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+ *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+ ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u;
+
+ /* index calculation for the coefficients */
+ ia3 = 3u * ia1;
+ co3 = pCoef[ia3 * 2u];
+ si3 = pCoef[(ia3 * 2u) + 1u];
+
+ /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+ *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+ ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u;
+
+ /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+ *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+ ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u;
+
+ /* Twiddle coefficients index modifier */
+ ia1 = ia1 + twidCoefModifier;
+
+ } while(--j);
+
+ /* data is in 5.27(q27) format */
+ /* each stage provides two down scaling of the input */
+
+
+ /* Start of Middle stages process */
+
+ twidCoefModifier <<= 2u;
+
+ /* Calculation of second stage to excluding last stage */
+ for (k = fftLen / 4u; k > 4u; k >>= 2u)
+ {
+ /* Initializations for the first stage */
+ n1 = n2;
+ n2 >>= 2u;
+ ia1 = 0u;
+
+ for (j = 0; j <= (n2 - 1u); j++)
+ {
+ /* index calculation for the coefficients */
+ ia2 = ia1 + ia1;
+ ia3 = ia2 + ia1;
+ co1 = pCoef[ia1 * 2u];
+ si1 = pCoef[(ia1 * 2u) + 1u];
+ co2 = pCoef[ia2 * 2u];
+ si2 = pCoef[(ia2 * 2u) + 1u];
+ co3 = pCoef[ia3 * 2u];
+ si3 = pCoef[(ia3 * 2u) + 1u];
+ /* Twiddle coefficients index modifier */
+ ia1 = ia1 + twidCoefModifier;
+
+ pSi0 = pSrc + 2 * j;
+ pSi1 = pSi0 + 2 * n2;
+ pSi2 = pSi1 + 2 * n2;
+ pSi3 = pSi2 + 2 * n2;
+
+ for (i0 = j; i0 < fftLen; i0 += n1)
+ {
+ /* Butterfly implementation */
+ /* xa + xc */
+ r1 = pSi0[0] + pSi2[0];
+
+ /* xa - xc */
+ r2 = pSi0[0] - pSi2[0];
+
+
+ /* ya + yc */
+ s1 = pSi0[1] + pSi2[1];
+
+ /* ya - yc */
+ s2 = pSi0[1] - pSi2[1];
+
+
+ /* xb + xd */
+ t1 = pSi1[0] + pSi3[0];
+
+
+ /* xa' = xa + xb + xc + xd */
+ pSi0[0] = (r1 + t1) >> 2u;
+ /* xa + xc -(xb + xd) */
+ r1 = r1 - t1;
+ /* yb + yd */
+ t2 = pSi1[1] + pSi3[1];
+
+ /* ya' = ya + yb + yc + yd */
+ pSi0[1] = (s1 + t2) >> 2u;
+ pSi0 += 2 * n1;
+
+ /* (ya + yc) - (yb + yd) */
+ s1 = s1 - t2;
+
+ /* (yb - yd) */
+ t1 = pSi1[1] - pSi3[1];
+
+ /* (xb - xd) */
+ t2 = pSi1[0] - pSi3[0];
+
+
+ /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */
+ pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32u)) -
+ ((int32_t) (((q63_t) s1 * si2) >> 32u))) >> 1u;
+
+ /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */
+ pSi1[1] =
+
+ (((int32_t) (((q63_t) s1 * co2) >> 32u)) +
+ ((int32_t) (((q63_t) r1 * si2) >> 32u))) >> 1u;
+ pSi1 += 2 * n1;
+
+ /* (xa - xc) - (yb - yd) */
+ r1 = r2 - t1;
+ /* (xa - xc) + (yb - yd) */
+ r2 = r2 + t1;
+
+ /* (ya - yc) + (xb - xd) */
+ s1 = s2 + t2;
+ /* (ya - yc) - (xb - xd) */
+ s2 = s2 - t2;
+
+ /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */
+ pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) -
+ ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u;
+
+ /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */
+ pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) +
+ ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u;
+ pSi2 += 2 * n1;
+
+ /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */
+ pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) -
+ ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u;
+
+ /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */
+ pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) +
+ ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u;
+ pSi3 += 2 * n1;
+ }
+ }
+ twidCoefModifier <<= 2u;
+ }
+#endif
/* End of Middle stages process */
@@ -899,7 +1393,6 @@
*ptr1++ = xd_out;
*ptr1++ = yd_out;
-
} while(--j);
/* output is in 11.21(q21) format for the 1024 point */
--- a/cmsis_dsp/TransformFunctions/arm_cfft_radix8_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_cfft_radix8_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_cfft_radix8_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_dct4_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_dct4_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_init_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_dct4_init_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_init_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_init_q15.c @@ -4273,7 +4273,7 @@ } /* Initialize the RFFT/RIFFT */ - arm_rfft_init_q15(S->pRfft, S->pCfft, S->N, 0u, 1u); + arm_rfft_init_q15(S->pRfft, S->N, 0u, 1u); /* return the status of DCT4 Init function */ return (status);
--- a/cmsis_dsp/TransformFunctions/arm_dct4_init_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_init_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_init_q31.c @@ -8353,7 +8353,7 @@ } /* Initialize the RFFT/RIFFT Function */ - arm_rfft_init_q31(S->pRfft, S->pCfft, S->N, 0, 1); + arm_rfft_init_q31(S->pRfft, S->N, 0, 1); /* return the status of DCT4 Init function */ return (status);
--- a/cmsis_dsp/TransformFunctions/arm_dct4_q15.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_q15.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_q15.c
--- a/cmsis_dsp/TransformFunctions/arm_dct4_q31.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_dct4_q31.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_dct4_q31.c
--- a/cmsis_dsp/TransformFunctions/arm_rfft_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_rfft_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_rfft_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_rfft_fast_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_fast_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_rfft_f32.c
@@ -270,11 +270,7 @@
* transform.
* \par Q15 and Q31
* The real algorithms are defined in a similar manner and utilize N/2 complex
- * transforms behind the scenes. In the case of fixed-point data, a radix-4
- * complex transform is performed and this limits the allows sequence lengths to
- * 128, 512, and 2048 samples.
- * \par
- * TBD. We need to document input and output order of data.
+ * transforms behind the scenes.
* \par
* The complex transforms used internally include scaling to prevent fixed-point
* overflows. The overall scaling equals 1/(fftLen/2).
@@ -320,7 +316,7 @@
* @brief Processing function for the floating-point real FFT.
* @param[in] *S points to an arm_rfft_fast_instance_f32 structure.
* @param[in] *p points to the input buffer.
-* @param[in] *pOut points to an arm_rfft_fast_instance_f32 structure.
+* @param[in] *pOut points to the output buffer.
* @param[in] ifftFlag RFFT if flag is 0, RIFFT if flag is 1
* @return none.
*/
@@ -336,7 +332,7 @@
/* Calculation of Real FFT */
if(ifftFlag)
{
- /* Real FFT comression */
+ /* Real FFT compression */
merge_rfft_f32(S, p, pOut);
/* Complex radix-4 IFFT process */
@@ -352,3 +348,6 @@
}
}
+/**
+* @} end of RealFFT group
+*/
--- a/cmsis_dsp/TransformFunctions/arm_rfft_fast_init_f32.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_fast_init_f32.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_cfft_init_f32.c
@@ -58,13 +58,7 @@
*
* \par Description:
* \par
-* The parameter <code>ifftFlag</code> controls whether a forward or inverse transform is computed.
-* Set(=1) ifftFlag for calculation of CIFFT otherwise RFFT is calculated
-* \par
-* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.
-* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
-* \par
-* The parameter <code>fftLen</code> Specifies length of RFFT/CIFFT process. Supported FFT Lengths are 16, 32, 64, 128, 256, 512, 1024, 2048, 4096.
+* The parameter <code>fftLen</code> Specifies length of RFFT/CIFFT process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096.
* \par
* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.
*/
@@ -79,51 +73,61 @@
Sint = &(S->Sint);
Sint->fftLen = fftLen/2;
S->fftLenRFFT = fftLen;
- /* Initialise the Twiddle coefficient pointer */
- // S->pTwiddle = (float32_t *) twiddleCoef;
/* Initializations of structure parameters depending on the FFT length */
switch (Sint->fftLen)
{
- case 4096u:
- /* Initializations of structure parameters for 4096 point FFT */
+ case 2048u:
+ /* Initializations of structure parameters for 2048 point FFT */
/* Initialise the bit reversal table length */
- Sint->bitRevLength = ARMBITREVINDEXTABLE4096_TABLE_LENGTH;
+ Sint->bitRevLength = ARMBITREVINDEXTABLE2048_TABLE_LENGTH;
/* Initialise the bit reversal table pointer */
- Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable4096;
- /* Initialise the 1/fftLen Value */
- break;
- case 2048u:
- Sint->bitRevLength = ARMBITREVINDEXTABLE2048_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048;
+ /* Initialise the Twiddle coefficient pointers */
+ Sint->pTwiddle = (float32_t *) twiddleCoef_2048;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_4096;
break;
case 1024u:
Sint->bitRevLength = ARMBITREVINDEXTABLE1024_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_1024;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_2048;
break;
case 512u:
Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_512;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_1024;
break;
case 256u:
Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_256;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_512;
break;
case 128u:
Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_128;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_256;
break;
case 64u:
Sint->bitRevLength = ARMBITREVINDEXTABLE__64_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_64;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_128;
break;
case 32u:
Sint->bitRevLength = ARMBITREVINDEXTABLE__32_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_32;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_64;
break;
case 16u:
Sint->bitRevLength = ARMBITREVINDEXTABLE__16_TABLE_LENGTH;
Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16;
+ Sint->pTwiddle = (float32_t *) twiddleCoef_16;
+ S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_32;
break;
default:
/* Reporting argument error if fftSize is not valid value */
--- a/cmsis_dsp/TransformFunctions/arm_rfft_init_f32.c Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/TransformFunctions/arm_rfft_init_f32.c Fri Nov 20 08:45:18 2015 +0000 @@ -1,8 +1,8 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. March 2015 +* $Revision: V.1.4.5 * * Project: CMSIS DSP Library * Title: arm_rfft_init_f32.c
--- a/cmsis_dsp/TransformFunctions/arm_rfft_init_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_init_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_rfft_init_q15.c
@@ -40,21 +40,23 @@
#include "arm_math.h"
+#include "arm_common_tables.h"
+#include "arm_const_structs.h"
/**
- * @ingroup groupTransforms
- */
+* @ingroup groupTransforms
+*/
/**
- * @addtogroup RealFFT
- * @{
- */
+* @addtogroup RealFFT
+* @{
+*/
/**
* \par
-* Generation floating point real_CoefA array:
+* Generation fixed-point realCoefAQ15 array in Q15 format:
* \par
* n = 4096
* <pre>for (i = 0; i < n; i++)
@@ -66,1033 +68,1031 @@
* Convert to fixed point Q15 format
* round(pATable[i] * pow(2, 15))
*/
-
-
static const q15_t ALIGN4 realCoefAQ15[8192] = {
- 0x4000, 0xc000, 0x3ff3, 0xc000, 0x3fe7, 0xc000, 0x3fda, 0xc000,
- 0x3fce, 0xc000, 0x3fc1, 0xc000, 0x3fb5, 0xc000, 0x3fa8, 0xc000,
- 0x3f9b, 0xc000, 0x3f8f, 0xc000, 0x3f82, 0xc000, 0x3f76, 0xc001,
- 0x3f69, 0xc001, 0x3f5d, 0xc001, 0x3f50, 0xc001, 0x3f44, 0xc001,
- 0x3f37, 0xc001, 0x3f2a, 0xc001, 0x3f1e, 0xc002, 0x3f11, 0xc002,
- 0x3f05, 0xc002, 0x3ef8, 0xc002, 0x3eec, 0xc002, 0x3edf, 0xc003,
- 0x3ed2, 0xc003, 0x3ec6, 0xc003, 0x3eb9, 0xc003, 0x3ead, 0xc004,
- 0x3ea0, 0xc004, 0x3e94, 0xc004, 0x3e87, 0xc004, 0x3e7a, 0xc005,
- 0x3e6e, 0xc005, 0x3e61, 0xc005, 0x3e55, 0xc006, 0x3e48, 0xc006,
- 0x3e3c, 0xc006, 0x3e2f, 0xc007, 0x3e23, 0xc007, 0x3e16, 0xc007,
- 0x3e09, 0xc008, 0x3dfd, 0xc008, 0x3df0, 0xc009, 0x3de4, 0xc009,
- 0x3dd7, 0xc009, 0x3dcb, 0xc00a, 0x3dbe, 0xc00a, 0x3db2, 0xc00b,
- 0x3da5, 0xc00b, 0x3d98, 0xc00c, 0x3d8c, 0xc00c, 0x3d7f, 0xc00d,
- 0x3d73, 0xc00d, 0x3d66, 0xc00e, 0x3d5a, 0xc00e, 0x3d4d, 0xc00f,
- 0x3d40, 0xc00f, 0x3d34, 0xc010, 0x3d27, 0xc010, 0x3d1b, 0xc011,
- 0x3d0e, 0xc011, 0x3d02, 0xc012, 0x3cf5, 0xc013, 0x3ce9, 0xc013,
- 0x3cdc, 0xc014, 0x3cd0, 0xc014, 0x3cc3, 0xc015, 0x3cb6, 0xc016,
- 0x3caa, 0xc016, 0x3c9d, 0xc017, 0x3c91, 0xc018, 0x3c84, 0xc018,
- 0x3c78, 0xc019, 0x3c6b, 0xc01a, 0x3c5f, 0xc01a, 0x3c52, 0xc01b,
- 0x3c45, 0xc01c, 0x3c39, 0xc01d, 0x3c2c, 0xc01d, 0x3c20, 0xc01e,
- 0x3c13, 0xc01f, 0x3c07, 0xc020, 0x3bfa, 0xc020, 0x3bee, 0xc021,
- 0x3be1, 0xc022, 0x3bd5, 0xc023, 0x3bc8, 0xc024, 0x3bbc, 0xc024,
- 0x3baf, 0xc025, 0x3ba2, 0xc026, 0x3b96, 0xc027, 0x3b89, 0xc028,
- 0x3b7d, 0xc029, 0x3b70, 0xc02a, 0x3b64, 0xc02b, 0x3b57, 0xc02b,
- 0x3b4b, 0xc02c, 0x3b3e, 0xc02d, 0x3b32, 0xc02e, 0x3b25, 0xc02f,
- 0x3b19, 0xc030, 0x3b0c, 0xc031, 0x3b00, 0xc032, 0x3af3, 0xc033,
- 0x3ae6, 0xc034, 0x3ada, 0xc035, 0x3acd, 0xc036, 0x3ac1, 0xc037,
- 0x3ab4, 0xc038, 0x3aa8, 0xc039, 0x3a9b, 0xc03a, 0x3a8f, 0xc03b,
- 0x3a82, 0xc03c, 0x3a76, 0xc03d, 0x3a69, 0xc03f, 0x3a5d, 0xc040,
- 0x3a50, 0xc041, 0x3a44, 0xc042, 0x3a37, 0xc043, 0x3a2b, 0xc044,
- 0x3a1e, 0xc045, 0x3a12, 0xc047, 0x3a05, 0xc048, 0x39f9, 0xc049,
- 0x39ec, 0xc04a, 0x39e0, 0xc04b, 0x39d3, 0xc04c, 0x39c7, 0xc04e,
- 0x39ba, 0xc04f, 0x39ae, 0xc050, 0x39a1, 0xc051, 0x3995, 0xc053,
- 0x3988, 0xc054, 0x397c, 0xc055, 0x396f, 0xc056, 0x3963, 0xc058,
- 0x3956, 0xc059, 0x394a, 0xc05a, 0x393d, 0xc05c, 0x3931, 0xc05d,
- 0x3924, 0xc05e, 0x3918, 0xc060, 0x390b, 0xc061, 0x38ff, 0xc062,
- 0x38f2, 0xc064, 0x38e6, 0xc065, 0x38d9, 0xc067, 0x38cd, 0xc068,
- 0x38c0, 0xc069, 0x38b4, 0xc06b, 0x38a7, 0xc06c, 0x389b, 0xc06e,
- 0x388e, 0xc06f, 0x3882, 0xc071, 0x3875, 0xc072, 0x3869, 0xc074,
- 0x385c, 0xc075, 0x3850, 0xc077, 0x3843, 0xc078, 0x3837, 0xc07a,
- 0x382a, 0xc07b, 0x381e, 0xc07d, 0x3811, 0xc07e, 0x3805, 0xc080,
- 0x37f9, 0xc081, 0x37ec, 0xc083, 0x37e0, 0xc085, 0x37d3, 0xc086,
- 0x37c7, 0xc088, 0x37ba, 0xc089, 0x37ae, 0xc08b, 0x37a1, 0xc08d,
- 0x3795, 0xc08e, 0x3788, 0xc090, 0x377c, 0xc092, 0x376f, 0xc093,
- 0x3763, 0xc095, 0x3757, 0xc097, 0x374a, 0xc098, 0x373e, 0xc09a,
- 0x3731, 0xc09c, 0x3725, 0xc09e, 0x3718, 0xc09f, 0x370c, 0xc0a1,
- 0x36ff, 0xc0a3, 0x36f3, 0xc0a5, 0x36e7, 0xc0a6, 0x36da, 0xc0a8,
- 0x36ce, 0xc0aa, 0x36c1, 0xc0ac, 0x36b5, 0xc0ae, 0x36a8, 0xc0af,
- 0x369c, 0xc0b1, 0x3690, 0xc0b3, 0x3683, 0xc0b5, 0x3677, 0xc0b7,
- 0x366a, 0xc0b9, 0x365e, 0xc0bb, 0x3651, 0xc0bd, 0x3645, 0xc0be,
- 0x3639, 0xc0c0, 0x362c, 0xc0c2, 0x3620, 0xc0c4, 0x3613, 0xc0c6,
- 0x3607, 0xc0c8, 0x35fa, 0xc0ca, 0x35ee, 0xc0cc, 0x35e2, 0xc0ce,
- 0x35d5, 0xc0d0, 0x35c9, 0xc0d2, 0x35bc, 0xc0d4, 0x35b0, 0xc0d6,
- 0x35a4, 0xc0d8, 0x3597, 0xc0da, 0x358b, 0xc0dc, 0x357e, 0xc0de,
- 0x3572, 0xc0e0, 0x3566, 0xc0e2, 0x3559, 0xc0e4, 0x354d, 0xc0e7,
- 0x3540, 0xc0e9, 0x3534, 0xc0eb, 0x3528, 0xc0ed, 0x351b, 0xc0ef,
- 0x350f, 0xc0f1, 0x3503, 0xc0f3, 0x34f6, 0xc0f6, 0x34ea, 0xc0f8,
- 0x34dd, 0xc0fa, 0x34d1, 0xc0fc, 0x34c5, 0xc0fe, 0x34b8, 0xc100,
- 0x34ac, 0xc103, 0x34a0, 0xc105, 0x3493, 0xc107, 0x3487, 0xc109,
- 0x347b, 0xc10c, 0x346e, 0xc10e, 0x3462, 0xc110, 0x3455, 0xc113,
- 0x3449, 0xc115, 0x343d, 0xc117, 0x3430, 0xc119, 0x3424, 0xc11c,
- 0x3418, 0xc11e, 0x340b, 0xc120, 0x33ff, 0xc123, 0x33f3, 0xc125,
- 0x33e6, 0xc128, 0x33da, 0xc12a, 0x33ce, 0xc12c, 0x33c1, 0xc12f,
- 0x33b5, 0xc131, 0x33a9, 0xc134, 0x339c, 0xc136, 0x3390, 0xc138,
- 0x3384, 0xc13b, 0x3377, 0xc13d, 0x336b, 0xc140, 0x335f, 0xc142,
- 0x3352, 0xc145, 0x3346, 0xc147, 0x333a, 0xc14a, 0x332d, 0xc14c,
- 0x3321, 0xc14f, 0x3315, 0xc151, 0x3308, 0xc154, 0x32fc, 0xc156,
- 0x32f0, 0xc159, 0x32e4, 0xc15b, 0x32d7, 0xc15e, 0x32cb, 0xc161,
- 0x32bf, 0xc163, 0x32b2, 0xc166, 0x32a6, 0xc168, 0x329a, 0xc16b,
- 0x328e, 0xc16e, 0x3281, 0xc170, 0x3275, 0xc173, 0x3269, 0xc176,
- 0x325c, 0xc178, 0x3250, 0xc17b, 0x3244, 0xc17e, 0x3238, 0xc180,
- 0x322b, 0xc183, 0x321f, 0xc186, 0x3213, 0xc189, 0x3207, 0xc18b,
- 0x31fa, 0xc18e, 0x31ee, 0xc191, 0x31e2, 0xc194, 0x31d5, 0xc196,
- 0x31c9, 0xc199, 0x31bd, 0xc19c, 0x31b1, 0xc19f, 0x31a4, 0xc1a2,
- 0x3198, 0xc1a4, 0x318c, 0xc1a7, 0x3180, 0xc1aa, 0x3174, 0xc1ad,
- 0x3167, 0xc1b0, 0x315b, 0xc1b3, 0x314f, 0xc1b6, 0x3143, 0xc1b8,
- 0x3136, 0xc1bb, 0x312a, 0xc1be, 0x311e, 0xc1c1, 0x3112, 0xc1c4,
- 0x3105, 0xc1c7, 0x30f9, 0xc1ca, 0x30ed, 0xc1cd, 0x30e1, 0xc1d0,
- 0x30d5, 0xc1d3, 0x30c8, 0xc1d6, 0x30bc, 0xc1d9, 0x30b0, 0xc1dc,
- 0x30a4, 0xc1df, 0x3098, 0xc1e2, 0x308b, 0xc1e5, 0x307f, 0xc1e8,
- 0x3073, 0xc1eb, 0x3067, 0xc1ee, 0x305b, 0xc1f1, 0x304e, 0xc1f4,
- 0x3042, 0xc1f7, 0x3036, 0xc1fa, 0x302a, 0xc1fd, 0x301e, 0xc201,
- 0x3012, 0xc204, 0x3005, 0xc207, 0x2ff9, 0xc20a, 0x2fed, 0xc20d,
- 0x2fe1, 0xc210, 0x2fd5, 0xc213, 0x2fc9, 0xc217, 0x2fbc, 0xc21a,
- 0x2fb0, 0xc21d, 0x2fa4, 0xc220, 0x2f98, 0xc223, 0x2f8c, 0xc227,
- 0x2f80, 0xc22a, 0x2f74, 0xc22d, 0x2f67, 0xc230, 0x2f5b, 0xc234,
- 0x2f4f, 0xc237, 0x2f43, 0xc23a, 0x2f37, 0xc23e, 0x2f2b, 0xc241,
- 0x2f1f, 0xc244, 0x2f13, 0xc247, 0x2f06, 0xc24b, 0x2efa, 0xc24e,
- 0x2eee, 0xc251, 0x2ee2, 0xc255, 0x2ed6, 0xc258, 0x2eca, 0xc25c,
- 0x2ebe, 0xc25f, 0x2eb2, 0xc262, 0x2ea6, 0xc266, 0x2e99, 0xc269,
- 0x2e8d, 0xc26d, 0x2e81, 0xc270, 0x2e75, 0xc273, 0x2e69, 0xc277,
- 0x2e5d, 0xc27a, 0x2e51, 0xc27e, 0x2e45, 0xc281, 0x2e39, 0xc285,
- 0x2e2d, 0xc288, 0x2e21, 0xc28c, 0x2e15, 0xc28f, 0x2e09, 0xc293,
- 0x2dfc, 0xc296, 0x2df0, 0xc29a, 0x2de4, 0xc29d, 0x2dd8, 0xc2a1,
- 0x2dcc, 0xc2a5, 0x2dc0, 0xc2a8, 0x2db4, 0xc2ac, 0x2da8, 0xc2af,
- 0x2d9c, 0xc2b3, 0x2d90, 0xc2b7, 0x2d84, 0xc2ba, 0x2d78, 0xc2be,
- 0x2d6c, 0xc2c1, 0x2d60, 0xc2c5, 0x2d54, 0xc2c9, 0x2d48, 0xc2cc,
- 0x2d3c, 0xc2d0, 0x2d30, 0xc2d4, 0x2d24, 0xc2d8, 0x2d18, 0xc2db,
- 0x2d0c, 0xc2df, 0x2d00, 0xc2e3, 0x2cf4, 0xc2e6, 0x2ce8, 0xc2ea,
- 0x2cdc, 0xc2ee, 0x2cd0, 0xc2f2, 0x2cc4, 0xc2f5, 0x2cb8, 0xc2f9,
- 0x2cac, 0xc2fd, 0x2ca0, 0xc301, 0x2c94, 0xc305, 0x2c88, 0xc308,
- 0x2c7c, 0xc30c, 0x2c70, 0xc310, 0x2c64, 0xc314, 0x2c58, 0xc318,
- 0x2c4c, 0xc31c, 0x2c40, 0xc320, 0x2c34, 0xc323, 0x2c28, 0xc327,
- 0x2c1c, 0xc32b, 0x2c10, 0xc32f, 0x2c05, 0xc333, 0x2bf9, 0xc337,
- 0x2bed, 0xc33b, 0x2be1, 0xc33f, 0x2bd5, 0xc343, 0x2bc9, 0xc347,
- 0x2bbd, 0xc34b, 0x2bb1, 0xc34f, 0x2ba5, 0xc353, 0x2b99, 0xc357,
- 0x2b8d, 0xc35b, 0x2b81, 0xc35f, 0x2b75, 0xc363, 0x2b6a, 0xc367,
- 0x2b5e, 0xc36b, 0x2b52, 0xc36f, 0x2b46, 0xc373, 0x2b3a, 0xc377,
- 0x2b2e, 0xc37b, 0x2b22, 0xc37f, 0x2b16, 0xc383, 0x2b0a, 0xc387,
- 0x2aff, 0xc38c, 0x2af3, 0xc390, 0x2ae7, 0xc394, 0x2adb, 0xc398,
- 0x2acf, 0xc39c, 0x2ac3, 0xc3a0, 0x2ab7, 0xc3a5, 0x2aac, 0xc3a9,
- 0x2aa0, 0xc3ad, 0x2a94, 0xc3b1, 0x2a88, 0xc3b5, 0x2a7c, 0xc3ba,
- 0x2a70, 0xc3be, 0x2a65, 0xc3c2, 0x2a59, 0xc3c6, 0x2a4d, 0xc3ca,
- 0x2a41, 0xc3cf, 0x2a35, 0xc3d3, 0x2a29, 0xc3d7, 0x2a1e, 0xc3dc,
- 0x2a12, 0xc3e0, 0x2a06, 0xc3e4, 0x29fa, 0xc3e9, 0x29ee, 0xc3ed,
- 0x29e3, 0xc3f1, 0x29d7, 0xc3f6, 0x29cb, 0xc3fa, 0x29bf, 0xc3fe,
- 0x29b4, 0xc403, 0x29a8, 0xc407, 0x299c, 0xc40b, 0x2990, 0xc410,
- 0x2984, 0xc414, 0x2979, 0xc419, 0x296d, 0xc41d, 0x2961, 0xc422,
- 0x2955, 0xc426, 0x294a, 0xc42a, 0x293e, 0xc42f, 0x2932, 0xc433,
- 0x2926, 0xc438, 0x291b, 0xc43c, 0x290f, 0xc441, 0x2903, 0xc445,
- 0x28f7, 0xc44a, 0x28ec, 0xc44e, 0x28e0, 0xc453, 0x28d4, 0xc457,
- 0x28c9, 0xc45c, 0x28bd, 0xc461, 0x28b1, 0xc465, 0x28a5, 0xc46a,
- 0x289a, 0xc46e, 0x288e, 0xc473, 0x2882, 0xc478, 0x2877, 0xc47c,
- 0x286b, 0xc481, 0x285f, 0xc485, 0x2854, 0xc48a, 0x2848, 0xc48f,
- 0x283c, 0xc493, 0x2831, 0xc498, 0x2825, 0xc49d, 0x2819, 0xc4a1,
- 0x280e, 0xc4a6, 0x2802, 0xc4ab, 0x27f6, 0xc4b0, 0x27eb, 0xc4b4,
- 0x27df, 0xc4b9, 0x27d3, 0xc4be, 0x27c8, 0xc4c2, 0x27bc, 0xc4c7,
- 0x27b1, 0xc4cc, 0x27a5, 0xc4d1, 0x2799, 0xc4d6, 0x278e, 0xc4da,
- 0x2782, 0xc4df, 0x2777, 0xc4e4, 0x276b, 0xc4e9, 0x275f, 0xc4ee,
- 0x2754, 0xc4f2, 0x2748, 0xc4f7, 0x273d, 0xc4fc, 0x2731, 0xc501,
- 0x2725, 0xc506, 0x271a, 0xc50b, 0x270e, 0xc510, 0x2703, 0xc515,
- 0x26f7, 0xc51a, 0x26ec, 0xc51e, 0x26e0, 0xc523, 0x26d4, 0xc528,
- 0x26c9, 0xc52d, 0x26bd, 0xc532, 0x26b2, 0xc537, 0x26a6, 0xc53c,
- 0x269b, 0xc541, 0x268f, 0xc546, 0x2684, 0xc54b, 0x2678, 0xc550,
- 0x266d, 0xc555, 0x2661, 0xc55a, 0x2656, 0xc55f, 0x264a, 0xc564,
- 0x263f, 0xc569, 0x2633, 0xc56e, 0x2628, 0xc573, 0x261c, 0xc578,
- 0x2611, 0xc57e, 0x2605, 0xc583, 0x25fa, 0xc588, 0x25ee, 0xc58d,
- 0x25e3, 0xc592, 0x25d7, 0xc597, 0x25cc, 0xc59c, 0x25c0, 0xc5a1,
- 0x25b5, 0xc5a7, 0x25a9, 0xc5ac, 0x259e, 0xc5b1, 0x2592, 0xc5b6,
- 0x2587, 0xc5bb, 0x257c, 0xc5c1, 0x2570, 0xc5c6, 0x2565, 0xc5cb,
- 0x2559, 0xc5d0, 0x254e, 0xc5d5, 0x2542, 0xc5db, 0x2537, 0xc5e0,
- 0x252c, 0xc5e5, 0x2520, 0xc5ea, 0x2515, 0xc5f0, 0x2509, 0xc5f5,
- 0x24fe, 0xc5fa, 0x24f3, 0xc600, 0x24e7, 0xc605, 0x24dc, 0xc60a,
- 0x24d0, 0xc610, 0x24c5, 0xc615, 0x24ba, 0xc61a, 0x24ae, 0xc620,
- 0x24a3, 0xc625, 0x2498, 0xc62a, 0x248c, 0xc630, 0x2481, 0xc635,
- 0x2476, 0xc63b, 0x246a, 0xc640, 0x245f, 0xc645, 0x2454, 0xc64b,
- 0x2448, 0xc650, 0x243d, 0xc656, 0x2432, 0xc65b, 0x2426, 0xc661,
- 0x241b, 0xc666, 0x2410, 0xc66c, 0x2404, 0xc671, 0x23f9, 0xc677,
- 0x23ee, 0xc67c, 0x23e2, 0xc682, 0x23d7, 0xc687, 0x23cc, 0xc68d,
- 0x23c1, 0xc692, 0x23b5, 0xc698, 0x23aa, 0xc69d, 0x239f, 0xc6a3,
- 0x2394, 0xc6a8, 0x2388, 0xc6ae, 0x237d, 0xc6b4, 0x2372, 0xc6b9,
- 0x2367, 0xc6bf, 0x235b, 0xc6c5, 0x2350, 0xc6ca, 0x2345, 0xc6d0,
- 0x233a, 0xc6d5, 0x232e, 0xc6db, 0x2323, 0xc6e1, 0x2318, 0xc6e6,
- 0x230d, 0xc6ec, 0x2301, 0xc6f2, 0x22f6, 0xc6f7, 0x22eb, 0xc6fd,
- 0x22e0, 0xc703, 0x22d5, 0xc709, 0x22ca, 0xc70e, 0x22be, 0xc714,
- 0x22b3, 0xc71a, 0x22a8, 0xc720, 0x229d, 0xc725, 0x2292, 0xc72b,
- 0x2287, 0xc731, 0x227b, 0xc737, 0x2270, 0xc73d, 0x2265, 0xc742,
- 0x225a, 0xc748, 0x224f, 0xc74e, 0x2244, 0xc754, 0x2239, 0xc75a,
- 0x222d, 0xc75f, 0x2222, 0xc765, 0x2217, 0xc76b, 0x220c, 0xc771,
- 0x2201, 0xc777, 0x21f6, 0xc77d, 0x21eb, 0xc783, 0x21e0, 0xc789,
- 0x21d5, 0xc78f, 0x21ca, 0xc795, 0x21be, 0xc79a, 0x21b3, 0xc7a0,
- 0x21a8, 0xc7a6, 0x219d, 0xc7ac, 0x2192, 0xc7b2, 0x2187, 0xc7b8,
- 0x217c, 0xc7be, 0x2171, 0xc7c4, 0x2166, 0xc7ca, 0x215b, 0xc7d0,
- 0x2150, 0xc7d6, 0x2145, 0xc7dc, 0x213a, 0xc7e2, 0x212f, 0xc7e8,
- 0x2124, 0xc7ee, 0x2119, 0xc7f5, 0x210e, 0xc7fb, 0x2103, 0xc801,
- 0x20f8, 0xc807, 0x20ed, 0xc80d, 0x20e2, 0xc813, 0x20d7, 0xc819,
- 0x20cc, 0xc81f, 0x20c1, 0xc825, 0x20b6, 0xc82b, 0x20ab, 0xc832,
- 0x20a0, 0xc838, 0x2095, 0xc83e, 0x208a, 0xc844, 0x207f, 0xc84a,
- 0x2074, 0xc850, 0x2069, 0xc857, 0x205e, 0xc85d, 0x2054, 0xc863,
- 0x2049, 0xc869, 0x203e, 0xc870, 0x2033, 0xc876, 0x2028, 0xc87c,
- 0x201d, 0xc882, 0x2012, 0xc889, 0x2007, 0xc88f, 0x1ffc, 0xc895,
- 0x1ff1, 0xc89b, 0x1fe7, 0xc8a2, 0x1fdc, 0xc8a8, 0x1fd1, 0xc8ae,
- 0x1fc6, 0xc8b5, 0x1fbb, 0xc8bb, 0x1fb0, 0xc8c1, 0x1fa5, 0xc8c8,
- 0x1f9b, 0xc8ce, 0x1f90, 0xc8d4, 0x1f85, 0xc8db, 0x1f7a, 0xc8e1,
- 0x1f6f, 0xc8e8, 0x1f65, 0xc8ee, 0x1f5a, 0xc8f4, 0x1f4f, 0xc8fb,
- 0x1f44, 0xc901, 0x1f39, 0xc908, 0x1f2f, 0xc90e, 0x1f24, 0xc915,
- 0x1f19, 0xc91b, 0x1f0e, 0xc921, 0x1f03, 0xc928, 0x1ef9, 0xc92e,
- 0x1eee, 0xc935, 0x1ee3, 0xc93b, 0x1ed8, 0xc942, 0x1ece, 0xc948,
- 0x1ec3, 0xc94f, 0x1eb8, 0xc955, 0x1ead, 0xc95c, 0x1ea3, 0xc963,
- 0x1e98, 0xc969, 0x1e8d, 0xc970, 0x1e83, 0xc976, 0x1e78, 0xc97d,
- 0x1e6d, 0xc983, 0x1e62, 0xc98a, 0x1e58, 0xc991, 0x1e4d, 0xc997,
- 0x1e42, 0xc99e, 0x1e38, 0xc9a4, 0x1e2d, 0xc9ab, 0x1e22, 0xc9b2,
- 0x1e18, 0xc9b8, 0x1e0d, 0xc9bf, 0x1e02, 0xc9c6, 0x1df8, 0xc9cc,
- 0x1ded, 0xc9d3, 0x1de2, 0xc9da, 0x1dd8, 0xc9e0, 0x1dcd, 0xc9e7,
- 0x1dc3, 0xc9ee, 0x1db8, 0xc9f5, 0x1dad, 0xc9fb, 0x1da3, 0xca02,
- 0x1d98, 0xca09, 0x1d8e, 0xca10, 0x1d83, 0xca16, 0x1d78, 0xca1d,
- 0x1d6e, 0xca24, 0x1d63, 0xca2b, 0x1d59, 0xca32, 0x1d4e, 0xca38,
- 0x1d44, 0xca3f, 0x1d39, 0xca46, 0x1d2e, 0xca4d, 0x1d24, 0xca54,
- 0x1d19, 0xca5b, 0x1d0f, 0xca61, 0x1d04, 0xca68, 0x1cfa, 0xca6f,
- 0x1cef, 0xca76, 0x1ce5, 0xca7d, 0x1cda, 0xca84, 0x1cd0, 0xca8b,
- 0x1cc5, 0xca92, 0x1cbb, 0xca99, 0x1cb0, 0xca9f, 0x1ca6, 0xcaa6,
- 0x1c9b, 0xcaad, 0x1c91, 0xcab4, 0x1c86, 0xcabb, 0x1c7c, 0xcac2,
- 0x1c72, 0xcac9, 0x1c67, 0xcad0, 0x1c5d, 0xcad7, 0x1c52, 0xcade,
- 0x1c48, 0xcae5, 0x1c3d, 0xcaec, 0x1c33, 0xcaf3, 0x1c29, 0xcafa,
- 0x1c1e, 0xcb01, 0x1c14, 0xcb08, 0x1c09, 0xcb0f, 0x1bff, 0xcb16,
- 0x1bf5, 0xcb1e, 0x1bea, 0xcb25, 0x1be0, 0xcb2c, 0x1bd5, 0xcb33,
- 0x1bcb, 0xcb3a, 0x1bc1, 0xcb41, 0x1bb6, 0xcb48, 0x1bac, 0xcb4f,
- 0x1ba2, 0xcb56, 0x1b97, 0xcb5e, 0x1b8d, 0xcb65, 0x1b83, 0xcb6c,
- 0x1b78, 0xcb73, 0x1b6e, 0xcb7a, 0x1b64, 0xcb81, 0x1b59, 0xcb89,
- 0x1b4f, 0xcb90, 0x1b45, 0xcb97, 0x1b3b, 0xcb9e, 0x1b30, 0xcba5,
- 0x1b26, 0xcbad, 0x1b1c, 0xcbb4, 0x1b11, 0xcbbb, 0x1b07, 0xcbc2,
- 0x1afd, 0xcbca, 0x1af3, 0xcbd1, 0x1ae8, 0xcbd8, 0x1ade, 0xcbe0,
- 0x1ad4, 0xcbe7, 0x1aca, 0xcbee, 0x1abf, 0xcbf5, 0x1ab5, 0xcbfd,
- 0x1aab, 0xcc04, 0x1aa1, 0xcc0b, 0x1a97, 0xcc13, 0x1a8c, 0xcc1a,
- 0x1a82, 0xcc21, 0x1a78, 0xcc29, 0x1a6e, 0xcc30, 0x1a64, 0xcc38,
- 0x1a5a, 0xcc3f, 0x1a4f, 0xcc46, 0x1a45, 0xcc4e, 0x1a3b, 0xcc55,
- 0x1a31, 0xcc5d, 0x1a27, 0xcc64, 0x1a1d, 0xcc6b, 0x1a13, 0xcc73,
- 0x1a08, 0xcc7a, 0x19fe, 0xcc82, 0x19f4, 0xcc89, 0x19ea, 0xcc91,
- 0x19e0, 0xcc98, 0x19d6, 0xcca0, 0x19cc, 0xcca7, 0x19c2, 0xccaf,
- 0x19b8, 0xccb6, 0x19ae, 0xccbe, 0x19a4, 0xccc5, 0x199a, 0xcccd,
- 0x198f, 0xccd4, 0x1985, 0xccdc, 0x197b, 0xcce3, 0x1971, 0xcceb,
- 0x1967, 0xccf3, 0x195d, 0xccfa, 0x1953, 0xcd02, 0x1949, 0xcd09,
- 0x193f, 0xcd11, 0x1935, 0xcd19, 0x192b, 0xcd20, 0x1921, 0xcd28,
- 0x1917, 0xcd30, 0x190d, 0xcd37, 0x1903, 0xcd3f, 0x18f9, 0xcd46,
- 0x18ef, 0xcd4e, 0x18e6, 0xcd56, 0x18dc, 0xcd5d, 0x18d2, 0xcd65,
- 0x18c8, 0xcd6d, 0x18be, 0xcd75, 0x18b4, 0xcd7c, 0x18aa, 0xcd84,
- 0x18a0, 0xcd8c, 0x1896, 0xcd93, 0x188c, 0xcd9b, 0x1882, 0xcda3,
- 0x1878, 0xcdab, 0x186f, 0xcdb2, 0x1865, 0xcdba, 0x185b, 0xcdc2,
- 0x1851, 0xcdca, 0x1847, 0xcdd2, 0x183d, 0xcdd9, 0x1833, 0xcde1,
- 0x182a, 0xcde9, 0x1820, 0xcdf1, 0x1816, 0xcdf9, 0x180c, 0xce01,
- 0x1802, 0xce08, 0x17f8, 0xce10, 0x17ef, 0xce18, 0x17e5, 0xce20,
- 0x17db, 0xce28, 0x17d1, 0xce30, 0x17c8, 0xce38, 0x17be, 0xce40,
- 0x17b4, 0xce47, 0x17aa, 0xce4f, 0x17a0, 0xce57, 0x1797, 0xce5f,
- 0x178d, 0xce67, 0x1783, 0xce6f, 0x177a, 0xce77, 0x1770, 0xce7f,
- 0x1766, 0xce87, 0x175c, 0xce8f, 0x1753, 0xce97, 0x1749, 0xce9f,
- 0x173f, 0xcea7, 0x1736, 0xceaf, 0x172c, 0xceb7, 0x1722, 0xcebf,
- 0x1719, 0xcec7, 0x170f, 0xcecf, 0x1705, 0xced7, 0x16fc, 0xcedf,
- 0x16f2, 0xcee7, 0x16e8, 0xceef, 0x16df, 0xcef7, 0x16d5, 0xceff,
- 0x16cb, 0xcf07, 0x16c2, 0xcf10, 0x16b8, 0xcf18, 0x16af, 0xcf20,
- 0x16a5, 0xcf28, 0x169b, 0xcf30, 0x1692, 0xcf38, 0x1688, 0xcf40,
- 0x167f, 0xcf48, 0x1675, 0xcf51, 0x166c, 0xcf59, 0x1662, 0xcf61,
- 0x1659, 0xcf69, 0x164f, 0xcf71, 0x1645, 0xcf79, 0x163c, 0xcf82,
- 0x1632, 0xcf8a, 0x1629, 0xcf92, 0x161f, 0xcf9a, 0x1616, 0xcfa3,
- 0x160c, 0xcfab, 0x1603, 0xcfb3, 0x15f9, 0xcfbb, 0x15f0, 0xcfc4,
- 0x15e6, 0xcfcc, 0x15dd, 0xcfd4, 0x15d4, 0xcfdc, 0x15ca, 0xcfe5,
- 0x15c1, 0xcfed, 0x15b7, 0xcff5, 0x15ae, 0xcffe, 0x15a4, 0xd006,
- 0x159b, 0xd00e, 0x1592, 0xd016, 0x1588, 0xd01f, 0x157f, 0xd027,
- 0x1575, 0xd030, 0x156c, 0xd038, 0x1563, 0xd040, 0x1559, 0xd049,
- 0x1550, 0xd051, 0x1547, 0xd059, 0x153d, 0xd062, 0x1534, 0xd06a,
- 0x152a, 0xd073, 0x1521, 0xd07b, 0x1518, 0xd083, 0x150e, 0xd08c,
- 0x1505, 0xd094, 0x14fc, 0xd09d, 0x14f3, 0xd0a5, 0x14e9, 0xd0ae,
- 0x14e0, 0xd0b6, 0x14d7, 0xd0bf, 0x14cd, 0xd0c7, 0x14c4, 0xd0d0,
- 0x14bb, 0xd0d8, 0x14b2, 0xd0e0, 0x14a8, 0xd0e9, 0x149f, 0xd0f2,
- 0x1496, 0xd0fa, 0x148d, 0xd103, 0x1483, 0xd10b, 0x147a, 0xd114,
- 0x1471, 0xd11c, 0x1468, 0xd125, 0x145f, 0xd12d, 0x1455, 0xd136,
- 0x144c, 0xd13e, 0x1443, 0xd147, 0x143a, 0xd150, 0x1431, 0xd158,
- 0x1428, 0xd161, 0x141e, 0xd169, 0x1415, 0xd172, 0x140c, 0xd17b,
- 0x1403, 0xd183, 0x13fa, 0xd18c, 0x13f1, 0xd195, 0x13e8, 0xd19d,
- 0x13df, 0xd1a6, 0x13d5, 0xd1af, 0x13cc, 0xd1b7, 0x13c3, 0xd1c0,
- 0x13ba, 0xd1c9, 0x13b1, 0xd1d1, 0x13a8, 0xd1da, 0x139f, 0xd1e3,
- 0x1396, 0xd1eb, 0x138d, 0xd1f4, 0x1384, 0xd1fd, 0x137b, 0xd206,
- 0x1372, 0xd20e, 0x1369, 0xd217, 0x1360, 0xd220, 0x1357, 0xd229,
- 0x134e, 0xd231, 0x1345, 0xd23a, 0x133c, 0xd243, 0x1333, 0xd24c,
- 0x132a, 0xd255, 0x1321, 0xd25d, 0x1318, 0xd266, 0x130f, 0xd26f,
- 0x1306, 0xd278, 0x12fd, 0xd281, 0x12f4, 0xd28a, 0x12eb, 0xd292,
- 0x12e2, 0xd29b, 0x12d9, 0xd2a4, 0x12d1, 0xd2ad, 0x12c8, 0xd2b6,
- 0x12bf, 0xd2bf, 0x12b6, 0xd2c8, 0x12ad, 0xd2d1, 0x12a4, 0xd2d9,
- 0x129b, 0xd2e2, 0x1292, 0xd2eb, 0x128a, 0xd2f4, 0x1281, 0xd2fd,
- 0x1278, 0xd306, 0x126f, 0xd30f, 0x1266, 0xd318, 0x125d, 0xd321,
- 0x1255, 0xd32a, 0x124c, 0xd333, 0x1243, 0xd33c, 0x123a, 0xd345,
- 0x1231, 0xd34e, 0x1229, 0xd357, 0x1220, 0xd360, 0x1217, 0xd369,
- 0x120e, 0xd372, 0x1206, 0xd37b, 0x11fd, 0xd384, 0x11f4, 0xd38d,
- 0x11eb, 0xd396, 0x11e3, 0xd39f, 0x11da, 0xd3a8, 0x11d1, 0xd3b1,
- 0x11c9, 0xd3ba, 0x11c0, 0xd3c3, 0x11b7, 0xd3cc, 0x11af, 0xd3d5,
- 0x11a6, 0xd3df, 0x119d, 0xd3e8, 0x1195, 0xd3f1, 0x118c, 0xd3fa,
- 0x1183, 0xd403, 0x117b, 0xd40c, 0x1172, 0xd415, 0x1169, 0xd41e,
- 0x1161, 0xd428, 0x1158, 0xd431, 0x1150, 0xd43a, 0x1147, 0xd443,
- 0x113e, 0xd44c, 0x1136, 0xd455, 0x112d, 0xd45f, 0x1125, 0xd468,
- 0x111c, 0xd471, 0x1114, 0xd47a, 0x110b, 0xd483, 0x1103, 0xd48d,
- 0x10fa, 0xd496, 0x10f2, 0xd49f, 0x10e9, 0xd4a8, 0x10e0, 0xd4b2,
- 0x10d8, 0xd4bb, 0x10d0, 0xd4c4, 0x10c7, 0xd4cd, 0x10bf, 0xd4d7,
- 0x10b6, 0xd4e0, 0x10ae, 0xd4e9, 0x10a5, 0xd4f3, 0x109d, 0xd4fc,
- 0x1094, 0xd505, 0x108c, 0xd50e, 0x1083, 0xd518, 0x107b, 0xd521,
- 0x1073, 0xd52a, 0x106a, 0xd534, 0x1062, 0xd53d, 0x1059, 0xd547,
- 0x1051, 0xd550, 0x1049, 0xd559, 0x1040, 0xd563, 0x1038, 0xd56c,
- 0x1030, 0xd575, 0x1027, 0xd57f, 0x101f, 0xd588, 0x1016, 0xd592,
- 0x100e, 0xd59b, 0x1006, 0xd5a4, 0xffe, 0xd5ae, 0xff5, 0xd5b7,
- 0xfed, 0xd5c1, 0xfe5, 0xd5ca, 0xfdc, 0xd5d4, 0xfd4, 0xd5dd,
- 0xfcc, 0xd5e6, 0xfc4, 0xd5f0, 0xfbb, 0xd5f9, 0xfb3, 0xd603,
- 0xfab, 0xd60c, 0xfa3, 0xd616, 0xf9a, 0xd61f, 0xf92, 0xd629,
- 0xf8a, 0xd632, 0xf82, 0xd63c, 0xf79, 0xd645, 0xf71, 0xd64f,
- 0xf69, 0xd659, 0xf61, 0xd662, 0xf59, 0xd66c, 0xf51, 0xd675,
- 0xf48, 0xd67f, 0xf40, 0xd688, 0xf38, 0xd692, 0xf30, 0xd69b,
- 0xf28, 0xd6a5, 0xf20, 0xd6af, 0xf18, 0xd6b8, 0xf10, 0xd6c2,
- 0xf07, 0xd6cb, 0xeff, 0xd6d5, 0xef7, 0xd6df, 0xeef, 0xd6e8,
- 0xee7, 0xd6f2, 0xedf, 0xd6fc, 0xed7, 0xd705, 0xecf, 0xd70f,
- 0xec7, 0xd719, 0xebf, 0xd722, 0xeb7, 0xd72c, 0xeaf, 0xd736,
- 0xea7, 0xd73f, 0xe9f, 0xd749, 0xe97, 0xd753, 0xe8f, 0xd75c,
- 0xe87, 0xd766, 0xe7f, 0xd770, 0xe77, 0xd77a, 0xe6f, 0xd783,
- 0xe67, 0xd78d, 0xe5f, 0xd797, 0xe57, 0xd7a0, 0xe4f, 0xd7aa,
- 0xe47, 0xd7b4, 0xe40, 0xd7be, 0xe38, 0xd7c8, 0xe30, 0xd7d1,
- 0xe28, 0xd7db, 0xe20, 0xd7e5, 0xe18, 0xd7ef, 0xe10, 0xd7f8,
- 0xe08, 0xd802, 0xe01, 0xd80c, 0xdf9, 0xd816, 0xdf1, 0xd820,
- 0xde9, 0xd82a, 0xde1, 0xd833, 0xdd9, 0xd83d, 0xdd2, 0xd847,
- 0xdca, 0xd851, 0xdc2, 0xd85b, 0xdba, 0xd865, 0xdb2, 0xd86f,
- 0xdab, 0xd878, 0xda3, 0xd882, 0xd9b, 0xd88c, 0xd93, 0xd896,
- 0xd8c, 0xd8a0, 0xd84, 0xd8aa, 0xd7c, 0xd8b4, 0xd75, 0xd8be,
- 0xd6d, 0xd8c8, 0xd65, 0xd8d2, 0xd5d, 0xd8dc, 0xd56, 0xd8e6,
- 0xd4e, 0xd8ef, 0xd46, 0xd8f9, 0xd3f, 0xd903, 0xd37, 0xd90d,
- 0xd30, 0xd917, 0xd28, 0xd921, 0xd20, 0xd92b, 0xd19, 0xd935,
- 0xd11, 0xd93f, 0xd09, 0xd949, 0xd02, 0xd953, 0xcfa, 0xd95d,
- 0xcf3, 0xd967, 0xceb, 0xd971, 0xce3, 0xd97b, 0xcdc, 0xd985,
- 0xcd4, 0xd98f, 0xccd, 0xd99a, 0xcc5, 0xd9a4, 0xcbe, 0xd9ae,
- 0xcb6, 0xd9b8, 0xcaf, 0xd9c2, 0xca7, 0xd9cc, 0xca0, 0xd9d6,
- 0xc98, 0xd9e0, 0xc91, 0xd9ea, 0xc89, 0xd9f4, 0xc82, 0xd9fe,
- 0xc7a, 0xda08, 0xc73, 0xda13, 0xc6b, 0xda1d, 0xc64, 0xda27,
- 0xc5d, 0xda31, 0xc55, 0xda3b, 0xc4e, 0xda45, 0xc46, 0xda4f,
- 0xc3f, 0xda5a, 0xc38, 0xda64, 0xc30, 0xda6e, 0xc29, 0xda78,
- 0xc21, 0xda82, 0xc1a, 0xda8c, 0xc13, 0xda97, 0xc0b, 0xdaa1,
- 0xc04, 0xdaab, 0xbfd, 0xdab5, 0xbf5, 0xdabf, 0xbee, 0xdaca,
- 0xbe7, 0xdad4, 0xbe0, 0xdade, 0xbd8, 0xdae8, 0xbd1, 0xdaf3,
- 0xbca, 0xdafd, 0xbc2, 0xdb07, 0xbbb, 0xdb11, 0xbb4, 0xdb1c,
- 0xbad, 0xdb26, 0xba5, 0xdb30, 0xb9e, 0xdb3b, 0xb97, 0xdb45,
- 0xb90, 0xdb4f, 0xb89, 0xdb59, 0xb81, 0xdb64, 0xb7a, 0xdb6e,
- 0xb73, 0xdb78, 0xb6c, 0xdb83, 0xb65, 0xdb8d, 0xb5e, 0xdb97,
- 0xb56, 0xdba2, 0xb4f, 0xdbac, 0xb48, 0xdbb6, 0xb41, 0xdbc1,
- 0xb3a, 0xdbcb, 0xb33, 0xdbd5, 0xb2c, 0xdbe0, 0xb25, 0xdbea,
- 0xb1e, 0xdbf5, 0xb16, 0xdbff, 0xb0f, 0xdc09, 0xb08, 0xdc14,
- 0xb01, 0xdc1e, 0xafa, 0xdc29, 0xaf3, 0xdc33, 0xaec, 0xdc3d,
- 0xae5, 0xdc48, 0xade, 0xdc52, 0xad7, 0xdc5d, 0xad0, 0xdc67,
- 0xac9, 0xdc72, 0xac2, 0xdc7c, 0xabb, 0xdc86, 0xab4, 0xdc91,
- 0xaad, 0xdc9b, 0xaa6, 0xdca6, 0xa9f, 0xdcb0, 0xa99, 0xdcbb,
- 0xa92, 0xdcc5, 0xa8b, 0xdcd0, 0xa84, 0xdcda, 0xa7d, 0xdce5,
- 0xa76, 0xdcef, 0xa6f, 0xdcfa, 0xa68, 0xdd04, 0xa61, 0xdd0f,
- 0xa5b, 0xdd19, 0xa54, 0xdd24, 0xa4d, 0xdd2e, 0xa46, 0xdd39,
- 0xa3f, 0xdd44, 0xa38, 0xdd4e, 0xa32, 0xdd59, 0xa2b, 0xdd63,
- 0xa24, 0xdd6e, 0xa1d, 0xdd78, 0xa16, 0xdd83, 0xa10, 0xdd8e,
- 0xa09, 0xdd98, 0xa02, 0xdda3, 0x9fb, 0xddad, 0x9f5, 0xddb8,
- 0x9ee, 0xddc3, 0x9e7, 0xddcd, 0x9e0, 0xddd8, 0x9da, 0xdde2,
- 0x9d3, 0xdded, 0x9cc, 0xddf8, 0x9c6, 0xde02, 0x9bf, 0xde0d,
- 0x9b8, 0xde18, 0x9b2, 0xde22, 0x9ab, 0xde2d, 0x9a4, 0xde38,
- 0x99e, 0xde42, 0x997, 0xde4d, 0x991, 0xde58, 0x98a, 0xde62,
- 0x983, 0xde6d, 0x97d, 0xde78, 0x976, 0xde83, 0x970, 0xde8d,
- 0x969, 0xde98, 0x963, 0xdea3, 0x95c, 0xdead, 0x955, 0xdeb8,
- 0x94f, 0xdec3, 0x948, 0xdece, 0x942, 0xded8, 0x93b, 0xdee3,
- 0x935, 0xdeee, 0x92e, 0xdef9, 0x928, 0xdf03, 0x921, 0xdf0e,
- 0x91b, 0xdf19, 0x915, 0xdf24, 0x90e, 0xdf2f, 0x908, 0xdf39,
- 0x901, 0xdf44, 0x8fb, 0xdf4f, 0x8f4, 0xdf5a, 0x8ee, 0xdf65,
- 0x8e8, 0xdf6f, 0x8e1, 0xdf7a, 0x8db, 0xdf85, 0x8d4, 0xdf90,
- 0x8ce, 0xdf9b, 0x8c8, 0xdfa5, 0x8c1, 0xdfb0, 0x8bb, 0xdfbb,
- 0x8b5, 0xdfc6, 0x8ae, 0xdfd1, 0x8a8, 0xdfdc, 0x8a2, 0xdfe7,
- 0x89b, 0xdff1, 0x895, 0xdffc, 0x88f, 0xe007, 0x889, 0xe012,
- 0x882, 0xe01d, 0x87c, 0xe028, 0x876, 0xe033, 0x870, 0xe03e,
- 0x869, 0xe049, 0x863, 0xe054, 0x85d, 0xe05e, 0x857, 0xe069,
- 0x850, 0xe074, 0x84a, 0xe07f, 0x844, 0xe08a, 0x83e, 0xe095,
- 0x838, 0xe0a0, 0x832, 0xe0ab, 0x82b, 0xe0b6, 0x825, 0xe0c1,
- 0x81f, 0xe0cc, 0x819, 0xe0d7, 0x813, 0xe0e2, 0x80d, 0xe0ed,
- 0x807, 0xe0f8, 0x801, 0xe103, 0x7fb, 0xe10e, 0x7f5, 0xe119,
- 0x7ee, 0xe124, 0x7e8, 0xe12f, 0x7e2, 0xe13a, 0x7dc, 0xe145,
- 0x7d6, 0xe150, 0x7d0, 0xe15b, 0x7ca, 0xe166, 0x7c4, 0xe171,
- 0x7be, 0xe17c, 0x7b8, 0xe187, 0x7b2, 0xe192, 0x7ac, 0xe19d,
- 0x7a6, 0xe1a8, 0x7a0, 0xe1b3, 0x79a, 0xe1be, 0x795, 0xe1ca,
- 0x78f, 0xe1d5, 0x789, 0xe1e0, 0x783, 0xe1eb, 0x77d, 0xe1f6,
- 0x777, 0xe201, 0x771, 0xe20c, 0x76b, 0xe217, 0x765, 0xe222,
- 0x75f, 0xe22d, 0x75a, 0xe239, 0x754, 0xe244, 0x74e, 0xe24f,
- 0x748, 0xe25a, 0x742, 0xe265, 0x73d, 0xe270, 0x737, 0xe27b,
- 0x731, 0xe287, 0x72b, 0xe292, 0x725, 0xe29d, 0x720, 0xe2a8,
- 0x71a, 0xe2b3, 0x714, 0xe2be, 0x70e, 0xe2ca, 0x709, 0xe2d5,
- 0x703, 0xe2e0, 0x6fd, 0xe2eb, 0x6f7, 0xe2f6, 0x6f2, 0xe301,
- 0x6ec, 0xe30d, 0x6e6, 0xe318, 0x6e1, 0xe323, 0x6db, 0xe32e,
- 0x6d5, 0xe33a, 0x6d0, 0xe345, 0x6ca, 0xe350, 0x6c5, 0xe35b,
- 0x6bf, 0xe367, 0x6b9, 0xe372, 0x6b4, 0xe37d, 0x6ae, 0xe388,
- 0x6a8, 0xe394, 0x6a3, 0xe39f, 0x69d, 0xe3aa, 0x698, 0xe3b5,
- 0x692, 0xe3c1, 0x68d, 0xe3cc, 0x687, 0xe3d7, 0x682, 0xe3e2,
- 0x67c, 0xe3ee, 0x677, 0xe3f9, 0x671, 0xe404, 0x66c, 0xe410,
- 0x666, 0xe41b, 0x661, 0xe426, 0x65b, 0xe432, 0x656, 0xe43d,
- 0x650, 0xe448, 0x64b, 0xe454, 0x645, 0xe45f, 0x640, 0xe46a,
- 0x63b, 0xe476, 0x635, 0xe481, 0x630, 0xe48c, 0x62a, 0xe498,
- 0x625, 0xe4a3, 0x620, 0xe4ae, 0x61a, 0xe4ba, 0x615, 0xe4c5,
- 0x610, 0xe4d0, 0x60a, 0xe4dc, 0x605, 0xe4e7, 0x600, 0xe4f3,
- 0x5fa, 0xe4fe, 0x5f5, 0xe509, 0x5f0, 0xe515, 0x5ea, 0xe520,
- 0x5e5, 0xe52c, 0x5e0, 0xe537, 0x5db, 0xe542, 0x5d5, 0xe54e,
- 0x5d0, 0xe559, 0x5cb, 0xe565, 0x5c6, 0xe570, 0x5c1, 0xe57c,
- 0x5bb, 0xe587, 0x5b6, 0xe592, 0x5b1, 0xe59e, 0x5ac, 0xe5a9,
- 0x5a7, 0xe5b5, 0x5a1, 0xe5c0, 0x59c, 0xe5cc, 0x597, 0xe5d7,
- 0x592, 0xe5e3, 0x58d, 0xe5ee, 0x588, 0xe5fa, 0x583, 0xe605,
- 0x57e, 0xe611, 0x578, 0xe61c, 0x573, 0xe628, 0x56e, 0xe633,
- 0x569, 0xe63f, 0x564, 0xe64a, 0x55f, 0xe656, 0x55a, 0xe661,
- 0x555, 0xe66d, 0x550, 0xe678, 0x54b, 0xe684, 0x546, 0xe68f,
- 0x541, 0xe69b, 0x53c, 0xe6a6, 0x537, 0xe6b2, 0x532, 0xe6bd,
- 0x52d, 0xe6c9, 0x528, 0xe6d4, 0x523, 0xe6e0, 0x51e, 0xe6ec,
- 0x51a, 0xe6f7, 0x515, 0xe703, 0x510, 0xe70e, 0x50b, 0xe71a,
- 0x506, 0xe725, 0x501, 0xe731, 0x4fc, 0xe73d, 0x4f7, 0xe748,
- 0x4f2, 0xe754, 0x4ee, 0xe75f, 0x4e9, 0xe76b, 0x4e4, 0xe777,
- 0x4df, 0xe782, 0x4da, 0xe78e, 0x4d6, 0xe799, 0x4d1, 0xe7a5,
- 0x4cc, 0xe7b1, 0x4c7, 0xe7bc, 0x4c2, 0xe7c8, 0x4be, 0xe7d3,
- 0x4b9, 0xe7df, 0x4b4, 0xe7eb, 0x4b0, 0xe7f6, 0x4ab, 0xe802,
- 0x4a6, 0xe80e, 0x4a1, 0xe819, 0x49d, 0xe825, 0x498, 0xe831,
- 0x493, 0xe83c, 0x48f, 0xe848, 0x48a, 0xe854, 0x485, 0xe85f,
- 0x481, 0xe86b, 0x47c, 0xe877, 0x478, 0xe882, 0x473, 0xe88e,
- 0x46e, 0xe89a, 0x46a, 0xe8a5, 0x465, 0xe8b1, 0x461, 0xe8bd,
- 0x45c, 0xe8c9, 0x457, 0xe8d4, 0x453, 0xe8e0, 0x44e, 0xe8ec,
- 0x44a, 0xe8f7, 0x445, 0xe903, 0x441, 0xe90f, 0x43c, 0xe91b,
- 0x438, 0xe926, 0x433, 0xe932, 0x42f, 0xe93e, 0x42a, 0xe94a,
- 0x426, 0xe955, 0x422, 0xe961, 0x41d, 0xe96d, 0x419, 0xe979,
- 0x414, 0xe984, 0x410, 0xe990, 0x40b, 0xe99c, 0x407, 0xe9a8,
- 0x403, 0xe9b4, 0x3fe, 0xe9bf, 0x3fa, 0xe9cb, 0x3f6, 0xe9d7,
- 0x3f1, 0xe9e3, 0x3ed, 0xe9ee, 0x3e9, 0xe9fa, 0x3e4, 0xea06,
- 0x3e0, 0xea12, 0x3dc, 0xea1e, 0x3d7, 0xea29, 0x3d3, 0xea35,
- 0x3cf, 0xea41, 0x3ca, 0xea4d, 0x3c6, 0xea59, 0x3c2, 0xea65,
- 0x3be, 0xea70, 0x3ba, 0xea7c, 0x3b5, 0xea88, 0x3b1, 0xea94,
- 0x3ad, 0xeaa0, 0x3a9, 0xeaac, 0x3a5, 0xeab7, 0x3a0, 0xeac3,
- 0x39c, 0xeacf, 0x398, 0xeadb, 0x394, 0xeae7, 0x390, 0xeaf3,
- 0x38c, 0xeaff, 0x387, 0xeb0a, 0x383, 0xeb16, 0x37f, 0xeb22,
- 0x37b, 0xeb2e, 0x377, 0xeb3a, 0x373, 0xeb46, 0x36f, 0xeb52,
- 0x36b, 0xeb5e, 0x367, 0xeb6a, 0x363, 0xeb75, 0x35f, 0xeb81,
- 0x35b, 0xeb8d, 0x357, 0xeb99, 0x353, 0xeba5, 0x34f, 0xebb1,
- 0x34b, 0xebbd, 0x347, 0xebc9, 0x343, 0xebd5, 0x33f, 0xebe1,
- 0x33b, 0xebed, 0x337, 0xebf9, 0x333, 0xec05, 0x32f, 0xec10,
- 0x32b, 0xec1c, 0x327, 0xec28, 0x323, 0xec34, 0x320, 0xec40,
- 0x31c, 0xec4c, 0x318, 0xec58, 0x314, 0xec64, 0x310, 0xec70,
- 0x30c, 0xec7c, 0x308, 0xec88, 0x305, 0xec94, 0x301, 0xeca0,
- 0x2fd, 0xecac, 0x2f9, 0xecb8, 0x2f5, 0xecc4, 0x2f2, 0xecd0,
- 0x2ee, 0xecdc, 0x2ea, 0xece8, 0x2e6, 0xecf4, 0x2e3, 0xed00,
- 0x2df, 0xed0c, 0x2db, 0xed18, 0x2d8, 0xed24, 0x2d4, 0xed30,
- 0x2d0, 0xed3c, 0x2cc, 0xed48, 0x2c9, 0xed54, 0x2c5, 0xed60,
- 0x2c1, 0xed6c, 0x2be, 0xed78, 0x2ba, 0xed84, 0x2b7, 0xed90,
- 0x2b3, 0xed9c, 0x2af, 0xeda8, 0x2ac, 0xedb4, 0x2a8, 0xedc0,
- 0x2a5, 0xedcc, 0x2a1, 0xedd8, 0x29d, 0xede4, 0x29a, 0xedf0,
- 0x296, 0xedfc, 0x293, 0xee09, 0x28f, 0xee15, 0x28c, 0xee21,
- 0x288, 0xee2d, 0x285, 0xee39, 0x281, 0xee45, 0x27e, 0xee51,
- 0x27a, 0xee5d, 0x277, 0xee69, 0x273, 0xee75, 0x270, 0xee81,
- 0x26d, 0xee8d, 0x269, 0xee99, 0x266, 0xeea6, 0x262, 0xeeb2,
- 0x25f, 0xeebe, 0x25c, 0xeeca, 0x258, 0xeed6, 0x255, 0xeee2,
- 0x251, 0xeeee, 0x24e, 0xeefa, 0x24b, 0xef06, 0x247, 0xef13,
- 0x244, 0xef1f, 0x241, 0xef2b, 0x23e, 0xef37, 0x23a, 0xef43,
- 0x237, 0xef4f, 0x234, 0xef5b, 0x230, 0xef67, 0x22d, 0xef74,
- 0x22a, 0xef80, 0x227, 0xef8c, 0x223, 0xef98, 0x220, 0xefa4,
- 0x21d, 0xefb0, 0x21a, 0xefbc, 0x217, 0xefc9, 0x213, 0xefd5,
- 0x210, 0xefe1, 0x20d, 0xefed, 0x20a, 0xeff9, 0x207, 0xf005,
- 0x204, 0xf012, 0x201, 0xf01e, 0x1fd, 0xf02a, 0x1fa, 0xf036,
- 0x1f7, 0xf042, 0x1f4, 0xf04e, 0x1f1, 0xf05b, 0x1ee, 0xf067,
- 0x1eb, 0xf073, 0x1e8, 0xf07f, 0x1e5, 0xf08b, 0x1e2, 0xf098,
- 0x1df, 0xf0a4, 0x1dc, 0xf0b0, 0x1d9, 0xf0bc, 0x1d6, 0xf0c8,
- 0x1d3, 0xf0d5, 0x1d0, 0xf0e1, 0x1cd, 0xf0ed, 0x1ca, 0xf0f9,
- 0x1c7, 0xf105, 0x1c4, 0xf112, 0x1c1, 0xf11e, 0x1be, 0xf12a,
- 0x1bb, 0xf136, 0x1b8, 0xf143, 0x1b6, 0xf14f, 0x1b3, 0xf15b,
- 0x1b0, 0xf167, 0x1ad, 0xf174, 0x1aa, 0xf180, 0x1a7, 0xf18c,
- 0x1a4, 0xf198, 0x1a2, 0xf1a4, 0x19f, 0xf1b1, 0x19c, 0xf1bd,
- 0x199, 0xf1c9, 0x196, 0xf1d5, 0x194, 0xf1e2, 0x191, 0xf1ee,
- 0x18e, 0xf1fa, 0x18b, 0xf207, 0x189, 0xf213, 0x186, 0xf21f,
- 0x183, 0xf22b, 0x180, 0xf238, 0x17e, 0xf244, 0x17b, 0xf250,
- 0x178, 0xf25c, 0x176, 0xf269, 0x173, 0xf275, 0x170, 0xf281,
- 0x16e, 0xf28e, 0x16b, 0xf29a, 0x168, 0xf2a6, 0x166, 0xf2b2,
- 0x163, 0xf2bf, 0x161, 0xf2cb, 0x15e, 0xf2d7, 0x15b, 0xf2e4,
- 0x159, 0xf2f0, 0x156, 0xf2fc, 0x154, 0xf308, 0x151, 0xf315,
- 0x14f, 0xf321, 0x14c, 0xf32d, 0x14a, 0xf33a, 0x147, 0xf346,
- 0x145, 0xf352, 0x142, 0xf35f, 0x140, 0xf36b, 0x13d, 0xf377,
- 0x13b, 0xf384, 0x138, 0xf390, 0x136, 0xf39c, 0x134, 0xf3a9,
- 0x131, 0xf3b5, 0x12f, 0xf3c1, 0x12c, 0xf3ce, 0x12a, 0xf3da,
- 0x128, 0xf3e6, 0x125, 0xf3f3, 0x123, 0xf3ff, 0x120, 0xf40b,
- 0x11e, 0xf418, 0x11c, 0xf424, 0x119, 0xf430, 0x117, 0xf43d,
- 0x115, 0xf449, 0x113, 0xf455, 0x110, 0xf462, 0x10e, 0xf46e,
- 0x10c, 0xf47b, 0x109, 0xf487, 0x107, 0xf493, 0x105, 0xf4a0,
- 0x103, 0xf4ac, 0x100, 0xf4b8, 0xfe, 0xf4c5, 0xfc, 0xf4d1,
- 0xfa, 0xf4dd, 0xf8, 0xf4ea, 0xf6, 0xf4f6, 0xf3, 0xf503,
- 0xf1, 0xf50f, 0xef, 0xf51b, 0xed, 0xf528, 0xeb, 0xf534,
- 0xe9, 0xf540, 0xe7, 0xf54d, 0xe4, 0xf559, 0xe2, 0xf566,
- 0xe0, 0xf572, 0xde, 0xf57e, 0xdc, 0xf58b, 0xda, 0xf597,
- 0xd8, 0xf5a4, 0xd6, 0xf5b0, 0xd4, 0xf5bc, 0xd2, 0xf5c9,
- 0xd0, 0xf5d5, 0xce, 0xf5e2, 0xcc, 0xf5ee, 0xca, 0xf5fa,
- 0xc8, 0xf607, 0xc6, 0xf613, 0xc4, 0xf620, 0xc2, 0xf62c,
- 0xc0, 0xf639, 0xbe, 0xf645, 0xbd, 0xf651, 0xbb, 0xf65e,
- 0xb9, 0xf66a, 0xb7, 0xf677, 0xb5, 0xf683, 0xb3, 0xf690,
- 0xb1, 0xf69c, 0xaf, 0xf6a8, 0xae, 0xf6b5, 0xac, 0xf6c1,
- 0xaa, 0xf6ce, 0xa8, 0xf6da, 0xa6, 0xf6e7, 0xa5, 0xf6f3,
- 0xa3, 0xf6ff, 0xa1, 0xf70c, 0x9f, 0xf718, 0x9e, 0xf725,
- 0x9c, 0xf731, 0x9a, 0xf73e, 0x98, 0xf74a, 0x97, 0xf757,
- 0x95, 0xf763, 0x93, 0xf76f, 0x92, 0xf77c, 0x90, 0xf788,
- 0x8e, 0xf795, 0x8d, 0xf7a1, 0x8b, 0xf7ae, 0x89, 0xf7ba,
- 0x88, 0xf7c7, 0x86, 0xf7d3, 0x85, 0xf7e0, 0x83, 0xf7ec,
- 0x81, 0xf7f9, 0x80, 0xf805, 0x7e, 0xf811, 0x7d, 0xf81e,
- 0x7b, 0xf82a, 0x7a, 0xf837, 0x78, 0xf843, 0x77, 0xf850,
- 0x75, 0xf85c, 0x74, 0xf869, 0x72, 0xf875, 0x71, 0xf882,
- 0x6f, 0xf88e, 0x6e, 0xf89b, 0x6c, 0xf8a7, 0x6b, 0xf8b4,
- 0x69, 0xf8c0, 0x68, 0xf8cd, 0x67, 0xf8d9, 0x65, 0xf8e6,
- 0x64, 0xf8f2, 0x62, 0xf8ff, 0x61, 0xf90b, 0x60, 0xf918,
- 0x5e, 0xf924, 0x5d, 0xf931, 0x5c, 0xf93d, 0x5a, 0xf94a,
- 0x59, 0xf956, 0x58, 0xf963, 0x56, 0xf96f, 0x55, 0xf97c,
- 0x54, 0xf988, 0x53, 0xf995, 0x51, 0xf9a1, 0x50, 0xf9ae,
- 0x4f, 0xf9ba, 0x4e, 0xf9c7, 0x4c, 0xf9d3, 0x4b, 0xf9e0,
- 0x4a, 0xf9ec, 0x49, 0xf9f9, 0x48, 0xfa05, 0x47, 0xfa12,
- 0x45, 0xfa1e, 0x44, 0xfa2b, 0x43, 0xfa37, 0x42, 0xfa44,
- 0x41, 0xfa50, 0x40, 0xfa5d, 0x3f, 0xfa69, 0x3d, 0xfa76,
- 0x3c, 0xfa82, 0x3b, 0xfa8f, 0x3a, 0xfa9b, 0x39, 0xfaa8,
- 0x38, 0xfab4, 0x37, 0xfac1, 0x36, 0xfacd, 0x35, 0xfada,
- 0x34, 0xfae6, 0x33, 0xfaf3, 0x32, 0xfb00, 0x31, 0xfb0c,
- 0x30, 0xfb19, 0x2f, 0xfb25, 0x2e, 0xfb32, 0x2d, 0xfb3e,
- 0x2c, 0xfb4b, 0x2b, 0xfb57, 0x2b, 0xfb64, 0x2a, 0xfb70,
- 0x29, 0xfb7d, 0x28, 0xfb89, 0x27, 0xfb96, 0x26, 0xfba2,
- 0x25, 0xfbaf, 0x24, 0xfbbc, 0x24, 0xfbc8, 0x23, 0xfbd5,
- 0x22, 0xfbe1, 0x21, 0xfbee, 0x20, 0xfbfa, 0x20, 0xfc07,
- 0x1f, 0xfc13, 0x1e, 0xfc20, 0x1d, 0xfc2c, 0x1d, 0xfc39,
- 0x1c, 0xfc45, 0x1b, 0xfc52, 0x1a, 0xfc5f, 0x1a, 0xfc6b,
- 0x19, 0xfc78, 0x18, 0xfc84, 0x18, 0xfc91, 0x17, 0xfc9d,
- 0x16, 0xfcaa, 0x16, 0xfcb6, 0x15, 0xfcc3, 0x14, 0xfcd0,
- 0x14, 0xfcdc, 0x13, 0xfce9, 0x13, 0xfcf5, 0x12, 0xfd02,
- 0x11, 0xfd0e, 0x11, 0xfd1b, 0x10, 0xfd27, 0x10, 0xfd34,
- 0xf, 0xfd40, 0xf, 0xfd4d, 0xe, 0xfd5a, 0xe, 0xfd66,
- 0xd, 0xfd73, 0xd, 0xfd7f, 0xc, 0xfd8c, 0xc, 0xfd98,
- 0xb, 0xfda5, 0xb, 0xfdb2, 0xa, 0xfdbe, 0xa, 0xfdcb,
- 0x9, 0xfdd7, 0x9, 0xfde4, 0x9, 0xfdf0, 0x8, 0xfdfd,
- 0x8, 0xfe09, 0x7, 0xfe16, 0x7, 0xfe23, 0x7, 0xfe2f,
- 0x6, 0xfe3c, 0x6, 0xfe48, 0x6, 0xfe55, 0x5, 0xfe61,
- 0x5, 0xfe6e, 0x5, 0xfe7a, 0x4, 0xfe87, 0x4, 0xfe94,
- 0x4, 0xfea0, 0x4, 0xfead, 0x3, 0xfeb9, 0x3, 0xfec6,
- 0x3, 0xfed2, 0x3, 0xfedf, 0x2, 0xfeec, 0x2, 0xfef8,
- 0x2, 0xff05, 0x2, 0xff11, 0x2, 0xff1e, 0x1, 0xff2a,
- 0x1, 0xff37, 0x1, 0xff44, 0x1, 0xff50, 0x1, 0xff5d,
- 0x1, 0xff69, 0x1, 0xff76, 0x0, 0xff82, 0x0, 0xff8f,
- 0x0, 0xff9b, 0x0, 0xffa8, 0x0, 0xffb5, 0x0, 0xffc1,
- 0x0, 0xffce, 0x0, 0xffda, 0x0, 0xffe7, 0x0, 0xfff3,
- 0x0, 0x0, 0x0, 0xd, 0x0, 0x19, 0x0, 0x26,
- 0x0, 0x32, 0x0, 0x3f, 0x0, 0x4b, 0x0, 0x58,
- 0x0, 0x65, 0x0, 0x71, 0x0, 0x7e, 0x1, 0x8a,
- 0x1, 0x97, 0x1, 0xa3, 0x1, 0xb0, 0x1, 0xbc,
- 0x1, 0xc9, 0x1, 0xd6, 0x2, 0xe2, 0x2, 0xef,
- 0x2, 0xfb, 0x2, 0x108, 0x2, 0x114, 0x3, 0x121,
- 0x3, 0x12e, 0x3, 0x13a, 0x3, 0x147, 0x4, 0x153,
- 0x4, 0x160, 0x4, 0x16c, 0x4, 0x179, 0x5, 0x186,
- 0x5, 0x192, 0x5, 0x19f, 0x6, 0x1ab, 0x6, 0x1b8,
- 0x6, 0x1c4, 0x7, 0x1d1, 0x7, 0x1dd, 0x7, 0x1ea,
- 0x8, 0x1f7, 0x8, 0x203, 0x9, 0x210, 0x9, 0x21c,
- 0x9, 0x229, 0xa, 0x235, 0xa, 0x242, 0xb, 0x24e,
- 0xb, 0x25b, 0xc, 0x268, 0xc, 0x274, 0xd, 0x281,
- 0xd, 0x28d, 0xe, 0x29a, 0xe, 0x2a6, 0xf, 0x2b3,
- 0xf, 0x2c0, 0x10, 0x2cc, 0x10, 0x2d9, 0x11, 0x2e5,
- 0x11, 0x2f2, 0x12, 0x2fe, 0x13, 0x30b, 0x13, 0x317,
- 0x14, 0x324, 0x14, 0x330, 0x15, 0x33d, 0x16, 0x34a,
- 0x16, 0x356, 0x17, 0x363, 0x18, 0x36f, 0x18, 0x37c,
- 0x19, 0x388, 0x1a, 0x395, 0x1a, 0x3a1, 0x1b, 0x3ae,
- 0x1c, 0x3bb, 0x1d, 0x3c7, 0x1d, 0x3d4, 0x1e, 0x3e0,
- 0x1f, 0x3ed, 0x20, 0x3f9, 0x20, 0x406, 0x21, 0x412,
- 0x22, 0x41f, 0x23, 0x42b, 0x24, 0x438, 0x24, 0x444,
- 0x25, 0x451, 0x26, 0x45e, 0x27, 0x46a, 0x28, 0x477,
- 0x29, 0x483, 0x2a, 0x490, 0x2b, 0x49c, 0x2b, 0x4a9,
- 0x2c, 0x4b5, 0x2d, 0x4c2, 0x2e, 0x4ce, 0x2f, 0x4db,
- 0x30, 0x4e7, 0x31, 0x4f4, 0x32, 0x500, 0x33, 0x50d,
- 0x34, 0x51a, 0x35, 0x526, 0x36, 0x533, 0x37, 0x53f,
- 0x38, 0x54c, 0x39, 0x558, 0x3a, 0x565, 0x3b, 0x571,
- 0x3c, 0x57e, 0x3d, 0x58a, 0x3f, 0x597, 0x40, 0x5a3,
- 0x41, 0x5b0, 0x42, 0x5bc, 0x43, 0x5c9, 0x44, 0x5d5,
- 0x45, 0x5e2, 0x47, 0x5ee, 0x48, 0x5fb, 0x49, 0x607,
- 0x4a, 0x614, 0x4b, 0x620, 0x4c, 0x62d, 0x4e, 0x639,
- 0x4f, 0x646, 0x50, 0x652, 0x51, 0x65f, 0x53, 0x66b,
- 0x54, 0x678, 0x55, 0x684, 0x56, 0x691, 0x58, 0x69d,
- 0x59, 0x6aa, 0x5a, 0x6b6, 0x5c, 0x6c3, 0x5d, 0x6cf,
- 0x5e, 0x6dc, 0x60, 0x6e8, 0x61, 0x6f5, 0x62, 0x701,
- 0x64, 0x70e, 0x65, 0x71a, 0x67, 0x727, 0x68, 0x733,
- 0x69, 0x740, 0x6b, 0x74c, 0x6c, 0x759, 0x6e, 0x765,
- 0x6f, 0x772, 0x71, 0x77e, 0x72, 0x78b, 0x74, 0x797,
- 0x75, 0x7a4, 0x77, 0x7b0, 0x78, 0x7bd, 0x7a, 0x7c9,
- 0x7b, 0x7d6, 0x7d, 0x7e2, 0x7e, 0x7ef, 0x80, 0x7fb,
- 0x81, 0x807, 0x83, 0x814, 0x85, 0x820, 0x86, 0x82d,
- 0x88, 0x839, 0x89, 0x846, 0x8b, 0x852, 0x8d, 0x85f,
- 0x8e, 0x86b, 0x90, 0x878, 0x92, 0x884, 0x93, 0x891,
- 0x95, 0x89d, 0x97, 0x8a9, 0x98, 0x8b6, 0x9a, 0x8c2,
- 0x9c, 0x8cf, 0x9e, 0x8db, 0x9f, 0x8e8, 0xa1, 0x8f4,
- 0xa3, 0x901, 0xa5, 0x90d, 0xa6, 0x919, 0xa8, 0x926,
- 0xaa, 0x932, 0xac, 0x93f, 0xae, 0x94b, 0xaf, 0x958,
- 0xb1, 0x964, 0xb3, 0x970, 0xb5, 0x97d, 0xb7, 0x989,
- 0xb9, 0x996, 0xbb, 0x9a2, 0xbd, 0x9af, 0xbe, 0x9bb,
- 0xc0, 0x9c7, 0xc2, 0x9d4, 0xc4, 0x9e0, 0xc6, 0x9ed,
- 0xc8, 0x9f9, 0xca, 0xa06, 0xcc, 0xa12, 0xce, 0xa1e,
- 0xd0, 0xa2b, 0xd2, 0xa37, 0xd4, 0xa44, 0xd6, 0xa50,
- 0xd8, 0xa5c, 0xda, 0xa69, 0xdc, 0xa75, 0xde, 0xa82,
- 0xe0, 0xa8e, 0xe2, 0xa9a, 0xe4, 0xaa7, 0xe7, 0xab3,
- 0xe9, 0xac0, 0xeb, 0xacc, 0xed, 0xad8, 0xef, 0xae5,
- 0xf1, 0xaf1, 0xf3, 0xafd, 0xf6, 0xb0a, 0xf8, 0xb16,
- 0xfa, 0xb23, 0xfc, 0xb2f, 0xfe, 0xb3b, 0x100, 0xb48,
- 0x103, 0xb54, 0x105, 0xb60, 0x107, 0xb6d, 0x109, 0xb79,
- 0x10c, 0xb85, 0x10e, 0xb92, 0x110, 0xb9e, 0x113, 0xbab,
- 0x115, 0xbb7, 0x117, 0xbc3, 0x119, 0xbd0, 0x11c, 0xbdc,
- 0x11e, 0xbe8, 0x120, 0xbf5, 0x123, 0xc01, 0x125, 0xc0d,
- 0x128, 0xc1a, 0x12a, 0xc26, 0x12c, 0xc32, 0x12f, 0xc3f,
- 0x131, 0xc4b, 0x134, 0xc57, 0x136, 0xc64, 0x138, 0xc70,
- 0x13b, 0xc7c, 0x13d, 0xc89, 0x140, 0xc95, 0x142, 0xca1,
- 0x145, 0xcae, 0x147, 0xcba, 0x14a, 0xcc6, 0x14c, 0xcd3,
- 0x14f, 0xcdf, 0x151, 0xceb, 0x154, 0xcf8, 0x156, 0xd04,
- 0x159, 0xd10, 0x15b, 0xd1c, 0x15e, 0xd29, 0x161, 0xd35,
- 0x163, 0xd41, 0x166, 0xd4e, 0x168, 0xd5a, 0x16b, 0xd66,
- 0x16e, 0xd72, 0x170, 0xd7f, 0x173, 0xd8b, 0x176, 0xd97,
- 0x178, 0xda4, 0x17b, 0xdb0, 0x17e, 0xdbc, 0x180, 0xdc8,
- 0x183, 0xdd5, 0x186, 0xde1, 0x189, 0xded, 0x18b, 0xdf9,
- 0x18e, 0xe06, 0x191, 0xe12, 0x194, 0xe1e, 0x196, 0xe2b,
- 0x199, 0xe37, 0x19c, 0xe43, 0x19f, 0xe4f, 0x1a2, 0xe5c,
- 0x1a4, 0xe68, 0x1a7, 0xe74, 0x1aa, 0xe80, 0x1ad, 0xe8c,
- 0x1b0, 0xe99, 0x1b3, 0xea5, 0x1b6, 0xeb1, 0x1b8, 0xebd,
- 0x1bb, 0xeca, 0x1be, 0xed6, 0x1c1, 0xee2, 0x1c4, 0xeee,
- 0x1c7, 0xefb, 0x1ca, 0xf07, 0x1cd, 0xf13, 0x1d0, 0xf1f,
- 0x1d3, 0xf2b, 0x1d6, 0xf38, 0x1d9, 0xf44, 0x1dc, 0xf50,
- 0x1df, 0xf5c, 0x1e2, 0xf68, 0x1e5, 0xf75, 0x1e8, 0xf81,
- 0x1eb, 0xf8d, 0x1ee, 0xf99, 0x1f1, 0xfa5, 0x1f4, 0xfb2,
- 0x1f7, 0xfbe, 0x1fa, 0xfca, 0x1fd, 0xfd6, 0x201, 0xfe2,
- 0x204, 0xfee, 0x207, 0xffb, 0x20a, 0x1007, 0x20d, 0x1013,
- 0x210, 0x101f, 0x213, 0x102b, 0x217, 0x1037, 0x21a, 0x1044,
- 0x21d, 0x1050, 0x220, 0x105c, 0x223, 0x1068, 0x227, 0x1074,
- 0x22a, 0x1080, 0x22d, 0x108c, 0x230, 0x1099, 0x234, 0x10a5,
- 0x237, 0x10b1, 0x23a, 0x10bd, 0x23e, 0x10c9, 0x241, 0x10d5,
- 0x244, 0x10e1, 0x247, 0x10ed, 0x24b, 0x10fa, 0x24e, 0x1106,
- 0x251, 0x1112, 0x255, 0x111e, 0x258, 0x112a, 0x25c, 0x1136,
- 0x25f, 0x1142, 0x262, 0x114e, 0x266, 0x115a, 0x269, 0x1167,
- 0x26d, 0x1173, 0x270, 0x117f, 0x273, 0x118b, 0x277, 0x1197,
- 0x27a, 0x11a3, 0x27e, 0x11af, 0x281, 0x11bb, 0x285, 0x11c7,
- 0x288, 0x11d3, 0x28c, 0x11df, 0x28f, 0x11eb, 0x293, 0x11f7,
- 0x296, 0x1204, 0x29a, 0x1210, 0x29d, 0x121c, 0x2a1, 0x1228,
- 0x2a5, 0x1234, 0x2a8, 0x1240, 0x2ac, 0x124c, 0x2af, 0x1258,
- 0x2b3, 0x1264, 0x2b7, 0x1270, 0x2ba, 0x127c, 0x2be, 0x1288,
- 0x2c1, 0x1294, 0x2c5, 0x12a0, 0x2c9, 0x12ac, 0x2cc, 0x12b8,
- 0x2d0, 0x12c4, 0x2d4, 0x12d0, 0x2d8, 0x12dc, 0x2db, 0x12e8,
- 0x2df, 0x12f4, 0x2e3, 0x1300, 0x2e6, 0x130c, 0x2ea, 0x1318,
- 0x2ee, 0x1324, 0x2f2, 0x1330, 0x2f5, 0x133c, 0x2f9, 0x1348,
- 0x2fd, 0x1354, 0x301, 0x1360, 0x305, 0x136c, 0x308, 0x1378,
- 0x30c, 0x1384, 0x310, 0x1390, 0x314, 0x139c, 0x318, 0x13a8,
- 0x31c, 0x13b4, 0x320, 0x13c0, 0x323, 0x13cc, 0x327, 0x13d8,
- 0x32b, 0x13e4, 0x32f, 0x13f0, 0x333, 0x13fb, 0x337, 0x1407,
- 0x33b, 0x1413, 0x33f, 0x141f, 0x343, 0x142b, 0x347, 0x1437,
- 0x34b, 0x1443, 0x34f, 0x144f, 0x353, 0x145b, 0x357, 0x1467,
- 0x35b, 0x1473, 0x35f, 0x147f, 0x363, 0x148b, 0x367, 0x1496,
- 0x36b, 0x14a2, 0x36f, 0x14ae, 0x373, 0x14ba, 0x377, 0x14c6,
- 0x37b, 0x14d2, 0x37f, 0x14de, 0x383, 0x14ea, 0x387, 0x14f6,
- 0x38c, 0x1501, 0x390, 0x150d, 0x394, 0x1519, 0x398, 0x1525,
- 0x39c, 0x1531, 0x3a0, 0x153d, 0x3a5, 0x1549, 0x3a9, 0x1554,
- 0x3ad, 0x1560, 0x3b1, 0x156c, 0x3b5, 0x1578, 0x3ba, 0x1584,
- 0x3be, 0x1590, 0x3c2, 0x159b, 0x3c6, 0x15a7, 0x3ca, 0x15b3,
- 0x3cf, 0x15bf, 0x3d3, 0x15cb, 0x3d7, 0x15d7, 0x3dc, 0x15e2,
- 0x3e0, 0x15ee, 0x3e4, 0x15fa, 0x3e9, 0x1606, 0x3ed, 0x1612,
- 0x3f1, 0x161d, 0x3f6, 0x1629, 0x3fa, 0x1635, 0x3fe, 0x1641,
- 0x403, 0x164c, 0x407, 0x1658, 0x40b, 0x1664, 0x410, 0x1670,
- 0x414, 0x167c, 0x419, 0x1687, 0x41d, 0x1693, 0x422, 0x169f,
- 0x426, 0x16ab, 0x42a, 0x16b6, 0x42f, 0x16c2, 0x433, 0x16ce,
- 0x438, 0x16da, 0x43c, 0x16e5, 0x441, 0x16f1, 0x445, 0x16fd,
- 0x44a, 0x1709, 0x44e, 0x1714, 0x453, 0x1720, 0x457, 0x172c,
- 0x45c, 0x1737, 0x461, 0x1743, 0x465, 0x174f, 0x46a, 0x175b,
- 0x46e, 0x1766, 0x473, 0x1772, 0x478, 0x177e, 0x47c, 0x1789,
- 0x481, 0x1795, 0x485, 0x17a1, 0x48a, 0x17ac, 0x48f, 0x17b8,
- 0x493, 0x17c4, 0x498, 0x17cf, 0x49d, 0x17db, 0x4a1, 0x17e7,
- 0x4a6, 0x17f2, 0x4ab, 0x17fe, 0x4b0, 0x180a, 0x4b4, 0x1815,
- 0x4b9, 0x1821, 0x4be, 0x182d, 0x4c2, 0x1838, 0x4c7, 0x1844,
- 0x4cc, 0x184f, 0x4d1, 0x185b, 0x4d6, 0x1867, 0x4da, 0x1872,
- 0x4df, 0x187e, 0x4e4, 0x1889, 0x4e9, 0x1895, 0x4ee, 0x18a1,
- 0x4f2, 0x18ac, 0x4f7, 0x18b8, 0x4fc, 0x18c3, 0x501, 0x18cf,
- 0x506, 0x18db, 0x50b, 0x18e6, 0x510, 0x18f2, 0x515, 0x18fd,
- 0x51a, 0x1909, 0x51e, 0x1914, 0x523, 0x1920, 0x528, 0x192c,
- 0x52d, 0x1937, 0x532, 0x1943, 0x537, 0x194e, 0x53c, 0x195a,
- 0x541, 0x1965, 0x546, 0x1971, 0x54b, 0x197c, 0x550, 0x1988,
- 0x555, 0x1993, 0x55a, 0x199f, 0x55f, 0x19aa, 0x564, 0x19b6,
- 0x569, 0x19c1, 0x56e, 0x19cd, 0x573, 0x19d8, 0x578, 0x19e4,
- 0x57e, 0x19ef, 0x583, 0x19fb, 0x588, 0x1a06, 0x58d, 0x1a12,
- 0x592, 0x1a1d, 0x597, 0x1a29, 0x59c, 0x1a34, 0x5a1, 0x1a40,
- 0x5a7, 0x1a4b, 0x5ac, 0x1a57, 0x5b1, 0x1a62, 0x5b6, 0x1a6e,
- 0x5bb, 0x1a79, 0x5c1, 0x1a84, 0x5c6, 0x1a90, 0x5cb, 0x1a9b,
- 0x5d0, 0x1aa7, 0x5d5, 0x1ab2, 0x5db, 0x1abe, 0x5e0, 0x1ac9,
- 0x5e5, 0x1ad4, 0x5ea, 0x1ae0, 0x5f0, 0x1aeb, 0x5f5, 0x1af7,
- 0x5fa, 0x1b02, 0x600, 0x1b0d, 0x605, 0x1b19, 0x60a, 0x1b24,
- 0x610, 0x1b30, 0x615, 0x1b3b, 0x61a, 0x1b46, 0x620, 0x1b52,
- 0x625, 0x1b5d, 0x62a, 0x1b68, 0x630, 0x1b74, 0x635, 0x1b7f,
- 0x63b, 0x1b8a, 0x640, 0x1b96, 0x645, 0x1ba1, 0x64b, 0x1bac,
- 0x650, 0x1bb8, 0x656, 0x1bc3, 0x65b, 0x1bce, 0x661, 0x1bda,
- 0x666, 0x1be5, 0x66c, 0x1bf0, 0x671, 0x1bfc, 0x677, 0x1c07,
- 0x67c, 0x1c12, 0x682, 0x1c1e, 0x687, 0x1c29, 0x68d, 0x1c34,
- 0x692, 0x1c3f, 0x698, 0x1c4b, 0x69d, 0x1c56, 0x6a3, 0x1c61,
- 0x6a8, 0x1c6c, 0x6ae, 0x1c78, 0x6b4, 0x1c83, 0x6b9, 0x1c8e,
- 0x6bf, 0x1c99, 0x6c5, 0x1ca5, 0x6ca, 0x1cb0, 0x6d0, 0x1cbb,
- 0x6d5, 0x1cc6, 0x6db, 0x1cd2, 0x6e1, 0x1cdd, 0x6e6, 0x1ce8,
- 0x6ec, 0x1cf3, 0x6f2, 0x1cff, 0x6f7, 0x1d0a, 0x6fd, 0x1d15,
- 0x703, 0x1d20, 0x709, 0x1d2b, 0x70e, 0x1d36, 0x714, 0x1d42,
- 0x71a, 0x1d4d, 0x720, 0x1d58, 0x725, 0x1d63, 0x72b, 0x1d6e,
- 0x731, 0x1d79, 0x737, 0x1d85, 0x73d, 0x1d90, 0x742, 0x1d9b,
- 0x748, 0x1da6, 0x74e, 0x1db1, 0x754, 0x1dbc, 0x75a, 0x1dc7,
- 0x75f, 0x1dd3, 0x765, 0x1dde, 0x76b, 0x1de9, 0x771, 0x1df4,
- 0x777, 0x1dff, 0x77d, 0x1e0a, 0x783, 0x1e15, 0x789, 0x1e20,
- 0x78f, 0x1e2b, 0x795, 0x1e36, 0x79a, 0x1e42, 0x7a0, 0x1e4d,
- 0x7a6, 0x1e58, 0x7ac, 0x1e63, 0x7b2, 0x1e6e, 0x7b8, 0x1e79,
- 0x7be, 0x1e84, 0x7c4, 0x1e8f, 0x7ca, 0x1e9a, 0x7d0, 0x1ea5,
- 0x7d6, 0x1eb0, 0x7dc, 0x1ebb, 0x7e2, 0x1ec6, 0x7e8, 0x1ed1,
- 0x7ee, 0x1edc, 0x7f5, 0x1ee7, 0x7fb, 0x1ef2, 0x801, 0x1efd,
- 0x807, 0x1f08, 0x80d, 0x1f13, 0x813, 0x1f1e, 0x819, 0x1f29,
- 0x81f, 0x1f34, 0x825, 0x1f3f, 0x82b, 0x1f4a, 0x832, 0x1f55,
- 0x838, 0x1f60, 0x83e, 0x1f6b, 0x844, 0x1f76, 0x84a, 0x1f81,
- 0x850, 0x1f8c, 0x857, 0x1f97, 0x85d, 0x1fa2, 0x863, 0x1fac,
- 0x869, 0x1fb7, 0x870, 0x1fc2, 0x876, 0x1fcd, 0x87c, 0x1fd8,
- 0x882, 0x1fe3, 0x889, 0x1fee, 0x88f, 0x1ff9, 0x895, 0x2004,
- 0x89b, 0x200f, 0x8a2, 0x2019, 0x8a8, 0x2024, 0x8ae, 0x202f,
- 0x8b5, 0x203a, 0x8bb, 0x2045, 0x8c1, 0x2050, 0x8c8, 0x205b,
- 0x8ce, 0x2065, 0x8d4, 0x2070, 0x8db, 0x207b, 0x8e1, 0x2086,
- 0x8e8, 0x2091, 0x8ee, 0x209b, 0x8f4, 0x20a6, 0x8fb, 0x20b1,
- 0x901, 0x20bc, 0x908, 0x20c7, 0x90e, 0x20d1, 0x915, 0x20dc,
- 0x91b, 0x20e7, 0x921, 0x20f2, 0x928, 0x20fd, 0x92e, 0x2107,
- 0x935, 0x2112, 0x93b, 0x211d, 0x942, 0x2128, 0x948, 0x2132,
- 0x94f, 0x213d, 0x955, 0x2148, 0x95c, 0x2153, 0x963, 0x215d,
- 0x969, 0x2168, 0x970, 0x2173, 0x976, 0x217d, 0x97d, 0x2188,
- 0x983, 0x2193, 0x98a, 0x219e, 0x991, 0x21a8, 0x997, 0x21b3,
- 0x99e, 0x21be, 0x9a4, 0x21c8, 0x9ab, 0x21d3, 0x9b2, 0x21de,
- 0x9b8, 0x21e8, 0x9bf, 0x21f3, 0x9c6, 0x21fe, 0x9cc, 0x2208,
- 0x9d3, 0x2213, 0x9da, 0x221e, 0x9e0, 0x2228, 0x9e7, 0x2233,
- 0x9ee, 0x223d, 0x9f5, 0x2248, 0x9fb, 0x2253, 0xa02, 0x225d,
- 0xa09, 0x2268, 0xa10, 0x2272, 0xa16, 0x227d, 0xa1d, 0x2288,
- 0xa24, 0x2292, 0xa2b, 0x229d, 0xa32, 0x22a7, 0xa38, 0x22b2,
- 0xa3f, 0x22bc, 0xa46, 0x22c7, 0xa4d, 0x22d2, 0xa54, 0x22dc,
- 0xa5b, 0x22e7, 0xa61, 0x22f1, 0xa68, 0x22fc, 0xa6f, 0x2306,
- 0xa76, 0x2311, 0xa7d, 0x231b, 0xa84, 0x2326, 0xa8b, 0x2330,
- 0xa92, 0x233b, 0xa99, 0x2345, 0xa9f, 0x2350, 0xaa6, 0x235a,
- 0xaad, 0x2365, 0xab4, 0x236f, 0xabb, 0x237a, 0xac2, 0x2384,
- 0xac9, 0x238e, 0xad0, 0x2399, 0xad7, 0x23a3, 0xade, 0x23ae,
- 0xae5, 0x23b8, 0xaec, 0x23c3, 0xaf3, 0x23cd, 0xafa, 0x23d7,
- 0xb01, 0x23e2, 0xb08, 0x23ec, 0xb0f, 0x23f7, 0xb16, 0x2401,
- 0xb1e, 0x240b, 0xb25, 0x2416, 0xb2c, 0x2420, 0xb33, 0x242b,
- 0xb3a, 0x2435, 0xb41, 0x243f, 0xb48, 0x244a, 0xb4f, 0x2454,
- 0xb56, 0x245e, 0xb5e, 0x2469, 0xb65, 0x2473, 0xb6c, 0x247d,
- 0xb73, 0x2488, 0xb7a, 0x2492, 0xb81, 0x249c, 0xb89, 0x24a7,
- 0xb90, 0x24b1, 0xb97, 0x24bb, 0xb9e, 0x24c5, 0xba5, 0x24d0,
- 0xbad, 0x24da, 0xbb4, 0x24e4, 0xbbb, 0x24ef, 0xbc2, 0x24f9,
- 0xbca, 0x2503, 0xbd1, 0x250d, 0xbd8, 0x2518, 0xbe0, 0x2522,
- 0xbe7, 0x252c, 0xbee, 0x2536, 0xbf5, 0x2541, 0xbfd, 0x254b,
- 0xc04, 0x2555, 0xc0b, 0x255f, 0xc13, 0x2569, 0xc1a, 0x2574,
- 0xc21, 0x257e, 0xc29, 0x2588, 0xc30, 0x2592, 0xc38, 0x259c,
- 0xc3f, 0x25a6, 0xc46, 0x25b1, 0xc4e, 0x25bb, 0xc55, 0x25c5,
- 0xc5d, 0x25cf, 0xc64, 0x25d9, 0xc6b, 0x25e3, 0xc73, 0x25ed,
- 0xc7a, 0x25f8, 0xc82, 0x2602, 0xc89, 0x260c, 0xc91, 0x2616,
- 0xc98, 0x2620, 0xca0, 0x262a, 0xca7, 0x2634, 0xcaf, 0x263e,
- 0xcb6, 0x2648, 0xcbe, 0x2652, 0xcc5, 0x265c, 0xccd, 0x2666,
- 0xcd4, 0x2671, 0xcdc, 0x267b, 0xce3, 0x2685, 0xceb, 0x268f,
- 0xcf3, 0x2699, 0xcfa, 0x26a3, 0xd02, 0x26ad, 0xd09, 0x26b7,
- 0xd11, 0x26c1, 0xd19, 0x26cb, 0xd20, 0x26d5, 0xd28, 0x26df,
- 0xd30, 0x26e9, 0xd37, 0x26f3, 0xd3f, 0x26fd, 0xd46, 0x2707,
- 0xd4e, 0x2711, 0xd56, 0x271a, 0xd5d, 0x2724, 0xd65, 0x272e,
- 0xd6d, 0x2738, 0xd75, 0x2742, 0xd7c, 0x274c, 0xd84, 0x2756,
- 0xd8c, 0x2760, 0xd93, 0x276a, 0xd9b, 0x2774, 0xda3, 0x277e,
- 0xdab, 0x2788, 0xdb2, 0x2791, 0xdba, 0x279b, 0xdc2, 0x27a5,
- 0xdca, 0x27af, 0xdd2, 0x27b9, 0xdd9, 0x27c3, 0xde1, 0x27cd,
- 0xde9, 0x27d6, 0xdf1, 0x27e0, 0xdf9, 0x27ea, 0xe01, 0x27f4,
- 0xe08, 0x27fe, 0xe10, 0x2808, 0xe18, 0x2811, 0xe20, 0x281b,
- 0xe28, 0x2825, 0xe30, 0x282f, 0xe38, 0x2838, 0xe40, 0x2842,
- 0xe47, 0x284c, 0xe4f, 0x2856, 0xe57, 0x2860, 0xe5f, 0x2869,
- 0xe67, 0x2873, 0xe6f, 0x287d, 0xe77, 0x2886, 0xe7f, 0x2890,
- 0xe87, 0x289a, 0xe8f, 0x28a4, 0xe97, 0x28ad, 0xe9f, 0x28b7,
- 0xea7, 0x28c1, 0xeaf, 0x28ca, 0xeb7, 0x28d4, 0xebf, 0x28de,
- 0xec7, 0x28e7, 0xecf, 0x28f1, 0xed7, 0x28fb, 0xedf, 0x2904,
- 0xee7, 0x290e, 0xeef, 0x2918, 0xef7, 0x2921, 0xeff, 0x292b,
- 0xf07, 0x2935, 0xf10, 0x293e, 0xf18, 0x2948, 0xf20, 0x2951,
- 0xf28, 0x295b, 0xf30, 0x2965, 0xf38, 0x296e, 0xf40, 0x2978,
- 0xf48, 0x2981, 0xf51, 0x298b, 0xf59, 0x2994, 0xf61, 0x299e,
- 0xf69, 0x29a7, 0xf71, 0x29b1, 0xf79, 0x29bb, 0xf82, 0x29c4,
- 0xf8a, 0x29ce, 0xf92, 0x29d7, 0xf9a, 0x29e1, 0xfa3, 0x29ea,
- 0xfab, 0x29f4, 0xfb3, 0x29fd, 0xfbb, 0x2a07, 0xfc4, 0x2a10,
- 0xfcc, 0x2a1a, 0xfd4, 0x2a23, 0xfdc, 0x2a2c, 0xfe5, 0x2a36,
- 0xfed, 0x2a3f, 0xff5, 0x2a49, 0xffe, 0x2a52, 0x1006, 0x2a5c,
- 0x100e, 0x2a65, 0x1016, 0x2a6e, 0x101f, 0x2a78, 0x1027, 0x2a81,
- 0x1030, 0x2a8b, 0x1038, 0x2a94, 0x1040, 0x2a9d, 0x1049, 0x2aa7,
- 0x1051, 0x2ab0, 0x1059, 0x2ab9, 0x1062, 0x2ac3, 0x106a, 0x2acc,
- 0x1073, 0x2ad6, 0x107b, 0x2adf, 0x1083, 0x2ae8, 0x108c, 0x2af2,
- 0x1094, 0x2afb, 0x109d, 0x2b04, 0x10a5, 0x2b0d, 0x10ae, 0x2b17,
- 0x10b6, 0x2b20, 0x10bf, 0x2b29, 0x10c7, 0x2b33, 0x10d0, 0x2b3c,
- 0x10d8, 0x2b45, 0x10e0, 0x2b4e, 0x10e9, 0x2b58, 0x10f2, 0x2b61,
- 0x10fa, 0x2b6a, 0x1103, 0x2b73, 0x110b, 0x2b7d, 0x1114, 0x2b86,
- 0x111c, 0x2b8f, 0x1125, 0x2b98, 0x112d, 0x2ba1, 0x1136, 0x2bab,
- 0x113e, 0x2bb4, 0x1147, 0x2bbd, 0x1150, 0x2bc6, 0x1158, 0x2bcf,
- 0x1161, 0x2bd8, 0x1169, 0x2be2, 0x1172, 0x2beb, 0x117b, 0x2bf4,
- 0x1183, 0x2bfd, 0x118c, 0x2c06, 0x1195, 0x2c0f, 0x119d, 0x2c18,
- 0x11a6, 0x2c21, 0x11af, 0x2c2b, 0x11b7, 0x2c34, 0x11c0, 0x2c3d,
- 0x11c9, 0x2c46, 0x11d1, 0x2c4f, 0x11da, 0x2c58, 0x11e3, 0x2c61,
- 0x11eb, 0x2c6a, 0x11f4, 0x2c73, 0x11fd, 0x2c7c, 0x1206, 0x2c85,
- 0x120e, 0x2c8e, 0x1217, 0x2c97, 0x1220, 0x2ca0, 0x1229, 0x2ca9,
- 0x1231, 0x2cb2, 0x123a, 0x2cbb, 0x1243, 0x2cc4, 0x124c, 0x2ccd,
- 0x1255, 0x2cd6, 0x125d, 0x2cdf, 0x1266, 0x2ce8, 0x126f, 0x2cf1,
- 0x1278, 0x2cfa, 0x1281, 0x2d03, 0x128a, 0x2d0c, 0x1292, 0x2d15,
- 0x129b, 0x2d1e, 0x12a4, 0x2d27, 0x12ad, 0x2d2f, 0x12b6, 0x2d38,
- 0x12bf, 0x2d41, 0x12c8, 0x2d4a, 0x12d1, 0x2d53, 0x12d9, 0x2d5c,
- 0x12e2, 0x2d65, 0x12eb, 0x2d6e, 0x12f4, 0x2d76, 0x12fd, 0x2d7f,
- 0x1306, 0x2d88, 0x130f, 0x2d91, 0x1318, 0x2d9a, 0x1321, 0x2da3,
- 0x132a, 0x2dab, 0x1333, 0x2db4, 0x133c, 0x2dbd, 0x1345, 0x2dc6,
- 0x134e, 0x2dcf, 0x1357, 0x2dd7, 0x1360, 0x2de0, 0x1369, 0x2de9,
- 0x1372, 0x2df2, 0x137b, 0x2dfa, 0x1384, 0x2e03, 0x138d, 0x2e0c,
- 0x1396, 0x2e15, 0x139f, 0x2e1d, 0x13a8, 0x2e26, 0x13b1, 0x2e2f,
- 0x13ba, 0x2e37, 0x13c3, 0x2e40, 0x13cc, 0x2e49, 0x13d5, 0x2e51,
- 0x13df, 0x2e5a, 0x13e8, 0x2e63, 0x13f1, 0x2e6b, 0x13fa, 0x2e74,
- 0x1403, 0x2e7d, 0x140c, 0x2e85, 0x1415, 0x2e8e, 0x141e, 0x2e97,
- 0x1428, 0x2e9f, 0x1431, 0x2ea8, 0x143a, 0x2eb0, 0x1443, 0x2eb9,
- 0x144c, 0x2ec2, 0x1455, 0x2eca, 0x145f, 0x2ed3, 0x1468, 0x2edb,
- 0x1471, 0x2ee4, 0x147a, 0x2eec, 0x1483, 0x2ef5, 0x148d, 0x2efd,
- 0x1496, 0x2f06, 0x149f, 0x2f0e, 0x14a8, 0x2f17, 0x14b2, 0x2f20,
- 0x14bb, 0x2f28, 0x14c4, 0x2f30, 0x14cd, 0x2f39, 0x14d7, 0x2f41,
- 0x14e0, 0x2f4a, 0x14e9, 0x2f52, 0x14f3, 0x2f5b, 0x14fc, 0x2f63,
- 0x1505, 0x2f6c, 0x150e, 0x2f74, 0x1518, 0x2f7d, 0x1521, 0x2f85,
- 0x152a, 0x2f8d, 0x1534, 0x2f96, 0x153d, 0x2f9e, 0x1547, 0x2fa7,
- 0x1550, 0x2faf, 0x1559, 0x2fb7, 0x1563, 0x2fc0, 0x156c, 0x2fc8,
- 0x1575, 0x2fd0, 0x157f, 0x2fd9, 0x1588, 0x2fe1, 0x1592, 0x2fea,
- 0x159b, 0x2ff2, 0x15a4, 0x2ffa, 0x15ae, 0x3002, 0x15b7, 0x300b,
- 0x15c1, 0x3013, 0x15ca, 0x301b, 0x15d4, 0x3024, 0x15dd, 0x302c,
- 0x15e6, 0x3034, 0x15f0, 0x303c, 0x15f9, 0x3045, 0x1603, 0x304d,
- 0x160c, 0x3055, 0x1616, 0x305d, 0x161f, 0x3066, 0x1629, 0x306e,
- 0x1632, 0x3076, 0x163c, 0x307e, 0x1645, 0x3087, 0x164f, 0x308f,
- 0x1659, 0x3097, 0x1662, 0x309f, 0x166c, 0x30a7, 0x1675, 0x30af,
- 0x167f, 0x30b8, 0x1688, 0x30c0, 0x1692, 0x30c8, 0x169b, 0x30d0,
- 0x16a5, 0x30d8, 0x16af, 0x30e0, 0x16b8, 0x30e8, 0x16c2, 0x30f0,
- 0x16cb, 0x30f9, 0x16d5, 0x3101, 0x16df, 0x3109, 0x16e8, 0x3111,
- 0x16f2, 0x3119, 0x16fc, 0x3121, 0x1705, 0x3129, 0x170f, 0x3131,
- 0x1719, 0x3139, 0x1722, 0x3141, 0x172c, 0x3149, 0x1736, 0x3151,
- 0x173f, 0x3159, 0x1749, 0x3161, 0x1753, 0x3169, 0x175c, 0x3171,
- 0x1766, 0x3179, 0x1770, 0x3181, 0x177a, 0x3189, 0x1783, 0x3191,
- 0x178d, 0x3199, 0x1797, 0x31a1, 0x17a0, 0x31a9, 0x17aa, 0x31b1,
- 0x17b4, 0x31b9, 0x17be, 0x31c0, 0x17c8, 0x31c8, 0x17d1, 0x31d0,
- 0x17db, 0x31d8, 0x17e5, 0x31e0, 0x17ef, 0x31e8, 0x17f8, 0x31f0,
- 0x1802, 0x31f8, 0x180c, 0x31ff, 0x1816, 0x3207, 0x1820, 0x320f,
- 0x182a, 0x3217, 0x1833, 0x321f, 0x183d, 0x3227, 0x1847, 0x322e,
- 0x1851, 0x3236, 0x185b, 0x323e, 0x1865, 0x3246, 0x186f, 0x324e,
- 0x1878, 0x3255, 0x1882, 0x325d, 0x188c, 0x3265, 0x1896, 0x326d,
- 0x18a0, 0x3274, 0x18aa, 0x327c, 0x18b4, 0x3284, 0x18be, 0x328b,
- 0x18c8, 0x3293, 0x18d2, 0x329b, 0x18dc, 0x32a3, 0x18e6, 0x32aa,
- 0x18ef, 0x32b2, 0x18f9, 0x32ba, 0x1903, 0x32c1, 0x190d, 0x32c9,
- 0x1917, 0x32d0, 0x1921, 0x32d8, 0x192b, 0x32e0, 0x1935, 0x32e7,
- 0x193f, 0x32ef, 0x1949, 0x32f7, 0x1953, 0x32fe, 0x195d, 0x3306,
- 0x1967, 0x330d, 0x1971, 0x3315, 0x197b, 0x331d, 0x1985, 0x3324,
- 0x198f, 0x332c, 0x199a, 0x3333, 0x19a4, 0x333b, 0x19ae, 0x3342,
- 0x19b8, 0x334a, 0x19c2, 0x3351, 0x19cc, 0x3359, 0x19d6, 0x3360,
- 0x19e0, 0x3368, 0x19ea, 0x336f, 0x19f4, 0x3377, 0x19fe, 0x337e,
- 0x1a08, 0x3386, 0x1a13, 0x338d, 0x1a1d, 0x3395, 0x1a27, 0x339c,
- 0x1a31, 0x33a3, 0x1a3b, 0x33ab, 0x1a45, 0x33b2, 0x1a4f, 0x33ba,
- 0x1a5a, 0x33c1, 0x1a64, 0x33c8, 0x1a6e, 0x33d0, 0x1a78, 0x33d7,
- 0x1a82, 0x33df, 0x1a8c, 0x33e6, 0x1a97, 0x33ed, 0x1aa1, 0x33f5,
- 0x1aab, 0x33fc, 0x1ab5, 0x3403, 0x1abf, 0x340b, 0x1aca, 0x3412,
- 0x1ad4, 0x3419, 0x1ade, 0x3420, 0x1ae8, 0x3428, 0x1af3, 0x342f,
- 0x1afd, 0x3436, 0x1b07, 0x343e, 0x1b11, 0x3445, 0x1b1c, 0x344c,
- 0x1b26, 0x3453, 0x1b30, 0x345b, 0x1b3b, 0x3462, 0x1b45, 0x3469,
- 0x1b4f, 0x3470, 0x1b59, 0x3477, 0x1b64, 0x347f, 0x1b6e, 0x3486,
- 0x1b78, 0x348d, 0x1b83, 0x3494, 0x1b8d, 0x349b, 0x1b97, 0x34a2,
- 0x1ba2, 0x34aa, 0x1bac, 0x34b1, 0x1bb6, 0x34b8, 0x1bc1, 0x34bf,
- 0x1bcb, 0x34c6, 0x1bd5, 0x34cd, 0x1be0, 0x34d4, 0x1bea, 0x34db,
- 0x1bf5, 0x34e2, 0x1bff, 0x34ea, 0x1c09, 0x34f1, 0x1c14, 0x34f8,
- 0x1c1e, 0x34ff, 0x1c29, 0x3506, 0x1c33, 0x350d, 0x1c3d, 0x3514,
- 0x1c48, 0x351b, 0x1c52, 0x3522, 0x1c5d, 0x3529, 0x1c67, 0x3530,
- 0x1c72, 0x3537, 0x1c7c, 0x353e, 0x1c86, 0x3545, 0x1c91, 0x354c,
- 0x1c9b, 0x3553, 0x1ca6, 0x355a, 0x1cb0, 0x3561, 0x1cbb, 0x3567,
- 0x1cc5, 0x356e, 0x1cd0, 0x3575, 0x1cda, 0x357c, 0x1ce5, 0x3583,
- 0x1cef, 0x358a, 0x1cfa, 0x3591, 0x1d04, 0x3598, 0x1d0f, 0x359f,
- 0x1d19, 0x35a5, 0x1d24, 0x35ac, 0x1d2e, 0x35b3, 0x1d39, 0x35ba,
- 0x1d44, 0x35c1, 0x1d4e, 0x35c8, 0x1d59, 0x35ce, 0x1d63, 0x35d5,
- 0x1d6e, 0x35dc, 0x1d78, 0x35e3, 0x1d83, 0x35ea, 0x1d8e, 0x35f0,
- 0x1d98, 0x35f7, 0x1da3, 0x35fe, 0x1dad, 0x3605, 0x1db8, 0x360b,
- 0x1dc3, 0x3612, 0x1dcd, 0x3619, 0x1dd8, 0x3620, 0x1de2, 0x3626,
- 0x1ded, 0x362d, 0x1df8, 0x3634, 0x1e02, 0x363a, 0x1e0d, 0x3641,
- 0x1e18, 0x3648, 0x1e22, 0x364e, 0x1e2d, 0x3655, 0x1e38, 0x365c,
- 0x1e42, 0x3662, 0x1e4d, 0x3669, 0x1e58, 0x366f, 0x1e62, 0x3676,
- 0x1e6d, 0x367d, 0x1e78, 0x3683, 0x1e83, 0x368a, 0x1e8d, 0x3690,
- 0x1e98, 0x3697, 0x1ea3, 0x369d, 0x1ead, 0x36a4, 0x1eb8, 0x36ab,
- 0x1ec3, 0x36b1, 0x1ece, 0x36b8, 0x1ed8, 0x36be, 0x1ee3, 0x36c5,
- 0x1eee, 0x36cb, 0x1ef9, 0x36d2, 0x1f03, 0x36d8, 0x1f0e, 0x36df,
- 0x1f19, 0x36e5, 0x1f24, 0x36eb, 0x1f2f, 0x36f2, 0x1f39, 0x36f8,
- 0x1f44, 0x36ff, 0x1f4f, 0x3705, 0x1f5a, 0x370c, 0x1f65, 0x3712,
- 0x1f6f, 0x3718, 0x1f7a, 0x371f, 0x1f85, 0x3725, 0x1f90, 0x372c,
- 0x1f9b, 0x3732, 0x1fa5, 0x3738, 0x1fb0, 0x373f, 0x1fbb, 0x3745,
- 0x1fc6, 0x374b, 0x1fd1, 0x3752, 0x1fdc, 0x3758, 0x1fe7, 0x375e,
- 0x1ff1, 0x3765, 0x1ffc, 0x376b, 0x2007, 0x3771, 0x2012, 0x3777,
- 0x201d, 0x377e, 0x2028, 0x3784, 0x2033, 0x378a, 0x203e, 0x3790,
- 0x2049, 0x3797, 0x2054, 0x379d, 0x205e, 0x37a3, 0x2069, 0x37a9,
- 0x2074, 0x37b0, 0x207f, 0x37b6, 0x208a, 0x37bc, 0x2095, 0x37c2,
- 0x20a0, 0x37c8, 0x20ab, 0x37ce, 0x20b6, 0x37d5, 0x20c1, 0x37db,
- 0x20cc, 0x37e1, 0x20d7, 0x37e7, 0x20e2, 0x37ed, 0x20ed, 0x37f3,
- 0x20f8, 0x37f9, 0x2103, 0x37ff, 0x210e, 0x3805, 0x2119, 0x380b,
- 0x2124, 0x3812, 0x212f, 0x3818, 0x213a, 0x381e, 0x2145, 0x3824,
- 0x2150, 0x382a, 0x215b, 0x3830, 0x2166, 0x3836, 0x2171, 0x383c,
- 0x217c, 0x3842, 0x2187, 0x3848, 0x2192, 0x384e, 0x219d, 0x3854,
- 0x21a8, 0x385a, 0x21b3, 0x3860, 0x21be, 0x3866, 0x21ca, 0x386b,
- 0x21d5, 0x3871, 0x21e0, 0x3877, 0x21eb, 0x387d, 0x21f6, 0x3883,
- 0x2201, 0x3889, 0x220c, 0x388f, 0x2217, 0x3895, 0x2222, 0x389b,
- 0x222d, 0x38a1, 0x2239, 0x38a6, 0x2244, 0x38ac, 0x224f, 0x38b2,
- 0x225a, 0x38b8, 0x2265, 0x38be, 0x2270, 0x38c3, 0x227b, 0x38c9,
- 0x2287, 0x38cf, 0x2292, 0x38d5, 0x229d, 0x38db, 0x22a8, 0x38e0,
- 0x22b3, 0x38e6, 0x22be, 0x38ec, 0x22ca, 0x38f2, 0x22d5, 0x38f7,
- 0x22e0, 0x38fd, 0x22eb, 0x3903, 0x22f6, 0x3909, 0x2301, 0x390e,
- 0x230d, 0x3914, 0x2318, 0x391a, 0x2323, 0x391f, 0x232e, 0x3925,
- 0x233a, 0x392b, 0x2345, 0x3930, 0x2350, 0x3936, 0x235b, 0x393b,
- 0x2367, 0x3941, 0x2372, 0x3947, 0x237d, 0x394c, 0x2388, 0x3952,
- 0x2394, 0x3958, 0x239f, 0x395d, 0x23aa, 0x3963, 0x23b5, 0x3968,
- 0x23c1, 0x396e, 0x23cc, 0x3973, 0x23d7, 0x3979, 0x23e2, 0x397e,
- 0x23ee, 0x3984, 0x23f9, 0x3989, 0x2404, 0x398f, 0x2410, 0x3994,
- 0x241b, 0x399a, 0x2426, 0x399f, 0x2432, 0x39a5, 0x243d, 0x39aa,
- 0x2448, 0x39b0, 0x2454, 0x39b5, 0x245f, 0x39bb, 0x246a, 0x39c0,
- 0x2476, 0x39c5, 0x2481, 0x39cb, 0x248c, 0x39d0, 0x2498, 0x39d6,
- 0x24a3, 0x39db, 0x24ae, 0x39e0, 0x24ba, 0x39e6, 0x24c5, 0x39eb,
- 0x24d0, 0x39f0, 0x24dc, 0x39f6, 0x24e7, 0x39fb, 0x24f3, 0x3a00,
- 0x24fe, 0x3a06, 0x2509, 0x3a0b, 0x2515, 0x3a10, 0x2520, 0x3a16,
- 0x252c, 0x3a1b, 0x2537, 0x3a20, 0x2542, 0x3a25, 0x254e, 0x3a2b,
- 0x2559, 0x3a30, 0x2565, 0x3a35, 0x2570, 0x3a3a, 0x257c, 0x3a3f,
- 0x2587, 0x3a45, 0x2592, 0x3a4a, 0x259e, 0x3a4f, 0x25a9, 0x3a54,
- 0x25b5, 0x3a59, 0x25c0, 0x3a5f, 0x25cc, 0x3a64, 0x25d7, 0x3a69,
- 0x25e3, 0x3a6e, 0x25ee, 0x3a73, 0x25fa, 0x3a78, 0x2605, 0x3a7d,
- 0x2611, 0x3a82, 0x261c, 0x3a88, 0x2628, 0x3a8d, 0x2633, 0x3a92,
- 0x263f, 0x3a97, 0x264a, 0x3a9c, 0x2656, 0x3aa1, 0x2661, 0x3aa6,
- 0x266d, 0x3aab, 0x2678, 0x3ab0, 0x2684, 0x3ab5, 0x268f, 0x3aba,
- 0x269b, 0x3abf, 0x26a6, 0x3ac4, 0x26b2, 0x3ac9, 0x26bd, 0x3ace,
- 0x26c9, 0x3ad3, 0x26d4, 0x3ad8, 0x26e0, 0x3add, 0x26ec, 0x3ae2,
- 0x26f7, 0x3ae6, 0x2703, 0x3aeb, 0x270e, 0x3af0, 0x271a, 0x3af5,
- 0x2725, 0x3afa, 0x2731, 0x3aff, 0x273d, 0x3b04, 0x2748, 0x3b09,
- 0x2754, 0x3b0e, 0x275f, 0x3b12, 0x276b, 0x3b17, 0x2777, 0x3b1c,
- 0x2782, 0x3b21, 0x278e, 0x3b26, 0x2799, 0x3b2a, 0x27a5, 0x3b2f,
- 0x27b1, 0x3b34, 0x27bc, 0x3b39, 0x27c8, 0x3b3e, 0x27d3, 0x3b42,
- 0x27df, 0x3b47, 0x27eb, 0x3b4c, 0x27f6, 0x3b50, 0x2802, 0x3b55,
- 0x280e, 0x3b5a, 0x2819, 0x3b5f, 0x2825, 0x3b63, 0x2831, 0x3b68,
- 0x283c, 0x3b6d, 0x2848, 0x3b71, 0x2854, 0x3b76, 0x285f, 0x3b7b,
- 0x286b, 0x3b7f, 0x2877, 0x3b84, 0x2882, 0x3b88, 0x288e, 0x3b8d,
- 0x289a, 0x3b92, 0x28a5, 0x3b96, 0x28b1, 0x3b9b, 0x28bd, 0x3b9f,
- 0x28c9, 0x3ba4, 0x28d4, 0x3ba9, 0x28e0, 0x3bad, 0x28ec, 0x3bb2,
- 0x28f7, 0x3bb6, 0x2903, 0x3bbb, 0x290f, 0x3bbf, 0x291b, 0x3bc4,
- 0x2926, 0x3bc8, 0x2932, 0x3bcd, 0x293e, 0x3bd1, 0x294a, 0x3bd6,
- 0x2955, 0x3bda, 0x2961, 0x3bde, 0x296d, 0x3be3, 0x2979, 0x3be7,
- 0x2984, 0x3bec, 0x2990, 0x3bf0, 0x299c, 0x3bf5, 0x29a8, 0x3bf9,
- 0x29b4, 0x3bfd, 0x29bf, 0x3c02, 0x29cb, 0x3c06, 0x29d7, 0x3c0a,
- 0x29e3, 0x3c0f, 0x29ee, 0x3c13, 0x29fa, 0x3c17, 0x2a06, 0x3c1c,
- 0x2a12, 0x3c20, 0x2a1e, 0x3c24, 0x2a29, 0x3c29, 0x2a35, 0x3c2d,
- 0x2a41, 0x3c31, 0x2a4d, 0x3c36, 0x2a59, 0x3c3a, 0x2a65, 0x3c3e,
- 0x2a70, 0x3c42, 0x2a7c, 0x3c46, 0x2a88, 0x3c4b, 0x2a94, 0x3c4f,
- 0x2aa0, 0x3c53, 0x2aac, 0x3c57, 0x2ab7, 0x3c5b, 0x2ac3, 0x3c60,
- 0x2acf, 0x3c64, 0x2adb, 0x3c68, 0x2ae7, 0x3c6c, 0x2af3, 0x3c70,
- 0x2aff, 0x3c74, 0x2b0a, 0x3c79, 0x2b16, 0x3c7d, 0x2b22, 0x3c81,
- 0x2b2e, 0x3c85, 0x2b3a, 0x3c89, 0x2b46, 0x3c8d, 0x2b52, 0x3c91,
- 0x2b5e, 0x3c95, 0x2b6a, 0x3c99, 0x2b75, 0x3c9d, 0x2b81, 0x3ca1,
- 0x2b8d, 0x3ca5, 0x2b99, 0x3ca9, 0x2ba5, 0x3cad, 0x2bb1, 0x3cb1,
- 0x2bbd, 0x3cb5, 0x2bc9, 0x3cb9, 0x2bd5, 0x3cbd, 0x2be1, 0x3cc1,
- 0x2bed, 0x3cc5, 0x2bf9, 0x3cc9, 0x2c05, 0x3ccd, 0x2c10, 0x3cd1,
- 0x2c1c, 0x3cd5, 0x2c28, 0x3cd9, 0x2c34, 0x3cdd, 0x2c40, 0x3ce0,
- 0x2c4c, 0x3ce4, 0x2c58, 0x3ce8, 0x2c64, 0x3cec, 0x2c70, 0x3cf0,
- 0x2c7c, 0x3cf4, 0x2c88, 0x3cf8, 0x2c94, 0x3cfb, 0x2ca0, 0x3cff,
- 0x2cac, 0x3d03, 0x2cb8, 0x3d07, 0x2cc4, 0x3d0b, 0x2cd0, 0x3d0e,
- 0x2cdc, 0x3d12, 0x2ce8, 0x3d16, 0x2cf4, 0x3d1a, 0x2d00, 0x3d1d,
- 0x2d0c, 0x3d21, 0x2d18, 0x3d25, 0x2d24, 0x3d28, 0x2d30, 0x3d2c,
- 0x2d3c, 0x3d30, 0x2d48, 0x3d34, 0x2d54, 0x3d37, 0x2d60, 0x3d3b,
- 0x2d6c, 0x3d3f, 0x2d78, 0x3d42, 0x2d84, 0x3d46, 0x2d90, 0x3d49,
- 0x2d9c, 0x3d4d, 0x2da8, 0x3d51, 0x2db4, 0x3d54, 0x2dc0, 0x3d58,
- 0x2dcc, 0x3d5b, 0x2dd8, 0x3d5f, 0x2de4, 0x3d63, 0x2df0, 0x3d66,
- 0x2dfc, 0x3d6a, 0x2e09, 0x3d6d, 0x2e15, 0x3d71, 0x2e21, 0x3d74,
- 0x2e2d, 0x3d78, 0x2e39, 0x3d7b, 0x2e45, 0x3d7f, 0x2e51, 0x3d82,
- 0x2e5d, 0x3d86, 0x2e69, 0x3d89, 0x2e75, 0x3d8d, 0x2e81, 0x3d90,
- 0x2e8d, 0x3d93, 0x2e99, 0x3d97, 0x2ea6, 0x3d9a, 0x2eb2, 0x3d9e,
- 0x2ebe, 0x3da1, 0x2eca, 0x3da4, 0x2ed6, 0x3da8, 0x2ee2, 0x3dab,
- 0x2eee, 0x3daf, 0x2efa, 0x3db2, 0x2f06, 0x3db5, 0x2f13, 0x3db9,
- 0x2f1f, 0x3dbc, 0x2f2b, 0x3dbf, 0x2f37, 0x3dc2, 0x2f43, 0x3dc6,
- 0x2f4f, 0x3dc9, 0x2f5b, 0x3dcc, 0x2f67, 0x3dd0, 0x2f74, 0x3dd3,
- 0x2f80, 0x3dd6, 0x2f8c, 0x3dd9, 0x2f98, 0x3ddd, 0x2fa4, 0x3de0,
- 0x2fb0, 0x3de3, 0x2fbc, 0x3de6, 0x2fc9, 0x3de9, 0x2fd5, 0x3ded,
- 0x2fe1, 0x3df0, 0x2fed, 0x3df3, 0x2ff9, 0x3df6, 0x3005, 0x3df9,
- 0x3012, 0x3dfc, 0x301e, 0x3dff, 0x302a, 0x3e03, 0x3036, 0x3e06,
- 0x3042, 0x3e09, 0x304e, 0x3e0c, 0x305b, 0x3e0f, 0x3067, 0x3e12,
- 0x3073, 0x3e15, 0x307f, 0x3e18, 0x308b, 0x3e1b, 0x3098, 0x3e1e,
- 0x30a4, 0x3e21, 0x30b0, 0x3e24, 0x30bc, 0x3e27, 0x30c8, 0x3e2a,
- 0x30d5, 0x3e2d, 0x30e1, 0x3e30, 0x30ed, 0x3e33, 0x30f9, 0x3e36,
- 0x3105, 0x3e39, 0x3112, 0x3e3c, 0x311e, 0x3e3f, 0x312a, 0x3e42,
- 0x3136, 0x3e45, 0x3143, 0x3e48, 0x314f, 0x3e4a, 0x315b, 0x3e4d,
- 0x3167, 0x3e50, 0x3174, 0x3e53, 0x3180, 0x3e56, 0x318c, 0x3e59,
- 0x3198, 0x3e5c, 0x31a4, 0x3e5e, 0x31b1, 0x3e61, 0x31bd, 0x3e64,
- 0x31c9, 0x3e67, 0x31d5, 0x3e6a, 0x31e2, 0x3e6c, 0x31ee, 0x3e6f,
- 0x31fa, 0x3e72, 0x3207, 0x3e75, 0x3213, 0x3e77, 0x321f, 0x3e7a,
- 0x322b, 0x3e7d, 0x3238, 0x3e80, 0x3244, 0x3e82, 0x3250, 0x3e85,
- 0x325c, 0x3e88, 0x3269, 0x3e8a, 0x3275, 0x3e8d, 0x3281, 0x3e90,
- 0x328e, 0x3e92, 0x329a, 0x3e95, 0x32a6, 0x3e98, 0x32b2, 0x3e9a,
- 0x32bf, 0x3e9d, 0x32cb, 0x3e9f, 0x32d7, 0x3ea2, 0x32e4, 0x3ea5,
- 0x32f0, 0x3ea7, 0x32fc, 0x3eaa, 0x3308, 0x3eac, 0x3315, 0x3eaf,
- 0x3321, 0x3eb1, 0x332d, 0x3eb4, 0x333a, 0x3eb6, 0x3346, 0x3eb9,
- 0x3352, 0x3ebb, 0x335f, 0x3ebe, 0x336b, 0x3ec0, 0x3377, 0x3ec3,
- 0x3384, 0x3ec5, 0x3390, 0x3ec8, 0x339c, 0x3eca, 0x33a9, 0x3ecc,
- 0x33b5, 0x3ecf, 0x33c1, 0x3ed1, 0x33ce, 0x3ed4, 0x33da, 0x3ed6,
- 0x33e6, 0x3ed8, 0x33f3, 0x3edb, 0x33ff, 0x3edd, 0x340b, 0x3ee0,
- 0x3418, 0x3ee2, 0x3424, 0x3ee4, 0x3430, 0x3ee7, 0x343d, 0x3ee9,
- 0x3449, 0x3eeb, 0x3455, 0x3eed, 0x3462, 0x3ef0, 0x346e, 0x3ef2,
- 0x347b, 0x3ef4, 0x3487, 0x3ef7, 0x3493, 0x3ef9, 0x34a0, 0x3efb,
- 0x34ac, 0x3efd, 0x34b8, 0x3f00, 0x34c5, 0x3f02, 0x34d1, 0x3f04,
- 0x34dd, 0x3f06, 0x34ea, 0x3f08, 0x34f6, 0x3f0a, 0x3503, 0x3f0d,
- 0x350f, 0x3f0f, 0x351b, 0x3f11, 0x3528, 0x3f13, 0x3534, 0x3f15,
- 0x3540, 0x3f17, 0x354d, 0x3f19, 0x3559, 0x3f1c, 0x3566, 0x3f1e,
- 0x3572, 0x3f20, 0x357e, 0x3f22, 0x358b, 0x3f24, 0x3597, 0x3f26,
- 0x35a4, 0x3f28, 0x35b0, 0x3f2a, 0x35bc, 0x3f2c, 0x35c9, 0x3f2e,
- 0x35d5, 0x3f30, 0x35e2, 0x3f32, 0x35ee, 0x3f34, 0x35fa, 0x3f36,
- 0x3607, 0x3f38, 0x3613, 0x3f3a, 0x3620, 0x3f3c, 0x362c, 0x3f3e,
- 0x3639, 0x3f40, 0x3645, 0x3f42, 0x3651, 0x3f43, 0x365e, 0x3f45,
- 0x366a, 0x3f47, 0x3677, 0x3f49, 0x3683, 0x3f4b, 0x3690, 0x3f4d,
- 0x369c, 0x3f4f, 0x36a8, 0x3f51, 0x36b5, 0x3f52, 0x36c1, 0x3f54,
- 0x36ce, 0x3f56, 0x36da, 0x3f58, 0x36e7, 0x3f5a, 0x36f3, 0x3f5b,
- 0x36ff, 0x3f5d, 0x370c, 0x3f5f, 0x3718, 0x3f61, 0x3725, 0x3f62,
- 0x3731, 0x3f64, 0x373e, 0x3f66, 0x374a, 0x3f68, 0x3757, 0x3f69,
- 0x3763, 0x3f6b, 0x376f, 0x3f6d, 0x377c, 0x3f6e, 0x3788, 0x3f70,
- 0x3795, 0x3f72, 0x37a1, 0x3f73, 0x37ae, 0x3f75, 0x37ba, 0x3f77,
- 0x37c7, 0x3f78, 0x37d3, 0x3f7a, 0x37e0, 0x3f7b, 0x37ec, 0x3f7d,
- 0x37f9, 0x3f7f, 0x3805, 0x3f80, 0x3811, 0x3f82, 0x381e, 0x3f83,
- 0x382a, 0x3f85, 0x3837, 0x3f86, 0x3843, 0x3f88, 0x3850, 0x3f89,
- 0x385c, 0x3f8b, 0x3869, 0x3f8c, 0x3875, 0x3f8e, 0x3882, 0x3f8f,
- 0x388e, 0x3f91, 0x389b, 0x3f92, 0x38a7, 0x3f94, 0x38b4, 0x3f95,
- 0x38c0, 0x3f97, 0x38cd, 0x3f98, 0x38d9, 0x3f99, 0x38e6, 0x3f9b,
- 0x38f2, 0x3f9c, 0x38ff, 0x3f9e, 0x390b, 0x3f9f, 0x3918, 0x3fa0,
- 0x3924, 0x3fa2, 0x3931, 0x3fa3, 0x393d, 0x3fa4, 0x394a, 0x3fa6,
- 0x3956, 0x3fa7, 0x3963, 0x3fa8, 0x396f, 0x3faa, 0x397c, 0x3fab,
- 0x3988, 0x3fac, 0x3995, 0x3fad, 0x39a1, 0x3faf, 0x39ae, 0x3fb0,
- 0x39ba, 0x3fb1, 0x39c7, 0x3fb2, 0x39d3, 0x3fb4, 0x39e0, 0x3fb5,
- 0x39ec, 0x3fb6, 0x39f9, 0x3fb7, 0x3a05, 0x3fb8, 0x3a12, 0x3fb9,
- 0x3a1e, 0x3fbb, 0x3a2b, 0x3fbc, 0x3a37, 0x3fbd, 0x3a44, 0x3fbe,
- 0x3a50, 0x3fbf, 0x3a5d, 0x3fc0, 0x3a69, 0x3fc1, 0x3a76, 0x3fc3,
- 0x3a82, 0x3fc4, 0x3a8f, 0x3fc5, 0x3a9b, 0x3fc6, 0x3aa8, 0x3fc7,
- 0x3ab4, 0x3fc8, 0x3ac1, 0x3fc9, 0x3acd, 0x3fca, 0x3ada, 0x3fcb,
- 0x3ae6, 0x3fcc, 0x3af3, 0x3fcd, 0x3b00, 0x3fce, 0x3b0c, 0x3fcf,
- 0x3b19, 0x3fd0, 0x3b25, 0x3fd1, 0x3b32, 0x3fd2, 0x3b3e, 0x3fd3,
- 0x3b4b, 0x3fd4, 0x3b57, 0x3fd5, 0x3b64, 0x3fd5, 0x3b70, 0x3fd6,
- 0x3b7d, 0x3fd7, 0x3b89, 0x3fd8, 0x3b96, 0x3fd9, 0x3ba2, 0x3fda,
- 0x3baf, 0x3fdb, 0x3bbc, 0x3fdc, 0x3bc8, 0x3fdc, 0x3bd5, 0x3fdd,
- 0x3be1, 0x3fde, 0x3bee, 0x3fdf, 0x3bfa, 0x3fe0, 0x3c07, 0x3fe0,
- 0x3c13, 0x3fe1, 0x3c20, 0x3fe2, 0x3c2c, 0x3fe3, 0x3c39, 0x3fe3,
- 0x3c45, 0x3fe4, 0x3c52, 0x3fe5, 0x3c5f, 0x3fe6, 0x3c6b, 0x3fe6,
- 0x3c78, 0x3fe7, 0x3c84, 0x3fe8, 0x3c91, 0x3fe8, 0x3c9d, 0x3fe9,
- 0x3caa, 0x3fea, 0x3cb6, 0x3fea, 0x3cc3, 0x3feb, 0x3cd0, 0x3fec,
- 0x3cdc, 0x3fec, 0x3ce9, 0x3fed, 0x3cf5, 0x3fed, 0x3d02, 0x3fee,
- 0x3d0e, 0x3fef, 0x3d1b, 0x3fef, 0x3d27, 0x3ff0, 0x3d34, 0x3ff0,
- 0x3d40, 0x3ff1, 0x3d4d, 0x3ff1, 0x3d5a, 0x3ff2, 0x3d66, 0x3ff2,
- 0x3d73, 0x3ff3, 0x3d7f, 0x3ff3, 0x3d8c, 0x3ff4, 0x3d98, 0x3ff4,
- 0x3da5, 0x3ff5, 0x3db2, 0x3ff5, 0x3dbe, 0x3ff6, 0x3dcb, 0x3ff6,
- 0x3dd7, 0x3ff7, 0x3de4, 0x3ff7, 0x3df0, 0x3ff7, 0x3dfd, 0x3ff8,
- 0x3e09, 0x3ff8, 0x3e16, 0x3ff9, 0x3e23, 0x3ff9, 0x3e2f, 0x3ff9,
- 0x3e3c, 0x3ffa, 0x3e48, 0x3ffa, 0x3e55, 0x3ffa, 0x3e61, 0x3ffb,
- 0x3e6e, 0x3ffb, 0x3e7a, 0x3ffb, 0x3e87, 0x3ffc, 0x3e94, 0x3ffc,
- 0x3ea0, 0x3ffc, 0x3ead, 0x3ffc, 0x3eb9, 0x3ffd, 0x3ec6, 0x3ffd,
- 0x3ed2, 0x3ffd, 0x3edf, 0x3ffd, 0x3eec, 0x3ffe, 0x3ef8, 0x3ffe,
- 0x3f05, 0x3ffe, 0x3f11, 0x3ffe, 0x3f1e, 0x3ffe, 0x3f2a, 0x3fff,
- 0x3f37, 0x3fff, 0x3f44, 0x3fff, 0x3f50, 0x3fff, 0x3f5d, 0x3fff,
- 0x3f69, 0x3fff, 0x3f76, 0x3fff, 0x3f82, 0x4000, 0x3f8f, 0x4000,
- 0x3f9b, 0x4000, 0x3fa8, 0x4000, 0x3fb5, 0x4000, 0x3fc1, 0x4000,
- 0x3fce, 0x4000, 0x3fda, 0x4000, 0x3fe7, 0x4000, 0x3ff3, 0x4000,
+ 0x4000, 0xc000, 0x3ff3, 0xc000, 0x3fe7, 0xc000, 0x3fda, 0xc000,
+ 0x3fce, 0xc000, 0x3fc1, 0xc000, 0x3fb5, 0xc000, 0x3fa8, 0xc000,
+ 0x3f9b, 0xc000, 0x3f8f, 0xc000, 0x3f82, 0xc000, 0x3f76, 0xc001,
+ 0x3f69, 0xc001, 0x3f5d, 0xc001, 0x3f50, 0xc001, 0x3f44, 0xc001,
+ 0x3f37, 0xc001, 0x3f2a, 0xc001, 0x3f1e, 0xc002, 0x3f11, 0xc002,
+ 0x3f05, 0xc002, 0x3ef8, 0xc002, 0x3eec, 0xc002, 0x3edf, 0xc003,
+ 0x3ed2, 0xc003, 0x3ec6, 0xc003, 0x3eb9, 0xc003, 0x3ead, 0xc004,
+ 0x3ea0, 0xc004, 0x3e94, 0xc004, 0x3e87, 0xc004, 0x3e7a, 0xc005,
+ 0x3e6e, 0xc005, 0x3e61, 0xc005, 0x3e55, 0xc006, 0x3e48, 0xc006,
+ 0x3e3c, 0xc006, 0x3e2f, 0xc007, 0x3e23, 0xc007, 0x3e16, 0xc007,
+ 0x3e09, 0xc008, 0x3dfd, 0xc008, 0x3df0, 0xc009, 0x3de4, 0xc009,
+ 0x3dd7, 0xc009, 0x3dcb, 0xc00a, 0x3dbe, 0xc00a, 0x3db2, 0xc00b,
+ 0x3da5, 0xc00b, 0x3d98, 0xc00c, 0x3d8c, 0xc00c, 0x3d7f, 0xc00d,
+ 0x3d73, 0xc00d, 0x3d66, 0xc00e, 0x3d5a, 0xc00e, 0x3d4d, 0xc00f,
+ 0x3d40, 0xc00f, 0x3d34, 0xc010, 0x3d27, 0xc010, 0x3d1b, 0xc011,
+ 0x3d0e, 0xc011, 0x3d02, 0xc012, 0x3cf5, 0xc013, 0x3ce9, 0xc013,
+ 0x3cdc, 0xc014, 0x3cd0, 0xc014, 0x3cc3, 0xc015, 0x3cb6, 0xc016,
+ 0x3caa, 0xc016, 0x3c9d, 0xc017, 0x3c91, 0xc018, 0x3c84, 0xc018,
+ 0x3c78, 0xc019, 0x3c6b, 0xc01a, 0x3c5f, 0xc01a, 0x3c52, 0xc01b,
+ 0x3c45, 0xc01c, 0x3c39, 0xc01d, 0x3c2c, 0xc01d, 0x3c20, 0xc01e,
+ 0x3c13, 0xc01f, 0x3c07, 0xc020, 0x3bfa, 0xc020, 0x3bee, 0xc021,
+ 0x3be1, 0xc022, 0x3bd5, 0xc023, 0x3bc8, 0xc024, 0x3bbc, 0xc024,
+ 0x3baf, 0xc025, 0x3ba2, 0xc026, 0x3b96, 0xc027, 0x3b89, 0xc028,
+ 0x3b7d, 0xc029, 0x3b70, 0xc02a, 0x3b64, 0xc02b, 0x3b57, 0xc02b,
+ 0x3b4b, 0xc02c, 0x3b3e, 0xc02d, 0x3b32, 0xc02e, 0x3b25, 0xc02f,
+ 0x3b19, 0xc030, 0x3b0c, 0xc031, 0x3b00, 0xc032, 0x3af3, 0xc033,
+ 0x3ae6, 0xc034, 0x3ada, 0xc035, 0x3acd, 0xc036, 0x3ac1, 0xc037,
+ 0x3ab4, 0xc038, 0x3aa8, 0xc039, 0x3a9b, 0xc03a, 0x3a8f, 0xc03b,
+ 0x3a82, 0xc03c, 0x3a76, 0xc03d, 0x3a69, 0xc03f, 0x3a5d, 0xc040,
+ 0x3a50, 0xc041, 0x3a44, 0xc042, 0x3a37, 0xc043, 0x3a2b, 0xc044,
+ 0x3a1e, 0xc045, 0x3a12, 0xc047, 0x3a05, 0xc048, 0x39f9, 0xc049,
+ 0x39ec, 0xc04a, 0x39e0, 0xc04b, 0x39d3, 0xc04c, 0x39c7, 0xc04e,
+ 0x39ba, 0xc04f, 0x39ae, 0xc050, 0x39a1, 0xc051, 0x3995, 0xc053,
+ 0x3988, 0xc054, 0x397c, 0xc055, 0x396f, 0xc056, 0x3963, 0xc058,
+ 0x3956, 0xc059, 0x394a, 0xc05a, 0x393d, 0xc05c, 0x3931, 0xc05d,
+ 0x3924, 0xc05e, 0x3918, 0xc060, 0x390b, 0xc061, 0x38ff, 0xc062,
+ 0x38f2, 0xc064, 0x38e6, 0xc065, 0x38d9, 0xc067, 0x38cd, 0xc068,
+ 0x38c0, 0xc069, 0x38b4, 0xc06b, 0x38a7, 0xc06c, 0x389b, 0xc06e,
+ 0x388e, 0xc06f, 0x3882, 0xc071, 0x3875, 0xc072, 0x3869, 0xc074,
+ 0x385c, 0xc075, 0x3850, 0xc077, 0x3843, 0xc078, 0x3837, 0xc07a,
+ 0x382a, 0xc07b, 0x381e, 0xc07d, 0x3811, 0xc07e, 0x3805, 0xc080,
+ 0x37f9, 0xc081, 0x37ec, 0xc083, 0x37e0, 0xc085, 0x37d3, 0xc086,
+ 0x37c7, 0xc088, 0x37ba, 0xc089, 0x37ae, 0xc08b, 0x37a1, 0xc08d,
+ 0x3795, 0xc08e, 0x3788, 0xc090, 0x377c, 0xc092, 0x376f, 0xc093,
+ 0x3763, 0xc095, 0x3757, 0xc097, 0x374a, 0xc098, 0x373e, 0xc09a,
+ 0x3731, 0xc09c, 0x3725, 0xc09e, 0x3718, 0xc09f, 0x370c, 0xc0a1,
+ 0x36ff, 0xc0a3, 0x36f3, 0xc0a5, 0x36e7, 0xc0a6, 0x36da, 0xc0a8,
+ 0x36ce, 0xc0aa, 0x36c1, 0xc0ac, 0x36b5, 0xc0ae, 0x36a8, 0xc0af,
+ 0x369c, 0xc0b1, 0x3690, 0xc0b3, 0x3683, 0xc0b5, 0x3677, 0xc0b7,
+ 0x366a, 0xc0b9, 0x365e, 0xc0bb, 0x3651, 0xc0bd, 0x3645, 0xc0be,
+ 0x3639, 0xc0c0, 0x362c, 0xc0c2, 0x3620, 0xc0c4, 0x3613, 0xc0c6,
+ 0x3607, 0xc0c8, 0x35fa, 0xc0ca, 0x35ee, 0xc0cc, 0x35e2, 0xc0ce,
+ 0x35d5, 0xc0d0, 0x35c9, 0xc0d2, 0x35bc, 0xc0d4, 0x35b0, 0xc0d6,
+ 0x35a4, 0xc0d8, 0x3597, 0xc0da, 0x358b, 0xc0dc, 0x357e, 0xc0de,
+ 0x3572, 0xc0e0, 0x3566, 0xc0e2, 0x3559, 0xc0e4, 0x354d, 0xc0e7,
+ 0x3540, 0xc0e9, 0x3534, 0xc0eb, 0x3528, 0xc0ed, 0x351b, 0xc0ef,
+ 0x350f, 0xc0f1, 0x3503, 0xc0f3, 0x34f6, 0xc0f6, 0x34ea, 0xc0f8,
+ 0x34dd, 0xc0fa, 0x34d1, 0xc0fc, 0x34c5, 0xc0fe, 0x34b8, 0xc100,
+ 0x34ac, 0xc103, 0x34a0, 0xc105, 0x3493, 0xc107, 0x3487, 0xc109,
+ 0x347b, 0xc10c, 0x346e, 0xc10e, 0x3462, 0xc110, 0x3455, 0xc113,
+ 0x3449, 0xc115, 0x343d, 0xc117, 0x3430, 0xc119, 0x3424, 0xc11c,
+ 0x3418, 0xc11e, 0x340b, 0xc120, 0x33ff, 0xc123, 0x33f3, 0xc125,
+ 0x33e6, 0xc128, 0x33da, 0xc12a, 0x33ce, 0xc12c, 0x33c1, 0xc12f,
+ 0x33b5, 0xc131, 0x33a9, 0xc134, 0x339c, 0xc136, 0x3390, 0xc138,
+ 0x3384, 0xc13b, 0x3377, 0xc13d, 0x336b, 0xc140, 0x335f, 0xc142,
+ 0x3352, 0xc145, 0x3346, 0xc147, 0x333a, 0xc14a, 0x332d, 0xc14c,
+ 0x3321, 0xc14f, 0x3315, 0xc151, 0x3308, 0xc154, 0x32fc, 0xc156,
+ 0x32f0, 0xc159, 0x32e4, 0xc15b, 0x32d7, 0xc15e, 0x32cb, 0xc161,
+ 0x32bf, 0xc163, 0x32b2, 0xc166, 0x32a6, 0xc168, 0x329a, 0xc16b,
+ 0x328e, 0xc16e, 0x3281, 0xc170, 0x3275, 0xc173, 0x3269, 0xc176,
+ 0x325c, 0xc178, 0x3250, 0xc17b, 0x3244, 0xc17e, 0x3238, 0xc180,
+ 0x322b, 0xc183, 0x321f, 0xc186, 0x3213, 0xc189, 0x3207, 0xc18b,
+ 0x31fa, 0xc18e, 0x31ee, 0xc191, 0x31e2, 0xc194, 0x31d5, 0xc196,
+ 0x31c9, 0xc199, 0x31bd, 0xc19c, 0x31b1, 0xc19f, 0x31a4, 0xc1a2,
+ 0x3198, 0xc1a4, 0x318c, 0xc1a7, 0x3180, 0xc1aa, 0x3174, 0xc1ad,
+ 0x3167, 0xc1b0, 0x315b, 0xc1b3, 0x314f, 0xc1b6, 0x3143, 0xc1b8,
+ 0x3136, 0xc1bb, 0x312a, 0xc1be, 0x311e, 0xc1c1, 0x3112, 0xc1c4,
+ 0x3105, 0xc1c7, 0x30f9, 0xc1ca, 0x30ed, 0xc1cd, 0x30e1, 0xc1d0,
+ 0x30d5, 0xc1d3, 0x30c8, 0xc1d6, 0x30bc, 0xc1d9, 0x30b0, 0xc1dc,
+ 0x30a4, 0xc1df, 0x3098, 0xc1e2, 0x308b, 0xc1e5, 0x307f, 0xc1e8,
+ 0x3073, 0xc1eb, 0x3067, 0xc1ee, 0x305b, 0xc1f1, 0x304e, 0xc1f4,
+ 0x3042, 0xc1f7, 0x3036, 0xc1fa, 0x302a, 0xc1fd, 0x301e, 0xc201,
+ 0x3012, 0xc204, 0x3005, 0xc207, 0x2ff9, 0xc20a, 0x2fed, 0xc20d,
+ 0x2fe1, 0xc210, 0x2fd5, 0xc213, 0x2fc9, 0xc217, 0x2fbc, 0xc21a,
+ 0x2fb0, 0xc21d, 0x2fa4, 0xc220, 0x2f98, 0xc223, 0x2f8c, 0xc227,
+ 0x2f80, 0xc22a, 0x2f74, 0xc22d, 0x2f67, 0xc230, 0x2f5b, 0xc234,
+ 0x2f4f, 0xc237, 0x2f43, 0xc23a, 0x2f37, 0xc23e, 0x2f2b, 0xc241,
+ 0x2f1f, 0xc244, 0x2f13, 0xc247, 0x2f06, 0xc24b, 0x2efa, 0xc24e,
+ 0x2eee, 0xc251, 0x2ee2, 0xc255, 0x2ed6, 0xc258, 0x2eca, 0xc25c,
+ 0x2ebe, 0xc25f, 0x2eb2, 0xc262, 0x2ea6, 0xc266, 0x2e99, 0xc269,
+ 0x2e8d, 0xc26d, 0x2e81, 0xc270, 0x2e75, 0xc273, 0x2e69, 0xc277,
+ 0x2e5d, 0xc27a, 0x2e51, 0xc27e, 0x2e45, 0xc281, 0x2e39, 0xc285,
+ 0x2e2d, 0xc288, 0x2e21, 0xc28c, 0x2e15, 0xc28f, 0x2e09, 0xc293,
+ 0x2dfc, 0xc296, 0x2df0, 0xc29a, 0x2de4, 0xc29d, 0x2dd8, 0xc2a1,
+ 0x2dcc, 0xc2a5, 0x2dc0, 0xc2a8, 0x2db4, 0xc2ac, 0x2da8, 0xc2af,
+ 0x2d9c, 0xc2b3, 0x2d90, 0xc2b7, 0x2d84, 0xc2ba, 0x2d78, 0xc2be,
+ 0x2d6c, 0xc2c1, 0x2d60, 0xc2c5, 0x2d54, 0xc2c9, 0x2d48, 0xc2cc,
+ 0x2d3c, 0xc2d0, 0x2d30, 0xc2d4, 0x2d24, 0xc2d8, 0x2d18, 0xc2db,
+ 0x2d0c, 0xc2df, 0x2d00, 0xc2e3, 0x2cf4, 0xc2e6, 0x2ce8, 0xc2ea,
+ 0x2cdc, 0xc2ee, 0x2cd0, 0xc2f2, 0x2cc4, 0xc2f5, 0x2cb8, 0xc2f9,
+ 0x2cac, 0xc2fd, 0x2ca0, 0xc301, 0x2c94, 0xc305, 0x2c88, 0xc308,
+ 0x2c7c, 0xc30c, 0x2c70, 0xc310, 0x2c64, 0xc314, 0x2c58, 0xc318,
+ 0x2c4c, 0xc31c, 0x2c40, 0xc320, 0x2c34, 0xc323, 0x2c28, 0xc327,
+ 0x2c1c, 0xc32b, 0x2c10, 0xc32f, 0x2c05, 0xc333, 0x2bf9, 0xc337,
+ 0x2bed, 0xc33b, 0x2be1, 0xc33f, 0x2bd5, 0xc343, 0x2bc9, 0xc347,
+ 0x2bbd, 0xc34b, 0x2bb1, 0xc34f, 0x2ba5, 0xc353, 0x2b99, 0xc357,
+ 0x2b8d, 0xc35b, 0x2b81, 0xc35f, 0x2b75, 0xc363, 0x2b6a, 0xc367,
+ 0x2b5e, 0xc36b, 0x2b52, 0xc36f, 0x2b46, 0xc373, 0x2b3a, 0xc377,
+ 0x2b2e, 0xc37b, 0x2b22, 0xc37f, 0x2b16, 0xc383, 0x2b0a, 0xc387,
+ 0x2aff, 0xc38c, 0x2af3, 0xc390, 0x2ae7, 0xc394, 0x2adb, 0xc398,
+ 0x2acf, 0xc39c, 0x2ac3, 0xc3a0, 0x2ab7, 0xc3a5, 0x2aac, 0xc3a9,
+ 0x2aa0, 0xc3ad, 0x2a94, 0xc3b1, 0x2a88, 0xc3b5, 0x2a7c, 0xc3ba,
+ 0x2a70, 0xc3be, 0x2a65, 0xc3c2, 0x2a59, 0xc3c6, 0x2a4d, 0xc3ca,
+ 0x2a41, 0xc3cf, 0x2a35, 0xc3d3, 0x2a29, 0xc3d7, 0x2a1e, 0xc3dc,
+ 0x2a12, 0xc3e0, 0x2a06, 0xc3e4, 0x29fa, 0xc3e9, 0x29ee, 0xc3ed,
+ 0x29e3, 0xc3f1, 0x29d7, 0xc3f6, 0x29cb, 0xc3fa, 0x29bf, 0xc3fe,
+ 0x29b4, 0xc403, 0x29a8, 0xc407, 0x299c, 0xc40b, 0x2990, 0xc410,
+ 0x2984, 0xc414, 0x2979, 0xc419, 0x296d, 0xc41d, 0x2961, 0xc422,
+ 0x2955, 0xc426, 0x294a, 0xc42a, 0x293e, 0xc42f, 0x2932, 0xc433,
+ 0x2926, 0xc438, 0x291b, 0xc43c, 0x290f, 0xc441, 0x2903, 0xc445,
+ 0x28f7, 0xc44a, 0x28ec, 0xc44e, 0x28e0, 0xc453, 0x28d4, 0xc457,
+ 0x28c9, 0xc45c, 0x28bd, 0xc461, 0x28b1, 0xc465, 0x28a5, 0xc46a,
+ 0x289a, 0xc46e, 0x288e, 0xc473, 0x2882, 0xc478, 0x2877, 0xc47c,
+ 0x286b, 0xc481, 0x285f, 0xc485, 0x2854, 0xc48a, 0x2848, 0xc48f,
+ 0x283c, 0xc493, 0x2831, 0xc498, 0x2825, 0xc49d, 0x2819, 0xc4a1,
+ 0x280e, 0xc4a6, 0x2802, 0xc4ab, 0x27f6, 0xc4b0, 0x27eb, 0xc4b4,
+ 0x27df, 0xc4b9, 0x27d3, 0xc4be, 0x27c8, 0xc4c2, 0x27bc, 0xc4c7,
+ 0x27b1, 0xc4cc, 0x27a5, 0xc4d1, 0x2799, 0xc4d6, 0x278e, 0xc4da,
+ 0x2782, 0xc4df, 0x2777, 0xc4e4, 0x276b, 0xc4e9, 0x275f, 0xc4ee,
+ 0x2754, 0xc4f2, 0x2748, 0xc4f7, 0x273d, 0xc4fc, 0x2731, 0xc501,
+ 0x2725, 0xc506, 0x271a, 0xc50b, 0x270e, 0xc510, 0x2703, 0xc515,
+ 0x26f7, 0xc51a, 0x26ec, 0xc51e, 0x26e0, 0xc523, 0x26d4, 0xc528,
+ 0x26c9, 0xc52d, 0x26bd, 0xc532, 0x26b2, 0xc537, 0x26a6, 0xc53c,
+ 0x269b, 0xc541, 0x268f, 0xc546, 0x2684, 0xc54b, 0x2678, 0xc550,
+ 0x266d, 0xc555, 0x2661, 0xc55a, 0x2656, 0xc55f, 0x264a, 0xc564,
+ 0x263f, 0xc569, 0x2633, 0xc56e, 0x2628, 0xc573, 0x261c, 0xc578,
+ 0x2611, 0xc57e, 0x2605, 0xc583, 0x25fa, 0xc588, 0x25ee, 0xc58d,
+ 0x25e3, 0xc592, 0x25d7, 0xc597, 0x25cc, 0xc59c, 0x25c0, 0xc5a1,
+ 0x25b5, 0xc5a7, 0x25a9, 0xc5ac, 0x259e, 0xc5b1, 0x2592, 0xc5b6,
+ 0x2587, 0xc5bb, 0x257c, 0xc5c1, 0x2570, 0xc5c6, 0x2565, 0xc5cb,
+ 0x2559, 0xc5d0, 0x254e, 0xc5d5, 0x2542, 0xc5db, 0x2537, 0xc5e0,
+ 0x252c, 0xc5e5, 0x2520, 0xc5ea, 0x2515, 0xc5f0, 0x2509, 0xc5f5,
+ 0x24fe, 0xc5fa, 0x24f3, 0xc600, 0x24e7, 0xc605, 0x24dc, 0xc60a,
+ 0x24d0, 0xc610, 0x24c5, 0xc615, 0x24ba, 0xc61a, 0x24ae, 0xc620,
+ 0x24a3, 0xc625, 0x2498, 0xc62a, 0x248c, 0xc630, 0x2481, 0xc635,
+ 0x2476, 0xc63b, 0x246a, 0xc640, 0x245f, 0xc645, 0x2454, 0xc64b,
+ 0x2448, 0xc650, 0x243d, 0xc656, 0x2432, 0xc65b, 0x2426, 0xc661,
+ 0x241b, 0xc666, 0x2410, 0xc66c, 0x2404, 0xc671, 0x23f9, 0xc677,
+ 0x23ee, 0xc67c, 0x23e2, 0xc682, 0x23d7, 0xc687, 0x23cc, 0xc68d,
+ 0x23c1, 0xc692, 0x23b5, 0xc698, 0x23aa, 0xc69d, 0x239f, 0xc6a3,
+ 0x2394, 0xc6a8, 0x2388, 0xc6ae, 0x237d, 0xc6b4, 0x2372, 0xc6b9,
+ 0x2367, 0xc6bf, 0x235b, 0xc6c5, 0x2350, 0xc6ca, 0x2345, 0xc6d0,
+ 0x233a, 0xc6d5, 0x232e, 0xc6db, 0x2323, 0xc6e1, 0x2318, 0xc6e6,
+ 0x230d, 0xc6ec, 0x2301, 0xc6f2, 0x22f6, 0xc6f7, 0x22eb, 0xc6fd,
+ 0x22e0, 0xc703, 0x22d5, 0xc709, 0x22ca, 0xc70e, 0x22be, 0xc714,
+ 0x22b3, 0xc71a, 0x22a8, 0xc720, 0x229d, 0xc725, 0x2292, 0xc72b,
+ 0x2287, 0xc731, 0x227b, 0xc737, 0x2270, 0xc73d, 0x2265, 0xc742,
+ 0x225a, 0xc748, 0x224f, 0xc74e, 0x2244, 0xc754, 0x2239, 0xc75a,
+ 0x222d, 0xc75f, 0x2222, 0xc765, 0x2217, 0xc76b, 0x220c, 0xc771,
+ 0x2201, 0xc777, 0x21f6, 0xc77d, 0x21eb, 0xc783, 0x21e0, 0xc789,
+ 0x21d5, 0xc78f, 0x21ca, 0xc795, 0x21be, 0xc79a, 0x21b3, 0xc7a0,
+ 0x21a8, 0xc7a6, 0x219d, 0xc7ac, 0x2192, 0xc7b2, 0x2187, 0xc7b8,
+ 0x217c, 0xc7be, 0x2171, 0xc7c4, 0x2166, 0xc7ca, 0x215b, 0xc7d0,
+ 0x2150, 0xc7d6, 0x2145, 0xc7dc, 0x213a, 0xc7e2, 0x212f, 0xc7e8,
+ 0x2124, 0xc7ee, 0x2119, 0xc7f5, 0x210e, 0xc7fb, 0x2103, 0xc801,
+ 0x20f8, 0xc807, 0x20ed, 0xc80d, 0x20e2, 0xc813, 0x20d7, 0xc819,
+ 0x20cc, 0xc81f, 0x20c1, 0xc825, 0x20b6, 0xc82b, 0x20ab, 0xc832,
+ 0x20a0, 0xc838, 0x2095, 0xc83e, 0x208a, 0xc844, 0x207f, 0xc84a,
+ 0x2074, 0xc850, 0x2069, 0xc857, 0x205e, 0xc85d, 0x2054, 0xc863,
+ 0x2049, 0xc869, 0x203e, 0xc870, 0x2033, 0xc876, 0x2028, 0xc87c,
+ 0x201d, 0xc882, 0x2012, 0xc889, 0x2007, 0xc88f, 0x1ffc, 0xc895,
+ 0x1ff1, 0xc89b, 0x1fe7, 0xc8a2, 0x1fdc, 0xc8a8, 0x1fd1, 0xc8ae,
+ 0x1fc6, 0xc8b5, 0x1fbb, 0xc8bb, 0x1fb0, 0xc8c1, 0x1fa5, 0xc8c8,
+ 0x1f9b, 0xc8ce, 0x1f90, 0xc8d4, 0x1f85, 0xc8db, 0x1f7a, 0xc8e1,
+ 0x1f6f, 0xc8e8, 0x1f65, 0xc8ee, 0x1f5a, 0xc8f4, 0x1f4f, 0xc8fb,
+ 0x1f44, 0xc901, 0x1f39, 0xc908, 0x1f2f, 0xc90e, 0x1f24, 0xc915,
+ 0x1f19, 0xc91b, 0x1f0e, 0xc921, 0x1f03, 0xc928, 0x1ef9, 0xc92e,
+ 0x1eee, 0xc935, 0x1ee3, 0xc93b, 0x1ed8, 0xc942, 0x1ece, 0xc948,
+ 0x1ec3, 0xc94f, 0x1eb8, 0xc955, 0x1ead, 0xc95c, 0x1ea3, 0xc963,
+ 0x1e98, 0xc969, 0x1e8d, 0xc970, 0x1e83, 0xc976, 0x1e78, 0xc97d,
+ 0x1e6d, 0xc983, 0x1e62, 0xc98a, 0x1e58, 0xc991, 0x1e4d, 0xc997,
+ 0x1e42, 0xc99e, 0x1e38, 0xc9a4, 0x1e2d, 0xc9ab, 0x1e22, 0xc9b2,
+ 0x1e18, 0xc9b8, 0x1e0d, 0xc9bf, 0x1e02, 0xc9c6, 0x1df8, 0xc9cc,
+ 0x1ded, 0xc9d3, 0x1de2, 0xc9da, 0x1dd8, 0xc9e0, 0x1dcd, 0xc9e7,
+ 0x1dc3, 0xc9ee, 0x1db8, 0xc9f5, 0x1dad, 0xc9fb, 0x1da3, 0xca02,
+ 0x1d98, 0xca09, 0x1d8e, 0xca10, 0x1d83, 0xca16, 0x1d78, 0xca1d,
+ 0x1d6e, 0xca24, 0x1d63, 0xca2b, 0x1d59, 0xca32, 0x1d4e, 0xca38,
+ 0x1d44, 0xca3f, 0x1d39, 0xca46, 0x1d2e, 0xca4d, 0x1d24, 0xca54,
+ 0x1d19, 0xca5b, 0x1d0f, 0xca61, 0x1d04, 0xca68, 0x1cfa, 0xca6f,
+ 0x1cef, 0xca76, 0x1ce5, 0xca7d, 0x1cda, 0xca84, 0x1cd0, 0xca8b,
+ 0x1cc5, 0xca92, 0x1cbb, 0xca99, 0x1cb0, 0xca9f, 0x1ca6, 0xcaa6,
+ 0x1c9b, 0xcaad, 0x1c91, 0xcab4, 0x1c86, 0xcabb, 0x1c7c, 0xcac2,
+ 0x1c72, 0xcac9, 0x1c67, 0xcad0, 0x1c5d, 0xcad7, 0x1c52, 0xcade,
+ 0x1c48, 0xcae5, 0x1c3d, 0xcaec, 0x1c33, 0xcaf3, 0x1c29, 0xcafa,
+ 0x1c1e, 0xcb01, 0x1c14, 0xcb08, 0x1c09, 0xcb0f, 0x1bff, 0xcb16,
+ 0x1bf5, 0xcb1e, 0x1bea, 0xcb25, 0x1be0, 0xcb2c, 0x1bd5, 0xcb33,
+ 0x1bcb, 0xcb3a, 0x1bc1, 0xcb41, 0x1bb6, 0xcb48, 0x1bac, 0xcb4f,
+ 0x1ba2, 0xcb56, 0x1b97, 0xcb5e, 0x1b8d, 0xcb65, 0x1b83, 0xcb6c,
+ 0x1b78, 0xcb73, 0x1b6e, 0xcb7a, 0x1b64, 0xcb81, 0x1b59, 0xcb89,
+ 0x1b4f, 0xcb90, 0x1b45, 0xcb97, 0x1b3b, 0xcb9e, 0x1b30, 0xcba5,
+ 0x1b26, 0xcbad, 0x1b1c, 0xcbb4, 0x1b11, 0xcbbb, 0x1b07, 0xcbc2,
+ 0x1afd, 0xcbca, 0x1af3, 0xcbd1, 0x1ae8, 0xcbd8, 0x1ade, 0xcbe0,
+ 0x1ad4, 0xcbe7, 0x1aca, 0xcbee, 0x1abf, 0xcbf5, 0x1ab5, 0xcbfd,
+ 0x1aab, 0xcc04, 0x1aa1, 0xcc0b, 0x1a97, 0xcc13, 0x1a8c, 0xcc1a,
+ 0x1a82, 0xcc21, 0x1a78, 0xcc29, 0x1a6e, 0xcc30, 0x1a64, 0xcc38,
+ 0x1a5a, 0xcc3f, 0x1a4f, 0xcc46, 0x1a45, 0xcc4e, 0x1a3b, 0xcc55,
+ 0x1a31, 0xcc5d, 0x1a27, 0xcc64, 0x1a1d, 0xcc6b, 0x1a13, 0xcc73,
+ 0x1a08, 0xcc7a, 0x19fe, 0xcc82, 0x19f4, 0xcc89, 0x19ea, 0xcc91,
+ 0x19e0, 0xcc98, 0x19d6, 0xcca0, 0x19cc, 0xcca7, 0x19c2, 0xccaf,
+ 0x19b8, 0xccb6, 0x19ae, 0xccbe, 0x19a4, 0xccc5, 0x199a, 0xcccd,
+ 0x198f, 0xccd4, 0x1985, 0xccdc, 0x197b, 0xcce3, 0x1971, 0xcceb,
+ 0x1967, 0xccf3, 0x195d, 0xccfa, 0x1953, 0xcd02, 0x1949, 0xcd09,
+ 0x193f, 0xcd11, 0x1935, 0xcd19, 0x192b, 0xcd20, 0x1921, 0xcd28,
+ 0x1917, 0xcd30, 0x190d, 0xcd37, 0x1903, 0xcd3f, 0x18f9, 0xcd46,
+ 0x18ef, 0xcd4e, 0x18e6, 0xcd56, 0x18dc, 0xcd5d, 0x18d2, 0xcd65,
+ 0x18c8, 0xcd6d, 0x18be, 0xcd75, 0x18b4, 0xcd7c, 0x18aa, 0xcd84,
+ 0x18a0, 0xcd8c, 0x1896, 0xcd93, 0x188c, 0xcd9b, 0x1882, 0xcda3,
+ 0x1878, 0xcdab, 0x186f, 0xcdb2, 0x1865, 0xcdba, 0x185b, 0xcdc2,
+ 0x1851, 0xcdca, 0x1847, 0xcdd2, 0x183d, 0xcdd9, 0x1833, 0xcde1,
+ 0x182a, 0xcde9, 0x1820, 0xcdf1, 0x1816, 0xcdf9, 0x180c, 0xce01,
+ 0x1802, 0xce08, 0x17f8, 0xce10, 0x17ef, 0xce18, 0x17e5, 0xce20,
+ 0x17db, 0xce28, 0x17d1, 0xce30, 0x17c8, 0xce38, 0x17be, 0xce40,
+ 0x17b4, 0xce47, 0x17aa, 0xce4f, 0x17a0, 0xce57, 0x1797, 0xce5f,
+ 0x178d, 0xce67, 0x1783, 0xce6f, 0x177a, 0xce77, 0x1770, 0xce7f,
+ 0x1766, 0xce87, 0x175c, 0xce8f, 0x1753, 0xce97, 0x1749, 0xce9f,
+ 0x173f, 0xcea7, 0x1736, 0xceaf, 0x172c, 0xceb7, 0x1722, 0xcebf,
+ 0x1719, 0xcec7, 0x170f, 0xcecf, 0x1705, 0xced7, 0x16fc, 0xcedf,
+ 0x16f2, 0xcee7, 0x16e8, 0xceef, 0x16df, 0xcef7, 0x16d5, 0xceff,
+ 0x16cb, 0xcf07, 0x16c2, 0xcf10, 0x16b8, 0xcf18, 0x16af, 0xcf20,
+ 0x16a5, 0xcf28, 0x169b, 0xcf30, 0x1692, 0xcf38, 0x1688, 0xcf40,
+ 0x167f, 0xcf48, 0x1675, 0xcf51, 0x166c, 0xcf59, 0x1662, 0xcf61,
+ 0x1659, 0xcf69, 0x164f, 0xcf71, 0x1645, 0xcf79, 0x163c, 0xcf82,
+ 0x1632, 0xcf8a, 0x1629, 0xcf92, 0x161f, 0xcf9a, 0x1616, 0xcfa3,
+ 0x160c, 0xcfab, 0x1603, 0xcfb3, 0x15f9, 0xcfbb, 0x15f0, 0xcfc4,
+ 0x15e6, 0xcfcc, 0x15dd, 0xcfd4, 0x15d4, 0xcfdc, 0x15ca, 0xcfe5,
+ 0x15c1, 0xcfed, 0x15b7, 0xcff5, 0x15ae, 0xcffe, 0x15a4, 0xd006,
+ 0x159b, 0xd00e, 0x1592, 0xd016, 0x1588, 0xd01f, 0x157f, 0xd027,
+ 0x1575, 0xd030, 0x156c, 0xd038, 0x1563, 0xd040, 0x1559, 0xd049,
+ 0x1550, 0xd051, 0x1547, 0xd059, 0x153d, 0xd062, 0x1534, 0xd06a,
+ 0x152a, 0xd073, 0x1521, 0xd07b, 0x1518, 0xd083, 0x150e, 0xd08c,
+ 0x1505, 0xd094, 0x14fc, 0xd09d, 0x14f3, 0xd0a5, 0x14e9, 0xd0ae,
+ 0x14e0, 0xd0b6, 0x14d7, 0xd0bf, 0x14cd, 0xd0c7, 0x14c4, 0xd0d0,
+ 0x14bb, 0xd0d8, 0x14b2, 0xd0e0, 0x14a8, 0xd0e9, 0x149f, 0xd0f2,
+ 0x1496, 0xd0fa, 0x148d, 0xd103, 0x1483, 0xd10b, 0x147a, 0xd114,
+ 0x1471, 0xd11c, 0x1468, 0xd125, 0x145f, 0xd12d, 0x1455, 0xd136,
+ 0x144c, 0xd13e, 0x1443, 0xd147, 0x143a, 0xd150, 0x1431, 0xd158,
+ 0x1428, 0xd161, 0x141e, 0xd169, 0x1415, 0xd172, 0x140c, 0xd17b,
+ 0x1403, 0xd183, 0x13fa, 0xd18c, 0x13f1, 0xd195, 0x13e8, 0xd19d,
+ 0x13df, 0xd1a6, 0x13d5, 0xd1af, 0x13cc, 0xd1b7, 0x13c3, 0xd1c0,
+ 0x13ba, 0xd1c9, 0x13b1, 0xd1d1, 0x13a8, 0xd1da, 0x139f, 0xd1e3,
+ 0x1396, 0xd1eb, 0x138d, 0xd1f4, 0x1384, 0xd1fd, 0x137b, 0xd206,
+ 0x1372, 0xd20e, 0x1369, 0xd217, 0x1360, 0xd220, 0x1357, 0xd229,
+ 0x134e, 0xd231, 0x1345, 0xd23a, 0x133c, 0xd243, 0x1333, 0xd24c,
+ 0x132a, 0xd255, 0x1321, 0xd25d, 0x1318, 0xd266, 0x130f, 0xd26f,
+ 0x1306, 0xd278, 0x12fd, 0xd281, 0x12f4, 0xd28a, 0x12eb, 0xd292,
+ 0x12e2, 0xd29b, 0x12d9, 0xd2a4, 0x12d1, 0xd2ad, 0x12c8, 0xd2b6,
+ 0x12bf, 0xd2bf, 0x12b6, 0xd2c8, 0x12ad, 0xd2d1, 0x12a4, 0xd2d9,
+ 0x129b, 0xd2e2, 0x1292, 0xd2eb, 0x128a, 0xd2f4, 0x1281, 0xd2fd,
+ 0x1278, 0xd306, 0x126f, 0xd30f, 0x1266, 0xd318, 0x125d, 0xd321,
+ 0x1255, 0xd32a, 0x124c, 0xd333, 0x1243, 0xd33c, 0x123a, 0xd345,
+ 0x1231, 0xd34e, 0x1229, 0xd357, 0x1220, 0xd360, 0x1217, 0xd369,
+ 0x120e, 0xd372, 0x1206, 0xd37b, 0x11fd, 0xd384, 0x11f4, 0xd38d,
+ 0x11eb, 0xd396, 0x11e3, 0xd39f, 0x11da, 0xd3a8, 0x11d1, 0xd3b1,
+ 0x11c9, 0xd3ba, 0x11c0, 0xd3c3, 0x11b7, 0xd3cc, 0x11af, 0xd3d5,
+ 0x11a6, 0xd3df, 0x119d, 0xd3e8, 0x1195, 0xd3f1, 0x118c, 0xd3fa,
+ 0x1183, 0xd403, 0x117b, 0xd40c, 0x1172, 0xd415, 0x1169, 0xd41e,
+ 0x1161, 0xd428, 0x1158, 0xd431, 0x1150, 0xd43a, 0x1147, 0xd443,
+ 0x113e, 0xd44c, 0x1136, 0xd455, 0x112d, 0xd45f, 0x1125, 0xd468,
+ 0x111c, 0xd471, 0x1114, 0xd47a, 0x110b, 0xd483, 0x1103, 0xd48d,
+ 0x10fa, 0xd496, 0x10f2, 0xd49f, 0x10e9, 0xd4a8, 0x10e0, 0xd4b2,
+ 0x10d8, 0xd4bb, 0x10d0, 0xd4c4, 0x10c7, 0xd4cd, 0x10bf, 0xd4d7,
+ 0x10b6, 0xd4e0, 0x10ae, 0xd4e9, 0x10a5, 0xd4f3, 0x109d, 0xd4fc,
+ 0x1094, 0xd505, 0x108c, 0xd50e, 0x1083, 0xd518, 0x107b, 0xd521,
+ 0x1073, 0xd52a, 0x106a, 0xd534, 0x1062, 0xd53d, 0x1059, 0xd547,
+ 0x1051, 0xd550, 0x1049, 0xd559, 0x1040, 0xd563, 0x1038, 0xd56c,
+ 0x1030, 0xd575, 0x1027, 0xd57f, 0x101f, 0xd588, 0x1016, 0xd592,
+ 0x100e, 0xd59b, 0x1006, 0xd5a4, 0xffe, 0xd5ae, 0xff5, 0xd5b7,
+ 0xfed, 0xd5c1, 0xfe5, 0xd5ca, 0xfdc, 0xd5d4, 0xfd4, 0xd5dd,
+ 0xfcc, 0xd5e6, 0xfc4, 0xd5f0, 0xfbb, 0xd5f9, 0xfb3, 0xd603,
+ 0xfab, 0xd60c, 0xfa3, 0xd616, 0xf9a, 0xd61f, 0xf92, 0xd629,
+ 0xf8a, 0xd632, 0xf82, 0xd63c, 0xf79, 0xd645, 0xf71, 0xd64f,
+ 0xf69, 0xd659, 0xf61, 0xd662, 0xf59, 0xd66c, 0xf51, 0xd675,
+ 0xf48, 0xd67f, 0xf40, 0xd688, 0xf38, 0xd692, 0xf30, 0xd69b,
+ 0xf28, 0xd6a5, 0xf20, 0xd6af, 0xf18, 0xd6b8, 0xf10, 0xd6c2,
+ 0xf07, 0xd6cb, 0xeff, 0xd6d5, 0xef7, 0xd6df, 0xeef, 0xd6e8,
+ 0xee7, 0xd6f2, 0xedf, 0xd6fc, 0xed7, 0xd705, 0xecf, 0xd70f,
+ 0xec7, 0xd719, 0xebf, 0xd722, 0xeb7, 0xd72c, 0xeaf, 0xd736,
+ 0xea7, 0xd73f, 0xe9f, 0xd749, 0xe97, 0xd753, 0xe8f, 0xd75c,
+ 0xe87, 0xd766, 0xe7f, 0xd770, 0xe77, 0xd77a, 0xe6f, 0xd783,
+ 0xe67, 0xd78d, 0xe5f, 0xd797, 0xe57, 0xd7a0, 0xe4f, 0xd7aa,
+ 0xe47, 0xd7b4, 0xe40, 0xd7be, 0xe38, 0xd7c8, 0xe30, 0xd7d1,
+ 0xe28, 0xd7db, 0xe20, 0xd7e5, 0xe18, 0xd7ef, 0xe10, 0xd7f8,
+ 0xe08, 0xd802, 0xe01, 0xd80c, 0xdf9, 0xd816, 0xdf1, 0xd820,
+ 0xde9, 0xd82a, 0xde1, 0xd833, 0xdd9, 0xd83d, 0xdd2, 0xd847,
+ 0xdca, 0xd851, 0xdc2, 0xd85b, 0xdba, 0xd865, 0xdb2, 0xd86f,
+ 0xdab, 0xd878, 0xda3, 0xd882, 0xd9b, 0xd88c, 0xd93, 0xd896,
+ 0xd8c, 0xd8a0, 0xd84, 0xd8aa, 0xd7c, 0xd8b4, 0xd75, 0xd8be,
+ 0xd6d, 0xd8c8, 0xd65, 0xd8d2, 0xd5d, 0xd8dc, 0xd56, 0xd8e6,
+ 0xd4e, 0xd8ef, 0xd46, 0xd8f9, 0xd3f, 0xd903, 0xd37, 0xd90d,
+ 0xd30, 0xd917, 0xd28, 0xd921, 0xd20, 0xd92b, 0xd19, 0xd935,
+ 0xd11, 0xd93f, 0xd09, 0xd949, 0xd02, 0xd953, 0xcfa, 0xd95d,
+ 0xcf3, 0xd967, 0xceb, 0xd971, 0xce3, 0xd97b, 0xcdc, 0xd985,
+ 0xcd4, 0xd98f, 0xccd, 0xd99a, 0xcc5, 0xd9a4, 0xcbe, 0xd9ae,
+ 0xcb6, 0xd9b8, 0xcaf, 0xd9c2, 0xca7, 0xd9cc, 0xca0, 0xd9d6,
+ 0xc98, 0xd9e0, 0xc91, 0xd9ea, 0xc89, 0xd9f4, 0xc82, 0xd9fe,
+ 0xc7a, 0xda08, 0xc73, 0xda13, 0xc6b, 0xda1d, 0xc64, 0xda27,
+ 0xc5d, 0xda31, 0xc55, 0xda3b, 0xc4e, 0xda45, 0xc46, 0xda4f,
+ 0xc3f, 0xda5a, 0xc38, 0xda64, 0xc30, 0xda6e, 0xc29, 0xda78,
+ 0xc21, 0xda82, 0xc1a, 0xda8c, 0xc13, 0xda97, 0xc0b, 0xdaa1,
+ 0xc04, 0xdaab, 0xbfd, 0xdab5, 0xbf5, 0xdabf, 0xbee, 0xdaca,
+ 0xbe7, 0xdad4, 0xbe0, 0xdade, 0xbd8, 0xdae8, 0xbd1, 0xdaf3,
+ 0xbca, 0xdafd, 0xbc2, 0xdb07, 0xbbb, 0xdb11, 0xbb4, 0xdb1c,
+ 0xbad, 0xdb26, 0xba5, 0xdb30, 0xb9e, 0xdb3b, 0xb97, 0xdb45,
+ 0xb90, 0xdb4f, 0xb89, 0xdb59, 0xb81, 0xdb64, 0xb7a, 0xdb6e,
+ 0xb73, 0xdb78, 0xb6c, 0xdb83, 0xb65, 0xdb8d, 0xb5e, 0xdb97,
+ 0xb56, 0xdba2, 0xb4f, 0xdbac, 0xb48, 0xdbb6, 0xb41, 0xdbc1,
+ 0xb3a, 0xdbcb, 0xb33, 0xdbd5, 0xb2c, 0xdbe0, 0xb25, 0xdbea,
+ 0xb1e, 0xdbf5, 0xb16, 0xdbff, 0xb0f, 0xdc09, 0xb08, 0xdc14,
+ 0xb01, 0xdc1e, 0xafa, 0xdc29, 0xaf3, 0xdc33, 0xaec, 0xdc3d,
+ 0xae5, 0xdc48, 0xade, 0xdc52, 0xad7, 0xdc5d, 0xad0, 0xdc67,
+ 0xac9, 0xdc72, 0xac2, 0xdc7c, 0xabb, 0xdc86, 0xab4, 0xdc91,
+ 0xaad, 0xdc9b, 0xaa6, 0xdca6, 0xa9f, 0xdcb0, 0xa99, 0xdcbb,
+ 0xa92, 0xdcc5, 0xa8b, 0xdcd0, 0xa84, 0xdcda, 0xa7d, 0xdce5,
+ 0xa76, 0xdcef, 0xa6f, 0xdcfa, 0xa68, 0xdd04, 0xa61, 0xdd0f,
+ 0xa5b, 0xdd19, 0xa54, 0xdd24, 0xa4d, 0xdd2e, 0xa46, 0xdd39,
+ 0xa3f, 0xdd44, 0xa38, 0xdd4e, 0xa32, 0xdd59, 0xa2b, 0xdd63,
+ 0xa24, 0xdd6e, 0xa1d, 0xdd78, 0xa16, 0xdd83, 0xa10, 0xdd8e,
+ 0xa09, 0xdd98, 0xa02, 0xdda3, 0x9fb, 0xddad, 0x9f5, 0xddb8,
+ 0x9ee, 0xddc3, 0x9e7, 0xddcd, 0x9e0, 0xddd8, 0x9da, 0xdde2,
+ 0x9d3, 0xdded, 0x9cc, 0xddf8, 0x9c6, 0xde02, 0x9bf, 0xde0d,
+ 0x9b8, 0xde18, 0x9b2, 0xde22, 0x9ab, 0xde2d, 0x9a4, 0xde38,
+ 0x99e, 0xde42, 0x997, 0xde4d, 0x991, 0xde58, 0x98a, 0xde62,
+ 0x983, 0xde6d, 0x97d, 0xde78, 0x976, 0xde83, 0x970, 0xde8d,
+ 0x969, 0xde98, 0x963, 0xdea3, 0x95c, 0xdead, 0x955, 0xdeb8,
+ 0x94f, 0xdec3, 0x948, 0xdece, 0x942, 0xded8, 0x93b, 0xdee3,
+ 0x935, 0xdeee, 0x92e, 0xdef9, 0x928, 0xdf03, 0x921, 0xdf0e,
+ 0x91b, 0xdf19, 0x915, 0xdf24, 0x90e, 0xdf2f, 0x908, 0xdf39,
+ 0x901, 0xdf44, 0x8fb, 0xdf4f, 0x8f4, 0xdf5a, 0x8ee, 0xdf65,
+ 0x8e8, 0xdf6f, 0x8e1, 0xdf7a, 0x8db, 0xdf85, 0x8d4, 0xdf90,
+ 0x8ce, 0xdf9b, 0x8c8, 0xdfa5, 0x8c1, 0xdfb0, 0x8bb, 0xdfbb,
+ 0x8b5, 0xdfc6, 0x8ae, 0xdfd1, 0x8a8, 0xdfdc, 0x8a2, 0xdfe7,
+ 0x89b, 0xdff1, 0x895, 0xdffc, 0x88f, 0xe007, 0x889, 0xe012,
+ 0x882, 0xe01d, 0x87c, 0xe028, 0x876, 0xe033, 0x870, 0xe03e,
+ 0x869, 0xe049, 0x863, 0xe054, 0x85d, 0xe05e, 0x857, 0xe069,
+ 0x850, 0xe074, 0x84a, 0xe07f, 0x844, 0xe08a, 0x83e, 0xe095,
+ 0x838, 0xe0a0, 0x832, 0xe0ab, 0x82b, 0xe0b6, 0x825, 0xe0c1,
+ 0x81f, 0xe0cc, 0x819, 0xe0d7, 0x813, 0xe0e2, 0x80d, 0xe0ed,
+ 0x807, 0xe0f8, 0x801, 0xe103, 0x7fb, 0xe10e, 0x7f5, 0xe119,
+ 0x7ee, 0xe124, 0x7e8, 0xe12f, 0x7e2, 0xe13a, 0x7dc, 0xe145,
+ 0x7d6, 0xe150, 0x7d0, 0xe15b, 0x7ca, 0xe166, 0x7c4, 0xe171,
+ 0x7be, 0xe17c, 0x7b8, 0xe187, 0x7b2, 0xe192, 0x7ac, 0xe19d,
+ 0x7a6, 0xe1a8, 0x7a0, 0xe1b3, 0x79a, 0xe1be, 0x795, 0xe1ca,
+ 0x78f, 0xe1d5, 0x789, 0xe1e0, 0x783, 0xe1eb, 0x77d, 0xe1f6,
+ 0x777, 0xe201, 0x771, 0xe20c, 0x76b, 0xe217, 0x765, 0xe222,
+ 0x75f, 0xe22d, 0x75a, 0xe239, 0x754, 0xe244, 0x74e, 0xe24f,
+ 0x748, 0xe25a, 0x742, 0xe265, 0x73d, 0xe270, 0x737, 0xe27b,
+ 0x731, 0xe287, 0x72b, 0xe292, 0x725, 0xe29d, 0x720, 0xe2a8,
+ 0x71a, 0xe2b3, 0x714, 0xe2be, 0x70e, 0xe2ca, 0x709, 0xe2d5,
+ 0x703, 0xe2e0, 0x6fd, 0xe2eb, 0x6f7, 0xe2f6, 0x6f2, 0xe301,
+ 0x6ec, 0xe30d, 0x6e6, 0xe318, 0x6e1, 0xe323, 0x6db, 0xe32e,
+ 0x6d5, 0xe33a, 0x6d0, 0xe345, 0x6ca, 0xe350, 0x6c5, 0xe35b,
+ 0x6bf, 0xe367, 0x6b9, 0xe372, 0x6b4, 0xe37d, 0x6ae, 0xe388,
+ 0x6a8, 0xe394, 0x6a3, 0xe39f, 0x69d, 0xe3aa, 0x698, 0xe3b5,
+ 0x692, 0xe3c1, 0x68d, 0xe3cc, 0x687, 0xe3d7, 0x682, 0xe3e2,
+ 0x67c, 0xe3ee, 0x677, 0xe3f9, 0x671, 0xe404, 0x66c, 0xe410,
+ 0x666, 0xe41b, 0x661, 0xe426, 0x65b, 0xe432, 0x656, 0xe43d,
+ 0x650, 0xe448, 0x64b, 0xe454, 0x645, 0xe45f, 0x640, 0xe46a,
+ 0x63b, 0xe476, 0x635, 0xe481, 0x630, 0xe48c, 0x62a, 0xe498,
+ 0x625, 0xe4a3, 0x620, 0xe4ae, 0x61a, 0xe4ba, 0x615, 0xe4c5,
+ 0x610, 0xe4d0, 0x60a, 0xe4dc, 0x605, 0xe4e7, 0x600, 0xe4f3,
+ 0x5fa, 0xe4fe, 0x5f5, 0xe509, 0x5f0, 0xe515, 0x5ea, 0xe520,
+ 0x5e5, 0xe52c, 0x5e0, 0xe537, 0x5db, 0xe542, 0x5d5, 0xe54e,
+ 0x5d0, 0xe559, 0x5cb, 0xe565, 0x5c6, 0xe570, 0x5c1, 0xe57c,
+ 0x5bb, 0xe587, 0x5b6, 0xe592, 0x5b1, 0xe59e, 0x5ac, 0xe5a9,
+ 0x5a7, 0xe5b5, 0x5a1, 0xe5c0, 0x59c, 0xe5cc, 0x597, 0xe5d7,
+ 0x592, 0xe5e3, 0x58d, 0xe5ee, 0x588, 0xe5fa, 0x583, 0xe605,
+ 0x57e, 0xe611, 0x578, 0xe61c, 0x573, 0xe628, 0x56e, 0xe633,
+ 0x569, 0xe63f, 0x564, 0xe64a, 0x55f, 0xe656, 0x55a, 0xe661,
+ 0x555, 0xe66d, 0x550, 0xe678, 0x54b, 0xe684, 0x546, 0xe68f,
+ 0x541, 0xe69b, 0x53c, 0xe6a6, 0x537, 0xe6b2, 0x532, 0xe6bd,
+ 0x52d, 0xe6c9, 0x528, 0xe6d4, 0x523, 0xe6e0, 0x51e, 0xe6ec,
+ 0x51a, 0xe6f7, 0x515, 0xe703, 0x510, 0xe70e, 0x50b, 0xe71a,
+ 0x506, 0xe725, 0x501, 0xe731, 0x4fc, 0xe73d, 0x4f7, 0xe748,
+ 0x4f2, 0xe754, 0x4ee, 0xe75f, 0x4e9, 0xe76b, 0x4e4, 0xe777,
+ 0x4df, 0xe782, 0x4da, 0xe78e, 0x4d6, 0xe799, 0x4d1, 0xe7a5,
+ 0x4cc, 0xe7b1, 0x4c7, 0xe7bc, 0x4c2, 0xe7c8, 0x4be, 0xe7d3,
+ 0x4b9, 0xe7df, 0x4b4, 0xe7eb, 0x4b0, 0xe7f6, 0x4ab, 0xe802,
+ 0x4a6, 0xe80e, 0x4a1, 0xe819, 0x49d, 0xe825, 0x498, 0xe831,
+ 0x493, 0xe83c, 0x48f, 0xe848, 0x48a, 0xe854, 0x485, 0xe85f,
+ 0x481, 0xe86b, 0x47c, 0xe877, 0x478, 0xe882, 0x473, 0xe88e,
+ 0x46e, 0xe89a, 0x46a, 0xe8a5, 0x465, 0xe8b1, 0x461, 0xe8bd,
+ 0x45c, 0xe8c9, 0x457, 0xe8d4, 0x453, 0xe8e0, 0x44e, 0xe8ec,
+ 0x44a, 0xe8f7, 0x445, 0xe903, 0x441, 0xe90f, 0x43c, 0xe91b,
+ 0x438, 0xe926, 0x433, 0xe932, 0x42f, 0xe93e, 0x42a, 0xe94a,
+ 0x426, 0xe955, 0x422, 0xe961, 0x41d, 0xe96d, 0x419, 0xe979,
+ 0x414, 0xe984, 0x410, 0xe990, 0x40b, 0xe99c, 0x407, 0xe9a8,
+ 0x403, 0xe9b4, 0x3fe, 0xe9bf, 0x3fa, 0xe9cb, 0x3f6, 0xe9d7,
+ 0x3f1, 0xe9e3, 0x3ed, 0xe9ee, 0x3e9, 0xe9fa, 0x3e4, 0xea06,
+ 0x3e0, 0xea12, 0x3dc, 0xea1e, 0x3d7, 0xea29, 0x3d3, 0xea35,
+ 0x3cf, 0xea41, 0x3ca, 0xea4d, 0x3c6, 0xea59, 0x3c2, 0xea65,
+ 0x3be, 0xea70, 0x3ba, 0xea7c, 0x3b5, 0xea88, 0x3b1, 0xea94,
+ 0x3ad, 0xeaa0, 0x3a9, 0xeaac, 0x3a5, 0xeab7, 0x3a0, 0xeac3,
+ 0x39c, 0xeacf, 0x398, 0xeadb, 0x394, 0xeae7, 0x390, 0xeaf3,
+ 0x38c, 0xeaff, 0x387, 0xeb0a, 0x383, 0xeb16, 0x37f, 0xeb22,
+ 0x37b, 0xeb2e, 0x377, 0xeb3a, 0x373, 0xeb46, 0x36f, 0xeb52,
+ 0x36b, 0xeb5e, 0x367, 0xeb6a, 0x363, 0xeb75, 0x35f, 0xeb81,
+ 0x35b, 0xeb8d, 0x357, 0xeb99, 0x353, 0xeba5, 0x34f, 0xebb1,
+ 0x34b, 0xebbd, 0x347, 0xebc9, 0x343, 0xebd5, 0x33f, 0xebe1,
+ 0x33b, 0xebed, 0x337, 0xebf9, 0x333, 0xec05, 0x32f, 0xec10,
+ 0x32b, 0xec1c, 0x327, 0xec28, 0x323, 0xec34, 0x320, 0xec40,
+ 0x31c, 0xec4c, 0x318, 0xec58, 0x314, 0xec64, 0x310, 0xec70,
+ 0x30c, 0xec7c, 0x308, 0xec88, 0x305, 0xec94, 0x301, 0xeca0,
+ 0x2fd, 0xecac, 0x2f9, 0xecb8, 0x2f5, 0xecc4, 0x2f2, 0xecd0,
+ 0x2ee, 0xecdc, 0x2ea, 0xece8, 0x2e6, 0xecf4, 0x2e3, 0xed00,
+ 0x2df, 0xed0c, 0x2db, 0xed18, 0x2d8, 0xed24, 0x2d4, 0xed30,
+ 0x2d0, 0xed3c, 0x2cc, 0xed48, 0x2c9, 0xed54, 0x2c5, 0xed60,
+ 0x2c1, 0xed6c, 0x2be, 0xed78, 0x2ba, 0xed84, 0x2b7, 0xed90,
+ 0x2b3, 0xed9c, 0x2af, 0xeda8, 0x2ac, 0xedb4, 0x2a8, 0xedc0,
+ 0x2a5, 0xedcc, 0x2a1, 0xedd8, 0x29d, 0xede4, 0x29a, 0xedf0,
+ 0x296, 0xedfc, 0x293, 0xee09, 0x28f, 0xee15, 0x28c, 0xee21,
+ 0x288, 0xee2d, 0x285, 0xee39, 0x281, 0xee45, 0x27e, 0xee51,
+ 0x27a, 0xee5d, 0x277, 0xee69, 0x273, 0xee75, 0x270, 0xee81,
+ 0x26d, 0xee8d, 0x269, 0xee99, 0x266, 0xeea6, 0x262, 0xeeb2,
+ 0x25f, 0xeebe, 0x25c, 0xeeca, 0x258, 0xeed6, 0x255, 0xeee2,
+ 0x251, 0xeeee, 0x24e, 0xeefa, 0x24b, 0xef06, 0x247, 0xef13,
+ 0x244, 0xef1f, 0x241, 0xef2b, 0x23e, 0xef37, 0x23a, 0xef43,
+ 0x237, 0xef4f, 0x234, 0xef5b, 0x230, 0xef67, 0x22d, 0xef74,
+ 0x22a, 0xef80, 0x227, 0xef8c, 0x223, 0xef98, 0x220, 0xefa4,
+ 0x21d, 0xefb0, 0x21a, 0xefbc, 0x217, 0xefc9, 0x213, 0xefd5,
+ 0x210, 0xefe1, 0x20d, 0xefed, 0x20a, 0xeff9, 0x207, 0xf005,
+ 0x204, 0xf012, 0x201, 0xf01e, 0x1fd, 0xf02a, 0x1fa, 0xf036,
+ 0x1f7, 0xf042, 0x1f4, 0xf04e, 0x1f1, 0xf05b, 0x1ee, 0xf067,
+ 0x1eb, 0xf073, 0x1e8, 0xf07f, 0x1e5, 0xf08b, 0x1e2, 0xf098,
+ 0x1df, 0xf0a4, 0x1dc, 0xf0b0, 0x1d9, 0xf0bc, 0x1d6, 0xf0c8,
+ 0x1d3, 0xf0d5, 0x1d0, 0xf0e1, 0x1cd, 0xf0ed, 0x1ca, 0xf0f9,
+ 0x1c7, 0xf105, 0x1c4, 0xf112, 0x1c1, 0xf11e, 0x1be, 0xf12a,
+ 0x1bb, 0xf136, 0x1b8, 0xf143, 0x1b6, 0xf14f, 0x1b3, 0xf15b,
+ 0x1b0, 0xf167, 0x1ad, 0xf174, 0x1aa, 0xf180, 0x1a7, 0xf18c,
+ 0x1a4, 0xf198, 0x1a2, 0xf1a4, 0x19f, 0xf1b1, 0x19c, 0xf1bd,
+ 0x199, 0xf1c9, 0x196, 0xf1d5, 0x194, 0xf1e2, 0x191, 0xf1ee,
+ 0x18e, 0xf1fa, 0x18b, 0xf207, 0x189, 0xf213, 0x186, 0xf21f,
+ 0x183, 0xf22b, 0x180, 0xf238, 0x17e, 0xf244, 0x17b, 0xf250,
+ 0x178, 0xf25c, 0x176, 0xf269, 0x173, 0xf275, 0x170, 0xf281,
+ 0x16e, 0xf28e, 0x16b, 0xf29a, 0x168, 0xf2a6, 0x166, 0xf2b2,
+ 0x163, 0xf2bf, 0x161, 0xf2cb, 0x15e, 0xf2d7, 0x15b, 0xf2e4,
+ 0x159, 0xf2f0, 0x156, 0xf2fc, 0x154, 0xf308, 0x151, 0xf315,
+ 0x14f, 0xf321, 0x14c, 0xf32d, 0x14a, 0xf33a, 0x147, 0xf346,
+ 0x145, 0xf352, 0x142, 0xf35f, 0x140, 0xf36b, 0x13d, 0xf377,
+ 0x13b, 0xf384, 0x138, 0xf390, 0x136, 0xf39c, 0x134, 0xf3a9,
+ 0x131, 0xf3b5, 0x12f, 0xf3c1, 0x12c, 0xf3ce, 0x12a, 0xf3da,
+ 0x128, 0xf3e6, 0x125, 0xf3f3, 0x123, 0xf3ff, 0x120, 0xf40b,
+ 0x11e, 0xf418, 0x11c, 0xf424, 0x119, 0xf430, 0x117, 0xf43d,
+ 0x115, 0xf449, 0x113, 0xf455, 0x110, 0xf462, 0x10e, 0xf46e,
+ 0x10c, 0xf47b, 0x109, 0xf487, 0x107, 0xf493, 0x105, 0xf4a0,
+ 0x103, 0xf4ac, 0x100, 0xf4b8, 0xfe, 0xf4c5, 0xfc, 0xf4d1,
+ 0xfa, 0xf4dd, 0xf8, 0xf4ea, 0xf6, 0xf4f6, 0xf3, 0xf503,
+ 0xf1, 0xf50f, 0xef, 0xf51b, 0xed, 0xf528, 0xeb, 0xf534,
+ 0xe9, 0xf540, 0xe7, 0xf54d, 0xe4, 0xf559, 0xe2, 0xf566,
+ 0xe0, 0xf572, 0xde, 0xf57e, 0xdc, 0xf58b, 0xda, 0xf597,
+ 0xd8, 0xf5a4, 0xd6, 0xf5b0, 0xd4, 0xf5bc, 0xd2, 0xf5c9,
+ 0xd0, 0xf5d5, 0xce, 0xf5e2, 0xcc, 0xf5ee, 0xca, 0xf5fa,
+ 0xc8, 0xf607, 0xc6, 0xf613, 0xc4, 0xf620, 0xc2, 0xf62c,
+ 0xc0, 0xf639, 0xbe, 0xf645, 0xbd, 0xf651, 0xbb, 0xf65e,
+ 0xb9, 0xf66a, 0xb7, 0xf677, 0xb5, 0xf683, 0xb3, 0xf690,
+ 0xb1, 0xf69c, 0xaf, 0xf6a8, 0xae, 0xf6b5, 0xac, 0xf6c1,
+ 0xaa, 0xf6ce, 0xa8, 0xf6da, 0xa6, 0xf6e7, 0xa5, 0xf6f3,
+ 0xa3, 0xf6ff, 0xa1, 0xf70c, 0x9f, 0xf718, 0x9e, 0xf725,
+ 0x9c, 0xf731, 0x9a, 0xf73e, 0x98, 0xf74a, 0x97, 0xf757,
+ 0x95, 0xf763, 0x93, 0xf76f, 0x92, 0xf77c, 0x90, 0xf788,
+ 0x8e, 0xf795, 0x8d, 0xf7a1, 0x8b, 0xf7ae, 0x89, 0xf7ba,
+ 0x88, 0xf7c7, 0x86, 0xf7d3, 0x85, 0xf7e0, 0x83, 0xf7ec,
+ 0x81, 0xf7f9, 0x80, 0xf805, 0x7e, 0xf811, 0x7d, 0xf81e,
+ 0x7b, 0xf82a, 0x7a, 0xf837, 0x78, 0xf843, 0x77, 0xf850,
+ 0x75, 0xf85c, 0x74, 0xf869, 0x72, 0xf875, 0x71, 0xf882,
+ 0x6f, 0xf88e, 0x6e, 0xf89b, 0x6c, 0xf8a7, 0x6b, 0xf8b4,
+ 0x69, 0xf8c0, 0x68, 0xf8cd, 0x67, 0xf8d9, 0x65, 0xf8e6,
+ 0x64, 0xf8f2, 0x62, 0xf8ff, 0x61, 0xf90b, 0x60, 0xf918,
+ 0x5e, 0xf924, 0x5d, 0xf931, 0x5c, 0xf93d, 0x5a, 0xf94a,
+ 0x59, 0xf956, 0x58, 0xf963, 0x56, 0xf96f, 0x55, 0xf97c,
+ 0x54, 0xf988, 0x53, 0xf995, 0x51, 0xf9a1, 0x50, 0xf9ae,
+ 0x4f, 0xf9ba, 0x4e, 0xf9c7, 0x4c, 0xf9d3, 0x4b, 0xf9e0,
+ 0x4a, 0xf9ec, 0x49, 0xf9f9, 0x48, 0xfa05, 0x47, 0xfa12,
+ 0x45, 0xfa1e, 0x44, 0xfa2b, 0x43, 0xfa37, 0x42, 0xfa44,
+ 0x41, 0xfa50, 0x40, 0xfa5d, 0x3f, 0xfa69, 0x3d, 0xfa76,
+ 0x3c, 0xfa82, 0x3b, 0xfa8f, 0x3a, 0xfa9b, 0x39, 0xfaa8,
+ 0x38, 0xfab4, 0x37, 0xfac1, 0x36, 0xfacd, 0x35, 0xfada,
+ 0x34, 0xfae6, 0x33, 0xfaf3, 0x32, 0xfb00, 0x31, 0xfb0c,
+ 0x30, 0xfb19, 0x2f, 0xfb25, 0x2e, 0xfb32, 0x2d, 0xfb3e,
+ 0x2c, 0xfb4b, 0x2b, 0xfb57, 0x2b, 0xfb64, 0x2a, 0xfb70,
+ 0x29, 0xfb7d, 0x28, 0xfb89, 0x27, 0xfb96, 0x26, 0xfba2,
+ 0x25, 0xfbaf, 0x24, 0xfbbc, 0x24, 0xfbc8, 0x23, 0xfbd5,
+ 0x22, 0xfbe1, 0x21, 0xfbee, 0x20, 0xfbfa, 0x20, 0xfc07,
+ 0x1f, 0xfc13, 0x1e, 0xfc20, 0x1d, 0xfc2c, 0x1d, 0xfc39,
+ 0x1c, 0xfc45, 0x1b, 0xfc52, 0x1a, 0xfc5f, 0x1a, 0xfc6b,
+ 0x19, 0xfc78, 0x18, 0xfc84, 0x18, 0xfc91, 0x17, 0xfc9d,
+ 0x16, 0xfcaa, 0x16, 0xfcb6, 0x15, 0xfcc3, 0x14, 0xfcd0,
+ 0x14, 0xfcdc, 0x13, 0xfce9, 0x13, 0xfcf5, 0x12, 0xfd02,
+ 0x11, 0xfd0e, 0x11, 0xfd1b, 0x10, 0xfd27, 0x10, 0xfd34,
+ 0xf, 0xfd40, 0xf, 0xfd4d, 0xe, 0xfd5a, 0xe, 0xfd66,
+ 0xd, 0xfd73, 0xd, 0xfd7f, 0xc, 0xfd8c, 0xc, 0xfd98,
+ 0xb, 0xfda5, 0xb, 0xfdb2, 0xa, 0xfdbe, 0xa, 0xfdcb,
+ 0x9, 0xfdd7, 0x9, 0xfde4, 0x9, 0xfdf0, 0x8, 0xfdfd,
+ 0x8, 0xfe09, 0x7, 0xfe16, 0x7, 0xfe23, 0x7, 0xfe2f,
+ 0x6, 0xfe3c, 0x6, 0xfe48, 0x6, 0xfe55, 0x5, 0xfe61,
+ 0x5, 0xfe6e, 0x5, 0xfe7a, 0x4, 0xfe87, 0x4, 0xfe94,
+ 0x4, 0xfea0, 0x4, 0xfead, 0x3, 0xfeb9, 0x3, 0xfec6,
+ 0x3, 0xfed2, 0x3, 0xfedf, 0x2, 0xfeec, 0x2, 0xfef8,
+ 0x2, 0xff05, 0x2, 0xff11, 0x2, 0xff1e, 0x1, 0xff2a,
+ 0x1, 0xff37, 0x1, 0xff44, 0x1, 0xff50, 0x1, 0xff5d,
+ 0x1, 0xff69, 0x1, 0xff76, 0x0, 0xff82, 0x0, 0xff8f,
+ 0x0, 0xff9b, 0x0, 0xffa8, 0x0, 0xffb5, 0x0, 0xffc1,
+ 0x0, 0xffce, 0x0, 0xffda, 0x0, 0xffe7, 0x0, 0xfff3,
+ 0x0, 0x0, 0x0, 0xd, 0x0, 0x19, 0x0, 0x26,
+ 0x0, 0x32, 0x0, 0x3f, 0x0, 0x4b, 0x0, 0x58,
+ 0x0, 0x65, 0x0, 0x71, 0x0, 0x7e, 0x1, 0x8a,
+ 0x1, 0x97, 0x1, 0xa3, 0x1, 0xb0, 0x1, 0xbc,
+ 0x1, 0xc9, 0x1, 0xd6, 0x2, 0xe2, 0x2, 0xef,
+ 0x2, 0xfb, 0x2, 0x108, 0x2, 0x114, 0x3, 0x121,
+ 0x3, 0x12e, 0x3, 0x13a, 0x3, 0x147, 0x4, 0x153,
+ 0x4, 0x160, 0x4, 0x16c, 0x4, 0x179, 0x5, 0x186,
+ 0x5, 0x192, 0x5, 0x19f, 0x6, 0x1ab, 0x6, 0x1b8,
+ 0x6, 0x1c4, 0x7, 0x1d1, 0x7, 0x1dd, 0x7, 0x1ea,
+ 0x8, 0x1f7, 0x8, 0x203, 0x9, 0x210, 0x9, 0x21c,
+ 0x9, 0x229, 0xa, 0x235, 0xa, 0x242, 0xb, 0x24e,
+ 0xb, 0x25b, 0xc, 0x268, 0xc, 0x274, 0xd, 0x281,
+ 0xd, 0x28d, 0xe, 0x29a, 0xe, 0x2a6, 0xf, 0x2b3,
+ 0xf, 0x2c0, 0x10, 0x2cc, 0x10, 0x2d9, 0x11, 0x2e5,
+ 0x11, 0x2f2, 0x12, 0x2fe, 0x13, 0x30b, 0x13, 0x317,
+ 0x14, 0x324, 0x14, 0x330, 0x15, 0x33d, 0x16, 0x34a,
+ 0x16, 0x356, 0x17, 0x363, 0x18, 0x36f, 0x18, 0x37c,
+ 0x19, 0x388, 0x1a, 0x395, 0x1a, 0x3a1, 0x1b, 0x3ae,
+ 0x1c, 0x3bb, 0x1d, 0x3c7, 0x1d, 0x3d4, 0x1e, 0x3e0,
+ 0x1f, 0x3ed, 0x20, 0x3f9, 0x20, 0x406, 0x21, 0x412,
+ 0x22, 0x41f, 0x23, 0x42b, 0x24, 0x438, 0x24, 0x444,
+ 0x25, 0x451, 0x26, 0x45e, 0x27, 0x46a, 0x28, 0x477,
+ 0x29, 0x483, 0x2a, 0x490, 0x2b, 0x49c, 0x2b, 0x4a9,
+ 0x2c, 0x4b5, 0x2d, 0x4c2, 0x2e, 0x4ce, 0x2f, 0x4db,
+ 0x30, 0x4e7, 0x31, 0x4f4, 0x32, 0x500, 0x33, 0x50d,
+ 0x34, 0x51a, 0x35, 0x526, 0x36, 0x533, 0x37, 0x53f,
+ 0x38, 0x54c, 0x39, 0x558, 0x3a, 0x565, 0x3b, 0x571,
+ 0x3c, 0x57e, 0x3d, 0x58a, 0x3f, 0x597, 0x40, 0x5a3,
+ 0x41, 0x5b0, 0x42, 0x5bc, 0x43, 0x5c9, 0x44, 0x5d5,
+ 0x45, 0x5e2, 0x47, 0x5ee, 0x48, 0x5fb, 0x49, 0x607,
+ 0x4a, 0x614, 0x4b, 0x620, 0x4c, 0x62d, 0x4e, 0x639,
+ 0x4f, 0x646, 0x50, 0x652, 0x51, 0x65f, 0x53, 0x66b,
+ 0x54, 0x678, 0x55, 0x684, 0x56, 0x691, 0x58, 0x69d,
+ 0x59, 0x6aa, 0x5a, 0x6b6, 0x5c, 0x6c3, 0x5d, 0x6cf,
+ 0x5e, 0x6dc, 0x60, 0x6e8, 0x61, 0x6f5, 0x62, 0x701,
+ 0x64, 0x70e, 0x65, 0x71a, 0x67, 0x727, 0x68, 0x733,
+ 0x69, 0x740, 0x6b, 0x74c, 0x6c, 0x759, 0x6e, 0x765,
+ 0x6f, 0x772, 0x71, 0x77e, 0x72, 0x78b, 0x74, 0x797,
+ 0x75, 0x7a4, 0x77, 0x7b0, 0x78, 0x7bd, 0x7a, 0x7c9,
+ 0x7b, 0x7d6, 0x7d, 0x7e2, 0x7e, 0x7ef, 0x80, 0x7fb,
+ 0x81, 0x807, 0x83, 0x814, 0x85, 0x820, 0x86, 0x82d,
+ 0x88, 0x839, 0x89, 0x846, 0x8b, 0x852, 0x8d, 0x85f,
+ 0x8e, 0x86b, 0x90, 0x878, 0x92, 0x884, 0x93, 0x891,
+ 0x95, 0x89d, 0x97, 0x8a9, 0x98, 0x8b6, 0x9a, 0x8c2,
+ 0x9c, 0x8cf, 0x9e, 0x8db, 0x9f, 0x8e8, 0xa1, 0x8f4,
+ 0xa3, 0x901, 0xa5, 0x90d, 0xa6, 0x919, 0xa8, 0x926,
+ 0xaa, 0x932, 0xac, 0x93f, 0xae, 0x94b, 0xaf, 0x958,
+ 0xb1, 0x964, 0xb3, 0x970, 0xb5, 0x97d, 0xb7, 0x989,
+ 0xb9, 0x996, 0xbb, 0x9a2, 0xbd, 0x9af, 0xbe, 0x9bb,
+ 0xc0, 0x9c7, 0xc2, 0x9d4, 0xc4, 0x9e0, 0xc6, 0x9ed,
+ 0xc8, 0x9f9, 0xca, 0xa06, 0xcc, 0xa12, 0xce, 0xa1e,
+ 0xd0, 0xa2b, 0xd2, 0xa37, 0xd4, 0xa44, 0xd6, 0xa50,
+ 0xd8, 0xa5c, 0xda, 0xa69, 0xdc, 0xa75, 0xde, 0xa82,
+ 0xe0, 0xa8e, 0xe2, 0xa9a, 0xe4, 0xaa7, 0xe7, 0xab3,
+ 0xe9, 0xac0, 0xeb, 0xacc, 0xed, 0xad8, 0xef, 0xae5,
+ 0xf1, 0xaf1, 0xf3, 0xafd, 0xf6, 0xb0a, 0xf8, 0xb16,
+ 0xfa, 0xb23, 0xfc, 0xb2f, 0xfe, 0xb3b, 0x100, 0xb48,
+ 0x103, 0xb54, 0x105, 0xb60, 0x107, 0xb6d, 0x109, 0xb79,
+ 0x10c, 0xb85, 0x10e, 0xb92, 0x110, 0xb9e, 0x113, 0xbab,
+ 0x115, 0xbb7, 0x117, 0xbc3, 0x119, 0xbd0, 0x11c, 0xbdc,
+ 0x11e, 0xbe8, 0x120, 0xbf5, 0x123, 0xc01, 0x125, 0xc0d,
+ 0x128, 0xc1a, 0x12a, 0xc26, 0x12c, 0xc32, 0x12f, 0xc3f,
+ 0x131, 0xc4b, 0x134, 0xc57, 0x136, 0xc64, 0x138, 0xc70,
+ 0x13b, 0xc7c, 0x13d, 0xc89, 0x140, 0xc95, 0x142, 0xca1,
+ 0x145, 0xcae, 0x147, 0xcba, 0x14a, 0xcc6, 0x14c, 0xcd3,
+ 0x14f, 0xcdf, 0x151, 0xceb, 0x154, 0xcf8, 0x156, 0xd04,
+ 0x159, 0xd10, 0x15b, 0xd1c, 0x15e, 0xd29, 0x161, 0xd35,
+ 0x163, 0xd41, 0x166, 0xd4e, 0x168, 0xd5a, 0x16b, 0xd66,
+ 0x16e, 0xd72, 0x170, 0xd7f, 0x173, 0xd8b, 0x176, 0xd97,
+ 0x178, 0xda4, 0x17b, 0xdb0, 0x17e, 0xdbc, 0x180, 0xdc8,
+ 0x183, 0xdd5, 0x186, 0xde1, 0x189, 0xded, 0x18b, 0xdf9,
+ 0x18e, 0xe06, 0x191, 0xe12, 0x194, 0xe1e, 0x196, 0xe2b,
+ 0x199, 0xe37, 0x19c, 0xe43, 0x19f, 0xe4f, 0x1a2, 0xe5c,
+ 0x1a4, 0xe68, 0x1a7, 0xe74, 0x1aa, 0xe80, 0x1ad, 0xe8c,
+ 0x1b0, 0xe99, 0x1b3, 0xea5, 0x1b6, 0xeb1, 0x1b8, 0xebd,
+ 0x1bb, 0xeca, 0x1be, 0xed6, 0x1c1, 0xee2, 0x1c4, 0xeee,
+ 0x1c7, 0xefb, 0x1ca, 0xf07, 0x1cd, 0xf13, 0x1d0, 0xf1f,
+ 0x1d3, 0xf2b, 0x1d6, 0xf38, 0x1d9, 0xf44, 0x1dc, 0xf50,
+ 0x1df, 0xf5c, 0x1e2, 0xf68, 0x1e5, 0xf75, 0x1e8, 0xf81,
+ 0x1eb, 0xf8d, 0x1ee, 0xf99, 0x1f1, 0xfa5, 0x1f4, 0xfb2,
+ 0x1f7, 0xfbe, 0x1fa, 0xfca, 0x1fd, 0xfd6, 0x201, 0xfe2,
+ 0x204, 0xfee, 0x207, 0xffb, 0x20a, 0x1007, 0x20d, 0x1013,
+ 0x210, 0x101f, 0x213, 0x102b, 0x217, 0x1037, 0x21a, 0x1044,
+ 0x21d, 0x1050, 0x220, 0x105c, 0x223, 0x1068, 0x227, 0x1074,
+ 0x22a, 0x1080, 0x22d, 0x108c, 0x230, 0x1099, 0x234, 0x10a5,
+ 0x237, 0x10b1, 0x23a, 0x10bd, 0x23e, 0x10c9, 0x241, 0x10d5,
+ 0x244, 0x10e1, 0x247, 0x10ed, 0x24b, 0x10fa, 0x24e, 0x1106,
+ 0x251, 0x1112, 0x255, 0x111e, 0x258, 0x112a, 0x25c, 0x1136,
+ 0x25f, 0x1142, 0x262, 0x114e, 0x266, 0x115a, 0x269, 0x1167,
+ 0x26d, 0x1173, 0x270, 0x117f, 0x273, 0x118b, 0x277, 0x1197,
+ 0x27a, 0x11a3, 0x27e, 0x11af, 0x281, 0x11bb, 0x285, 0x11c7,
+ 0x288, 0x11d3, 0x28c, 0x11df, 0x28f, 0x11eb, 0x293, 0x11f7,
+ 0x296, 0x1204, 0x29a, 0x1210, 0x29d, 0x121c, 0x2a1, 0x1228,
+ 0x2a5, 0x1234, 0x2a8, 0x1240, 0x2ac, 0x124c, 0x2af, 0x1258,
+ 0x2b3, 0x1264, 0x2b7, 0x1270, 0x2ba, 0x127c, 0x2be, 0x1288,
+ 0x2c1, 0x1294, 0x2c5, 0x12a0, 0x2c9, 0x12ac, 0x2cc, 0x12b8,
+ 0x2d0, 0x12c4, 0x2d4, 0x12d0, 0x2d8, 0x12dc, 0x2db, 0x12e8,
+ 0x2df, 0x12f4, 0x2e3, 0x1300, 0x2e6, 0x130c, 0x2ea, 0x1318,
+ 0x2ee, 0x1324, 0x2f2, 0x1330, 0x2f5, 0x133c, 0x2f9, 0x1348,
+ 0x2fd, 0x1354, 0x301, 0x1360, 0x305, 0x136c, 0x308, 0x1378,
+ 0x30c, 0x1384, 0x310, 0x1390, 0x314, 0x139c, 0x318, 0x13a8,
+ 0x31c, 0x13b4, 0x320, 0x13c0, 0x323, 0x13cc, 0x327, 0x13d8,
+ 0x32b, 0x13e4, 0x32f, 0x13f0, 0x333, 0x13fb, 0x337, 0x1407,
+ 0x33b, 0x1413, 0x33f, 0x141f, 0x343, 0x142b, 0x347, 0x1437,
+ 0x34b, 0x1443, 0x34f, 0x144f, 0x353, 0x145b, 0x357, 0x1467,
+ 0x35b, 0x1473, 0x35f, 0x147f, 0x363, 0x148b, 0x367, 0x1496,
+ 0x36b, 0x14a2, 0x36f, 0x14ae, 0x373, 0x14ba, 0x377, 0x14c6,
+ 0x37b, 0x14d2, 0x37f, 0x14de, 0x383, 0x14ea, 0x387, 0x14f6,
+ 0x38c, 0x1501, 0x390, 0x150d, 0x394, 0x1519, 0x398, 0x1525,
+ 0x39c, 0x1531, 0x3a0, 0x153d, 0x3a5, 0x1549, 0x3a9, 0x1554,
+ 0x3ad, 0x1560, 0x3b1, 0x156c, 0x3b5, 0x1578, 0x3ba, 0x1584,
+ 0x3be, 0x1590, 0x3c2, 0x159b, 0x3c6, 0x15a7, 0x3ca, 0x15b3,
+ 0x3cf, 0x15bf, 0x3d3, 0x15cb, 0x3d7, 0x15d7, 0x3dc, 0x15e2,
+ 0x3e0, 0x15ee, 0x3e4, 0x15fa, 0x3e9, 0x1606, 0x3ed, 0x1612,
+ 0x3f1, 0x161d, 0x3f6, 0x1629, 0x3fa, 0x1635, 0x3fe, 0x1641,
+ 0x403, 0x164c, 0x407, 0x1658, 0x40b, 0x1664, 0x410, 0x1670,
+ 0x414, 0x167c, 0x419, 0x1687, 0x41d, 0x1693, 0x422, 0x169f,
+ 0x426, 0x16ab, 0x42a, 0x16b6, 0x42f, 0x16c2, 0x433, 0x16ce,
+ 0x438, 0x16da, 0x43c, 0x16e5, 0x441, 0x16f1, 0x445, 0x16fd,
+ 0x44a, 0x1709, 0x44e, 0x1714, 0x453, 0x1720, 0x457, 0x172c,
+ 0x45c, 0x1737, 0x461, 0x1743, 0x465, 0x174f, 0x46a, 0x175b,
+ 0x46e, 0x1766, 0x473, 0x1772, 0x478, 0x177e, 0x47c, 0x1789,
+ 0x481, 0x1795, 0x485, 0x17a1, 0x48a, 0x17ac, 0x48f, 0x17b8,
+ 0x493, 0x17c4, 0x498, 0x17cf, 0x49d, 0x17db, 0x4a1, 0x17e7,
+ 0x4a6, 0x17f2, 0x4ab, 0x17fe, 0x4b0, 0x180a, 0x4b4, 0x1815,
+ 0x4b9, 0x1821, 0x4be, 0x182d, 0x4c2, 0x1838, 0x4c7, 0x1844,
+ 0x4cc, 0x184f, 0x4d1, 0x185b, 0x4d6, 0x1867, 0x4da, 0x1872,
+ 0x4df, 0x187e, 0x4e4, 0x1889, 0x4e9, 0x1895, 0x4ee, 0x18a1,
+ 0x4f2, 0x18ac, 0x4f7, 0x18b8, 0x4fc, 0x18c3, 0x501, 0x18cf,
+ 0x506, 0x18db, 0x50b, 0x18e6, 0x510, 0x18f2, 0x515, 0x18fd,
+ 0x51a, 0x1909, 0x51e, 0x1914, 0x523, 0x1920, 0x528, 0x192c,
+ 0x52d, 0x1937, 0x532, 0x1943, 0x537, 0x194e, 0x53c, 0x195a,
+ 0x541, 0x1965, 0x546, 0x1971, 0x54b, 0x197c, 0x550, 0x1988,
+ 0x555, 0x1993, 0x55a, 0x199f, 0x55f, 0x19aa, 0x564, 0x19b6,
+ 0x569, 0x19c1, 0x56e, 0x19cd, 0x573, 0x19d8, 0x578, 0x19e4,
+ 0x57e, 0x19ef, 0x583, 0x19fb, 0x588, 0x1a06, 0x58d, 0x1a12,
+ 0x592, 0x1a1d, 0x597, 0x1a29, 0x59c, 0x1a34, 0x5a1, 0x1a40,
+ 0x5a7, 0x1a4b, 0x5ac, 0x1a57, 0x5b1, 0x1a62, 0x5b6, 0x1a6e,
+ 0x5bb, 0x1a79, 0x5c1, 0x1a84, 0x5c6, 0x1a90, 0x5cb, 0x1a9b,
+ 0x5d0, 0x1aa7, 0x5d5, 0x1ab2, 0x5db, 0x1abe, 0x5e0, 0x1ac9,
+ 0x5e5, 0x1ad4, 0x5ea, 0x1ae0, 0x5f0, 0x1aeb, 0x5f5, 0x1af7,
+ 0x5fa, 0x1b02, 0x600, 0x1b0d, 0x605, 0x1b19, 0x60a, 0x1b24,
+ 0x610, 0x1b30, 0x615, 0x1b3b, 0x61a, 0x1b46, 0x620, 0x1b52,
+ 0x625, 0x1b5d, 0x62a, 0x1b68, 0x630, 0x1b74, 0x635, 0x1b7f,
+ 0x63b, 0x1b8a, 0x640, 0x1b96, 0x645, 0x1ba1, 0x64b, 0x1bac,
+ 0x650, 0x1bb8, 0x656, 0x1bc3, 0x65b, 0x1bce, 0x661, 0x1bda,
+ 0x666, 0x1be5, 0x66c, 0x1bf0, 0x671, 0x1bfc, 0x677, 0x1c07,
+ 0x67c, 0x1c12, 0x682, 0x1c1e, 0x687, 0x1c29, 0x68d, 0x1c34,
+ 0x692, 0x1c3f, 0x698, 0x1c4b, 0x69d, 0x1c56, 0x6a3, 0x1c61,
+ 0x6a8, 0x1c6c, 0x6ae, 0x1c78, 0x6b4, 0x1c83, 0x6b9, 0x1c8e,
+ 0x6bf, 0x1c99, 0x6c5, 0x1ca5, 0x6ca, 0x1cb0, 0x6d0, 0x1cbb,
+ 0x6d5, 0x1cc6, 0x6db, 0x1cd2, 0x6e1, 0x1cdd, 0x6e6, 0x1ce8,
+ 0x6ec, 0x1cf3, 0x6f2, 0x1cff, 0x6f7, 0x1d0a, 0x6fd, 0x1d15,
+ 0x703, 0x1d20, 0x709, 0x1d2b, 0x70e, 0x1d36, 0x714, 0x1d42,
+ 0x71a, 0x1d4d, 0x720, 0x1d58, 0x725, 0x1d63, 0x72b, 0x1d6e,
+ 0x731, 0x1d79, 0x737, 0x1d85, 0x73d, 0x1d90, 0x742, 0x1d9b,
+ 0x748, 0x1da6, 0x74e, 0x1db1, 0x754, 0x1dbc, 0x75a, 0x1dc7,
+ 0x75f, 0x1dd3, 0x765, 0x1dde, 0x76b, 0x1de9, 0x771, 0x1df4,
+ 0x777, 0x1dff, 0x77d, 0x1e0a, 0x783, 0x1e15, 0x789, 0x1e20,
+ 0x78f, 0x1e2b, 0x795, 0x1e36, 0x79a, 0x1e42, 0x7a0, 0x1e4d,
+ 0x7a6, 0x1e58, 0x7ac, 0x1e63, 0x7b2, 0x1e6e, 0x7b8, 0x1e79,
+ 0x7be, 0x1e84, 0x7c4, 0x1e8f, 0x7ca, 0x1e9a, 0x7d0, 0x1ea5,
+ 0x7d6, 0x1eb0, 0x7dc, 0x1ebb, 0x7e2, 0x1ec6, 0x7e8, 0x1ed1,
+ 0x7ee, 0x1edc, 0x7f5, 0x1ee7, 0x7fb, 0x1ef2, 0x801, 0x1efd,
+ 0x807, 0x1f08, 0x80d, 0x1f13, 0x813, 0x1f1e, 0x819, 0x1f29,
+ 0x81f, 0x1f34, 0x825, 0x1f3f, 0x82b, 0x1f4a, 0x832, 0x1f55,
+ 0x838, 0x1f60, 0x83e, 0x1f6b, 0x844, 0x1f76, 0x84a, 0x1f81,
+ 0x850, 0x1f8c, 0x857, 0x1f97, 0x85d, 0x1fa2, 0x863, 0x1fac,
+ 0x869, 0x1fb7, 0x870, 0x1fc2, 0x876, 0x1fcd, 0x87c, 0x1fd8,
+ 0x882, 0x1fe3, 0x889, 0x1fee, 0x88f, 0x1ff9, 0x895, 0x2004,
+ 0x89b, 0x200f, 0x8a2, 0x2019, 0x8a8, 0x2024, 0x8ae, 0x202f,
+ 0x8b5, 0x203a, 0x8bb, 0x2045, 0x8c1, 0x2050, 0x8c8, 0x205b,
+ 0x8ce, 0x2065, 0x8d4, 0x2070, 0x8db, 0x207b, 0x8e1, 0x2086,
+ 0x8e8, 0x2091, 0x8ee, 0x209b, 0x8f4, 0x20a6, 0x8fb, 0x20b1,
+ 0x901, 0x20bc, 0x908, 0x20c7, 0x90e, 0x20d1, 0x915, 0x20dc,
+ 0x91b, 0x20e7, 0x921, 0x20f2, 0x928, 0x20fd, 0x92e, 0x2107,
+ 0x935, 0x2112, 0x93b, 0x211d, 0x942, 0x2128, 0x948, 0x2132,
+ 0x94f, 0x213d, 0x955, 0x2148, 0x95c, 0x2153, 0x963, 0x215d,
+ 0x969, 0x2168, 0x970, 0x2173, 0x976, 0x217d, 0x97d, 0x2188,
+ 0x983, 0x2193, 0x98a, 0x219e, 0x991, 0x21a8, 0x997, 0x21b3,
+ 0x99e, 0x21be, 0x9a4, 0x21c8, 0x9ab, 0x21d3, 0x9b2, 0x21de,
+ 0x9b8, 0x21e8, 0x9bf, 0x21f3, 0x9c6, 0x21fe, 0x9cc, 0x2208,
+ 0x9d3, 0x2213, 0x9da, 0x221e, 0x9e0, 0x2228, 0x9e7, 0x2233,
+ 0x9ee, 0x223d, 0x9f5, 0x2248, 0x9fb, 0x2253, 0xa02, 0x225d,
+ 0xa09, 0x2268, 0xa10, 0x2272, 0xa16, 0x227d, 0xa1d, 0x2288,
+ 0xa24, 0x2292, 0xa2b, 0x229d, 0xa32, 0x22a7, 0xa38, 0x22b2,
+ 0xa3f, 0x22bc, 0xa46, 0x22c7, 0xa4d, 0x22d2, 0xa54, 0x22dc,
+ 0xa5b, 0x22e7, 0xa61, 0x22f1, 0xa68, 0x22fc, 0xa6f, 0x2306,
+ 0xa76, 0x2311, 0xa7d, 0x231b, 0xa84, 0x2326, 0xa8b, 0x2330,
+ 0xa92, 0x233b, 0xa99, 0x2345, 0xa9f, 0x2350, 0xaa6, 0x235a,
+ 0xaad, 0x2365, 0xab4, 0x236f, 0xabb, 0x237a, 0xac2, 0x2384,
+ 0xac9, 0x238e, 0xad0, 0x2399, 0xad7, 0x23a3, 0xade, 0x23ae,
+ 0xae5, 0x23b8, 0xaec, 0x23c3, 0xaf3, 0x23cd, 0xafa, 0x23d7,
+ 0xb01, 0x23e2, 0xb08, 0x23ec, 0xb0f, 0x23f7, 0xb16, 0x2401,
+ 0xb1e, 0x240b, 0xb25, 0x2416, 0xb2c, 0x2420, 0xb33, 0x242b,
+ 0xb3a, 0x2435, 0xb41, 0x243f, 0xb48, 0x244a, 0xb4f, 0x2454,
+ 0xb56, 0x245e, 0xb5e, 0x2469, 0xb65, 0x2473, 0xb6c, 0x247d,
+ 0xb73, 0x2488, 0xb7a, 0x2492, 0xb81, 0x249c, 0xb89, 0x24a7,
+ 0xb90, 0x24b1, 0xb97, 0x24bb, 0xb9e, 0x24c5, 0xba5, 0x24d0,
+ 0xbad, 0x24da, 0xbb4, 0x24e4, 0xbbb, 0x24ef, 0xbc2, 0x24f9,
+ 0xbca, 0x2503, 0xbd1, 0x250d, 0xbd8, 0x2518, 0xbe0, 0x2522,
+ 0xbe7, 0x252c, 0xbee, 0x2536, 0xbf5, 0x2541, 0xbfd, 0x254b,
+ 0xc04, 0x2555, 0xc0b, 0x255f, 0xc13, 0x2569, 0xc1a, 0x2574,
+ 0xc21, 0x257e, 0xc29, 0x2588, 0xc30, 0x2592, 0xc38, 0x259c,
+ 0xc3f, 0x25a6, 0xc46, 0x25b1, 0xc4e, 0x25bb, 0xc55, 0x25c5,
+ 0xc5d, 0x25cf, 0xc64, 0x25d9, 0xc6b, 0x25e3, 0xc73, 0x25ed,
+ 0xc7a, 0x25f8, 0xc82, 0x2602, 0xc89, 0x260c, 0xc91, 0x2616,
+ 0xc98, 0x2620, 0xca0, 0x262a, 0xca7, 0x2634, 0xcaf, 0x263e,
+ 0xcb6, 0x2648, 0xcbe, 0x2652, 0xcc5, 0x265c, 0xccd, 0x2666,
+ 0xcd4, 0x2671, 0xcdc, 0x267b, 0xce3, 0x2685, 0xceb, 0x268f,
+ 0xcf3, 0x2699, 0xcfa, 0x26a3, 0xd02, 0x26ad, 0xd09, 0x26b7,
+ 0xd11, 0x26c1, 0xd19, 0x26cb, 0xd20, 0x26d5, 0xd28, 0x26df,
+ 0xd30, 0x26e9, 0xd37, 0x26f3, 0xd3f, 0x26fd, 0xd46, 0x2707,
+ 0xd4e, 0x2711, 0xd56, 0x271a, 0xd5d, 0x2724, 0xd65, 0x272e,
+ 0xd6d, 0x2738, 0xd75, 0x2742, 0xd7c, 0x274c, 0xd84, 0x2756,
+ 0xd8c, 0x2760, 0xd93, 0x276a, 0xd9b, 0x2774, 0xda3, 0x277e,
+ 0xdab, 0x2788, 0xdb2, 0x2791, 0xdba, 0x279b, 0xdc2, 0x27a5,
+ 0xdca, 0x27af, 0xdd2, 0x27b9, 0xdd9, 0x27c3, 0xde1, 0x27cd,
+ 0xde9, 0x27d6, 0xdf1, 0x27e0, 0xdf9, 0x27ea, 0xe01, 0x27f4,
+ 0xe08, 0x27fe, 0xe10, 0x2808, 0xe18, 0x2811, 0xe20, 0x281b,
+ 0xe28, 0x2825, 0xe30, 0x282f, 0xe38, 0x2838, 0xe40, 0x2842,
+ 0xe47, 0x284c, 0xe4f, 0x2856, 0xe57, 0x2860, 0xe5f, 0x2869,
+ 0xe67, 0x2873, 0xe6f, 0x287d, 0xe77, 0x2886, 0xe7f, 0x2890,
+ 0xe87, 0x289a, 0xe8f, 0x28a4, 0xe97, 0x28ad, 0xe9f, 0x28b7,
+ 0xea7, 0x28c1, 0xeaf, 0x28ca, 0xeb7, 0x28d4, 0xebf, 0x28de,
+ 0xec7, 0x28e7, 0xecf, 0x28f1, 0xed7, 0x28fb, 0xedf, 0x2904,
+ 0xee7, 0x290e, 0xeef, 0x2918, 0xef7, 0x2921, 0xeff, 0x292b,
+ 0xf07, 0x2935, 0xf10, 0x293e, 0xf18, 0x2948, 0xf20, 0x2951,
+ 0xf28, 0x295b, 0xf30, 0x2965, 0xf38, 0x296e, 0xf40, 0x2978,
+ 0xf48, 0x2981, 0xf51, 0x298b, 0xf59, 0x2994, 0xf61, 0x299e,
+ 0xf69, 0x29a7, 0xf71, 0x29b1, 0xf79, 0x29bb, 0xf82, 0x29c4,
+ 0xf8a, 0x29ce, 0xf92, 0x29d7, 0xf9a, 0x29e1, 0xfa3, 0x29ea,
+ 0xfab, 0x29f4, 0xfb3, 0x29fd, 0xfbb, 0x2a07, 0xfc4, 0x2a10,
+ 0xfcc, 0x2a1a, 0xfd4, 0x2a23, 0xfdc, 0x2a2c, 0xfe5, 0x2a36,
+ 0xfed, 0x2a3f, 0xff5, 0x2a49, 0xffe, 0x2a52, 0x1006, 0x2a5c,
+ 0x100e, 0x2a65, 0x1016, 0x2a6e, 0x101f, 0x2a78, 0x1027, 0x2a81,
+ 0x1030, 0x2a8b, 0x1038, 0x2a94, 0x1040, 0x2a9d, 0x1049, 0x2aa7,
+ 0x1051, 0x2ab0, 0x1059, 0x2ab9, 0x1062, 0x2ac3, 0x106a, 0x2acc,
+ 0x1073, 0x2ad6, 0x107b, 0x2adf, 0x1083, 0x2ae8, 0x108c, 0x2af2,
+ 0x1094, 0x2afb, 0x109d, 0x2b04, 0x10a5, 0x2b0d, 0x10ae, 0x2b17,
+ 0x10b6, 0x2b20, 0x10bf, 0x2b29, 0x10c7, 0x2b33, 0x10d0, 0x2b3c,
+ 0x10d8, 0x2b45, 0x10e0, 0x2b4e, 0x10e9, 0x2b58, 0x10f2, 0x2b61,
+ 0x10fa, 0x2b6a, 0x1103, 0x2b73, 0x110b, 0x2b7d, 0x1114, 0x2b86,
+ 0x111c, 0x2b8f, 0x1125, 0x2b98, 0x112d, 0x2ba1, 0x1136, 0x2bab,
+ 0x113e, 0x2bb4, 0x1147, 0x2bbd, 0x1150, 0x2bc6, 0x1158, 0x2bcf,
+ 0x1161, 0x2bd8, 0x1169, 0x2be2, 0x1172, 0x2beb, 0x117b, 0x2bf4,
+ 0x1183, 0x2bfd, 0x118c, 0x2c06, 0x1195, 0x2c0f, 0x119d, 0x2c18,
+ 0x11a6, 0x2c21, 0x11af, 0x2c2b, 0x11b7, 0x2c34, 0x11c0, 0x2c3d,
+ 0x11c9, 0x2c46, 0x11d1, 0x2c4f, 0x11da, 0x2c58, 0x11e3, 0x2c61,
+ 0x11eb, 0x2c6a, 0x11f4, 0x2c73, 0x11fd, 0x2c7c, 0x1206, 0x2c85,
+ 0x120e, 0x2c8e, 0x1217, 0x2c97, 0x1220, 0x2ca0, 0x1229, 0x2ca9,
+ 0x1231, 0x2cb2, 0x123a, 0x2cbb, 0x1243, 0x2cc4, 0x124c, 0x2ccd,
+ 0x1255, 0x2cd6, 0x125d, 0x2cdf, 0x1266, 0x2ce8, 0x126f, 0x2cf1,
+ 0x1278, 0x2cfa, 0x1281, 0x2d03, 0x128a, 0x2d0c, 0x1292, 0x2d15,
+ 0x129b, 0x2d1e, 0x12a4, 0x2d27, 0x12ad, 0x2d2f, 0x12b6, 0x2d38,
+ 0x12bf, 0x2d41, 0x12c8, 0x2d4a, 0x12d1, 0x2d53, 0x12d9, 0x2d5c,
+ 0x12e2, 0x2d65, 0x12eb, 0x2d6e, 0x12f4, 0x2d76, 0x12fd, 0x2d7f,
+ 0x1306, 0x2d88, 0x130f, 0x2d91, 0x1318, 0x2d9a, 0x1321, 0x2da3,
+ 0x132a, 0x2dab, 0x1333, 0x2db4, 0x133c, 0x2dbd, 0x1345, 0x2dc6,
+ 0x134e, 0x2dcf, 0x1357, 0x2dd7, 0x1360, 0x2de0, 0x1369, 0x2de9,
+ 0x1372, 0x2df2, 0x137b, 0x2dfa, 0x1384, 0x2e03, 0x138d, 0x2e0c,
+ 0x1396, 0x2e15, 0x139f, 0x2e1d, 0x13a8, 0x2e26, 0x13b1, 0x2e2f,
+ 0x13ba, 0x2e37, 0x13c3, 0x2e40, 0x13cc, 0x2e49, 0x13d5, 0x2e51,
+ 0x13df, 0x2e5a, 0x13e8, 0x2e63, 0x13f1, 0x2e6b, 0x13fa, 0x2e74,
+ 0x1403, 0x2e7d, 0x140c, 0x2e85, 0x1415, 0x2e8e, 0x141e, 0x2e97,
+ 0x1428, 0x2e9f, 0x1431, 0x2ea8, 0x143a, 0x2eb0, 0x1443, 0x2eb9,
+ 0x144c, 0x2ec2, 0x1455, 0x2eca, 0x145f, 0x2ed3, 0x1468, 0x2edb,
+ 0x1471, 0x2ee4, 0x147a, 0x2eec, 0x1483, 0x2ef5, 0x148d, 0x2efd,
+ 0x1496, 0x2f06, 0x149f, 0x2f0e, 0x14a8, 0x2f17, 0x14b2, 0x2f20,
+ 0x14bb, 0x2f28, 0x14c4, 0x2f30, 0x14cd, 0x2f39, 0x14d7, 0x2f41,
+ 0x14e0, 0x2f4a, 0x14e9, 0x2f52, 0x14f3, 0x2f5b, 0x14fc, 0x2f63,
+ 0x1505, 0x2f6c, 0x150e, 0x2f74, 0x1518, 0x2f7d, 0x1521, 0x2f85,
+ 0x152a, 0x2f8d, 0x1534, 0x2f96, 0x153d, 0x2f9e, 0x1547, 0x2fa7,
+ 0x1550, 0x2faf, 0x1559, 0x2fb7, 0x1563, 0x2fc0, 0x156c, 0x2fc8,
+ 0x1575, 0x2fd0, 0x157f, 0x2fd9, 0x1588, 0x2fe1, 0x1592, 0x2fea,
+ 0x159b, 0x2ff2, 0x15a4, 0x2ffa, 0x15ae, 0x3002, 0x15b7, 0x300b,
+ 0x15c1, 0x3013, 0x15ca, 0x301b, 0x15d4, 0x3024, 0x15dd, 0x302c,
+ 0x15e6, 0x3034, 0x15f0, 0x303c, 0x15f9, 0x3045, 0x1603, 0x304d,
+ 0x160c, 0x3055, 0x1616, 0x305d, 0x161f, 0x3066, 0x1629, 0x306e,
+ 0x1632, 0x3076, 0x163c, 0x307e, 0x1645, 0x3087, 0x164f, 0x308f,
+ 0x1659, 0x3097, 0x1662, 0x309f, 0x166c, 0x30a7, 0x1675, 0x30af,
+ 0x167f, 0x30b8, 0x1688, 0x30c0, 0x1692, 0x30c8, 0x169b, 0x30d0,
+ 0x16a5, 0x30d8, 0x16af, 0x30e0, 0x16b8, 0x30e8, 0x16c2, 0x30f0,
+ 0x16cb, 0x30f9, 0x16d5, 0x3101, 0x16df, 0x3109, 0x16e8, 0x3111,
+ 0x16f2, 0x3119, 0x16fc, 0x3121, 0x1705, 0x3129, 0x170f, 0x3131,
+ 0x1719, 0x3139, 0x1722, 0x3141, 0x172c, 0x3149, 0x1736, 0x3151,
+ 0x173f, 0x3159, 0x1749, 0x3161, 0x1753, 0x3169, 0x175c, 0x3171,
+ 0x1766, 0x3179, 0x1770, 0x3181, 0x177a, 0x3189, 0x1783, 0x3191,
+ 0x178d, 0x3199, 0x1797, 0x31a1, 0x17a0, 0x31a9, 0x17aa, 0x31b1,
+ 0x17b4, 0x31b9, 0x17be, 0x31c0, 0x17c8, 0x31c8, 0x17d1, 0x31d0,
+ 0x17db, 0x31d8, 0x17e5, 0x31e0, 0x17ef, 0x31e8, 0x17f8, 0x31f0,
+ 0x1802, 0x31f8, 0x180c, 0x31ff, 0x1816, 0x3207, 0x1820, 0x320f,
+ 0x182a, 0x3217, 0x1833, 0x321f, 0x183d, 0x3227, 0x1847, 0x322e,
+ 0x1851, 0x3236, 0x185b, 0x323e, 0x1865, 0x3246, 0x186f, 0x324e,
+ 0x1878, 0x3255, 0x1882, 0x325d, 0x188c, 0x3265, 0x1896, 0x326d,
+ 0x18a0, 0x3274, 0x18aa, 0x327c, 0x18b4, 0x3284, 0x18be, 0x328b,
+ 0x18c8, 0x3293, 0x18d2, 0x329b, 0x18dc, 0x32a3, 0x18e6, 0x32aa,
+ 0x18ef, 0x32b2, 0x18f9, 0x32ba, 0x1903, 0x32c1, 0x190d, 0x32c9,
+ 0x1917, 0x32d0, 0x1921, 0x32d8, 0x192b, 0x32e0, 0x1935, 0x32e7,
+ 0x193f, 0x32ef, 0x1949, 0x32f7, 0x1953, 0x32fe, 0x195d, 0x3306,
+ 0x1967, 0x330d, 0x1971, 0x3315, 0x197b, 0x331d, 0x1985, 0x3324,
+ 0x198f, 0x332c, 0x199a, 0x3333, 0x19a4, 0x333b, 0x19ae, 0x3342,
+ 0x19b8, 0x334a, 0x19c2, 0x3351, 0x19cc, 0x3359, 0x19d6, 0x3360,
+ 0x19e0, 0x3368, 0x19ea, 0x336f, 0x19f4, 0x3377, 0x19fe, 0x337e,
+ 0x1a08, 0x3386, 0x1a13, 0x338d, 0x1a1d, 0x3395, 0x1a27, 0x339c,
+ 0x1a31, 0x33a3, 0x1a3b, 0x33ab, 0x1a45, 0x33b2, 0x1a4f, 0x33ba,
+ 0x1a5a, 0x33c1, 0x1a64, 0x33c8, 0x1a6e, 0x33d0, 0x1a78, 0x33d7,
+ 0x1a82, 0x33df, 0x1a8c, 0x33e6, 0x1a97, 0x33ed, 0x1aa1, 0x33f5,
+ 0x1aab, 0x33fc, 0x1ab5, 0x3403, 0x1abf, 0x340b, 0x1aca, 0x3412,
+ 0x1ad4, 0x3419, 0x1ade, 0x3420, 0x1ae8, 0x3428, 0x1af3, 0x342f,
+ 0x1afd, 0x3436, 0x1b07, 0x343e, 0x1b11, 0x3445, 0x1b1c, 0x344c,
+ 0x1b26, 0x3453, 0x1b30, 0x345b, 0x1b3b, 0x3462, 0x1b45, 0x3469,
+ 0x1b4f, 0x3470, 0x1b59, 0x3477, 0x1b64, 0x347f, 0x1b6e, 0x3486,
+ 0x1b78, 0x348d, 0x1b83, 0x3494, 0x1b8d, 0x349b, 0x1b97, 0x34a2,
+ 0x1ba2, 0x34aa, 0x1bac, 0x34b1, 0x1bb6, 0x34b8, 0x1bc1, 0x34bf,
+ 0x1bcb, 0x34c6, 0x1bd5, 0x34cd, 0x1be0, 0x34d4, 0x1bea, 0x34db,
+ 0x1bf5, 0x34e2, 0x1bff, 0x34ea, 0x1c09, 0x34f1, 0x1c14, 0x34f8,
+ 0x1c1e, 0x34ff, 0x1c29, 0x3506, 0x1c33, 0x350d, 0x1c3d, 0x3514,
+ 0x1c48, 0x351b, 0x1c52, 0x3522, 0x1c5d, 0x3529, 0x1c67, 0x3530,
+ 0x1c72, 0x3537, 0x1c7c, 0x353e, 0x1c86, 0x3545, 0x1c91, 0x354c,
+ 0x1c9b, 0x3553, 0x1ca6, 0x355a, 0x1cb0, 0x3561, 0x1cbb, 0x3567,
+ 0x1cc5, 0x356e, 0x1cd0, 0x3575, 0x1cda, 0x357c, 0x1ce5, 0x3583,
+ 0x1cef, 0x358a, 0x1cfa, 0x3591, 0x1d04, 0x3598, 0x1d0f, 0x359f,
+ 0x1d19, 0x35a5, 0x1d24, 0x35ac, 0x1d2e, 0x35b3, 0x1d39, 0x35ba,
+ 0x1d44, 0x35c1, 0x1d4e, 0x35c8, 0x1d59, 0x35ce, 0x1d63, 0x35d5,
+ 0x1d6e, 0x35dc, 0x1d78, 0x35e3, 0x1d83, 0x35ea, 0x1d8e, 0x35f0,
+ 0x1d98, 0x35f7, 0x1da3, 0x35fe, 0x1dad, 0x3605, 0x1db8, 0x360b,
+ 0x1dc3, 0x3612, 0x1dcd, 0x3619, 0x1dd8, 0x3620, 0x1de2, 0x3626,
+ 0x1ded, 0x362d, 0x1df8, 0x3634, 0x1e02, 0x363a, 0x1e0d, 0x3641,
+ 0x1e18, 0x3648, 0x1e22, 0x364e, 0x1e2d, 0x3655, 0x1e38, 0x365c,
+ 0x1e42, 0x3662, 0x1e4d, 0x3669, 0x1e58, 0x366f, 0x1e62, 0x3676,
+ 0x1e6d, 0x367d, 0x1e78, 0x3683, 0x1e83, 0x368a, 0x1e8d, 0x3690,
+ 0x1e98, 0x3697, 0x1ea3, 0x369d, 0x1ead, 0x36a4, 0x1eb8, 0x36ab,
+ 0x1ec3, 0x36b1, 0x1ece, 0x36b8, 0x1ed8, 0x36be, 0x1ee3, 0x36c5,
+ 0x1eee, 0x36cb, 0x1ef9, 0x36d2, 0x1f03, 0x36d8, 0x1f0e, 0x36df,
+ 0x1f19, 0x36e5, 0x1f24, 0x36eb, 0x1f2f, 0x36f2, 0x1f39, 0x36f8,
+ 0x1f44, 0x36ff, 0x1f4f, 0x3705, 0x1f5a, 0x370c, 0x1f65, 0x3712,
+ 0x1f6f, 0x3718, 0x1f7a, 0x371f, 0x1f85, 0x3725, 0x1f90, 0x372c,
+ 0x1f9b, 0x3732, 0x1fa5, 0x3738, 0x1fb0, 0x373f, 0x1fbb, 0x3745,
+ 0x1fc6, 0x374b, 0x1fd1, 0x3752, 0x1fdc, 0x3758, 0x1fe7, 0x375e,
+ 0x1ff1, 0x3765, 0x1ffc, 0x376b, 0x2007, 0x3771, 0x2012, 0x3777,
+ 0x201d, 0x377e, 0x2028, 0x3784, 0x2033, 0x378a, 0x203e, 0x3790,
+ 0x2049, 0x3797, 0x2054, 0x379d, 0x205e, 0x37a3, 0x2069, 0x37a9,
+ 0x2074, 0x37b0, 0x207f, 0x37b6, 0x208a, 0x37bc, 0x2095, 0x37c2,
+ 0x20a0, 0x37c8, 0x20ab, 0x37ce, 0x20b6, 0x37d5, 0x20c1, 0x37db,
+ 0x20cc, 0x37e1, 0x20d7, 0x37e7, 0x20e2, 0x37ed, 0x20ed, 0x37f3,
+ 0x20f8, 0x37f9, 0x2103, 0x37ff, 0x210e, 0x3805, 0x2119, 0x380b,
+ 0x2124, 0x3812, 0x212f, 0x3818, 0x213a, 0x381e, 0x2145, 0x3824,
+ 0x2150, 0x382a, 0x215b, 0x3830, 0x2166, 0x3836, 0x2171, 0x383c,
+ 0x217c, 0x3842, 0x2187, 0x3848, 0x2192, 0x384e, 0x219d, 0x3854,
+ 0x21a8, 0x385a, 0x21b3, 0x3860, 0x21be, 0x3866, 0x21ca, 0x386b,
+ 0x21d5, 0x3871, 0x21e0, 0x3877, 0x21eb, 0x387d, 0x21f6, 0x3883,
+ 0x2201, 0x3889, 0x220c, 0x388f, 0x2217, 0x3895, 0x2222, 0x389b,
+ 0x222d, 0x38a1, 0x2239, 0x38a6, 0x2244, 0x38ac, 0x224f, 0x38b2,
+ 0x225a, 0x38b8, 0x2265, 0x38be, 0x2270, 0x38c3, 0x227b, 0x38c9,
+ 0x2287, 0x38cf, 0x2292, 0x38d5, 0x229d, 0x38db, 0x22a8, 0x38e0,
+ 0x22b3, 0x38e6, 0x22be, 0x38ec, 0x22ca, 0x38f2, 0x22d5, 0x38f7,
+ 0x22e0, 0x38fd, 0x22eb, 0x3903, 0x22f6, 0x3909, 0x2301, 0x390e,
+ 0x230d, 0x3914, 0x2318, 0x391a, 0x2323, 0x391f, 0x232e, 0x3925,
+ 0x233a, 0x392b, 0x2345, 0x3930, 0x2350, 0x3936, 0x235b, 0x393b,
+ 0x2367, 0x3941, 0x2372, 0x3947, 0x237d, 0x394c, 0x2388, 0x3952,
+ 0x2394, 0x3958, 0x239f, 0x395d, 0x23aa, 0x3963, 0x23b5, 0x3968,
+ 0x23c1, 0x396e, 0x23cc, 0x3973, 0x23d7, 0x3979, 0x23e2, 0x397e,
+ 0x23ee, 0x3984, 0x23f9, 0x3989, 0x2404, 0x398f, 0x2410, 0x3994,
+ 0x241b, 0x399a, 0x2426, 0x399f, 0x2432, 0x39a5, 0x243d, 0x39aa,
+ 0x2448, 0x39b0, 0x2454, 0x39b5, 0x245f, 0x39bb, 0x246a, 0x39c0,
+ 0x2476, 0x39c5, 0x2481, 0x39cb, 0x248c, 0x39d0, 0x2498, 0x39d6,
+ 0x24a3, 0x39db, 0x24ae, 0x39e0, 0x24ba, 0x39e6, 0x24c5, 0x39eb,
+ 0x24d0, 0x39f0, 0x24dc, 0x39f6, 0x24e7, 0x39fb, 0x24f3, 0x3a00,
+ 0x24fe, 0x3a06, 0x2509, 0x3a0b, 0x2515, 0x3a10, 0x2520, 0x3a16,
+ 0x252c, 0x3a1b, 0x2537, 0x3a20, 0x2542, 0x3a25, 0x254e, 0x3a2b,
+ 0x2559, 0x3a30, 0x2565, 0x3a35, 0x2570, 0x3a3a, 0x257c, 0x3a3f,
+ 0x2587, 0x3a45, 0x2592, 0x3a4a, 0x259e, 0x3a4f, 0x25a9, 0x3a54,
+ 0x25b5, 0x3a59, 0x25c0, 0x3a5f, 0x25cc, 0x3a64, 0x25d7, 0x3a69,
+ 0x25e3, 0x3a6e, 0x25ee, 0x3a73, 0x25fa, 0x3a78, 0x2605, 0x3a7d,
+ 0x2611, 0x3a82, 0x261c, 0x3a88, 0x2628, 0x3a8d, 0x2633, 0x3a92,
+ 0x263f, 0x3a97, 0x264a, 0x3a9c, 0x2656, 0x3aa1, 0x2661, 0x3aa6,
+ 0x266d, 0x3aab, 0x2678, 0x3ab0, 0x2684, 0x3ab5, 0x268f, 0x3aba,
+ 0x269b, 0x3abf, 0x26a6, 0x3ac4, 0x26b2, 0x3ac9, 0x26bd, 0x3ace,
+ 0x26c9, 0x3ad3, 0x26d4, 0x3ad8, 0x26e0, 0x3add, 0x26ec, 0x3ae2,
+ 0x26f7, 0x3ae6, 0x2703, 0x3aeb, 0x270e, 0x3af0, 0x271a, 0x3af5,
+ 0x2725, 0x3afa, 0x2731, 0x3aff, 0x273d, 0x3b04, 0x2748, 0x3b09,
+ 0x2754, 0x3b0e, 0x275f, 0x3b12, 0x276b, 0x3b17, 0x2777, 0x3b1c,
+ 0x2782, 0x3b21, 0x278e, 0x3b26, 0x2799, 0x3b2a, 0x27a5, 0x3b2f,
+ 0x27b1, 0x3b34, 0x27bc, 0x3b39, 0x27c8, 0x3b3e, 0x27d3, 0x3b42,
+ 0x27df, 0x3b47, 0x27eb, 0x3b4c, 0x27f6, 0x3b50, 0x2802, 0x3b55,
+ 0x280e, 0x3b5a, 0x2819, 0x3b5f, 0x2825, 0x3b63, 0x2831, 0x3b68,
+ 0x283c, 0x3b6d, 0x2848, 0x3b71, 0x2854, 0x3b76, 0x285f, 0x3b7b,
+ 0x286b, 0x3b7f, 0x2877, 0x3b84, 0x2882, 0x3b88, 0x288e, 0x3b8d,
+ 0x289a, 0x3b92, 0x28a5, 0x3b96, 0x28b1, 0x3b9b, 0x28bd, 0x3b9f,
+ 0x28c9, 0x3ba4, 0x28d4, 0x3ba9, 0x28e0, 0x3bad, 0x28ec, 0x3bb2,
+ 0x28f7, 0x3bb6, 0x2903, 0x3bbb, 0x290f, 0x3bbf, 0x291b, 0x3bc4,
+ 0x2926, 0x3bc8, 0x2932, 0x3bcd, 0x293e, 0x3bd1, 0x294a, 0x3bd6,
+ 0x2955, 0x3bda, 0x2961, 0x3bde, 0x296d, 0x3be3, 0x2979, 0x3be7,
+ 0x2984, 0x3bec, 0x2990, 0x3bf0, 0x299c, 0x3bf5, 0x29a8, 0x3bf9,
+ 0x29b4, 0x3bfd, 0x29bf, 0x3c02, 0x29cb, 0x3c06, 0x29d7, 0x3c0a,
+ 0x29e3, 0x3c0f, 0x29ee, 0x3c13, 0x29fa, 0x3c17, 0x2a06, 0x3c1c,
+ 0x2a12, 0x3c20, 0x2a1e, 0x3c24, 0x2a29, 0x3c29, 0x2a35, 0x3c2d,
+ 0x2a41, 0x3c31, 0x2a4d, 0x3c36, 0x2a59, 0x3c3a, 0x2a65, 0x3c3e,
+ 0x2a70, 0x3c42, 0x2a7c, 0x3c46, 0x2a88, 0x3c4b, 0x2a94, 0x3c4f,
+ 0x2aa0, 0x3c53, 0x2aac, 0x3c57, 0x2ab7, 0x3c5b, 0x2ac3, 0x3c60,
+ 0x2acf, 0x3c64, 0x2adb, 0x3c68, 0x2ae7, 0x3c6c, 0x2af3, 0x3c70,
+ 0x2aff, 0x3c74, 0x2b0a, 0x3c79, 0x2b16, 0x3c7d, 0x2b22, 0x3c81,
+ 0x2b2e, 0x3c85, 0x2b3a, 0x3c89, 0x2b46, 0x3c8d, 0x2b52, 0x3c91,
+ 0x2b5e, 0x3c95, 0x2b6a, 0x3c99, 0x2b75, 0x3c9d, 0x2b81, 0x3ca1,
+ 0x2b8d, 0x3ca5, 0x2b99, 0x3ca9, 0x2ba5, 0x3cad, 0x2bb1, 0x3cb1,
+ 0x2bbd, 0x3cb5, 0x2bc9, 0x3cb9, 0x2bd5, 0x3cbd, 0x2be1, 0x3cc1,
+ 0x2bed, 0x3cc5, 0x2bf9, 0x3cc9, 0x2c05, 0x3ccd, 0x2c10, 0x3cd1,
+ 0x2c1c, 0x3cd5, 0x2c28, 0x3cd9, 0x2c34, 0x3cdd, 0x2c40, 0x3ce0,
+ 0x2c4c, 0x3ce4, 0x2c58, 0x3ce8, 0x2c64, 0x3cec, 0x2c70, 0x3cf0,
+ 0x2c7c, 0x3cf4, 0x2c88, 0x3cf8, 0x2c94, 0x3cfb, 0x2ca0, 0x3cff,
+ 0x2cac, 0x3d03, 0x2cb8, 0x3d07, 0x2cc4, 0x3d0b, 0x2cd0, 0x3d0e,
+ 0x2cdc, 0x3d12, 0x2ce8, 0x3d16, 0x2cf4, 0x3d1a, 0x2d00, 0x3d1d,
+ 0x2d0c, 0x3d21, 0x2d18, 0x3d25, 0x2d24, 0x3d28, 0x2d30, 0x3d2c,
+ 0x2d3c, 0x3d30, 0x2d48, 0x3d34, 0x2d54, 0x3d37, 0x2d60, 0x3d3b,
+ 0x2d6c, 0x3d3f, 0x2d78, 0x3d42, 0x2d84, 0x3d46, 0x2d90, 0x3d49,
+ 0x2d9c, 0x3d4d, 0x2da8, 0x3d51, 0x2db4, 0x3d54, 0x2dc0, 0x3d58,
+ 0x2dcc, 0x3d5b, 0x2dd8, 0x3d5f, 0x2de4, 0x3d63, 0x2df0, 0x3d66,
+ 0x2dfc, 0x3d6a, 0x2e09, 0x3d6d, 0x2e15, 0x3d71, 0x2e21, 0x3d74,
+ 0x2e2d, 0x3d78, 0x2e39, 0x3d7b, 0x2e45, 0x3d7f, 0x2e51, 0x3d82,
+ 0x2e5d, 0x3d86, 0x2e69, 0x3d89, 0x2e75, 0x3d8d, 0x2e81, 0x3d90,
+ 0x2e8d, 0x3d93, 0x2e99, 0x3d97, 0x2ea6, 0x3d9a, 0x2eb2, 0x3d9e,
+ 0x2ebe, 0x3da1, 0x2eca, 0x3da4, 0x2ed6, 0x3da8, 0x2ee2, 0x3dab,
+ 0x2eee, 0x3daf, 0x2efa, 0x3db2, 0x2f06, 0x3db5, 0x2f13, 0x3db9,
+ 0x2f1f, 0x3dbc, 0x2f2b, 0x3dbf, 0x2f37, 0x3dc2, 0x2f43, 0x3dc6,
+ 0x2f4f, 0x3dc9, 0x2f5b, 0x3dcc, 0x2f67, 0x3dd0, 0x2f74, 0x3dd3,
+ 0x2f80, 0x3dd6, 0x2f8c, 0x3dd9, 0x2f98, 0x3ddd, 0x2fa4, 0x3de0,
+ 0x2fb0, 0x3de3, 0x2fbc, 0x3de6, 0x2fc9, 0x3de9, 0x2fd5, 0x3ded,
+ 0x2fe1, 0x3df0, 0x2fed, 0x3df3, 0x2ff9, 0x3df6, 0x3005, 0x3df9,
+ 0x3012, 0x3dfc, 0x301e, 0x3dff, 0x302a, 0x3e03, 0x3036, 0x3e06,
+ 0x3042, 0x3e09, 0x304e, 0x3e0c, 0x305b, 0x3e0f, 0x3067, 0x3e12,
+ 0x3073, 0x3e15, 0x307f, 0x3e18, 0x308b, 0x3e1b, 0x3098, 0x3e1e,
+ 0x30a4, 0x3e21, 0x30b0, 0x3e24, 0x30bc, 0x3e27, 0x30c8, 0x3e2a,
+ 0x30d5, 0x3e2d, 0x30e1, 0x3e30, 0x30ed, 0x3e33, 0x30f9, 0x3e36,
+ 0x3105, 0x3e39, 0x3112, 0x3e3c, 0x311e, 0x3e3f, 0x312a, 0x3e42,
+ 0x3136, 0x3e45, 0x3143, 0x3e48, 0x314f, 0x3e4a, 0x315b, 0x3e4d,
+ 0x3167, 0x3e50, 0x3174, 0x3e53, 0x3180, 0x3e56, 0x318c, 0x3e59,
+ 0x3198, 0x3e5c, 0x31a4, 0x3e5e, 0x31b1, 0x3e61, 0x31bd, 0x3e64,
+ 0x31c9, 0x3e67, 0x31d5, 0x3e6a, 0x31e2, 0x3e6c, 0x31ee, 0x3e6f,
+ 0x31fa, 0x3e72, 0x3207, 0x3e75, 0x3213, 0x3e77, 0x321f, 0x3e7a,
+ 0x322b, 0x3e7d, 0x3238, 0x3e80, 0x3244, 0x3e82, 0x3250, 0x3e85,
+ 0x325c, 0x3e88, 0x3269, 0x3e8a, 0x3275, 0x3e8d, 0x3281, 0x3e90,
+ 0x328e, 0x3e92, 0x329a, 0x3e95, 0x32a6, 0x3e98, 0x32b2, 0x3e9a,
+ 0x32bf, 0x3e9d, 0x32cb, 0x3e9f, 0x32d7, 0x3ea2, 0x32e4, 0x3ea5,
+ 0x32f0, 0x3ea7, 0x32fc, 0x3eaa, 0x3308, 0x3eac, 0x3315, 0x3eaf,
+ 0x3321, 0x3eb1, 0x332d, 0x3eb4, 0x333a, 0x3eb6, 0x3346, 0x3eb9,
+ 0x3352, 0x3ebb, 0x335f, 0x3ebe, 0x336b, 0x3ec0, 0x3377, 0x3ec3,
+ 0x3384, 0x3ec5, 0x3390, 0x3ec8, 0x339c, 0x3eca, 0x33a9, 0x3ecc,
+ 0x33b5, 0x3ecf, 0x33c1, 0x3ed1, 0x33ce, 0x3ed4, 0x33da, 0x3ed6,
+ 0x33e6, 0x3ed8, 0x33f3, 0x3edb, 0x33ff, 0x3edd, 0x340b, 0x3ee0,
+ 0x3418, 0x3ee2, 0x3424, 0x3ee4, 0x3430, 0x3ee7, 0x343d, 0x3ee9,
+ 0x3449, 0x3eeb, 0x3455, 0x3eed, 0x3462, 0x3ef0, 0x346e, 0x3ef2,
+ 0x347b, 0x3ef4, 0x3487, 0x3ef7, 0x3493, 0x3ef9, 0x34a0, 0x3efb,
+ 0x34ac, 0x3efd, 0x34b8, 0x3f00, 0x34c5, 0x3f02, 0x34d1, 0x3f04,
+ 0x34dd, 0x3f06, 0x34ea, 0x3f08, 0x34f6, 0x3f0a, 0x3503, 0x3f0d,
+ 0x350f, 0x3f0f, 0x351b, 0x3f11, 0x3528, 0x3f13, 0x3534, 0x3f15,
+ 0x3540, 0x3f17, 0x354d, 0x3f19, 0x3559, 0x3f1c, 0x3566, 0x3f1e,
+ 0x3572, 0x3f20, 0x357e, 0x3f22, 0x358b, 0x3f24, 0x3597, 0x3f26,
+ 0x35a4, 0x3f28, 0x35b0, 0x3f2a, 0x35bc, 0x3f2c, 0x35c9, 0x3f2e,
+ 0x35d5, 0x3f30, 0x35e2, 0x3f32, 0x35ee, 0x3f34, 0x35fa, 0x3f36,
+ 0x3607, 0x3f38, 0x3613, 0x3f3a, 0x3620, 0x3f3c, 0x362c, 0x3f3e,
+ 0x3639, 0x3f40, 0x3645, 0x3f42, 0x3651, 0x3f43, 0x365e, 0x3f45,
+ 0x366a, 0x3f47, 0x3677, 0x3f49, 0x3683, 0x3f4b, 0x3690, 0x3f4d,
+ 0x369c, 0x3f4f, 0x36a8, 0x3f51, 0x36b5, 0x3f52, 0x36c1, 0x3f54,
+ 0x36ce, 0x3f56, 0x36da, 0x3f58, 0x36e7, 0x3f5a, 0x36f3, 0x3f5b,
+ 0x36ff, 0x3f5d, 0x370c, 0x3f5f, 0x3718, 0x3f61, 0x3725, 0x3f62,
+ 0x3731, 0x3f64, 0x373e, 0x3f66, 0x374a, 0x3f68, 0x3757, 0x3f69,
+ 0x3763, 0x3f6b, 0x376f, 0x3f6d, 0x377c, 0x3f6e, 0x3788, 0x3f70,
+ 0x3795, 0x3f72, 0x37a1, 0x3f73, 0x37ae, 0x3f75, 0x37ba, 0x3f77,
+ 0x37c7, 0x3f78, 0x37d3, 0x3f7a, 0x37e0, 0x3f7b, 0x37ec, 0x3f7d,
+ 0x37f9, 0x3f7f, 0x3805, 0x3f80, 0x3811, 0x3f82, 0x381e, 0x3f83,
+ 0x382a, 0x3f85, 0x3837, 0x3f86, 0x3843, 0x3f88, 0x3850, 0x3f89,
+ 0x385c, 0x3f8b, 0x3869, 0x3f8c, 0x3875, 0x3f8e, 0x3882, 0x3f8f,
+ 0x388e, 0x3f91, 0x389b, 0x3f92, 0x38a7, 0x3f94, 0x38b4, 0x3f95,
+ 0x38c0, 0x3f97, 0x38cd, 0x3f98, 0x38d9, 0x3f99, 0x38e6, 0x3f9b,
+ 0x38f2, 0x3f9c, 0x38ff, 0x3f9e, 0x390b, 0x3f9f, 0x3918, 0x3fa0,
+ 0x3924, 0x3fa2, 0x3931, 0x3fa3, 0x393d, 0x3fa4, 0x394a, 0x3fa6,
+ 0x3956, 0x3fa7, 0x3963, 0x3fa8, 0x396f, 0x3faa, 0x397c, 0x3fab,
+ 0x3988, 0x3fac, 0x3995, 0x3fad, 0x39a1, 0x3faf, 0x39ae, 0x3fb0,
+ 0x39ba, 0x3fb1, 0x39c7, 0x3fb2, 0x39d3, 0x3fb4, 0x39e0, 0x3fb5,
+ 0x39ec, 0x3fb6, 0x39f9, 0x3fb7, 0x3a05, 0x3fb8, 0x3a12, 0x3fb9,
+ 0x3a1e, 0x3fbb, 0x3a2b, 0x3fbc, 0x3a37, 0x3fbd, 0x3a44, 0x3fbe,
+ 0x3a50, 0x3fbf, 0x3a5d, 0x3fc0, 0x3a69, 0x3fc1, 0x3a76, 0x3fc3,
+ 0x3a82, 0x3fc4, 0x3a8f, 0x3fc5, 0x3a9b, 0x3fc6, 0x3aa8, 0x3fc7,
+ 0x3ab4, 0x3fc8, 0x3ac1, 0x3fc9, 0x3acd, 0x3fca, 0x3ada, 0x3fcb,
+ 0x3ae6, 0x3fcc, 0x3af3, 0x3fcd, 0x3b00, 0x3fce, 0x3b0c, 0x3fcf,
+ 0x3b19, 0x3fd0, 0x3b25, 0x3fd1, 0x3b32, 0x3fd2, 0x3b3e, 0x3fd3,
+ 0x3b4b, 0x3fd4, 0x3b57, 0x3fd5, 0x3b64, 0x3fd5, 0x3b70, 0x3fd6,
+ 0x3b7d, 0x3fd7, 0x3b89, 0x3fd8, 0x3b96, 0x3fd9, 0x3ba2, 0x3fda,
+ 0x3baf, 0x3fdb, 0x3bbc, 0x3fdc, 0x3bc8, 0x3fdc, 0x3bd5, 0x3fdd,
+ 0x3be1, 0x3fde, 0x3bee, 0x3fdf, 0x3bfa, 0x3fe0, 0x3c07, 0x3fe0,
+ 0x3c13, 0x3fe1, 0x3c20, 0x3fe2, 0x3c2c, 0x3fe3, 0x3c39, 0x3fe3,
+ 0x3c45, 0x3fe4, 0x3c52, 0x3fe5, 0x3c5f, 0x3fe6, 0x3c6b, 0x3fe6,
+ 0x3c78, 0x3fe7, 0x3c84, 0x3fe8, 0x3c91, 0x3fe8, 0x3c9d, 0x3fe9,
+ 0x3caa, 0x3fea, 0x3cb6, 0x3fea, 0x3cc3, 0x3feb, 0x3cd0, 0x3fec,
+ 0x3cdc, 0x3fec, 0x3ce9, 0x3fed, 0x3cf5, 0x3fed, 0x3d02, 0x3fee,
+ 0x3d0e, 0x3fef, 0x3d1b, 0x3fef, 0x3d27, 0x3ff0, 0x3d34, 0x3ff0,
+ 0x3d40, 0x3ff1, 0x3d4d, 0x3ff1, 0x3d5a, 0x3ff2, 0x3d66, 0x3ff2,
+ 0x3d73, 0x3ff3, 0x3d7f, 0x3ff3, 0x3d8c, 0x3ff4, 0x3d98, 0x3ff4,
+ 0x3da5, 0x3ff5, 0x3db2, 0x3ff5, 0x3dbe, 0x3ff6, 0x3dcb, 0x3ff6,
+ 0x3dd7, 0x3ff7, 0x3de4, 0x3ff7, 0x3df0, 0x3ff7, 0x3dfd, 0x3ff8,
+ 0x3e09, 0x3ff8, 0x3e16, 0x3ff9, 0x3e23, 0x3ff9, 0x3e2f, 0x3ff9,
+ 0x3e3c, 0x3ffa, 0x3e48, 0x3ffa, 0x3e55, 0x3ffa, 0x3e61, 0x3ffb,
+ 0x3e6e, 0x3ffb, 0x3e7a, 0x3ffb, 0x3e87, 0x3ffc, 0x3e94, 0x3ffc,
+ 0x3ea0, 0x3ffc, 0x3ead, 0x3ffc, 0x3eb9, 0x3ffd, 0x3ec6, 0x3ffd,
+ 0x3ed2, 0x3ffd, 0x3edf, 0x3ffd, 0x3eec, 0x3ffe, 0x3ef8, 0x3ffe,
+ 0x3f05, 0x3ffe, 0x3f11, 0x3ffe, 0x3f1e, 0x3ffe, 0x3f2a, 0x3fff,
+ 0x3f37, 0x3fff, 0x3f44, 0x3fff, 0x3f50, 0x3fff, 0x3f5d, 0x3fff,
+ 0x3f69, 0x3fff, 0x3f76, 0x3fff, 0x3f82, 0x4000, 0x3f8f, 0x4000,
+ 0x3f9b, 0x4000, 0x3fa8, 0x4000, 0x3fb5, 0x4000, 0x3fc1, 0x4000,
+ 0x3fce, 0x4000, 0x3fda, 0x4000, 0x3fe7, 0x4000, 0x3ff3, 0x4000,
};
/**
@@ -1110,1038 +1110,1036 @@
* round(pBTable[i] * pow(2, 15))
*
*/
-
static const q15_t ALIGN4 realCoefBQ15[8192] = {
- 0x4000, 0x4000, 0x400d, 0x4000, 0x4019, 0x4000, 0x4026, 0x4000,
- 0x4032, 0x4000, 0x403f, 0x4000, 0x404b, 0x4000, 0x4058, 0x4000,
- 0x4065, 0x4000, 0x4071, 0x4000, 0x407e, 0x4000, 0x408a, 0x3fff,
- 0x4097, 0x3fff, 0x40a3, 0x3fff, 0x40b0, 0x3fff, 0x40bc, 0x3fff,
- 0x40c9, 0x3fff, 0x40d6, 0x3fff, 0x40e2, 0x3ffe, 0x40ef, 0x3ffe,
- 0x40fb, 0x3ffe, 0x4108, 0x3ffe, 0x4114, 0x3ffe, 0x4121, 0x3ffd,
- 0x412e, 0x3ffd, 0x413a, 0x3ffd, 0x4147, 0x3ffd, 0x4153, 0x3ffc,
- 0x4160, 0x3ffc, 0x416c, 0x3ffc, 0x4179, 0x3ffc, 0x4186, 0x3ffb,
- 0x4192, 0x3ffb, 0x419f, 0x3ffb, 0x41ab, 0x3ffa, 0x41b8, 0x3ffa,
- 0x41c4, 0x3ffa, 0x41d1, 0x3ff9, 0x41dd, 0x3ff9, 0x41ea, 0x3ff9,
- 0x41f7, 0x3ff8, 0x4203, 0x3ff8, 0x4210, 0x3ff7, 0x421c, 0x3ff7,
- 0x4229, 0x3ff7, 0x4235, 0x3ff6, 0x4242, 0x3ff6, 0x424e, 0x3ff5,
- 0x425b, 0x3ff5, 0x4268, 0x3ff4, 0x4274, 0x3ff4, 0x4281, 0x3ff3,
- 0x428d, 0x3ff3, 0x429a, 0x3ff2, 0x42a6, 0x3ff2, 0x42b3, 0x3ff1,
- 0x42c0, 0x3ff1, 0x42cc, 0x3ff0, 0x42d9, 0x3ff0, 0x42e5, 0x3fef,
- 0x42f2, 0x3fef, 0x42fe, 0x3fee, 0x430b, 0x3fed, 0x4317, 0x3fed,
- 0x4324, 0x3fec, 0x4330, 0x3fec, 0x433d, 0x3feb, 0x434a, 0x3fea,
- 0x4356, 0x3fea, 0x4363, 0x3fe9, 0x436f, 0x3fe8, 0x437c, 0x3fe8,
- 0x4388, 0x3fe7, 0x4395, 0x3fe6, 0x43a1, 0x3fe6, 0x43ae, 0x3fe5,
- 0x43bb, 0x3fe4, 0x43c7, 0x3fe3, 0x43d4, 0x3fe3, 0x43e0, 0x3fe2,
- 0x43ed, 0x3fe1, 0x43f9, 0x3fe0, 0x4406, 0x3fe0, 0x4412, 0x3fdf,
- 0x441f, 0x3fde, 0x442b, 0x3fdd, 0x4438, 0x3fdc, 0x4444, 0x3fdc,
- 0x4451, 0x3fdb, 0x445e, 0x3fda, 0x446a, 0x3fd9, 0x4477, 0x3fd8,
- 0x4483, 0x3fd7, 0x4490, 0x3fd6, 0x449c, 0x3fd5, 0x44a9, 0x3fd5,
- 0x44b5, 0x3fd4, 0x44c2, 0x3fd3, 0x44ce, 0x3fd2, 0x44db, 0x3fd1,
- 0x44e7, 0x3fd0, 0x44f4, 0x3fcf, 0x4500, 0x3fce, 0x450d, 0x3fcd,
- 0x451a, 0x3fcc, 0x4526, 0x3fcb, 0x4533, 0x3fca, 0x453f, 0x3fc9,
- 0x454c, 0x3fc8, 0x4558, 0x3fc7, 0x4565, 0x3fc6, 0x4571, 0x3fc5,
- 0x457e, 0x3fc4, 0x458a, 0x3fc3, 0x4597, 0x3fc1, 0x45a3, 0x3fc0,
- 0x45b0, 0x3fbf, 0x45bc, 0x3fbe, 0x45c9, 0x3fbd, 0x45d5, 0x3fbc,
- 0x45e2, 0x3fbb, 0x45ee, 0x3fb9, 0x45fb, 0x3fb8, 0x4607, 0x3fb7,
- 0x4614, 0x3fb6, 0x4620, 0x3fb5, 0x462d, 0x3fb4, 0x4639, 0x3fb2,
- 0x4646, 0x3fb1, 0x4652, 0x3fb0, 0x465f, 0x3faf, 0x466b, 0x3fad,
- 0x4678, 0x3fac, 0x4684, 0x3fab, 0x4691, 0x3faa, 0x469d, 0x3fa8,
- 0x46aa, 0x3fa7, 0x46b6, 0x3fa6, 0x46c3, 0x3fa4, 0x46cf, 0x3fa3,
- 0x46dc, 0x3fa2, 0x46e8, 0x3fa0, 0x46f5, 0x3f9f, 0x4701, 0x3f9e,
- 0x470e, 0x3f9c, 0x471a, 0x3f9b, 0x4727, 0x3f99, 0x4733, 0x3f98,
- 0x4740, 0x3f97, 0x474c, 0x3f95, 0x4759, 0x3f94, 0x4765, 0x3f92,
- 0x4772, 0x3f91, 0x477e, 0x3f8f, 0x478b, 0x3f8e, 0x4797, 0x3f8c,
- 0x47a4, 0x3f8b, 0x47b0, 0x3f89, 0x47bd, 0x3f88, 0x47c9, 0x3f86,
- 0x47d6, 0x3f85, 0x47e2, 0x3f83, 0x47ef, 0x3f82, 0x47fb, 0x3f80,
- 0x4807, 0x3f7f, 0x4814, 0x3f7d, 0x4820, 0x3f7b, 0x482d, 0x3f7a,
- 0x4839, 0x3f78, 0x4846, 0x3f77, 0x4852, 0x3f75, 0x485f, 0x3f73,
- 0x486b, 0x3f72, 0x4878, 0x3f70, 0x4884, 0x3f6e, 0x4891, 0x3f6d,
- 0x489d, 0x3f6b, 0x48a9, 0x3f69, 0x48b6, 0x3f68, 0x48c2, 0x3f66,
- 0x48cf, 0x3f64, 0x48db, 0x3f62, 0x48e8, 0x3f61, 0x48f4, 0x3f5f,
- 0x4901, 0x3f5d, 0x490d, 0x3f5b, 0x4919, 0x3f5a, 0x4926, 0x3f58,
- 0x4932, 0x3f56, 0x493f, 0x3f54, 0x494b, 0x3f52, 0x4958, 0x3f51,
- 0x4964, 0x3f4f, 0x4970, 0x3f4d, 0x497d, 0x3f4b, 0x4989, 0x3f49,
- 0x4996, 0x3f47, 0x49a2, 0x3f45, 0x49af, 0x3f43, 0x49bb, 0x3f42,
- 0x49c7, 0x3f40, 0x49d4, 0x3f3e, 0x49e0, 0x3f3c, 0x49ed, 0x3f3a,
- 0x49f9, 0x3f38, 0x4a06, 0x3f36, 0x4a12, 0x3f34, 0x4a1e, 0x3f32,
- 0x4a2b, 0x3f30, 0x4a37, 0x3f2e, 0x4a44, 0x3f2c, 0x4a50, 0x3f2a,
- 0x4a5c, 0x3f28, 0x4a69, 0x3f26, 0x4a75, 0x3f24, 0x4a82, 0x3f22,
- 0x4a8e, 0x3f20, 0x4a9a, 0x3f1e, 0x4aa7, 0x3f1c, 0x4ab3, 0x3f19,
- 0x4ac0, 0x3f17, 0x4acc, 0x3f15, 0x4ad8, 0x3f13, 0x4ae5, 0x3f11,
- 0x4af1, 0x3f0f, 0x4afd, 0x3f0d, 0x4b0a, 0x3f0a, 0x4b16, 0x3f08,
- 0x4b23, 0x3f06, 0x4b2f, 0x3f04, 0x4b3b, 0x3f02, 0x4b48, 0x3f00,
- 0x4b54, 0x3efd, 0x4b60, 0x3efb, 0x4b6d, 0x3ef9, 0x4b79, 0x3ef7,
- 0x4b85, 0x3ef4, 0x4b92, 0x3ef2, 0x4b9e, 0x3ef0, 0x4bab, 0x3eed,
- 0x4bb7, 0x3eeb, 0x4bc3, 0x3ee9, 0x4bd0, 0x3ee7, 0x4bdc, 0x3ee4,
- 0x4be8, 0x3ee2, 0x4bf5, 0x3ee0, 0x4c01, 0x3edd, 0x4c0d, 0x3edb,
- 0x4c1a, 0x3ed8, 0x4c26, 0x3ed6, 0x4c32, 0x3ed4, 0x4c3f, 0x3ed1,
- 0x4c4b, 0x3ecf, 0x4c57, 0x3ecc, 0x4c64, 0x3eca, 0x4c70, 0x3ec8,
- 0x4c7c, 0x3ec5, 0x4c89, 0x3ec3, 0x4c95, 0x3ec0, 0x4ca1, 0x3ebe,
- 0x4cae, 0x3ebb, 0x4cba, 0x3eb9, 0x4cc6, 0x3eb6, 0x4cd3, 0x3eb4,
- 0x4cdf, 0x3eb1, 0x4ceb, 0x3eaf, 0x4cf8, 0x3eac, 0x4d04, 0x3eaa,
- 0x4d10, 0x3ea7, 0x4d1c, 0x3ea5, 0x4d29, 0x3ea2, 0x4d35, 0x3e9f,
- 0x4d41, 0x3e9d, 0x4d4e, 0x3e9a, 0x4d5a, 0x3e98, 0x4d66, 0x3e95,
- 0x4d72, 0x3e92, 0x4d7f, 0x3e90, 0x4d8b, 0x3e8d, 0x4d97, 0x3e8a,
- 0x4da4, 0x3e88, 0x4db0, 0x3e85, 0x4dbc, 0x3e82, 0x4dc8, 0x3e80,
- 0x4dd5, 0x3e7d, 0x4de1, 0x3e7a, 0x4ded, 0x3e77, 0x4df9, 0x3e75,
- 0x4e06, 0x3e72, 0x4e12, 0x3e6f, 0x4e1e, 0x3e6c, 0x4e2b, 0x3e6a,
- 0x4e37, 0x3e67, 0x4e43, 0x3e64, 0x4e4f, 0x3e61, 0x4e5c, 0x3e5e,
- 0x4e68, 0x3e5c, 0x4e74, 0x3e59, 0x4e80, 0x3e56, 0x4e8c, 0x3e53,
- 0x4e99, 0x3e50, 0x4ea5, 0x3e4d, 0x4eb1, 0x3e4a, 0x4ebd, 0x3e48,
- 0x4eca, 0x3e45, 0x4ed6, 0x3e42, 0x4ee2, 0x3e3f, 0x4eee, 0x3e3c,
- 0x4efb, 0x3e39, 0x4f07, 0x3e36, 0x4f13, 0x3e33, 0x4f1f, 0x3e30,
- 0x4f2b, 0x3e2d, 0x4f38, 0x3e2a, 0x4f44, 0x3e27, 0x4f50, 0x3e24,
- 0x4f5c, 0x3e21, 0x4f68, 0x3e1e, 0x4f75, 0x3e1b, 0x4f81, 0x3e18,
- 0x4f8d, 0x3e15, 0x4f99, 0x3e12, 0x4fa5, 0x3e0f, 0x4fb2, 0x3e0c,
- 0x4fbe, 0x3e09, 0x4fca, 0x3e06, 0x4fd6, 0x3e03, 0x4fe2, 0x3dff,
- 0x4fee, 0x3dfc, 0x4ffb, 0x3df9, 0x5007, 0x3df6, 0x5013, 0x3df3,
- 0x501f, 0x3df0, 0x502b, 0x3ded, 0x5037, 0x3de9, 0x5044, 0x3de6,
- 0x5050, 0x3de3, 0x505c, 0x3de0, 0x5068, 0x3ddd, 0x5074, 0x3dd9,
- 0x5080, 0x3dd6, 0x508c, 0x3dd3, 0x5099, 0x3dd0, 0x50a5, 0x3dcc,
- 0x50b1, 0x3dc9, 0x50bd, 0x3dc6, 0x50c9, 0x3dc2, 0x50d5, 0x3dbf,
- 0x50e1, 0x3dbc, 0x50ed, 0x3db9, 0x50fa, 0x3db5, 0x5106, 0x3db2,
- 0x5112, 0x3daf, 0x511e, 0x3dab, 0x512a, 0x3da8, 0x5136, 0x3da4,
- 0x5142, 0x3da1, 0x514e, 0x3d9e, 0x515a, 0x3d9a, 0x5167, 0x3d97,
- 0x5173, 0x3d93, 0x517f, 0x3d90, 0x518b, 0x3d8d, 0x5197, 0x3d89,
- 0x51a3, 0x3d86, 0x51af, 0x3d82, 0x51bb, 0x3d7f, 0x51c7, 0x3d7b,
- 0x51d3, 0x3d78, 0x51df, 0x3d74, 0x51eb, 0x3d71, 0x51f7, 0x3d6d,
- 0x5204, 0x3d6a, 0x5210, 0x3d66, 0x521c, 0x3d63, 0x5228, 0x3d5f,
- 0x5234, 0x3d5b, 0x5240, 0x3d58, 0x524c, 0x3d54, 0x5258, 0x3d51,
- 0x5264, 0x3d4d, 0x5270, 0x3d49, 0x527c, 0x3d46, 0x5288, 0x3d42,
- 0x5294, 0x3d3f, 0x52a0, 0x3d3b, 0x52ac, 0x3d37, 0x52b8, 0x3d34,
- 0x52c4, 0x3d30, 0x52d0, 0x3d2c, 0x52dc, 0x3d28, 0x52e8, 0x3d25,
- 0x52f4, 0x3d21, 0x5300, 0x3d1d, 0x530c, 0x3d1a, 0x5318, 0x3d16,
- 0x5324, 0x3d12, 0x5330, 0x3d0e, 0x533c, 0x3d0b, 0x5348, 0x3d07,
- 0x5354, 0x3d03, 0x5360, 0x3cff, 0x536c, 0x3cfb, 0x5378, 0x3cf8,
- 0x5384, 0x3cf4, 0x5390, 0x3cf0, 0x539c, 0x3cec, 0x53a8, 0x3ce8,
- 0x53b4, 0x3ce4, 0x53c0, 0x3ce0, 0x53cc, 0x3cdd, 0x53d8, 0x3cd9,
- 0x53e4, 0x3cd5, 0x53f0, 0x3cd1, 0x53fb, 0x3ccd, 0x5407, 0x3cc9,
- 0x5413, 0x3cc5, 0x541f, 0x3cc1, 0x542b, 0x3cbd, 0x5437, 0x3cb9,
- 0x5443, 0x3cb5, 0x544f, 0x3cb1, 0x545b, 0x3cad, 0x5467, 0x3ca9,
- 0x5473, 0x3ca5, 0x547f, 0x3ca1, 0x548b, 0x3c9d, 0x5496, 0x3c99,
- 0x54a2, 0x3c95, 0x54ae, 0x3c91, 0x54ba, 0x3c8d, 0x54c6, 0x3c89,
- 0x54d2, 0x3c85, 0x54de, 0x3c81, 0x54ea, 0x3c7d, 0x54f6, 0x3c79,
- 0x5501, 0x3c74, 0x550d, 0x3c70, 0x5519, 0x3c6c, 0x5525, 0x3c68,
- 0x5531, 0x3c64, 0x553d, 0x3c60, 0x5549, 0x3c5b, 0x5554, 0x3c57,
- 0x5560, 0x3c53, 0x556c, 0x3c4f, 0x5578, 0x3c4b, 0x5584, 0x3c46,
- 0x5590, 0x3c42, 0x559b, 0x3c3e, 0x55a7, 0x3c3a, 0x55b3, 0x3c36,
- 0x55bf, 0x3c31, 0x55cb, 0x3c2d, 0x55d7, 0x3c29, 0x55e2, 0x3c24,
- 0x55ee, 0x3c20, 0x55fa, 0x3c1c, 0x5606, 0x3c17, 0x5612, 0x3c13,
- 0x561d, 0x3c0f, 0x5629, 0x3c0a, 0x5635, 0x3c06, 0x5641, 0x3c02,
- 0x564c, 0x3bfd, 0x5658, 0x3bf9, 0x5664, 0x3bf5, 0x5670, 0x3bf0,
- 0x567c, 0x3bec, 0x5687, 0x3be7, 0x5693, 0x3be3, 0x569f, 0x3bde,
- 0x56ab, 0x3bda, 0x56b6, 0x3bd6, 0x56c2, 0x3bd1, 0x56ce, 0x3bcd,
- 0x56da, 0x3bc8, 0x56e5, 0x3bc4, 0x56f1, 0x3bbf, 0x56fd, 0x3bbb,
- 0x5709, 0x3bb6, 0x5714, 0x3bb2, 0x5720, 0x3bad, 0x572c, 0x3ba9,
- 0x5737, 0x3ba4, 0x5743, 0x3b9f, 0x574f, 0x3b9b, 0x575b, 0x3b96,
- 0x5766, 0x3b92, 0x5772, 0x3b8d, 0x577e, 0x3b88, 0x5789, 0x3b84,
- 0x5795, 0x3b7f, 0x57a1, 0x3b7b, 0x57ac, 0x3b76, 0x57b8, 0x3b71,
- 0x57c4, 0x3b6d, 0x57cf, 0x3b68, 0x57db, 0x3b63, 0x57e7, 0x3b5f,
- 0x57f2, 0x3b5a, 0x57fe, 0x3b55, 0x580a, 0x3b50, 0x5815, 0x3b4c,
- 0x5821, 0x3b47, 0x582d, 0x3b42, 0x5838, 0x3b3e, 0x5844, 0x3b39,
- 0x584f, 0x3b34, 0x585b, 0x3b2f, 0x5867, 0x3b2a, 0x5872, 0x3b26,
- 0x587e, 0x3b21, 0x5889, 0x3b1c, 0x5895, 0x3b17, 0x58a1, 0x3b12,
- 0x58ac, 0x3b0e, 0x58b8, 0x3b09, 0x58c3, 0x3b04, 0x58cf, 0x3aff,
- 0x58db, 0x3afa, 0x58e6, 0x3af5, 0x58f2, 0x3af0, 0x58fd, 0x3aeb,
- 0x5909, 0x3ae6, 0x5914, 0x3ae2, 0x5920, 0x3add, 0x592c, 0x3ad8,
- 0x5937, 0x3ad3, 0x5943, 0x3ace, 0x594e, 0x3ac9, 0x595a, 0x3ac4,
- 0x5965, 0x3abf, 0x5971, 0x3aba, 0x597c, 0x3ab5, 0x5988, 0x3ab0,
- 0x5993, 0x3aab, 0x599f, 0x3aa6, 0x59aa, 0x3aa1, 0x59b6, 0x3a9c,
- 0x59c1, 0x3a97, 0x59cd, 0x3a92, 0x59d8, 0x3a8d, 0x59e4, 0x3a88,
- 0x59ef, 0x3a82, 0x59fb, 0x3a7d, 0x5a06, 0x3a78, 0x5a12, 0x3a73,
- 0x5a1d, 0x3a6e, 0x5a29, 0x3a69, 0x5a34, 0x3a64, 0x5a40, 0x3a5f,
- 0x5a4b, 0x3a59, 0x5a57, 0x3a54, 0x5a62, 0x3a4f, 0x5a6e, 0x3a4a,
- 0x5a79, 0x3a45, 0x5a84, 0x3a3f, 0x5a90, 0x3a3a, 0x5a9b, 0x3a35,
- 0x5aa7, 0x3a30, 0x5ab2, 0x3a2b, 0x5abe, 0x3a25, 0x5ac9, 0x3a20,
- 0x5ad4, 0x3a1b, 0x5ae0, 0x3a16, 0x5aeb, 0x3a10, 0x5af7, 0x3a0b,
- 0x5b02, 0x3a06, 0x5b0d, 0x3a00, 0x5b19, 0x39fb, 0x5b24, 0x39f6,
- 0x5b30, 0x39f0, 0x5b3b, 0x39eb, 0x5b46, 0x39e6, 0x5b52, 0x39e0,
- 0x5b5d, 0x39db, 0x5b68, 0x39d6, 0x5b74, 0x39d0, 0x5b7f, 0x39cb,
- 0x5b8a, 0x39c5, 0x5b96, 0x39c0, 0x5ba1, 0x39bb, 0x5bac, 0x39b5,
- 0x5bb8, 0x39b0, 0x5bc3, 0x39aa, 0x5bce, 0x39a5, 0x5bda, 0x399f,
- 0x5be5, 0x399a, 0x5bf0, 0x3994, 0x5bfc, 0x398f, 0x5c07, 0x3989,
- 0x5c12, 0x3984, 0x5c1e, 0x397e, 0x5c29, 0x3979, 0x5c34, 0x3973,
- 0x5c3f, 0x396e, 0x5c4b, 0x3968, 0x5c56, 0x3963, 0x5c61, 0x395d,
- 0x5c6c, 0x3958, 0x5c78, 0x3952, 0x5c83, 0x394c, 0x5c8e, 0x3947,
- 0x5c99, 0x3941, 0x5ca5, 0x393b, 0x5cb0, 0x3936, 0x5cbb, 0x3930,
- 0x5cc6, 0x392b, 0x5cd2, 0x3925, 0x5cdd, 0x391f, 0x5ce8, 0x391a,
- 0x5cf3, 0x3914, 0x5cff, 0x390e, 0x5d0a, 0x3909, 0x5d15, 0x3903,
- 0x5d20, 0x38fd, 0x5d2b, 0x38f7, 0x5d36, 0x38f2, 0x5d42, 0x38ec,
- 0x5d4d, 0x38e6, 0x5d58, 0x38e0, 0x5d63, 0x38db, 0x5d6e, 0x38d5,
- 0x5d79, 0x38cf, 0x5d85, 0x38c9, 0x5d90, 0x38c3, 0x5d9b, 0x38be,
- 0x5da6, 0x38b8, 0x5db1, 0x38b2, 0x5dbc, 0x38ac, 0x5dc7, 0x38a6,
- 0x5dd3, 0x38a1, 0x5dde, 0x389b, 0x5de9, 0x3895, 0x5df4, 0x388f,
- 0x5dff, 0x3889, 0x5e0a, 0x3883, 0x5e15, 0x387d, 0x5e20, 0x3877,
- 0x5e2b, 0x3871, 0x5e36, 0x386b, 0x5e42, 0x3866, 0x5e4d, 0x3860,
- 0x5e58, 0x385a, 0x5e63, 0x3854, 0x5e6e, 0x384e, 0x5e79, 0x3848,
- 0x5e84, 0x3842, 0x5e8f, 0x383c, 0x5e9a, 0x3836, 0x5ea5, 0x3830,
- 0x5eb0, 0x382a, 0x5ebb, 0x3824, 0x5ec6, 0x381e, 0x5ed1, 0x3818,
- 0x5edc, 0x3812, 0x5ee7, 0x380b, 0x5ef2, 0x3805, 0x5efd, 0x37ff,
- 0x5f08, 0x37f9, 0x5f13, 0x37f3, 0x5f1e, 0x37ed, 0x5f29, 0x37e7,
- 0x5f34, 0x37e1, 0x5f3f, 0x37db, 0x5f4a, 0x37d5, 0x5f55, 0x37ce,
- 0x5f60, 0x37c8, 0x5f6b, 0x37c2, 0x5f76, 0x37bc, 0x5f81, 0x37b6,
- 0x5f8c, 0x37b0, 0x5f97, 0x37a9, 0x5fa2, 0x37a3, 0x5fac, 0x379d,
- 0x5fb7, 0x3797, 0x5fc2, 0x3790, 0x5fcd, 0x378a, 0x5fd8, 0x3784,
- 0x5fe3, 0x377e, 0x5fee, 0x3777, 0x5ff9, 0x3771, 0x6004, 0x376b,
- 0x600f, 0x3765, 0x6019, 0x375e, 0x6024, 0x3758, 0x602f, 0x3752,
- 0x603a, 0x374b, 0x6045, 0x3745, 0x6050, 0x373f, 0x605b, 0x3738,
- 0x6065, 0x3732, 0x6070, 0x372c, 0x607b, 0x3725, 0x6086, 0x371f,
- 0x6091, 0x3718, 0x609b, 0x3712, 0x60a6, 0x370c, 0x60b1, 0x3705,
- 0x60bc, 0x36ff, 0x60c7, 0x36f8, 0x60d1, 0x36f2, 0x60dc, 0x36eb,
- 0x60e7, 0x36e5, 0x60f2, 0x36df, 0x60fd, 0x36d8, 0x6107, 0x36d2,
- 0x6112, 0x36cb, 0x611d, 0x36c5, 0x6128, 0x36be, 0x6132, 0x36b8,
- 0x613d, 0x36b1, 0x6148, 0x36ab, 0x6153, 0x36a4, 0x615d, 0x369d,
- 0x6168, 0x3697, 0x6173, 0x3690, 0x617d, 0x368a, 0x6188, 0x3683,
- 0x6193, 0x367d, 0x619e, 0x3676, 0x61a8, 0x366f, 0x61b3, 0x3669,
- 0x61be, 0x3662, 0x61c8, 0x365c, 0x61d3, 0x3655, 0x61de, 0x364e,
- 0x61e8, 0x3648, 0x61f3, 0x3641, 0x61fe, 0x363a, 0x6208, 0x3634,
- 0x6213, 0x362d, 0x621e, 0x3626, 0x6228, 0x3620, 0x6233, 0x3619,
- 0x623d, 0x3612, 0x6248, 0x360b, 0x6253, 0x3605, 0x625d, 0x35fe,
- 0x6268, 0x35f7, 0x6272, 0x35f0, 0x627d, 0x35ea, 0x6288, 0x35e3,
- 0x6292, 0x35dc, 0x629d, 0x35d5, 0x62a7, 0x35ce, 0x62b2, 0x35c8,
- 0x62bc, 0x35c1, 0x62c7, 0x35ba, 0x62d2, 0x35b3, 0x62dc, 0x35ac,
- 0x62e7, 0x35a5, 0x62f1, 0x359f, 0x62fc, 0x3598, 0x6306, 0x3591,
- 0x6311, 0x358a, 0x631b, 0x3583, 0x6326, 0x357c, 0x6330, 0x3575,
- 0x633b, 0x356e, 0x6345, 0x3567, 0x6350, 0x3561, 0x635a, 0x355a,
- 0x6365, 0x3553, 0x636f, 0x354c, 0x637a, 0x3545, 0x6384, 0x353e,
- 0x638e, 0x3537, 0x6399, 0x3530, 0x63a3, 0x3529, 0x63ae, 0x3522,
- 0x63b8, 0x351b, 0x63c3, 0x3514, 0x63cd, 0x350d, 0x63d7, 0x3506,
- 0x63e2, 0x34ff, 0x63ec, 0x34f8, 0x63f7, 0x34f1, 0x6401, 0x34ea,
- 0x640b, 0x34e2, 0x6416, 0x34db, 0x6420, 0x34d4, 0x642b, 0x34cd,
- 0x6435, 0x34c6, 0x643f, 0x34bf, 0x644a, 0x34b8, 0x6454, 0x34b1,
- 0x645e, 0x34aa, 0x6469, 0x34a2, 0x6473, 0x349b, 0x647d, 0x3494,
- 0x6488, 0x348d, 0x6492, 0x3486, 0x649c, 0x347f, 0x64a7, 0x3477,
- 0x64b1, 0x3470, 0x64bb, 0x3469, 0x64c5, 0x3462, 0x64d0, 0x345b,
- 0x64da, 0x3453, 0x64e4, 0x344c, 0x64ef, 0x3445, 0x64f9, 0x343e,
- 0x6503, 0x3436, 0x650d, 0x342f, 0x6518, 0x3428, 0x6522, 0x3420,
- 0x652c, 0x3419, 0x6536, 0x3412, 0x6541, 0x340b, 0x654b, 0x3403,
- 0x6555, 0x33fc, 0x655f, 0x33f5, 0x6569, 0x33ed, 0x6574, 0x33e6,
- 0x657e, 0x33df, 0x6588, 0x33d7, 0x6592, 0x33d0, 0x659c, 0x33c8,
- 0x65a6, 0x33c1, 0x65b1, 0x33ba, 0x65bb, 0x33b2, 0x65c5, 0x33ab,
- 0x65cf, 0x33a3, 0x65d9, 0x339c, 0x65e3, 0x3395, 0x65ed, 0x338d,
- 0x65f8, 0x3386, 0x6602, 0x337e, 0x660c, 0x3377, 0x6616, 0x336f,
- 0x6620, 0x3368, 0x662a, 0x3360, 0x6634, 0x3359, 0x663e, 0x3351,
- 0x6648, 0x334a, 0x6652, 0x3342, 0x665c, 0x333b, 0x6666, 0x3333,
- 0x6671, 0x332c, 0x667b, 0x3324, 0x6685, 0x331d, 0x668f, 0x3315,
- 0x6699, 0x330d, 0x66a3, 0x3306, 0x66ad, 0x32fe, 0x66b7, 0x32f7,
- 0x66c1, 0x32ef, 0x66cb, 0x32e7, 0x66d5, 0x32e0, 0x66df, 0x32d8,
- 0x66e9, 0x32d0, 0x66f3, 0x32c9, 0x66fd, 0x32c1, 0x6707, 0x32ba,
- 0x6711, 0x32b2, 0x671a, 0x32aa, 0x6724, 0x32a3, 0x672e, 0x329b,
- 0x6738, 0x3293, 0x6742, 0x328b, 0x674c, 0x3284, 0x6756, 0x327c,
- 0x6760, 0x3274, 0x676a, 0x326d, 0x6774, 0x3265, 0x677e, 0x325d,
- 0x6788, 0x3255, 0x6791, 0x324e, 0x679b, 0x3246, 0x67a5, 0x323e,
- 0x67af, 0x3236, 0x67b9, 0x322e, 0x67c3, 0x3227, 0x67cd, 0x321f,
- 0x67d6, 0x3217, 0x67e0, 0x320f, 0x67ea, 0x3207, 0x67f4, 0x31ff,
- 0x67fe, 0x31f8, 0x6808, 0x31f0, 0x6811, 0x31e8, 0x681b, 0x31e0,
- 0x6825, 0x31d8, 0x682f, 0x31d0, 0x6838, 0x31c8, 0x6842, 0x31c0,
- 0x684c, 0x31b9, 0x6856, 0x31b1, 0x6860, 0x31a9, 0x6869, 0x31a1,
- 0x6873, 0x3199, 0x687d, 0x3191, 0x6886, 0x3189, 0x6890, 0x3181,
- 0x689a, 0x3179, 0x68a4, 0x3171, 0x68ad, 0x3169, 0x68b7, 0x3161,
- 0x68c1, 0x3159, 0x68ca, 0x3151, 0x68d4, 0x3149, 0x68de, 0x3141,
- 0x68e7, 0x3139, 0x68f1, 0x3131, 0x68fb, 0x3129, 0x6904, 0x3121,
- 0x690e, 0x3119, 0x6918, 0x3111, 0x6921, 0x3109, 0x692b, 0x3101,
- 0x6935, 0x30f9, 0x693e, 0x30f0, 0x6948, 0x30e8, 0x6951, 0x30e0,
- 0x695b, 0x30d8, 0x6965, 0x30d0, 0x696e, 0x30c8, 0x6978, 0x30c0,
- 0x6981, 0x30b8, 0x698b, 0x30af, 0x6994, 0x30a7, 0x699e, 0x309f,
- 0x69a7, 0x3097, 0x69b1, 0x308f, 0x69bb, 0x3087, 0x69c4, 0x307e,
- 0x69ce, 0x3076, 0x69d7, 0x306e, 0x69e1, 0x3066, 0x69ea, 0x305d,
- 0x69f4, 0x3055, 0x69fd, 0x304d, 0x6a07, 0x3045, 0x6a10, 0x303c,
- 0x6a1a, 0x3034, 0x6a23, 0x302c, 0x6a2c, 0x3024, 0x6a36, 0x301b,
- 0x6a3f, 0x3013, 0x6a49, 0x300b, 0x6a52, 0x3002, 0x6a5c, 0x2ffa,
- 0x6a65, 0x2ff2, 0x6a6e, 0x2fea, 0x6a78, 0x2fe1, 0x6a81, 0x2fd9,
- 0x6a8b, 0x2fd0, 0x6a94, 0x2fc8, 0x6a9d, 0x2fc0, 0x6aa7, 0x2fb7,
- 0x6ab0, 0x2faf, 0x6ab9, 0x2fa7, 0x6ac3, 0x2f9e, 0x6acc, 0x2f96,
- 0x6ad6, 0x2f8d, 0x6adf, 0x2f85, 0x6ae8, 0x2f7d, 0x6af2, 0x2f74,
- 0x6afb, 0x2f6c, 0x6b04, 0x2f63, 0x6b0d, 0x2f5b, 0x6b17, 0x2f52,
- 0x6b20, 0x2f4a, 0x6b29, 0x2f41, 0x6b33, 0x2f39, 0x6b3c, 0x2f30,
- 0x6b45, 0x2f28, 0x6b4e, 0x2f20, 0x6b58, 0x2f17, 0x6b61, 0x2f0e,
- 0x6b6a, 0x2f06, 0x6b73, 0x2efd, 0x6b7d, 0x2ef5, 0x6b86, 0x2eec,
- 0x6b8f, 0x2ee4, 0x6b98, 0x2edb, 0x6ba1, 0x2ed3, 0x6bab, 0x2eca,
- 0x6bb4, 0x2ec2, 0x6bbd, 0x2eb9, 0x6bc6, 0x2eb0, 0x6bcf, 0x2ea8,
- 0x6bd8, 0x2e9f, 0x6be2, 0x2e97, 0x6beb, 0x2e8e, 0x6bf4, 0x2e85,
- 0x6bfd, 0x2e7d, 0x6c06, 0x2e74, 0x6c0f, 0x2e6b, 0x6c18, 0x2e63,
- 0x6c21, 0x2e5a, 0x6c2b, 0x2e51, 0x6c34, 0x2e49, 0x6c3d, 0x2e40,
- 0x6c46, 0x2e37, 0x6c4f, 0x2e2f, 0x6c58, 0x2e26, 0x6c61, 0x2e1d,
- 0x6c6a, 0x2e15, 0x6c73, 0x2e0c, 0x6c7c, 0x2e03, 0x6c85, 0x2dfa,
- 0x6c8e, 0x2df2, 0x6c97, 0x2de9, 0x6ca0, 0x2de0, 0x6ca9, 0x2dd7,
- 0x6cb2, 0x2dcf, 0x6cbb, 0x2dc6, 0x6cc4, 0x2dbd, 0x6ccd, 0x2db4,
- 0x6cd6, 0x2dab, 0x6cdf, 0x2da3, 0x6ce8, 0x2d9a, 0x6cf1, 0x2d91,
- 0x6cfa, 0x2d88, 0x6d03, 0x2d7f, 0x6d0c, 0x2d76, 0x6d15, 0x2d6e,
- 0x6d1e, 0x2d65, 0x6d27, 0x2d5c, 0x6d2f, 0x2d53, 0x6d38, 0x2d4a,
- 0x6d41, 0x2d41, 0x6d4a, 0x2d38, 0x6d53, 0x2d2f, 0x6d5c, 0x2d27,
- 0x6d65, 0x2d1e, 0x6d6e, 0x2d15, 0x6d76, 0x2d0c, 0x6d7f, 0x2d03,
- 0x6d88, 0x2cfa, 0x6d91, 0x2cf1, 0x6d9a, 0x2ce8, 0x6da3, 0x2cdf,
- 0x6dab, 0x2cd6, 0x6db4, 0x2ccd, 0x6dbd, 0x2cc4, 0x6dc6, 0x2cbb,
- 0x6dcf, 0x2cb2, 0x6dd7, 0x2ca9, 0x6de0, 0x2ca0, 0x6de9, 0x2c97,
- 0x6df2, 0x2c8e, 0x6dfa, 0x2c85, 0x6e03, 0x2c7c, 0x6e0c, 0x2c73,
- 0x6e15, 0x2c6a, 0x6e1d, 0x2c61, 0x6e26, 0x2c58, 0x6e2f, 0x2c4f,
- 0x6e37, 0x2c46, 0x6e40, 0x2c3d, 0x6e49, 0x2c34, 0x6e51, 0x2c2b,
- 0x6e5a, 0x2c21, 0x6e63, 0x2c18, 0x6e6b, 0x2c0f, 0x6e74, 0x2c06,
- 0x6e7d, 0x2bfd, 0x6e85, 0x2bf4, 0x6e8e, 0x2beb, 0x6e97, 0x2be2,
- 0x6e9f, 0x2bd8, 0x6ea8, 0x2bcf, 0x6eb0, 0x2bc6, 0x6eb9, 0x2bbd,
- 0x6ec2, 0x2bb4, 0x6eca, 0x2bab, 0x6ed3, 0x2ba1, 0x6edb, 0x2b98,
- 0x6ee4, 0x2b8f, 0x6eec, 0x2b86, 0x6ef5, 0x2b7d, 0x6efd, 0x2b73,
- 0x6f06, 0x2b6a, 0x6f0e, 0x2b61, 0x6f17, 0x2b58, 0x6f20, 0x2b4e,
- 0x6f28, 0x2b45, 0x6f30, 0x2b3c, 0x6f39, 0x2b33, 0x6f41, 0x2b29,
- 0x6f4a, 0x2b20, 0x6f52, 0x2b17, 0x6f5b, 0x2b0d, 0x6f63, 0x2b04,
- 0x6f6c, 0x2afb, 0x6f74, 0x2af2, 0x6f7d, 0x2ae8, 0x6f85, 0x2adf,
- 0x6f8d, 0x2ad6, 0x6f96, 0x2acc, 0x6f9e, 0x2ac3, 0x6fa7, 0x2ab9,
- 0x6faf, 0x2ab0, 0x6fb7, 0x2aa7, 0x6fc0, 0x2a9d, 0x6fc8, 0x2a94,
- 0x6fd0, 0x2a8b, 0x6fd9, 0x2a81, 0x6fe1, 0x2a78, 0x6fea, 0x2a6e,
- 0x6ff2, 0x2a65, 0x6ffa, 0x2a5c, 0x7002, 0x2a52, 0x700b, 0x2a49,
- 0x7013, 0x2a3f, 0x701b, 0x2a36, 0x7024, 0x2a2c, 0x702c, 0x2a23,
- 0x7034, 0x2a1a, 0x703c, 0x2a10, 0x7045, 0x2a07, 0x704d, 0x29fd,
- 0x7055, 0x29f4, 0x705d, 0x29ea, 0x7066, 0x29e1, 0x706e, 0x29d7,
- 0x7076, 0x29ce, 0x707e, 0x29c4, 0x7087, 0x29bb, 0x708f, 0x29b1,
- 0x7097, 0x29a7, 0x709f, 0x299e, 0x70a7, 0x2994, 0x70af, 0x298b,
- 0x70b8, 0x2981, 0x70c0, 0x2978, 0x70c8, 0x296e, 0x70d0, 0x2965,
- 0x70d8, 0x295b, 0x70e0, 0x2951, 0x70e8, 0x2948, 0x70f0, 0x293e,
- 0x70f9, 0x2935, 0x7101, 0x292b, 0x7109, 0x2921, 0x7111, 0x2918,
- 0x7119, 0x290e, 0x7121, 0x2904, 0x7129, 0x28fb, 0x7131, 0x28f1,
- 0x7139, 0x28e7, 0x7141, 0x28de, 0x7149, 0x28d4, 0x7151, 0x28ca,
- 0x7159, 0x28c1, 0x7161, 0x28b7, 0x7169, 0x28ad, 0x7171, 0x28a4,
- 0x7179, 0x289a, 0x7181, 0x2890, 0x7189, 0x2886, 0x7191, 0x287d,
- 0x7199, 0x2873, 0x71a1, 0x2869, 0x71a9, 0x2860, 0x71b1, 0x2856,
- 0x71b9, 0x284c, 0x71c0, 0x2842, 0x71c8, 0x2838, 0x71d0, 0x282f,
- 0x71d8, 0x2825, 0x71e0, 0x281b, 0x71e8, 0x2811, 0x71f0, 0x2808,
- 0x71f8, 0x27fe, 0x71ff, 0x27f4, 0x7207, 0x27ea, 0x720f, 0x27e0,
- 0x7217, 0x27d6, 0x721f, 0x27cd, 0x7227, 0x27c3, 0x722e, 0x27b9,
- 0x7236, 0x27af, 0x723e, 0x27a5, 0x7246, 0x279b, 0x724e, 0x2791,
- 0x7255, 0x2788, 0x725d, 0x277e, 0x7265, 0x2774, 0x726d, 0x276a,
- 0x7274, 0x2760, 0x727c, 0x2756, 0x7284, 0x274c, 0x728b, 0x2742,
- 0x7293, 0x2738, 0x729b, 0x272e, 0x72a3, 0x2724, 0x72aa, 0x271a,
- 0x72b2, 0x2711, 0x72ba, 0x2707, 0x72c1, 0x26fd, 0x72c9, 0x26f3,
- 0x72d0, 0x26e9, 0x72d8, 0x26df, 0x72e0, 0x26d5, 0x72e7, 0x26cb,
- 0x72ef, 0x26c1, 0x72f7, 0x26b7, 0x72fe, 0x26ad, 0x7306, 0x26a3,
- 0x730d, 0x2699, 0x7315, 0x268f, 0x731d, 0x2685, 0x7324, 0x267b,
- 0x732c, 0x2671, 0x7333, 0x2666, 0x733b, 0x265c, 0x7342, 0x2652,
- 0x734a, 0x2648, 0x7351, 0x263e, 0x7359, 0x2634, 0x7360, 0x262a,
- 0x7368, 0x2620, 0x736f, 0x2616, 0x7377, 0x260c, 0x737e, 0x2602,
- 0x7386, 0x25f8, 0x738d, 0x25ed, 0x7395, 0x25e3, 0x739c, 0x25d9,
- 0x73a3, 0x25cf, 0x73ab, 0x25c5, 0x73b2, 0x25bb, 0x73ba, 0x25b1,
- 0x73c1, 0x25a6, 0x73c8, 0x259c, 0x73d0, 0x2592, 0x73d7, 0x2588,
- 0x73df, 0x257e, 0x73e6, 0x2574, 0x73ed, 0x2569, 0x73f5, 0x255f,
- 0x73fc, 0x2555, 0x7403, 0x254b, 0x740b, 0x2541, 0x7412, 0x2536,
- 0x7419, 0x252c, 0x7420, 0x2522, 0x7428, 0x2518, 0x742f, 0x250d,
- 0x7436, 0x2503, 0x743e, 0x24f9, 0x7445, 0x24ef, 0x744c, 0x24e4,
- 0x7453, 0x24da, 0x745b, 0x24d0, 0x7462, 0x24c5, 0x7469, 0x24bb,
- 0x7470, 0x24b1, 0x7477, 0x24a7, 0x747f, 0x249c, 0x7486, 0x2492,
- 0x748d, 0x2488, 0x7494, 0x247d, 0x749b, 0x2473, 0x74a2, 0x2469,
- 0x74aa, 0x245e, 0x74b1, 0x2454, 0x74b8, 0x244a, 0x74bf, 0x243f,
- 0x74c6, 0x2435, 0x74cd, 0x242b, 0x74d4, 0x2420, 0x74db, 0x2416,
- 0x74e2, 0x240b, 0x74ea, 0x2401, 0x74f1, 0x23f7, 0x74f8, 0x23ec,
- 0x74ff, 0x23e2, 0x7506, 0x23d7, 0x750d, 0x23cd, 0x7514, 0x23c3,
- 0x751b, 0x23b8, 0x7522, 0x23ae, 0x7529, 0x23a3, 0x7530, 0x2399,
- 0x7537, 0x238e, 0x753e, 0x2384, 0x7545, 0x237a, 0x754c, 0x236f,
- 0x7553, 0x2365, 0x755a, 0x235a, 0x7561, 0x2350, 0x7567, 0x2345,
- 0x756e, 0x233b, 0x7575, 0x2330, 0x757c, 0x2326, 0x7583, 0x231b,
- 0x758a, 0x2311, 0x7591, 0x2306, 0x7598, 0x22fc, 0x759f, 0x22f1,
- 0x75a5, 0x22e7, 0x75ac, 0x22dc, 0x75b3, 0x22d2, 0x75ba, 0x22c7,
- 0x75c1, 0x22bc, 0x75c8, 0x22b2, 0x75ce, 0x22a7, 0x75d5, 0x229d,
- 0x75dc, 0x2292, 0x75e3, 0x2288, 0x75ea, 0x227d, 0x75f0, 0x2272,
- 0x75f7, 0x2268, 0x75fe, 0x225d, 0x7605, 0x2253, 0x760b, 0x2248,
- 0x7612, 0x223d, 0x7619, 0x2233, 0x7620, 0x2228, 0x7626, 0x221e,
- 0x762d, 0x2213, 0x7634, 0x2208, 0x763a, 0x21fe, 0x7641, 0x21f3,
- 0x7648, 0x21e8, 0x764e, 0x21de, 0x7655, 0x21d3, 0x765c, 0x21c8,
- 0x7662, 0x21be, 0x7669, 0x21b3, 0x766f, 0x21a8, 0x7676, 0x219e,
- 0x767d, 0x2193, 0x7683, 0x2188, 0x768a, 0x217d, 0x7690, 0x2173,
- 0x7697, 0x2168, 0x769d, 0x215d, 0x76a4, 0x2153, 0x76ab, 0x2148,
- 0x76b1, 0x213d, 0x76b8, 0x2132, 0x76be, 0x2128, 0x76c5, 0x211d,
- 0x76cb, 0x2112, 0x76d2, 0x2107, 0x76d8, 0x20fd, 0x76df, 0x20f2,
- 0x76e5, 0x20e7, 0x76eb, 0x20dc, 0x76f2, 0x20d1, 0x76f8, 0x20c7,
- 0x76ff, 0x20bc, 0x7705, 0x20b1, 0x770c, 0x20a6, 0x7712, 0x209b,
- 0x7718, 0x2091, 0x771f, 0x2086, 0x7725, 0x207b, 0x772c, 0x2070,
- 0x7732, 0x2065, 0x7738, 0x205b, 0x773f, 0x2050, 0x7745, 0x2045,
- 0x774b, 0x203a, 0x7752, 0x202f, 0x7758, 0x2024, 0x775e, 0x2019,
- 0x7765, 0x200f, 0x776b, 0x2004, 0x7771, 0x1ff9, 0x7777, 0x1fee,
- 0x777e, 0x1fe3, 0x7784, 0x1fd8, 0x778a, 0x1fcd, 0x7790, 0x1fc2,
- 0x7797, 0x1fb7, 0x779d, 0x1fac, 0x77a3, 0x1fa2, 0x77a9, 0x1f97,
- 0x77b0, 0x1f8c, 0x77b6, 0x1f81, 0x77bc, 0x1f76, 0x77c2, 0x1f6b,
- 0x77c8, 0x1f60, 0x77ce, 0x1f55, 0x77d5, 0x1f4a, 0x77db, 0x1f3f,
- 0x77e1, 0x1f34, 0x77e7, 0x1f29, 0x77ed, 0x1f1e, 0x77f3, 0x1f13,
- 0x77f9, 0x1f08, 0x77ff, 0x1efd, 0x7805, 0x1ef2, 0x780b, 0x1ee7,
- 0x7812, 0x1edc, 0x7818, 0x1ed1, 0x781e, 0x1ec6, 0x7824, 0x1ebb,
- 0x782a, 0x1eb0, 0x7830, 0x1ea5, 0x7836, 0x1e9a, 0x783c, 0x1e8f,
- 0x7842, 0x1e84, 0x7848, 0x1e79, 0x784e, 0x1e6e, 0x7854, 0x1e63,
- 0x785a, 0x1e58, 0x7860, 0x1e4d, 0x7866, 0x1e42, 0x786b, 0x1e36,
- 0x7871, 0x1e2b, 0x7877, 0x1e20, 0x787d, 0x1e15, 0x7883, 0x1e0a,
- 0x7889, 0x1dff, 0x788f, 0x1df4, 0x7895, 0x1de9, 0x789b, 0x1dde,
- 0x78a1, 0x1dd3, 0x78a6, 0x1dc7, 0x78ac, 0x1dbc, 0x78b2, 0x1db1,
- 0x78b8, 0x1da6, 0x78be, 0x1d9b, 0x78c3, 0x1d90, 0x78c9, 0x1d85,
- 0x78cf, 0x1d79, 0x78d5, 0x1d6e, 0x78db, 0x1d63, 0x78e0, 0x1d58,
- 0x78e6, 0x1d4d, 0x78ec, 0x1d42, 0x78f2, 0x1d36, 0x78f7, 0x1d2b,
- 0x78fd, 0x1d20, 0x7903, 0x1d15, 0x7909, 0x1d0a, 0x790e, 0x1cff,
- 0x7914, 0x1cf3, 0x791a, 0x1ce8, 0x791f, 0x1cdd, 0x7925, 0x1cd2,
- 0x792b, 0x1cc6, 0x7930, 0x1cbb, 0x7936, 0x1cb0, 0x793b, 0x1ca5,
- 0x7941, 0x1c99, 0x7947, 0x1c8e, 0x794c, 0x1c83, 0x7952, 0x1c78,
- 0x7958, 0x1c6c, 0x795d, 0x1c61, 0x7963, 0x1c56, 0x7968, 0x1c4b,
- 0x796e, 0x1c3f, 0x7973, 0x1c34, 0x7979, 0x1c29, 0x797e, 0x1c1e,
- 0x7984, 0x1c12, 0x7989, 0x1c07, 0x798f, 0x1bfc, 0x7994, 0x1bf0,
- 0x799a, 0x1be5, 0x799f, 0x1bda, 0x79a5, 0x1bce, 0x79aa, 0x1bc3,
- 0x79b0, 0x1bb8, 0x79b5, 0x1bac, 0x79bb, 0x1ba1, 0x79c0, 0x1b96,
- 0x79c5, 0x1b8a, 0x79cb, 0x1b7f, 0x79d0, 0x1b74, 0x79d6, 0x1b68,
- 0x79db, 0x1b5d, 0x79e0, 0x1b52, 0x79e6, 0x1b46, 0x79eb, 0x1b3b,
- 0x79f0, 0x1b30, 0x79f6, 0x1b24, 0x79fb, 0x1b19, 0x7a00, 0x1b0d,
- 0x7a06, 0x1b02, 0x7a0b, 0x1af7, 0x7a10, 0x1aeb, 0x7a16, 0x1ae0,
- 0x7a1b, 0x1ad4, 0x7a20, 0x1ac9, 0x7a25, 0x1abe, 0x7a2b, 0x1ab2,
- 0x7a30, 0x1aa7, 0x7a35, 0x1a9b, 0x7a3a, 0x1a90, 0x7a3f, 0x1a84,
- 0x7a45, 0x1a79, 0x7a4a, 0x1a6e, 0x7a4f, 0x1a62, 0x7a54, 0x1a57,
- 0x7a59, 0x1a4b, 0x7a5f, 0x1a40, 0x7a64, 0x1a34, 0x7a69, 0x1a29,
- 0x7a6e, 0x1a1d, 0x7a73, 0x1a12, 0x7a78, 0x1a06, 0x7a7d, 0x19fb,
- 0x7a82, 0x19ef, 0x7a88, 0x19e4, 0x7a8d, 0x19d8, 0x7a92, 0x19cd,
- 0x7a97, 0x19c1, 0x7a9c, 0x19b6, 0x7aa1, 0x19aa, 0x7aa6, 0x199f,
- 0x7aab, 0x1993, 0x7ab0, 0x1988, 0x7ab5, 0x197c, 0x7aba, 0x1971,
- 0x7abf, 0x1965, 0x7ac4, 0x195a, 0x7ac9, 0x194e, 0x7ace, 0x1943,
- 0x7ad3, 0x1937, 0x7ad8, 0x192c, 0x7add, 0x1920, 0x7ae2, 0x1914,
- 0x7ae6, 0x1909, 0x7aeb, 0x18fd, 0x7af0, 0x18f2, 0x7af5, 0x18e6,
- 0x7afa, 0x18db, 0x7aff, 0x18cf, 0x7b04, 0x18c3, 0x7b09, 0x18b8,
- 0x7b0e, 0x18ac, 0x7b12, 0x18a1, 0x7b17, 0x1895, 0x7b1c, 0x1889,
- 0x7b21, 0x187e, 0x7b26, 0x1872, 0x7b2a, 0x1867, 0x7b2f, 0x185b,
- 0x7b34, 0x184f, 0x7b39, 0x1844, 0x7b3e, 0x1838, 0x7b42, 0x182d,
- 0x7b47, 0x1821, 0x7b4c, 0x1815, 0x7b50, 0x180a, 0x7b55, 0x17fe,
- 0x7b5a, 0x17f2, 0x7b5f, 0x17e7, 0x7b63, 0x17db, 0x7b68, 0x17cf,
- 0x7b6d, 0x17c4, 0x7b71, 0x17b8, 0x7b76, 0x17ac, 0x7b7b, 0x17a1,
- 0x7b7f, 0x1795, 0x7b84, 0x1789, 0x7b88, 0x177e, 0x7b8d, 0x1772,
- 0x7b92, 0x1766, 0x7b96, 0x175b, 0x7b9b, 0x174f, 0x7b9f, 0x1743,
- 0x7ba4, 0x1737, 0x7ba9, 0x172c, 0x7bad, 0x1720, 0x7bb2, 0x1714,
- 0x7bb6, 0x1709, 0x7bbb, 0x16fd, 0x7bbf, 0x16f1, 0x7bc4, 0x16e5,
- 0x7bc8, 0x16da, 0x7bcd, 0x16ce, 0x7bd1, 0x16c2, 0x7bd6, 0x16b6,
- 0x7bda, 0x16ab, 0x7bde, 0x169f, 0x7be3, 0x1693, 0x7be7, 0x1687,
- 0x7bec, 0x167c, 0x7bf0, 0x1670, 0x7bf5, 0x1664, 0x7bf9, 0x1658,
- 0x7bfd, 0x164c, 0x7c02, 0x1641, 0x7c06, 0x1635, 0x7c0a, 0x1629,
- 0x7c0f, 0x161d, 0x7c13, 0x1612, 0x7c17, 0x1606, 0x7c1c, 0x15fa,
- 0x7c20, 0x15ee, 0x7c24, 0x15e2, 0x7c29, 0x15d7, 0x7c2d, 0x15cb,
- 0x7c31, 0x15bf, 0x7c36, 0x15b3, 0x7c3a, 0x15a7, 0x7c3e, 0x159b,
- 0x7c42, 0x1590, 0x7c46, 0x1584, 0x7c4b, 0x1578, 0x7c4f, 0x156c,
- 0x7c53, 0x1560, 0x7c57, 0x1554, 0x7c5b, 0x1549, 0x7c60, 0x153d,
- 0x7c64, 0x1531, 0x7c68, 0x1525, 0x7c6c, 0x1519, 0x7c70, 0x150d,
- 0x7c74, 0x1501, 0x7c79, 0x14f6, 0x7c7d, 0x14ea, 0x7c81, 0x14de,
- 0x7c85, 0x14d2, 0x7c89, 0x14c6, 0x7c8d, 0x14ba, 0x7c91, 0x14ae,
- 0x7c95, 0x14a2, 0x7c99, 0x1496, 0x7c9d, 0x148b, 0x7ca1, 0x147f,
- 0x7ca5, 0x1473, 0x7ca9, 0x1467, 0x7cad, 0x145b, 0x7cb1, 0x144f,
- 0x7cb5, 0x1443, 0x7cb9, 0x1437, 0x7cbd, 0x142b, 0x7cc1, 0x141f,
- 0x7cc5, 0x1413, 0x7cc9, 0x1407, 0x7ccd, 0x13fb, 0x7cd1, 0x13f0,
- 0x7cd5, 0x13e4, 0x7cd9, 0x13d8, 0x7cdd, 0x13cc, 0x7ce0, 0x13c0,
- 0x7ce4, 0x13b4, 0x7ce8, 0x13a8, 0x7cec, 0x139c, 0x7cf0, 0x1390,
- 0x7cf4, 0x1384, 0x7cf8, 0x1378, 0x7cfb, 0x136c, 0x7cff, 0x1360,
- 0x7d03, 0x1354, 0x7d07, 0x1348, 0x7d0b, 0x133c, 0x7d0e, 0x1330,
- 0x7d12, 0x1324, 0x7d16, 0x1318, 0x7d1a, 0x130c, 0x7d1d, 0x1300,
- 0x7d21, 0x12f4, 0x7d25, 0x12e8, 0x7d28, 0x12dc, 0x7d2c, 0x12d0,
- 0x7d30, 0x12c4, 0x7d34, 0x12b8, 0x7d37, 0x12ac, 0x7d3b, 0x12a0,
- 0x7d3f, 0x1294, 0x7d42, 0x1288, 0x7d46, 0x127c, 0x7d49, 0x1270,
- 0x7d4d, 0x1264, 0x7d51, 0x1258, 0x7d54, 0x124c, 0x7d58, 0x1240,
- 0x7d5b, 0x1234, 0x7d5f, 0x1228, 0x7d63, 0x121c, 0x7d66, 0x1210,
- 0x7d6a, 0x1204, 0x7d6d, 0x11f7, 0x7d71, 0x11eb, 0x7d74, 0x11df,
- 0x7d78, 0x11d3, 0x7d7b, 0x11c7, 0x7d7f, 0x11bb, 0x7d82, 0x11af,
- 0x7d86, 0x11a3, 0x7d89, 0x1197, 0x7d8d, 0x118b, 0x7d90, 0x117f,
- 0x7d93, 0x1173, 0x7d97, 0x1167, 0x7d9a, 0x115a, 0x7d9e, 0x114e,
- 0x7da1, 0x1142, 0x7da4, 0x1136, 0x7da8, 0x112a, 0x7dab, 0x111e,
- 0x7daf, 0x1112, 0x7db2, 0x1106, 0x7db5, 0x10fa, 0x7db9, 0x10ed,
- 0x7dbc, 0x10e1, 0x7dbf, 0x10d5, 0x7dc2, 0x10c9, 0x7dc6, 0x10bd,
- 0x7dc9, 0x10b1, 0x7dcc, 0x10a5, 0x7dd0, 0x1099, 0x7dd3, 0x108c,
- 0x7dd6, 0x1080, 0x7dd9, 0x1074, 0x7ddd, 0x1068, 0x7de0, 0x105c,
- 0x7de3, 0x1050, 0x7de6, 0x1044, 0x7de9, 0x1037, 0x7ded, 0x102b,
- 0x7df0, 0x101f, 0x7df3, 0x1013, 0x7df6, 0x1007, 0x7df9, 0xffb,
- 0x7dfc, 0xfee, 0x7dff, 0xfe2, 0x7e03, 0xfd6, 0x7e06, 0xfca,
- 0x7e09, 0xfbe, 0x7e0c, 0xfb2, 0x7e0f, 0xfa5, 0x7e12, 0xf99,
- 0x7e15, 0xf8d, 0x7e18, 0xf81, 0x7e1b, 0xf75, 0x7e1e, 0xf68,
- 0x7e21, 0xf5c, 0x7e24, 0xf50, 0x7e27, 0xf44, 0x7e2a, 0xf38,
- 0x7e2d, 0xf2b, 0x7e30, 0xf1f, 0x7e33, 0xf13, 0x7e36, 0xf07,
- 0x7e39, 0xefb, 0x7e3c, 0xeee, 0x7e3f, 0xee2, 0x7e42, 0xed6,
- 0x7e45, 0xeca, 0x7e48, 0xebd, 0x7e4a, 0xeb1, 0x7e4d, 0xea5,
- 0x7e50, 0xe99, 0x7e53, 0xe8c, 0x7e56, 0xe80, 0x7e59, 0xe74,
- 0x7e5c, 0xe68, 0x7e5e, 0xe5c, 0x7e61, 0xe4f, 0x7e64, 0xe43,
- 0x7e67, 0xe37, 0x7e6a, 0xe2b, 0x7e6c, 0xe1e, 0x7e6f, 0xe12,
- 0x7e72, 0xe06, 0x7e75, 0xdf9, 0x7e77, 0xded, 0x7e7a, 0xde1,
- 0x7e7d, 0xdd5, 0x7e80, 0xdc8, 0x7e82, 0xdbc, 0x7e85, 0xdb0,
- 0x7e88, 0xda4, 0x7e8a, 0xd97, 0x7e8d, 0xd8b, 0x7e90, 0xd7f,
- 0x7e92, 0xd72, 0x7e95, 0xd66, 0x7e98, 0xd5a, 0x7e9a, 0xd4e,
- 0x7e9d, 0xd41, 0x7e9f, 0xd35, 0x7ea2, 0xd29, 0x7ea5, 0xd1c,
- 0x7ea7, 0xd10, 0x7eaa, 0xd04, 0x7eac, 0xcf8, 0x7eaf, 0xceb,
- 0x7eb1, 0xcdf, 0x7eb4, 0xcd3, 0x7eb6, 0xcc6, 0x7eb9, 0xcba,
- 0x7ebb, 0xcae, 0x7ebe, 0xca1, 0x7ec0, 0xc95, 0x7ec3, 0xc89,
- 0x7ec5, 0xc7c, 0x7ec8, 0xc70, 0x7eca, 0xc64, 0x7ecc, 0xc57,
- 0x7ecf, 0xc4b, 0x7ed1, 0xc3f, 0x7ed4, 0xc32, 0x7ed6, 0xc26,
- 0x7ed8, 0xc1a, 0x7edb, 0xc0d, 0x7edd, 0xc01, 0x7ee0, 0xbf5,
- 0x7ee2, 0xbe8, 0x7ee4, 0xbdc, 0x7ee7, 0xbd0, 0x7ee9, 0xbc3,
- 0x7eeb, 0xbb7, 0x7eed, 0xbab, 0x7ef0, 0xb9e, 0x7ef2, 0xb92,
- 0x7ef4, 0xb85, 0x7ef7, 0xb79, 0x7ef9, 0xb6d, 0x7efb, 0xb60,
- 0x7efd, 0xb54, 0x7f00, 0xb48, 0x7f02, 0xb3b, 0x7f04, 0xb2f,
- 0x7f06, 0xb23, 0x7f08, 0xb16, 0x7f0a, 0xb0a, 0x7f0d, 0xafd,
- 0x7f0f, 0xaf1, 0x7f11, 0xae5, 0x7f13, 0xad8, 0x7f15, 0xacc,
- 0x7f17, 0xac0, 0x7f19, 0xab3, 0x7f1c, 0xaa7, 0x7f1e, 0xa9a,
- 0x7f20, 0xa8e, 0x7f22, 0xa82, 0x7f24, 0xa75, 0x7f26, 0xa69,
- 0x7f28, 0xa5c, 0x7f2a, 0xa50, 0x7f2c, 0xa44, 0x7f2e, 0xa37,
- 0x7f30, 0xa2b, 0x7f32, 0xa1e, 0x7f34, 0xa12, 0x7f36, 0xa06,
- 0x7f38, 0x9f9, 0x7f3a, 0x9ed, 0x7f3c, 0x9e0, 0x7f3e, 0x9d4,
- 0x7f40, 0x9c7, 0x7f42, 0x9bb, 0x7f43, 0x9af, 0x7f45, 0x9a2,
- 0x7f47, 0x996, 0x7f49, 0x989, 0x7f4b, 0x97d, 0x7f4d, 0x970,
- 0x7f4f, 0x964, 0x7f51, 0x958, 0x7f52, 0x94b, 0x7f54, 0x93f,
- 0x7f56, 0x932, 0x7f58, 0x926, 0x7f5a, 0x919, 0x7f5b, 0x90d,
- 0x7f5d, 0x901, 0x7f5f, 0x8f4, 0x7f61, 0x8e8, 0x7f62, 0x8db,
- 0x7f64, 0x8cf, 0x7f66, 0x8c2, 0x7f68, 0x8b6, 0x7f69, 0x8a9,
- 0x7f6b, 0x89d, 0x7f6d, 0x891, 0x7f6e, 0x884, 0x7f70, 0x878,
- 0x7f72, 0x86b, 0x7f73, 0x85f, 0x7f75, 0x852, 0x7f77, 0x846,
- 0x7f78, 0x839, 0x7f7a, 0x82d, 0x7f7b, 0x820, 0x7f7d, 0x814,
- 0x7f7f, 0x807, 0x7f80, 0x7fb, 0x7f82, 0x7ef, 0x7f83, 0x7e2,
- 0x7f85, 0x7d6, 0x7f86, 0x7c9, 0x7f88, 0x7bd, 0x7f89, 0x7b0,
- 0x7f8b, 0x7a4, 0x7f8c, 0x797, 0x7f8e, 0x78b, 0x7f8f, 0x77e,
- 0x7f91, 0x772, 0x7f92, 0x765, 0x7f94, 0x759, 0x7f95, 0x74c,
- 0x7f97, 0x740, 0x7f98, 0x733, 0x7f99, 0x727, 0x7f9b, 0x71a,
- 0x7f9c, 0x70e, 0x7f9e, 0x701, 0x7f9f, 0x6f5, 0x7fa0, 0x6e8,
- 0x7fa2, 0x6dc, 0x7fa3, 0x6cf, 0x7fa4, 0x6c3, 0x7fa6, 0x6b6,
- 0x7fa7, 0x6aa, 0x7fa8, 0x69d, 0x7faa, 0x691, 0x7fab, 0x684,
- 0x7fac, 0x678, 0x7fad, 0x66b, 0x7faf, 0x65f, 0x7fb0, 0x652,
- 0x7fb1, 0x646, 0x7fb2, 0x639, 0x7fb4, 0x62d, 0x7fb5, 0x620,
- 0x7fb6, 0x614, 0x7fb7, 0x607, 0x7fb8, 0x5fb, 0x7fb9, 0x5ee,
- 0x7fbb, 0x5e2, 0x7fbc, 0x5d5, 0x7fbd, 0x5c9, 0x7fbe, 0x5bc,
- 0x7fbf, 0x5b0, 0x7fc0, 0x5a3, 0x7fc1, 0x597, 0x7fc3, 0x58a,
- 0x7fc4, 0x57e, 0x7fc5, 0x571, 0x7fc6, 0x565, 0x7fc7, 0x558,
- 0x7fc8, 0x54c, 0x7fc9, 0x53f, 0x7fca, 0x533, 0x7fcb, 0x526,
- 0x7fcc, 0x51a, 0x7fcd, 0x50d, 0x7fce, 0x500, 0x7fcf, 0x4f4,
- 0x7fd0, 0x4e7, 0x7fd1, 0x4db, 0x7fd2, 0x4ce, 0x7fd3, 0x4c2,
- 0x7fd4, 0x4b5, 0x7fd5, 0x4a9, 0x7fd5, 0x49c, 0x7fd6, 0x490,
- 0x7fd7, 0x483, 0x7fd8, 0x477, 0x7fd9, 0x46a, 0x7fda, 0x45e,
- 0x7fdb, 0x451, 0x7fdc, 0x444, 0x7fdc, 0x438, 0x7fdd, 0x42b,
- 0x7fde, 0x41f, 0x7fdf, 0x412, 0x7fe0, 0x406, 0x7fe0, 0x3f9,
- 0x7fe1, 0x3ed, 0x7fe2, 0x3e0, 0x7fe3, 0x3d4, 0x7fe3, 0x3c7,
- 0x7fe4, 0x3bb, 0x7fe5, 0x3ae, 0x7fe6, 0x3a1, 0x7fe6, 0x395,
- 0x7fe7, 0x388, 0x7fe8, 0x37c, 0x7fe8, 0x36f, 0x7fe9, 0x363,
- 0x7fea, 0x356, 0x7fea, 0x34a, 0x7feb, 0x33d, 0x7fec, 0x330,
- 0x7fec, 0x324, 0x7fed, 0x317, 0x7fed, 0x30b, 0x7fee, 0x2fe,
- 0x7fef, 0x2f2, 0x7fef, 0x2e5, 0x7ff0, 0x2d9, 0x7ff0, 0x2cc,
- 0x7ff1, 0x2c0, 0x7ff1, 0x2b3, 0x7ff2, 0x2a6, 0x7ff2, 0x29a,
- 0x7ff3, 0x28d, 0x7ff3, 0x281, 0x7ff4, 0x274, 0x7ff4, 0x268,
- 0x7ff5, 0x25b, 0x7ff5, 0x24e, 0x7ff6, 0x242, 0x7ff6, 0x235,
- 0x7ff7, 0x229, 0x7ff7, 0x21c, 0x7ff7, 0x210, 0x7ff8, 0x203,
- 0x7ff8, 0x1f7, 0x7ff9, 0x1ea, 0x7ff9, 0x1dd, 0x7ff9, 0x1d1,
- 0x7ffa, 0x1c4, 0x7ffa, 0x1b8, 0x7ffa, 0x1ab, 0x7ffb, 0x19f,
- 0x7ffb, 0x192, 0x7ffb, 0x186, 0x7ffc, 0x179, 0x7ffc, 0x16c,
- 0x7ffc, 0x160, 0x7ffc, 0x153, 0x7ffd, 0x147, 0x7ffd, 0x13a,
- 0x7ffd, 0x12e, 0x7ffd, 0x121, 0x7ffe, 0x114, 0x7ffe, 0x108,
- 0x7ffe, 0xfb, 0x7ffe, 0xef, 0x7ffe, 0xe2, 0x7fff, 0xd6,
- 0x7fff, 0xc9, 0x7fff, 0xbc, 0x7fff, 0xb0, 0x7fff, 0xa3,
- 0x7fff, 0x97, 0x7fff, 0x8a, 0x7fff, 0x7e, 0x7fff, 0x71,
- 0x7fff, 0x65, 0x7fff, 0x58, 0x7fff, 0x4b, 0x7fff, 0x3f,
- 0x7fff, 0x32, 0x7fff, 0x26, 0x7fff, 0x19, 0x7fff, 0xd,
- 0x7fff, 0x0, 0x7fff, 0xfff3, 0x7fff, 0xffe7, 0x7fff, 0xffda,
- 0x7fff, 0xffce, 0x7fff, 0xffc1, 0x7fff, 0xffb5, 0x7fff, 0xffa8,
- 0x7fff, 0xff9b, 0x7fff, 0xff8f, 0x7fff, 0xff82, 0x7fff, 0xff76,
- 0x7fff, 0xff69, 0x7fff, 0xff5d, 0x7fff, 0xff50, 0x7fff, 0xff44,
- 0x7fff, 0xff37, 0x7fff, 0xff2a, 0x7ffe, 0xff1e, 0x7ffe, 0xff11,
- 0x7ffe, 0xff05, 0x7ffe, 0xfef8, 0x7ffe, 0xfeec, 0x7ffd, 0xfedf,
- 0x7ffd, 0xfed2, 0x7ffd, 0xfec6, 0x7ffd, 0xfeb9, 0x7ffc, 0xfead,
- 0x7ffc, 0xfea0, 0x7ffc, 0xfe94, 0x7ffc, 0xfe87, 0x7ffb, 0xfe7a,
- 0x7ffb, 0xfe6e, 0x7ffb, 0xfe61, 0x7ffa, 0xfe55, 0x7ffa, 0xfe48,
- 0x7ffa, 0xfe3c, 0x7ff9, 0xfe2f, 0x7ff9, 0xfe23, 0x7ff9, 0xfe16,
- 0x7ff8, 0xfe09, 0x7ff8, 0xfdfd, 0x7ff7, 0xfdf0, 0x7ff7, 0xfde4,
- 0x7ff7, 0xfdd7, 0x7ff6, 0xfdcb, 0x7ff6, 0xfdbe, 0x7ff5, 0xfdb2,
- 0x7ff5, 0xfda5, 0x7ff4, 0xfd98, 0x7ff4, 0xfd8c, 0x7ff3, 0xfd7f,
- 0x7ff3, 0xfd73, 0x7ff2, 0xfd66, 0x7ff2, 0xfd5a, 0x7ff1, 0xfd4d,
- 0x7ff1, 0xfd40, 0x7ff0, 0xfd34, 0x7ff0, 0xfd27, 0x7fef, 0xfd1b,
- 0x7fef, 0xfd0e, 0x7fee, 0xfd02, 0x7fed, 0xfcf5, 0x7fed, 0xfce9,
- 0x7fec, 0xfcdc, 0x7fec, 0xfcd0, 0x7feb, 0xfcc3, 0x7fea, 0xfcb6,
- 0x7fea, 0xfcaa, 0x7fe9, 0xfc9d, 0x7fe8, 0xfc91, 0x7fe8, 0xfc84,
- 0x7fe7, 0xfc78, 0x7fe6, 0xfc6b, 0x7fe6, 0xfc5f, 0x7fe5, 0xfc52,
- 0x7fe4, 0xfc45, 0x7fe3, 0xfc39, 0x7fe3, 0xfc2c, 0x7fe2, 0xfc20,
- 0x7fe1, 0xfc13, 0x7fe0, 0xfc07, 0x7fe0, 0xfbfa, 0x7fdf, 0xfbee,
- 0x7fde, 0xfbe1, 0x7fdd, 0xfbd5, 0x7fdc, 0xfbc8, 0x7fdc, 0xfbbc,
- 0x7fdb, 0xfbaf, 0x7fda, 0xfba2, 0x7fd9, 0xfb96, 0x7fd8, 0xfb89,
- 0x7fd7, 0xfb7d, 0x7fd6, 0xfb70, 0x7fd5, 0xfb64, 0x7fd5, 0xfb57,
- 0x7fd4, 0xfb4b, 0x7fd3, 0xfb3e, 0x7fd2, 0xfb32, 0x7fd1, 0xfb25,
- 0x7fd0, 0xfb19, 0x7fcf, 0xfb0c, 0x7fce, 0xfb00, 0x7fcd, 0xfaf3,
- 0x7fcc, 0xfae6, 0x7fcb, 0xfada, 0x7fca, 0xfacd, 0x7fc9, 0xfac1,
- 0x7fc8, 0xfab4, 0x7fc7, 0xfaa8, 0x7fc6, 0xfa9b, 0x7fc5, 0xfa8f,
- 0x7fc4, 0xfa82, 0x7fc3, 0xfa76, 0x7fc1, 0xfa69, 0x7fc0, 0xfa5d,
- 0x7fbf, 0xfa50, 0x7fbe, 0xfa44, 0x7fbd, 0xfa37, 0x7fbc, 0xfa2b,
- 0x7fbb, 0xfa1e, 0x7fb9, 0xfa12, 0x7fb8, 0xfa05, 0x7fb7, 0xf9f9,
- 0x7fb6, 0xf9ec, 0x7fb5, 0xf9e0, 0x7fb4, 0xf9d3, 0x7fb2, 0xf9c7,
- 0x7fb1, 0xf9ba, 0x7fb0, 0xf9ae, 0x7faf, 0xf9a1, 0x7fad, 0xf995,
- 0x7fac, 0xf988, 0x7fab, 0xf97c, 0x7faa, 0xf96f, 0x7fa8, 0xf963,
- 0x7fa7, 0xf956, 0x7fa6, 0xf94a, 0x7fa4, 0xf93d, 0x7fa3, 0xf931,
- 0x7fa2, 0xf924, 0x7fa0, 0xf918, 0x7f9f, 0xf90b, 0x7f9e, 0xf8ff,
- 0x7f9c, 0xf8f2, 0x7f9b, 0xf8e6, 0x7f99, 0xf8d9, 0x7f98, 0xf8cd,
- 0x7f97, 0xf8c0, 0x7f95, 0xf8b4, 0x7f94, 0xf8a7, 0x7f92, 0xf89b,
- 0x7f91, 0xf88e, 0x7f8f, 0xf882, 0x7f8e, 0xf875, 0x7f8c, 0xf869,
- 0x7f8b, 0xf85c, 0x7f89, 0xf850, 0x7f88, 0xf843, 0x7f86, 0xf837,
- 0x7f85, 0xf82a, 0x7f83, 0xf81e, 0x7f82, 0xf811, 0x7f80, 0xf805,
- 0x7f7f, 0xf7f9, 0x7f7d, 0xf7ec, 0x7f7b, 0xf7e0, 0x7f7a, 0xf7d3,
- 0x7f78, 0xf7c7, 0x7f77, 0xf7ba, 0x7f75, 0xf7ae, 0x7f73, 0xf7a1,
- 0x7f72, 0xf795, 0x7f70, 0xf788, 0x7f6e, 0xf77c, 0x7f6d, 0xf76f,
- 0x7f6b, 0xf763, 0x7f69, 0xf757, 0x7f68, 0xf74a, 0x7f66, 0xf73e,
- 0x7f64, 0xf731, 0x7f62, 0xf725, 0x7f61, 0xf718, 0x7f5f, 0xf70c,
- 0x7f5d, 0xf6ff, 0x7f5b, 0xf6f3, 0x7f5a, 0xf6e7, 0x7f58, 0xf6da,
- 0x7f56, 0xf6ce, 0x7f54, 0xf6c1, 0x7f52, 0xf6b5, 0x7f51, 0xf6a8,
- 0x7f4f, 0xf69c, 0x7f4d, 0xf690, 0x7f4b, 0xf683, 0x7f49, 0xf677,
- 0x7f47, 0xf66a, 0x7f45, 0xf65e, 0x7f43, 0xf651, 0x7f42, 0xf645,
- 0x7f40, 0xf639, 0x7f3e, 0xf62c, 0x7f3c, 0xf620, 0x7f3a, 0xf613,
- 0x7f38, 0xf607, 0x7f36, 0xf5fa, 0x7f34, 0xf5ee, 0x7f32, 0xf5e2,
- 0x7f30, 0xf5d5, 0x7f2e, 0xf5c9, 0x7f2c, 0xf5bc, 0x7f2a, 0xf5b0,
- 0x7f28, 0xf5a4, 0x7f26, 0xf597, 0x7f24, 0xf58b, 0x7f22, 0xf57e,
- 0x7f20, 0xf572, 0x7f1e, 0xf566, 0x7f1c, 0xf559, 0x7f19, 0xf54d,
- 0x7f17, 0xf540, 0x7f15, 0xf534, 0x7f13, 0xf528, 0x7f11, 0xf51b,
- 0x7f0f, 0xf50f, 0x7f0d, 0xf503, 0x7f0a, 0xf4f6, 0x7f08, 0xf4ea,
- 0x7f06, 0xf4dd, 0x7f04, 0xf4d1, 0x7f02, 0xf4c5, 0x7f00, 0xf4b8,
- 0x7efd, 0xf4ac, 0x7efb, 0xf4a0, 0x7ef9, 0xf493, 0x7ef7, 0xf487,
- 0x7ef4, 0xf47b, 0x7ef2, 0xf46e, 0x7ef0, 0xf462, 0x7eed, 0xf455,
- 0x7eeb, 0xf449, 0x7ee9, 0xf43d, 0x7ee7, 0xf430, 0x7ee4, 0xf424,
- 0x7ee2, 0xf418, 0x7ee0, 0xf40b, 0x7edd, 0xf3ff, 0x7edb, 0xf3f3,
- 0x7ed8, 0xf3e6, 0x7ed6, 0xf3da, 0x7ed4, 0xf3ce, 0x7ed1, 0xf3c1,
- 0x7ecf, 0xf3b5, 0x7ecc, 0xf3a9, 0x7eca, 0xf39c, 0x7ec8, 0xf390,
- 0x7ec5, 0xf384, 0x7ec3, 0xf377, 0x7ec0, 0xf36b, 0x7ebe, 0xf35f,
- 0x7ebb, 0xf352, 0x7eb9, 0xf346, 0x7eb6, 0xf33a, 0x7eb4, 0xf32d,
- 0x7eb1, 0xf321, 0x7eaf, 0xf315, 0x7eac, 0xf308, 0x7eaa, 0xf2fc,
- 0x7ea7, 0xf2f0, 0x7ea5, 0xf2e4, 0x7ea2, 0xf2d7, 0x7e9f, 0xf2cb,
- 0x7e9d, 0xf2bf, 0x7e9a, 0xf2b2, 0x7e98, 0xf2a6, 0x7e95, 0xf29a,
- 0x7e92, 0xf28e, 0x7e90, 0xf281, 0x7e8d, 0xf275, 0x7e8a, 0xf269,
- 0x7e88, 0xf25c, 0x7e85, 0xf250, 0x7e82, 0xf244, 0x7e80, 0xf238,
- 0x7e7d, 0xf22b, 0x7e7a, 0xf21f, 0x7e77, 0xf213, 0x7e75, 0xf207,
- 0x7e72, 0xf1fa, 0x7e6f, 0xf1ee, 0x7e6c, 0xf1e2, 0x7e6a, 0xf1d5,
- 0x7e67, 0xf1c9, 0x7e64, 0xf1bd, 0x7e61, 0xf1b1, 0x7e5e, 0xf1a4,
- 0x7e5c, 0xf198, 0x7e59, 0xf18c, 0x7e56, 0xf180, 0x7e53, 0xf174,
- 0x7e50, 0xf167, 0x7e4d, 0xf15b, 0x7e4a, 0xf14f, 0x7e48, 0xf143,
- 0x7e45, 0xf136, 0x7e42, 0xf12a, 0x7e3f, 0xf11e, 0x7e3c, 0xf112,
- 0x7e39, 0xf105, 0x7e36, 0xf0f9, 0x7e33, 0xf0ed, 0x7e30, 0xf0e1,
- 0x7e2d, 0xf0d5, 0x7e2a, 0xf0c8, 0x7e27, 0xf0bc, 0x7e24, 0xf0b0,
- 0x7e21, 0xf0a4, 0x7e1e, 0xf098, 0x7e1b, 0xf08b, 0x7e18, 0xf07f,
- 0x7e15, 0xf073, 0x7e12, 0xf067, 0x7e0f, 0xf05b, 0x7e0c, 0xf04e,
- 0x7e09, 0xf042, 0x7e06, 0xf036, 0x7e03, 0xf02a, 0x7dff, 0xf01e,
- 0x7dfc, 0xf012, 0x7df9, 0xf005, 0x7df6, 0xeff9, 0x7df3, 0xefed,
- 0x7df0, 0xefe1, 0x7ded, 0xefd5, 0x7de9, 0xefc9, 0x7de6, 0xefbc,
- 0x7de3, 0xefb0, 0x7de0, 0xefa4, 0x7ddd, 0xef98, 0x7dd9, 0xef8c,
- 0x7dd6, 0xef80, 0x7dd3, 0xef74, 0x7dd0, 0xef67, 0x7dcc, 0xef5b,
- 0x7dc9, 0xef4f, 0x7dc6, 0xef43, 0x7dc2, 0xef37, 0x7dbf, 0xef2b,
- 0x7dbc, 0xef1f, 0x7db9, 0xef13, 0x7db5, 0xef06, 0x7db2, 0xeefa,
- 0x7daf, 0xeeee, 0x7dab, 0xeee2, 0x7da8, 0xeed6, 0x7da4, 0xeeca,
- 0x7da1, 0xeebe, 0x7d9e, 0xeeb2, 0x7d9a, 0xeea6, 0x7d97, 0xee99,
- 0x7d93, 0xee8d, 0x7d90, 0xee81, 0x7d8d, 0xee75, 0x7d89, 0xee69,
- 0x7d86, 0xee5d, 0x7d82, 0xee51, 0x7d7f, 0xee45, 0x7d7b, 0xee39,
- 0x7d78, 0xee2d, 0x7d74, 0xee21, 0x7d71, 0xee15, 0x7d6d, 0xee09,
- 0x7d6a, 0xedfc, 0x7d66, 0xedf0, 0x7d63, 0xede4, 0x7d5f, 0xedd8,
- 0x7d5b, 0xedcc, 0x7d58, 0xedc0, 0x7d54, 0xedb4, 0x7d51, 0xeda8,
- 0x7d4d, 0xed9c, 0x7d49, 0xed90, 0x7d46, 0xed84, 0x7d42, 0xed78,
- 0x7d3f, 0xed6c, 0x7d3b, 0xed60, 0x7d37, 0xed54, 0x7d34, 0xed48,
- 0x7d30, 0xed3c, 0x7d2c, 0xed30, 0x7d28, 0xed24, 0x7d25, 0xed18,
- 0x7d21, 0xed0c, 0x7d1d, 0xed00, 0x7d1a, 0xecf4, 0x7d16, 0xece8,
- 0x7d12, 0xecdc, 0x7d0e, 0xecd0, 0x7d0b, 0xecc4, 0x7d07, 0xecb8,
- 0x7d03, 0xecac, 0x7cff, 0xeca0, 0x7cfb, 0xec94, 0x7cf8, 0xec88,
- 0x7cf4, 0xec7c, 0x7cf0, 0xec70, 0x7cec, 0xec64, 0x7ce8, 0xec58,
- 0x7ce4, 0xec4c, 0x7ce0, 0xec40, 0x7cdd, 0xec34, 0x7cd9, 0xec28,
- 0x7cd5, 0xec1c, 0x7cd1, 0xec10, 0x7ccd, 0xec05, 0x7cc9, 0xebf9,
- 0x7cc5, 0xebed, 0x7cc1, 0xebe1, 0x7cbd, 0xebd5, 0x7cb9, 0xebc9,
- 0x7cb5, 0xebbd, 0x7cb1, 0xebb1, 0x7cad, 0xeba5, 0x7ca9, 0xeb99,
- 0x7ca5, 0xeb8d, 0x7ca1, 0xeb81, 0x7c9d, 0xeb75, 0x7c99, 0xeb6a,
- 0x7c95, 0xeb5e, 0x7c91, 0xeb52, 0x7c8d, 0xeb46, 0x7c89, 0xeb3a,
- 0x7c85, 0xeb2e, 0x7c81, 0xeb22, 0x7c7d, 0xeb16, 0x7c79, 0xeb0a,
- 0x7c74, 0xeaff, 0x7c70, 0xeaf3, 0x7c6c, 0xeae7, 0x7c68, 0xeadb,
- 0x7c64, 0xeacf, 0x7c60, 0xeac3, 0x7c5b, 0xeab7, 0x7c57, 0xeaac,
- 0x7c53, 0xeaa0, 0x7c4f, 0xea94, 0x7c4b, 0xea88, 0x7c46, 0xea7c,
- 0x7c42, 0xea70, 0x7c3e, 0xea65, 0x7c3a, 0xea59, 0x7c36, 0xea4d,
- 0x7c31, 0xea41, 0x7c2d, 0xea35, 0x7c29, 0xea29, 0x7c24, 0xea1e,
- 0x7c20, 0xea12, 0x7c1c, 0xea06, 0x7c17, 0xe9fa, 0x7c13, 0xe9ee,
- 0x7c0f, 0xe9e3, 0x7c0a, 0xe9d7, 0x7c06, 0xe9cb, 0x7c02, 0xe9bf,
- 0x7bfd, 0xe9b4, 0x7bf9, 0xe9a8, 0x7bf5, 0xe99c, 0x7bf0, 0xe990,
- 0x7bec, 0xe984, 0x7be7, 0xe979, 0x7be3, 0xe96d, 0x7bde, 0xe961,
- 0x7bda, 0xe955, 0x7bd6, 0xe94a, 0x7bd1, 0xe93e, 0x7bcd, 0xe932,
- 0x7bc8, 0xe926, 0x7bc4, 0xe91b, 0x7bbf, 0xe90f, 0x7bbb, 0xe903,
- 0x7bb6, 0xe8f7, 0x7bb2, 0xe8ec, 0x7bad, 0xe8e0, 0x7ba9, 0xe8d4,
- 0x7ba4, 0xe8c9, 0x7b9f, 0xe8bd, 0x7b9b, 0xe8b1, 0x7b96, 0xe8a5,
- 0x7b92, 0xe89a, 0x7b8d, 0xe88e, 0x7b88, 0xe882, 0x7b84, 0xe877,
- 0x7b7f, 0xe86b, 0x7b7b, 0xe85f, 0x7b76, 0xe854, 0x7b71, 0xe848,
- 0x7b6d, 0xe83c, 0x7b68, 0xe831, 0x7b63, 0xe825, 0x7b5f, 0xe819,
- 0x7b5a, 0xe80e, 0x7b55, 0xe802, 0x7b50, 0xe7f6, 0x7b4c, 0xe7eb,
- 0x7b47, 0xe7df, 0x7b42, 0xe7d3, 0x7b3e, 0xe7c8, 0x7b39, 0xe7bc,
- 0x7b34, 0xe7b1, 0x7b2f, 0xe7a5, 0x7b2a, 0xe799, 0x7b26, 0xe78e,
- 0x7b21, 0xe782, 0x7b1c, 0xe777, 0x7b17, 0xe76b, 0x7b12, 0xe75f,
- 0x7b0e, 0xe754, 0x7b09, 0xe748, 0x7b04, 0xe73d, 0x7aff, 0xe731,
- 0x7afa, 0xe725, 0x7af5, 0xe71a, 0x7af0, 0xe70e, 0x7aeb, 0xe703,
- 0x7ae6, 0xe6f7, 0x7ae2, 0xe6ec, 0x7add, 0xe6e0, 0x7ad8, 0xe6d4,
- 0x7ad3, 0xe6c9, 0x7ace, 0xe6bd, 0x7ac9, 0xe6b2, 0x7ac4, 0xe6a6,
- 0x7abf, 0xe69b, 0x7aba, 0xe68f, 0x7ab5, 0xe684, 0x7ab0, 0xe678,
- 0x7aab, 0xe66d, 0x7aa6, 0xe661, 0x7aa1, 0xe656, 0x7a9c, 0xe64a,
- 0x7a97, 0xe63f, 0x7a92, 0xe633, 0x7a8d, 0xe628, 0x7a88, 0xe61c,
- 0x7a82, 0xe611, 0x7a7d, 0xe605, 0x7a78, 0xe5fa, 0x7a73, 0xe5ee,
- 0x7a6e, 0xe5e3, 0x7a69, 0xe5d7, 0x7a64, 0xe5cc, 0x7a5f, 0xe5c0,
- 0x7a59, 0xe5b5, 0x7a54, 0xe5a9, 0x7a4f, 0xe59e, 0x7a4a, 0xe592,
- 0x7a45, 0xe587, 0x7a3f, 0xe57c, 0x7a3a, 0xe570, 0x7a35, 0xe565,
- 0x7a30, 0xe559, 0x7a2b, 0xe54e, 0x7a25, 0xe542, 0x7a20, 0xe537,
- 0x7a1b, 0xe52c, 0x7a16, 0xe520, 0x7a10, 0xe515, 0x7a0b, 0xe509,
- 0x7a06, 0xe4fe, 0x7a00, 0xe4f3, 0x79fb, 0xe4e7, 0x79f6, 0xe4dc,
- 0x79f0, 0xe4d0, 0x79eb, 0xe4c5, 0x79e6, 0xe4ba, 0x79e0, 0xe4ae,
- 0x79db, 0xe4a3, 0x79d6, 0xe498, 0x79d0, 0xe48c, 0x79cb, 0xe481,
- 0x79c5, 0xe476, 0x79c0, 0xe46a, 0x79bb, 0xe45f, 0x79b5, 0xe454,
- 0x79b0, 0xe448, 0x79aa, 0xe43d, 0x79a5, 0xe432, 0x799f, 0xe426,
- 0x799a, 0xe41b, 0x7994, 0xe410, 0x798f, 0xe404, 0x7989, 0xe3f9,
- 0x7984, 0xe3ee, 0x797e, 0xe3e2, 0x7979, 0xe3d7, 0x7973, 0xe3cc,
- 0x796e, 0xe3c1, 0x7968, 0xe3b5, 0x7963, 0xe3aa, 0x795d, 0xe39f,
- 0x7958, 0xe394, 0x7952, 0xe388, 0x794c, 0xe37d, 0x7947, 0xe372,
- 0x7941, 0xe367, 0x793b, 0xe35b, 0x7936, 0xe350, 0x7930, 0xe345,
- 0x792b, 0xe33a, 0x7925, 0xe32e, 0x791f, 0xe323, 0x791a, 0xe318,
- 0x7914, 0xe30d, 0x790e, 0xe301, 0x7909, 0xe2f6, 0x7903, 0xe2eb,
- 0x78fd, 0xe2e0, 0x78f7, 0xe2d5, 0x78f2, 0xe2ca, 0x78ec, 0xe2be,
- 0x78e6, 0xe2b3, 0x78e0, 0xe2a8, 0x78db, 0xe29d, 0x78d5, 0xe292,
- 0x78cf, 0xe287, 0x78c9, 0xe27b, 0x78c3, 0xe270, 0x78be, 0xe265,
- 0x78b8, 0xe25a, 0x78b2, 0xe24f, 0x78ac, 0xe244, 0x78a6, 0xe239,
- 0x78a1, 0xe22d, 0x789b, 0xe222, 0x7895, 0xe217, 0x788f, 0xe20c,
- 0x7889, 0xe201, 0x7883, 0xe1f6, 0x787d, 0xe1eb, 0x7877, 0xe1e0,
- 0x7871, 0xe1d5, 0x786b, 0xe1ca, 0x7866, 0xe1be, 0x7860, 0xe1b3,
- 0x785a, 0xe1a8, 0x7854, 0xe19d, 0x784e, 0xe192, 0x7848, 0xe187,
- 0x7842, 0xe17c, 0x783c, 0xe171, 0x7836, 0xe166, 0x7830, 0xe15b,
- 0x782a, 0xe150, 0x7824, 0xe145, 0x781e, 0xe13a, 0x7818, 0xe12f,
- 0x7812, 0xe124, 0x780b, 0xe119, 0x7805, 0xe10e, 0x77ff, 0xe103,
- 0x77f9, 0xe0f8, 0x77f3, 0xe0ed, 0x77ed, 0xe0e2, 0x77e7, 0xe0d7,
- 0x77e1, 0xe0cc, 0x77db, 0xe0c1, 0x77d5, 0xe0b6, 0x77ce, 0xe0ab,
- 0x77c8, 0xe0a0, 0x77c2, 0xe095, 0x77bc, 0xe08a, 0x77b6, 0xe07f,
- 0x77b0, 0xe074, 0x77a9, 0xe069, 0x77a3, 0xe05e, 0x779d, 0xe054,
- 0x7797, 0xe049, 0x7790, 0xe03e, 0x778a, 0xe033, 0x7784, 0xe028,
- 0x777e, 0xe01d, 0x7777, 0xe012, 0x7771, 0xe007, 0x776b, 0xdffc,
- 0x7765, 0xdff1, 0x775e, 0xdfe7, 0x7758, 0xdfdc, 0x7752, 0xdfd1,
- 0x774b, 0xdfc6, 0x7745, 0xdfbb, 0x773f, 0xdfb0, 0x7738, 0xdfa5,
- 0x7732, 0xdf9b, 0x772c, 0xdf90, 0x7725, 0xdf85, 0x771f, 0xdf7a,
- 0x7718, 0xdf6f, 0x7712, 0xdf65, 0x770c, 0xdf5a, 0x7705, 0xdf4f,
- 0x76ff, 0xdf44, 0x76f8, 0xdf39, 0x76f2, 0xdf2f, 0x76eb, 0xdf24,
- 0x76e5, 0xdf19, 0x76df, 0xdf0e, 0x76d8, 0xdf03, 0x76d2, 0xdef9,
- 0x76cb, 0xdeee, 0x76c5, 0xdee3, 0x76be, 0xded8, 0x76b8, 0xdece,
- 0x76b1, 0xdec3, 0x76ab, 0xdeb8, 0x76a4, 0xdead, 0x769d, 0xdea3,
- 0x7697, 0xde98, 0x7690, 0xde8d, 0x768a, 0xde83, 0x7683, 0xde78,
- 0x767d, 0xde6d, 0x7676, 0xde62, 0x766f, 0xde58, 0x7669, 0xde4d,
- 0x7662, 0xde42, 0x765c, 0xde38, 0x7655, 0xde2d, 0x764e, 0xde22,
- 0x7648, 0xde18, 0x7641, 0xde0d, 0x763a, 0xde02, 0x7634, 0xddf8,
- 0x762d, 0xdded, 0x7626, 0xdde2, 0x7620, 0xddd8, 0x7619, 0xddcd,
- 0x7612, 0xddc3, 0x760b, 0xddb8, 0x7605, 0xddad, 0x75fe, 0xdda3,
- 0x75f7, 0xdd98, 0x75f0, 0xdd8e, 0x75ea, 0xdd83, 0x75e3, 0xdd78,
- 0x75dc, 0xdd6e, 0x75d5, 0xdd63, 0x75ce, 0xdd59, 0x75c8, 0xdd4e,
- 0x75c1, 0xdd44, 0x75ba, 0xdd39, 0x75b3, 0xdd2e, 0x75ac, 0xdd24,
- 0x75a5, 0xdd19, 0x759f, 0xdd0f, 0x7598, 0xdd04, 0x7591, 0xdcfa,
- 0x758a, 0xdcef, 0x7583, 0xdce5, 0x757c, 0xdcda, 0x7575, 0xdcd0,
- 0x756e, 0xdcc5, 0x7567, 0xdcbb, 0x7561, 0xdcb0, 0x755a, 0xdca6,
- 0x7553, 0xdc9b, 0x754c, 0xdc91, 0x7545, 0xdc86, 0x753e, 0xdc7c,
- 0x7537, 0xdc72, 0x7530, 0xdc67, 0x7529, 0xdc5d, 0x7522, 0xdc52,
- 0x751b, 0xdc48, 0x7514, 0xdc3d, 0x750d, 0xdc33, 0x7506, 0xdc29,
- 0x74ff, 0xdc1e, 0x74f8, 0xdc14, 0x74f1, 0xdc09, 0x74ea, 0xdbff,
- 0x74e2, 0xdbf5, 0x74db, 0xdbea, 0x74d4, 0xdbe0, 0x74cd, 0xdbd5,
- 0x74c6, 0xdbcb, 0x74bf, 0xdbc1, 0x74b8, 0xdbb6, 0x74b1, 0xdbac,
- 0x74aa, 0xdba2, 0x74a2, 0xdb97, 0x749b, 0xdb8d, 0x7494, 0xdb83,
- 0x748d, 0xdb78, 0x7486, 0xdb6e, 0x747f, 0xdb64, 0x7477, 0xdb59,
- 0x7470, 0xdb4f, 0x7469, 0xdb45, 0x7462, 0xdb3b, 0x745b, 0xdb30,
- 0x7453, 0xdb26, 0x744c, 0xdb1c, 0x7445, 0xdb11, 0x743e, 0xdb07,
- 0x7436, 0xdafd, 0x742f, 0xdaf3, 0x7428, 0xdae8, 0x7420, 0xdade,
- 0x7419, 0xdad4, 0x7412, 0xdaca, 0x740b, 0xdabf, 0x7403, 0xdab5,
- 0x73fc, 0xdaab, 0x73f5, 0xdaa1, 0x73ed, 0xda97, 0x73e6, 0xda8c,
- 0x73df, 0xda82, 0x73d7, 0xda78, 0x73d0, 0xda6e, 0x73c8, 0xda64,
- 0x73c1, 0xda5a, 0x73ba, 0xda4f, 0x73b2, 0xda45, 0x73ab, 0xda3b,
- 0x73a3, 0xda31, 0x739c, 0xda27, 0x7395, 0xda1d, 0x738d, 0xda13,
- 0x7386, 0xda08, 0x737e, 0xd9fe, 0x7377, 0xd9f4, 0x736f, 0xd9ea,
- 0x7368, 0xd9e0, 0x7360, 0xd9d6, 0x7359, 0xd9cc, 0x7351, 0xd9c2,
- 0x734a, 0xd9b8, 0x7342, 0xd9ae, 0x733b, 0xd9a4, 0x7333, 0xd99a,
- 0x732c, 0xd98f, 0x7324, 0xd985, 0x731d, 0xd97b, 0x7315, 0xd971,
- 0x730d, 0xd967, 0x7306, 0xd95d, 0x72fe, 0xd953, 0x72f7, 0xd949,
- 0x72ef, 0xd93f, 0x72e7, 0xd935, 0x72e0, 0xd92b, 0x72d8, 0xd921,
- 0x72d0, 0xd917, 0x72c9, 0xd90d, 0x72c1, 0xd903, 0x72ba, 0xd8f9,
- 0x72b2, 0xd8ef, 0x72aa, 0xd8e6, 0x72a3, 0xd8dc, 0x729b, 0xd8d2,
- 0x7293, 0xd8c8, 0x728b, 0xd8be, 0x7284, 0xd8b4, 0x727c, 0xd8aa,
- 0x7274, 0xd8a0, 0x726d, 0xd896, 0x7265, 0xd88c, 0x725d, 0xd882,
- 0x7255, 0xd878, 0x724e, 0xd86f, 0x7246, 0xd865, 0x723e, 0xd85b,
- 0x7236, 0xd851, 0x722e, 0xd847, 0x7227, 0xd83d, 0x721f, 0xd833,
- 0x7217, 0xd82a, 0x720f, 0xd820, 0x7207, 0xd816, 0x71ff, 0xd80c,
- 0x71f8, 0xd802, 0x71f0, 0xd7f8, 0x71e8, 0xd7ef, 0x71e0, 0xd7e5,
- 0x71d8, 0xd7db, 0x71d0, 0xd7d1, 0x71c8, 0xd7c8, 0x71c0, 0xd7be,
- 0x71b9, 0xd7b4, 0x71b1, 0xd7aa, 0x71a9, 0xd7a0, 0x71a1, 0xd797,
- 0x7199, 0xd78d, 0x7191, 0xd783, 0x7189, 0xd77a, 0x7181, 0xd770,
- 0x7179, 0xd766, 0x7171, 0xd75c, 0x7169, 0xd753, 0x7161, 0xd749,
- 0x7159, 0xd73f, 0x7151, 0xd736, 0x7149, 0xd72c, 0x7141, 0xd722,
- 0x7139, 0xd719, 0x7131, 0xd70f, 0x7129, 0xd705, 0x7121, 0xd6fc,
- 0x7119, 0xd6f2, 0x7111, 0xd6e8, 0x7109, 0xd6df, 0x7101, 0xd6d5,
- 0x70f9, 0xd6cb, 0x70f0, 0xd6c2, 0x70e8, 0xd6b8, 0x70e0, 0xd6af,
- 0x70d8, 0xd6a5, 0x70d0, 0xd69b, 0x70c8, 0xd692, 0x70c0, 0xd688,
- 0x70b8, 0xd67f, 0x70af, 0xd675, 0x70a7, 0xd66c, 0x709f, 0xd662,
- 0x7097, 0xd659, 0x708f, 0xd64f, 0x7087, 0xd645, 0x707e, 0xd63c,
- 0x7076, 0xd632, 0x706e, 0xd629, 0x7066, 0xd61f, 0x705d, 0xd616,
- 0x7055, 0xd60c, 0x704d, 0xd603, 0x7045, 0xd5f9, 0x703c, 0xd5f0,
- 0x7034, 0xd5e6, 0x702c, 0xd5dd, 0x7024, 0xd5d4, 0x701b, 0xd5ca,
- 0x7013, 0xd5c1, 0x700b, 0xd5b7, 0x7002, 0xd5ae, 0x6ffa, 0xd5a4,
- 0x6ff2, 0xd59b, 0x6fea, 0xd592, 0x6fe1, 0xd588, 0x6fd9, 0xd57f,
- 0x6fd0, 0xd575, 0x6fc8, 0xd56c, 0x6fc0, 0xd563, 0x6fb7, 0xd559,
- 0x6faf, 0xd550, 0x6fa7, 0xd547, 0x6f9e, 0xd53d, 0x6f96, 0xd534,
- 0x6f8d, 0xd52a, 0x6f85, 0xd521, 0x6f7d, 0xd518, 0x6f74, 0xd50e,
- 0x6f6c, 0xd505, 0x6f63, 0xd4fc, 0x6f5b, 0xd4f3, 0x6f52, 0xd4e9,
- 0x6f4a, 0xd4e0, 0x6f41, 0xd4d7, 0x6f39, 0xd4cd, 0x6f30, 0xd4c4,
- 0x6f28, 0xd4bb, 0x6f20, 0xd4b2, 0x6f17, 0xd4a8, 0x6f0e, 0xd49f,
- 0x6f06, 0xd496, 0x6efd, 0xd48d, 0x6ef5, 0xd483, 0x6eec, 0xd47a,
- 0x6ee4, 0xd471, 0x6edb, 0xd468, 0x6ed3, 0xd45f, 0x6eca, 0xd455,
- 0x6ec2, 0xd44c, 0x6eb9, 0xd443, 0x6eb0, 0xd43a, 0x6ea8, 0xd431,
- 0x6e9f, 0xd428, 0x6e97, 0xd41e, 0x6e8e, 0xd415, 0x6e85, 0xd40c,
- 0x6e7d, 0xd403, 0x6e74, 0xd3fa, 0x6e6b, 0xd3f1, 0x6e63, 0xd3e8,
- 0x6e5a, 0xd3df, 0x6e51, 0xd3d5, 0x6e49, 0xd3cc, 0x6e40, 0xd3c3,
- 0x6e37, 0xd3ba, 0x6e2f, 0xd3b1, 0x6e26, 0xd3a8, 0x6e1d, 0xd39f,
- 0x6e15, 0xd396, 0x6e0c, 0xd38d, 0x6e03, 0xd384, 0x6dfa, 0xd37b,
- 0x6df2, 0xd372, 0x6de9, 0xd369, 0x6de0, 0xd360, 0x6dd7, 0xd357,
- 0x6dcf, 0xd34e, 0x6dc6, 0xd345, 0x6dbd, 0xd33c, 0x6db4, 0xd333,
- 0x6dab, 0xd32a, 0x6da3, 0xd321, 0x6d9a, 0xd318, 0x6d91, 0xd30f,
- 0x6d88, 0xd306, 0x6d7f, 0xd2fd, 0x6d76, 0xd2f4, 0x6d6e, 0xd2eb,
- 0x6d65, 0xd2e2, 0x6d5c, 0xd2d9, 0x6d53, 0xd2d1, 0x6d4a, 0xd2c8,
- 0x6d41, 0xd2bf, 0x6d38, 0xd2b6, 0x6d2f, 0xd2ad, 0x6d27, 0xd2a4,
- 0x6d1e, 0xd29b, 0x6d15, 0xd292, 0x6d0c, 0xd28a, 0x6d03, 0xd281,
- 0x6cfa, 0xd278, 0x6cf1, 0xd26f, 0x6ce8, 0xd266, 0x6cdf, 0xd25d,
- 0x6cd6, 0xd255, 0x6ccd, 0xd24c, 0x6cc4, 0xd243, 0x6cbb, 0xd23a,
- 0x6cb2, 0xd231, 0x6ca9, 0xd229, 0x6ca0, 0xd220, 0x6c97, 0xd217,
- 0x6c8e, 0xd20e, 0x6c85, 0xd206, 0x6c7c, 0xd1fd, 0x6c73, 0xd1f4,
- 0x6c6a, 0xd1eb, 0x6c61, 0xd1e3, 0x6c58, 0xd1da, 0x6c4f, 0xd1d1,
- 0x6c46, 0xd1c9, 0x6c3d, 0xd1c0, 0x6c34, 0xd1b7, 0x6c2b, 0xd1af,
- 0x6c21, 0xd1a6, 0x6c18, 0xd19d, 0x6c0f, 0xd195, 0x6c06, 0xd18c,
- 0x6bfd, 0xd183, 0x6bf4, 0xd17b, 0x6beb, 0xd172, 0x6be2, 0xd169,
- 0x6bd8, 0xd161, 0x6bcf, 0xd158, 0x6bc6, 0xd150, 0x6bbd, 0xd147,
- 0x6bb4, 0xd13e, 0x6bab, 0xd136, 0x6ba1, 0xd12d, 0x6b98, 0xd125,
- 0x6b8f, 0xd11c, 0x6b86, 0xd114, 0x6b7d, 0xd10b, 0x6b73, 0xd103,
- 0x6b6a, 0xd0fa, 0x6b61, 0xd0f2, 0x6b58, 0xd0e9, 0x6b4e, 0xd0e0,
- 0x6b45, 0xd0d8, 0x6b3c, 0xd0d0, 0x6b33, 0xd0c7, 0x6b29, 0xd0bf,
- 0x6b20, 0xd0b6, 0x6b17, 0xd0ae, 0x6b0d, 0xd0a5, 0x6b04, 0xd09d,
- 0x6afb, 0xd094, 0x6af2, 0xd08c, 0x6ae8, 0xd083, 0x6adf, 0xd07b,
- 0x6ad6, 0xd073, 0x6acc, 0xd06a, 0x6ac3, 0xd062, 0x6ab9, 0xd059,
- 0x6ab0, 0xd051, 0x6aa7, 0xd049, 0x6a9d, 0xd040, 0x6a94, 0xd038,
- 0x6a8b, 0xd030, 0x6a81, 0xd027, 0x6a78, 0xd01f, 0x6a6e, 0xd016,
- 0x6a65, 0xd00e, 0x6a5c, 0xd006, 0x6a52, 0xcffe, 0x6a49, 0xcff5,
- 0x6a3f, 0xcfed, 0x6a36, 0xcfe5, 0x6a2c, 0xcfdc, 0x6a23, 0xcfd4,
- 0x6a1a, 0xcfcc, 0x6a10, 0xcfc4, 0x6a07, 0xcfbb, 0x69fd, 0xcfb3,
- 0x69f4, 0xcfab, 0x69ea, 0xcfa3, 0x69e1, 0xcf9a, 0x69d7, 0xcf92,
- 0x69ce, 0xcf8a, 0x69c4, 0xcf82, 0x69bb, 0xcf79, 0x69b1, 0xcf71,
- 0x69a7, 0xcf69, 0x699e, 0xcf61, 0x6994, 0xcf59, 0x698b, 0xcf51,
- 0x6981, 0xcf48, 0x6978, 0xcf40, 0x696e, 0xcf38, 0x6965, 0xcf30,
- 0x695b, 0xcf28, 0x6951, 0xcf20, 0x6948, 0xcf18, 0x693e, 0xcf10,
- 0x6935, 0xcf07, 0x692b, 0xceff, 0x6921, 0xcef7, 0x6918, 0xceef,
- 0x690e, 0xcee7, 0x6904, 0xcedf, 0x68fb, 0xced7, 0x68f1, 0xcecf,
- 0x68e7, 0xcec7, 0x68de, 0xcebf, 0x68d4, 0xceb7, 0x68ca, 0xceaf,
- 0x68c1, 0xcea7, 0x68b7, 0xce9f, 0x68ad, 0xce97, 0x68a4, 0xce8f,
- 0x689a, 0xce87, 0x6890, 0xce7f, 0x6886, 0xce77, 0x687d, 0xce6f,
- 0x6873, 0xce67, 0x6869, 0xce5f, 0x6860, 0xce57, 0x6856, 0xce4f,
- 0x684c, 0xce47, 0x6842, 0xce40, 0x6838, 0xce38, 0x682f, 0xce30,
- 0x6825, 0xce28, 0x681b, 0xce20, 0x6811, 0xce18, 0x6808, 0xce10,
- 0x67fe, 0xce08, 0x67f4, 0xce01, 0x67ea, 0xcdf9, 0x67e0, 0xcdf1,
- 0x67d6, 0xcde9, 0x67cd, 0xcde1, 0x67c3, 0xcdd9, 0x67b9, 0xcdd2,
- 0x67af, 0xcdca, 0x67a5, 0xcdc2, 0x679b, 0xcdba, 0x6791, 0xcdb2,
- 0x6788, 0xcdab, 0x677e, 0xcda3, 0x6774, 0xcd9b, 0x676a, 0xcd93,
- 0x6760, 0xcd8c, 0x6756, 0xcd84, 0x674c, 0xcd7c, 0x6742, 0xcd75,
- 0x6738, 0xcd6d, 0x672e, 0xcd65, 0x6724, 0xcd5d, 0x671a, 0xcd56,
- 0x6711, 0xcd4e, 0x6707, 0xcd46, 0x66fd, 0xcd3f, 0x66f3, 0xcd37,
- 0x66e9, 0xcd30, 0x66df, 0xcd28, 0x66d5, 0xcd20, 0x66cb, 0xcd19,
- 0x66c1, 0xcd11, 0x66b7, 0xcd09, 0x66ad, 0xcd02, 0x66a3, 0xccfa,
- 0x6699, 0xccf3, 0x668f, 0xcceb, 0x6685, 0xcce3, 0x667b, 0xccdc,
- 0x6671, 0xccd4, 0x6666, 0xcccd, 0x665c, 0xccc5, 0x6652, 0xccbe,
- 0x6648, 0xccb6, 0x663e, 0xccaf, 0x6634, 0xcca7, 0x662a, 0xcca0,
- 0x6620, 0xcc98, 0x6616, 0xcc91, 0x660c, 0xcc89, 0x6602, 0xcc82,
- 0x65f8, 0xcc7a, 0x65ed, 0xcc73, 0x65e3, 0xcc6b, 0x65d9, 0xcc64,
- 0x65cf, 0xcc5d, 0x65c5, 0xcc55, 0x65bb, 0xcc4e, 0x65b1, 0xcc46,
- 0x65a6, 0xcc3f, 0x659c, 0xcc38, 0x6592, 0xcc30, 0x6588, 0xcc29,
- 0x657e, 0xcc21, 0x6574, 0xcc1a, 0x6569, 0xcc13, 0x655f, 0xcc0b,
- 0x6555, 0xcc04, 0x654b, 0xcbfd, 0x6541, 0xcbf5, 0x6536, 0xcbee,
- 0x652c, 0xcbe7, 0x6522, 0xcbe0, 0x6518, 0xcbd8, 0x650d, 0xcbd1,
- 0x6503, 0xcbca, 0x64f9, 0xcbc2, 0x64ef, 0xcbbb, 0x64e4, 0xcbb4,
- 0x64da, 0xcbad, 0x64d0, 0xcba5, 0x64c5, 0xcb9e, 0x64bb, 0xcb97,
- 0x64b1, 0xcb90, 0x64a7, 0xcb89, 0x649c, 0xcb81, 0x6492, 0xcb7a,
- 0x6488, 0xcb73, 0x647d, 0xcb6c, 0x6473, 0xcb65, 0x6469, 0xcb5e,
- 0x645e, 0xcb56, 0x6454, 0xcb4f, 0x644a, 0xcb48, 0x643f, 0xcb41,
- 0x6435, 0xcb3a, 0x642b, 0xcb33, 0x6420, 0xcb2c, 0x6416, 0xcb25,
- 0x640b, 0xcb1e, 0x6401, 0xcb16, 0x63f7, 0xcb0f, 0x63ec, 0xcb08,
- 0x63e2, 0xcb01, 0x63d7, 0xcafa, 0x63cd, 0xcaf3, 0x63c3, 0xcaec,
- 0x63b8, 0xcae5, 0x63ae, 0xcade, 0x63a3, 0xcad7, 0x6399, 0xcad0,
- 0x638e, 0xcac9, 0x6384, 0xcac2, 0x637a, 0xcabb, 0x636f, 0xcab4,
- 0x6365, 0xcaad, 0x635a, 0xcaa6, 0x6350, 0xca9f, 0x6345, 0xca99,
- 0x633b, 0xca92, 0x6330, 0xca8b, 0x6326, 0xca84, 0x631b, 0xca7d,
- 0x6311, 0xca76, 0x6306, 0xca6f, 0x62fc, 0xca68, 0x62f1, 0xca61,
- 0x62e7, 0xca5b, 0x62dc, 0xca54, 0x62d2, 0xca4d, 0x62c7, 0xca46,
- 0x62bc, 0xca3f, 0x62b2, 0xca38, 0x62a7, 0xca32, 0x629d, 0xca2b,
- 0x6292, 0xca24, 0x6288, 0xca1d, 0x627d, 0xca16, 0x6272, 0xca10,
- 0x6268, 0xca09, 0x625d, 0xca02, 0x6253, 0xc9fb, 0x6248, 0xc9f5,
- 0x623d, 0xc9ee, 0x6233, 0xc9e7, 0x6228, 0xc9e0, 0x621e, 0xc9da,
- 0x6213, 0xc9d3, 0x6208, 0xc9cc, 0x61fe, 0xc9c6, 0x61f3, 0xc9bf,
- 0x61e8, 0xc9b8, 0x61de, 0xc9b2, 0x61d3, 0xc9ab, 0x61c8, 0xc9a4,
- 0x61be, 0xc99e, 0x61b3, 0xc997, 0x61a8, 0xc991, 0x619e, 0xc98a,
- 0x6193, 0xc983, 0x6188, 0xc97d, 0x617d, 0xc976, 0x6173, 0xc970,
- 0x6168, 0xc969, 0x615d, 0xc963, 0x6153, 0xc95c, 0x6148, 0xc955,
- 0x613d, 0xc94f, 0x6132, 0xc948, 0x6128, 0xc942, 0x611d, 0xc93b,
- 0x6112, 0xc935, 0x6107, 0xc92e, 0x60fd, 0xc928, 0x60f2, 0xc921,
- 0x60e7, 0xc91b, 0x60dc, 0xc915, 0x60d1, 0xc90e, 0x60c7, 0xc908,
- 0x60bc, 0xc901, 0x60b1, 0xc8fb, 0x60a6, 0xc8f4, 0x609b, 0xc8ee,
- 0x6091, 0xc8e8, 0x6086, 0xc8e1, 0x607b, 0xc8db, 0x6070, 0xc8d4,
- 0x6065, 0xc8ce, 0x605b, 0xc8c8, 0x6050, 0xc8c1, 0x6045, 0xc8bb,
- 0x603a, 0xc8b5, 0x602f, 0xc8ae, 0x6024, 0xc8a8, 0x6019, 0xc8a2,
- 0x600f, 0xc89b, 0x6004, 0xc895, 0x5ff9, 0xc88f, 0x5fee, 0xc889,
- 0x5fe3, 0xc882, 0x5fd8, 0xc87c, 0x5fcd, 0xc876, 0x5fc2, 0xc870,
- 0x5fb7, 0xc869, 0x5fac, 0xc863, 0x5fa2, 0xc85d, 0x5f97, 0xc857,
- 0x5f8c, 0xc850, 0x5f81, 0xc84a, 0x5f76, 0xc844, 0x5f6b, 0xc83e,
- 0x5f60, 0xc838, 0x5f55, 0xc832, 0x5f4a, 0xc82b, 0x5f3f, 0xc825,
- 0x5f34, 0xc81f, 0x5f29, 0xc819, 0x5f1e, 0xc813, 0x5f13, 0xc80d,
- 0x5f08, 0xc807, 0x5efd, 0xc801, 0x5ef2, 0xc7fb, 0x5ee7, 0xc7f5,
- 0x5edc, 0xc7ee, 0x5ed1, 0xc7e8, 0x5ec6, 0xc7e2, 0x5ebb, 0xc7dc,
- 0x5eb0, 0xc7d6, 0x5ea5, 0xc7d0, 0x5e9a, 0xc7ca, 0x5e8f, 0xc7c4,
- 0x5e84, 0xc7be, 0x5e79, 0xc7b8, 0x5e6e, 0xc7b2, 0x5e63, 0xc7ac,
- 0x5e58, 0xc7a6, 0x5e4d, 0xc7a0, 0x5e42, 0xc79a, 0x5e36, 0xc795,
- 0x5e2b, 0xc78f, 0x5e20, 0xc789, 0x5e15, 0xc783, 0x5e0a, 0xc77d,
- 0x5dff, 0xc777, 0x5df4, 0xc771, 0x5de9, 0xc76b, 0x5dde, 0xc765,
- 0x5dd3, 0xc75f, 0x5dc7, 0xc75a, 0x5dbc, 0xc754, 0x5db1, 0xc74e,
- 0x5da6, 0xc748, 0x5d9b, 0xc742, 0x5d90, 0xc73d, 0x5d85, 0xc737,
- 0x5d79, 0xc731, 0x5d6e, 0xc72b, 0x5d63, 0xc725, 0x5d58, 0xc720,
- 0x5d4d, 0xc71a, 0x5d42, 0xc714, 0x5d36, 0xc70e, 0x5d2b, 0xc709,
- 0x5d20, 0xc703, 0x5d15, 0xc6fd, 0x5d0a, 0xc6f7, 0x5cff, 0xc6f2,
- 0x5cf3, 0xc6ec, 0x5ce8, 0xc6e6, 0x5cdd, 0xc6e1, 0x5cd2, 0xc6db,
- 0x5cc6, 0xc6d5, 0x5cbb, 0xc6d0, 0x5cb0, 0xc6ca, 0x5ca5, 0xc6c5,
- 0x5c99, 0xc6bf, 0x5c8e, 0xc6b9, 0x5c83, 0xc6b4, 0x5c78, 0xc6ae,
- 0x5c6c, 0xc6a8, 0x5c61, 0xc6a3, 0x5c56, 0xc69d, 0x5c4b, 0xc698,
- 0x5c3f, 0xc692, 0x5c34, 0xc68d, 0x5c29, 0xc687, 0x5c1e, 0xc682,
- 0x5c12, 0xc67c, 0x5c07, 0xc677, 0x5bfc, 0xc671, 0x5bf0, 0xc66c,
- 0x5be5, 0xc666, 0x5bda, 0xc661, 0x5bce, 0xc65b, 0x5bc3, 0xc656,
- 0x5bb8, 0xc650, 0x5bac, 0xc64b, 0x5ba1, 0xc645, 0x5b96, 0xc640,
- 0x5b8a, 0xc63b, 0x5b7f, 0xc635, 0x5b74, 0xc630, 0x5b68, 0xc62a,
- 0x5b5d, 0xc625, 0x5b52, 0xc620, 0x5b46, 0xc61a, 0x5b3b, 0xc615,
- 0x5b30, 0xc610, 0x5b24, 0xc60a, 0x5b19, 0xc605, 0x5b0d, 0xc600,
- 0x5b02, 0xc5fa, 0x5af7, 0xc5f5, 0x5aeb, 0xc5f0, 0x5ae0, 0xc5ea,
- 0x5ad4, 0xc5e5, 0x5ac9, 0xc5e0, 0x5abe, 0xc5db, 0x5ab2, 0xc5d5,
- 0x5aa7, 0xc5d0, 0x5a9b, 0xc5cb, 0x5a90, 0xc5c6, 0x5a84, 0xc5c1,
- 0x5a79, 0xc5bb, 0x5a6e, 0xc5b6, 0x5a62, 0xc5b1, 0x5a57, 0xc5ac,
- 0x5a4b, 0xc5a7, 0x5a40, 0xc5a1, 0x5a34, 0xc59c, 0x5a29, 0xc597,
- 0x5a1d, 0xc592, 0x5a12, 0xc58d, 0x5a06, 0xc588, 0x59fb, 0xc583,
- 0x59ef, 0xc57e, 0x59e4, 0xc578, 0x59d8, 0xc573, 0x59cd, 0xc56e,
- 0x59c1, 0xc569, 0x59b6, 0xc564, 0x59aa, 0xc55f, 0x599f, 0xc55a,
- 0x5993, 0xc555, 0x5988, 0xc550, 0x597c, 0xc54b, 0x5971, 0xc546,
- 0x5965, 0xc541, 0x595a, 0xc53c, 0x594e, 0xc537, 0x5943, 0xc532,
- 0x5937, 0xc52d, 0x592c, 0xc528, 0x5920, 0xc523, 0x5914, 0xc51e,
- 0x5909, 0xc51a, 0x58fd, 0xc515, 0x58f2, 0xc510, 0x58e6, 0xc50b,
- 0x58db, 0xc506, 0x58cf, 0xc501, 0x58c3, 0xc4fc, 0x58b8, 0xc4f7,
- 0x58ac, 0xc4f2, 0x58a1, 0xc4ee, 0x5895, 0xc4e9, 0x5889, 0xc4e4,
- 0x587e, 0xc4df, 0x5872, 0xc4da, 0x5867, 0xc4d6, 0x585b, 0xc4d1,
- 0x584f, 0xc4cc, 0x5844, 0xc4c7, 0x5838, 0xc4c2, 0x582d, 0xc4be,
- 0x5821, 0xc4b9, 0x5815, 0xc4b4, 0x580a, 0xc4b0, 0x57fe, 0xc4ab,
- 0x57f2, 0xc4a6, 0x57e7, 0xc4a1, 0x57db, 0xc49d, 0x57cf, 0xc498,
- 0x57c4, 0xc493, 0x57b8, 0xc48f, 0x57ac, 0xc48a, 0x57a1, 0xc485,
- 0x5795, 0xc481, 0x5789, 0xc47c, 0x577e, 0xc478, 0x5772, 0xc473,
- 0x5766, 0xc46e, 0x575b, 0xc46a, 0x574f, 0xc465, 0x5743, 0xc461,
- 0x5737, 0xc45c, 0x572c, 0xc457, 0x5720, 0xc453, 0x5714, 0xc44e,
- 0x5709, 0xc44a, 0x56fd, 0xc445, 0x56f1, 0xc441, 0x56e5, 0xc43c,
- 0x56da, 0xc438, 0x56ce, 0xc433, 0x56c2, 0xc42f, 0x56b6, 0xc42a,
- 0x56ab, 0xc426, 0x569f, 0xc422, 0x5693, 0xc41d, 0x5687, 0xc419,
- 0x567c, 0xc414, 0x5670, 0xc410, 0x5664, 0xc40b, 0x5658, 0xc407,
- 0x564c, 0xc403, 0x5641, 0xc3fe, 0x5635, 0xc3fa, 0x5629, 0xc3f6,
- 0x561d, 0xc3f1, 0x5612, 0xc3ed, 0x5606, 0xc3e9, 0x55fa, 0xc3e4,
- 0x55ee, 0xc3e0, 0x55e2, 0xc3dc, 0x55d7, 0xc3d7, 0x55cb, 0xc3d3,
- 0x55bf, 0xc3cf, 0x55b3, 0xc3ca, 0x55a7, 0xc3c6, 0x559b, 0xc3c2,
- 0x5590, 0xc3be, 0x5584, 0xc3ba, 0x5578, 0xc3b5, 0x556c, 0xc3b1,
- 0x5560, 0xc3ad, 0x5554, 0xc3a9, 0x5549, 0xc3a5, 0x553d, 0xc3a0,
- 0x5531, 0xc39c, 0x5525, 0xc398, 0x5519, 0xc394, 0x550d, 0xc390,
- 0x5501, 0xc38c, 0x54f6, 0xc387, 0x54ea, 0xc383, 0x54de, 0xc37f,
- 0x54d2, 0xc37b, 0x54c6, 0xc377, 0x54ba, 0xc373, 0x54ae, 0xc36f,
- 0x54a2, 0xc36b, 0x5496, 0xc367, 0x548b, 0xc363, 0x547f, 0xc35f,
- 0x5473, 0xc35b, 0x5467, 0xc357, 0x545b, 0xc353, 0x544f, 0xc34f,
- 0x5443, 0xc34b, 0x5437, 0xc347, 0x542b, 0xc343, 0x541f, 0xc33f,
- 0x5413, 0xc33b, 0x5407, 0xc337, 0x53fb, 0xc333, 0x53f0, 0xc32f,
- 0x53e4, 0xc32b, 0x53d8, 0xc327, 0x53cc, 0xc323, 0x53c0, 0xc320,
- 0x53b4, 0xc31c, 0x53a8, 0xc318, 0x539c, 0xc314, 0x5390, 0xc310,
- 0x5384, 0xc30c, 0x5378, 0xc308, 0x536c, 0xc305, 0x5360, 0xc301,
- 0x5354, 0xc2fd, 0x5348, 0xc2f9, 0x533c, 0xc2f5, 0x5330, 0xc2f2,
- 0x5324, 0xc2ee, 0x5318, 0xc2ea, 0x530c, 0xc2e6, 0x5300, 0xc2e3,
- 0x52f4, 0xc2df, 0x52e8, 0xc2db, 0x52dc, 0xc2d8, 0x52d0, 0xc2d4,
- 0x52c4, 0xc2d0, 0x52b8, 0xc2cc, 0x52ac, 0xc2c9, 0x52a0, 0xc2c5,
- 0x5294, 0xc2c1, 0x5288, 0xc2be, 0x527c, 0xc2ba, 0x5270, 0xc2b7,
- 0x5264, 0xc2b3, 0x5258, 0xc2af, 0x524c, 0xc2ac, 0x5240, 0xc2a8,
- 0x5234, 0xc2a5, 0x5228, 0xc2a1, 0x521c, 0xc29d, 0x5210, 0xc29a,
- 0x5204, 0xc296, 0x51f7, 0xc293, 0x51eb, 0xc28f, 0x51df, 0xc28c,
- 0x51d3, 0xc288, 0x51c7, 0xc285, 0x51bb, 0xc281, 0x51af, 0xc27e,
- 0x51a3, 0xc27a, 0x5197, 0xc277, 0x518b, 0xc273, 0x517f, 0xc270,
- 0x5173, 0xc26d, 0x5167, 0xc269, 0x515a, 0xc266, 0x514e, 0xc262,
- 0x5142, 0xc25f, 0x5136, 0xc25c, 0x512a, 0xc258, 0x511e, 0xc255,
- 0x5112, 0xc251, 0x5106, 0xc24e, 0x50fa, 0xc24b, 0x50ed, 0xc247,
- 0x50e1, 0xc244, 0x50d5, 0xc241, 0x50c9, 0xc23e, 0x50bd, 0xc23a,
- 0x50b1, 0xc237, 0x50a5, 0xc234, 0x5099, 0xc230, 0x508c, 0xc22d,
- 0x5080, 0xc22a, 0x5074, 0xc227, 0x5068, 0xc223, 0x505c, 0xc220,
- 0x5050, 0xc21d, 0x5044, 0xc21a, 0x5037, 0xc217, 0x502b, 0xc213,
- 0x501f, 0xc210, 0x5013, 0xc20d, 0x5007, 0xc20a, 0x4ffb, 0xc207,
- 0x4fee, 0xc204, 0x4fe2, 0xc201, 0x4fd6, 0xc1fd, 0x4fca, 0xc1fa,
- 0x4fbe, 0xc1f7, 0x4fb2, 0xc1f4, 0x4fa5, 0xc1f1, 0x4f99, 0xc1ee,
- 0x4f8d, 0xc1eb, 0x4f81, 0xc1e8, 0x4f75, 0xc1e5, 0x4f68, 0xc1e2,
- 0x4f5c, 0xc1df, 0x4f50, 0xc1dc, 0x4f44, 0xc1d9, 0x4f38, 0xc1d6,
- 0x4f2b, 0xc1d3, 0x4f1f, 0xc1d0, 0x4f13, 0xc1cd, 0x4f07, 0xc1ca,
- 0x4efb, 0xc1c7, 0x4eee, 0xc1c4, 0x4ee2, 0xc1c1, 0x4ed6, 0xc1be,
- 0x4eca, 0xc1bb, 0x4ebd, 0xc1b8, 0x4eb1, 0xc1b6, 0x4ea5, 0xc1b3,
- 0x4e99, 0xc1b0, 0x4e8c, 0xc1ad, 0x4e80, 0xc1aa, 0x4e74, 0xc1a7,
- 0x4e68, 0xc1a4, 0x4e5c, 0xc1a2, 0x4e4f, 0xc19f, 0x4e43, 0xc19c,
- 0x4e37, 0xc199, 0x4e2b, 0xc196, 0x4e1e, 0xc194, 0x4e12, 0xc191,
- 0x4e06, 0xc18e, 0x4df9, 0xc18b, 0x4ded, 0xc189, 0x4de1, 0xc186,
- 0x4dd5, 0xc183, 0x4dc8, 0xc180, 0x4dbc, 0xc17e, 0x4db0, 0xc17b,
- 0x4da4, 0xc178, 0x4d97, 0xc176, 0x4d8b, 0xc173, 0x4d7f, 0xc170,
- 0x4d72, 0xc16e, 0x4d66, 0xc16b, 0x4d5a, 0xc168, 0x4d4e, 0xc166,
- 0x4d41, 0xc163, 0x4d35, 0xc161, 0x4d29, 0xc15e, 0x4d1c, 0xc15b,
- 0x4d10, 0xc159, 0x4d04, 0xc156, 0x4cf8, 0xc154, 0x4ceb, 0xc151,
- 0x4cdf, 0xc14f, 0x4cd3, 0xc14c, 0x4cc6, 0xc14a, 0x4cba, 0xc147,
- 0x4cae, 0xc145, 0x4ca1, 0xc142, 0x4c95, 0xc140, 0x4c89, 0xc13d,
- 0x4c7c, 0xc13b, 0x4c70, 0xc138, 0x4c64, 0xc136, 0x4c57, 0xc134,
- 0x4c4b, 0xc131, 0x4c3f, 0xc12f, 0x4c32, 0xc12c, 0x4c26, 0xc12a,
- 0x4c1a, 0xc128, 0x4c0d, 0xc125, 0x4c01, 0xc123, 0x4bf5, 0xc120,
- 0x4be8, 0xc11e, 0x4bdc, 0xc11c, 0x4bd0, 0xc119, 0x4bc3, 0xc117,
- 0x4bb7, 0xc115, 0x4bab, 0xc113, 0x4b9e, 0xc110, 0x4b92, 0xc10e,
- 0x4b85, 0xc10c, 0x4b79, 0xc109, 0x4b6d, 0xc107, 0x4b60, 0xc105,
- 0x4b54, 0xc103, 0x4b48, 0xc100, 0x4b3b, 0xc0fe, 0x4b2f, 0xc0fc,
- 0x4b23, 0xc0fa, 0x4b16, 0xc0f8, 0x4b0a, 0xc0f6, 0x4afd, 0xc0f3,
- 0x4af1, 0xc0f1, 0x4ae5, 0xc0ef, 0x4ad8, 0xc0ed, 0x4acc, 0xc0eb,
- 0x4ac0, 0xc0e9, 0x4ab3, 0xc0e7, 0x4aa7, 0xc0e4, 0x4a9a, 0xc0e2,
- 0x4a8e, 0xc0e0, 0x4a82, 0xc0de, 0x4a75, 0xc0dc, 0x4a69, 0xc0da,
- 0x4a5c, 0xc0d8, 0x4a50, 0xc0d6, 0x4a44, 0xc0d4, 0x4a37, 0xc0d2,
- 0x4a2b, 0xc0d0, 0x4a1e, 0xc0ce, 0x4a12, 0xc0cc, 0x4a06, 0xc0ca,
- 0x49f9, 0xc0c8, 0x49ed, 0xc0c6, 0x49e0, 0xc0c4, 0x49d4, 0xc0c2,
- 0x49c7, 0xc0c0, 0x49bb, 0xc0be, 0x49af, 0xc0bd, 0x49a2, 0xc0bb,
- 0x4996, 0xc0b9, 0x4989, 0xc0b7, 0x497d, 0xc0b5, 0x4970, 0xc0b3,
- 0x4964, 0xc0b1, 0x4958, 0xc0af, 0x494b, 0xc0ae, 0x493f, 0xc0ac,
- 0x4932, 0xc0aa, 0x4926, 0xc0a8, 0x4919, 0xc0a6, 0x490d, 0xc0a5,
- 0x4901, 0xc0a3, 0x48f4, 0xc0a1, 0x48e8, 0xc09f, 0x48db, 0xc09e,
- 0x48cf, 0xc09c, 0x48c2, 0xc09a, 0x48b6, 0xc098, 0x48a9, 0xc097,
- 0x489d, 0xc095, 0x4891, 0xc093, 0x4884, 0xc092, 0x4878, 0xc090,
- 0x486b, 0xc08e, 0x485f, 0xc08d, 0x4852, 0xc08b, 0x4846, 0xc089,
- 0x4839, 0xc088, 0x482d, 0xc086, 0x4820, 0xc085, 0x4814, 0xc083,
- 0x4807, 0xc081, 0x47fb, 0xc080, 0x47ef, 0xc07e, 0x47e2, 0xc07d,
- 0x47d6, 0xc07b, 0x47c9, 0xc07a, 0x47bd, 0xc078, 0x47b0, 0xc077,
- 0x47a4, 0xc075, 0x4797, 0xc074, 0x478b, 0xc072, 0x477e, 0xc071,
- 0x4772, 0xc06f, 0x4765, 0xc06e, 0x4759, 0xc06c, 0x474c, 0xc06b,
- 0x4740, 0xc069, 0x4733, 0xc068, 0x4727, 0xc067, 0x471a, 0xc065,
- 0x470e, 0xc064, 0x4701, 0xc062, 0x46f5, 0xc061, 0x46e8, 0xc060,
- 0x46dc, 0xc05e, 0x46cf, 0xc05d, 0x46c3, 0xc05c, 0x46b6, 0xc05a,
- 0x46aa, 0xc059, 0x469d, 0xc058, 0x4691, 0xc056, 0x4684, 0xc055,
- 0x4678, 0xc054, 0x466b, 0xc053, 0x465f, 0xc051, 0x4652, 0xc050,
- 0x4646, 0xc04f, 0x4639, 0xc04e, 0x462d, 0xc04c, 0x4620, 0xc04b,
- 0x4614, 0xc04a, 0x4607, 0xc049, 0x45fb, 0xc048, 0x45ee, 0xc047,
- 0x45e2, 0xc045, 0x45d5, 0xc044, 0x45c9, 0xc043, 0x45bc, 0xc042,
- 0x45b0, 0xc041, 0x45a3, 0xc040, 0x4597, 0xc03f, 0x458a, 0xc03d,
- 0x457e, 0xc03c, 0x4571, 0xc03b, 0x4565, 0xc03a, 0x4558, 0xc039,
- 0x454c, 0xc038, 0x453f, 0xc037, 0x4533, 0xc036, 0x4526, 0xc035,
- 0x451a, 0xc034, 0x450d, 0xc033, 0x4500, 0xc032, 0x44f4, 0xc031,
- 0x44e7, 0xc030, 0x44db, 0xc02f, 0x44ce, 0xc02e, 0x44c2, 0xc02d,
- 0x44b5, 0xc02c, 0x44a9, 0xc02b, 0x449c, 0xc02b, 0x4490, 0xc02a,
- 0x4483, 0xc029, 0x4477, 0xc028, 0x446a, 0xc027, 0x445e, 0xc026,
- 0x4451, 0xc025, 0x4444, 0xc024, 0x4438, 0xc024, 0x442b, 0xc023,
- 0x441f, 0xc022, 0x4412, 0xc021, 0x4406, 0xc020, 0x43f9, 0xc020,
- 0x43ed, 0xc01f, 0x43e0, 0xc01e, 0x43d4, 0xc01d, 0x43c7, 0xc01d,
- 0x43bb, 0xc01c, 0x43ae, 0xc01b, 0x43a1, 0xc01a, 0x4395, 0xc01a,
- 0x4388, 0xc019, 0x437c, 0xc018, 0x436f, 0xc018, 0x4363, 0xc017,
- 0x4356, 0xc016, 0x434a, 0xc016, 0x433d, 0xc015, 0x4330, 0xc014,
- 0x4324, 0xc014, 0x4317, 0xc013, 0x430b, 0xc013, 0x42fe, 0xc012,
- 0x42f2, 0xc011, 0x42e5, 0xc011, 0x42d9, 0xc010, 0x42cc, 0xc010,
- 0x42c0, 0xc00f, 0x42b3, 0xc00f, 0x42a6, 0xc00e, 0x429a, 0xc00e,
- 0x428d, 0xc00d, 0x4281, 0xc00d, 0x4274, 0xc00c, 0x4268, 0xc00c,
- 0x425b, 0xc00b, 0x424e, 0xc00b, 0x4242, 0xc00a, 0x4235, 0xc00a,
- 0x4229, 0xc009, 0x421c, 0xc009, 0x4210, 0xc009, 0x4203, 0xc008,
- 0x41f7, 0xc008, 0x41ea, 0xc007, 0x41dd, 0xc007, 0x41d1, 0xc007,
- 0x41c4, 0xc006, 0x41b8, 0xc006, 0x41ab, 0xc006, 0x419f, 0xc005,
- 0x4192, 0xc005, 0x4186, 0xc005, 0x4179, 0xc004, 0x416c, 0xc004,
- 0x4160, 0xc004, 0x4153, 0xc004, 0x4147, 0xc003, 0x413a, 0xc003,
- 0x412e, 0xc003, 0x4121, 0xc003, 0x4114, 0xc002, 0x4108, 0xc002,
- 0x40fb, 0xc002, 0x40ef, 0xc002, 0x40e2, 0xc002, 0x40d6, 0xc001,
- 0x40c9, 0xc001, 0x40bc, 0xc001, 0x40b0, 0xc001, 0x40a3, 0xc001,
- 0x4097, 0xc001, 0x408a, 0xc001, 0x407e, 0xc000, 0x4071, 0xc000,
- 0x4065, 0xc000, 0x4058, 0xc000, 0x404b, 0xc000, 0x403f, 0xc000,
- 0x4032, 0xc000, 0x4026, 0xc000, 0x4019, 0xc000, 0x400d, 0xc000,
+ 0x4000, 0x4000, 0x400d, 0x4000, 0x4019, 0x4000, 0x4026, 0x4000,
+ 0x4032, 0x4000, 0x403f, 0x4000, 0x404b, 0x4000, 0x4058, 0x4000,
+ 0x4065, 0x4000, 0x4071, 0x4000, 0x407e, 0x4000, 0x408a, 0x3fff,
+ 0x4097, 0x3fff, 0x40a3, 0x3fff, 0x40b0, 0x3fff, 0x40bc, 0x3fff,
+ 0x40c9, 0x3fff, 0x40d6, 0x3fff, 0x40e2, 0x3ffe, 0x40ef, 0x3ffe,
+ 0x40fb, 0x3ffe, 0x4108, 0x3ffe, 0x4114, 0x3ffe, 0x4121, 0x3ffd,
+ 0x412e, 0x3ffd, 0x413a, 0x3ffd, 0x4147, 0x3ffd, 0x4153, 0x3ffc,
+ 0x4160, 0x3ffc, 0x416c, 0x3ffc, 0x4179, 0x3ffc, 0x4186, 0x3ffb,
+ 0x4192, 0x3ffb, 0x419f, 0x3ffb, 0x41ab, 0x3ffa, 0x41b8, 0x3ffa,
+ 0x41c4, 0x3ffa, 0x41d1, 0x3ff9, 0x41dd, 0x3ff9, 0x41ea, 0x3ff9,
+ 0x41f7, 0x3ff8, 0x4203, 0x3ff8, 0x4210, 0x3ff7, 0x421c, 0x3ff7,
+ 0x4229, 0x3ff7, 0x4235, 0x3ff6, 0x4242, 0x3ff6, 0x424e, 0x3ff5,
+ 0x425b, 0x3ff5, 0x4268, 0x3ff4, 0x4274, 0x3ff4, 0x4281, 0x3ff3,
+ 0x428d, 0x3ff3, 0x429a, 0x3ff2, 0x42a6, 0x3ff2, 0x42b3, 0x3ff1,
+ 0x42c0, 0x3ff1, 0x42cc, 0x3ff0, 0x42d9, 0x3ff0, 0x42e5, 0x3fef,
+ 0x42f2, 0x3fef, 0x42fe, 0x3fee, 0x430b, 0x3fed, 0x4317, 0x3fed,
+ 0x4324, 0x3fec, 0x4330, 0x3fec, 0x433d, 0x3feb, 0x434a, 0x3fea,
+ 0x4356, 0x3fea, 0x4363, 0x3fe9, 0x436f, 0x3fe8, 0x437c, 0x3fe8,
+ 0x4388, 0x3fe7, 0x4395, 0x3fe6, 0x43a1, 0x3fe6, 0x43ae, 0x3fe5,
+ 0x43bb, 0x3fe4, 0x43c7, 0x3fe3, 0x43d4, 0x3fe3, 0x43e0, 0x3fe2,
+ 0x43ed, 0x3fe1, 0x43f9, 0x3fe0, 0x4406, 0x3fe0, 0x4412, 0x3fdf,
+ 0x441f, 0x3fde, 0x442b, 0x3fdd, 0x4438, 0x3fdc, 0x4444, 0x3fdc,
+ 0x4451, 0x3fdb, 0x445e, 0x3fda, 0x446a, 0x3fd9, 0x4477, 0x3fd8,
+ 0x4483, 0x3fd7, 0x4490, 0x3fd6, 0x449c, 0x3fd5, 0x44a9, 0x3fd5,
+ 0x44b5, 0x3fd4, 0x44c2, 0x3fd3, 0x44ce, 0x3fd2, 0x44db, 0x3fd1,
+ 0x44e7, 0x3fd0, 0x44f4, 0x3fcf, 0x4500, 0x3fce, 0x450d, 0x3fcd,
+ 0x451a, 0x3fcc, 0x4526, 0x3fcb, 0x4533, 0x3fca, 0x453f, 0x3fc9,
+ 0x454c, 0x3fc8, 0x4558, 0x3fc7, 0x4565, 0x3fc6, 0x4571, 0x3fc5,
+ 0x457e, 0x3fc4, 0x458a, 0x3fc3, 0x4597, 0x3fc1, 0x45a3, 0x3fc0,
+ 0x45b0, 0x3fbf, 0x45bc, 0x3fbe, 0x45c9, 0x3fbd, 0x45d5, 0x3fbc,
+ 0x45e2, 0x3fbb, 0x45ee, 0x3fb9, 0x45fb, 0x3fb8, 0x4607, 0x3fb7,
+ 0x4614, 0x3fb6, 0x4620, 0x3fb5, 0x462d, 0x3fb4, 0x4639, 0x3fb2,
+ 0x4646, 0x3fb1, 0x4652, 0x3fb0, 0x465f, 0x3faf, 0x466b, 0x3fad,
+ 0x4678, 0x3fac, 0x4684, 0x3fab, 0x4691, 0x3faa, 0x469d, 0x3fa8,
+ 0x46aa, 0x3fa7, 0x46b6, 0x3fa6, 0x46c3, 0x3fa4, 0x46cf, 0x3fa3,
+ 0x46dc, 0x3fa2, 0x46e8, 0x3fa0, 0x46f5, 0x3f9f, 0x4701, 0x3f9e,
+ 0x470e, 0x3f9c, 0x471a, 0x3f9b, 0x4727, 0x3f99, 0x4733, 0x3f98,
+ 0x4740, 0x3f97, 0x474c, 0x3f95, 0x4759, 0x3f94, 0x4765, 0x3f92,
+ 0x4772, 0x3f91, 0x477e, 0x3f8f, 0x478b, 0x3f8e, 0x4797, 0x3f8c,
+ 0x47a4, 0x3f8b, 0x47b0, 0x3f89, 0x47bd, 0x3f88, 0x47c9, 0x3f86,
+ 0x47d6, 0x3f85, 0x47e2, 0x3f83, 0x47ef, 0x3f82, 0x47fb, 0x3f80,
+ 0x4807, 0x3f7f, 0x4814, 0x3f7d, 0x4820, 0x3f7b, 0x482d, 0x3f7a,
+ 0x4839, 0x3f78, 0x4846, 0x3f77, 0x4852, 0x3f75, 0x485f, 0x3f73,
+ 0x486b, 0x3f72, 0x4878, 0x3f70, 0x4884, 0x3f6e, 0x4891, 0x3f6d,
+ 0x489d, 0x3f6b, 0x48a9, 0x3f69, 0x48b6, 0x3f68, 0x48c2, 0x3f66,
+ 0x48cf, 0x3f64, 0x48db, 0x3f62, 0x48e8, 0x3f61, 0x48f4, 0x3f5f,
+ 0x4901, 0x3f5d, 0x490d, 0x3f5b, 0x4919, 0x3f5a, 0x4926, 0x3f58,
+ 0x4932, 0x3f56, 0x493f, 0x3f54, 0x494b, 0x3f52, 0x4958, 0x3f51,
+ 0x4964, 0x3f4f, 0x4970, 0x3f4d, 0x497d, 0x3f4b, 0x4989, 0x3f49,
+ 0x4996, 0x3f47, 0x49a2, 0x3f45, 0x49af, 0x3f43, 0x49bb, 0x3f42,
+ 0x49c7, 0x3f40, 0x49d4, 0x3f3e, 0x49e0, 0x3f3c, 0x49ed, 0x3f3a,
+ 0x49f9, 0x3f38, 0x4a06, 0x3f36, 0x4a12, 0x3f34, 0x4a1e, 0x3f32,
+ 0x4a2b, 0x3f30, 0x4a37, 0x3f2e, 0x4a44, 0x3f2c, 0x4a50, 0x3f2a,
+ 0x4a5c, 0x3f28, 0x4a69, 0x3f26, 0x4a75, 0x3f24, 0x4a82, 0x3f22,
+ 0x4a8e, 0x3f20, 0x4a9a, 0x3f1e, 0x4aa7, 0x3f1c, 0x4ab3, 0x3f19,
+ 0x4ac0, 0x3f17, 0x4acc, 0x3f15, 0x4ad8, 0x3f13, 0x4ae5, 0x3f11,
+ 0x4af1, 0x3f0f, 0x4afd, 0x3f0d, 0x4b0a, 0x3f0a, 0x4b16, 0x3f08,
+ 0x4b23, 0x3f06, 0x4b2f, 0x3f04, 0x4b3b, 0x3f02, 0x4b48, 0x3f00,
+ 0x4b54, 0x3efd, 0x4b60, 0x3efb, 0x4b6d, 0x3ef9, 0x4b79, 0x3ef7,
+ 0x4b85, 0x3ef4, 0x4b92, 0x3ef2, 0x4b9e, 0x3ef0, 0x4bab, 0x3eed,
+ 0x4bb7, 0x3eeb, 0x4bc3, 0x3ee9, 0x4bd0, 0x3ee7, 0x4bdc, 0x3ee4,
+ 0x4be8, 0x3ee2, 0x4bf5, 0x3ee0, 0x4c01, 0x3edd, 0x4c0d, 0x3edb,
+ 0x4c1a, 0x3ed8, 0x4c26, 0x3ed6, 0x4c32, 0x3ed4, 0x4c3f, 0x3ed1,
+ 0x4c4b, 0x3ecf, 0x4c57, 0x3ecc, 0x4c64, 0x3eca, 0x4c70, 0x3ec8,
+ 0x4c7c, 0x3ec5, 0x4c89, 0x3ec3, 0x4c95, 0x3ec0, 0x4ca1, 0x3ebe,
+ 0x4cae, 0x3ebb, 0x4cba, 0x3eb9, 0x4cc6, 0x3eb6, 0x4cd3, 0x3eb4,
+ 0x4cdf, 0x3eb1, 0x4ceb, 0x3eaf, 0x4cf8, 0x3eac, 0x4d04, 0x3eaa,
+ 0x4d10, 0x3ea7, 0x4d1c, 0x3ea5, 0x4d29, 0x3ea2, 0x4d35, 0x3e9f,
+ 0x4d41, 0x3e9d, 0x4d4e, 0x3e9a, 0x4d5a, 0x3e98, 0x4d66, 0x3e95,
+ 0x4d72, 0x3e92, 0x4d7f, 0x3e90, 0x4d8b, 0x3e8d, 0x4d97, 0x3e8a,
+ 0x4da4, 0x3e88, 0x4db0, 0x3e85, 0x4dbc, 0x3e82, 0x4dc8, 0x3e80,
+ 0x4dd5, 0x3e7d, 0x4de1, 0x3e7a, 0x4ded, 0x3e77, 0x4df9, 0x3e75,
+ 0x4e06, 0x3e72, 0x4e12, 0x3e6f, 0x4e1e, 0x3e6c, 0x4e2b, 0x3e6a,
+ 0x4e37, 0x3e67, 0x4e43, 0x3e64, 0x4e4f, 0x3e61, 0x4e5c, 0x3e5e,
+ 0x4e68, 0x3e5c, 0x4e74, 0x3e59, 0x4e80, 0x3e56, 0x4e8c, 0x3e53,
+ 0x4e99, 0x3e50, 0x4ea5, 0x3e4d, 0x4eb1, 0x3e4a, 0x4ebd, 0x3e48,
+ 0x4eca, 0x3e45, 0x4ed6, 0x3e42, 0x4ee2, 0x3e3f, 0x4eee, 0x3e3c,
+ 0x4efb, 0x3e39, 0x4f07, 0x3e36, 0x4f13, 0x3e33, 0x4f1f, 0x3e30,
+ 0x4f2b, 0x3e2d, 0x4f38, 0x3e2a, 0x4f44, 0x3e27, 0x4f50, 0x3e24,
+ 0x4f5c, 0x3e21, 0x4f68, 0x3e1e, 0x4f75, 0x3e1b, 0x4f81, 0x3e18,
+ 0x4f8d, 0x3e15, 0x4f99, 0x3e12, 0x4fa5, 0x3e0f, 0x4fb2, 0x3e0c,
+ 0x4fbe, 0x3e09, 0x4fca, 0x3e06, 0x4fd6, 0x3e03, 0x4fe2, 0x3dff,
+ 0x4fee, 0x3dfc, 0x4ffb, 0x3df9, 0x5007, 0x3df6, 0x5013, 0x3df3,
+ 0x501f, 0x3df0, 0x502b, 0x3ded, 0x5037, 0x3de9, 0x5044, 0x3de6,
+ 0x5050, 0x3de3, 0x505c, 0x3de0, 0x5068, 0x3ddd, 0x5074, 0x3dd9,
+ 0x5080, 0x3dd6, 0x508c, 0x3dd3, 0x5099, 0x3dd0, 0x50a5, 0x3dcc,
+ 0x50b1, 0x3dc9, 0x50bd, 0x3dc6, 0x50c9, 0x3dc2, 0x50d5, 0x3dbf,
+ 0x50e1, 0x3dbc, 0x50ed, 0x3db9, 0x50fa, 0x3db5, 0x5106, 0x3db2,
+ 0x5112, 0x3daf, 0x511e, 0x3dab, 0x512a, 0x3da8, 0x5136, 0x3da4,
+ 0x5142, 0x3da1, 0x514e, 0x3d9e, 0x515a, 0x3d9a, 0x5167, 0x3d97,
+ 0x5173, 0x3d93, 0x517f, 0x3d90, 0x518b, 0x3d8d, 0x5197, 0x3d89,
+ 0x51a3, 0x3d86, 0x51af, 0x3d82, 0x51bb, 0x3d7f, 0x51c7, 0x3d7b,
+ 0x51d3, 0x3d78, 0x51df, 0x3d74, 0x51eb, 0x3d71, 0x51f7, 0x3d6d,
+ 0x5204, 0x3d6a, 0x5210, 0x3d66, 0x521c, 0x3d63, 0x5228, 0x3d5f,
+ 0x5234, 0x3d5b, 0x5240, 0x3d58, 0x524c, 0x3d54, 0x5258, 0x3d51,
+ 0x5264, 0x3d4d, 0x5270, 0x3d49, 0x527c, 0x3d46, 0x5288, 0x3d42,
+ 0x5294, 0x3d3f, 0x52a0, 0x3d3b, 0x52ac, 0x3d37, 0x52b8, 0x3d34,
+ 0x52c4, 0x3d30, 0x52d0, 0x3d2c, 0x52dc, 0x3d28, 0x52e8, 0x3d25,
+ 0x52f4, 0x3d21, 0x5300, 0x3d1d, 0x530c, 0x3d1a, 0x5318, 0x3d16,
+ 0x5324, 0x3d12, 0x5330, 0x3d0e, 0x533c, 0x3d0b, 0x5348, 0x3d07,
+ 0x5354, 0x3d03, 0x5360, 0x3cff, 0x536c, 0x3cfb, 0x5378, 0x3cf8,
+ 0x5384, 0x3cf4, 0x5390, 0x3cf0, 0x539c, 0x3cec, 0x53a8, 0x3ce8,
+ 0x53b4, 0x3ce4, 0x53c0, 0x3ce0, 0x53cc, 0x3cdd, 0x53d8, 0x3cd9,
+ 0x53e4, 0x3cd5, 0x53f0, 0x3cd1, 0x53fb, 0x3ccd, 0x5407, 0x3cc9,
+ 0x5413, 0x3cc5, 0x541f, 0x3cc1, 0x542b, 0x3cbd, 0x5437, 0x3cb9,
+ 0x5443, 0x3cb5, 0x544f, 0x3cb1, 0x545b, 0x3cad, 0x5467, 0x3ca9,
+ 0x5473, 0x3ca5, 0x547f, 0x3ca1, 0x548b, 0x3c9d, 0x5496, 0x3c99,
+ 0x54a2, 0x3c95, 0x54ae, 0x3c91, 0x54ba, 0x3c8d, 0x54c6, 0x3c89,
+ 0x54d2, 0x3c85, 0x54de, 0x3c81, 0x54ea, 0x3c7d, 0x54f6, 0x3c79,
+ 0x5501, 0x3c74, 0x550d, 0x3c70, 0x5519, 0x3c6c, 0x5525, 0x3c68,
+ 0x5531, 0x3c64, 0x553d, 0x3c60, 0x5549, 0x3c5b, 0x5554, 0x3c57,
+ 0x5560, 0x3c53, 0x556c, 0x3c4f, 0x5578, 0x3c4b, 0x5584, 0x3c46,
+ 0x5590, 0x3c42, 0x559b, 0x3c3e, 0x55a7, 0x3c3a, 0x55b3, 0x3c36,
+ 0x55bf, 0x3c31, 0x55cb, 0x3c2d, 0x55d7, 0x3c29, 0x55e2, 0x3c24,
+ 0x55ee, 0x3c20, 0x55fa, 0x3c1c, 0x5606, 0x3c17, 0x5612, 0x3c13,
+ 0x561d, 0x3c0f, 0x5629, 0x3c0a, 0x5635, 0x3c06, 0x5641, 0x3c02,
+ 0x564c, 0x3bfd, 0x5658, 0x3bf9, 0x5664, 0x3bf5, 0x5670, 0x3bf0,
+ 0x567c, 0x3bec, 0x5687, 0x3be7, 0x5693, 0x3be3, 0x569f, 0x3bde,
+ 0x56ab, 0x3bda, 0x56b6, 0x3bd6, 0x56c2, 0x3bd1, 0x56ce, 0x3bcd,
+ 0x56da, 0x3bc8, 0x56e5, 0x3bc4, 0x56f1, 0x3bbf, 0x56fd, 0x3bbb,
+ 0x5709, 0x3bb6, 0x5714, 0x3bb2, 0x5720, 0x3bad, 0x572c, 0x3ba9,
+ 0x5737, 0x3ba4, 0x5743, 0x3b9f, 0x574f, 0x3b9b, 0x575b, 0x3b96,
+ 0x5766, 0x3b92, 0x5772, 0x3b8d, 0x577e, 0x3b88, 0x5789, 0x3b84,
+ 0x5795, 0x3b7f, 0x57a1, 0x3b7b, 0x57ac, 0x3b76, 0x57b8, 0x3b71,
+ 0x57c4, 0x3b6d, 0x57cf, 0x3b68, 0x57db, 0x3b63, 0x57e7, 0x3b5f,
+ 0x57f2, 0x3b5a, 0x57fe, 0x3b55, 0x580a, 0x3b50, 0x5815, 0x3b4c,
+ 0x5821, 0x3b47, 0x582d, 0x3b42, 0x5838, 0x3b3e, 0x5844, 0x3b39,
+ 0x584f, 0x3b34, 0x585b, 0x3b2f, 0x5867, 0x3b2a, 0x5872, 0x3b26,
+ 0x587e, 0x3b21, 0x5889, 0x3b1c, 0x5895, 0x3b17, 0x58a1, 0x3b12,
+ 0x58ac, 0x3b0e, 0x58b8, 0x3b09, 0x58c3, 0x3b04, 0x58cf, 0x3aff,
+ 0x58db, 0x3afa, 0x58e6, 0x3af5, 0x58f2, 0x3af0, 0x58fd, 0x3aeb,
+ 0x5909, 0x3ae6, 0x5914, 0x3ae2, 0x5920, 0x3add, 0x592c, 0x3ad8,
+ 0x5937, 0x3ad3, 0x5943, 0x3ace, 0x594e, 0x3ac9, 0x595a, 0x3ac4,
+ 0x5965, 0x3abf, 0x5971, 0x3aba, 0x597c, 0x3ab5, 0x5988, 0x3ab0,
+ 0x5993, 0x3aab, 0x599f, 0x3aa6, 0x59aa, 0x3aa1, 0x59b6, 0x3a9c,
+ 0x59c1, 0x3a97, 0x59cd, 0x3a92, 0x59d8, 0x3a8d, 0x59e4, 0x3a88,
+ 0x59ef, 0x3a82, 0x59fb, 0x3a7d, 0x5a06, 0x3a78, 0x5a12, 0x3a73,
+ 0x5a1d, 0x3a6e, 0x5a29, 0x3a69, 0x5a34, 0x3a64, 0x5a40, 0x3a5f,
+ 0x5a4b, 0x3a59, 0x5a57, 0x3a54, 0x5a62, 0x3a4f, 0x5a6e, 0x3a4a,
+ 0x5a79, 0x3a45, 0x5a84, 0x3a3f, 0x5a90, 0x3a3a, 0x5a9b, 0x3a35,
+ 0x5aa7, 0x3a30, 0x5ab2, 0x3a2b, 0x5abe, 0x3a25, 0x5ac9, 0x3a20,
+ 0x5ad4, 0x3a1b, 0x5ae0, 0x3a16, 0x5aeb, 0x3a10, 0x5af7, 0x3a0b,
+ 0x5b02, 0x3a06, 0x5b0d, 0x3a00, 0x5b19, 0x39fb, 0x5b24, 0x39f6,
+ 0x5b30, 0x39f0, 0x5b3b, 0x39eb, 0x5b46, 0x39e6, 0x5b52, 0x39e0,
+ 0x5b5d, 0x39db, 0x5b68, 0x39d6, 0x5b74, 0x39d0, 0x5b7f, 0x39cb,
+ 0x5b8a, 0x39c5, 0x5b96, 0x39c0, 0x5ba1, 0x39bb, 0x5bac, 0x39b5,
+ 0x5bb8, 0x39b0, 0x5bc3, 0x39aa, 0x5bce, 0x39a5, 0x5bda, 0x399f,
+ 0x5be5, 0x399a, 0x5bf0, 0x3994, 0x5bfc, 0x398f, 0x5c07, 0x3989,
+ 0x5c12, 0x3984, 0x5c1e, 0x397e, 0x5c29, 0x3979, 0x5c34, 0x3973,
+ 0x5c3f, 0x396e, 0x5c4b, 0x3968, 0x5c56, 0x3963, 0x5c61, 0x395d,
+ 0x5c6c, 0x3958, 0x5c78, 0x3952, 0x5c83, 0x394c, 0x5c8e, 0x3947,
+ 0x5c99, 0x3941, 0x5ca5, 0x393b, 0x5cb0, 0x3936, 0x5cbb, 0x3930,
+ 0x5cc6, 0x392b, 0x5cd2, 0x3925, 0x5cdd, 0x391f, 0x5ce8, 0x391a,
+ 0x5cf3, 0x3914, 0x5cff, 0x390e, 0x5d0a, 0x3909, 0x5d15, 0x3903,
+ 0x5d20, 0x38fd, 0x5d2b, 0x38f7, 0x5d36, 0x38f2, 0x5d42, 0x38ec,
+ 0x5d4d, 0x38e6, 0x5d58, 0x38e0, 0x5d63, 0x38db, 0x5d6e, 0x38d5,
+ 0x5d79, 0x38cf, 0x5d85, 0x38c9, 0x5d90, 0x38c3, 0x5d9b, 0x38be,
+ 0x5da6, 0x38b8, 0x5db1, 0x38b2, 0x5dbc, 0x38ac, 0x5dc7, 0x38a6,
+ 0x5dd3, 0x38a1, 0x5dde, 0x389b, 0x5de9, 0x3895, 0x5df4, 0x388f,
+ 0x5dff, 0x3889, 0x5e0a, 0x3883, 0x5e15, 0x387d, 0x5e20, 0x3877,
+ 0x5e2b, 0x3871, 0x5e36, 0x386b, 0x5e42, 0x3866, 0x5e4d, 0x3860,
+ 0x5e58, 0x385a, 0x5e63, 0x3854, 0x5e6e, 0x384e, 0x5e79, 0x3848,
+ 0x5e84, 0x3842, 0x5e8f, 0x383c, 0x5e9a, 0x3836, 0x5ea5, 0x3830,
+ 0x5eb0, 0x382a, 0x5ebb, 0x3824, 0x5ec6, 0x381e, 0x5ed1, 0x3818,
+ 0x5edc, 0x3812, 0x5ee7, 0x380b, 0x5ef2, 0x3805, 0x5efd, 0x37ff,
+ 0x5f08, 0x37f9, 0x5f13, 0x37f3, 0x5f1e, 0x37ed, 0x5f29, 0x37e7,
+ 0x5f34, 0x37e1, 0x5f3f, 0x37db, 0x5f4a, 0x37d5, 0x5f55, 0x37ce,
+ 0x5f60, 0x37c8, 0x5f6b, 0x37c2, 0x5f76, 0x37bc, 0x5f81, 0x37b6,
+ 0x5f8c, 0x37b0, 0x5f97, 0x37a9, 0x5fa2, 0x37a3, 0x5fac, 0x379d,
+ 0x5fb7, 0x3797, 0x5fc2, 0x3790, 0x5fcd, 0x378a, 0x5fd8, 0x3784,
+ 0x5fe3, 0x377e, 0x5fee, 0x3777, 0x5ff9, 0x3771, 0x6004, 0x376b,
+ 0x600f, 0x3765, 0x6019, 0x375e, 0x6024, 0x3758, 0x602f, 0x3752,
+ 0x603a, 0x374b, 0x6045, 0x3745, 0x6050, 0x373f, 0x605b, 0x3738,
+ 0x6065, 0x3732, 0x6070, 0x372c, 0x607b, 0x3725, 0x6086, 0x371f,
+ 0x6091, 0x3718, 0x609b, 0x3712, 0x60a6, 0x370c, 0x60b1, 0x3705,
+ 0x60bc, 0x36ff, 0x60c7, 0x36f8, 0x60d1, 0x36f2, 0x60dc, 0x36eb,
+ 0x60e7, 0x36e5, 0x60f2, 0x36df, 0x60fd, 0x36d8, 0x6107, 0x36d2,
+ 0x6112, 0x36cb, 0x611d, 0x36c5, 0x6128, 0x36be, 0x6132, 0x36b8,
+ 0x613d, 0x36b1, 0x6148, 0x36ab, 0x6153, 0x36a4, 0x615d, 0x369d,
+ 0x6168, 0x3697, 0x6173, 0x3690, 0x617d, 0x368a, 0x6188, 0x3683,
+ 0x6193, 0x367d, 0x619e, 0x3676, 0x61a8, 0x366f, 0x61b3, 0x3669,
+ 0x61be, 0x3662, 0x61c8, 0x365c, 0x61d3, 0x3655, 0x61de, 0x364e,
+ 0x61e8, 0x3648, 0x61f3, 0x3641, 0x61fe, 0x363a, 0x6208, 0x3634,
+ 0x6213, 0x362d, 0x621e, 0x3626, 0x6228, 0x3620, 0x6233, 0x3619,
+ 0x623d, 0x3612, 0x6248, 0x360b, 0x6253, 0x3605, 0x625d, 0x35fe,
+ 0x6268, 0x35f7, 0x6272, 0x35f0, 0x627d, 0x35ea, 0x6288, 0x35e3,
+ 0x6292, 0x35dc, 0x629d, 0x35d5, 0x62a7, 0x35ce, 0x62b2, 0x35c8,
+ 0x62bc, 0x35c1, 0x62c7, 0x35ba, 0x62d2, 0x35b3, 0x62dc, 0x35ac,
+ 0x62e7, 0x35a5, 0x62f1, 0x359f, 0x62fc, 0x3598, 0x6306, 0x3591,
+ 0x6311, 0x358a, 0x631b, 0x3583, 0x6326, 0x357c, 0x6330, 0x3575,
+ 0x633b, 0x356e, 0x6345, 0x3567, 0x6350, 0x3561, 0x635a, 0x355a,
+ 0x6365, 0x3553, 0x636f, 0x354c, 0x637a, 0x3545, 0x6384, 0x353e,
+ 0x638e, 0x3537, 0x6399, 0x3530, 0x63a3, 0x3529, 0x63ae, 0x3522,
+ 0x63b8, 0x351b, 0x63c3, 0x3514, 0x63cd, 0x350d, 0x63d7, 0x3506,
+ 0x63e2, 0x34ff, 0x63ec, 0x34f8, 0x63f7, 0x34f1, 0x6401, 0x34ea,
+ 0x640b, 0x34e2, 0x6416, 0x34db, 0x6420, 0x34d4, 0x642b, 0x34cd,
+ 0x6435, 0x34c6, 0x643f, 0x34bf, 0x644a, 0x34b8, 0x6454, 0x34b1,
+ 0x645e, 0x34aa, 0x6469, 0x34a2, 0x6473, 0x349b, 0x647d, 0x3494,
+ 0x6488, 0x348d, 0x6492, 0x3486, 0x649c, 0x347f, 0x64a7, 0x3477,
+ 0x64b1, 0x3470, 0x64bb, 0x3469, 0x64c5, 0x3462, 0x64d0, 0x345b,
+ 0x64da, 0x3453, 0x64e4, 0x344c, 0x64ef, 0x3445, 0x64f9, 0x343e,
+ 0x6503, 0x3436, 0x650d, 0x342f, 0x6518, 0x3428, 0x6522, 0x3420,
+ 0x652c, 0x3419, 0x6536, 0x3412, 0x6541, 0x340b, 0x654b, 0x3403,
+ 0x6555, 0x33fc, 0x655f, 0x33f5, 0x6569, 0x33ed, 0x6574, 0x33e6,
+ 0x657e, 0x33df, 0x6588, 0x33d7, 0x6592, 0x33d0, 0x659c, 0x33c8,
+ 0x65a6, 0x33c1, 0x65b1, 0x33ba, 0x65bb, 0x33b2, 0x65c5, 0x33ab,
+ 0x65cf, 0x33a3, 0x65d9, 0x339c, 0x65e3, 0x3395, 0x65ed, 0x338d,
+ 0x65f8, 0x3386, 0x6602, 0x337e, 0x660c, 0x3377, 0x6616, 0x336f,
+ 0x6620, 0x3368, 0x662a, 0x3360, 0x6634, 0x3359, 0x663e, 0x3351,
+ 0x6648, 0x334a, 0x6652, 0x3342, 0x665c, 0x333b, 0x6666, 0x3333,
+ 0x6671, 0x332c, 0x667b, 0x3324, 0x6685, 0x331d, 0x668f, 0x3315,
+ 0x6699, 0x330d, 0x66a3, 0x3306, 0x66ad, 0x32fe, 0x66b7, 0x32f7,
+ 0x66c1, 0x32ef, 0x66cb, 0x32e7, 0x66d5, 0x32e0, 0x66df, 0x32d8,
+ 0x66e9, 0x32d0, 0x66f3, 0x32c9, 0x66fd, 0x32c1, 0x6707, 0x32ba,
+ 0x6711, 0x32b2, 0x671a, 0x32aa, 0x6724, 0x32a3, 0x672e, 0x329b,
+ 0x6738, 0x3293, 0x6742, 0x328b, 0x674c, 0x3284, 0x6756, 0x327c,
+ 0x6760, 0x3274, 0x676a, 0x326d, 0x6774, 0x3265, 0x677e, 0x325d,
+ 0x6788, 0x3255, 0x6791, 0x324e, 0x679b, 0x3246, 0x67a5, 0x323e,
+ 0x67af, 0x3236, 0x67b9, 0x322e, 0x67c3, 0x3227, 0x67cd, 0x321f,
+ 0x67d6, 0x3217, 0x67e0, 0x320f, 0x67ea, 0x3207, 0x67f4, 0x31ff,
+ 0x67fe, 0x31f8, 0x6808, 0x31f0, 0x6811, 0x31e8, 0x681b, 0x31e0,
+ 0x6825, 0x31d8, 0x682f, 0x31d0, 0x6838, 0x31c8, 0x6842, 0x31c0,
+ 0x684c, 0x31b9, 0x6856, 0x31b1, 0x6860, 0x31a9, 0x6869, 0x31a1,
+ 0x6873, 0x3199, 0x687d, 0x3191, 0x6886, 0x3189, 0x6890, 0x3181,
+ 0x689a, 0x3179, 0x68a4, 0x3171, 0x68ad, 0x3169, 0x68b7, 0x3161,
+ 0x68c1, 0x3159, 0x68ca, 0x3151, 0x68d4, 0x3149, 0x68de, 0x3141,
+ 0x68e7, 0x3139, 0x68f1, 0x3131, 0x68fb, 0x3129, 0x6904, 0x3121,
+ 0x690e, 0x3119, 0x6918, 0x3111, 0x6921, 0x3109, 0x692b, 0x3101,
+ 0x6935, 0x30f9, 0x693e, 0x30f0, 0x6948, 0x30e8, 0x6951, 0x30e0,
+ 0x695b, 0x30d8, 0x6965, 0x30d0, 0x696e, 0x30c8, 0x6978, 0x30c0,
+ 0x6981, 0x30b8, 0x698b, 0x30af, 0x6994, 0x30a7, 0x699e, 0x309f,
+ 0x69a7, 0x3097, 0x69b1, 0x308f, 0x69bb, 0x3087, 0x69c4, 0x307e,
+ 0x69ce, 0x3076, 0x69d7, 0x306e, 0x69e1, 0x3066, 0x69ea, 0x305d,
+ 0x69f4, 0x3055, 0x69fd, 0x304d, 0x6a07, 0x3045, 0x6a10, 0x303c,
+ 0x6a1a, 0x3034, 0x6a23, 0x302c, 0x6a2c, 0x3024, 0x6a36, 0x301b,
+ 0x6a3f, 0x3013, 0x6a49, 0x300b, 0x6a52, 0x3002, 0x6a5c, 0x2ffa,
+ 0x6a65, 0x2ff2, 0x6a6e, 0x2fea, 0x6a78, 0x2fe1, 0x6a81, 0x2fd9,
+ 0x6a8b, 0x2fd0, 0x6a94, 0x2fc8, 0x6a9d, 0x2fc0, 0x6aa7, 0x2fb7,
+ 0x6ab0, 0x2faf, 0x6ab9, 0x2fa7, 0x6ac3, 0x2f9e, 0x6acc, 0x2f96,
+ 0x6ad6, 0x2f8d, 0x6adf, 0x2f85, 0x6ae8, 0x2f7d, 0x6af2, 0x2f74,
+ 0x6afb, 0x2f6c, 0x6b04, 0x2f63, 0x6b0d, 0x2f5b, 0x6b17, 0x2f52,
+ 0x6b20, 0x2f4a, 0x6b29, 0x2f41, 0x6b33, 0x2f39, 0x6b3c, 0x2f30,
+ 0x6b45, 0x2f28, 0x6b4e, 0x2f20, 0x6b58, 0x2f17, 0x6b61, 0x2f0e,
+ 0x6b6a, 0x2f06, 0x6b73, 0x2efd, 0x6b7d, 0x2ef5, 0x6b86, 0x2eec,
+ 0x6b8f, 0x2ee4, 0x6b98, 0x2edb, 0x6ba1, 0x2ed3, 0x6bab, 0x2eca,
+ 0x6bb4, 0x2ec2, 0x6bbd, 0x2eb9, 0x6bc6, 0x2eb0, 0x6bcf, 0x2ea8,
+ 0x6bd8, 0x2e9f, 0x6be2, 0x2e97, 0x6beb, 0x2e8e, 0x6bf4, 0x2e85,
+ 0x6bfd, 0x2e7d, 0x6c06, 0x2e74, 0x6c0f, 0x2e6b, 0x6c18, 0x2e63,
+ 0x6c21, 0x2e5a, 0x6c2b, 0x2e51, 0x6c34, 0x2e49, 0x6c3d, 0x2e40,
+ 0x6c46, 0x2e37, 0x6c4f, 0x2e2f, 0x6c58, 0x2e26, 0x6c61, 0x2e1d,
+ 0x6c6a, 0x2e15, 0x6c73, 0x2e0c, 0x6c7c, 0x2e03, 0x6c85, 0x2dfa,
+ 0x6c8e, 0x2df2, 0x6c97, 0x2de9, 0x6ca0, 0x2de0, 0x6ca9, 0x2dd7,
+ 0x6cb2, 0x2dcf, 0x6cbb, 0x2dc6, 0x6cc4, 0x2dbd, 0x6ccd, 0x2db4,
+ 0x6cd6, 0x2dab, 0x6cdf, 0x2da3, 0x6ce8, 0x2d9a, 0x6cf1, 0x2d91,
+ 0x6cfa, 0x2d88, 0x6d03, 0x2d7f, 0x6d0c, 0x2d76, 0x6d15, 0x2d6e,
+ 0x6d1e, 0x2d65, 0x6d27, 0x2d5c, 0x6d2f, 0x2d53, 0x6d38, 0x2d4a,
+ 0x6d41, 0x2d41, 0x6d4a, 0x2d38, 0x6d53, 0x2d2f, 0x6d5c, 0x2d27,
+ 0x6d65, 0x2d1e, 0x6d6e, 0x2d15, 0x6d76, 0x2d0c, 0x6d7f, 0x2d03,
+ 0x6d88, 0x2cfa, 0x6d91, 0x2cf1, 0x6d9a, 0x2ce8, 0x6da3, 0x2cdf,
+ 0x6dab, 0x2cd6, 0x6db4, 0x2ccd, 0x6dbd, 0x2cc4, 0x6dc6, 0x2cbb,
+ 0x6dcf, 0x2cb2, 0x6dd7, 0x2ca9, 0x6de0, 0x2ca0, 0x6de9, 0x2c97,
+ 0x6df2, 0x2c8e, 0x6dfa, 0x2c85, 0x6e03, 0x2c7c, 0x6e0c, 0x2c73,
+ 0x6e15, 0x2c6a, 0x6e1d, 0x2c61, 0x6e26, 0x2c58, 0x6e2f, 0x2c4f,
+ 0x6e37, 0x2c46, 0x6e40, 0x2c3d, 0x6e49, 0x2c34, 0x6e51, 0x2c2b,
+ 0x6e5a, 0x2c21, 0x6e63, 0x2c18, 0x6e6b, 0x2c0f, 0x6e74, 0x2c06,
+ 0x6e7d, 0x2bfd, 0x6e85, 0x2bf4, 0x6e8e, 0x2beb, 0x6e97, 0x2be2,
+ 0x6e9f, 0x2bd8, 0x6ea8, 0x2bcf, 0x6eb0, 0x2bc6, 0x6eb9, 0x2bbd,
+ 0x6ec2, 0x2bb4, 0x6eca, 0x2bab, 0x6ed3, 0x2ba1, 0x6edb, 0x2b98,
+ 0x6ee4, 0x2b8f, 0x6eec, 0x2b86, 0x6ef5, 0x2b7d, 0x6efd, 0x2b73,
+ 0x6f06, 0x2b6a, 0x6f0e, 0x2b61, 0x6f17, 0x2b58, 0x6f20, 0x2b4e,
+ 0x6f28, 0x2b45, 0x6f30, 0x2b3c, 0x6f39, 0x2b33, 0x6f41, 0x2b29,
+ 0x6f4a, 0x2b20, 0x6f52, 0x2b17, 0x6f5b, 0x2b0d, 0x6f63, 0x2b04,
+ 0x6f6c, 0x2afb, 0x6f74, 0x2af2, 0x6f7d, 0x2ae8, 0x6f85, 0x2adf,
+ 0x6f8d, 0x2ad6, 0x6f96, 0x2acc, 0x6f9e, 0x2ac3, 0x6fa7, 0x2ab9,
+ 0x6faf, 0x2ab0, 0x6fb7, 0x2aa7, 0x6fc0, 0x2a9d, 0x6fc8, 0x2a94,
+ 0x6fd0, 0x2a8b, 0x6fd9, 0x2a81, 0x6fe1, 0x2a78, 0x6fea, 0x2a6e,
+ 0x6ff2, 0x2a65, 0x6ffa, 0x2a5c, 0x7002, 0x2a52, 0x700b, 0x2a49,
+ 0x7013, 0x2a3f, 0x701b, 0x2a36, 0x7024, 0x2a2c, 0x702c, 0x2a23,
+ 0x7034, 0x2a1a, 0x703c, 0x2a10, 0x7045, 0x2a07, 0x704d, 0x29fd,
+ 0x7055, 0x29f4, 0x705d, 0x29ea, 0x7066, 0x29e1, 0x706e, 0x29d7,
+ 0x7076, 0x29ce, 0x707e, 0x29c4, 0x7087, 0x29bb, 0x708f, 0x29b1,
+ 0x7097, 0x29a7, 0x709f, 0x299e, 0x70a7, 0x2994, 0x70af, 0x298b,
+ 0x70b8, 0x2981, 0x70c0, 0x2978, 0x70c8, 0x296e, 0x70d0, 0x2965,
+ 0x70d8, 0x295b, 0x70e0, 0x2951, 0x70e8, 0x2948, 0x70f0, 0x293e,
+ 0x70f9, 0x2935, 0x7101, 0x292b, 0x7109, 0x2921, 0x7111, 0x2918,
+ 0x7119, 0x290e, 0x7121, 0x2904, 0x7129, 0x28fb, 0x7131, 0x28f1,
+ 0x7139, 0x28e7, 0x7141, 0x28de, 0x7149, 0x28d4, 0x7151, 0x28ca,
+ 0x7159, 0x28c1, 0x7161, 0x28b7, 0x7169, 0x28ad, 0x7171, 0x28a4,
+ 0x7179, 0x289a, 0x7181, 0x2890, 0x7189, 0x2886, 0x7191, 0x287d,
+ 0x7199, 0x2873, 0x71a1, 0x2869, 0x71a9, 0x2860, 0x71b1, 0x2856,
+ 0x71b9, 0x284c, 0x71c0, 0x2842, 0x71c8, 0x2838, 0x71d0, 0x282f,
+ 0x71d8, 0x2825, 0x71e0, 0x281b, 0x71e8, 0x2811, 0x71f0, 0x2808,
+ 0x71f8, 0x27fe, 0x71ff, 0x27f4, 0x7207, 0x27ea, 0x720f, 0x27e0,
+ 0x7217, 0x27d6, 0x721f, 0x27cd, 0x7227, 0x27c3, 0x722e, 0x27b9,
+ 0x7236, 0x27af, 0x723e, 0x27a5, 0x7246, 0x279b, 0x724e, 0x2791,
+ 0x7255, 0x2788, 0x725d, 0x277e, 0x7265, 0x2774, 0x726d, 0x276a,
+ 0x7274, 0x2760, 0x727c, 0x2756, 0x7284, 0x274c, 0x728b, 0x2742,
+ 0x7293, 0x2738, 0x729b, 0x272e, 0x72a3, 0x2724, 0x72aa, 0x271a,
+ 0x72b2, 0x2711, 0x72ba, 0x2707, 0x72c1, 0x26fd, 0x72c9, 0x26f3,
+ 0x72d0, 0x26e9, 0x72d8, 0x26df, 0x72e0, 0x26d5, 0x72e7, 0x26cb,
+ 0x72ef, 0x26c1, 0x72f7, 0x26b7, 0x72fe, 0x26ad, 0x7306, 0x26a3,
+ 0x730d, 0x2699, 0x7315, 0x268f, 0x731d, 0x2685, 0x7324, 0x267b,
+ 0x732c, 0x2671, 0x7333, 0x2666, 0x733b, 0x265c, 0x7342, 0x2652,
+ 0x734a, 0x2648, 0x7351, 0x263e, 0x7359, 0x2634, 0x7360, 0x262a,
+ 0x7368, 0x2620, 0x736f, 0x2616, 0x7377, 0x260c, 0x737e, 0x2602,
+ 0x7386, 0x25f8, 0x738d, 0x25ed, 0x7395, 0x25e3, 0x739c, 0x25d9,
+ 0x73a3, 0x25cf, 0x73ab, 0x25c5, 0x73b2, 0x25bb, 0x73ba, 0x25b1,
+ 0x73c1, 0x25a6, 0x73c8, 0x259c, 0x73d0, 0x2592, 0x73d7, 0x2588,
+ 0x73df, 0x257e, 0x73e6, 0x2574, 0x73ed, 0x2569, 0x73f5, 0x255f,
+ 0x73fc, 0x2555, 0x7403, 0x254b, 0x740b, 0x2541, 0x7412, 0x2536,
+ 0x7419, 0x252c, 0x7420, 0x2522, 0x7428, 0x2518, 0x742f, 0x250d,
+ 0x7436, 0x2503, 0x743e, 0x24f9, 0x7445, 0x24ef, 0x744c, 0x24e4,
+ 0x7453, 0x24da, 0x745b, 0x24d0, 0x7462, 0x24c5, 0x7469, 0x24bb,
+ 0x7470, 0x24b1, 0x7477, 0x24a7, 0x747f, 0x249c, 0x7486, 0x2492,
+ 0x748d, 0x2488, 0x7494, 0x247d, 0x749b, 0x2473, 0x74a2, 0x2469,
+ 0x74aa, 0x245e, 0x74b1, 0x2454, 0x74b8, 0x244a, 0x74bf, 0x243f,
+ 0x74c6, 0x2435, 0x74cd, 0x242b, 0x74d4, 0x2420, 0x74db, 0x2416,
+ 0x74e2, 0x240b, 0x74ea, 0x2401, 0x74f1, 0x23f7, 0x74f8, 0x23ec,
+ 0x74ff, 0x23e2, 0x7506, 0x23d7, 0x750d, 0x23cd, 0x7514, 0x23c3,
+ 0x751b, 0x23b8, 0x7522, 0x23ae, 0x7529, 0x23a3, 0x7530, 0x2399,
+ 0x7537, 0x238e, 0x753e, 0x2384, 0x7545, 0x237a, 0x754c, 0x236f,
+ 0x7553, 0x2365, 0x755a, 0x235a, 0x7561, 0x2350, 0x7567, 0x2345,
+ 0x756e, 0x233b, 0x7575, 0x2330, 0x757c, 0x2326, 0x7583, 0x231b,
+ 0x758a, 0x2311, 0x7591, 0x2306, 0x7598, 0x22fc, 0x759f, 0x22f1,
+ 0x75a5, 0x22e7, 0x75ac, 0x22dc, 0x75b3, 0x22d2, 0x75ba, 0x22c7,
+ 0x75c1, 0x22bc, 0x75c8, 0x22b2, 0x75ce, 0x22a7, 0x75d5, 0x229d,
+ 0x75dc, 0x2292, 0x75e3, 0x2288, 0x75ea, 0x227d, 0x75f0, 0x2272,
+ 0x75f7, 0x2268, 0x75fe, 0x225d, 0x7605, 0x2253, 0x760b, 0x2248,
+ 0x7612, 0x223d, 0x7619, 0x2233, 0x7620, 0x2228, 0x7626, 0x221e,
+ 0x762d, 0x2213, 0x7634, 0x2208, 0x763a, 0x21fe, 0x7641, 0x21f3,
+ 0x7648, 0x21e8, 0x764e, 0x21de, 0x7655, 0x21d3, 0x765c, 0x21c8,
+ 0x7662, 0x21be, 0x7669, 0x21b3, 0x766f, 0x21a8, 0x7676, 0x219e,
+ 0x767d, 0x2193, 0x7683, 0x2188, 0x768a, 0x217d, 0x7690, 0x2173,
+ 0x7697, 0x2168, 0x769d, 0x215d, 0x76a4, 0x2153, 0x76ab, 0x2148,
+ 0x76b1, 0x213d, 0x76b8, 0x2132, 0x76be, 0x2128, 0x76c5, 0x211d,
+ 0x76cb, 0x2112, 0x76d2, 0x2107, 0x76d8, 0x20fd, 0x76df, 0x20f2,
+ 0x76e5, 0x20e7, 0x76eb, 0x20dc, 0x76f2, 0x20d1, 0x76f8, 0x20c7,
+ 0x76ff, 0x20bc, 0x7705, 0x20b1, 0x770c, 0x20a6, 0x7712, 0x209b,
+ 0x7718, 0x2091, 0x771f, 0x2086, 0x7725, 0x207b, 0x772c, 0x2070,
+ 0x7732, 0x2065, 0x7738, 0x205b, 0x773f, 0x2050, 0x7745, 0x2045,
+ 0x774b, 0x203a, 0x7752, 0x202f, 0x7758, 0x2024, 0x775e, 0x2019,
+ 0x7765, 0x200f, 0x776b, 0x2004, 0x7771, 0x1ff9, 0x7777, 0x1fee,
+ 0x777e, 0x1fe3, 0x7784, 0x1fd8, 0x778a, 0x1fcd, 0x7790, 0x1fc2,
+ 0x7797, 0x1fb7, 0x779d, 0x1fac, 0x77a3, 0x1fa2, 0x77a9, 0x1f97,
+ 0x77b0, 0x1f8c, 0x77b6, 0x1f81, 0x77bc, 0x1f76, 0x77c2, 0x1f6b,
+ 0x77c8, 0x1f60, 0x77ce, 0x1f55, 0x77d5, 0x1f4a, 0x77db, 0x1f3f,
+ 0x77e1, 0x1f34, 0x77e7, 0x1f29, 0x77ed, 0x1f1e, 0x77f3, 0x1f13,
+ 0x77f9, 0x1f08, 0x77ff, 0x1efd, 0x7805, 0x1ef2, 0x780b, 0x1ee7,
+ 0x7812, 0x1edc, 0x7818, 0x1ed1, 0x781e, 0x1ec6, 0x7824, 0x1ebb,
+ 0x782a, 0x1eb0, 0x7830, 0x1ea5, 0x7836, 0x1e9a, 0x783c, 0x1e8f,
+ 0x7842, 0x1e84, 0x7848, 0x1e79, 0x784e, 0x1e6e, 0x7854, 0x1e63,
+ 0x785a, 0x1e58, 0x7860, 0x1e4d, 0x7866, 0x1e42, 0x786b, 0x1e36,
+ 0x7871, 0x1e2b, 0x7877, 0x1e20, 0x787d, 0x1e15, 0x7883, 0x1e0a,
+ 0x7889, 0x1dff, 0x788f, 0x1df4, 0x7895, 0x1de9, 0x789b, 0x1dde,
+ 0x78a1, 0x1dd3, 0x78a6, 0x1dc7, 0x78ac, 0x1dbc, 0x78b2, 0x1db1,
+ 0x78b8, 0x1da6, 0x78be, 0x1d9b, 0x78c3, 0x1d90, 0x78c9, 0x1d85,
+ 0x78cf, 0x1d79, 0x78d5, 0x1d6e, 0x78db, 0x1d63, 0x78e0, 0x1d58,
+ 0x78e6, 0x1d4d, 0x78ec, 0x1d42, 0x78f2, 0x1d36, 0x78f7, 0x1d2b,
+ 0x78fd, 0x1d20, 0x7903, 0x1d15, 0x7909, 0x1d0a, 0x790e, 0x1cff,
+ 0x7914, 0x1cf3, 0x791a, 0x1ce8, 0x791f, 0x1cdd, 0x7925, 0x1cd2,
+ 0x792b, 0x1cc6, 0x7930, 0x1cbb, 0x7936, 0x1cb0, 0x793b, 0x1ca5,
+ 0x7941, 0x1c99, 0x7947, 0x1c8e, 0x794c, 0x1c83, 0x7952, 0x1c78,
+ 0x7958, 0x1c6c, 0x795d, 0x1c61, 0x7963, 0x1c56, 0x7968, 0x1c4b,
+ 0x796e, 0x1c3f, 0x7973, 0x1c34, 0x7979, 0x1c29, 0x797e, 0x1c1e,
+ 0x7984, 0x1c12, 0x7989, 0x1c07, 0x798f, 0x1bfc, 0x7994, 0x1bf0,
+ 0x799a, 0x1be5, 0x799f, 0x1bda, 0x79a5, 0x1bce, 0x79aa, 0x1bc3,
+ 0x79b0, 0x1bb8, 0x79b5, 0x1bac, 0x79bb, 0x1ba1, 0x79c0, 0x1b96,
+ 0x79c5, 0x1b8a, 0x79cb, 0x1b7f, 0x79d0, 0x1b74, 0x79d6, 0x1b68,
+ 0x79db, 0x1b5d, 0x79e0, 0x1b52, 0x79e6, 0x1b46, 0x79eb, 0x1b3b,
+ 0x79f0, 0x1b30, 0x79f6, 0x1b24, 0x79fb, 0x1b19, 0x7a00, 0x1b0d,
+ 0x7a06, 0x1b02, 0x7a0b, 0x1af7, 0x7a10, 0x1aeb, 0x7a16, 0x1ae0,
+ 0x7a1b, 0x1ad4, 0x7a20, 0x1ac9, 0x7a25, 0x1abe, 0x7a2b, 0x1ab2,
+ 0x7a30, 0x1aa7, 0x7a35, 0x1a9b, 0x7a3a, 0x1a90, 0x7a3f, 0x1a84,
+ 0x7a45, 0x1a79, 0x7a4a, 0x1a6e, 0x7a4f, 0x1a62, 0x7a54, 0x1a57,
+ 0x7a59, 0x1a4b, 0x7a5f, 0x1a40, 0x7a64, 0x1a34, 0x7a69, 0x1a29,
+ 0x7a6e, 0x1a1d, 0x7a73, 0x1a12, 0x7a78, 0x1a06, 0x7a7d, 0x19fb,
+ 0x7a82, 0x19ef, 0x7a88, 0x19e4, 0x7a8d, 0x19d8, 0x7a92, 0x19cd,
+ 0x7a97, 0x19c1, 0x7a9c, 0x19b6, 0x7aa1, 0x19aa, 0x7aa6, 0x199f,
+ 0x7aab, 0x1993, 0x7ab0, 0x1988, 0x7ab5, 0x197c, 0x7aba, 0x1971,
+ 0x7abf, 0x1965, 0x7ac4, 0x195a, 0x7ac9, 0x194e, 0x7ace, 0x1943,
+ 0x7ad3, 0x1937, 0x7ad8, 0x192c, 0x7add, 0x1920, 0x7ae2, 0x1914,
+ 0x7ae6, 0x1909, 0x7aeb, 0x18fd, 0x7af0, 0x18f2, 0x7af5, 0x18e6,
+ 0x7afa, 0x18db, 0x7aff, 0x18cf, 0x7b04, 0x18c3, 0x7b09, 0x18b8,
+ 0x7b0e, 0x18ac, 0x7b12, 0x18a1, 0x7b17, 0x1895, 0x7b1c, 0x1889,
+ 0x7b21, 0x187e, 0x7b26, 0x1872, 0x7b2a, 0x1867, 0x7b2f, 0x185b,
+ 0x7b34, 0x184f, 0x7b39, 0x1844, 0x7b3e, 0x1838, 0x7b42, 0x182d,
+ 0x7b47, 0x1821, 0x7b4c, 0x1815, 0x7b50, 0x180a, 0x7b55, 0x17fe,
+ 0x7b5a, 0x17f2, 0x7b5f, 0x17e7, 0x7b63, 0x17db, 0x7b68, 0x17cf,
+ 0x7b6d, 0x17c4, 0x7b71, 0x17b8, 0x7b76, 0x17ac, 0x7b7b, 0x17a1,
+ 0x7b7f, 0x1795, 0x7b84, 0x1789, 0x7b88, 0x177e, 0x7b8d, 0x1772,
+ 0x7b92, 0x1766, 0x7b96, 0x175b, 0x7b9b, 0x174f, 0x7b9f, 0x1743,
+ 0x7ba4, 0x1737, 0x7ba9, 0x172c, 0x7bad, 0x1720, 0x7bb2, 0x1714,
+ 0x7bb6, 0x1709, 0x7bbb, 0x16fd, 0x7bbf, 0x16f1, 0x7bc4, 0x16e5,
+ 0x7bc8, 0x16da, 0x7bcd, 0x16ce, 0x7bd1, 0x16c2, 0x7bd6, 0x16b6,
+ 0x7bda, 0x16ab, 0x7bde, 0x169f, 0x7be3, 0x1693, 0x7be7, 0x1687,
+ 0x7bec, 0x167c, 0x7bf0, 0x1670, 0x7bf5, 0x1664, 0x7bf9, 0x1658,
+ 0x7bfd, 0x164c, 0x7c02, 0x1641, 0x7c06, 0x1635, 0x7c0a, 0x1629,
+ 0x7c0f, 0x161d, 0x7c13, 0x1612, 0x7c17, 0x1606, 0x7c1c, 0x15fa,
+ 0x7c20, 0x15ee, 0x7c24, 0x15e2, 0x7c29, 0x15d7, 0x7c2d, 0x15cb,
+ 0x7c31, 0x15bf, 0x7c36, 0x15b3, 0x7c3a, 0x15a7, 0x7c3e, 0x159b,
+ 0x7c42, 0x1590, 0x7c46, 0x1584, 0x7c4b, 0x1578, 0x7c4f, 0x156c,
+ 0x7c53, 0x1560, 0x7c57, 0x1554, 0x7c5b, 0x1549, 0x7c60, 0x153d,
+ 0x7c64, 0x1531, 0x7c68, 0x1525, 0x7c6c, 0x1519, 0x7c70, 0x150d,
+ 0x7c74, 0x1501, 0x7c79, 0x14f6, 0x7c7d, 0x14ea, 0x7c81, 0x14de,
+ 0x7c85, 0x14d2, 0x7c89, 0x14c6, 0x7c8d, 0x14ba, 0x7c91, 0x14ae,
+ 0x7c95, 0x14a2, 0x7c99, 0x1496, 0x7c9d, 0x148b, 0x7ca1, 0x147f,
+ 0x7ca5, 0x1473, 0x7ca9, 0x1467, 0x7cad, 0x145b, 0x7cb1, 0x144f,
+ 0x7cb5, 0x1443, 0x7cb9, 0x1437, 0x7cbd, 0x142b, 0x7cc1, 0x141f,
+ 0x7cc5, 0x1413, 0x7cc9, 0x1407, 0x7ccd, 0x13fb, 0x7cd1, 0x13f0,
+ 0x7cd5, 0x13e4, 0x7cd9, 0x13d8, 0x7cdd, 0x13cc, 0x7ce0, 0x13c0,
+ 0x7ce4, 0x13b4, 0x7ce8, 0x13a8, 0x7cec, 0x139c, 0x7cf0, 0x1390,
+ 0x7cf4, 0x1384, 0x7cf8, 0x1378, 0x7cfb, 0x136c, 0x7cff, 0x1360,
+ 0x7d03, 0x1354, 0x7d07, 0x1348, 0x7d0b, 0x133c, 0x7d0e, 0x1330,
+ 0x7d12, 0x1324, 0x7d16, 0x1318, 0x7d1a, 0x130c, 0x7d1d, 0x1300,
+ 0x7d21, 0x12f4, 0x7d25, 0x12e8, 0x7d28, 0x12dc, 0x7d2c, 0x12d0,
+ 0x7d30, 0x12c4, 0x7d34, 0x12b8, 0x7d37, 0x12ac, 0x7d3b, 0x12a0,
+ 0x7d3f, 0x1294, 0x7d42, 0x1288, 0x7d46, 0x127c, 0x7d49, 0x1270,
+ 0x7d4d, 0x1264, 0x7d51, 0x1258, 0x7d54, 0x124c, 0x7d58, 0x1240,
+ 0x7d5b, 0x1234, 0x7d5f, 0x1228, 0x7d63, 0x121c, 0x7d66, 0x1210,
+ 0x7d6a, 0x1204, 0x7d6d, 0x11f7, 0x7d71, 0x11eb, 0x7d74, 0x11df,
+ 0x7d78, 0x11d3, 0x7d7b, 0x11c7, 0x7d7f, 0x11bb, 0x7d82, 0x11af,
+ 0x7d86, 0x11a3, 0x7d89, 0x1197, 0x7d8d, 0x118b, 0x7d90, 0x117f,
+ 0x7d93, 0x1173, 0x7d97, 0x1167, 0x7d9a, 0x115a, 0x7d9e, 0x114e,
+ 0x7da1, 0x1142, 0x7da4, 0x1136, 0x7da8, 0x112a, 0x7dab, 0x111e,
+ 0x7daf, 0x1112, 0x7db2, 0x1106, 0x7db5, 0x10fa, 0x7db9, 0x10ed,
+ 0x7dbc, 0x10e1, 0x7dbf, 0x10d5, 0x7dc2, 0x10c9, 0x7dc6, 0x10bd,
+ 0x7dc9, 0x10b1, 0x7dcc, 0x10a5, 0x7dd0, 0x1099, 0x7dd3, 0x108c,
+ 0x7dd6, 0x1080, 0x7dd9, 0x1074, 0x7ddd, 0x1068, 0x7de0, 0x105c,
+ 0x7de3, 0x1050, 0x7de6, 0x1044, 0x7de9, 0x1037, 0x7ded, 0x102b,
+ 0x7df0, 0x101f, 0x7df3, 0x1013, 0x7df6, 0x1007, 0x7df9, 0xffb,
+ 0x7dfc, 0xfee, 0x7dff, 0xfe2, 0x7e03, 0xfd6, 0x7e06, 0xfca,
+ 0x7e09, 0xfbe, 0x7e0c, 0xfb2, 0x7e0f, 0xfa5, 0x7e12, 0xf99,
+ 0x7e15, 0xf8d, 0x7e18, 0xf81, 0x7e1b, 0xf75, 0x7e1e, 0xf68,
+ 0x7e21, 0xf5c, 0x7e24, 0xf50, 0x7e27, 0xf44, 0x7e2a, 0xf38,
+ 0x7e2d, 0xf2b, 0x7e30, 0xf1f, 0x7e33, 0xf13, 0x7e36, 0xf07,
+ 0x7e39, 0xefb, 0x7e3c, 0xeee, 0x7e3f, 0xee2, 0x7e42, 0xed6,
+ 0x7e45, 0xeca, 0x7e48, 0xebd, 0x7e4a, 0xeb1, 0x7e4d, 0xea5,
+ 0x7e50, 0xe99, 0x7e53, 0xe8c, 0x7e56, 0xe80, 0x7e59, 0xe74,
+ 0x7e5c, 0xe68, 0x7e5e, 0xe5c, 0x7e61, 0xe4f, 0x7e64, 0xe43,
+ 0x7e67, 0xe37, 0x7e6a, 0xe2b, 0x7e6c, 0xe1e, 0x7e6f, 0xe12,
+ 0x7e72, 0xe06, 0x7e75, 0xdf9, 0x7e77, 0xded, 0x7e7a, 0xde1,
+ 0x7e7d, 0xdd5, 0x7e80, 0xdc8, 0x7e82, 0xdbc, 0x7e85, 0xdb0,
+ 0x7e88, 0xda4, 0x7e8a, 0xd97, 0x7e8d, 0xd8b, 0x7e90, 0xd7f,
+ 0x7e92, 0xd72, 0x7e95, 0xd66, 0x7e98, 0xd5a, 0x7e9a, 0xd4e,
+ 0x7e9d, 0xd41, 0x7e9f, 0xd35, 0x7ea2, 0xd29, 0x7ea5, 0xd1c,
+ 0x7ea7, 0xd10, 0x7eaa, 0xd04, 0x7eac, 0xcf8, 0x7eaf, 0xceb,
+ 0x7eb1, 0xcdf, 0x7eb4, 0xcd3, 0x7eb6, 0xcc6, 0x7eb9, 0xcba,
+ 0x7ebb, 0xcae, 0x7ebe, 0xca1, 0x7ec0, 0xc95, 0x7ec3, 0xc89,
+ 0x7ec5, 0xc7c, 0x7ec8, 0xc70, 0x7eca, 0xc64, 0x7ecc, 0xc57,
+ 0x7ecf, 0xc4b, 0x7ed1, 0xc3f, 0x7ed4, 0xc32, 0x7ed6, 0xc26,
+ 0x7ed8, 0xc1a, 0x7edb, 0xc0d, 0x7edd, 0xc01, 0x7ee0, 0xbf5,
+ 0x7ee2, 0xbe8, 0x7ee4, 0xbdc, 0x7ee7, 0xbd0, 0x7ee9, 0xbc3,
+ 0x7eeb, 0xbb7, 0x7eed, 0xbab, 0x7ef0, 0xb9e, 0x7ef2, 0xb92,
+ 0x7ef4, 0xb85, 0x7ef7, 0xb79, 0x7ef9, 0xb6d, 0x7efb, 0xb60,
+ 0x7efd, 0xb54, 0x7f00, 0xb48, 0x7f02, 0xb3b, 0x7f04, 0xb2f,
+ 0x7f06, 0xb23, 0x7f08, 0xb16, 0x7f0a, 0xb0a, 0x7f0d, 0xafd,
+ 0x7f0f, 0xaf1, 0x7f11, 0xae5, 0x7f13, 0xad8, 0x7f15, 0xacc,
+ 0x7f17, 0xac0, 0x7f19, 0xab3, 0x7f1c, 0xaa7, 0x7f1e, 0xa9a,
+ 0x7f20, 0xa8e, 0x7f22, 0xa82, 0x7f24, 0xa75, 0x7f26, 0xa69,
+ 0x7f28, 0xa5c, 0x7f2a, 0xa50, 0x7f2c, 0xa44, 0x7f2e, 0xa37,
+ 0x7f30, 0xa2b, 0x7f32, 0xa1e, 0x7f34, 0xa12, 0x7f36, 0xa06,
+ 0x7f38, 0x9f9, 0x7f3a, 0x9ed, 0x7f3c, 0x9e0, 0x7f3e, 0x9d4,
+ 0x7f40, 0x9c7, 0x7f42, 0x9bb, 0x7f43, 0x9af, 0x7f45, 0x9a2,
+ 0x7f47, 0x996, 0x7f49, 0x989, 0x7f4b, 0x97d, 0x7f4d, 0x970,
+ 0x7f4f, 0x964, 0x7f51, 0x958, 0x7f52, 0x94b, 0x7f54, 0x93f,
+ 0x7f56, 0x932, 0x7f58, 0x926, 0x7f5a, 0x919, 0x7f5b, 0x90d,
+ 0x7f5d, 0x901, 0x7f5f, 0x8f4, 0x7f61, 0x8e8, 0x7f62, 0x8db,
+ 0x7f64, 0x8cf, 0x7f66, 0x8c2, 0x7f68, 0x8b6, 0x7f69, 0x8a9,
+ 0x7f6b, 0x89d, 0x7f6d, 0x891, 0x7f6e, 0x884, 0x7f70, 0x878,
+ 0x7f72, 0x86b, 0x7f73, 0x85f, 0x7f75, 0x852, 0x7f77, 0x846,
+ 0x7f78, 0x839, 0x7f7a, 0x82d, 0x7f7b, 0x820, 0x7f7d, 0x814,
+ 0x7f7f, 0x807, 0x7f80, 0x7fb, 0x7f82, 0x7ef, 0x7f83, 0x7e2,
+ 0x7f85, 0x7d6, 0x7f86, 0x7c9, 0x7f88, 0x7bd, 0x7f89, 0x7b0,
+ 0x7f8b, 0x7a4, 0x7f8c, 0x797, 0x7f8e, 0x78b, 0x7f8f, 0x77e,
+ 0x7f91, 0x772, 0x7f92, 0x765, 0x7f94, 0x759, 0x7f95, 0x74c,
+ 0x7f97, 0x740, 0x7f98, 0x733, 0x7f99, 0x727, 0x7f9b, 0x71a,
+ 0x7f9c, 0x70e, 0x7f9e, 0x701, 0x7f9f, 0x6f5, 0x7fa0, 0x6e8,
+ 0x7fa2, 0x6dc, 0x7fa3, 0x6cf, 0x7fa4, 0x6c3, 0x7fa6, 0x6b6,
+ 0x7fa7, 0x6aa, 0x7fa8, 0x69d, 0x7faa, 0x691, 0x7fab, 0x684,
+ 0x7fac, 0x678, 0x7fad, 0x66b, 0x7faf, 0x65f, 0x7fb0, 0x652,
+ 0x7fb1, 0x646, 0x7fb2, 0x639, 0x7fb4, 0x62d, 0x7fb5, 0x620,
+ 0x7fb6, 0x614, 0x7fb7, 0x607, 0x7fb8, 0x5fb, 0x7fb9, 0x5ee,
+ 0x7fbb, 0x5e2, 0x7fbc, 0x5d5, 0x7fbd, 0x5c9, 0x7fbe, 0x5bc,
+ 0x7fbf, 0x5b0, 0x7fc0, 0x5a3, 0x7fc1, 0x597, 0x7fc3, 0x58a,
+ 0x7fc4, 0x57e, 0x7fc5, 0x571, 0x7fc6, 0x565, 0x7fc7, 0x558,
+ 0x7fc8, 0x54c, 0x7fc9, 0x53f, 0x7fca, 0x533, 0x7fcb, 0x526,
+ 0x7fcc, 0x51a, 0x7fcd, 0x50d, 0x7fce, 0x500, 0x7fcf, 0x4f4,
+ 0x7fd0, 0x4e7, 0x7fd1, 0x4db, 0x7fd2, 0x4ce, 0x7fd3, 0x4c2,
+ 0x7fd4, 0x4b5, 0x7fd5, 0x4a9, 0x7fd5, 0x49c, 0x7fd6, 0x490,
+ 0x7fd7, 0x483, 0x7fd8, 0x477, 0x7fd9, 0x46a, 0x7fda, 0x45e,
+ 0x7fdb, 0x451, 0x7fdc, 0x444, 0x7fdc, 0x438, 0x7fdd, 0x42b,
+ 0x7fde, 0x41f, 0x7fdf, 0x412, 0x7fe0, 0x406, 0x7fe0, 0x3f9,
+ 0x7fe1, 0x3ed, 0x7fe2, 0x3e0, 0x7fe3, 0x3d4, 0x7fe3, 0x3c7,
+ 0x7fe4, 0x3bb, 0x7fe5, 0x3ae, 0x7fe6, 0x3a1, 0x7fe6, 0x395,
+ 0x7fe7, 0x388, 0x7fe8, 0x37c, 0x7fe8, 0x36f, 0x7fe9, 0x363,
+ 0x7fea, 0x356, 0x7fea, 0x34a, 0x7feb, 0x33d, 0x7fec, 0x330,
+ 0x7fec, 0x324, 0x7fed, 0x317, 0x7fed, 0x30b, 0x7fee, 0x2fe,
+ 0x7fef, 0x2f2, 0x7fef, 0x2e5, 0x7ff0, 0x2d9, 0x7ff0, 0x2cc,
+ 0x7ff1, 0x2c0, 0x7ff1, 0x2b3, 0x7ff2, 0x2a6, 0x7ff2, 0x29a,
+ 0x7ff3, 0x28d, 0x7ff3, 0x281, 0x7ff4, 0x274, 0x7ff4, 0x268,
+ 0x7ff5, 0x25b, 0x7ff5, 0x24e, 0x7ff6, 0x242, 0x7ff6, 0x235,
+ 0x7ff7, 0x229, 0x7ff7, 0x21c, 0x7ff7, 0x210, 0x7ff8, 0x203,
+ 0x7ff8, 0x1f7, 0x7ff9, 0x1ea, 0x7ff9, 0x1dd, 0x7ff9, 0x1d1,
+ 0x7ffa, 0x1c4, 0x7ffa, 0x1b8, 0x7ffa, 0x1ab, 0x7ffb, 0x19f,
+ 0x7ffb, 0x192, 0x7ffb, 0x186, 0x7ffc, 0x179, 0x7ffc, 0x16c,
+ 0x7ffc, 0x160, 0x7ffc, 0x153, 0x7ffd, 0x147, 0x7ffd, 0x13a,
+ 0x7ffd, 0x12e, 0x7ffd, 0x121, 0x7ffe, 0x114, 0x7ffe, 0x108,
+ 0x7ffe, 0xfb, 0x7ffe, 0xef, 0x7ffe, 0xe2, 0x7fff, 0xd6,
+ 0x7fff, 0xc9, 0x7fff, 0xbc, 0x7fff, 0xb0, 0x7fff, 0xa3,
+ 0x7fff, 0x97, 0x7fff, 0x8a, 0x7fff, 0x7e, 0x7fff, 0x71,
+ 0x7fff, 0x65, 0x7fff, 0x58, 0x7fff, 0x4b, 0x7fff, 0x3f,
+ 0x7fff, 0x32, 0x7fff, 0x26, 0x7fff, 0x19, 0x7fff, 0xd,
+ 0x7fff, 0x0, 0x7fff, 0xfff3, 0x7fff, 0xffe7, 0x7fff, 0xffda,
+ 0x7fff, 0xffce, 0x7fff, 0xffc1, 0x7fff, 0xffb5, 0x7fff, 0xffa8,
+ 0x7fff, 0xff9b, 0x7fff, 0xff8f, 0x7fff, 0xff82, 0x7fff, 0xff76,
+ 0x7fff, 0xff69, 0x7fff, 0xff5d, 0x7fff, 0xff50, 0x7fff, 0xff44,
+ 0x7fff, 0xff37, 0x7fff, 0xff2a, 0x7ffe, 0xff1e, 0x7ffe, 0xff11,
+ 0x7ffe, 0xff05, 0x7ffe, 0xfef8, 0x7ffe, 0xfeec, 0x7ffd, 0xfedf,
+ 0x7ffd, 0xfed2, 0x7ffd, 0xfec6, 0x7ffd, 0xfeb9, 0x7ffc, 0xfead,
+ 0x7ffc, 0xfea0, 0x7ffc, 0xfe94, 0x7ffc, 0xfe87, 0x7ffb, 0xfe7a,
+ 0x7ffb, 0xfe6e, 0x7ffb, 0xfe61, 0x7ffa, 0xfe55, 0x7ffa, 0xfe48,
+ 0x7ffa, 0xfe3c, 0x7ff9, 0xfe2f, 0x7ff9, 0xfe23, 0x7ff9, 0xfe16,
+ 0x7ff8, 0xfe09, 0x7ff8, 0xfdfd, 0x7ff7, 0xfdf0, 0x7ff7, 0xfde4,
+ 0x7ff7, 0xfdd7, 0x7ff6, 0xfdcb, 0x7ff6, 0xfdbe, 0x7ff5, 0xfdb2,
+ 0x7ff5, 0xfda5, 0x7ff4, 0xfd98, 0x7ff4, 0xfd8c, 0x7ff3, 0xfd7f,
+ 0x7ff3, 0xfd73, 0x7ff2, 0xfd66, 0x7ff2, 0xfd5a, 0x7ff1, 0xfd4d,
+ 0x7ff1, 0xfd40, 0x7ff0, 0xfd34, 0x7ff0, 0xfd27, 0x7fef, 0xfd1b,
+ 0x7fef, 0xfd0e, 0x7fee, 0xfd02, 0x7fed, 0xfcf5, 0x7fed, 0xfce9,
+ 0x7fec, 0xfcdc, 0x7fec, 0xfcd0, 0x7feb, 0xfcc3, 0x7fea, 0xfcb6,
+ 0x7fea, 0xfcaa, 0x7fe9, 0xfc9d, 0x7fe8, 0xfc91, 0x7fe8, 0xfc84,
+ 0x7fe7, 0xfc78, 0x7fe6, 0xfc6b, 0x7fe6, 0xfc5f, 0x7fe5, 0xfc52,
+ 0x7fe4, 0xfc45, 0x7fe3, 0xfc39, 0x7fe3, 0xfc2c, 0x7fe2, 0xfc20,
+ 0x7fe1, 0xfc13, 0x7fe0, 0xfc07, 0x7fe0, 0xfbfa, 0x7fdf, 0xfbee,
+ 0x7fde, 0xfbe1, 0x7fdd, 0xfbd5, 0x7fdc, 0xfbc8, 0x7fdc, 0xfbbc,
+ 0x7fdb, 0xfbaf, 0x7fda, 0xfba2, 0x7fd9, 0xfb96, 0x7fd8, 0xfb89,
+ 0x7fd7, 0xfb7d, 0x7fd6, 0xfb70, 0x7fd5, 0xfb64, 0x7fd5, 0xfb57,
+ 0x7fd4, 0xfb4b, 0x7fd3, 0xfb3e, 0x7fd2, 0xfb32, 0x7fd1, 0xfb25,
+ 0x7fd0, 0xfb19, 0x7fcf, 0xfb0c, 0x7fce, 0xfb00, 0x7fcd, 0xfaf3,
+ 0x7fcc, 0xfae6, 0x7fcb, 0xfada, 0x7fca, 0xfacd, 0x7fc9, 0xfac1,
+ 0x7fc8, 0xfab4, 0x7fc7, 0xfaa8, 0x7fc6, 0xfa9b, 0x7fc5, 0xfa8f,
+ 0x7fc4, 0xfa82, 0x7fc3, 0xfa76, 0x7fc1, 0xfa69, 0x7fc0, 0xfa5d,
+ 0x7fbf, 0xfa50, 0x7fbe, 0xfa44, 0x7fbd, 0xfa37, 0x7fbc, 0xfa2b,
+ 0x7fbb, 0xfa1e, 0x7fb9, 0xfa12, 0x7fb8, 0xfa05, 0x7fb7, 0xf9f9,
+ 0x7fb6, 0xf9ec, 0x7fb5, 0xf9e0, 0x7fb4, 0xf9d3, 0x7fb2, 0xf9c7,
+ 0x7fb1, 0xf9ba, 0x7fb0, 0xf9ae, 0x7faf, 0xf9a1, 0x7fad, 0xf995,
+ 0x7fac, 0xf988, 0x7fab, 0xf97c, 0x7faa, 0xf96f, 0x7fa8, 0xf963,
+ 0x7fa7, 0xf956, 0x7fa6, 0xf94a, 0x7fa4, 0xf93d, 0x7fa3, 0xf931,
+ 0x7fa2, 0xf924, 0x7fa0, 0xf918, 0x7f9f, 0xf90b, 0x7f9e, 0xf8ff,
+ 0x7f9c, 0xf8f2, 0x7f9b, 0xf8e6, 0x7f99, 0xf8d9, 0x7f98, 0xf8cd,
+ 0x7f97, 0xf8c0, 0x7f95, 0xf8b4, 0x7f94, 0xf8a7, 0x7f92, 0xf89b,
+ 0x7f91, 0xf88e, 0x7f8f, 0xf882, 0x7f8e, 0xf875, 0x7f8c, 0xf869,
+ 0x7f8b, 0xf85c, 0x7f89, 0xf850, 0x7f88, 0xf843, 0x7f86, 0xf837,
+ 0x7f85, 0xf82a, 0x7f83, 0xf81e, 0x7f82, 0xf811, 0x7f80, 0xf805,
+ 0x7f7f, 0xf7f9, 0x7f7d, 0xf7ec, 0x7f7b, 0xf7e0, 0x7f7a, 0xf7d3,
+ 0x7f78, 0xf7c7, 0x7f77, 0xf7ba, 0x7f75, 0xf7ae, 0x7f73, 0xf7a1,
+ 0x7f72, 0xf795, 0x7f70, 0xf788, 0x7f6e, 0xf77c, 0x7f6d, 0xf76f,
+ 0x7f6b, 0xf763, 0x7f69, 0xf757, 0x7f68, 0xf74a, 0x7f66, 0xf73e,
+ 0x7f64, 0xf731, 0x7f62, 0xf725, 0x7f61, 0xf718, 0x7f5f, 0xf70c,
+ 0x7f5d, 0xf6ff, 0x7f5b, 0xf6f3, 0x7f5a, 0xf6e7, 0x7f58, 0xf6da,
+ 0x7f56, 0xf6ce, 0x7f54, 0xf6c1, 0x7f52, 0xf6b5, 0x7f51, 0xf6a8,
+ 0x7f4f, 0xf69c, 0x7f4d, 0xf690, 0x7f4b, 0xf683, 0x7f49, 0xf677,
+ 0x7f47, 0xf66a, 0x7f45, 0xf65e, 0x7f43, 0xf651, 0x7f42, 0xf645,
+ 0x7f40, 0xf639, 0x7f3e, 0xf62c, 0x7f3c, 0xf620, 0x7f3a, 0xf613,
+ 0x7f38, 0xf607, 0x7f36, 0xf5fa, 0x7f34, 0xf5ee, 0x7f32, 0xf5e2,
+ 0x7f30, 0xf5d5, 0x7f2e, 0xf5c9, 0x7f2c, 0xf5bc, 0x7f2a, 0xf5b0,
+ 0x7f28, 0xf5a4, 0x7f26, 0xf597, 0x7f24, 0xf58b, 0x7f22, 0xf57e,
+ 0x7f20, 0xf572, 0x7f1e, 0xf566, 0x7f1c, 0xf559, 0x7f19, 0xf54d,
+ 0x7f17, 0xf540, 0x7f15, 0xf534, 0x7f13, 0xf528, 0x7f11, 0xf51b,
+ 0x7f0f, 0xf50f, 0x7f0d, 0xf503, 0x7f0a, 0xf4f6, 0x7f08, 0xf4ea,
+ 0x7f06, 0xf4dd, 0x7f04, 0xf4d1, 0x7f02, 0xf4c5, 0x7f00, 0xf4b8,
+ 0x7efd, 0xf4ac, 0x7efb, 0xf4a0, 0x7ef9, 0xf493, 0x7ef7, 0xf487,
+ 0x7ef4, 0xf47b, 0x7ef2, 0xf46e, 0x7ef0, 0xf462, 0x7eed, 0xf455,
+ 0x7eeb, 0xf449, 0x7ee9, 0xf43d, 0x7ee7, 0xf430, 0x7ee4, 0xf424,
+ 0x7ee2, 0xf418, 0x7ee0, 0xf40b, 0x7edd, 0xf3ff, 0x7edb, 0xf3f3,
+ 0x7ed8, 0xf3e6, 0x7ed6, 0xf3da, 0x7ed4, 0xf3ce, 0x7ed1, 0xf3c1,
+ 0x7ecf, 0xf3b5, 0x7ecc, 0xf3a9, 0x7eca, 0xf39c, 0x7ec8, 0xf390,
+ 0x7ec5, 0xf384, 0x7ec3, 0xf377, 0x7ec0, 0xf36b, 0x7ebe, 0xf35f,
+ 0x7ebb, 0xf352, 0x7eb9, 0xf346, 0x7eb6, 0xf33a, 0x7eb4, 0xf32d,
+ 0x7eb1, 0xf321, 0x7eaf, 0xf315, 0x7eac, 0xf308, 0x7eaa, 0xf2fc,
+ 0x7ea7, 0xf2f0, 0x7ea5, 0xf2e4, 0x7ea2, 0xf2d7, 0x7e9f, 0xf2cb,
+ 0x7e9d, 0xf2bf, 0x7e9a, 0xf2b2, 0x7e98, 0xf2a6, 0x7e95, 0xf29a,
+ 0x7e92, 0xf28e, 0x7e90, 0xf281, 0x7e8d, 0xf275, 0x7e8a, 0xf269,
+ 0x7e88, 0xf25c, 0x7e85, 0xf250, 0x7e82, 0xf244, 0x7e80, 0xf238,
+ 0x7e7d, 0xf22b, 0x7e7a, 0xf21f, 0x7e77, 0xf213, 0x7e75, 0xf207,
+ 0x7e72, 0xf1fa, 0x7e6f, 0xf1ee, 0x7e6c, 0xf1e2, 0x7e6a, 0xf1d5,
+ 0x7e67, 0xf1c9, 0x7e64, 0xf1bd, 0x7e61, 0xf1b1, 0x7e5e, 0xf1a4,
+ 0x7e5c, 0xf198, 0x7e59, 0xf18c, 0x7e56, 0xf180, 0x7e53, 0xf174,
+ 0x7e50, 0xf167, 0x7e4d, 0xf15b, 0x7e4a, 0xf14f, 0x7e48, 0xf143,
+ 0x7e45, 0xf136, 0x7e42, 0xf12a, 0x7e3f, 0xf11e, 0x7e3c, 0xf112,
+ 0x7e39, 0xf105, 0x7e36, 0xf0f9, 0x7e33, 0xf0ed, 0x7e30, 0xf0e1,
+ 0x7e2d, 0xf0d5, 0x7e2a, 0xf0c8, 0x7e27, 0xf0bc, 0x7e24, 0xf0b0,
+ 0x7e21, 0xf0a4, 0x7e1e, 0xf098, 0x7e1b, 0xf08b, 0x7e18, 0xf07f,
+ 0x7e15, 0xf073, 0x7e12, 0xf067, 0x7e0f, 0xf05b, 0x7e0c, 0xf04e,
+ 0x7e09, 0xf042, 0x7e06, 0xf036, 0x7e03, 0xf02a, 0x7dff, 0xf01e,
+ 0x7dfc, 0xf012, 0x7df9, 0xf005, 0x7df6, 0xeff9, 0x7df3, 0xefed,
+ 0x7df0, 0xefe1, 0x7ded, 0xefd5, 0x7de9, 0xefc9, 0x7de6, 0xefbc,
+ 0x7de3, 0xefb0, 0x7de0, 0xefa4, 0x7ddd, 0xef98, 0x7dd9, 0xef8c,
+ 0x7dd6, 0xef80, 0x7dd3, 0xef74, 0x7dd0, 0xef67, 0x7dcc, 0xef5b,
+ 0x7dc9, 0xef4f, 0x7dc6, 0xef43, 0x7dc2, 0xef37, 0x7dbf, 0xef2b,
+ 0x7dbc, 0xef1f, 0x7db9, 0xef13, 0x7db5, 0xef06, 0x7db2, 0xeefa,
+ 0x7daf, 0xeeee, 0x7dab, 0xeee2, 0x7da8, 0xeed6, 0x7da4, 0xeeca,
+ 0x7da1, 0xeebe, 0x7d9e, 0xeeb2, 0x7d9a, 0xeea6, 0x7d97, 0xee99,
+ 0x7d93, 0xee8d, 0x7d90, 0xee81, 0x7d8d, 0xee75, 0x7d89, 0xee69,
+ 0x7d86, 0xee5d, 0x7d82, 0xee51, 0x7d7f, 0xee45, 0x7d7b, 0xee39,
+ 0x7d78, 0xee2d, 0x7d74, 0xee21, 0x7d71, 0xee15, 0x7d6d, 0xee09,
+ 0x7d6a, 0xedfc, 0x7d66, 0xedf0, 0x7d63, 0xede4, 0x7d5f, 0xedd8,
+ 0x7d5b, 0xedcc, 0x7d58, 0xedc0, 0x7d54, 0xedb4, 0x7d51, 0xeda8,
+ 0x7d4d, 0xed9c, 0x7d49, 0xed90, 0x7d46, 0xed84, 0x7d42, 0xed78,
+ 0x7d3f, 0xed6c, 0x7d3b, 0xed60, 0x7d37, 0xed54, 0x7d34, 0xed48,
+ 0x7d30, 0xed3c, 0x7d2c, 0xed30, 0x7d28, 0xed24, 0x7d25, 0xed18,
+ 0x7d21, 0xed0c, 0x7d1d, 0xed00, 0x7d1a, 0xecf4, 0x7d16, 0xece8,
+ 0x7d12, 0xecdc, 0x7d0e, 0xecd0, 0x7d0b, 0xecc4, 0x7d07, 0xecb8,
+ 0x7d03, 0xecac, 0x7cff, 0xeca0, 0x7cfb, 0xec94, 0x7cf8, 0xec88,
+ 0x7cf4, 0xec7c, 0x7cf0, 0xec70, 0x7cec, 0xec64, 0x7ce8, 0xec58,
+ 0x7ce4, 0xec4c, 0x7ce0, 0xec40, 0x7cdd, 0xec34, 0x7cd9, 0xec28,
+ 0x7cd5, 0xec1c, 0x7cd1, 0xec10, 0x7ccd, 0xec05, 0x7cc9, 0xebf9,
+ 0x7cc5, 0xebed, 0x7cc1, 0xebe1, 0x7cbd, 0xebd5, 0x7cb9, 0xebc9,
+ 0x7cb5, 0xebbd, 0x7cb1, 0xebb1, 0x7cad, 0xeba5, 0x7ca9, 0xeb99,
+ 0x7ca5, 0xeb8d, 0x7ca1, 0xeb81, 0x7c9d, 0xeb75, 0x7c99, 0xeb6a,
+ 0x7c95, 0xeb5e, 0x7c91, 0xeb52, 0x7c8d, 0xeb46, 0x7c89, 0xeb3a,
+ 0x7c85, 0xeb2e, 0x7c81, 0xeb22, 0x7c7d, 0xeb16, 0x7c79, 0xeb0a,
+ 0x7c74, 0xeaff, 0x7c70, 0xeaf3, 0x7c6c, 0xeae7, 0x7c68, 0xeadb,
+ 0x7c64, 0xeacf, 0x7c60, 0xeac3, 0x7c5b, 0xeab7, 0x7c57, 0xeaac,
+ 0x7c53, 0xeaa0, 0x7c4f, 0xea94, 0x7c4b, 0xea88, 0x7c46, 0xea7c,
+ 0x7c42, 0xea70, 0x7c3e, 0xea65, 0x7c3a, 0xea59, 0x7c36, 0xea4d,
+ 0x7c31, 0xea41, 0x7c2d, 0xea35, 0x7c29, 0xea29, 0x7c24, 0xea1e,
+ 0x7c20, 0xea12, 0x7c1c, 0xea06, 0x7c17, 0xe9fa, 0x7c13, 0xe9ee,
+ 0x7c0f, 0xe9e3, 0x7c0a, 0xe9d7, 0x7c06, 0xe9cb, 0x7c02, 0xe9bf,
+ 0x7bfd, 0xe9b4, 0x7bf9, 0xe9a8, 0x7bf5, 0xe99c, 0x7bf0, 0xe990,
+ 0x7bec, 0xe984, 0x7be7, 0xe979, 0x7be3, 0xe96d, 0x7bde, 0xe961,
+ 0x7bda, 0xe955, 0x7bd6, 0xe94a, 0x7bd1, 0xe93e, 0x7bcd, 0xe932,
+ 0x7bc8, 0xe926, 0x7bc4, 0xe91b, 0x7bbf, 0xe90f, 0x7bbb, 0xe903,
+ 0x7bb6, 0xe8f7, 0x7bb2, 0xe8ec, 0x7bad, 0xe8e0, 0x7ba9, 0xe8d4,
+ 0x7ba4, 0xe8c9, 0x7b9f, 0xe8bd, 0x7b9b, 0xe8b1, 0x7b96, 0xe8a5,
+ 0x7b92, 0xe89a, 0x7b8d, 0xe88e, 0x7b88, 0xe882, 0x7b84, 0xe877,
+ 0x7b7f, 0xe86b, 0x7b7b, 0xe85f, 0x7b76, 0xe854, 0x7b71, 0xe848,
+ 0x7b6d, 0xe83c, 0x7b68, 0xe831, 0x7b63, 0xe825, 0x7b5f, 0xe819,
+ 0x7b5a, 0xe80e, 0x7b55, 0xe802, 0x7b50, 0xe7f6, 0x7b4c, 0xe7eb,
+ 0x7b47, 0xe7df, 0x7b42, 0xe7d3, 0x7b3e, 0xe7c8, 0x7b39, 0xe7bc,
+ 0x7b34, 0xe7b1, 0x7b2f, 0xe7a5, 0x7b2a, 0xe799, 0x7b26, 0xe78e,
+ 0x7b21, 0xe782, 0x7b1c, 0xe777, 0x7b17, 0xe76b, 0x7b12, 0xe75f,
+ 0x7b0e, 0xe754, 0x7b09, 0xe748, 0x7b04, 0xe73d, 0x7aff, 0xe731,
+ 0x7afa, 0xe725, 0x7af5, 0xe71a, 0x7af0, 0xe70e, 0x7aeb, 0xe703,
+ 0x7ae6, 0xe6f7, 0x7ae2, 0xe6ec, 0x7add, 0xe6e0, 0x7ad8, 0xe6d4,
+ 0x7ad3, 0xe6c9, 0x7ace, 0xe6bd, 0x7ac9, 0xe6b2, 0x7ac4, 0xe6a6,
+ 0x7abf, 0xe69b, 0x7aba, 0xe68f, 0x7ab5, 0xe684, 0x7ab0, 0xe678,
+ 0x7aab, 0xe66d, 0x7aa6, 0xe661, 0x7aa1, 0xe656, 0x7a9c, 0xe64a,
+ 0x7a97, 0xe63f, 0x7a92, 0xe633, 0x7a8d, 0xe628, 0x7a88, 0xe61c,
+ 0x7a82, 0xe611, 0x7a7d, 0xe605, 0x7a78, 0xe5fa, 0x7a73, 0xe5ee,
+ 0x7a6e, 0xe5e3, 0x7a69, 0xe5d7, 0x7a64, 0xe5cc, 0x7a5f, 0xe5c0,
+ 0x7a59, 0xe5b5, 0x7a54, 0xe5a9, 0x7a4f, 0xe59e, 0x7a4a, 0xe592,
+ 0x7a45, 0xe587, 0x7a3f, 0xe57c, 0x7a3a, 0xe570, 0x7a35, 0xe565,
+ 0x7a30, 0xe559, 0x7a2b, 0xe54e, 0x7a25, 0xe542, 0x7a20, 0xe537,
+ 0x7a1b, 0xe52c, 0x7a16, 0xe520, 0x7a10, 0xe515, 0x7a0b, 0xe509,
+ 0x7a06, 0xe4fe, 0x7a00, 0xe4f3, 0x79fb, 0xe4e7, 0x79f6, 0xe4dc,
+ 0x79f0, 0xe4d0, 0x79eb, 0xe4c5, 0x79e6, 0xe4ba, 0x79e0, 0xe4ae,
+ 0x79db, 0xe4a3, 0x79d6, 0xe498, 0x79d0, 0xe48c, 0x79cb, 0xe481,
+ 0x79c5, 0xe476, 0x79c0, 0xe46a, 0x79bb, 0xe45f, 0x79b5, 0xe454,
+ 0x79b0, 0xe448, 0x79aa, 0xe43d, 0x79a5, 0xe432, 0x799f, 0xe426,
+ 0x799a, 0xe41b, 0x7994, 0xe410, 0x798f, 0xe404, 0x7989, 0xe3f9,
+ 0x7984, 0xe3ee, 0x797e, 0xe3e2, 0x7979, 0xe3d7, 0x7973, 0xe3cc,
+ 0x796e, 0xe3c1, 0x7968, 0xe3b5, 0x7963, 0xe3aa, 0x795d, 0xe39f,
+ 0x7958, 0xe394, 0x7952, 0xe388, 0x794c, 0xe37d, 0x7947, 0xe372,
+ 0x7941, 0xe367, 0x793b, 0xe35b, 0x7936, 0xe350, 0x7930, 0xe345,
+ 0x792b, 0xe33a, 0x7925, 0xe32e, 0x791f, 0xe323, 0x791a, 0xe318,
+ 0x7914, 0xe30d, 0x790e, 0xe301, 0x7909, 0xe2f6, 0x7903, 0xe2eb,
+ 0x78fd, 0xe2e0, 0x78f7, 0xe2d5, 0x78f2, 0xe2ca, 0x78ec, 0xe2be,
+ 0x78e6, 0xe2b3, 0x78e0, 0xe2a8, 0x78db, 0xe29d, 0x78d5, 0xe292,
+ 0x78cf, 0xe287, 0x78c9, 0xe27b, 0x78c3, 0xe270, 0x78be, 0xe265,
+ 0x78b8, 0xe25a, 0x78b2, 0xe24f, 0x78ac, 0xe244, 0x78a6, 0xe239,
+ 0x78a1, 0xe22d, 0x789b, 0xe222, 0x7895, 0xe217, 0x788f, 0xe20c,
+ 0x7889, 0xe201, 0x7883, 0xe1f6, 0x787d, 0xe1eb, 0x7877, 0xe1e0,
+ 0x7871, 0xe1d5, 0x786b, 0xe1ca, 0x7866, 0xe1be, 0x7860, 0xe1b3,
+ 0x785a, 0xe1a8, 0x7854, 0xe19d, 0x784e, 0xe192, 0x7848, 0xe187,
+ 0x7842, 0xe17c, 0x783c, 0xe171, 0x7836, 0xe166, 0x7830, 0xe15b,
+ 0x782a, 0xe150, 0x7824, 0xe145, 0x781e, 0xe13a, 0x7818, 0xe12f,
+ 0x7812, 0xe124, 0x780b, 0xe119, 0x7805, 0xe10e, 0x77ff, 0xe103,
+ 0x77f9, 0xe0f8, 0x77f3, 0xe0ed, 0x77ed, 0xe0e2, 0x77e7, 0xe0d7,
+ 0x77e1, 0xe0cc, 0x77db, 0xe0c1, 0x77d5, 0xe0b6, 0x77ce, 0xe0ab,
+ 0x77c8, 0xe0a0, 0x77c2, 0xe095, 0x77bc, 0xe08a, 0x77b6, 0xe07f,
+ 0x77b0, 0xe074, 0x77a9, 0xe069, 0x77a3, 0xe05e, 0x779d, 0xe054,
+ 0x7797, 0xe049, 0x7790, 0xe03e, 0x778a, 0xe033, 0x7784, 0xe028,
+ 0x777e, 0xe01d, 0x7777, 0xe012, 0x7771, 0xe007, 0x776b, 0xdffc,
+ 0x7765, 0xdff1, 0x775e, 0xdfe7, 0x7758, 0xdfdc, 0x7752, 0xdfd1,
+ 0x774b, 0xdfc6, 0x7745, 0xdfbb, 0x773f, 0xdfb0, 0x7738, 0xdfa5,
+ 0x7732, 0xdf9b, 0x772c, 0xdf90, 0x7725, 0xdf85, 0x771f, 0xdf7a,
+ 0x7718, 0xdf6f, 0x7712, 0xdf65, 0x770c, 0xdf5a, 0x7705, 0xdf4f,
+ 0x76ff, 0xdf44, 0x76f8, 0xdf39, 0x76f2, 0xdf2f, 0x76eb, 0xdf24,
+ 0x76e5, 0xdf19, 0x76df, 0xdf0e, 0x76d8, 0xdf03, 0x76d2, 0xdef9,
+ 0x76cb, 0xdeee, 0x76c5, 0xdee3, 0x76be, 0xded8, 0x76b8, 0xdece,
+ 0x76b1, 0xdec3, 0x76ab, 0xdeb8, 0x76a4, 0xdead, 0x769d, 0xdea3,
+ 0x7697, 0xde98, 0x7690, 0xde8d, 0x768a, 0xde83, 0x7683, 0xde78,
+ 0x767d, 0xde6d, 0x7676, 0xde62, 0x766f, 0xde58, 0x7669, 0xde4d,
+ 0x7662, 0xde42, 0x765c, 0xde38, 0x7655, 0xde2d, 0x764e, 0xde22,
+ 0x7648, 0xde18, 0x7641, 0xde0d, 0x763a, 0xde02, 0x7634, 0xddf8,
+ 0x762d, 0xdded, 0x7626, 0xdde2, 0x7620, 0xddd8, 0x7619, 0xddcd,
+ 0x7612, 0xddc3, 0x760b, 0xddb8, 0x7605, 0xddad, 0x75fe, 0xdda3,
+ 0x75f7, 0xdd98, 0x75f0, 0xdd8e, 0x75ea, 0xdd83, 0x75e3, 0xdd78,
+ 0x75dc, 0xdd6e, 0x75d5, 0xdd63, 0x75ce, 0xdd59, 0x75c8, 0xdd4e,
+ 0x75c1, 0xdd44, 0x75ba, 0xdd39, 0x75b3, 0xdd2e, 0x75ac, 0xdd24,
+ 0x75a5, 0xdd19, 0x759f, 0xdd0f, 0x7598, 0xdd04, 0x7591, 0xdcfa,
+ 0x758a, 0xdcef, 0x7583, 0xdce5, 0x757c, 0xdcda, 0x7575, 0xdcd0,
+ 0x756e, 0xdcc5, 0x7567, 0xdcbb, 0x7561, 0xdcb0, 0x755a, 0xdca6,
+ 0x7553, 0xdc9b, 0x754c, 0xdc91, 0x7545, 0xdc86, 0x753e, 0xdc7c,
+ 0x7537, 0xdc72, 0x7530, 0xdc67, 0x7529, 0xdc5d, 0x7522, 0xdc52,
+ 0x751b, 0xdc48, 0x7514, 0xdc3d, 0x750d, 0xdc33, 0x7506, 0xdc29,
+ 0x74ff, 0xdc1e, 0x74f8, 0xdc14, 0x74f1, 0xdc09, 0x74ea, 0xdbff,
+ 0x74e2, 0xdbf5, 0x74db, 0xdbea, 0x74d4, 0xdbe0, 0x74cd, 0xdbd5,
+ 0x74c6, 0xdbcb, 0x74bf, 0xdbc1, 0x74b8, 0xdbb6, 0x74b1, 0xdbac,
+ 0x74aa, 0xdba2, 0x74a2, 0xdb97, 0x749b, 0xdb8d, 0x7494, 0xdb83,
+ 0x748d, 0xdb78, 0x7486, 0xdb6e, 0x747f, 0xdb64, 0x7477, 0xdb59,
+ 0x7470, 0xdb4f, 0x7469, 0xdb45, 0x7462, 0xdb3b, 0x745b, 0xdb30,
+ 0x7453, 0xdb26, 0x744c, 0xdb1c, 0x7445, 0xdb11, 0x743e, 0xdb07,
+ 0x7436, 0xdafd, 0x742f, 0xdaf3, 0x7428, 0xdae8, 0x7420, 0xdade,
+ 0x7419, 0xdad4, 0x7412, 0xdaca, 0x740b, 0xdabf, 0x7403, 0xdab5,
+ 0x73fc, 0xdaab, 0x73f5, 0xdaa1, 0x73ed, 0xda97, 0x73e6, 0xda8c,
+ 0x73df, 0xda82, 0x73d7, 0xda78, 0x73d0, 0xda6e, 0x73c8, 0xda64,
+ 0x73c1, 0xda5a, 0x73ba, 0xda4f, 0x73b2, 0xda45, 0x73ab, 0xda3b,
+ 0x73a3, 0xda31, 0x739c, 0xda27, 0x7395, 0xda1d, 0x738d, 0xda13,
+ 0x7386, 0xda08, 0x737e, 0xd9fe, 0x7377, 0xd9f4, 0x736f, 0xd9ea,
+ 0x7368, 0xd9e0, 0x7360, 0xd9d6, 0x7359, 0xd9cc, 0x7351, 0xd9c2,
+ 0x734a, 0xd9b8, 0x7342, 0xd9ae, 0x733b, 0xd9a4, 0x7333, 0xd99a,
+ 0x732c, 0xd98f, 0x7324, 0xd985, 0x731d, 0xd97b, 0x7315, 0xd971,
+ 0x730d, 0xd967, 0x7306, 0xd95d, 0x72fe, 0xd953, 0x72f7, 0xd949,
+ 0x72ef, 0xd93f, 0x72e7, 0xd935, 0x72e0, 0xd92b, 0x72d8, 0xd921,
+ 0x72d0, 0xd917, 0x72c9, 0xd90d, 0x72c1, 0xd903, 0x72ba, 0xd8f9,
+ 0x72b2, 0xd8ef, 0x72aa, 0xd8e6, 0x72a3, 0xd8dc, 0x729b, 0xd8d2,
+ 0x7293, 0xd8c8, 0x728b, 0xd8be, 0x7284, 0xd8b4, 0x727c, 0xd8aa,
+ 0x7274, 0xd8a0, 0x726d, 0xd896, 0x7265, 0xd88c, 0x725d, 0xd882,
+ 0x7255, 0xd878, 0x724e, 0xd86f, 0x7246, 0xd865, 0x723e, 0xd85b,
+ 0x7236, 0xd851, 0x722e, 0xd847, 0x7227, 0xd83d, 0x721f, 0xd833,
+ 0x7217, 0xd82a, 0x720f, 0xd820, 0x7207, 0xd816, 0x71ff, 0xd80c,
+ 0x71f8, 0xd802, 0x71f0, 0xd7f8, 0x71e8, 0xd7ef, 0x71e0, 0xd7e5,
+ 0x71d8, 0xd7db, 0x71d0, 0xd7d1, 0x71c8, 0xd7c8, 0x71c0, 0xd7be,
+ 0x71b9, 0xd7b4, 0x71b1, 0xd7aa, 0x71a9, 0xd7a0, 0x71a1, 0xd797,
+ 0x7199, 0xd78d, 0x7191, 0xd783, 0x7189, 0xd77a, 0x7181, 0xd770,
+ 0x7179, 0xd766, 0x7171, 0xd75c, 0x7169, 0xd753, 0x7161, 0xd749,
+ 0x7159, 0xd73f, 0x7151, 0xd736, 0x7149, 0xd72c, 0x7141, 0xd722,
+ 0x7139, 0xd719, 0x7131, 0xd70f, 0x7129, 0xd705, 0x7121, 0xd6fc,
+ 0x7119, 0xd6f2, 0x7111, 0xd6e8, 0x7109, 0xd6df, 0x7101, 0xd6d5,
+ 0x70f9, 0xd6cb, 0x70f0, 0xd6c2, 0x70e8, 0xd6b8, 0x70e0, 0xd6af,
+ 0x70d8, 0xd6a5, 0x70d0, 0xd69b, 0x70c8, 0xd692, 0x70c0, 0xd688,
+ 0x70b8, 0xd67f, 0x70af, 0xd675, 0x70a7, 0xd66c, 0x709f, 0xd662,
+ 0x7097, 0xd659, 0x708f, 0xd64f, 0x7087, 0xd645, 0x707e, 0xd63c,
+ 0x7076, 0xd632, 0x706e, 0xd629, 0x7066, 0xd61f, 0x705d, 0xd616,
+ 0x7055, 0xd60c, 0x704d, 0xd603, 0x7045, 0xd5f9, 0x703c, 0xd5f0,
+ 0x7034, 0xd5e6, 0x702c, 0xd5dd, 0x7024, 0xd5d4, 0x701b, 0xd5ca,
+ 0x7013, 0xd5c1, 0x700b, 0xd5b7, 0x7002, 0xd5ae, 0x6ffa, 0xd5a4,
+ 0x6ff2, 0xd59b, 0x6fea, 0xd592, 0x6fe1, 0xd588, 0x6fd9, 0xd57f,
+ 0x6fd0, 0xd575, 0x6fc8, 0xd56c, 0x6fc0, 0xd563, 0x6fb7, 0xd559,
+ 0x6faf, 0xd550, 0x6fa7, 0xd547, 0x6f9e, 0xd53d, 0x6f96, 0xd534,
+ 0x6f8d, 0xd52a, 0x6f85, 0xd521, 0x6f7d, 0xd518, 0x6f74, 0xd50e,
+ 0x6f6c, 0xd505, 0x6f63, 0xd4fc, 0x6f5b, 0xd4f3, 0x6f52, 0xd4e9,
+ 0x6f4a, 0xd4e0, 0x6f41, 0xd4d7, 0x6f39, 0xd4cd, 0x6f30, 0xd4c4,
+ 0x6f28, 0xd4bb, 0x6f20, 0xd4b2, 0x6f17, 0xd4a8, 0x6f0e, 0xd49f,
+ 0x6f06, 0xd496, 0x6efd, 0xd48d, 0x6ef5, 0xd483, 0x6eec, 0xd47a,
+ 0x6ee4, 0xd471, 0x6edb, 0xd468, 0x6ed3, 0xd45f, 0x6eca, 0xd455,
+ 0x6ec2, 0xd44c, 0x6eb9, 0xd443, 0x6eb0, 0xd43a, 0x6ea8, 0xd431,
+ 0x6e9f, 0xd428, 0x6e97, 0xd41e, 0x6e8e, 0xd415, 0x6e85, 0xd40c,
+ 0x6e7d, 0xd403, 0x6e74, 0xd3fa, 0x6e6b, 0xd3f1, 0x6e63, 0xd3e8,
+ 0x6e5a, 0xd3df, 0x6e51, 0xd3d5, 0x6e49, 0xd3cc, 0x6e40, 0xd3c3,
+ 0x6e37, 0xd3ba, 0x6e2f, 0xd3b1, 0x6e26, 0xd3a8, 0x6e1d, 0xd39f,
+ 0x6e15, 0xd396, 0x6e0c, 0xd38d, 0x6e03, 0xd384, 0x6dfa, 0xd37b,
+ 0x6df2, 0xd372, 0x6de9, 0xd369, 0x6de0, 0xd360, 0x6dd7, 0xd357,
+ 0x6dcf, 0xd34e, 0x6dc6, 0xd345, 0x6dbd, 0xd33c, 0x6db4, 0xd333,
+ 0x6dab, 0xd32a, 0x6da3, 0xd321, 0x6d9a, 0xd318, 0x6d91, 0xd30f,
+ 0x6d88, 0xd306, 0x6d7f, 0xd2fd, 0x6d76, 0xd2f4, 0x6d6e, 0xd2eb,
+ 0x6d65, 0xd2e2, 0x6d5c, 0xd2d9, 0x6d53, 0xd2d1, 0x6d4a, 0xd2c8,
+ 0x6d41, 0xd2bf, 0x6d38, 0xd2b6, 0x6d2f, 0xd2ad, 0x6d27, 0xd2a4,
+ 0x6d1e, 0xd29b, 0x6d15, 0xd292, 0x6d0c, 0xd28a, 0x6d03, 0xd281,
+ 0x6cfa, 0xd278, 0x6cf1, 0xd26f, 0x6ce8, 0xd266, 0x6cdf, 0xd25d,
+ 0x6cd6, 0xd255, 0x6ccd, 0xd24c, 0x6cc4, 0xd243, 0x6cbb, 0xd23a,
+ 0x6cb2, 0xd231, 0x6ca9, 0xd229, 0x6ca0, 0xd220, 0x6c97, 0xd217,
+ 0x6c8e, 0xd20e, 0x6c85, 0xd206, 0x6c7c, 0xd1fd, 0x6c73, 0xd1f4,
+ 0x6c6a, 0xd1eb, 0x6c61, 0xd1e3, 0x6c58, 0xd1da, 0x6c4f, 0xd1d1,
+ 0x6c46, 0xd1c9, 0x6c3d, 0xd1c0, 0x6c34, 0xd1b7, 0x6c2b, 0xd1af,
+ 0x6c21, 0xd1a6, 0x6c18, 0xd19d, 0x6c0f, 0xd195, 0x6c06, 0xd18c,
+ 0x6bfd, 0xd183, 0x6bf4, 0xd17b, 0x6beb, 0xd172, 0x6be2, 0xd169,
+ 0x6bd8, 0xd161, 0x6bcf, 0xd158, 0x6bc6, 0xd150, 0x6bbd, 0xd147,
+ 0x6bb4, 0xd13e, 0x6bab, 0xd136, 0x6ba1, 0xd12d, 0x6b98, 0xd125,
+ 0x6b8f, 0xd11c, 0x6b86, 0xd114, 0x6b7d, 0xd10b, 0x6b73, 0xd103,
+ 0x6b6a, 0xd0fa, 0x6b61, 0xd0f2, 0x6b58, 0xd0e9, 0x6b4e, 0xd0e0,
+ 0x6b45, 0xd0d8, 0x6b3c, 0xd0d0, 0x6b33, 0xd0c7, 0x6b29, 0xd0bf,
+ 0x6b20, 0xd0b6, 0x6b17, 0xd0ae, 0x6b0d, 0xd0a5, 0x6b04, 0xd09d,
+ 0x6afb, 0xd094, 0x6af2, 0xd08c, 0x6ae8, 0xd083, 0x6adf, 0xd07b,
+ 0x6ad6, 0xd073, 0x6acc, 0xd06a, 0x6ac3, 0xd062, 0x6ab9, 0xd059,
+ 0x6ab0, 0xd051, 0x6aa7, 0xd049, 0x6a9d, 0xd040, 0x6a94, 0xd038,
+ 0x6a8b, 0xd030, 0x6a81, 0xd027, 0x6a78, 0xd01f, 0x6a6e, 0xd016,
+ 0x6a65, 0xd00e, 0x6a5c, 0xd006, 0x6a52, 0xcffe, 0x6a49, 0xcff5,
+ 0x6a3f, 0xcfed, 0x6a36, 0xcfe5, 0x6a2c, 0xcfdc, 0x6a23, 0xcfd4,
+ 0x6a1a, 0xcfcc, 0x6a10, 0xcfc4, 0x6a07, 0xcfbb, 0x69fd, 0xcfb3,
+ 0x69f4, 0xcfab, 0x69ea, 0xcfa3, 0x69e1, 0xcf9a, 0x69d7, 0xcf92,
+ 0x69ce, 0xcf8a, 0x69c4, 0xcf82, 0x69bb, 0xcf79, 0x69b1, 0xcf71,
+ 0x69a7, 0xcf69, 0x699e, 0xcf61, 0x6994, 0xcf59, 0x698b, 0xcf51,
+ 0x6981, 0xcf48, 0x6978, 0xcf40, 0x696e, 0xcf38, 0x6965, 0xcf30,
+ 0x695b, 0xcf28, 0x6951, 0xcf20, 0x6948, 0xcf18, 0x693e, 0xcf10,
+ 0x6935, 0xcf07, 0x692b, 0xceff, 0x6921, 0xcef7, 0x6918, 0xceef,
+ 0x690e, 0xcee7, 0x6904, 0xcedf, 0x68fb, 0xced7, 0x68f1, 0xcecf,
+ 0x68e7, 0xcec7, 0x68de, 0xcebf, 0x68d4, 0xceb7, 0x68ca, 0xceaf,
+ 0x68c1, 0xcea7, 0x68b7, 0xce9f, 0x68ad, 0xce97, 0x68a4, 0xce8f,
+ 0x689a, 0xce87, 0x6890, 0xce7f, 0x6886, 0xce77, 0x687d, 0xce6f,
+ 0x6873, 0xce67, 0x6869, 0xce5f, 0x6860, 0xce57, 0x6856, 0xce4f,
+ 0x684c, 0xce47, 0x6842, 0xce40, 0x6838, 0xce38, 0x682f, 0xce30,
+ 0x6825, 0xce28, 0x681b, 0xce20, 0x6811, 0xce18, 0x6808, 0xce10,
+ 0x67fe, 0xce08, 0x67f4, 0xce01, 0x67ea, 0xcdf9, 0x67e0, 0xcdf1,
+ 0x67d6, 0xcde9, 0x67cd, 0xcde1, 0x67c3, 0xcdd9, 0x67b9, 0xcdd2,
+ 0x67af, 0xcdca, 0x67a5, 0xcdc2, 0x679b, 0xcdba, 0x6791, 0xcdb2,
+ 0x6788, 0xcdab, 0x677e, 0xcda3, 0x6774, 0xcd9b, 0x676a, 0xcd93,
+ 0x6760, 0xcd8c, 0x6756, 0xcd84, 0x674c, 0xcd7c, 0x6742, 0xcd75,
+ 0x6738, 0xcd6d, 0x672e, 0xcd65, 0x6724, 0xcd5d, 0x671a, 0xcd56,
+ 0x6711, 0xcd4e, 0x6707, 0xcd46, 0x66fd, 0xcd3f, 0x66f3, 0xcd37,
+ 0x66e9, 0xcd30, 0x66df, 0xcd28, 0x66d5, 0xcd20, 0x66cb, 0xcd19,
+ 0x66c1, 0xcd11, 0x66b7, 0xcd09, 0x66ad, 0xcd02, 0x66a3, 0xccfa,
+ 0x6699, 0xccf3, 0x668f, 0xcceb, 0x6685, 0xcce3, 0x667b, 0xccdc,
+ 0x6671, 0xccd4, 0x6666, 0xcccd, 0x665c, 0xccc5, 0x6652, 0xccbe,
+ 0x6648, 0xccb6, 0x663e, 0xccaf, 0x6634, 0xcca7, 0x662a, 0xcca0,
+ 0x6620, 0xcc98, 0x6616, 0xcc91, 0x660c, 0xcc89, 0x6602, 0xcc82,
+ 0x65f8, 0xcc7a, 0x65ed, 0xcc73, 0x65e3, 0xcc6b, 0x65d9, 0xcc64,
+ 0x65cf, 0xcc5d, 0x65c5, 0xcc55, 0x65bb, 0xcc4e, 0x65b1, 0xcc46,
+ 0x65a6, 0xcc3f, 0x659c, 0xcc38, 0x6592, 0xcc30, 0x6588, 0xcc29,
+ 0x657e, 0xcc21, 0x6574, 0xcc1a, 0x6569, 0xcc13, 0x655f, 0xcc0b,
+ 0x6555, 0xcc04, 0x654b, 0xcbfd, 0x6541, 0xcbf5, 0x6536, 0xcbee,
+ 0x652c, 0xcbe7, 0x6522, 0xcbe0, 0x6518, 0xcbd8, 0x650d, 0xcbd1,
+ 0x6503, 0xcbca, 0x64f9, 0xcbc2, 0x64ef, 0xcbbb, 0x64e4, 0xcbb4,
+ 0x64da, 0xcbad, 0x64d0, 0xcba5, 0x64c5, 0xcb9e, 0x64bb, 0xcb97,
+ 0x64b1, 0xcb90, 0x64a7, 0xcb89, 0x649c, 0xcb81, 0x6492, 0xcb7a,
+ 0x6488, 0xcb73, 0x647d, 0xcb6c, 0x6473, 0xcb65, 0x6469, 0xcb5e,
+ 0x645e, 0xcb56, 0x6454, 0xcb4f, 0x644a, 0xcb48, 0x643f, 0xcb41,
+ 0x6435, 0xcb3a, 0x642b, 0xcb33, 0x6420, 0xcb2c, 0x6416, 0xcb25,
+ 0x640b, 0xcb1e, 0x6401, 0xcb16, 0x63f7, 0xcb0f, 0x63ec, 0xcb08,
+ 0x63e2, 0xcb01, 0x63d7, 0xcafa, 0x63cd, 0xcaf3, 0x63c3, 0xcaec,
+ 0x63b8, 0xcae5, 0x63ae, 0xcade, 0x63a3, 0xcad7, 0x6399, 0xcad0,
+ 0x638e, 0xcac9, 0x6384, 0xcac2, 0x637a, 0xcabb, 0x636f, 0xcab4,
+ 0x6365, 0xcaad, 0x635a, 0xcaa6, 0x6350, 0xca9f, 0x6345, 0xca99,
+ 0x633b, 0xca92, 0x6330, 0xca8b, 0x6326, 0xca84, 0x631b, 0xca7d,
+ 0x6311, 0xca76, 0x6306, 0xca6f, 0x62fc, 0xca68, 0x62f1, 0xca61,
+ 0x62e7, 0xca5b, 0x62dc, 0xca54, 0x62d2, 0xca4d, 0x62c7, 0xca46,
+ 0x62bc, 0xca3f, 0x62b2, 0xca38, 0x62a7, 0xca32, 0x629d, 0xca2b,
+ 0x6292, 0xca24, 0x6288, 0xca1d, 0x627d, 0xca16, 0x6272, 0xca10,
+ 0x6268, 0xca09, 0x625d, 0xca02, 0x6253, 0xc9fb, 0x6248, 0xc9f5,
+ 0x623d, 0xc9ee, 0x6233, 0xc9e7, 0x6228, 0xc9e0, 0x621e, 0xc9da,
+ 0x6213, 0xc9d3, 0x6208, 0xc9cc, 0x61fe, 0xc9c6, 0x61f3, 0xc9bf,
+ 0x61e8, 0xc9b8, 0x61de, 0xc9b2, 0x61d3, 0xc9ab, 0x61c8, 0xc9a4,
+ 0x61be, 0xc99e, 0x61b3, 0xc997, 0x61a8, 0xc991, 0x619e, 0xc98a,
+ 0x6193, 0xc983, 0x6188, 0xc97d, 0x617d, 0xc976, 0x6173, 0xc970,
+ 0x6168, 0xc969, 0x615d, 0xc963, 0x6153, 0xc95c, 0x6148, 0xc955,
+ 0x613d, 0xc94f, 0x6132, 0xc948, 0x6128, 0xc942, 0x611d, 0xc93b,
+ 0x6112, 0xc935, 0x6107, 0xc92e, 0x60fd, 0xc928, 0x60f2, 0xc921,
+ 0x60e7, 0xc91b, 0x60dc, 0xc915, 0x60d1, 0xc90e, 0x60c7, 0xc908,
+ 0x60bc, 0xc901, 0x60b1, 0xc8fb, 0x60a6, 0xc8f4, 0x609b, 0xc8ee,
+ 0x6091, 0xc8e8, 0x6086, 0xc8e1, 0x607b, 0xc8db, 0x6070, 0xc8d4,
+ 0x6065, 0xc8ce, 0x605b, 0xc8c8, 0x6050, 0xc8c1, 0x6045, 0xc8bb,
+ 0x603a, 0xc8b5, 0x602f, 0xc8ae, 0x6024, 0xc8a8, 0x6019, 0xc8a2,
+ 0x600f, 0xc89b, 0x6004, 0xc895, 0x5ff9, 0xc88f, 0x5fee, 0xc889,
+ 0x5fe3, 0xc882, 0x5fd8, 0xc87c, 0x5fcd, 0xc876, 0x5fc2, 0xc870,
+ 0x5fb7, 0xc869, 0x5fac, 0xc863, 0x5fa2, 0xc85d, 0x5f97, 0xc857,
+ 0x5f8c, 0xc850, 0x5f81, 0xc84a, 0x5f76, 0xc844, 0x5f6b, 0xc83e,
+ 0x5f60, 0xc838, 0x5f55, 0xc832, 0x5f4a, 0xc82b, 0x5f3f, 0xc825,
+ 0x5f34, 0xc81f, 0x5f29, 0xc819, 0x5f1e, 0xc813, 0x5f13, 0xc80d,
+ 0x5f08, 0xc807, 0x5efd, 0xc801, 0x5ef2, 0xc7fb, 0x5ee7, 0xc7f5,
+ 0x5edc, 0xc7ee, 0x5ed1, 0xc7e8, 0x5ec6, 0xc7e2, 0x5ebb, 0xc7dc,
+ 0x5eb0, 0xc7d6, 0x5ea5, 0xc7d0, 0x5e9a, 0xc7ca, 0x5e8f, 0xc7c4,
+ 0x5e84, 0xc7be, 0x5e79, 0xc7b8, 0x5e6e, 0xc7b2, 0x5e63, 0xc7ac,
+ 0x5e58, 0xc7a6, 0x5e4d, 0xc7a0, 0x5e42, 0xc79a, 0x5e36, 0xc795,
+ 0x5e2b, 0xc78f, 0x5e20, 0xc789, 0x5e15, 0xc783, 0x5e0a, 0xc77d,
+ 0x5dff, 0xc777, 0x5df4, 0xc771, 0x5de9, 0xc76b, 0x5dde, 0xc765,
+ 0x5dd3, 0xc75f, 0x5dc7, 0xc75a, 0x5dbc, 0xc754, 0x5db1, 0xc74e,
+ 0x5da6, 0xc748, 0x5d9b, 0xc742, 0x5d90, 0xc73d, 0x5d85, 0xc737,
+ 0x5d79, 0xc731, 0x5d6e, 0xc72b, 0x5d63, 0xc725, 0x5d58, 0xc720,
+ 0x5d4d, 0xc71a, 0x5d42, 0xc714, 0x5d36, 0xc70e, 0x5d2b, 0xc709,
+ 0x5d20, 0xc703, 0x5d15, 0xc6fd, 0x5d0a, 0xc6f7, 0x5cff, 0xc6f2,
+ 0x5cf3, 0xc6ec, 0x5ce8, 0xc6e6, 0x5cdd, 0xc6e1, 0x5cd2, 0xc6db,
+ 0x5cc6, 0xc6d5, 0x5cbb, 0xc6d0, 0x5cb0, 0xc6ca, 0x5ca5, 0xc6c5,
+ 0x5c99, 0xc6bf, 0x5c8e, 0xc6b9, 0x5c83, 0xc6b4, 0x5c78, 0xc6ae,
+ 0x5c6c, 0xc6a8, 0x5c61, 0xc6a3, 0x5c56, 0xc69d, 0x5c4b, 0xc698,
+ 0x5c3f, 0xc692, 0x5c34, 0xc68d, 0x5c29, 0xc687, 0x5c1e, 0xc682,
+ 0x5c12, 0xc67c, 0x5c07, 0xc677, 0x5bfc, 0xc671, 0x5bf0, 0xc66c,
+ 0x5be5, 0xc666, 0x5bda, 0xc661, 0x5bce, 0xc65b, 0x5bc3, 0xc656,
+ 0x5bb8, 0xc650, 0x5bac, 0xc64b, 0x5ba1, 0xc645, 0x5b96, 0xc640,
+ 0x5b8a, 0xc63b, 0x5b7f, 0xc635, 0x5b74, 0xc630, 0x5b68, 0xc62a,
+ 0x5b5d, 0xc625, 0x5b52, 0xc620, 0x5b46, 0xc61a, 0x5b3b, 0xc615,
+ 0x5b30, 0xc610, 0x5b24, 0xc60a, 0x5b19, 0xc605, 0x5b0d, 0xc600,
+ 0x5b02, 0xc5fa, 0x5af7, 0xc5f5, 0x5aeb, 0xc5f0, 0x5ae0, 0xc5ea,
+ 0x5ad4, 0xc5e5, 0x5ac9, 0xc5e0, 0x5abe, 0xc5db, 0x5ab2, 0xc5d5,
+ 0x5aa7, 0xc5d0, 0x5a9b, 0xc5cb, 0x5a90, 0xc5c6, 0x5a84, 0xc5c1,
+ 0x5a79, 0xc5bb, 0x5a6e, 0xc5b6, 0x5a62, 0xc5b1, 0x5a57, 0xc5ac,
+ 0x5a4b, 0xc5a7, 0x5a40, 0xc5a1, 0x5a34, 0xc59c, 0x5a29, 0xc597,
+ 0x5a1d, 0xc592, 0x5a12, 0xc58d, 0x5a06, 0xc588, 0x59fb, 0xc583,
+ 0x59ef, 0xc57e, 0x59e4, 0xc578, 0x59d8, 0xc573, 0x59cd, 0xc56e,
+ 0x59c1, 0xc569, 0x59b6, 0xc564, 0x59aa, 0xc55f, 0x599f, 0xc55a,
+ 0x5993, 0xc555, 0x5988, 0xc550, 0x597c, 0xc54b, 0x5971, 0xc546,
+ 0x5965, 0xc541, 0x595a, 0xc53c, 0x594e, 0xc537, 0x5943, 0xc532,
+ 0x5937, 0xc52d, 0x592c, 0xc528, 0x5920, 0xc523, 0x5914, 0xc51e,
+ 0x5909, 0xc51a, 0x58fd, 0xc515, 0x58f2, 0xc510, 0x58e6, 0xc50b,
+ 0x58db, 0xc506, 0x58cf, 0xc501, 0x58c3, 0xc4fc, 0x58b8, 0xc4f7,
+ 0x58ac, 0xc4f2, 0x58a1, 0xc4ee, 0x5895, 0xc4e9, 0x5889, 0xc4e4,
+ 0x587e, 0xc4df, 0x5872, 0xc4da, 0x5867, 0xc4d6, 0x585b, 0xc4d1,
+ 0x584f, 0xc4cc, 0x5844, 0xc4c7, 0x5838, 0xc4c2, 0x582d, 0xc4be,
+ 0x5821, 0xc4b9, 0x5815, 0xc4b4, 0x580a, 0xc4b0, 0x57fe, 0xc4ab,
+ 0x57f2, 0xc4a6, 0x57e7, 0xc4a1, 0x57db, 0xc49d, 0x57cf, 0xc498,
+ 0x57c4, 0xc493, 0x57b8, 0xc48f, 0x57ac, 0xc48a, 0x57a1, 0xc485,
+ 0x5795, 0xc481, 0x5789, 0xc47c, 0x577e, 0xc478, 0x5772, 0xc473,
+ 0x5766, 0xc46e, 0x575b, 0xc46a, 0x574f, 0xc465, 0x5743, 0xc461,
+ 0x5737, 0xc45c, 0x572c, 0xc457, 0x5720, 0xc453, 0x5714, 0xc44e,
+ 0x5709, 0xc44a, 0x56fd, 0xc445, 0x56f1, 0xc441, 0x56e5, 0xc43c,
+ 0x56da, 0xc438, 0x56ce, 0xc433, 0x56c2, 0xc42f, 0x56b6, 0xc42a,
+ 0x56ab, 0xc426, 0x569f, 0xc422, 0x5693, 0xc41d, 0x5687, 0xc419,
+ 0x567c, 0xc414, 0x5670, 0xc410, 0x5664, 0xc40b, 0x5658, 0xc407,
+ 0x564c, 0xc403, 0x5641, 0xc3fe, 0x5635, 0xc3fa, 0x5629, 0xc3f6,
+ 0x561d, 0xc3f1, 0x5612, 0xc3ed, 0x5606, 0xc3e9, 0x55fa, 0xc3e4,
+ 0x55ee, 0xc3e0, 0x55e2, 0xc3dc, 0x55d7, 0xc3d7, 0x55cb, 0xc3d3,
+ 0x55bf, 0xc3cf, 0x55b3, 0xc3ca, 0x55a7, 0xc3c6, 0x559b, 0xc3c2,
+ 0x5590, 0xc3be, 0x5584, 0xc3ba, 0x5578, 0xc3b5, 0x556c, 0xc3b1,
+ 0x5560, 0xc3ad, 0x5554, 0xc3a9, 0x5549, 0xc3a5, 0x553d, 0xc3a0,
+ 0x5531, 0xc39c, 0x5525, 0xc398, 0x5519, 0xc394, 0x550d, 0xc390,
+ 0x5501, 0xc38c, 0x54f6, 0xc387, 0x54ea, 0xc383, 0x54de, 0xc37f,
+ 0x54d2, 0xc37b, 0x54c6, 0xc377, 0x54ba, 0xc373, 0x54ae, 0xc36f,
+ 0x54a2, 0xc36b, 0x5496, 0xc367, 0x548b, 0xc363, 0x547f, 0xc35f,
+ 0x5473, 0xc35b, 0x5467, 0xc357, 0x545b, 0xc353, 0x544f, 0xc34f,
+ 0x5443, 0xc34b, 0x5437, 0xc347, 0x542b, 0xc343, 0x541f, 0xc33f,
+ 0x5413, 0xc33b, 0x5407, 0xc337, 0x53fb, 0xc333, 0x53f0, 0xc32f,
+ 0x53e4, 0xc32b, 0x53d8, 0xc327, 0x53cc, 0xc323, 0x53c0, 0xc320,
+ 0x53b4, 0xc31c, 0x53a8, 0xc318, 0x539c, 0xc314, 0x5390, 0xc310,
+ 0x5384, 0xc30c, 0x5378, 0xc308, 0x536c, 0xc305, 0x5360, 0xc301,
+ 0x5354, 0xc2fd, 0x5348, 0xc2f9, 0x533c, 0xc2f5, 0x5330, 0xc2f2,
+ 0x5324, 0xc2ee, 0x5318, 0xc2ea, 0x530c, 0xc2e6, 0x5300, 0xc2e3,
+ 0x52f4, 0xc2df, 0x52e8, 0xc2db, 0x52dc, 0xc2d8, 0x52d0, 0xc2d4,
+ 0x52c4, 0xc2d0, 0x52b8, 0xc2cc, 0x52ac, 0xc2c9, 0x52a0, 0xc2c5,
+ 0x5294, 0xc2c1, 0x5288, 0xc2be, 0x527c, 0xc2ba, 0x5270, 0xc2b7,
+ 0x5264, 0xc2b3, 0x5258, 0xc2af, 0x524c, 0xc2ac, 0x5240, 0xc2a8,
+ 0x5234, 0xc2a5, 0x5228, 0xc2a1, 0x521c, 0xc29d, 0x5210, 0xc29a,
+ 0x5204, 0xc296, 0x51f7, 0xc293, 0x51eb, 0xc28f, 0x51df, 0xc28c,
+ 0x51d3, 0xc288, 0x51c7, 0xc285, 0x51bb, 0xc281, 0x51af, 0xc27e,
+ 0x51a3, 0xc27a, 0x5197, 0xc277, 0x518b, 0xc273, 0x517f, 0xc270,
+ 0x5173, 0xc26d, 0x5167, 0xc269, 0x515a, 0xc266, 0x514e, 0xc262,
+ 0x5142, 0xc25f, 0x5136, 0xc25c, 0x512a, 0xc258, 0x511e, 0xc255,
+ 0x5112, 0xc251, 0x5106, 0xc24e, 0x50fa, 0xc24b, 0x50ed, 0xc247,
+ 0x50e1, 0xc244, 0x50d5, 0xc241, 0x50c9, 0xc23e, 0x50bd, 0xc23a,
+ 0x50b1, 0xc237, 0x50a5, 0xc234, 0x5099, 0xc230, 0x508c, 0xc22d,
+ 0x5080, 0xc22a, 0x5074, 0xc227, 0x5068, 0xc223, 0x505c, 0xc220,
+ 0x5050, 0xc21d, 0x5044, 0xc21a, 0x5037, 0xc217, 0x502b, 0xc213,
+ 0x501f, 0xc210, 0x5013, 0xc20d, 0x5007, 0xc20a, 0x4ffb, 0xc207,
+ 0x4fee, 0xc204, 0x4fe2, 0xc201, 0x4fd6, 0xc1fd, 0x4fca, 0xc1fa,
+ 0x4fbe, 0xc1f7, 0x4fb2, 0xc1f4, 0x4fa5, 0xc1f1, 0x4f99, 0xc1ee,
+ 0x4f8d, 0xc1eb, 0x4f81, 0xc1e8, 0x4f75, 0xc1e5, 0x4f68, 0xc1e2,
+ 0x4f5c, 0xc1df, 0x4f50, 0xc1dc, 0x4f44, 0xc1d9, 0x4f38, 0xc1d6,
+ 0x4f2b, 0xc1d3, 0x4f1f, 0xc1d0, 0x4f13, 0xc1cd, 0x4f07, 0xc1ca,
+ 0x4efb, 0xc1c7, 0x4eee, 0xc1c4, 0x4ee2, 0xc1c1, 0x4ed6, 0xc1be,
+ 0x4eca, 0xc1bb, 0x4ebd, 0xc1b8, 0x4eb1, 0xc1b6, 0x4ea5, 0xc1b3,
+ 0x4e99, 0xc1b0, 0x4e8c, 0xc1ad, 0x4e80, 0xc1aa, 0x4e74, 0xc1a7,
+ 0x4e68, 0xc1a4, 0x4e5c, 0xc1a2, 0x4e4f, 0xc19f, 0x4e43, 0xc19c,
+ 0x4e37, 0xc199, 0x4e2b, 0xc196, 0x4e1e, 0xc194, 0x4e12, 0xc191,
+ 0x4e06, 0xc18e, 0x4df9, 0xc18b, 0x4ded, 0xc189, 0x4de1, 0xc186,
+ 0x4dd5, 0xc183, 0x4dc8, 0xc180, 0x4dbc, 0xc17e, 0x4db0, 0xc17b,
+ 0x4da4, 0xc178, 0x4d97, 0xc176, 0x4d8b, 0xc173, 0x4d7f, 0xc170,
+ 0x4d72, 0xc16e, 0x4d66, 0xc16b, 0x4d5a, 0xc168, 0x4d4e, 0xc166,
+ 0x4d41, 0xc163, 0x4d35, 0xc161, 0x4d29, 0xc15e, 0x4d1c, 0xc15b,
+ 0x4d10, 0xc159, 0x4d04, 0xc156, 0x4cf8, 0xc154, 0x4ceb, 0xc151,
+ 0x4cdf, 0xc14f, 0x4cd3, 0xc14c, 0x4cc6, 0xc14a, 0x4cba, 0xc147,
+ 0x4cae, 0xc145, 0x4ca1, 0xc142, 0x4c95, 0xc140, 0x4c89, 0xc13d,
+ 0x4c7c, 0xc13b, 0x4c70, 0xc138, 0x4c64, 0xc136, 0x4c57, 0xc134,
+ 0x4c4b, 0xc131, 0x4c3f, 0xc12f, 0x4c32, 0xc12c, 0x4c26, 0xc12a,
+ 0x4c1a, 0xc128, 0x4c0d, 0xc125, 0x4c01, 0xc123, 0x4bf5, 0xc120,
+ 0x4be8, 0xc11e, 0x4bdc, 0xc11c, 0x4bd0, 0xc119, 0x4bc3, 0xc117,
+ 0x4bb7, 0xc115, 0x4bab, 0xc113, 0x4b9e, 0xc110, 0x4b92, 0xc10e,
+ 0x4b85, 0xc10c, 0x4b79, 0xc109, 0x4b6d, 0xc107, 0x4b60, 0xc105,
+ 0x4b54, 0xc103, 0x4b48, 0xc100, 0x4b3b, 0xc0fe, 0x4b2f, 0xc0fc,
+ 0x4b23, 0xc0fa, 0x4b16, 0xc0f8, 0x4b0a, 0xc0f6, 0x4afd, 0xc0f3,
+ 0x4af1, 0xc0f1, 0x4ae5, 0xc0ef, 0x4ad8, 0xc0ed, 0x4acc, 0xc0eb,
+ 0x4ac0, 0xc0e9, 0x4ab3, 0xc0e7, 0x4aa7, 0xc0e4, 0x4a9a, 0xc0e2,
+ 0x4a8e, 0xc0e0, 0x4a82, 0xc0de, 0x4a75, 0xc0dc, 0x4a69, 0xc0da,
+ 0x4a5c, 0xc0d8, 0x4a50, 0xc0d6, 0x4a44, 0xc0d4, 0x4a37, 0xc0d2,
+ 0x4a2b, 0xc0d0, 0x4a1e, 0xc0ce, 0x4a12, 0xc0cc, 0x4a06, 0xc0ca,
+ 0x49f9, 0xc0c8, 0x49ed, 0xc0c6, 0x49e0, 0xc0c4, 0x49d4, 0xc0c2,
+ 0x49c7, 0xc0c0, 0x49bb, 0xc0be, 0x49af, 0xc0bd, 0x49a2, 0xc0bb,
+ 0x4996, 0xc0b9, 0x4989, 0xc0b7, 0x497d, 0xc0b5, 0x4970, 0xc0b3,
+ 0x4964, 0xc0b1, 0x4958, 0xc0af, 0x494b, 0xc0ae, 0x493f, 0xc0ac,
+ 0x4932, 0xc0aa, 0x4926, 0xc0a8, 0x4919, 0xc0a6, 0x490d, 0xc0a5,
+ 0x4901, 0xc0a3, 0x48f4, 0xc0a1, 0x48e8, 0xc09f, 0x48db, 0xc09e,
+ 0x48cf, 0xc09c, 0x48c2, 0xc09a, 0x48b6, 0xc098, 0x48a9, 0xc097,
+ 0x489d, 0xc095, 0x4891, 0xc093, 0x4884, 0xc092, 0x4878, 0xc090,
+ 0x486b, 0xc08e, 0x485f, 0xc08d, 0x4852, 0xc08b, 0x4846, 0xc089,
+ 0x4839, 0xc088, 0x482d, 0xc086, 0x4820, 0xc085, 0x4814, 0xc083,
+ 0x4807, 0xc081, 0x47fb, 0xc080, 0x47ef, 0xc07e, 0x47e2, 0xc07d,
+ 0x47d6, 0xc07b, 0x47c9, 0xc07a, 0x47bd, 0xc078, 0x47b0, 0xc077,
+ 0x47a4, 0xc075, 0x4797, 0xc074, 0x478b, 0xc072, 0x477e, 0xc071,
+ 0x4772, 0xc06f, 0x4765, 0xc06e, 0x4759, 0xc06c, 0x474c, 0xc06b,
+ 0x4740, 0xc069, 0x4733, 0xc068, 0x4727, 0xc067, 0x471a, 0xc065,
+ 0x470e, 0xc064, 0x4701, 0xc062, 0x46f5, 0xc061, 0x46e8, 0xc060,
+ 0x46dc, 0xc05e, 0x46cf, 0xc05d, 0x46c3, 0xc05c, 0x46b6, 0xc05a,
+ 0x46aa, 0xc059, 0x469d, 0xc058, 0x4691, 0xc056, 0x4684, 0xc055,
+ 0x4678, 0xc054, 0x466b, 0xc053, 0x465f, 0xc051, 0x4652, 0xc050,
+ 0x4646, 0xc04f, 0x4639, 0xc04e, 0x462d, 0xc04c, 0x4620, 0xc04b,
+ 0x4614, 0xc04a, 0x4607, 0xc049, 0x45fb, 0xc048, 0x45ee, 0xc047,
+ 0x45e2, 0xc045, 0x45d5, 0xc044, 0x45c9, 0xc043, 0x45bc, 0xc042,
+ 0x45b0, 0xc041, 0x45a3, 0xc040, 0x4597, 0xc03f, 0x458a, 0xc03d,
+ 0x457e, 0xc03c, 0x4571, 0xc03b, 0x4565, 0xc03a, 0x4558, 0xc039,
+ 0x454c, 0xc038, 0x453f, 0xc037, 0x4533, 0xc036, 0x4526, 0xc035,
+ 0x451a, 0xc034, 0x450d, 0xc033, 0x4500, 0xc032, 0x44f4, 0xc031,
+ 0x44e7, 0xc030, 0x44db, 0xc02f, 0x44ce, 0xc02e, 0x44c2, 0xc02d,
+ 0x44b5, 0xc02c, 0x44a9, 0xc02b, 0x449c, 0xc02b, 0x4490, 0xc02a,
+ 0x4483, 0xc029, 0x4477, 0xc028, 0x446a, 0xc027, 0x445e, 0xc026,
+ 0x4451, 0xc025, 0x4444, 0xc024, 0x4438, 0xc024, 0x442b, 0xc023,
+ 0x441f, 0xc022, 0x4412, 0xc021, 0x4406, 0xc020, 0x43f9, 0xc020,
+ 0x43ed, 0xc01f, 0x43e0, 0xc01e, 0x43d4, 0xc01d, 0x43c7, 0xc01d,
+ 0x43bb, 0xc01c, 0x43ae, 0xc01b, 0x43a1, 0xc01a, 0x4395, 0xc01a,
+ 0x4388, 0xc019, 0x437c, 0xc018, 0x436f, 0xc018, 0x4363, 0xc017,
+ 0x4356, 0xc016, 0x434a, 0xc016, 0x433d, 0xc015, 0x4330, 0xc014,
+ 0x4324, 0xc014, 0x4317, 0xc013, 0x430b, 0xc013, 0x42fe, 0xc012,
+ 0x42f2, 0xc011, 0x42e5, 0xc011, 0x42d9, 0xc010, 0x42cc, 0xc010,
+ 0x42c0, 0xc00f, 0x42b3, 0xc00f, 0x42a6, 0xc00e, 0x429a, 0xc00e,
+ 0x428d, 0xc00d, 0x4281, 0xc00d, 0x4274, 0xc00c, 0x4268, 0xc00c,
+ 0x425b, 0xc00b, 0x424e, 0xc00b, 0x4242, 0xc00a, 0x4235, 0xc00a,
+ 0x4229, 0xc009, 0x421c, 0xc009, 0x4210, 0xc009, 0x4203, 0xc008,
+ 0x41f7, 0xc008, 0x41ea, 0xc007, 0x41dd, 0xc007, 0x41d1, 0xc007,
+ 0x41c4, 0xc006, 0x41b8, 0xc006, 0x41ab, 0xc006, 0x419f, 0xc005,
+ 0x4192, 0xc005, 0x4186, 0xc005, 0x4179, 0xc004, 0x416c, 0xc004,
+ 0x4160, 0xc004, 0x4153, 0xc004, 0x4147, 0xc003, 0x413a, 0xc003,
+ 0x412e, 0xc003, 0x4121, 0xc003, 0x4114, 0xc002, 0x4108, 0xc002,
+ 0x40fb, 0xc002, 0x40ef, 0xc002, 0x40e2, 0xc002, 0x40d6, 0xc001,
+ 0x40c9, 0xc001, 0x40bc, 0xc001, 0x40b0, 0xc001, 0x40a3, 0xc001,
+ 0x4097, 0xc001, 0x408a, 0xc001, 0x407e, 0xc000, 0x4071, 0xc000,
+ 0x4065, 0xc000, 0x4058, 0xc000, 0x404b, 0xc000, 0x403f, 0xc000,
+ 0x4032, 0xc000, 0x4026, 0xc000, 0x4019, 0xc000, 0x400d, 0xc000,
};
/**
* @brief Initialization function for the Q15 RFFT/RIFFT.
* @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure.
-* @param[in] *S_CFFT points to an instance of the Q15 CFFT/CIFFT structure.
* @param[in] fftLenReal length of the FFT.
* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
@@ -2149,7 +2147,7 @@
*
* \par Description:
* \par
-* The parameter <code>fftLenReal</code> Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.
+* The parameter <code>fftLenReal</code> Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.
* \par
* The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.
* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
@@ -2159,76 +2157,79 @@
* \par
* This function also initializes Twiddle factor table.
*/
+arm_status arm_rfft_init_q15(
+ arm_rfft_instance_q15 * S,
+ uint32_t fftLenReal,
+ uint32_t ifftFlagR,
+ uint32_t bitReverseFlag)
+{
+ /* Initialise the default arm status */
+ arm_status status = ARM_MATH_SUCCESS;
-arm_status arm_rfft_init_q15(
- arm_rfft_instance_q15 * S,
- arm_cfft_radix4_instance_q15 * S_CFFT,
- uint32_t fftLenReal,
- uint32_t ifftFlagR,
- uint32_t bitReverseFlag)
-{
-
- /* Initialise the default arm status */
- arm_status status = ARM_MATH_SUCCESS;
-
- /* Initialize the Real FFT length */
- S->fftLenReal = (uint16_t) fftLenReal;
+ /* Initialize the Real FFT length */
+ S->fftLenReal = (uint16_t) fftLenReal;
- /* Initialize the Complex FFT length */
- S->fftLenBy2 = (uint16_t) fftLenReal / 2u;
+ /* Initialize the Twiddle coefficientA pointer */
+ S->pTwiddleAReal = (q15_t *) realCoefAQ15;
- /* Initialize the Twiddle coefficientA pointer */
- S->pTwiddleAReal = (q15_t *) realCoefAQ15;
+ /* Initialize the Twiddle coefficientB pointer */
+ S->pTwiddleBReal = (q15_t *) realCoefBQ15;
- /* Initialize the Twiddle coefficientB pointer */
- S->pTwiddleBReal = (q15_t *) realCoefBQ15;
+ /* Initialize the Flag for selection of RFFT or RIFFT */
+ S->ifftFlagR = (uint8_t) ifftFlagR;
- /* Initialize the Flag for selection of RFFT or RIFFT */
- S->ifftFlagR = (uint8_t) ifftFlagR;
-
- /* Initialize the Flag for calculation Bit reversal or not */
- S->bitReverseFlagR = (uint8_t) bitReverseFlag;
+ /* Initialize the Flag for calculation Bit reversal or not */
+ S->bitReverseFlagR = (uint8_t) bitReverseFlag;
- /* Initialization of coef modifier depending on the FFT length */
- switch (S->fftLenReal)
- {
- case 8192:
- S->twidCoefRModifier = 1u;
- break;
- case 2048u:
- S->twidCoefRModifier = 4u;
- break;
- case 512u:
- S->twidCoefRModifier = 16u;
- break;
- case 128u:
- S->twidCoefRModifier = 64u;
- break;
- default:
- /* Reporting argument error if rfftSize is not valid value */
- status = ARM_MATH_ARGUMENT_ERROR;
- break;
- }
+ /* Initialization of coef modifier depending on the FFT length */
+ switch (S->fftLenReal)
+ {
+ case 8192u:
+ S->twidCoefRModifier = 1u;
+ S->pCfft = &arm_cfft_sR_q15_len4096;
+ break;
+ case 4096u:
+ S->twidCoefRModifier = 2u;
+ S->pCfft = &arm_cfft_sR_q15_len2048;
+ break;
+ case 2048u:
+ S->twidCoefRModifier = 4u;
+ S->pCfft = &arm_cfft_sR_q15_len1024;
+ break;
+ case 1024u:
+ S->twidCoefRModifier = 8u;
+ S->pCfft = &arm_cfft_sR_q15_len512;
+ break;
+ case 512u:
+ S->twidCoefRModifier = 16u;
+ S->pCfft = &arm_cfft_sR_q15_len256;
+ break;
+ case 256u:
+ S->twidCoefRModifier = 32u;
+ S->pCfft = &arm_cfft_sR_q15_len128;
+ break;
+ case 128u:
+ S->twidCoefRModifier = 64u;
+ S->pCfft = &arm_cfft_sR_q15_len64;
+ break;
+ case 64u:
+ S->twidCoefRModifier = 128u;
+ S->pCfft = &arm_cfft_sR_q15_len32;
+ break;
+ case 32u:
+ S->twidCoefRModifier = 256u;
+ S->pCfft = &arm_cfft_sR_q15_len16;
+ break;
+ default:
+ /* Reporting argument error if rfftSize is not valid value */
+ status = ARM_MATH_ARGUMENT_ERROR;
+ break;
+ }
- /* Init Complex FFT Instance */
- S->pCfft = S_CFFT;
-
- if(S->ifftFlagR)
- {
- /* Initializes the CIFFT Module for fftLenreal/2 length */
- arm_cfft_radix4_init_q15(S->pCfft, S->fftLenBy2, 1u, 1u);
- }
- else
- {
- /* Initializes the CFFT Module for fftLenreal/2 length */
- arm_cfft_radix4_init_q15(S->pCfft, S->fftLenBy2, 0u, 1u);
- }
-
- /* return the status of RFFT Init function */
- return (status);
-
+ /* return the status of RFFT Init function */
+ return (status);
}
- /**
- * @} end of RealFFT group
- */
+/**
+* @} end of RealFFT group
+*/
--- a/cmsis_dsp/TransformFunctions/arm_rfft_init_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_init_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_rfft_init_q31.c
@@ -39,19 +39,21 @@
* -------------------------------------------------------------------- */
#include "arm_math.h"
+#include "arm_common_tables.h"
+#include "arm_const_structs.h"
/**
- * @ingroup groupTransforms
- */
+* @ingroup groupTransforms
+*/
/**
- * @addtogroup RealFFT
- * @{
- */
+* @addtogroup RealFFT
+* @{
+*/
/**
* \par
-* Generation floating point realCoefAQ31 array:
+* Generation fixed-point realCoefAQ31 array in Q31 format:
* \par
* n = 4096
* <pre>for (i = 0; i < n; i++)
@@ -66,2054 +68,2054 @@
static const q31_t realCoefAQ31[8192] = {
- 0x40000000, 0xc0000000, 0x3ff36f02, 0xc000013c,
- 0x3fe6de05, 0xc00004ef, 0x3fda4d09, 0xc0000b1a,
- 0x3fcdbc0f, 0xc00013bd, 0x3fc12b16, 0xc0001ed8,
- 0x3fb49a1f, 0xc0002c6a, 0x3fa8092c, 0xc0003c74,
- 0x3f9b783c, 0xc0004ef5, 0x3f8ee750, 0xc00063ee,
- 0x3f825668, 0xc0007b5f, 0x3f75c585, 0xc0009547,
- 0x3f6934a8, 0xc000b1a7, 0x3f5ca3d0, 0xc000d07e,
- 0x3f5012fe, 0xc000f1ce, 0x3f438234, 0xc0011594,
- 0x3f36f170, 0xc0013bd3, 0x3f2a60b4, 0xc0016489,
- 0x3f1dd001, 0xc0018fb6, 0x3f113f56, 0xc001bd5c,
- 0x3f04aeb5, 0xc001ed78, 0x3ef81e1d, 0xc002200d,
- 0x3eeb8d8f, 0xc0025519, 0x3edefd0c, 0xc0028c9c,
- 0x3ed26c94, 0xc002c697, 0x3ec5dc28, 0xc003030a,
- 0x3eb94bc8, 0xc00341f4, 0x3eacbb74, 0xc0038356,
- 0x3ea02b2e, 0xc003c72f, 0x3e939af5, 0xc0040d80,
- 0x3e870aca, 0xc0045648, 0x3e7a7aae, 0xc004a188,
- 0x3e6deaa1, 0xc004ef3f, 0x3e615aa3, 0xc0053f6e,
- 0x3e54cab5, 0xc0059214, 0x3e483ad8, 0xc005e731,
- 0x3e3bab0b, 0xc0063ec6, 0x3e2f1b50, 0xc00698d3,
- 0x3e228ba7, 0xc006f556, 0x3e15fc11, 0xc0075452,
- 0x3e096c8d, 0xc007b5c4, 0x3dfcdd1d, 0xc00819ae,
- 0x3df04dc0, 0xc008800f, 0x3de3be78, 0xc008e8e8,
- 0x3dd72f45, 0xc0095438, 0x3dcaa027, 0xc009c1ff,
- 0x3dbe111e, 0xc00a323d, 0x3db1822c, 0xc00aa4f3,
- 0x3da4f351, 0xc00b1a20, 0x3d98648d, 0xc00b91c4,
- 0x3d8bd5e1, 0xc00c0be0, 0x3d7f474d, 0xc00c8872,
- 0x3d72b8d2, 0xc00d077c, 0x3d662a70, 0xc00d88fd,
- 0x3d599c28, 0xc00e0cf5, 0x3d4d0df9, 0xc00e9364,
- 0x3d407fe6, 0xc00f1c4a, 0x3d33f1ed, 0xc00fa7a8,
- 0x3d276410, 0xc010357c, 0x3d1ad650, 0xc010c5c7,
- 0x3d0e48ab, 0xc011588a, 0x3d01bb24, 0xc011edc3,
- 0x3cf52dbb, 0xc0128574, 0x3ce8a06f, 0xc0131f9b,
- 0x3cdc1342, 0xc013bc39, 0x3ccf8634, 0xc0145b4e,
- 0x3cc2f945, 0xc014fcda, 0x3cb66c77, 0xc015a0dd,
- 0x3ca9dfc8, 0xc0164757, 0x3c9d533b, 0xc016f047,
- 0x3c90c6cf, 0xc0179bae, 0x3c843a85, 0xc018498c,
- 0x3c77ae5e, 0xc018f9e1, 0x3c6b2259, 0xc019acac,
- 0x3c5e9678, 0xc01a61ee, 0x3c520aba, 0xc01b19a7,
- 0x3c457f21, 0xc01bd3d6, 0x3c38f3ac, 0xc01c907c,
- 0x3c2c685d, 0xc01d4f99, 0x3c1fdd34, 0xc01e112b,
- 0x3c135231, 0xc01ed535, 0x3c06c754, 0xc01f9bb5,
- 0x3bfa3c9f, 0xc02064ab, 0x3bedb212, 0xc0213018,
- 0x3be127ac, 0xc021fdfb, 0x3bd49d70, 0xc022ce54,
- 0x3bc8135c, 0xc023a124, 0x3bbb8973, 0xc024766a,
- 0x3baeffb3, 0xc0254e27, 0x3ba2761e, 0xc0262859,
- 0x3b95ecb4, 0xc0270502, 0x3b896375, 0xc027e421,
- 0x3b7cda63, 0xc028c5b6, 0x3b70517d, 0xc029a9c1,
- 0x3b63c8c4, 0xc02a9042, 0x3b574039, 0xc02b7939,
- 0x3b4ab7db, 0xc02c64a6, 0x3b3e2fac, 0xc02d5289,
- 0x3b31a7ac, 0xc02e42e2, 0x3b251fdc, 0xc02f35b1,
- 0x3b18983b, 0xc0302af5, 0x3b0c10cb, 0xc03122b0,
- 0x3aff898c, 0xc0321ce0, 0x3af3027e, 0xc0331986,
- 0x3ae67ba2, 0xc03418a2, 0x3ad9f4f8, 0xc0351a33,
- 0x3acd6e81, 0xc0361e3a, 0x3ac0e83d, 0xc03724b6,
- 0x3ab4622d, 0xc0382da8, 0x3aa7dc52, 0xc0393910,
- 0x3a9b56ab, 0xc03a46ed, 0x3a8ed139, 0xc03b573f,
- 0x3a824bfd, 0xc03c6a07, 0x3a75c6f8, 0xc03d7f44,
- 0x3a694229, 0xc03e96f6, 0x3a5cbd91, 0xc03fb11d,
- 0x3a503930, 0xc040cdba, 0x3a43b508, 0xc041eccc,
- 0x3a373119, 0xc0430e53, 0x3a2aad62, 0xc044324f,
- 0x3a1e29e5, 0xc04558c0, 0x3a11a6a3, 0xc04681a6,
- 0x3a05239a, 0xc047ad01, 0x39f8a0cd, 0xc048dad1,
- 0x39ec1e3b, 0xc04a0b16, 0x39df9be6, 0xc04b3dcf,
- 0x39d319cc, 0xc04c72fe, 0x39c697f0, 0xc04daaa1,
- 0x39ba1651, 0xc04ee4b8, 0x39ad94f0, 0xc0502145,
- 0x39a113cd, 0xc0516045, 0x399492ea, 0xc052a1bb,
- 0x39881245, 0xc053e5a5, 0x397b91e1, 0xc0552c03,
- 0x396f11bc, 0xc05674d6, 0x396291d9, 0xc057c01d,
- 0x39561237, 0xc0590dd8, 0x394992d7, 0xc05a5e07,
- 0x393d13b8, 0xc05bb0ab, 0x393094dd, 0xc05d05c3,
- 0x39241645, 0xc05e5d4e, 0x391797f0, 0xc05fb74e,
- 0x390b19e0, 0xc06113c2, 0x38fe9c15, 0xc06272aa,
- 0x38f21e8e, 0xc063d405, 0x38e5a14d, 0xc06537d4,
- 0x38d92452, 0xc0669e18, 0x38cca79e, 0xc06806ce,
- 0x38c02b31, 0xc06971f9, 0x38b3af0c, 0xc06adf97,
- 0x38a7332e, 0xc06c4fa8, 0x389ab799, 0xc06dc22e,
- 0x388e3c4d, 0xc06f3726, 0x3881c14b, 0xc070ae92,
- 0x38754692, 0xc0722871, 0x3868cc24, 0xc073a4c3,
- 0x385c5201, 0xc0752389, 0x384fd829, 0xc076a4c2,
- 0x38435e9d, 0xc078286e, 0x3836e55d, 0xc079ae8c,
- 0x382a6c6a, 0xc07b371e, 0x381df3c5, 0xc07cc223,
- 0x38117b6d, 0xc07e4f9b, 0x38050364, 0xc07fdf85,
- 0x37f88ba9, 0xc08171e2, 0x37ec143e, 0xc08306b2,
- 0x37df9d22, 0xc0849df4, 0x37d32657, 0xc08637a9,
- 0x37c6afdc, 0xc087d3d0, 0x37ba39b3, 0xc089726a,
- 0x37adc3db, 0xc08b1376, 0x37a14e55, 0xc08cb6f5,
- 0x3794d922, 0xc08e5ce5, 0x37886442, 0xc0900548,
- 0x377befb5, 0xc091b01d, 0x376f7b7d, 0xc0935d64,
- 0x37630799, 0xc0950d1d, 0x3756940a, 0xc096bf48,
- 0x374a20d0, 0xc09873e4, 0x373daded, 0xc09a2af3,
- 0x37313b60, 0xc09be473, 0x3724c92a, 0xc09da065,
- 0x3718574b, 0xc09f5ec8, 0x370be5c4, 0xc0a11f9d,
- 0x36ff7496, 0xc0a2e2e3, 0x36f303c0, 0xc0a4a89b,
- 0x36e69344, 0xc0a670c4, 0x36da2321, 0xc0a83b5e,
- 0x36cdb359, 0xc0aa086a, 0x36c143ec, 0xc0abd7e6,
- 0x36b4d4d9, 0xc0ada9d4, 0x36a86623, 0xc0af7e33,
- 0x369bf7c9, 0xc0b15502, 0x368f89cb, 0xc0b32e42,
- 0x36831c2b, 0xc0b509f3, 0x3676aee8, 0xc0b6e815,
- 0x366a4203, 0xc0b8c8a7, 0x365dd57d, 0xc0baabaa,
- 0x36516956, 0xc0bc911d, 0x3644fd8f, 0xc0be7901,
- 0x36389228, 0xc0c06355, 0x362c2721, 0xc0c25019,
- 0x361fbc7b, 0xc0c43f4d, 0x36135237, 0xc0c630f2,
- 0x3606e854, 0xc0c82506, 0x35fa7ed4, 0xc0ca1b8a,
- 0x35ee15b7, 0xc0cc147f, 0x35e1acfd, 0xc0ce0fe3,
- 0x35d544a7, 0xc0d00db6, 0x35c8dcb6, 0xc0d20dfa,
- 0x35bc7529, 0xc0d410ad, 0x35b00e02, 0xc0d615cf,
- 0x35a3a740, 0xc0d81d61, 0x359740e5, 0xc0da2762,
- 0x358adaf0, 0xc0dc33d2, 0x357e7563, 0xc0de42b2,
- 0x3572103d, 0xc0e05401, 0x3565ab80, 0xc0e267be,
- 0x3559472b, 0xc0e47deb, 0x354ce33f, 0xc0e69686,
- 0x35407fbd, 0xc0e8b190, 0x35341ca5, 0xc0eacf09,
- 0x3527b9f7, 0xc0eceef1, 0x351b57b5, 0xc0ef1147,
- 0x350ef5de, 0xc0f1360b, 0x35029473, 0xc0f35d3e,
- 0x34f63374, 0xc0f586df, 0x34e9d2e3, 0xc0f7b2ee,
- 0x34dd72be, 0xc0f9e16b, 0x34d11308, 0xc0fc1257,
- 0x34c4b3c0, 0xc0fe45b0, 0x34b854e7, 0xc1007b77,
- 0x34abf67e, 0xc102b3ac, 0x349f9884, 0xc104ee4f,
- 0x34933afa, 0xc1072b5f, 0x3486dde1, 0xc1096add,
- 0x347a8139, 0xc10bacc8, 0x346e2504, 0xc10df120,
- 0x3461c940, 0xc11037e6, 0x34556def, 0xc1128119,
- 0x34491311, 0xc114ccb9, 0x343cb8a7, 0xc1171ac6,
- 0x34305eb0, 0xc1196b3f, 0x3424052f, 0xc11bbe26,
- 0x3417ac22, 0xc11e1379, 0x340b538b, 0xc1206b39,
- 0x33fefb6a, 0xc122c566, 0x33f2a3bf, 0xc12521ff,
- 0x33e64c8c, 0xc1278104, 0x33d9f5cf, 0xc129e276,
- 0x33cd9f8b, 0xc12c4653, 0x33c149bf, 0xc12eac9d,
- 0x33b4f46c, 0xc1311553, 0x33a89f92, 0xc1338075,
- 0x339c4b32, 0xc135ee02, 0x338ff74d, 0xc1385dfb,
- 0x3383a3e2, 0xc13ad060, 0x337750f2, 0xc13d4530,
- 0x336afe7e, 0xc13fbc6c, 0x335eac86, 0xc1423613,
- 0x33525b0b, 0xc144b225, 0x33460a0d, 0xc14730a3,
- 0x3339b98d, 0xc149b18b, 0x332d698a, 0xc14c34df,
- 0x33211a07, 0xc14eba9d, 0x3314cb02, 0xc15142c6,
- 0x33087c7d, 0xc153cd5a, 0x32fc2e77, 0xc1565a58,
- 0x32efe0f2, 0xc158e9c1, 0x32e393ef, 0xc15b7b94,
- 0x32d7476c, 0xc15e0fd1, 0x32cafb6b, 0xc160a678,
- 0x32beafed, 0xc1633f8a, 0x32b264f2, 0xc165db05,
- 0x32a61a7a, 0xc16878eb, 0x3299d085, 0xc16b193a,
- 0x328d8715, 0xc16dbbf3, 0x32813e2a, 0xc1706115,
- 0x3274f5c3, 0xc17308a1, 0x3268ade3, 0xc175b296,
- 0x325c6688, 0xc1785ef4, 0x32501fb5, 0xc17b0dbb,
- 0x3243d968, 0xc17dbeec, 0x323793a3, 0xc1807285,
- 0x322b4e66, 0xc1832888, 0x321f09b1, 0xc185e0f3,
- 0x3212c585, 0xc1889bc6, 0x320681e3, 0xc18b5903,
- 0x31fa3ecb, 0xc18e18a7, 0x31edfc3d, 0xc190dab4,
- 0x31e1ba3a, 0xc1939f29, 0x31d578c2, 0xc1966606,
- 0x31c937d6, 0xc1992f4c, 0x31bcf777, 0xc19bfaf9,
- 0x31b0b7a4, 0xc19ec90d, 0x31a4785e, 0xc1a1998a,
- 0x319839a6, 0xc1a46c6e, 0x318bfb7d, 0xc1a741b9,
- 0x317fbde2, 0xc1aa196c, 0x317380d6, 0xc1acf386,
- 0x31674459, 0xc1afd007, 0x315b086d, 0xc1b2aef0,
- 0x314ecd11, 0xc1b5903f, 0x31429247, 0xc1b873f5,
- 0x3136580d, 0xc1bb5a11, 0x312a1e66, 0xc1be4294,
- 0x311de551, 0xc1c12d7e, 0x3111accf, 0xc1c41ace,
- 0x310574e0, 0xc1c70a84, 0x30f93d86, 0xc1c9fca0,
- 0x30ed06bf, 0xc1ccf122, 0x30e0d08d, 0xc1cfe80a,
- 0x30d49af1, 0xc1d2e158, 0x30c865ea, 0xc1d5dd0c,
- 0x30bc317a, 0xc1d8db25, 0x30affda0, 0xc1dbdba3,
- 0x30a3ca5d, 0xc1dede87, 0x309797b2, 0xc1e1e3d0,
- 0x308b659f, 0xc1e4eb7e, 0x307f3424, 0xc1e7f591,
- 0x30730342, 0xc1eb0209, 0x3066d2fa, 0xc1ee10e5,
- 0x305aa34c, 0xc1f12227, 0x304e7438, 0xc1f435cc,
- 0x304245c0, 0xc1f74bd6, 0x303617e2, 0xc1fa6445,
- 0x3029eaa1, 0xc1fd7f17, 0x301dbdfb, 0xc2009c4e,
- 0x301191f3, 0xc203bbe8, 0x30056687, 0xc206dde6,
- 0x2ff93bba, 0xc20a0248, 0x2fed118a, 0xc20d290d,
- 0x2fe0e7f9, 0xc2105236, 0x2fd4bf08, 0xc2137dc2,
- 0x2fc896b5, 0xc216abb1, 0x2fbc6f03, 0xc219dc03,
- 0x2fb047f2, 0xc21d0eb8, 0x2fa42181, 0xc22043d0,
- 0x2f97fbb2, 0xc2237b4b, 0x2f8bd685, 0xc226b528,
- 0x2f7fb1fa, 0xc229f167, 0x2f738e12, 0xc22d3009,
- 0x2f676ace, 0xc230710d, 0x2f5b482d, 0xc233b473,
- 0x2f4f2630, 0xc236fa3b, 0x2f4304d8, 0xc23a4265,
- 0x2f36e426, 0xc23d8cf1, 0x2f2ac419, 0xc240d9de,
- 0x2f1ea4b2, 0xc244292c, 0x2f1285f2, 0xc2477adc,
- 0x2f0667d9, 0xc24aceed, 0x2efa4a67, 0xc24e255e,
- 0x2eee2d9d, 0xc2517e31, 0x2ee2117c, 0xc254d965,
- 0x2ed5f604, 0xc25836f9, 0x2ec9db35, 0xc25b96ee,
- 0x2ebdc110, 0xc25ef943, 0x2eb1a796, 0xc2625df8,
- 0x2ea58ec6, 0xc265c50e, 0x2e9976a1, 0xc2692e83,
- 0x2e8d5f29, 0xc26c9a58, 0x2e81485c, 0xc270088e,
- 0x2e75323c, 0xc2737922, 0x2e691cc9, 0xc276ec16,
- 0x2e5d0804, 0xc27a616a, 0x2e50f3ed, 0xc27dd91c,
- 0x2e44e084, 0xc281532e, 0x2e38cdcb, 0xc284cf9f,
- 0x2e2cbbc1, 0xc2884e6e, 0x2e20aa67, 0xc28bcf9c,
- 0x2e1499bd, 0xc28f5329, 0x2e0889c4, 0xc292d914,
- 0x2dfc7a7c, 0xc296615d, 0x2df06be6, 0xc299ec05,
- 0x2de45e03, 0xc29d790a, 0x2dd850d2, 0xc2a1086d,
- 0x2dcc4454, 0xc2a49a2e, 0x2dc0388a, 0xc2a82e4d,
- 0x2db42d74, 0xc2abc4c9, 0x2da82313, 0xc2af5da2,
- 0x2d9c1967, 0xc2b2f8d8, 0x2d901070, 0xc2b6966c,
- 0x2d84082f, 0xc2ba365c, 0x2d7800a5, 0xc2bdd8a9,
- 0x2d6bf9d1, 0xc2c17d52, 0x2d5ff3b5, 0xc2c52459,
- 0x2d53ee51, 0xc2c8cdbb, 0x2d47e9a5, 0xc2cc7979,
- 0x2d3be5b1, 0xc2d02794, 0x2d2fe277, 0xc2d3d80a,
- 0x2d23dff7, 0xc2d78add, 0x2d17de31, 0xc2db400a,
- 0x2d0bdd25, 0xc2def794, 0x2cffdcd4, 0xc2e2b178,
- 0x2cf3dd3f, 0xc2e66db8, 0x2ce7de66, 0xc2ea2c53,
- 0x2cdbe04a, 0xc2eded49, 0x2ccfe2ea, 0xc2f1b099,
- 0x2cc3e648, 0xc2f57644, 0x2cb7ea63, 0xc2f93e4a,
- 0x2cabef3d, 0xc2fd08a9, 0x2c9ff4d6, 0xc300d563,
- 0x2c93fb2e, 0xc304a477, 0x2c880245, 0xc30875e5,
- 0x2c7c0a1d, 0xc30c49ad, 0x2c7012b5, 0xc3101fce,
- 0x2c641c0e, 0xc313f848, 0x2c582629, 0xc317d31c,
- 0x2c4c3106, 0xc31bb049, 0x2c403ca5, 0xc31f8fcf,
- 0x2c344908, 0xc32371ae, 0x2c28562d, 0xc32755e5,
- 0x2c1c6417, 0xc32b3c75, 0x2c1072c4, 0xc32f255e,
- 0x2c048237, 0xc333109e, 0x2bf8926f, 0xc336fe37,
- 0x2beca36c, 0xc33aee27, 0x2be0b52f, 0xc33ee070,
- 0x2bd4c7ba, 0xc342d510, 0x2bc8db0b, 0xc346cc07,
- 0x2bbcef23, 0xc34ac556, 0x2bb10404, 0xc34ec0fc,
- 0x2ba519ad, 0xc352bef9, 0x2b99301f, 0xc356bf4d,
- 0x2b8d475b, 0xc35ac1f7, 0x2b815f60, 0xc35ec6f8,
- 0x2b75782f, 0xc362ce50, 0x2b6991ca, 0xc366d7fd,
- 0x2b5dac2f, 0xc36ae401, 0x2b51c760, 0xc36ef25b,
- 0x2b45e35d, 0xc373030a, 0x2b3a0027, 0xc377160f,
- 0x2b2e1dbe, 0xc37b2b6a, 0x2b223c22, 0xc37f4319,
- 0x2b165b54, 0xc3835d1e, 0x2b0a7b54, 0xc3877978,
- 0x2afe9c24, 0xc38b9827, 0x2af2bdc3, 0xc38fb92a,
- 0x2ae6e031, 0xc393dc82, 0x2adb0370, 0xc398022f,
- 0x2acf277f, 0xc39c2a2f, 0x2ac34c60, 0xc3a05484,
- 0x2ab77212, 0xc3a4812c, 0x2aab9896, 0xc3a8b028,
- 0x2a9fbfed, 0xc3ace178, 0x2a93e817, 0xc3b1151b,
- 0x2a881114, 0xc3b54b11, 0x2a7c3ae5, 0xc3b9835a,
- 0x2a70658a, 0xc3bdbdf6, 0x2a649105, 0xc3c1fae5,
- 0x2a58bd54, 0xc3c63a26, 0x2a4cea79, 0xc3ca7bba,
- 0x2a411874, 0xc3cebfa0, 0x2a354746, 0xc3d305d8,
- 0x2a2976ef, 0xc3d74e62, 0x2a1da770, 0xc3db993e,
- 0x2a11d8c8, 0xc3dfe66c, 0x2a060af9, 0xc3e435ea,
- 0x29fa3e03, 0xc3e887bb, 0x29ee71e6, 0xc3ecdbdc,
- 0x29e2a6a3, 0xc3f1324e, 0x29d6dc3b, 0xc3f58b10,
- 0x29cb12ad, 0xc3f9e624, 0x29bf49fa, 0xc3fe4388,
- 0x29b38223, 0xc402a33c, 0x29a7bb28, 0xc4070540,
- 0x299bf509, 0xc40b6994, 0x29902fc7, 0xc40fd037,
- 0x29846b63, 0xc414392b, 0x2978a7dd, 0xc418a46d,
- 0x296ce535, 0xc41d11ff, 0x2961236c, 0xc42181e0,
- 0x29556282, 0xc425f410, 0x2949a278, 0xc42a688f,
- 0x293de34e, 0xc42edf5c, 0x29322505, 0xc4335877,
- 0x2926679c, 0xc437d3e1, 0x291aab16, 0xc43c5199,
- 0x290eef71, 0xc440d19e, 0x290334af, 0xc44553f2,
- 0x28f77acf, 0xc449d892, 0x28ebc1d3, 0xc44e5f80,
- 0x28e009ba, 0xc452e8bc, 0x28d45286, 0xc4577444,
- 0x28c89c37, 0xc45c0219, 0x28bce6cd, 0xc460923b,
- 0x28b13248, 0xc46524a9, 0x28a57ea9, 0xc469b963,
- 0x2899cbf1, 0xc46e5069, 0x288e1a20, 0xc472e9bc,
- 0x28826936, 0xc477855a, 0x2876b934, 0xc47c2344,
- 0x286b0a1a, 0xc480c379, 0x285f5be9, 0xc48565f9,
- 0x2853aea1, 0xc48a0ac4, 0x28480243, 0xc48eb1db,
- 0x283c56cf, 0xc4935b3c, 0x2830ac45, 0xc49806e7,
- 0x282502a7, 0xc49cb4dd, 0x281959f4, 0xc4a1651c,
- 0x280db22d, 0xc4a617a6, 0x28020b52, 0xc4aacc7a,
- 0x27f66564, 0xc4af8397, 0x27eac063, 0xc4b43cfd,
- 0x27df1c50, 0xc4b8f8ad, 0x27d3792b, 0xc4bdb6a6,
- 0x27c7d6f4, 0xc4c276e8, 0x27bc35ad, 0xc4c73972,
- 0x27b09555, 0xc4cbfe45, 0x27a4f5ed, 0xc4d0c560,
- 0x27995776, 0xc4d58ec3, 0x278db9ef, 0xc4da5a6f,
- 0x27821d59, 0xc4df2862, 0x277681b6, 0xc4e3f89c,
- 0x276ae704, 0xc4e8cb1e, 0x275f4d45, 0xc4ed9fe7,
- 0x2753b479, 0xc4f276f7, 0x27481ca1, 0xc4f7504e,
- 0x273c85bc, 0xc4fc2bec, 0x2730efcc, 0xc50109d0,
- 0x27255ad1, 0xc505e9fb, 0x2719c6cb, 0xc50acc6b,
- 0x270e33bb, 0xc50fb121, 0x2702a1a1, 0xc514981d,
- 0x26f7107e, 0xc519815f, 0x26eb8052, 0xc51e6ce6,
- 0x26dff11d, 0xc5235ab2, 0x26d462e1, 0xc5284ac3,
- 0x26c8d59c, 0xc52d3d18, 0x26bd4951, 0xc53231b3,
- 0x26b1bdff, 0xc5372891, 0x26a633a6, 0xc53c21b4,
- 0x269aaa48, 0xc5411d1b, 0x268f21e5, 0xc5461ac6,
- 0x26839a7c, 0xc54b1ab4, 0x26781410, 0xc5501ce5,
- 0x266c8e9f, 0xc555215a, 0x26610a2a, 0xc55a2812,
- 0x265586b3, 0xc55f310d, 0x264a0438, 0xc5643c4a,
- 0x263e82bc, 0xc56949ca, 0x2633023e, 0xc56e598c,
- 0x262782be, 0xc5736b90, 0x261c043d, 0xc5787fd6,
- 0x261086bc, 0xc57d965d, 0x26050a3b, 0xc582af26,
- 0x25f98ebb, 0xc587ca31, 0x25ee143b, 0xc58ce77c,
- 0x25e29abc, 0xc5920708, 0x25d72240, 0xc59728d5,
- 0x25cbaac5, 0xc59c4ce3, 0x25c0344d, 0xc5a17330,
- 0x25b4bed8, 0xc5a69bbe, 0x25a94a67, 0xc5abc68c,
- 0x259dd6f9, 0xc5b0f399, 0x25926490, 0xc5b622e6,
- 0x2586f32c, 0xc5bb5472, 0x257b82cd, 0xc5c0883d,
- 0x25701374, 0xc5c5be47, 0x2564a521, 0xc5caf690,
- 0x255937d5, 0xc5d03118, 0x254dcb8f, 0xc5d56ddd,
- 0x25426051, 0xc5daace1, 0x2536f61b, 0xc5dfee22,
- 0x252b8cee, 0xc5e531a1, 0x252024c9, 0xc5ea775e,
- 0x2514bdad, 0xc5efbf58, 0x2509579b, 0xc5f5098f,
- 0x24fdf294, 0xc5fa5603, 0x24f28e96, 0xc5ffa4b3,
- 0x24e72ba4, 0xc604f5a0, 0x24dbc9bd, 0xc60a48c9,
- 0x24d068e2, 0xc60f9e2e, 0x24c50914, 0xc614f5cf,
- 0x24b9aa52, 0xc61a4fac, 0x24ae4c9d, 0xc61fabc4,
- 0x24a2eff6, 0xc6250a18, 0x2497945d, 0xc62a6aa6,
- 0x248c39d3, 0xc62fcd6f, 0x2480e057, 0xc6353273,
- 0x247587eb, 0xc63a99b1, 0x246a308f, 0xc6400329,
- 0x245eda43, 0xc6456edb, 0x24538507, 0xc64adcc7,
- 0x244830dd, 0xc6504ced, 0x243cddc4, 0xc655bf4c,
- 0x24318bbe, 0xc65b33e4, 0x24263ac9, 0xc660aab5,
- 0x241aeae8, 0xc66623be, 0x240f9c1a, 0xc66b9f01,
- 0x24044e60, 0xc6711c7b, 0x23f901ba, 0xc6769c2e,
- 0x23edb628, 0xc67c1e18, 0x23e26bac, 0xc681a23a,
- 0x23d72245, 0xc6872894, 0x23cbd9f4, 0xc68cb124,
- 0x23c092b9, 0xc6923bec, 0x23b54c95, 0xc697c8eb,
- 0x23aa0788, 0xc69d5820, 0x239ec393, 0xc6a2e98b,
- 0x239380b6, 0xc6a87d2d, 0x23883ef2, 0xc6ae1304,
- 0x237cfe47, 0xc6b3ab12, 0x2371beb5, 0xc6b94554,
- 0x2366803c, 0xc6bee1cd, 0x235b42df, 0xc6c4807a,
- 0x2350069b, 0xc6ca215c, 0x2344cb73, 0xc6cfc472,
- 0x23399167, 0xc6d569be, 0x232e5876, 0xc6db113d,
- 0x232320a2, 0xc6e0baf0, 0x2317e9eb, 0xc6e666d7,
- 0x230cb451, 0xc6ec14f2, 0x23017fd5, 0xc6f1c540,
- 0x22f64c77, 0xc6f777c1, 0x22eb1a37, 0xc6fd2c75,
- 0x22dfe917, 0xc702e35c, 0x22d4b916, 0xc7089c75,
- 0x22c98a35, 0xc70e57c0, 0x22be5c74, 0xc714153e,
- 0x22b32fd4, 0xc719d4ed, 0x22a80456, 0xc71f96ce,
- 0x229cd9f8, 0xc7255ae0, 0x2291b0bd, 0xc72b2123,
- 0x228688a4, 0xc730e997, 0x227b61af, 0xc736b43c,
- 0x22703bdc, 0xc73c8111, 0x2265172e, 0xc7425016,
- 0x2259f3a3, 0xc748214c, 0x224ed13d, 0xc74df4b1,
- 0x2243affc, 0xc753ca46, 0x22388fe1, 0xc759a20a,
- 0x222d70eb, 0xc75f7bfe, 0x2222531c, 0xc7655820,
- 0x22173674, 0xc76b3671, 0x220c1af3, 0xc77116f0,
- 0x22010099, 0xc776f99d, 0x21f5e768, 0xc77cde79,
- 0x21eacf5f, 0xc782c582, 0x21dfb87f, 0xc788aeb9,
- 0x21d4a2c8, 0xc78e9a1d, 0x21c98e3b, 0xc79487ae,
- 0x21be7ad8, 0xc79a776c, 0x21b368a0, 0xc7a06957,
- 0x21a85793, 0xc7a65d6e, 0x219d47b1, 0xc7ac53b1,
- 0x219238fb, 0xc7b24c20, 0x21872b72, 0xc7b846ba,
- 0x217c1f15, 0xc7be4381, 0x217113e5, 0xc7c44272,
- 0x216609e3, 0xc7ca438f, 0x215b0110, 0xc7d046d6,
- 0x214ff96a, 0xc7d64c47, 0x2144f2f3, 0xc7dc53e3,
- 0x2139edac, 0xc7e25daa, 0x212ee995, 0xc7e8699a,
- 0x2123e6ad, 0xc7ee77b3, 0x2118e4f6, 0xc7f487f6,
- 0x210de470, 0xc7fa9a62, 0x2102e51c, 0xc800aef7,
- 0x20f7e6f9, 0xc806c5b5, 0x20ecea09, 0xc80cde9b,
- 0x20e1ee4b, 0xc812f9a9, 0x20d6f3c1, 0xc81916df,
- 0x20cbfa6a, 0xc81f363d, 0x20c10247, 0xc82557c3,
- 0x20b60b58, 0xc82b7b70, 0x20ab159e, 0xc831a143,
- 0x20a0211a, 0xc837c93e, 0x20952dcb, 0xc83df35f,
- 0x208a3bb2, 0xc8441fa6, 0x207f4acf, 0xc84a4e14,
- 0x20745b24, 0xc8507ea7, 0x20696cb0, 0xc856b160,
- 0x205e7f74, 0xc85ce63e, 0x2053936f, 0xc8631d42,
- 0x2048a8a4, 0xc869566a, 0x203dbf11, 0xc86f91b7,
- 0x2032d6b8, 0xc875cf28, 0x2027ef99, 0xc87c0ebd,
- 0x201d09b4, 0xc8825077, 0x2012250a, 0xc8889454,
- 0x2007419b, 0xc88eda54, 0x1ffc5f67, 0xc8952278,
- 0x1ff17e70, 0xc89b6cbf, 0x1fe69eb4, 0xc8a1b928,
- 0x1fdbc036, 0xc8a807b4, 0x1fd0e2f5, 0xc8ae5862,
- 0x1fc606f1, 0xc8b4ab32, 0x1fbb2c2c, 0xc8bb0023,
- 0x1fb052a5, 0xc8c15736, 0x1fa57a5d, 0xc8c7b06b,
- 0x1f9aa354, 0xc8ce0bc0, 0x1f8fcd8b, 0xc8d46936,
- 0x1f84f902, 0xc8dac8cd, 0x1f7a25ba, 0xc8e12a84,
- 0x1f6f53b3, 0xc8e78e5b, 0x1f6482ed, 0xc8edf452,
- 0x1f59b369, 0xc8f45c68, 0x1f4ee527, 0xc8fac69e,
- 0x1f441828, 0xc90132f2, 0x1f394c6b, 0xc907a166,
- 0x1f2e81f3, 0xc90e11f7, 0x1f23b8be, 0xc91484a8,
- 0x1f18f0ce, 0xc91af976, 0x1f0e2a22, 0xc9217062,
- 0x1f0364bc, 0xc927e96b, 0x1ef8a09b, 0xc92e6492,
- 0x1eedddc0, 0xc934e1d6, 0x1ee31c2b, 0xc93b6137,
- 0x1ed85bdd, 0xc941e2b4, 0x1ecd9cd7, 0xc948664d,
- 0x1ec2df18, 0xc94eec03, 0x1eb822a1, 0xc95573d4,
- 0x1ead6773, 0xc95bfdc1, 0x1ea2ad8d, 0xc96289c9,
- 0x1e97f4f1, 0xc96917ec, 0x1e8d3d9e, 0xc96fa82a,
- 0x1e828796, 0xc9763a83, 0x1e77d2d8, 0xc97ccef5,
- 0x1e6d1f65, 0xc9836582, 0x1e626d3e, 0xc989fe29,
- 0x1e57bc62, 0xc99098e9, 0x1e4d0cd2, 0xc99735c2,
- 0x1e425e8f, 0xc99dd4b4, 0x1e37b199, 0xc9a475bf,
- 0x1e2d05f1, 0xc9ab18e3, 0x1e225b96, 0xc9b1be1e,
- 0x1e17b28a, 0xc9b86572, 0x1e0d0acc, 0xc9bf0edd,
- 0x1e02645d, 0xc9c5ba60, 0x1df7bf3e, 0xc9cc67fa,
- 0x1ded1b6e, 0xc9d317ab, 0x1de278ef, 0xc9d9c973,
- 0x1dd7d7c1, 0xc9e07d51, 0x1dcd37e4, 0xc9e73346,
- 0x1dc29958, 0xc9edeb50, 0x1db7fc1e, 0xc9f4a570,
- 0x1dad6036, 0xc9fb61a5, 0x1da2c5a2, 0xca021fef,
- 0x1d982c60, 0xca08e04f, 0x1d8d9472, 0xca0fa2c3,
- 0x1d82fdd8, 0xca16674b, 0x1d786892, 0xca1d2de7,
- 0x1d6dd4a2, 0xca23f698, 0x1d634206, 0xca2ac15b,
- 0x1d58b0c0, 0xca318e32, 0x1d4e20d0, 0xca385d1d,
- 0x1d439236, 0xca3f2e19, 0x1d3904f4, 0xca460129,
- 0x1d2e7908, 0xca4cd64b, 0x1d23ee74, 0xca53ad7e,
- 0x1d196538, 0xca5a86c4, 0x1d0edd55, 0xca61621b,
- 0x1d0456ca, 0xca683f83, 0x1cf9d199, 0xca6f1efc,
- 0x1cef4dc2, 0xca760086, 0x1ce4cb44, 0xca7ce420,
- 0x1cda4a21, 0xca83c9ca, 0x1ccfca59, 0xca8ab184,
- 0x1cc54bec, 0xca919b4e, 0x1cbacedb, 0xca988727,
- 0x1cb05326, 0xca9f750f, 0x1ca5d8cd, 0xcaa66506,
- 0x1c9b5fd2, 0xcaad570c, 0x1c90e834, 0xcab44b1f,
- 0x1c8671f3, 0xcabb4141, 0x1c7bfd11, 0xcac23971,
- 0x1c71898d, 0xcac933ae, 0x1c671768, 0xcad02ff8,
- 0x1c5ca6a2, 0xcad72e4f, 0x1c52373c, 0xcade2eb3,
- 0x1c47c936, 0xcae53123, 0x1c3d5c91, 0xcaec35a0,
- 0x1c32f14d, 0xcaf33c28, 0x1c28876a, 0xcafa44bc,
- 0x1c1e1ee9, 0xcb014f5b, 0x1c13b7c9, 0xcb085c05,
- 0x1c09520d, 0xcb0f6aba, 0x1bfeedb3, 0xcb167b79,
- 0x1bf48abd, 0xcb1d8e43, 0x1bea292b, 0xcb24a316,
- 0x1bdfc8fc, 0xcb2bb9f4, 0x1bd56a32, 0xcb32d2da,
- 0x1bcb0cce, 0xcb39edca, 0x1bc0b0ce, 0xcb410ac3,
- 0x1bb65634, 0xcb4829c4, 0x1babfd01, 0xcb4f4acd,
- 0x1ba1a534, 0xcb566ddf, 0x1b974ece, 0xcb5d92f8,
- 0x1b8cf9cf, 0xcb64ba19, 0x1b82a638, 0xcb6be341,
- 0x1b785409, 0xcb730e70, 0x1b6e0342, 0xcb7a3ba5,
- 0x1b63b3e5, 0xcb816ae1, 0x1b5965f1, 0xcb889c23,
- 0x1b4f1967, 0xcb8fcf6b, 0x1b44ce46, 0xcb9704b9,
- 0x1b3a8491, 0xcb9e3c0b, 0x1b303c46, 0xcba57563,
- 0x1b25f566, 0xcbacb0bf, 0x1b1baff2, 0xcbb3ee20,
- 0x1b116beb, 0xcbbb2d85, 0x1b072950, 0xcbc26eee,
- 0x1afce821, 0xcbc9b25a, 0x1af2a860, 0xcbd0f7ca,
- 0x1ae86a0d, 0xcbd83f3d, 0x1ade2d28, 0xcbdf88b3,
- 0x1ad3f1b1, 0xcbe6d42b, 0x1ac9b7a9, 0xcbee21a5,
- 0x1abf7f11, 0xcbf57121, 0x1ab547e8, 0xcbfcc29f,
- 0x1aab122f, 0xcc04161e, 0x1aa0dde7, 0xcc0b6b9e,
- 0x1a96ab0f, 0xcc12c31f, 0x1a8c79a9, 0xcc1a1ca0,
- 0x1a8249b4, 0xcc217822, 0x1a781b31, 0xcc28d5a3,
- 0x1a6dee21, 0xcc303524, 0x1a63c284, 0xcc3796a5,
- 0x1a599859, 0xcc3efa25, 0x1a4f6fa3, 0xcc465fa3,
- 0x1a454860, 0xcc4dc720, 0x1a3b2292, 0xcc55309b,
- 0x1a30fe38, 0xcc5c9c14, 0x1a26db54, 0xcc64098b,
- 0x1a1cb9e5, 0xcc6b78ff, 0x1a1299ec, 0xcc72ea70,
- 0x1a087b69, 0xcc7a5dde, 0x19fe5e5e, 0xcc81d349,
- 0x19f442c9, 0xcc894aaf, 0x19ea28ac, 0xcc90c412,
- 0x19e01006, 0xcc983f70, 0x19d5f8d9, 0xcc9fbcca,
- 0x19cbe325, 0xcca73c1e, 0x19c1cee9, 0xccaebd6e,
- 0x19b7bc27, 0xccb640b8, 0x19adaadf, 0xccbdc5fc,
- 0x19a39b11, 0xccc54d3a, 0x19998cbe, 0xccccd671,
- 0x198f7fe6, 0xccd461a2, 0x19857489, 0xccdbeecc,
- 0x197b6aa8, 0xcce37def, 0x19716243, 0xcceb0f0a,
- 0x19675b5a, 0xccf2a21d, 0x195d55ef, 0xccfa3729,
- 0x19535201, 0xcd01ce2b, 0x19494f90, 0xcd096725,
- 0x193f4e9e, 0xcd110216, 0x19354f2a, 0xcd189efe,
- 0x192b5135, 0xcd203ddc, 0x192154bf, 0xcd27deb0,
- 0x191759c9, 0xcd2f817b, 0x190d6053, 0xcd37263a,
- 0x1903685d, 0xcd3eccef, 0x18f971e8, 0xcd467599,
- 0x18ef7cf4, 0xcd4e2037, 0x18e58982, 0xcd55ccca,
- 0x18db9792, 0xcd5d7b50, 0x18d1a724, 0xcd652bcb,
- 0x18c7b838, 0xcd6cde39, 0x18bdcad0, 0xcd74929a,
- 0x18b3deeb, 0xcd7c48ee, 0x18a9f48a, 0xcd840134,
- 0x18a00bae, 0xcd8bbb6d, 0x18962456, 0xcd937798,
- 0x188c3e83, 0xcd9b35b4, 0x18825a35, 0xcda2f5c2,
- 0x1878776d, 0xcdaab7c0, 0x186e962b, 0xcdb27bb0,
- 0x1864b670, 0xcdba4190, 0x185ad83c, 0xcdc20960,
- 0x1850fb8e, 0xcdc9d320, 0x18472069, 0xcdd19ed0,
- 0x183d46cc, 0xcdd96c6f, 0x18336eb7, 0xcde13bfd,
- 0x1829982b, 0xcde90d79, 0x181fc328, 0xcdf0e0e4,
- 0x1815efae, 0xcdf8b63d, 0x180c1dbf, 0xce008d84,
- 0x18024d59, 0xce0866b8, 0x17f87e7f, 0xce1041d9,
- 0x17eeb130, 0xce181ee8, 0x17e4e56c, 0xce1ffde2,
- 0x17db1b34, 0xce27dec9, 0x17d15288, 0xce2fc19c,
- 0x17c78b68, 0xce37a65b, 0x17bdc5d6, 0xce3f8d05,
- 0x17b401d1, 0xce47759a, 0x17aa3f5a, 0xce4f6019,
- 0x17a07e70, 0xce574c84, 0x1796bf16, 0xce5f3ad8,
- 0x178d014a, 0xce672b16, 0x1783450d, 0xce6f1d3d,
- 0x17798a60, 0xce77114e, 0x176fd143, 0xce7f0748,
- 0x176619b6, 0xce86ff2a, 0x175c63ba, 0xce8ef8f4,
- 0x1752af4f, 0xce96f4a7, 0x1748fc75, 0xce9ef241,
- 0x173f4b2e, 0xcea6f1c2, 0x17359b78, 0xceaef32b,
- 0x172bed55, 0xceb6f67a, 0x172240c5, 0xcebefbb0,
- 0x171895c9, 0xcec702cb, 0x170eec60, 0xcecf0bcd,
- 0x1705448b, 0xced716b4, 0x16fb9e4b, 0xcedf2380,
- 0x16f1f99f, 0xcee73231, 0x16e85689, 0xceef42c7,
- 0x16deb508, 0xcef75541, 0x16d5151d, 0xceff699f,
- 0x16cb76c9, 0xcf077fe1, 0x16c1da0b, 0xcf0f9805,
- 0x16b83ee4, 0xcf17b20d, 0x16aea555, 0xcf1fcdf8,
- 0x16a50d5d, 0xcf27ebc5, 0x169b76fe, 0xcf300b74,
- 0x1691e237, 0xcf382d05, 0x16884f09, 0xcf405077,
- 0x167ebd74, 0xcf4875ca, 0x16752d79, 0xcf509cfe,
- 0x166b9f18, 0xcf58c613, 0x16621251, 0xcf60f108,
- 0x16588725, 0xcf691ddd, 0x164efd94, 0xcf714c91,
- 0x1645759f, 0xcf797d24, 0x163bef46, 0xcf81af97,
- 0x16326a88, 0xcf89e3e8, 0x1628e767, 0xcf921a17,
- 0x161f65e4, 0xcf9a5225, 0x1615e5fd, 0xcfa28c10,
- 0x160c67b4, 0xcfaac7d8, 0x1602eb0a, 0xcfb3057d,
- 0x15f96ffd, 0xcfbb4500, 0x15eff690, 0xcfc3865e,
- 0x15e67ec1, 0xcfcbc999, 0x15dd0892, 0xcfd40eaf,
- 0x15d39403, 0xcfdc55a1, 0x15ca2115, 0xcfe49e6d,
- 0x15c0afc6, 0xcfece915, 0x15b74019, 0xcff53597,
- 0x15add20d, 0xcffd83f4, 0x15a465a3, 0xd005d42a,
- 0x159afadb, 0xd00e2639, 0x159191b5, 0xd0167a22,
- 0x15882a32, 0xd01ecfe4, 0x157ec452, 0xd027277e,
- 0x15756016, 0xd02f80f1, 0x156bfd7d, 0xd037dc3b,
- 0x15629c89, 0xd040395d, 0x15593d3a, 0xd0489856,
- 0x154fdf8f, 0xd050f926, 0x15468389, 0xd0595bcd,
- 0x153d292a, 0xd061c04a, 0x1533d070, 0xd06a269d,
- 0x152a795d, 0xd0728ec6, 0x152123f0, 0xd07af8c4,
- 0x1517d02b, 0xd0836497, 0x150e7e0d, 0xd08bd23f,
- 0x15052d97, 0xd09441bb, 0x14fbdec9, 0xd09cb30b,
- 0x14f291a4, 0xd0a5262f, 0x14e94627, 0xd0ad9b26,
- 0x14dffc54, 0xd0b611f1, 0x14d6b42b, 0xd0be8a8d,
- 0x14cd6dab, 0xd0c704fd, 0x14c428d6, 0xd0cf813e,
- 0x14bae5ab, 0xd0d7ff51, 0x14b1a42c, 0xd0e07f36,
- 0x14a86458, 0xd0e900ec, 0x149f2630, 0xd0f18472,
- 0x1495e9b3, 0xd0fa09c9, 0x148caee4, 0xd10290f0,
- 0x148375c1, 0xd10b19e7, 0x147a3e4b, 0xd113a4ad,
- 0x14710883, 0xd11c3142, 0x1467d469, 0xd124bfa6,
- 0x145ea1fd, 0xd12d4fd9, 0x14557140, 0xd135e1d9,
- 0x144c4232, 0xd13e75a8, 0x144314d3, 0xd1470b44,
- 0x1439e923, 0xd14fa2ad, 0x1430bf24, 0xd1583be2,
- 0x142796d5, 0xd160d6e5, 0x141e7037, 0xd16973b3,
- 0x14154b4a, 0xd172124d, 0x140c280e, 0xd17ab2b3,
- 0x14030684, 0xd18354e4, 0x13f9e6ad, 0xd18bf8e0,
- 0x13f0c887, 0xd1949ea6, 0x13e7ac15, 0xd19d4636,
- 0x13de9156, 0xd1a5ef90, 0x13d5784a, 0xd1ae9ab4,
- 0x13cc60f2, 0xd1b747a0, 0x13c34b4f, 0xd1bff656,
- 0x13ba3760, 0xd1c8a6d4, 0x13b12526, 0xd1d1591a,
- 0x13a814a2, 0xd1da0d28, 0x139f05d3, 0xd1e2c2fd,
- 0x1395f8ba, 0xd1eb7a9a, 0x138ced57, 0xd1f433fd,
- 0x1383e3ab, 0xd1fcef27, 0x137adbb6, 0xd205ac17,
- 0x1371d579, 0xd20e6acc, 0x1368d0f3, 0xd2172b48,
- 0x135fce26, 0xd21fed88, 0x1356cd11, 0xd228b18d,
- 0x134dcdb4, 0xd2317756, 0x1344d011, 0xd23a3ee4,
- 0x133bd427, 0xd2430835, 0x1332d9f7, 0xd24bd34a,
- 0x1329e181, 0xd254a021, 0x1320eac6, 0xd25d6ebc,
- 0x1317f5c6, 0xd2663f19, 0x130f0280, 0xd26f1138,
- 0x130610f7, 0xd277e518, 0x12fd2129, 0xd280babb,
- 0x12f43318, 0xd289921e, 0x12eb46c3, 0xd2926b41,
- 0x12e25c2b, 0xd29b4626, 0x12d97350, 0xd2a422ca,
- 0x12d08c33, 0xd2ad012e, 0x12c7a6d4, 0xd2b5e151,
- 0x12bec333, 0xd2bec333, 0x12b5e151, 0xd2c7a6d4,
- 0x12ad012e, 0xd2d08c33, 0x12a422ca, 0xd2d97350,
- 0x129b4626, 0xd2e25c2b, 0x12926b41, 0xd2eb46c3,
- 0x1289921e, 0xd2f43318, 0x1280babb, 0xd2fd2129,
- 0x1277e518, 0xd30610f7, 0x126f1138, 0xd30f0280,
- 0x12663f19, 0xd317f5c6, 0x125d6ebc, 0xd320eac6,
- 0x1254a021, 0xd329e181, 0x124bd34a, 0xd332d9f7,
- 0x12430835, 0xd33bd427, 0x123a3ee4, 0xd344d011,
- 0x12317756, 0xd34dcdb4, 0x1228b18d, 0xd356cd11,
- 0x121fed88, 0xd35fce26, 0x12172b48, 0xd368d0f3,
- 0x120e6acc, 0xd371d579, 0x1205ac17, 0xd37adbb6,
- 0x11fcef27, 0xd383e3ab, 0x11f433fd, 0xd38ced57,
- 0x11eb7a9a, 0xd395f8ba, 0x11e2c2fd, 0xd39f05d3,
- 0x11da0d28, 0xd3a814a2, 0x11d1591a, 0xd3b12526,
- 0x11c8a6d4, 0xd3ba3760, 0x11bff656, 0xd3c34b4f,
- 0x11b747a0, 0xd3cc60f2, 0x11ae9ab4, 0xd3d5784a,
- 0x11a5ef90, 0xd3de9156, 0x119d4636, 0xd3e7ac15,
- 0x11949ea6, 0xd3f0c887, 0x118bf8e0, 0xd3f9e6ad,
- 0x118354e4, 0xd4030684, 0x117ab2b3, 0xd40c280e,
- 0x1172124d, 0xd4154b4a, 0x116973b3, 0xd41e7037,
- 0x1160d6e5, 0xd42796d5, 0x11583be2, 0xd430bf24,
- 0x114fa2ad, 0xd439e923, 0x11470b44, 0xd44314d3,
- 0x113e75a8, 0xd44c4232, 0x1135e1d9, 0xd4557140,
- 0x112d4fd9, 0xd45ea1fd, 0x1124bfa6, 0xd467d469,
- 0x111c3142, 0xd4710883, 0x1113a4ad, 0xd47a3e4b,
- 0x110b19e7, 0xd48375c1, 0x110290f0, 0xd48caee4,
- 0x10fa09c9, 0xd495e9b3, 0x10f18472, 0xd49f2630,
- 0x10e900ec, 0xd4a86458, 0x10e07f36, 0xd4b1a42c,
- 0x10d7ff51, 0xd4bae5ab, 0x10cf813e, 0xd4c428d6,
- 0x10c704fd, 0xd4cd6dab, 0x10be8a8d, 0xd4d6b42b,
- 0x10b611f1, 0xd4dffc54, 0x10ad9b26, 0xd4e94627,
- 0x10a5262f, 0xd4f291a4, 0x109cb30b, 0xd4fbdec9,
- 0x109441bb, 0xd5052d97, 0x108bd23f, 0xd50e7e0d,
- 0x10836497, 0xd517d02b, 0x107af8c4, 0xd52123f0,
- 0x10728ec6, 0xd52a795d, 0x106a269d, 0xd533d070,
- 0x1061c04a, 0xd53d292a, 0x10595bcd, 0xd5468389,
- 0x1050f926, 0xd54fdf8f, 0x10489856, 0xd5593d3a,
- 0x1040395d, 0xd5629c89, 0x1037dc3b, 0xd56bfd7d,
- 0x102f80f1, 0xd5756016, 0x1027277e, 0xd57ec452,
- 0x101ecfe4, 0xd5882a32, 0x10167a22, 0xd59191b5,
- 0x100e2639, 0xd59afadb, 0x1005d42a, 0xd5a465a3,
- 0xffd83f4, 0xd5add20d, 0xff53597, 0xd5b74019,
- 0xfece915, 0xd5c0afc6, 0xfe49e6d, 0xd5ca2115,
- 0xfdc55a1, 0xd5d39403, 0xfd40eaf, 0xd5dd0892,
- 0xfcbc999, 0xd5e67ec1, 0xfc3865e, 0xd5eff690,
- 0xfbb4500, 0xd5f96ffd, 0xfb3057d, 0xd602eb0a,
- 0xfaac7d8, 0xd60c67b4, 0xfa28c10, 0xd615e5fd,
- 0xf9a5225, 0xd61f65e4, 0xf921a17, 0xd628e767,
- 0xf89e3e8, 0xd6326a88, 0xf81af97, 0xd63bef46,
- 0xf797d24, 0xd645759f, 0xf714c91, 0xd64efd94,
- 0xf691ddd, 0xd6588725, 0xf60f108, 0xd6621251,
- 0xf58c613, 0xd66b9f18, 0xf509cfe, 0xd6752d79,
- 0xf4875ca, 0xd67ebd74, 0xf405077, 0xd6884f09,
- 0xf382d05, 0xd691e237, 0xf300b74, 0xd69b76fe,
- 0xf27ebc5, 0xd6a50d5d, 0xf1fcdf8, 0xd6aea555,
- 0xf17b20d, 0xd6b83ee4, 0xf0f9805, 0xd6c1da0b,
- 0xf077fe1, 0xd6cb76c9, 0xeff699f, 0xd6d5151d,
- 0xef75541, 0xd6deb508, 0xeef42c7, 0xd6e85689,
- 0xee73231, 0xd6f1f99f, 0xedf2380, 0xd6fb9e4b,
- 0xed716b4, 0xd705448b, 0xecf0bcd, 0xd70eec60,
- 0xec702cb, 0xd71895c9, 0xebefbb0, 0xd72240c5,
- 0xeb6f67a, 0xd72bed55, 0xeaef32b, 0xd7359b78,
- 0xea6f1c2, 0xd73f4b2e, 0xe9ef241, 0xd748fc75,
- 0xe96f4a7, 0xd752af4f, 0xe8ef8f4, 0xd75c63ba,
- 0xe86ff2a, 0xd76619b6, 0xe7f0748, 0xd76fd143,
- 0xe77114e, 0xd7798a60, 0xe6f1d3d, 0xd783450d,
- 0xe672b16, 0xd78d014a, 0xe5f3ad8, 0xd796bf16,
- 0xe574c84, 0xd7a07e70, 0xe4f6019, 0xd7aa3f5a,
- 0xe47759a, 0xd7b401d1, 0xe3f8d05, 0xd7bdc5d6,
- 0xe37a65b, 0xd7c78b68, 0xe2fc19c, 0xd7d15288,
- 0xe27dec9, 0xd7db1b34, 0xe1ffde2, 0xd7e4e56c,
- 0xe181ee8, 0xd7eeb130, 0xe1041d9, 0xd7f87e7f,
- 0xe0866b8, 0xd8024d59, 0xe008d84, 0xd80c1dbf,
- 0xdf8b63d, 0xd815efae, 0xdf0e0e4, 0xd81fc328,
- 0xde90d79, 0xd829982b, 0xde13bfd, 0xd8336eb7,
- 0xdd96c6f, 0xd83d46cc, 0xdd19ed0, 0xd8472069,
- 0xdc9d320, 0xd850fb8e, 0xdc20960, 0xd85ad83c,
- 0xdba4190, 0xd864b670, 0xdb27bb0, 0xd86e962b,
- 0xdaab7c0, 0xd878776d, 0xda2f5c2, 0xd8825a35,
- 0xd9b35b4, 0xd88c3e83, 0xd937798, 0xd8962456,
- 0xd8bbb6d, 0xd8a00bae, 0xd840134, 0xd8a9f48a,
- 0xd7c48ee, 0xd8b3deeb, 0xd74929a, 0xd8bdcad0,
- 0xd6cde39, 0xd8c7b838, 0xd652bcb, 0xd8d1a724,
- 0xd5d7b50, 0xd8db9792, 0xd55ccca, 0xd8e58982,
- 0xd4e2037, 0xd8ef7cf4, 0xd467599, 0xd8f971e8,
- 0xd3eccef, 0xd903685d, 0xd37263a, 0xd90d6053,
- 0xd2f817b, 0xd91759c9, 0xd27deb0, 0xd92154bf,
- 0xd203ddc, 0xd92b5135, 0xd189efe, 0xd9354f2a,
- 0xd110216, 0xd93f4e9e, 0xd096725, 0xd9494f90,
- 0xd01ce2b, 0xd9535201, 0xcfa3729, 0xd95d55ef,
- 0xcf2a21d, 0xd9675b5a, 0xceb0f0a, 0xd9716243,
- 0xce37def, 0xd97b6aa8, 0xcdbeecc, 0xd9857489,
- 0xcd461a2, 0xd98f7fe6, 0xcccd671, 0xd9998cbe,
- 0xcc54d3a, 0xd9a39b11, 0xcbdc5fc, 0xd9adaadf,
- 0xcb640b8, 0xd9b7bc27, 0xcaebd6e, 0xd9c1cee9,
- 0xca73c1e, 0xd9cbe325, 0xc9fbcca, 0xd9d5f8d9,
- 0xc983f70, 0xd9e01006, 0xc90c412, 0xd9ea28ac,
- 0xc894aaf, 0xd9f442c9, 0xc81d349, 0xd9fe5e5e,
- 0xc7a5dde, 0xda087b69, 0xc72ea70, 0xda1299ec,
- 0xc6b78ff, 0xda1cb9e5, 0xc64098b, 0xda26db54,
- 0xc5c9c14, 0xda30fe38, 0xc55309b, 0xda3b2292,
- 0xc4dc720, 0xda454860, 0xc465fa3, 0xda4f6fa3,
- 0xc3efa25, 0xda599859, 0xc3796a5, 0xda63c284,
- 0xc303524, 0xda6dee21, 0xc28d5a3, 0xda781b31,
- 0xc217822, 0xda8249b4, 0xc1a1ca0, 0xda8c79a9,
- 0xc12c31f, 0xda96ab0f, 0xc0b6b9e, 0xdaa0dde7,
- 0xc04161e, 0xdaab122f, 0xbfcc29f, 0xdab547e8,
- 0xbf57121, 0xdabf7f11, 0xbee21a5, 0xdac9b7a9,
- 0xbe6d42b, 0xdad3f1b1, 0xbdf88b3, 0xdade2d28,
- 0xbd83f3d, 0xdae86a0d, 0xbd0f7ca, 0xdaf2a860,
- 0xbc9b25a, 0xdafce821, 0xbc26eee, 0xdb072950,
- 0xbbb2d85, 0xdb116beb, 0xbb3ee20, 0xdb1baff2,
- 0xbacb0bf, 0xdb25f566, 0xba57563, 0xdb303c46,
- 0xb9e3c0b, 0xdb3a8491, 0xb9704b9, 0xdb44ce46,
- 0xb8fcf6b, 0xdb4f1967, 0xb889c23, 0xdb5965f1,
- 0xb816ae1, 0xdb63b3e5, 0xb7a3ba5, 0xdb6e0342,
- 0xb730e70, 0xdb785409, 0xb6be341, 0xdb82a638,
- 0xb64ba19, 0xdb8cf9cf, 0xb5d92f8, 0xdb974ece,
- 0xb566ddf, 0xdba1a534, 0xb4f4acd, 0xdbabfd01,
- 0xb4829c4, 0xdbb65634, 0xb410ac3, 0xdbc0b0ce,
- 0xb39edca, 0xdbcb0cce, 0xb32d2da, 0xdbd56a32,
- 0xb2bb9f4, 0xdbdfc8fc, 0xb24a316, 0xdbea292b,
- 0xb1d8e43, 0xdbf48abd, 0xb167b79, 0xdbfeedb3,
- 0xb0f6aba, 0xdc09520d, 0xb085c05, 0xdc13b7c9,
- 0xb014f5b, 0xdc1e1ee9, 0xafa44bc, 0xdc28876a,
- 0xaf33c28, 0xdc32f14d, 0xaec35a0, 0xdc3d5c91,
- 0xae53123, 0xdc47c936, 0xade2eb3, 0xdc52373c,
- 0xad72e4f, 0xdc5ca6a2, 0xad02ff8, 0xdc671768,
- 0xac933ae, 0xdc71898d, 0xac23971, 0xdc7bfd11,
- 0xabb4141, 0xdc8671f3, 0xab44b1f, 0xdc90e834,
- 0xaad570c, 0xdc9b5fd2, 0xaa66506, 0xdca5d8cd,
- 0xa9f750f, 0xdcb05326, 0xa988727, 0xdcbacedb,
- 0xa919b4e, 0xdcc54bec, 0xa8ab184, 0xdccfca59,
- 0xa83c9ca, 0xdcda4a21, 0xa7ce420, 0xdce4cb44,
- 0xa760086, 0xdcef4dc2, 0xa6f1efc, 0xdcf9d199,
- 0xa683f83, 0xdd0456ca, 0xa61621b, 0xdd0edd55,
- 0xa5a86c4, 0xdd196538, 0xa53ad7e, 0xdd23ee74,
- 0xa4cd64b, 0xdd2e7908, 0xa460129, 0xdd3904f4,
- 0xa3f2e19, 0xdd439236, 0xa385d1d, 0xdd4e20d0,
- 0xa318e32, 0xdd58b0c0, 0xa2ac15b, 0xdd634206,
- 0xa23f698, 0xdd6dd4a2, 0xa1d2de7, 0xdd786892,
- 0xa16674b, 0xdd82fdd8, 0xa0fa2c3, 0xdd8d9472,
- 0xa08e04f, 0xdd982c60, 0xa021fef, 0xdda2c5a2,
- 0x9fb61a5, 0xddad6036, 0x9f4a570, 0xddb7fc1e,
- 0x9edeb50, 0xddc29958, 0x9e73346, 0xddcd37e4,
- 0x9e07d51, 0xddd7d7c1, 0x9d9c973, 0xdde278ef,
- 0x9d317ab, 0xdded1b6e, 0x9cc67fa, 0xddf7bf3e,
- 0x9c5ba60, 0xde02645d, 0x9bf0edd, 0xde0d0acc,
- 0x9b86572, 0xde17b28a, 0x9b1be1e, 0xde225b96,
- 0x9ab18e3, 0xde2d05f1, 0x9a475bf, 0xde37b199,
- 0x99dd4b4, 0xde425e8f, 0x99735c2, 0xde4d0cd2,
- 0x99098e9, 0xde57bc62, 0x989fe29, 0xde626d3e,
- 0x9836582, 0xde6d1f65, 0x97ccef5, 0xde77d2d8,
- 0x9763a83, 0xde828796, 0x96fa82a, 0xde8d3d9e,
- 0x96917ec, 0xde97f4f1, 0x96289c9, 0xdea2ad8d,
- 0x95bfdc1, 0xdead6773, 0x95573d4, 0xdeb822a1,
- 0x94eec03, 0xdec2df18, 0x948664d, 0xdecd9cd7,
- 0x941e2b4, 0xded85bdd, 0x93b6137, 0xdee31c2b,
- 0x934e1d6, 0xdeedddc0, 0x92e6492, 0xdef8a09b,
- 0x927e96b, 0xdf0364bc, 0x9217062, 0xdf0e2a22,
- 0x91af976, 0xdf18f0ce, 0x91484a8, 0xdf23b8be,
- 0x90e11f7, 0xdf2e81f3, 0x907a166, 0xdf394c6b,
- 0x90132f2, 0xdf441828, 0x8fac69e, 0xdf4ee527,
- 0x8f45c68, 0xdf59b369, 0x8edf452, 0xdf6482ed,
- 0x8e78e5b, 0xdf6f53b3, 0x8e12a84, 0xdf7a25ba,
- 0x8dac8cd, 0xdf84f902, 0x8d46936, 0xdf8fcd8b,
- 0x8ce0bc0, 0xdf9aa354, 0x8c7b06b, 0xdfa57a5d,
- 0x8c15736, 0xdfb052a5, 0x8bb0023, 0xdfbb2c2c,
- 0x8b4ab32, 0xdfc606f1, 0x8ae5862, 0xdfd0e2f5,
- 0x8a807b4, 0xdfdbc036, 0x8a1b928, 0xdfe69eb4,
- 0x89b6cbf, 0xdff17e70, 0x8952278, 0xdffc5f67,
- 0x88eda54, 0xe007419b, 0x8889454, 0xe012250a,
- 0x8825077, 0xe01d09b4, 0x87c0ebd, 0xe027ef99,
- 0x875cf28, 0xe032d6b8, 0x86f91b7, 0xe03dbf11,
- 0x869566a, 0xe048a8a4, 0x8631d42, 0xe053936f,
- 0x85ce63e, 0xe05e7f74, 0x856b160, 0xe0696cb0,
- 0x8507ea7, 0xe0745b24, 0x84a4e14, 0xe07f4acf,
- 0x8441fa6, 0xe08a3bb2, 0x83df35f, 0xe0952dcb,
- 0x837c93e, 0xe0a0211a, 0x831a143, 0xe0ab159e,
- 0x82b7b70, 0xe0b60b58, 0x82557c3, 0xe0c10247,
- 0x81f363d, 0xe0cbfa6a, 0x81916df, 0xe0d6f3c1,
- 0x812f9a9, 0xe0e1ee4b, 0x80cde9b, 0xe0ecea09,
- 0x806c5b5, 0xe0f7e6f9, 0x800aef7, 0xe102e51c,
- 0x7fa9a62, 0xe10de470, 0x7f487f6, 0xe118e4f6,
- 0x7ee77b3, 0xe123e6ad, 0x7e8699a, 0xe12ee995,
- 0x7e25daa, 0xe139edac, 0x7dc53e3, 0xe144f2f3,
- 0x7d64c47, 0xe14ff96a, 0x7d046d6, 0xe15b0110,
- 0x7ca438f, 0xe16609e3, 0x7c44272, 0xe17113e5,
- 0x7be4381, 0xe17c1f15, 0x7b846ba, 0xe1872b72,
- 0x7b24c20, 0xe19238fb, 0x7ac53b1, 0xe19d47b1,
- 0x7a65d6e, 0xe1a85793, 0x7a06957, 0xe1b368a0,
- 0x79a776c, 0xe1be7ad8, 0x79487ae, 0xe1c98e3b,
- 0x78e9a1d, 0xe1d4a2c8, 0x788aeb9, 0xe1dfb87f,
- 0x782c582, 0xe1eacf5f, 0x77cde79, 0xe1f5e768,
- 0x776f99d, 0xe2010099, 0x77116f0, 0xe20c1af3,
- 0x76b3671, 0xe2173674, 0x7655820, 0xe222531c,
- 0x75f7bfe, 0xe22d70eb, 0x759a20a, 0xe2388fe1,
- 0x753ca46, 0xe243affc, 0x74df4b1, 0xe24ed13d,
- 0x748214c, 0xe259f3a3, 0x7425016, 0xe265172e,
- 0x73c8111, 0xe2703bdc, 0x736b43c, 0xe27b61af,
- 0x730e997, 0xe28688a4, 0x72b2123, 0xe291b0bd,
- 0x7255ae0, 0xe29cd9f8, 0x71f96ce, 0xe2a80456,
- 0x719d4ed, 0xe2b32fd4, 0x714153e, 0xe2be5c74,
- 0x70e57c0, 0xe2c98a35, 0x7089c75, 0xe2d4b916,
- 0x702e35c, 0xe2dfe917, 0x6fd2c75, 0xe2eb1a37,
- 0x6f777c1, 0xe2f64c77, 0x6f1c540, 0xe3017fd5,
- 0x6ec14f2, 0xe30cb451, 0x6e666d7, 0xe317e9eb,
- 0x6e0baf0, 0xe32320a2, 0x6db113d, 0xe32e5876,
- 0x6d569be, 0xe3399167, 0x6cfc472, 0xe344cb73,
- 0x6ca215c, 0xe350069b, 0x6c4807a, 0xe35b42df,
- 0x6bee1cd, 0xe366803c, 0x6b94554, 0xe371beb5,
- 0x6b3ab12, 0xe37cfe47, 0x6ae1304, 0xe3883ef2,
- 0x6a87d2d, 0xe39380b6, 0x6a2e98b, 0xe39ec393,
- 0x69d5820, 0xe3aa0788, 0x697c8eb, 0xe3b54c95,
- 0x6923bec, 0xe3c092b9, 0x68cb124, 0xe3cbd9f4,
- 0x6872894, 0xe3d72245, 0x681a23a, 0xe3e26bac,
- 0x67c1e18, 0xe3edb628, 0x6769c2e, 0xe3f901ba,
- 0x6711c7b, 0xe4044e60, 0x66b9f01, 0xe40f9c1a,
- 0x66623be, 0xe41aeae8, 0x660aab5, 0xe4263ac9,
- 0x65b33e4, 0xe4318bbe, 0x655bf4c, 0xe43cddc4,
- 0x6504ced, 0xe44830dd, 0x64adcc7, 0xe4538507,
- 0x6456edb, 0xe45eda43, 0x6400329, 0xe46a308f,
- 0x63a99b1, 0xe47587eb, 0x6353273, 0xe480e057,
- 0x62fcd6f, 0xe48c39d3, 0x62a6aa6, 0xe497945d,
- 0x6250a18, 0xe4a2eff6, 0x61fabc4, 0xe4ae4c9d,
- 0x61a4fac, 0xe4b9aa52, 0x614f5cf, 0xe4c50914,
- 0x60f9e2e, 0xe4d068e2, 0x60a48c9, 0xe4dbc9bd,
- 0x604f5a0, 0xe4e72ba4, 0x5ffa4b3, 0xe4f28e96,
- 0x5fa5603, 0xe4fdf294, 0x5f5098f, 0xe509579b,
- 0x5efbf58, 0xe514bdad, 0x5ea775e, 0xe52024c9,
- 0x5e531a1, 0xe52b8cee, 0x5dfee22, 0xe536f61b,
- 0x5daace1, 0xe5426051, 0x5d56ddd, 0xe54dcb8f,
- 0x5d03118, 0xe55937d5, 0x5caf690, 0xe564a521,
- 0x5c5be47, 0xe5701374, 0x5c0883d, 0xe57b82cd,
- 0x5bb5472, 0xe586f32c, 0x5b622e6, 0xe5926490,
- 0x5b0f399, 0xe59dd6f9, 0x5abc68c, 0xe5a94a67,
- 0x5a69bbe, 0xe5b4bed8, 0x5a17330, 0xe5c0344d,
- 0x59c4ce3, 0xe5cbaac5, 0x59728d5, 0xe5d72240,
- 0x5920708, 0xe5e29abc, 0x58ce77c, 0xe5ee143b,
- 0x587ca31, 0xe5f98ebb, 0x582af26, 0xe6050a3b,
- 0x57d965d, 0xe61086bc, 0x5787fd6, 0xe61c043d,
- 0x5736b90, 0xe62782be, 0x56e598c, 0xe633023e,
- 0x56949ca, 0xe63e82bc, 0x5643c4a, 0xe64a0438,
- 0x55f310d, 0xe65586b3, 0x55a2812, 0xe6610a2a,
- 0x555215a, 0xe66c8e9f, 0x5501ce5, 0xe6781410,
- 0x54b1ab4, 0xe6839a7c, 0x5461ac6, 0xe68f21e5,
- 0x5411d1b, 0xe69aaa48, 0x53c21b4, 0xe6a633a6,
- 0x5372891, 0xe6b1bdff, 0x53231b3, 0xe6bd4951,
- 0x52d3d18, 0xe6c8d59c, 0x5284ac3, 0xe6d462e1,
- 0x5235ab2, 0xe6dff11d, 0x51e6ce6, 0xe6eb8052,
- 0x519815f, 0xe6f7107e, 0x514981d, 0xe702a1a1,
- 0x50fb121, 0xe70e33bb, 0x50acc6b, 0xe719c6cb,
- 0x505e9fb, 0xe7255ad1, 0x50109d0, 0xe730efcc,
- 0x4fc2bec, 0xe73c85bc, 0x4f7504e, 0xe7481ca1,
- 0x4f276f7, 0xe753b479, 0x4ed9fe7, 0xe75f4d45,
- 0x4e8cb1e, 0xe76ae704, 0x4e3f89c, 0xe77681b6,
- 0x4df2862, 0xe7821d59, 0x4da5a6f, 0xe78db9ef,
- 0x4d58ec3, 0xe7995776, 0x4d0c560, 0xe7a4f5ed,
- 0x4cbfe45, 0xe7b09555, 0x4c73972, 0xe7bc35ad,
- 0x4c276e8, 0xe7c7d6f4, 0x4bdb6a6, 0xe7d3792b,
- 0x4b8f8ad, 0xe7df1c50, 0x4b43cfd, 0xe7eac063,
- 0x4af8397, 0xe7f66564, 0x4aacc7a, 0xe8020b52,
- 0x4a617a6, 0xe80db22d, 0x4a1651c, 0xe81959f4,
- 0x49cb4dd, 0xe82502a7, 0x49806e7, 0xe830ac45,
- 0x4935b3c, 0xe83c56cf, 0x48eb1db, 0xe8480243,
- 0x48a0ac4, 0xe853aea1, 0x48565f9, 0xe85f5be9,
- 0x480c379, 0xe86b0a1a, 0x47c2344, 0xe876b934,
- 0x477855a, 0xe8826936, 0x472e9bc, 0xe88e1a20,
- 0x46e5069, 0xe899cbf1, 0x469b963, 0xe8a57ea9,
- 0x46524a9, 0xe8b13248, 0x460923b, 0xe8bce6cd,
- 0x45c0219, 0xe8c89c37, 0x4577444, 0xe8d45286,
- 0x452e8bc, 0xe8e009ba, 0x44e5f80, 0xe8ebc1d3,
- 0x449d892, 0xe8f77acf, 0x44553f2, 0xe90334af,
- 0x440d19e, 0xe90eef71, 0x43c5199, 0xe91aab16,
- 0x437d3e1, 0xe926679c, 0x4335877, 0xe9322505,
- 0x42edf5c, 0xe93de34e, 0x42a688f, 0xe949a278,
- 0x425f410, 0xe9556282, 0x42181e0, 0xe961236c,
- 0x41d11ff, 0xe96ce535, 0x418a46d, 0xe978a7dd,
- 0x414392b, 0xe9846b63, 0x40fd037, 0xe9902fc7,
- 0x40b6994, 0xe99bf509, 0x4070540, 0xe9a7bb28,
- 0x402a33c, 0xe9b38223, 0x3fe4388, 0xe9bf49fa,
- 0x3f9e624, 0xe9cb12ad, 0x3f58b10, 0xe9d6dc3b,
- 0x3f1324e, 0xe9e2a6a3, 0x3ecdbdc, 0xe9ee71e6,
- 0x3e887bb, 0xe9fa3e03, 0x3e435ea, 0xea060af9,
- 0x3dfe66c, 0xea11d8c8, 0x3db993e, 0xea1da770,
- 0x3d74e62, 0xea2976ef, 0x3d305d8, 0xea354746,
- 0x3cebfa0, 0xea411874, 0x3ca7bba, 0xea4cea79,
- 0x3c63a26, 0xea58bd54, 0x3c1fae5, 0xea649105,
- 0x3bdbdf6, 0xea70658a, 0x3b9835a, 0xea7c3ae5,
- 0x3b54b11, 0xea881114, 0x3b1151b, 0xea93e817,
- 0x3ace178, 0xea9fbfed, 0x3a8b028, 0xeaab9896,
- 0x3a4812c, 0xeab77212, 0x3a05484, 0xeac34c60,
- 0x39c2a2f, 0xeacf277f, 0x398022f, 0xeadb0370,
- 0x393dc82, 0xeae6e031, 0x38fb92a, 0xeaf2bdc3,
- 0x38b9827, 0xeafe9c24, 0x3877978, 0xeb0a7b54,
- 0x3835d1e, 0xeb165b54, 0x37f4319, 0xeb223c22,
- 0x37b2b6a, 0xeb2e1dbe, 0x377160f, 0xeb3a0027,
- 0x373030a, 0xeb45e35d, 0x36ef25b, 0xeb51c760,
- 0x36ae401, 0xeb5dac2f, 0x366d7fd, 0xeb6991ca,
- 0x362ce50, 0xeb75782f, 0x35ec6f8, 0xeb815f60,
- 0x35ac1f7, 0xeb8d475b, 0x356bf4d, 0xeb99301f,
- 0x352bef9, 0xeba519ad, 0x34ec0fc, 0xebb10404,
- 0x34ac556, 0xebbcef23, 0x346cc07, 0xebc8db0b,
- 0x342d510, 0xebd4c7ba, 0x33ee070, 0xebe0b52f,
- 0x33aee27, 0xebeca36c, 0x336fe37, 0xebf8926f,
- 0x333109e, 0xec048237, 0x32f255e, 0xec1072c4,
- 0x32b3c75, 0xec1c6417, 0x32755e5, 0xec28562d,
- 0x32371ae, 0xec344908, 0x31f8fcf, 0xec403ca5,
- 0x31bb049, 0xec4c3106, 0x317d31c, 0xec582629,
- 0x313f848, 0xec641c0e, 0x3101fce, 0xec7012b5,
- 0x30c49ad, 0xec7c0a1d, 0x30875e5, 0xec880245,
- 0x304a477, 0xec93fb2e, 0x300d563, 0xec9ff4d6,
- 0x2fd08a9, 0xecabef3d, 0x2f93e4a, 0xecb7ea63,
- 0x2f57644, 0xecc3e648, 0x2f1b099, 0xeccfe2ea,
- 0x2eded49, 0xecdbe04a, 0x2ea2c53, 0xece7de66,
- 0x2e66db8, 0xecf3dd3f, 0x2e2b178, 0xecffdcd4,
- 0x2def794, 0xed0bdd25, 0x2db400a, 0xed17de31,
- 0x2d78add, 0xed23dff7, 0x2d3d80a, 0xed2fe277,
- 0x2d02794, 0xed3be5b1, 0x2cc7979, 0xed47e9a5,
- 0x2c8cdbb, 0xed53ee51, 0x2c52459, 0xed5ff3b5,
- 0x2c17d52, 0xed6bf9d1, 0x2bdd8a9, 0xed7800a5,
- 0x2ba365c, 0xed84082f, 0x2b6966c, 0xed901070,
- 0x2b2f8d8, 0xed9c1967, 0x2af5da2, 0xeda82313,
- 0x2abc4c9, 0xedb42d74, 0x2a82e4d, 0xedc0388a,
- 0x2a49a2e, 0xedcc4454, 0x2a1086d, 0xedd850d2,
- 0x29d790a, 0xede45e03, 0x299ec05, 0xedf06be6,
- 0x296615d, 0xedfc7a7c, 0x292d914, 0xee0889c4,
- 0x28f5329, 0xee1499bd, 0x28bcf9c, 0xee20aa67,
- 0x2884e6e, 0xee2cbbc1, 0x284cf9f, 0xee38cdcb,
- 0x281532e, 0xee44e084, 0x27dd91c, 0xee50f3ed,
- 0x27a616a, 0xee5d0804, 0x276ec16, 0xee691cc9,
- 0x2737922, 0xee75323c, 0x270088e, 0xee81485c,
- 0x26c9a58, 0xee8d5f29, 0x2692e83, 0xee9976a1,
- 0x265c50e, 0xeea58ec6, 0x2625df8, 0xeeb1a796,
- 0x25ef943, 0xeebdc110, 0x25b96ee, 0xeec9db35,
- 0x25836f9, 0xeed5f604, 0x254d965, 0xeee2117c,
- 0x2517e31, 0xeeee2d9d, 0x24e255e, 0xeefa4a67,
- 0x24aceed, 0xef0667d9, 0x2477adc, 0xef1285f2,
- 0x244292c, 0xef1ea4b2, 0x240d9de, 0xef2ac419,
- 0x23d8cf1, 0xef36e426, 0x23a4265, 0xef4304d8,
- 0x236fa3b, 0xef4f2630, 0x233b473, 0xef5b482d,
- 0x230710d, 0xef676ace, 0x22d3009, 0xef738e12,
- 0x229f167, 0xef7fb1fa, 0x226b528, 0xef8bd685,
- 0x2237b4b, 0xef97fbb2, 0x22043d0, 0xefa42181,
- 0x21d0eb8, 0xefb047f2, 0x219dc03, 0xefbc6f03,
- 0x216abb1, 0xefc896b5, 0x2137dc2, 0xefd4bf08,
- 0x2105236, 0xefe0e7f9, 0x20d290d, 0xefed118a,
- 0x20a0248, 0xeff93bba, 0x206dde6, 0xf0056687,
- 0x203bbe8, 0xf01191f3, 0x2009c4e, 0xf01dbdfb,
- 0x1fd7f17, 0xf029eaa1, 0x1fa6445, 0xf03617e2,
- 0x1f74bd6, 0xf04245c0, 0x1f435cc, 0xf04e7438,
- 0x1f12227, 0xf05aa34c, 0x1ee10e5, 0xf066d2fa,
- 0x1eb0209, 0xf0730342, 0x1e7f591, 0xf07f3424,
- 0x1e4eb7e, 0xf08b659f, 0x1e1e3d0, 0xf09797b2,
- 0x1dede87, 0xf0a3ca5d, 0x1dbdba3, 0xf0affda0,
- 0x1d8db25, 0xf0bc317a, 0x1d5dd0c, 0xf0c865ea,
- 0x1d2e158, 0xf0d49af1, 0x1cfe80a, 0xf0e0d08d,
- 0x1ccf122, 0xf0ed06bf, 0x1c9fca0, 0xf0f93d86,
- 0x1c70a84, 0xf10574e0, 0x1c41ace, 0xf111accf,
- 0x1c12d7e, 0xf11de551, 0x1be4294, 0xf12a1e66,
- 0x1bb5a11, 0xf136580d, 0x1b873f5, 0xf1429247,
- 0x1b5903f, 0xf14ecd11, 0x1b2aef0, 0xf15b086d,
- 0x1afd007, 0xf1674459, 0x1acf386, 0xf17380d6,
- 0x1aa196c, 0xf17fbde2, 0x1a741b9, 0xf18bfb7d,
- 0x1a46c6e, 0xf19839a6, 0x1a1998a, 0xf1a4785e,
- 0x19ec90d, 0xf1b0b7a4, 0x19bfaf9, 0xf1bcf777,
- 0x1992f4c, 0xf1c937d6, 0x1966606, 0xf1d578c2,
- 0x1939f29, 0xf1e1ba3a, 0x190dab4, 0xf1edfc3d,
- 0x18e18a7, 0xf1fa3ecb, 0x18b5903, 0xf20681e3,
- 0x1889bc6, 0xf212c585, 0x185e0f3, 0xf21f09b1,
- 0x1832888, 0xf22b4e66, 0x1807285, 0xf23793a3,
- 0x17dbeec, 0xf243d968, 0x17b0dbb, 0xf2501fb5,
- 0x1785ef4, 0xf25c6688, 0x175b296, 0xf268ade3,
- 0x17308a1, 0xf274f5c3, 0x1706115, 0xf2813e2a,
- 0x16dbbf3, 0xf28d8715, 0x16b193a, 0xf299d085,
- 0x16878eb, 0xf2a61a7a, 0x165db05, 0xf2b264f2,
- 0x1633f8a, 0xf2beafed, 0x160a678, 0xf2cafb6b,
- 0x15e0fd1, 0xf2d7476c, 0x15b7b94, 0xf2e393ef,
- 0x158e9c1, 0xf2efe0f2, 0x1565a58, 0xf2fc2e77,
- 0x153cd5a, 0xf3087c7d, 0x15142c6, 0xf314cb02,
- 0x14eba9d, 0xf3211a07, 0x14c34df, 0xf32d698a,
- 0x149b18b, 0xf339b98d, 0x14730a3, 0xf3460a0d,
- 0x144b225, 0xf3525b0b, 0x1423613, 0xf35eac86,
- 0x13fbc6c, 0xf36afe7e, 0x13d4530, 0xf37750f2,
- 0x13ad060, 0xf383a3e2, 0x1385dfb, 0xf38ff74d,
- 0x135ee02, 0xf39c4b32, 0x1338075, 0xf3a89f92,
- 0x1311553, 0xf3b4f46c, 0x12eac9d, 0xf3c149bf,
- 0x12c4653, 0xf3cd9f8b, 0x129e276, 0xf3d9f5cf,
- 0x1278104, 0xf3e64c8c, 0x12521ff, 0xf3f2a3bf,
- 0x122c566, 0xf3fefb6a, 0x1206b39, 0xf40b538b,
- 0x11e1379, 0xf417ac22, 0x11bbe26, 0xf424052f,
- 0x1196b3f, 0xf4305eb0, 0x1171ac6, 0xf43cb8a7,
- 0x114ccb9, 0xf4491311, 0x1128119, 0xf4556def,
- 0x11037e6, 0xf461c940, 0x10df120, 0xf46e2504,
- 0x10bacc8, 0xf47a8139, 0x1096add, 0xf486dde1,
- 0x1072b5f, 0xf4933afa, 0x104ee4f, 0xf49f9884,
- 0x102b3ac, 0xf4abf67e, 0x1007b77, 0xf4b854e7,
- 0xfe45b0, 0xf4c4b3c0, 0xfc1257, 0xf4d11308,
- 0xf9e16b, 0xf4dd72be, 0xf7b2ee, 0xf4e9d2e3,
- 0xf586df, 0xf4f63374, 0xf35d3e, 0xf5029473,
- 0xf1360b, 0xf50ef5de, 0xef1147, 0xf51b57b5,
- 0xeceef1, 0xf527b9f7, 0xeacf09, 0xf5341ca5,
- 0xe8b190, 0xf5407fbd, 0xe69686, 0xf54ce33f,
- 0xe47deb, 0xf559472b, 0xe267be, 0xf565ab80,
- 0xe05401, 0xf572103d, 0xde42b2, 0xf57e7563,
- 0xdc33d2, 0xf58adaf0, 0xda2762, 0xf59740e5,
- 0xd81d61, 0xf5a3a740, 0xd615cf, 0xf5b00e02,
- 0xd410ad, 0xf5bc7529, 0xd20dfa, 0xf5c8dcb6,
- 0xd00db6, 0xf5d544a7, 0xce0fe3, 0xf5e1acfd,
- 0xcc147f, 0xf5ee15b7, 0xca1b8a, 0xf5fa7ed4,
- 0xc82506, 0xf606e854, 0xc630f2, 0xf6135237,
- 0xc43f4d, 0xf61fbc7b, 0xc25019, 0xf62c2721,
- 0xc06355, 0xf6389228, 0xbe7901, 0xf644fd8f,
- 0xbc911d, 0xf6516956, 0xbaabaa, 0xf65dd57d,
- 0xb8c8a7, 0xf66a4203, 0xb6e815, 0xf676aee8,
- 0xb509f3, 0xf6831c2b, 0xb32e42, 0xf68f89cb,
- 0xb15502, 0xf69bf7c9, 0xaf7e33, 0xf6a86623,
- 0xada9d4, 0xf6b4d4d9, 0xabd7e6, 0xf6c143ec,
- 0xaa086a, 0xf6cdb359, 0xa83b5e, 0xf6da2321,
- 0xa670c4, 0xf6e69344, 0xa4a89b, 0xf6f303c0,
- 0xa2e2e3, 0xf6ff7496, 0xa11f9d, 0xf70be5c4,
- 0x9f5ec8, 0xf718574b, 0x9da065, 0xf724c92a,
- 0x9be473, 0xf7313b60, 0x9a2af3, 0xf73daded,
- 0x9873e4, 0xf74a20d0, 0x96bf48, 0xf756940a,
- 0x950d1d, 0xf7630799, 0x935d64, 0xf76f7b7d,
- 0x91b01d, 0xf77befb5, 0x900548, 0xf7886442,
- 0x8e5ce5, 0xf794d922, 0x8cb6f5, 0xf7a14e55,
- 0x8b1376, 0xf7adc3db, 0x89726a, 0xf7ba39b3,
- 0x87d3d0, 0xf7c6afdc, 0x8637a9, 0xf7d32657,
- 0x849df4, 0xf7df9d22, 0x8306b2, 0xf7ec143e,
- 0x8171e2, 0xf7f88ba9, 0x7fdf85, 0xf8050364,
- 0x7e4f9b, 0xf8117b6d, 0x7cc223, 0xf81df3c5,
- 0x7b371e, 0xf82a6c6a, 0x79ae8c, 0xf836e55d,
- 0x78286e, 0xf8435e9d, 0x76a4c2, 0xf84fd829,
- 0x752389, 0xf85c5201, 0x73a4c3, 0xf868cc24,
- 0x722871, 0xf8754692, 0x70ae92, 0xf881c14b,
- 0x6f3726, 0xf88e3c4d, 0x6dc22e, 0xf89ab799,
- 0x6c4fa8, 0xf8a7332e, 0x6adf97, 0xf8b3af0c,
- 0x6971f9, 0xf8c02b31, 0x6806ce, 0xf8cca79e,
- 0x669e18, 0xf8d92452, 0x6537d4, 0xf8e5a14d,
- 0x63d405, 0xf8f21e8e, 0x6272aa, 0xf8fe9c15,
- 0x6113c2, 0xf90b19e0, 0x5fb74e, 0xf91797f0,
- 0x5e5d4e, 0xf9241645, 0x5d05c3, 0xf93094dd,
- 0x5bb0ab, 0xf93d13b8, 0x5a5e07, 0xf94992d7,
- 0x590dd8, 0xf9561237, 0x57c01d, 0xf96291d9,
- 0x5674d6, 0xf96f11bc, 0x552c03, 0xf97b91e1,
- 0x53e5a5, 0xf9881245, 0x52a1bb, 0xf99492ea,
- 0x516045, 0xf9a113cd, 0x502145, 0xf9ad94f0,
- 0x4ee4b8, 0xf9ba1651, 0x4daaa1, 0xf9c697f0,
- 0x4c72fe, 0xf9d319cc, 0x4b3dcf, 0xf9df9be6,
- 0x4a0b16, 0xf9ec1e3b, 0x48dad1, 0xf9f8a0cd,
- 0x47ad01, 0xfa05239a, 0x4681a6, 0xfa11a6a3,
- 0x4558c0, 0xfa1e29e5, 0x44324f, 0xfa2aad62,
- 0x430e53, 0xfa373119, 0x41eccc, 0xfa43b508,
- 0x40cdba, 0xfa503930, 0x3fb11d, 0xfa5cbd91,
- 0x3e96f6, 0xfa694229, 0x3d7f44, 0xfa75c6f8,
- 0x3c6a07, 0xfa824bfd, 0x3b573f, 0xfa8ed139,
- 0x3a46ed, 0xfa9b56ab, 0x393910, 0xfaa7dc52,
- 0x382da8, 0xfab4622d, 0x3724b6, 0xfac0e83d,
- 0x361e3a, 0xfacd6e81, 0x351a33, 0xfad9f4f8,
- 0x3418a2, 0xfae67ba2, 0x331986, 0xfaf3027e,
- 0x321ce0, 0xfaff898c, 0x3122b0, 0xfb0c10cb,
- 0x302af5, 0xfb18983b, 0x2f35b1, 0xfb251fdc,
- 0x2e42e2, 0xfb31a7ac, 0x2d5289, 0xfb3e2fac,
- 0x2c64a6, 0xfb4ab7db, 0x2b7939, 0xfb574039,
- 0x2a9042, 0xfb63c8c4, 0x29a9c1, 0xfb70517d,
- 0x28c5b6, 0xfb7cda63, 0x27e421, 0xfb896375,
- 0x270502, 0xfb95ecb4, 0x262859, 0xfba2761e,
- 0x254e27, 0xfbaeffb3, 0x24766a, 0xfbbb8973,
- 0x23a124, 0xfbc8135c, 0x22ce54, 0xfbd49d70,
- 0x21fdfb, 0xfbe127ac, 0x213018, 0xfbedb212,
- 0x2064ab, 0xfbfa3c9f, 0x1f9bb5, 0xfc06c754,
- 0x1ed535, 0xfc135231, 0x1e112b, 0xfc1fdd34,
- 0x1d4f99, 0xfc2c685d, 0x1c907c, 0xfc38f3ac,
- 0x1bd3d6, 0xfc457f21, 0x1b19a7, 0xfc520aba,
- 0x1a61ee, 0xfc5e9678, 0x19acac, 0xfc6b2259,
- 0x18f9e1, 0xfc77ae5e, 0x18498c, 0xfc843a85,
- 0x179bae, 0xfc90c6cf, 0x16f047, 0xfc9d533b,
- 0x164757, 0xfca9dfc8, 0x15a0dd, 0xfcb66c77,
- 0x14fcda, 0xfcc2f945, 0x145b4e, 0xfccf8634,
- 0x13bc39, 0xfcdc1342, 0x131f9b, 0xfce8a06f,
- 0x128574, 0xfcf52dbb, 0x11edc3, 0xfd01bb24,
- 0x11588a, 0xfd0e48ab, 0x10c5c7, 0xfd1ad650,
- 0x10357c, 0xfd276410, 0xfa7a8, 0xfd33f1ed,
- 0xf1c4a, 0xfd407fe6, 0xe9364, 0xfd4d0df9,
- 0xe0cf5, 0xfd599c28, 0xd88fd, 0xfd662a70,
- 0xd077c, 0xfd72b8d2, 0xc8872, 0xfd7f474d,
- 0xc0be0, 0xfd8bd5e1, 0xb91c4, 0xfd98648d,
- 0xb1a20, 0xfda4f351, 0xaa4f3, 0xfdb1822c,
- 0xa323d, 0xfdbe111e, 0x9c1ff, 0xfdcaa027,
- 0x95438, 0xfdd72f45, 0x8e8e8, 0xfde3be78,
- 0x8800f, 0xfdf04dc0, 0x819ae, 0xfdfcdd1d,
- 0x7b5c4, 0xfe096c8d, 0x75452, 0xfe15fc11,
- 0x6f556, 0xfe228ba7, 0x698d3, 0xfe2f1b50,
- 0x63ec6, 0xfe3bab0b, 0x5e731, 0xfe483ad8,
- 0x59214, 0xfe54cab5, 0x53f6e, 0xfe615aa3,
- 0x4ef3f, 0xfe6deaa1, 0x4a188, 0xfe7a7aae,
- 0x45648, 0xfe870aca, 0x40d80, 0xfe939af5,
- 0x3c72f, 0xfea02b2e, 0x38356, 0xfeacbb74,
- 0x341f4, 0xfeb94bc8, 0x3030a, 0xfec5dc28,
- 0x2c697, 0xfed26c94, 0x28c9c, 0xfedefd0c,
- 0x25519, 0xfeeb8d8f, 0x2200d, 0xfef81e1d,
- 0x1ed78, 0xff04aeb5, 0x1bd5c, 0xff113f56,
- 0x18fb6, 0xff1dd001, 0x16489, 0xff2a60b4,
- 0x13bd3, 0xff36f170, 0x11594, 0xff438234,
- 0xf1ce, 0xff5012fe, 0xd07e, 0xff5ca3d0,
- 0xb1a7, 0xff6934a8, 0x9547, 0xff75c585,
- 0x7b5f, 0xff825668, 0x63ee, 0xff8ee750,
- 0x4ef5, 0xff9b783c, 0x3c74, 0xffa8092c,
- 0x2c6a, 0xffb49a1f, 0x1ed8, 0xffc12b16,
- 0x13bd, 0xffcdbc0f, 0xb1a, 0xffda4d09,
- 0x4ef, 0xffe6de05, 0x13c, 0xfff36f02,
- 0x0, 0x0, 0x13c, 0xc90fe,
- 0x4ef, 0x1921fb, 0xb1a, 0x25b2f7,
- 0x13bd, 0x3243f1, 0x1ed8, 0x3ed4ea,
- 0x2c6a, 0x4b65e1, 0x3c74, 0x57f6d4,
- 0x4ef5, 0x6487c4, 0x63ee, 0x7118b0,
- 0x7b5f, 0x7da998, 0x9547, 0x8a3a7b,
- 0xb1a7, 0x96cb58, 0xd07e, 0xa35c30,
- 0xf1ce, 0xafed02, 0x11594, 0xbc7dcc,
- 0x13bd3, 0xc90e90, 0x16489, 0xd59f4c,
- 0x18fb6, 0xe22fff, 0x1bd5c, 0xeec0aa,
- 0x1ed78, 0xfb514b, 0x2200d, 0x107e1e3,
- 0x25519, 0x1147271, 0x28c9c, 0x12102f4,
- 0x2c697, 0x12d936c, 0x3030a, 0x13a23d8,
- 0x341f4, 0x146b438, 0x38356, 0x153448c,
- 0x3c72f, 0x15fd4d2, 0x40d80, 0x16c650b,
- 0x45648, 0x178f536, 0x4a188, 0x1858552,
- 0x4ef3f, 0x192155f, 0x53f6e, 0x19ea55d,
- 0x59214, 0x1ab354b, 0x5e731, 0x1b7c528,
- 0x63ec6, 0x1c454f5, 0x698d3, 0x1d0e4b0,
- 0x6f556, 0x1dd7459, 0x75452, 0x1ea03ef,
- 0x7b5c4, 0x1f69373, 0x819ae, 0x20322e3,
- 0x8800f, 0x20fb240, 0x8e8e8, 0x21c4188,
- 0x95438, 0x228d0bb, 0x9c1ff, 0x2355fd9,
- 0xa323d, 0x241eee2, 0xaa4f3, 0x24e7dd4,
- 0xb1a20, 0x25b0caf, 0xb91c4, 0x2679b73,
- 0xc0be0, 0x2742a1f, 0xc8872, 0x280b8b3,
- 0xd077c, 0x28d472e, 0xd88fd, 0x299d590,
- 0xe0cf5, 0x2a663d8, 0xe9364, 0x2b2f207,
- 0xf1c4a, 0x2bf801a, 0xfa7a8, 0x2cc0e13,
- 0x10357c, 0x2d89bf0, 0x10c5c7, 0x2e529b0,
- 0x11588a, 0x2f1b755, 0x11edc3, 0x2fe44dc,
- 0x128574, 0x30ad245, 0x131f9b, 0x3175f91,
- 0x13bc39, 0x323ecbe, 0x145b4e, 0x33079cc,
- 0x14fcda, 0x33d06bb, 0x15a0dd, 0x3499389,
- 0x164757, 0x3562038, 0x16f047, 0x362acc5,
- 0x179bae, 0x36f3931, 0x18498c, 0x37bc57b,
- 0x18f9e1, 0x38851a2, 0x19acac, 0x394dda7,
- 0x1a61ee, 0x3a16988, 0x1b19a7, 0x3adf546,
- 0x1bd3d6, 0x3ba80df, 0x1c907c, 0x3c70c54,
- 0x1d4f99, 0x3d397a3, 0x1e112b, 0x3e022cc,
- 0x1ed535, 0x3ecadcf, 0x1f9bb5, 0x3f938ac,
- 0x2064ab, 0x405c361, 0x213018, 0x4124dee,
- 0x21fdfb, 0x41ed854, 0x22ce54, 0x42b6290,
- 0x23a124, 0x437eca4, 0x24766a, 0x444768d,
- 0x254e27, 0x451004d, 0x262859, 0x45d89e2,
- 0x270502, 0x46a134c, 0x27e421, 0x4769c8b,
- 0x28c5b6, 0x483259d, 0x29a9c1, 0x48fae83,
- 0x2a9042, 0x49c373c, 0x2b7939, 0x4a8bfc7,
- 0x2c64a6, 0x4b54825, 0x2d5289, 0x4c1d054,
- 0x2e42e2, 0x4ce5854, 0x2f35b1, 0x4dae024,
- 0x302af5, 0x4e767c5, 0x3122b0, 0x4f3ef35,
- 0x321ce0, 0x5007674, 0x331986, 0x50cfd82,
- 0x3418a2, 0x519845e, 0x351a33, 0x5260b08,
- 0x361e3a, 0x532917f, 0x3724b6, 0x53f17c3,
- 0x382da8, 0x54b9dd3, 0x393910, 0x55823ae,
- 0x3a46ed, 0x564a955, 0x3b573f, 0x5712ec7,
- 0x3c6a07, 0x57db403, 0x3d7f44, 0x58a3908,
- 0x3e96f6, 0x596bdd7, 0x3fb11d, 0x5a3426f,
- 0x40cdba, 0x5afc6d0, 0x41eccc, 0x5bc4af8,
- 0x430e53, 0x5c8cee7, 0x44324f, 0x5d5529e,
- 0x4558c0, 0x5e1d61b, 0x4681a6, 0x5ee595d,
- 0x47ad01, 0x5fadc66, 0x48dad1, 0x6075f33,
- 0x4a0b16, 0x613e1c5, 0x4b3dcf, 0x620641a,
- 0x4c72fe, 0x62ce634, 0x4daaa1, 0x6396810,
- 0x4ee4b8, 0x645e9af, 0x502145, 0x6526b10,
- 0x516045, 0x65eec33, 0x52a1bb, 0x66b6d16,
- 0x53e5a5, 0x677edbb, 0x552c03, 0x6846e1f,
- 0x5674d6, 0x690ee44, 0x57c01d, 0x69d6e27,
- 0x590dd8, 0x6a9edc9, 0x5a5e07, 0x6b66d29,
- 0x5bb0ab, 0x6c2ec48, 0x5d05c3, 0x6cf6b23,
- 0x5e5d4e, 0x6dbe9bb, 0x5fb74e, 0x6e86810,
- 0x6113c2, 0x6f4e620, 0x6272aa, 0x70163eb,
- 0x63d405, 0x70de172, 0x6537d4, 0x71a5eb3,
- 0x669e18, 0x726dbae, 0x6806ce, 0x7335862,
- 0x6971f9, 0x73fd4cf, 0x6adf97, 0x74c50f4,
- 0x6c4fa8, 0x758ccd2, 0x6dc22e, 0x7654867,
- 0x6f3726, 0x771c3b3, 0x70ae92, 0x77e3eb5,
- 0x722871, 0x78ab96e, 0x73a4c3, 0x79733dc,
- 0x752389, 0x7a3adff, 0x76a4c2, 0x7b027d7,
- 0x78286e, 0x7bca163, 0x79ae8c, 0x7c91aa3,
- 0x7b371e, 0x7d59396, 0x7cc223, 0x7e20c3b,
- 0x7e4f9b, 0x7ee8493, 0x7fdf85, 0x7fafc9c,
- 0x8171e2, 0x8077457, 0x8306b2, 0x813ebc2,
- 0x849df4, 0x82062de, 0x8637a9, 0x82cd9a9,
- 0x87d3d0, 0x8395024, 0x89726a, 0x845c64d,
- 0x8b1376, 0x8523c25, 0x8cb6f5, 0x85eb1ab,
- 0x8e5ce5, 0x86b26de, 0x900548, 0x8779bbe,
- 0x91b01d, 0x884104b, 0x935d64, 0x8908483,
- 0x950d1d, 0x89cf867, 0x96bf48, 0x8a96bf6,
- 0x9873e4, 0x8b5df30, 0x9a2af3, 0x8c25213,
- 0x9be473, 0x8cec4a0, 0x9da065, 0x8db36d6,
- 0x9f5ec8, 0x8e7a8b5, 0xa11f9d, 0x8f41a3c,
- 0xa2e2e3, 0x9008b6a, 0xa4a89b, 0x90cfc40,
- 0xa670c4, 0x9196cbc, 0xa83b5e, 0x925dcdf,
- 0xaa086a, 0x9324ca7, 0xabd7e6, 0x93ebc14,
- 0xada9d4, 0x94b2b27, 0xaf7e33, 0x95799dd,
- 0xb15502, 0x9640837, 0xb32e42, 0x9707635,
- 0xb509f3, 0x97ce3d5, 0xb6e815, 0x9895118,
- 0xb8c8a7, 0x995bdfd, 0xbaabaa, 0x9a22a83,
- 0xbc911d, 0x9ae96aa, 0xbe7901, 0x9bb0271,
- 0xc06355, 0x9c76dd8, 0xc25019, 0x9d3d8df,
- 0xc43f4d, 0x9e04385, 0xc630f2, 0x9ecadc9,
- 0xc82506, 0x9f917ac, 0xca1b8a, 0xa05812c,
- 0xcc147f, 0xa11ea49, 0xce0fe3, 0xa1e5303,
- 0xd00db6, 0xa2abb59, 0xd20dfa, 0xa37234a,
- 0xd410ad, 0xa438ad7, 0xd615cf, 0xa4ff1fe,
- 0xd81d61, 0xa5c58c0, 0xda2762, 0xa68bf1b,
- 0xdc33d2, 0xa752510, 0xde42b2, 0xa818a9d,
- 0xe05401, 0xa8defc3, 0xe267be, 0xa9a5480,
- 0xe47deb, 0xaa6b8d5, 0xe69686, 0xab31cc1,
- 0xe8b190, 0xabf8043, 0xeacf09, 0xacbe35b,
- 0xeceef1, 0xad84609, 0xef1147, 0xae4a84b,
- 0xf1360b, 0xaf10a22, 0xf35d3e, 0xafd6b8d,
- 0xf586df, 0xb09cc8c, 0xf7b2ee, 0xb162d1d,
- 0xf9e16b, 0xb228d42, 0xfc1257, 0xb2eecf8,
- 0xfe45b0, 0xb3b4c40, 0x1007b77, 0xb47ab19,
- 0x102b3ac, 0xb540982, 0x104ee4f, 0xb60677c,
- 0x1072b5f, 0xb6cc506, 0x1096add, 0xb79221f,
- 0x10bacc8, 0xb857ec7, 0x10df120, 0xb91dafc,
- 0x11037e6, 0xb9e36c0, 0x1128119, 0xbaa9211,
- 0x114ccb9, 0xbb6ecef, 0x1171ac6, 0xbc34759,
- 0x1196b3f, 0xbcfa150, 0x11bbe26, 0xbdbfad1,
- 0x11e1379, 0xbe853de, 0x1206b39, 0xbf4ac75,
- 0x122c566, 0xc010496, 0x12521ff, 0xc0d5c41,
- 0x1278104, 0xc19b374, 0x129e276, 0xc260a31,
- 0x12c4653, 0xc326075, 0x12eac9d, 0xc3eb641,
- 0x1311553, 0xc4b0b94, 0x1338075, 0xc57606e,
- 0x135ee02, 0xc63b4ce, 0x1385dfb, 0xc7008b3,
- 0x13ad060, 0xc7c5c1e, 0x13d4530, 0xc88af0e,
- 0x13fbc6c, 0xc950182, 0x1423613, 0xca1537a,
- 0x144b225, 0xcada4f5, 0x14730a3, 0xcb9f5f3,
- 0x149b18b, 0xcc64673, 0x14c34df, 0xcd29676,
- 0x14eba9d, 0xcdee5f9, 0x15142c6, 0xceb34fe,
- 0x153cd5a, 0xcf78383, 0x1565a58, 0xd03d189,
- 0x158e9c1, 0xd101f0e, 0x15b7b94, 0xd1c6c11,
- 0x15e0fd1, 0xd28b894, 0x160a678, 0xd350495,
- 0x1633f8a, 0xd415013, 0x165db05, 0xd4d9b0e,
- 0x16878eb, 0xd59e586, 0x16b193a, 0xd662f7b,
- 0x16dbbf3, 0xd7278eb, 0x1706115, 0xd7ec1d6,
- 0x17308a1, 0xd8b0a3d, 0x175b296, 0xd97521d,
- 0x1785ef4, 0xda39978, 0x17b0dbb, 0xdafe04b,
- 0x17dbeec, 0xdbc2698, 0x1807285, 0xdc86c5d,
- 0x1832888, 0xdd4b19a, 0x185e0f3, 0xde0f64f,
- 0x1889bc6, 0xded3a7b, 0x18b5903, 0xdf97e1d,
- 0x18e18a7, 0xe05c135, 0x190dab4, 0xe1203c3,
- 0x1939f29, 0xe1e45c6, 0x1966606, 0xe2a873e,
- 0x1992f4c, 0xe36c82a, 0x19bfaf9, 0xe430889,
- 0x19ec90d, 0xe4f485c, 0x1a1998a, 0xe5b87a2,
- 0x1a46c6e, 0xe67c65a, 0x1a741b9, 0xe740483,
- 0x1aa196c, 0xe80421e, 0x1acf386, 0xe8c7f2a,
- 0x1afd007, 0xe98bba7, 0x1b2aef0, 0xea4f793,
- 0x1b5903f, 0xeb132ef, 0x1b873f5, 0xebd6db9,
- 0x1bb5a11, 0xec9a7f3, 0x1be4294, 0xed5e19a,
- 0x1c12d7e, 0xee21aaf, 0x1c41ace, 0xeee5331,
- 0x1c70a84, 0xefa8b20, 0x1c9fca0, 0xf06c27a,
- 0x1ccf122, 0xf12f941, 0x1cfe80a, 0xf1f2f73,
- 0x1d2e158, 0xf2b650f, 0x1d5dd0c, 0xf379a16,
- 0x1d8db25, 0xf43ce86, 0x1dbdba3, 0xf500260,
- 0x1dede87, 0xf5c35a3, 0x1e1e3d0, 0xf68684e,
- 0x1e4eb7e, 0xf749a61, 0x1e7f591, 0xf80cbdc,
- 0x1eb0209, 0xf8cfcbe, 0x1ee10e5, 0xf992d06,
- 0x1f12227, 0xfa55cb4, 0x1f435cc, 0xfb18bc8,
- 0x1f74bd6, 0xfbdba40, 0x1fa6445, 0xfc9e81e,
- 0x1fd7f17, 0xfd6155f, 0x2009c4e, 0xfe24205,
- 0x203bbe8, 0xfee6e0d, 0x206dde6, 0xffa9979,
- 0x20a0248, 0x1006c446, 0x20d290d, 0x1012ee76,
- 0x2105236, 0x101f1807, 0x2137dc2, 0x102b40f8,
- 0x216abb1, 0x1037694b, 0x219dc03, 0x104390fd,
- 0x21d0eb8, 0x104fb80e, 0x22043d0, 0x105bde7f,
- 0x2237b4b, 0x1068044e, 0x226b528, 0x1074297b,
- 0x229f167, 0x10804e06, 0x22d3009, 0x108c71ee,
- 0x230710d, 0x10989532, 0x233b473, 0x10a4b7d3,
- 0x236fa3b, 0x10b0d9d0, 0x23a4265, 0x10bcfb28,
- 0x23d8cf1, 0x10c91bda, 0x240d9de, 0x10d53be7,
- 0x244292c, 0x10e15b4e, 0x2477adc, 0x10ed7a0e,
- 0x24aceed, 0x10f99827, 0x24e255e, 0x1105b599,
- 0x2517e31, 0x1111d263, 0x254d965, 0x111dee84,
- 0x25836f9, 0x112a09fc, 0x25b96ee, 0x113624cb,
- 0x25ef943, 0x11423ef0, 0x2625df8, 0x114e586a,
- 0x265c50e, 0x115a713a, 0x2692e83, 0x1166895f,
- 0x26c9a58, 0x1172a0d7, 0x270088e, 0x117eb7a4,
- 0x2737922, 0x118acdc4, 0x276ec16, 0x1196e337,
- 0x27a616a, 0x11a2f7fc, 0x27dd91c, 0x11af0c13,
- 0x281532e, 0x11bb1f7c, 0x284cf9f, 0x11c73235,
- 0x2884e6e, 0x11d3443f, 0x28bcf9c, 0x11df5599,
- 0x28f5329, 0x11eb6643, 0x292d914, 0x11f7763c,
- 0x296615d, 0x12038584, 0x299ec05, 0x120f941a,
- 0x29d790a, 0x121ba1fd, 0x2a1086d, 0x1227af2e,
- 0x2a49a2e, 0x1233bbac, 0x2a82e4d, 0x123fc776,
- 0x2abc4c9, 0x124bd28c, 0x2af5da2, 0x1257dced,
- 0x2b2f8d8, 0x1263e699, 0x2b6966c, 0x126fef90,
- 0x2ba365c, 0x127bf7d1, 0x2bdd8a9, 0x1287ff5b,
- 0x2c17d52, 0x1294062f, 0x2c52459, 0x12a00c4b,
- 0x2c8cdbb, 0x12ac11af, 0x2cc7979, 0x12b8165b,
- 0x2d02794, 0x12c41a4f, 0x2d3d80a, 0x12d01d89,
- 0x2d78add, 0x12dc2009, 0x2db400a, 0x12e821cf,
- 0x2def794, 0x12f422db, 0x2e2b178, 0x1300232c,
- 0x2e66db8, 0x130c22c1, 0x2ea2c53, 0x1318219a,
- 0x2eded49, 0x13241fb6, 0x2f1b099, 0x13301d16,
- 0x2f57644, 0x133c19b8, 0x2f93e4a, 0x1348159d,
- 0x2fd08a9, 0x135410c3, 0x300d563, 0x13600b2a,
- 0x304a477, 0x136c04d2, 0x30875e5, 0x1377fdbb,
- 0x30c49ad, 0x1383f5e3, 0x3101fce, 0x138fed4b,
- 0x313f848, 0x139be3f2, 0x317d31c, 0x13a7d9d7,
- 0x31bb049, 0x13b3cefa, 0x31f8fcf, 0x13bfc35b,
- 0x32371ae, 0x13cbb6f8, 0x32755e5, 0x13d7a9d3,
- 0x32b3c75, 0x13e39be9, 0x32f255e, 0x13ef8d3c,
- 0x333109e, 0x13fb7dc9, 0x336fe37, 0x14076d91,
- 0x33aee27, 0x14135c94, 0x33ee070, 0x141f4ad1,
- 0x342d510, 0x142b3846, 0x346cc07, 0x143724f5,
- 0x34ac556, 0x144310dd, 0x34ec0fc, 0x144efbfc,
- 0x352bef9, 0x145ae653, 0x356bf4d, 0x1466cfe1,
- 0x35ac1f7, 0x1472b8a5, 0x35ec6f8, 0x147ea0a0,
- 0x362ce50, 0x148a87d1, 0x366d7fd, 0x14966e36,
- 0x36ae401, 0x14a253d1, 0x36ef25b, 0x14ae38a0,
- 0x373030a, 0x14ba1ca3, 0x377160f, 0x14c5ffd9,
- 0x37b2b6a, 0x14d1e242, 0x37f4319, 0x14ddc3de,
- 0x3835d1e, 0x14e9a4ac, 0x3877978, 0x14f584ac,
- 0x38b9827, 0x150163dc, 0x38fb92a, 0x150d423d,
- 0x393dc82, 0x15191fcf, 0x398022f, 0x1524fc90,
- 0x39c2a2f, 0x1530d881, 0x3a05484, 0x153cb3a0,
- 0x3a4812c, 0x15488dee, 0x3a8b028, 0x1554676a,
- 0x3ace178, 0x15604013, 0x3b1151b, 0x156c17e9,
- 0x3b54b11, 0x1577eeec, 0x3b9835a, 0x1583c51b,
- 0x3bdbdf6, 0x158f9a76, 0x3c1fae5, 0x159b6efb,
- 0x3c63a26, 0x15a742ac, 0x3ca7bba, 0x15b31587,
- 0x3cebfa0, 0x15bee78c, 0x3d305d8, 0x15cab8ba,
- 0x3d74e62, 0x15d68911, 0x3db993e, 0x15e25890,
- 0x3dfe66c, 0x15ee2738, 0x3e435ea, 0x15f9f507,
- 0x3e887bb, 0x1605c1fd, 0x3ecdbdc, 0x16118e1a,
- 0x3f1324e, 0x161d595d, 0x3f58b10, 0x162923c5,
- 0x3f9e624, 0x1634ed53, 0x3fe4388, 0x1640b606,
- 0x402a33c, 0x164c7ddd, 0x4070540, 0x165844d8,
- 0x40b6994, 0x16640af7, 0x40fd037, 0x166fd039,
- 0x414392b, 0x167b949d, 0x418a46d, 0x16875823,
- 0x41d11ff, 0x16931acb, 0x42181e0, 0x169edc94,
- 0x425f410, 0x16aa9d7e, 0x42a688f, 0x16b65d88,
- 0x42edf5c, 0x16c21cb2, 0x4335877, 0x16cddafb,
- 0x437d3e1, 0x16d99864, 0x43c5199, 0x16e554ea,
- 0x440d19e, 0x16f1108f, 0x44553f2, 0x16fccb51,
- 0x449d892, 0x17088531, 0x44e5f80, 0x17143e2d,
- 0x452e8bc, 0x171ff646, 0x4577444, 0x172bad7a,
- 0x45c0219, 0x173763c9, 0x460923b, 0x17431933,
- 0x46524a9, 0x174ecdb8, 0x469b963, 0x175a8157,
- 0x46e5069, 0x1766340f, 0x472e9bc, 0x1771e5e0,
- 0x477855a, 0x177d96ca, 0x47c2344, 0x178946cc,
- 0x480c379, 0x1794f5e6, 0x48565f9, 0x17a0a417,
- 0x48a0ac4, 0x17ac515f, 0x48eb1db, 0x17b7fdbd,
- 0x4935b3c, 0x17c3a931, 0x49806e7, 0x17cf53bb,
- 0x49cb4dd, 0x17dafd59, 0x4a1651c, 0x17e6a60c,
- 0x4a617a6, 0x17f24dd3, 0x4aacc7a, 0x17fdf4ae,
- 0x4af8397, 0x18099a9c, 0x4b43cfd, 0x18153f9d,
- 0x4b8f8ad, 0x1820e3b0, 0x4bdb6a6, 0x182c86d5,
- 0x4c276e8, 0x1838290c, 0x4c73972, 0x1843ca53,
- 0x4cbfe45, 0x184f6aab, 0x4d0c560, 0x185b0a13,
- 0x4d58ec3, 0x1866a88a, 0x4da5a6f, 0x18724611,
- 0x4df2862, 0x187de2a7, 0x4e3f89c, 0x18897e4a,
- 0x4e8cb1e, 0x189518fc, 0x4ed9fe7, 0x18a0b2bb,
- 0x4f276f7, 0x18ac4b87, 0x4f7504e, 0x18b7e35f,
- 0x4fc2bec, 0x18c37a44, 0x50109d0, 0x18cf1034,
- 0x505e9fb, 0x18daa52f, 0x50acc6b, 0x18e63935,
- 0x50fb121, 0x18f1cc45, 0x514981d, 0x18fd5e5f,
- 0x519815f, 0x1908ef82, 0x51e6ce6, 0x19147fae,
- 0x5235ab2, 0x19200ee3, 0x5284ac3, 0x192b9d1f,
- 0x52d3d18, 0x19372a64, 0x53231b3, 0x1942b6af,
- 0x5372891, 0x194e4201, 0x53c21b4, 0x1959cc5a,
- 0x5411d1b, 0x196555b8, 0x5461ac6, 0x1970de1b,
- 0x54b1ab4, 0x197c6584, 0x5501ce5, 0x1987ebf0,
- 0x555215a, 0x19937161, 0x55a2812, 0x199ef5d6,
- 0x55f310d, 0x19aa794d, 0x5643c4a, 0x19b5fbc8,
- 0x56949ca, 0x19c17d44, 0x56e598c, 0x19ccfdc2,
- 0x5736b90, 0x19d87d42, 0x5787fd6, 0x19e3fbc3,
- 0x57d965d, 0x19ef7944, 0x582af26, 0x19faf5c5,
- 0x587ca31, 0x1a067145, 0x58ce77c, 0x1a11ebc5,
- 0x5920708, 0x1a1d6544, 0x59728d5, 0x1a28ddc0,
- 0x59c4ce3, 0x1a34553b, 0x5a17330, 0x1a3fcbb3,
- 0x5a69bbe, 0x1a4b4128, 0x5abc68c, 0x1a56b599,
- 0x5b0f399, 0x1a622907, 0x5b622e6, 0x1a6d9b70,
- 0x5bb5472, 0x1a790cd4, 0x5c0883d, 0x1a847d33,
- 0x5c5be47, 0x1a8fec8c, 0x5caf690, 0x1a9b5adf,
- 0x5d03118, 0x1aa6c82b, 0x5d56ddd, 0x1ab23471,
- 0x5daace1, 0x1abd9faf, 0x5dfee22, 0x1ac909e5,
- 0x5e531a1, 0x1ad47312, 0x5ea775e, 0x1adfdb37,
- 0x5efbf58, 0x1aeb4253, 0x5f5098f, 0x1af6a865,
- 0x5fa5603, 0x1b020d6c, 0x5ffa4b3, 0x1b0d716a,
- 0x604f5a0, 0x1b18d45c, 0x60a48c9, 0x1b243643,
- 0x60f9e2e, 0x1b2f971e, 0x614f5cf, 0x1b3af6ec,
- 0x61a4fac, 0x1b4655ae, 0x61fabc4, 0x1b51b363,
- 0x6250a18, 0x1b5d100a, 0x62a6aa6, 0x1b686ba3,
- 0x62fcd6f, 0x1b73c62d, 0x6353273, 0x1b7f1fa9,
- 0x63a99b1, 0x1b8a7815, 0x6400329, 0x1b95cf71,
- 0x6456edb, 0x1ba125bd, 0x64adcc7, 0x1bac7af9,
- 0x6504ced, 0x1bb7cf23, 0x655bf4c, 0x1bc3223c,
- 0x65b33e4, 0x1bce7442, 0x660aab5, 0x1bd9c537,
- 0x66623be, 0x1be51518, 0x66b9f01, 0x1bf063e6,
- 0x6711c7b, 0x1bfbb1a0, 0x6769c2e, 0x1c06fe46,
- 0x67c1e18, 0x1c1249d8, 0x681a23a, 0x1c1d9454,
- 0x6872894, 0x1c28ddbb, 0x68cb124, 0x1c34260c,
- 0x6923bec, 0x1c3f6d47, 0x697c8eb, 0x1c4ab36b,
- 0x69d5820, 0x1c55f878, 0x6a2e98b, 0x1c613c6d,
- 0x6a87d2d, 0x1c6c7f4a, 0x6ae1304, 0x1c77c10e,
- 0x6b3ab12, 0x1c8301b9, 0x6b94554, 0x1c8e414b,
- 0x6bee1cd, 0x1c997fc4, 0x6c4807a, 0x1ca4bd21,
- 0x6ca215c, 0x1caff965, 0x6cfc472, 0x1cbb348d,
- 0x6d569be, 0x1cc66e99, 0x6db113d, 0x1cd1a78a,
- 0x6e0baf0, 0x1cdcdf5e, 0x6e666d7, 0x1ce81615,
- 0x6ec14f2, 0x1cf34baf, 0x6f1c540, 0x1cfe802b,
- 0x6f777c1, 0x1d09b389, 0x6fd2c75, 0x1d14e5c9,
- 0x702e35c, 0x1d2016e9, 0x7089c75, 0x1d2b46ea,
- 0x70e57c0, 0x1d3675cb, 0x714153e, 0x1d41a38c,
- 0x719d4ed, 0x1d4cd02c, 0x71f96ce, 0x1d57fbaa,
- 0x7255ae0, 0x1d632608, 0x72b2123, 0x1d6e4f43,
- 0x730e997, 0x1d79775c, 0x736b43c, 0x1d849e51,
- 0x73c8111, 0x1d8fc424, 0x7425016, 0x1d9ae8d2,
- 0x748214c, 0x1da60c5d, 0x74df4b1, 0x1db12ec3,
- 0x753ca46, 0x1dbc5004, 0x759a20a, 0x1dc7701f,
- 0x75f7bfe, 0x1dd28f15, 0x7655820, 0x1dddace4,
- 0x76b3671, 0x1de8c98c, 0x77116f0, 0x1df3e50d,
- 0x776f99d, 0x1dfeff67, 0x77cde79, 0x1e0a1898,
- 0x782c582, 0x1e1530a1, 0x788aeb9, 0x1e204781,
- 0x78e9a1d, 0x1e2b5d38, 0x79487ae, 0x1e3671c5,
- 0x79a776c, 0x1e418528, 0x7a06957, 0x1e4c9760,
- 0x7a65d6e, 0x1e57a86d, 0x7ac53b1, 0x1e62b84f,
- 0x7b24c20, 0x1e6dc705, 0x7b846ba, 0x1e78d48e,
- 0x7be4381, 0x1e83e0eb, 0x7c44272, 0x1e8eec1b,
- 0x7ca438f, 0x1e99f61d, 0x7d046d6, 0x1ea4fef0,
- 0x7d64c47, 0x1eb00696, 0x7dc53e3, 0x1ebb0d0d,
- 0x7e25daa, 0x1ec61254, 0x7e8699a, 0x1ed1166b,
- 0x7ee77b3, 0x1edc1953, 0x7f487f6, 0x1ee71b0a,
- 0x7fa9a62, 0x1ef21b90, 0x800aef7, 0x1efd1ae4,
- 0x806c5b5, 0x1f081907, 0x80cde9b, 0x1f1315f7,
- 0x812f9a9, 0x1f1e11b5, 0x81916df, 0x1f290c3f,
- 0x81f363d, 0x1f340596, 0x82557c3, 0x1f3efdb9,
- 0x82b7b70, 0x1f49f4a8, 0x831a143, 0x1f54ea62,
- 0x837c93e, 0x1f5fdee6, 0x83df35f, 0x1f6ad235,
- 0x8441fa6, 0x1f75c44e, 0x84a4e14, 0x1f80b531,
- 0x8507ea7, 0x1f8ba4dc, 0x856b160, 0x1f969350,
- 0x85ce63e, 0x1fa1808c, 0x8631d42, 0x1fac6c91,
- 0x869566a, 0x1fb7575c, 0x86f91b7, 0x1fc240ef,
- 0x875cf28, 0x1fcd2948, 0x87c0ebd, 0x1fd81067,
- 0x8825077, 0x1fe2f64c, 0x8889454, 0x1feddaf6,
- 0x88eda54, 0x1ff8be65, 0x8952278, 0x2003a099,
- 0x89b6cbf, 0x200e8190, 0x8a1b928, 0x2019614c,
- 0x8a807b4, 0x20243fca, 0x8ae5862, 0x202f1d0b,
- 0x8b4ab32, 0x2039f90f, 0x8bb0023, 0x2044d3d4,
- 0x8c15736, 0x204fad5b, 0x8c7b06b, 0x205a85a3,
- 0x8ce0bc0, 0x20655cac, 0x8d46936, 0x20703275,
- 0x8dac8cd, 0x207b06fe, 0x8e12a84, 0x2085da46,
- 0x8e78e5b, 0x2090ac4d, 0x8edf452, 0x209b7d13,
- 0x8f45c68, 0x20a64c97, 0x8fac69e, 0x20b11ad9,
- 0x90132f2, 0x20bbe7d8, 0x907a166, 0x20c6b395,
- 0x90e11f7, 0x20d17e0d, 0x91484a8, 0x20dc4742,
- 0x91af976, 0x20e70f32, 0x9217062, 0x20f1d5de,
- 0x927e96b, 0x20fc9b44, 0x92e6492, 0x21075f65,
- 0x934e1d6, 0x21122240, 0x93b6137, 0x211ce3d5,
- 0x941e2b4, 0x2127a423, 0x948664d, 0x21326329,
- 0x94eec03, 0x213d20e8, 0x95573d4, 0x2147dd5f,
- 0x95bfdc1, 0x2152988d, 0x96289c9, 0x215d5273,
- 0x96917ec, 0x21680b0f, 0x96fa82a, 0x2172c262,
- 0x9763a83, 0x217d786a, 0x97ccef5, 0x21882d28,
- 0x9836582, 0x2192e09b, 0x989fe29, 0x219d92c2,
- 0x99098e9, 0x21a8439e, 0x99735c2, 0x21b2f32e,
- 0x99dd4b4, 0x21bda171, 0x9a475bf, 0x21c84e67,
- 0x9ab18e3, 0x21d2fa0f, 0x9b1be1e, 0x21dda46a,
- 0x9b86572, 0x21e84d76, 0x9bf0edd, 0x21f2f534,
- 0x9c5ba60, 0x21fd9ba3, 0x9cc67fa, 0x220840c2,
- 0x9d317ab, 0x2212e492, 0x9d9c973, 0x221d8711,
- 0x9e07d51, 0x2228283f, 0x9e73346, 0x2232c81c,
- 0x9edeb50, 0x223d66a8, 0x9f4a570, 0x224803e2,
- 0x9fb61a5, 0x22529fca, 0xa021fef, 0x225d3a5e,
- 0xa08e04f, 0x2267d3a0, 0xa0fa2c3, 0x22726b8e,
- 0xa16674b, 0x227d0228, 0xa1d2de7, 0x2287976e,
- 0xa23f698, 0x22922b5e, 0xa2ac15b, 0x229cbdfa,
- 0xa318e32, 0x22a74f40, 0xa385d1d, 0x22b1df30,
- 0xa3f2e19, 0x22bc6dca, 0xa460129, 0x22c6fb0c,
- 0xa4cd64b, 0x22d186f8, 0xa53ad7e, 0x22dc118c,
- 0xa5a86c4, 0x22e69ac8, 0xa61621b, 0x22f122ab,
- 0xa683f83, 0x22fba936, 0xa6f1efc, 0x23062e67,
- 0xa760086, 0x2310b23e, 0xa7ce420, 0x231b34bc,
- 0xa83c9ca, 0x2325b5df, 0xa8ab184, 0x233035a7,
- 0xa919b4e, 0x233ab414, 0xa988727, 0x23453125,
- 0xa9f750f, 0x234facda, 0xaa66506, 0x235a2733,
- 0xaad570c, 0x2364a02e, 0xab44b1f, 0x236f17cc,
- 0xabb4141, 0x23798e0d, 0xac23971, 0x238402ef,
- 0xac933ae, 0x238e7673, 0xad02ff8, 0x2398e898,
- 0xad72e4f, 0x23a3595e, 0xade2eb3, 0x23adc8c4,
- 0xae53123, 0x23b836ca, 0xaec35a0, 0x23c2a36f,
- 0xaf33c28, 0x23cd0eb3, 0xafa44bc, 0x23d77896,
- 0xb014f5b, 0x23e1e117, 0xb085c05, 0x23ec4837,
- 0xb0f6aba, 0x23f6adf3, 0xb167b79, 0x2401124d,
- 0xb1d8e43, 0x240b7543, 0xb24a316, 0x2415d6d5,
- 0xb2bb9f4, 0x24203704, 0xb32d2da, 0x242a95ce,
- 0xb39edca, 0x2434f332, 0xb410ac3, 0x243f4f32,
- 0xb4829c4, 0x2449a9cc, 0xb4f4acd, 0x245402ff,
- 0xb566ddf, 0x245e5acc, 0xb5d92f8, 0x2468b132,
- 0xb64ba19, 0x24730631, 0xb6be341, 0x247d59c8,
- 0xb730e70, 0x2487abf7, 0xb7a3ba5, 0x2491fcbe,
- 0xb816ae1, 0x249c4c1b, 0xb889c23, 0x24a69a0f,
- 0xb8fcf6b, 0x24b0e699, 0xb9704b9, 0x24bb31ba,
- 0xb9e3c0b, 0x24c57b6f, 0xba57563, 0x24cfc3ba,
- 0xbacb0bf, 0x24da0a9a, 0xbb3ee20, 0x24e4500e,
- 0xbbb2d85, 0x24ee9415, 0xbc26eee, 0x24f8d6b0,
- 0xbc9b25a, 0x250317df, 0xbd0f7ca, 0x250d57a0,
- 0xbd83f3d, 0x251795f3, 0xbdf88b3, 0x2521d2d8,
- 0xbe6d42b, 0x252c0e4f, 0xbee21a5, 0x25364857,
- 0xbf57121, 0x254080ef, 0xbfcc29f, 0x254ab818,
- 0xc04161e, 0x2554edd1, 0xc0b6b9e, 0x255f2219,
- 0xc12c31f, 0x256954f1, 0xc1a1ca0, 0x25738657,
- 0xc217822, 0x257db64c, 0xc28d5a3, 0x2587e4cf,
- 0xc303524, 0x259211df, 0xc3796a5, 0x259c3d7c,
- 0xc3efa25, 0x25a667a7, 0xc465fa3, 0x25b0905d,
- 0xc4dc720, 0x25bab7a0, 0xc55309b, 0x25c4dd6e,
- 0xc5c9c14, 0x25cf01c8, 0xc64098b, 0x25d924ac,
- 0xc6b78ff, 0x25e3461b, 0xc72ea70, 0x25ed6614,
- 0xc7a5dde, 0x25f78497, 0xc81d349, 0x2601a1a2,
- 0xc894aaf, 0x260bbd37, 0xc90c412, 0x2615d754,
- 0xc983f70, 0x261feffa, 0xc9fbcca, 0x262a0727,
- 0xca73c1e, 0x26341cdb, 0xcaebd6e, 0x263e3117,
- 0xcb640b8, 0x264843d9, 0xcbdc5fc, 0x26525521,
- 0xcc54d3a, 0x265c64ef, 0xcccd671, 0x26667342,
- 0xcd461a2, 0x2670801a, 0xcdbeecc, 0x267a8b77,
- 0xce37def, 0x26849558, 0xceb0f0a, 0x268e9dbd,
- 0xcf2a21d, 0x2698a4a6, 0xcfa3729, 0x26a2aa11,
- 0xd01ce2b, 0x26acadff, 0xd096725, 0x26b6b070,
- 0xd110216, 0x26c0b162, 0xd189efe, 0x26cab0d6,
- 0xd203ddc, 0x26d4aecb, 0xd27deb0, 0x26deab41,
- 0xd2f817b, 0x26e8a637, 0xd37263a, 0x26f29fad,
- 0xd3eccef, 0x26fc97a3, 0xd467599, 0x27068e18,
- 0xd4e2037, 0x2710830c, 0xd55ccca, 0x271a767e,
- 0xd5d7b50, 0x2724686e, 0xd652bcb, 0x272e58dc,
- 0xd6cde39, 0x273847c8, 0xd74929a, 0x27423530,
- 0xd7c48ee, 0x274c2115, 0xd840134, 0x27560b76,
- 0xd8bbb6d, 0x275ff452, 0xd937798, 0x2769dbaa,
- 0xd9b35b4, 0x2773c17d, 0xda2f5c2, 0x277da5cb,
- 0xdaab7c0, 0x27878893, 0xdb27bb0, 0x279169d5,
- 0xdba4190, 0x279b4990, 0xdc20960, 0x27a527c4,
- 0xdc9d320, 0x27af0472, 0xdd19ed0, 0x27b8df97,
- 0xdd96c6f, 0x27c2b934, 0xde13bfd, 0x27cc9149,
- 0xde90d79, 0x27d667d5, 0xdf0e0e4, 0x27e03cd8,
- 0xdf8b63d, 0x27ea1052, 0xe008d84, 0x27f3e241,
- 0xe0866b8, 0x27fdb2a7, 0xe1041d9, 0x28078181,
- 0xe181ee8, 0x28114ed0, 0xe1ffde2, 0x281b1a94,
- 0xe27dec9, 0x2824e4cc, 0xe2fc19c, 0x282ead78,
- 0xe37a65b, 0x28387498, 0xe3f8d05, 0x28423a2a,
- 0xe47759a, 0x284bfe2f, 0xe4f6019, 0x2855c0a6,
- 0xe574c84, 0x285f8190, 0xe5f3ad8, 0x286940ea,
- 0xe672b16, 0x2872feb6, 0xe6f1d3d, 0x287cbaf3,
- 0xe77114e, 0x288675a0, 0xe7f0748, 0x28902ebd,
- 0xe86ff2a, 0x2899e64a, 0xe8ef8f4, 0x28a39c46,
- 0xe96f4a7, 0x28ad50b1, 0xe9ef241, 0x28b7038b,
- 0xea6f1c2, 0x28c0b4d2, 0xeaef32b, 0x28ca6488,
- 0xeb6f67a, 0x28d412ab, 0xebefbb0, 0x28ddbf3b,
- 0xec702cb, 0x28e76a37, 0xecf0bcd, 0x28f113a0,
- 0xed716b4, 0x28fabb75, 0xedf2380, 0x290461b5,
- 0xee73231, 0x290e0661, 0xeef42c7, 0x2917a977,
- 0xef75541, 0x29214af8, 0xeff699f, 0x292aeae3,
- 0xf077fe1, 0x29348937, 0xf0f9805, 0x293e25f5,
- 0xf17b20d, 0x2947c11c, 0xf1fcdf8, 0x29515aab,
- 0xf27ebc5, 0x295af2a3, 0xf300b74, 0x29648902,
- 0xf382d05, 0x296e1dc9, 0xf405077, 0x2977b0f7,
- 0xf4875ca, 0x2981428c, 0xf509cfe, 0x298ad287,
- 0xf58c613, 0x299460e8, 0xf60f108, 0x299dedaf,
- 0xf691ddd, 0x29a778db, 0xf714c91, 0x29b1026c,
- 0xf797d24, 0x29ba8a61, 0xf81af97, 0x29c410ba,
- 0xf89e3e8, 0x29cd9578, 0xf921a17, 0x29d71899,
- 0xf9a5225, 0x29e09a1c, 0xfa28c10, 0x29ea1a03,
- 0xfaac7d8, 0x29f3984c, 0xfb3057d, 0x29fd14f6,
- 0xfbb4500, 0x2a069003, 0xfc3865e, 0x2a100970,
- 0xfcbc999, 0x2a19813f, 0xfd40eaf, 0x2a22f76e,
- 0xfdc55a1, 0x2a2c6bfd, 0xfe49e6d, 0x2a35deeb,
- 0xfece915, 0x2a3f503a, 0xff53597, 0x2a48bfe7,
- 0xffd83f4, 0x2a522df3, 0x1005d42a, 0x2a5b9a5d,
- 0x100e2639, 0x2a650525, 0x10167a22, 0x2a6e6e4b,
- 0x101ecfe4, 0x2a77d5ce, 0x1027277e, 0x2a813bae,
- 0x102f80f1, 0x2a8a9fea, 0x1037dc3b, 0x2a940283,
- 0x1040395d, 0x2a9d6377, 0x10489856, 0x2aa6c2c6,
- 0x1050f926, 0x2ab02071, 0x10595bcd, 0x2ab97c77,
- 0x1061c04a, 0x2ac2d6d6, 0x106a269d, 0x2acc2f90,
- 0x10728ec6, 0x2ad586a3, 0x107af8c4, 0x2adedc10,
- 0x10836497, 0x2ae82fd5, 0x108bd23f, 0x2af181f3,
- 0x109441bb, 0x2afad269, 0x109cb30b, 0x2b042137,
- 0x10a5262f, 0x2b0d6e5c, 0x10ad9b26, 0x2b16b9d9,
- 0x10b611f1, 0x2b2003ac, 0x10be8a8d, 0x2b294bd5,
- 0x10c704fd, 0x2b329255, 0x10cf813e, 0x2b3bd72a,
- 0x10d7ff51, 0x2b451a55, 0x10e07f36, 0x2b4e5bd4,
- 0x10e900ec, 0x2b579ba8, 0x10f18472, 0x2b60d9d0,
- 0x10fa09c9, 0x2b6a164d, 0x110290f0, 0x2b73511c,
- 0x110b19e7, 0x2b7c8a3f, 0x1113a4ad, 0x2b85c1b5,
- 0x111c3142, 0x2b8ef77d, 0x1124bfa6, 0x2b982b97,
- 0x112d4fd9, 0x2ba15e03, 0x1135e1d9, 0x2baa8ec0,
- 0x113e75a8, 0x2bb3bdce, 0x11470b44, 0x2bbceb2d,
- 0x114fa2ad, 0x2bc616dd, 0x11583be2, 0x2bcf40dc,
- 0x1160d6e5, 0x2bd8692b, 0x116973b3, 0x2be18fc9,
- 0x1172124d, 0x2beab4b6, 0x117ab2b3, 0x2bf3d7f2,
- 0x118354e4, 0x2bfcf97c, 0x118bf8e0, 0x2c061953,
- 0x11949ea6, 0x2c0f3779, 0x119d4636, 0x2c1853eb,
- 0x11a5ef90, 0x2c216eaa, 0x11ae9ab4, 0x2c2a87b6,
- 0x11b747a0, 0x2c339f0e, 0x11bff656, 0x2c3cb4b1,
- 0x11c8a6d4, 0x2c45c8a0, 0x11d1591a, 0x2c4edada,
- 0x11da0d28, 0x2c57eb5e, 0x11e2c2fd, 0x2c60fa2d,
- 0x11eb7a9a, 0x2c6a0746, 0x11f433fd, 0x2c7312a9,
- 0x11fcef27, 0x2c7c1c55, 0x1205ac17, 0x2c85244a,
- 0x120e6acc, 0x2c8e2a87, 0x12172b48, 0x2c972f0d,
- 0x121fed88, 0x2ca031da, 0x1228b18d, 0x2ca932ef,
- 0x12317756, 0x2cb2324c, 0x123a3ee4, 0x2cbb2fef,
- 0x12430835, 0x2cc42bd9, 0x124bd34a, 0x2ccd2609,
- 0x1254a021, 0x2cd61e7f, 0x125d6ebc, 0x2cdf153a,
- 0x12663f19, 0x2ce80a3a, 0x126f1138, 0x2cf0fd80,
- 0x1277e518, 0x2cf9ef09, 0x1280babb, 0x2d02ded7,
- 0x1289921e, 0x2d0bcce8, 0x12926b41, 0x2d14b93d,
- 0x129b4626, 0x2d1da3d5, 0x12a422ca, 0x2d268cb0,
- 0x12ad012e, 0x2d2f73cd, 0x12b5e151, 0x2d38592c,
- 0x12bec333, 0x2d413ccd, 0x12c7a6d4, 0x2d4a1eaf,
- 0x12d08c33, 0x2d52fed2, 0x12d97350, 0x2d5bdd36,
- 0x12e25c2b, 0x2d64b9da, 0x12eb46c3, 0x2d6d94bf,
- 0x12f43318, 0x2d766de2, 0x12fd2129, 0x2d7f4545,
- 0x130610f7, 0x2d881ae8, 0x130f0280, 0x2d90eec8,
- 0x1317f5c6, 0x2d99c0e7, 0x1320eac6, 0x2da29144,
- 0x1329e181, 0x2dab5fdf, 0x1332d9f7, 0x2db42cb6,
- 0x133bd427, 0x2dbcf7cb, 0x1344d011, 0x2dc5c11c,
- 0x134dcdb4, 0x2dce88aa, 0x1356cd11, 0x2dd74e73,
- 0x135fce26, 0x2de01278, 0x1368d0f3, 0x2de8d4b8,
- 0x1371d579, 0x2df19534, 0x137adbb6, 0x2dfa53e9,
- 0x1383e3ab, 0x2e0310d9, 0x138ced57, 0x2e0bcc03,
- 0x1395f8ba, 0x2e148566, 0x139f05d3, 0x2e1d3d03,
- 0x13a814a2, 0x2e25f2d8, 0x13b12526, 0x2e2ea6e6,
- 0x13ba3760, 0x2e37592c, 0x13c34b4f, 0x2e4009aa,
- 0x13cc60f2, 0x2e48b860, 0x13d5784a, 0x2e51654c,
- 0x13de9156, 0x2e5a1070, 0x13e7ac15, 0x2e62b9ca,
- 0x13f0c887, 0x2e6b615a, 0x13f9e6ad, 0x2e740720,
- 0x14030684, 0x2e7cab1c, 0x140c280e, 0x2e854d4d,
- 0x14154b4a, 0x2e8dedb3, 0x141e7037, 0x2e968c4d,
- 0x142796d5, 0x2e9f291b, 0x1430bf24, 0x2ea7c41e,
- 0x1439e923, 0x2eb05d53, 0x144314d3, 0x2eb8f4bc,
- 0x144c4232, 0x2ec18a58, 0x14557140, 0x2eca1e27,
- 0x145ea1fd, 0x2ed2b027, 0x1467d469, 0x2edb405a,
- 0x14710883, 0x2ee3cebe, 0x147a3e4b, 0x2eec5b53,
- 0x148375c1, 0x2ef4e619, 0x148caee4, 0x2efd6f10,
- 0x1495e9b3, 0x2f05f637, 0x149f2630, 0x2f0e7b8e,
- 0x14a86458, 0x2f16ff14, 0x14b1a42c, 0x2f1f80ca,
- 0x14bae5ab, 0x2f2800af, 0x14c428d6, 0x2f307ec2,
- 0x14cd6dab, 0x2f38fb03, 0x14d6b42b, 0x2f417573,
- 0x14dffc54, 0x2f49ee0f, 0x14e94627, 0x2f5264da,
- 0x14f291a4, 0x2f5ad9d1, 0x14fbdec9, 0x2f634cf5,
- 0x15052d97, 0x2f6bbe45, 0x150e7e0d, 0x2f742dc1,
- 0x1517d02b, 0x2f7c9b69, 0x152123f0, 0x2f85073c,
- 0x152a795d, 0x2f8d713a, 0x1533d070, 0x2f95d963,
- 0x153d292a, 0x2f9e3fb6, 0x15468389, 0x2fa6a433,
- 0x154fdf8f, 0x2faf06da, 0x15593d3a, 0x2fb767aa,
- 0x15629c89, 0x2fbfc6a3, 0x156bfd7d, 0x2fc823c5,
- 0x15756016, 0x2fd07f0f, 0x157ec452, 0x2fd8d882,
- 0x15882a32, 0x2fe1301c, 0x159191b5, 0x2fe985de,
- 0x159afadb, 0x2ff1d9c7, 0x15a465a3, 0x2ffa2bd6,
- 0x15add20d, 0x30027c0c, 0x15b74019, 0x300aca69,
- 0x15c0afc6, 0x301316eb, 0x15ca2115, 0x301b6193,
- 0x15d39403, 0x3023aa5f, 0x15dd0892, 0x302bf151,
- 0x15e67ec1, 0x30343667, 0x15eff690, 0x303c79a2,
- 0x15f96ffd, 0x3044bb00, 0x1602eb0a, 0x304cfa83,
- 0x160c67b4, 0x30553828, 0x1615e5fd, 0x305d73f0,
- 0x161f65e4, 0x3065addb, 0x1628e767, 0x306de5e9,
- 0x16326a88, 0x30761c18, 0x163bef46, 0x307e5069,
- 0x1645759f, 0x308682dc, 0x164efd94, 0x308eb36f,
- 0x16588725, 0x3096e223, 0x16621251, 0x309f0ef8,
- 0x166b9f18, 0x30a739ed, 0x16752d79, 0x30af6302,
- 0x167ebd74, 0x30b78a36, 0x16884f09, 0x30bfaf89,
- 0x1691e237, 0x30c7d2fb, 0x169b76fe, 0x30cff48c,
- 0x16a50d5d, 0x30d8143b, 0x16aea555, 0x30e03208,
- 0x16b83ee4, 0x30e84df3, 0x16c1da0b, 0x30f067fb,
- 0x16cb76c9, 0x30f8801f, 0x16d5151d, 0x31009661,
- 0x16deb508, 0x3108aabf, 0x16e85689, 0x3110bd39,
- 0x16f1f99f, 0x3118cdcf, 0x16fb9e4b, 0x3120dc80,
- 0x1705448b, 0x3128e94c, 0x170eec60, 0x3130f433,
- 0x171895c9, 0x3138fd35, 0x172240c5, 0x31410450,
- 0x172bed55, 0x31490986, 0x17359b78, 0x31510cd5,
- 0x173f4b2e, 0x31590e3e, 0x1748fc75, 0x31610dbf,
- 0x1752af4f, 0x31690b59, 0x175c63ba, 0x3171070c,
- 0x176619b6, 0x317900d6, 0x176fd143, 0x3180f8b8,
- 0x17798a60, 0x3188eeb2, 0x1783450d, 0x3190e2c3,
- 0x178d014a, 0x3198d4ea, 0x1796bf16, 0x31a0c528,
- 0x17a07e70, 0x31a8b37c, 0x17aa3f5a, 0x31b09fe7,
- 0x17b401d1, 0x31b88a66, 0x17bdc5d6, 0x31c072fb,
- 0x17c78b68, 0x31c859a5, 0x17d15288, 0x31d03e64,
- 0x17db1b34, 0x31d82137, 0x17e4e56c, 0x31e0021e,
- 0x17eeb130, 0x31e7e118, 0x17f87e7f, 0x31efbe27,
- 0x18024d59, 0x31f79948, 0x180c1dbf, 0x31ff727c,
- 0x1815efae, 0x320749c3, 0x181fc328, 0x320f1f1c,
- 0x1829982b, 0x3216f287, 0x18336eb7, 0x321ec403,
- 0x183d46cc, 0x32269391, 0x18472069, 0x322e6130,
- 0x1850fb8e, 0x32362ce0, 0x185ad83c, 0x323df6a0,
- 0x1864b670, 0x3245be70, 0x186e962b, 0x324d8450,
- 0x1878776d, 0x32554840, 0x18825a35, 0x325d0a3e,
- 0x188c3e83, 0x3264ca4c, 0x18962456, 0x326c8868,
- 0x18a00bae, 0x32744493, 0x18a9f48a, 0x327bfecc,
- 0x18b3deeb, 0x3283b712, 0x18bdcad0, 0x328b6d66,
- 0x18c7b838, 0x329321c7, 0x18d1a724, 0x329ad435,
- 0x18db9792, 0x32a284b0, 0x18e58982, 0x32aa3336,
- 0x18ef7cf4, 0x32b1dfc9, 0x18f971e8, 0x32b98a67,
- 0x1903685d, 0x32c13311, 0x190d6053, 0x32c8d9c6,
- 0x191759c9, 0x32d07e85, 0x192154bf, 0x32d82150,
- 0x192b5135, 0x32dfc224, 0x19354f2a, 0x32e76102,
- 0x193f4e9e, 0x32eefdea, 0x19494f90, 0x32f698db,
- 0x19535201, 0x32fe31d5, 0x195d55ef, 0x3305c8d7,
- 0x19675b5a, 0x330d5de3, 0x19716243, 0x3314f0f6,
- 0x197b6aa8, 0x331c8211, 0x19857489, 0x33241134,
- 0x198f7fe6, 0x332b9e5e, 0x19998cbe, 0x3333298f,
- 0x19a39b11, 0x333ab2c6, 0x19adaadf, 0x33423a04,
- 0x19b7bc27, 0x3349bf48, 0x19c1cee9, 0x33514292,
- 0x19cbe325, 0x3358c3e2, 0x19d5f8d9, 0x33604336,
- 0x19e01006, 0x3367c090, 0x19ea28ac, 0x336f3bee,
- 0x19f442c9, 0x3376b551, 0x19fe5e5e, 0x337e2cb7,
- 0x1a087b69, 0x3385a222, 0x1a1299ec, 0x338d1590,
- 0x1a1cb9e5, 0x33948701, 0x1a26db54, 0x339bf675,
- 0x1a30fe38, 0x33a363ec, 0x1a3b2292, 0x33aacf65,
- 0x1a454860, 0x33b238e0, 0x1a4f6fa3, 0x33b9a05d,
- 0x1a599859, 0x33c105db, 0x1a63c284, 0x33c8695b,
- 0x1a6dee21, 0x33cfcadc, 0x1a781b31, 0x33d72a5d,
- 0x1a8249b4, 0x33de87de, 0x1a8c79a9, 0x33e5e360,
- 0x1a96ab0f, 0x33ed3ce1, 0x1aa0dde7, 0x33f49462,
- 0x1aab122f, 0x33fbe9e2, 0x1ab547e8, 0x34033d61,
- 0x1abf7f11, 0x340a8edf, 0x1ac9b7a9, 0x3411de5b,
- 0x1ad3f1b1, 0x34192bd5, 0x1ade2d28, 0x3420774d,
- 0x1ae86a0d, 0x3427c0c3, 0x1af2a860, 0x342f0836,
- 0x1afce821, 0x34364da6, 0x1b072950, 0x343d9112,
- 0x1b116beb, 0x3444d27b, 0x1b1baff2, 0x344c11e0,
- 0x1b25f566, 0x34534f41, 0x1b303c46, 0x345a8a9d,
- 0x1b3a8491, 0x3461c3f5, 0x1b44ce46, 0x3468fb47,
- 0x1b4f1967, 0x34703095, 0x1b5965f1, 0x347763dd,
- 0x1b63b3e5, 0x347e951f, 0x1b6e0342, 0x3485c45b,
- 0x1b785409, 0x348cf190, 0x1b82a638, 0x34941cbf,
- 0x1b8cf9cf, 0x349b45e7, 0x1b974ece, 0x34a26d08,
- 0x1ba1a534, 0x34a99221, 0x1babfd01, 0x34b0b533,
- 0x1bb65634, 0x34b7d63c, 0x1bc0b0ce, 0x34bef53d,
- 0x1bcb0cce, 0x34c61236, 0x1bd56a32, 0x34cd2d26,
- 0x1bdfc8fc, 0x34d4460c, 0x1bea292b, 0x34db5cea,
- 0x1bf48abd, 0x34e271bd, 0x1bfeedb3, 0x34e98487,
- 0x1c09520d, 0x34f09546, 0x1c13b7c9, 0x34f7a3fb,
- 0x1c1e1ee9, 0x34feb0a5, 0x1c28876a, 0x3505bb44,
- 0x1c32f14d, 0x350cc3d8, 0x1c3d5c91, 0x3513ca60,
- 0x1c47c936, 0x351acedd, 0x1c52373c, 0x3521d14d,
- 0x1c5ca6a2, 0x3528d1b1, 0x1c671768, 0x352fd008,
- 0x1c71898d, 0x3536cc52, 0x1c7bfd11, 0x353dc68f,
- 0x1c8671f3, 0x3544bebf, 0x1c90e834, 0x354bb4e1,
- 0x1c9b5fd2, 0x3552a8f4, 0x1ca5d8cd, 0x35599afa,
- 0x1cb05326, 0x35608af1, 0x1cbacedb, 0x356778d9,
- 0x1cc54bec, 0x356e64b2, 0x1ccfca59, 0x35754e7c,
- 0x1cda4a21, 0x357c3636, 0x1ce4cb44, 0x35831be0,
- 0x1cef4dc2, 0x3589ff7a, 0x1cf9d199, 0x3590e104,
- 0x1d0456ca, 0x3597c07d, 0x1d0edd55, 0x359e9de5,
- 0x1d196538, 0x35a5793c, 0x1d23ee74, 0x35ac5282,
- 0x1d2e7908, 0x35b329b5, 0x1d3904f4, 0x35b9fed7,
- 0x1d439236, 0x35c0d1e7, 0x1d4e20d0, 0x35c7a2e3,
- 0x1d58b0c0, 0x35ce71ce, 0x1d634206, 0x35d53ea5,
- 0x1d6dd4a2, 0x35dc0968, 0x1d786892, 0x35e2d219,
- 0x1d82fdd8, 0x35e998b5, 0x1d8d9472, 0x35f05d3d,
- 0x1d982c60, 0x35f71fb1, 0x1da2c5a2, 0x35fde011,
- 0x1dad6036, 0x36049e5b, 0x1db7fc1e, 0x360b5a90,
- 0x1dc29958, 0x361214b0, 0x1dcd37e4, 0x3618ccba,
- 0x1dd7d7c1, 0x361f82af, 0x1de278ef, 0x3626368d,
- 0x1ded1b6e, 0x362ce855, 0x1df7bf3e, 0x36339806,
- 0x1e02645d, 0x363a45a0, 0x1e0d0acc, 0x3640f123,
- 0x1e17b28a, 0x36479a8e, 0x1e225b96, 0x364e41e2,
- 0x1e2d05f1, 0x3654e71d, 0x1e37b199, 0x365b8a41,
- 0x1e425e8f, 0x36622b4c, 0x1e4d0cd2, 0x3668ca3e,
- 0x1e57bc62, 0x366f6717, 0x1e626d3e, 0x367601d7,
- 0x1e6d1f65, 0x367c9a7e, 0x1e77d2d8, 0x3683310b,
- 0x1e828796, 0x3689c57d, 0x1e8d3d9e, 0x369057d6,
- 0x1e97f4f1, 0x3696e814, 0x1ea2ad8d, 0x369d7637,
- 0x1ead6773, 0x36a4023f, 0x1eb822a1, 0x36aa8c2c,
- 0x1ec2df18, 0x36b113fd, 0x1ecd9cd7, 0x36b799b3,
- 0x1ed85bdd, 0x36be1d4c, 0x1ee31c2b, 0x36c49ec9,
- 0x1eedddc0, 0x36cb1e2a, 0x1ef8a09b, 0x36d19b6e,
- 0x1f0364bc, 0x36d81695, 0x1f0e2a22, 0x36de8f9e,
- 0x1f18f0ce, 0x36e5068a, 0x1f23b8be, 0x36eb7b58,
- 0x1f2e81f3, 0x36f1ee09, 0x1f394c6b, 0x36f85e9a,
- 0x1f441828, 0x36fecd0e, 0x1f4ee527, 0x37053962,
- 0x1f59b369, 0x370ba398, 0x1f6482ed, 0x37120bae,
- 0x1f6f53b3, 0x371871a5, 0x1f7a25ba, 0x371ed57c,
- 0x1f84f902, 0x37253733, 0x1f8fcd8b, 0x372b96ca,
- 0x1f9aa354, 0x3731f440, 0x1fa57a5d, 0x37384f95,
- 0x1fb052a5, 0x373ea8ca, 0x1fbb2c2c, 0x3744ffdd,
- 0x1fc606f1, 0x374b54ce, 0x1fd0e2f5, 0x3751a79e,
- 0x1fdbc036, 0x3757f84c, 0x1fe69eb4, 0x375e46d8,
- 0x1ff17e70, 0x37649341, 0x1ffc5f67, 0x376add88,
- 0x2007419b, 0x377125ac, 0x2012250a, 0x37776bac,
- 0x201d09b4, 0x377daf89, 0x2027ef99, 0x3783f143,
- 0x2032d6b8, 0x378a30d8, 0x203dbf11, 0x37906e49,
- 0x2048a8a4, 0x3796a996, 0x2053936f, 0x379ce2be,
- 0x205e7f74, 0x37a319c2, 0x20696cb0, 0x37a94ea0,
- 0x20745b24, 0x37af8159, 0x207f4acf, 0x37b5b1ec,
- 0x208a3bb2, 0x37bbe05a, 0x20952dcb, 0x37c20ca1,
- 0x20a0211a, 0x37c836c2, 0x20ab159e, 0x37ce5ebd,
- 0x20b60b58, 0x37d48490, 0x20c10247, 0x37daa83d,
- 0x20cbfa6a, 0x37e0c9c3, 0x20d6f3c1, 0x37e6e921,
- 0x20e1ee4b, 0x37ed0657, 0x20ecea09, 0x37f32165,
- 0x20f7e6f9, 0x37f93a4b, 0x2102e51c, 0x37ff5109,
- 0x210de470, 0x3805659e, 0x2118e4f6, 0x380b780a,
- 0x2123e6ad, 0x3811884d, 0x212ee995, 0x38179666,
- 0x2139edac, 0x381da256, 0x2144f2f3, 0x3823ac1d,
- 0x214ff96a, 0x3829b3b9, 0x215b0110, 0x382fb92a,
- 0x216609e3, 0x3835bc71, 0x217113e5, 0x383bbd8e,
- 0x217c1f15, 0x3841bc7f, 0x21872b72, 0x3847b946,
- 0x219238fb, 0x384db3e0, 0x219d47b1, 0x3853ac4f,
- 0x21a85793, 0x3859a292, 0x21b368a0, 0x385f96a9,
- 0x21be7ad8, 0x38658894, 0x21c98e3b, 0x386b7852,
- 0x21d4a2c8, 0x387165e3, 0x21dfb87f, 0x38775147,
- 0x21eacf5f, 0x387d3a7e, 0x21f5e768, 0x38832187,
- 0x22010099, 0x38890663, 0x220c1af3, 0x388ee910,
- 0x22173674, 0x3894c98f, 0x2222531c, 0x389aa7e0,
- 0x222d70eb, 0x38a08402, 0x22388fe1, 0x38a65df6,
- 0x2243affc, 0x38ac35ba, 0x224ed13d, 0x38b20b4f,
- 0x2259f3a3, 0x38b7deb4, 0x2265172e, 0x38bdafea,
- 0x22703bdc, 0x38c37eef, 0x227b61af, 0x38c94bc4,
- 0x228688a4, 0x38cf1669, 0x2291b0bd, 0x38d4dedd,
- 0x229cd9f8, 0x38daa520, 0x22a80456, 0x38e06932,
- 0x22b32fd4, 0x38e62b13, 0x22be5c74, 0x38ebeac2,
- 0x22c98a35, 0x38f1a840, 0x22d4b916, 0x38f7638b,
- 0x22dfe917, 0x38fd1ca4, 0x22eb1a37, 0x3902d38b,
- 0x22f64c77, 0x3908883f, 0x23017fd5, 0x390e3ac0,
- 0x230cb451, 0x3913eb0e, 0x2317e9eb, 0x39199929,
- 0x232320a2, 0x391f4510, 0x232e5876, 0x3924eec3,
- 0x23399167, 0x392a9642, 0x2344cb73, 0x39303b8e,
- 0x2350069b, 0x3935dea4, 0x235b42df, 0x393b7f86,
- 0x2366803c, 0x39411e33, 0x2371beb5, 0x3946baac,
- 0x237cfe47, 0x394c54ee, 0x23883ef2, 0x3951ecfc,
- 0x239380b6, 0x395782d3, 0x239ec393, 0x395d1675,
- 0x23aa0788, 0x3962a7e0, 0x23b54c95, 0x39683715,
- 0x23c092b9, 0x396dc414, 0x23cbd9f4, 0x39734edc,
- 0x23d72245, 0x3978d76c, 0x23e26bac, 0x397e5dc6,
- 0x23edb628, 0x3983e1e8, 0x23f901ba, 0x398963d2,
- 0x24044e60, 0x398ee385, 0x240f9c1a, 0x399460ff,
- 0x241aeae8, 0x3999dc42, 0x24263ac9, 0x399f554b,
- 0x24318bbe, 0x39a4cc1c, 0x243cddc4, 0x39aa40b4,
- 0x244830dd, 0x39afb313, 0x24538507, 0x39b52339,
- 0x245eda43, 0x39ba9125, 0x246a308f, 0x39bffcd7,
- 0x247587eb, 0x39c5664f, 0x2480e057, 0x39cacd8d,
- 0x248c39d3, 0x39d03291, 0x2497945d, 0x39d5955a,
- 0x24a2eff6, 0x39daf5e8, 0x24ae4c9d, 0x39e0543c,
- 0x24b9aa52, 0x39e5b054, 0x24c50914, 0x39eb0a31,
- 0x24d068e2, 0x39f061d2, 0x24dbc9bd, 0x39f5b737,
- 0x24e72ba4, 0x39fb0a60, 0x24f28e96, 0x3a005b4d,
- 0x24fdf294, 0x3a05a9fd, 0x2509579b, 0x3a0af671,
- 0x2514bdad, 0x3a1040a8, 0x252024c9, 0x3a1588a2,
- 0x252b8cee, 0x3a1ace5f, 0x2536f61b, 0x3a2011de,
- 0x25426051, 0x3a25531f, 0x254dcb8f, 0x3a2a9223,
- 0x255937d5, 0x3a2fcee8, 0x2564a521, 0x3a350970,
- 0x25701374, 0x3a3a41b9, 0x257b82cd, 0x3a3f77c3,
- 0x2586f32c, 0x3a44ab8e, 0x25926490, 0x3a49dd1a,
- 0x259dd6f9, 0x3a4f0c67, 0x25a94a67, 0x3a543974,
- 0x25b4bed8, 0x3a596442, 0x25c0344d, 0x3a5e8cd0,
- 0x25cbaac5, 0x3a63b31d, 0x25d72240, 0x3a68d72b,
- 0x25e29abc, 0x3a6df8f8, 0x25ee143b, 0x3a731884,
- 0x25f98ebb, 0x3a7835cf, 0x26050a3b, 0x3a7d50da,
- 0x261086bc, 0x3a8269a3, 0x261c043d, 0x3a87802a,
- 0x262782be, 0x3a8c9470, 0x2633023e, 0x3a91a674,
- 0x263e82bc, 0x3a96b636, 0x264a0438, 0x3a9bc3b6,
- 0x265586b3, 0x3aa0cef3, 0x26610a2a, 0x3aa5d7ee,
- 0x266c8e9f, 0x3aaadea6, 0x26781410, 0x3aafe31b,
- 0x26839a7c, 0x3ab4e54c, 0x268f21e5, 0x3ab9e53a,
- 0x269aaa48, 0x3abee2e5, 0x26a633a6, 0x3ac3de4c,
- 0x26b1bdff, 0x3ac8d76f, 0x26bd4951, 0x3acdce4d,
- 0x26c8d59c, 0x3ad2c2e8, 0x26d462e1, 0x3ad7b53d,
- 0x26dff11d, 0x3adca54e, 0x26eb8052, 0x3ae1931a,
- 0x26f7107e, 0x3ae67ea1, 0x2702a1a1, 0x3aeb67e3,
- 0x270e33bb, 0x3af04edf, 0x2719c6cb, 0x3af53395,
- 0x27255ad1, 0x3afa1605, 0x2730efcc, 0x3afef630,
- 0x273c85bc, 0x3b03d414, 0x27481ca1, 0x3b08afb2,
- 0x2753b479, 0x3b0d8909, 0x275f4d45, 0x3b126019,
- 0x276ae704, 0x3b1734e2, 0x277681b6, 0x3b1c0764,
- 0x27821d59, 0x3b20d79e, 0x278db9ef, 0x3b25a591,
- 0x27995776, 0x3b2a713d, 0x27a4f5ed, 0x3b2f3aa0,
- 0x27b09555, 0x3b3401bb, 0x27bc35ad, 0x3b38c68e,
- 0x27c7d6f4, 0x3b3d8918, 0x27d3792b, 0x3b42495a,
- 0x27df1c50, 0x3b470753, 0x27eac063, 0x3b4bc303,
- 0x27f66564, 0x3b507c69, 0x28020b52, 0x3b553386,
- 0x280db22d, 0x3b59e85a, 0x281959f4, 0x3b5e9ae4,
- 0x282502a7, 0x3b634b23, 0x2830ac45, 0x3b67f919,
- 0x283c56cf, 0x3b6ca4c4, 0x28480243, 0x3b714e25,
- 0x2853aea1, 0x3b75f53c, 0x285f5be9, 0x3b7a9a07,
- 0x286b0a1a, 0x3b7f3c87, 0x2876b934, 0x3b83dcbc,
- 0x28826936, 0x3b887aa6, 0x288e1a20, 0x3b8d1644,
- 0x2899cbf1, 0x3b91af97, 0x28a57ea9, 0x3b96469d,
- 0x28b13248, 0x3b9adb57, 0x28bce6cd, 0x3b9f6dc5,
- 0x28c89c37, 0x3ba3fde7, 0x28d45286, 0x3ba88bbc,
- 0x28e009ba, 0x3bad1744, 0x28ebc1d3, 0x3bb1a080,
- 0x28f77acf, 0x3bb6276e, 0x290334af, 0x3bbaac0e,
- 0x290eef71, 0x3bbf2e62, 0x291aab16, 0x3bc3ae67,
- 0x2926679c, 0x3bc82c1f, 0x29322505, 0x3bcca789,
- 0x293de34e, 0x3bd120a4, 0x2949a278, 0x3bd59771,
- 0x29556282, 0x3bda0bf0, 0x2961236c, 0x3bde7e20,
- 0x296ce535, 0x3be2ee01, 0x2978a7dd, 0x3be75b93,
- 0x29846b63, 0x3bebc6d5, 0x29902fc7, 0x3bf02fc9,
- 0x299bf509, 0x3bf4966c, 0x29a7bb28, 0x3bf8fac0,
- 0x29b38223, 0x3bfd5cc4, 0x29bf49fa, 0x3c01bc78,
- 0x29cb12ad, 0x3c0619dc, 0x29d6dc3b, 0x3c0a74f0,
- 0x29e2a6a3, 0x3c0ecdb2, 0x29ee71e6, 0x3c132424,
- 0x29fa3e03, 0x3c177845, 0x2a060af9, 0x3c1bca16,
- 0x2a11d8c8, 0x3c201994, 0x2a1da770, 0x3c2466c2,
- 0x2a2976ef, 0x3c28b19e, 0x2a354746, 0x3c2cfa28,
- 0x2a411874, 0x3c314060, 0x2a4cea79, 0x3c358446,
- 0x2a58bd54, 0x3c39c5da, 0x2a649105, 0x3c3e051b,
- 0x2a70658a, 0x3c42420a, 0x2a7c3ae5, 0x3c467ca6,
- 0x2a881114, 0x3c4ab4ef, 0x2a93e817, 0x3c4eeae5,
- 0x2a9fbfed, 0x3c531e88, 0x2aab9896, 0x3c574fd8,
- 0x2ab77212, 0x3c5b7ed4, 0x2ac34c60, 0x3c5fab7c,
- 0x2acf277f, 0x3c63d5d1, 0x2adb0370, 0x3c67fdd1,
- 0x2ae6e031, 0x3c6c237e, 0x2af2bdc3, 0x3c7046d6,
- 0x2afe9c24, 0x3c7467d9, 0x2b0a7b54, 0x3c788688,
- 0x2b165b54, 0x3c7ca2e2, 0x2b223c22, 0x3c80bce7,
- 0x2b2e1dbe, 0x3c84d496, 0x2b3a0027, 0x3c88e9f1,
- 0x2b45e35d, 0x3c8cfcf6, 0x2b51c760, 0x3c910da5,
- 0x2b5dac2f, 0x3c951bff, 0x2b6991ca, 0x3c992803,
- 0x2b75782f, 0x3c9d31b0, 0x2b815f60, 0x3ca13908,
- 0x2b8d475b, 0x3ca53e09, 0x2b99301f, 0x3ca940b3,
- 0x2ba519ad, 0x3cad4107, 0x2bb10404, 0x3cb13f04,
- 0x2bbcef23, 0x3cb53aaa, 0x2bc8db0b, 0x3cb933f9,
- 0x2bd4c7ba, 0x3cbd2af0, 0x2be0b52f, 0x3cc11f90,
- 0x2beca36c, 0x3cc511d9, 0x2bf8926f, 0x3cc901c9,
- 0x2c048237, 0x3cccef62, 0x2c1072c4, 0x3cd0daa2,
- 0x2c1c6417, 0x3cd4c38b, 0x2c28562d, 0x3cd8aa1b,
- 0x2c344908, 0x3cdc8e52, 0x2c403ca5, 0x3ce07031,
- 0x2c4c3106, 0x3ce44fb7, 0x2c582629, 0x3ce82ce4,
- 0x2c641c0e, 0x3cec07b8, 0x2c7012b5, 0x3cefe032,
- 0x2c7c0a1d, 0x3cf3b653, 0x2c880245, 0x3cf78a1b,
- 0x2c93fb2e, 0x3cfb5b89, 0x2c9ff4d6, 0x3cff2a9d,
- 0x2cabef3d, 0x3d02f757, 0x2cb7ea63, 0x3d06c1b6,
- 0x2cc3e648, 0x3d0a89bc, 0x2ccfe2ea, 0x3d0e4f67,
- 0x2cdbe04a, 0x3d1212b7, 0x2ce7de66, 0x3d15d3ad,
- 0x2cf3dd3f, 0x3d199248, 0x2cffdcd4, 0x3d1d4e88,
- 0x2d0bdd25, 0x3d21086c, 0x2d17de31, 0x3d24bff6,
- 0x2d23dff7, 0x3d287523, 0x2d2fe277, 0x3d2c27f6,
- 0x2d3be5b1, 0x3d2fd86c, 0x2d47e9a5, 0x3d338687,
- 0x2d53ee51, 0x3d373245, 0x2d5ff3b5, 0x3d3adba7,
- 0x2d6bf9d1, 0x3d3e82ae, 0x2d7800a5, 0x3d422757,
- 0x2d84082f, 0x3d45c9a4, 0x2d901070, 0x3d496994,
- 0x2d9c1967, 0x3d4d0728, 0x2da82313, 0x3d50a25e,
- 0x2db42d74, 0x3d543b37, 0x2dc0388a, 0x3d57d1b3,
- 0x2dcc4454, 0x3d5b65d2, 0x2dd850d2, 0x3d5ef793,
- 0x2de45e03, 0x3d6286f6, 0x2df06be6, 0x3d6613fb,
- 0x2dfc7a7c, 0x3d699ea3, 0x2e0889c4, 0x3d6d26ec,
- 0x2e1499bd, 0x3d70acd7, 0x2e20aa67, 0x3d743064,
- 0x2e2cbbc1, 0x3d77b192, 0x2e38cdcb, 0x3d7b3061,
- 0x2e44e084, 0x3d7eacd2, 0x2e50f3ed, 0x3d8226e4,
- 0x2e5d0804, 0x3d859e96, 0x2e691cc9, 0x3d8913ea,
- 0x2e75323c, 0x3d8c86de, 0x2e81485c, 0x3d8ff772,
- 0x2e8d5f29, 0x3d9365a8, 0x2e9976a1, 0x3d96d17d,
- 0x2ea58ec6, 0x3d9a3af2, 0x2eb1a796, 0x3d9da208,
- 0x2ebdc110, 0x3da106bd, 0x2ec9db35, 0x3da46912,
- 0x2ed5f604, 0x3da7c907, 0x2ee2117c, 0x3dab269b,
- 0x2eee2d9d, 0x3dae81cf, 0x2efa4a67, 0x3db1daa2,
- 0x2f0667d9, 0x3db53113, 0x2f1285f2, 0x3db88524,
- 0x2f1ea4b2, 0x3dbbd6d4, 0x2f2ac419, 0x3dbf2622,
- 0x2f36e426, 0x3dc2730f, 0x2f4304d8, 0x3dc5bd9b,
- 0x2f4f2630, 0x3dc905c5, 0x2f5b482d, 0x3dcc4b8d,
- 0x2f676ace, 0x3dcf8ef3, 0x2f738e12, 0x3dd2cff7,
- 0x2f7fb1fa, 0x3dd60e99, 0x2f8bd685, 0x3dd94ad8,
- 0x2f97fbb2, 0x3ddc84b5, 0x2fa42181, 0x3ddfbc30,
- 0x2fb047f2, 0x3de2f148, 0x2fbc6f03, 0x3de623fd,
- 0x2fc896b5, 0x3de9544f, 0x2fd4bf08, 0x3dec823e,
- 0x2fe0e7f9, 0x3defadca, 0x2fed118a, 0x3df2d6f3,
- 0x2ff93bba, 0x3df5fdb8, 0x30056687, 0x3df9221a,
- 0x301191f3, 0x3dfc4418, 0x301dbdfb, 0x3dff63b2,
- 0x3029eaa1, 0x3e0280e9, 0x303617e2, 0x3e059bbb,
- 0x304245c0, 0x3e08b42a, 0x304e7438, 0x3e0bca34,
- 0x305aa34c, 0x3e0eddd9, 0x3066d2fa, 0x3e11ef1b,
- 0x30730342, 0x3e14fdf7, 0x307f3424, 0x3e180a6f,
- 0x308b659f, 0x3e1b1482, 0x309797b2, 0x3e1e1c30,
- 0x30a3ca5d, 0x3e212179, 0x30affda0, 0x3e24245d,
- 0x30bc317a, 0x3e2724db, 0x30c865ea, 0x3e2a22f4,
- 0x30d49af1, 0x3e2d1ea8, 0x30e0d08d, 0x3e3017f6,
- 0x30ed06bf, 0x3e330ede, 0x30f93d86, 0x3e360360,
- 0x310574e0, 0x3e38f57c, 0x3111accf, 0x3e3be532,
- 0x311de551, 0x3e3ed282, 0x312a1e66, 0x3e41bd6c,
- 0x3136580d, 0x3e44a5ef, 0x31429247, 0x3e478c0b,
- 0x314ecd11, 0x3e4a6fc1, 0x315b086d, 0x3e4d5110,
- 0x31674459, 0x3e502ff9, 0x317380d6, 0x3e530c7a,
- 0x317fbde2, 0x3e55e694, 0x318bfb7d, 0x3e58be47,
- 0x319839a6, 0x3e5b9392, 0x31a4785e, 0x3e5e6676,
- 0x31b0b7a4, 0x3e6136f3, 0x31bcf777, 0x3e640507,
- 0x31c937d6, 0x3e66d0b4, 0x31d578c2, 0x3e6999fa,
- 0x31e1ba3a, 0x3e6c60d7, 0x31edfc3d, 0x3e6f254c,
- 0x31fa3ecb, 0x3e71e759, 0x320681e3, 0x3e74a6fd,
- 0x3212c585, 0x3e77643a, 0x321f09b1, 0x3e7a1f0d,
- 0x322b4e66, 0x3e7cd778, 0x323793a3, 0x3e7f8d7b,
- 0x3243d968, 0x3e824114, 0x32501fb5, 0x3e84f245,
- 0x325c6688, 0x3e87a10c, 0x3268ade3, 0x3e8a4d6a,
- 0x3274f5c3, 0x3e8cf75f, 0x32813e2a, 0x3e8f9eeb,
- 0x328d8715, 0x3e92440d, 0x3299d085, 0x3e94e6c6,
- 0x32a61a7a, 0x3e978715, 0x32b264f2, 0x3e9a24fb,
- 0x32beafed, 0x3e9cc076, 0x32cafb6b, 0x3e9f5988,
- 0x32d7476c, 0x3ea1f02f, 0x32e393ef, 0x3ea4846c,
- 0x32efe0f2, 0x3ea7163f, 0x32fc2e77, 0x3ea9a5a8,
- 0x33087c7d, 0x3eac32a6, 0x3314cb02, 0x3eaebd3a,
- 0x33211a07, 0x3eb14563, 0x332d698a, 0x3eb3cb21,
- 0x3339b98d, 0x3eb64e75, 0x33460a0d, 0x3eb8cf5d,
- 0x33525b0b, 0x3ebb4ddb, 0x335eac86, 0x3ebdc9ed,
- 0x336afe7e, 0x3ec04394, 0x337750f2, 0x3ec2bad0,
- 0x3383a3e2, 0x3ec52fa0, 0x338ff74d, 0x3ec7a205,
- 0x339c4b32, 0x3eca11fe, 0x33a89f92, 0x3ecc7f8b,
- 0x33b4f46c, 0x3eceeaad, 0x33c149bf, 0x3ed15363,
- 0x33cd9f8b, 0x3ed3b9ad, 0x33d9f5cf, 0x3ed61d8a,
- 0x33e64c8c, 0x3ed87efc, 0x33f2a3bf, 0x3edade01,
- 0x33fefb6a, 0x3edd3a9a, 0x340b538b, 0x3edf94c7,
- 0x3417ac22, 0x3ee1ec87, 0x3424052f, 0x3ee441da,
- 0x34305eb0, 0x3ee694c1, 0x343cb8a7, 0x3ee8e53a,
- 0x34491311, 0x3eeb3347, 0x34556def, 0x3eed7ee7,
- 0x3461c940, 0x3eefc81a, 0x346e2504, 0x3ef20ee0,
- 0x347a8139, 0x3ef45338, 0x3486dde1, 0x3ef69523,
- 0x34933afa, 0x3ef8d4a1, 0x349f9884, 0x3efb11b1,
- 0x34abf67e, 0x3efd4c54, 0x34b854e7, 0x3eff8489,
- 0x34c4b3c0, 0x3f01ba50, 0x34d11308, 0x3f03eda9,
- 0x34dd72be, 0x3f061e95, 0x34e9d2e3, 0x3f084d12,
- 0x34f63374, 0x3f0a7921, 0x35029473, 0x3f0ca2c2,
- 0x350ef5de, 0x3f0ec9f5, 0x351b57b5, 0x3f10eeb9,
- 0x3527b9f7, 0x3f13110f, 0x35341ca5, 0x3f1530f7,
- 0x35407fbd, 0x3f174e70, 0x354ce33f, 0x3f19697a,
- 0x3559472b, 0x3f1b8215, 0x3565ab80, 0x3f1d9842,
- 0x3572103d, 0x3f1fabff, 0x357e7563, 0x3f21bd4e,
- 0x358adaf0, 0x3f23cc2e, 0x359740e5, 0x3f25d89e,
- 0x35a3a740, 0x3f27e29f, 0x35b00e02, 0x3f29ea31,
- 0x35bc7529, 0x3f2bef53, 0x35c8dcb6, 0x3f2df206,
- 0x35d544a7, 0x3f2ff24a, 0x35e1acfd, 0x3f31f01d,
- 0x35ee15b7, 0x3f33eb81, 0x35fa7ed4, 0x3f35e476,
- 0x3606e854, 0x3f37dafa, 0x36135237, 0x3f39cf0e,
- 0x361fbc7b, 0x3f3bc0b3, 0x362c2721, 0x3f3dafe7,
- 0x36389228, 0x3f3f9cab, 0x3644fd8f, 0x3f4186ff,
- 0x36516956, 0x3f436ee3, 0x365dd57d, 0x3f455456,
- 0x366a4203, 0x3f473759, 0x3676aee8, 0x3f4917eb,
- 0x36831c2b, 0x3f4af60d, 0x368f89cb, 0x3f4cd1be,
- 0x369bf7c9, 0x3f4eaafe, 0x36a86623, 0x3f5081cd,
- 0x36b4d4d9, 0x3f52562c, 0x36c143ec, 0x3f54281a,
- 0x36cdb359, 0x3f55f796, 0x36da2321, 0x3f57c4a2,
- 0x36e69344, 0x3f598f3c, 0x36f303c0, 0x3f5b5765,
- 0x36ff7496, 0x3f5d1d1d, 0x370be5c4, 0x3f5ee063,
- 0x3718574b, 0x3f60a138, 0x3724c92a, 0x3f625f9b,
- 0x37313b60, 0x3f641b8d, 0x373daded, 0x3f65d50d,
- 0x374a20d0, 0x3f678c1c, 0x3756940a, 0x3f6940b8,
- 0x37630799, 0x3f6af2e3, 0x376f7b7d, 0x3f6ca29c,
- 0x377befb5, 0x3f6e4fe3, 0x37886442, 0x3f6ffab8,
- 0x3794d922, 0x3f71a31b, 0x37a14e55, 0x3f73490b,
- 0x37adc3db, 0x3f74ec8a, 0x37ba39b3, 0x3f768d96,
- 0x37c6afdc, 0x3f782c30, 0x37d32657, 0x3f79c857,
- 0x37df9d22, 0x3f7b620c, 0x37ec143e, 0x3f7cf94e,
- 0x37f88ba9, 0x3f7e8e1e, 0x38050364, 0x3f80207b,
- 0x38117b6d, 0x3f81b065, 0x381df3c5, 0x3f833ddd,
- 0x382a6c6a, 0x3f84c8e2, 0x3836e55d, 0x3f865174,
- 0x38435e9d, 0x3f87d792, 0x384fd829, 0x3f895b3e,
- 0x385c5201, 0x3f8adc77, 0x3868cc24, 0x3f8c5b3d,
- 0x38754692, 0x3f8dd78f, 0x3881c14b, 0x3f8f516e,
- 0x388e3c4d, 0x3f90c8da, 0x389ab799, 0x3f923dd2,
- 0x38a7332e, 0x3f93b058, 0x38b3af0c, 0x3f952069,
- 0x38c02b31, 0x3f968e07, 0x38cca79e, 0x3f97f932,
- 0x38d92452, 0x3f9961e8, 0x38e5a14d, 0x3f9ac82c,
- 0x38f21e8e, 0x3f9c2bfb, 0x38fe9c15, 0x3f9d8d56,
- 0x390b19e0, 0x3f9eec3e, 0x391797f0, 0x3fa048b2,
- 0x39241645, 0x3fa1a2b2, 0x393094dd, 0x3fa2fa3d,
- 0x393d13b8, 0x3fa44f55, 0x394992d7, 0x3fa5a1f9,
- 0x39561237, 0x3fa6f228, 0x396291d9, 0x3fa83fe3,
- 0x396f11bc, 0x3fa98b2a, 0x397b91e1, 0x3faad3fd,
- 0x39881245, 0x3fac1a5b, 0x399492ea, 0x3fad5e45,
- 0x39a113cd, 0x3fae9fbb, 0x39ad94f0, 0x3fafdebb,
- 0x39ba1651, 0x3fb11b48, 0x39c697f0, 0x3fb2555f,
- 0x39d319cc, 0x3fb38d02, 0x39df9be6, 0x3fb4c231,
- 0x39ec1e3b, 0x3fb5f4ea, 0x39f8a0cd, 0x3fb7252f,
- 0x3a05239a, 0x3fb852ff, 0x3a11a6a3, 0x3fb97e5a,
- 0x3a1e29e5, 0x3fbaa740, 0x3a2aad62, 0x3fbbcdb1,
- 0x3a373119, 0x3fbcf1ad, 0x3a43b508, 0x3fbe1334,
- 0x3a503930, 0x3fbf3246, 0x3a5cbd91, 0x3fc04ee3,
- 0x3a694229, 0x3fc1690a, 0x3a75c6f8, 0x3fc280bc,
- 0x3a824bfd, 0x3fc395f9, 0x3a8ed139, 0x3fc4a8c1,
- 0x3a9b56ab, 0x3fc5b913, 0x3aa7dc52, 0x3fc6c6f0,
- 0x3ab4622d, 0x3fc7d258, 0x3ac0e83d, 0x3fc8db4a,
- 0x3acd6e81, 0x3fc9e1c6, 0x3ad9f4f8, 0x3fcae5cd,
- 0x3ae67ba2, 0x3fcbe75e, 0x3af3027e, 0x3fcce67a,
- 0x3aff898c, 0x3fcde320, 0x3b0c10cb, 0x3fcedd50,
- 0x3b18983b, 0x3fcfd50b, 0x3b251fdc, 0x3fd0ca4f,
- 0x3b31a7ac, 0x3fd1bd1e, 0x3b3e2fac, 0x3fd2ad77,
- 0x3b4ab7db, 0x3fd39b5a, 0x3b574039, 0x3fd486c7,
- 0x3b63c8c4, 0x3fd56fbe, 0x3b70517d, 0x3fd6563f,
- 0x3b7cda63, 0x3fd73a4a, 0x3b896375, 0x3fd81bdf,
- 0x3b95ecb4, 0x3fd8fafe, 0x3ba2761e, 0x3fd9d7a7,
- 0x3baeffb3, 0x3fdab1d9, 0x3bbb8973, 0x3fdb8996,
- 0x3bc8135c, 0x3fdc5edc, 0x3bd49d70, 0x3fdd31ac,
- 0x3be127ac, 0x3fde0205, 0x3bedb212, 0x3fdecfe8,
- 0x3bfa3c9f, 0x3fdf9b55, 0x3c06c754, 0x3fe0644b,
- 0x3c135231, 0x3fe12acb, 0x3c1fdd34, 0x3fe1eed5,
- 0x3c2c685d, 0x3fe2b067, 0x3c38f3ac, 0x3fe36f84,
- 0x3c457f21, 0x3fe42c2a, 0x3c520aba, 0x3fe4e659,
- 0x3c5e9678, 0x3fe59e12, 0x3c6b2259, 0x3fe65354,
- 0x3c77ae5e, 0x3fe7061f, 0x3c843a85, 0x3fe7b674,
- 0x3c90c6cf, 0x3fe86452, 0x3c9d533b, 0x3fe90fb9,
- 0x3ca9dfc8, 0x3fe9b8a9, 0x3cb66c77, 0x3fea5f23,
- 0x3cc2f945, 0x3feb0326, 0x3ccf8634, 0x3feba4b2,
- 0x3cdc1342, 0x3fec43c7, 0x3ce8a06f, 0x3fece065,
- 0x3cf52dbb, 0x3fed7a8c, 0x3d01bb24, 0x3fee123d,
- 0x3d0e48ab, 0x3feea776, 0x3d1ad650, 0x3fef3a39,
- 0x3d276410, 0x3fefca84, 0x3d33f1ed, 0x3ff05858,
- 0x3d407fe6, 0x3ff0e3b6, 0x3d4d0df9, 0x3ff16c9c,
- 0x3d599c28, 0x3ff1f30b, 0x3d662a70, 0x3ff27703,
- 0x3d72b8d2, 0x3ff2f884, 0x3d7f474d, 0x3ff3778e,
- 0x3d8bd5e1, 0x3ff3f420, 0x3d98648d, 0x3ff46e3c,
- 0x3da4f351, 0x3ff4e5e0, 0x3db1822c, 0x3ff55b0d,
- 0x3dbe111e, 0x3ff5cdc3, 0x3dcaa027, 0x3ff63e01,
- 0x3dd72f45, 0x3ff6abc8, 0x3de3be78, 0x3ff71718,
- 0x3df04dc0, 0x3ff77ff1, 0x3dfcdd1d, 0x3ff7e652,
- 0x3e096c8d, 0x3ff84a3c, 0x3e15fc11, 0x3ff8abae,
- 0x3e228ba7, 0x3ff90aaa, 0x3e2f1b50, 0x3ff9672d,
- 0x3e3bab0b, 0x3ff9c13a, 0x3e483ad8, 0x3ffa18cf,
- 0x3e54cab5, 0x3ffa6dec, 0x3e615aa3, 0x3ffac092,
- 0x3e6deaa1, 0x3ffb10c1, 0x3e7a7aae, 0x3ffb5e78,
- 0x3e870aca, 0x3ffba9b8, 0x3e939af5, 0x3ffbf280,
- 0x3ea02b2e, 0x3ffc38d1, 0x3eacbb74, 0x3ffc7caa,
- 0x3eb94bc8, 0x3ffcbe0c, 0x3ec5dc28, 0x3ffcfcf6,
- 0x3ed26c94, 0x3ffd3969, 0x3edefd0c, 0x3ffd7364,
- 0x3eeb8d8f, 0x3ffdaae7, 0x3ef81e1d, 0x3ffddff3,
- 0x3f04aeb5, 0x3ffe1288, 0x3f113f56, 0x3ffe42a4,
- 0x3f1dd001, 0x3ffe704a, 0x3f2a60b4, 0x3ffe9b77,
- 0x3f36f170, 0x3ffec42d, 0x3f438234, 0x3ffeea6c,
- 0x3f5012fe, 0x3fff0e32, 0x3f5ca3d0, 0x3fff2f82,
- 0x3f6934a8, 0x3fff4e59, 0x3f75c585, 0x3fff6ab9,
- 0x3f825668, 0x3fff84a1, 0x3f8ee750, 0x3fff9c12,
- 0x3f9b783c, 0x3fffb10b, 0x3fa8092c, 0x3fffc38c,
- 0x3fb49a1f, 0x3fffd396, 0x3fc12b16, 0x3fffe128,
- 0x3fcdbc0f, 0x3fffec43, 0x3fda4d09, 0x3ffff4e6,
- 0x3fe6de05, 0x3ffffb11, 0x3ff36f02, 0x3ffffec4,
+ 0x40000000, 0xc0000000, 0x3ff36f02, 0xc000013c,
+ 0x3fe6de05, 0xc00004ef, 0x3fda4d09, 0xc0000b1a,
+ 0x3fcdbc0f, 0xc00013bd, 0x3fc12b16, 0xc0001ed8,
+ 0x3fb49a1f, 0xc0002c6a, 0x3fa8092c, 0xc0003c74,
+ 0x3f9b783c, 0xc0004ef5, 0x3f8ee750, 0xc00063ee,
+ 0x3f825668, 0xc0007b5f, 0x3f75c585, 0xc0009547,
+ 0x3f6934a8, 0xc000b1a7, 0x3f5ca3d0, 0xc000d07e,
+ 0x3f5012fe, 0xc000f1ce, 0x3f438234, 0xc0011594,
+ 0x3f36f170, 0xc0013bd3, 0x3f2a60b4, 0xc0016489,
+ 0x3f1dd001, 0xc0018fb6, 0x3f113f56, 0xc001bd5c,
+ 0x3f04aeb5, 0xc001ed78, 0x3ef81e1d, 0xc002200d,
+ 0x3eeb8d8f, 0xc0025519, 0x3edefd0c, 0xc0028c9c,
+ 0x3ed26c94, 0xc002c697, 0x3ec5dc28, 0xc003030a,
+ 0x3eb94bc8, 0xc00341f4, 0x3eacbb74, 0xc0038356,
+ 0x3ea02b2e, 0xc003c72f, 0x3e939af5, 0xc0040d80,
+ 0x3e870aca, 0xc0045648, 0x3e7a7aae, 0xc004a188,
+ 0x3e6deaa1, 0xc004ef3f, 0x3e615aa3, 0xc0053f6e,
+ 0x3e54cab5, 0xc0059214, 0x3e483ad8, 0xc005e731,
+ 0x3e3bab0b, 0xc0063ec6, 0x3e2f1b50, 0xc00698d3,
+ 0x3e228ba7, 0xc006f556, 0x3e15fc11, 0xc0075452,
+ 0x3e096c8d, 0xc007b5c4, 0x3dfcdd1d, 0xc00819ae,
+ 0x3df04dc0, 0xc008800f, 0x3de3be78, 0xc008e8e8,
+ 0x3dd72f45, 0xc0095438, 0x3dcaa027, 0xc009c1ff,
+ 0x3dbe111e, 0xc00a323d, 0x3db1822c, 0xc00aa4f3,
+ 0x3da4f351, 0xc00b1a20, 0x3d98648d, 0xc00b91c4,
+ 0x3d8bd5e1, 0xc00c0be0, 0x3d7f474d, 0xc00c8872,
+ 0x3d72b8d2, 0xc00d077c, 0x3d662a70, 0xc00d88fd,
+ 0x3d599c28, 0xc00e0cf5, 0x3d4d0df9, 0xc00e9364,
+ 0x3d407fe6, 0xc00f1c4a, 0x3d33f1ed, 0xc00fa7a8,
+ 0x3d276410, 0xc010357c, 0x3d1ad650, 0xc010c5c7,
+ 0x3d0e48ab, 0xc011588a, 0x3d01bb24, 0xc011edc3,
+ 0x3cf52dbb, 0xc0128574, 0x3ce8a06f, 0xc0131f9b,
+ 0x3cdc1342, 0xc013bc39, 0x3ccf8634, 0xc0145b4e,
+ 0x3cc2f945, 0xc014fcda, 0x3cb66c77, 0xc015a0dd,
+ 0x3ca9dfc8, 0xc0164757, 0x3c9d533b, 0xc016f047,
+ 0x3c90c6cf, 0xc0179bae, 0x3c843a85, 0xc018498c,
+ 0x3c77ae5e, 0xc018f9e1, 0x3c6b2259, 0xc019acac,
+ 0x3c5e9678, 0xc01a61ee, 0x3c520aba, 0xc01b19a7,
+ 0x3c457f21, 0xc01bd3d6, 0x3c38f3ac, 0xc01c907c,
+ 0x3c2c685d, 0xc01d4f99, 0x3c1fdd34, 0xc01e112b,
+ 0x3c135231, 0xc01ed535, 0x3c06c754, 0xc01f9bb5,
+ 0x3bfa3c9f, 0xc02064ab, 0x3bedb212, 0xc0213018,
+ 0x3be127ac, 0xc021fdfb, 0x3bd49d70, 0xc022ce54,
+ 0x3bc8135c, 0xc023a124, 0x3bbb8973, 0xc024766a,
+ 0x3baeffb3, 0xc0254e27, 0x3ba2761e, 0xc0262859,
+ 0x3b95ecb4, 0xc0270502, 0x3b896375, 0xc027e421,
+ 0x3b7cda63, 0xc028c5b6, 0x3b70517d, 0xc029a9c1,
+ 0x3b63c8c4, 0xc02a9042, 0x3b574039, 0xc02b7939,
+ 0x3b4ab7db, 0xc02c64a6, 0x3b3e2fac, 0xc02d5289,
+ 0x3b31a7ac, 0xc02e42e2, 0x3b251fdc, 0xc02f35b1,
+ 0x3b18983b, 0xc0302af5, 0x3b0c10cb, 0xc03122b0,
+ 0x3aff898c, 0xc0321ce0, 0x3af3027e, 0xc0331986,
+ 0x3ae67ba2, 0xc03418a2, 0x3ad9f4f8, 0xc0351a33,
+ 0x3acd6e81, 0xc0361e3a, 0x3ac0e83d, 0xc03724b6,
+ 0x3ab4622d, 0xc0382da8, 0x3aa7dc52, 0xc0393910,
+ 0x3a9b56ab, 0xc03a46ed, 0x3a8ed139, 0xc03b573f,
+ 0x3a824bfd, 0xc03c6a07, 0x3a75c6f8, 0xc03d7f44,
+ 0x3a694229, 0xc03e96f6, 0x3a5cbd91, 0xc03fb11d,
+ 0x3a503930, 0xc040cdba, 0x3a43b508, 0xc041eccc,
+ 0x3a373119, 0xc0430e53, 0x3a2aad62, 0xc044324f,
+ 0x3a1e29e5, 0xc04558c0, 0x3a11a6a3, 0xc04681a6,
+ 0x3a05239a, 0xc047ad01, 0x39f8a0cd, 0xc048dad1,
+ 0x39ec1e3b, 0xc04a0b16, 0x39df9be6, 0xc04b3dcf,
+ 0x39d319cc, 0xc04c72fe, 0x39c697f0, 0xc04daaa1,
+ 0x39ba1651, 0xc04ee4b8, 0x39ad94f0, 0xc0502145,
+ 0x39a113cd, 0xc0516045, 0x399492ea, 0xc052a1bb,
+ 0x39881245, 0xc053e5a5, 0x397b91e1, 0xc0552c03,
+ 0x396f11bc, 0xc05674d6, 0x396291d9, 0xc057c01d,
+ 0x39561237, 0xc0590dd8, 0x394992d7, 0xc05a5e07,
+ 0x393d13b8, 0xc05bb0ab, 0x393094dd, 0xc05d05c3,
+ 0x39241645, 0xc05e5d4e, 0x391797f0, 0xc05fb74e,
+ 0x390b19e0, 0xc06113c2, 0x38fe9c15, 0xc06272aa,
+ 0x38f21e8e, 0xc063d405, 0x38e5a14d, 0xc06537d4,
+ 0x38d92452, 0xc0669e18, 0x38cca79e, 0xc06806ce,
+ 0x38c02b31, 0xc06971f9, 0x38b3af0c, 0xc06adf97,
+ 0x38a7332e, 0xc06c4fa8, 0x389ab799, 0xc06dc22e,
+ 0x388e3c4d, 0xc06f3726, 0x3881c14b, 0xc070ae92,
+ 0x38754692, 0xc0722871, 0x3868cc24, 0xc073a4c3,
+ 0x385c5201, 0xc0752389, 0x384fd829, 0xc076a4c2,
+ 0x38435e9d, 0xc078286e, 0x3836e55d, 0xc079ae8c,
+ 0x382a6c6a, 0xc07b371e, 0x381df3c5, 0xc07cc223,
+ 0x38117b6d, 0xc07e4f9b, 0x38050364, 0xc07fdf85,
+ 0x37f88ba9, 0xc08171e2, 0x37ec143e, 0xc08306b2,
+ 0x37df9d22, 0xc0849df4, 0x37d32657, 0xc08637a9,
+ 0x37c6afdc, 0xc087d3d0, 0x37ba39b3, 0xc089726a,
+ 0x37adc3db, 0xc08b1376, 0x37a14e55, 0xc08cb6f5,
+ 0x3794d922, 0xc08e5ce5, 0x37886442, 0xc0900548,
+ 0x377befb5, 0xc091b01d, 0x376f7b7d, 0xc0935d64,
+ 0x37630799, 0xc0950d1d, 0x3756940a, 0xc096bf48,
+ 0x374a20d0, 0xc09873e4, 0x373daded, 0xc09a2af3,
+ 0x37313b60, 0xc09be473, 0x3724c92a, 0xc09da065,
+ 0x3718574b, 0xc09f5ec8, 0x370be5c4, 0xc0a11f9d,
+ 0x36ff7496, 0xc0a2e2e3, 0x36f303c0, 0xc0a4a89b,
+ 0x36e69344, 0xc0a670c4, 0x36da2321, 0xc0a83b5e,
+ 0x36cdb359, 0xc0aa086a, 0x36c143ec, 0xc0abd7e6,
+ 0x36b4d4d9, 0xc0ada9d4, 0x36a86623, 0xc0af7e33,
+ 0x369bf7c9, 0xc0b15502, 0x368f89cb, 0xc0b32e42,
+ 0x36831c2b, 0xc0b509f3, 0x3676aee8, 0xc0b6e815,
+ 0x366a4203, 0xc0b8c8a7, 0x365dd57d, 0xc0baabaa,
+ 0x36516956, 0xc0bc911d, 0x3644fd8f, 0xc0be7901,
+ 0x36389228, 0xc0c06355, 0x362c2721, 0xc0c25019,
+ 0x361fbc7b, 0xc0c43f4d, 0x36135237, 0xc0c630f2,
+ 0x3606e854, 0xc0c82506, 0x35fa7ed4, 0xc0ca1b8a,
+ 0x35ee15b7, 0xc0cc147f, 0x35e1acfd, 0xc0ce0fe3,
+ 0x35d544a7, 0xc0d00db6, 0x35c8dcb6, 0xc0d20dfa,
+ 0x35bc7529, 0xc0d410ad, 0x35b00e02, 0xc0d615cf,
+ 0x35a3a740, 0xc0d81d61, 0x359740e5, 0xc0da2762,
+ 0x358adaf0, 0xc0dc33d2, 0x357e7563, 0xc0de42b2,
+ 0x3572103d, 0xc0e05401, 0x3565ab80, 0xc0e267be,
+ 0x3559472b, 0xc0e47deb, 0x354ce33f, 0xc0e69686,
+ 0x35407fbd, 0xc0e8b190, 0x35341ca5, 0xc0eacf09,
+ 0x3527b9f7, 0xc0eceef1, 0x351b57b5, 0xc0ef1147,
+ 0x350ef5de, 0xc0f1360b, 0x35029473, 0xc0f35d3e,
+ 0x34f63374, 0xc0f586df, 0x34e9d2e3, 0xc0f7b2ee,
+ 0x34dd72be, 0xc0f9e16b, 0x34d11308, 0xc0fc1257,
+ 0x34c4b3c0, 0xc0fe45b0, 0x34b854e7, 0xc1007b77,
+ 0x34abf67e, 0xc102b3ac, 0x349f9884, 0xc104ee4f,
+ 0x34933afa, 0xc1072b5f, 0x3486dde1, 0xc1096add,
+ 0x347a8139, 0xc10bacc8, 0x346e2504, 0xc10df120,
+ 0x3461c940, 0xc11037e6, 0x34556def, 0xc1128119,
+ 0x34491311, 0xc114ccb9, 0x343cb8a7, 0xc1171ac6,
+ 0x34305eb0, 0xc1196b3f, 0x3424052f, 0xc11bbe26,
+ 0x3417ac22, 0xc11e1379, 0x340b538b, 0xc1206b39,
+ 0x33fefb6a, 0xc122c566, 0x33f2a3bf, 0xc12521ff,
+ 0x33e64c8c, 0xc1278104, 0x33d9f5cf, 0xc129e276,
+ 0x33cd9f8b, 0xc12c4653, 0x33c149bf, 0xc12eac9d,
+ 0x33b4f46c, 0xc1311553, 0x33a89f92, 0xc1338075,
+ 0x339c4b32, 0xc135ee02, 0x338ff74d, 0xc1385dfb,
+ 0x3383a3e2, 0xc13ad060, 0x337750f2, 0xc13d4530,
+ 0x336afe7e, 0xc13fbc6c, 0x335eac86, 0xc1423613,
+ 0x33525b0b, 0xc144b225, 0x33460a0d, 0xc14730a3,
+ 0x3339b98d, 0xc149b18b, 0x332d698a, 0xc14c34df,
+ 0x33211a07, 0xc14eba9d, 0x3314cb02, 0xc15142c6,
+ 0x33087c7d, 0xc153cd5a, 0x32fc2e77, 0xc1565a58,
+ 0x32efe0f2, 0xc158e9c1, 0x32e393ef, 0xc15b7b94,
+ 0x32d7476c, 0xc15e0fd1, 0x32cafb6b, 0xc160a678,
+ 0x32beafed, 0xc1633f8a, 0x32b264f2, 0xc165db05,
+ 0x32a61a7a, 0xc16878eb, 0x3299d085, 0xc16b193a,
+ 0x328d8715, 0xc16dbbf3, 0x32813e2a, 0xc1706115,
+ 0x3274f5c3, 0xc17308a1, 0x3268ade3, 0xc175b296,
+ 0x325c6688, 0xc1785ef4, 0x32501fb5, 0xc17b0dbb,
+ 0x3243d968, 0xc17dbeec, 0x323793a3, 0xc1807285,
+ 0x322b4e66, 0xc1832888, 0x321f09b1, 0xc185e0f3,
+ 0x3212c585, 0xc1889bc6, 0x320681e3, 0xc18b5903,
+ 0x31fa3ecb, 0xc18e18a7, 0x31edfc3d, 0xc190dab4,
+ 0x31e1ba3a, 0xc1939f29, 0x31d578c2, 0xc1966606,
+ 0x31c937d6, 0xc1992f4c, 0x31bcf777, 0xc19bfaf9,
+ 0x31b0b7a4, 0xc19ec90d, 0x31a4785e, 0xc1a1998a,
+ 0x319839a6, 0xc1a46c6e, 0x318bfb7d, 0xc1a741b9,
+ 0x317fbde2, 0xc1aa196c, 0x317380d6, 0xc1acf386,
+ 0x31674459, 0xc1afd007, 0x315b086d, 0xc1b2aef0,
+ 0x314ecd11, 0xc1b5903f, 0x31429247, 0xc1b873f5,
+ 0x3136580d, 0xc1bb5a11, 0x312a1e66, 0xc1be4294,
+ 0x311de551, 0xc1c12d7e, 0x3111accf, 0xc1c41ace,
+ 0x310574e0, 0xc1c70a84, 0x30f93d86, 0xc1c9fca0,
+ 0x30ed06bf, 0xc1ccf122, 0x30e0d08d, 0xc1cfe80a,
+ 0x30d49af1, 0xc1d2e158, 0x30c865ea, 0xc1d5dd0c,
+ 0x30bc317a, 0xc1d8db25, 0x30affda0, 0xc1dbdba3,
+ 0x30a3ca5d, 0xc1dede87, 0x309797b2, 0xc1e1e3d0,
+ 0x308b659f, 0xc1e4eb7e, 0x307f3424, 0xc1e7f591,
+ 0x30730342, 0xc1eb0209, 0x3066d2fa, 0xc1ee10e5,
+ 0x305aa34c, 0xc1f12227, 0x304e7438, 0xc1f435cc,
+ 0x304245c0, 0xc1f74bd6, 0x303617e2, 0xc1fa6445,
+ 0x3029eaa1, 0xc1fd7f17, 0x301dbdfb, 0xc2009c4e,
+ 0x301191f3, 0xc203bbe8, 0x30056687, 0xc206dde6,
+ 0x2ff93bba, 0xc20a0248, 0x2fed118a, 0xc20d290d,
+ 0x2fe0e7f9, 0xc2105236, 0x2fd4bf08, 0xc2137dc2,
+ 0x2fc896b5, 0xc216abb1, 0x2fbc6f03, 0xc219dc03,
+ 0x2fb047f2, 0xc21d0eb8, 0x2fa42181, 0xc22043d0,
+ 0x2f97fbb2, 0xc2237b4b, 0x2f8bd685, 0xc226b528,
+ 0x2f7fb1fa, 0xc229f167, 0x2f738e12, 0xc22d3009,
+ 0x2f676ace, 0xc230710d, 0x2f5b482d, 0xc233b473,
+ 0x2f4f2630, 0xc236fa3b, 0x2f4304d8, 0xc23a4265,
+ 0x2f36e426, 0xc23d8cf1, 0x2f2ac419, 0xc240d9de,
+ 0x2f1ea4b2, 0xc244292c, 0x2f1285f2, 0xc2477adc,
+ 0x2f0667d9, 0xc24aceed, 0x2efa4a67, 0xc24e255e,
+ 0x2eee2d9d, 0xc2517e31, 0x2ee2117c, 0xc254d965,
+ 0x2ed5f604, 0xc25836f9, 0x2ec9db35, 0xc25b96ee,
+ 0x2ebdc110, 0xc25ef943, 0x2eb1a796, 0xc2625df8,
+ 0x2ea58ec6, 0xc265c50e, 0x2e9976a1, 0xc2692e83,
+ 0x2e8d5f29, 0xc26c9a58, 0x2e81485c, 0xc270088e,
+ 0x2e75323c, 0xc2737922, 0x2e691cc9, 0xc276ec16,
+ 0x2e5d0804, 0xc27a616a, 0x2e50f3ed, 0xc27dd91c,
+ 0x2e44e084, 0xc281532e, 0x2e38cdcb, 0xc284cf9f,
+ 0x2e2cbbc1, 0xc2884e6e, 0x2e20aa67, 0xc28bcf9c,
+ 0x2e1499bd, 0xc28f5329, 0x2e0889c4, 0xc292d914,
+ 0x2dfc7a7c, 0xc296615d, 0x2df06be6, 0xc299ec05,
+ 0x2de45e03, 0xc29d790a, 0x2dd850d2, 0xc2a1086d,
+ 0x2dcc4454, 0xc2a49a2e, 0x2dc0388a, 0xc2a82e4d,
+ 0x2db42d74, 0xc2abc4c9, 0x2da82313, 0xc2af5da2,
+ 0x2d9c1967, 0xc2b2f8d8, 0x2d901070, 0xc2b6966c,
+ 0x2d84082f, 0xc2ba365c, 0x2d7800a5, 0xc2bdd8a9,
+ 0x2d6bf9d1, 0xc2c17d52, 0x2d5ff3b5, 0xc2c52459,
+ 0x2d53ee51, 0xc2c8cdbb, 0x2d47e9a5, 0xc2cc7979,
+ 0x2d3be5b1, 0xc2d02794, 0x2d2fe277, 0xc2d3d80a,
+ 0x2d23dff7, 0xc2d78add, 0x2d17de31, 0xc2db400a,
+ 0x2d0bdd25, 0xc2def794, 0x2cffdcd4, 0xc2e2b178,
+ 0x2cf3dd3f, 0xc2e66db8, 0x2ce7de66, 0xc2ea2c53,
+ 0x2cdbe04a, 0xc2eded49, 0x2ccfe2ea, 0xc2f1b099,
+ 0x2cc3e648, 0xc2f57644, 0x2cb7ea63, 0xc2f93e4a,
+ 0x2cabef3d, 0xc2fd08a9, 0x2c9ff4d6, 0xc300d563,
+ 0x2c93fb2e, 0xc304a477, 0x2c880245, 0xc30875e5,
+ 0x2c7c0a1d, 0xc30c49ad, 0x2c7012b5, 0xc3101fce,
+ 0x2c641c0e, 0xc313f848, 0x2c582629, 0xc317d31c,
+ 0x2c4c3106, 0xc31bb049, 0x2c403ca5, 0xc31f8fcf,
+ 0x2c344908, 0xc32371ae, 0x2c28562d, 0xc32755e5,
+ 0x2c1c6417, 0xc32b3c75, 0x2c1072c4, 0xc32f255e,
+ 0x2c048237, 0xc333109e, 0x2bf8926f, 0xc336fe37,
+ 0x2beca36c, 0xc33aee27, 0x2be0b52f, 0xc33ee070,
+ 0x2bd4c7ba, 0xc342d510, 0x2bc8db0b, 0xc346cc07,
+ 0x2bbcef23, 0xc34ac556, 0x2bb10404, 0xc34ec0fc,
+ 0x2ba519ad, 0xc352bef9, 0x2b99301f, 0xc356bf4d,
+ 0x2b8d475b, 0xc35ac1f7, 0x2b815f60, 0xc35ec6f8,
+ 0x2b75782f, 0xc362ce50, 0x2b6991ca, 0xc366d7fd,
+ 0x2b5dac2f, 0xc36ae401, 0x2b51c760, 0xc36ef25b,
+ 0x2b45e35d, 0xc373030a, 0x2b3a0027, 0xc377160f,
+ 0x2b2e1dbe, 0xc37b2b6a, 0x2b223c22, 0xc37f4319,
+ 0x2b165b54, 0xc3835d1e, 0x2b0a7b54, 0xc3877978,
+ 0x2afe9c24, 0xc38b9827, 0x2af2bdc3, 0xc38fb92a,
+ 0x2ae6e031, 0xc393dc82, 0x2adb0370, 0xc398022f,
+ 0x2acf277f, 0xc39c2a2f, 0x2ac34c60, 0xc3a05484,
+ 0x2ab77212, 0xc3a4812c, 0x2aab9896, 0xc3a8b028,
+ 0x2a9fbfed, 0xc3ace178, 0x2a93e817, 0xc3b1151b,
+ 0x2a881114, 0xc3b54b11, 0x2a7c3ae5, 0xc3b9835a,
+ 0x2a70658a, 0xc3bdbdf6, 0x2a649105, 0xc3c1fae5,
+ 0x2a58bd54, 0xc3c63a26, 0x2a4cea79, 0xc3ca7bba,
+ 0x2a411874, 0xc3cebfa0, 0x2a354746, 0xc3d305d8,
+ 0x2a2976ef, 0xc3d74e62, 0x2a1da770, 0xc3db993e,
+ 0x2a11d8c8, 0xc3dfe66c, 0x2a060af9, 0xc3e435ea,
+ 0x29fa3e03, 0xc3e887bb, 0x29ee71e6, 0xc3ecdbdc,
+ 0x29e2a6a3, 0xc3f1324e, 0x29d6dc3b, 0xc3f58b10,
+ 0x29cb12ad, 0xc3f9e624, 0x29bf49fa, 0xc3fe4388,
+ 0x29b38223, 0xc402a33c, 0x29a7bb28, 0xc4070540,
+ 0x299bf509, 0xc40b6994, 0x29902fc7, 0xc40fd037,
+ 0x29846b63, 0xc414392b, 0x2978a7dd, 0xc418a46d,
+ 0x296ce535, 0xc41d11ff, 0x2961236c, 0xc42181e0,
+ 0x29556282, 0xc425f410, 0x2949a278, 0xc42a688f,
+ 0x293de34e, 0xc42edf5c, 0x29322505, 0xc4335877,
+ 0x2926679c, 0xc437d3e1, 0x291aab16, 0xc43c5199,
+ 0x290eef71, 0xc440d19e, 0x290334af, 0xc44553f2,
+ 0x28f77acf, 0xc449d892, 0x28ebc1d3, 0xc44e5f80,
+ 0x28e009ba, 0xc452e8bc, 0x28d45286, 0xc4577444,
+ 0x28c89c37, 0xc45c0219, 0x28bce6cd, 0xc460923b,
+ 0x28b13248, 0xc46524a9, 0x28a57ea9, 0xc469b963,
+ 0x2899cbf1, 0xc46e5069, 0x288e1a20, 0xc472e9bc,
+ 0x28826936, 0xc477855a, 0x2876b934, 0xc47c2344,
+ 0x286b0a1a, 0xc480c379, 0x285f5be9, 0xc48565f9,
+ 0x2853aea1, 0xc48a0ac4, 0x28480243, 0xc48eb1db,
+ 0x283c56cf, 0xc4935b3c, 0x2830ac45, 0xc49806e7,
+ 0x282502a7, 0xc49cb4dd, 0x281959f4, 0xc4a1651c,
+ 0x280db22d, 0xc4a617a6, 0x28020b52, 0xc4aacc7a,
+ 0x27f66564, 0xc4af8397, 0x27eac063, 0xc4b43cfd,
+ 0x27df1c50, 0xc4b8f8ad, 0x27d3792b, 0xc4bdb6a6,
+ 0x27c7d6f4, 0xc4c276e8, 0x27bc35ad, 0xc4c73972,
+ 0x27b09555, 0xc4cbfe45, 0x27a4f5ed, 0xc4d0c560,
+ 0x27995776, 0xc4d58ec3, 0x278db9ef, 0xc4da5a6f,
+ 0x27821d59, 0xc4df2862, 0x277681b6, 0xc4e3f89c,
+ 0x276ae704, 0xc4e8cb1e, 0x275f4d45, 0xc4ed9fe7,
+ 0x2753b479, 0xc4f276f7, 0x27481ca1, 0xc4f7504e,
+ 0x273c85bc, 0xc4fc2bec, 0x2730efcc, 0xc50109d0,
+ 0x27255ad1, 0xc505e9fb, 0x2719c6cb, 0xc50acc6b,
+ 0x270e33bb, 0xc50fb121, 0x2702a1a1, 0xc514981d,
+ 0x26f7107e, 0xc519815f, 0x26eb8052, 0xc51e6ce6,
+ 0x26dff11d, 0xc5235ab2, 0x26d462e1, 0xc5284ac3,
+ 0x26c8d59c, 0xc52d3d18, 0x26bd4951, 0xc53231b3,
+ 0x26b1bdff, 0xc5372891, 0x26a633a6, 0xc53c21b4,
+ 0x269aaa48, 0xc5411d1b, 0x268f21e5, 0xc5461ac6,
+ 0x26839a7c, 0xc54b1ab4, 0x26781410, 0xc5501ce5,
+ 0x266c8e9f, 0xc555215a, 0x26610a2a, 0xc55a2812,
+ 0x265586b3, 0xc55f310d, 0x264a0438, 0xc5643c4a,
+ 0x263e82bc, 0xc56949ca, 0x2633023e, 0xc56e598c,
+ 0x262782be, 0xc5736b90, 0x261c043d, 0xc5787fd6,
+ 0x261086bc, 0xc57d965d, 0x26050a3b, 0xc582af26,
+ 0x25f98ebb, 0xc587ca31, 0x25ee143b, 0xc58ce77c,
+ 0x25e29abc, 0xc5920708, 0x25d72240, 0xc59728d5,
+ 0x25cbaac5, 0xc59c4ce3, 0x25c0344d, 0xc5a17330,
+ 0x25b4bed8, 0xc5a69bbe, 0x25a94a67, 0xc5abc68c,
+ 0x259dd6f9, 0xc5b0f399, 0x25926490, 0xc5b622e6,
+ 0x2586f32c, 0xc5bb5472, 0x257b82cd, 0xc5c0883d,
+ 0x25701374, 0xc5c5be47, 0x2564a521, 0xc5caf690,
+ 0x255937d5, 0xc5d03118, 0x254dcb8f, 0xc5d56ddd,
+ 0x25426051, 0xc5daace1, 0x2536f61b, 0xc5dfee22,
+ 0x252b8cee, 0xc5e531a1, 0x252024c9, 0xc5ea775e,
+ 0x2514bdad, 0xc5efbf58, 0x2509579b, 0xc5f5098f,
+ 0x24fdf294, 0xc5fa5603, 0x24f28e96, 0xc5ffa4b3,
+ 0x24e72ba4, 0xc604f5a0, 0x24dbc9bd, 0xc60a48c9,
+ 0x24d068e2, 0xc60f9e2e, 0x24c50914, 0xc614f5cf,
+ 0x24b9aa52, 0xc61a4fac, 0x24ae4c9d, 0xc61fabc4,
+ 0x24a2eff6, 0xc6250a18, 0x2497945d, 0xc62a6aa6,
+ 0x248c39d3, 0xc62fcd6f, 0x2480e057, 0xc6353273,
+ 0x247587eb, 0xc63a99b1, 0x246a308f, 0xc6400329,
+ 0x245eda43, 0xc6456edb, 0x24538507, 0xc64adcc7,
+ 0x244830dd, 0xc6504ced, 0x243cddc4, 0xc655bf4c,
+ 0x24318bbe, 0xc65b33e4, 0x24263ac9, 0xc660aab5,
+ 0x241aeae8, 0xc66623be, 0x240f9c1a, 0xc66b9f01,
+ 0x24044e60, 0xc6711c7b, 0x23f901ba, 0xc6769c2e,
+ 0x23edb628, 0xc67c1e18, 0x23e26bac, 0xc681a23a,
+ 0x23d72245, 0xc6872894, 0x23cbd9f4, 0xc68cb124,
+ 0x23c092b9, 0xc6923bec, 0x23b54c95, 0xc697c8eb,
+ 0x23aa0788, 0xc69d5820, 0x239ec393, 0xc6a2e98b,
+ 0x239380b6, 0xc6a87d2d, 0x23883ef2, 0xc6ae1304,
+ 0x237cfe47, 0xc6b3ab12, 0x2371beb5, 0xc6b94554,
+ 0x2366803c, 0xc6bee1cd, 0x235b42df, 0xc6c4807a,
+ 0x2350069b, 0xc6ca215c, 0x2344cb73, 0xc6cfc472,
+ 0x23399167, 0xc6d569be, 0x232e5876, 0xc6db113d,
+ 0x232320a2, 0xc6e0baf0, 0x2317e9eb, 0xc6e666d7,
+ 0x230cb451, 0xc6ec14f2, 0x23017fd5, 0xc6f1c540,
+ 0x22f64c77, 0xc6f777c1, 0x22eb1a37, 0xc6fd2c75,
+ 0x22dfe917, 0xc702e35c, 0x22d4b916, 0xc7089c75,
+ 0x22c98a35, 0xc70e57c0, 0x22be5c74, 0xc714153e,
+ 0x22b32fd4, 0xc719d4ed, 0x22a80456, 0xc71f96ce,
+ 0x229cd9f8, 0xc7255ae0, 0x2291b0bd, 0xc72b2123,
+ 0x228688a4, 0xc730e997, 0x227b61af, 0xc736b43c,
+ 0x22703bdc, 0xc73c8111, 0x2265172e, 0xc7425016,
+ 0x2259f3a3, 0xc748214c, 0x224ed13d, 0xc74df4b1,
+ 0x2243affc, 0xc753ca46, 0x22388fe1, 0xc759a20a,
+ 0x222d70eb, 0xc75f7bfe, 0x2222531c, 0xc7655820,
+ 0x22173674, 0xc76b3671, 0x220c1af3, 0xc77116f0,
+ 0x22010099, 0xc776f99d, 0x21f5e768, 0xc77cde79,
+ 0x21eacf5f, 0xc782c582, 0x21dfb87f, 0xc788aeb9,
+ 0x21d4a2c8, 0xc78e9a1d, 0x21c98e3b, 0xc79487ae,
+ 0x21be7ad8, 0xc79a776c, 0x21b368a0, 0xc7a06957,
+ 0x21a85793, 0xc7a65d6e, 0x219d47b1, 0xc7ac53b1,
+ 0x219238fb, 0xc7b24c20, 0x21872b72, 0xc7b846ba,
+ 0x217c1f15, 0xc7be4381, 0x217113e5, 0xc7c44272,
+ 0x216609e3, 0xc7ca438f, 0x215b0110, 0xc7d046d6,
+ 0x214ff96a, 0xc7d64c47, 0x2144f2f3, 0xc7dc53e3,
+ 0x2139edac, 0xc7e25daa, 0x212ee995, 0xc7e8699a,
+ 0x2123e6ad, 0xc7ee77b3, 0x2118e4f6, 0xc7f487f6,
+ 0x210de470, 0xc7fa9a62, 0x2102e51c, 0xc800aef7,
+ 0x20f7e6f9, 0xc806c5b5, 0x20ecea09, 0xc80cde9b,
+ 0x20e1ee4b, 0xc812f9a9, 0x20d6f3c1, 0xc81916df,
+ 0x20cbfa6a, 0xc81f363d, 0x20c10247, 0xc82557c3,
+ 0x20b60b58, 0xc82b7b70, 0x20ab159e, 0xc831a143,
+ 0x20a0211a, 0xc837c93e, 0x20952dcb, 0xc83df35f,
+ 0x208a3bb2, 0xc8441fa6, 0x207f4acf, 0xc84a4e14,
+ 0x20745b24, 0xc8507ea7, 0x20696cb0, 0xc856b160,
+ 0x205e7f74, 0xc85ce63e, 0x2053936f, 0xc8631d42,
+ 0x2048a8a4, 0xc869566a, 0x203dbf11, 0xc86f91b7,
+ 0x2032d6b8, 0xc875cf28, 0x2027ef99, 0xc87c0ebd,
+ 0x201d09b4, 0xc8825077, 0x2012250a, 0xc8889454,
+ 0x2007419b, 0xc88eda54, 0x1ffc5f67, 0xc8952278,
+ 0x1ff17e70, 0xc89b6cbf, 0x1fe69eb4, 0xc8a1b928,
+ 0x1fdbc036, 0xc8a807b4, 0x1fd0e2f5, 0xc8ae5862,
+ 0x1fc606f1, 0xc8b4ab32, 0x1fbb2c2c, 0xc8bb0023,
+ 0x1fb052a5, 0xc8c15736, 0x1fa57a5d, 0xc8c7b06b,
+ 0x1f9aa354, 0xc8ce0bc0, 0x1f8fcd8b, 0xc8d46936,
+ 0x1f84f902, 0xc8dac8cd, 0x1f7a25ba, 0xc8e12a84,
+ 0x1f6f53b3, 0xc8e78e5b, 0x1f6482ed, 0xc8edf452,
+ 0x1f59b369, 0xc8f45c68, 0x1f4ee527, 0xc8fac69e,
+ 0x1f441828, 0xc90132f2, 0x1f394c6b, 0xc907a166,
+ 0x1f2e81f3, 0xc90e11f7, 0x1f23b8be, 0xc91484a8,
+ 0x1f18f0ce, 0xc91af976, 0x1f0e2a22, 0xc9217062,
+ 0x1f0364bc, 0xc927e96b, 0x1ef8a09b, 0xc92e6492,
+ 0x1eedddc0, 0xc934e1d6, 0x1ee31c2b, 0xc93b6137,
+ 0x1ed85bdd, 0xc941e2b4, 0x1ecd9cd7, 0xc948664d,
+ 0x1ec2df18, 0xc94eec03, 0x1eb822a1, 0xc95573d4,
+ 0x1ead6773, 0xc95bfdc1, 0x1ea2ad8d, 0xc96289c9,
+ 0x1e97f4f1, 0xc96917ec, 0x1e8d3d9e, 0xc96fa82a,
+ 0x1e828796, 0xc9763a83, 0x1e77d2d8, 0xc97ccef5,
+ 0x1e6d1f65, 0xc9836582, 0x1e626d3e, 0xc989fe29,
+ 0x1e57bc62, 0xc99098e9, 0x1e4d0cd2, 0xc99735c2,
+ 0x1e425e8f, 0xc99dd4b4, 0x1e37b199, 0xc9a475bf,
+ 0x1e2d05f1, 0xc9ab18e3, 0x1e225b96, 0xc9b1be1e,
+ 0x1e17b28a, 0xc9b86572, 0x1e0d0acc, 0xc9bf0edd,
+ 0x1e02645d, 0xc9c5ba60, 0x1df7bf3e, 0xc9cc67fa,
+ 0x1ded1b6e, 0xc9d317ab, 0x1de278ef, 0xc9d9c973,
+ 0x1dd7d7c1, 0xc9e07d51, 0x1dcd37e4, 0xc9e73346,
+ 0x1dc29958, 0xc9edeb50, 0x1db7fc1e, 0xc9f4a570,
+ 0x1dad6036, 0xc9fb61a5, 0x1da2c5a2, 0xca021fef,
+ 0x1d982c60, 0xca08e04f, 0x1d8d9472, 0xca0fa2c3,
+ 0x1d82fdd8, 0xca16674b, 0x1d786892, 0xca1d2de7,
+ 0x1d6dd4a2, 0xca23f698, 0x1d634206, 0xca2ac15b,
+ 0x1d58b0c0, 0xca318e32, 0x1d4e20d0, 0xca385d1d,
+ 0x1d439236, 0xca3f2e19, 0x1d3904f4, 0xca460129,
+ 0x1d2e7908, 0xca4cd64b, 0x1d23ee74, 0xca53ad7e,
+ 0x1d196538, 0xca5a86c4, 0x1d0edd55, 0xca61621b,
+ 0x1d0456ca, 0xca683f83, 0x1cf9d199, 0xca6f1efc,
+ 0x1cef4dc2, 0xca760086, 0x1ce4cb44, 0xca7ce420,
+ 0x1cda4a21, 0xca83c9ca, 0x1ccfca59, 0xca8ab184,
+ 0x1cc54bec, 0xca919b4e, 0x1cbacedb, 0xca988727,
+ 0x1cb05326, 0xca9f750f, 0x1ca5d8cd, 0xcaa66506,
+ 0x1c9b5fd2, 0xcaad570c, 0x1c90e834, 0xcab44b1f,
+ 0x1c8671f3, 0xcabb4141, 0x1c7bfd11, 0xcac23971,
+ 0x1c71898d, 0xcac933ae, 0x1c671768, 0xcad02ff8,
+ 0x1c5ca6a2, 0xcad72e4f, 0x1c52373c, 0xcade2eb3,
+ 0x1c47c936, 0xcae53123, 0x1c3d5c91, 0xcaec35a0,
+ 0x1c32f14d, 0xcaf33c28, 0x1c28876a, 0xcafa44bc,
+ 0x1c1e1ee9, 0xcb014f5b, 0x1c13b7c9, 0xcb085c05,
+ 0x1c09520d, 0xcb0f6aba, 0x1bfeedb3, 0xcb167b79,
+ 0x1bf48abd, 0xcb1d8e43, 0x1bea292b, 0xcb24a316,
+ 0x1bdfc8fc, 0xcb2bb9f4, 0x1bd56a32, 0xcb32d2da,
+ 0x1bcb0cce, 0xcb39edca, 0x1bc0b0ce, 0xcb410ac3,
+ 0x1bb65634, 0xcb4829c4, 0x1babfd01, 0xcb4f4acd,
+ 0x1ba1a534, 0xcb566ddf, 0x1b974ece, 0xcb5d92f8,
+ 0x1b8cf9cf, 0xcb64ba19, 0x1b82a638, 0xcb6be341,
+ 0x1b785409, 0xcb730e70, 0x1b6e0342, 0xcb7a3ba5,
+ 0x1b63b3e5, 0xcb816ae1, 0x1b5965f1, 0xcb889c23,
+ 0x1b4f1967, 0xcb8fcf6b, 0x1b44ce46, 0xcb9704b9,
+ 0x1b3a8491, 0xcb9e3c0b, 0x1b303c46, 0xcba57563,
+ 0x1b25f566, 0xcbacb0bf, 0x1b1baff2, 0xcbb3ee20,
+ 0x1b116beb, 0xcbbb2d85, 0x1b072950, 0xcbc26eee,
+ 0x1afce821, 0xcbc9b25a, 0x1af2a860, 0xcbd0f7ca,
+ 0x1ae86a0d, 0xcbd83f3d, 0x1ade2d28, 0xcbdf88b3,
+ 0x1ad3f1b1, 0xcbe6d42b, 0x1ac9b7a9, 0xcbee21a5,
+ 0x1abf7f11, 0xcbf57121, 0x1ab547e8, 0xcbfcc29f,
+ 0x1aab122f, 0xcc04161e, 0x1aa0dde7, 0xcc0b6b9e,
+ 0x1a96ab0f, 0xcc12c31f, 0x1a8c79a9, 0xcc1a1ca0,
+ 0x1a8249b4, 0xcc217822, 0x1a781b31, 0xcc28d5a3,
+ 0x1a6dee21, 0xcc303524, 0x1a63c284, 0xcc3796a5,
+ 0x1a599859, 0xcc3efa25, 0x1a4f6fa3, 0xcc465fa3,
+ 0x1a454860, 0xcc4dc720, 0x1a3b2292, 0xcc55309b,
+ 0x1a30fe38, 0xcc5c9c14, 0x1a26db54, 0xcc64098b,
+ 0x1a1cb9e5, 0xcc6b78ff, 0x1a1299ec, 0xcc72ea70,
+ 0x1a087b69, 0xcc7a5dde, 0x19fe5e5e, 0xcc81d349,
+ 0x19f442c9, 0xcc894aaf, 0x19ea28ac, 0xcc90c412,
+ 0x19e01006, 0xcc983f70, 0x19d5f8d9, 0xcc9fbcca,
+ 0x19cbe325, 0xcca73c1e, 0x19c1cee9, 0xccaebd6e,
+ 0x19b7bc27, 0xccb640b8, 0x19adaadf, 0xccbdc5fc,
+ 0x19a39b11, 0xccc54d3a, 0x19998cbe, 0xccccd671,
+ 0x198f7fe6, 0xccd461a2, 0x19857489, 0xccdbeecc,
+ 0x197b6aa8, 0xcce37def, 0x19716243, 0xcceb0f0a,
+ 0x19675b5a, 0xccf2a21d, 0x195d55ef, 0xccfa3729,
+ 0x19535201, 0xcd01ce2b, 0x19494f90, 0xcd096725,
+ 0x193f4e9e, 0xcd110216, 0x19354f2a, 0xcd189efe,
+ 0x192b5135, 0xcd203ddc, 0x192154bf, 0xcd27deb0,
+ 0x191759c9, 0xcd2f817b, 0x190d6053, 0xcd37263a,
+ 0x1903685d, 0xcd3eccef, 0x18f971e8, 0xcd467599,
+ 0x18ef7cf4, 0xcd4e2037, 0x18e58982, 0xcd55ccca,
+ 0x18db9792, 0xcd5d7b50, 0x18d1a724, 0xcd652bcb,
+ 0x18c7b838, 0xcd6cde39, 0x18bdcad0, 0xcd74929a,
+ 0x18b3deeb, 0xcd7c48ee, 0x18a9f48a, 0xcd840134,
+ 0x18a00bae, 0xcd8bbb6d, 0x18962456, 0xcd937798,
+ 0x188c3e83, 0xcd9b35b4, 0x18825a35, 0xcda2f5c2,
+ 0x1878776d, 0xcdaab7c0, 0x186e962b, 0xcdb27bb0,
+ 0x1864b670, 0xcdba4190, 0x185ad83c, 0xcdc20960,
+ 0x1850fb8e, 0xcdc9d320, 0x18472069, 0xcdd19ed0,
+ 0x183d46cc, 0xcdd96c6f, 0x18336eb7, 0xcde13bfd,
+ 0x1829982b, 0xcde90d79, 0x181fc328, 0xcdf0e0e4,
+ 0x1815efae, 0xcdf8b63d, 0x180c1dbf, 0xce008d84,
+ 0x18024d59, 0xce0866b8, 0x17f87e7f, 0xce1041d9,
+ 0x17eeb130, 0xce181ee8, 0x17e4e56c, 0xce1ffde2,
+ 0x17db1b34, 0xce27dec9, 0x17d15288, 0xce2fc19c,
+ 0x17c78b68, 0xce37a65b, 0x17bdc5d6, 0xce3f8d05,
+ 0x17b401d1, 0xce47759a, 0x17aa3f5a, 0xce4f6019,
+ 0x17a07e70, 0xce574c84, 0x1796bf16, 0xce5f3ad8,
+ 0x178d014a, 0xce672b16, 0x1783450d, 0xce6f1d3d,
+ 0x17798a60, 0xce77114e, 0x176fd143, 0xce7f0748,
+ 0x176619b6, 0xce86ff2a, 0x175c63ba, 0xce8ef8f4,
+ 0x1752af4f, 0xce96f4a7, 0x1748fc75, 0xce9ef241,
+ 0x173f4b2e, 0xcea6f1c2, 0x17359b78, 0xceaef32b,
+ 0x172bed55, 0xceb6f67a, 0x172240c5, 0xcebefbb0,
+ 0x171895c9, 0xcec702cb, 0x170eec60, 0xcecf0bcd,
+ 0x1705448b, 0xced716b4, 0x16fb9e4b, 0xcedf2380,
+ 0x16f1f99f, 0xcee73231, 0x16e85689, 0xceef42c7,
+ 0x16deb508, 0xcef75541, 0x16d5151d, 0xceff699f,
+ 0x16cb76c9, 0xcf077fe1, 0x16c1da0b, 0xcf0f9805,
+ 0x16b83ee4, 0xcf17b20d, 0x16aea555, 0xcf1fcdf8,
+ 0x16a50d5d, 0xcf27ebc5, 0x169b76fe, 0xcf300b74,
+ 0x1691e237, 0xcf382d05, 0x16884f09, 0xcf405077,
+ 0x167ebd74, 0xcf4875ca, 0x16752d79, 0xcf509cfe,
+ 0x166b9f18, 0xcf58c613, 0x16621251, 0xcf60f108,
+ 0x16588725, 0xcf691ddd, 0x164efd94, 0xcf714c91,
+ 0x1645759f, 0xcf797d24, 0x163bef46, 0xcf81af97,
+ 0x16326a88, 0xcf89e3e8, 0x1628e767, 0xcf921a17,
+ 0x161f65e4, 0xcf9a5225, 0x1615e5fd, 0xcfa28c10,
+ 0x160c67b4, 0xcfaac7d8, 0x1602eb0a, 0xcfb3057d,
+ 0x15f96ffd, 0xcfbb4500, 0x15eff690, 0xcfc3865e,
+ 0x15e67ec1, 0xcfcbc999, 0x15dd0892, 0xcfd40eaf,
+ 0x15d39403, 0xcfdc55a1, 0x15ca2115, 0xcfe49e6d,
+ 0x15c0afc6, 0xcfece915, 0x15b74019, 0xcff53597,
+ 0x15add20d, 0xcffd83f4, 0x15a465a3, 0xd005d42a,
+ 0x159afadb, 0xd00e2639, 0x159191b5, 0xd0167a22,
+ 0x15882a32, 0xd01ecfe4, 0x157ec452, 0xd027277e,
+ 0x15756016, 0xd02f80f1, 0x156bfd7d, 0xd037dc3b,
+ 0x15629c89, 0xd040395d, 0x15593d3a, 0xd0489856,
+ 0x154fdf8f, 0xd050f926, 0x15468389, 0xd0595bcd,
+ 0x153d292a, 0xd061c04a, 0x1533d070, 0xd06a269d,
+ 0x152a795d, 0xd0728ec6, 0x152123f0, 0xd07af8c4,
+ 0x1517d02b, 0xd0836497, 0x150e7e0d, 0xd08bd23f,
+ 0x15052d97, 0xd09441bb, 0x14fbdec9, 0xd09cb30b,
+ 0x14f291a4, 0xd0a5262f, 0x14e94627, 0xd0ad9b26,
+ 0x14dffc54, 0xd0b611f1, 0x14d6b42b, 0xd0be8a8d,
+ 0x14cd6dab, 0xd0c704fd, 0x14c428d6, 0xd0cf813e,
+ 0x14bae5ab, 0xd0d7ff51, 0x14b1a42c, 0xd0e07f36,
+ 0x14a86458, 0xd0e900ec, 0x149f2630, 0xd0f18472,
+ 0x1495e9b3, 0xd0fa09c9, 0x148caee4, 0xd10290f0,
+ 0x148375c1, 0xd10b19e7, 0x147a3e4b, 0xd113a4ad,
+ 0x14710883, 0xd11c3142, 0x1467d469, 0xd124bfa6,
+ 0x145ea1fd, 0xd12d4fd9, 0x14557140, 0xd135e1d9,
+ 0x144c4232, 0xd13e75a8, 0x144314d3, 0xd1470b44,
+ 0x1439e923, 0xd14fa2ad, 0x1430bf24, 0xd1583be2,
+ 0x142796d5, 0xd160d6e5, 0x141e7037, 0xd16973b3,
+ 0x14154b4a, 0xd172124d, 0x140c280e, 0xd17ab2b3,
+ 0x14030684, 0xd18354e4, 0x13f9e6ad, 0xd18bf8e0,
+ 0x13f0c887, 0xd1949ea6, 0x13e7ac15, 0xd19d4636,
+ 0x13de9156, 0xd1a5ef90, 0x13d5784a, 0xd1ae9ab4,
+ 0x13cc60f2, 0xd1b747a0, 0x13c34b4f, 0xd1bff656,
+ 0x13ba3760, 0xd1c8a6d4, 0x13b12526, 0xd1d1591a,
+ 0x13a814a2, 0xd1da0d28, 0x139f05d3, 0xd1e2c2fd,
+ 0x1395f8ba, 0xd1eb7a9a, 0x138ced57, 0xd1f433fd,
+ 0x1383e3ab, 0xd1fcef27, 0x137adbb6, 0xd205ac17,
+ 0x1371d579, 0xd20e6acc, 0x1368d0f3, 0xd2172b48,
+ 0x135fce26, 0xd21fed88, 0x1356cd11, 0xd228b18d,
+ 0x134dcdb4, 0xd2317756, 0x1344d011, 0xd23a3ee4,
+ 0x133bd427, 0xd2430835, 0x1332d9f7, 0xd24bd34a,
+ 0x1329e181, 0xd254a021, 0x1320eac6, 0xd25d6ebc,
+ 0x1317f5c6, 0xd2663f19, 0x130f0280, 0xd26f1138,
+ 0x130610f7, 0xd277e518, 0x12fd2129, 0xd280babb,
+ 0x12f43318, 0xd289921e, 0x12eb46c3, 0xd2926b41,
+ 0x12e25c2b, 0xd29b4626, 0x12d97350, 0xd2a422ca,
+ 0x12d08c33, 0xd2ad012e, 0x12c7a6d4, 0xd2b5e151,
+ 0x12bec333, 0xd2bec333, 0x12b5e151, 0xd2c7a6d4,
+ 0x12ad012e, 0xd2d08c33, 0x12a422ca, 0xd2d97350,
+ 0x129b4626, 0xd2e25c2b, 0x12926b41, 0xd2eb46c3,
+ 0x1289921e, 0xd2f43318, 0x1280babb, 0xd2fd2129,
+ 0x1277e518, 0xd30610f7, 0x126f1138, 0xd30f0280,
+ 0x12663f19, 0xd317f5c6, 0x125d6ebc, 0xd320eac6,
+ 0x1254a021, 0xd329e181, 0x124bd34a, 0xd332d9f7,
+ 0x12430835, 0xd33bd427, 0x123a3ee4, 0xd344d011,
+ 0x12317756, 0xd34dcdb4, 0x1228b18d, 0xd356cd11,
+ 0x121fed88, 0xd35fce26, 0x12172b48, 0xd368d0f3,
+ 0x120e6acc, 0xd371d579, 0x1205ac17, 0xd37adbb6,
+ 0x11fcef27, 0xd383e3ab, 0x11f433fd, 0xd38ced57,
+ 0x11eb7a9a, 0xd395f8ba, 0x11e2c2fd, 0xd39f05d3,
+ 0x11da0d28, 0xd3a814a2, 0x11d1591a, 0xd3b12526,
+ 0x11c8a6d4, 0xd3ba3760, 0x11bff656, 0xd3c34b4f,
+ 0x11b747a0, 0xd3cc60f2, 0x11ae9ab4, 0xd3d5784a,
+ 0x11a5ef90, 0xd3de9156, 0x119d4636, 0xd3e7ac15,
+ 0x11949ea6, 0xd3f0c887, 0x118bf8e0, 0xd3f9e6ad,
+ 0x118354e4, 0xd4030684, 0x117ab2b3, 0xd40c280e,
+ 0x1172124d, 0xd4154b4a, 0x116973b3, 0xd41e7037,
+ 0x1160d6e5, 0xd42796d5, 0x11583be2, 0xd430bf24,
+ 0x114fa2ad, 0xd439e923, 0x11470b44, 0xd44314d3,
+ 0x113e75a8, 0xd44c4232, 0x1135e1d9, 0xd4557140,
+ 0x112d4fd9, 0xd45ea1fd, 0x1124bfa6, 0xd467d469,
+ 0x111c3142, 0xd4710883, 0x1113a4ad, 0xd47a3e4b,
+ 0x110b19e7, 0xd48375c1, 0x110290f0, 0xd48caee4,
+ 0x10fa09c9, 0xd495e9b3, 0x10f18472, 0xd49f2630,
+ 0x10e900ec, 0xd4a86458, 0x10e07f36, 0xd4b1a42c,
+ 0x10d7ff51, 0xd4bae5ab, 0x10cf813e, 0xd4c428d6,
+ 0x10c704fd, 0xd4cd6dab, 0x10be8a8d, 0xd4d6b42b,
+ 0x10b611f1, 0xd4dffc54, 0x10ad9b26, 0xd4e94627,
+ 0x10a5262f, 0xd4f291a4, 0x109cb30b, 0xd4fbdec9,
+ 0x109441bb, 0xd5052d97, 0x108bd23f, 0xd50e7e0d,
+ 0x10836497, 0xd517d02b, 0x107af8c4, 0xd52123f0,
+ 0x10728ec6, 0xd52a795d, 0x106a269d, 0xd533d070,
+ 0x1061c04a, 0xd53d292a, 0x10595bcd, 0xd5468389,
+ 0x1050f926, 0xd54fdf8f, 0x10489856, 0xd5593d3a,
+ 0x1040395d, 0xd5629c89, 0x1037dc3b, 0xd56bfd7d,
+ 0x102f80f1, 0xd5756016, 0x1027277e, 0xd57ec452,
+ 0x101ecfe4, 0xd5882a32, 0x10167a22, 0xd59191b5,
+ 0x100e2639, 0xd59afadb, 0x1005d42a, 0xd5a465a3,
+ 0xffd83f4, 0xd5add20d, 0xff53597, 0xd5b74019,
+ 0xfece915, 0xd5c0afc6, 0xfe49e6d, 0xd5ca2115,
+ 0xfdc55a1, 0xd5d39403, 0xfd40eaf, 0xd5dd0892,
+ 0xfcbc999, 0xd5e67ec1, 0xfc3865e, 0xd5eff690,
+ 0xfbb4500, 0xd5f96ffd, 0xfb3057d, 0xd602eb0a,
+ 0xfaac7d8, 0xd60c67b4, 0xfa28c10, 0xd615e5fd,
+ 0xf9a5225, 0xd61f65e4, 0xf921a17, 0xd628e767,
+ 0xf89e3e8, 0xd6326a88, 0xf81af97, 0xd63bef46,
+ 0xf797d24, 0xd645759f, 0xf714c91, 0xd64efd94,
+ 0xf691ddd, 0xd6588725, 0xf60f108, 0xd6621251,
+ 0xf58c613, 0xd66b9f18, 0xf509cfe, 0xd6752d79,
+ 0xf4875ca, 0xd67ebd74, 0xf405077, 0xd6884f09,
+ 0xf382d05, 0xd691e237, 0xf300b74, 0xd69b76fe,
+ 0xf27ebc5, 0xd6a50d5d, 0xf1fcdf8, 0xd6aea555,
+ 0xf17b20d, 0xd6b83ee4, 0xf0f9805, 0xd6c1da0b,
+ 0xf077fe1, 0xd6cb76c9, 0xeff699f, 0xd6d5151d,
+ 0xef75541, 0xd6deb508, 0xeef42c7, 0xd6e85689,
+ 0xee73231, 0xd6f1f99f, 0xedf2380, 0xd6fb9e4b,
+ 0xed716b4, 0xd705448b, 0xecf0bcd, 0xd70eec60,
+ 0xec702cb, 0xd71895c9, 0xebefbb0, 0xd72240c5,
+ 0xeb6f67a, 0xd72bed55, 0xeaef32b, 0xd7359b78,
+ 0xea6f1c2, 0xd73f4b2e, 0xe9ef241, 0xd748fc75,
+ 0xe96f4a7, 0xd752af4f, 0xe8ef8f4, 0xd75c63ba,
+ 0xe86ff2a, 0xd76619b6, 0xe7f0748, 0xd76fd143,
+ 0xe77114e, 0xd7798a60, 0xe6f1d3d, 0xd783450d,
+ 0xe672b16, 0xd78d014a, 0xe5f3ad8, 0xd796bf16,
+ 0xe574c84, 0xd7a07e70, 0xe4f6019, 0xd7aa3f5a,
+ 0xe47759a, 0xd7b401d1, 0xe3f8d05, 0xd7bdc5d6,
+ 0xe37a65b, 0xd7c78b68, 0xe2fc19c, 0xd7d15288,
+ 0xe27dec9, 0xd7db1b34, 0xe1ffde2, 0xd7e4e56c,
+ 0xe181ee8, 0xd7eeb130, 0xe1041d9, 0xd7f87e7f,
+ 0xe0866b8, 0xd8024d59, 0xe008d84, 0xd80c1dbf,
+ 0xdf8b63d, 0xd815efae, 0xdf0e0e4, 0xd81fc328,
+ 0xde90d79, 0xd829982b, 0xde13bfd, 0xd8336eb7,
+ 0xdd96c6f, 0xd83d46cc, 0xdd19ed0, 0xd8472069,
+ 0xdc9d320, 0xd850fb8e, 0xdc20960, 0xd85ad83c,
+ 0xdba4190, 0xd864b670, 0xdb27bb0, 0xd86e962b,
+ 0xdaab7c0, 0xd878776d, 0xda2f5c2, 0xd8825a35,
+ 0xd9b35b4, 0xd88c3e83, 0xd937798, 0xd8962456,
+ 0xd8bbb6d, 0xd8a00bae, 0xd840134, 0xd8a9f48a,
+ 0xd7c48ee, 0xd8b3deeb, 0xd74929a, 0xd8bdcad0,
+ 0xd6cde39, 0xd8c7b838, 0xd652bcb, 0xd8d1a724,
+ 0xd5d7b50, 0xd8db9792, 0xd55ccca, 0xd8e58982,
+ 0xd4e2037, 0xd8ef7cf4, 0xd467599, 0xd8f971e8,
+ 0xd3eccef, 0xd903685d, 0xd37263a, 0xd90d6053,
+ 0xd2f817b, 0xd91759c9, 0xd27deb0, 0xd92154bf,
+ 0xd203ddc, 0xd92b5135, 0xd189efe, 0xd9354f2a,
+ 0xd110216, 0xd93f4e9e, 0xd096725, 0xd9494f90,
+ 0xd01ce2b, 0xd9535201, 0xcfa3729, 0xd95d55ef,
+ 0xcf2a21d, 0xd9675b5a, 0xceb0f0a, 0xd9716243,
+ 0xce37def, 0xd97b6aa8, 0xcdbeecc, 0xd9857489,
+ 0xcd461a2, 0xd98f7fe6, 0xcccd671, 0xd9998cbe,
+ 0xcc54d3a, 0xd9a39b11, 0xcbdc5fc, 0xd9adaadf,
+ 0xcb640b8, 0xd9b7bc27, 0xcaebd6e, 0xd9c1cee9,
+ 0xca73c1e, 0xd9cbe325, 0xc9fbcca, 0xd9d5f8d9,
+ 0xc983f70, 0xd9e01006, 0xc90c412, 0xd9ea28ac,
+ 0xc894aaf, 0xd9f442c9, 0xc81d349, 0xd9fe5e5e,
+ 0xc7a5dde, 0xda087b69, 0xc72ea70, 0xda1299ec,
+ 0xc6b78ff, 0xda1cb9e5, 0xc64098b, 0xda26db54,
+ 0xc5c9c14, 0xda30fe38, 0xc55309b, 0xda3b2292,
+ 0xc4dc720, 0xda454860, 0xc465fa3, 0xda4f6fa3,
+ 0xc3efa25, 0xda599859, 0xc3796a5, 0xda63c284,
+ 0xc303524, 0xda6dee21, 0xc28d5a3, 0xda781b31,
+ 0xc217822, 0xda8249b4, 0xc1a1ca0, 0xda8c79a9,
+ 0xc12c31f, 0xda96ab0f, 0xc0b6b9e, 0xdaa0dde7,
+ 0xc04161e, 0xdaab122f, 0xbfcc29f, 0xdab547e8,
+ 0xbf57121, 0xdabf7f11, 0xbee21a5, 0xdac9b7a9,
+ 0xbe6d42b, 0xdad3f1b1, 0xbdf88b3, 0xdade2d28,
+ 0xbd83f3d, 0xdae86a0d, 0xbd0f7ca, 0xdaf2a860,
+ 0xbc9b25a, 0xdafce821, 0xbc26eee, 0xdb072950,
+ 0xbbb2d85, 0xdb116beb, 0xbb3ee20, 0xdb1baff2,
+ 0xbacb0bf, 0xdb25f566, 0xba57563, 0xdb303c46,
+ 0xb9e3c0b, 0xdb3a8491, 0xb9704b9, 0xdb44ce46,
+ 0xb8fcf6b, 0xdb4f1967, 0xb889c23, 0xdb5965f1,
+ 0xb816ae1, 0xdb63b3e5, 0xb7a3ba5, 0xdb6e0342,
+ 0xb730e70, 0xdb785409, 0xb6be341, 0xdb82a638,
+ 0xb64ba19, 0xdb8cf9cf, 0xb5d92f8, 0xdb974ece,
+ 0xb566ddf, 0xdba1a534, 0xb4f4acd, 0xdbabfd01,
+ 0xb4829c4, 0xdbb65634, 0xb410ac3, 0xdbc0b0ce,
+ 0xb39edca, 0xdbcb0cce, 0xb32d2da, 0xdbd56a32,
+ 0xb2bb9f4, 0xdbdfc8fc, 0xb24a316, 0xdbea292b,
+ 0xb1d8e43, 0xdbf48abd, 0xb167b79, 0xdbfeedb3,
+ 0xb0f6aba, 0xdc09520d, 0xb085c05, 0xdc13b7c9,
+ 0xb014f5b, 0xdc1e1ee9, 0xafa44bc, 0xdc28876a,
+ 0xaf33c28, 0xdc32f14d, 0xaec35a0, 0xdc3d5c91,
+ 0xae53123, 0xdc47c936, 0xade2eb3, 0xdc52373c,
+ 0xad72e4f, 0xdc5ca6a2, 0xad02ff8, 0xdc671768,
+ 0xac933ae, 0xdc71898d, 0xac23971, 0xdc7bfd11,
+ 0xabb4141, 0xdc8671f3, 0xab44b1f, 0xdc90e834,
+ 0xaad570c, 0xdc9b5fd2, 0xaa66506, 0xdca5d8cd,
+ 0xa9f750f, 0xdcb05326, 0xa988727, 0xdcbacedb,
+ 0xa919b4e, 0xdcc54bec, 0xa8ab184, 0xdccfca59,
+ 0xa83c9ca, 0xdcda4a21, 0xa7ce420, 0xdce4cb44,
+ 0xa760086, 0xdcef4dc2, 0xa6f1efc, 0xdcf9d199,
+ 0xa683f83, 0xdd0456ca, 0xa61621b, 0xdd0edd55,
+ 0xa5a86c4, 0xdd196538, 0xa53ad7e, 0xdd23ee74,
+ 0xa4cd64b, 0xdd2e7908, 0xa460129, 0xdd3904f4,
+ 0xa3f2e19, 0xdd439236, 0xa385d1d, 0xdd4e20d0,
+ 0xa318e32, 0xdd58b0c0, 0xa2ac15b, 0xdd634206,
+ 0xa23f698, 0xdd6dd4a2, 0xa1d2de7, 0xdd786892,
+ 0xa16674b, 0xdd82fdd8, 0xa0fa2c3, 0xdd8d9472,
+ 0xa08e04f, 0xdd982c60, 0xa021fef, 0xdda2c5a2,
+ 0x9fb61a5, 0xddad6036, 0x9f4a570, 0xddb7fc1e,
+ 0x9edeb50, 0xddc29958, 0x9e73346, 0xddcd37e4,
+ 0x9e07d51, 0xddd7d7c1, 0x9d9c973, 0xdde278ef,
+ 0x9d317ab, 0xdded1b6e, 0x9cc67fa, 0xddf7bf3e,
+ 0x9c5ba60, 0xde02645d, 0x9bf0edd, 0xde0d0acc,
+ 0x9b86572, 0xde17b28a, 0x9b1be1e, 0xde225b96,
+ 0x9ab18e3, 0xde2d05f1, 0x9a475bf, 0xde37b199,
+ 0x99dd4b4, 0xde425e8f, 0x99735c2, 0xde4d0cd2,
+ 0x99098e9, 0xde57bc62, 0x989fe29, 0xde626d3e,
+ 0x9836582, 0xde6d1f65, 0x97ccef5, 0xde77d2d8,
+ 0x9763a83, 0xde828796, 0x96fa82a, 0xde8d3d9e,
+ 0x96917ec, 0xde97f4f1, 0x96289c9, 0xdea2ad8d,
+ 0x95bfdc1, 0xdead6773, 0x95573d4, 0xdeb822a1,
+ 0x94eec03, 0xdec2df18, 0x948664d, 0xdecd9cd7,
+ 0x941e2b4, 0xded85bdd, 0x93b6137, 0xdee31c2b,
+ 0x934e1d6, 0xdeedddc0, 0x92e6492, 0xdef8a09b,
+ 0x927e96b, 0xdf0364bc, 0x9217062, 0xdf0e2a22,
+ 0x91af976, 0xdf18f0ce, 0x91484a8, 0xdf23b8be,
+ 0x90e11f7, 0xdf2e81f3, 0x907a166, 0xdf394c6b,
+ 0x90132f2, 0xdf441828, 0x8fac69e, 0xdf4ee527,
+ 0x8f45c68, 0xdf59b369, 0x8edf452, 0xdf6482ed,
+ 0x8e78e5b, 0xdf6f53b3, 0x8e12a84, 0xdf7a25ba,
+ 0x8dac8cd, 0xdf84f902, 0x8d46936, 0xdf8fcd8b,
+ 0x8ce0bc0, 0xdf9aa354, 0x8c7b06b, 0xdfa57a5d,
+ 0x8c15736, 0xdfb052a5, 0x8bb0023, 0xdfbb2c2c,
+ 0x8b4ab32, 0xdfc606f1, 0x8ae5862, 0xdfd0e2f5,
+ 0x8a807b4, 0xdfdbc036, 0x8a1b928, 0xdfe69eb4,
+ 0x89b6cbf, 0xdff17e70, 0x8952278, 0xdffc5f67,
+ 0x88eda54, 0xe007419b, 0x8889454, 0xe012250a,
+ 0x8825077, 0xe01d09b4, 0x87c0ebd, 0xe027ef99,
+ 0x875cf28, 0xe032d6b8, 0x86f91b7, 0xe03dbf11,
+ 0x869566a, 0xe048a8a4, 0x8631d42, 0xe053936f,
+ 0x85ce63e, 0xe05e7f74, 0x856b160, 0xe0696cb0,
+ 0x8507ea7, 0xe0745b24, 0x84a4e14, 0xe07f4acf,
+ 0x8441fa6, 0xe08a3bb2, 0x83df35f, 0xe0952dcb,
+ 0x837c93e, 0xe0a0211a, 0x831a143, 0xe0ab159e,
+ 0x82b7b70, 0xe0b60b58, 0x82557c3, 0xe0c10247,
+ 0x81f363d, 0xe0cbfa6a, 0x81916df, 0xe0d6f3c1,
+ 0x812f9a9, 0xe0e1ee4b, 0x80cde9b, 0xe0ecea09,
+ 0x806c5b5, 0xe0f7e6f9, 0x800aef7, 0xe102e51c,
+ 0x7fa9a62, 0xe10de470, 0x7f487f6, 0xe118e4f6,
+ 0x7ee77b3, 0xe123e6ad, 0x7e8699a, 0xe12ee995,
+ 0x7e25daa, 0xe139edac, 0x7dc53e3, 0xe144f2f3,
+ 0x7d64c47, 0xe14ff96a, 0x7d046d6, 0xe15b0110,
+ 0x7ca438f, 0xe16609e3, 0x7c44272, 0xe17113e5,
+ 0x7be4381, 0xe17c1f15, 0x7b846ba, 0xe1872b72,
+ 0x7b24c20, 0xe19238fb, 0x7ac53b1, 0xe19d47b1,
+ 0x7a65d6e, 0xe1a85793, 0x7a06957, 0xe1b368a0,
+ 0x79a776c, 0xe1be7ad8, 0x79487ae, 0xe1c98e3b,
+ 0x78e9a1d, 0xe1d4a2c8, 0x788aeb9, 0xe1dfb87f,
+ 0x782c582, 0xe1eacf5f, 0x77cde79, 0xe1f5e768,
+ 0x776f99d, 0xe2010099, 0x77116f0, 0xe20c1af3,
+ 0x76b3671, 0xe2173674, 0x7655820, 0xe222531c,
+ 0x75f7bfe, 0xe22d70eb, 0x759a20a, 0xe2388fe1,
+ 0x753ca46, 0xe243affc, 0x74df4b1, 0xe24ed13d,
+ 0x748214c, 0xe259f3a3, 0x7425016, 0xe265172e,
+ 0x73c8111, 0xe2703bdc, 0x736b43c, 0xe27b61af,
+ 0x730e997, 0xe28688a4, 0x72b2123, 0xe291b0bd,
+ 0x7255ae0, 0xe29cd9f8, 0x71f96ce, 0xe2a80456,
+ 0x719d4ed, 0xe2b32fd4, 0x714153e, 0xe2be5c74,
+ 0x70e57c0, 0xe2c98a35, 0x7089c75, 0xe2d4b916,
+ 0x702e35c, 0xe2dfe917, 0x6fd2c75, 0xe2eb1a37,
+ 0x6f777c1, 0xe2f64c77, 0x6f1c540, 0xe3017fd5,
+ 0x6ec14f2, 0xe30cb451, 0x6e666d7, 0xe317e9eb,
+ 0x6e0baf0, 0xe32320a2, 0x6db113d, 0xe32e5876,
+ 0x6d569be, 0xe3399167, 0x6cfc472, 0xe344cb73,
+ 0x6ca215c, 0xe350069b, 0x6c4807a, 0xe35b42df,
+ 0x6bee1cd, 0xe366803c, 0x6b94554, 0xe371beb5,
+ 0x6b3ab12, 0xe37cfe47, 0x6ae1304, 0xe3883ef2,
+ 0x6a87d2d, 0xe39380b6, 0x6a2e98b, 0xe39ec393,
+ 0x69d5820, 0xe3aa0788, 0x697c8eb, 0xe3b54c95,
+ 0x6923bec, 0xe3c092b9, 0x68cb124, 0xe3cbd9f4,
+ 0x6872894, 0xe3d72245, 0x681a23a, 0xe3e26bac,
+ 0x67c1e18, 0xe3edb628, 0x6769c2e, 0xe3f901ba,
+ 0x6711c7b, 0xe4044e60, 0x66b9f01, 0xe40f9c1a,
+ 0x66623be, 0xe41aeae8, 0x660aab5, 0xe4263ac9,
+ 0x65b33e4, 0xe4318bbe, 0x655bf4c, 0xe43cddc4,
+ 0x6504ced, 0xe44830dd, 0x64adcc7, 0xe4538507,
+ 0x6456edb, 0xe45eda43, 0x6400329, 0xe46a308f,
+ 0x63a99b1, 0xe47587eb, 0x6353273, 0xe480e057,
+ 0x62fcd6f, 0xe48c39d3, 0x62a6aa6, 0xe497945d,
+ 0x6250a18, 0xe4a2eff6, 0x61fabc4, 0xe4ae4c9d,
+ 0x61a4fac, 0xe4b9aa52, 0x614f5cf, 0xe4c50914,
+ 0x60f9e2e, 0xe4d068e2, 0x60a48c9, 0xe4dbc9bd,
+ 0x604f5a0, 0xe4e72ba4, 0x5ffa4b3, 0xe4f28e96,
+ 0x5fa5603, 0xe4fdf294, 0x5f5098f, 0xe509579b,
+ 0x5efbf58, 0xe514bdad, 0x5ea775e, 0xe52024c9,
+ 0x5e531a1, 0xe52b8cee, 0x5dfee22, 0xe536f61b,
+ 0x5daace1, 0xe5426051, 0x5d56ddd, 0xe54dcb8f,
+ 0x5d03118, 0xe55937d5, 0x5caf690, 0xe564a521,
+ 0x5c5be47, 0xe5701374, 0x5c0883d, 0xe57b82cd,
+ 0x5bb5472, 0xe586f32c, 0x5b622e6, 0xe5926490,
+ 0x5b0f399, 0xe59dd6f9, 0x5abc68c, 0xe5a94a67,
+ 0x5a69bbe, 0xe5b4bed8, 0x5a17330, 0xe5c0344d,
+ 0x59c4ce3, 0xe5cbaac5, 0x59728d5, 0xe5d72240,
+ 0x5920708, 0xe5e29abc, 0x58ce77c, 0xe5ee143b,
+ 0x587ca31, 0xe5f98ebb, 0x582af26, 0xe6050a3b,
+ 0x57d965d, 0xe61086bc, 0x5787fd6, 0xe61c043d,
+ 0x5736b90, 0xe62782be, 0x56e598c, 0xe633023e,
+ 0x56949ca, 0xe63e82bc, 0x5643c4a, 0xe64a0438,
+ 0x55f310d, 0xe65586b3, 0x55a2812, 0xe6610a2a,
+ 0x555215a, 0xe66c8e9f, 0x5501ce5, 0xe6781410,
+ 0x54b1ab4, 0xe6839a7c, 0x5461ac6, 0xe68f21e5,
+ 0x5411d1b, 0xe69aaa48, 0x53c21b4, 0xe6a633a6,
+ 0x5372891, 0xe6b1bdff, 0x53231b3, 0xe6bd4951,
+ 0x52d3d18, 0xe6c8d59c, 0x5284ac3, 0xe6d462e1,
+ 0x5235ab2, 0xe6dff11d, 0x51e6ce6, 0xe6eb8052,
+ 0x519815f, 0xe6f7107e, 0x514981d, 0xe702a1a1,
+ 0x50fb121, 0xe70e33bb, 0x50acc6b, 0xe719c6cb,
+ 0x505e9fb, 0xe7255ad1, 0x50109d0, 0xe730efcc,
+ 0x4fc2bec, 0xe73c85bc, 0x4f7504e, 0xe7481ca1,
+ 0x4f276f7, 0xe753b479, 0x4ed9fe7, 0xe75f4d45,
+ 0x4e8cb1e, 0xe76ae704, 0x4e3f89c, 0xe77681b6,
+ 0x4df2862, 0xe7821d59, 0x4da5a6f, 0xe78db9ef,
+ 0x4d58ec3, 0xe7995776, 0x4d0c560, 0xe7a4f5ed,
+ 0x4cbfe45, 0xe7b09555, 0x4c73972, 0xe7bc35ad,
+ 0x4c276e8, 0xe7c7d6f4, 0x4bdb6a6, 0xe7d3792b,
+ 0x4b8f8ad, 0xe7df1c50, 0x4b43cfd, 0xe7eac063,
+ 0x4af8397, 0xe7f66564, 0x4aacc7a, 0xe8020b52,
+ 0x4a617a6, 0xe80db22d, 0x4a1651c, 0xe81959f4,
+ 0x49cb4dd, 0xe82502a7, 0x49806e7, 0xe830ac45,
+ 0x4935b3c, 0xe83c56cf, 0x48eb1db, 0xe8480243,
+ 0x48a0ac4, 0xe853aea1, 0x48565f9, 0xe85f5be9,
+ 0x480c379, 0xe86b0a1a, 0x47c2344, 0xe876b934,
+ 0x477855a, 0xe8826936, 0x472e9bc, 0xe88e1a20,
+ 0x46e5069, 0xe899cbf1, 0x469b963, 0xe8a57ea9,
+ 0x46524a9, 0xe8b13248, 0x460923b, 0xe8bce6cd,
+ 0x45c0219, 0xe8c89c37, 0x4577444, 0xe8d45286,
+ 0x452e8bc, 0xe8e009ba, 0x44e5f80, 0xe8ebc1d3,
+ 0x449d892, 0xe8f77acf, 0x44553f2, 0xe90334af,
+ 0x440d19e, 0xe90eef71, 0x43c5199, 0xe91aab16,
+ 0x437d3e1, 0xe926679c, 0x4335877, 0xe9322505,
+ 0x42edf5c, 0xe93de34e, 0x42a688f, 0xe949a278,
+ 0x425f410, 0xe9556282, 0x42181e0, 0xe961236c,
+ 0x41d11ff, 0xe96ce535, 0x418a46d, 0xe978a7dd,
+ 0x414392b, 0xe9846b63, 0x40fd037, 0xe9902fc7,
+ 0x40b6994, 0xe99bf509, 0x4070540, 0xe9a7bb28,
+ 0x402a33c, 0xe9b38223, 0x3fe4388, 0xe9bf49fa,
+ 0x3f9e624, 0xe9cb12ad, 0x3f58b10, 0xe9d6dc3b,
+ 0x3f1324e, 0xe9e2a6a3, 0x3ecdbdc, 0xe9ee71e6,
+ 0x3e887bb, 0xe9fa3e03, 0x3e435ea, 0xea060af9,
+ 0x3dfe66c, 0xea11d8c8, 0x3db993e, 0xea1da770,
+ 0x3d74e62, 0xea2976ef, 0x3d305d8, 0xea354746,
+ 0x3cebfa0, 0xea411874, 0x3ca7bba, 0xea4cea79,
+ 0x3c63a26, 0xea58bd54, 0x3c1fae5, 0xea649105,
+ 0x3bdbdf6, 0xea70658a, 0x3b9835a, 0xea7c3ae5,
+ 0x3b54b11, 0xea881114, 0x3b1151b, 0xea93e817,
+ 0x3ace178, 0xea9fbfed, 0x3a8b028, 0xeaab9896,
+ 0x3a4812c, 0xeab77212, 0x3a05484, 0xeac34c60,
+ 0x39c2a2f, 0xeacf277f, 0x398022f, 0xeadb0370,
+ 0x393dc82, 0xeae6e031, 0x38fb92a, 0xeaf2bdc3,
+ 0x38b9827, 0xeafe9c24, 0x3877978, 0xeb0a7b54,
+ 0x3835d1e, 0xeb165b54, 0x37f4319, 0xeb223c22,
+ 0x37b2b6a, 0xeb2e1dbe, 0x377160f, 0xeb3a0027,
+ 0x373030a, 0xeb45e35d, 0x36ef25b, 0xeb51c760,
+ 0x36ae401, 0xeb5dac2f, 0x366d7fd, 0xeb6991ca,
+ 0x362ce50, 0xeb75782f, 0x35ec6f8, 0xeb815f60,
+ 0x35ac1f7, 0xeb8d475b, 0x356bf4d, 0xeb99301f,
+ 0x352bef9, 0xeba519ad, 0x34ec0fc, 0xebb10404,
+ 0x34ac556, 0xebbcef23, 0x346cc07, 0xebc8db0b,
+ 0x342d510, 0xebd4c7ba, 0x33ee070, 0xebe0b52f,
+ 0x33aee27, 0xebeca36c, 0x336fe37, 0xebf8926f,
+ 0x333109e, 0xec048237, 0x32f255e, 0xec1072c4,
+ 0x32b3c75, 0xec1c6417, 0x32755e5, 0xec28562d,
+ 0x32371ae, 0xec344908, 0x31f8fcf, 0xec403ca5,
+ 0x31bb049, 0xec4c3106, 0x317d31c, 0xec582629,
+ 0x313f848, 0xec641c0e, 0x3101fce, 0xec7012b5,
+ 0x30c49ad, 0xec7c0a1d, 0x30875e5, 0xec880245,
+ 0x304a477, 0xec93fb2e, 0x300d563, 0xec9ff4d6,
+ 0x2fd08a9, 0xecabef3d, 0x2f93e4a, 0xecb7ea63,
+ 0x2f57644, 0xecc3e648, 0x2f1b099, 0xeccfe2ea,
+ 0x2eded49, 0xecdbe04a, 0x2ea2c53, 0xece7de66,
+ 0x2e66db8, 0xecf3dd3f, 0x2e2b178, 0xecffdcd4,
+ 0x2def794, 0xed0bdd25, 0x2db400a, 0xed17de31,
+ 0x2d78add, 0xed23dff7, 0x2d3d80a, 0xed2fe277,
+ 0x2d02794, 0xed3be5b1, 0x2cc7979, 0xed47e9a5,
+ 0x2c8cdbb, 0xed53ee51, 0x2c52459, 0xed5ff3b5,
+ 0x2c17d52, 0xed6bf9d1, 0x2bdd8a9, 0xed7800a5,
+ 0x2ba365c, 0xed84082f, 0x2b6966c, 0xed901070,
+ 0x2b2f8d8, 0xed9c1967, 0x2af5da2, 0xeda82313,
+ 0x2abc4c9, 0xedb42d74, 0x2a82e4d, 0xedc0388a,
+ 0x2a49a2e, 0xedcc4454, 0x2a1086d, 0xedd850d2,
+ 0x29d790a, 0xede45e03, 0x299ec05, 0xedf06be6,
+ 0x296615d, 0xedfc7a7c, 0x292d914, 0xee0889c4,
+ 0x28f5329, 0xee1499bd, 0x28bcf9c, 0xee20aa67,
+ 0x2884e6e, 0xee2cbbc1, 0x284cf9f, 0xee38cdcb,
+ 0x281532e, 0xee44e084, 0x27dd91c, 0xee50f3ed,
+ 0x27a616a, 0xee5d0804, 0x276ec16, 0xee691cc9,
+ 0x2737922, 0xee75323c, 0x270088e, 0xee81485c,
+ 0x26c9a58, 0xee8d5f29, 0x2692e83, 0xee9976a1,
+ 0x265c50e, 0xeea58ec6, 0x2625df8, 0xeeb1a796,
+ 0x25ef943, 0xeebdc110, 0x25b96ee, 0xeec9db35,
+ 0x25836f9, 0xeed5f604, 0x254d965, 0xeee2117c,
+ 0x2517e31, 0xeeee2d9d, 0x24e255e, 0xeefa4a67,
+ 0x24aceed, 0xef0667d9, 0x2477adc, 0xef1285f2,
+ 0x244292c, 0xef1ea4b2, 0x240d9de, 0xef2ac419,
+ 0x23d8cf1, 0xef36e426, 0x23a4265, 0xef4304d8,
+ 0x236fa3b, 0xef4f2630, 0x233b473, 0xef5b482d,
+ 0x230710d, 0xef676ace, 0x22d3009, 0xef738e12,
+ 0x229f167, 0xef7fb1fa, 0x226b528, 0xef8bd685,
+ 0x2237b4b, 0xef97fbb2, 0x22043d0, 0xefa42181,
+ 0x21d0eb8, 0xefb047f2, 0x219dc03, 0xefbc6f03,
+ 0x216abb1, 0xefc896b5, 0x2137dc2, 0xefd4bf08,
+ 0x2105236, 0xefe0e7f9, 0x20d290d, 0xefed118a,
+ 0x20a0248, 0xeff93bba, 0x206dde6, 0xf0056687,
+ 0x203bbe8, 0xf01191f3, 0x2009c4e, 0xf01dbdfb,
+ 0x1fd7f17, 0xf029eaa1, 0x1fa6445, 0xf03617e2,
+ 0x1f74bd6, 0xf04245c0, 0x1f435cc, 0xf04e7438,
+ 0x1f12227, 0xf05aa34c, 0x1ee10e5, 0xf066d2fa,
+ 0x1eb0209, 0xf0730342, 0x1e7f591, 0xf07f3424,
+ 0x1e4eb7e, 0xf08b659f, 0x1e1e3d0, 0xf09797b2,
+ 0x1dede87, 0xf0a3ca5d, 0x1dbdba3, 0xf0affda0,
+ 0x1d8db25, 0xf0bc317a, 0x1d5dd0c, 0xf0c865ea,
+ 0x1d2e158, 0xf0d49af1, 0x1cfe80a, 0xf0e0d08d,
+ 0x1ccf122, 0xf0ed06bf, 0x1c9fca0, 0xf0f93d86,
+ 0x1c70a84, 0xf10574e0, 0x1c41ace, 0xf111accf,
+ 0x1c12d7e, 0xf11de551, 0x1be4294, 0xf12a1e66,
+ 0x1bb5a11, 0xf136580d, 0x1b873f5, 0xf1429247,
+ 0x1b5903f, 0xf14ecd11, 0x1b2aef0, 0xf15b086d,
+ 0x1afd007, 0xf1674459, 0x1acf386, 0xf17380d6,
+ 0x1aa196c, 0xf17fbde2, 0x1a741b9, 0xf18bfb7d,
+ 0x1a46c6e, 0xf19839a6, 0x1a1998a, 0xf1a4785e,
+ 0x19ec90d, 0xf1b0b7a4, 0x19bfaf9, 0xf1bcf777,
+ 0x1992f4c, 0xf1c937d6, 0x1966606, 0xf1d578c2,
+ 0x1939f29, 0xf1e1ba3a, 0x190dab4, 0xf1edfc3d,
+ 0x18e18a7, 0xf1fa3ecb, 0x18b5903, 0xf20681e3,
+ 0x1889bc6, 0xf212c585, 0x185e0f3, 0xf21f09b1,
+ 0x1832888, 0xf22b4e66, 0x1807285, 0xf23793a3,
+ 0x17dbeec, 0xf243d968, 0x17b0dbb, 0xf2501fb5,
+ 0x1785ef4, 0xf25c6688, 0x175b296, 0xf268ade3,
+ 0x17308a1, 0xf274f5c3, 0x1706115, 0xf2813e2a,
+ 0x16dbbf3, 0xf28d8715, 0x16b193a, 0xf299d085,
+ 0x16878eb, 0xf2a61a7a, 0x165db05, 0xf2b264f2,
+ 0x1633f8a, 0xf2beafed, 0x160a678, 0xf2cafb6b,
+ 0x15e0fd1, 0xf2d7476c, 0x15b7b94, 0xf2e393ef,
+ 0x158e9c1, 0xf2efe0f2, 0x1565a58, 0xf2fc2e77,
+ 0x153cd5a, 0xf3087c7d, 0x15142c6, 0xf314cb02,
+ 0x14eba9d, 0xf3211a07, 0x14c34df, 0xf32d698a,
+ 0x149b18b, 0xf339b98d, 0x14730a3, 0xf3460a0d,
+ 0x144b225, 0xf3525b0b, 0x1423613, 0xf35eac86,
+ 0x13fbc6c, 0xf36afe7e, 0x13d4530, 0xf37750f2,
+ 0x13ad060, 0xf383a3e2, 0x1385dfb, 0xf38ff74d,
+ 0x135ee02, 0xf39c4b32, 0x1338075, 0xf3a89f92,
+ 0x1311553, 0xf3b4f46c, 0x12eac9d, 0xf3c149bf,
+ 0x12c4653, 0xf3cd9f8b, 0x129e276, 0xf3d9f5cf,
+ 0x1278104, 0xf3e64c8c, 0x12521ff, 0xf3f2a3bf,
+ 0x122c566, 0xf3fefb6a, 0x1206b39, 0xf40b538b,
+ 0x11e1379, 0xf417ac22, 0x11bbe26, 0xf424052f,
+ 0x1196b3f, 0xf4305eb0, 0x1171ac6, 0xf43cb8a7,
+ 0x114ccb9, 0xf4491311, 0x1128119, 0xf4556def,
+ 0x11037e6, 0xf461c940, 0x10df120, 0xf46e2504,
+ 0x10bacc8, 0xf47a8139, 0x1096add, 0xf486dde1,
+ 0x1072b5f, 0xf4933afa, 0x104ee4f, 0xf49f9884,
+ 0x102b3ac, 0xf4abf67e, 0x1007b77, 0xf4b854e7,
+ 0xfe45b0, 0xf4c4b3c0, 0xfc1257, 0xf4d11308,
+ 0xf9e16b, 0xf4dd72be, 0xf7b2ee, 0xf4e9d2e3,
+ 0xf586df, 0xf4f63374, 0xf35d3e, 0xf5029473,
+ 0xf1360b, 0xf50ef5de, 0xef1147, 0xf51b57b5,
+ 0xeceef1, 0xf527b9f7, 0xeacf09, 0xf5341ca5,
+ 0xe8b190, 0xf5407fbd, 0xe69686, 0xf54ce33f,
+ 0xe47deb, 0xf559472b, 0xe267be, 0xf565ab80,
+ 0xe05401, 0xf572103d, 0xde42b2, 0xf57e7563,
+ 0xdc33d2, 0xf58adaf0, 0xda2762, 0xf59740e5,
+ 0xd81d61, 0xf5a3a740, 0xd615cf, 0xf5b00e02,
+ 0xd410ad, 0xf5bc7529, 0xd20dfa, 0xf5c8dcb6,
+ 0xd00db6, 0xf5d544a7, 0xce0fe3, 0xf5e1acfd,
+ 0xcc147f, 0xf5ee15b7, 0xca1b8a, 0xf5fa7ed4,
+ 0xc82506, 0xf606e854, 0xc630f2, 0xf6135237,
+ 0xc43f4d, 0xf61fbc7b, 0xc25019, 0xf62c2721,
+ 0xc06355, 0xf6389228, 0xbe7901, 0xf644fd8f,
+ 0xbc911d, 0xf6516956, 0xbaabaa, 0xf65dd57d,
+ 0xb8c8a7, 0xf66a4203, 0xb6e815, 0xf676aee8,
+ 0xb509f3, 0xf6831c2b, 0xb32e42, 0xf68f89cb,
+ 0xb15502, 0xf69bf7c9, 0xaf7e33, 0xf6a86623,
+ 0xada9d4, 0xf6b4d4d9, 0xabd7e6, 0xf6c143ec,
+ 0xaa086a, 0xf6cdb359, 0xa83b5e, 0xf6da2321,
+ 0xa670c4, 0xf6e69344, 0xa4a89b, 0xf6f303c0,
+ 0xa2e2e3, 0xf6ff7496, 0xa11f9d, 0xf70be5c4,
+ 0x9f5ec8, 0xf718574b, 0x9da065, 0xf724c92a,
+ 0x9be473, 0xf7313b60, 0x9a2af3, 0xf73daded,
+ 0x9873e4, 0xf74a20d0, 0x96bf48, 0xf756940a,
+ 0x950d1d, 0xf7630799, 0x935d64, 0xf76f7b7d,
+ 0x91b01d, 0xf77befb5, 0x900548, 0xf7886442,
+ 0x8e5ce5, 0xf794d922, 0x8cb6f5, 0xf7a14e55,
+ 0x8b1376, 0xf7adc3db, 0x89726a, 0xf7ba39b3,
+ 0x87d3d0, 0xf7c6afdc, 0x8637a9, 0xf7d32657,
+ 0x849df4, 0xf7df9d22, 0x8306b2, 0xf7ec143e,
+ 0x8171e2, 0xf7f88ba9, 0x7fdf85, 0xf8050364,
+ 0x7e4f9b, 0xf8117b6d, 0x7cc223, 0xf81df3c5,
+ 0x7b371e, 0xf82a6c6a, 0x79ae8c, 0xf836e55d,
+ 0x78286e, 0xf8435e9d, 0x76a4c2, 0xf84fd829,
+ 0x752389, 0xf85c5201, 0x73a4c3, 0xf868cc24,
+ 0x722871, 0xf8754692, 0x70ae92, 0xf881c14b,
+ 0x6f3726, 0xf88e3c4d, 0x6dc22e, 0xf89ab799,
+ 0x6c4fa8, 0xf8a7332e, 0x6adf97, 0xf8b3af0c,
+ 0x6971f9, 0xf8c02b31, 0x6806ce, 0xf8cca79e,
+ 0x669e18, 0xf8d92452, 0x6537d4, 0xf8e5a14d,
+ 0x63d405, 0xf8f21e8e, 0x6272aa, 0xf8fe9c15,
+ 0x6113c2, 0xf90b19e0, 0x5fb74e, 0xf91797f0,
+ 0x5e5d4e, 0xf9241645, 0x5d05c3, 0xf93094dd,
+ 0x5bb0ab, 0xf93d13b8, 0x5a5e07, 0xf94992d7,
+ 0x590dd8, 0xf9561237, 0x57c01d, 0xf96291d9,
+ 0x5674d6, 0xf96f11bc, 0x552c03, 0xf97b91e1,
+ 0x53e5a5, 0xf9881245, 0x52a1bb, 0xf99492ea,
+ 0x516045, 0xf9a113cd, 0x502145, 0xf9ad94f0,
+ 0x4ee4b8, 0xf9ba1651, 0x4daaa1, 0xf9c697f0,
+ 0x4c72fe, 0xf9d319cc, 0x4b3dcf, 0xf9df9be6,
+ 0x4a0b16, 0xf9ec1e3b, 0x48dad1, 0xf9f8a0cd,
+ 0x47ad01, 0xfa05239a, 0x4681a6, 0xfa11a6a3,
+ 0x4558c0, 0xfa1e29e5, 0x44324f, 0xfa2aad62,
+ 0x430e53, 0xfa373119, 0x41eccc, 0xfa43b508,
+ 0x40cdba, 0xfa503930, 0x3fb11d, 0xfa5cbd91,
+ 0x3e96f6, 0xfa694229, 0x3d7f44, 0xfa75c6f8,
+ 0x3c6a07, 0xfa824bfd, 0x3b573f, 0xfa8ed139,
+ 0x3a46ed, 0xfa9b56ab, 0x393910, 0xfaa7dc52,
+ 0x382da8, 0xfab4622d, 0x3724b6, 0xfac0e83d,
+ 0x361e3a, 0xfacd6e81, 0x351a33, 0xfad9f4f8,
+ 0x3418a2, 0xfae67ba2, 0x331986, 0xfaf3027e,
+ 0x321ce0, 0xfaff898c, 0x3122b0, 0xfb0c10cb,
+ 0x302af5, 0xfb18983b, 0x2f35b1, 0xfb251fdc,
+ 0x2e42e2, 0xfb31a7ac, 0x2d5289, 0xfb3e2fac,
+ 0x2c64a6, 0xfb4ab7db, 0x2b7939, 0xfb574039,
+ 0x2a9042, 0xfb63c8c4, 0x29a9c1, 0xfb70517d,
+ 0x28c5b6, 0xfb7cda63, 0x27e421, 0xfb896375,
+ 0x270502, 0xfb95ecb4, 0x262859, 0xfba2761e,
+ 0x254e27, 0xfbaeffb3, 0x24766a, 0xfbbb8973,
+ 0x23a124, 0xfbc8135c, 0x22ce54, 0xfbd49d70,
+ 0x21fdfb, 0xfbe127ac, 0x213018, 0xfbedb212,
+ 0x2064ab, 0xfbfa3c9f, 0x1f9bb5, 0xfc06c754,
+ 0x1ed535, 0xfc135231, 0x1e112b, 0xfc1fdd34,
+ 0x1d4f99, 0xfc2c685d, 0x1c907c, 0xfc38f3ac,
+ 0x1bd3d6, 0xfc457f21, 0x1b19a7, 0xfc520aba,
+ 0x1a61ee, 0xfc5e9678, 0x19acac, 0xfc6b2259,
+ 0x18f9e1, 0xfc77ae5e, 0x18498c, 0xfc843a85,
+ 0x179bae, 0xfc90c6cf, 0x16f047, 0xfc9d533b,
+ 0x164757, 0xfca9dfc8, 0x15a0dd, 0xfcb66c77,
+ 0x14fcda, 0xfcc2f945, 0x145b4e, 0xfccf8634,
+ 0x13bc39, 0xfcdc1342, 0x131f9b, 0xfce8a06f,
+ 0x128574, 0xfcf52dbb, 0x11edc3, 0xfd01bb24,
+ 0x11588a, 0xfd0e48ab, 0x10c5c7, 0xfd1ad650,
+ 0x10357c, 0xfd276410, 0xfa7a8, 0xfd33f1ed,
+ 0xf1c4a, 0xfd407fe6, 0xe9364, 0xfd4d0df9,
+ 0xe0cf5, 0xfd599c28, 0xd88fd, 0xfd662a70,
+ 0xd077c, 0xfd72b8d2, 0xc8872, 0xfd7f474d,
+ 0xc0be0, 0xfd8bd5e1, 0xb91c4, 0xfd98648d,
+ 0xb1a20, 0xfda4f351, 0xaa4f3, 0xfdb1822c,
+ 0xa323d, 0xfdbe111e, 0x9c1ff, 0xfdcaa027,
+ 0x95438, 0xfdd72f45, 0x8e8e8, 0xfde3be78,
+ 0x8800f, 0xfdf04dc0, 0x819ae, 0xfdfcdd1d,
+ 0x7b5c4, 0xfe096c8d, 0x75452, 0xfe15fc11,
+ 0x6f556, 0xfe228ba7, 0x698d3, 0xfe2f1b50,
+ 0x63ec6, 0xfe3bab0b, 0x5e731, 0xfe483ad8,
+ 0x59214, 0xfe54cab5, 0x53f6e, 0xfe615aa3,
+ 0x4ef3f, 0xfe6deaa1, 0x4a188, 0xfe7a7aae,
+ 0x45648, 0xfe870aca, 0x40d80, 0xfe939af5,
+ 0x3c72f, 0xfea02b2e, 0x38356, 0xfeacbb74,
+ 0x341f4, 0xfeb94bc8, 0x3030a, 0xfec5dc28,
+ 0x2c697, 0xfed26c94, 0x28c9c, 0xfedefd0c,
+ 0x25519, 0xfeeb8d8f, 0x2200d, 0xfef81e1d,
+ 0x1ed78, 0xff04aeb5, 0x1bd5c, 0xff113f56,
+ 0x18fb6, 0xff1dd001, 0x16489, 0xff2a60b4,
+ 0x13bd3, 0xff36f170, 0x11594, 0xff438234,
+ 0xf1ce, 0xff5012fe, 0xd07e, 0xff5ca3d0,
+ 0xb1a7, 0xff6934a8, 0x9547, 0xff75c585,
+ 0x7b5f, 0xff825668, 0x63ee, 0xff8ee750,
+ 0x4ef5, 0xff9b783c, 0x3c74, 0xffa8092c,
+ 0x2c6a, 0xffb49a1f, 0x1ed8, 0xffc12b16,
+ 0x13bd, 0xffcdbc0f, 0xb1a, 0xffda4d09,
+ 0x4ef, 0xffe6de05, 0x13c, 0xfff36f02,
+ 0x0, 0x0, 0x13c, 0xc90fe,
+ 0x4ef, 0x1921fb, 0xb1a, 0x25b2f7,
+ 0x13bd, 0x3243f1, 0x1ed8, 0x3ed4ea,
+ 0x2c6a, 0x4b65e1, 0x3c74, 0x57f6d4,
+ 0x4ef5, 0x6487c4, 0x63ee, 0x7118b0,
+ 0x7b5f, 0x7da998, 0x9547, 0x8a3a7b,
+ 0xb1a7, 0x96cb58, 0xd07e, 0xa35c30,
+ 0xf1ce, 0xafed02, 0x11594, 0xbc7dcc,
+ 0x13bd3, 0xc90e90, 0x16489, 0xd59f4c,
+ 0x18fb6, 0xe22fff, 0x1bd5c, 0xeec0aa,
+ 0x1ed78, 0xfb514b, 0x2200d, 0x107e1e3,
+ 0x25519, 0x1147271, 0x28c9c, 0x12102f4,
+ 0x2c697, 0x12d936c, 0x3030a, 0x13a23d8,
+ 0x341f4, 0x146b438, 0x38356, 0x153448c,
+ 0x3c72f, 0x15fd4d2, 0x40d80, 0x16c650b,
+ 0x45648, 0x178f536, 0x4a188, 0x1858552,
+ 0x4ef3f, 0x192155f, 0x53f6e, 0x19ea55d,
+ 0x59214, 0x1ab354b, 0x5e731, 0x1b7c528,
+ 0x63ec6, 0x1c454f5, 0x698d3, 0x1d0e4b0,
+ 0x6f556, 0x1dd7459, 0x75452, 0x1ea03ef,
+ 0x7b5c4, 0x1f69373, 0x819ae, 0x20322e3,
+ 0x8800f, 0x20fb240, 0x8e8e8, 0x21c4188,
+ 0x95438, 0x228d0bb, 0x9c1ff, 0x2355fd9,
+ 0xa323d, 0x241eee2, 0xaa4f3, 0x24e7dd4,
+ 0xb1a20, 0x25b0caf, 0xb91c4, 0x2679b73,
+ 0xc0be0, 0x2742a1f, 0xc8872, 0x280b8b3,
+ 0xd077c, 0x28d472e, 0xd88fd, 0x299d590,
+ 0xe0cf5, 0x2a663d8, 0xe9364, 0x2b2f207,
+ 0xf1c4a, 0x2bf801a, 0xfa7a8, 0x2cc0e13,
+ 0x10357c, 0x2d89bf0, 0x10c5c7, 0x2e529b0,
+ 0x11588a, 0x2f1b755, 0x11edc3, 0x2fe44dc,
+ 0x128574, 0x30ad245, 0x131f9b, 0x3175f91,
+ 0x13bc39, 0x323ecbe, 0x145b4e, 0x33079cc,
+ 0x14fcda, 0x33d06bb, 0x15a0dd, 0x3499389,
+ 0x164757, 0x3562038, 0x16f047, 0x362acc5,
+ 0x179bae, 0x36f3931, 0x18498c, 0x37bc57b,
+ 0x18f9e1, 0x38851a2, 0x19acac, 0x394dda7,
+ 0x1a61ee, 0x3a16988, 0x1b19a7, 0x3adf546,
+ 0x1bd3d6, 0x3ba80df, 0x1c907c, 0x3c70c54,
+ 0x1d4f99, 0x3d397a3, 0x1e112b, 0x3e022cc,
+ 0x1ed535, 0x3ecadcf, 0x1f9bb5, 0x3f938ac,
+ 0x2064ab, 0x405c361, 0x213018, 0x4124dee,
+ 0x21fdfb, 0x41ed854, 0x22ce54, 0x42b6290,
+ 0x23a124, 0x437eca4, 0x24766a, 0x444768d,
+ 0x254e27, 0x451004d, 0x262859, 0x45d89e2,
+ 0x270502, 0x46a134c, 0x27e421, 0x4769c8b,
+ 0x28c5b6, 0x483259d, 0x29a9c1, 0x48fae83,
+ 0x2a9042, 0x49c373c, 0x2b7939, 0x4a8bfc7,
+ 0x2c64a6, 0x4b54825, 0x2d5289, 0x4c1d054,
+ 0x2e42e2, 0x4ce5854, 0x2f35b1, 0x4dae024,
+ 0x302af5, 0x4e767c5, 0x3122b0, 0x4f3ef35,
+ 0x321ce0, 0x5007674, 0x331986, 0x50cfd82,
+ 0x3418a2, 0x519845e, 0x351a33, 0x5260b08,
+ 0x361e3a, 0x532917f, 0x3724b6, 0x53f17c3,
+ 0x382da8, 0x54b9dd3, 0x393910, 0x55823ae,
+ 0x3a46ed, 0x564a955, 0x3b573f, 0x5712ec7,
+ 0x3c6a07, 0x57db403, 0x3d7f44, 0x58a3908,
+ 0x3e96f6, 0x596bdd7, 0x3fb11d, 0x5a3426f,
+ 0x40cdba, 0x5afc6d0, 0x41eccc, 0x5bc4af8,
+ 0x430e53, 0x5c8cee7, 0x44324f, 0x5d5529e,
+ 0x4558c0, 0x5e1d61b, 0x4681a6, 0x5ee595d,
+ 0x47ad01, 0x5fadc66, 0x48dad1, 0x6075f33,
+ 0x4a0b16, 0x613e1c5, 0x4b3dcf, 0x620641a,
+ 0x4c72fe, 0x62ce634, 0x4daaa1, 0x6396810,
+ 0x4ee4b8, 0x645e9af, 0x502145, 0x6526b10,
+ 0x516045, 0x65eec33, 0x52a1bb, 0x66b6d16,
+ 0x53e5a5, 0x677edbb, 0x552c03, 0x6846e1f,
+ 0x5674d6, 0x690ee44, 0x57c01d, 0x69d6e27,
+ 0x590dd8, 0x6a9edc9, 0x5a5e07, 0x6b66d29,
+ 0x5bb0ab, 0x6c2ec48, 0x5d05c3, 0x6cf6b23,
+ 0x5e5d4e, 0x6dbe9bb, 0x5fb74e, 0x6e86810,
+ 0x6113c2, 0x6f4e620, 0x6272aa, 0x70163eb,
+ 0x63d405, 0x70de172, 0x6537d4, 0x71a5eb3,
+ 0x669e18, 0x726dbae, 0x6806ce, 0x7335862,
+ 0x6971f9, 0x73fd4cf, 0x6adf97, 0x74c50f4,
+ 0x6c4fa8, 0x758ccd2, 0x6dc22e, 0x7654867,
+ 0x6f3726, 0x771c3b3, 0x70ae92, 0x77e3eb5,
+ 0x722871, 0x78ab96e, 0x73a4c3, 0x79733dc,
+ 0x752389, 0x7a3adff, 0x76a4c2, 0x7b027d7,
+ 0x78286e, 0x7bca163, 0x79ae8c, 0x7c91aa3,
+ 0x7b371e, 0x7d59396, 0x7cc223, 0x7e20c3b,
+ 0x7e4f9b, 0x7ee8493, 0x7fdf85, 0x7fafc9c,
+ 0x8171e2, 0x8077457, 0x8306b2, 0x813ebc2,
+ 0x849df4, 0x82062de, 0x8637a9, 0x82cd9a9,
+ 0x87d3d0, 0x8395024, 0x89726a, 0x845c64d,
+ 0x8b1376, 0x8523c25, 0x8cb6f5, 0x85eb1ab,
+ 0x8e5ce5, 0x86b26de, 0x900548, 0x8779bbe,
+ 0x91b01d, 0x884104b, 0x935d64, 0x8908483,
+ 0x950d1d, 0x89cf867, 0x96bf48, 0x8a96bf6,
+ 0x9873e4, 0x8b5df30, 0x9a2af3, 0x8c25213,
+ 0x9be473, 0x8cec4a0, 0x9da065, 0x8db36d6,
+ 0x9f5ec8, 0x8e7a8b5, 0xa11f9d, 0x8f41a3c,
+ 0xa2e2e3, 0x9008b6a, 0xa4a89b, 0x90cfc40,
+ 0xa670c4, 0x9196cbc, 0xa83b5e, 0x925dcdf,
+ 0xaa086a, 0x9324ca7, 0xabd7e6, 0x93ebc14,
+ 0xada9d4, 0x94b2b27, 0xaf7e33, 0x95799dd,
+ 0xb15502, 0x9640837, 0xb32e42, 0x9707635,
+ 0xb509f3, 0x97ce3d5, 0xb6e815, 0x9895118,
+ 0xb8c8a7, 0x995bdfd, 0xbaabaa, 0x9a22a83,
+ 0xbc911d, 0x9ae96aa, 0xbe7901, 0x9bb0271,
+ 0xc06355, 0x9c76dd8, 0xc25019, 0x9d3d8df,
+ 0xc43f4d, 0x9e04385, 0xc630f2, 0x9ecadc9,
+ 0xc82506, 0x9f917ac, 0xca1b8a, 0xa05812c,
+ 0xcc147f, 0xa11ea49, 0xce0fe3, 0xa1e5303,
+ 0xd00db6, 0xa2abb59, 0xd20dfa, 0xa37234a,
+ 0xd410ad, 0xa438ad7, 0xd615cf, 0xa4ff1fe,
+ 0xd81d61, 0xa5c58c0, 0xda2762, 0xa68bf1b,
+ 0xdc33d2, 0xa752510, 0xde42b2, 0xa818a9d,
+ 0xe05401, 0xa8defc3, 0xe267be, 0xa9a5480,
+ 0xe47deb, 0xaa6b8d5, 0xe69686, 0xab31cc1,
+ 0xe8b190, 0xabf8043, 0xeacf09, 0xacbe35b,
+ 0xeceef1, 0xad84609, 0xef1147, 0xae4a84b,
+ 0xf1360b, 0xaf10a22, 0xf35d3e, 0xafd6b8d,
+ 0xf586df, 0xb09cc8c, 0xf7b2ee, 0xb162d1d,
+ 0xf9e16b, 0xb228d42, 0xfc1257, 0xb2eecf8,
+ 0xfe45b0, 0xb3b4c40, 0x1007b77, 0xb47ab19,
+ 0x102b3ac, 0xb540982, 0x104ee4f, 0xb60677c,
+ 0x1072b5f, 0xb6cc506, 0x1096add, 0xb79221f,
+ 0x10bacc8, 0xb857ec7, 0x10df120, 0xb91dafc,
+ 0x11037e6, 0xb9e36c0, 0x1128119, 0xbaa9211,
+ 0x114ccb9, 0xbb6ecef, 0x1171ac6, 0xbc34759,
+ 0x1196b3f, 0xbcfa150, 0x11bbe26, 0xbdbfad1,
+ 0x11e1379, 0xbe853de, 0x1206b39, 0xbf4ac75,
+ 0x122c566, 0xc010496, 0x12521ff, 0xc0d5c41,
+ 0x1278104, 0xc19b374, 0x129e276, 0xc260a31,
+ 0x12c4653, 0xc326075, 0x12eac9d, 0xc3eb641,
+ 0x1311553, 0xc4b0b94, 0x1338075, 0xc57606e,
+ 0x135ee02, 0xc63b4ce, 0x1385dfb, 0xc7008b3,
+ 0x13ad060, 0xc7c5c1e, 0x13d4530, 0xc88af0e,
+ 0x13fbc6c, 0xc950182, 0x1423613, 0xca1537a,
+ 0x144b225, 0xcada4f5, 0x14730a3, 0xcb9f5f3,
+ 0x149b18b, 0xcc64673, 0x14c34df, 0xcd29676,
+ 0x14eba9d, 0xcdee5f9, 0x15142c6, 0xceb34fe,
+ 0x153cd5a, 0xcf78383, 0x1565a58, 0xd03d189,
+ 0x158e9c1, 0xd101f0e, 0x15b7b94, 0xd1c6c11,
+ 0x15e0fd1, 0xd28b894, 0x160a678, 0xd350495,
+ 0x1633f8a, 0xd415013, 0x165db05, 0xd4d9b0e,
+ 0x16878eb, 0xd59e586, 0x16b193a, 0xd662f7b,
+ 0x16dbbf3, 0xd7278eb, 0x1706115, 0xd7ec1d6,
+ 0x17308a1, 0xd8b0a3d, 0x175b296, 0xd97521d,
+ 0x1785ef4, 0xda39978, 0x17b0dbb, 0xdafe04b,
+ 0x17dbeec, 0xdbc2698, 0x1807285, 0xdc86c5d,
+ 0x1832888, 0xdd4b19a, 0x185e0f3, 0xde0f64f,
+ 0x1889bc6, 0xded3a7b, 0x18b5903, 0xdf97e1d,
+ 0x18e18a7, 0xe05c135, 0x190dab4, 0xe1203c3,
+ 0x1939f29, 0xe1e45c6, 0x1966606, 0xe2a873e,
+ 0x1992f4c, 0xe36c82a, 0x19bfaf9, 0xe430889,
+ 0x19ec90d, 0xe4f485c, 0x1a1998a, 0xe5b87a2,
+ 0x1a46c6e, 0xe67c65a, 0x1a741b9, 0xe740483,
+ 0x1aa196c, 0xe80421e, 0x1acf386, 0xe8c7f2a,
+ 0x1afd007, 0xe98bba7, 0x1b2aef0, 0xea4f793,
+ 0x1b5903f, 0xeb132ef, 0x1b873f5, 0xebd6db9,
+ 0x1bb5a11, 0xec9a7f3, 0x1be4294, 0xed5e19a,
+ 0x1c12d7e, 0xee21aaf, 0x1c41ace, 0xeee5331,
+ 0x1c70a84, 0xefa8b20, 0x1c9fca0, 0xf06c27a,
+ 0x1ccf122, 0xf12f941, 0x1cfe80a, 0xf1f2f73,
+ 0x1d2e158, 0xf2b650f, 0x1d5dd0c, 0xf379a16,
+ 0x1d8db25, 0xf43ce86, 0x1dbdba3, 0xf500260,
+ 0x1dede87, 0xf5c35a3, 0x1e1e3d0, 0xf68684e,
+ 0x1e4eb7e, 0xf749a61, 0x1e7f591, 0xf80cbdc,
+ 0x1eb0209, 0xf8cfcbe, 0x1ee10e5, 0xf992d06,
+ 0x1f12227, 0xfa55cb4, 0x1f435cc, 0xfb18bc8,
+ 0x1f74bd6, 0xfbdba40, 0x1fa6445, 0xfc9e81e,
+ 0x1fd7f17, 0xfd6155f, 0x2009c4e, 0xfe24205,
+ 0x203bbe8, 0xfee6e0d, 0x206dde6, 0xffa9979,
+ 0x20a0248, 0x1006c446, 0x20d290d, 0x1012ee76,
+ 0x2105236, 0x101f1807, 0x2137dc2, 0x102b40f8,
+ 0x216abb1, 0x1037694b, 0x219dc03, 0x104390fd,
+ 0x21d0eb8, 0x104fb80e, 0x22043d0, 0x105bde7f,
+ 0x2237b4b, 0x1068044e, 0x226b528, 0x1074297b,
+ 0x229f167, 0x10804e06, 0x22d3009, 0x108c71ee,
+ 0x230710d, 0x10989532, 0x233b473, 0x10a4b7d3,
+ 0x236fa3b, 0x10b0d9d0, 0x23a4265, 0x10bcfb28,
+ 0x23d8cf1, 0x10c91bda, 0x240d9de, 0x10d53be7,
+ 0x244292c, 0x10e15b4e, 0x2477adc, 0x10ed7a0e,
+ 0x24aceed, 0x10f99827, 0x24e255e, 0x1105b599,
+ 0x2517e31, 0x1111d263, 0x254d965, 0x111dee84,
+ 0x25836f9, 0x112a09fc, 0x25b96ee, 0x113624cb,
+ 0x25ef943, 0x11423ef0, 0x2625df8, 0x114e586a,
+ 0x265c50e, 0x115a713a, 0x2692e83, 0x1166895f,
+ 0x26c9a58, 0x1172a0d7, 0x270088e, 0x117eb7a4,
+ 0x2737922, 0x118acdc4, 0x276ec16, 0x1196e337,
+ 0x27a616a, 0x11a2f7fc, 0x27dd91c, 0x11af0c13,
+ 0x281532e, 0x11bb1f7c, 0x284cf9f, 0x11c73235,
+ 0x2884e6e, 0x11d3443f, 0x28bcf9c, 0x11df5599,
+ 0x28f5329, 0x11eb6643, 0x292d914, 0x11f7763c,
+ 0x296615d, 0x12038584, 0x299ec05, 0x120f941a,
+ 0x29d790a, 0x121ba1fd, 0x2a1086d, 0x1227af2e,
+ 0x2a49a2e, 0x1233bbac, 0x2a82e4d, 0x123fc776,
+ 0x2abc4c9, 0x124bd28c, 0x2af5da2, 0x1257dced,
+ 0x2b2f8d8, 0x1263e699, 0x2b6966c, 0x126fef90,
+ 0x2ba365c, 0x127bf7d1, 0x2bdd8a9, 0x1287ff5b,
+ 0x2c17d52, 0x1294062f, 0x2c52459, 0x12a00c4b,
+ 0x2c8cdbb, 0x12ac11af, 0x2cc7979, 0x12b8165b,
+ 0x2d02794, 0x12c41a4f, 0x2d3d80a, 0x12d01d89,
+ 0x2d78add, 0x12dc2009, 0x2db400a, 0x12e821cf,
+ 0x2def794, 0x12f422db, 0x2e2b178, 0x1300232c,
+ 0x2e66db8, 0x130c22c1, 0x2ea2c53, 0x1318219a,
+ 0x2eded49, 0x13241fb6, 0x2f1b099, 0x13301d16,
+ 0x2f57644, 0x133c19b8, 0x2f93e4a, 0x1348159d,
+ 0x2fd08a9, 0x135410c3, 0x300d563, 0x13600b2a,
+ 0x304a477, 0x136c04d2, 0x30875e5, 0x1377fdbb,
+ 0x30c49ad, 0x1383f5e3, 0x3101fce, 0x138fed4b,
+ 0x313f848, 0x139be3f2, 0x317d31c, 0x13a7d9d7,
+ 0x31bb049, 0x13b3cefa, 0x31f8fcf, 0x13bfc35b,
+ 0x32371ae, 0x13cbb6f8, 0x32755e5, 0x13d7a9d3,
+ 0x32b3c75, 0x13e39be9, 0x32f255e, 0x13ef8d3c,
+ 0x333109e, 0x13fb7dc9, 0x336fe37, 0x14076d91,
+ 0x33aee27, 0x14135c94, 0x33ee070, 0x141f4ad1,
+ 0x342d510, 0x142b3846, 0x346cc07, 0x143724f5,
+ 0x34ac556, 0x144310dd, 0x34ec0fc, 0x144efbfc,
+ 0x352bef9, 0x145ae653, 0x356bf4d, 0x1466cfe1,
+ 0x35ac1f7, 0x1472b8a5, 0x35ec6f8, 0x147ea0a0,
+ 0x362ce50, 0x148a87d1, 0x366d7fd, 0x14966e36,
+ 0x36ae401, 0x14a253d1, 0x36ef25b, 0x14ae38a0,
+ 0x373030a, 0x14ba1ca3, 0x377160f, 0x14c5ffd9,
+ 0x37b2b6a, 0x14d1e242, 0x37f4319, 0x14ddc3de,
+ 0x3835d1e, 0x14e9a4ac, 0x3877978, 0x14f584ac,
+ 0x38b9827, 0x150163dc, 0x38fb92a, 0x150d423d,
+ 0x393dc82, 0x15191fcf, 0x398022f, 0x1524fc90,
+ 0x39c2a2f, 0x1530d881, 0x3a05484, 0x153cb3a0,
+ 0x3a4812c, 0x15488dee, 0x3a8b028, 0x1554676a,
+ 0x3ace178, 0x15604013, 0x3b1151b, 0x156c17e9,
+ 0x3b54b11, 0x1577eeec, 0x3b9835a, 0x1583c51b,
+ 0x3bdbdf6, 0x158f9a76, 0x3c1fae5, 0x159b6efb,
+ 0x3c63a26, 0x15a742ac, 0x3ca7bba, 0x15b31587,
+ 0x3cebfa0, 0x15bee78c, 0x3d305d8, 0x15cab8ba,
+ 0x3d74e62, 0x15d68911, 0x3db993e, 0x15e25890,
+ 0x3dfe66c, 0x15ee2738, 0x3e435ea, 0x15f9f507,
+ 0x3e887bb, 0x1605c1fd, 0x3ecdbdc, 0x16118e1a,
+ 0x3f1324e, 0x161d595d, 0x3f58b10, 0x162923c5,
+ 0x3f9e624, 0x1634ed53, 0x3fe4388, 0x1640b606,
+ 0x402a33c, 0x164c7ddd, 0x4070540, 0x165844d8,
+ 0x40b6994, 0x16640af7, 0x40fd037, 0x166fd039,
+ 0x414392b, 0x167b949d, 0x418a46d, 0x16875823,
+ 0x41d11ff, 0x16931acb, 0x42181e0, 0x169edc94,
+ 0x425f410, 0x16aa9d7e, 0x42a688f, 0x16b65d88,
+ 0x42edf5c, 0x16c21cb2, 0x4335877, 0x16cddafb,
+ 0x437d3e1, 0x16d99864, 0x43c5199, 0x16e554ea,
+ 0x440d19e, 0x16f1108f, 0x44553f2, 0x16fccb51,
+ 0x449d892, 0x17088531, 0x44e5f80, 0x17143e2d,
+ 0x452e8bc, 0x171ff646, 0x4577444, 0x172bad7a,
+ 0x45c0219, 0x173763c9, 0x460923b, 0x17431933,
+ 0x46524a9, 0x174ecdb8, 0x469b963, 0x175a8157,
+ 0x46e5069, 0x1766340f, 0x472e9bc, 0x1771e5e0,
+ 0x477855a, 0x177d96ca, 0x47c2344, 0x178946cc,
+ 0x480c379, 0x1794f5e6, 0x48565f9, 0x17a0a417,
+ 0x48a0ac4, 0x17ac515f, 0x48eb1db, 0x17b7fdbd,
+ 0x4935b3c, 0x17c3a931, 0x49806e7, 0x17cf53bb,
+ 0x49cb4dd, 0x17dafd59, 0x4a1651c, 0x17e6a60c,
+ 0x4a617a6, 0x17f24dd3, 0x4aacc7a, 0x17fdf4ae,
+ 0x4af8397, 0x18099a9c, 0x4b43cfd, 0x18153f9d,
+ 0x4b8f8ad, 0x1820e3b0, 0x4bdb6a6, 0x182c86d5,
+ 0x4c276e8, 0x1838290c, 0x4c73972, 0x1843ca53,
+ 0x4cbfe45, 0x184f6aab, 0x4d0c560, 0x185b0a13,
+ 0x4d58ec3, 0x1866a88a, 0x4da5a6f, 0x18724611,
+ 0x4df2862, 0x187de2a7, 0x4e3f89c, 0x18897e4a,
+ 0x4e8cb1e, 0x189518fc, 0x4ed9fe7, 0x18a0b2bb,
+ 0x4f276f7, 0x18ac4b87, 0x4f7504e, 0x18b7e35f,
+ 0x4fc2bec, 0x18c37a44, 0x50109d0, 0x18cf1034,
+ 0x505e9fb, 0x18daa52f, 0x50acc6b, 0x18e63935,
+ 0x50fb121, 0x18f1cc45, 0x514981d, 0x18fd5e5f,
+ 0x519815f, 0x1908ef82, 0x51e6ce6, 0x19147fae,
+ 0x5235ab2, 0x19200ee3, 0x5284ac3, 0x192b9d1f,
+ 0x52d3d18, 0x19372a64, 0x53231b3, 0x1942b6af,
+ 0x5372891, 0x194e4201, 0x53c21b4, 0x1959cc5a,
+ 0x5411d1b, 0x196555b8, 0x5461ac6, 0x1970de1b,
+ 0x54b1ab4, 0x197c6584, 0x5501ce5, 0x1987ebf0,
+ 0x555215a, 0x19937161, 0x55a2812, 0x199ef5d6,
+ 0x55f310d, 0x19aa794d, 0x5643c4a, 0x19b5fbc8,
+ 0x56949ca, 0x19c17d44, 0x56e598c, 0x19ccfdc2,
+ 0x5736b90, 0x19d87d42, 0x5787fd6, 0x19e3fbc3,
+ 0x57d965d, 0x19ef7944, 0x582af26, 0x19faf5c5,
+ 0x587ca31, 0x1a067145, 0x58ce77c, 0x1a11ebc5,
+ 0x5920708, 0x1a1d6544, 0x59728d5, 0x1a28ddc0,
+ 0x59c4ce3, 0x1a34553b, 0x5a17330, 0x1a3fcbb3,
+ 0x5a69bbe, 0x1a4b4128, 0x5abc68c, 0x1a56b599,
+ 0x5b0f399, 0x1a622907, 0x5b622e6, 0x1a6d9b70,
+ 0x5bb5472, 0x1a790cd4, 0x5c0883d, 0x1a847d33,
+ 0x5c5be47, 0x1a8fec8c, 0x5caf690, 0x1a9b5adf,
+ 0x5d03118, 0x1aa6c82b, 0x5d56ddd, 0x1ab23471,
+ 0x5daace1, 0x1abd9faf, 0x5dfee22, 0x1ac909e5,
+ 0x5e531a1, 0x1ad47312, 0x5ea775e, 0x1adfdb37,
+ 0x5efbf58, 0x1aeb4253, 0x5f5098f, 0x1af6a865,
+ 0x5fa5603, 0x1b020d6c, 0x5ffa4b3, 0x1b0d716a,
+ 0x604f5a0, 0x1b18d45c, 0x60a48c9, 0x1b243643,
+ 0x60f9e2e, 0x1b2f971e, 0x614f5cf, 0x1b3af6ec,
+ 0x61a4fac, 0x1b4655ae, 0x61fabc4, 0x1b51b363,
+ 0x6250a18, 0x1b5d100a, 0x62a6aa6, 0x1b686ba3,
+ 0x62fcd6f, 0x1b73c62d, 0x6353273, 0x1b7f1fa9,
+ 0x63a99b1, 0x1b8a7815, 0x6400329, 0x1b95cf71,
+ 0x6456edb, 0x1ba125bd, 0x64adcc7, 0x1bac7af9,
+ 0x6504ced, 0x1bb7cf23, 0x655bf4c, 0x1bc3223c,
+ 0x65b33e4, 0x1bce7442, 0x660aab5, 0x1bd9c537,
+ 0x66623be, 0x1be51518, 0x66b9f01, 0x1bf063e6,
+ 0x6711c7b, 0x1bfbb1a0, 0x6769c2e, 0x1c06fe46,
+ 0x67c1e18, 0x1c1249d8, 0x681a23a, 0x1c1d9454,
+ 0x6872894, 0x1c28ddbb, 0x68cb124, 0x1c34260c,
+ 0x6923bec, 0x1c3f6d47, 0x697c8eb, 0x1c4ab36b,
+ 0x69d5820, 0x1c55f878, 0x6a2e98b, 0x1c613c6d,
+ 0x6a87d2d, 0x1c6c7f4a, 0x6ae1304, 0x1c77c10e,
+ 0x6b3ab12, 0x1c8301b9, 0x6b94554, 0x1c8e414b,
+ 0x6bee1cd, 0x1c997fc4, 0x6c4807a, 0x1ca4bd21,
+ 0x6ca215c, 0x1caff965, 0x6cfc472, 0x1cbb348d,
+ 0x6d569be, 0x1cc66e99, 0x6db113d, 0x1cd1a78a,
+ 0x6e0baf0, 0x1cdcdf5e, 0x6e666d7, 0x1ce81615,
+ 0x6ec14f2, 0x1cf34baf, 0x6f1c540, 0x1cfe802b,
+ 0x6f777c1, 0x1d09b389, 0x6fd2c75, 0x1d14e5c9,
+ 0x702e35c, 0x1d2016e9, 0x7089c75, 0x1d2b46ea,
+ 0x70e57c0, 0x1d3675cb, 0x714153e, 0x1d41a38c,
+ 0x719d4ed, 0x1d4cd02c, 0x71f96ce, 0x1d57fbaa,
+ 0x7255ae0, 0x1d632608, 0x72b2123, 0x1d6e4f43,
+ 0x730e997, 0x1d79775c, 0x736b43c, 0x1d849e51,
+ 0x73c8111, 0x1d8fc424, 0x7425016, 0x1d9ae8d2,
+ 0x748214c, 0x1da60c5d, 0x74df4b1, 0x1db12ec3,
+ 0x753ca46, 0x1dbc5004, 0x759a20a, 0x1dc7701f,
+ 0x75f7bfe, 0x1dd28f15, 0x7655820, 0x1dddace4,
+ 0x76b3671, 0x1de8c98c, 0x77116f0, 0x1df3e50d,
+ 0x776f99d, 0x1dfeff67, 0x77cde79, 0x1e0a1898,
+ 0x782c582, 0x1e1530a1, 0x788aeb9, 0x1e204781,
+ 0x78e9a1d, 0x1e2b5d38, 0x79487ae, 0x1e3671c5,
+ 0x79a776c, 0x1e418528, 0x7a06957, 0x1e4c9760,
+ 0x7a65d6e, 0x1e57a86d, 0x7ac53b1, 0x1e62b84f,
+ 0x7b24c20, 0x1e6dc705, 0x7b846ba, 0x1e78d48e,
+ 0x7be4381, 0x1e83e0eb, 0x7c44272, 0x1e8eec1b,
+ 0x7ca438f, 0x1e99f61d, 0x7d046d6, 0x1ea4fef0,
+ 0x7d64c47, 0x1eb00696, 0x7dc53e3, 0x1ebb0d0d,
+ 0x7e25daa, 0x1ec61254, 0x7e8699a, 0x1ed1166b,
+ 0x7ee77b3, 0x1edc1953, 0x7f487f6, 0x1ee71b0a,
+ 0x7fa9a62, 0x1ef21b90, 0x800aef7, 0x1efd1ae4,
+ 0x806c5b5, 0x1f081907, 0x80cde9b, 0x1f1315f7,
+ 0x812f9a9, 0x1f1e11b5, 0x81916df, 0x1f290c3f,
+ 0x81f363d, 0x1f340596, 0x82557c3, 0x1f3efdb9,
+ 0x82b7b70, 0x1f49f4a8, 0x831a143, 0x1f54ea62,
+ 0x837c93e, 0x1f5fdee6, 0x83df35f, 0x1f6ad235,
+ 0x8441fa6, 0x1f75c44e, 0x84a4e14, 0x1f80b531,
+ 0x8507ea7, 0x1f8ba4dc, 0x856b160, 0x1f969350,
+ 0x85ce63e, 0x1fa1808c, 0x8631d42, 0x1fac6c91,
+ 0x869566a, 0x1fb7575c, 0x86f91b7, 0x1fc240ef,
+ 0x875cf28, 0x1fcd2948, 0x87c0ebd, 0x1fd81067,
+ 0x8825077, 0x1fe2f64c, 0x8889454, 0x1feddaf6,
+ 0x88eda54, 0x1ff8be65, 0x8952278, 0x2003a099,
+ 0x89b6cbf, 0x200e8190, 0x8a1b928, 0x2019614c,
+ 0x8a807b4, 0x20243fca, 0x8ae5862, 0x202f1d0b,
+ 0x8b4ab32, 0x2039f90f, 0x8bb0023, 0x2044d3d4,
+ 0x8c15736, 0x204fad5b, 0x8c7b06b, 0x205a85a3,
+ 0x8ce0bc0, 0x20655cac, 0x8d46936, 0x20703275,
+ 0x8dac8cd, 0x207b06fe, 0x8e12a84, 0x2085da46,
+ 0x8e78e5b, 0x2090ac4d, 0x8edf452, 0x209b7d13,
+ 0x8f45c68, 0x20a64c97, 0x8fac69e, 0x20b11ad9,
+ 0x90132f2, 0x20bbe7d8, 0x907a166, 0x20c6b395,
+ 0x90e11f7, 0x20d17e0d, 0x91484a8, 0x20dc4742,
+ 0x91af976, 0x20e70f32, 0x9217062, 0x20f1d5de,
+ 0x927e96b, 0x20fc9b44, 0x92e6492, 0x21075f65,
+ 0x934e1d6, 0x21122240, 0x93b6137, 0x211ce3d5,
+ 0x941e2b4, 0x2127a423, 0x948664d, 0x21326329,
+ 0x94eec03, 0x213d20e8, 0x95573d4, 0x2147dd5f,
+ 0x95bfdc1, 0x2152988d, 0x96289c9, 0x215d5273,
+ 0x96917ec, 0x21680b0f, 0x96fa82a, 0x2172c262,
+ 0x9763a83, 0x217d786a, 0x97ccef5, 0x21882d28,
+ 0x9836582, 0x2192e09b, 0x989fe29, 0x219d92c2,
+ 0x99098e9, 0x21a8439e, 0x99735c2, 0x21b2f32e,
+ 0x99dd4b4, 0x21bda171, 0x9a475bf, 0x21c84e67,
+ 0x9ab18e3, 0x21d2fa0f, 0x9b1be1e, 0x21dda46a,
+ 0x9b86572, 0x21e84d76, 0x9bf0edd, 0x21f2f534,
+ 0x9c5ba60, 0x21fd9ba3, 0x9cc67fa, 0x220840c2,
+ 0x9d317ab, 0x2212e492, 0x9d9c973, 0x221d8711,
+ 0x9e07d51, 0x2228283f, 0x9e73346, 0x2232c81c,
+ 0x9edeb50, 0x223d66a8, 0x9f4a570, 0x224803e2,
+ 0x9fb61a5, 0x22529fca, 0xa021fef, 0x225d3a5e,
+ 0xa08e04f, 0x2267d3a0, 0xa0fa2c3, 0x22726b8e,
+ 0xa16674b, 0x227d0228, 0xa1d2de7, 0x2287976e,
+ 0xa23f698, 0x22922b5e, 0xa2ac15b, 0x229cbdfa,
+ 0xa318e32, 0x22a74f40, 0xa385d1d, 0x22b1df30,
+ 0xa3f2e19, 0x22bc6dca, 0xa460129, 0x22c6fb0c,
+ 0xa4cd64b, 0x22d186f8, 0xa53ad7e, 0x22dc118c,
+ 0xa5a86c4, 0x22e69ac8, 0xa61621b, 0x22f122ab,
+ 0xa683f83, 0x22fba936, 0xa6f1efc, 0x23062e67,
+ 0xa760086, 0x2310b23e, 0xa7ce420, 0x231b34bc,
+ 0xa83c9ca, 0x2325b5df, 0xa8ab184, 0x233035a7,
+ 0xa919b4e, 0x233ab414, 0xa988727, 0x23453125,
+ 0xa9f750f, 0x234facda, 0xaa66506, 0x235a2733,
+ 0xaad570c, 0x2364a02e, 0xab44b1f, 0x236f17cc,
+ 0xabb4141, 0x23798e0d, 0xac23971, 0x238402ef,
+ 0xac933ae, 0x238e7673, 0xad02ff8, 0x2398e898,
+ 0xad72e4f, 0x23a3595e, 0xade2eb3, 0x23adc8c4,
+ 0xae53123, 0x23b836ca, 0xaec35a0, 0x23c2a36f,
+ 0xaf33c28, 0x23cd0eb3, 0xafa44bc, 0x23d77896,
+ 0xb014f5b, 0x23e1e117, 0xb085c05, 0x23ec4837,
+ 0xb0f6aba, 0x23f6adf3, 0xb167b79, 0x2401124d,
+ 0xb1d8e43, 0x240b7543, 0xb24a316, 0x2415d6d5,
+ 0xb2bb9f4, 0x24203704, 0xb32d2da, 0x242a95ce,
+ 0xb39edca, 0x2434f332, 0xb410ac3, 0x243f4f32,
+ 0xb4829c4, 0x2449a9cc, 0xb4f4acd, 0x245402ff,
+ 0xb566ddf, 0x245e5acc, 0xb5d92f8, 0x2468b132,
+ 0xb64ba19, 0x24730631, 0xb6be341, 0x247d59c8,
+ 0xb730e70, 0x2487abf7, 0xb7a3ba5, 0x2491fcbe,
+ 0xb816ae1, 0x249c4c1b, 0xb889c23, 0x24a69a0f,
+ 0xb8fcf6b, 0x24b0e699, 0xb9704b9, 0x24bb31ba,
+ 0xb9e3c0b, 0x24c57b6f, 0xba57563, 0x24cfc3ba,
+ 0xbacb0bf, 0x24da0a9a, 0xbb3ee20, 0x24e4500e,
+ 0xbbb2d85, 0x24ee9415, 0xbc26eee, 0x24f8d6b0,
+ 0xbc9b25a, 0x250317df, 0xbd0f7ca, 0x250d57a0,
+ 0xbd83f3d, 0x251795f3, 0xbdf88b3, 0x2521d2d8,
+ 0xbe6d42b, 0x252c0e4f, 0xbee21a5, 0x25364857,
+ 0xbf57121, 0x254080ef, 0xbfcc29f, 0x254ab818,
+ 0xc04161e, 0x2554edd1, 0xc0b6b9e, 0x255f2219,
+ 0xc12c31f, 0x256954f1, 0xc1a1ca0, 0x25738657,
+ 0xc217822, 0x257db64c, 0xc28d5a3, 0x2587e4cf,
+ 0xc303524, 0x259211df, 0xc3796a5, 0x259c3d7c,
+ 0xc3efa25, 0x25a667a7, 0xc465fa3, 0x25b0905d,
+ 0xc4dc720, 0x25bab7a0, 0xc55309b, 0x25c4dd6e,
+ 0xc5c9c14, 0x25cf01c8, 0xc64098b, 0x25d924ac,
+ 0xc6b78ff, 0x25e3461b, 0xc72ea70, 0x25ed6614,
+ 0xc7a5dde, 0x25f78497, 0xc81d349, 0x2601a1a2,
+ 0xc894aaf, 0x260bbd37, 0xc90c412, 0x2615d754,
+ 0xc983f70, 0x261feffa, 0xc9fbcca, 0x262a0727,
+ 0xca73c1e, 0x26341cdb, 0xcaebd6e, 0x263e3117,
+ 0xcb640b8, 0x264843d9, 0xcbdc5fc, 0x26525521,
+ 0xcc54d3a, 0x265c64ef, 0xcccd671, 0x26667342,
+ 0xcd461a2, 0x2670801a, 0xcdbeecc, 0x267a8b77,
+ 0xce37def, 0x26849558, 0xceb0f0a, 0x268e9dbd,
+ 0xcf2a21d, 0x2698a4a6, 0xcfa3729, 0x26a2aa11,
+ 0xd01ce2b, 0x26acadff, 0xd096725, 0x26b6b070,
+ 0xd110216, 0x26c0b162, 0xd189efe, 0x26cab0d6,
+ 0xd203ddc, 0x26d4aecb, 0xd27deb0, 0x26deab41,
+ 0xd2f817b, 0x26e8a637, 0xd37263a, 0x26f29fad,
+ 0xd3eccef, 0x26fc97a3, 0xd467599, 0x27068e18,
+ 0xd4e2037, 0x2710830c, 0xd55ccca, 0x271a767e,
+ 0xd5d7b50, 0x2724686e, 0xd652bcb, 0x272e58dc,
+ 0xd6cde39, 0x273847c8, 0xd74929a, 0x27423530,
+ 0xd7c48ee, 0x274c2115, 0xd840134, 0x27560b76,
+ 0xd8bbb6d, 0x275ff452, 0xd937798, 0x2769dbaa,
+ 0xd9b35b4, 0x2773c17d, 0xda2f5c2, 0x277da5cb,
+ 0xdaab7c0, 0x27878893, 0xdb27bb0, 0x279169d5,
+ 0xdba4190, 0x279b4990, 0xdc20960, 0x27a527c4,
+ 0xdc9d320, 0x27af0472, 0xdd19ed0, 0x27b8df97,
+ 0xdd96c6f, 0x27c2b934, 0xde13bfd, 0x27cc9149,
+ 0xde90d79, 0x27d667d5, 0xdf0e0e4, 0x27e03cd8,
+ 0xdf8b63d, 0x27ea1052, 0xe008d84, 0x27f3e241,
+ 0xe0866b8, 0x27fdb2a7, 0xe1041d9, 0x28078181,
+ 0xe181ee8, 0x28114ed0, 0xe1ffde2, 0x281b1a94,
+ 0xe27dec9, 0x2824e4cc, 0xe2fc19c, 0x282ead78,
+ 0xe37a65b, 0x28387498, 0xe3f8d05, 0x28423a2a,
+ 0xe47759a, 0x284bfe2f, 0xe4f6019, 0x2855c0a6,
+ 0xe574c84, 0x285f8190, 0xe5f3ad8, 0x286940ea,
+ 0xe672b16, 0x2872feb6, 0xe6f1d3d, 0x287cbaf3,
+ 0xe77114e, 0x288675a0, 0xe7f0748, 0x28902ebd,
+ 0xe86ff2a, 0x2899e64a, 0xe8ef8f4, 0x28a39c46,
+ 0xe96f4a7, 0x28ad50b1, 0xe9ef241, 0x28b7038b,
+ 0xea6f1c2, 0x28c0b4d2, 0xeaef32b, 0x28ca6488,
+ 0xeb6f67a, 0x28d412ab, 0xebefbb0, 0x28ddbf3b,
+ 0xec702cb, 0x28e76a37, 0xecf0bcd, 0x28f113a0,
+ 0xed716b4, 0x28fabb75, 0xedf2380, 0x290461b5,
+ 0xee73231, 0x290e0661, 0xeef42c7, 0x2917a977,
+ 0xef75541, 0x29214af8, 0xeff699f, 0x292aeae3,
+ 0xf077fe1, 0x29348937, 0xf0f9805, 0x293e25f5,
+ 0xf17b20d, 0x2947c11c, 0xf1fcdf8, 0x29515aab,
+ 0xf27ebc5, 0x295af2a3, 0xf300b74, 0x29648902,
+ 0xf382d05, 0x296e1dc9, 0xf405077, 0x2977b0f7,
+ 0xf4875ca, 0x2981428c, 0xf509cfe, 0x298ad287,
+ 0xf58c613, 0x299460e8, 0xf60f108, 0x299dedaf,
+ 0xf691ddd, 0x29a778db, 0xf714c91, 0x29b1026c,
+ 0xf797d24, 0x29ba8a61, 0xf81af97, 0x29c410ba,
+ 0xf89e3e8, 0x29cd9578, 0xf921a17, 0x29d71899,
+ 0xf9a5225, 0x29e09a1c, 0xfa28c10, 0x29ea1a03,
+ 0xfaac7d8, 0x29f3984c, 0xfb3057d, 0x29fd14f6,
+ 0xfbb4500, 0x2a069003, 0xfc3865e, 0x2a100970,
+ 0xfcbc999, 0x2a19813f, 0xfd40eaf, 0x2a22f76e,
+ 0xfdc55a1, 0x2a2c6bfd, 0xfe49e6d, 0x2a35deeb,
+ 0xfece915, 0x2a3f503a, 0xff53597, 0x2a48bfe7,
+ 0xffd83f4, 0x2a522df3, 0x1005d42a, 0x2a5b9a5d,
+ 0x100e2639, 0x2a650525, 0x10167a22, 0x2a6e6e4b,
+ 0x101ecfe4, 0x2a77d5ce, 0x1027277e, 0x2a813bae,
+ 0x102f80f1, 0x2a8a9fea, 0x1037dc3b, 0x2a940283,
+ 0x1040395d, 0x2a9d6377, 0x10489856, 0x2aa6c2c6,
+ 0x1050f926, 0x2ab02071, 0x10595bcd, 0x2ab97c77,
+ 0x1061c04a, 0x2ac2d6d6, 0x106a269d, 0x2acc2f90,
+ 0x10728ec6, 0x2ad586a3, 0x107af8c4, 0x2adedc10,
+ 0x10836497, 0x2ae82fd5, 0x108bd23f, 0x2af181f3,
+ 0x109441bb, 0x2afad269, 0x109cb30b, 0x2b042137,
+ 0x10a5262f, 0x2b0d6e5c, 0x10ad9b26, 0x2b16b9d9,
+ 0x10b611f1, 0x2b2003ac, 0x10be8a8d, 0x2b294bd5,
+ 0x10c704fd, 0x2b329255, 0x10cf813e, 0x2b3bd72a,
+ 0x10d7ff51, 0x2b451a55, 0x10e07f36, 0x2b4e5bd4,
+ 0x10e900ec, 0x2b579ba8, 0x10f18472, 0x2b60d9d0,
+ 0x10fa09c9, 0x2b6a164d, 0x110290f0, 0x2b73511c,
+ 0x110b19e7, 0x2b7c8a3f, 0x1113a4ad, 0x2b85c1b5,
+ 0x111c3142, 0x2b8ef77d, 0x1124bfa6, 0x2b982b97,
+ 0x112d4fd9, 0x2ba15e03, 0x1135e1d9, 0x2baa8ec0,
+ 0x113e75a8, 0x2bb3bdce, 0x11470b44, 0x2bbceb2d,
+ 0x114fa2ad, 0x2bc616dd, 0x11583be2, 0x2bcf40dc,
+ 0x1160d6e5, 0x2bd8692b, 0x116973b3, 0x2be18fc9,
+ 0x1172124d, 0x2beab4b6, 0x117ab2b3, 0x2bf3d7f2,
+ 0x118354e4, 0x2bfcf97c, 0x118bf8e0, 0x2c061953,
+ 0x11949ea6, 0x2c0f3779, 0x119d4636, 0x2c1853eb,
+ 0x11a5ef90, 0x2c216eaa, 0x11ae9ab4, 0x2c2a87b6,
+ 0x11b747a0, 0x2c339f0e, 0x11bff656, 0x2c3cb4b1,
+ 0x11c8a6d4, 0x2c45c8a0, 0x11d1591a, 0x2c4edada,
+ 0x11da0d28, 0x2c57eb5e, 0x11e2c2fd, 0x2c60fa2d,
+ 0x11eb7a9a, 0x2c6a0746, 0x11f433fd, 0x2c7312a9,
+ 0x11fcef27, 0x2c7c1c55, 0x1205ac17, 0x2c85244a,
+ 0x120e6acc, 0x2c8e2a87, 0x12172b48, 0x2c972f0d,
+ 0x121fed88, 0x2ca031da, 0x1228b18d, 0x2ca932ef,
+ 0x12317756, 0x2cb2324c, 0x123a3ee4, 0x2cbb2fef,
+ 0x12430835, 0x2cc42bd9, 0x124bd34a, 0x2ccd2609,
+ 0x1254a021, 0x2cd61e7f, 0x125d6ebc, 0x2cdf153a,
+ 0x12663f19, 0x2ce80a3a, 0x126f1138, 0x2cf0fd80,
+ 0x1277e518, 0x2cf9ef09, 0x1280babb, 0x2d02ded7,
+ 0x1289921e, 0x2d0bcce8, 0x12926b41, 0x2d14b93d,
+ 0x129b4626, 0x2d1da3d5, 0x12a422ca, 0x2d268cb0,
+ 0x12ad012e, 0x2d2f73cd, 0x12b5e151, 0x2d38592c,
+ 0x12bec333, 0x2d413ccd, 0x12c7a6d4, 0x2d4a1eaf,
+ 0x12d08c33, 0x2d52fed2, 0x12d97350, 0x2d5bdd36,
+ 0x12e25c2b, 0x2d64b9da, 0x12eb46c3, 0x2d6d94bf,
+ 0x12f43318, 0x2d766de2, 0x12fd2129, 0x2d7f4545,
+ 0x130610f7, 0x2d881ae8, 0x130f0280, 0x2d90eec8,
+ 0x1317f5c6, 0x2d99c0e7, 0x1320eac6, 0x2da29144,
+ 0x1329e181, 0x2dab5fdf, 0x1332d9f7, 0x2db42cb6,
+ 0x133bd427, 0x2dbcf7cb, 0x1344d011, 0x2dc5c11c,
+ 0x134dcdb4, 0x2dce88aa, 0x1356cd11, 0x2dd74e73,
+ 0x135fce26, 0x2de01278, 0x1368d0f3, 0x2de8d4b8,
+ 0x1371d579, 0x2df19534, 0x137adbb6, 0x2dfa53e9,
+ 0x1383e3ab, 0x2e0310d9, 0x138ced57, 0x2e0bcc03,
+ 0x1395f8ba, 0x2e148566, 0x139f05d3, 0x2e1d3d03,
+ 0x13a814a2, 0x2e25f2d8, 0x13b12526, 0x2e2ea6e6,
+ 0x13ba3760, 0x2e37592c, 0x13c34b4f, 0x2e4009aa,
+ 0x13cc60f2, 0x2e48b860, 0x13d5784a, 0x2e51654c,
+ 0x13de9156, 0x2e5a1070, 0x13e7ac15, 0x2e62b9ca,
+ 0x13f0c887, 0x2e6b615a, 0x13f9e6ad, 0x2e740720,
+ 0x14030684, 0x2e7cab1c, 0x140c280e, 0x2e854d4d,
+ 0x14154b4a, 0x2e8dedb3, 0x141e7037, 0x2e968c4d,
+ 0x142796d5, 0x2e9f291b, 0x1430bf24, 0x2ea7c41e,
+ 0x1439e923, 0x2eb05d53, 0x144314d3, 0x2eb8f4bc,
+ 0x144c4232, 0x2ec18a58, 0x14557140, 0x2eca1e27,
+ 0x145ea1fd, 0x2ed2b027, 0x1467d469, 0x2edb405a,
+ 0x14710883, 0x2ee3cebe, 0x147a3e4b, 0x2eec5b53,
+ 0x148375c1, 0x2ef4e619, 0x148caee4, 0x2efd6f10,
+ 0x1495e9b3, 0x2f05f637, 0x149f2630, 0x2f0e7b8e,
+ 0x14a86458, 0x2f16ff14, 0x14b1a42c, 0x2f1f80ca,
+ 0x14bae5ab, 0x2f2800af, 0x14c428d6, 0x2f307ec2,
+ 0x14cd6dab, 0x2f38fb03, 0x14d6b42b, 0x2f417573,
+ 0x14dffc54, 0x2f49ee0f, 0x14e94627, 0x2f5264da,
+ 0x14f291a4, 0x2f5ad9d1, 0x14fbdec9, 0x2f634cf5,
+ 0x15052d97, 0x2f6bbe45, 0x150e7e0d, 0x2f742dc1,
+ 0x1517d02b, 0x2f7c9b69, 0x152123f0, 0x2f85073c,
+ 0x152a795d, 0x2f8d713a, 0x1533d070, 0x2f95d963,
+ 0x153d292a, 0x2f9e3fb6, 0x15468389, 0x2fa6a433,
+ 0x154fdf8f, 0x2faf06da, 0x15593d3a, 0x2fb767aa,
+ 0x15629c89, 0x2fbfc6a3, 0x156bfd7d, 0x2fc823c5,
+ 0x15756016, 0x2fd07f0f, 0x157ec452, 0x2fd8d882,
+ 0x15882a32, 0x2fe1301c, 0x159191b5, 0x2fe985de,
+ 0x159afadb, 0x2ff1d9c7, 0x15a465a3, 0x2ffa2bd6,
+ 0x15add20d, 0x30027c0c, 0x15b74019, 0x300aca69,
+ 0x15c0afc6, 0x301316eb, 0x15ca2115, 0x301b6193,
+ 0x15d39403, 0x3023aa5f, 0x15dd0892, 0x302bf151,
+ 0x15e67ec1, 0x30343667, 0x15eff690, 0x303c79a2,
+ 0x15f96ffd, 0x3044bb00, 0x1602eb0a, 0x304cfa83,
+ 0x160c67b4, 0x30553828, 0x1615e5fd, 0x305d73f0,
+ 0x161f65e4, 0x3065addb, 0x1628e767, 0x306de5e9,
+ 0x16326a88, 0x30761c18, 0x163bef46, 0x307e5069,
+ 0x1645759f, 0x308682dc, 0x164efd94, 0x308eb36f,
+ 0x16588725, 0x3096e223, 0x16621251, 0x309f0ef8,
+ 0x166b9f18, 0x30a739ed, 0x16752d79, 0x30af6302,
+ 0x167ebd74, 0x30b78a36, 0x16884f09, 0x30bfaf89,
+ 0x1691e237, 0x30c7d2fb, 0x169b76fe, 0x30cff48c,
+ 0x16a50d5d, 0x30d8143b, 0x16aea555, 0x30e03208,
+ 0x16b83ee4, 0x30e84df3, 0x16c1da0b, 0x30f067fb,
+ 0x16cb76c9, 0x30f8801f, 0x16d5151d, 0x31009661,
+ 0x16deb508, 0x3108aabf, 0x16e85689, 0x3110bd39,
+ 0x16f1f99f, 0x3118cdcf, 0x16fb9e4b, 0x3120dc80,
+ 0x1705448b, 0x3128e94c, 0x170eec60, 0x3130f433,
+ 0x171895c9, 0x3138fd35, 0x172240c5, 0x31410450,
+ 0x172bed55, 0x31490986, 0x17359b78, 0x31510cd5,
+ 0x173f4b2e, 0x31590e3e, 0x1748fc75, 0x31610dbf,
+ 0x1752af4f, 0x31690b59, 0x175c63ba, 0x3171070c,
+ 0x176619b6, 0x317900d6, 0x176fd143, 0x3180f8b8,
+ 0x17798a60, 0x3188eeb2, 0x1783450d, 0x3190e2c3,
+ 0x178d014a, 0x3198d4ea, 0x1796bf16, 0x31a0c528,
+ 0x17a07e70, 0x31a8b37c, 0x17aa3f5a, 0x31b09fe7,
+ 0x17b401d1, 0x31b88a66, 0x17bdc5d6, 0x31c072fb,
+ 0x17c78b68, 0x31c859a5, 0x17d15288, 0x31d03e64,
+ 0x17db1b34, 0x31d82137, 0x17e4e56c, 0x31e0021e,
+ 0x17eeb130, 0x31e7e118, 0x17f87e7f, 0x31efbe27,
+ 0x18024d59, 0x31f79948, 0x180c1dbf, 0x31ff727c,
+ 0x1815efae, 0x320749c3, 0x181fc328, 0x320f1f1c,
+ 0x1829982b, 0x3216f287, 0x18336eb7, 0x321ec403,
+ 0x183d46cc, 0x32269391, 0x18472069, 0x322e6130,
+ 0x1850fb8e, 0x32362ce0, 0x185ad83c, 0x323df6a0,
+ 0x1864b670, 0x3245be70, 0x186e962b, 0x324d8450,
+ 0x1878776d, 0x32554840, 0x18825a35, 0x325d0a3e,
+ 0x188c3e83, 0x3264ca4c, 0x18962456, 0x326c8868,
+ 0x18a00bae, 0x32744493, 0x18a9f48a, 0x327bfecc,
+ 0x18b3deeb, 0x3283b712, 0x18bdcad0, 0x328b6d66,
+ 0x18c7b838, 0x329321c7, 0x18d1a724, 0x329ad435,
+ 0x18db9792, 0x32a284b0, 0x18e58982, 0x32aa3336,
+ 0x18ef7cf4, 0x32b1dfc9, 0x18f971e8, 0x32b98a67,
+ 0x1903685d, 0x32c13311, 0x190d6053, 0x32c8d9c6,
+ 0x191759c9, 0x32d07e85, 0x192154bf, 0x32d82150,
+ 0x192b5135, 0x32dfc224, 0x19354f2a, 0x32e76102,
+ 0x193f4e9e, 0x32eefdea, 0x19494f90, 0x32f698db,
+ 0x19535201, 0x32fe31d5, 0x195d55ef, 0x3305c8d7,
+ 0x19675b5a, 0x330d5de3, 0x19716243, 0x3314f0f6,
+ 0x197b6aa8, 0x331c8211, 0x19857489, 0x33241134,
+ 0x198f7fe6, 0x332b9e5e, 0x19998cbe, 0x3333298f,
+ 0x19a39b11, 0x333ab2c6, 0x19adaadf, 0x33423a04,
+ 0x19b7bc27, 0x3349bf48, 0x19c1cee9, 0x33514292,
+ 0x19cbe325, 0x3358c3e2, 0x19d5f8d9, 0x33604336,
+ 0x19e01006, 0x3367c090, 0x19ea28ac, 0x336f3bee,
+ 0x19f442c9, 0x3376b551, 0x19fe5e5e, 0x337e2cb7,
+ 0x1a087b69, 0x3385a222, 0x1a1299ec, 0x338d1590,
+ 0x1a1cb9e5, 0x33948701, 0x1a26db54, 0x339bf675,
+ 0x1a30fe38, 0x33a363ec, 0x1a3b2292, 0x33aacf65,
+ 0x1a454860, 0x33b238e0, 0x1a4f6fa3, 0x33b9a05d,
+ 0x1a599859, 0x33c105db, 0x1a63c284, 0x33c8695b,
+ 0x1a6dee21, 0x33cfcadc, 0x1a781b31, 0x33d72a5d,
+ 0x1a8249b4, 0x33de87de, 0x1a8c79a9, 0x33e5e360,
+ 0x1a96ab0f, 0x33ed3ce1, 0x1aa0dde7, 0x33f49462,
+ 0x1aab122f, 0x33fbe9e2, 0x1ab547e8, 0x34033d61,
+ 0x1abf7f11, 0x340a8edf, 0x1ac9b7a9, 0x3411de5b,
+ 0x1ad3f1b1, 0x34192bd5, 0x1ade2d28, 0x3420774d,
+ 0x1ae86a0d, 0x3427c0c3, 0x1af2a860, 0x342f0836,
+ 0x1afce821, 0x34364da6, 0x1b072950, 0x343d9112,
+ 0x1b116beb, 0x3444d27b, 0x1b1baff2, 0x344c11e0,
+ 0x1b25f566, 0x34534f41, 0x1b303c46, 0x345a8a9d,
+ 0x1b3a8491, 0x3461c3f5, 0x1b44ce46, 0x3468fb47,
+ 0x1b4f1967, 0x34703095, 0x1b5965f1, 0x347763dd,
+ 0x1b63b3e5, 0x347e951f, 0x1b6e0342, 0x3485c45b,
+ 0x1b785409, 0x348cf190, 0x1b82a638, 0x34941cbf,
+ 0x1b8cf9cf, 0x349b45e7, 0x1b974ece, 0x34a26d08,
+ 0x1ba1a534, 0x34a99221, 0x1babfd01, 0x34b0b533,
+ 0x1bb65634, 0x34b7d63c, 0x1bc0b0ce, 0x34bef53d,
+ 0x1bcb0cce, 0x34c61236, 0x1bd56a32, 0x34cd2d26,
+ 0x1bdfc8fc, 0x34d4460c, 0x1bea292b, 0x34db5cea,
+ 0x1bf48abd, 0x34e271bd, 0x1bfeedb3, 0x34e98487,
+ 0x1c09520d, 0x34f09546, 0x1c13b7c9, 0x34f7a3fb,
+ 0x1c1e1ee9, 0x34feb0a5, 0x1c28876a, 0x3505bb44,
+ 0x1c32f14d, 0x350cc3d8, 0x1c3d5c91, 0x3513ca60,
+ 0x1c47c936, 0x351acedd, 0x1c52373c, 0x3521d14d,
+ 0x1c5ca6a2, 0x3528d1b1, 0x1c671768, 0x352fd008,
+ 0x1c71898d, 0x3536cc52, 0x1c7bfd11, 0x353dc68f,
+ 0x1c8671f3, 0x3544bebf, 0x1c90e834, 0x354bb4e1,
+ 0x1c9b5fd2, 0x3552a8f4, 0x1ca5d8cd, 0x35599afa,
+ 0x1cb05326, 0x35608af1, 0x1cbacedb, 0x356778d9,
+ 0x1cc54bec, 0x356e64b2, 0x1ccfca59, 0x35754e7c,
+ 0x1cda4a21, 0x357c3636, 0x1ce4cb44, 0x35831be0,
+ 0x1cef4dc2, 0x3589ff7a, 0x1cf9d199, 0x3590e104,
+ 0x1d0456ca, 0x3597c07d, 0x1d0edd55, 0x359e9de5,
+ 0x1d196538, 0x35a5793c, 0x1d23ee74, 0x35ac5282,
+ 0x1d2e7908, 0x35b329b5, 0x1d3904f4, 0x35b9fed7,
+ 0x1d439236, 0x35c0d1e7, 0x1d4e20d0, 0x35c7a2e3,
+ 0x1d58b0c0, 0x35ce71ce, 0x1d634206, 0x35d53ea5,
+ 0x1d6dd4a2, 0x35dc0968, 0x1d786892, 0x35e2d219,
+ 0x1d82fdd8, 0x35e998b5, 0x1d8d9472, 0x35f05d3d,
+ 0x1d982c60, 0x35f71fb1, 0x1da2c5a2, 0x35fde011,
+ 0x1dad6036, 0x36049e5b, 0x1db7fc1e, 0x360b5a90,
+ 0x1dc29958, 0x361214b0, 0x1dcd37e4, 0x3618ccba,
+ 0x1dd7d7c1, 0x361f82af, 0x1de278ef, 0x3626368d,
+ 0x1ded1b6e, 0x362ce855, 0x1df7bf3e, 0x36339806,
+ 0x1e02645d, 0x363a45a0, 0x1e0d0acc, 0x3640f123,
+ 0x1e17b28a, 0x36479a8e, 0x1e225b96, 0x364e41e2,
+ 0x1e2d05f1, 0x3654e71d, 0x1e37b199, 0x365b8a41,
+ 0x1e425e8f, 0x36622b4c, 0x1e4d0cd2, 0x3668ca3e,
+ 0x1e57bc62, 0x366f6717, 0x1e626d3e, 0x367601d7,
+ 0x1e6d1f65, 0x367c9a7e, 0x1e77d2d8, 0x3683310b,
+ 0x1e828796, 0x3689c57d, 0x1e8d3d9e, 0x369057d6,
+ 0x1e97f4f1, 0x3696e814, 0x1ea2ad8d, 0x369d7637,
+ 0x1ead6773, 0x36a4023f, 0x1eb822a1, 0x36aa8c2c,
+ 0x1ec2df18, 0x36b113fd, 0x1ecd9cd7, 0x36b799b3,
+ 0x1ed85bdd, 0x36be1d4c, 0x1ee31c2b, 0x36c49ec9,
+ 0x1eedddc0, 0x36cb1e2a, 0x1ef8a09b, 0x36d19b6e,
+ 0x1f0364bc, 0x36d81695, 0x1f0e2a22, 0x36de8f9e,
+ 0x1f18f0ce, 0x36e5068a, 0x1f23b8be, 0x36eb7b58,
+ 0x1f2e81f3, 0x36f1ee09, 0x1f394c6b, 0x36f85e9a,
+ 0x1f441828, 0x36fecd0e, 0x1f4ee527, 0x37053962,
+ 0x1f59b369, 0x370ba398, 0x1f6482ed, 0x37120bae,
+ 0x1f6f53b3, 0x371871a5, 0x1f7a25ba, 0x371ed57c,
+ 0x1f84f902, 0x37253733, 0x1f8fcd8b, 0x372b96ca,
+ 0x1f9aa354, 0x3731f440, 0x1fa57a5d, 0x37384f95,
+ 0x1fb052a5, 0x373ea8ca, 0x1fbb2c2c, 0x3744ffdd,
+ 0x1fc606f1, 0x374b54ce, 0x1fd0e2f5, 0x3751a79e,
+ 0x1fdbc036, 0x3757f84c, 0x1fe69eb4, 0x375e46d8,
+ 0x1ff17e70, 0x37649341, 0x1ffc5f67, 0x376add88,
+ 0x2007419b, 0x377125ac, 0x2012250a, 0x37776bac,
+ 0x201d09b4, 0x377daf89, 0x2027ef99, 0x3783f143,
+ 0x2032d6b8, 0x378a30d8, 0x203dbf11, 0x37906e49,
+ 0x2048a8a4, 0x3796a996, 0x2053936f, 0x379ce2be,
+ 0x205e7f74, 0x37a319c2, 0x20696cb0, 0x37a94ea0,
+ 0x20745b24, 0x37af8159, 0x207f4acf, 0x37b5b1ec,
+ 0x208a3bb2, 0x37bbe05a, 0x20952dcb, 0x37c20ca1,
+ 0x20a0211a, 0x37c836c2, 0x20ab159e, 0x37ce5ebd,
+ 0x20b60b58, 0x37d48490, 0x20c10247, 0x37daa83d,
+ 0x20cbfa6a, 0x37e0c9c3, 0x20d6f3c1, 0x37e6e921,
+ 0x20e1ee4b, 0x37ed0657, 0x20ecea09, 0x37f32165,
+ 0x20f7e6f9, 0x37f93a4b, 0x2102e51c, 0x37ff5109,
+ 0x210de470, 0x3805659e, 0x2118e4f6, 0x380b780a,
+ 0x2123e6ad, 0x3811884d, 0x212ee995, 0x38179666,
+ 0x2139edac, 0x381da256, 0x2144f2f3, 0x3823ac1d,
+ 0x214ff96a, 0x3829b3b9, 0x215b0110, 0x382fb92a,
+ 0x216609e3, 0x3835bc71, 0x217113e5, 0x383bbd8e,
+ 0x217c1f15, 0x3841bc7f, 0x21872b72, 0x3847b946,
+ 0x219238fb, 0x384db3e0, 0x219d47b1, 0x3853ac4f,
+ 0x21a85793, 0x3859a292, 0x21b368a0, 0x385f96a9,
+ 0x21be7ad8, 0x38658894, 0x21c98e3b, 0x386b7852,
+ 0x21d4a2c8, 0x387165e3, 0x21dfb87f, 0x38775147,
+ 0x21eacf5f, 0x387d3a7e, 0x21f5e768, 0x38832187,
+ 0x22010099, 0x38890663, 0x220c1af3, 0x388ee910,
+ 0x22173674, 0x3894c98f, 0x2222531c, 0x389aa7e0,
+ 0x222d70eb, 0x38a08402, 0x22388fe1, 0x38a65df6,
+ 0x2243affc, 0x38ac35ba, 0x224ed13d, 0x38b20b4f,
+ 0x2259f3a3, 0x38b7deb4, 0x2265172e, 0x38bdafea,
+ 0x22703bdc, 0x38c37eef, 0x227b61af, 0x38c94bc4,
+ 0x228688a4, 0x38cf1669, 0x2291b0bd, 0x38d4dedd,
+ 0x229cd9f8, 0x38daa520, 0x22a80456, 0x38e06932,
+ 0x22b32fd4, 0x38e62b13, 0x22be5c74, 0x38ebeac2,
+ 0x22c98a35, 0x38f1a840, 0x22d4b916, 0x38f7638b,
+ 0x22dfe917, 0x38fd1ca4, 0x22eb1a37, 0x3902d38b,
+ 0x22f64c77, 0x3908883f, 0x23017fd5, 0x390e3ac0,
+ 0x230cb451, 0x3913eb0e, 0x2317e9eb, 0x39199929,
+ 0x232320a2, 0x391f4510, 0x232e5876, 0x3924eec3,
+ 0x23399167, 0x392a9642, 0x2344cb73, 0x39303b8e,
+ 0x2350069b, 0x3935dea4, 0x235b42df, 0x393b7f86,
+ 0x2366803c, 0x39411e33, 0x2371beb5, 0x3946baac,
+ 0x237cfe47, 0x394c54ee, 0x23883ef2, 0x3951ecfc,
+ 0x239380b6, 0x395782d3, 0x239ec393, 0x395d1675,
+ 0x23aa0788, 0x3962a7e0, 0x23b54c95, 0x39683715,
+ 0x23c092b9, 0x396dc414, 0x23cbd9f4, 0x39734edc,
+ 0x23d72245, 0x3978d76c, 0x23e26bac, 0x397e5dc6,
+ 0x23edb628, 0x3983e1e8, 0x23f901ba, 0x398963d2,
+ 0x24044e60, 0x398ee385, 0x240f9c1a, 0x399460ff,
+ 0x241aeae8, 0x3999dc42, 0x24263ac9, 0x399f554b,
+ 0x24318bbe, 0x39a4cc1c, 0x243cddc4, 0x39aa40b4,
+ 0x244830dd, 0x39afb313, 0x24538507, 0x39b52339,
+ 0x245eda43, 0x39ba9125, 0x246a308f, 0x39bffcd7,
+ 0x247587eb, 0x39c5664f, 0x2480e057, 0x39cacd8d,
+ 0x248c39d3, 0x39d03291, 0x2497945d, 0x39d5955a,
+ 0x24a2eff6, 0x39daf5e8, 0x24ae4c9d, 0x39e0543c,
+ 0x24b9aa52, 0x39e5b054, 0x24c50914, 0x39eb0a31,
+ 0x24d068e2, 0x39f061d2, 0x24dbc9bd, 0x39f5b737,
+ 0x24e72ba4, 0x39fb0a60, 0x24f28e96, 0x3a005b4d,
+ 0x24fdf294, 0x3a05a9fd, 0x2509579b, 0x3a0af671,
+ 0x2514bdad, 0x3a1040a8, 0x252024c9, 0x3a1588a2,
+ 0x252b8cee, 0x3a1ace5f, 0x2536f61b, 0x3a2011de,
+ 0x25426051, 0x3a25531f, 0x254dcb8f, 0x3a2a9223,
+ 0x255937d5, 0x3a2fcee8, 0x2564a521, 0x3a350970,
+ 0x25701374, 0x3a3a41b9, 0x257b82cd, 0x3a3f77c3,
+ 0x2586f32c, 0x3a44ab8e, 0x25926490, 0x3a49dd1a,
+ 0x259dd6f9, 0x3a4f0c67, 0x25a94a67, 0x3a543974,
+ 0x25b4bed8, 0x3a596442, 0x25c0344d, 0x3a5e8cd0,
+ 0x25cbaac5, 0x3a63b31d, 0x25d72240, 0x3a68d72b,
+ 0x25e29abc, 0x3a6df8f8, 0x25ee143b, 0x3a731884,
+ 0x25f98ebb, 0x3a7835cf, 0x26050a3b, 0x3a7d50da,
+ 0x261086bc, 0x3a8269a3, 0x261c043d, 0x3a87802a,
+ 0x262782be, 0x3a8c9470, 0x2633023e, 0x3a91a674,
+ 0x263e82bc, 0x3a96b636, 0x264a0438, 0x3a9bc3b6,
+ 0x265586b3, 0x3aa0cef3, 0x26610a2a, 0x3aa5d7ee,
+ 0x266c8e9f, 0x3aaadea6, 0x26781410, 0x3aafe31b,
+ 0x26839a7c, 0x3ab4e54c, 0x268f21e5, 0x3ab9e53a,
+ 0x269aaa48, 0x3abee2e5, 0x26a633a6, 0x3ac3de4c,
+ 0x26b1bdff, 0x3ac8d76f, 0x26bd4951, 0x3acdce4d,
+ 0x26c8d59c, 0x3ad2c2e8, 0x26d462e1, 0x3ad7b53d,
+ 0x26dff11d, 0x3adca54e, 0x26eb8052, 0x3ae1931a,
+ 0x26f7107e, 0x3ae67ea1, 0x2702a1a1, 0x3aeb67e3,
+ 0x270e33bb, 0x3af04edf, 0x2719c6cb, 0x3af53395,
+ 0x27255ad1, 0x3afa1605, 0x2730efcc, 0x3afef630,
+ 0x273c85bc, 0x3b03d414, 0x27481ca1, 0x3b08afb2,
+ 0x2753b479, 0x3b0d8909, 0x275f4d45, 0x3b126019,
+ 0x276ae704, 0x3b1734e2, 0x277681b6, 0x3b1c0764,
+ 0x27821d59, 0x3b20d79e, 0x278db9ef, 0x3b25a591,
+ 0x27995776, 0x3b2a713d, 0x27a4f5ed, 0x3b2f3aa0,
+ 0x27b09555, 0x3b3401bb, 0x27bc35ad, 0x3b38c68e,
+ 0x27c7d6f4, 0x3b3d8918, 0x27d3792b, 0x3b42495a,
+ 0x27df1c50, 0x3b470753, 0x27eac063, 0x3b4bc303,
+ 0x27f66564, 0x3b507c69, 0x28020b52, 0x3b553386,
+ 0x280db22d, 0x3b59e85a, 0x281959f4, 0x3b5e9ae4,
+ 0x282502a7, 0x3b634b23, 0x2830ac45, 0x3b67f919,
+ 0x283c56cf, 0x3b6ca4c4, 0x28480243, 0x3b714e25,
+ 0x2853aea1, 0x3b75f53c, 0x285f5be9, 0x3b7a9a07,
+ 0x286b0a1a, 0x3b7f3c87, 0x2876b934, 0x3b83dcbc,
+ 0x28826936, 0x3b887aa6, 0x288e1a20, 0x3b8d1644,
+ 0x2899cbf1, 0x3b91af97, 0x28a57ea9, 0x3b96469d,
+ 0x28b13248, 0x3b9adb57, 0x28bce6cd, 0x3b9f6dc5,
+ 0x28c89c37, 0x3ba3fde7, 0x28d45286, 0x3ba88bbc,
+ 0x28e009ba, 0x3bad1744, 0x28ebc1d3, 0x3bb1a080,
+ 0x28f77acf, 0x3bb6276e, 0x290334af, 0x3bbaac0e,
+ 0x290eef71, 0x3bbf2e62, 0x291aab16, 0x3bc3ae67,
+ 0x2926679c, 0x3bc82c1f, 0x29322505, 0x3bcca789,
+ 0x293de34e, 0x3bd120a4, 0x2949a278, 0x3bd59771,
+ 0x29556282, 0x3bda0bf0, 0x2961236c, 0x3bde7e20,
+ 0x296ce535, 0x3be2ee01, 0x2978a7dd, 0x3be75b93,
+ 0x29846b63, 0x3bebc6d5, 0x29902fc7, 0x3bf02fc9,
+ 0x299bf509, 0x3bf4966c, 0x29a7bb28, 0x3bf8fac0,
+ 0x29b38223, 0x3bfd5cc4, 0x29bf49fa, 0x3c01bc78,
+ 0x29cb12ad, 0x3c0619dc, 0x29d6dc3b, 0x3c0a74f0,
+ 0x29e2a6a3, 0x3c0ecdb2, 0x29ee71e6, 0x3c132424,
+ 0x29fa3e03, 0x3c177845, 0x2a060af9, 0x3c1bca16,
+ 0x2a11d8c8, 0x3c201994, 0x2a1da770, 0x3c2466c2,
+ 0x2a2976ef, 0x3c28b19e, 0x2a354746, 0x3c2cfa28,
+ 0x2a411874, 0x3c314060, 0x2a4cea79, 0x3c358446,
+ 0x2a58bd54, 0x3c39c5da, 0x2a649105, 0x3c3e051b,
+ 0x2a70658a, 0x3c42420a, 0x2a7c3ae5, 0x3c467ca6,
+ 0x2a881114, 0x3c4ab4ef, 0x2a93e817, 0x3c4eeae5,
+ 0x2a9fbfed, 0x3c531e88, 0x2aab9896, 0x3c574fd8,
+ 0x2ab77212, 0x3c5b7ed4, 0x2ac34c60, 0x3c5fab7c,
+ 0x2acf277f, 0x3c63d5d1, 0x2adb0370, 0x3c67fdd1,
+ 0x2ae6e031, 0x3c6c237e, 0x2af2bdc3, 0x3c7046d6,
+ 0x2afe9c24, 0x3c7467d9, 0x2b0a7b54, 0x3c788688,
+ 0x2b165b54, 0x3c7ca2e2, 0x2b223c22, 0x3c80bce7,
+ 0x2b2e1dbe, 0x3c84d496, 0x2b3a0027, 0x3c88e9f1,
+ 0x2b45e35d, 0x3c8cfcf6, 0x2b51c760, 0x3c910da5,
+ 0x2b5dac2f, 0x3c951bff, 0x2b6991ca, 0x3c992803,
+ 0x2b75782f, 0x3c9d31b0, 0x2b815f60, 0x3ca13908,
+ 0x2b8d475b, 0x3ca53e09, 0x2b99301f, 0x3ca940b3,
+ 0x2ba519ad, 0x3cad4107, 0x2bb10404, 0x3cb13f04,
+ 0x2bbcef23, 0x3cb53aaa, 0x2bc8db0b, 0x3cb933f9,
+ 0x2bd4c7ba, 0x3cbd2af0, 0x2be0b52f, 0x3cc11f90,
+ 0x2beca36c, 0x3cc511d9, 0x2bf8926f, 0x3cc901c9,
+ 0x2c048237, 0x3cccef62, 0x2c1072c4, 0x3cd0daa2,
+ 0x2c1c6417, 0x3cd4c38b, 0x2c28562d, 0x3cd8aa1b,
+ 0x2c344908, 0x3cdc8e52, 0x2c403ca5, 0x3ce07031,
+ 0x2c4c3106, 0x3ce44fb7, 0x2c582629, 0x3ce82ce4,
+ 0x2c641c0e, 0x3cec07b8, 0x2c7012b5, 0x3cefe032,
+ 0x2c7c0a1d, 0x3cf3b653, 0x2c880245, 0x3cf78a1b,
+ 0x2c93fb2e, 0x3cfb5b89, 0x2c9ff4d6, 0x3cff2a9d,
+ 0x2cabef3d, 0x3d02f757, 0x2cb7ea63, 0x3d06c1b6,
+ 0x2cc3e648, 0x3d0a89bc, 0x2ccfe2ea, 0x3d0e4f67,
+ 0x2cdbe04a, 0x3d1212b7, 0x2ce7de66, 0x3d15d3ad,
+ 0x2cf3dd3f, 0x3d199248, 0x2cffdcd4, 0x3d1d4e88,
+ 0x2d0bdd25, 0x3d21086c, 0x2d17de31, 0x3d24bff6,
+ 0x2d23dff7, 0x3d287523, 0x2d2fe277, 0x3d2c27f6,
+ 0x2d3be5b1, 0x3d2fd86c, 0x2d47e9a5, 0x3d338687,
+ 0x2d53ee51, 0x3d373245, 0x2d5ff3b5, 0x3d3adba7,
+ 0x2d6bf9d1, 0x3d3e82ae, 0x2d7800a5, 0x3d422757,
+ 0x2d84082f, 0x3d45c9a4, 0x2d901070, 0x3d496994,
+ 0x2d9c1967, 0x3d4d0728, 0x2da82313, 0x3d50a25e,
+ 0x2db42d74, 0x3d543b37, 0x2dc0388a, 0x3d57d1b3,
+ 0x2dcc4454, 0x3d5b65d2, 0x2dd850d2, 0x3d5ef793,
+ 0x2de45e03, 0x3d6286f6, 0x2df06be6, 0x3d6613fb,
+ 0x2dfc7a7c, 0x3d699ea3, 0x2e0889c4, 0x3d6d26ec,
+ 0x2e1499bd, 0x3d70acd7, 0x2e20aa67, 0x3d743064,
+ 0x2e2cbbc1, 0x3d77b192, 0x2e38cdcb, 0x3d7b3061,
+ 0x2e44e084, 0x3d7eacd2, 0x2e50f3ed, 0x3d8226e4,
+ 0x2e5d0804, 0x3d859e96, 0x2e691cc9, 0x3d8913ea,
+ 0x2e75323c, 0x3d8c86de, 0x2e81485c, 0x3d8ff772,
+ 0x2e8d5f29, 0x3d9365a8, 0x2e9976a1, 0x3d96d17d,
+ 0x2ea58ec6, 0x3d9a3af2, 0x2eb1a796, 0x3d9da208,
+ 0x2ebdc110, 0x3da106bd, 0x2ec9db35, 0x3da46912,
+ 0x2ed5f604, 0x3da7c907, 0x2ee2117c, 0x3dab269b,
+ 0x2eee2d9d, 0x3dae81cf, 0x2efa4a67, 0x3db1daa2,
+ 0x2f0667d9, 0x3db53113, 0x2f1285f2, 0x3db88524,
+ 0x2f1ea4b2, 0x3dbbd6d4, 0x2f2ac419, 0x3dbf2622,
+ 0x2f36e426, 0x3dc2730f, 0x2f4304d8, 0x3dc5bd9b,
+ 0x2f4f2630, 0x3dc905c5, 0x2f5b482d, 0x3dcc4b8d,
+ 0x2f676ace, 0x3dcf8ef3, 0x2f738e12, 0x3dd2cff7,
+ 0x2f7fb1fa, 0x3dd60e99, 0x2f8bd685, 0x3dd94ad8,
+ 0x2f97fbb2, 0x3ddc84b5, 0x2fa42181, 0x3ddfbc30,
+ 0x2fb047f2, 0x3de2f148, 0x2fbc6f03, 0x3de623fd,
+ 0x2fc896b5, 0x3de9544f, 0x2fd4bf08, 0x3dec823e,
+ 0x2fe0e7f9, 0x3defadca, 0x2fed118a, 0x3df2d6f3,
+ 0x2ff93bba, 0x3df5fdb8, 0x30056687, 0x3df9221a,
+ 0x301191f3, 0x3dfc4418, 0x301dbdfb, 0x3dff63b2,
+ 0x3029eaa1, 0x3e0280e9, 0x303617e2, 0x3e059bbb,
+ 0x304245c0, 0x3e08b42a, 0x304e7438, 0x3e0bca34,
+ 0x305aa34c, 0x3e0eddd9, 0x3066d2fa, 0x3e11ef1b,
+ 0x30730342, 0x3e14fdf7, 0x307f3424, 0x3e180a6f,
+ 0x308b659f, 0x3e1b1482, 0x309797b2, 0x3e1e1c30,
+ 0x30a3ca5d, 0x3e212179, 0x30affda0, 0x3e24245d,
+ 0x30bc317a, 0x3e2724db, 0x30c865ea, 0x3e2a22f4,
+ 0x30d49af1, 0x3e2d1ea8, 0x30e0d08d, 0x3e3017f6,
+ 0x30ed06bf, 0x3e330ede, 0x30f93d86, 0x3e360360,
+ 0x310574e0, 0x3e38f57c, 0x3111accf, 0x3e3be532,
+ 0x311de551, 0x3e3ed282, 0x312a1e66, 0x3e41bd6c,
+ 0x3136580d, 0x3e44a5ef, 0x31429247, 0x3e478c0b,
+ 0x314ecd11, 0x3e4a6fc1, 0x315b086d, 0x3e4d5110,
+ 0x31674459, 0x3e502ff9, 0x317380d6, 0x3e530c7a,
+ 0x317fbde2, 0x3e55e694, 0x318bfb7d, 0x3e58be47,
+ 0x319839a6, 0x3e5b9392, 0x31a4785e, 0x3e5e6676,
+ 0x31b0b7a4, 0x3e6136f3, 0x31bcf777, 0x3e640507,
+ 0x31c937d6, 0x3e66d0b4, 0x31d578c2, 0x3e6999fa,
+ 0x31e1ba3a, 0x3e6c60d7, 0x31edfc3d, 0x3e6f254c,
+ 0x31fa3ecb, 0x3e71e759, 0x320681e3, 0x3e74a6fd,
+ 0x3212c585, 0x3e77643a, 0x321f09b1, 0x3e7a1f0d,
+ 0x322b4e66, 0x3e7cd778, 0x323793a3, 0x3e7f8d7b,
+ 0x3243d968, 0x3e824114, 0x32501fb5, 0x3e84f245,
+ 0x325c6688, 0x3e87a10c, 0x3268ade3, 0x3e8a4d6a,
+ 0x3274f5c3, 0x3e8cf75f, 0x32813e2a, 0x3e8f9eeb,
+ 0x328d8715, 0x3e92440d, 0x3299d085, 0x3e94e6c6,
+ 0x32a61a7a, 0x3e978715, 0x32b264f2, 0x3e9a24fb,
+ 0x32beafed, 0x3e9cc076, 0x32cafb6b, 0x3e9f5988,
+ 0x32d7476c, 0x3ea1f02f, 0x32e393ef, 0x3ea4846c,
+ 0x32efe0f2, 0x3ea7163f, 0x32fc2e77, 0x3ea9a5a8,
+ 0x33087c7d, 0x3eac32a6, 0x3314cb02, 0x3eaebd3a,
+ 0x33211a07, 0x3eb14563, 0x332d698a, 0x3eb3cb21,
+ 0x3339b98d, 0x3eb64e75, 0x33460a0d, 0x3eb8cf5d,
+ 0x33525b0b, 0x3ebb4ddb, 0x335eac86, 0x3ebdc9ed,
+ 0x336afe7e, 0x3ec04394, 0x337750f2, 0x3ec2bad0,
+ 0x3383a3e2, 0x3ec52fa0, 0x338ff74d, 0x3ec7a205,
+ 0x339c4b32, 0x3eca11fe, 0x33a89f92, 0x3ecc7f8b,
+ 0x33b4f46c, 0x3eceeaad, 0x33c149bf, 0x3ed15363,
+ 0x33cd9f8b, 0x3ed3b9ad, 0x33d9f5cf, 0x3ed61d8a,
+ 0x33e64c8c, 0x3ed87efc, 0x33f2a3bf, 0x3edade01,
+ 0x33fefb6a, 0x3edd3a9a, 0x340b538b, 0x3edf94c7,
+ 0x3417ac22, 0x3ee1ec87, 0x3424052f, 0x3ee441da,
+ 0x34305eb0, 0x3ee694c1, 0x343cb8a7, 0x3ee8e53a,
+ 0x34491311, 0x3eeb3347, 0x34556def, 0x3eed7ee7,
+ 0x3461c940, 0x3eefc81a, 0x346e2504, 0x3ef20ee0,
+ 0x347a8139, 0x3ef45338, 0x3486dde1, 0x3ef69523,
+ 0x34933afa, 0x3ef8d4a1, 0x349f9884, 0x3efb11b1,
+ 0x34abf67e, 0x3efd4c54, 0x34b854e7, 0x3eff8489,
+ 0x34c4b3c0, 0x3f01ba50, 0x34d11308, 0x3f03eda9,
+ 0x34dd72be, 0x3f061e95, 0x34e9d2e3, 0x3f084d12,
+ 0x34f63374, 0x3f0a7921, 0x35029473, 0x3f0ca2c2,
+ 0x350ef5de, 0x3f0ec9f5, 0x351b57b5, 0x3f10eeb9,
+ 0x3527b9f7, 0x3f13110f, 0x35341ca5, 0x3f1530f7,
+ 0x35407fbd, 0x3f174e70, 0x354ce33f, 0x3f19697a,
+ 0x3559472b, 0x3f1b8215, 0x3565ab80, 0x3f1d9842,
+ 0x3572103d, 0x3f1fabff, 0x357e7563, 0x3f21bd4e,
+ 0x358adaf0, 0x3f23cc2e, 0x359740e5, 0x3f25d89e,
+ 0x35a3a740, 0x3f27e29f, 0x35b00e02, 0x3f29ea31,
+ 0x35bc7529, 0x3f2bef53, 0x35c8dcb6, 0x3f2df206,
+ 0x35d544a7, 0x3f2ff24a, 0x35e1acfd, 0x3f31f01d,
+ 0x35ee15b7, 0x3f33eb81, 0x35fa7ed4, 0x3f35e476,
+ 0x3606e854, 0x3f37dafa, 0x36135237, 0x3f39cf0e,
+ 0x361fbc7b, 0x3f3bc0b3, 0x362c2721, 0x3f3dafe7,
+ 0x36389228, 0x3f3f9cab, 0x3644fd8f, 0x3f4186ff,
+ 0x36516956, 0x3f436ee3, 0x365dd57d, 0x3f455456,
+ 0x366a4203, 0x3f473759, 0x3676aee8, 0x3f4917eb,
+ 0x36831c2b, 0x3f4af60d, 0x368f89cb, 0x3f4cd1be,
+ 0x369bf7c9, 0x3f4eaafe, 0x36a86623, 0x3f5081cd,
+ 0x36b4d4d9, 0x3f52562c, 0x36c143ec, 0x3f54281a,
+ 0x36cdb359, 0x3f55f796, 0x36da2321, 0x3f57c4a2,
+ 0x36e69344, 0x3f598f3c, 0x36f303c0, 0x3f5b5765,
+ 0x36ff7496, 0x3f5d1d1d, 0x370be5c4, 0x3f5ee063,
+ 0x3718574b, 0x3f60a138, 0x3724c92a, 0x3f625f9b,
+ 0x37313b60, 0x3f641b8d, 0x373daded, 0x3f65d50d,
+ 0x374a20d0, 0x3f678c1c, 0x3756940a, 0x3f6940b8,
+ 0x37630799, 0x3f6af2e3, 0x376f7b7d, 0x3f6ca29c,
+ 0x377befb5, 0x3f6e4fe3, 0x37886442, 0x3f6ffab8,
+ 0x3794d922, 0x3f71a31b, 0x37a14e55, 0x3f73490b,
+ 0x37adc3db, 0x3f74ec8a, 0x37ba39b3, 0x3f768d96,
+ 0x37c6afdc, 0x3f782c30, 0x37d32657, 0x3f79c857,
+ 0x37df9d22, 0x3f7b620c, 0x37ec143e, 0x3f7cf94e,
+ 0x37f88ba9, 0x3f7e8e1e, 0x38050364, 0x3f80207b,
+ 0x38117b6d, 0x3f81b065, 0x381df3c5, 0x3f833ddd,
+ 0x382a6c6a, 0x3f84c8e2, 0x3836e55d, 0x3f865174,
+ 0x38435e9d, 0x3f87d792, 0x384fd829, 0x3f895b3e,
+ 0x385c5201, 0x3f8adc77, 0x3868cc24, 0x3f8c5b3d,
+ 0x38754692, 0x3f8dd78f, 0x3881c14b, 0x3f8f516e,
+ 0x388e3c4d, 0x3f90c8da, 0x389ab799, 0x3f923dd2,
+ 0x38a7332e, 0x3f93b058, 0x38b3af0c, 0x3f952069,
+ 0x38c02b31, 0x3f968e07, 0x38cca79e, 0x3f97f932,
+ 0x38d92452, 0x3f9961e8, 0x38e5a14d, 0x3f9ac82c,
+ 0x38f21e8e, 0x3f9c2bfb, 0x38fe9c15, 0x3f9d8d56,
+ 0x390b19e0, 0x3f9eec3e, 0x391797f0, 0x3fa048b2,
+ 0x39241645, 0x3fa1a2b2, 0x393094dd, 0x3fa2fa3d,
+ 0x393d13b8, 0x3fa44f55, 0x394992d7, 0x3fa5a1f9,
+ 0x39561237, 0x3fa6f228, 0x396291d9, 0x3fa83fe3,
+ 0x396f11bc, 0x3fa98b2a, 0x397b91e1, 0x3faad3fd,
+ 0x39881245, 0x3fac1a5b, 0x399492ea, 0x3fad5e45,
+ 0x39a113cd, 0x3fae9fbb, 0x39ad94f0, 0x3fafdebb,
+ 0x39ba1651, 0x3fb11b48, 0x39c697f0, 0x3fb2555f,
+ 0x39d319cc, 0x3fb38d02, 0x39df9be6, 0x3fb4c231,
+ 0x39ec1e3b, 0x3fb5f4ea, 0x39f8a0cd, 0x3fb7252f,
+ 0x3a05239a, 0x3fb852ff, 0x3a11a6a3, 0x3fb97e5a,
+ 0x3a1e29e5, 0x3fbaa740, 0x3a2aad62, 0x3fbbcdb1,
+ 0x3a373119, 0x3fbcf1ad, 0x3a43b508, 0x3fbe1334,
+ 0x3a503930, 0x3fbf3246, 0x3a5cbd91, 0x3fc04ee3,
+ 0x3a694229, 0x3fc1690a, 0x3a75c6f8, 0x3fc280bc,
+ 0x3a824bfd, 0x3fc395f9, 0x3a8ed139, 0x3fc4a8c1,
+ 0x3a9b56ab, 0x3fc5b913, 0x3aa7dc52, 0x3fc6c6f0,
+ 0x3ab4622d, 0x3fc7d258, 0x3ac0e83d, 0x3fc8db4a,
+ 0x3acd6e81, 0x3fc9e1c6, 0x3ad9f4f8, 0x3fcae5cd,
+ 0x3ae67ba2, 0x3fcbe75e, 0x3af3027e, 0x3fcce67a,
+ 0x3aff898c, 0x3fcde320, 0x3b0c10cb, 0x3fcedd50,
+ 0x3b18983b, 0x3fcfd50b, 0x3b251fdc, 0x3fd0ca4f,
+ 0x3b31a7ac, 0x3fd1bd1e, 0x3b3e2fac, 0x3fd2ad77,
+ 0x3b4ab7db, 0x3fd39b5a, 0x3b574039, 0x3fd486c7,
+ 0x3b63c8c4, 0x3fd56fbe, 0x3b70517d, 0x3fd6563f,
+ 0x3b7cda63, 0x3fd73a4a, 0x3b896375, 0x3fd81bdf,
+ 0x3b95ecb4, 0x3fd8fafe, 0x3ba2761e, 0x3fd9d7a7,
+ 0x3baeffb3, 0x3fdab1d9, 0x3bbb8973, 0x3fdb8996,
+ 0x3bc8135c, 0x3fdc5edc, 0x3bd49d70, 0x3fdd31ac,
+ 0x3be127ac, 0x3fde0205, 0x3bedb212, 0x3fdecfe8,
+ 0x3bfa3c9f, 0x3fdf9b55, 0x3c06c754, 0x3fe0644b,
+ 0x3c135231, 0x3fe12acb, 0x3c1fdd34, 0x3fe1eed5,
+ 0x3c2c685d, 0x3fe2b067, 0x3c38f3ac, 0x3fe36f84,
+ 0x3c457f21, 0x3fe42c2a, 0x3c520aba, 0x3fe4e659,
+ 0x3c5e9678, 0x3fe59e12, 0x3c6b2259, 0x3fe65354,
+ 0x3c77ae5e, 0x3fe7061f, 0x3c843a85, 0x3fe7b674,
+ 0x3c90c6cf, 0x3fe86452, 0x3c9d533b, 0x3fe90fb9,
+ 0x3ca9dfc8, 0x3fe9b8a9, 0x3cb66c77, 0x3fea5f23,
+ 0x3cc2f945, 0x3feb0326, 0x3ccf8634, 0x3feba4b2,
+ 0x3cdc1342, 0x3fec43c7, 0x3ce8a06f, 0x3fece065,
+ 0x3cf52dbb, 0x3fed7a8c, 0x3d01bb24, 0x3fee123d,
+ 0x3d0e48ab, 0x3feea776, 0x3d1ad650, 0x3fef3a39,
+ 0x3d276410, 0x3fefca84, 0x3d33f1ed, 0x3ff05858,
+ 0x3d407fe6, 0x3ff0e3b6, 0x3d4d0df9, 0x3ff16c9c,
+ 0x3d599c28, 0x3ff1f30b, 0x3d662a70, 0x3ff27703,
+ 0x3d72b8d2, 0x3ff2f884, 0x3d7f474d, 0x3ff3778e,
+ 0x3d8bd5e1, 0x3ff3f420, 0x3d98648d, 0x3ff46e3c,
+ 0x3da4f351, 0x3ff4e5e0, 0x3db1822c, 0x3ff55b0d,
+ 0x3dbe111e, 0x3ff5cdc3, 0x3dcaa027, 0x3ff63e01,
+ 0x3dd72f45, 0x3ff6abc8, 0x3de3be78, 0x3ff71718,
+ 0x3df04dc0, 0x3ff77ff1, 0x3dfcdd1d, 0x3ff7e652,
+ 0x3e096c8d, 0x3ff84a3c, 0x3e15fc11, 0x3ff8abae,
+ 0x3e228ba7, 0x3ff90aaa, 0x3e2f1b50, 0x3ff9672d,
+ 0x3e3bab0b, 0x3ff9c13a, 0x3e483ad8, 0x3ffa18cf,
+ 0x3e54cab5, 0x3ffa6dec, 0x3e615aa3, 0x3ffac092,
+ 0x3e6deaa1, 0x3ffb10c1, 0x3e7a7aae, 0x3ffb5e78,
+ 0x3e870aca, 0x3ffba9b8, 0x3e939af5, 0x3ffbf280,
+ 0x3ea02b2e, 0x3ffc38d1, 0x3eacbb74, 0x3ffc7caa,
+ 0x3eb94bc8, 0x3ffcbe0c, 0x3ec5dc28, 0x3ffcfcf6,
+ 0x3ed26c94, 0x3ffd3969, 0x3edefd0c, 0x3ffd7364,
+ 0x3eeb8d8f, 0x3ffdaae7, 0x3ef81e1d, 0x3ffddff3,
+ 0x3f04aeb5, 0x3ffe1288, 0x3f113f56, 0x3ffe42a4,
+ 0x3f1dd001, 0x3ffe704a, 0x3f2a60b4, 0x3ffe9b77,
+ 0x3f36f170, 0x3ffec42d, 0x3f438234, 0x3ffeea6c,
+ 0x3f5012fe, 0x3fff0e32, 0x3f5ca3d0, 0x3fff2f82,
+ 0x3f6934a8, 0x3fff4e59, 0x3f75c585, 0x3fff6ab9,
+ 0x3f825668, 0x3fff84a1, 0x3f8ee750, 0x3fff9c12,
+ 0x3f9b783c, 0x3fffb10b, 0x3fa8092c, 0x3fffc38c,
+ 0x3fb49a1f, 0x3fffd396, 0x3fc12b16, 0x3fffe128,
+ 0x3fcdbc0f, 0x3fffec43, 0x3fda4d09, 0x3ffff4e6,
+ 0x3fe6de05, 0x3ffffb11, 0x3ff36f02, 0x3ffffec4,
};
@@ -2134,2060 +2136,2059 @@
*/
static const q31_t realCoefBQ31[8192] = {
- 0x40000000, 0x40000000, 0x400c90fe, 0x3ffffec4,
- 0x401921fb, 0x3ffffb11, 0x4025b2f7, 0x3ffff4e6,
- 0x403243f1, 0x3fffec43, 0x403ed4ea, 0x3fffe128,
- 0x404b65e1, 0x3fffd396, 0x4057f6d4, 0x3fffc38c,
- 0x406487c4, 0x3fffb10b, 0x407118b0, 0x3fff9c12,
- 0x407da998, 0x3fff84a1, 0x408a3a7b, 0x3fff6ab9,
- 0x4096cb58, 0x3fff4e59, 0x40a35c30, 0x3fff2f82,
- 0x40afed02, 0x3fff0e32, 0x40bc7dcc, 0x3ffeea6c,
- 0x40c90e90, 0x3ffec42d, 0x40d59f4c, 0x3ffe9b77,
- 0x40e22fff, 0x3ffe704a, 0x40eec0aa, 0x3ffe42a4,
- 0x40fb514b, 0x3ffe1288, 0x4107e1e3, 0x3ffddff3,
- 0x41147271, 0x3ffdaae7, 0x412102f4, 0x3ffd7364,
- 0x412d936c, 0x3ffd3969, 0x413a23d8, 0x3ffcfcf6,
- 0x4146b438, 0x3ffcbe0c, 0x4153448c, 0x3ffc7caa,
- 0x415fd4d2, 0x3ffc38d1, 0x416c650b, 0x3ffbf280,
- 0x4178f536, 0x3ffba9b8, 0x41858552, 0x3ffb5e78,
- 0x4192155f, 0x3ffb10c1, 0x419ea55d, 0x3ffac092,
- 0x41ab354b, 0x3ffa6dec, 0x41b7c528, 0x3ffa18cf,
- 0x41c454f5, 0x3ff9c13a, 0x41d0e4b0, 0x3ff9672d,
- 0x41dd7459, 0x3ff90aaa, 0x41ea03ef, 0x3ff8abae,
- 0x41f69373, 0x3ff84a3c, 0x420322e3, 0x3ff7e652,
- 0x420fb240, 0x3ff77ff1, 0x421c4188, 0x3ff71718,
- 0x4228d0bb, 0x3ff6abc8, 0x42355fd9, 0x3ff63e01,
- 0x4241eee2, 0x3ff5cdc3, 0x424e7dd4, 0x3ff55b0d,
- 0x425b0caf, 0x3ff4e5e0, 0x42679b73, 0x3ff46e3c,
- 0x42742a1f, 0x3ff3f420, 0x4280b8b3, 0x3ff3778e,
- 0x428d472e, 0x3ff2f884, 0x4299d590, 0x3ff27703,
- 0x42a663d8, 0x3ff1f30b, 0x42b2f207, 0x3ff16c9c,
- 0x42bf801a, 0x3ff0e3b6, 0x42cc0e13, 0x3ff05858,
- 0x42d89bf0, 0x3fefca84, 0x42e529b0, 0x3fef3a39,
- 0x42f1b755, 0x3feea776, 0x42fe44dc, 0x3fee123d,
- 0x430ad245, 0x3fed7a8c, 0x43175f91, 0x3fece065,
- 0x4323ecbe, 0x3fec43c7, 0x433079cc, 0x3feba4b2,
- 0x433d06bb, 0x3feb0326, 0x43499389, 0x3fea5f23,
- 0x43562038, 0x3fe9b8a9, 0x4362acc5, 0x3fe90fb9,
- 0x436f3931, 0x3fe86452, 0x437bc57b, 0x3fe7b674,
- 0x438851a2, 0x3fe7061f, 0x4394dda7, 0x3fe65354,
- 0x43a16988, 0x3fe59e12, 0x43adf546, 0x3fe4e659,
- 0x43ba80df, 0x3fe42c2a, 0x43c70c54, 0x3fe36f84,
- 0x43d397a3, 0x3fe2b067, 0x43e022cc, 0x3fe1eed5,
- 0x43ecadcf, 0x3fe12acb, 0x43f938ac, 0x3fe0644b,
- 0x4405c361, 0x3fdf9b55, 0x44124dee, 0x3fdecfe8,
- 0x441ed854, 0x3fde0205, 0x442b6290, 0x3fdd31ac,
- 0x4437eca4, 0x3fdc5edc, 0x4444768d, 0x3fdb8996,
- 0x4451004d, 0x3fdab1d9, 0x445d89e2, 0x3fd9d7a7,
- 0x446a134c, 0x3fd8fafe, 0x44769c8b, 0x3fd81bdf,
- 0x4483259d, 0x3fd73a4a, 0x448fae83, 0x3fd6563f,
- 0x449c373c, 0x3fd56fbe, 0x44a8bfc7, 0x3fd486c7,
- 0x44b54825, 0x3fd39b5a, 0x44c1d054, 0x3fd2ad77,
- 0x44ce5854, 0x3fd1bd1e, 0x44dae024, 0x3fd0ca4f,
- 0x44e767c5, 0x3fcfd50b, 0x44f3ef35, 0x3fcedd50,
- 0x45007674, 0x3fcde320, 0x450cfd82, 0x3fcce67a,
- 0x4519845e, 0x3fcbe75e, 0x45260b08, 0x3fcae5cd,
- 0x4532917f, 0x3fc9e1c6, 0x453f17c3, 0x3fc8db4a,
- 0x454b9dd3, 0x3fc7d258, 0x455823ae, 0x3fc6c6f0,
- 0x4564a955, 0x3fc5b913, 0x45712ec7, 0x3fc4a8c1,
- 0x457db403, 0x3fc395f9, 0x458a3908, 0x3fc280bc,
- 0x4596bdd7, 0x3fc1690a, 0x45a3426f, 0x3fc04ee3,
- 0x45afc6d0, 0x3fbf3246, 0x45bc4af8, 0x3fbe1334,
- 0x45c8cee7, 0x3fbcf1ad, 0x45d5529e, 0x3fbbcdb1,
- 0x45e1d61b, 0x3fbaa740, 0x45ee595d, 0x3fb97e5a,
- 0x45fadc66, 0x3fb852ff, 0x46075f33, 0x3fb7252f,
- 0x4613e1c5, 0x3fb5f4ea, 0x4620641a, 0x3fb4c231,
- 0x462ce634, 0x3fb38d02, 0x46396810, 0x3fb2555f,
- 0x4645e9af, 0x3fb11b48, 0x46526b10, 0x3fafdebb,
- 0x465eec33, 0x3fae9fbb, 0x466b6d16, 0x3fad5e45,
- 0x4677edbb, 0x3fac1a5b, 0x46846e1f, 0x3faad3fd,
- 0x4690ee44, 0x3fa98b2a, 0x469d6e27, 0x3fa83fe3,
- 0x46a9edc9, 0x3fa6f228, 0x46b66d29, 0x3fa5a1f9,
- 0x46c2ec48, 0x3fa44f55, 0x46cf6b23, 0x3fa2fa3d,
- 0x46dbe9bb, 0x3fa1a2b2, 0x46e86810, 0x3fa048b2,
- 0x46f4e620, 0x3f9eec3e, 0x470163eb, 0x3f9d8d56,
- 0x470de172, 0x3f9c2bfb, 0x471a5eb3, 0x3f9ac82c,
- 0x4726dbae, 0x3f9961e8, 0x47335862, 0x3f97f932,
- 0x473fd4cf, 0x3f968e07, 0x474c50f4, 0x3f952069,
- 0x4758ccd2, 0x3f93b058, 0x47654867, 0x3f923dd2,
- 0x4771c3b3, 0x3f90c8da, 0x477e3eb5, 0x3f8f516e,
- 0x478ab96e, 0x3f8dd78f, 0x479733dc, 0x3f8c5b3d,
- 0x47a3adff, 0x3f8adc77, 0x47b027d7, 0x3f895b3e,
- 0x47bca163, 0x3f87d792, 0x47c91aa3, 0x3f865174,
- 0x47d59396, 0x3f84c8e2, 0x47e20c3b, 0x3f833ddd,
- 0x47ee8493, 0x3f81b065, 0x47fafc9c, 0x3f80207b,
- 0x48077457, 0x3f7e8e1e, 0x4813ebc2, 0x3f7cf94e,
- 0x482062de, 0x3f7b620c, 0x482cd9a9, 0x3f79c857,
- 0x48395024, 0x3f782c30, 0x4845c64d, 0x3f768d96,
- 0x48523c25, 0x3f74ec8a, 0x485eb1ab, 0x3f73490b,
- 0x486b26de, 0x3f71a31b, 0x48779bbe, 0x3f6ffab8,
- 0x4884104b, 0x3f6e4fe3, 0x48908483, 0x3f6ca29c,
- 0x489cf867, 0x3f6af2e3, 0x48a96bf6, 0x3f6940b8,
- 0x48b5df30, 0x3f678c1c, 0x48c25213, 0x3f65d50d,
- 0x48cec4a0, 0x3f641b8d, 0x48db36d6, 0x3f625f9b,
- 0x48e7a8b5, 0x3f60a138, 0x48f41a3c, 0x3f5ee063,
- 0x49008b6a, 0x3f5d1d1d, 0x490cfc40, 0x3f5b5765,
- 0x49196cbc, 0x3f598f3c, 0x4925dcdf, 0x3f57c4a2,
- 0x49324ca7, 0x3f55f796, 0x493ebc14, 0x3f54281a,
- 0x494b2b27, 0x3f52562c, 0x495799dd, 0x3f5081cd,
- 0x49640837, 0x3f4eaafe, 0x49707635, 0x3f4cd1be,
- 0x497ce3d5, 0x3f4af60d, 0x49895118, 0x3f4917eb,
- 0x4995bdfd, 0x3f473759, 0x49a22a83, 0x3f455456,
- 0x49ae96aa, 0x3f436ee3, 0x49bb0271, 0x3f4186ff,
- 0x49c76dd8, 0x3f3f9cab, 0x49d3d8df, 0x3f3dafe7,
- 0x49e04385, 0x3f3bc0b3, 0x49ecadc9, 0x3f39cf0e,
- 0x49f917ac, 0x3f37dafa, 0x4a05812c, 0x3f35e476,
- 0x4a11ea49, 0x3f33eb81, 0x4a1e5303, 0x3f31f01d,
- 0x4a2abb59, 0x3f2ff24a, 0x4a37234a, 0x3f2df206,
- 0x4a438ad7, 0x3f2bef53, 0x4a4ff1fe, 0x3f29ea31,
- 0x4a5c58c0, 0x3f27e29f, 0x4a68bf1b, 0x3f25d89e,
- 0x4a752510, 0x3f23cc2e, 0x4a818a9d, 0x3f21bd4e,
- 0x4a8defc3, 0x3f1fabff, 0x4a9a5480, 0x3f1d9842,
- 0x4aa6b8d5, 0x3f1b8215, 0x4ab31cc1, 0x3f19697a,
- 0x4abf8043, 0x3f174e70, 0x4acbe35b, 0x3f1530f7,
- 0x4ad84609, 0x3f13110f, 0x4ae4a84b, 0x3f10eeb9,
- 0x4af10a22, 0x3f0ec9f5, 0x4afd6b8d, 0x3f0ca2c2,
- 0x4b09cc8c, 0x3f0a7921, 0x4b162d1d, 0x3f084d12,
- 0x4b228d42, 0x3f061e95, 0x4b2eecf8, 0x3f03eda9,
- 0x4b3b4c40, 0x3f01ba50, 0x4b47ab19, 0x3eff8489,
- 0x4b540982, 0x3efd4c54, 0x4b60677c, 0x3efb11b1,
- 0x4b6cc506, 0x3ef8d4a1, 0x4b79221f, 0x3ef69523,
- 0x4b857ec7, 0x3ef45338, 0x4b91dafc, 0x3ef20ee0,
- 0x4b9e36c0, 0x3eefc81a, 0x4baa9211, 0x3eed7ee7,
- 0x4bb6ecef, 0x3eeb3347, 0x4bc34759, 0x3ee8e53a,
- 0x4bcfa150, 0x3ee694c1, 0x4bdbfad1, 0x3ee441da,
- 0x4be853de, 0x3ee1ec87, 0x4bf4ac75, 0x3edf94c7,
- 0x4c010496, 0x3edd3a9a, 0x4c0d5c41, 0x3edade01,
- 0x4c19b374, 0x3ed87efc, 0x4c260a31, 0x3ed61d8a,
- 0x4c326075, 0x3ed3b9ad, 0x4c3eb641, 0x3ed15363,
- 0x4c4b0b94, 0x3eceeaad, 0x4c57606e, 0x3ecc7f8b,
- 0x4c63b4ce, 0x3eca11fe, 0x4c7008b3, 0x3ec7a205,
- 0x4c7c5c1e, 0x3ec52fa0, 0x4c88af0e, 0x3ec2bad0,
- 0x4c950182, 0x3ec04394, 0x4ca1537a, 0x3ebdc9ed,
- 0x4cada4f5, 0x3ebb4ddb, 0x4cb9f5f3, 0x3eb8cf5d,
- 0x4cc64673, 0x3eb64e75, 0x4cd29676, 0x3eb3cb21,
- 0x4cdee5f9, 0x3eb14563, 0x4ceb34fe, 0x3eaebd3a,
- 0x4cf78383, 0x3eac32a6, 0x4d03d189, 0x3ea9a5a8,
- 0x4d101f0e, 0x3ea7163f, 0x4d1c6c11, 0x3ea4846c,
- 0x4d28b894, 0x3ea1f02f, 0x4d350495, 0x3e9f5988,
- 0x4d415013, 0x3e9cc076, 0x4d4d9b0e, 0x3e9a24fb,
- 0x4d59e586, 0x3e978715, 0x4d662f7b, 0x3e94e6c6,
- 0x4d7278eb, 0x3e92440d, 0x4d7ec1d6, 0x3e8f9eeb,
- 0x4d8b0a3d, 0x3e8cf75f, 0x4d97521d, 0x3e8a4d6a,
- 0x4da39978, 0x3e87a10c, 0x4dafe04b, 0x3e84f245,
- 0x4dbc2698, 0x3e824114, 0x4dc86c5d, 0x3e7f8d7b,
- 0x4dd4b19a, 0x3e7cd778, 0x4de0f64f, 0x3e7a1f0d,
- 0x4ded3a7b, 0x3e77643a, 0x4df97e1d, 0x3e74a6fd,
- 0x4e05c135, 0x3e71e759, 0x4e1203c3, 0x3e6f254c,
- 0x4e1e45c6, 0x3e6c60d7, 0x4e2a873e, 0x3e6999fa,
- 0x4e36c82a, 0x3e66d0b4, 0x4e430889, 0x3e640507,
- 0x4e4f485c, 0x3e6136f3, 0x4e5b87a2, 0x3e5e6676,
- 0x4e67c65a, 0x3e5b9392, 0x4e740483, 0x3e58be47,
- 0x4e80421e, 0x3e55e694, 0x4e8c7f2a, 0x3e530c7a,
- 0x4e98bba7, 0x3e502ff9, 0x4ea4f793, 0x3e4d5110,
- 0x4eb132ef, 0x3e4a6fc1, 0x4ebd6db9, 0x3e478c0b,
- 0x4ec9a7f3, 0x3e44a5ef, 0x4ed5e19a, 0x3e41bd6c,
- 0x4ee21aaf, 0x3e3ed282, 0x4eee5331, 0x3e3be532,
- 0x4efa8b20, 0x3e38f57c, 0x4f06c27a, 0x3e360360,
- 0x4f12f941, 0x3e330ede, 0x4f1f2f73, 0x3e3017f6,
- 0x4f2b650f, 0x3e2d1ea8, 0x4f379a16, 0x3e2a22f4,
- 0x4f43ce86, 0x3e2724db, 0x4f500260, 0x3e24245d,
- 0x4f5c35a3, 0x3e212179, 0x4f68684e, 0x3e1e1c30,
- 0x4f749a61, 0x3e1b1482, 0x4f80cbdc, 0x3e180a6f,
- 0x4f8cfcbe, 0x3e14fdf7, 0x4f992d06, 0x3e11ef1b,
- 0x4fa55cb4, 0x3e0eddd9, 0x4fb18bc8, 0x3e0bca34,
- 0x4fbdba40, 0x3e08b42a, 0x4fc9e81e, 0x3e059bbb,
- 0x4fd6155f, 0x3e0280e9, 0x4fe24205, 0x3dff63b2,
- 0x4fee6e0d, 0x3dfc4418, 0x4ffa9979, 0x3df9221a,
- 0x5006c446, 0x3df5fdb8, 0x5012ee76, 0x3df2d6f3,
- 0x501f1807, 0x3defadca, 0x502b40f8, 0x3dec823e,
- 0x5037694b, 0x3de9544f, 0x504390fd, 0x3de623fd,
- 0x504fb80e, 0x3de2f148, 0x505bde7f, 0x3ddfbc30,
- 0x5068044e, 0x3ddc84b5, 0x5074297b, 0x3dd94ad8,
- 0x50804e06, 0x3dd60e99, 0x508c71ee, 0x3dd2cff7,
- 0x50989532, 0x3dcf8ef3, 0x50a4b7d3, 0x3dcc4b8d,
- 0x50b0d9d0, 0x3dc905c5, 0x50bcfb28, 0x3dc5bd9b,
- 0x50c91bda, 0x3dc2730f, 0x50d53be7, 0x3dbf2622,
- 0x50e15b4e, 0x3dbbd6d4, 0x50ed7a0e, 0x3db88524,
- 0x50f99827, 0x3db53113, 0x5105b599, 0x3db1daa2,
- 0x5111d263, 0x3dae81cf, 0x511dee84, 0x3dab269b,
- 0x512a09fc, 0x3da7c907, 0x513624cb, 0x3da46912,
- 0x51423ef0, 0x3da106bd, 0x514e586a, 0x3d9da208,
- 0x515a713a, 0x3d9a3af2, 0x5166895f, 0x3d96d17d,
- 0x5172a0d7, 0x3d9365a8, 0x517eb7a4, 0x3d8ff772,
- 0x518acdc4, 0x3d8c86de, 0x5196e337, 0x3d8913ea,
- 0x51a2f7fc, 0x3d859e96, 0x51af0c13, 0x3d8226e4,
- 0x51bb1f7c, 0x3d7eacd2, 0x51c73235, 0x3d7b3061,
- 0x51d3443f, 0x3d77b192, 0x51df5599, 0x3d743064,
- 0x51eb6643, 0x3d70acd7, 0x51f7763c, 0x3d6d26ec,
- 0x52038584, 0x3d699ea3, 0x520f941a, 0x3d6613fb,
- 0x521ba1fd, 0x3d6286f6, 0x5227af2e, 0x3d5ef793,
- 0x5233bbac, 0x3d5b65d2, 0x523fc776, 0x3d57d1b3,
- 0x524bd28c, 0x3d543b37, 0x5257dced, 0x3d50a25e,
- 0x5263e699, 0x3d4d0728, 0x526fef90, 0x3d496994,
- 0x527bf7d1, 0x3d45c9a4, 0x5287ff5b, 0x3d422757,
- 0x5294062f, 0x3d3e82ae, 0x52a00c4b, 0x3d3adba7,
- 0x52ac11af, 0x3d373245, 0x52b8165b, 0x3d338687,
- 0x52c41a4f, 0x3d2fd86c, 0x52d01d89, 0x3d2c27f6,
- 0x52dc2009, 0x3d287523, 0x52e821cf, 0x3d24bff6,
- 0x52f422db, 0x3d21086c, 0x5300232c, 0x3d1d4e88,
- 0x530c22c1, 0x3d199248, 0x5318219a, 0x3d15d3ad,
- 0x53241fb6, 0x3d1212b7, 0x53301d16, 0x3d0e4f67,
- 0x533c19b8, 0x3d0a89bc, 0x5348159d, 0x3d06c1b6,
- 0x535410c3, 0x3d02f757, 0x53600b2a, 0x3cff2a9d,
- 0x536c04d2, 0x3cfb5b89, 0x5377fdbb, 0x3cf78a1b,
- 0x5383f5e3, 0x3cf3b653, 0x538fed4b, 0x3cefe032,
- 0x539be3f2, 0x3cec07b8, 0x53a7d9d7, 0x3ce82ce4,
- 0x53b3cefa, 0x3ce44fb7, 0x53bfc35b, 0x3ce07031,
- 0x53cbb6f8, 0x3cdc8e52, 0x53d7a9d3, 0x3cd8aa1b,
- 0x53e39be9, 0x3cd4c38b, 0x53ef8d3c, 0x3cd0daa2,
- 0x53fb7dc9, 0x3cccef62, 0x54076d91, 0x3cc901c9,
- 0x54135c94, 0x3cc511d9, 0x541f4ad1, 0x3cc11f90,
- 0x542b3846, 0x3cbd2af0, 0x543724f5, 0x3cb933f9,
- 0x544310dd, 0x3cb53aaa, 0x544efbfc, 0x3cb13f04,
- 0x545ae653, 0x3cad4107, 0x5466cfe1, 0x3ca940b3,
- 0x5472b8a5, 0x3ca53e09, 0x547ea0a0, 0x3ca13908,
- 0x548a87d1, 0x3c9d31b0, 0x54966e36, 0x3c992803,
- 0x54a253d1, 0x3c951bff, 0x54ae38a0, 0x3c910da5,
- 0x54ba1ca3, 0x3c8cfcf6, 0x54c5ffd9, 0x3c88e9f1,
- 0x54d1e242, 0x3c84d496, 0x54ddc3de, 0x3c80bce7,
- 0x54e9a4ac, 0x3c7ca2e2, 0x54f584ac, 0x3c788688,
- 0x550163dc, 0x3c7467d9, 0x550d423d, 0x3c7046d6,
- 0x55191fcf, 0x3c6c237e, 0x5524fc90, 0x3c67fdd1,
- 0x5530d881, 0x3c63d5d1, 0x553cb3a0, 0x3c5fab7c,
- 0x55488dee, 0x3c5b7ed4, 0x5554676a, 0x3c574fd8,
- 0x55604013, 0x3c531e88, 0x556c17e9, 0x3c4eeae5,
- 0x5577eeec, 0x3c4ab4ef, 0x5583c51b, 0x3c467ca6,
- 0x558f9a76, 0x3c42420a, 0x559b6efb, 0x3c3e051b,
- 0x55a742ac, 0x3c39c5da, 0x55b31587, 0x3c358446,
- 0x55bee78c, 0x3c314060, 0x55cab8ba, 0x3c2cfa28,
- 0x55d68911, 0x3c28b19e, 0x55e25890, 0x3c2466c2,
- 0x55ee2738, 0x3c201994, 0x55f9f507, 0x3c1bca16,
- 0x5605c1fd, 0x3c177845, 0x56118e1a, 0x3c132424,
- 0x561d595d, 0x3c0ecdb2, 0x562923c5, 0x3c0a74f0,
- 0x5634ed53, 0x3c0619dc, 0x5640b606, 0x3c01bc78,
- 0x564c7ddd, 0x3bfd5cc4, 0x565844d8, 0x3bf8fac0,
- 0x56640af7, 0x3bf4966c, 0x566fd039, 0x3bf02fc9,
- 0x567b949d, 0x3bebc6d5, 0x56875823, 0x3be75b93,
- 0x56931acb, 0x3be2ee01, 0x569edc94, 0x3bde7e20,
- 0x56aa9d7e, 0x3bda0bf0, 0x56b65d88, 0x3bd59771,
- 0x56c21cb2, 0x3bd120a4, 0x56cddafb, 0x3bcca789,
- 0x56d99864, 0x3bc82c1f, 0x56e554ea, 0x3bc3ae67,
- 0x56f1108f, 0x3bbf2e62, 0x56fccb51, 0x3bbaac0e,
- 0x57088531, 0x3bb6276e, 0x57143e2d, 0x3bb1a080,
- 0x571ff646, 0x3bad1744, 0x572bad7a, 0x3ba88bbc,
- 0x573763c9, 0x3ba3fde7, 0x57431933, 0x3b9f6dc5,
- 0x574ecdb8, 0x3b9adb57, 0x575a8157, 0x3b96469d,
- 0x5766340f, 0x3b91af97, 0x5771e5e0, 0x3b8d1644,
- 0x577d96ca, 0x3b887aa6, 0x578946cc, 0x3b83dcbc,
- 0x5794f5e6, 0x3b7f3c87, 0x57a0a417, 0x3b7a9a07,
- 0x57ac515f, 0x3b75f53c, 0x57b7fdbd, 0x3b714e25,
- 0x57c3a931, 0x3b6ca4c4, 0x57cf53bb, 0x3b67f919,
- 0x57dafd59, 0x3b634b23, 0x57e6a60c, 0x3b5e9ae4,
- 0x57f24dd3, 0x3b59e85a, 0x57fdf4ae, 0x3b553386,
- 0x58099a9c, 0x3b507c69, 0x58153f9d, 0x3b4bc303,
- 0x5820e3b0, 0x3b470753, 0x582c86d5, 0x3b42495a,
- 0x5838290c, 0x3b3d8918, 0x5843ca53, 0x3b38c68e,
- 0x584f6aab, 0x3b3401bb, 0x585b0a13, 0x3b2f3aa0,
- 0x5866a88a, 0x3b2a713d, 0x58724611, 0x3b25a591,
- 0x587de2a7, 0x3b20d79e, 0x58897e4a, 0x3b1c0764,
- 0x589518fc, 0x3b1734e2, 0x58a0b2bb, 0x3b126019,
- 0x58ac4b87, 0x3b0d8909, 0x58b7e35f, 0x3b08afb2,
- 0x58c37a44, 0x3b03d414, 0x58cf1034, 0x3afef630,
- 0x58daa52f, 0x3afa1605, 0x58e63935, 0x3af53395,
- 0x58f1cc45, 0x3af04edf, 0x58fd5e5f, 0x3aeb67e3,
- 0x5908ef82, 0x3ae67ea1, 0x59147fae, 0x3ae1931a,
- 0x59200ee3, 0x3adca54e, 0x592b9d1f, 0x3ad7b53d,
- 0x59372a64, 0x3ad2c2e8, 0x5942b6af, 0x3acdce4d,
- 0x594e4201, 0x3ac8d76f, 0x5959cc5a, 0x3ac3de4c,
- 0x596555b8, 0x3abee2e5, 0x5970de1b, 0x3ab9e53a,
- 0x597c6584, 0x3ab4e54c, 0x5987ebf0, 0x3aafe31b,
- 0x59937161, 0x3aaadea6, 0x599ef5d6, 0x3aa5d7ee,
- 0x59aa794d, 0x3aa0cef3, 0x59b5fbc8, 0x3a9bc3b6,
- 0x59c17d44, 0x3a96b636, 0x59ccfdc2, 0x3a91a674,
- 0x59d87d42, 0x3a8c9470, 0x59e3fbc3, 0x3a87802a,
- 0x59ef7944, 0x3a8269a3, 0x59faf5c5, 0x3a7d50da,
- 0x5a067145, 0x3a7835cf, 0x5a11ebc5, 0x3a731884,
- 0x5a1d6544, 0x3a6df8f8, 0x5a28ddc0, 0x3a68d72b,
- 0x5a34553b, 0x3a63b31d, 0x5a3fcbb3, 0x3a5e8cd0,
- 0x5a4b4128, 0x3a596442, 0x5a56b599, 0x3a543974,
- 0x5a622907, 0x3a4f0c67, 0x5a6d9b70, 0x3a49dd1a,
- 0x5a790cd4, 0x3a44ab8e, 0x5a847d33, 0x3a3f77c3,
- 0x5a8fec8c, 0x3a3a41b9, 0x5a9b5adf, 0x3a350970,
- 0x5aa6c82b, 0x3a2fcee8, 0x5ab23471, 0x3a2a9223,
- 0x5abd9faf, 0x3a25531f, 0x5ac909e5, 0x3a2011de,
- 0x5ad47312, 0x3a1ace5f, 0x5adfdb37, 0x3a1588a2,
- 0x5aeb4253, 0x3a1040a8, 0x5af6a865, 0x3a0af671,
- 0x5b020d6c, 0x3a05a9fd, 0x5b0d716a, 0x3a005b4d,
- 0x5b18d45c, 0x39fb0a60, 0x5b243643, 0x39f5b737,
- 0x5b2f971e, 0x39f061d2, 0x5b3af6ec, 0x39eb0a31,
- 0x5b4655ae, 0x39e5b054, 0x5b51b363, 0x39e0543c,
- 0x5b5d100a, 0x39daf5e8, 0x5b686ba3, 0x39d5955a,
- 0x5b73c62d, 0x39d03291, 0x5b7f1fa9, 0x39cacd8d,
- 0x5b8a7815, 0x39c5664f, 0x5b95cf71, 0x39bffcd7,
- 0x5ba125bd, 0x39ba9125, 0x5bac7af9, 0x39b52339,
- 0x5bb7cf23, 0x39afb313, 0x5bc3223c, 0x39aa40b4,
- 0x5bce7442, 0x39a4cc1c, 0x5bd9c537, 0x399f554b,
- 0x5be51518, 0x3999dc42, 0x5bf063e6, 0x399460ff,
- 0x5bfbb1a0, 0x398ee385, 0x5c06fe46, 0x398963d2,
- 0x5c1249d8, 0x3983e1e8, 0x5c1d9454, 0x397e5dc6,
- 0x5c28ddbb, 0x3978d76c, 0x5c34260c, 0x39734edc,
- 0x5c3f6d47, 0x396dc414, 0x5c4ab36b, 0x39683715,
- 0x5c55f878, 0x3962a7e0, 0x5c613c6d, 0x395d1675,
- 0x5c6c7f4a, 0x395782d3, 0x5c77c10e, 0x3951ecfc,
- 0x5c8301b9, 0x394c54ee, 0x5c8e414b, 0x3946baac,
- 0x5c997fc4, 0x39411e33, 0x5ca4bd21, 0x393b7f86,
- 0x5caff965, 0x3935dea4, 0x5cbb348d, 0x39303b8e,
- 0x5cc66e99, 0x392a9642, 0x5cd1a78a, 0x3924eec3,
- 0x5cdcdf5e, 0x391f4510, 0x5ce81615, 0x39199929,
- 0x5cf34baf, 0x3913eb0e, 0x5cfe802b, 0x390e3ac0,
- 0x5d09b389, 0x3908883f, 0x5d14e5c9, 0x3902d38b,
- 0x5d2016e9, 0x38fd1ca4, 0x5d2b46ea, 0x38f7638b,
- 0x5d3675cb, 0x38f1a840, 0x5d41a38c, 0x38ebeac2,
- 0x5d4cd02c, 0x38e62b13, 0x5d57fbaa, 0x38e06932,
- 0x5d632608, 0x38daa520, 0x5d6e4f43, 0x38d4dedd,
- 0x5d79775c, 0x38cf1669, 0x5d849e51, 0x38c94bc4,
- 0x5d8fc424, 0x38c37eef, 0x5d9ae8d2, 0x38bdafea,
- 0x5da60c5d, 0x38b7deb4, 0x5db12ec3, 0x38b20b4f,
- 0x5dbc5004, 0x38ac35ba, 0x5dc7701f, 0x38a65df6,
- 0x5dd28f15, 0x38a08402, 0x5dddace4, 0x389aa7e0,
- 0x5de8c98c, 0x3894c98f, 0x5df3e50d, 0x388ee910,
- 0x5dfeff67, 0x38890663, 0x5e0a1898, 0x38832187,
- 0x5e1530a1, 0x387d3a7e, 0x5e204781, 0x38775147,
- 0x5e2b5d38, 0x387165e3, 0x5e3671c5, 0x386b7852,
- 0x5e418528, 0x38658894, 0x5e4c9760, 0x385f96a9,
- 0x5e57a86d, 0x3859a292, 0x5e62b84f, 0x3853ac4f,
- 0x5e6dc705, 0x384db3e0, 0x5e78d48e, 0x3847b946,
- 0x5e83e0eb, 0x3841bc7f, 0x5e8eec1b, 0x383bbd8e,
- 0x5e99f61d, 0x3835bc71, 0x5ea4fef0, 0x382fb92a,
- 0x5eb00696, 0x3829b3b9, 0x5ebb0d0d, 0x3823ac1d,
- 0x5ec61254, 0x381da256, 0x5ed1166b, 0x38179666,
- 0x5edc1953, 0x3811884d, 0x5ee71b0a, 0x380b780a,
- 0x5ef21b90, 0x3805659e, 0x5efd1ae4, 0x37ff5109,
- 0x5f081907, 0x37f93a4b, 0x5f1315f7, 0x37f32165,
- 0x5f1e11b5, 0x37ed0657, 0x5f290c3f, 0x37e6e921,
- 0x5f340596, 0x37e0c9c3, 0x5f3efdb9, 0x37daa83d,
- 0x5f49f4a8, 0x37d48490, 0x5f54ea62, 0x37ce5ebd,
- 0x5f5fdee6, 0x37c836c2, 0x5f6ad235, 0x37c20ca1,
- 0x5f75c44e, 0x37bbe05a, 0x5f80b531, 0x37b5b1ec,
- 0x5f8ba4dc, 0x37af8159, 0x5f969350, 0x37a94ea0,
- 0x5fa1808c, 0x37a319c2, 0x5fac6c91, 0x379ce2be,
- 0x5fb7575c, 0x3796a996, 0x5fc240ef, 0x37906e49,
- 0x5fcd2948, 0x378a30d8, 0x5fd81067, 0x3783f143,
- 0x5fe2f64c, 0x377daf89, 0x5feddaf6, 0x37776bac,
- 0x5ff8be65, 0x377125ac, 0x6003a099, 0x376add88,
- 0x600e8190, 0x37649341, 0x6019614c, 0x375e46d8,
- 0x60243fca, 0x3757f84c, 0x602f1d0b, 0x3751a79e,
- 0x6039f90f, 0x374b54ce, 0x6044d3d4, 0x3744ffdd,
- 0x604fad5b, 0x373ea8ca, 0x605a85a3, 0x37384f95,
- 0x60655cac, 0x3731f440, 0x60703275, 0x372b96ca,
- 0x607b06fe, 0x37253733, 0x6085da46, 0x371ed57c,
- 0x6090ac4d, 0x371871a5, 0x609b7d13, 0x37120bae,
- 0x60a64c97, 0x370ba398, 0x60b11ad9, 0x37053962,
- 0x60bbe7d8, 0x36fecd0e, 0x60c6b395, 0x36f85e9a,
- 0x60d17e0d, 0x36f1ee09, 0x60dc4742, 0x36eb7b58,
- 0x60e70f32, 0x36e5068a, 0x60f1d5de, 0x36de8f9e,
- 0x60fc9b44, 0x36d81695, 0x61075f65, 0x36d19b6e,
- 0x61122240, 0x36cb1e2a, 0x611ce3d5, 0x36c49ec9,
- 0x6127a423, 0x36be1d4c, 0x61326329, 0x36b799b3,
- 0x613d20e8, 0x36b113fd, 0x6147dd5f, 0x36aa8c2c,
- 0x6152988d, 0x36a4023f, 0x615d5273, 0x369d7637,
- 0x61680b0f, 0x3696e814, 0x6172c262, 0x369057d6,
- 0x617d786a, 0x3689c57d, 0x61882d28, 0x3683310b,
- 0x6192e09b, 0x367c9a7e, 0x619d92c2, 0x367601d7,
- 0x61a8439e, 0x366f6717, 0x61b2f32e, 0x3668ca3e,
- 0x61bda171, 0x36622b4c, 0x61c84e67, 0x365b8a41,
- 0x61d2fa0f, 0x3654e71d, 0x61dda46a, 0x364e41e2,
- 0x61e84d76, 0x36479a8e, 0x61f2f534, 0x3640f123,
- 0x61fd9ba3, 0x363a45a0, 0x620840c2, 0x36339806,
- 0x6212e492, 0x362ce855, 0x621d8711, 0x3626368d,
- 0x6228283f, 0x361f82af, 0x6232c81c, 0x3618ccba,
- 0x623d66a8, 0x361214b0, 0x624803e2, 0x360b5a90,
- 0x62529fca, 0x36049e5b, 0x625d3a5e, 0x35fde011,
- 0x6267d3a0, 0x35f71fb1, 0x62726b8e, 0x35f05d3d,
- 0x627d0228, 0x35e998b5, 0x6287976e, 0x35e2d219,
- 0x62922b5e, 0x35dc0968, 0x629cbdfa, 0x35d53ea5,
- 0x62a74f40, 0x35ce71ce, 0x62b1df30, 0x35c7a2e3,
- 0x62bc6dca, 0x35c0d1e7, 0x62c6fb0c, 0x35b9fed7,
- 0x62d186f8, 0x35b329b5, 0x62dc118c, 0x35ac5282,
- 0x62e69ac8, 0x35a5793c, 0x62f122ab, 0x359e9de5,
- 0x62fba936, 0x3597c07d, 0x63062e67, 0x3590e104,
- 0x6310b23e, 0x3589ff7a, 0x631b34bc, 0x35831be0,
- 0x6325b5df, 0x357c3636, 0x633035a7, 0x35754e7c,
- 0x633ab414, 0x356e64b2, 0x63453125, 0x356778d9,
- 0x634facda, 0x35608af1, 0x635a2733, 0x35599afa,
- 0x6364a02e, 0x3552a8f4, 0x636f17cc, 0x354bb4e1,
- 0x63798e0d, 0x3544bebf, 0x638402ef, 0x353dc68f,
- 0x638e7673, 0x3536cc52, 0x6398e898, 0x352fd008,
- 0x63a3595e, 0x3528d1b1, 0x63adc8c4, 0x3521d14d,
- 0x63b836ca, 0x351acedd, 0x63c2a36f, 0x3513ca60,
- 0x63cd0eb3, 0x350cc3d8, 0x63d77896, 0x3505bb44,
- 0x63e1e117, 0x34feb0a5, 0x63ec4837, 0x34f7a3fb,
- 0x63f6adf3, 0x34f09546, 0x6401124d, 0x34e98487,
- 0x640b7543, 0x34e271bd, 0x6415d6d5, 0x34db5cea,
- 0x64203704, 0x34d4460c, 0x642a95ce, 0x34cd2d26,
- 0x6434f332, 0x34c61236, 0x643f4f32, 0x34bef53d,
- 0x6449a9cc, 0x34b7d63c, 0x645402ff, 0x34b0b533,
- 0x645e5acc, 0x34a99221, 0x6468b132, 0x34a26d08,
- 0x64730631, 0x349b45e7, 0x647d59c8, 0x34941cbf,
- 0x6487abf7, 0x348cf190, 0x6491fcbe, 0x3485c45b,
- 0x649c4c1b, 0x347e951f, 0x64a69a0f, 0x347763dd,
- 0x64b0e699, 0x34703095, 0x64bb31ba, 0x3468fb47,
- 0x64c57b6f, 0x3461c3f5, 0x64cfc3ba, 0x345a8a9d,
- 0x64da0a9a, 0x34534f41, 0x64e4500e, 0x344c11e0,
- 0x64ee9415, 0x3444d27b, 0x64f8d6b0, 0x343d9112,
- 0x650317df, 0x34364da6, 0x650d57a0, 0x342f0836,
- 0x651795f3, 0x3427c0c3, 0x6521d2d8, 0x3420774d,
- 0x652c0e4f, 0x34192bd5, 0x65364857, 0x3411de5b,
- 0x654080ef, 0x340a8edf, 0x654ab818, 0x34033d61,
- 0x6554edd1, 0x33fbe9e2, 0x655f2219, 0x33f49462,
- 0x656954f1, 0x33ed3ce1, 0x65738657, 0x33e5e360,
- 0x657db64c, 0x33de87de, 0x6587e4cf, 0x33d72a5d,
- 0x659211df, 0x33cfcadc, 0x659c3d7c, 0x33c8695b,
- 0x65a667a7, 0x33c105db, 0x65b0905d, 0x33b9a05d,
- 0x65bab7a0, 0x33b238e0, 0x65c4dd6e, 0x33aacf65,
- 0x65cf01c8, 0x33a363ec, 0x65d924ac, 0x339bf675,
- 0x65e3461b, 0x33948701, 0x65ed6614, 0x338d1590,
- 0x65f78497, 0x3385a222, 0x6601a1a2, 0x337e2cb7,
- 0x660bbd37, 0x3376b551, 0x6615d754, 0x336f3bee,
- 0x661feffa, 0x3367c090, 0x662a0727, 0x33604336,
- 0x66341cdb, 0x3358c3e2, 0x663e3117, 0x33514292,
- 0x664843d9, 0x3349bf48, 0x66525521, 0x33423a04,
- 0x665c64ef, 0x333ab2c6, 0x66667342, 0x3333298f,
- 0x6670801a, 0x332b9e5e, 0x667a8b77, 0x33241134,
- 0x66849558, 0x331c8211, 0x668e9dbd, 0x3314f0f6,
- 0x6698a4a6, 0x330d5de3, 0x66a2aa11, 0x3305c8d7,
- 0x66acadff, 0x32fe31d5, 0x66b6b070, 0x32f698db,
- 0x66c0b162, 0x32eefdea, 0x66cab0d6, 0x32e76102,
- 0x66d4aecb, 0x32dfc224, 0x66deab41, 0x32d82150,
- 0x66e8a637, 0x32d07e85, 0x66f29fad, 0x32c8d9c6,
- 0x66fc97a3, 0x32c13311, 0x67068e18, 0x32b98a67,
- 0x6710830c, 0x32b1dfc9, 0x671a767e, 0x32aa3336,
- 0x6724686e, 0x32a284b0, 0x672e58dc, 0x329ad435,
- 0x673847c8, 0x329321c7, 0x67423530, 0x328b6d66,
- 0x674c2115, 0x3283b712, 0x67560b76, 0x327bfecc,
- 0x675ff452, 0x32744493, 0x6769dbaa, 0x326c8868,
- 0x6773c17d, 0x3264ca4c, 0x677da5cb, 0x325d0a3e,
- 0x67878893, 0x32554840, 0x679169d5, 0x324d8450,
- 0x679b4990, 0x3245be70, 0x67a527c4, 0x323df6a0,
- 0x67af0472, 0x32362ce0, 0x67b8df97, 0x322e6130,
- 0x67c2b934, 0x32269391, 0x67cc9149, 0x321ec403,
- 0x67d667d5, 0x3216f287, 0x67e03cd8, 0x320f1f1c,
- 0x67ea1052, 0x320749c3, 0x67f3e241, 0x31ff727c,
- 0x67fdb2a7, 0x31f79948, 0x68078181, 0x31efbe27,
- 0x68114ed0, 0x31e7e118, 0x681b1a94, 0x31e0021e,
- 0x6824e4cc, 0x31d82137, 0x682ead78, 0x31d03e64,
- 0x68387498, 0x31c859a5, 0x68423a2a, 0x31c072fb,
- 0x684bfe2f, 0x31b88a66, 0x6855c0a6, 0x31b09fe7,
- 0x685f8190, 0x31a8b37c, 0x686940ea, 0x31a0c528,
- 0x6872feb6, 0x3198d4ea, 0x687cbaf3, 0x3190e2c3,
- 0x688675a0, 0x3188eeb2, 0x68902ebd, 0x3180f8b8,
- 0x6899e64a, 0x317900d6, 0x68a39c46, 0x3171070c,
- 0x68ad50b1, 0x31690b59, 0x68b7038b, 0x31610dbf,
- 0x68c0b4d2, 0x31590e3e, 0x68ca6488, 0x31510cd5,
- 0x68d412ab, 0x31490986, 0x68ddbf3b, 0x31410450,
- 0x68e76a37, 0x3138fd35, 0x68f113a0, 0x3130f433,
- 0x68fabb75, 0x3128e94c, 0x690461b5, 0x3120dc80,
- 0x690e0661, 0x3118cdcf, 0x6917a977, 0x3110bd39,
- 0x69214af8, 0x3108aabf, 0x692aeae3, 0x31009661,
- 0x69348937, 0x30f8801f, 0x693e25f5, 0x30f067fb,
- 0x6947c11c, 0x30e84df3, 0x69515aab, 0x30e03208,
- 0x695af2a3, 0x30d8143b, 0x69648902, 0x30cff48c,
- 0x696e1dc9, 0x30c7d2fb, 0x6977b0f7, 0x30bfaf89,
- 0x6981428c, 0x30b78a36, 0x698ad287, 0x30af6302,
- 0x699460e8, 0x30a739ed, 0x699dedaf, 0x309f0ef8,
- 0x69a778db, 0x3096e223, 0x69b1026c, 0x308eb36f,
- 0x69ba8a61, 0x308682dc, 0x69c410ba, 0x307e5069,
- 0x69cd9578, 0x30761c18, 0x69d71899, 0x306de5e9,
- 0x69e09a1c, 0x3065addb, 0x69ea1a03, 0x305d73f0,
- 0x69f3984c, 0x30553828, 0x69fd14f6, 0x304cfa83,
- 0x6a069003, 0x3044bb00, 0x6a100970, 0x303c79a2,
- 0x6a19813f, 0x30343667, 0x6a22f76e, 0x302bf151,
- 0x6a2c6bfd, 0x3023aa5f, 0x6a35deeb, 0x301b6193,
- 0x6a3f503a, 0x301316eb, 0x6a48bfe7, 0x300aca69,
- 0x6a522df3, 0x30027c0c, 0x6a5b9a5d, 0x2ffa2bd6,
- 0x6a650525, 0x2ff1d9c7, 0x6a6e6e4b, 0x2fe985de,
- 0x6a77d5ce, 0x2fe1301c, 0x6a813bae, 0x2fd8d882,
- 0x6a8a9fea, 0x2fd07f0f, 0x6a940283, 0x2fc823c5,
- 0x6a9d6377, 0x2fbfc6a3, 0x6aa6c2c6, 0x2fb767aa,
- 0x6ab02071, 0x2faf06da, 0x6ab97c77, 0x2fa6a433,
- 0x6ac2d6d6, 0x2f9e3fb6, 0x6acc2f90, 0x2f95d963,
- 0x6ad586a3, 0x2f8d713a, 0x6adedc10, 0x2f85073c,
- 0x6ae82fd5, 0x2f7c9b69, 0x6af181f3, 0x2f742dc1,
- 0x6afad269, 0x2f6bbe45, 0x6b042137, 0x2f634cf5,
- 0x6b0d6e5c, 0x2f5ad9d1, 0x6b16b9d9, 0x2f5264da,
- 0x6b2003ac, 0x2f49ee0f, 0x6b294bd5, 0x2f417573,
- 0x6b329255, 0x2f38fb03, 0x6b3bd72a, 0x2f307ec2,
- 0x6b451a55, 0x2f2800af, 0x6b4e5bd4, 0x2f1f80ca,
- 0x6b579ba8, 0x2f16ff14, 0x6b60d9d0, 0x2f0e7b8e,
- 0x6b6a164d, 0x2f05f637, 0x6b73511c, 0x2efd6f10,
- 0x6b7c8a3f, 0x2ef4e619, 0x6b85c1b5, 0x2eec5b53,
- 0x6b8ef77d, 0x2ee3cebe, 0x6b982b97, 0x2edb405a,
- 0x6ba15e03, 0x2ed2b027, 0x6baa8ec0, 0x2eca1e27,
- 0x6bb3bdce, 0x2ec18a58, 0x6bbceb2d, 0x2eb8f4bc,
- 0x6bc616dd, 0x2eb05d53, 0x6bcf40dc, 0x2ea7c41e,
- 0x6bd8692b, 0x2e9f291b, 0x6be18fc9, 0x2e968c4d,
- 0x6beab4b6, 0x2e8dedb3, 0x6bf3d7f2, 0x2e854d4d,
- 0x6bfcf97c, 0x2e7cab1c, 0x6c061953, 0x2e740720,
- 0x6c0f3779, 0x2e6b615a, 0x6c1853eb, 0x2e62b9ca,
- 0x6c216eaa, 0x2e5a1070, 0x6c2a87b6, 0x2e51654c,
- 0x6c339f0e, 0x2e48b860, 0x6c3cb4b1, 0x2e4009aa,
- 0x6c45c8a0, 0x2e37592c, 0x6c4edada, 0x2e2ea6e6,
- 0x6c57eb5e, 0x2e25f2d8, 0x6c60fa2d, 0x2e1d3d03,
- 0x6c6a0746, 0x2e148566, 0x6c7312a9, 0x2e0bcc03,
- 0x6c7c1c55, 0x2e0310d9, 0x6c85244a, 0x2dfa53e9,
- 0x6c8e2a87, 0x2df19534, 0x6c972f0d, 0x2de8d4b8,
- 0x6ca031da, 0x2de01278, 0x6ca932ef, 0x2dd74e73,
- 0x6cb2324c, 0x2dce88aa, 0x6cbb2fef, 0x2dc5c11c,
- 0x6cc42bd9, 0x2dbcf7cb, 0x6ccd2609, 0x2db42cb6,
- 0x6cd61e7f, 0x2dab5fdf, 0x6cdf153a, 0x2da29144,
- 0x6ce80a3a, 0x2d99c0e7, 0x6cf0fd80, 0x2d90eec8,
- 0x6cf9ef09, 0x2d881ae8, 0x6d02ded7, 0x2d7f4545,
- 0x6d0bcce8, 0x2d766de2, 0x6d14b93d, 0x2d6d94bf,
- 0x6d1da3d5, 0x2d64b9da, 0x6d268cb0, 0x2d5bdd36,
- 0x6d2f73cd, 0x2d52fed2, 0x6d38592c, 0x2d4a1eaf,
- 0x6d413ccd, 0x2d413ccd, 0x6d4a1eaf, 0x2d38592c,
- 0x6d52fed2, 0x2d2f73cd, 0x6d5bdd36, 0x2d268cb0,
- 0x6d64b9da, 0x2d1da3d5, 0x6d6d94bf, 0x2d14b93d,
- 0x6d766de2, 0x2d0bcce8, 0x6d7f4545, 0x2d02ded7,
- 0x6d881ae8, 0x2cf9ef09, 0x6d90eec8, 0x2cf0fd80,
- 0x6d99c0e7, 0x2ce80a3a, 0x6da29144, 0x2cdf153a,
- 0x6dab5fdf, 0x2cd61e7f, 0x6db42cb6, 0x2ccd2609,
- 0x6dbcf7cb, 0x2cc42bd9, 0x6dc5c11c, 0x2cbb2fef,
- 0x6dce88aa, 0x2cb2324c, 0x6dd74e73, 0x2ca932ef,
- 0x6de01278, 0x2ca031da, 0x6de8d4b8, 0x2c972f0d,
- 0x6df19534, 0x2c8e2a87, 0x6dfa53e9, 0x2c85244a,
- 0x6e0310d9, 0x2c7c1c55, 0x6e0bcc03, 0x2c7312a9,
- 0x6e148566, 0x2c6a0746, 0x6e1d3d03, 0x2c60fa2d,
- 0x6e25f2d8, 0x2c57eb5e, 0x6e2ea6e6, 0x2c4edada,
- 0x6e37592c, 0x2c45c8a0, 0x6e4009aa, 0x2c3cb4b1,
- 0x6e48b860, 0x2c339f0e, 0x6e51654c, 0x2c2a87b6,
- 0x6e5a1070, 0x2c216eaa, 0x6e62b9ca, 0x2c1853eb,
- 0x6e6b615a, 0x2c0f3779, 0x6e740720, 0x2c061953,
- 0x6e7cab1c, 0x2bfcf97c, 0x6e854d4d, 0x2bf3d7f2,
- 0x6e8dedb3, 0x2beab4b6, 0x6e968c4d, 0x2be18fc9,
- 0x6e9f291b, 0x2bd8692b, 0x6ea7c41e, 0x2bcf40dc,
- 0x6eb05d53, 0x2bc616dd, 0x6eb8f4bc, 0x2bbceb2d,
- 0x6ec18a58, 0x2bb3bdce, 0x6eca1e27, 0x2baa8ec0,
- 0x6ed2b027, 0x2ba15e03, 0x6edb405a, 0x2b982b97,
- 0x6ee3cebe, 0x2b8ef77d, 0x6eec5b53, 0x2b85c1b5,
- 0x6ef4e619, 0x2b7c8a3f, 0x6efd6f10, 0x2b73511c,
- 0x6f05f637, 0x2b6a164d, 0x6f0e7b8e, 0x2b60d9d0,
- 0x6f16ff14, 0x2b579ba8, 0x6f1f80ca, 0x2b4e5bd4,
- 0x6f2800af, 0x2b451a55, 0x6f307ec2, 0x2b3bd72a,
- 0x6f38fb03, 0x2b329255, 0x6f417573, 0x2b294bd5,
- 0x6f49ee0f, 0x2b2003ac, 0x6f5264da, 0x2b16b9d9,
- 0x6f5ad9d1, 0x2b0d6e5c, 0x6f634cf5, 0x2b042137,
- 0x6f6bbe45, 0x2afad269, 0x6f742dc1, 0x2af181f3,
- 0x6f7c9b69, 0x2ae82fd5, 0x6f85073c, 0x2adedc10,
- 0x6f8d713a, 0x2ad586a3, 0x6f95d963, 0x2acc2f90,
- 0x6f9e3fb6, 0x2ac2d6d6, 0x6fa6a433, 0x2ab97c77,
- 0x6faf06da, 0x2ab02071, 0x6fb767aa, 0x2aa6c2c6,
- 0x6fbfc6a3, 0x2a9d6377, 0x6fc823c5, 0x2a940283,
- 0x6fd07f0f, 0x2a8a9fea, 0x6fd8d882, 0x2a813bae,
- 0x6fe1301c, 0x2a77d5ce, 0x6fe985de, 0x2a6e6e4b,
- 0x6ff1d9c7, 0x2a650525, 0x6ffa2bd6, 0x2a5b9a5d,
- 0x70027c0c, 0x2a522df3, 0x700aca69, 0x2a48bfe7,
- 0x701316eb, 0x2a3f503a, 0x701b6193, 0x2a35deeb,
- 0x7023aa5f, 0x2a2c6bfd, 0x702bf151, 0x2a22f76e,
- 0x70343667, 0x2a19813f, 0x703c79a2, 0x2a100970,
- 0x7044bb00, 0x2a069003, 0x704cfa83, 0x29fd14f6,
- 0x70553828, 0x29f3984c, 0x705d73f0, 0x29ea1a03,
- 0x7065addb, 0x29e09a1c, 0x706de5e9, 0x29d71899,
- 0x70761c18, 0x29cd9578, 0x707e5069, 0x29c410ba,
- 0x708682dc, 0x29ba8a61, 0x708eb36f, 0x29b1026c,
- 0x7096e223, 0x29a778db, 0x709f0ef8, 0x299dedaf,
- 0x70a739ed, 0x299460e8, 0x70af6302, 0x298ad287,
- 0x70b78a36, 0x2981428c, 0x70bfaf89, 0x2977b0f7,
- 0x70c7d2fb, 0x296e1dc9, 0x70cff48c, 0x29648902,
- 0x70d8143b, 0x295af2a3, 0x70e03208, 0x29515aab,
- 0x70e84df3, 0x2947c11c, 0x70f067fb, 0x293e25f5,
- 0x70f8801f, 0x29348937, 0x71009661, 0x292aeae3,
- 0x7108aabf, 0x29214af8, 0x7110bd39, 0x2917a977,
- 0x7118cdcf, 0x290e0661, 0x7120dc80, 0x290461b5,
- 0x7128e94c, 0x28fabb75, 0x7130f433, 0x28f113a0,
- 0x7138fd35, 0x28e76a37, 0x71410450, 0x28ddbf3b,
- 0x71490986, 0x28d412ab, 0x71510cd5, 0x28ca6488,
- 0x71590e3e, 0x28c0b4d2, 0x71610dbf, 0x28b7038b,
- 0x71690b59, 0x28ad50b1, 0x7171070c, 0x28a39c46,
- 0x717900d6, 0x2899e64a, 0x7180f8b8, 0x28902ebd,
- 0x7188eeb2, 0x288675a0, 0x7190e2c3, 0x287cbaf3,
- 0x7198d4ea, 0x2872feb6, 0x71a0c528, 0x286940ea,
- 0x71a8b37c, 0x285f8190, 0x71b09fe7, 0x2855c0a6,
- 0x71b88a66, 0x284bfe2f, 0x71c072fb, 0x28423a2a,
- 0x71c859a5, 0x28387498, 0x71d03e64, 0x282ead78,
- 0x71d82137, 0x2824e4cc, 0x71e0021e, 0x281b1a94,
- 0x71e7e118, 0x28114ed0, 0x71efbe27, 0x28078181,
- 0x71f79948, 0x27fdb2a7, 0x71ff727c, 0x27f3e241,
- 0x720749c3, 0x27ea1052, 0x720f1f1c, 0x27e03cd8,
- 0x7216f287, 0x27d667d5, 0x721ec403, 0x27cc9149,
- 0x72269391, 0x27c2b934, 0x722e6130, 0x27b8df97,
- 0x72362ce0, 0x27af0472, 0x723df6a0, 0x27a527c4,
- 0x7245be70, 0x279b4990, 0x724d8450, 0x279169d5,
- 0x72554840, 0x27878893, 0x725d0a3e, 0x277da5cb,
- 0x7264ca4c, 0x2773c17d, 0x726c8868, 0x2769dbaa,
- 0x72744493, 0x275ff452, 0x727bfecc, 0x27560b76,
- 0x7283b712, 0x274c2115, 0x728b6d66, 0x27423530,
- 0x729321c7, 0x273847c8, 0x729ad435, 0x272e58dc,
- 0x72a284b0, 0x2724686e, 0x72aa3336, 0x271a767e,
- 0x72b1dfc9, 0x2710830c, 0x72b98a67, 0x27068e18,
- 0x72c13311, 0x26fc97a3, 0x72c8d9c6, 0x26f29fad,
- 0x72d07e85, 0x26e8a637, 0x72d82150, 0x26deab41,
- 0x72dfc224, 0x26d4aecb, 0x72e76102, 0x26cab0d6,
- 0x72eefdea, 0x26c0b162, 0x72f698db, 0x26b6b070,
- 0x72fe31d5, 0x26acadff, 0x7305c8d7, 0x26a2aa11,
- 0x730d5de3, 0x2698a4a6, 0x7314f0f6, 0x268e9dbd,
- 0x731c8211, 0x26849558, 0x73241134, 0x267a8b77,
- 0x732b9e5e, 0x2670801a, 0x7333298f, 0x26667342,
- 0x733ab2c6, 0x265c64ef, 0x73423a04, 0x26525521,
- 0x7349bf48, 0x264843d9, 0x73514292, 0x263e3117,
- 0x7358c3e2, 0x26341cdb, 0x73604336, 0x262a0727,
- 0x7367c090, 0x261feffa, 0x736f3bee, 0x2615d754,
- 0x7376b551, 0x260bbd37, 0x737e2cb7, 0x2601a1a2,
- 0x7385a222, 0x25f78497, 0x738d1590, 0x25ed6614,
- 0x73948701, 0x25e3461b, 0x739bf675, 0x25d924ac,
- 0x73a363ec, 0x25cf01c8, 0x73aacf65, 0x25c4dd6e,
- 0x73b238e0, 0x25bab7a0, 0x73b9a05d, 0x25b0905d,
- 0x73c105db, 0x25a667a7, 0x73c8695b, 0x259c3d7c,
- 0x73cfcadc, 0x259211df, 0x73d72a5d, 0x2587e4cf,
- 0x73de87de, 0x257db64c, 0x73e5e360, 0x25738657,
- 0x73ed3ce1, 0x256954f1, 0x73f49462, 0x255f2219,
- 0x73fbe9e2, 0x2554edd1, 0x74033d61, 0x254ab818,
- 0x740a8edf, 0x254080ef, 0x7411de5b, 0x25364857,
- 0x74192bd5, 0x252c0e4f, 0x7420774d, 0x2521d2d8,
- 0x7427c0c3, 0x251795f3, 0x742f0836, 0x250d57a0,
- 0x74364da6, 0x250317df, 0x743d9112, 0x24f8d6b0,
- 0x7444d27b, 0x24ee9415, 0x744c11e0, 0x24e4500e,
- 0x74534f41, 0x24da0a9a, 0x745a8a9d, 0x24cfc3ba,
- 0x7461c3f5, 0x24c57b6f, 0x7468fb47, 0x24bb31ba,
- 0x74703095, 0x24b0e699, 0x747763dd, 0x24a69a0f,
- 0x747e951f, 0x249c4c1b, 0x7485c45b, 0x2491fcbe,
- 0x748cf190, 0x2487abf7, 0x74941cbf, 0x247d59c8,
- 0x749b45e7, 0x24730631, 0x74a26d08, 0x2468b132,
- 0x74a99221, 0x245e5acc, 0x74b0b533, 0x245402ff,
- 0x74b7d63c, 0x2449a9cc, 0x74bef53d, 0x243f4f32,
- 0x74c61236, 0x2434f332, 0x74cd2d26, 0x242a95ce,
- 0x74d4460c, 0x24203704, 0x74db5cea, 0x2415d6d5,
- 0x74e271bd, 0x240b7543, 0x74e98487, 0x2401124d,
- 0x74f09546, 0x23f6adf3, 0x74f7a3fb, 0x23ec4837,
- 0x74feb0a5, 0x23e1e117, 0x7505bb44, 0x23d77896,
- 0x750cc3d8, 0x23cd0eb3, 0x7513ca60, 0x23c2a36f,
- 0x751acedd, 0x23b836ca, 0x7521d14d, 0x23adc8c4,
- 0x7528d1b1, 0x23a3595e, 0x752fd008, 0x2398e898,
- 0x7536cc52, 0x238e7673, 0x753dc68f, 0x238402ef,
- 0x7544bebf, 0x23798e0d, 0x754bb4e1, 0x236f17cc,
- 0x7552a8f4, 0x2364a02e, 0x75599afa, 0x235a2733,
- 0x75608af1, 0x234facda, 0x756778d9, 0x23453125,
- 0x756e64b2, 0x233ab414, 0x75754e7c, 0x233035a7,
- 0x757c3636, 0x2325b5df, 0x75831be0, 0x231b34bc,
- 0x7589ff7a, 0x2310b23e, 0x7590e104, 0x23062e67,
- 0x7597c07d, 0x22fba936, 0x759e9de5, 0x22f122ab,
- 0x75a5793c, 0x22e69ac8, 0x75ac5282, 0x22dc118c,
- 0x75b329b5, 0x22d186f8, 0x75b9fed7, 0x22c6fb0c,
- 0x75c0d1e7, 0x22bc6dca, 0x75c7a2e3, 0x22b1df30,
- 0x75ce71ce, 0x22a74f40, 0x75d53ea5, 0x229cbdfa,
- 0x75dc0968, 0x22922b5e, 0x75e2d219, 0x2287976e,
- 0x75e998b5, 0x227d0228, 0x75f05d3d, 0x22726b8e,
- 0x75f71fb1, 0x2267d3a0, 0x75fde011, 0x225d3a5e,
- 0x76049e5b, 0x22529fca, 0x760b5a90, 0x224803e2,
- 0x761214b0, 0x223d66a8, 0x7618ccba, 0x2232c81c,
- 0x761f82af, 0x2228283f, 0x7626368d, 0x221d8711,
- 0x762ce855, 0x2212e492, 0x76339806, 0x220840c2,
- 0x763a45a0, 0x21fd9ba3, 0x7640f123, 0x21f2f534,
- 0x76479a8e, 0x21e84d76, 0x764e41e2, 0x21dda46a,
- 0x7654e71d, 0x21d2fa0f, 0x765b8a41, 0x21c84e67,
- 0x76622b4c, 0x21bda171, 0x7668ca3e, 0x21b2f32e,
- 0x766f6717, 0x21a8439e, 0x767601d7, 0x219d92c2,
- 0x767c9a7e, 0x2192e09b, 0x7683310b, 0x21882d28,
- 0x7689c57d, 0x217d786a, 0x769057d6, 0x2172c262,
- 0x7696e814, 0x21680b0f, 0x769d7637, 0x215d5273,
- 0x76a4023f, 0x2152988d, 0x76aa8c2c, 0x2147dd5f,
- 0x76b113fd, 0x213d20e8, 0x76b799b3, 0x21326329,
- 0x76be1d4c, 0x2127a423, 0x76c49ec9, 0x211ce3d5,
- 0x76cb1e2a, 0x21122240, 0x76d19b6e, 0x21075f65,
- 0x76d81695, 0x20fc9b44, 0x76de8f9e, 0x20f1d5de,
- 0x76e5068a, 0x20e70f32, 0x76eb7b58, 0x20dc4742,
- 0x76f1ee09, 0x20d17e0d, 0x76f85e9a, 0x20c6b395,
- 0x76fecd0e, 0x20bbe7d8, 0x77053962, 0x20b11ad9,
- 0x770ba398, 0x20a64c97, 0x77120bae, 0x209b7d13,
- 0x771871a5, 0x2090ac4d, 0x771ed57c, 0x2085da46,
- 0x77253733, 0x207b06fe, 0x772b96ca, 0x20703275,
- 0x7731f440, 0x20655cac, 0x77384f95, 0x205a85a3,
- 0x773ea8ca, 0x204fad5b, 0x7744ffdd, 0x2044d3d4,
- 0x774b54ce, 0x2039f90f, 0x7751a79e, 0x202f1d0b,
- 0x7757f84c, 0x20243fca, 0x775e46d8, 0x2019614c,
- 0x77649341, 0x200e8190, 0x776add88, 0x2003a099,
- 0x777125ac, 0x1ff8be65, 0x77776bac, 0x1feddaf6,
- 0x777daf89, 0x1fe2f64c, 0x7783f143, 0x1fd81067,
- 0x778a30d8, 0x1fcd2948, 0x77906e49, 0x1fc240ef,
- 0x7796a996, 0x1fb7575c, 0x779ce2be, 0x1fac6c91,
- 0x77a319c2, 0x1fa1808c, 0x77a94ea0, 0x1f969350,
- 0x77af8159, 0x1f8ba4dc, 0x77b5b1ec, 0x1f80b531,
- 0x77bbe05a, 0x1f75c44e, 0x77c20ca1, 0x1f6ad235,
- 0x77c836c2, 0x1f5fdee6, 0x77ce5ebd, 0x1f54ea62,
- 0x77d48490, 0x1f49f4a8, 0x77daa83d, 0x1f3efdb9,
- 0x77e0c9c3, 0x1f340596, 0x77e6e921, 0x1f290c3f,
- 0x77ed0657, 0x1f1e11b5, 0x77f32165, 0x1f1315f7,
- 0x77f93a4b, 0x1f081907, 0x77ff5109, 0x1efd1ae4,
- 0x7805659e, 0x1ef21b90, 0x780b780a, 0x1ee71b0a,
- 0x7811884d, 0x1edc1953, 0x78179666, 0x1ed1166b,
- 0x781da256, 0x1ec61254, 0x7823ac1d, 0x1ebb0d0d,
- 0x7829b3b9, 0x1eb00696, 0x782fb92a, 0x1ea4fef0,
- 0x7835bc71, 0x1e99f61d, 0x783bbd8e, 0x1e8eec1b,
- 0x7841bc7f, 0x1e83e0eb, 0x7847b946, 0x1e78d48e,
- 0x784db3e0, 0x1e6dc705, 0x7853ac4f, 0x1e62b84f,
- 0x7859a292, 0x1e57a86d, 0x785f96a9, 0x1e4c9760,
- 0x78658894, 0x1e418528, 0x786b7852, 0x1e3671c5,
- 0x787165e3, 0x1e2b5d38, 0x78775147, 0x1e204781,
- 0x787d3a7e, 0x1e1530a1, 0x78832187, 0x1e0a1898,
- 0x78890663, 0x1dfeff67, 0x788ee910, 0x1df3e50d,
- 0x7894c98f, 0x1de8c98c, 0x789aa7e0, 0x1dddace4,
- 0x78a08402, 0x1dd28f15, 0x78a65df6, 0x1dc7701f,
- 0x78ac35ba, 0x1dbc5004, 0x78b20b4f, 0x1db12ec3,
- 0x78b7deb4, 0x1da60c5d, 0x78bdafea, 0x1d9ae8d2,
- 0x78c37eef, 0x1d8fc424, 0x78c94bc4, 0x1d849e51,
- 0x78cf1669, 0x1d79775c, 0x78d4dedd, 0x1d6e4f43,
- 0x78daa520, 0x1d632608, 0x78e06932, 0x1d57fbaa,
- 0x78e62b13, 0x1d4cd02c, 0x78ebeac2, 0x1d41a38c,
- 0x78f1a840, 0x1d3675cb, 0x78f7638b, 0x1d2b46ea,
- 0x78fd1ca4, 0x1d2016e9, 0x7902d38b, 0x1d14e5c9,
- 0x7908883f, 0x1d09b389, 0x790e3ac0, 0x1cfe802b,
- 0x7913eb0e, 0x1cf34baf, 0x79199929, 0x1ce81615,
- 0x791f4510, 0x1cdcdf5e, 0x7924eec3, 0x1cd1a78a,
- 0x792a9642, 0x1cc66e99, 0x79303b8e, 0x1cbb348d,
- 0x7935dea4, 0x1caff965, 0x793b7f86, 0x1ca4bd21,
- 0x79411e33, 0x1c997fc4, 0x7946baac, 0x1c8e414b,
- 0x794c54ee, 0x1c8301b9, 0x7951ecfc, 0x1c77c10e,
- 0x795782d3, 0x1c6c7f4a, 0x795d1675, 0x1c613c6d,
- 0x7962a7e0, 0x1c55f878, 0x79683715, 0x1c4ab36b,
- 0x796dc414, 0x1c3f6d47, 0x79734edc, 0x1c34260c,
- 0x7978d76c, 0x1c28ddbb, 0x797e5dc6, 0x1c1d9454,
- 0x7983e1e8, 0x1c1249d8, 0x798963d2, 0x1c06fe46,
- 0x798ee385, 0x1bfbb1a0, 0x799460ff, 0x1bf063e6,
- 0x7999dc42, 0x1be51518, 0x799f554b, 0x1bd9c537,
- 0x79a4cc1c, 0x1bce7442, 0x79aa40b4, 0x1bc3223c,
- 0x79afb313, 0x1bb7cf23, 0x79b52339, 0x1bac7af9,
- 0x79ba9125, 0x1ba125bd, 0x79bffcd7, 0x1b95cf71,
- 0x79c5664f, 0x1b8a7815, 0x79cacd8d, 0x1b7f1fa9,
- 0x79d03291, 0x1b73c62d, 0x79d5955a, 0x1b686ba3,
- 0x79daf5e8, 0x1b5d100a, 0x79e0543c, 0x1b51b363,
- 0x79e5b054, 0x1b4655ae, 0x79eb0a31, 0x1b3af6ec,
- 0x79f061d2, 0x1b2f971e, 0x79f5b737, 0x1b243643,
- 0x79fb0a60, 0x1b18d45c, 0x7a005b4d, 0x1b0d716a,
- 0x7a05a9fd, 0x1b020d6c, 0x7a0af671, 0x1af6a865,
- 0x7a1040a8, 0x1aeb4253, 0x7a1588a2, 0x1adfdb37,
- 0x7a1ace5f, 0x1ad47312, 0x7a2011de, 0x1ac909e5,
- 0x7a25531f, 0x1abd9faf, 0x7a2a9223, 0x1ab23471,
- 0x7a2fcee8, 0x1aa6c82b, 0x7a350970, 0x1a9b5adf,
- 0x7a3a41b9, 0x1a8fec8c, 0x7a3f77c3, 0x1a847d33,
- 0x7a44ab8e, 0x1a790cd4, 0x7a49dd1a, 0x1a6d9b70,
- 0x7a4f0c67, 0x1a622907, 0x7a543974, 0x1a56b599,
- 0x7a596442, 0x1a4b4128, 0x7a5e8cd0, 0x1a3fcbb3,
- 0x7a63b31d, 0x1a34553b, 0x7a68d72b, 0x1a28ddc0,
- 0x7a6df8f8, 0x1a1d6544, 0x7a731884, 0x1a11ebc5,
- 0x7a7835cf, 0x1a067145, 0x7a7d50da, 0x19faf5c5,
- 0x7a8269a3, 0x19ef7944, 0x7a87802a, 0x19e3fbc3,
- 0x7a8c9470, 0x19d87d42, 0x7a91a674, 0x19ccfdc2,
- 0x7a96b636, 0x19c17d44, 0x7a9bc3b6, 0x19b5fbc8,
- 0x7aa0cef3, 0x19aa794d, 0x7aa5d7ee, 0x199ef5d6,
- 0x7aaadea6, 0x19937161, 0x7aafe31b, 0x1987ebf0,
- 0x7ab4e54c, 0x197c6584, 0x7ab9e53a, 0x1970de1b,
- 0x7abee2e5, 0x196555b8, 0x7ac3de4c, 0x1959cc5a,
- 0x7ac8d76f, 0x194e4201, 0x7acdce4d, 0x1942b6af,
- 0x7ad2c2e8, 0x19372a64, 0x7ad7b53d, 0x192b9d1f,
- 0x7adca54e, 0x19200ee3, 0x7ae1931a, 0x19147fae,
- 0x7ae67ea1, 0x1908ef82, 0x7aeb67e3, 0x18fd5e5f,
- 0x7af04edf, 0x18f1cc45, 0x7af53395, 0x18e63935,
- 0x7afa1605, 0x18daa52f, 0x7afef630, 0x18cf1034,
- 0x7b03d414, 0x18c37a44, 0x7b08afb2, 0x18b7e35f,
- 0x7b0d8909, 0x18ac4b87, 0x7b126019, 0x18a0b2bb,
- 0x7b1734e2, 0x189518fc, 0x7b1c0764, 0x18897e4a,
- 0x7b20d79e, 0x187de2a7, 0x7b25a591, 0x18724611,
- 0x7b2a713d, 0x1866a88a, 0x7b2f3aa0, 0x185b0a13,
- 0x7b3401bb, 0x184f6aab, 0x7b38c68e, 0x1843ca53,
- 0x7b3d8918, 0x1838290c, 0x7b42495a, 0x182c86d5,
- 0x7b470753, 0x1820e3b0, 0x7b4bc303, 0x18153f9d,
- 0x7b507c69, 0x18099a9c, 0x7b553386, 0x17fdf4ae,
- 0x7b59e85a, 0x17f24dd3, 0x7b5e9ae4, 0x17e6a60c,
- 0x7b634b23, 0x17dafd59, 0x7b67f919, 0x17cf53bb,
- 0x7b6ca4c4, 0x17c3a931, 0x7b714e25, 0x17b7fdbd,
- 0x7b75f53c, 0x17ac515f, 0x7b7a9a07, 0x17a0a417,
- 0x7b7f3c87, 0x1794f5e6, 0x7b83dcbc, 0x178946cc,
- 0x7b887aa6, 0x177d96ca, 0x7b8d1644, 0x1771e5e0,
- 0x7b91af97, 0x1766340f, 0x7b96469d, 0x175a8157,
- 0x7b9adb57, 0x174ecdb8, 0x7b9f6dc5, 0x17431933,
- 0x7ba3fde7, 0x173763c9, 0x7ba88bbc, 0x172bad7a,
- 0x7bad1744, 0x171ff646, 0x7bb1a080, 0x17143e2d,
- 0x7bb6276e, 0x17088531, 0x7bbaac0e, 0x16fccb51,
- 0x7bbf2e62, 0x16f1108f, 0x7bc3ae67, 0x16e554ea,
- 0x7bc82c1f, 0x16d99864, 0x7bcca789, 0x16cddafb,
- 0x7bd120a4, 0x16c21cb2, 0x7bd59771, 0x16b65d88,
- 0x7bda0bf0, 0x16aa9d7e, 0x7bde7e20, 0x169edc94,
- 0x7be2ee01, 0x16931acb, 0x7be75b93, 0x16875823,
- 0x7bebc6d5, 0x167b949d, 0x7bf02fc9, 0x166fd039,
- 0x7bf4966c, 0x16640af7, 0x7bf8fac0, 0x165844d8,
- 0x7bfd5cc4, 0x164c7ddd, 0x7c01bc78, 0x1640b606,
- 0x7c0619dc, 0x1634ed53, 0x7c0a74f0, 0x162923c5,
- 0x7c0ecdb2, 0x161d595d, 0x7c132424, 0x16118e1a,
- 0x7c177845, 0x1605c1fd, 0x7c1bca16, 0x15f9f507,
- 0x7c201994, 0x15ee2738, 0x7c2466c2, 0x15e25890,
- 0x7c28b19e, 0x15d68911, 0x7c2cfa28, 0x15cab8ba,
- 0x7c314060, 0x15bee78c, 0x7c358446, 0x15b31587,
- 0x7c39c5da, 0x15a742ac, 0x7c3e051b, 0x159b6efb,
- 0x7c42420a, 0x158f9a76, 0x7c467ca6, 0x1583c51b,
- 0x7c4ab4ef, 0x1577eeec, 0x7c4eeae5, 0x156c17e9,
- 0x7c531e88, 0x15604013, 0x7c574fd8, 0x1554676a,
- 0x7c5b7ed4, 0x15488dee, 0x7c5fab7c, 0x153cb3a0,
- 0x7c63d5d1, 0x1530d881, 0x7c67fdd1, 0x1524fc90,
- 0x7c6c237e, 0x15191fcf, 0x7c7046d6, 0x150d423d,
- 0x7c7467d9, 0x150163dc, 0x7c788688, 0x14f584ac,
- 0x7c7ca2e2, 0x14e9a4ac, 0x7c80bce7, 0x14ddc3de,
- 0x7c84d496, 0x14d1e242, 0x7c88e9f1, 0x14c5ffd9,
- 0x7c8cfcf6, 0x14ba1ca3, 0x7c910da5, 0x14ae38a0,
- 0x7c951bff, 0x14a253d1, 0x7c992803, 0x14966e36,
- 0x7c9d31b0, 0x148a87d1, 0x7ca13908, 0x147ea0a0,
- 0x7ca53e09, 0x1472b8a5, 0x7ca940b3, 0x1466cfe1,
- 0x7cad4107, 0x145ae653, 0x7cb13f04, 0x144efbfc,
- 0x7cb53aaa, 0x144310dd, 0x7cb933f9, 0x143724f5,
- 0x7cbd2af0, 0x142b3846, 0x7cc11f90, 0x141f4ad1,
- 0x7cc511d9, 0x14135c94, 0x7cc901c9, 0x14076d91,
- 0x7cccef62, 0x13fb7dc9, 0x7cd0daa2, 0x13ef8d3c,
- 0x7cd4c38b, 0x13e39be9, 0x7cd8aa1b, 0x13d7a9d3,
- 0x7cdc8e52, 0x13cbb6f8, 0x7ce07031, 0x13bfc35b,
- 0x7ce44fb7, 0x13b3cefa, 0x7ce82ce4, 0x13a7d9d7,
- 0x7cec07b8, 0x139be3f2, 0x7cefe032, 0x138fed4b,
- 0x7cf3b653, 0x1383f5e3, 0x7cf78a1b, 0x1377fdbb,
- 0x7cfb5b89, 0x136c04d2, 0x7cff2a9d, 0x13600b2a,
- 0x7d02f757, 0x135410c3, 0x7d06c1b6, 0x1348159d,
- 0x7d0a89bc, 0x133c19b8, 0x7d0e4f67, 0x13301d16,
- 0x7d1212b7, 0x13241fb6, 0x7d15d3ad, 0x1318219a,
- 0x7d199248, 0x130c22c1, 0x7d1d4e88, 0x1300232c,
- 0x7d21086c, 0x12f422db, 0x7d24bff6, 0x12e821cf,
- 0x7d287523, 0x12dc2009, 0x7d2c27f6, 0x12d01d89,
- 0x7d2fd86c, 0x12c41a4f, 0x7d338687, 0x12b8165b,
- 0x7d373245, 0x12ac11af, 0x7d3adba7, 0x12a00c4b,
- 0x7d3e82ae, 0x1294062f, 0x7d422757, 0x1287ff5b,
- 0x7d45c9a4, 0x127bf7d1, 0x7d496994, 0x126fef90,
- 0x7d4d0728, 0x1263e699, 0x7d50a25e, 0x1257dced,
- 0x7d543b37, 0x124bd28c, 0x7d57d1b3, 0x123fc776,
- 0x7d5b65d2, 0x1233bbac, 0x7d5ef793, 0x1227af2e,
- 0x7d6286f6, 0x121ba1fd, 0x7d6613fb, 0x120f941a,
- 0x7d699ea3, 0x12038584, 0x7d6d26ec, 0x11f7763c,
- 0x7d70acd7, 0x11eb6643, 0x7d743064, 0x11df5599,
- 0x7d77b192, 0x11d3443f, 0x7d7b3061, 0x11c73235,
- 0x7d7eacd2, 0x11bb1f7c, 0x7d8226e4, 0x11af0c13,
- 0x7d859e96, 0x11a2f7fc, 0x7d8913ea, 0x1196e337,
- 0x7d8c86de, 0x118acdc4, 0x7d8ff772, 0x117eb7a4,
- 0x7d9365a8, 0x1172a0d7, 0x7d96d17d, 0x1166895f,
- 0x7d9a3af2, 0x115a713a, 0x7d9da208, 0x114e586a,
- 0x7da106bd, 0x11423ef0, 0x7da46912, 0x113624cb,
- 0x7da7c907, 0x112a09fc, 0x7dab269b, 0x111dee84,
- 0x7dae81cf, 0x1111d263, 0x7db1daa2, 0x1105b599,
- 0x7db53113, 0x10f99827, 0x7db88524, 0x10ed7a0e,
- 0x7dbbd6d4, 0x10e15b4e, 0x7dbf2622, 0x10d53be7,
- 0x7dc2730f, 0x10c91bda, 0x7dc5bd9b, 0x10bcfb28,
- 0x7dc905c5, 0x10b0d9d0, 0x7dcc4b8d, 0x10a4b7d3,
- 0x7dcf8ef3, 0x10989532, 0x7dd2cff7, 0x108c71ee,
- 0x7dd60e99, 0x10804e06, 0x7dd94ad8, 0x1074297b,
- 0x7ddc84b5, 0x1068044e, 0x7ddfbc30, 0x105bde7f,
- 0x7de2f148, 0x104fb80e, 0x7de623fd, 0x104390fd,
- 0x7de9544f, 0x1037694b, 0x7dec823e, 0x102b40f8,
- 0x7defadca, 0x101f1807, 0x7df2d6f3, 0x1012ee76,
- 0x7df5fdb8, 0x1006c446, 0x7df9221a, 0xffa9979,
- 0x7dfc4418, 0xfee6e0d, 0x7dff63b2, 0xfe24205,
- 0x7e0280e9, 0xfd6155f, 0x7e059bbb, 0xfc9e81e,
- 0x7e08b42a, 0xfbdba40, 0x7e0bca34, 0xfb18bc8,
- 0x7e0eddd9, 0xfa55cb4, 0x7e11ef1b, 0xf992d06,
- 0x7e14fdf7, 0xf8cfcbe, 0x7e180a6f, 0xf80cbdc,
- 0x7e1b1482, 0xf749a61, 0x7e1e1c30, 0xf68684e,
- 0x7e212179, 0xf5c35a3, 0x7e24245d, 0xf500260,
- 0x7e2724db, 0xf43ce86, 0x7e2a22f4, 0xf379a16,
- 0x7e2d1ea8, 0xf2b650f, 0x7e3017f6, 0xf1f2f73,
- 0x7e330ede, 0xf12f941, 0x7e360360, 0xf06c27a,
- 0x7e38f57c, 0xefa8b20, 0x7e3be532, 0xeee5331,
- 0x7e3ed282, 0xee21aaf, 0x7e41bd6c, 0xed5e19a,
- 0x7e44a5ef, 0xec9a7f3, 0x7e478c0b, 0xebd6db9,
- 0x7e4a6fc1, 0xeb132ef, 0x7e4d5110, 0xea4f793,
- 0x7e502ff9, 0xe98bba7, 0x7e530c7a, 0xe8c7f2a,
- 0x7e55e694, 0xe80421e, 0x7e58be47, 0xe740483,
- 0x7e5b9392, 0xe67c65a, 0x7e5e6676, 0xe5b87a2,
- 0x7e6136f3, 0xe4f485c, 0x7e640507, 0xe430889,
- 0x7e66d0b4, 0xe36c82a, 0x7e6999fa, 0xe2a873e,
- 0x7e6c60d7, 0xe1e45c6, 0x7e6f254c, 0xe1203c3,
- 0x7e71e759, 0xe05c135, 0x7e74a6fd, 0xdf97e1d,
- 0x7e77643a, 0xded3a7b, 0x7e7a1f0d, 0xde0f64f,
- 0x7e7cd778, 0xdd4b19a, 0x7e7f8d7b, 0xdc86c5d,
- 0x7e824114, 0xdbc2698, 0x7e84f245, 0xdafe04b,
- 0x7e87a10c, 0xda39978, 0x7e8a4d6a, 0xd97521d,
- 0x7e8cf75f, 0xd8b0a3d, 0x7e8f9eeb, 0xd7ec1d6,
- 0x7e92440d, 0xd7278eb, 0x7e94e6c6, 0xd662f7b,
- 0x7e978715, 0xd59e586, 0x7e9a24fb, 0xd4d9b0e,
- 0x7e9cc076, 0xd415013, 0x7e9f5988, 0xd350495,
- 0x7ea1f02f, 0xd28b894, 0x7ea4846c, 0xd1c6c11,
- 0x7ea7163f, 0xd101f0e, 0x7ea9a5a8, 0xd03d189,
- 0x7eac32a6, 0xcf78383, 0x7eaebd3a, 0xceb34fe,
- 0x7eb14563, 0xcdee5f9, 0x7eb3cb21, 0xcd29676,
- 0x7eb64e75, 0xcc64673, 0x7eb8cf5d, 0xcb9f5f3,
- 0x7ebb4ddb, 0xcada4f5, 0x7ebdc9ed, 0xca1537a,
- 0x7ec04394, 0xc950182, 0x7ec2bad0, 0xc88af0e,
- 0x7ec52fa0, 0xc7c5c1e, 0x7ec7a205, 0xc7008b3,
- 0x7eca11fe, 0xc63b4ce, 0x7ecc7f8b, 0xc57606e,
- 0x7eceeaad, 0xc4b0b94, 0x7ed15363, 0xc3eb641,
- 0x7ed3b9ad, 0xc326075, 0x7ed61d8a, 0xc260a31,
- 0x7ed87efc, 0xc19b374, 0x7edade01, 0xc0d5c41,
- 0x7edd3a9a, 0xc010496, 0x7edf94c7, 0xbf4ac75,
- 0x7ee1ec87, 0xbe853de, 0x7ee441da, 0xbdbfad1,
- 0x7ee694c1, 0xbcfa150, 0x7ee8e53a, 0xbc34759,
- 0x7eeb3347, 0xbb6ecef, 0x7eed7ee7, 0xbaa9211,
- 0x7eefc81a, 0xb9e36c0, 0x7ef20ee0, 0xb91dafc,
- 0x7ef45338, 0xb857ec7, 0x7ef69523, 0xb79221f,
- 0x7ef8d4a1, 0xb6cc506, 0x7efb11b1, 0xb60677c,
- 0x7efd4c54, 0xb540982, 0x7eff8489, 0xb47ab19,
- 0x7f01ba50, 0xb3b4c40, 0x7f03eda9, 0xb2eecf8,
- 0x7f061e95, 0xb228d42, 0x7f084d12, 0xb162d1d,
- 0x7f0a7921, 0xb09cc8c, 0x7f0ca2c2, 0xafd6b8d,
- 0x7f0ec9f5, 0xaf10a22, 0x7f10eeb9, 0xae4a84b,
- 0x7f13110f, 0xad84609, 0x7f1530f7, 0xacbe35b,
- 0x7f174e70, 0xabf8043, 0x7f19697a, 0xab31cc1,
- 0x7f1b8215, 0xaa6b8d5, 0x7f1d9842, 0xa9a5480,
- 0x7f1fabff, 0xa8defc3, 0x7f21bd4e, 0xa818a9d,
- 0x7f23cc2e, 0xa752510, 0x7f25d89e, 0xa68bf1b,
- 0x7f27e29f, 0xa5c58c0, 0x7f29ea31, 0xa4ff1fe,
- 0x7f2bef53, 0xa438ad7, 0x7f2df206, 0xa37234a,
- 0x7f2ff24a, 0xa2abb59, 0x7f31f01d, 0xa1e5303,
- 0x7f33eb81, 0xa11ea49, 0x7f35e476, 0xa05812c,
- 0x7f37dafa, 0x9f917ac, 0x7f39cf0e, 0x9ecadc9,
- 0x7f3bc0b3, 0x9e04385, 0x7f3dafe7, 0x9d3d8df,
- 0x7f3f9cab, 0x9c76dd8, 0x7f4186ff, 0x9bb0271,
- 0x7f436ee3, 0x9ae96aa, 0x7f455456, 0x9a22a83,
- 0x7f473759, 0x995bdfd, 0x7f4917eb, 0x9895118,
- 0x7f4af60d, 0x97ce3d5, 0x7f4cd1be, 0x9707635,
- 0x7f4eaafe, 0x9640837, 0x7f5081cd, 0x95799dd,
- 0x7f52562c, 0x94b2b27, 0x7f54281a, 0x93ebc14,
- 0x7f55f796, 0x9324ca7, 0x7f57c4a2, 0x925dcdf,
- 0x7f598f3c, 0x9196cbc, 0x7f5b5765, 0x90cfc40,
- 0x7f5d1d1d, 0x9008b6a, 0x7f5ee063, 0x8f41a3c,
- 0x7f60a138, 0x8e7a8b5, 0x7f625f9b, 0x8db36d6,
- 0x7f641b8d, 0x8cec4a0, 0x7f65d50d, 0x8c25213,
- 0x7f678c1c, 0x8b5df30, 0x7f6940b8, 0x8a96bf6,
- 0x7f6af2e3, 0x89cf867, 0x7f6ca29c, 0x8908483,
- 0x7f6e4fe3, 0x884104b, 0x7f6ffab8, 0x8779bbe,
- 0x7f71a31b, 0x86b26de, 0x7f73490b, 0x85eb1ab,
- 0x7f74ec8a, 0x8523c25, 0x7f768d96, 0x845c64d,
- 0x7f782c30, 0x8395024, 0x7f79c857, 0x82cd9a9,
- 0x7f7b620c, 0x82062de, 0x7f7cf94e, 0x813ebc2,
- 0x7f7e8e1e, 0x8077457, 0x7f80207b, 0x7fafc9c,
- 0x7f81b065, 0x7ee8493, 0x7f833ddd, 0x7e20c3b,
- 0x7f84c8e2, 0x7d59396, 0x7f865174, 0x7c91aa3,
- 0x7f87d792, 0x7bca163, 0x7f895b3e, 0x7b027d7,
- 0x7f8adc77, 0x7a3adff, 0x7f8c5b3d, 0x79733dc,
- 0x7f8dd78f, 0x78ab96e, 0x7f8f516e, 0x77e3eb5,
- 0x7f90c8da, 0x771c3b3, 0x7f923dd2, 0x7654867,
- 0x7f93b058, 0x758ccd2, 0x7f952069, 0x74c50f4,
- 0x7f968e07, 0x73fd4cf, 0x7f97f932, 0x7335862,
- 0x7f9961e8, 0x726dbae, 0x7f9ac82c, 0x71a5eb3,
- 0x7f9c2bfb, 0x70de172, 0x7f9d8d56, 0x70163eb,
- 0x7f9eec3e, 0x6f4e620, 0x7fa048b2, 0x6e86810,
- 0x7fa1a2b2, 0x6dbe9bb, 0x7fa2fa3d, 0x6cf6b23,
- 0x7fa44f55, 0x6c2ec48, 0x7fa5a1f9, 0x6b66d29,
- 0x7fa6f228, 0x6a9edc9, 0x7fa83fe3, 0x69d6e27,
- 0x7fa98b2a, 0x690ee44, 0x7faad3fd, 0x6846e1f,
- 0x7fac1a5b, 0x677edbb, 0x7fad5e45, 0x66b6d16,
- 0x7fae9fbb, 0x65eec33, 0x7fafdebb, 0x6526b10,
- 0x7fb11b48, 0x645e9af, 0x7fb2555f, 0x6396810,
- 0x7fb38d02, 0x62ce634, 0x7fb4c231, 0x620641a,
- 0x7fb5f4ea, 0x613e1c5, 0x7fb7252f, 0x6075f33,
- 0x7fb852ff, 0x5fadc66, 0x7fb97e5a, 0x5ee595d,
- 0x7fbaa740, 0x5e1d61b, 0x7fbbcdb1, 0x5d5529e,
- 0x7fbcf1ad, 0x5c8cee7, 0x7fbe1334, 0x5bc4af8,
- 0x7fbf3246, 0x5afc6d0, 0x7fc04ee3, 0x5a3426f,
- 0x7fc1690a, 0x596bdd7, 0x7fc280bc, 0x58a3908,
- 0x7fc395f9, 0x57db403, 0x7fc4a8c1, 0x5712ec7,
- 0x7fc5b913, 0x564a955, 0x7fc6c6f0, 0x55823ae,
- 0x7fc7d258, 0x54b9dd3, 0x7fc8db4a, 0x53f17c3,
- 0x7fc9e1c6, 0x532917f, 0x7fcae5cd, 0x5260b08,
- 0x7fcbe75e, 0x519845e, 0x7fcce67a, 0x50cfd82,
- 0x7fcde320, 0x5007674, 0x7fcedd50, 0x4f3ef35,
- 0x7fcfd50b, 0x4e767c5, 0x7fd0ca4f, 0x4dae024,
- 0x7fd1bd1e, 0x4ce5854, 0x7fd2ad77, 0x4c1d054,
- 0x7fd39b5a, 0x4b54825, 0x7fd486c7, 0x4a8bfc7,
- 0x7fd56fbe, 0x49c373c, 0x7fd6563f, 0x48fae83,
- 0x7fd73a4a, 0x483259d, 0x7fd81bdf, 0x4769c8b,
- 0x7fd8fafe, 0x46a134c, 0x7fd9d7a7, 0x45d89e2,
- 0x7fdab1d9, 0x451004d, 0x7fdb8996, 0x444768d,
- 0x7fdc5edc, 0x437eca4, 0x7fdd31ac, 0x42b6290,
- 0x7fde0205, 0x41ed854, 0x7fdecfe8, 0x4124dee,
- 0x7fdf9b55, 0x405c361, 0x7fe0644b, 0x3f938ac,
- 0x7fe12acb, 0x3ecadcf, 0x7fe1eed5, 0x3e022cc,
- 0x7fe2b067, 0x3d397a3, 0x7fe36f84, 0x3c70c54,
- 0x7fe42c2a, 0x3ba80df, 0x7fe4e659, 0x3adf546,
- 0x7fe59e12, 0x3a16988, 0x7fe65354, 0x394dda7,
- 0x7fe7061f, 0x38851a2, 0x7fe7b674, 0x37bc57b,
- 0x7fe86452, 0x36f3931, 0x7fe90fb9, 0x362acc5,
- 0x7fe9b8a9, 0x3562038, 0x7fea5f23, 0x3499389,
- 0x7feb0326, 0x33d06bb, 0x7feba4b2, 0x33079cc,
- 0x7fec43c7, 0x323ecbe, 0x7fece065, 0x3175f91,
- 0x7fed7a8c, 0x30ad245, 0x7fee123d, 0x2fe44dc,
- 0x7feea776, 0x2f1b755, 0x7fef3a39, 0x2e529b0,
- 0x7fefca84, 0x2d89bf0, 0x7ff05858, 0x2cc0e13,
- 0x7ff0e3b6, 0x2bf801a, 0x7ff16c9c, 0x2b2f207,
- 0x7ff1f30b, 0x2a663d8, 0x7ff27703, 0x299d590,
- 0x7ff2f884, 0x28d472e, 0x7ff3778e, 0x280b8b3,
- 0x7ff3f420, 0x2742a1f, 0x7ff46e3c, 0x2679b73,
- 0x7ff4e5e0, 0x25b0caf, 0x7ff55b0d, 0x24e7dd4,
- 0x7ff5cdc3, 0x241eee2, 0x7ff63e01, 0x2355fd9,
- 0x7ff6abc8, 0x228d0bb, 0x7ff71718, 0x21c4188,
- 0x7ff77ff1, 0x20fb240, 0x7ff7e652, 0x20322e3,
- 0x7ff84a3c, 0x1f69373, 0x7ff8abae, 0x1ea03ef,
- 0x7ff90aaa, 0x1dd7459, 0x7ff9672d, 0x1d0e4b0,
- 0x7ff9c13a, 0x1c454f5, 0x7ffa18cf, 0x1b7c528,
- 0x7ffa6dec, 0x1ab354b, 0x7ffac092, 0x19ea55d,
- 0x7ffb10c1, 0x192155f, 0x7ffb5e78, 0x1858552,
- 0x7ffba9b8, 0x178f536, 0x7ffbf280, 0x16c650b,
- 0x7ffc38d1, 0x15fd4d2, 0x7ffc7caa, 0x153448c,
- 0x7ffcbe0c, 0x146b438, 0x7ffcfcf6, 0x13a23d8,
- 0x7ffd3969, 0x12d936c, 0x7ffd7364, 0x12102f4,
- 0x7ffdaae7, 0x1147271, 0x7ffddff3, 0x107e1e3,
- 0x7ffe1288, 0xfb514b, 0x7ffe42a4, 0xeec0aa,
- 0x7ffe704a, 0xe22fff, 0x7ffe9b77, 0xd59f4c,
- 0x7ffec42d, 0xc90e90, 0x7ffeea6c, 0xbc7dcc,
- 0x7fff0e32, 0xafed02, 0x7fff2f82, 0xa35c30,
- 0x7fff4e59, 0x96cb58, 0x7fff6ab9, 0x8a3a7b,
- 0x7fff84a1, 0x7da998, 0x7fff9c12, 0x7118b0,
- 0x7fffb10b, 0x6487c4, 0x7fffc38c, 0x57f6d4,
- 0x7fffd396, 0x4b65e1, 0x7fffe128, 0x3ed4ea,
- 0x7fffec43, 0x3243f1, 0x7ffff4e6, 0x25b2f7,
- 0x7ffffb11, 0x1921fb, 0x7ffffec4, 0xc90fe,
- 0x7fffffff, 0x0, 0x7ffffec4, 0xfff36f02,
- 0x7ffffb11, 0xffe6de05, 0x7ffff4e6, 0xffda4d09,
- 0x7fffec43, 0xffcdbc0f, 0x7fffe128, 0xffc12b16,
- 0x7fffd396, 0xffb49a1f, 0x7fffc38c, 0xffa8092c,
- 0x7fffb10b, 0xff9b783c, 0x7fff9c12, 0xff8ee750,
- 0x7fff84a1, 0xff825668, 0x7fff6ab9, 0xff75c585,
- 0x7fff4e59, 0xff6934a8, 0x7fff2f82, 0xff5ca3d0,
- 0x7fff0e32, 0xff5012fe, 0x7ffeea6c, 0xff438234,
- 0x7ffec42d, 0xff36f170, 0x7ffe9b77, 0xff2a60b4,
- 0x7ffe704a, 0xff1dd001, 0x7ffe42a4, 0xff113f56,
- 0x7ffe1288, 0xff04aeb5, 0x7ffddff3, 0xfef81e1d,
- 0x7ffdaae7, 0xfeeb8d8f, 0x7ffd7364, 0xfedefd0c,
- 0x7ffd3969, 0xfed26c94, 0x7ffcfcf6, 0xfec5dc28,
- 0x7ffcbe0c, 0xfeb94bc8, 0x7ffc7caa, 0xfeacbb74,
- 0x7ffc38d1, 0xfea02b2e, 0x7ffbf280, 0xfe939af5,
- 0x7ffba9b8, 0xfe870aca, 0x7ffb5e78, 0xfe7a7aae,
- 0x7ffb10c1, 0xfe6deaa1, 0x7ffac092, 0xfe615aa3,
- 0x7ffa6dec, 0xfe54cab5, 0x7ffa18cf, 0xfe483ad8,
- 0x7ff9c13a, 0xfe3bab0b, 0x7ff9672d, 0xfe2f1b50,
- 0x7ff90aaa, 0xfe228ba7, 0x7ff8abae, 0xfe15fc11,
- 0x7ff84a3c, 0xfe096c8d, 0x7ff7e652, 0xfdfcdd1d,
- 0x7ff77ff1, 0xfdf04dc0, 0x7ff71718, 0xfde3be78,
- 0x7ff6abc8, 0xfdd72f45, 0x7ff63e01, 0xfdcaa027,
- 0x7ff5cdc3, 0xfdbe111e, 0x7ff55b0d, 0xfdb1822c,
- 0x7ff4e5e0, 0xfda4f351, 0x7ff46e3c, 0xfd98648d,
- 0x7ff3f420, 0xfd8bd5e1, 0x7ff3778e, 0xfd7f474d,
- 0x7ff2f884, 0xfd72b8d2, 0x7ff27703, 0xfd662a70,
- 0x7ff1f30b, 0xfd599c28, 0x7ff16c9c, 0xfd4d0df9,
- 0x7ff0e3b6, 0xfd407fe6, 0x7ff05858, 0xfd33f1ed,
- 0x7fefca84, 0xfd276410, 0x7fef3a39, 0xfd1ad650,
- 0x7feea776, 0xfd0e48ab, 0x7fee123d, 0xfd01bb24,
- 0x7fed7a8c, 0xfcf52dbb, 0x7fece065, 0xfce8a06f,
- 0x7fec43c7, 0xfcdc1342, 0x7feba4b2, 0xfccf8634,
- 0x7feb0326, 0xfcc2f945, 0x7fea5f23, 0xfcb66c77,
- 0x7fe9b8a9, 0xfca9dfc8, 0x7fe90fb9, 0xfc9d533b,
- 0x7fe86452, 0xfc90c6cf, 0x7fe7b674, 0xfc843a85,
- 0x7fe7061f, 0xfc77ae5e, 0x7fe65354, 0xfc6b2259,
- 0x7fe59e12, 0xfc5e9678, 0x7fe4e659, 0xfc520aba,
- 0x7fe42c2a, 0xfc457f21, 0x7fe36f84, 0xfc38f3ac,
- 0x7fe2b067, 0xfc2c685d, 0x7fe1eed5, 0xfc1fdd34,
- 0x7fe12acb, 0xfc135231, 0x7fe0644b, 0xfc06c754,
- 0x7fdf9b55, 0xfbfa3c9f, 0x7fdecfe8, 0xfbedb212,
- 0x7fde0205, 0xfbe127ac, 0x7fdd31ac, 0xfbd49d70,
- 0x7fdc5edc, 0xfbc8135c, 0x7fdb8996, 0xfbbb8973,
- 0x7fdab1d9, 0xfbaeffb3, 0x7fd9d7a7, 0xfba2761e,
- 0x7fd8fafe, 0xfb95ecb4, 0x7fd81bdf, 0xfb896375,
- 0x7fd73a4a, 0xfb7cda63, 0x7fd6563f, 0xfb70517d,
- 0x7fd56fbe, 0xfb63c8c4, 0x7fd486c7, 0xfb574039,
- 0x7fd39b5a, 0xfb4ab7db, 0x7fd2ad77, 0xfb3e2fac,
- 0x7fd1bd1e, 0xfb31a7ac, 0x7fd0ca4f, 0xfb251fdc,
- 0x7fcfd50b, 0xfb18983b, 0x7fcedd50, 0xfb0c10cb,
- 0x7fcde320, 0xfaff898c, 0x7fcce67a, 0xfaf3027e,
- 0x7fcbe75e, 0xfae67ba2, 0x7fcae5cd, 0xfad9f4f8,
- 0x7fc9e1c6, 0xfacd6e81, 0x7fc8db4a, 0xfac0e83d,
- 0x7fc7d258, 0xfab4622d, 0x7fc6c6f0, 0xfaa7dc52,
- 0x7fc5b913, 0xfa9b56ab, 0x7fc4a8c1, 0xfa8ed139,
- 0x7fc395f9, 0xfa824bfd, 0x7fc280bc, 0xfa75c6f8,
- 0x7fc1690a, 0xfa694229, 0x7fc04ee3, 0xfa5cbd91,
- 0x7fbf3246, 0xfa503930, 0x7fbe1334, 0xfa43b508,
- 0x7fbcf1ad, 0xfa373119, 0x7fbbcdb1, 0xfa2aad62,
- 0x7fbaa740, 0xfa1e29e5, 0x7fb97e5a, 0xfa11a6a3,
- 0x7fb852ff, 0xfa05239a, 0x7fb7252f, 0xf9f8a0cd,
- 0x7fb5f4ea, 0xf9ec1e3b, 0x7fb4c231, 0xf9df9be6,
- 0x7fb38d02, 0xf9d319cc, 0x7fb2555f, 0xf9c697f0,
- 0x7fb11b48, 0xf9ba1651, 0x7fafdebb, 0xf9ad94f0,
- 0x7fae9fbb, 0xf9a113cd, 0x7fad5e45, 0xf99492ea,
- 0x7fac1a5b, 0xf9881245, 0x7faad3fd, 0xf97b91e1,
- 0x7fa98b2a, 0xf96f11bc, 0x7fa83fe3, 0xf96291d9,
- 0x7fa6f228, 0xf9561237, 0x7fa5a1f9, 0xf94992d7,
- 0x7fa44f55, 0xf93d13b8, 0x7fa2fa3d, 0xf93094dd,
- 0x7fa1a2b2, 0xf9241645, 0x7fa048b2, 0xf91797f0,
- 0x7f9eec3e, 0xf90b19e0, 0x7f9d8d56, 0xf8fe9c15,
- 0x7f9c2bfb, 0xf8f21e8e, 0x7f9ac82c, 0xf8e5a14d,
- 0x7f9961e8, 0xf8d92452, 0x7f97f932, 0xf8cca79e,
- 0x7f968e07, 0xf8c02b31, 0x7f952069, 0xf8b3af0c,
- 0x7f93b058, 0xf8a7332e, 0x7f923dd2, 0xf89ab799,
- 0x7f90c8da, 0xf88e3c4d, 0x7f8f516e, 0xf881c14b,
- 0x7f8dd78f, 0xf8754692, 0x7f8c5b3d, 0xf868cc24,
- 0x7f8adc77, 0xf85c5201, 0x7f895b3e, 0xf84fd829,
- 0x7f87d792, 0xf8435e9d, 0x7f865174, 0xf836e55d,
- 0x7f84c8e2, 0xf82a6c6a, 0x7f833ddd, 0xf81df3c5,
- 0x7f81b065, 0xf8117b6d, 0x7f80207b, 0xf8050364,
- 0x7f7e8e1e, 0xf7f88ba9, 0x7f7cf94e, 0xf7ec143e,
- 0x7f7b620c, 0xf7df9d22, 0x7f79c857, 0xf7d32657,
- 0x7f782c30, 0xf7c6afdc, 0x7f768d96, 0xf7ba39b3,
- 0x7f74ec8a, 0xf7adc3db, 0x7f73490b, 0xf7a14e55,
- 0x7f71a31b, 0xf794d922, 0x7f6ffab8, 0xf7886442,
- 0x7f6e4fe3, 0xf77befb5, 0x7f6ca29c, 0xf76f7b7d,
- 0x7f6af2e3, 0xf7630799, 0x7f6940b8, 0xf756940a,
- 0x7f678c1c, 0xf74a20d0, 0x7f65d50d, 0xf73daded,
- 0x7f641b8d, 0xf7313b60, 0x7f625f9b, 0xf724c92a,
- 0x7f60a138, 0xf718574b, 0x7f5ee063, 0xf70be5c4,
- 0x7f5d1d1d, 0xf6ff7496, 0x7f5b5765, 0xf6f303c0,
- 0x7f598f3c, 0xf6e69344, 0x7f57c4a2, 0xf6da2321,
- 0x7f55f796, 0xf6cdb359, 0x7f54281a, 0xf6c143ec,
- 0x7f52562c, 0xf6b4d4d9, 0x7f5081cd, 0xf6a86623,
- 0x7f4eaafe, 0xf69bf7c9, 0x7f4cd1be, 0xf68f89cb,
- 0x7f4af60d, 0xf6831c2b, 0x7f4917eb, 0xf676aee8,
- 0x7f473759, 0xf66a4203, 0x7f455456, 0xf65dd57d,
- 0x7f436ee3, 0xf6516956, 0x7f4186ff, 0xf644fd8f,
- 0x7f3f9cab, 0xf6389228, 0x7f3dafe7, 0xf62c2721,
- 0x7f3bc0b3, 0xf61fbc7b, 0x7f39cf0e, 0xf6135237,
- 0x7f37dafa, 0xf606e854, 0x7f35e476, 0xf5fa7ed4,
- 0x7f33eb81, 0xf5ee15b7, 0x7f31f01d, 0xf5e1acfd,
- 0x7f2ff24a, 0xf5d544a7, 0x7f2df206, 0xf5c8dcb6,
- 0x7f2bef53, 0xf5bc7529, 0x7f29ea31, 0xf5b00e02,
- 0x7f27e29f, 0xf5a3a740, 0x7f25d89e, 0xf59740e5,
- 0x7f23cc2e, 0xf58adaf0, 0x7f21bd4e, 0xf57e7563,
- 0x7f1fabff, 0xf572103d, 0x7f1d9842, 0xf565ab80,
- 0x7f1b8215, 0xf559472b, 0x7f19697a, 0xf54ce33f,
- 0x7f174e70, 0xf5407fbd, 0x7f1530f7, 0xf5341ca5,
- 0x7f13110f, 0xf527b9f7, 0x7f10eeb9, 0xf51b57b5,
- 0x7f0ec9f5, 0xf50ef5de, 0x7f0ca2c2, 0xf5029473,
- 0x7f0a7921, 0xf4f63374, 0x7f084d12, 0xf4e9d2e3,
- 0x7f061e95, 0xf4dd72be, 0x7f03eda9, 0xf4d11308,
- 0x7f01ba50, 0xf4c4b3c0, 0x7eff8489, 0xf4b854e7,
- 0x7efd4c54, 0xf4abf67e, 0x7efb11b1, 0xf49f9884,
- 0x7ef8d4a1, 0xf4933afa, 0x7ef69523, 0xf486dde1,
- 0x7ef45338, 0xf47a8139, 0x7ef20ee0, 0xf46e2504,
- 0x7eefc81a, 0xf461c940, 0x7eed7ee7, 0xf4556def,
- 0x7eeb3347, 0xf4491311, 0x7ee8e53a, 0xf43cb8a7,
- 0x7ee694c1, 0xf4305eb0, 0x7ee441da, 0xf424052f,
- 0x7ee1ec87, 0xf417ac22, 0x7edf94c7, 0xf40b538b,
- 0x7edd3a9a, 0xf3fefb6a, 0x7edade01, 0xf3f2a3bf,
- 0x7ed87efc, 0xf3e64c8c, 0x7ed61d8a, 0xf3d9f5cf,
- 0x7ed3b9ad, 0xf3cd9f8b, 0x7ed15363, 0xf3c149bf,
- 0x7eceeaad, 0xf3b4f46c, 0x7ecc7f8b, 0xf3a89f92,
- 0x7eca11fe, 0xf39c4b32, 0x7ec7a205, 0xf38ff74d,
- 0x7ec52fa0, 0xf383a3e2, 0x7ec2bad0, 0xf37750f2,
- 0x7ec04394, 0xf36afe7e, 0x7ebdc9ed, 0xf35eac86,
- 0x7ebb4ddb, 0xf3525b0b, 0x7eb8cf5d, 0xf3460a0d,
- 0x7eb64e75, 0xf339b98d, 0x7eb3cb21, 0xf32d698a,
- 0x7eb14563, 0xf3211a07, 0x7eaebd3a, 0xf314cb02,
- 0x7eac32a6, 0xf3087c7d, 0x7ea9a5a8, 0xf2fc2e77,
- 0x7ea7163f, 0xf2efe0f2, 0x7ea4846c, 0xf2e393ef,
- 0x7ea1f02f, 0xf2d7476c, 0x7e9f5988, 0xf2cafb6b,
- 0x7e9cc076, 0xf2beafed, 0x7e9a24fb, 0xf2b264f2,
- 0x7e978715, 0xf2a61a7a, 0x7e94e6c6, 0xf299d085,
- 0x7e92440d, 0xf28d8715, 0x7e8f9eeb, 0xf2813e2a,
- 0x7e8cf75f, 0xf274f5c3, 0x7e8a4d6a, 0xf268ade3,
- 0x7e87a10c, 0xf25c6688, 0x7e84f245, 0xf2501fb5,
- 0x7e824114, 0xf243d968, 0x7e7f8d7b, 0xf23793a3,
- 0x7e7cd778, 0xf22b4e66, 0x7e7a1f0d, 0xf21f09b1,
- 0x7e77643a, 0xf212c585, 0x7e74a6fd, 0xf20681e3,
- 0x7e71e759, 0xf1fa3ecb, 0x7e6f254c, 0xf1edfc3d,
- 0x7e6c60d7, 0xf1e1ba3a, 0x7e6999fa, 0xf1d578c2,
- 0x7e66d0b4, 0xf1c937d6, 0x7e640507, 0xf1bcf777,
- 0x7e6136f3, 0xf1b0b7a4, 0x7e5e6676, 0xf1a4785e,
- 0x7e5b9392, 0xf19839a6, 0x7e58be47, 0xf18bfb7d,
- 0x7e55e694, 0xf17fbde2, 0x7e530c7a, 0xf17380d6,
- 0x7e502ff9, 0xf1674459, 0x7e4d5110, 0xf15b086d,
- 0x7e4a6fc1, 0xf14ecd11, 0x7e478c0b, 0xf1429247,
- 0x7e44a5ef, 0xf136580d, 0x7e41bd6c, 0xf12a1e66,
- 0x7e3ed282, 0xf11de551, 0x7e3be532, 0xf111accf,
- 0x7e38f57c, 0xf10574e0, 0x7e360360, 0xf0f93d86,
- 0x7e330ede, 0xf0ed06bf, 0x7e3017f6, 0xf0e0d08d,
- 0x7e2d1ea8, 0xf0d49af1, 0x7e2a22f4, 0xf0c865ea,
- 0x7e2724db, 0xf0bc317a, 0x7e24245d, 0xf0affda0,
- 0x7e212179, 0xf0a3ca5d, 0x7e1e1c30, 0xf09797b2,
- 0x7e1b1482, 0xf08b659f, 0x7e180a6f, 0xf07f3424,
- 0x7e14fdf7, 0xf0730342, 0x7e11ef1b, 0xf066d2fa,
- 0x7e0eddd9, 0xf05aa34c, 0x7e0bca34, 0xf04e7438,
- 0x7e08b42a, 0xf04245c0, 0x7e059bbb, 0xf03617e2,
- 0x7e0280e9, 0xf029eaa1, 0x7dff63b2, 0xf01dbdfb,
- 0x7dfc4418, 0xf01191f3, 0x7df9221a, 0xf0056687,
- 0x7df5fdb8, 0xeff93bba, 0x7df2d6f3, 0xefed118a,
- 0x7defadca, 0xefe0e7f9, 0x7dec823e, 0xefd4bf08,
- 0x7de9544f, 0xefc896b5, 0x7de623fd, 0xefbc6f03,
- 0x7de2f148, 0xefb047f2, 0x7ddfbc30, 0xefa42181,
- 0x7ddc84b5, 0xef97fbb2, 0x7dd94ad8, 0xef8bd685,
- 0x7dd60e99, 0xef7fb1fa, 0x7dd2cff7, 0xef738e12,
- 0x7dcf8ef3, 0xef676ace, 0x7dcc4b8d, 0xef5b482d,
- 0x7dc905c5, 0xef4f2630, 0x7dc5bd9b, 0xef4304d8,
- 0x7dc2730f, 0xef36e426, 0x7dbf2622, 0xef2ac419,
- 0x7dbbd6d4, 0xef1ea4b2, 0x7db88524, 0xef1285f2,
- 0x7db53113, 0xef0667d9, 0x7db1daa2, 0xeefa4a67,
- 0x7dae81cf, 0xeeee2d9d, 0x7dab269b, 0xeee2117c,
- 0x7da7c907, 0xeed5f604, 0x7da46912, 0xeec9db35,
- 0x7da106bd, 0xeebdc110, 0x7d9da208, 0xeeb1a796,
- 0x7d9a3af2, 0xeea58ec6, 0x7d96d17d, 0xee9976a1,
- 0x7d9365a8, 0xee8d5f29, 0x7d8ff772, 0xee81485c,
- 0x7d8c86de, 0xee75323c, 0x7d8913ea, 0xee691cc9,
- 0x7d859e96, 0xee5d0804, 0x7d8226e4, 0xee50f3ed,
- 0x7d7eacd2, 0xee44e084, 0x7d7b3061, 0xee38cdcb,
- 0x7d77b192, 0xee2cbbc1, 0x7d743064, 0xee20aa67,
- 0x7d70acd7, 0xee1499bd, 0x7d6d26ec, 0xee0889c4,
- 0x7d699ea3, 0xedfc7a7c, 0x7d6613fb, 0xedf06be6,
- 0x7d6286f6, 0xede45e03, 0x7d5ef793, 0xedd850d2,
- 0x7d5b65d2, 0xedcc4454, 0x7d57d1b3, 0xedc0388a,
- 0x7d543b37, 0xedb42d74, 0x7d50a25e, 0xeda82313,
- 0x7d4d0728, 0xed9c1967, 0x7d496994, 0xed901070,
- 0x7d45c9a4, 0xed84082f, 0x7d422757, 0xed7800a5,
- 0x7d3e82ae, 0xed6bf9d1, 0x7d3adba7, 0xed5ff3b5,
- 0x7d373245, 0xed53ee51, 0x7d338687, 0xed47e9a5,
- 0x7d2fd86c, 0xed3be5b1, 0x7d2c27f6, 0xed2fe277,
- 0x7d287523, 0xed23dff7, 0x7d24bff6, 0xed17de31,
- 0x7d21086c, 0xed0bdd25, 0x7d1d4e88, 0xecffdcd4,
- 0x7d199248, 0xecf3dd3f, 0x7d15d3ad, 0xece7de66,
- 0x7d1212b7, 0xecdbe04a, 0x7d0e4f67, 0xeccfe2ea,
- 0x7d0a89bc, 0xecc3e648, 0x7d06c1b6, 0xecb7ea63,
- 0x7d02f757, 0xecabef3d, 0x7cff2a9d, 0xec9ff4d6,
- 0x7cfb5b89, 0xec93fb2e, 0x7cf78a1b, 0xec880245,
- 0x7cf3b653, 0xec7c0a1d, 0x7cefe032, 0xec7012b5,
- 0x7cec07b8, 0xec641c0e, 0x7ce82ce4, 0xec582629,
- 0x7ce44fb7, 0xec4c3106, 0x7ce07031, 0xec403ca5,
- 0x7cdc8e52, 0xec344908, 0x7cd8aa1b, 0xec28562d,
- 0x7cd4c38b, 0xec1c6417, 0x7cd0daa2, 0xec1072c4,
- 0x7cccef62, 0xec048237, 0x7cc901c9, 0xebf8926f,
- 0x7cc511d9, 0xebeca36c, 0x7cc11f90, 0xebe0b52f,
- 0x7cbd2af0, 0xebd4c7ba, 0x7cb933f9, 0xebc8db0b,
- 0x7cb53aaa, 0xebbcef23, 0x7cb13f04, 0xebb10404,
- 0x7cad4107, 0xeba519ad, 0x7ca940b3, 0xeb99301f,
- 0x7ca53e09, 0xeb8d475b, 0x7ca13908, 0xeb815f60,
- 0x7c9d31b0, 0xeb75782f, 0x7c992803, 0xeb6991ca,
- 0x7c951bff, 0xeb5dac2f, 0x7c910da5, 0xeb51c760,
- 0x7c8cfcf6, 0xeb45e35d, 0x7c88e9f1, 0xeb3a0027,
- 0x7c84d496, 0xeb2e1dbe, 0x7c80bce7, 0xeb223c22,
- 0x7c7ca2e2, 0xeb165b54, 0x7c788688, 0xeb0a7b54,
- 0x7c7467d9, 0xeafe9c24, 0x7c7046d6, 0xeaf2bdc3,
- 0x7c6c237e, 0xeae6e031, 0x7c67fdd1, 0xeadb0370,
- 0x7c63d5d1, 0xeacf277f, 0x7c5fab7c, 0xeac34c60,
- 0x7c5b7ed4, 0xeab77212, 0x7c574fd8, 0xeaab9896,
- 0x7c531e88, 0xea9fbfed, 0x7c4eeae5, 0xea93e817,
- 0x7c4ab4ef, 0xea881114, 0x7c467ca6, 0xea7c3ae5,
- 0x7c42420a, 0xea70658a, 0x7c3e051b, 0xea649105,
- 0x7c39c5da, 0xea58bd54, 0x7c358446, 0xea4cea79,
- 0x7c314060, 0xea411874, 0x7c2cfa28, 0xea354746,
- 0x7c28b19e, 0xea2976ef, 0x7c2466c2, 0xea1da770,
- 0x7c201994, 0xea11d8c8, 0x7c1bca16, 0xea060af9,
- 0x7c177845, 0xe9fa3e03, 0x7c132424, 0xe9ee71e6,
- 0x7c0ecdb2, 0xe9e2a6a3, 0x7c0a74f0, 0xe9d6dc3b,
- 0x7c0619dc, 0xe9cb12ad, 0x7c01bc78, 0xe9bf49fa,
- 0x7bfd5cc4, 0xe9b38223, 0x7bf8fac0, 0xe9a7bb28,
- 0x7bf4966c, 0xe99bf509, 0x7bf02fc9, 0xe9902fc7,
- 0x7bebc6d5, 0xe9846b63, 0x7be75b93, 0xe978a7dd,
- 0x7be2ee01, 0xe96ce535, 0x7bde7e20, 0xe961236c,
- 0x7bda0bf0, 0xe9556282, 0x7bd59771, 0xe949a278,
- 0x7bd120a4, 0xe93de34e, 0x7bcca789, 0xe9322505,
- 0x7bc82c1f, 0xe926679c, 0x7bc3ae67, 0xe91aab16,
- 0x7bbf2e62, 0xe90eef71, 0x7bbaac0e, 0xe90334af,
- 0x7bb6276e, 0xe8f77acf, 0x7bb1a080, 0xe8ebc1d3,
- 0x7bad1744, 0xe8e009ba, 0x7ba88bbc, 0xe8d45286,
- 0x7ba3fde7, 0xe8c89c37, 0x7b9f6dc5, 0xe8bce6cd,
- 0x7b9adb57, 0xe8b13248, 0x7b96469d, 0xe8a57ea9,
- 0x7b91af97, 0xe899cbf1, 0x7b8d1644, 0xe88e1a20,
- 0x7b887aa6, 0xe8826936, 0x7b83dcbc, 0xe876b934,
- 0x7b7f3c87, 0xe86b0a1a, 0x7b7a9a07, 0xe85f5be9,
- 0x7b75f53c, 0xe853aea1, 0x7b714e25, 0xe8480243,
- 0x7b6ca4c4, 0xe83c56cf, 0x7b67f919, 0xe830ac45,
- 0x7b634b23, 0xe82502a7, 0x7b5e9ae4, 0xe81959f4,
- 0x7b59e85a, 0xe80db22d, 0x7b553386, 0xe8020b52,
- 0x7b507c69, 0xe7f66564, 0x7b4bc303, 0xe7eac063,
- 0x7b470753, 0xe7df1c50, 0x7b42495a, 0xe7d3792b,
- 0x7b3d8918, 0xe7c7d6f4, 0x7b38c68e, 0xe7bc35ad,
- 0x7b3401bb, 0xe7b09555, 0x7b2f3aa0, 0xe7a4f5ed,
- 0x7b2a713d, 0xe7995776, 0x7b25a591, 0xe78db9ef,
- 0x7b20d79e, 0xe7821d59, 0x7b1c0764, 0xe77681b6,
- 0x7b1734e2, 0xe76ae704, 0x7b126019, 0xe75f4d45,
- 0x7b0d8909, 0xe753b479, 0x7b08afb2, 0xe7481ca1,
- 0x7b03d414, 0xe73c85bc, 0x7afef630, 0xe730efcc,
- 0x7afa1605, 0xe7255ad1, 0x7af53395, 0xe719c6cb,
- 0x7af04edf, 0xe70e33bb, 0x7aeb67e3, 0xe702a1a1,
- 0x7ae67ea1, 0xe6f7107e, 0x7ae1931a, 0xe6eb8052,
- 0x7adca54e, 0xe6dff11d, 0x7ad7b53d, 0xe6d462e1,
- 0x7ad2c2e8, 0xe6c8d59c, 0x7acdce4d, 0xe6bd4951,
- 0x7ac8d76f, 0xe6b1bdff, 0x7ac3de4c, 0xe6a633a6,
- 0x7abee2e5, 0xe69aaa48, 0x7ab9e53a, 0xe68f21e5,
- 0x7ab4e54c, 0xe6839a7c, 0x7aafe31b, 0xe6781410,
- 0x7aaadea6, 0xe66c8e9f, 0x7aa5d7ee, 0xe6610a2a,
- 0x7aa0cef3, 0xe65586b3, 0x7a9bc3b6, 0xe64a0438,
- 0x7a96b636, 0xe63e82bc, 0x7a91a674, 0xe633023e,
- 0x7a8c9470, 0xe62782be, 0x7a87802a, 0xe61c043d,
- 0x7a8269a3, 0xe61086bc, 0x7a7d50da, 0xe6050a3b,
- 0x7a7835cf, 0xe5f98ebb, 0x7a731884, 0xe5ee143b,
- 0x7a6df8f8, 0xe5e29abc, 0x7a68d72b, 0xe5d72240,
- 0x7a63b31d, 0xe5cbaac5, 0x7a5e8cd0, 0xe5c0344d,
- 0x7a596442, 0xe5b4bed8, 0x7a543974, 0xe5a94a67,
- 0x7a4f0c67, 0xe59dd6f9, 0x7a49dd1a, 0xe5926490,
- 0x7a44ab8e, 0xe586f32c, 0x7a3f77c3, 0xe57b82cd,
- 0x7a3a41b9, 0xe5701374, 0x7a350970, 0xe564a521,
- 0x7a2fcee8, 0xe55937d5, 0x7a2a9223, 0xe54dcb8f,
- 0x7a25531f, 0xe5426051, 0x7a2011de, 0xe536f61b,
- 0x7a1ace5f, 0xe52b8cee, 0x7a1588a2, 0xe52024c9,
- 0x7a1040a8, 0xe514bdad, 0x7a0af671, 0xe509579b,
- 0x7a05a9fd, 0xe4fdf294, 0x7a005b4d, 0xe4f28e96,
- 0x79fb0a60, 0xe4e72ba4, 0x79f5b737, 0xe4dbc9bd,
- 0x79f061d2, 0xe4d068e2, 0x79eb0a31, 0xe4c50914,
- 0x79e5b054, 0xe4b9aa52, 0x79e0543c, 0xe4ae4c9d,
- 0x79daf5e8, 0xe4a2eff6, 0x79d5955a, 0xe497945d,
- 0x79d03291, 0xe48c39d3, 0x79cacd8d, 0xe480e057,
- 0x79c5664f, 0xe47587eb, 0x79bffcd7, 0xe46a308f,
- 0x79ba9125, 0xe45eda43, 0x79b52339, 0xe4538507,
- 0x79afb313, 0xe44830dd, 0x79aa40b4, 0xe43cddc4,
- 0x79a4cc1c, 0xe4318bbe, 0x799f554b, 0xe4263ac9,
- 0x7999dc42, 0xe41aeae8, 0x799460ff, 0xe40f9c1a,
- 0x798ee385, 0xe4044e60, 0x798963d2, 0xe3f901ba,
- 0x7983e1e8, 0xe3edb628, 0x797e5dc6, 0xe3e26bac,
- 0x7978d76c, 0xe3d72245, 0x79734edc, 0xe3cbd9f4,
- 0x796dc414, 0xe3c092b9, 0x79683715, 0xe3b54c95,
- 0x7962a7e0, 0xe3aa0788, 0x795d1675, 0xe39ec393,
- 0x795782d3, 0xe39380b6, 0x7951ecfc, 0xe3883ef2,
- 0x794c54ee, 0xe37cfe47, 0x7946baac, 0xe371beb5,
- 0x79411e33, 0xe366803c, 0x793b7f86, 0xe35b42df,
- 0x7935dea4, 0xe350069b, 0x79303b8e, 0xe344cb73,
- 0x792a9642, 0xe3399167, 0x7924eec3, 0xe32e5876,
- 0x791f4510, 0xe32320a2, 0x79199929, 0xe317e9eb,
- 0x7913eb0e, 0xe30cb451, 0x790e3ac0, 0xe3017fd5,
- 0x7908883f, 0xe2f64c77, 0x7902d38b, 0xe2eb1a37,
- 0x78fd1ca4, 0xe2dfe917, 0x78f7638b, 0xe2d4b916,
- 0x78f1a840, 0xe2c98a35, 0x78ebeac2, 0xe2be5c74,
- 0x78e62b13, 0xe2b32fd4, 0x78e06932, 0xe2a80456,
- 0x78daa520, 0xe29cd9f8, 0x78d4dedd, 0xe291b0bd,
- 0x78cf1669, 0xe28688a4, 0x78c94bc4, 0xe27b61af,
- 0x78c37eef, 0xe2703bdc, 0x78bdafea, 0xe265172e,
- 0x78b7deb4, 0xe259f3a3, 0x78b20b4f, 0xe24ed13d,
- 0x78ac35ba, 0xe243affc, 0x78a65df6, 0xe2388fe1,
- 0x78a08402, 0xe22d70eb, 0x789aa7e0, 0xe222531c,
- 0x7894c98f, 0xe2173674, 0x788ee910, 0xe20c1af3,
- 0x78890663, 0xe2010099, 0x78832187, 0xe1f5e768,
- 0x787d3a7e, 0xe1eacf5f, 0x78775147, 0xe1dfb87f,
- 0x787165e3, 0xe1d4a2c8, 0x786b7852, 0xe1c98e3b,
- 0x78658894, 0xe1be7ad8, 0x785f96a9, 0xe1b368a0,
- 0x7859a292, 0xe1a85793, 0x7853ac4f, 0xe19d47b1,
- 0x784db3e0, 0xe19238fb, 0x7847b946, 0xe1872b72,
- 0x7841bc7f, 0xe17c1f15, 0x783bbd8e, 0xe17113e5,
- 0x7835bc71, 0xe16609e3, 0x782fb92a, 0xe15b0110,
- 0x7829b3b9, 0xe14ff96a, 0x7823ac1d, 0xe144f2f3,
- 0x781da256, 0xe139edac, 0x78179666, 0xe12ee995,
- 0x7811884d, 0xe123e6ad, 0x780b780a, 0xe118e4f6,
- 0x7805659e, 0xe10de470, 0x77ff5109, 0xe102e51c,
- 0x77f93a4b, 0xe0f7e6f9, 0x77f32165, 0xe0ecea09,
- 0x77ed0657, 0xe0e1ee4b, 0x77e6e921, 0xe0d6f3c1,
- 0x77e0c9c3, 0xe0cbfa6a, 0x77daa83d, 0xe0c10247,
- 0x77d48490, 0xe0b60b58, 0x77ce5ebd, 0xe0ab159e,
- 0x77c836c2, 0xe0a0211a, 0x77c20ca1, 0xe0952dcb,
- 0x77bbe05a, 0xe08a3bb2, 0x77b5b1ec, 0xe07f4acf,
- 0x77af8159, 0xe0745b24, 0x77a94ea0, 0xe0696cb0,
- 0x77a319c2, 0xe05e7f74, 0x779ce2be, 0xe053936f,
- 0x7796a996, 0xe048a8a4, 0x77906e49, 0xe03dbf11,
- 0x778a30d8, 0xe032d6b8, 0x7783f143, 0xe027ef99,
- 0x777daf89, 0xe01d09b4, 0x77776bac, 0xe012250a,
- 0x777125ac, 0xe007419b, 0x776add88, 0xdffc5f67,
- 0x77649341, 0xdff17e70, 0x775e46d8, 0xdfe69eb4,
- 0x7757f84c, 0xdfdbc036, 0x7751a79e, 0xdfd0e2f5,
- 0x774b54ce, 0xdfc606f1, 0x7744ffdd, 0xdfbb2c2c,
- 0x773ea8ca, 0xdfb052a5, 0x77384f95, 0xdfa57a5d,
- 0x7731f440, 0xdf9aa354, 0x772b96ca, 0xdf8fcd8b,
- 0x77253733, 0xdf84f902, 0x771ed57c, 0xdf7a25ba,
- 0x771871a5, 0xdf6f53b3, 0x77120bae, 0xdf6482ed,
- 0x770ba398, 0xdf59b369, 0x77053962, 0xdf4ee527,
- 0x76fecd0e, 0xdf441828, 0x76f85e9a, 0xdf394c6b,
- 0x76f1ee09, 0xdf2e81f3, 0x76eb7b58, 0xdf23b8be,
- 0x76e5068a, 0xdf18f0ce, 0x76de8f9e, 0xdf0e2a22,
- 0x76d81695, 0xdf0364bc, 0x76d19b6e, 0xdef8a09b,
- 0x76cb1e2a, 0xdeedddc0, 0x76c49ec9, 0xdee31c2b,
- 0x76be1d4c, 0xded85bdd, 0x76b799b3, 0xdecd9cd7,
- 0x76b113fd, 0xdec2df18, 0x76aa8c2c, 0xdeb822a1,
- 0x76a4023f, 0xdead6773, 0x769d7637, 0xdea2ad8d,
- 0x7696e814, 0xde97f4f1, 0x769057d6, 0xde8d3d9e,
- 0x7689c57d, 0xde828796, 0x7683310b, 0xde77d2d8,
- 0x767c9a7e, 0xde6d1f65, 0x767601d7, 0xde626d3e,
- 0x766f6717, 0xde57bc62, 0x7668ca3e, 0xde4d0cd2,
- 0x76622b4c, 0xde425e8f, 0x765b8a41, 0xde37b199,
- 0x7654e71d, 0xde2d05f1, 0x764e41e2, 0xde225b96,
- 0x76479a8e, 0xde17b28a, 0x7640f123, 0xde0d0acc,
- 0x763a45a0, 0xde02645d, 0x76339806, 0xddf7bf3e,
- 0x762ce855, 0xdded1b6e, 0x7626368d, 0xdde278ef,
- 0x761f82af, 0xddd7d7c1, 0x7618ccba, 0xddcd37e4,
- 0x761214b0, 0xddc29958, 0x760b5a90, 0xddb7fc1e,
- 0x76049e5b, 0xddad6036, 0x75fde011, 0xdda2c5a2,
- 0x75f71fb1, 0xdd982c60, 0x75f05d3d, 0xdd8d9472,
- 0x75e998b5, 0xdd82fdd8, 0x75e2d219, 0xdd786892,
- 0x75dc0968, 0xdd6dd4a2, 0x75d53ea5, 0xdd634206,
- 0x75ce71ce, 0xdd58b0c0, 0x75c7a2e3, 0xdd4e20d0,
- 0x75c0d1e7, 0xdd439236, 0x75b9fed7, 0xdd3904f4,
- 0x75b329b5, 0xdd2e7908, 0x75ac5282, 0xdd23ee74,
- 0x75a5793c, 0xdd196538, 0x759e9de5, 0xdd0edd55,
- 0x7597c07d, 0xdd0456ca, 0x7590e104, 0xdcf9d199,
- 0x7589ff7a, 0xdcef4dc2, 0x75831be0, 0xdce4cb44,
- 0x757c3636, 0xdcda4a21, 0x75754e7c, 0xdccfca59,
- 0x756e64b2, 0xdcc54bec, 0x756778d9, 0xdcbacedb,
- 0x75608af1, 0xdcb05326, 0x75599afa, 0xdca5d8cd,
- 0x7552a8f4, 0xdc9b5fd2, 0x754bb4e1, 0xdc90e834,
- 0x7544bebf, 0xdc8671f3, 0x753dc68f, 0xdc7bfd11,
- 0x7536cc52, 0xdc71898d, 0x752fd008, 0xdc671768,
- 0x7528d1b1, 0xdc5ca6a2, 0x7521d14d, 0xdc52373c,
- 0x751acedd, 0xdc47c936, 0x7513ca60, 0xdc3d5c91,
- 0x750cc3d8, 0xdc32f14d, 0x7505bb44, 0xdc28876a,
- 0x74feb0a5, 0xdc1e1ee9, 0x74f7a3fb, 0xdc13b7c9,
- 0x74f09546, 0xdc09520d, 0x74e98487, 0xdbfeedb3,
- 0x74e271bd, 0xdbf48abd, 0x74db5cea, 0xdbea292b,
- 0x74d4460c, 0xdbdfc8fc, 0x74cd2d26, 0xdbd56a32,
- 0x74c61236, 0xdbcb0cce, 0x74bef53d, 0xdbc0b0ce,
- 0x74b7d63c, 0xdbb65634, 0x74b0b533, 0xdbabfd01,
- 0x74a99221, 0xdba1a534, 0x74a26d08, 0xdb974ece,
- 0x749b45e7, 0xdb8cf9cf, 0x74941cbf, 0xdb82a638,
- 0x748cf190, 0xdb785409, 0x7485c45b, 0xdb6e0342,
- 0x747e951f, 0xdb63b3e5, 0x747763dd, 0xdb5965f1,
- 0x74703095, 0xdb4f1967, 0x7468fb47, 0xdb44ce46,
- 0x7461c3f5, 0xdb3a8491, 0x745a8a9d, 0xdb303c46,
- 0x74534f41, 0xdb25f566, 0x744c11e0, 0xdb1baff2,
- 0x7444d27b, 0xdb116beb, 0x743d9112, 0xdb072950,
- 0x74364da6, 0xdafce821, 0x742f0836, 0xdaf2a860,
- 0x7427c0c3, 0xdae86a0d, 0x7420774d, 0xdade2d28,
- 0x74192bd5, 0xdad3f1b1, 0x7411de5b, 0xdac9b7a9,
- 0x740a8edf, 0xdabf7f11, 0x74033d61, 0xdab547e8,
- 0x73fbe9e2, 0xdaab122f, 0x73f49462, 0xdaa0dde7,
- 0x73ed3ce1, 0xda96ab0f, 0x73e5e360, 0xda8c79a9,
- 0x73de87de, 0xda8249b4, 0x73d72a5d, 0xda781b31,
- 0x73cfcadc, 0xda6dee21, 0x73c8695b, 0xda63c284,
- 0x73c105db, 0xda599859, 0x73b9a05d, 0xda4f6fa3,
- 0x73b238e0, 0xda454860, 0x73aacf65, 0xda3b2292,
- 0x73a363ec, 0xda30fe38, 0x739bf675, 0xda26db54,
- 0x73948701, 0xda1cb9e5, 0x738d1590, 0xda1299ec,
- 0x7385a222, 0xda087b69, 0x737e2cb7, 0xd9fe5e5e,
- 0x7376b551, 0xd9f442c9, 0x736f3bee, 0xd9ea28ac,
- 0x7367c090, 0xd9e01006, 0x73604336, 0xd9d5f8d9,
- 0x7358c3e2, 0xd9cbe325, 0x73514292, 0xd9c1cee9,
- 0x7349bf48, 0xd9b7bc27, 0x73423a04, 0xd9adaadf,
- 0x733ab2c6, 0xd9a39b11, 0x7333298f, 0xd9998cbe,
- 0x732b9e5e, 0xd98f7fe6, 0x73241134, 0xd9857489,
- 0x731c8211, 0xd97b6aa8, 0x7314f0f6, 0xd9716243,
- 0x730d5de3, 0xd9675b5a, 0x7305c8d7, 0xd95d55ef,
- 0x72fe31d5, 0xd9535201, 0x72f698db, 0xd9494f90,
- 0x72eefdea, 0xd93f4e9e, 0x72e76102, 0xd9354f2a,
- 0x72dfc224, 0xd92b5135, 0x72d82150, 0xd92154bf,
- 0x72d07e85, 0xd91759c9, 0x72c8d9c6, 0xd90d6053,
- 0x72c13311, 0xd903685d, 0x72b98a67, 0xd8f971e8,
- 0x72b1dfc9, 0xd8ef7cf4, 0x72aa3336, 0xd8e58982,
- 0x72a284b0, 0xd8db9792, 0x729ad435, 0xd8d1a724,
- 0x729321c7, 0xd8c7b838, 0x728b6d66, 0xd8bdcad0,
- 0x7283b712, 0xd8b3deeb, 0x727bfecc, 0xd8a9f48a,
- 0x72744493, 0xd8a00bae, 0x726c8868, 0xd8962456,
- 0x7264ca4c, 0xd88c3e83, 0x725d0a3e, 0xd8825a35,
- 0x72554840, 0xd878776d, 0x724d8450, 0xd86e962b,
- 0x7245be70, 0xd864b670, 0x723df6a0, 0xd85ad83c,
- 0x72362ce0, 0xd850fb8e, 0x722e6130, 0xd8472069,
- 0x72269391, 0xd83d46cc, 0x721ec403, 0xd8336eb7,
- 0x7216f287, 0xd829982b, 0x720f1f1c, 0xd81fc328,
- 0x720749c3, 0xd815efae, 0x71ff727c, 0xd80c1dbf,
- 0x71f79948, 0xd8024d59, 0x71efbe27, 0xd7f87e7f,
- 0x71e7e118, 0xd7eeb130, 0x71e0021e, 0xd7e4e56c,
- 0x71d82137, 0xd7db1b34, 0x71d03e64, 0xd7d15288,
- 0x71c859a5, 0xd7c78b68, 0x71c072fb, 0xd7bdc5d6,
- 0x71b88a66, 0xd7b401d1, 0x71b09fe7, 0xd7aa3f5a,
- 0x71a8b37c, 0xd7a07e70, 0x71a0c528, 0xd796bf16,
- 0x7198d4ea, 0xd78d014a, 0x7190e2c3, 0xd783450d,
- 0x7188eeb2, 0xd7798a60, 0x7180f8b8, 0xd76fd143,
- 0x717900d6, 0xd76619b6, 0x7171070c, 0xd75c63ba,
- 0x71690b59, 0xd752af4f, 0x71610dbf, 0xd748fc75,
- 0x71590e3e, 0xd73f4b2e, 0x71510cd5, 0xd7359b78,
- 0x71490986, 0xd72bed55, 0x71410450, 0xd72240c5,
- 0x7138fd35, 0xd71895c9, 0x7130f433, 0xd70eec60,
- 0x7128e94c, 0xd705448b, 0x7120dc80, 0xd6fb9e4b,
- 0x7118cdcf, 0xd6f1f99f, 0x7110bd39, 0xd6e85689,
- 0x7108aabf, 0xd6deb508, 0x71009661, 0xd6d5151d,
- 0x70f8801f, 0xd6cb76c9, 0x70f067fb, 0xd6c1da0b,
- 0x70e84df3, 0xd6b83ee4, 0x70e03208, 0xd6aea555,
- 0x70d8143b, 0xd6a50d5d, 0x70cff48c, 0xd69b76fe,
- 0x70c7d2fb, 0xd691e237, 0x70bfaf89, 0xd6884f09,
- 0x70b78a36, 0xd67ebd74, 0x70af6302, 0xd6752d79,
- 0x70a739ed, 0xd66b9f18, 0x709f0ef8, 0xd6621251,
- 0x7096e223, 0xd6588725, 0x708eb36f, 0xd64efd94,
- 0x708682dc, 0xd645759f, 0x707e5069, 0xd63bef46,
- 0x70761c18, 0xd6326a88, 0x706de5e9, 0xd628e767,
- 0x7065addb, 0xd61f65e4, 0x705d73f0, 0xd615e5fd,
- 0x70553828, 0xd60c67b4, 0x704cfa83, 0xd602eb0a,
- 0x7044bb00, 0xd5f96ffd, 0x703c79a2, 0xd5eff690,
- 0x70343667, 0xd5e67ec1, 0x702bf151, 0xd5dd0892,
- 0x7023aa5f, 0xd5d39403, 0x701b6193, 0xd5ca2115,
- 0x701316eb, 0xd5c0afc6, 0x700aca69, 0xd5b74019,
- 0x70027c0c, 0xd5add20d, 0x6ffa2bd6, 0xd5a465a3,
- 0x6ff1d9c7, 0xd59afadb, 0x6fe985de, 0xd59191b5,
- 0x6fe1301c, 0xd5882a32, 0x6fd8d882, 0xd57ec452,
- 0x6fd07f0f, 0xd5756016, 0x6fc823c5, 0xd56bfd7d,
- 0x6fbfc6a3, 0xd5629c89, 0x6fb767aa, 0xd5593d3a,
- 0x6faf06da, 0xd54fdf8f, 0x6fa6a433, 0xd5468389,
- 0x6f9e3fb6, 0xd53d292a, 0x6f95d963, 0xd533d070,
- 0x6f8d713a, 0xd52a795d, 0x6f85073c, 0xd52123f0,
- 0x6f7c9b69, 0xd517d02b, 0x6f742dc1, 0xd50e7e0d,
- 0x6f6bbe45, 0xd5052d97, 0x6f634cf5, 0xd4fbdec9,
- 0x6f5ad9d1, 0xd4f291a4, 0x6f5264da, 0xd4e94627,
- 0x6f49ee0f, 0xd4dffc54, 0x6f417573, 0xd4d6b42b,
- 0x6f38fb03, 0xd4cd6dab, 0x6f307ec2, 0xd4c428d6,
- 0x6f2800af, 0xd4bae5ab, 0x6f1f80ca, 0xd4b1a42c,
- 0x6f16ff14, 0xd4a86458, 0x6f0e7b8e, 0xd49f2630,
- 0x6f05f637, 0xd495e9b3, 0x6efd6f10, 0xd48caee4,
- 0x6ef4e619, 0xd48375c1, 0x6eec5b53, 0xd47a3e4b,
- 0x6ee3cebe, 0xd4710883, 0x6edb405a, 0xd467d469,
- 0x6ed2b027, 0xd45ea1fd, 0x6eca1e27, 0xd4557140,
- 0x6ec18a58, 0xd44c4232, 0x6eb8f4bc, 0xd44314d3,
- 0x6eb05d53, 0xd439e923, 0x6ea7c41e, 0xd430bf24,
- 0x6e9f291b, 0xd42796d5, 0x6e968c4d, 0xd41e7037,
- 0x6e8dedb3, 0xd4154b4a, 0x6e854d4d, 0xd40c280e,
- 0x6e7cab1c, 0xd4030684, 0x6e740720, 0xd3f9e6ad,
- 0x6e6b615a, 0xd3f0c887, 0x6e62b9ca, 0xd3e7ac15,
- 0x6e5a1070, 0xd3de9156, 0x6e51654c, 0xd3d5784a,
- 0x6e48b860, 0xd3cc60f2, 0x6e4009aa, 0xd3c34b4f,
- 0x6e37592c, 0xd3ba3760, 0x6e2ea6e6, 0xd3b12526,
- 0x6e25f2d8, 0xd3a814a2, 0x6e1d3d03, 0xd39f05d3,
- 0x6e148566, 0xd395f8ba, 0x6e0bcc03, 0xd38ced57,
- 0x6e0310d9, 0xd383e3ab, 0x6dfa53e9, 0xd37adbb6,
- 0x6df19534, 0xd371d579, 0x6de8d4b8, 0xd368d0f3,
- 0x6de01278, 0xd35fce26, 0x6dd74e73, 0xd356cd11,
- 0x6dce88aa, 0xd34dcdb4, 0x6dc5c11c, 0xd344d011,
- 0x6dbcf7cb, 0xd33bd427, 0x6db42cb6, 0xd332d9f7,
- 0x6dab5fdf, 0xd329e181, 0x6da29144, 0xd320eac6,
- 0x6d99c0e7, 0xd317f5c6, 0x6d90eec8, 0xd30f0280,
- 0x6d881ae8, 0xd30610f7, 0x6d7f4545, 0xd2fd2129,
- 0x6d766de2, 0xd2f43318, 0x6d6d94bf, 0xd2eb46c3,
- 0x6d64b9da, 0xd2e25c2b, 0x6d5bdd36, 0xd2d97350,
- 0x6d52fed2, 0xd2d08c33, 0x6d4a1eaf, 0xd2c7a6d4,
- 0x6d413ccd, 0xd2bec333, 0x6d38592c, 0xd2b5e151,
- 0x6d2f73cd, 0xd2ad012e, 0x6d268cb0, 0xd2a422ca,
- 0x6d1da3d5, 0xd29b4626, 0x6d14b93d, 0xd2926b41,
- 0x6d0bcce8, 0xd289921e, 0x6d02ded7, 0xd280babb,
- 0x6cf9ef09, 0xd277e518, 0x6cf0fd80, 0xd26f1138,
- 0x6ce80a3a, 0xd2663f19, 0x6cdf153a, 0xd25d6ebc,
- 0x6cd61e7f, 0xd254a021, 0x6ccd2609, 0xd24bd34a,
- 0x6cc42bd9, 0xd2430835, 0x6cbb2fef, 0xd23a3ee4,
- 0x6cb2324c, 0xd2317756, 0x6ca932ef, 0xd228b18d,
- 0x6ca031da, 0xd21fed88, 0x6c972f0d, 0xd2172b48,
- 0x6c8e2a87, 0xd20e6acc, 0x6c85244a, 0xd205ac17,
- 0x6c7c1c55, 0xd1fcef27, 0x6c7312a9, 0xd1f433fd,
- 0x6c6a0746, 0xd1eb7a9a, 0x6c60fa2d, 0xd1e2c2fd,
- 0x6c57eb5e, 0xd1da0d28, 0x6c4edada, 0xd1d1591a,
- 0x6c45c8a0, 0xd1c8a6d4, 0x6c3cb4b1, 0xd1bff656,
- 0x6c339f0e, 0xd1b747a0, 0x6c2a87b6, 0xd1ae9ab4,
- 0x6c216eaa, 0xd1a5ef90, 0x6c1853eb, 0xd19d4636,
- 0x6c0f3779, 0xd1949ea6, 0x6c061953, 0xd18bf8e0,
- 0x6bfcf97c, 0xd18354e4, 0x6bf3d7f2, 0xd17ab2b3,
- 0x6beab4b6, 0xd172124d, 0x6be18fc9, 0xd16973b3,
- 0x6bd8692b, 0xd160d6e5, 0x6bcf40dc, 0xd1583be2,
- 0x6bc616dd, 0xd14fa2ad, 0x6bbceb2d, 0xd1470b44,
- 0x6bb3bdce, 0xd13e75a8, 0x6baa8ec0, 0xd135e1d9,
- 0x6ba15e03, 0xd12d4fd9, 0x6b982b97, 0xd124bfa6,
- 0x6b8ef77d, 0xd11c3142, 0x6b85c1b5, 0xd113a4ad,
- 0x6b7c8a3f, 0xd10b19e7, 0x6b73511c, 0xd10290f0,
- 0x6b6a164d, 0xd0fa09c9, 0x6b60d9d0, 0xd0f18472,
- 0x6b579ba8, 0xd0e900ec, 0x6b4e5bd4, 0xd0e07f36,
- 0x6b451a55, 0xd0d7ff51, 0x6b3bd72a, 0xd0cf813e,
- 0x6b329255, 0xd0c704fd, 0x6b294bd5, 0xd0be8a8d,
- 0x6b2003ac, 0xd0b611f1, 0x6b16b9d9, 0xd0ad9b26,
- 0x6b0d6e5c, 0xd0a5262f, 0x6b042137, 0xd09cb30b,
- 0x6afad269, 0xd09441bb, 0x6af181f3, 0xd08bd23f,
- 0x6ae82fd5, 0xd0836497, 0x6adedc10, 0xd07af8c4,
- 0x6ad586a3, 0xd0728ec6, 0x6acc2f90, 0xd06a269d,
- 0x6ac2d6d6, 0xd061c04a, 0x6ab97c77, 0xd0595bcd,
- 0x6ab02071, 0xd050f926, 0x6aa6c2c6, 0xd0489856,
- 0x6a9d6377, 0xd040395d, 0x6a940283, 0xd037dc3b,
- 0x6a8a9fea, 0xd02f80f1, 0x6a813bae, 0xd027277e,
- 0x6a77d5ce, 0xd01ecfe4, 0x6a6e6e4b, 0xd0167a22,
- 0x6a650525, 0xd00e2639, 0x6a5b9a5d, 0xd005d42a,
- 0x6a522df3, 0xcffd83f4, 0x6a48bfe7, 0xcff53597,
- 0x6a3f503a, 0xcfece915, 0x6a35deeb, 0xcfe49e6d,
- 0x6a2c6bfd, 0xcfdc55a1, 0x6a22f76e, 0xcfd40eaf,
- 0x6a19813f, 0xcfcbc999, 0x6a100970, 0xcfc3865e,
- 0x6a069003, 0xcfbb4500, 0x69fd14f6, 0xcfb3057d,
- 0x69f3984c, 0xcfaac7d8, 0x69ea1a03, 0xcfa28c10,
- 0x69e09a1c, 0xcf9a5225, 0x69d71899, 0xcf921a17,
- 0x69cd9578, 0xcf89e3e8, 0x69c410ba, 0xcf81af97,
- 0x69ba8a61, 0xcf797d24, 0x69b1026c, 0xcf714c91,
- 0x69a778db, 0xcf691ddd, 0x699dedaf, 0xcf60f108,
- 0x699460e8, 0xcf58c613, 0x698ad287, 0xcf509cfe,
- 0x6981428c, 0xcf4875ca, 0x6977b0f7, 0xcf405077,
- 0x696e1dc9, 0xcf382d05, 0x69648902, 0xcf300b74,
- 0x695af2a3, 0xcf27ebc5, 0x69515aab, 0xcf1fcdf8,
- 0x6947c11c, 0xcf17b20d, 0x693e25f5, 0xcf0f9805,
- 0x69348937, 0xcf077fe1, 0x692aeae3, 0xceff699f,
- 0x69214af8, 0xcef75541, 0x6917a977, 0xceef42c7,
- 0x690e0661, 0xcee73231, 0x690461b5, 0xcedf2380,
- 0x68fabb75, 0xced716b4, 0x68f113a0, 0xcecf0bcd,
- 0x68e76a37, 0xcec702cb, 0x68ddbf3b, 0xcebefbb0,
- 0x68d412ab, 0xceb6f67a, 0x68ca6488, 0xceaef32b,
- 0x68c0b4d2, 0xcea6f1c2, 0x68b7038b, 0xce9ef241,
- 0x68ad50b1, 0xce96f4a7, 0x68a39c46, 0xce8ef8f4,
- 0x6899e64a, 0xce86ff2a, 0x68902ebd, 0xce7f0748,
- 0x688675a0, 0xce77114e, 0x687cbaf3, 0xce6f1d3d,
- 0x6872feb6, 0xce672b16, 0x686940ea, 0xce5f3ad8,
- 0x685f8190, 0xce574c84, 0x6855c0a6, 0xce4f6019,
- 0x684bfe2f, 0xce47759a, 0x68423a2a, 0xce3f8d05,
- 0x68387498, 0xce37a65b, 0x682ead78, 0xce2fc19c,
- 0x6824e4cc, 0xce27dec9, 0x681b1a94, 0xce1ffde2,
- 0x68114ed0, 0xce181ee8, 0x68078181, 0xce1041d9,
- 0x67fdb2a7, 0xce0866b8, 0x67f3e241, 0xce008d84,
- 0x67ea1052, 0xcdf8b63d, 0x67e03cd8, 0xcdf0e0e4,
- 0x67d667d5, 0xcde90d79, 0x67cc9149, 0xcde13bfd,
- 0x67c2b934, 0xcdd96c6f, 0x67b8df97, 0xcdd19ed0,
- 0x67af0472, 0xcdc9d320, 0x67a527c4, 0xcdc20960,
- 0x679b4990, 0xcdba4190, 0x679169d5, 0xcdb27bb0,
- 0x67878893, 0xcdaab7c0, 0x677da5cb, 0xcda2f5c2,
- 0x6773c17d, 0xcd9b35b4, 0x6769dbaa, 0xcd937798,
- 0x675ff452, 0xcd8bbb6d, 0x67560b76, 0xcd840134,
- 0x674c2115, 0xcd7c48ee, 0x67423530, 0xcd74929a,
- 0x673847c8, 0xcd6cde39, 0x672e58dc, 0xcd652bcb,
- 0x6724686e, 0xcd5d7b50, 0x671a767e, 0xcd55ccca,
- 0x6710830c, 0xcd4e2037, 0x67068e18, 0xcd467599,
- 0x66fc97a3, 0xcd3eccef, 0x66f29fad, 0xcd37263a,
- 0x66e8a637, 0xcd2f817b, 0x66deab41, 0xcd27deb0,
- 0x66d4aecb, 0xcd203ddc, 0x66cab0d6, 0xcd189efe,
- 0x66c0b162, 0xcd110216, 0x66b6b070, 0xcd096725,
- 0x66acadff, 0xcd01ce2b, 0x66a2aa11, 0xccfa3729,
- 0x6698a4a6, 0xccf2a21d, 0x668e9dbd, 0xcceb0f0a,
- 0x66849558, 0xcce37def, 0x667a8b77, 0xccdbeecc,
- 0x6670801a, 0xccd461a2, 0x66667342, 0xccccd671,
- 0x665c64ef, 0xccc54d3a, 0x66525521, 0xccbdc5fc,
- 0x664843d9, 0xccb640b8, 0x663e3117, 0xccaebd6e,
- 0x66341cdb, 0xcca73c1e, 0x662a0727, 0xcc9fbcca,
- 0x661feffa, 0xcc983f70, 0x6615d754, 0xcc90c412,
- 0x660bbd37, 0xcc894aaf, 0x6601a1a2, 0xcc81d349,
- 0x65f78497, 0xcc7a5dde, 0x65ed6614, 0xcc72ea70,
- 0x65e3461b, 0xcc6b78ff, 0x65d924ac, 0xcc64098b,
- 0x65cf01c8, 0xcc5c9c14, 0x65c4dd6e, 0xcc55309b,
- 0x65bab7a0, 0xcc4dc720, 0x65b0905d, 0xcc465fa3,
- 0x65a667a7, 0xcc3efa25, 0x659c3d7c, 0xcc3796a5,
- 0x659211df, 0xcc303524, 0x6587e4cf, 0xcc28d5a3,
- 0x657db64c, 0xcc217822, 0x65738657, 0xcc1a1ca0,
- 0x656954f1, 0xcc12c31f, 0x655f2219, 0xcc0b6b9e,
- 0x6554edd1, 0xcc04161e, 0x654ab818, 0xcbfcc29f,
- 0x654080ef, 0xcbf57121, 0x65364857, 0xcbee21a5,
- 0x652c0e4f, 0xcbe6d42b, 0x6521d2d8, 0xcbdf88b3,
- 0x651795f3, 0xcbd83f3d, 0x650d57a0, 0xcbd0f7ca,
- 0x650317df, 0xcbc9b25a, 0x64f8d6b0, 0xcbc26eee,
- 0x64ee9415, 0xcbbb2d85, 0x64e4500e, 0xcbb3ee20,
- 0x64da0a9a, 0xcbacb0bf, 0x64cfc3ba, 0xcba57563,
- 0x64c57b6f, 0xcb9e3c0b, 0x64bb31ba, 0xcb9704b9,
- 0x64b0e699, 0xcb8fcf6b, 0x64a69a0f, 0xcb889c23,
- 0x649c4c1b, 0xcb816ae1, 0x6491fcbe, 0xcb7a3ba5,
- 0x6487abf7, 0xcb730e70, 0x647d59c8, 0xcb6be341,
- 0x64730631, 0xcb64ba19, 0x6468b132, 0xcb5d92f8,
- 0x645e5acc, 0xcb566ddf, 0x645402ff, 0xcb4f4acd,
- 0x6449a9cc, 0xcb4829c4, 0x643f4f32, 0xcb410ac3,
- 0x6434f332, 0xcb39edca, 0x642a95ce, 0xcb32d2da,
- 0x64203704, 0xcb2bb9f4, 0x6415d6d5, 0xcb24a316,
- 0x640b7543, 0xcb1d8e43, 0x6401124d, 0xcb167b79,
- 0x63f6adf3, 0xcb0f6aba, 0x63ec4837, 0xcb085c05,
- 0x63e1e117, 0xcb014f5b, 0x63d77896, 0xcafa44bc,
- 0x63cd0eb3, 0xcaf33c28, 0x63c2a36f, 0xcaec35a0,
- 0x63b836ca, 0xcae53123, 0x63adc8c4, 0xcade2eb3,
- 0x63a3595e, 0xcad72e4f, 0x6398e898, 0xcad02ff8,
- 0x638e7673, 0xcac933ae, 0x638402ef, 0xcac23971,
- 0x63798e0d, 0xcabb4141, 0x636f17cc, 0xcab44b1f,
- 0x6364a02e, 0xcaad570c, 0x635a2733, 0xcaa66506,
- 0x634facda, 0xca9f750f, 0x63453125, 0xca988727,
- 0x633ab414, 0xca919b4e, 0x633035a7, 0xca8ab184,
- 0x6325b5df, 0xca83c9ca, 0x631b34bc, 0xca7ce420,
- 0x6310b23e, 0xca760086, 0x63062e67, 0xca6f1efc,
- 0x62fba936, 0xca683f83, 0x62f122ab, 0xca61621b,
- 0x62e69ac8, 0xca5a86c4, 0x62dc118c, 0xca53ad7e,
- 0x62d186f8, 0xca4cd64b, 0x62c6fb0c, 0xca460129,
- 0x62bc6dca, 0xca3f2e19, 0x62b1df30, 0xca385d1d,
- 0x62a74f40, 0xca318e32, 0x629cbdfa, 0xca2ac15b,
- 0x62922b5e, 0xca23f698, 0x6287976e, 0xca1d2de7,
- 0x627d0228, 0xca16674b, 0x62726b8e, 0xca0fa2c3,
- 0x6267d3a0, 0xca08e04f, 0x625d3a5e, 0xca021fef,
- 0x62529fca, 0xc9fb61a5, 0x624803e2, 0xc9f4a570,
- 0x623d66a8, 0xc9edeb50, 0x6232c81c, 0xc9e73346,
- 0x6228283f, 0xc9e07d51, 0x621d8711, 0xc9d9c973,
- 0x6212e492, 0xc9d317ab, 0x620840c2, 0xc9cc67fa,
- 0x61fd9ba3, 0xc9c5ba60, 0x61f2f534, 0xc9bf0edd,
- 0x61e84d76, 0xc9b86572, 0x61dda46a, 0xc9b1be1e,
- 0x61d2fa0f, 0xc9ab18e3, 0x61c84e67, 0xc9a475bf,
- 0x61bda171, 0xc99dd4b4, 0x61b2f32e, 0xc99735c2,
- 0x61a8439e, 0xc99098e9, 0x619d92c2, 0xc989fe29,
- 0x6192e09b, 0xc9836582, 0x61882d28, 0xc97ccef5,
- 0x617d786a, 0xc9763a83, 0x6172c262, 0xc96fa82a,
- 0x61680b0f, 0xc96917ec, 0x615d5273, 0xc96289c9,
- 0x6152988d, 0xc95bfdc1, 0x6147dd5f, 0xc95573d4,
- 0x613d20e8, 0xc94eec03, 0x61326329, 0xc948664d,
- 0x6127a423, 0xc941e2b4, 0x611ce3d5, 0xc93b6137,
- 0x61122240, 0xc934e1d6, 0x61075f65, 0xc92e6492,
- 0x60fc9b44, 0xc927e96b, 0x60f1d5de, 0xc9217062,
- 0x60e70f32, 0xc91af976, 0x60dc4742, 0xc91484a8,
- 0x60d17e0d, 0xc90e11f7, 0x60c6b395, 0xc907a166,
- 0x60bbe7d8, 0xc90132f2, 0x60b11ad9, 0xc8fac69e,
- 0x60a64c97, 0xc8f45c68, 0x609b7d13, 0xc8edf452,
- 0x6090ac4d, 0xc8e78e5b, 0x6085da46, 0xc8e12a84,
- 0x607b06fe, 0xc8dac8cd, 0x60703275, 0xc8d46936,
- 0x60655cac, 0xc8ce0bc0, 0x605a85a3, 0xc8c7b06b,
- 0x604fad5b, 0xc8c15736, 0x6044d3d4, 0xc8bb0023,
- 0x6039f90f, 0xc8b4ab32, 0x602f1d0b, 0xc8ae5862,
- 0x60243fca, 0xc8a807b4, 0x6019614c, 0xc8a1b928,
- 0x600e8190, 0xc89b6cbf, 0x6003a099, 0xc8952278,
- 0x5ff8be65, 0xc88eda54, 0x5feddaf6, 0xc8889454,
- 0x5fe2f64c, 0xc8825077, 0x5fd81067, 0xc87c0ebd,
- 0x5fcd2948, 0xc875cf28, 0x5fc240ef, 0xc86f91b7,
- 0x5fb7575c, 0xc869566a, 0x5fac6c91, 0xc8631d42,
- 0x5fa1808c, 0xc85ce63e, 0x5f969350, 0xc856b160,
- 0x5f8ba4dc, 0xc8507ea7, 0x5f80b531, 0xc84a4e14,
- 0x5f75c44e, 0xc8441fa6, 0x5f6ad235, 0xc83df35f,
- 0x5f5fdee6, 0xc837c93e, 0x5f54ea62, 0xc831a143,
- 0x5f49f4a8, 0xc82b7b70, 0x5f3efdb9, 0xc82557c3,
- 0x5f340596, 0xc81f363d, 0x5f290c3f, 0xc81916df,
- 0x5f1e11b5, 0xc812f9a9, 0x5f1315f7, 0xc80cde9b,
- 0x5f081907, 0xc806c5b5, 0x5efd1ae4, 0xc800aef7,
- 0x5ef21b90, 0xc7fa9a62, 0x5ee71b0a, 0xc7f487f6,
- 0x5edc1953, 0xc7ee77b3, 0x5ed1166b, 0xc7e8699a,
- 0x5ec61254, 0xc7e25daa, 0x5ebb0d0d, 0xc7dc53e3,
- 0x5eb00696, 0xc7d64c47, 0x5ea4fef0, 0xc7d046d6,
- 0x5e99f61d, 0xc7ca438f, 0x5e8eec1b, 0xc7c44272,
- 0x5e83e0eb, 0xc7be4381, 0x5e78d48e, 0xc7b846ba,
- 0x5e6dc705, 0xc7b24c20, 0x5e62b84f, 0xc7ac53b1,
- 0x5e57a86d, 0xc7a65d6e, 0x5e4c9760, 0xc7a06957,
- 0x5e418528, 0xc79a776c, 0x5e3671c5, 0xc79487ae,
- 0x5e2b5d38, 0xc78e9a1d, 0x5e204781, 0xc788aeb9,
- 0x5e1530a1, 0xc782c582, 0x5e0a1898, 0xc77cde79,
- 0x5dfeff67, 0xc776f99d, 0x5df3e50d, 0xc77116f0,
- 0x5de8c98c, 0xc76b3671, 0x5dddace4, 0xc7655820,
- 0x5dd28f15, 0xc75f7bfe, 0x5dc7701f, 0xc759a20a,
- 0x5dbc5004, 0xc753ca46, 0x5db12ec3, 0xc74df4b1,
- 0x5da60c5d, 0xc748214c, 0x5d9ae8d2, 0xc7425016,
- 0x5d8fc424, 0xc73c8111, 0x5d849e51, 0xc736b43c,
- 0x5d79775c, 0xc730e997, 0x5d6e4f43, 0xc72b2123,
- 0x5d632608, 0xc7255ae0, 0x5d57fbaa, 0xc71f96ce,
- 0x5d4cd02c, 0xc719d4ed, 0x5d41a38c, 0xc714153e,
- 0x5d3675cb, 0xc70e57c0, 0x5d2b46ea, 0xc7089c75,
- 0x5d2016e9, 0xc702e35c, 0x5d14e5c9, 0xc6fd2c75,
- 0x5d09b389, 0xc6f777c1, 0x5cfe802b, 0xc6f1c540,
- 0x5cf34baf, 0xc6ec14f2, 0x5ce81615, 0xc6e666d7,
- 0x5cdcdf5e, 0xc6e0baf0, 0x5cd1a78a, 0xc6db113d,
- 0x5cc66e99, 0xc6d569be, 0x5cbb348d, 0xc6cfc472,
- 0x5caff965, 0xc6ca215c, 0x5ca4bd21, 0xc6c4807a,
- 0x5c997fc4, 0xc6bee1cd, 0x5c8e414b, 0xc6b94554,
- 0x5c8301b9, 0xc6b3ab12, 0x5c77c10e, 0xc6ae1304,
- 0x5c6c7f4a, 0xc6a87d2d, 0x5c613c6d, 0xc6a2e98b,
- 0x5c55f878, 0xc69d5820, 0x5c4ab36b, 0xc697c8eb,
- 0x5c3f6d47, 0xc6923bec, 0x5c34260c, 0xc68cb124,
- 0x5c28ddbb, 0xc6872894, 0x5c1d9454, 0xc681a23a,
- 0x5c1249d8, 0xc67c1e18, 0x5c06fe46, 0xc6769c2e,
- 0x5bfbb1a0, 0xc6711c7b, 0x5bf063e6, 0xc66b9f01,
- 0x5be51518, 0xc66623be, 0x5bd9c537, 0xc660aab5,
- 0x5bce7442, 0xc65b33e4, 0x5bc3223c, 0xc655bf4c,
- 0x5bb7cf23, 0xc6504ced, 0x5bac7af9, 0xc64adcc7,
- 0x5ba125bd, 0xc6456edb, 0x5b95cf71, 0xc6400329,
- 0x5b8a7815, 0xc63a99b1, 0x5b7f1fa9, 0xc6353273,
- 0x5b73c62d, 0xc62fcd6f, 0x5b686ba3, 0xc62a6aa6,
- 0x5b5d100a, 0xc6250a18, 0x5b51b363, 0xc61fabc4,
- 0x5b4655ae, 0xc61a4fac, 0x5b3af6ec, 0xc614f5cf,
- 0x5b2f971e, 0xc60f9e2e, 0x5b243643, 0xc60a48c9,
- 0x5b18d45c, 0xc604f5a0, 0x5b0d716a, 0xc5ffa4b3,
- 0x5b020d6c, 0xc5fa5603, 0x5af6a865, 0xc5f5098f,
- 0x5aeb4253, 0xc5efbf58, 0x5adfdb37, 0xc5ea775e,
- 0x5ad47312, 0xc5e531a1, 0x5ac909e5, 0xc5dfee22,
- 0x5abd9faf, 0xc5daace1, 0x5ab23471, 0xc5d56ddd,
- 0x5aa6c82b, 0xc5d03118, 0x5a9b5adf, 0xc5caf690,
- 0x5a8fec8c, 0xc5c5be47, 0x5a847d33, 0xc5c0883d,
- 0x5a790cd4, 0xc5bb5472, 0x5a6d9b70, 0xc5b622e6,
- 0x5a622907, 0xc5b0f399, 0x5a56b599, 0xc5abc68c,
- 0x5a4b4128, 0xc5a69bbe, 0x5a3fcbb3, 0xc5a17330,
- 0x5a34553b, 0xc59c4ce3, 0x5a28ddc0, 0xc59728d5,
- 0x5a1d6544, 0xc5920708, 0x5a11ebc5, 0xc58ce77c,
- 0x5a067145, 0xc587ca31, 0x59faf5c5, 0xc582af26,
- 0x59ef7944, 0xc57d965d, 0x59e3fbc3, 0xc5787fd6,
- 0x59d87d42, 0xc5736b90, 0x59ccfdc2, 0xc56e598c,
- 0x59c17d44, 0xc56949ca, 0x59b5fbc8, 0xc5643c4a,
- 0x59aa794d, 0xc55f310d, 0x599ef5d6, 0xc55a2812,
- 0x59937161, 0xc555215a, 0x5987ebf0, 0xc5501ce5,
- 0x597c6584, 0xc54b1ab4, 0x5970de1b, 0xc5461ac6,
- 0x596555b8, 0xc5411d1b, 0x5959cc5a, 0xc53c21b4,
- 0x594e4201, 0xc5372891, 0x5942b6af, 0xc53231b3,
- 0x59372a64, 0xc52d3d18, 0x592b9d1f, 0xc5284ac3,
- 0x59200ee3, 0xc5235ab2, 0x59147fae, 0xc51e6ce6,
- 0x5908ef82, 0xc519815f, 0x58fd5e5f, 0xc514981d,
- 0x58f1cc45, 0xc50fb121, 0x58e63935, 0xc50acc6b,
- 0x58daa52f, 0xc505e9fb, 0x58cf1034, 0xc50109d0,
- 0x58c37a44, 0xc4fc2bec, 0x58b7e35f, 0xc4f7504e,
- 0x58ac4b87, 0xc4f276f7, 0x58a0b2bb, 0xc4ed9fe7,
- 0x589518fc, 0xc4e8cb1e, 0x58897e4a, 0xc4e3f89c,
- 0x587de2a7, 0xc4df2862, 0x58724611, 0xc4da5a6f,
- 0x5866a88a, 0xc4d58ec3, 0x585b0a13, 0xc4d0c560,
- 0x584f6aab, 0xc4cbfe45, 0x5843ca53, 0xc4c73972,
- 0x5838290c, 0xc4c276e8, 0x582c86d5, 0xc4bdb6a6,
- 0x5820e3b0, 0xc4b8f8ad, 0x58153f9d, 0xc4b43cfd,
- 0x58099a9c, 0xc4af8397, 0x57fdf4ae, 0xc4aacc7a,
- 0x57f24dd3, 0xc4a617a6, 0x57e6a60c, 0xc4a1651c,
- 0x57dafd59, 0xc49cb4dd, 0x57cf53bb, 0xc49806e7,
- 0x57c3a931, 0xc4935b3c, 0x57b7fdbd, 0xc48eb1db,
- 0x57ac515f, 0xc48a0ac4, 0x57a0a417, 0xc48565f9,
- 0x5794f5e6, 0xc480c379, 0x578946cc, 0xc47c2344,
- 0x577d96ca, 0xc477855a, 0x5771e5e0, 0xc472e9bc,
- 0x5766340f, 0xc46e5069, 0x575a8157, 0xc469b963,
- 0x574ecdb8, 0xc46524a9, 0x57431933, 0xc460923b,
- 0x573763c9, 0xc45c0219, 0x572bad7a, 0xc4577444,
- 0x571ff646, 0xc452e8bc, 0x57143e2d, 0xc44e5f80,
- 0x57088531, 0xc449d892, 0x56fccb51, 0xc44553f2,
- 0x56f1108f, 0xc440d19e, 0x56e554ea, 0xc43c5199,
- 0x56d99864, 0xc437d3e1, 0x56cddafb, 0xc4335877,
- 0x56c21cb2, 0xc42edf5c, 0x56b65d88, 0xc42a688f,
- 0x56aa9d7e, 0xc425f410, 0x569edc94, 0xc42181e0,
- 0x56931acb, 0xc41d11ff, 0x56875823, 0xc418a46d,
- 0x567b949d, 0xc414392b, 0x566fd039, 0xc40fd037,
- 0x56640af7, 0xc40b6994, 0x565844d8, 0xc4070540,
- 0x564c7ddd, 0xc402a33c, 0x5640b606, 0xc3fe4388,
- 0x5634ed53, 0xc3f9e624, 0x562923c5, 0xc3f58b10,
- 0x561d595d, 0xc3f1324e, 0x56118e1a, 0xc3ecdbdc,
- 0x5605c1fd, 0xc3e887bb, 0x55f9f507, 0xc3e435ea,
- 0x55ee2738, 0xc3dfe66c, 0x55e25890, 0xc3db993e,
- 0x55d68911, 0xc3d74e62, 0x55cab8ba, 0xc3d305d8,
- 0x55bee78c, 0xc3cebfa0, 0x55b31587, 0xc3ca7bba,
- 0x55a742ac, 0xc3c63a26, 0x559b6efb, 0xc3c1fae5,
- 0x558f9a76, 0xc3bdbdf6, 0x5583c51b, 0xc3b9835a,
- 0x5577eeec, 0xc3b54b11, 0x556c17e9, 0xc3b1151b,
- 0x55604013, 0xc3ace178, 0x5554676a, 0xc3a8b028,
- 0x55488dee, 0xc3a4812c, 0x553cb3a0, 0xc3a05484,
- 0x5530d881, 0xc39c2a2f, 0x5524fc90, 0xc398022f,
- 0x55191fcf, 0xc393dc82, 0x550d423d, 0xc38fb92a,
- 0x550163dc, 0xc38b9827, 0x54f584ac, 0xc3877978,
- 0x54e9a4ac, 0xc3835d1e, 0x54ddc3de, 0xc37f4319,
- 0x54d1e242, 0xc37b2b6a, 0x54c5ffd9, 0xc377160f,
- 0x54ba1ca3, 0xc373030a, 0x54ae38a0, 0xc36ef25b,
- 0x54a253d1, 0xc36ae401, 0x54966e36, 0xc366d7fd,
- 0x548a87d1, 0xc362ce50, 0x547ea0a0, 0xc35ec6f8,
- 0x5472b8a5, 0xc35ac1f7, 0x5466cfe1, 0xc356bf4d,
- 0x545ae653, 0xc352bef9, 0x544efbfc, 0xc34ec0fc,
- 0x544310dd, 0xc34ac556, 0x543724f5, 0xc346cc07,
- 0x542b3846, 0xc342d510, 0x541f4ad1, 0xc33ee070,
- 0x54135c94, 0xc33aee27, 0x54076d91, 0xc336fe37,
- 0x53fb7dc9, 0xc333109e, 0x53ef8d3c, 0xc32f255e,
- 0x53e39be9, 0xc32b3c75, 0x53d7a9d3, 0xc32755e5,
- 0x53cbb6f8, 0xc32371ae, 0x53bfc35b, 0xc31f8fcf,
- 0x53b3cefa, 0xc31bb049, 0x53a7d9d7, 0xc317d31c,
- 0x539be3f2, 0xc313f848, 0x538fed4b, 0xc3101fce,
- 0x5383f5e3, 0xc30c49ad, 0x5377fdbb, 0xc30875e5,
- 0x536c04d2, 0xc304a477, 0x53600b2a, 0xc300d563,
- 0x535410c3, 0xc2fd08a9, 0x5348159d, 0xc2f93e4a,
- 0x533c19b8, 0xc2f57644, 0x53301d16, 0xc2f1b099,
- 0x53241fb6, 0xc2eded49, 0x5318219a, 0xc2ea2c53,
- 0x530c22c1, 0xc2e66db8, 0x5300232c, 0xc2e2b178,
- 0x52f422db, 0xc2def794, 0x52e821cf, 0xc2db400a,
- 0x52dc2009, 0xc2d78add, 0x52d01d89, 0xc2d3d80a,
- 0x52c41a4f, 0xc2d02794, 0x52b8165b, 0xc2cc7979,
- 0x52ac11af, 0xc2c8cdbb, 0x52a00c4b, 0xc2c52459,
- 0x5294062f, 0xc2c17d52, 0x5287ff5b, 0xc2bdd8a9,
- 0x527bf7d1, 0xc2ba365c, 0x526fef90, 0xc2b6966c,
- 0x5263e699, 0xc2b2f8d8, 0x5257dced, 0xc2af5da2,
- 0x524bd28c, 0xc2abc4c9, 0x523fc776, 0xc2a82e4d,
- 0x5233bbac, 0xc2a49a2e, 0x5227af2e, 0xc2a1086d,
- 0x521ba1fd, 0xc29d790a, 0x520f941a, 0xc299ec05,
- 0x52038584, 0xc296615d, 0x51f7763c, 0xc292d914,
- 0x51eb6643, 0xc28f5329, 0x51df5599, 0xc28bcf9c,
- 0x51d3443f, 0xc2884e6e, 0x51c73235, 0xc284cf9f,
- 0x51bb1f7c, 0xc281532e, 0x51af0c13, 0xc27dd91c,
- 0x51a2f7fc, 0xc27a616a, 0x5196e337, 0xc276ec16,
- 0x518acdc4, 0xc2737922, 0x517eb7a4, 0xc270088e,
- 0x5172a0d7, 0xc26c9a58, 0x5166895f, 0xc2692e83,
- 0x515a713a, 0xc265c50e, 0x514e586a, 0xc2625df8,
- 0x51423ef0, 0xc25ef943, 0x513624cb, 0xc25b96ee,
- 0x512a09fc, 0xc25836f9, 0x511dee84, 0xc254d965,
- 0x5111d263, 0xc2517e31, 0x5105b599, 0xc24e255e,
- 0x50f99827, 0xc24aceed, 0x50ed7a0e, 0xc2477adc,
- 0x50e15b4e, 0xc244292c, 0x50d53be7, 0xc240d9de,
- 0x50c91bda, 0xc23d8cf1, 0x50bcfb28, 0xc23a4265,
- 0x50b0d9d0, 0xc236fa3b, 0x50a4b7d3, 0xc233b473,
- 0x50989532, 0xc230710d, 0x508c71ee, 0xc22d3009,
- 0x50804e06, 0xc229f167, 0x5074297b, 0xc226b528,
- 0x5068044e, 0xc2237b4b, 0x505bde7f, 0xc22043d0,
- 0x504fb80e, 0xc21d0eb8, 0x504390fd, 0xc219dc03,
- 0x5037694b, 0xc216abb1, 0x502b40f8, 0xc2137dc2,
- 0x501f1807, 0xc2105236, 0x5012ee76, 0xc20d290d,
- 0x5006c446, 0xc20a0248, 0x4ffa9979, 0xc206dde6,
- 0x4fee6e0d, 0xc203bbe8, 0x4fe24205, 0xc2009c4e,
- 0x4fd6155f, 0xc1fd7f17, 0x4fc9e81e, 0xc1fa6445,
- 0x4fbdba40, 0xc1f74bd6, 0x4fb18bc8, 0xc1f435cc,
- 0x4fa55cb4, 0xc1f12227, 0x4f992d06, 0xc1ee10e5,
- 0x4f8cfcbe, 0xc1eb0209, 0x4f80cbdc, 0xc1e7f591,
- 0x4f749a61, 0xc1e4eb7e, 0x4f68684e, 0xc1e1e3d0,
- 0x4f5c35a3, 0xc1dede87, 0x4f500260, 0xc1dbdba3,
- 0x4f43ce86, 0xc1d8db25, 0x4f379a16, 0xc1d5dd0c,
- 0x4f2b650f, 0xc1d2e158, 0x4f1f2f73, 0xc1cfe80a,
- 0x4f12f941, 0xc1ccf122, 0x4f06c27a, 0xc1c9fca0,
- 0x4efa8b20, 0xc1c70a84, 0x4eee5331, 0xc1c41ace,
- 0x4ee21aaf, 0xc1c12d7e, 0x4ed5e19a, 0xc1be4294,
- 0x4ec9a7f3, 0xc1bb5a11, 0x4ebd6db9, 0xc1b873f5,
- 0x4eb132ef, 0xc1b5903f, 0x4ea4f793, 0xc1b2aef0,
- 0x4e98bba7, 0xc1afd007, 0x4e8c7f2a, 0xc1acf386,
- 0x4e80421e, 0xc1aa196c, 0x4e740483, 0xc1a741b9,
- 0x4e67c65a, 0xc1a46c6e, 0x4e5b87a2, 0xc1a1998a,
- 0x4e4f485c, 0xc19ec90d, 0x4e430889, 0xc19bfaf9,
- 0x4e36c82a, 0xc1992f4c, 0x4e2a873e, 0xc1966606,
- 0x4e1e45c6, 0xc1939f29, 0x4e1203c3, 0xc190dab4,
- 0x4e05c135, 0xc18e18a7, 0x4df97e1d, 0xc18b5903,
- 0x4ded3a7b, 0xc1889bc6, 0x4de0f64f, 0xc185e0f3,
- 0x4dd4b19a, 0xc1832888, 0x4dc86c5d, 0xc1807285,
- 0x4dbc2698, 0xc17dbeec, 0x4dafe04b, 0xc17b0dbb,
- 0x4da39978, 0xc1785ef4, 0x4d97521d, 0xc175b296,
- 0x4d8b0a3d, 0xc17308a1, 0x4d7ec1d6, 0xc1706115,
- 0x4d7278eb, 0xc16dbbf3, 0x4d662f7b, 0xc16b193a,
- 0x4d59e586, 0xc16878eb, 0x4d4d9b0e, 0xc165db05,
- 0x4d415013, 0xc1633f8a, 0x4d350495, 0xc160a678,
- 0x4d28b894, 0xc15e0fd1, 0x4d1c6c11, 0xc15b7b94,
- 0x4d101f0e, 0xc158e9c1, 0x4d03d189, 0xc1565a58,
- 0x4cf78383, 0xc153cd5a, 0x4ceb34fe, 0xc15142c6,
- 0x4cdee5f9, 0xc14eba9d, 0x4cd29676, 0xc14c34df,
- 0x4cc64673, 0xc149b18b, 0x4cb9f5f3, 0xc14730a3,
- 0x4cada4f5, 0xc144b225, 0x4ca1537a, 0xc1423613,
- 0x4c950182, 0xc13fbc6c, 0x4c88af0e, 0xc13d4530,
- 0x4c7c5c1e, 0xc13ad060, 0x4c7008b3, 0xc1385dfb,
- 0x4c63b4ce, 0xc135ee02, 0x4c57606e, 0xc1338075,
- 0x4c4b0b94, 0xc1311553, 0x4c3eb641, 0xc12eac9d,
- 0x4c326075, 0xc12c4653, 0x4c260a31, 0xc129e276,
- 0x4c19b374, 0xc1278104, 0x4c0d5c41, 0xc12521ff,
- 0x4c010496, 0xc122c566, 0x4bf4ac75, 0xc1206b39,
- 0x4be853de, 0xc11e1379, 0x4bdbfad1, 0xc11bbe26,
- 0x4bcfa150, 0xc1196b3f, 0x4bc34759, 0xc1171ac6,
- 0x4bb6ecef, 0xc114ccb9, 0x4baa9211, 0xc1128119,
- 0x4b9e36c0, 0xc11037e6, 0x4b91dafc, 0xc10df120,
- 0x4b857ec7, 0xc10bacc8, 0x4b79221f, 0xc1096add,
- 0x4b6cc506, 0xc1072b5f, 0x4b60677c, 0xc104ee4f,
- 0x4b540982, 0xc102b3ac, 0x4b47ab19, 0xc1007b77,
- 0x4b3b4c40, 0xc0fe45b0, 0x4b2eecf8, 0xc0fc1257,
- 0x4b228d42, 0xc0f9e16b, 0x4b162d1d, 0xc0f7b2ee,
- 0x4b09cc8c, 0xc0f586df, 0x4afd6b8d, 0xc0f35d3e,
- 0x4af10a22, 0xc0f1360b, 0x4ae4a84b, 0xc0ef1147,
- 0x4ad84609, 0xc0eceef1, 0x4acbe35b, 0xc0eacf09,
- 0x4abf8043, 0xc0e8b190, 0x4ab31cc1, 0xc0e69686,
- 0x4aa6b8d5, 0xc0e47deb, 0x4a9a5480, 0xc0e267be,
- 0x4a8defc3, 0xc0e05401, 0x4a818a9d, 0xc0de42b2,
- 0x4a752510, 0xc0dc33d2, 0x4a68bf1b, 0xc0da2762,
- 0x4a5c58c0, 0xc0d81d61, 0x4a4ff1fe, 0xc0d615cf,
- 0x4a438ad7, 0xc0d410ad, 0x4a37234a, 0xc0d20dfa,
- 0x4a2abb59, 0xc0d00db6, 0x4a1e5303, 0xc0ce0fe3,
- 0x4a11ea49, 0xc0cc147f, 0x4a05812c, 0xc0ca1b8a,
- 0x49f917ac, 0xc0c82506, 0x49ecadc9, 0xc0c630f2,
- 0x49e04385, 0xc0c43f4d, 0x49d3d8df, 0xc0c25019,
- 0x49c76dd8, 0xc0c06355, 0x49bb0271, 0xc0be7901,
- 0x49ae96aa, 0xc0bc911d, 0x49a22a83, 0xc0baabaa,
- 0x4995bdfd, 0xc0b8c8a7, 0x49895118, 0xc0b6e815,
- 0x497ce3d5, 0xc0b509f3, 0x49707635, 0xc0b32e42,
- 0x49640837, 0xc0b15502, 0x495799dd, 0xc0af7e33,
- 0x494b2b27, 0xc0ada9d4, 0x493ebc14, 0xc0abd7e6,
- 0x49324ca7, 0xc0aa086a, 0x4925dcdf, 0xc0a83b5e,
- 0x49196cbc, 0xc0a670c4, 0x490cfc40, 0xc0a4a89b,
- 0x49008b6a, 0xc0a2e2e3, 0x48f41a3c, 0xc0a11f9d,
- 0x48e7a8b5, 0xc09f5ec8, 0x48db36d6, 0xc09da065,
- 0x48cec4a0, 0xc09be473, 0x48c25213, 0xc09a2af3,
- 0x48b5df30, 0xc09873e4, 0x48a96bf6, 0xc096bf48,
- 0x489cf867, 0xc0950d1d, 0x48908483, 0xc0935d64,
- 0x4884104b, 0xc091b01d, 0x48779bbe, 0xc0900548,
- 0x486b26de, 0xc08e5ce5, 0x485eb1ab, 0xc08cb6f5,
- 0x48523c25, 0xc08b1376, 0x4845c64d, 0xc089726a,
- 0x48395024, 0xc087d3d0, 0x482cd9a9, 0xc08637a9,
- 0x482062de, 0xc0849df4, 0x4813ebc2, 0xc08306b2,
- 0x48077457, 0xc08171e2, 0x47fafc9c, 0xc07fdf85,
- 0x47ee8493, 0xc07e4f9b, 0x47e20c3b, 0xc07cc223,
- 0x47d59396, 0xc07b371e, 0x47c91aa3, 0xc079ae8c,
- 0x47bca163, 0xc078286e, 0x47b027d7, 0xc076a4c2,
- 0x47a3adff, 0xc0752389, 0x479733dc, 0xc073a4c3,
- 0x478ab96e, 0xc0722871, 0x477e3eb5, 0xc070ae92,
- 0x4771c3b3, 0xc06f3726, 0x47654867, 0xc06dc22e,
- 0x4758ccd2, 0xc06c4fa8, 0x474c50f4, 0xc06adf97,
- 0x473fd4cf, 0xc06971f9, 0x47335862, 0xc06806ce,
- 0x4726dbae, 0xc0669e18, 0x471a5eb3, 0xc06537d4,
- 0x470de172, 0xc063d405, 0x470163eb, 0xc06272aa,
- 0x46f4e620, 0xc06113c2, 0x46e86810, 0xc05fb74e,
- 0x46dbe9bb, 0xc05e5d4e, 0x46cf6b23, 0xc05d05c3,
- 0x46c2ec48, 0xc05bb0ab, 0x46b66d29, 0xc05a5e07,
- 0x46a9edc9, 0xc0590dd8, 0x469d6e27, 0xc057c01d,
- 0x4690ee44, 0xc05674d6, 0x46846e1f, 0xc0552c03,
- 0x4677edbb, 0xc053e5a5, 0x466b6d16, 0xc052a1bb,
- 0x465eec33, 0xc0516045, 0x46526b10, 0xc0502145,
- 0x4645e9af, 0xc04ee4b8, 0x46396810, 0xc04daaa1,
- 0x462ce634, 0xc04c72fe, 0x4620641a, 0xc04b3dcf,
- 0x4613e1c5, 0xc04a0b16, 0x46075f33, 0xc048dad1,
- 0x45fadc66, 0xc047ad01, 0x45ee595d, 0xc04681a6,
- 0x45e1d61b, 0xc04558c0, 0x45d5529e, 0xc044324f,
- 0x45c8cee7, 0xc0430e53, 0x45bc4af8, 0xc041eccc,
- 0x45afc6d0, 0xc040cdba, 0x45a3426f, 0xc03fb11d,
- 0x4596bdd7, 0xc03e96f6, 0x458a3908, 0xc03d7f44,
- 0x457db403, 0xc03c6a07, 0x45712ec7, 0xc03b573f,
- 0x4564a955, 0xc03a46ed, 0x455823ae, 0xc0393910,
- 0x454b9dd3, 0xc0382da8, 0x453f17c3, 0xc03724b6,
- 0x4532917f, 0xc0361e3a, 0x45260b08, 0xc0351a33,
- 0x4519845e, 0xc03418a2, 0x450cfd82, 0xc0331986,
- 0x45007674, 0xc0321ce0, 0x44f3ef35, 0xc03122b0,
- 0x44e767c5, 0xc0302af5, 0x44dae024, 0xc02f35b1,
- 0x44ce5854, 0xc02e42e2, 0x44c1d054, 0xc02d5289,
- 0x44b54825, 0xc02c64a6, 0x44a8bfc7, 0xc02b7939,
- 0x449c373c, 0xc02a9042, 0x448fae83, 0xc029a9c1,
- 0x4483259d, 0xc028c5b6, 0x44769c8b, 0xc027e421,
- 0x446a134c, 0xc0270502, 0x445d89e2, 0xc0262859,
- 0x4451004d, 0xc0254e27, 0x4444768d, 0xc024766a,
- 0x4437eca4, 0xc023a124, 0x442b6290, 0xc022ce54,
- 0x441ed854, 0xc021fdfb, 0x44124dee, 0xc0213018,
- 0x4405c361, 0xc02064ab, 0x43f938ac, 0xc01f9bb5,
- 0x43ecadcf, 0xc01ed535, 0x43e022cc, 0xc01e112b,
- 0x43d397a3, 0xc01d4f99, 0x43c70c54, 0xc01c907c,
- 0x43ba80df, 0xc01bd3d6, 0x43adf546, 0xc01b19a7,
- 0x43a16988, 0xc01a61ee, 0x4394dda7, 0xc019acac,
- 0x438851a2, 0xc018f9e1, 0x437bc57b, 0xc018498c,
- 0x436f3931, 0xc0179bae, 0x4362acc5, 0xc016f047,
- 0x43562038, 0xc0164757, 0x43499389, 0xc015a0dd,
- 0x433d06bb, 0xc014fcda, 0x433079cc, 0xc0145b4e,
- 0x4323ecbe, 0xc013bc39, 0x43175f91, 0xc0131f9b,
- 0x430ad245, 0xc0128574, 0x42fe44dc, 0xc011edc3,
- 0x42f1b755, 0xc011588a, 0x42e529b0, 0xc010c5c7,
- 0x42d89bf0, 0xc010357c, 0x42cc0e13, 0xc00fa7a8,
- 0x42bf801a, 0xc00f1c4a, 0x42b2f207, 0xc00e9364,
- 0x42a663d8, 0xc00e0cf5, 0x4299d590, 0xc00d88fd,
- 0x428d472e, 0xc00d077c, 0x4280b8b3, 0xc00c8872,
- 0x42742a1f, 0xc00c0be0, 0x42679b73, 0xc00b91c4,
- 0x425b0caf, 0xc00b1a20, 0x424e7dd4, 0xc00aa4f3,
- 0x4241eee2, 0xc00a323d, 0x42355fd9, 0xc009c1ff,
- 0x4228d0bb, 0xc0095438, 0x421c4188, 0xc008e8e8,
- 0x420fb240, 0xc008800f, 0x420322e3, 0xc00819ae,
- 0x41f69373, 0xc007b5c4, 0x41ea03ef, 0xc0075452,
- 0x41dd7459, 0xc006f556, 0x41d0e4b0, 0xc00698d3,
- 0x41c454f5, 0xc0063ec6, 0x41b7c528, 0xc005e731,
- 0x41ab354b, 0xc0059214, 0x419ea55d, 0xc0053f6e,
- 0x4192155f, 0xc004ef3f, 0x41858552, 0xc004a188,
- 0x4178f536, 0xc0045648, 0x416c650b, 0xc0040d80,
- 0x415fd4d2, 0xc003c72f, 0x4153448c, 0xc0038356,
- 0x4146b438, 0xc00341f4, 0x413a23d8, 0xc003030a,
- 0x412d936c, 0xc002c697, 0x412102f4, 0xc0028c9c,
- 0x41147271, 0xc0025519, 0x4107e1e3, 0xc002200d,
- 0x40fb514b, 0xc001ed78, 0x40eec0aa, 0xc001bd5c,
- 0x40e22fff, 0xc0018fb6, 0x40d59f4c, 0xc0016489,
- 0x40c90e90, 0xc0013bd3, 0x40bc7dcc, 0xc0011594,
- 0x40afed02, 0xc000f1ce, 0x40a35c30, 0xc000d07e,
- 0x4096cb58, 0xc000b1a7, 0x408a3a7b, 0xc0009547,
- 0x407da998, 0xc0007b5f, 0x407118b0, 0xc00063ee,
- 0x406487c4, 0xc0004ef5, 0x4057f6d4, 0xc0003c74,
- 0x404b65e1, 0xc0002c6a, 0x403ed4ea, 0xc0001ed8,
- 0x403243f1, 0xc00013bd, 0x4025b2f7, 0xc0000b1a,
- 0x401921fb, 0xc00004ef, 0x400c90fe, 0xc000013c,
+ 0x40000000, 0x40000000, 0x400c90fe, 0x3ffffec4,
+ 0x401921fb, 0x3ffffb11, 0x4025b2f7, 0x3ffff4e6,
+ 0x403243f1, 0x3fffec43, 0x403ed4ea, 0x3fffe128,
+ 0x404b65e1, 0x3fffd396, 0x4057f6d4, 0x3fffc38c,
+ 0x406487c4, 0x3fffb10b, 0x407118b0, 0x3fff9c12,
+ 0x407da998, 0x3fff84a1, 0x408a3a7b, 0x3fff6ab9,
+ 0x4096cb58, 0x3fff4e59, 0x40a35c30, 0x3fff2f82,
+ 0x40afed02, 0x3fff0e32, 0x40bc7dcc, 0x3ffeea6c,
+ 0x40c90e90, 0x3ffec42d, 0x40d59f4c, 0x3ffe9b77,
+ 0x40e22fff, 0x3ffe704a, 0x40eec0aa, 0x3ffe42a4,
+ 0x40fb514b, 0x3ffe1288, 0x4107e1e3, 0x3ffddff3,
+ 0x41147271, 0x3ffdaae7, 0x412102f4, 0x3ffd7364,
+ 0x412d936c, 0x3ffd3969, 0x413a23d8, 0x3ffcfcf6,
+ 0x4146b438, 0x3ffcbe0c, 0x4153448c, 0x3ffc7caa,
+ 0x415fd4d2, 0x3ffc38d1, 0x416c650b, 0x3ffbf280,
+ 0x4178f536, 0x3ffba9b8, 0x41858552, 0x3ffb5e78,
+ 0x4192155f, 0x3ffb10c1, 0x419ea55d, 0x3ffac092,
+ 0x41ab354b, 0x3ffa6dec, 0x41b7c528, 0x3ffa18cf,
+ 0x41c454f5, 0x3ff9c13a, 0x41d0e4b0, 0x3ff9672d,
+ 0x41dd7459, 0x3ff90aaa, 0x41ea03ef, 0x3ff8abae,
+ 0x41f69373, 0x3ff84a3c, 0x420322e3, 0x3ff7e652,
+ 0x420fb240, 0x3ff77ff1, 0x421c4188, 0x3ff71718,
+ 0x4228d0bb, 0x3ff6abc8, 0x42355fd9, 0x3ff63e01,
+ 0x4241eee2, 0x3ff5cdc3, 0x424e7dd4, 0x3ff55b0d,
+ 0x425b0caf, 0x3ff4e5e0, 0x42679b73, 0x3ff46e3c,
+ 0x42742a1f, 0x3ff3f420, 0x4280b8b3, 0x3ff3778e,
+ 0x428d472e, 0x3ff2f884, 0x4299d590, 0x3ff27703,
+ 0x42a663d8, 0x3ff1f30b, 0x42b2f207, 0x3ff16c9c,
+ 0x42bf801a, 0x3ff0e3b6, 0x42cc0e13, 0x3ff05858,
+ 0x42d89bf0, 0x3fefca84, 0x42e529b0, 0x3fef3a39,
+ 0x42f1b755, 0x3feea776, 0x42fe44dc, 0x3fee123d,
+ 0x430ad245, 0x3fed7a8c, 0x43175f91, 0x3fece065,
+ 0x4323ecbe, 0x3fec43c7, 0x433079cc, 0x3feba4b2,
+ 0x433d06bb, 0x3feb0326, 0x43499389, 0x3fea5f23,
+ 0x43562038, 0x3fe9b8a9, 0x4362acc5, 0x3fe90fb9,
+ 0x436f3931, 0x3fe86452, 0x437bc57b, 0x3fe7b674,
+ 0x438851a2, 0x3fe7061f, 0x4394dda7, 0x3fe65354,
+ 0x43a16988, 0x3fe59e12, 0x43adf546, 0x3fe4e659,
+ 0x43ba80df, 0x3fe42c2a, 0x43c70c54, 0x3fe36f84,
+ 0x43d397a3, 0x3fe2b067, 0x43e022cc, 0x3fe1eed5,
+ 0x43ecadcf, 0x3fe12acb, 0x43f938ac, 0x3fe0644b,
+ 0x4405c361, 0x3fdf9b55, 0x44124dee, 0x3fdecfe8,
+ 0x441ed854, 0x3fde0205, 0x442b6290, 0x3fdd31ac,
+ 0x4437eca4, 0x3fdc5edc, 0x4444768d, 0x3fdb8996,
+ 0x4451004d, 0x3fdab1d9, 0x445d89e2, 0x3fd9d7a7,
+ 0x446a134c, 0x3fd8fafe, 0x44769c8b, 0x3fd81bdf,
+ 0x4483259d, 0x3fd73a4a, 0x448fae83, 0x3fd6563f,
+ 0x449c373c, 0x3fd56fbe, 0x44a8bfc7, 0x3fd486c7,
+ 0x44b54825, 0x3fd39b5a, 0x44c1d054, 0x3fd2ad77,
+ 0x44ce5854, 0x3fd1bd1e, 0x44dae024, 0x3fd0ca4f,
+ 0x44e767c5, 0x3fcfd50b, 0x44f3ef35, 0x3fcedd50,
+ 0x45007674, 0x3fcde320, 0x450cfd82, 0x3fcce67a,
+ 0x4519845e, 0x3fcbe75e, 0x45260b08, 0x3fcae5cd,
+ 0x4532917f, 0x3fc9e1c6, 0x453f17c3, 0x3fc8db4a,
+ 0x454b9dd3, 0x3fc7d258, 0x455823ae, 0x3fc6c6f0,
+ 0x4564a955, 0x3fc5b913, 0x45712ec7, 0x3fc4a8c1,
+ 0x457db403, 0x3fc395f9, 0x458a3908, 0x3fc280bc,
+ 0x4596bdd7, 0x3fc1690a, 0x45a3426f, 0x3fc04ee3,
+ 0x45afc6d0, 0x3fbf3246, 0x45bc4af8, 0x3fbe1334,
+ 0x45c8cee7, 0x3fbcf1ad, 0x45d5529e, 0x3fbbcdb1,
+ 0x45e1d61b, 0x3fbaa740, 0x45ee595d, 0x3fb97e5a,
+ 0x45fadc66, 0x3fb852ff, 0x46075f33, 0x3fb7252f,
+ 0x4613e1c5, 0x3fb5f4ea, 0x4620641a, 0x3fb4c231,
+ 0x462ce634, 0x3fb38d02, 0x46396810, 0x3fb2555f,
+ 0x4645e9af, 0x3fb11b48, 0x46526b10, 0x3fafdebb,
+ 0x465eec33, 0x3fae9fbb, 0x466b6d16, 0x3fad5e45,
+ 0x4677edbb, 0x3fac1a5b, 0x46846e1f, 0x3faad3fd,
+ 0x4690ee44, 0x3fa98b2a, 0x469d6e27, 0x3fa83fe3,
+ 0x46a9edc9, 0x3fa6f228, 0x46b66d29, 0x3fa5a1f9,
+ 0x46c2ec48, 0x3fa44f55, 0x46cf6b23, 0x3fa2fa3d,
+ 0x46dbe9bb, 0x3fa1a2b2, 0x46e86810, 0x3fa048b2,
+ 0x46f4e620, 0x3f9eec3e, 0x470163eb, 0x3f9d8d56,
+ 0x470de172, 0x3f9c2bfb, 0x471a5eb3, 0x3f9ac82c,
+ 0x4726dbae, 0x3f9961e8, 0x47335862, 0x3f97f932,
+ 0x473fd4cf, 0x3f968e07, 0x474c50f4, 0x3f952069,
+ 0x4758ccd2, 0x3f93b058, 0x47654867, 0x3f923dd2,
+ 0x4771c3b3, 0x3f90c8da, 0x477e3eb5, 0x3f8f516e,
+ 0x478ab96e, 0x3f8dd78f, 0x479733dc, 0x3f8c5b3d,
+ 0x47a3adff, 0x3f8adc77, 0x47b027d7, 0x3f895b3e,
+ 0x47bca163, 0x3f87d792, 0x47c91aa3, 0x3f865174,
+ 0x47d59396, 0x3f84c8e2, 0x47e20c3b, 0x3f833ddd,
+ 0x47ee8493, 0x3f81b065, 0x47fafc9c, 0x3f80207b,
+ 0x48077457, 0x3f7e8e1e, 0x4813ebc2, 0x3f7cf94e,
+ 0x482062de, 0x3f7b620c, 0x482cd9a9, 0x3f79c857,
+ 0x48395024, 0x3f782c30, 0x4845c64d, 0x3f768d96,
+ 0x48523c25, 0x3f74ec8a, 0x485eb1ab, 0x3f73490b,
+ 0x486b26de, 0x3f71a31b, 0x48779bbe, 0x3f6ffab8,
+ 0x4884104b, 0x3f6e4fe3, 0x48908483, 0x3f6ca29c,
+ 0x489cf867, 0x3f6af2e3, 0x48a96bf6, 0x3f6940b8,
+ 0x48b5df30, 0x3f678c1c, 0x48c25213, 0x3f65d50d,
+ 0x48cec4a0, 0x3f641b8d, 0x48db36d6, 0x3f625f9b,
+ 0x48e7a8b5, 0x3f60a138, 0x48f41a3c, 0x3f5ee063,
+ 0x49008b6a, 0x3f5d1d1d, 0x490cfc40, 0x3f5b5765,
+ 0x49196cbc, 0x3f598f3c, 0x4925dcdf, 0x3f57c4a2,
+ 0x49324ca7, 0x3f55f796, 0x493ebc14, 0x3f54281a,
+ 0x494b2b27, 0x3f52562c, 0x495799dd, 0x3f5081cd,
+ 0x49640837, 0x3f4eaafe, 0x49707635, 0x3f4cd1be,
+ 0x497ce3d5, 0x3f4af60d, 0x49895118, 0x3f4917eb,
+ 0x4995bdfd, 0x3f473759, 0x49a22a83, 0x3f455456,
+ 0x49ae96aa, 0x3f436ee3, 0x49bb0271, 0x3f4186ff,
+ 0x49c76dd8, 0x3f3f9cab, 0x49d3d8df, 0x3f3dafe7,
+ 0x49e04385, 0x3f3bc0b3, 0x49ecadc9, 0x3f39cf0e,
+ 0x49f917ac, 0x3f37dafa, 0x4a05812c, 0x3f35e476,
+ 0x4a11ea49, 0x3f33eb81, 0x4a1e5303, 0x3f31f01d,
+ 0x4a2abb59, 0x3f2ff24a, 0x4a37234a, 0x3f2df206,
+ 0x4a438ad7, 0x3f2bef53, 0x4a4ff1fe, 0x3f29ea31,
+ 0x4a5c58c0, 0x3f27e29f, 0x4a68bf1b, 0x3f25d89e,
+ 0x4a752510, 0x3f23cc2e, 0x4a818a9d, 0x3f21bd4e,
+ 0x4a8defc3, 0x3f1fabff, 0x4a9a5480, 0x3f1d9842,
+ 0x4aa6b8d5, 0x3f1b8215, 0x4ab31cc1, 0x3f19697a,
+ 0x4abf8043, 0x3f174e70, 0x4acbe35b, 0x3f1530f7,
+ 0x4ad84609, 0x3f13110f, 0x4ae4a84b, 0x3f10eeb9,
+ 0x4af10a22, 0x3f0ec9f5, 0x4afd6b8d, 0x3f0ca2c2,
+ 0x4b09cc8c, 0x3f0a7921, 0x4b162d1d, 0x3f084d12,
+ 0x4b228d42, 0x3f061e95, 0x4b2eecf8, 0x3f03eda9,
+ 0x4b3b4c40, 0x3f01ba50, 0x4b47ab19, 0x3eff8489,
+ 0x4b540982, 0x3efd4c54, 0x4b60677c, 0x3efb11b1,
+ 0x4b6cc506, 0x3ef8d4a1, 0x4b79221f, 0x3ef69523,
+ 0x4b857ec7, 0x3ef45338, 0x4b91dafc, 0x3ef20ee0,
+ 0x4b9e36c0, 0x3eefc81a, 0x4baa9211, 0x3eed7ee7,
+ 0x4bb6ecef, 0x3eeb3347, 0x4bc34759, 0x3ee8e53a,
+ 0x4bcfa150, 0x3ee694c1, 0x4bdbfad1, 0x3ee441da,
+ 0x4be853de, 0x3ee1ec87, 0x4bf4ac75, 0x3edf94c7,
+ 0x4c010496, 0x3edd3a9a, 0x4c0d5c41, 0x3edade01,
+ 0x4c19b374, 0x3ed87efc, 0x4c260a31, 0x3ed61d8a,
+ 0x4c326075, 0x3ed3b9ad, 0x4c3eb641, 0x3ed15363,
+ 0x4c4b0b94, 0x3eceeaad, 0x4c57606e, 0x3ecc7f8b,
+ 0x4c63b4ce, 0x3eca11fe, 0x4c7008b3, 0x3ec7a205,
+ 0x4c7c5c1e, 0x3ec52fa0, 0x4c88af0e, 0x3ec2bad0,
+ 0x4c950182, 0x3ec04394, 0x4ca1537a, 0x3ebdc9ed,
+ 0x4cada4f5, 0x3ebb4ddb, 0x4cb9f5f3, 0x3eb8cf5d,
+ 0x4cc64673, 0x3eb64e75, 0x4cd29676, 0x3eb3cb21,
+ 0x4cdee5f9, 0x3eb14563, 0x4ceb34fe, 0x3eaebd3a,
+ 0x4cf78383, 0x3eac32a6, 0x4d03d189, 0x3ea9a5a8,
+ 0x4d101f0e, 0x3ea7163f, 0x4d1c6c11, 0x3ea4846c,
+ 0x4d28b894, 0x3ea1f02f, 0x4d350495, 0x3e9f5988,
+ 0x4d415013, 0x3e9cc076, 0x4d4d9b0e, 0x3e9a24fb,
+ 0x4d59e586, 0x3e978715, 0x4d662f7b, 0x3e94e6c6,
+ 0x4d7278eb, 0x3e92440d, 0x4d7ec1d6, 0x3e8f9eeb,
+ 0x4d8b0a3d, 0x3e8cf75f, 0x4d97521d, 0x3e8a4d6a,
+ 0x4da39978, 0x3e87a10c, 0x4dafe04b, 0x3e84f245,
+ 0x4dbc2698, 0x3e824114, 0x4dc86c5d, 0x3e7f8d7b,
+ 0x4dd4b19a, 0x3e7cd778, 0x4de0f64f, 0x3e7a1f0d,
+ 0x4ded3a7b, 0x3e77643a, 0x4df97e1d, 0x3e74a6fd,
+ 0x4e05c135, 0x3e71e759, 0x4e1203c3, 0x3e6f254c,
+ 0x4e1e45c6, 0x3e6c60d7, 0x4e2a873e, 0x3e6999fa,
+ 0x4e36c82a, 0x3e66d0b4, 0x4e430889, 0x3e640507,
+ 0x4e4f485c, 0x3e6136f3, 0x4e5b87a2, 0x3e5e6676,
+ 0x4e67c65a, 0x3e5b9392, 0x4e740483, 0x3e58be47,
+ 0x4e80421e, 0x3e55e694, 0x4e8c7f2a, 0x3e530c7a,
+ 0x4e98bba7, 0x3e502ff9, 0x4ea4f793, 0x3e4d5110,
+ 0x4eb132ef, 0x3e4a6fc1, 0x4ebd6db9, 0x3e478c0b,
+ 0x4ec9a7f3, 0x3e44a5ef, 0x4ed5e19a, 0x3e41bd6c,
+ 0x4ee21aaf, 0x3e3ed282, 0x4eee5331, 0x3e3be532,
+ 0x4efa8b20, 0x3e38f57c, 0x4f06c27a, 0x3e360360,
+ 0x4f12f941, 0x3e330ede, 0x4f1f2f73, 0x3e3017f6,
+ 0x4f2b650f, 0x3e2d1ea8, 0x4f379a16, 0x3e2a22f4,
+ 0x4f43ce86, 0x3e2724db, 0x4f500260, 0x3e24245d,
+ 0x4f5c35a3, 0x3e212179, 0x4f68684e, 0x3e1e1c30,
+ 0x4f749a61, 0x3e1b1482, 0x4f80cbdc, 0x3e180a6f,
+ 0x4f8cfcbe, 0x3e14fdf7, 0x4f992d06, 0x3e11ef1b,
+ 0x4fa55cb4, 0x3e0eddd9, 0x4fb18bc8, 0x3e0bca34,
+ 0x4fbdba40, 0x3e08b42a, 0x4fc9e81e, 0x3e059bbb,
+ 0x4fd6155f, 0x3e0280e9, 0x4fe24205, 0x3dff63b2,
+ 0x4fee6e0d, 0x3dfc4418, 0x4ffa9979, 0x3df9221a,
+ 0x5006c446, 0x3df5fdb8, 0x5012ee76, 0x3df2d6f3,
+ 0x501f1807, 0x3defadca, 0x502b40f8, 0x3dec823e,
+ 0x5037694b, 0x3de9544f, 0x504390fd, 0x3de623fd,
+ 0x504fb80e, 0x3de2f148, 0x505bde7f, 0x3ddfbc30,
+ 0x5068044e, 0x3ddc84b5, 0x5074297b, 0x3dd94ad8,
+ 0x50804e06, 0x3dd60e99, 0x508c71ee, 0x3dd2cff7,
+ 0x50989532, 0x3dcf8ef3, 0x50a4b7d3, 0x3dcc4b8d,
+ 0x50b0d9d0, 0x3dc905c5, 0x50bcfb28, 0x3dc5bd9b,
+ 0x50c91bda, 0x3dc2730f, 0x50d53be7, 0x3dbf2622,
+ 0x50e15b4e, 0x3dbbd6d4, 0x50ed7a0e, 0x3db88524,
+ 0x50f99827, 0x3db53113, 0x5105b599, 0x3db1daa2,
+ 0x5111d263, 0x3dae81cf, 0x511dee84, 0x3dab269b,
+ 0x512a09fc, 0x3da7c907, 0x513624cb, 0x3da46912,
+ 0x51423ef0, 0x3da106bd, 0x514e586a, 0x3d9da208,
+ 0x515a713a, 0x3d9a3af2, 0x5166895f, 0x3d96d17d,
+ 0x5172a0d7, 0x3d9365a8, 0x517eb7a4, 0x3d8ff772,
+ 0x518acdc4, 0x3d8c86de, 0x5196e337, 0x3d8913ea,
+ 0x51a2f7fc, 0x3d859e96, 0x51af0c13, 0x3d8226e4,
+ 0x51bb1f7c, 0x3d7eacd2, 0x51c73235, 0x3d7b3061,
+ 0x51d3443f, 0x3d77b192, 0x51df5599, 0x3d743064,
+ 0x51eb6643, 0x3d70acd7, 0x51f7763c, 0x3d6d26ec,
+ 0x52038584, 0x3d699ea3, 0x520f941a, 0x3d6613fb,
+ 0x521ba1fd, 0x3d6286f6, 0x5227af2e, 0x3d5ef793,
+ 0x5233bbac, 0x3d5b65d2, 0x523fc776, 0x3d57d1b3,
+ 0x524bd28c, 0x3d543b37, 0x5257dced, 0x3d50a25e,
+ 0x5263e699, 0x3d4d0728, 0x526fef90, 0x3d496994,
+ 0x527bf7d1, 0x3d45c9a4, 0x5287ff5b, 0x3d422757,
+ 0x5294062f, 0x3d3e82ae, 0x52a00c4b, 0x3d3adba7,
+ 0x52ac11af, 0x3d373245, 0x52b8165b, 0x3d338687,
+ 0x52c41a4f, 0x3d2fd86c, 0x52d01d89, 0x3d2c27f6,
+ 0x52dc2009, 0x3d287523, 0x52e821cf, 0x3d24bff6,
+ 0x52f422db, 0x3d21086c, 0x5300232c, 0x3d1d4e88,
+ 0x530c22c1, 0x3d199248, 0x5318219a, 0x3d15d3ad,
+ 0x53241fb6, 0x3d1212b7, 0x53301d16, 0x3d0e4f67,
+ 0x533c19b8, 0x3d0a89bc, 0x5348159d, 0x3d06c1b6,
+ 0x535410c3, 0x3d02f757, 0x53600b2a, 0x3cff2a9d,
+ 0x536c04d2, 0x3cfb5b89, 0x5377fdbb, 0x3cf78a1b,
+ 0x5383f5e3, 0x3cf3b653, 0x538fed4b, 0x3cefe032,
+ 0x539be3f2, 0x3cec07b8, 0x53a7d9d7, 0x3ce82ce4,
+ 0x53b3cefa, 0x3ce44fb7, 0x53bfc35b, 0x3ce07031,
+ 0x53cbb6f8, 0x3cdc8e52, 0x53d7a9d3, 0x3cd8aa1b,
+ 0x53e39be9, 0x3cd4c38b, 0x53ef8d3c, 0x3cd0daa2,
+ 0x53fb7dc9, 0x3cccef62, 0x54076d91, 0x3cc901c9,
+ 0x54135c94, 0x3cc511d9, 0x541f4ad1, 0x3cc11f90,
+ 0x542b3846, 0x3cbd2af0, 0x543724f5, 0x3cb933f9,
+ 0x544310dd, 0x3cb53aaa, 0x544efbfc, 0x3cb13f04,
+ 0x545ae653, 0x3cad4107, 0x5466cfe1, 0x3ca940b3,
+ 0x5472b8a5, 0x3ca53e09, 0x547ea0a0, 0x3ca13908,
+ 0x548a87d1, 0x3c9d31b0, 0x54966e36, 0x3c992803,
+ 0x54a253d1, 0x3c951bff, 0x54ae38a0, 0x3c910da5,
+ 0x54ba1ca3, 0x3c8cfcf6, 0x54c5ffd9, 0x3c88e9f1,
+ 0x54d1e242, 0x3c84d496, 0x54ddc3de, 0x3c80bce7,
+ 0x54e9a4ac, 0x3c7ca2e2, 0x54f584ac, 0x3c788688,
+ 0x550163dc, 0x3c7467d9, 0x550d423d, 0x3c7046d6,
+ 0x55191fcf, 0x3c6c237e, 0x5524fc90, 0x3c67fdd1,
+ 0x5530d881, 0x3c63d5d1, 0x553cb3a0, 0x3c5fab7c,
+ 0x55488dee, 0x3c5b7ed4, 0x5554676a, 0x3c574fd8,
+ 0x55604013, 0x3c531e88, 0x556c17e9, 0x3c4eeae5,
+ 0x5577eeec, 0x3c4ab4ef, 0x5583c51b, 0x3c467ca6,
+ 0x558f9a76, 0x3c42420a, 0x559b6efb, 0x3c3e051b,
+ 0x55a742ac, 0x3c39c5da, 0x55b31587, 0x3c358446,
+ 0x55bee78c, 0x3c314060, 0x55cab8ba, 0x3c2cfa28,
+ 0x55d68911, 0x3c28b19e, 0x55e25890, 0x3c2466c2,
+ 0x55ee2738, 0x3c201994, 0x55f9f507, 0x3c1bca16,
+ 0x5605c1fd, 0x3c177845, 0x56118e1a, 0x3c132424,
+ 0x561d595d, 0x3c0ecdb2, 0x562923c5, 0x3c0a74f0,
+ 0x5634ed53, 0x3c0619dc, 0x5640b606, 0x3c01bc78,
+ 0x564c7ddd, 0x3bfd5cc4, 0x565844d8, 0x3bf8fac0,
+ 0x56640af7, 0x3bf4966c, 0x566fd039, 0x3bf02fc9,
+ 0x567b949d, 0x3bebc6d5, 0x56875823, 0x3be75b93,
+ 0x56931acb, 0x3be2ee01, 0x569edc94, 0x3bde7e20,
+ 0x56aa9d7e, 0x3bda0bf0, 0x56b65d88, 0x3bd59771,
+ 0x56c21cb2, 0x3bd120a4, 0x56cddafb, 0x3bcca789,
+ 0x56d99864, 0x3bc82c1f, 0x56e554ea, 0x3bc3ae67,
+ 0x56f1108f, 0x3bbf2e62, 0x56fccb51, 0x3bbaac0e,
+ 0x57088531, 0x3bb6276e, 0x57143e2d, 0x3bb1a080,
+ 0x571ff646, 0x3bad1744, 0x572bad7a, 0x3ba88bbc,
+ 0x573763c9, 0x3ba3fde7, 0x57431933, 0x3b9f6dc5,
+ 0x574ecdb8, 0x3b9adb57, 0x575a8157, 0x3b96469d,
+ 0x5766340f, 0x3b91af97, 0x5771e5e0, 0x3b8d1644,
+ 0x577d96ca, 0x3b887aa6, 0x578946cc, 0x3b83dcbc,
+ 0x5794f5e6, 0x3b7f3c87, 0x57a0a417, 0x3b7a9a07,
+ 0x57ac515f, 0x3b75f53c, 0x57b7fdbd, 0x3b714e25,
+ 0x57c3a931, 0x3b6ca4c4, 0x57cf53bb, 0x3b67f919,
+ 0x57dafd59, 0x3b634b23, 0x57e6a60c, 0x3b5e9ae4,
+ 0x57f24dd3, 0x3b59e85a, 0x57fdf4ae, 0x3b553386,
+ 0x58099a9c, 0x3b507c69, 0x58153f9d, 0x3b4bc303,
+ 0x5820e3b0, 0x3b470753, 0x582c86d5, 0x3b42495a,
+ 0x5838290c, 0x3b3d8918, 0x5843ca53, 0x3b38c68e,
+ 0x584f6aab, 0x3b3401bb, 0x585b0a13, 0x3b2f3aa0,
+ 0x5866a88a, 0x3b2a713d, 0x58724611, 0x3b25a591,
+ 0x587de2a7, 0x3b20d79e, 0x58897e4a, 0x3b1c0764,
+ 0x589518fc, 0x3b1734e2, 0x58a0b2bb, 0x3b126019,
+ 0x58ac4b87, 0x3b0d8909, 0x58b7e35f, 0x3b08afb2,
+ 0x58c37a44, 0x3b03d414, 0x58cf1034, 0x3afef630,
+ 0x58daa52f, 0x3afa1605, 0x58e63935, 0x3af53395,
+ 0x58f1cc45, 0x3af04edf, 0x58fd5e5f, 0x3aeb67e3,
+ 0x5908ef82, 0x3ae67ea1, 0x59147fae, 0x3ae1931a,
+ 0x59200ee3, 0x3adca54e, 0x592b9d1f, 0x3ad7b53d,
+ 0x59372a64, 0x3ad2c2e8, 0x5942b6af, 0x3acdce4d,
+ 0x594e4201, 0x3ac8d76f, 0x5959cc5a, 0x3ac3de4c,
+ 0x596555b8, 0x3abee2e5, 0x5970de1b, 0x3ab9e53a,
+ 0x597c6584, 0x3ab4e54c, 0x5987ebf0, 0x3aafe31b,
+ 0x59937161, 0x3aaadea6, 0x599ef5d6, 0x3aa5d7ee,
+ 0x59aa794d, 0x3aa0cef3, 0x59b5fbc8, 0x3a9bc3b6,
+ 0x59c17d44, 0x3a96b636, 0x59ccfdc2, 0x3a91a674,
+ 0x59d87d42, 0x3a8c9470, 0x59e3fbc3, 0x3a87802a,
+ 0x59ef7944, 0x3a8269a3, 0x59faf5c5, 0x3a7d50da,
+ 0x5a067145, 0x3a7835cf, 0x5a11ebc5, 0x3a731884,
+ 0x5a1d6544, 0x3a6df8f8, 0x5a28ddc0, 0x3a68d72b,
+ 0x5a34553b, 0x3a63b31d, 0x5a3fcbb3, 0x3a5e8cd0,
+ 0x5a4b4128, 0x3a596442, 0x5a56b599, 0x3a543974,
+ 0x5a622907, 0x3a4f0c67, 0x5a6d9b70, 0x3a49dd1a,
+ 0x5a790cd4, 0x3a44ab8e, 0x5a847d33, 0x3a3f77c3,
+ 0x5a8fec8c, 0x3a3a41b9, 0x5a9b5adf, 0x3a350970,
+ 0x5aa6c82b, 0x3a2fcee8, 0x5ab23471, 0x3a2a9223,
+ 0x5abd9faf, 0x3a25531f, 0x5ac909e5, 0x3a2011de,
+ 0x5ad47312, 0x3a1ace5f, 0x5adfdb37, 0x3a1588a2,
+ 0x5aeb4253, 0x3a1040a8, 0x5af6a865, 0x3a0af671,
+ 0x5b020d6c, 0x3a05a9fd, 0x5b0d716a, 0x3a005b4d,
+ 0x5b18d45c, 0x39fb0a60, 0x5b243643, 0x39f5b737,
+ 0x5b2f971e, 0x39f061d2, 0x5b3af6ec, 0x39eb0a31,
+ 0x5b4655ae, 0x39e5b054, 0x5b51b363, 0x39e0543c,
+ 0x5b5d100a, 0x39daf5e8, 0x5b686ba3, 0x39d5955a,
+ 0x5b73c62d, 0x39d03291, 0x5b7f1fa9, 0x39cacd8d,
+ 0x5b8a7815, 0x39c5664f, 0x5b95cf71, 0x39bffcd7,
+ 0x5ba125bd, 0x39ba9125, 0x5bac7af9, 0x39b52339,
+ 0x5bb7cf23, 0x39afb313, 0x5bc3223c, 0x39aa40b4,
+ 0x5bce7442, 0x39a4cc1c, 0x5bd9c537, 0x399f554b,
+ 0x5be51518, 0x3999dc42, 0x5bf063e6, 0x399460ff,
+ 0x5bfbb1a0, 0x398ee385, 0x5c06fe46, 0x398963d2,
+ 0x5c1249d8, 0x3983e1e8, 0x5c1d9454, 0x397e5dc6,
+ 0x5c28ddbb, 0x3978d76c, 0x5c34260c, 0x39734edc,
+ 0x5c3f6d47, 0x396dc414, 0x5c4ab36b, 0x39683715,
+ 0x5c55f878, 0x3962a7e0, 0x5c613c6d, 0x395d1675,
+ 0x5c6c7f4a, 0x395782d3, 0x5c77c10e, 0x3951ecfc,
+ 0x5c8301b9, 0x394c54ee, 0x5c8e414b, 0x3946baac,
+ 0x5c997fc4, 0x39411e33, 0x5ca4bd21, 0x393b7f86,
+ 0x5caff965, 0x3935dea4, 0x5cbb348d, 0x39303b8e,
+ 0x5cc66e99, 0x392a9642, 0x5cd1a78a, 0x3924eec3,
+ 0x5cdcdf5e, 0x391f4510, 0x5ce81615, 0x39199929,
+ 0x5cf34baf, 0x3913eb0e, 0x5cfe802b, 0x390e3ac0,
+ 0x5d09b389, 0x3908883f, 0x5d14e5c9, 0x3902d38b,
+ 0x5d2016e9, 0x38fd1ca4, 0x5d2b46ea, 0x38f7638b,
+ 0x5d3675cb, 0x38f1a840, 0x5d41a38c, 0x38ebeac2,
+ 0x5d4cd02c, 0x38e62b13, 0x5d57fbaa, 0x38e06932,
+ 0x5d632608, 0x38daa520, 0x5d6e4f43, 0x38d4dedd,
+ 0x5d79775c, 0x38cf1669, 0x5d849e51, 0x38c94bc4,
+ 0x5d8fc424, 0x38c37eef, 0x5d9ae8d2, 0x38bdafea,
+ 0x5da60c5d, 0x38b7deb4, 0x5db12ec3, 0x38b20b4f,
+ 0x5dbc5004, 0x38ac35ba, 0x5dc7701f, 0x38a65df6,
+ 0x5dd28f15, 0x38a08402, 0x5dddace4, 0x389aa7e0,
+ 0x5de8c98c, 0x3894c98f, 0x5df3e50d, 0x388ee910,
+ 0x5dfeff67, 0x38890663, 0x5e0a1898, 0x38832187,
+ 0x5e1530a1, 0x387d3a7e, 0x5e204781, 0x38775147,
+ 0x5e2b5d38, 0x387165e3, 0x5e3671c5, 0x386b7852,
+ 0x5e418528, 0x38658894, 0x5e4c9760, 0x385f96a9,
+ 0x5e57a86d, 0x3859a292, 0x5e62b84f, 0x3853ac4f,
+ 0x5e6dc705, 0x384db3e0, 0x5e78d48e, 0x3847b946,
+ 0x5e83e0eb, 0x3841bc7f, 0x5e8eec1b, 0x383bbd8e,
+ 0x5e99f61d, 0x3835bc71, 0x5ea4fef0, 0x382fb92a,
+ 0x5eb00696, 0x3829b3b9, 0x5ebb0d0d, 0x3823ac1d,
+ 0x5ec61254, 0x381da256, 0x5ed1166b, 0x38179666,
+ 0x5edc1953, 0x3811884d, 0x5ee71b0a, 0x380b780a,
+ 0x5ef21b90, 0x3805659e, 0x5efd1ae4, 0x37ff5109,
+ 0x5f081907, 0x37f93a4b, 0x5f1315f7, 0x37f32165,
+ 0x5f1e11b5, 0x37ed0657, 0x5f290c3f, 0x37e6e921,
+ 0x5f340596, 0x37e0c9c3, 0x5f3efdb9, 0x37daa83d,
+ 0x5f49f4a8, 0x37d48490, 0x5f54ea62, 0x37ce5ebd,
+ 0x5f5fdee6, 0x37c836c2, 0x5f6ad235, 0x37c20ca1,
+ 0x5f75c44e, 0x37bbe05a, 0x5f80b531, 0x37b5b1ec,
+ 0x5f8ba4dc, 0x37af8159, 0x5f969350, 0x37a94ea0,
+ 0x5fa1808c, 0x37a319c2, 0x5fac6c91, 0x379ce2be,
+ 0x5fb7575c, 0x3796a996, 0x5fc240ef, 0x37906e49,
+ 0x5fcd2948, 0x378a30d8, 0x5fd81067, 0x3783f143,
+ 0x5fe2f64c, 0x377daf89, 0x5feddaf6, 0x37776bac,
+ 0x5ff8be65, 0x377125ac, 0x6003a099, 0x376add88,
+ 0x600e8190, 0x37649341, 0x6019614c, 0x375e46d8,
+ 0x60243fca, 0x3757f84c, 0x602f1d0b, 0x3751a79e,
+ 0x6039f90f, 0x374b54ce, 0x6044d3d4, 0x3744ffdd,
+ 0x604fad5b, 0x373ea8ca, 0x605a85a3, 0x37384f95,
+ 0x60655cac, 0x3731f440, 0x60703275, 0x372b96ca,
+ 0x607b06fe, 0x37253733, 0x6085da46, 0x371ed57c,
+ 0x6090ac4d, 0x371871a5, 0x609b7d13, 0x37120bae,
+ 0x60a64c97, 0x370ba398, 0x60b11ad9, 0x37053962,
+ 0x60bbe7d8, 0x36fecd0e, 0x60c6b395, 0x36f85e9a,
+ 0x60d17e0d, 0x36f1ee09, 0x60dc4742, 0x36eb7b58,
+ 0x60e70f32, 0x36e5068a, 0x60f1d5de, 0x36de8f9e,
+ 0x60fc9b44, 0x36d81695, 0x61075f65, 0x36d19b6e,
+ 0x61122240, 0x36cb1e2a, 0x611ce3d5, 0x36c49ec9,
+ 0x6127a423, 0x36be1d4c, 0x61326329, 0x36b799b3,
+ 0x613d20e8, 0x36b113fd, 0x6147dd5f, 0x36aa8c2c,
+ 0x6152988d, 0x36a4023f, 0x615d5273, 0x369d7637,
+ 0x61680b0f, 0x3696e814, 0x6172c262, 0x369057d6,
+ 0x617d786a, 0x3689c57d, 0x61882d28, 0x3683310b,
+ 0x6192e09b, 0x367c9a7e, 0x619d92c2, 0x367601d7,
+ 0x61a8439e, 0x366f6717, 0x61b2f32e, 0x3668ca3e,
+ 0x61bda171, 0x36622b4c, 0x61c84e67, 0x365b8a41,
+ 0x61d2fa0f, 0x3654e71d, 0x61dda46a, 0x364e41e2,
+ 0x61e84d76, 0x36479a8e, 0x61f2f534, 0x3640f123,
+ 0x61fd9ba3, 0x363a45a0, 0x620840c2, 0x36339806,
+ 0x6212e492, 0x362ce855, 0x621d8711, 0x3626368d,
+ 0x6228283f, 0x361f82af, 0x6232c81c, 0x3618ccba,
+ 0x623d66a8, 0x361214b0, 0x624803e2, 0x360b5a90,
+ 0x62529fca, 0x36049e5b, 0x625d3a5e, 0x35fde011,
+ 0x6267d3a0, 0x35f71fb1, 0x62726b8e, 0x35f05d3d,
+ 0x627d0228, 0x35e998b5, 0x6287976e, 0x35e2d219,
+ 0x62922b5e, 0x35dc0968, 0x629cbdfa, 0x35d53ea5,
+ 0x62a74f40, 0x35ce71ce, 0x62b1df30, 0x35c7a2e3,
+ 0x62bc6dca, 0x35c0d1e7, 0x62c6fb0c, 0x35b9fed7,
+ 0x62d186f8, 0x35b329b5, 0x62dc118c, 0x35ac5282,
+ 0x62e69ac8, 0x35a5793c, 0x62f122ab, 0x359e9de5,
+ 0x62fba936, 0x3597c07d, 0x63062e67, 0x3590e104,
+ 0x6310b23e, 0x3589ff7a, 0x631b34bc, 0x35831be0,
+ 0x6325b5df, 0x357c3636, 0x633035a7, 0x35754e7c,
+ 0x633ab414, 0x356e64b2, 0x63453125, 0x356778d9,
+ 0x634facda, 0x35608af1, 0x635a2733, 0x35599afa,
+ 0x6364a02e, 0x3552a8f4, 0x636f17cc, 0x354bb4e1,
+ 0x63798e0d, 0x3544bebf, 0x638402ef, 0x353dc68f,
+ 0x638e7673, 0x3536cc52, 0x6398e898, 0x352fd008,
+ 0x63a3595e, 0x3528d1b1, 0x63adc8c4, 0x3521d14d,
+ 0x63b836ca, 0x351acedd, 0x63c2a36f, 0x3513ca60,
+ 0x63cd0eb3, 0x350cc3d8, 0x63d77896, 0x3505bb44,
+ 0x63e1e117, 0x34feb0a5, 0x63ec4837, 0x34f7a3fb,
+ 0x63f6adf3, 0x34f09546, 0x6401124d, 0x34e98487,
+ 0x640b7543, 0x34e271bd, 0x6415d6d5, 0x34db5cea,
+ 0x64203704, 0x34d4460c, 0x642a95ce, 0x34cd2d26,
+ 0x6434f332, 0x34c61236, 0x643f4f32, 0x34bef53d,
+ 0x6449a9cc, 0x34b7d63c, 0x645402ff, 0x34b0b533,
+ 0x645e5acc, 0x34a99221, 0x6468b132, 0x34a26d08,
+ 0x64730631, 0x349b45e7, 0x647d59c8, 0x34941cbf,
+ 0x6487abf7, 0x348cf190, 0x6491fcbe, 0x3485c45b,
+ 0x649c4c1b, 0x347e951f, 0x64a69a0f, 0x347763dd,
+ 0x64b0e699, 0x34703095, 0x64bb31ba, 0x3468fb47,
+ 0x64c57b6f, 0x3461c3f5, 0x64cfc3ba, 0x345a8a9d,
+ 0x64da0a9a, 0x34534f41, 0x64e4500e, 0x344c11e0,
+ 0x64ee9415, 0x3444d27b, 0x64f8d6b0, 0x343d9112,
+ 0x650317df, 0x34364da6, 0x650d57a0, 0x342f0836,
+ 0x651795f3, 0x3427c0c3, 0x6521d2d8, 0x3420774d,
+ 0x652c0e4f, 0x34192bd5, 0x65364857, 0x3411de5b,
+ 0x654080ef, 0x340a8edf, 0x654ab818, 0x34033d61,
+ 0x6554edd1, 0x33fbe9e2, 0x655f2219, 0x33f49462,
+ 0x656954f1, 0x33ed3ce1, 0x65738657, 0x33e5e360,
+ 0x657db64c, 0x33de87de, 0x6587e4cf, 0x33d72a5d,
+ 0x659211df, 0x33cfcadc, 0x659c3d7c, 0x33c8695b,
+ 0x65a667a7, 0x33c105db, 0x65b0905d, 0x33b9a05d,
+ 0x65bab7a0, 0x33b238e0, 0x65c4dd6e, 0x33aacf65,
+ 0x65cf01c8, 0x33a363ec, 0x65d924ac, 0x339bf675,
+ 0x65e3461b, 0x33948701, 0x65ed6614, 0x338d1590,
+ 0x65f78497, 0x3385a222, 0x6601a1a2, 0x337e2cb7,
+ 0x660bbd37, 0x3376b551, 0x6615d754, 0x336f3bee,
+ 0x661feffa, 0x3367c090, 0x662a0727, 0x33604336,
+ 0x66341cdb, 0x3358c3e2, 0x663e3117, 0x33514292,
+ 0x664843d9, 0x3349bf48, 0x66525521, 0x33423a04,
+ 0x665c64ef, 0x333ab2c6, 0x66667342, 0x3333298f,
+ 0x6670801a, 0x332b9e5e, 0x667a8b77, 0x33241134,
+ 0x66849558, 0x331c8211, 0x668e9dbd, 0x3314f0f6,
+ 0x6698a4a6, 0x330d5de3, 0x66a2aa11, 0x3305c8d7,
+ 0x66acadff, 0x32fe31d5, 0x66b6b070, 0x32f698db,
+ 0x66c0b162, 0x32eefdea, 0x66cab0d6, 0x32e76102,
+ 0x66d4aecb, 0x32dfc224, 0x66deab41, 0x32d82150,
+ 0x66e8a637, 0x32d07e85, 0x66f29fad, 0x32c8d9c6,
+ 0x66fc97a3, 0x32c13311, 0x67068e18, 0x32b98a67,
+ 0x6710830c, 0x32b1dfc9, 0x671a767e, 0x32aa3336,
+ 0x6724686e, 0x32a284b0, 0x672e58dc, 0x329ad435,
+ 0x673847c8, 0x329321c7, 0x67423530, 0x328b6d66,
+ 0x674c2115, 0x3283b712, 0x67560b76, 0x327bfecc,
+ 0x675ff452, 0x32744493, 0x6769dbaa, 0x326c8868,
+ 0x6773c17d, 0x3264ca4c, 0x677da5cb, 0x325d0a3e,
+ 0x67878893, 0x32554840, 0x679169d5, 0x324d8450,
+ 0x679b4990, 0x3245be70, 0x67a527c4, 0x323df6a0,
+ 0x67af0472, 0x32362ce0, 0x67b8df97, 0x322e6130,
+ 0x67c2b934, 0x32269391, 0x67cc9149, 0x321ec403,
+ 0x67d667d5, 0x3216f287, 0x67e03cd8, 0x320f1f1c,
+ 0x67ea1052, 0x320749c3, 0x67f3e241, 0x31ff727c,
+ 0x67fdb2a7, 0x31f79948, 0x68078181, 0x31efbe27,
+ 0x68114ed0, 0x31e7e118, 0x681b1a94, 0x31e0021e,
+ 0x6824e4cc, 0x31d82137, 0x682ead78, 0x31d03e64,
+ 0x68387498, 0x31c859a5, 0x68423a2a, 0x31c072fb,
+ 0x684bfe2f, 0x31b88a66, 0x6855c0a6, 0x31b09fe7,
+ 0x685f8190, 0x31a8b37c, 0x686940ea, 0x31a0c528,
+ 0x6872feb6, 0x3198d4ea, 0x687cbaf3, 0x3190e2c3,
+ 0x688675a0, 0x3188eeb2, 0x68902ebd, 0x3180f8b8,
+ 0x6899e64a, 0x317900d6, 0x68a39c46, 0x3171070c,
+ 0x68ad50b1, 0x31690b59, 0x68b7038b, 0x31610dbf,
+ 0x68c0b4d2, 0x31590e3e, 0x68ca6488, 0x31510cd5,
+ 0x68d412ab, 0x31490986, 0x68ddbf3b, 0x31410450,
+ 0x68e76a37, 0x3138fd35, 0x68f113a0, 0x3130f433,
+ 0x68fabb75, 0x3128e94c, 0x690461b5, 0x3120dc80,
+ 0x690e0661, 0x3118cdcf, 0x6917a977, 0x3110bd39,
+ 0x69214af8, 0x3108aabf, 0x692aeae3, 0x31009661,
+ 0x69348937, 0x30f8801f, 0x693e25f5, 0x30f067fb,
+ 0x6947c11c, 0x30e84df3, 0x69515aab, 0x30e03208,
+ 0x695af2a3, 0x30d8143b, 0x69648902, 0x30cff48c,
+ 0x696e1dc9, 0x30c7d2fb, 0x6977b0f7, 0x30bfaf89,
+ 0x6981428c, 0x30b78a36, 0x698ad287, 0x30af6302,
+ 0x699460e8, 0x30a739ed, 0x699dedaf, 0x309f0ef8,
+ 0x69a778db, 0x3096e223, 0x69b1026c, 0x308eb36f,
+ 0x69ba8a61, 0x308682dc, 0x69c410ba, 0x307e5069,
+ 0x69cd9578, 0x30761c18, 0x69d71899, 0x306de5e9,
+ 0x69e09a1c, 0x3065addb, 0x69ea1a03, 0x305d73f0,
+ 0x69f3984c, 0x30553828, 0x69fd14f6, 0x304cfa83,
+ 0x6a069003, 0x3044bb00, 0x6a100970, 0x303c79a2,
+ 0x6a19813f, 0x30343667, 0x6a22f76e, 0x302bf151,
+ 0x6a2c6bfd, 0x3023aa5f, 0x6a35deeb, 0x301b6193,
+ 0x6a3f503a, 0x301316eb, 0x6a48bfe7, 0x300aca69,
+ 0x6a522df3, 0x30027c0c, 0x6a5b9a5d, 0x2ffa2bd6,
+ 0x6a650525, 0x2ff1d9c7, 0x6a6e6e4b, 0x2fe985de,
+ 0x6a77d5ce, 0x2fe1301c, 0x6a813bae, 0x2fd8d882,
+ 0x6a8a9fea, 0x2fd07f0f, 0x6a940283, 0x2fc823c5,
+ 0x6a9d6377, 0x2fbfc6a3, 0x6aa6c2c6, 0x2fb767aa,
+ 0x6ab02071, 0x2faf06da, 0x6ab97c77, 0x2fa6a433,
+ 0x6ac2d6d6, 0x2f9e3fb6, 0x6acc2f90, 0x2f95d963,
+ 0x6ad586a3, 0x2f8d713a, 0x6adedc10, 0x2f85073c,
+ 0x6ae82fd5, 0x2f7c9b69, 0x6af181f3, 0x2f742dc1,
+ 0x6afad269, 0x2f6bbe45, 0x6b042137, 0x2f634cf5,
+ 0x6b0d6e5c, 0x2f5ad9d1, 0x6b16b9d9, 0x2f5264da,
+ 0x6b2003ac, 0x2f49ee0f, 0x6b294bd5, 0x2f417573,
+ 0x6b329255, 0x2f38fb03, 0x6b3bd72a, 0x2f307ec2,
+ 0x6b451a55, 0x2f2800af, 0x6b4e5bd4, 0x2f1f80ca,
+ 0x6b579ba8, 0x2f16ff14, 0x6b60d9d0, 0x2f0e7b8e,
+ 0x6b6a164d, 0x2f05f637, 0x6b73511c, 0x2efd6f10,
+ 0x6b7c8a3f, 0x2ef4e619, 0x6b85c1b5, 0x2eec5b53,
+ 0x6b8ef77d, 0x2ee3cebe, 0x6b982b97, 0x2edb405a,
+ 0x6ba15e03, 0x2ed2b027, 0x6baa8ec0, 0x2eca1e27,
+ 0x6bb3bdce, 0x2ec18a58, 0x6bbceb2d, 0x2eb8f4bc,
+ 0x6bc616dd, 0x2eb05d53, 0x6bcf40dc, 0x2ea7c41e,
+ 0x6bd8692b, 0x2e9f291b, 0x6be18fc9, 0x2e968c4d,
+ 0x6beab4b6, 0x2e8dedb3, 0x6bf3d7f2, 0x2e854d4d,
+ 0x6bfcf97c, 0x2e7cab1c, 0x6c061953, 0x2e740720,
+ 0x6c0f3779, 0x2e6b615a, 0x6c1853eb, 0x2e62b9ca,
+ 0x6c216eaa, 0x2e5a1070, 0x6c2a87b6, 0x2e51654c,
+ 0x6c339f0e, 0x2e48b860, 0x6c3cb4b1, 0x2e4009aa,
+ 0x6c45c8a0, 0x2e37592c, 0x6c4edada, 0x2e2ea6e6,
+ 0x6c57eb5e, 0x2e25f2d8, 0x6c60fa2d, 0x2e1d3d03,
+ 0x6c6a0746, 0x2e148566, 0x6c7312a9, 0x2e0bcc03,
+ 0x6c7c1c55, 0x2e0310d9, 0x6c85244a, 0x2dfa53e9,
+ 0x6c8e2a87, 0x2df19534, 0x6c972f0d, 0x2de8d4b8,
+ 0x6ca031da, 0x2de01278, 0x6ca932ef, 0x2dd74e73,
+ 0x6cb2324c, 0x2dce88aa, 0x6cbb2fef, 0x2dc5c11c,
+ 0x6cc42bd9, 0x2dbcf7cb, 0x6ccd2609, 0x2db42cb6,
+ 0x6cd61e7f, 0x2dab5fdf, 0x6cdf153a, 0x2da29144,
+ 0x6ce80a3a, 0x2d99c0e7, 0x6cf0fd80, 0x2d90eec8,
+ 0x6cf9ef09, 0x2d881ae8, 0x6d02ded7, 0x2d7f4545,
+ 0x6d0bcce8, 0x2d766de2, 0x6d14b93d, 0x2d6d94bf,
+ 0x6d1da3d5, 0x2d64b9da, 0x6d268cb0, 0x2d5bdd36,
+ 0x6d2f73cd, 0x2d52fed2, 0x6d38592c, 0x2d4a1eaf,
+ 0x6d413ccd, 0x2d413ccd, 0x6d4a1eaf, 0x2d38592c,
+ 0x6d52fed2, 0x2d2f73cd, 0x6d5bdd36, 0x2d268cb0,
+ 0x6d64b9da, 0x2d1da3d5, 0x6d6d94bf, 0x2d14b93d,
+ 0x6d766de2, 0x2d0bcce8, 0x6d7f4545, 0x2d02ded7,
+ 0x6d881ae8, 0x2cf9ef09, 0x6d90eec8, 0x2cf0fd80,
+ 0x6d99c0e7, 0x2ce80a3a, 0x6da29144, 0x2cdf153a,
+ 0x6dab5fdf, 0x2cd61e7f, 0x6db42cb6, 0x2ccd2609,
+ 0x6dbcf7cb, 0x2cc42bd9, 0x6dc5c11c, 0x2cbb2fef,
+ 0x6dce88aa, 0x2cb2324c, 0x6dd74e73, 0x2ca932ef,
+ 0x6de01278, 0x2ca031da, 0x6de8d4b8, 0x2c972f0d,
+ 0x6df19534, 0x2c8e2a87, 0x6dfa53e9, 0x2c85244a,
+ 0x6e0310d9, 0x2c7c1c55, 0x6e0bcc03, 0x2c7312a9,
+ 0x6e148566, 0x2c6a0746, 0x6e1d3d03, 0x2c60fa2d,
+ 0x6e25f2d8, 0x2c57eb5e, 0x6e2ea6e6, 0x2c4edada,
+ 0x6e37592c, 0x2c45c8a0, 0x6e4009aa, 0x2c3cb4b1,
+ 0x6e48b860, 0x2c339f0e, 0x6e51654c, 0x2c2a87b6,
+ 0x6e5a1070, 0x2c216eaa, 0x6e62b9ca, 0x2c1853eb,
+ 0x6e6b615a, 0x2c0f3779, 0x6e740720, 0x2c061953,
+ 0x6e7cab1c, 0x2bfcf97c, 0x6e854d4d, 0x2bf3d7f2,
+ 0x6e8dedb3, 0x2beab4b6, 0x6e968c4d, 0x2be18fc9,
+ 0x6e9f291b, 0x2bd8692b, 0x6ea7c41e, 0x2bcf40dc,
+ 0x6eb05d53, 0x2bc616dd, 0x6eb8f4bc, 0x2bbceb2d,
+ 0x6ec18a58, 0x2bb3bdce, 0x6eca1e27, 0x2baa8ec0,
+ 0x6ed2b027, 0x2ba15e03, 0x6edb405a, 0x2b982b97,
+ 0x6ee3cebe, 0x2b8ef77d, 0x6eec5b53, 0x2b85c1b5,
+ 0x6ef4e619, 0x2b7c8a3f, 0x6efd6f10, 0x2b73511c,
+ 0x6f05f637, 0x2b6a164d, 0x6f0e7b8e, 0x2b60d9d0,
+ 0x6f16ff14, 0x2b579ba8, 0x6f1f80ca, 0x2b4e5bd4,
+ 0x6f2800af, 0x2b451a55, 0x6f307ec2, 0x2b3bd72a,
+ 0x6f38fb03, 0x2b329255, 0x6f417573, 0x2b294bd5,
+ 0x6f49ee0f, 0x2b2003ac, 0x6f5264da, 0x2b16b9d9,
+ 0x6f5ad9d1, 0x2b0d6e5c, 0x6f634cf5, 0x2b042137,
+ 0x6f6bbe45, 0x2afad269, 0x6f742dc1, 0x2af181f3,
+ 0x6f7c9b69, 0x2ae82fd5, 0x6f85073c, 0x2adedc10,
+ 0x6f8d713a, 0x2ad586a3, 0x6f95d963, 0x2acc2f90,
+ 0x6f9e3fb6, 0x2ac2d6d6, 0x6fa6a433, 0x2ab97c77,
+ 0x6faf06da, 0x2ab02071, 0x6fb767aa, 0x2aa6c2c6,
+ 0x6fbfc6a3, 0x2a9d6377, 0x6fc823c5, 0x2a940283,
+ 0x6fd07f0f, 0x2a8a9fea, 0x6fd8d882, 0x2a813bae,
+ 0x6fe1301c, 0x2a77d5ce, 0x6fe985de, 0x2a6e6e4b,
+ 0x6ff1d9c7, 0x2a650525, 0x6ffa2bd6, 0x2a5b9a5d,
+ 0x70027c0c, 0x2a522df3, 0x700aca69, 0x2a48bfe7,
+ 0x701316eb, 0x2a3f503a, 0x701b6193, 0x2a35deeb,
+ 0x7023aa5f, 0x2a2c6bfd, 0x702bf151, 0x2a22f76e,
+ 0x70343667, 0x2a19813f, 0x703c79a2, 0x2a100970,
+ 0x7044bb00, 0x2a069003, 0x704cfa83, 0x29fd14f6,
+ 0x70553828, 0x29f3984c, 0x705d73f0, 0x29ea1a03,
+ 0x7065addb, 0x29e09a1c, 0x706de5e9, 0x29d71899,
+ 0x70761c18, 0x29cd9578, 0x707e5069, 0x29c410ba,
+ 0x708682dc, 0x29ba8a61, 0x708eb36f, 0x29b1026c,
+ 0x7096e223, 0x29a778db, 0x709f0ef8, 0x299dedaf,
+ 0x70a739ed, 0x299460e8, 0x70af6302, 0x298ad287,
+ 0x70b78a36, 0x2981428c, 0x70bfaf89, 0x2977b0f7,
+ 0x70c7d2fb, 0x296e1dc9, 0x70cff48c, 0x29648902,
+ 0x70d8143b, 0x295af2a3, 0x70e03208, 0x29515aab,
+ 0x70e84df3, 0x2947c11c, 0x70f067fb, 0x293e25f5,
+ 0x70f8801f, 0x29348937, 0x71009661, 0x292aeae3,
+ 0x7108aabf, 0x29214af8, 0x7110bd39, 0x2917a977,
+ 0x7118cdcf, 0x290e0661, 0x7120dc80, 0x290461b5,
+ 0x7128e94c, 0x28fabb75, 0x7130f433, 0x28f113a0,
+ 0x7138fd35, 0x28e76a37, 0x71410450, 0x28ddbf3b,
+ 0x71490986, 0x28d412ab, 0x71510cd5, 0x28ca6488,
+ 0x71590e3e, 0x28c0b4d2, 0x71610dbf, 0x28b7038b,
+ 0x71690b59, 0x28ad50b1, 0x7171070c, 0x28a39c46,
+ 0x717900d6, 0x2899e64a, 0x7180f8b8, 0x28902ebd,
+ 0x7188eeb2, 0x288675a0, 0x7190e2c3, 0x287cbaf3,
+ 0x7198d4ea, 0x2872feb6, 0x71a0c528, 0x286940ea,
+ 0x71a8b37c, 0x285f8190, 0x71b09fe7, 0x2855c0a6,
+ 0x71b88a66, 0x284bfe2f, 0x71c072fb, 0x28423a2a,
+ 0x71c859a5, 0x28387498, 0x71d03e64, 0x282ead78,
+ 0x71d82137, 0x2824e4cc, 0x71e0021e, 0x281b1a94,
+ 0x71e7e118, 0x28114ed0, 0x71efbe27, 0x28078181,
+ 0x71f79948, 0x27fdb2a7, 0x71ff727c, 0x27f3e241,
+ 0x720749c3, 0x27ea1052, 0x720f1f1c, 0x27e03cd8,
+ 0x7216f287, 0x27d667d5, 0x721ec403, 0x27cc9149,
+ 0x72269391, 0x27c2b934, 0x722e6130, 0x27b8df97,
+ 0x72362ce0, 0x27af0472, 0x723df6a0, 0x27a527c4,
+ 0x7245be70, 0x279b4990, 0x724d8450, 0x279169d5,
+ 0x72554840, 0x27878893, 0x725d0a3e, 0x277da5cb,
+ 0x7264ca4c, 0x2773c17d, 0x726c8868, 0x2769dbaa,
+ 0x72744493, 0x275ff452, 0x727bfecc, 0x27560b76,
+ 0x7283b712, 0x274c2115, 0x728b6d66, 0x27423530,
+ 0x729321c7, 0x273847c8, 0x729ad435, 0x272e58dc,
+ 0x72a284b0, 0x2724686e, 0x72aa3336, 0x271a767e,
+ 0x72b1dfc9, 0x2710830c, 0x72b98a67, 0x27068e18,
+ 0x72c13311, 0x26fc97a3, 0x72c8d9c6, 0x26f29fad,
+ 0x72d07e85, 0x26e8a637, 0x72d82150, 0x26deab41,
+ 0x72dfc224, 0x26d4aecb, 0x72e76102, 0x26cab0d6,
+ 0x72eefdea, 0x26c0b162, 0x72f698db, 0x26b6b070,
+ 0x72fe31d5, 0x26acadff, 0x7305c8d7, 0x26a2aa11,
+ 0x730d5de3, 0x2698a4a6, 0x7314f0f6, 0x268e9dbd,
+ 0x731c8211, 0x26849558, 0x73241134, 0x267a8b77,
+ 0x732b9e5e, 0x2670801a, 0x7333298f, 0x26667342,
+ 0x733ab2c6, 0x265c64ef, 0x73423a04, 0x26525521,
+ 0x7349bf48, 0x264843d9, 0x73514292, 0x263e3117,
+ 0x7358c3e2, 0x26341cdb, 0x73604336, 0x262a0727,
+ 0x7367c090, 0x261feffa, 0x736f3bee, 0x2615d754,
+ 0x7376b551, 0x260bbd37, 0x737e2cb7, 0x2601a1a2,
+ 0x7385a222, 0x25f78497, 0x738d1590, 0x25ed6614,
+ 0x73948701, 0x25e3461b, 0x739bf675, 0x25d924ac,
+ 0x73a363ec, 0x25cf01c8, 0x73aacf65, 0x25c4dd6e,
+ 0x73b238e0, 0x25bab7a0, 0x73b9a05d, 0x25b0905d,
+ 0x73c105db, 0x25a667a7, 0x73c8695b, 0x259c3d7c,
+ 0x73cfcadc, 0x259211df, 0x73d72a5d, 0x2587e4cf,
+ 0x73de87de, 0x257db64c, 0x73e5e360, 0x25738657,
+ 0x73ed3ce1, 0x256954f1, 0x73f49462, 0x255f2219,
+ 0x73fbe9e2, 0x2554edd1, 0x74033d61, 0x254ab818,
+ 0x740a8edf, 0x254080ef, 0x7411de5b, 0x25364857,
+ 0x74192bd5, 0x252c0e4f, 0x7420774d, 0x2521d2d8,
+ 0x7427c0c3, 0x251795f3, 0x742f0836, 0x250d57a0,
+ 0x74364da6, 0x250317df, 0x743d9112, 0x24f8d6b0,
+ 0x7444d27b, 0x24ee9415, 0x744c11e0, 0x24e4500e,
+ 0x74534f41, 0x24da0a9a, 0x745a8a9d, 0x24cfc3ba,
+ 0x7461c3f5, 0x24c57b6f, 0x7468fb47, 0x24bb31ba,
+ 0x74703095, 0x24b0e699, 0x747763dd, 0x24a69a0f,
+ 0x747e951f, 0x249c4c1b, 0x7485c45b, 0x2491fcbe,
+ 0x748cf190, 0x2487abf7, 0x74941cbf, 0x247d59c8,
+ 0x749b45e7, 0x24730631, 0x74a26d08, 0x2468b132,
+ 0x74a99221, 0x245e5acc, 0x74b0b533, 0x245402ff,
+ 0x74b7d63c, 0x2449a9cc, 0x74bef53d, 0x243f4f32,
+ 0x74c61236, 0x2434f332, 0x74cd2d26, 0x242a95ce,
+ 0x74d4460c, 0x24203704, 0x74db5cea, 0x2415d6d5,
+ 0x74e271bd, 0x240b7543, 0x74e98487, 0x2401124d,
+ 0x74f09546, 0x23f6adf3, 0x74f7a3fb, 0x23ec4837,
+ 0x74feb0a5, 0x23e1e117, 0x7505bb44, 0x23d77896,
+ 0x750cc3d8, 0x23cd0eb3, 0x7513ca60, 0x23c2a36f,
+ 0x751acedd, 0x23b836ca, 0x7521d14d, 0x23adc8c4,
+ 0x7528d1b1, 0x23a3595e, 0x752fd008, 0x2398e898,
+ 0x7536cc52, 0x238e7673, 0x753dc68f, 0x238402ef,
+ 0x7544bebf, 0x23798e0d, 0x754bb4e1, 0x236f17cc,
+ 0x7552a8f4, 0x2364a02e, 0x75599afa, 0x235a2733,
+ 0x75608af1, 0x234facda, 0x756778d9, 0x23453125,
+ 0x756e64b2, 0x233ab414, 0x75754e7c, 0x233035a7,
+ 0x757c3636, 0x2325b5df, 0x75831be0, 0x231b34bc,
+ 0x7589ff7a, 0x2310b23e, 0x7590e104, 0x23062e67,
+ 0x7597c07d, 0x22fba936, 0x759e9de5, 0x22f122ab,
+ 0x75a5793c, 0x22e69ac8, 0x75ac5282, 0x22dc118c,
+ 0x75b329b5, 0x22d186f8, 0x75b9fed7, 0x22c6fb0c,
+ 0x75c0d1e7, 0x22bc6dca, 0x75c7a2e3, 0x22b1df30,
+ 0x75ce71ce, 0x22a74f40, 0x75d53ea5, 0x229cbdfa,
+ 0x75dc0968, 0x22922b5e, 0x75e2d219, 0x2287976e,
+ 0x75e998b5, 0x227d0228, 0x75f05d3d, 0x22726b8e,
+ 0x75f71fb1, 0x2267d3a0, 0x75fde011, 0x225d3a5e,
+ 0x76049e5b, 0x22529fca, 0x760b5a90, 0x224803e2,
+ 0x761214b0, 0x223d66a8, 0x7618ccba, 0x2232c81c,
+ 0x761f82af, 0x2228283f, 0x7626368d, 0x221d8711,
+ 0x762ce855, 0x2212e492, 0x76339806, 0x220840c2,
+ 0x763a45a0, 0x21fd9ba3, 0x7640f123, 0x21f2f534,
+ 0x76479a8e, 0x21e84d76, 0x764e41e2, 0x21dda46a,
+ 0x7654e71d, 0x21d2fa0f, 0x765b8a41, 0x21c84e67,
+ 0x76622b4c, 0x21bda171, 0x7668ca3e, 0x21b2f32e,
+ 0x766f6717, 0x21a8439e, 0x767601d7, 0x219d92c2,
+ 0x767c9a7e, 0x2192e09b, 0x7683310b, 0x21882d28,
+ 0x7689c57d, 0x217d786a, 0x769057d6, 0x2172c262,
+ 0x7696e814, 0x21680b0f, 0x769d7637, 0x215d5273,
+ 0x76a4023f, 0x2152988d, 0x76aa8c2c, 0x2147dd5f,
+ 0x76b113fd, 0x213d20e8, 0x76b799b3, 0x21326329,
+ 0x76be1d4c, 0x2127a423, 0x76c49ec9, 0x211ce3d5,
+ 0x76cb1e2a, 0x21122240, 0x76d19b6e, 0x21075f65,
+ 0x76d81695, 0x20fc9b44, 0x76de8f9e, 0x20f1d5de,
+ 0x76e5068a, 0x20e70f32, 0x76eb7b58, 0x20dc4742,
+ 0x76f1ee09, 0x20d17e0d, 0x76f85e9a, 0x20c6b395,
+ 0x76fecd0e, 0x20bbe7d8, 0x77053962, 0x20b11ad9,
+ 0x770ba398, 0x20a64c97, 0x77120bae, 0x209b7d13,
+ 0x771871a5, 0x2090ac4d, 0x771ed57c, 0x2085da46,
+ 0x77253733, 0x207b06fe, 0x772b96ca, 0x20703275,
+ 0x7731f440, 0x20655cac, 0x77384f95, 0x205a85a3,
+ 0x773ea8ca, 0x204fad5b, 0x7744ffdd, 0x2044d3d4,
+ 0x774b54ce, 0x2039f90f, 0x7751a79e, 0x202f1d0b,
+ 0x7757f84c, 0x20243fca, 0x775e46d8, 0x2019614c,
+ 0x77649341, 0x200e8190, 0x776add88, 0x2003a099,
+ 0x777125ac, 0x1ff8be65, 0x77776bac, 0x1feddaf6,
+ 0x777daf89, 0x1fe2f64c, 0x7783f143, 0x1fd81067,
+ 0x778a30d8, 0x1fcd2948, 0x77906e49, 0x1fc240ef,
+ 0x7796a996, 0x1fb7575c, 0x779ce2be, 0x1fac6c91,
+ 0x77a319c2, 0x1fa1808c, 0x77a94ea0, 0x1f969350,
+ 0x77af8159, 0x1f8ba4dc, 0x77b5b1ec, 0x1f80b531,
+ 0x77bbe05a, 0x1f75c44e, 0x77c20ca1, 0x1f6ad235,
+ 0x77c836c2, 0x1f5fdee6, 0x77ce5ebd, 0x1f54ea62,
+ 0x77d48490, 0x1f49f4a8, 0x77daa83d, 0x1f3efdb9,
+ 0x77e0c9c3, 0x1f340596, 0x77e6e921, 0x1f290c3f,
+ 0x77ed0657, 0x1f1e11b5, 0x77f32165, 0x1f1315f7,
+ 0x77f93a4b, 0x1f081907, 0x77ff5109, 0x1efd1ae4,
+ 0x7805659e, 0x1ef21b90, 0x780b780a, 0x1ee71b0a,
+ 0x7811884d, 0x1edc1953, 0x78179666, 0x1ed1166b,
+ 0x781da256, 0x1ec61254, 0x7823ac1d, 0x1ebb0d0d,
+ 0x7829b3b9, 0x1eb00696, 0x782fb92a, 0x1ea4fef0,
+ 0x7835bc71, 0x1e99f61d, 0x783bbd8e, 0x1e8eec1b,
+ 0x7841bc7f, 0x1e83e0eb, 0x7847b946, 0x1e78d48e,
+ 0x784db3e0, 0x1e6dc705, 0x7853ac4f, 0x1e62b84f,
+ 0x7859a292, 0x1e57a86d, 0x785f96a9, 0x1e4c9760,
+ 0x78658894, 0x1e418528, 0x786b7852, 0x1e3671c5,
+ 0x787165e3, 0x1e2b5d38, 0x78775147, 0x1e204781,
+ 0x787d3a7e, 0x1e1530a1, 0x78832187, 0x1e0a1898,
+ 0x78890663, 0x1dfeff67, 0x788ee910, 0x1df3e50d,
+ 0x7894c98f, 0x1de8c98c, 0x789aa7e0, 0x1dddace4,
+ 0x78a08402, 0x1dd28f15, 0x78a65df6, 0x1dc7701f,
+ 0x78ac35ba, 0x1dbc5004, 0x78b20b4f, 0x1db12ec3,
+ 0x78b7deb4, 0x1da60c5d, 0x78bdafea, 0x1d9ae8d2,
+ 0x78c37eef, 0x1d8fc424, 0x78c94bc4, 0x1d849e51,
+ 0x78cf1669, 0x1d79775c, 0x78d4dedd, 0x1d6e4f43,
+ 0x78daa520, 0x1d632608, 0x78e06932, 0x1d57fbaa,
+ 0x78e62b13, 0x1d4cd02c, 0x78ebeac2, 0x1d41a38c,
+ 0x78f1a840, 0x1d3675cb, 0x78f7638b, 0x1d2b46ea,
+ 0x78fd1ca4, 0x1d2016e9, 0x7902d38b, 0x1d14e5c9,
+ 0x7908883f, 0x1d09b389, 0x790e3ac0, 0x1cfe802b,
+ 0x7913eb0e, 0x1cf34baf, 0x79199929, 0x1ce81615,
+ 0x791f4510, 0x1cdcdf5e, 0x7924eec3, 0x1cd1a78a,
+ 0x792a9642, 0x1cc66e99, 0x79303b8e, 0x1cbb348d,
+ 0x7935dea4, 0x1caff965, 0x793b7f86, 0x1ca4bd21,
+ 0x79411e33, 0x1c997fc4, 0x7946baac, 0x1c8e414b,
+ 0x794c54ee, 0x1c8301b9, 0x7951ecfc, 0x1c77c10e,
+ 0x795782d3, 0x1c6c7f4a, 0x795d1675, 0x1c613c6d,
+ 0x7962a7e0, 0x1c55f878, 0x79683715, 0x1c4ab36b,
+ 0x796dc414, 0x1c3f6d47, 0x79734edc, 0x1c34260c,
+ 0x7978d76c, 0x1c28ddbb, 0x797e5dc6, 0x1c1d9454,
+ 0x7983e1e8, 0x1c1249d8, 0x798963d2, 0x1c06fe46,
+ 0x798ee385, 0x1bfbb1a0, 0x799460ff, 0x1bf063e6,
+ 0x7999dc42, 0x1be51518, 0x799f554b, 0x1bd9c537,
+ 0x79a4cc1c, 0x1bce7442, 0x79aa40b4, 0x1bc3223c,
+ 0x79afb313, 0x1bb7cf23, 0x79b52339, 0x1bac7af9,
+ 0x79ba9125, 0x1ba125bd, 0x79bffcd7, 0x1b95cf71,
+ 0x79c5664f, 0x1b8a7815, 0x79cacd8d, 0x1b7f1fa9,
+ 0x79d03291, 0x1b73c62d, 0x79d5955a, 0x1b686ba3,
+ 0x79daf5e8, 0x1b5d100a, 0x79e0543c, 0x1b51b363,
+ 0x79e5b054, 0x1b4655ae, 0x79eb0a31, 0x1b3af6ec,
+ 0x79f061d2, 0x1b2f971e, 0x79f5b737, 0x1b243643,
+ 0x79fb0a60, 0x1b18d45c, 0x7a005b4d, 0x1b0d716a,
+ 0x7a05a9fd, 0x1b020d6c, 0x7a0af671, 0x1af6a865,
+ 0x7a1040a8, 0x1aeb4253, 0x7a1588a2, 0x1adfdb37,
+ 0x7a1ace5f, 0x1ad47312, 0x7a2011de, 0x1ac909e5,
+ 0x7a25531f, 0x1abd9faf, 0x7a2a9223, 0x1ab23471,
+ 0x7a2fcee8, 0x1aa6c82b, 0x7a350970, 0x1a9b5adf,
+ 0x7a3a41b9, 0x1a8fec8c, 0x7a3f77c3, 0x1a847d33,
+ 0x7a44ab8e, 0x1a790cd4, 0x7a49dd1a, 0x1a6d9b70,
+ 0x7a4f0c67, 0x1a622907, 0x7a543974, 0x1a56b599,
+ 0x7a596442, 0x1a4b4128, 0x7a5e8cd0, 0x1a3fcbb3,
+ 0x7a63b31d, 0x1a34553b, 0x7a68d72b, 0x1a28ddc0,
+ 0x7a6df8f8, 0x1a1d6544, 0x7a731884, 0x1a11ebc5,
+ 0x7a7835cf, 0x1a067145, 0x7a7d50da, 0x19faf5c5,
+ 0x7a8269a3, 0x19ef7944, 0x7a87802a, 0x19e3fbc3,
+ 0x7a8c9470, 0x19d87d42, 0x7a91a674, 0x19ccfdc2,
+ 0x7a96b636, 0x19c17d44, 0x7a9bc3b6, 0x19b5fbc8,
+ 0x7aa0cef3, 0x19aa794d, 0x7aa5d7ee, 0x199ef5d6,
+ 0x7aaadea6, 0x19937161, 0x7aafe31b, 0x1987ebf0,
+ 0x7ab4e54c, 0x197c6584, 0x7ab9e53a, 0x1970de1b,
+ 0x7abee2e5, 0x196555b8, 0x7ac3de4c, 0x1959cc5a,
+ 0x7ac8d76f, 0x194e4201, 0x7acdce4d, 0x1942b6af,
+ 0x7ad2c2e8, 0x19372a64, 0x7ad7b53d, 0x192b9d1f,
+ 0x7adca54e, 0x19200ee3, 0x7ae1931a, 0x19147fae,
+ 0x7ae67ea1, 0x1908ef82, 0x7aeb67e3, 0x18fd5e5f,
+ 0x7af04edf, 0x18f1cc45, 0x7af53395, 0x18e63935,
+ 0x7afa1605, 0x18daa52f, 0x7afef630, 0x18cf1034,
+ 0x7b03d414, 0x18c37a44, 0x7b08afb2, 0x18b7e35f,
+ 0x7b0d8909, 0x18ac4b87, 0x7b126019, 0x18a0b2bb,
+ 0x7b1734e2, 0x189518fc, 0x7b1c0764, 0x18897e4a,
+ 0x7b20d79e, 0x187de2a7, 0x7b25a591, 0x18724611,
+ 0x7b2a713d, 0x1866a88a, 0x7b2f3aa0, 0x185b0a13,
+ 0x7b3401bb, 0x184f6aab, 0x7b38c68e, 0x1843ca53,
+ 0x7b3d8918, 0x1838290c, 0x7b42495a, 0x182c86d5,
+ 0x7b470753, 0x1820e3b0, 0x7b4bc303, 0x18153f9d,
+ 0x7b507c69, 0x18099a9c, 0x7b553386, 0x17fdf4ae,
+ 0x7b59e85a, 0x17f24dd3, 0x7b5e9ae4, 0x17e6a60c,
+ 0x7b634b23, 0x17dafd59, 0x7b67f919, 0x17cf53bb,
+ 0x7b6ca4c4, 0x17c3a931, 0x7b714e25, 0x17b7fdbd,
+ 0x7b75f53c, 0x17ac515f, 0x7b7a9a07, 0x17a0a417,
+ 0x7b7f3c87, 0x1794f5e6, 0x7b83dcbc, 0x178946cc,
+ 0x7b887aa6, 0x177d96ca, 0x7b8d1644, 0x1771e5e0,
+ 0x7b91af97, 0x1766340f, 0x7b96469d, 0x175a8157,
+ 0x7b9adb57, 0x174ecdb8, 0x7b9f6dc5, 0x17431933,
+ 0x7ba3fde7, 0x173763c9, 0x7ba88bbc, 0x172bad7a,
+ 0x7bad1744, 0x171ff646, 0x7bb1a080, 0x17143e2d,
+ 0x7bb6276e, 0x17088531, 0x7bbaac0e, 0x16fccb51,
+ 0x7bbf2e62, 0x16f1108f, 0x7bc3ae67, 0x16e554ea,
+ 0x7bc82c1f, 0x16d99864, 0x7bcca789, 0x16cddafb,
+ 0x7bd120a4, 0x16c21cb2, 0x7bd59771, 0x16b65d88,
+ 0x7bda0bf0, 0x16aa9d7e, 0x7bde7e20, 0x169edc94,
+ 0x7be2ee01, 0x16931acb, 0x7be75b93, 0x16875823,
+ 0x7bebc6d5, 0x167b949d, 0x7bf02fc9, 0x166fd039,
+ 0x7bf4966c, 0x16640af7, 0x7bf8fac0, 0x165844d8,
+ 0x7bfd5cc4, 0x164c7ddd, 0x7c01bc78, 0x1640b606,
+ 0x7c0619dc, 0x1634ed53, 0x7c0a74f0, 0x162923c5,
+ 0x7c0ecdb2, 0x161d595d, 0x7c132424, 0x16118e1a,
+ 0x7c177845, 0x1605c1fd, 0x7c1bca16, 0x15f9f507,
+ 0x7c201994, 0x15ee2738, 0x7c2466c2, 0x15e25890,
+ 0x7c28b19e, 0x15d68911, 0x7c2cfa28, 0x15cab8ba,
+ 0x7c314060, 0x15bee78c, 0x7c358446, 0x15b31587,
+ 0x7c39c5da, 0x15a742ac, 0x7c3e051b, 0x159b6efb,
+ 0x7c42420a, 0x158f9a76, 0x7c467ca6, 0x1583c51b,
+ 0x7c4ab4ef, 0x1577eeec, 0x7c4eeae5, 0x156c17e9,
+ 0x7c531e88, 0x15604013, 0x7c574fd8, 0x1554676a,
+ 0x7c5b7ed4, 0x15488dee, 0x7c5fab7c, 0x153cb3a0,
+ 0x7c63d5d1, 0x1530d881, 0x7c67fdd1, 0x1524fc90,
+ 0x7c6c237e, 0x15191fcf, 0x7c7046d6, 0x150d423d,
+ 0x7c7467d9, 0x150163dc, 0x7c788688, 0x14f584ac,
+ 0x7c7ca2e2, 0x14e9a4ac, 0x7c80bce7, 0x14ddc3de,
+ 0x7c84d496, 0x14d1e242, 0x7c88e9f1, 0x14c5ffd9,
+ 0x7c8cfcf6, 0x14ba1ca3, 0x7c910da5, 0x14ae38a0,
+ 0x7c951bff, 0x14a253d1, 0x7c992803, 0x14966e36,
+ 0x7c9d31b0, 0x148a87d1, 0x7ca13908, 0x147ea0a0,
+ 0x7ca53e09, 0x1472b8a5, 0x7ca940b3, 0x1466cfe1,
+ 0x7cad4107, 0x145ae653, 0x7cb13f04, 0x144efbfc,
+ 0x7cb53aaa, 0x144310dd, 0x7cb933f9, 0x143724f5,
+ 0x7cbd2af0, 0x142b3846, 0x7cc11f90, 0x141f4ad1,
+ 0x7cc511d9, 0x14135c94, 0x7cc901c9, 0x14076d91,
+ 0x7cccef62, 0x13fb7dc9, 0x7cd0daa2, 0x13ef8d3c,
+ 0x7cd4c38b, 0x13e39be9, 0x7cd8aa1b, 0x13d7a9d3,
+ 0x7cdc8e52, 0x13cbb6f8, 0x7ce07031, 0x13bfc35b,
+ 0x7ce44fb7, 0x13b3cefa, 0x7ce82ce4, 0x13a7d9d7,
+ 0x7cec07b8, 0x139be3f2, 0x7cefe032, 0x138fed4b,
+ 0x7cf3b653, 0x1383f5e3, 0x7cf78a1b, 0x1377fdbb,
+ 0x7cfb5b89, 0x136c04d2, 0x7cff2a9d, 0x13600b2a,
+ 0x7d02f757, 0x135410c3, 0x7d06c1b6, 0x1348159d,
+ 0x7d0a89bc, 0x133c19b8, 0x7d0e4f67, 0x13301d16,
+ 0x7d1212b7, 0x13241fb6, 0x7d15d3ad, 0x1318219a,
+ 0x7d199248, 0x130c22c1, 0x7d1d4e88, 0x1300232c,
+ 0x7d21086c, 0x12f422db, 0x7d24bff6, 0x12e821cf,
+ 0x7d287523, 0x12dc2009, 0x7d2c27f6, 0x12d01d89,
+ 0x7d2fd86c, 0x12c41a4f, 0x7d338687, 0x12b8165b,
+ 0x7d373245, 0x12ac11af, 0x7d3adba7, 0x12a00c4b,
+ 0x7d3e82ae, 0x1294062f, 0x7d422757, 0x1287ff5b,
+ 0x7d45c9a4, 0x127bf7d1, 0x7d496994, 0x126fef90,
+ 0x7d4d0728, 0x1263e699, 0x7d50a25e, 0x1257dced,
+ 0x7d543b37, 0x124bd28c, 0x7d57d1b3, 0x123fc776,
+ 0x7d5b65d2, 0x1233bbac, 0x7d5ef793, 0x1227af2e,
+ 0x7d6286f6, 0x121ba1fd, 0x7d6613fb, 0x120f941a,
+ 0x7d699ea3, 0x12038584, 0x7d6d26ec, 0x11f7763c,
+ 0x7d70acd7, 0x11eb6643, 0x7d743064, 0x11df5599,
+ 0x7d77b192, 0x11d3443f, 0x7d7b3061, 0x11c73235,
+ 0x7d7eacd2, 0x11bb1f7c, 0x7d8226e4, 0x11af0c13,
+ 0x7d859e96, 0x11a2f7fc, 0x7d8913ea, 0x1196e337,
+ 0x7d8c86de, 0x118acdc4, 0x7d8ff772, 0x117eb7a4,
+ 0x7d9365a8, 0x1172a0d7, 0x7d96d17d, 0x1166895f,
+ 0x7d9a3af2, 0x115a713a, 0x7d9da208, 0x114e586a,
+ 0x7da106bd, 0x11423ef0, 0x7da46912, 0x113624cb,
+ 0x7da7c907, 0x112a09fc, 0x7dab269b, 0x111dee84,
+ 0x7dae81cf, 0x1111d263, 0x7db1daa2, 0x1105b599,
+ 0x7db53113, 0x10f99827, 0x7db88524, 0x10ed7a0e,
+ 0x7dbbd6d4, 0x10e15b4e, 0x7dbf2622, 0x10d53be7,
+ 0x7dc2730f, 0x10c91bda, 0x7dc5bd9b, 0x10bcfb28,
+ 0x7dc905c5, 0x10b0d9d0, 0x7dcc4b8d, 0x10a4b7d3,
+ 0x7dcf8ef3, 0x10989532, 0x7dd2cff7, 0x108c71ee,
+ 0x7dd60e99, 0x10804e06, 0x7dd94ad8, 0x1074297b,
+ 0x7ddc84b5, 0x1068044e, 0x7ddfbc30, 0x105bde7f,
+ 0x7de2f148, 0x104fb80e, 0x7de623fd, 0x104390fd,
+ 0x7de9544f, 0x1037694b, 0x7dec823e, 0x102b40f8,
+ 0x7defadca, 0x101f1807, 0x7df2d6f3, 0x1012ee76,
+ 0x7df5fdb8, 0x1006c446, 0x7df9221a, 0xffa9979,
+ 0x7dfc4418, 0xfee6e0d, 0x7dff63b2, 0xfe24205,
+ 0x7e0280e9, 0xfd6155f, 0x7e059bbb, 0xfc9e81e,
+ 0x7e08b42a, 0xfbdba40, 0x7e0bca34, 0xfb18bc8,
+ 0x7e0eddd9, 0xfa55cb4, 0x7e11ef1b, 0xf992d06,
+ 0x7e14fdf7, 0xf8cfcbe, 0x7e180a6f, 0xf80cbdc,
+ 0x7e1b1482, 0xf749a61, 0x7e1e1c30, 0xf68684e,
+ 0x7e212179, 0xf5c35a3, 0x7e24245d, 0xf500260,
+ 0x7e2724db, 0xf43ce86, 0x7e2a22f4, 0xf379a16,
+ 0x7e2d1ea8, 0xf2b650f, 0x7e3017f6, 0xf1f2f73,
+ 0x7e330ede, 0xf12f941, 0x7e360360, 0xf06c27a,
+ 0x7e38f57c, 0xefa8b20, 0x7e3be532, 0xeee5331,
+ 0x7e3ed282, 0xee21aaf, 0x7e41bd6c, 0xed5e19a,
+ 0x7e44a5ef, 0xec9a7f3, 0x7e478c0b, 0xebd6db9,
+ 0x7e4a6fc1, 0xeb132ef, 0x7e4d5110, 0xea4f793,
+ 0x7e502ff9, 0xe98bba7, 0x7e530c7a, 0xe8c7f2a,
+ 0x7e55e694, 0xe80421e, 0x7e58be47, 0xe740483,
+ 0x7e5b9392, 0xe67c65a, 0x7e5e6676, 0xe5b87a2,
+ 0x7e6136f3, 0xe4f485c, 0x7e640507, 0xe430889,
+ 0x7e66d0b4, 0xe36c82a, 0x7e6999fa, 0xe2a873e,
+ 0x7e6c60d7, 0xe1e45c6, 0x7e6f254c, 0xe1203c3,
+ 0x7e71e759, 0xe05c135, 0x7e74a6fd, 0xdf97e1d,
+ 0x7e77643a, 0xded3a7b, 0x7e7a1f0d, 0xde0f64f,
+ 0x7e7cd778, 0xdd4b19a, 0x7e7f8d7b, 0xdc86c5d,
+ 0x7e824114, 0xdbc2698, 0x7e84f245, 0xdafe04b,
+ 0x7e87a10c, 0xda39978, 0x7e8a4d6a, 0xd97521d,
+ 0x7e8cf75f, 0xd8b0a3d, 0x7e8f9eeb, 0xd7ec1d6,
+ 0x7e92440d, 0xd7278eb, 0x7e94e6c6, 0xd662f7b,
+ 0x7e978715, 0xd59e586, 0x7e9a24fb, 0xd4d9b0e,
+ 0x7e9cc076, 0xd415013, 0x7e9f5988, 0xd350495,
+ 0x7ea1f02f, 0xd28b894, 0x7ea4846c, 0xd1c6c11,
+ 0x7ea7163f, 0xd101f0e, 0x7ea9a5a8, 0xd03d189,
+ 0x7eac32a6, 0xcf78383, 0x7eaebd3a, 0xceb34fe,
+ 0x7eb14563, 0xcdee5f9, 0x7eb3cb21, 0xcd29676,
+ 0x7eb64e75, 0xcc64673, 0x7eb8cf5d, 0xcb9f5f3,
+ 0x7ebb4ddb, 0xcada4f5, 0x7ebdc9ed, 0xca1537a,
+ 0x7ec04394, 0xc950182, 0x7ec2bad0, 0xc88af0e,
+ 0x7ec52fa0, 0xc7c5c1e, 0x7ec7a205, 0xc7008b3,
+ 0x7eca11fe, 0xc63b4ce, 0x7ecc7f8b, 0xc57606e,
+ 0x7eceeaad, 0xc4b0b94, 0x7ed15363, 0xc3eb641,
+ 0x7ed3b9ad, 0xc326075, 0x7ed61d8a, 0xc260a31,
+ 0x7ed87efc, 0xc19b374, 0x7edade01, 0xc0d5c41,
+ 0x7edd3a9a, 0xc010496, 0x7edf94c7, 0xbf4ac75,
+ 0x7ee1ec87, 0xbe853de, 0x7ee441da, 0xbdbfad1,
+ 0x7ee694c1, 0xbcfa150, 0x7ee8e53a, 0xbc34759,
+ 0x7eeb3347, 0xbb6ecef, 0x7eed7ee7, 0xbaa9211,
+ 0x7eefc81a, 0xb9e36c0, 0x7ef20ee0, 0xb91dafc,
+ 0x7ef45338, 0xb857ec7, 0x7ef69523, 0xb79221f,
+ 0x7ef8d4a1, 0xb6cc506, 0x7efb11b1, 0xb60677c,
+ 0x7efd4c54, 0xb540982, 0x7eff8489, 0xb47ab19,
+ 0x7f01ba50, 0xb3b4c40, 0x7f03eda9, 0xb2eecf8,
+ 0x7f061e95, 0xb228d42, 0x7f084d12, 0xb162d1d,
+ 0x7f0a7921, 0xb09cc8c, 0x7f0ca2c2, 0xafd6b8d,
+ 0x7f0ec9f5, 0xaf10a22, 0x7f10eeb9, 0xae4a84b,
+ 0x7f13110f, 0xad84609, 0x7f1530f7, 0xacbe35b,
+ 0x7f174e70, 0xabf8043, 0x7f19697a, 0xab31cc1,
+ 0x7f1b8215, 0xaa6b8d5, 0x7f1d9842, 0xa9a5480,
+ 0x7f1fabff, 0xa8defc3, 0x7f21bd4e, 0xa818a9d,
+ 0x7f23cc2e, 0xa752510, 0x7f25d89e, 0xa68bf1b,
+ 0x7f27e29f, 0xa5c58c0, 0x7f29ea31, 0xa4ff1fe,
+ 0x7f2bef53, 0xa438ad7, 0x7f2df206, 0xa37234a,
+ 0x7f2ff24a, 0xa2abb59, 0x7f31f01d, 0xa1e5303,
+ 0x7f33eb81, 0xa11ea49, 0x7f35e476, 0xa05812c,
+ 0x7f37dafa, 0x9f917ac, 0x7f39cf0e, 0x9ecadc9,
+ 0x7f3bc0b3, 0x9e04385, 0x7f3dafe7, 0x9d3d8df,
+ 0x7f3f9cab, 0x9c76dd8, 0x7f4186ff, 0x9bb0271,
+ 0x7f436ee3, 0x9ae96aa, 0x7f455456, 0x9a22a83,
+ 0x7f473759, 0x995bdfd, 0x7f4917eb, 0x9895118,
+ 0x7f4af60d, 0x97ce3d5, 0x7f4cd1be, 0x9707635,
+ 0x7f4eaafe, 0x9640837, 0x7f5081cd, 0x95799dd,
+ 0x7f52562c, 0x94b2b27, 0x7f54281a, 0x93ebc14,
+ 0x7f55f796, 0x9324ca7, 0x7f57c4a2, 0x925dcdf,
+ 0x7f598f3c, 0x9196cbc, 0x7f5b5765, 0x90cfc40,
+ 0x7f5d1d1d, 0x9008b6a, 0x7f5ee063, 0x8f41a3c,
+ 0x7f60a138, 0x8e7a8b5, 0x7f625f9b, 0x8db36d6,
+ 0x7f641b8d, 0x8cec4a0, 0x7f65d50d, 0x8c25213,
+ 0x7f678c1c, 0x8b5df30, 0x7f6940b8, 0x8a96bf6,
+ 0x7f6af2e3, 0x89cf867, 0x7f6ca29c, 0x8908483,
+ 0x7f6e4fe3, 0x884104b, 0x7f6ffab8, 0x8779bbe,
+ 0x7f71a31b, 0x86b26de, 0x7f73490b, 0x85eb1ab,
+ 0x7f74ec8a, 0x8523c25, 0x7f768d96, 0x845c64d,
+ 0x7f782c30, 0x8395024, 0x7f79c857, 0x82cd9a9,
+ 0x7f7b620c, 0x82062de, 0x7f7cf94e, 0x813ebc2,
+ 0x7f7e8e1e, 0x8077457, 0x7f80207b, 0x7fafc9c,
+ 0x7f81b065, 0x7ee8493, 0x7f833ddd, 0x7e20c3b,
+ 0x7f84c8e2, 0x7d59396, 0x7f865174, 0x7c91aa3,
+ 0x7f87d792, 0x7bca163, 0x7f895b3e, 0x7b027d7,
+ 0x7f8adc77, 0x7a3adff, 0x7f8c5b3d, 0x79733dc,
+ 0x7f8dd78f, 0x78ab96e, 0x7f8f516e, 0x77e3eb5,
+ 0x7f90c8da, 0x771c3b3, 0x7f923dd2, 0x7654867,
+ 0x7f93b058, 0x758ccd2, 0x7f952069, 0x74c50f4,
+ 0x7f968e07, 0x73fd4cf, 0x7f97f932, 0x7335862,
+ 0x7f9961e8, 0x726dbae, 0x7f9ac82c, 0x71a5eb3,
+ 0x7f9c2bfb, 0x70de172, 0x7f9d8d56, 0x70163eb,
+ 0x7f9eec3e, 0x6f4e620, 0x7fa048b2, 0x6e86810,
+ 0x7fa1a2b2, 0x6dbe9bb, 0x7fa2fa3d, 0x6cf6b23,
+ 0x7fa44f55, 0x6c2ec48, 0x7fa5a1f9, 0x6b66d29,
+ 0x7fa6f228, 0x6a9edc9, 0x7fa83fe3, 0x69d6e27,
+ 0x7fa98b2a, 0x690ee44, 0x7faad3fd, 0x6846e1f,
+ 0x7fac1a5b, 0x677edbb, 0x7fad5e45, 0x66b6d16,
+ 0x7fae9fbb, 0x65eec33, 0x7fafdebb, 0x6526b10,
+ 0x7fb11b48, 0x645e9af, 0x7fb2555f, 0x6396810,
+ 0x7fb38d02, 0x62ce634, 0x7fb4c231, 0x620641a,
+ 0x7fb5f4ea, 0x613e1c5, 0x7fb7252f, 0x6075f33,
+ 0x7fb852ff, 0x5fadc66, 0x7fb97e5a, 0x5ee595d,
+ 0x7fbaa740, 0x5e1d61b, 0x7fbbcdb1, 0x5d5529e,
+ 0x7fbcf1ad, 0x5c8cee7, 0x7fbe1334, 0x5bc4af8,
+ 0x7fbf3246, 0x5afc6d0, 0x7fc04ee3, 0x5a3426f,
+ 0x7fc1690a, 0x596bdd7, 0x7fc280bc, 0x58a3908,
+ 0x7fc395f9, 0x57db403, 0x7fc4a8c1, 0x5712ec7,
+ 0x7fc5b913, 0x564a955, 0x7fc6c6f0, 0x55823ae,
+ 0x7fc7d258, 0x54b9dd3, 0x7fc8db4a, 0x53f17c3,
+ 0x7fc9e1c6, 0x532917f, 0x7fcae5cd, 0x5260b08,
+ 0x7fcbe75e, 0x519845e, 0x7fcce67a, 0x50cfd82,
+ 0x7fcde320, 0x5007674, 0x7fcedd50, 0x4f3ef35,
+ 0x7fcfd50b, 0x4e767c5, 0x7fd0ca4f, 0x4dae024,
+ 0x7fd1bd1e, 0x4ce5854, 0x7fd2ad77, 0x4c1d054,
+ 0x7fd39b5a, 0x4b54825, 0x7fd486c7, 0x4a8bfc7,
+ 0x7fd56fbe, 0x49c373c, 0x7fd6563f, 0x48fae83,
+ 0x7fd73a4a, 0x483259d, 0x7fd81bdf, 0x4769c8b,
+ 0x7fd8fafe, 0x46a134c, 0x7fd9d7a7, 0x45d89e2,
+ 0x7fdab1d9, 0x451004d, 0x7fdb8996, 0x444768d,
+ 0x7fdc5edc, 0x437eca4, 0x7fdd31ac, 0x42b6290,
+ 0x7fde0205, 0x41ed854, 0x7fdecfe8, 0x4124dee,
+ 0x7fdf9b55, 0x405c361, 0x7fe0644b, 0x3f938ac,
+ 0x7fe12acb, 0x3ecadcf, 0x7fe1eed5, 0x3e022cc,
+ 0x7fe2b067, 0x3d397a3, 0x7fe36f84, 0x3c70c54,
+ 0x7fe42c2a, 0x3ba80df, 0x7fe4e659, 0x3adf546,
+ 0x7fe59e12, 0x3a16988, 0x7fe65354, 0x394dda7,
+ 0x7fe7061f, 0x38851a2, 0x7fe7b674, 0x37bc57b,
+ 0x7fe86452, 0x36f3931, 0x7fe90fb9, 0x362acc5,
+ 0x7fe9b8a9, 0x3562038, 0x7fea5f23, 0x3499389,
+ 0x7feb0326, 0x33d06bb, 0x7feba4b2, 0x33079cc,
+ 0x7fec43c7, 0x323ecbe, 0x7fece065, 0x3175f91,
+ 0x7fed7a8c, 0x30ad245, 0x7fee123d, 0x2fe44dc,
+ 0x7feea776, 0x2f1b755, 0x7fef3a39, 0x2e529b0,
+ 0x7fefca84, 0x2d89bf0, 0x7ff05858, 0x2cc0e13,
+ 0x7ff0e3b6, 0x2bf801a, 0x7ff16c9c, 0x2b2f207,
+ 0x7ff1f30b, 0x2a663d8, 0x7ff27703, 0x299d590,
+ 0x7ff2f884, 0x28d472e, 0x7ff3778e, 0x280b8b3,
+ 0x7ff3f420, 0x2742a1f, 0x7ff46e3c, 0x2679b73,
+ 0x7ff4e5e0, 0x25b0caf, 0x7ff55b0d, 0x24e7dd4,
+ 0x7ff5cdc3, 0x241eee2, 0x7ff63e01, 0x2355fd9,
+ 0x7ff6abc8, 0x228d0bb, 0x7ff71718, 0x21c4188,
+ 0x7ff77ff1, 0x20fb240, 0x7ff7e652, 0x20322e3,
+ 0x7ff84a3c, 0x1f69373, 0x7ff8abae, 0x1ea03ef,
+ 0x7ff90aaa, 0x1dd7459, 0x7ff9672d, 0x1d0e4b0,
+ 0x7ff9c13a, 0x1c454f5, 0x7ffa18cf, 0x1b7c528,
+ 0x7ffa6dec, 0x1ab354b, 0x7ffac092, 0x19ea55d,
+ 0x7ffb10c1, 0x192155f, 0x7ffb5e78, 0x1858552,
+ 0x7ffba9b8, 0x178f536, 0x7ffbf280, 0x16c650b,
+ 0x7ffc38d1, 0x15fd4d2, 0x7ffc7caa, 0x153448c,
+ 0x7ffcbe0c, 0x146b438, 0x7ffcfcf6, 0x13a23d8,
+ 0x7ffd3969, 0x12d936c, 0x7ffd7364, 0x12102f4,
+ 0x7ffdaae7, 0x1147271, 0x7ffddff3, 0x107e1e3,
+ 0x7ffe1288, 0xfb514b, 0x7ffe42a4, 0xeec0aa,
+ 0x7ffe704a, 0xe22fff, 0x7ffe9b77, 0xd59f4c,
+ 0x7ffec42d, 0xc90e90, 0x7ffeea6c, 0xbc7dcc,
+ 0x7fff0e32, 0xafed02, 0x7fff2f82, 0xa35c30,
+ 0x7fff4e59, 0x96cb58, 0x7fff6ab9, 0x8a3a7b,
+ 0x7fff84a1, 0x7da998, 0x7fff9c12, 0x7118b0,
+ 0x7fffb10b, 0x6487c4, 0x7fffc38c, 0x57f6d4,
+ 0x7fffd396, 0x4b65e1, 0x7fffe128, 0x3ed4ea,
+ 0x7fffec43, 0x3243f1, 0x7ffff4e6, 0x25b2f7,
+ 0x7ffffb11, 0x1921fb, 0x7ffffec4, 0xc90fe,
+ 0x7fffffff, 0x0, 0x7ffffec4, 0xfff36f02,
+ 0x7ffffb11, 0xffe6de05, 0x7ffff4e6, 0xffda4d09,
+ 0x7fffec43, 0xffcdbc0f, 0x7fffe128, 0xffc12b16,
+ 0x7fffd396, 0xffb49a1f, 0x7fffc38c, 0xffa8092c,
+ 0x7fffb10b, 0xff9b783c, 0x7fff9c12, 0xff8ee750,
+ 0x7fff84a1, 0xff825668, 0x7fff6ab9, 0xff75c585,
+ 0x7fff4e59, 0xff6934a8, 0x7fff2f82, 0xff5ca3d0,
+ 0x7fff0e32, 0xff5012fe, 0x7ffeea6c, 0xff438234,
+ 0x7ffec42d, 0xff36f170, 0x7ffe9b77, 0xff2a60b4,
+ 0x7ffe704a, 0xff1dd001, 0x7ffe42a4, 0xff113f56,
+ 0x7ffe1288, 0xff04aeb5, 0x7ffddff3, 0xfef81e1d,
+ 0x7ffdaae7, 0xfeeb8d8f, 0x7ffd7364, 0xfedefd0c,
+ 0x7ffd3969, 0xfed26c94, 0x7ffcfcf6, 0xfec5dc28,
+ 0x7ffcbe0c, 0xfeb94bc8, 0x7ffc7caa, 0xfeacbb74,
+ 0x7ffc38d1, 0xfea02b2e, 0x7ffbf280, 0xfe939af5,
+ 0x7ffba9b8, 0xfe870aca, 0x7ffb5e78, 0xfe7a7aae,
+ 0x7ffb10c1, 0xfe6deaa1, 0x7ffac092, 0xfe615aa3,
+ 0x7ffa6dec, 0xfe54cab5, 0x7ffa18cf, 0xfe483ad8,
+ 0x7ff9c13a, 0xfe3bab0b, 0x7ff9672d, 0xfe2f1b50,
+ 0x7ff90aaa, 0xfe228ba7, 0x7ff8abae, 0xfe15fc11,
+ 0x7ff84a3c, 0xfe096c8d, 0x7ff7e652, 0xfdfcdd1d,
+ 0x7ff77ff1, 0xfdf04dc0, 0x7ff71718, 0xfde3be78,
+ 0x7ff6abc8, 0xfdd72f45, 0x7ff63e01, 0xfdcaa027,
+ 0x7ff5cdc3, 0xfdbe111e, 0x7ff55b0d, 0xfdb1822c,
+ 0x7ff4e5e0, 0xfda4f351, 0x7ff46e3c, 0xfd98648d,
+ 0x7ff3f420, 0xfd8bd5e1, 0x7ff3778e, 0xfd7f474d,
+ 0x7ff2f884, 0xfd72b8d2, 0x7ff27703, 0xfd662a70,
+ 0x7ff1f30b, 0xfd599c28, 0x7ff16c9c, 0xfd4d0df9,
+ 0x7ff0e3b6, 0xfd407fe6, 0x7ff05858, 0xfd33f1ed,
+ 0x7fefca84, 0xfd276410, 0x7fef3a39, 0xfd1ad650,
+ 0x7feea776, 0xfd0e48ab, 0x7fee123d, 0xfd01bb24,
+ 0x7fed7a8c, 0xfcf52dbb, 0x7fece065, 0xfce8a06f,
+ 0x7fec43c7, 0xfcdc1342, 0x7feba4b2, 0xfccf8634,
+ 0x7feb0326, 0xfcc2f945, 0x7fea5f23, 0xfcb66c77,
+ 0x7fe9b8a9, 0xfca9dfc8, 0x7fe90fb9, 0xfc9d533b,
+ 0x7fe86452, 0xfc90c6cf, 0x7fe7b674, 0xfc843a85,
+ 0x7fe7061f, 0xfc77ae5e, 0x7fe65354, 0xfc6b2259,
+ 0x7fe59e12, 0xfc5e9678, 0x7fe4e659, 0xfc520aba,
+ 0x7fe42c2a, 0xfc457f21, 0x7fe36f84, 0xfc38f3ac,
+ 0x7fe2b067, 0xfc2c685d, 0x7fe1eed5, 0xfc1fdd34,
+ 0x7fe12acb, 0xfc135231, 0x7fe0644b, 0xfc06c754,
+ 0x7fdf9b55, 0xfbfa3c9f, 0x7fdecfe8, 0xfbedb212,
+ 0x7fde0205, 0xfbe127ac, 0x7fdd31ac, 0xfbd49d70,
+ 0x7fdc5edc, 0xfbc8135c, 0x7fdb8996, 0xfbbb8973,
+ 0x7fdab1d9, 0xfbaeffb3, 0x7fd9d7a7, 0xfba2761e,
+ 0x7fd8fafe, 0xfb95ecb4, 0x7fd81bdf, 0xfb896375,
+ 0x7fd73a4a, 0xfb7cda63, 0x7fd6563f, 0xfb70517d,
+ 0x7fd56fbe, 0xfb63c8c4, 0x7fd486c7, 0xfb574039,
+ 0x7fd39b5a, 0xfb4ab7db, 0x7fd2ad77, 0xfb3e2fac,
+ 0x7fd1bd1e, 0xfb31a7ac, 0x7fd0ca4f, 0xfb251fdc,
+ 0x7fcfd50b, 0xfb18983b, 0x7fcedd50, 0xfb0c10cb,
+ 0x7fcde320, 0xfaff898c, 0x7fcce67a, 0xfaf3027e,
+ 0x7fcbe75e, 0xfae67ba2, 0x7fcae5cd, 0xfad9f4f8,
+ 0x7fc9e1c6, 0xfacd6e81, 0x7fc8db4a, 0xfac0e83d,
+ 0x7fc7d258, 0xfab4622d, 0x7fc6c6f0, 0xfaa7dc52,
+ 0x7fc5b913, 0xfa9b56ab, 0x7fc4a8c1, 0xfa8ed139,
+ 0x7fc395f9, 0xfa824bfd, 0x7fc280bc, 0xfa75c6f8,
+ 0x7fc1690a, 0xfa694229, 0x7fc04ee3, 0xfa5cbd91,
+ 0x7fbf3246, 0xfa503930, 0x7fbe1334, 0xfa43b508,
+ 0x7fbcf1ad, 0xfa373119, 0x7fbbcdb1, 0xfa2aad62,
+ 0x7fbaa740, 0xfa1e29e5, 0x7fb97e5a, 0xfa11a6a3,
+ 0x7fb852ff, 0xfa05239a, 0x7fb7252f, 0xf9f8a0cd,
+ 0x7fb5f4ea, 0xf9ec1e3b, 0x7fb4c231, 0xf9df9be6,
+ 0x7fb38d02, 0xf9d319cc, 0x7fb2555f, 0xf9c697f0,
+ 0x7fb11b48, 0xf9ba1651, 0x7fafdebb, 0xf9ad94f0,
+ 0x7fae9fbb, 0xf9a113cd, 0x7fad5e45, 0xf99492ea,
+ 0x7fac1a5b, 0xf9881245, 0x7faad3fd, 0xf97b91e1,
+ 0x7fa98b2a, 0xf96f11bc, 0x7fa83fe3, 0xf96291d9,
+ 0x7fa6f228, 0xf9561237, 0x7fa5a1f9, 0xf94992d7,
+ 0x7fa44f55, 0xf93d13b8, 0x7fa2fa3d, 0xf93094dd,
+ 0x7fa1a2b2, 0xf9241645, 0x7fa048b2, 0xf91797f0,
+ 0x7f9eec3e, 0xf90b19e0, 0x7f9d8d56, 0xf8fe9c15,
+ 0x7f9c2bfb, 0xf8f21e8e, 0x7f9ac82c, 0xf8e5a14d,
+ 0x7f9961e8, 0xf8d92452, 0x7f97f932, 0xf8cca79e,
+ 0x7f968e07, 0xf8c02b31, 0x7f952069, 0xf8b3af0c,
+ 0x7f93b058, 0xf8a7332e, 0x7f923dd2, 0xf89ab799,
+ 0x7f90c8da, 0xf88e3c4d, 0x7f8f516e, 0xf881c14b,
+ 0x7f8dd78f, 0xf8754692, 0x7f8c5b3d, 0xf868cc24,
+ 0x7f8adc77, 0xf85c5201, 0x7f895b3e, 0xf84fd829,
+ 0x7f87d792, 0xf8435e9d, 0x7f865174, 0xf836e55d,
+ 0x7f84c8e2, 0xf82a6c6a, 0x7f833ddd, 0xf81df3c5,
+ 0x7f81b065, 0xf8117b6d, 0x7f80207b, 0xf8050364,
+ 0x7f7e8e1e, 0xf7f88ba9, 0x7f7cf94e, 0xf7ec143e,
+ 0x7f7b620c, 0xf7df9d22, 0x7f79c857, 0xf7d32657,
+ 0x7f782c30, 0xf7c6afdc, 0x7f768d96, 0xf7ba39b3,
+ 0x7f74ec8a, 0xf7adc3db, 0x7f73490b, 0xf7a14e55,
+ 0x7f71a31b, 0xf794d922, 0x7f6ffab8, 0xf7886442,
+ 0x7f6e4fe3, 0xf77befb5, 0x7f6ca29c, 0xf76f7b7d,
+ 0x7f6af2e3, 0xf7630799, 0x7f6940b8, 0xf756940a,
+ 0x7f678c1c, 0xf74a20d0, 0x7f65d50d, 0xf73daded,
+ 0x7f641b8d, 0xf7313b60, 0x7f625f9b, 0xf724c92a,
+ 0x7f60a138, 0xf718574b, 0x7f5ee063, 0xf70be5c4,
+ 0x7f5d1d1d, 0xf6ff7496, 0x7f5b5765, 0xf6f303c0,
+ 0x7f598f3c, 0xf6e69344, 0x7f57c4a2, 0xf6da2321,
+ 0x7f55f796, 0xf6cdb359, 0x7f54281a, 0xf6c143ec,
+ 0x7f52562c, 0xf6b4d4d9, 0x7f5081cd, 0xf6a86623,
+ 0x7f4eaafe, 0xf69bf7c9, 0x7f4cd1be, 0xf68f89cb,
+ 0x7f4af60d, 0xf6831c2b, 0x7f4917eb, 0xf676aee8,
+ 0x7f473759, 0xf66a4203, 0x7f455456, 0xf65dd57d,
+ 0x7f436ee3, 0xf6516956, 0x7f4186ff, 0xf644fd8f,
+ 0x7f3f9cab, 0xf6389228, 0x7f3dafe7, 0xf62c2721,
+ 0x7f3bc0b3, 0xf61fbc7b, 0x7f39cf0e, 0xf6135237,
+ 0x7f37dafa, 0xf606e854, 0x7f35e476, 0xf5fa7ed4,
+ 0x7f33eb81, 0xf5ee15b7, 0x7f31f01d, 0xf5e1acfd,
+ 0x7f2ff24a, 0xf5d544a7, 0x7f2df206, 0xf5c8dcb6,
+ 0x7f2bef53, 0xf5bc7529, 0x7f29ea31, 0xf5b00e02,
+ 0x7f27e29f, 0xf5a3a740, 0x7f25d89e, 0xf59740e5,
+ 0x7f23cc2e, 0xf58adaf0, 0x7f21bd4e, 0xf57e7563,
+ 0x7f1fabff, 0xf572103d, 0x7f1d9842, 0xf565ab80,
+ 0x7f1b8215, 0xf559472b, 0x7f19697a, 0xf54ce33f,
+ 0x7f174e70, 0xf5407fbd, 0x7f1530f7, 0xf5341ca5,
+ 0x7f13110f, 0xf527b9f7, 0x7f10eeb9, 0xf51b57b5,
+ 0x7f0ec9f5, 0xf50ef5de, 0x7f0ca2c2, 0xf5029473,
+ 0x7f0a7921, 0xf4f63374, 0x7f084d12, 0xf4e9d2e3,
+ 0x7f061e95, 0xf4dd72be, 0x7f03eda9, 0xf4d11308,
+ 0x7f01ba50, 0xf4c4b3c0, 0x7eff8489, 0xf4b854e7,
+ 0x7efd4c54, 0xf4abf67e, 0x7efb11b1, 0xf49f9884,
+ 0x7ef8d4a1, 0xf4933afa, 0x7ef69523, 0xf486dde1,
+ 0x7ef45338, 0xf47a8139, 0x7ef20ee0, 0xf46e2504,
+ 0x7eefc81a, 0xf461c940, 0x7eed7ee7, 0xf4556def,
+ 0x7eeb3347, 0xf4491311, 0x7ee8e53a, 0xf43cb8a7,
+ 0x7ee694c1, 0xf4305eb0, 0x7ee441da, 0xf424052f,
+ 0x7ee1ec87, 0xf417ac22, 0x7edf94c7, 0xf40b538b,
+ 0x7edd3a9a, 0xf3fefb6a, 0x7edade01, 0xf3f2a3bf,
+ 0x7ed87efc, 0xf3e64c8c, 0x7ed61d8a, 0xf3d9f5cf,
+ 0x7ed3b9ad, 0xf3cd9f8b, 0x7ed15363, 0xf3c149bf,
+ 0x7eceeaad, 0xf3b4f46c, 0x7ecc7f8b, 0xf3a89f92,
+ 0x7eca11fe, 0xf39c4b32, 0x7ec7a205, 0xf38ff74d,
+ 0x7ec52fa0, 0xf383a3e2, 0x7ec2bad0, 0xf37750f2,
+ 0x7ec04394, 0xf36afe7e, 0x7ebdc9ed, 0xf35eac86,
+ 0x7ebb4ddb, 0xf3525b0b, 0x7eb8cf5d, 0xf3460a0d,
+ 0x7eb64e75, 0xf339b98d, 0x7eb3cb21, 0xf32d698a,
+ 0x7eb14563, 0xf3211a07, 0x7eaebd3a, 0xf314cb02,
+ 0x7eac32a6, 0xf3087c7d, 0x7ea9a5a8, 0xf2fc2e77,
+ 0x7ea7163f, 0xf2efe0f2, 0x7ea4846c, 0xf2e393ef,
+ 0x7ea1f02f, 0xf2d7476c, 0x7e9f5988, 0xf2cafb6b,
+ 0x7e9cc076, 0xf2beafed, 0x7e9a24fb, 0xf2b264f2,
+ 0x7e978715, 0xf2a61a7a, 0x7e94e6c6, 0xf299d085,
+ 0x7e92440d, 0xf28d8715, 0x7e8f9eeb, 0xf2813e2a,
+ 0x7e8cf75f, 0xf274f5c3, 0x7e8a4d6a, 0xf268ade3,
+ 0x7e87a10c, 0xf25c6688, 0x7e84f245, 0xf2501fb5,
+ 0x7e824114, 0xf243d968, 0x7e7f8d7b, 0xf23793a3,
+ 0x7e7cd778, 0xf22b4e66, 0x7e7a1f0d, 0xf21f09b1,
+ 0x7e77643a, 0xf212c585, 0x7e74a6fd, 0xf20681e3,
+ 0x7e71e759, 0xf1fa3ecb, 0x7e6f254c, 0xf1edfc3d,
+ 0x7e6c60d7, 0xf1e1ba3a, 0x7e6999fa, 0xf1d578c2,
+ 0x7e66d0b4, 0xf1c937d6, 0x7e640507, 0xf1bcf777,
+ 0x7e6136f3, 0xf1b0b7a4, 0x7e5e6676, 0xf1a4785e,
+ 0x7e5b9392, 0xf19839a6, 0x7e58be47, 0xf18bfb7d,
+ 0x7e55e694, 0xf17fbde2, 0x7e530c7a, 0xf17380d6,
+ 0x7e502ff9, 0xf1674459, 0x7e4d5110, 0xf15b086d,
+ 0x7e4a6fc1, 0xf14ecd11, 0x7e478c0b, 0xf1429247,
+ 0x7e44a5ef, 0xf136580d, 0x7e41bd6c, 0xf12a1e66,
+ 0x7e3ed282, 0xf11de551, 0x7e3be532, 0xf111accf,
+ 0x7e38f57c, 0xf10574e0, 0x7e360360, 0xf0f93d86,
+ 0x7e330ede, 0xf0ed06bf, 0x7e3017f6, 0xf0e0d08d,
+ 0x7e2d1ea8, 0xf0d49af1, 0x7e2a22f4, 0xf0c865ea,
+ 0x7e2724db, 0xf0bc317a, 0x7e24245d, 0xf0affda0,
+ 0x7e212179, 0xf0a3ca5d, 0x7e1e1c30, 0xf09797b2,
+ 0x7e1b1482, 0xf08b659f, 0x7e180a6f, 0xf07f3424,
+ 0x7e14fdf7, 0xf0730342, 0x7e11ef1b, 0xf066d2fa,
+ 0x7e0eddd9, 0xf05aa34c, 0x7e0bca34, 0xf04e7438,
+ 0x7e08b42a, 0xf04245c0, 0x7e059bbb, 0xf03617e2,
+ 0x7e0280e9, 0xf029eaa1, 0x7dff63b2, 0xf01dbdfb,
+ 0x7dfc4418, 0xf01191f3, 0x7df9221a, 0xf0056687,
+ 0x7df5fdb8, 0xeff93bba, 0x7df2d6f3, 0xefed118a,
+ 0x7defadca, 0xefe0e7f9, 0x7dec823e, 0xefd4bf08,
+ 0x7de9544f, 0xefc896b5, 0x7de623fd, 0xefbc6f03,
+ 0x7de2f148, 0xefb047f2, 0x7ddfbc30, 0xefa42181,
+ 0x7ddc84b5, 0xef97fbb2, 0x7dd94ad8, 0xef8bd685,
+ 0x7dd60e99, 0xef7fb1fa, 0x7dd2cff7, 0xef738e12,
+ 0x7dcf8ef3, 0xef676ace, 0x7dcc4b8d, 0xef5b482d,
+ 0x7dc905c5, 0xef4f2630, 0x7dc5bd9b, 0xef4304d8,
+ 0x7dc2730f, 0xef36e426, 0x7dbf2622, 0xef2ac419,
+ 0x7dbbd6d4, 0xef1ea4b2, 0x7db88524, 0xef1285f2,
+ 0x7db53113, 0xef0667d9, 0x7db1daa2, 0xeefa4a67,
+ 0x7dae81cf, 0xeeee2d9d, 0x7dab269b, 0xeee2117c,
+ 0x7da7c907, 0xeed5f604, 0x7da46912, 0xeec9db35,
+ 0x7da106bd, 0xeebdc110, 0x7d9da208, 0xeeb1a796,
+ 0x7d9a3af2, 0xeea58ec6, 0x7d96d17d, 0xee9976a1,
+ 0x7d9365a8, 0xee8d5f29, 0x7d8ff772, 0xee81485c,
+ 0x7d8c86de, 0xee75323c, 0x7d8913ea, 0xee691cc9,
+ 0x7d859e96, 0xee5d0804, 0x7d8226e4, 0xee50f3ed,
+ 0x7d7eacd2, 0xee44e084, 0x7d7b3061, 0xee38cdcb,
+ 0x7d77b192, 0xee2cbbc1, 0x7d743064, 0xee20aa67,
+ 0x7d70acd7, 0xee1499bd, 0x7d6d26ec, 0xee0889c4,
+ 0x7d699ea3, 0xedfc7a7c, 0x7d6613fb, 0xedf06be6,
+ 0x7d6286f6, 0xede45e03, 0x7d5ef793, 0xedd850d2,
+ 0x7d5b65d2, 0xedcc4454, 0x7d57d1b3, 0xedc0388a,
+ 0x7d543b37, 0xedb42d74, 0x7d50a25e, 0xeda82313,
+ 0x7d4d0728, 0xed9c1967, 0x7d496994, 0xed901070,
+ 0x7d45c9a4, 0xed84082f, 0x7d422757, 0xed7800a5,
+ 0x7d3e82ae, 0xed6bf9d1, 0x7d3adba7, 0xed5ff3b5,
+ 0x7d373245, 0xed53ee51, 0x7d338687, 0xed47e9a5,
+ 0x7d2fd86c, 0xed3be5b1, 0x7d2c27f6, 0xed2fe277,
+ 0x7d287523, 0xed23dff7, 0x7d24bff6, 0xed17de31,
+ 0x7d21086c, 0xed0bdd25, 0x7d1d4e88, 0xecffdcd4,
+ 0x7d199248, 0xecf3dd3f, 0x7d15d3ad, 0xece7de66,
+ 0x7d1212b7, 0xecdbe04a, 0x7d0e4f67, 0xeccfe2ea,
+ 0x7d0a89bc, 0xecc3e648, 0x7d06c1b6, 0xecb7ea63,
+ 0x7d02f757, 0xecabef3d, 0x7cff2a9d, 0xec9ff4d6,
+ 0x7cfb5b89, 0xec93fb2e, 0x7cf78a1b, 0xec880245,
+ 0x7cf3b653, 0xec7c0a1d, 0x7cefe032, 0xec7012b5,
+ 0x7cec07b8, 0xec641c0e, 0x7ce82ce4, 0xec582629,
+ 0x7ce44fb7, 0xec4c3106, 0x7ce07031, 0xec403ca5,
+ 0x7cdc8e52, 0xec344908, 0x7cd8aa1b, 0xec28562d,
+ 0x7cd4c38b, 0xec1c6417, 0x7cd0daa2, 0xec1072c4,
+ 0x7cccef62, 0xec048237, 0x7cc901c9, 0xebf8926f,
+ 0x7cc511d9, 0xebeca36c, 0x7cc11f90, 0xebe0b52f,
+ 0x7cbd2af0, 0xebd4c7ba, 0x7cb933f9, 0xebc8db0b,
+ 0x7cb53aaa, 0xebbcef23, 0x7cb13f04, 0xebb10404,
+ 0x7cad4107, 0xeba519ad, 0x7ca940b3, 0xeb99301f,
+ 0x7ca53e09, 0xeb8d475b, 0x7ca13908, 0xeb815f60,
+ 0x7c9d31b0, 0xeb75782f, 0x7c992803, 0xeb6991ca,
+ 0x7c951bff, 0xeb5dac2f, 0x7c910da5, 0xeb51c760,
+ 0x7c8cfcf6, 0xeb45e35d, 0x7c88e9f1, 0xeb3a0027,
+ 0x7c84d496, 0xeb2e1dbe, 0x7c80bce7, 0xeb223c22,
+ 0x7c7ca2e2, 0xeb165b54, 0x7c788688, 0xeb0a7b54,
+ 0x7c7467d9, 0xeafe9c24, 0x7c7046d6, 0xeaf2bdc3,
+ 0x7c6c237e, 0xeae6e031, 0x7c67fdd1, 0xeadb0370,
+ 0x7c63d5d1, 0xeacf277f, 0x7c5fab7c, 0xeac34c60,
+ 0x7c5b7ed4, 0xeab77212, 0x7c574fd8, 0xeaab9896,
+ 0x7c531e88, 0xea9fbfed, 0x7c4eeae5, 0xea93e817,
+ 0x7c4ab4ef, 0xea881114, 0x7c467ca6, 0xea7c3ae5,
+ 0x7c42420a, 0xea70658a, 0x7c3e051b, 0xea649105,
+ 0x7c39c5da, 0xea58bd54, 0x7c358446, 0xea4cea79,
+ 0x7c314060, 0xea411874, 0x7c2cfa28, 0xea354746,
+ 0x7c28b19e, 0xea2976ef, 0x7c2466c2, 0xea1da770,
+ 0x7c201994, 0xea11d8c8, 0x7c1bca16, 0xea060af9,
+ 0x7c177845, 0xe9fa3e03, 0x7c132424, 0xe9ee71e6,
+ 0x7c0ecdb2, 0xe9e2a6a3, 0x7c0a74f0, 0xe9d6dc3b,
+ 0x7c0619dc, 0xe9cb12ad, 0x7c01bc78, 0xe9bf49fa,
+ 0x7bfd5cc4, 0xe9b38223, 0x7bf8fac0, 0xe9a7bb28,
+ 0x7bf4966c, 0xe99bf509, 0x7bf02fc9, 0xe9902fc7,
+ 0x7bebc6d5, 0xe9846b63, 0x7be75b93, 0xe978a7dd,
+ 0x7be2ee01, 0xe96ce535, 0x7bde7e20, 0xe961236c,
+ 0x7bda0bf0, 0xe9556282, 0x7bd59771, 0xe949a278,
+ 0x7bd120a4, 0xe93de34e, 0x7bcca789, 0xe9322505,
+ 0x7bc82c1f, 0xe926679c, 0x7bc3ae67, 0xe91aab16,
+ 0x7bbf2e62, 0xe90eef71, 0x7bbaac0e, 0xe90334af,
+ 0x7bb6276e, 0xe8f77acf, 0x7bb1a080, 0xe8ebc1d3,
+ 0x7bad1744, 0xe8e009ba, 0x7ba88bbc, 0xe8d45286,
+ 0x7ba3fde7, 0xe8c89c37, 0x7b9f6dc5, 0xe8bce6cd,
+ 0x7b9adb57, 0xe8b13248, 0x7b96469d, 0xe8a57ea9,
+ 0x7b91af97, 0xe899cbf1, 0x7b8d1644, 0xe88e1a20,
+ 0x7b887aa6, 0xe8826936, 0x7b83dcbc, 0xe876b934,
+ 0x7b7f3c87, 0xe86b0a1a, 0x7b7a9a07, 0xe85f5be9,
+ 0x7b75f53c, 0xe853aea1, 0x7b714e25, 0xe8480243,
+ 0x7b6ca4c4, 0xe83c56cf, 0x7b67f919, 0xe830ac45,
+ 0x7b634b23, 0xe82502a7, 0x7b5e9ae4, 0xe81959f4,
+ 0x7b59e85a, 0xe80db22d, 0x7b553386, 0xe8020b52,
+ 0x7b507c69, 0xe7f66564, 0x7b4bc303, 0xe7eac063,
+ 0x7b470753, 0xe7df1c50, 0x7b42495a, 0xe7d3792b,
+ 0x7b3d8918, 0xe7c7d6f4, 0x7b38c68e, 0xe7bc35ad,
+ 0x7b3401bb, 0xe7b09555, 0x7b2f3aa0, 0xe7a4f5ed,
+ 0x7b2a713d, 0xe7995776, 0x7b25a591, 0xe78db9ef,
+ 0x7b20d79e, 0xe7821d59, 0x7b1c0764, 0xe77681b6,
+ 0x7b1734e2, 0xe76ae704, 0x7b126019, 0xe75f4d45,
+ 0x7b0d8909, 0xe753b479, 0x7b08afb2, 0xe7481ca1,
+ 0x7b03d414, 0xe73c85bc, 0x7afef630, 0xe730efcc,
+ 0x7afa1605, 0xe7255ad1, 0x7af53395, 0xe719c6cb,
+ 0x7af04edf, 0xe70e33bb, 0x7aeb67e3, 0xe702a1a1,
+ 0x7ae67ea1, 0xe6f7107e, 0x7ae1931a, 0xe6eb8052,
+ 0x7adca54e, 0xe6dff11d, 0x7ad7b53d, 0xe6d462e1,
+ 0x7ad2c2e8, 0xe6c8d59c, 0x7acdce4d, 0xe6bd4951,
+ 0x7ac8d76f, 0xe6b1bdff, 0x7ac3de4c, 0xe6a633a6,
+ 0x7abee2e5, 0xe69aaa48, 0x7ab9e53a, 0xe68f21e5,
+ 0x7ab4e54c, 0xe6839a7c, 0x7aafe31b, 0xe6781410,
+ 0x7aaadea6, 0xe66c8e9f, 0x7aa5d7ee, 0xe6610a2a,
+ 0x7aa0cef3, 0xe65586b3, 0x7a9bc3b6, 0xe64a0438,
+ 0x7a96b636, 0xe63e82bc, 0x7a91a674, 0xe633023e,
+ 0x7a8c9470, 0xe62782be, 0x7a87802a, 0xe61c043d,
+ 0x7a8269a3, 0xe61086bc, 0x7a7d50da, 0xe6050a3b,
+ 0x7a7835cf, 0xe5f98ebb, 0x7a731884, 0xe5ee143b,
+ 0x7a6df8f8, 0xe5e29abc, 0x7a68d72b, 0xe5d72240,
+ 0x7a63b31d, 0xe5cbaac5, 0x7a5e8cd0, 0xe5c0344d,
+ 0x7a596442, 0xe5b4bed8, 0x7a543974, 0xe5a94a67,
+ 0x7a4f0c67, 0xe59dd6f9, 0x7a49dd1a, 0xe5926490,
+ 0x7a44ab8e, 0xe586f32c, 0x7a3f77c3, 0xe57b82cd,
+ 0x7a3a41b9, 0xe5701374, 0x7a350970, 0xe564a521,
+ 0x7a2fcee8, 0xe55937d5, 0x7a2a9223, 0xe54dcb8f,
+ 0x7a25531f, 0xe5426051, 0x7a2011de, 0xe536f61b,
+ 0x7a1ace5f, 0xe52b8cee, 0x7a1588a2, 0xe52024c9,
+ 0x7a1040a8, 0xe514bdad, 0x7a0af671, 0xe509579b,
+ 0x7a05a9fd, 0xe4fdf294, 0x7a005b4d, 0xe4f28e96,
+ 0x79fb0a60, 0xe4e72ba4, 0x79f5b737, 0xe4dbc9bd,
+ 0x79f061d2, 0xe4d068e2, 0x79eb0a31, 0xe4c50914,
+ 0x79e5b054, 0xe4b9aa52, 0x79e0543c, 0xe4ae4c9d,
+ 0x79daf5e8, 0xe4a2eff6, 0x79d5955a, 0xe497945d,
+ 0x79d03291, 0xe48c39d3, 0x79cacd8d, 0xe480e057,
+ 0x79c5664f, 0xe47587eb, 0x79bffcd7, 0xe46a308f,
+ 0x79ba9125, 0xe45eda43, 0x79b52339, 0xe4538507,
+ 0x79afb313, 0xe44830dd, 0x79aa40b4, 0xe43cddc4,
+ 0x79a4cc1c, 0xe4318bbe, 0x799f554b, 0xe4263ac9,
+ 0x7999dc42, 0xe41aeae8, 0x799460ff, 0xe40f9c1a,
+ 0x798ee385, 0xe4044e60, 0x798963d2, 0xe3f901ba,
+ 0x7983e1e8, 0xe3edb628, 0x797e5dc6, 0xe3e26bac,
+ 0x7978d76c, 0xe3d72245, 0x79734edc, 0xe3cbd9f4,
+ 0x796dc414, 0xe3c092b9, 0x79683715, 0xe3b54c95,
+ 0x7962a7e0, 0xe3aa0788, 0x795d1675, 0xe39ec393,
+ 0x795782d3, 0xe39380b6, 0x7951ecfc, 0xe3883ef2,
+ 0x794c54ee, 0xe37cfe47, 0x7946baac, 0xe371beb5,
+ 0x79411e33, 0xe366803c, 0x793b7f86, 0xe35b42df,
+ 0x7935dea4, 0xe350069b, 0x79303b8e, 0xe344cb73,
+ 0x792a9642, 0xe3399167, 0x7924eec3, 0xe32e5876,
+ 0x791f4510, 0xe32320a2, 0x79199929, 0xe317e9eb,
+ 0x7913eb0e, 0xe30cb451, 0x790e3ac0, 0xe3017fd5,
+ 0x7908883f, 0xe2f64c77, 0x7902d38b, 0xe2eb1a37,
+ 0x78fd1ca4, 0xe2dfe917, 0x78f7638b, 0xe2d4b916,
+ 0x78f1a840, 0xe2c98a35, 0x78ebeac2, 0xe2be5c74,
+ 0x78e62b13, 0xe2b32fd4, 0x78e06932, 0xe2a80456,
+ 0x78daa520, 0xe29cd9f8, 0x78d4dedd, 0xe291b0bd,
+ 0x78cf1669, 0xe28688a4, 0x78c94bc4, 0xe27b61af,
+ 0x78c37eef, 0xe2703bdc, 0x78bdafea, 0xe265172e,
+ 0x78b7deb4, 0xe259f3a3, 0x78b20b4f, 0xe24ed13d,
+ 0x78ac35ba, 0xe243affc, 0x78a65df6, 0xe2388fe1,
+ 0x78a08402, 0xe22d70eb, 0x789aa7e0, 0xe222531c,
+ 0x7894c98f, 0xe2173674, 0x788ee910, 0xe20c1af3,
+ 0x78890663, 0xe2010099, 0x78832187, 0xe1f5e768,
+ 0x787d3a7e, 0xe1eacf5f, 0x78775147, 0xe1dfb87f,
+ 0x787165e3, 0xe1d4a2c8, 0x786b7852, 0xe1c98e3b,
+ 0x78658894, 0xe1be7ad8, 0x785f96a9, 0xe1b368a0,
+ 0x7859a292, 0xe1a85793, 0x7853ac4f, 0xe19d47b1,
+ 0x784db3e0, 0xe19238fb, 0x7847b946, 0xe1872b72,
+ 0x7841bc7f, 0xe17c1f15, 0x783bbd8e, 0xe17113e5,
+ 0x7835bc71, 0xe16609e3, 0x782fb92a, 0xe15b0110,
+ 0x7829b3b9, 0xe14ff96a, 0x7823ac1d, 0xe144f2f3,
+ 0x781da256, 0xe139edac, 0x78179666, 0xe12ee995,
+ 0x7811884d, 0xe123e6ad, 0x780b780a, 0xe118e4f6,
+ 0x7805659e, 0xe10de470, 0x77ff5109, 0xe102e51c,
+ 0x77f93a4b, 0xe0f7e6f9, 0x77f32165, 0xe0ecea09,
+ 0x77ed0657, 0xe0e1ee4b, 0x77e6e921, 0xe0d6f3c1,
+ 0x77e0c9c3, 0xe0cbfa6a, 0x77daa83d, 0xe0c10247,
+ 0x77d48490, 0xe0b60b58, 0x77ce5ebd, 0xe0ab159e,
+ 0x77c836c2, 0xe0a0211a, 0x77c20ca1, 0xe0952dcb,
+ 0x77bbe05a, 0xe08a3bb2, 0x77b5b1ec, 0xe07f4acf,
+ 0x77af8159, 0xe0745b24, 0x77a94ea0, 0xe0696cb0,
+ 0x77a319c2, 0xe05e7f74, 0x779ce2be, 0xe053936f,
+ 0x7796a996, 0xe048a8a4, 0x77906e49, 0xe03dbf11,
+ 0x778a30d8, 0xe032d6b8, 0x7783f143, 0xe027ef99,
+ 0x777daf89, 0xe01d09b4, 0x77776bac, 0xe012250a,
+ 0x777125ac, 0xe007419b, 0x776add88, 0xdffc5f67,
+ 0x77649341, 0xdff17e70, 0x775e46d8, 0xdfe69eb4,
+ 0x7757f84c, 0xdfdbc036, 0x7751a79e, 0xdfd0e2f5,
+ 0x774b54ce, 0xdfc606f1, 0x7744ffdd, 0xdfbb2c2c,
+ 0x773ea8ca, 0xdfb052a5, 0x77384f95, 0xdfa57a5d,
+ 0x7731f440, 0xdf9aa354, 0x772b96ca, 0xdf8fcd8b,
+ 0x77253733, 0xdf84f902, 0x771ed57c, 0xdf7a25ba,
+ 0x771871a5, 0xdf6f53b3, 0x77120bae, 0xdf6482ed,
+ 0x770ba398, 0xdf59b369, 0x77053962, 0xdf4ee527,
+ 0x76fecd0e, 0xdf441828, 0x76f85e9a, 0xdf394c6b,
+ 0x76f1ee09, 0xdf2e81f3, 0x76eb7b58, 0xdf23b8be,
+ 0x76e5068a, 0xdf18f0ce, 0x76de8f9e, 0xdf0e2a22,
+ 0x76d81695, 0xdf0364bc, 0x76d19b6e, 0xdef8a09b,
+ 0x76cb1e2a, 0xdeedddc0, 0x76c49ec9, 0xdee31c2b,
+ 0x76be1d4c, 0xded85bdd, 0x76b799b3, 0xdecd9cd7,
+ 0x76b113fd, 0xdec2df18, 0x76aa8c2c, 0xdeb822a1,
+ 0x76a4023f, 0xdead6773, 0x769d7637, 0xdea2ad8d,
+ 0x7696e814, 0xde97f4f1, 0x769057d6, 0xde8d3d9e,
+ 0x7689c57d, 0xde828796, 0x7683310b, 0xde77d2d8,
+ 0x767c9a7e, 0xde6d1f65, 0x767601d7, 0xde626d3e,
+ 0x766f6717, 0xde57bc62, 0x7668ca3e, 0xde4d0cd2,
+ 0x76622b4c, 0xde425e8f, 0x765b8a41, 0xde37b199,
+ 0x7654e71d, 0xde2d05f1, 0x764e41e2, 0xde225b96,
+ 0x76479a8e, 0xde17b28a, 0x7640f123, 0xde0d0acc,
+ 0x763a45a0, 0xde02645d, 0x76339806, 0xddf7bf3e,
+ 0x762ce855, 0xdded1b6e, 0x7626368d, 0xdde278ef,
+ 0x761f82af, 0xddd7d7c1, 0x7618ccba, 0xddcd37e4,
+ 0x761214b0, 0xddc29958, 0x760b5a90, 0xddb7fc1e,
+ 0x76049e5b, 0xddad6036, 0x75fde011, 0xdda2c5a2,
+ 0x75f71fb1, 0xdd982c60, 0x75f05d3d, 0xdd8d9472,
+ 0x75e998b5, 0xdd82fdd8, 0x75e2d219, 0xdd786892,
+ 0x75dc0968, 0xdd6dd4a2, 0x75d53ea5, 0xdd634206,
+ 0x75ce71ce, 0xdd58b0c0, 0x75c7a2e3, 0xdd4e20d0,
+ 0x75c0d1e7, 0xdd439236, 0x75b9fed7, 0xdd3904f4,
+ 0x75b329b5, 0xdd2e7908, 0x75ac5282, 0xdd23ee74,
+ 0x75a5793c, 0xdd196538, 0x759e9de5, 0xdd0edd55,
+ 0x7597c07d, 0xdd0456ca, 0x7590e104, 0xdcf9d199,
+ 0x7589ff7a, 0xdcef4dc2, 0x75831be0, 0xdce4cb44,
+ 0x757c3636, 0xdcda4a21, 0x75754e7c, 0xdccfca59,
+ 0x756e64b2, 0xdcc54bec, 0x756778d9, 0xdcbacedb,
+ 0x75608af1, 0xdcb05326, 0x75599afa, 0xdca5d8cd,
+ 0x7552a8f4, 0xdc9b5fd2, 0x754bb4e1, 0xdc90e834,
+ 0x7544bebf, 0xdc8671f3, 0x753dc68f, 0xdc7bfd11,
+ 0x7536cc52, 0xdc71898d, 0x752fd008, 0xdc671768,
+ 0x7528d1b1, 0xdc5ca6a2, 0x7521d14d, 0xdc52373c,
+ 0x751acedd, 0xdc47c936, 0x7513ca60, 0xdc3d5c91,
+ 0x750cc3d8, 0xdc32f14d, 0x7505bb44, 0xdc28876a,
+ 0x74feb0a5, 0xdc1e1ee9, 0x74f7a3fb, 0xdc13b7c9,
+ 0x74f09546, 0xdc09520d, 0x74e98487, 0xdbfeedb3,
+ 0x74e271bd, 0xdbf48abd, 0x74db5cea, 0xdbea292b,
+ 0x74d4460c, 0xdbdfc8fc, 0x74cd2d26, 0xdbd56a32,
+ 0x74c61236, 0xdbcb0cce, 0x74bef53d, 0xdbc0b0ce,
+ 0x74b7d63c, 0xdbb65634, 0x74b0b533, 0xdbabfd01,
+ 0x74a99221, 0xdba1a534, 0x74a26d08, 0xdb974ece,
+ 0x749b45e7, 0xdb8cf9cf, 0x74941cbf, 0xdb82a638,
+ 0x748cf190, 0xdb785409, 0x7485c45b, 0xdb6e0342,
+ 0x747e951f, 0xdb63b3e5, 0x747763dd, 0xdb5965f1,
+ 0x74703095, 0xdb4f1967, 0x7468fb47, 0xdb44ce46,
+ 0x7461c3f5, 0xdb3a8491, 0x745a8a9d, 0xdb303c46,
+ 0x74534f41, 0xdb25f566, 0x744c11e0, 0xdb1baff2,
+ 0x7444d27b, 0xdb116beb, 0x743d9112, 0xdb072950,
+ 0x74364da6, 0xdafce821, 0x742f0836, 0xdaf2a860,
+ 0x7427c0c3, 0xdae86a0d, 0x7420774d, 0xdade2d28,
+ 0x74192bd5, 0xdad3f1b1, 0x7411de5b, 0xdac9b7a9,
+ 0x740a8edf, 0xdabf7f11, 0x74033d61, 0xdab547e8,
+ 0x73fbe9e2, 0xdaab122f, 0x73f49462, 0xdaa0dde7,
+ 0x73ed3ce1, 0xda96ab0f, 0x73e5e360, 0xda8c79a9,
+ 0x73de87de, 0xda8249b4, 0x73d72a5d, 0xda781b31,
+ 0x73cfcadc, 0xda6dee21, 0x73c8695b, 0xda63c284,
+ 0x73c105db, 0xda599859, 0x73b9a05d, 0xda4f6fa3,
+ 0x73b238e0, 0xda454860, 0x73aacf65, 0xda3b2292,
+ 0x73a363ec, 0xda30fe38, 0x739bf675, 0xda26db54,
+ 0x73948701, 0xda1cb9e5, 0x738d1590, 0xda1299ec,
+ 0x7385a222, 0xda087b69, 0x737e2cb7, 0xd9fe5e5e,
+ 0x7376b551, 0xd9f442c9, 0x736f3bee, 0xd9ea28ac,
+ 0x7367c090, 0xd9e01006, 0x73604336, 0xd9d5f8d9,
+ 0x7358c3e2, 0xd9cbe325, 0x73514292, 0xd9c1cee9,
+ 0x7349bf48, 0xd9b7bc27, 0x73423a04, 0xd9adaadf,
+ 0x733ab2c6, 0xd9a39b11, 0x7333298f, 0xd9998cbe,
+ 0x732b9e5e, 0xd98f7fe6, 0x73241134, 0xd9857489,
+ 0x731c8211, 0xd97b6aa8, 0x7314f0f6, 0xd9716243,
+ 0x730d5de3, 0xd9675b5a, 0x7305c8d7, 0xd95d55ef,
+ 0x72fe31d5, 0xd9535201, 0x72f698db, 0xd9494f90,
+ 0x72eefdea, 0xd93f4e9e, 0x72e76102, 0xd9354f2a,
+ 0x72dfc224, 0xd92b5135, 0x72d82150, 0xd92154bf,
+ 0x72d07e85, 0xd91759c9, 0x72c8d9c6, 0xd90d6053,
+ 0x72c13311, 0xd903685d, 0x72b98a67, 0xd8f971e8,
+ 0x72b1dfc9, 0xd8ef7cf4, 0x72aa3336, 0xd8e58982,
+ 0x72a284b0, 0xd8db9792, 0x729ad435, 0xd8d1a724,
+ 0x729321c7, 0xd8c7b838, 0x728b6d66, 0xd8bdcad0,
+ 0x7283b712, 0xd8b3deeb, 0x727bfecc, 0xd8a9f48a,
+ 0x72744493, 0xd8a00bae, 0x726c8868, 0xd8962456,
+ 0x7264ca4c, 0xd88c3e83, 0x725d0a3e, 0xd8825a35,
+ 0x72554840, 0xd878776d, 0x724d8450, 0xd86e962b,
+ 0x7245be70, 0xd864b670, 0x723df6a0, 0xd85ad83c,
+ 0x72362ce0, 0xd850fb8e, 0x722e6130, 0xd8472069,
+ 0x72269391, 0xd83d46cc, 0x721ec403, 0xd8336eb7,
+ 0x7216f287, 0xd829982b, 0x720f1f1c, 0xd81fc328,
+ 0x720749c3, 0xd815efae, 0x71ff727c, 0xd80c1dbf,
+ 0x71f79948, 0xd8024d59, 0x71efbe27, 0xd7f87e7f,
+ 0x71e7e118, 0xd7eeb130, 0x71e0021e, 0xd7e4e56c,
+ 0x71d82137, 0xd7db1b34, 0x71d03e64, 0xd7d15288,
+ 0x71c859a5, 0xd7c78b68, 0x71c072fb, 0xd7bdc5d6,
+ 0x71b88a66, 0xd7b401d1, 0x71b09fe7, 0xd7aa3f5a,
+ 0x71a8b37c, 0xd7a07e70, 0x71a0c528, 0xd796bf16,
+ 0x7198d4ea, 0xd78d014a, 0x7190e2c3, 0xd783450d,
+ 0x7188eeb2, 0xd7798a60, 0x7180f8b8, 0xd76fd143,
+ 0x717900d6, 0xd76619b6, 0x7171070c, 0xd75c63ba,
+ 0x71690b59, 0xd752af4f, 0x71610dbf, 0xd748fc75,
+ 0x71590e3e, 0xd73f4b2e, 0x71510cd5, 0xd7359b78,
+ 0x71490986, 0xd72bed55, 0x71410450, 0xd72240c5,
+ 0x7138fd35, 0xd71895c9, 0x7130f433, 0xd70eec60,
+ 0x7128e94c, 0xd705448b, 0x7120dc80, 0xd6fb9e4b,
+ 0x7118cdcf, 0xd6f1f99f, 0x7110bd39, 0xd6e85689,
+ 0x7108aabf, 0xd6deb508, 0x71009661, 0xd6d5151d,
+ 0x70f8801f, 0xd6cb76c9, 0x70f067fb, 0xd6c1da0b,
+ 0x70e84df3, 0xd6b83ee4, 0x70e03208, 0xd6aea555,
+ 0x70d8143b, 0xd6a50d5d, 0x70cff48c, 0xd69b76fe,
+ 0x70c7d2fb, 0xd691e237, 0x70bfaf89, 0xd6884f09,
+ 0x70b78a36, 0xd67ebd74, 0x70af6302, 0xd6752d79,
+ 0x70a739ed, 0xd66b9f18, 0x709f0ef8, 0xd6621251,
+ 0x7096e223, 0xd6588725, 0x708eb36f, 0xd64efd94,
+ 0x708682dc, 0xd645759f, 0x707e5069, 0xd63bef46,
+ 0x70761c18, 0xd6326a88, 0x706de5e9, 0xd628e767,
+ 0x7065addb, 0xd61f65e4, 0x705d73f0, 0xd615e5fd,
+ 0x70553828, 0xd60c67b4, 0x704cfa83, 0xd602eb0a,
+ 0x7044bb00, 0xd5f96ffd, 0x703c79a2, 0xd5eff690,
+ 0x70343667, 0xd5e67ec1, 0x702bf151, 0xd5dd0892,
+ 0x7023aa5f, 0xd5d39403, 0x701b6193, 0xd5ca2115,
+ 0x701316eb, 0xd5c0afc6, 0x700aca69, 0xd5b74019,
+ 0x70027c0c, 0xd5add20d, 0x6ffa2bd6, 0xd5a465a3,
+ 0x6ff1d9c7, 0xd59afadb, 0x6fe985de, 0xd59191b5,
+ 0x6fe1301c, 0xd5882a32, 0x6fd8d882, 0xd57ec452,
+ 0x6fd07f0f, 0xd5756016, 0x6fc823c5, 0xd56bfd7d,
+ 0x6fbfc6a3, 0xd5629c89, 0x6fb767aa, 0xd5593d3a,
+ 0x6faf06da, 0xd54fdf8f, 0x6fa6a433, 0xd5468389,
+ 0x6f9e3fb6, 0xd53d292a, 0x6f95d963, 0xd533d070,
+ 0x6f8d713a, 0xd52a795d, 0x6f85073c, 0xd52123f0,
+ 0x6f7c9b69, 0xd517d02b, 0x6f742dc1, 0xd50e7e0d,
+ 0x6f6bbe45, 0xd5052d97, 0x6f634cf5, 0xd4fbdec9,
+ 0x6f5ad9d1, 0xd4f291a4, 0x6f5264da, 0xd4e94627,
+ 0x6f49ee0f, 0xd4dffc54, 0x6f417573, 0xd4d6b42b,
+ 0x6f38fb03, 0xd4cd6dab, 0x6f307ec2, 0xd4c428d6,
+ 0x6f2800af, 0xd4bae5ab, 0x6f1f80ca, 0xd4b1a42c,
+ 0x6f16ff14, 0xd4a86458, 0x6f0e7b8e, 0xd49f2630,
+ 0x6f05f637, 0xd495e9b3, 0x6efd6f10, 0xd48caee4,
+ 0x6ef4e619, 0xd48375c1, 0x6eec5b53, 0xd47a3e4b,
+ 0x6ee3cebe, 0xd4710883, 0x6edb405a, 0xd467d469,
+ 0x6ed2b027, 0xd45ea1fd, 0x6eca1e27, 0xd4557140,
+ 0x6ec18a58, 0xd44c4232, 0x6eb8f4bc, 0xd44314d3,
+ 0x6eb05d53, 0xd439e923, 0x6ea7c41e, 0xd430bf24,
+ 0x6e9f291b, 0xd42796d5, 0x6e968c4d, 0xd41e7037,
+ 0x6e8dedb3, 0xd4154b4a, 0x6e854d4d, 0xd40c280e,
+ 0x6e7cab1c, 0xd4030684, 0x6e740720, 0xd3f9e6ad,
+ 0x6e6b615a, 0xd3f0c887, 0x6e62b9ca, 0xd3e7ac15,
+ 0x6e5a1070, 0xd3de9156, 0x6e51654c, 0xd3d5784a,
+ 0x6e48b860, 0xd3cc60f2, 0x6e4009aa, 0xd3c34b4f,
+ 0x6e37592c, 0xd3ba3760, 0x6e2ea6e6, 0xd3b12526,
+ 0x6e25f2d8, 0xd3a814a2, 0x6e1d3d03, 0xd39f05d3,
+ 0x6e148566, 0xd395f8ba, 0x6e0bcc03, 0xd38ced57,
+ 0x6e0310d9, 0xd383e3ab, 0x6dfa53e9, 0xd37adbb6,
+ 0x6df19534, 0xd371d579, 0x6de8d4b8, 0xd368d0f3,
+ 0x6de01278, 0xd35fce26, 0x6dd74e73, 0xd356cd11,
+ 0x6dce88aa, 0xd34dcdb4, 0x6dc5c11c, 0xd344d011,
+ 0x6dbcf7cb, 0xd33bd427, 0x6db42cb6, 0xd332d9f7,
+ 0x6dab5fdf, 0xd329e181, 0x6da29144, 0xd320eac6,
+ 0x6d99c0e7, 0xd317f5c6, 0x6d90eec8, 0xd30f0280,
+ 0x6d881ae8, 0xd30610f7, 0x6d7f4545, 0xd2fd2129,
+ 0x6d766de2, 0xd2f43318, 0x6d6d94bf, 0xd2eb46c3,
+ 0x6d64b9da, 0xd2e25c2b, 0x6d5bdd36, 0xd2d97350,
+ 0x6d52fed2, 0xd2d08c33, 0x6d4a1eaf, 0xd2c7a6d4,
+ 0x6d413ccd, 0xd2bec333, 0x6d38592c, 0xd2b5e151,
+ 0x6d2f73cd, 0xd2ad012e, 0x6d268cb0, 0xd2a422ca,
+ 0x6d1da3d5, 0xd29b4626, 0x6d14b93d, 0xd2926b41,
+ 0x6d0bcce8, 0xd289921e, 0x6d02ded7, 0xd280babb,
+ 0x6cf9ef09, 0xd277e518, 0x6cf0fd80, 0xd26f1138,
+ 0x6ce80a3a, 0xd2663f19, 0x6cdf153a, 0xd25d6ebc,
+ 0x6cd61e7f, 0xd254a021, 0x6ccd2609, 0xd24bd34a,
+ 0x6cc42bd9, 0xd2430835, 0x6cbb2fef, 0xd23a3ee4,
+ 0x6cb2324c, 0xd2317756, 0x6ca932ef, 0xd228b18d,
+ 0x6ca031da, 0xd21fed88, 0x6c972f0d, 0xd2172b48,
+ 0x6c8e2a87, 0xd20e6acc, 0x6c85244a, 0xd205ac17,
+ 0x6c7c1c55, 0xd1fcef27, 0x6c7312a9, 0xd1f433fd,
+ 0x6c6a0746, 0xd1eb7a9a, 0x6c60fa2d, 0xd1e2c2fd,
+ 0x6c57eb5e, 0xd1da0d28, 0x6c4edada, 0xd1d1591a,
+ 0x6c45c8a0, 0xd1c8a6d4, 0x6c3cb4b1, 0xd1bff656,
+ 0x6c339f0e, 0xd1b747a0, 0x6c2a87b6, 0xd1ae9ab4,
+ 0x6c216eaa, 0xd1a5ef90, 0x6c1853eb, 0xd19d4636,
+ 0x6c0f3779, 0xd1949ea6, 0x6c061953, 0xd18bf8e0,
+ 0x6bfcf97c, 0xd18354e4, 0x6bf3d7f2, 0xd17ab2b3,
+ 0x6beab4b6, 0xd172124d, 0x6be18fc9, 0xd16973b3,
+ 0x6bd8692b, 0xd160d6e5, 0x6bcf40dc, 0xd1583be2,
+ 0x6bc616dd, 0xd14fa2ad, 0x6bbceb2d, 0xd1470b44,
+ 0x6bb3bdce, 0xd13e75a8, 0x6baa8ec0, 0xd135e1d9,
+ 0x6ba15e03, 0xd12d4fd9, 0x6b982b97, 0xd124bfa6,
+ 0x6b8ef77d, 0xd11c3142, 0x6b85c1b5, 0xd113a4ad,
+ 0x6b7c8a3f, 0xd10b19e7, 0x6b73511c, 0xd10290f0,
+ 0x6b6a164d, 0xd0fa09c9, 0x6b60d9d0, 0xd0f18472,
+ 0x6b579ba8, 0xd0e900ec, 0x6b4e5bd4, 0xd0e07f36,
+ 0x6b451a55, 0xd0d7ff51, 0x6b3bd72a, 0xd0cf813e,
+ 0x6b329255, 0xd0c704fd, 0x6b294bd5, 0xd0be8a8d,
+ 0x6b2003ac, 0xd0b611f1, 0x6b16b9d9, 0xd0ad9b26,
+ 0x6b0d6e5c, 0xd0a5262f, 0x6b042137, 0xd09cb30b,
+ 0x6afad269, 0xd09441bb, 0x6af181f3, 0xd08bd23f,
+ 0x6ae82fd5, 0xd0836497, 0x6adedc10, 0xd07af8c4,
+ 0x6ad586a3, 0xd0728ec6, 0x6acc2f90, 0xd06a269d,
+ 0x6ac2d6d6, 0xd061c04a, 0x6ab97c77, 0xd0595bcd,
+ 0x6ab02071, 0xd050f926, 0x6aa6c2c6, 0xd0489856,
+ 0x6a9d6377, 0xd040395d, 0x6a940283, 0xd037dc3b,
+ 0x6a8a9fea, 0xd02f80f1, 0x6a813bae, 0xd027277e,
+ 0x6a77d5ce, 0xd01ecfe4, 0x6a6e6e4b, 0xd0167a22,
+ 0x6a650525, 0xd00e2639, 0x6a5b9a5d, 0xd005d42a,
+ 0x6a522df3, 0xcffd83f4, 0x6a48bfe7, 0xcff53597,
+ 0x6a3f503a, 0xcfece915, 0x6a35deeb, 0xcfe49e6d,
+ 0x6a2c6bfd, 0xcfdc55a1, 0x6a22f76e, 0xcfd40eaf,
+ 0x6a19813f, 0xcfcbc999, 0x6a100970, 0xcfc3865e,
+ 0x6a069003, 0xcfbb4500, 0x69fd14f6, 0xcfb3057d,
+ 0x69f3984c, 0xcfaac7d8, 0x69ea1a03, 0xcfa28c10,
+ 0x69e09a1c, 0xcf9a5225, 0x69d71899, 0xcf921a17,
+ 0x69cd9578, 0xcf89e3e8, 0x69c410ba, 0xcf81af97,
+ 0x69ba8a61, 0xcf797d24, 0x69b1026c, 0xcf714c91,
+ 0x69a778db, 0xcf691ddd, 0x699dedaf, 0xcf60f108,
+ 0x699460e8, 0xcf58c613, 0x698ad287, 0xcf509cfe,
+ 0x6981428c, 0xcf4875ca, 0x6977b0f7, 0xcf405077,
+ 0x696e1dc9, 0xcf382d05, 0x69648902, 0xcf300b74,
+ 0x695af2a3, 0xcf27ebc5, 0x69515aab, 0xcf1fcdf8,
+ 0x6947c11c, 0xcf17b20d, 0x693e25f5, 0xcf0f9805,
+ 0x69348937, 0xcf077fe1, 0x692aeae3, 0xceff699f,
+ 0x69214af8, 0xcef75541, 0x6917a977, 0xceef42c7,
+ 0x690e0661, 0xcee73231, 0x690461b5, 0xcedf2380,
+ 0x68fabb75, 0xced716b4, 0x68f113a0, 0xcecf0bcd,
+ 0x68e76a37, 0xcec702cb, 0x68ddbf3b, 0xcebefbb0,
+ 0x68d412ab, 0xceb6f67a, 0x68ca6488, 0xceaef32b,
+ 0x68c0b4d2, 0xcea6f1c2, 0x68b7038b, 0xce9ef241,
+ 0x68ad50b1, 0xce96f4a7, 0x68a39c46, 0xce8ef8f4,
+ 0x6899e64a, 0xce86ff2a, 0x68902ebd, 0xce7f0748,
+ 0x688675a0, 0xce77114e, 0x687cbaf3, 0xce6f1d3d,
+ 0x6872feb6, 0xce672b16, 0x686940ea, 0xce5f3ad8,
+ 0x685f8190, 0xce574c84, 0x6855c0a6, 0xce4f6019,
+ 0x684bfe2f, 0xce47759a, 0x68423a2a, 0xce3f8d05,
+ 0x68387498, 0xce37a65b, 0x682ead78, 0xce2fc19c,
+ 0x6824e4cc, 0xce27dec9, 0x681b1a94, 0xce1ffde2,
+ 0x68114ed0, 0xce181ee8, 0x68078181, 0xce1041d9,
+ 0x67fdb2a7, 0xce0866b8, 0x67f3e241, 0xce008d84,
+ 0x67ea1052, 0xcdf8b63d, 0x67e03cd8, 0xcdf0e0e4,
+ 0x67d667d5, 0xcde90d79, 0x67cc9149, 0xcde13bfd,
+ 0x67c2b934, 0xcdd96c6f, 0x67b8df97, 0xcdd19ed0,
+ 0x67af0472, 0xcdc9d320, 0x67a527c4, 0xcdc20960,
+ 0x679b4990, 0xcdba4190, 0x679169d5, 0xcdb27bb0,
+ 0x67878893, 0xcdaab7c0, 0x677da5cb, 0xcda2f5c2,
+ 0x6773c17d, 0xcd9b35b4, 0x6769dbaa, 0xcd937798,
+ 0x675ff452, 0xcd8bbb6d, 0x67560b76, 0xcd840134,
+ 0x674c2115, 0xcd7c48ee, 0x67423530, 0xcd74929a,
+ 0x673847c8, 0xcd6cde39, 0x672e58dc, 0xcd652bcb,
+ 0x6724686e, 0xcd5d7b50, 0x671a767e, 0xcd55ccca,
+ 0x6710830c, 0xcd4e2037, 0x67068e18, 0xcd467599,
+ 0x66fc97a3, 0xcd3eccef, 0x66f29fad, 0xcd37263a,
+ 0x66e8a637, 0xcd2f817b, 0x66deab41, 0xcd27deb0,
+ 0x66d4aecb, 0xcd203ddc, 0x66cab0d6, 0xcd189efe,
+ 0x66c0b162, 0xcd110216, 0x66b6b070, 0xcd096725,
+ 0x66acadff, 0xcd01ce2b, 0x66a2aa11, 0xccfa3729,
+ 0x6698a4a6, 0xccf2a21d, 0x668e9dbd, 0xcceb0f0a,
+ 0x66849558, 0xcce37def, 0x667a8b77, 0xccdbeecc,
+ 0x6670801a, 0xccd461a2, 0x66667342, 0xccccd671,
+ 0x665c64ef, 0xccc54d3a, 0x66525521, 0xccbdc5fc,
+ 0x664843d9, 0xccb640b8, 0x663e3117, 0xccaebd6e,
+ 0x66341cdb, 0xcca73c1e, 0x662a0727, 0xcc9fbcca,
+ 0x661feffa, 0xcc983f70, 0x6615d754, 0xcc90c412,
+ 0x660bbd37, 0xcc894aaf, 0x6601a1a2, 0xcc81d349,
+ 0x65f78497, 0xcc7a5dde, 0x65ed6614, 0xcc72ea70,
+ 0x65e3461b, 0xcc6b78ff, 0x65d924ac, 0xcc64098b,
+ 0x65cf01c8, 0xcc5c9c14, 0x65c4dd6e, 0xcc55309b,
+ 0x65bab7a0, 0xcc4dc720, 0x65b0905d, 0xcc465fa3,
+ 0x65a667a7, 0xcc3efa25, 0x659c3d7c, 0xcc3796a5,
+ 0x659211df, 0xcc303524, 0x6587e4cf, 0xcc28d5a3,
+ 0x657db64c, 0xcc217822, 0x65738657, 0xcc1a1ca0,
+ 0x656954f1, 0xcc12c31f, 0x655f2219, 0xcc0b6b9e,
+ 0x6554edd1, 0xcc04161e, 0x654ab818, 0xcbfcc29f,
+ 0x654080ef, 0xcbf57121, 0x65364857, 0xcbee21a5,
+ 0x652c0e4f, 0xcbe6d42b, 0x6521d2d8, 0xcbdf88b3,
+ 0x651795f3, 0xcbd83f3d, 0x650d57a0, 0xcbd0f7ca,
+ 0x650317df, 0xcbc9b25a, 0x64f8d6b0, 0xcbc26eee,
+ 0x64ee9415, 0xcbbb2d85, 0x64e4500e, 0xcbb3ee20,
+ 0x64da0a9a, 0xcbacb0bf, 0x64cfc3ba, 0xcba57563,
+ 0x64c57b6f, 0xcb9e3c0b, 0x64bb31ba, 0xcb9704b9,
+ 0x64b0e699, 0xcb8fcf6b, 0x64a69a0f, 0xcb889c23,
+ 0x649c4c1b, 0xcb816ae1, 0x6491fcbe, 0xcb7a3ba5,
+ 0x6487abf7, 0xcb730e70, 0x647d59c8, 0xcb6be341,
+ 0x64730631, 0xcb64ba19, 0x6468b132, 0xcb5d92f8,
+ 0x645e5acc, 0xcb566ddf, 0x645402ff, 0xcb4f4acd,
+ 0x6449a9cc, 0xcb4829c4, 0x643f4f32, 0xcb410ac3,
+ 0x6434f332, 0xcb39edca, 0x642a95ce, 0xcb32d2da,
+ 0x64203704, 0xcb2bb9f4, 0x6415d6d5, 0xcb24a316,
+ 0x640b7543, 0xcb1d8e43, 0x6401124d, 0xcb167b79,
+ 0x63f6adf3, 0xcb0f6aba, 0x63ec4837, 0xcb085c05,
+ 0x63e1e117, 0xcb014f5b, 0x63d77896, 0xcafa44bc,
+ 0x63cd0eb3, 0xcaf33c28, 0x63c2a36f, 0xcaec35a0,
+ 0x63b836ca, 0xcae53123, 0x63adc8c4, 0xcade2eb3,
+ 0x63a3595e, 0xcad72e4f, 0x6398e898, 0xcad02ff8,
+ 0x638e7673, 0xcac933ae, 0x638402ef, 0xcac23971,
+ 0x63798e0d, 0xcabb4141, 0x636f17cc, 0xcab44b1f,
+ 0x6364a02e, 0xcaad570c, 0x635a2733, 0xcaa66506,
+ 0x634facda, 0xca9f750f, 0x63453125, 0xca988727,
+ 0x633ab414, 0xca919b4e, 0x633035a7, 0xca8ab184,
+ 0x6325b5df, 0xca83c9ca, 0x631b34bc, 0xca7ce420,
+ 0x6310b23e, 0xca760086, 0x63062e67, 0xca6f1efc,
+ 0x62fba936, 0xca683f83, 0x62f122ab, 0xca61621b,
+ 0x62e69ac8, 0xca5a86c4, 0x62dc118c, 0xca53ad7e,
+ 0x62d186f8, 0xca4cd64b, 0x62c6fb0c, 0xca460129,
+ 0x62bc6dca, 0xca3f2e19, 0x62b1df30, 0xca385d1d,
+ 0x62a74f40, 0xca318e32, 0x629cbdfa, 0xca2ac15b,
+ 0x62922b5e, 0xca23f698, 0x6287976e, 0xca1d2de7,
+ 0x627d0228, 0xca16674b, 0x62726b8e, 0xca0fa2c3,
+ 0x6267d3a0, 0xca08e04f, 0x625d3a5e, 0xca021fef,
+ 0x62529fca, 0xc9fb61a5, 0x624803e2, 0xc9f4a570,
+ 0x623d66a8, 0xc9edeb50, 0x6232c81c, 0xc9e73346,
+ 0x6228283f, 0xc9e07d51, 0x621d8711, 0xc9d9c973,
+ 0x6212e492, 0xc9d317ab, 0x620840c2, 0xc9cc67fa,
+ 0x61fd9ba3, 0xc9c5ba60, 0x61f2f534, 0xc9bf0edd,
+ 0x61e84d76, 0xc9b86572, 0x61dda46a, 0xc9b1be1e,
+ 0x61d2fa0f, 0xc9ab18e3, 0x61c84e67, 0xc9a475bf,
+ 0x61bda171, 0xc99dd4b4, 0x61b2f32e, 0xc99735c2,
+ 0x61a8439e, 0xc99098e9, 0x619d92c2, 0xc989fe29,
+ 0x6192e09b, 0xc9836582, 0x61882d28, 0xc97ccef5,
+ 0x617d786a, 0xc9763a83, 0x6172c262, 0xc96fa82a,
+ 0x61680b0f, 0xc96917ec, 0x615d5273, 0xc96289c9,
+ 0x6152988d, 0xc95bfdc1, 0x6147dd5f, 0xc95573d4,
+ 0x613d20e8, 0xc94eec03, 0x61326329, 0xc948664d,
+ 0x6127a423, 0xc941e2b4, 0x611ce3d5, 0xc93b6137,
+ 0x61122240, 0xc934e1d6, 0x61075f65, 0xc92e6492,
+ 0x60fc9b44, 0xc927e96b, 0x60f1d5de, 0xc9217062,
+ 0x60e70f32, 0xc91af976, 0x60dc4742, 0xc91484a8,
+ 0x60d17e0d, 0xc90e11f7, 0x60c6b395, 0xc907a166,
+ 0x60bbe7d8, 0xc90132f2, 0x60b11ad9, 0xc8fac69e,
+ 0x60a64c97, 0xc8f45c68, 0x609b7d13, 0xc8edf452,
+ 0x6090ac4d, 0xc8e78e5b, 0x6085da46, 0xc8e12a84,
+ 0x607b06fe, 0xc8dac8cd, 0x60703275, 0xc8d46936,
+ 0x60655cac, 0xc8ce0bc0, 0x605a85a3, 0xc8c7b06b,
+ 0x604fad5b, 0xc8c15736, 0x6044d3d4, 0xc8bb0023,
+ 0x6039f90f, 0xc8b4ab32, 0x602f1d0b, 0xc8ae5862,
+ 0x60243fca, 0xc8a807b4, 0x6019614c, 0xc8a1b928,
+ 0x600e8190, 0xc89b6cbf, 0x6003a099, 0xc8952278,
+ 0x5ff8be65, 0xc88eda54, 0x5feddaf6, 0xc8889454,
+ 0x5fe2f64c, 0xc8825077, 0x5fd81067, 0xc87c0ebd,
+ 0x5fcd2948, 0xc875cf28, 0x5fc240ef, 0xc86f91b7,
+ 0x5fb7575c, 0xc869566a, 0x5fac6c91, 0xc8631d42,
+ 0x5fa1808c, 0xc85ce63e, 0x5f969350, 0xc856b160,
+ 0x5f8ba4dc, 0xc8507ea7, 0x5f80b531, 0xc84a4e14,
+ 0x5f75c44e, 0xc8441fa6, 0x5f6ad235, 0xc83df35f,
+ 0x5f5fdee6, 0xc837c93e, 0x5f54ea62, 0xc831a143,
+ 0x5f49f4a8, 0xc82b7b70, 0x5f3efdb9, 0xc82557c3,
+ 0x5f340596, 0xc81f363d, 0x5f290c3f, 0xc81916df,
+ 0x5f1e11b5, 0xc812f9a9, 0x5f1315f7, 0xc80cde9b,
+ 0x5f081907, 0xc806c5b5, 0x5efd1ae4, 0xc800aef7,
+ 0x5ef21b90, 0xc7fa9a62, 0x5ee71b0a, 0xc7f487f6,
+ 0x5edc1953, 0xc7ee77b3, 0x5ed1166b, 0xc7e8699a,
+ 0x5ec61254, 0xc7e25daa, 0x5ebb0d0d, 0xc7dc53e3,
+ 0x5eb00696, 0xc7d64c47, 0x5ea4fef0, 0xc7d046d6,
+ 0x5e99f61d, 0xc7ca438f, 0x5e8eec1b, 0xc7c44272,
+ 0x5e83e0eb, 0xc7be4381, 0x5e78d48e, 0xc7b846ba,
+ 0x5e6dc705, 0xc7b24c20, 0x5e62b84f, 0xc7ac53b1,
+ 0x5e57a86d, 0xc7a65d6e, 0x5e4c9760, 0xc7a06957,
+ 0x5e418528, 0xc79a776c, 0x5e3671c5, 0xc79487ae,
+ 0x5e2b5d38, 0xc78e9a1d, 0x5e204781, 0xc788aeb9,
+ 0x5e1530a1, 0xc782c582, 0x5e0a1898, 0xc77cde79,
+ 0x5dfeff67, 0xc776f99d, 0x5df3e50d, 0xc77116f0,
+ 0x5de8c98c, 0xc76b3671, 0x5dddace4, 0xc7655820,
+ 0x5dd28f15, 0xc75f7bfe, 0x5dc7701f, 0xc759a20a,
+ 0x5dbc5004, 0xc753ca46, 0x5db12ec3, 0xc74df4b1,
+ 0x5da60c5d, 0xc748214c, 0x5d9ae8d2, 0xc7425016,
+ 0x5d8fc424, 0xc73c8111, 0x5d849e51, 0xc736b43c,
+ 0x5d79775c, 0xc730e997, 0x5d6e4f43, 0xc72b2123,
+ 0x5d632608, 0xc7255ae0, 0x5d57fbaa, 0xc71f96ce,
+ 0x5d4cd02c, 0xc719d4ed, 0x5d41a38c, 0xc714153e,
+ 0x5d3675cb, 0xc70e57c0, 0x5d2b46ea, 0xc7089c75,
+ 0x5d2016e9, 0xc702e35c, 0x5d14e5c9, 0xc6fd2c75,
+ 0x5d09b389, 0xc6f777c1, 0x5cfe802b, 0xc6f1c540,
+ 0x5cf34baf, 0xc6ec14f2, 0x5ce81615, 0xc6e666d7,
+ 0x5cdcdf5e, 0xc6e0baf0, 0x5cd1a78a, 0xc6db113d,
+ 0x5cc66e99, 0xc6d569be, 0x5cbb348d, 0xc6cfc472,
+ 0x5caff965, 0xc6ca215c, 0x5ca4bd21, 0xc6c4807a,
+ 0x5c997fc4, 0xc6bee1cd, 0x5c8e414b, 0xc6b94554,
+ 0x5c8301b9, 0xc6b3ab12, 0x5c77c10e, 0xc6ae1304,
+ 0x5c6c7f4a, 0xc6a87d2d, 0x5c613c6d, 0xc6a2e98b,
+ 0x5c55f878, 0xc69d5820, 0x5c4ab36b, 0xc697c8eb,
+ 0x5c3f6d47, 0xc6923bec, 0x5c34260c, 0xc68cb124,
+ 0x5c28ddbb, 0xc6872894, 0x5c1d9454, 0xc681a23a,
+ 0x5c1249d8, 0xc67c1e18, 0x5c06fe46, 0xc6769c2e,
+ 0x5bfbb1a0, 0xc6711c7b, 0x5bf063e6, 0xc66b9f01,
+ 0x5be51518, 0xc66623be, 0x5bd9c537, 0xc660aab5,
+ 0x5bce7442, 0xc65b33e4, 0x5bc3223c, 0xc655bf4c,
+ 0x5bb7cf23, 0xc6504ced, 0x5bac7af9, 0xc64adcc7,
+ 0x5ba125bd, 0xc6456edb, 0x5b95cf71, 0xc6400329,
+ 0x5b8a7815, 0xc63a99b1, 0x5b7f1fa9, 0xc6353273,
+ 0x5b73c62d, 0xc62fcd6f, 0x5b686ba3, 0xc62a6aa6,
+ 0x5b5d100a, 0xc6250a18, 0x5b51b363, 0xc61fabc4,
+ 0x5b4655ae, 0xc61a4fac, 0x5b3af6ec, 0xc614f5cf,
+ 0x5b2f971e, 0xc60f9e2e, 0x5b243643, 0xc60a48c9,
+ 0x5b18d45c, 0xc604f5a0, 0x5b0d716a, 0xc5ffa4b3,
+ 0x5b020d6c, 0xc5fa5603, 0x5af6a865, 0xc5f5098f,
+ 0x5aeb4253, 0xc5efbf58, 0x5adfdb37, 0xc5ea775e,
+ 0x5ad47312, 0xc5e531a1, 0x5ac909e5, 0xc5dfee22,
+ 0x5abd9faf, 0xc5daace1, 0x5ab23471, 0xc5d56ddd,
+ 0x5aa6c82b, 0xc5d03118, 0x5a9b5adf, 0xc5caf690,
+ 0x5a8fec8c, 0xc5c5be47, 0x5a847d33, 0xc5c0883d,
+ 0x5a790cd4, 0xc5bb5472, 0x5a6d9b70, 0xc5b622e6,
+ 0x5a622907, 0xc5b0f399, 0x5a56b599, 0xc5abc68c,
+ 0x5a4b4128, 0xc5a69bbe, 0x5a3fcbb3, 0xc5a17330,
+ 0x5a34553b, 0xc59c4ce3, 0x5a28ddc0, 0xc59728d5,
+ 0x5a1d6544, 0xc5920708, 0x5a11ebc5, 0xc58ce77c,
+ 0x5a067145, 0xc587ca31, 0x59faf5c5, 0xc582af26,
+ 0x59ef7944, 0xc57d965d, 0x59e3fbc3, 0xc5787fd6,
+ 0x59d87d42, 0xc5736b90, 0x59ccfdc2, 0xc56e598c,
+ 0x59c17d44, 0xc56949ca, 0x59b5fbc8, 0xc5643c4a,
+ 0x59aa794d, 0xc55f310d, 0x599ef5d6, 0xc55a2812,
+ 0x59937161, 0xc555215a, 0x5987ebf0, 0xc5501ce5,
+ 0x597c6584, 0xc54b1ab4, 0x5970de1b, 0xc5461ac6,
+ 0x596555b8, 0xc5411d1b, 0x5959cc5a, 0xc53c21b4,
+ 0x594e4201, 0xc5372891, 0x5942b6af, 0xc53231b3,
+ 0x59372a64, 0xc52d3d18, 0x592b9d1f, 0xc5284ac3,
+ 0x59200ee3, 0xc5235ab2, 0x59147fae, 0xc51e6ce6,
+ 0x5908ef82, 0xc519815f, 0x58fd5e5f, 0xc514981d,
+ 0x58f1cc45, 0xc50fb121, 0x58e63935, 0xc50acc6b,
+ 0x58daa52f, 0xc505e9fb, 0x58cf1034, 0xc50109d0,
+ 0x58c37a44, 0xc4fc2bec, 0x58b7e35f, 0xc4f7504e,
+ 0x58ac4b87, 0xc4f276f7, 0x58a0b2bb, 0xc4ed9fe7,
+ 0x589518fc, 0xc4e8cb1e, 0x58897e4a, 0xc4e3f89c,
+ 0x587de2a7, 0xc4df2862, 0x58724611, 0xc4da5a6f,
+ 0x5866a88a, 0xc4d58ec3, 0x585b0a13, 0xc4d0c560,
+ 0x584f6aab, 0xc4cbfe45, 0x5843ca53, 0xc4c73972,
+ 0x5838290c, 0xc4c276e8, 0x582c86d5, 0xc4bdb6a6,
+ 0x5820e3b0, 0xc4b8f8ad, 0x58153f9d, 0xc4b43cfd,
+ 0x58099a9c, 0xc4af8397, 0x57fdf4ae, 0xc4aacc7a,
+ 0x57f24dd3, 0xc4a617a6, 0x57e6a60c, 0xc4a1651c,
+ 0x57dafd59, 0xc49cb4dd, 0x57cf53bb, 0xc49806e7,
+ 0x57c3a931, 0xc4935b3c, 0x57b7fdbd, 0xc48eb1db,
+ 0x57ac515f, 0xc48a0ac4, 0x57a0a417, 0xc48565f9,
+ 0x5794f5e6, 0xc480c379, 0x578946cc, 0xc47c2344,
+ 0x577d96ca, 0xc477855a, 0x5771e5e0, 0xc472e9bc,
+ 0x5766340f, 0xc46e5069, 0x575a8157, 0xc469b963,
+ 0x574ecdb8, 0xc46524a9, 0x57431933, 0xc460923b,
+ 0x573763c9, 0xc45c0219, 0x572bad7a, 0xc4577444,
+ 0x571ff646, 0xc452e8bc, 0x57143e2d, 0xc44e5f80,
+ 0x57088531, 0xc449d892, 0x56fccb51, 0xc44553f2,
+ 0x56f1108f, 0xc440d19e, 0x56e554ea, 0xc43c5199,
+ 0x56d99864, 0xc437d3e1, 0x56cddafb, 0xc4335877,
+ 0x56c21cb2, 0xc42edf5c, 0x56b65d88, 0xc42a688f,
+ 0x56aa9d7e, 0xc425f410, 0x569edc94, 0xc42181e0,
+ 0x56931acb, 0xc41d11ff, 0x56875823, 0xc418a46d,
+ 0x567b949d, 0xc414392b, 0x566fd039, 0xc40fd037,
+ 0x56640af7, 0xc40b6994, 0x565844d8, 0xc4070540,
+ 0x564c7ddd, 0xc402a33c, 0x5640b606, 0xc3fe4388,
+ 0x5634ed53, 0xc3f9e624, 0x562923c5, 0xc3f58b10,
+ 0x561d595d, 0xc3f1324e, 0x56118e1a, 0xc3ecdbdc,
+ 0x5605c1fd, 0xc3e887bb, 0x55f9f507, 0xc3e435ea,
+ 0x55ee2738, 0xc3dfe66c, 0x55e25890, 0xc3db993e,
+ 0x55d68911, 0xc3d74e62, 0x55cab8ba, 0xc3d305d8,
+ 0x55bee78c, 0xc3cebfa0, 0x55b31587, 0xc3ca7bba,
+ 0x55a742ac, 0xc3c63a26, 0x559b6efb, 0xc3c1fae5,
+ 0x558f9a76, 0xc3bdbdf6, 0x5583c51b, 0xc3b9835a,
+ 0x5577eeec, 0xc3b54b11, 0x556c17e9, 0xc3b1151b,
+ 0x55604013, 0xc3ace178, 0x5554676a, 0xc3a8b028,
+ 0x55488dee, 0xc3a4812c, 0x553cb3a0, 0xc3a05484,
+ 0x5530d881, 0xc39c2a2f, 0x5524fc90, 0xc398022f,
+ 0x55191fcf, 0xc393dc82, 0x550d423d, 0xc38fb92a,
+ 0x550163dc, 0xc38b9827, 0x54f584ac, 0xc3877978,
+ 0x54e9a4ac, 0xc3835d1e, 0x54ddc3de, 0xc37f4319,
+ 0x54d1e242, 0xc37b2b6a, 0x54c5ffd9, 0xc377160f,
+ 0x54ba1ca3, 0xc373030a, 0x54ae38a0, 0xc36ef25b,
+ 0x54a253d1, 0xc36ae401, 0x54966e36, 0xc366d7fd,
+ 0x548a87d1, 0xc362ce50, 0x547ea0a0, 0xc35ec6f8,
+ 0x5472b8a5, 0xc35ac1f7, 0x5466cfe1, 0xc356bf4d,
+ 0x545ae653, 0xc352bef9, 0x544efbfc, 0xc34ec0fc,
+ 0x544310dd, 0xc34ac556, 0x543724f5, 0xc346cc07,
+ 0x542b3846, 0xc342d510, 0x541f4ad1, 0xc33ee070,
+ 0x54135c94, 0xc33aee27, 0x54076d91, 0xc336fe37,
+ 0x53fb7dc9, 0xc333109e, 0x53ef8d3c, 0xc32f255e,
+ 0x53e39be9, 0xc32b3c75, 0x53d7a9d3, 0xc32755e5,
+ 0x53cbb6f8, 0xc32371ae, 0x53bfc35b, 0xc31f8fcf,
+ 0x53b3cefa, 0xc31bb049, 0x53a7d9d7, 0xc317d31c,
+ 0x539be3f2, 0xc313f848, 0x538fed4b, 0xc3101fce,
+ 0x5383f5e3, 0xc30c49ad, 0x5377fdbb, 0xc30875e5,
+ 0x536c04d2, 0xc304a477, 0x53600b2a, 0xc300d563,
+ 0x535410c3, 0xc2fd08a9, 0x5348159d, 0xc2f93e4a,
+ 0x533c19b8, 0xc2f57644, 0x53301d16, 0xc2f1b099,
+ 0x53241fb6, 0xc2eded49, 0x5318219a, 0xc2ea2c53,
+ 0x530c22c1, 0xc2e66db8, 0x5300232c, 0xc2e2b178,
+ 0x52f422db, 0xc2def794, 0x52e821cf, 0xc2db400a,
+ 0x52dc2009, 0xc2d78add, 0x52d01d89, 0xc2d3d80a,
+ 0x52c41a4f, 0xc2d02794, 0x52b8165b, 0xc2cc7979,
+ 0x52ac11af, 0xc2c8cdbb, 0x52a00c4b, 0xc2c52459,
+ 0x5294062f, 0xc2c17d52, 0x5287ff5b, 0xc2bdd8a9,
+ 0x527bf7d1, 0xc2ba365c, 0x526fef90, 0xc2b6966c,
+ 0x5263e699, 0xc2b2f8d8, 0x5257dced, 0xc2af5da2,
+ 0x524bd28c, 0xc2abc4c9, 0x523fc776, 0xc2a82e4d,
+ 0x5233bbac, 0xc2a49a2e, 0x5227af2e, 0xc2a1086d,
+ 0x521ba1fd, 0xc29d790a, 0x520f941a, 0xc299ec05,
+ 0x52038584, 0xc296615d, 0x51f7763c, 0xc292d914,
+ 0x51eb6643, 0xc28f5329, 0x51df5599, 0xc28bcf9c,
+ 0x51d3443f, 0xc2884e6e, 0x51c73235, 0xc284cf9f,
+ 0x51bb1f7c, 0xc281532e, 0x51af0c13, 0xc27dd91c,
+ 0x51a2f7fc, 0xc27a616a, 0x5196e337, 0xc276ec16,
+ 0x518acdc4, 0xc2737922, 0x517eb7a4, 0xc270088e,
+ 0x5172a0d7, 0xc26c9a58, 0x5166895f, 0xc2692e83,
+ 0x515a713a, 0xc265c50e, 0x514e586a, 0xc2625df8,
+ 0x51423ef0, 0xc25ef943, 0x513624cb, 0xc25b96ee,
+ 0x512a09fc, 0xc25836f9, 0x511dee84, 0xc254d965,
+ 0x5111d263, 0xc2517e31, 0x5105b599, 0xc24e255e,
+ 0x50f99827, 0xc24aceed, 0x50ed7a0e, 0xc2477adc,
+ 0x50e15b4e, 0xc244292c, 0x50d53be7, 0xc240d9de,
+ 0x50c91bda, 0xc23d8cf1, 0x50bcfb28, 0xc23a4265,
+ 0x50b0d9d0, 0xc236fa3b, 0x50a4b7d3, 0xc233b473,
+ 0x50989532, 0xc230710d, 0x508c71ee, 0xc22d3009,
+ 0x50804e06, 0xc229f167, 0x5074297b, 0xc226b528,
+ 0x5068044e, 0xc2237b4b, 0x505bde7f, 0xc22043d0,
+ 0x504fb80e, 0xc21d0eb8, 0x504390fd, 0xc219dc03,
+ 0x5037694b, 0xc216abb1, 0x502b40f8, 0xc2137dc2,
+ 0x501f1807, 0xc2105236, 0x5012ee76, 0xc20d290d,
+ 0x5006c446, 0xc20a0248, 0x4ffa9979, 0xc206dde6,
+ 0x4fee6e0d, 0xc203bbe8, 0x4fe24205, 0xc2009c4e,
+ 0x4fd6155f, 0xc1fd7f17, 0x4fc9e81e, 0xc1fa6445,
+ 0x4fbdba40, 0xc1f74bd6, 0x4fb18bc8, 0xc1f435cc,
+ 0x4fa55cb4, 0xc1f12227, 0x4f992d06, 0xc1ee10e5,
+ 0x4f8cfcbe, 0xc1eb0209, 0x4f80cbdc, 0xc1e7f591,
+ 0x4f749a61, 0xc1e4eb7e, 0x4f68684e, 0xc1e1e3d0,
+ 0x4f5c35a3, 0xc1dede87, 0x4f500260, 0xc1dbdba3,
+ 0x4f43ce86, 0xc1d8db25, 0x4f379a16, 0xc1d5dd0c,
+ 0x4f2b650f, 0xc1d2e158, 0x4f1f2f73, 0xc1cfe80a,
+ 0x4f12f941, 0xc1ccf122, 0x4f06c27a, 0xc1c9fca0,
+ 0x4efa8b20, 0xc1c70a84, 0x4eee5331, 0xc1c41ace,
+ 0x4ee21aaf, 0xc1c12d7e, 0x4ed5e19a, 0xc1be4294,
+ 0x4ec9a7f3, 0xc1bb5a11, 0x4ebd6db9, 0xc1b873f5,
+ 0x4eb132ef, 0xc1b5903f, 0x4ea4f793, 0xc1b2aef0,
+ 0x4e98bba7, 0xc1afd007, 0x4e8c7f2a, 0xc1acf386,
+ 0x4e80421e, 0xc1aa196c, 0x4e740483, 0xc1a741b9,
+ 0x4e67c65a, 0xc1a46c6e, 0x4e5b87a2, 0xc1a1998a,
+ 0x4e4f485c, 0xc19ec90d, 0x4e430889, 0xc19bfaf9,
+ 0x4e36c82a, 0xc1992f4c, 0x4e2a873e, 0xc1966606,
+ 0x4e1e45c6, 0xc1939f29, 0x4e1203c3, 0xc190dab4,
+ 0x4e05c135, 0xc18e18a7, 0x4df97e1d, 0xc18b5903,
+ 0x4ded3a7b, 0xc1889bc6, 0x4de0f64f, 0xc185e0f3,
+ 0x4dd4b19a, 0xc1832888, 0x4dc86c5d, 0xc1807285,
+ 0x4dbc2698, 0xc17dbeec, 0x4dafe04b, 0xc17b0dbb,
+ 0x4da39978, 0xc1785ef4, 0x4d97521d, 0xc175b296,
+ 0x4d8b0a3d, 0xc17308a1, 0x4d7ec1d6, 0xc1706115,
+ 0x4d7278eb, 0xc16dbbf3, 0x4d662f7b, 0xc16b193a,
+ 0x4d59e586, 0xc16878eb, 0x4d4d9b0e, 0xc165db05,
+ 0x4d415013, 0xc1633f8a, 0x4d350495, 0xc160a678,
+ 0x4d28b894, 0xc15e0fd1, 0x4d1c6c11, 0xc15b7b94,
+ 0x4d101f0e, 0xc158e9c1, 0x4d03d189, 0xc1565a58,
+ 0x4cf78383, 0xc153cd5a, 0x4ceb34fe, 0xc15142c6,
+ 0x4cdee5f9, 0xc14eba9d, 0x4cd29676, 0xc14c34df,
+ 0x4cc64673, 0xc149b18b, 0x4cb9f5f3, 0xc14730a3,
+ 0x4cada4f5, 0xc144b225, 0x4ca1537a, 0xc1423613,
+ 0x4c950182, 0xc13fbc6c, 0x4c88af0e, 0xc13d4530,
+ 0x4c7c5c1e, 0xc13ad060, 0x4c7008b3, 0xc1385dfb,
+ 0x4c63b4ce, 0xc135ee02, 0x4c57606e, 0xc1338075,
+ 0x4c4b0b94, 0xc1311553, 0x4c3eb641, 0xc12eac9d,
+ 0x4c326075, 0xc12c4653, 0x4c260a31, 0xc129e276,
+ 0x4c19b374, 0xc1278104, 0x4c0d5c41, 0xc12521ff,
+ 0x4c010496, 0xc122c566, 0x4bf4ac75, 0xc1206b39,
+ 0x4be853de, 0xc11e1379, 0x4bdbfad1, 0xc11bbe26,
+ 0x4bcfa150, 0xc1196b3f, 0x4bc34759, 0xc1171ac6,
+ 0x4bb6ecef, 0xc114ccb9, 0x4baa9211, 0xc1128119,
+ 0x4b9e36c0, 0xc11037e6, 0x4b91dafc, 0xc10df120,
+ 0x4b857ec7, 0xc10bacc8, 0x4b79221f, 0xc1096add,
+ 0x4b6cc506, 0xc1072b5f, 0x4b60677c, 0xc104ee4f,
+ 0x4b540982, 0xc102b3ac, 0x4b47ab19, 0xc1007b77,
+ 0x4b3b4c40, 0xc0fe45b0, 0x4b2eecf8, 0xc0fc1257,
+ 0x4b228d42, 0xc0f9e16b, 0x4b162d1d, 0xc0f7b2ee,
+ 0x4b09cc8c, 0xc0f586df, 0x4afd6b8d, 0xc0f35d3e,
+ 0x4af10a22, 0xc0f1360b, 0x4ae4a84b, 0xc0ef1147,
+ 0x4ad84609, 0xc0eceef1, 0x4acbe35b, 0xc0eacf09,
+ 0x4abf8043, 0xc0e8b190, 0x4ab31cc1, 0xc0e69686,
+ 0x4aa6b8d5, 0xc0e47deb, 0x4a9a5480, 0xc0e267be,
+ 0x4a8defc3, 0xc0e05401, 0x4a818a9d, 0xc0de42b2,
+ 0x4a752510, 0xc0dc33d2, 0x4a68bf1b, 0xc0da2762,
+ 0x4a5c58c0, 0xc0d81d61, 0x4a4ff1fe, 0xc0d615cf,
+ 0x4a438ad7, 0xc0d410ad, 0x4a37234a, 0xc0d20dfa,
+ 0x4a2abb59, 0xc0d00db6, 0x4a1e5303, 0xc0ce0fe3,
+ 0x4a11ea49, 0xc0cc147f, 0x4a05812c, 0xc0ca1b8a,
+ 0x49f917ac, 0xc0c82506, 0x49ecadc9, 0xc0c630f2,
+ 0x49e04385, 0xc0c43f4d, 0x49d3d8df, 0xc0c25019,
+ 0x49c76dd8, 0xc0c06355, 0x49bb0271, 0xc0be7901,
+ 0x49ae96aa, 0xc0bc911d, 0x49a22a83, 0xc0baabaa,
+ 0x4995bdfd, 0xc0b8c8a7, 0x49895118, 0xc0b6e815,
+ 0x497ce3d5, 0xc0b509f3, 0x49707635, 0xc0b32e42,
+ 0x49640837, 0xc0b15502, 0x495799dd, 0xc0af7e33,
+ 0x494b2b27, 0xc0ada9d4, 0x493ebc14, 0xc0abd7e6,
+ 0x49324ca7, 0xc0aa086a, 0x4925dcdf, 0xc0a83b5e,
+ 0x49196cbc, 0xc0a670c4, 0x490cfc40, 0xc0a4a89b,
+ 0x49008b6a, 0xc0a2e2e3, 0x48f41a3c, 0xc0a11f9d,
+ 0x48e7a8b5, 0xc09f5ec8, 0x48db36d6, 0xc09da065,
+ 0x48cec4a0, 0xc09be473, 0x48c25213, 0xc09a2af3,
+ 0x48b5df30, 0xc09873e4, 0x48a96bf6, 0xc096bf48,
+ 0x489cf867, 0xc0950d1d, 0x48908483, 0xc0935d64,
+ 0x4884104b, 0xc091b01d, 0x48779bbe, 0xc0900548,
+ 0x486b26de, 0xc08e5ce5, 0x485eb1ab, 0xc08cb6f5,
+ 0x48523c25, 0xc08b1376, 0x4845c64d, 0xc089726a,
+ 0x48395024, 0xc087d3d0, 0x482cd9a9, 0xc08637a9,
+ 0x482062de, 0xc0849df4, 0x4813ebc2, 0xc08306b2,
+ 0x48077457, 0xc08171e2, 0x47fafc9c, 0xc07fdf85,
+ 0x47ee8493, 0xc07e4f9b, 0x47e20c3b, 0xc07cc223,
+ 0x47d59396, 0xc07b371e, 0x47c91aa3, 0xc079ae8c,
+ 0x47bca163, 0xc078286e, 0x47b027d7, 0xc076a4c2,
+ 0x47a3adff, 0xc0752389, 0x479733dc, 0xc073a4c3,
+ 0x478ab96e, 0xc0722871, 0x477e3eb5, 0xc070ae92,
+ 0x4771c3b3, 0xc06f3726, 0x47654867, 0xc06dc22e,
+ 0x4758ccd2, 0xc06c4fa8, 0x474c50f4, 0xc06adf97,
+ 0x473fd4cf, 0xc06971f9, 0x47335862, 0xc06806ce,
+ 0x4726dbae, 0xc0669e18, 0x471a5eb3, 0xc06537d4,
+ 0x470de172, 0xc063d405, 0x470163eb, 0xc06272aa,
+ 0x46f4e620, 0xc06113c2, 0x46e86810, 0xc05fb74e,
+ 0x46dbe9bb, 0xc05e5d4e, 0x46cf6b23, 0xc05d05c3,
+ 0x46c2ec48, 0xc05bb0ab, 0x46b66d29, 0xc05a5e07,
+ 0x46a9edc9, 0xc0590dd8, 0x469d6e27, 0xc057c01d,
+ 0x4690ee44, 0xc05674d6, 0x46846e1f, 0xc0552c03,
+ 0x4677edbb, 0xc053e5a5, 0x466b6d16, 0xc052a1bb,
+ 0x465eec33, 0xc0516045, 0x46526b10, 0xc0502145,
+ 0x4645e9af, 0xc04ee4b8, 0x46396810, 0xc04daaa1,
+ 0x462ce634, 0xc04c72fe, 0x4620641a, 0xc04b3dcf,
+ 0x4613e1c5, 0xc04a0b16, 0x46075f33, 0xc048dad1,
+ 0x45fadc66, 0xc047ad01, 0x45ee595d, 0xc04681a6,
+ 0x45e1d61b, 0xc04558c0, 0x45d5529e, 0xc044324f,
+ 0x45c8cee7, 0xc0430e53, 0x45bc4af8, 0xc041eccc,
+ 0x45afc6d0, 0xc040cdba, 0x45a3426f, 0xc03fb11d,
+ 0x4596bdd7, 0xc03e96f6, 0x458a3908, 0xc03d7f44,
+ 0x457db403, 0xc03c6a07, 0x45712ec7, 0xc03b573f,
+ 0x4564a955, 0xc03a46ed, 0x455823ae, 0xc0393910,
+ 0x454b9dd3, 0xc0382da8, 0x453f17c3, 0xc03724b6,
+ 0x4532917f, 0xc0361e3a, 0x45260b08, 0xc0351a33,
+ 0x4519845e, 0xc03418a2, 0x450cfd82, 0xc0331986,
+ 0x45007674, 0xc0321ce0, 0x44f3ef35, 0xc03122b0,
+ 0x44e767c5, 0xc0302af5, 0x44dae024, 0xc02f35b1,
+ 0x44ce5854, 0xc02e42e2, 0x44c1d054, 0xc02d5289,
+ 0x44b54825, 0xc02c64a6, 0x44a8bfc7, 0xc02b7939,
+ 0x449c373c, 0xc02a9042, 0x448fae83, 0xc029a9c1,
+ 0x4483259d, 0xc028c5b6, 0x44769c8b, 0xc027e421,
+ 0x446a134c, 0xc0270502, 0x445d89e2, 0xc0262859,
+ 0x4451004d, 0xc0254e27, 0x4444768d, 0xc024766a,
+ 0x4437eca4, 0xc023a124, 0x442b6290, 0xc022ce54,
+ 0x441ed854, 0xc021fdfb, 0x44124dee, 0xc0213018,
+ 0x4405c361, 0xc02064ab, 0x43f938ac, 0xc01f9bb5,
+ 0x43ecadcf, 0xc01ed535, 0x43e022cc, 0xc01e112b,
+ 0x43d397a3, 0xc01d4f99, 0x43c70c54, 0xc01c907c,
+ 0x43ba80df, 0xc01bd3d6, 0x43adf546, 0xc01b19a7,
+ 0x43a16988, 0xc01a61ee, 0x4394dda7, 0xc019acac,
+ 0x438851a2, 0xc018f9e1, 0x437bc57b, 0xc018498c,
+ 0x436f3931, 0xc0179bae, 0x4362acc5, 0xc016f047,
+ 0x43562038, 0xc0164757, 0x43499389, 0xc015a0dd,
+ 0x433d06bb, 0xc014fcda, 0x433079cc, 0xc0145b4e,
+ 0x4323ecbe, 0xc013bc39, 0x43175f91, 0xc0131f9b,
+ 0x430ad245, 0xc0128574, 0x42fe44dc, 0xc011edc3,
+ 0x42f1b755, 0xc011588a, 0x42e529b0, 0xc010c5c7,
+ 0x42d89bf0, 0xc010357c, 0x42cc0e13, 0xc00fa7a8,
+ 0x42bf801a, 0xc00f1c4a, 0x42b2f207, 0xc00e9364,
+ 0x42a663d8, 0xc00e0cf5, 0x4299d590, 0xc00d88fd,
+ 0x428d472e, 0xc00d077c, 0x4280b8b3, 0xc00c8872,
+ 0x42742a1f, 0xc00c0be0, 0x42679b73, 0xc00b91c4,
+ 0x425b0caf, 0xc00b1a20, 0x424e7dd4, 0xc00aa4f3,
+ 0x4241eee2, 0xc00a323d, 0x42355fd9, 0xc009c1ff,
+ 0x4228d0bb, 0xc0095438, 0x421c4188, 0xc008e8e8,
+ 0x420fb240, 0xc008800f, 0x420322e3, 0xc00819ae,
+ 0x41f69373, 0xc007b5c4, 0x41ea03ef, 0xc0075452,
+ 0x41dd7459, 0xc006f556, 0x41d0e4b0, 0xc00698d3,
+ 0x41c454f5, 0xc0063ec6, 0x41b7c528, 0xc005e731,
+ 0x41ab354b, 0xc0059214, 0x419ea55d, 0xc0053f6e,
+ 0x4192155f, 0xc004ef3f, 0x41858552, 0xc004a188,
+ 0x4178f536, 0xc0045648, 0x416c650b, 0xc0040d80,
+ 0x415fd4d2, 0xc003c72f, 0x4153448c, 0xc0038356,
+ 0x4146b438, 0xc00341f4, 0x413a23d8, 0xc003030a,
+ 0x412d936c, 0xc002c697, 0x412102f4, 0xc0028c9c,
+ 0x41147271, 0xc0025519, 0x4107e1e3, 0xc002200d,
+ 0x40fb514b, 0xc001ed78, 0x40eec0aa, 0xc001bd5c,
+ 0x40e22fff, 0xc0018fb6, 0x40d59f4c, 0xc0016489,
+ 0x40c90e90, 0xc0013bd3, 0x40bc7dcc, 0xc0011594,
+ 0x40afed02, 0xc000f1ce, 0x40a35c30, 0xc000d07e,
+ 0x4096cb58, 0xc000b1a7, 0x408a3a7b, 0xc0009547,
+ 0x407da998, 0xc0007b5f, 0x407118b0, 0xc00063ee,
+ 0x406487c4, 0xc0004ef5, 0x4057f6d4, 0xc0003c74,
+ 0x404b65e1, 0xc0002c6a, 0x403ed4ea, 0xc0001ed8,
+ 0x403243f1, 0xc00013bd, 0x4025b2f7, 0xc0000b1a,
+ 0x401921fb, 0xc00004ef, 0x400c90fe, 0xc000013c,
};
/**
* @brief Initialization function for the Q31 RFFT/RIFFT.
* @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure.
-* @param[in, out] *S_CFFT points to an instance of the Q31 CFFT/CIFFT structure.
* @param[in] fftLenReal length of the FFT.
* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
@@ -4195,85 +4196,90 @@
*
* \par Description:
* \par
-* The parameter <code>fftLenReal</code> Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.
+* The parameter <code>fftLenReal</code> Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192.
* \par
* The parameter <code>ifftFlagR</code> controls whether a forward or inverse transform is computed.
* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
* \par
* The parameter <code>bitReverseFlag</code> controls whether output is in normal order or bit reversed order.
* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
-* \par
+* \par 7
* This function also initializes Twiddle factor table.
*/
arm_status arm_rfft_init_q31(
- arm_rfft_instance_q31 * S,
- arm_cfft_radix4_instance_q31 * S_CFFT,
- uint32_t fftLenReal,
- uint32_t ifftFlagR,
- uint32_t bitReverseFlag)
+ arm_rfft_instance_q31 * S,
+ uint32_t fftLenReal,
+ uint32_t ifftFlagR,
+ uint32_t bitReverseFlag)
{
- /* Initialise the default arm status */
- arm_status status = ARM_MATH_SUCCESS;
+ /* Initialise the default arm status */
+ arm_status status = ARM_MATH_SUCCESS;
- /* Initialize the Real FFT length */
- S->fftLenReal = (uint16_t) fftLenReal;
+ /* Initialize the Real FFT length */
+ S->fftLenReal = (uint16_t) fftLenReal;
- /* Initialize the Complex FFT length */
- S->fftLenBy2 = (uint16_t) fftLenReal / 2u;
+ /* Initialize the Twiddle coefficientA pointer */
+ S->pTwiddleAReal = (q31_t *) realCoefAQ31;
- /* Initialize the Twiddle coefficientA pointer */
- S->pTwiddleAReal = (q31_t *) realCoefAQ31;
+ /* Initialize the Twiddle coefficientB pointer */
+ S->pTwiddleBReal = (q31_t *) realCoefBQ31;
- /* Initialize the Twiddle coefficientB pointer */
- S->pTwiddleBReal = (q31_t *) realCoefBQ31;
+ /* Initialize the Flag for selection of RFFT or RIFFT */
+ S->ifftFlagR = (uint8_t) ifftFlagR;
- /* Initialize the Flag for selection of RFFT or RIFFT */
- S->ifftFlagR = (uint8_t) ifftFlagR;
-
- /* Initialize the Flag for calculation Bit reversal or not */
- S->bitReverseFlagR = (uint8_t) bitReverseFlag;
+ /* Initialize the Flag for calculation Bit reversal or not */
+ S->bitReverseFlagR = (uint8_t) bitReverseFlag;
- /* Initialization of coef modifier depending on the FFT length */
- switch (S->fftLenReal)
- {
- case 8192:
- S->twidCoefRModifier = 1u;
- break;
- case 2048u:
- S->twidCoefRModifier = 4u;
- break;
- case 512u:
- S->twidCoefRModifier = 16u;
- break;
- case 128u:
- S->twidCoefRModifier = 64u;
- break;
- default:
- /* Reporting argument error if rfftSize is not valid value */
- status = ARM_MATH_ARGUMENT_ERROR;
- break;
- }
+ /* Initialization of coef modifier depending on the FFT length */
+ switch (S->fftLenReal)
+ {
+ case 8192u:
+ S->twidCoefRModifier = 1u;
+ S->pCfft = &arm_cfft_sR_q31_len4096;
+ break;
+ case 4096u:
+ S->twidCoefRModifier = 2u;
+ S->pCfft = &arm_cfft_sR_q31_len2048;
+ break;
+ case 2048u:
+ S->twidCoefRModifier = 4u;
+ S->pCfft = &arm_cfft_sR_q31_len1024;
+ break;
+ case 1024u:
+ S->twidCoefRModifier = 8u;
+ S->pCfft = &arm_cfft_sR_q31_len512;
+ break;
+ case 512u:
+ S->twidCoefRModifier = 16u;
+ S->pCfft = &arm_cfft_sR_q31_len256;
+ break;
+ case 256u:
+ S->twidCoefRModifier = 32u;
+ S->pCfft = &arm_cfft_sR_q31_len128;
+ break;
+ case 128u:
+ S->twidCoefRModifier = 64u;
+ S->pCfft = &arm_cfft_sR_q31_len64;
+ break;
+ case 64u:
+ S->twidCoefRModifier = 128u;
+ S->pCfft = &arm_cfft_sR_q31_len32;
+ break;
+ case 32u:
+ S->twidCoefRModifier = 256u;
+ S->pCfft = &arm_cfft_sR_q31_len16;
+ break;
+ default:
+ /* Reporting argument error if rfftSize is not valid value */
+ status = ARM_MATH_ARGUMENT_ERROR;
+ break;
+ }
- /* Init Complex FFT Instance */
- S->pCfft = S_CFFT;
-
- if(S->ifftFlagR)
- {
- /* Initializes the CIFFT Module for fftLenreal/2 length */
- arm_cfft_radix4_init_q31(S->pCfft, (uint16_t) S->fftLenBy2, 1u, 1u);
- }
- else
- {
- /* Initializes the CFFT Module for fftLenreal/2 length */
- arm_cfft_radix4_init_q31(S->pCfft, (uint16_t) S->fftLenBy2, 0u, 1u);
- }
-
- /* return the status of RFFT Init function */
- return (status);
-
+ /* return the status of RFFT Init function */
+ return (status);
}
- /**
- * @} end of RealFFT group
- */
+/**
+* @} end of RealFFT group
+*/
--- a/cmsis_dsp/TransformFunctions/arm_rfft_q15.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_q15.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_rfft_q15.c
@@ -41,442 +41,399 @@
#include "arm_math.h"
-void arm_radix4_butterfly_q15(
- q15_t * pSrc16,
- uint32_t fftLen,
- q15_t * pCoef16,
- uint32_t twidCoefModifier);
-
-void arm_radix4_butterfly_inverse_q15(
- q15_t * pSrc16,
- uint32_t fftLen,
- q15_t * pCoef16,
- uint32_t twidCoefModifier);
-
-void arm_bitreversal_q15(
- q15_t * pSrc,
- uint32_t fftLen,
- uint16_t bitRevFactor,
- uint16_t * pBitRevTab);
-
- /*--------------------------------------------------------------------
+/*--------------------------------------------------------------------
* Internal functions prototypes
--------------------------------------------------------------------*/
void arm_split_rfft_q15(
- q15_t * pSrc,
- uint32_t fftLen,
- q15_t * pATable,
- q15_t * pBTable,
- q15_t * pDst,
- uint32_t modifier);
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pATable,
+ q15_t * pBTable,
+ q15_t * pDst,
+ uint32_t modifier);
void arm_split_rifft_q15(
- q15_t * pSrc,
- uint32_t fftLen,
- q15_t * pATable,
- q15_t * pBTable,
- q15_t * pDst,
- uint32_t modifier);
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pATable,
+ q15_t * pBTable,
+ q15_t * pDst,
+ uint32_t modifier);
/**
- * @addtogroup RealFFT
- * @{
- */
+* @addtogroup RealFFT
+* @{
+*/
/**
- * @brief Processing function for the Q15 RFFT/RIFFT.
- * @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure.
- * @param[in] *pSrc points to the input buffer.
- * @param[out] *pDst points to the output buffer.
- * @return none.
- *
- * \par Input an output formats:
- * \par
- * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.
- * Hence the output format is different for different RFFT sizes.
- * The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
- * \par
- * \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT"
- * \par
- * \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT"
- */
+* @brief Processing function for the Q15 RFFT/RIFFT.
+* @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure.
+* @param[in] *pSrc points to the input buffer.
+* @param[out] *pDst points to the output buffer.
+* @return none.
+*
+* \par Input an output formats:
+* \par
+* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.
+* Hence the output format is different for different RFFT sizes.
+* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
+* \par
+* \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT"
+* \par
+* \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT"
+*/
void arm_rfft_q15(
- const arm_rfft_instance_q15 * S,
- q15_t * pSrc,
- q15_t * pDst)
+ const arm_rfft_instance_q15 * S,
+ q15_t * pSrc,
+ q15_t * pDst)
{
- const arm_cfft_radix4_instance_q15 *S_CFFT = S->pCfft;
+ const arm_cfft_instance_q15 *S_CFFT = S->pCfft;
+ uint32_t i;
+ uint32_t L2 = S->fftLenReal >> 1;
- /* Calculation of RIFFT of input */
- if(S->ifftFlagR == 1u)
- {
- /* Real IFFT core process */
- arm_split_rifft_q15(pSrc, S->fftLenBy2, S->pTwiddleAReal,
- S->pTwiddleBReal, pDst, S->twidCoefRModifier);
-
- /* Complex readix-4 IFFT process */
- arm_radix4_butterfly_inverse_q15(pDst, S_CFFT->fftLen,
- S_CFFT->pTwiddle,
- S_CFFT->twidCoefModifier);
-
- /* Bit reversal process */
- if(S->bitReverseFlagR == 1u)
+ /* Calculation of RIFFT of input */
+ if(S->ifftFlagR == 1u)
{
- arm_bitreversal_q15(pDst, S_CFFT->fftLen,
- S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+ /* Real IFFT core process */
+ arm_split_rifft_q15(pSrc, L2, S->pTwiddleAReal,
+ S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+
+ /* Complex IFFT process */
+ arm_cfft_q15(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);
+
+ for(i=0;i<S->fftLenReal;i++)
+ {
+ pDst[i] = pDst[i] << 1;
+ }
}
- }
- else
- {
- /* Calculation of RFFT of input */
-
- /* Complex readix-4 FFT process */
- arm_radix4_butterfly_q15(pSrc, S_CFFT->fftLen,
- S_CFFT->pTwiddle, S_CFFT->twidCoefModifier);
+ else
+ {
+ /* Calculation of RFFT of input */
+
+ /* Complex FFT process */
+ arm_cfft_q15(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);
- /* Bit reversal process */
- if(S->bitReverseFlagR == 1u)
- {
- arm_bitreversal_q15(pSrc, S_CFFT->fftLen,
- S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+ /* Real FFT core process */
+ arm_split_rfft_q15(pSrc, L2, S->pTwiddleAReal,
+ S->pTwiddleBReal, pDst, S->twidCoefRModifier);
}
-
- arm_split_rfft_q15(pSrc, S->fftLenBy2, S->pTwiddleAReal,
- S->pTwiddleBReal, pDst, S->twidCoefRModifier);
- }
-
}
- /**
- * @} end of RealFFT group
- */
+/**
+* @} end of RealFFT group
+*/
/**
- * @brief Core Real FFT process
- * @param *pSrc points to the input buffer.
- * @param fftLen length of FFT.
- * @param *pATable points to the A twiddle Coef buffer.
- * @param *pBTable points to the B twiddle Coef buffer.
- * @param *pDst points to the output buffer.
- * @param modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
- * @return none.
- * The function implements a Real FFT
- */
+* @brief Core Real FFT process
+* @param *pSrc points to the input buffer.
+* @param fftLen length of FFT.
+* @param *pATable points to the A twiddle Coef buffer.
+* @param *pBTable points to the B twiddle Coef buffer.
+* @param *pDst points to the output buffer.
+* @param modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+* @return none.
+* The function implements a Real FFT
+*/
void arm_split_rfft_q15(
- q15_t * pSrc,
- uint32_t fftLen,
- q15_t * pATable,
- q15_t * pBTable,
- q15_t * pDst,
- uint32_t modifier)
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pATable,
+ q15_t * pBTable,
+ q15_t * pDst,
+ uint32_t modifier)
{
- uint32_t i; /* Loop Counter */
- q31_t outR, outI; /* Temporary variables for output */
- q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
- q15_t *pSrc1, *pSrc2;
-
+ uint32_t i; /* Loop Counter */
+ q31_t outR, outI; /* Temporary variables for output */
+ q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
+ q15_t *pSrc1, *pSrc2;
+#ifndef ARM_MATH_CM0_FAMILY
+ q15_t *pD1, *pD2;
+#endif
-// pSrc[2u * fftLen] = pSrc[0];
-// pSrc[(2u * fftLen) + 1u] = pSrc[1];
+ // pSrc[2u * fftLen] = pSrc[0];
+ // pSrc[(2u * fftLen) + 1u] = pSrc[1];
- pCoefA = &pATable[modifier * 2u];
- pCoefB = &pBTable[modifier * 2u];
+ pCoefA = &pATable[modifier * 2u];
+ pCoefB = &pBTable[modifier * 2u];
- pSrc1 = &pSrc[2];
- pSrc2 = &pSrc[(2u * fftLen) - 2u];
+ pSrc1 = &pSrc[2];
+ pSrc2 = &pSrc[(2u * fftLen) - 2u];
#ifndef ARM_MATH_CM0_FAMILY
- /* Run the below code for Cortex-M4 and Cortex-M3 */
-
- i = 1u;
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+ i = 1u;
+ pD1 = pDst + 2;
+ pD2 = pDst + (4u * fftLen) - 2;
- while(i < fftLen)
- {
- /*
- outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
- + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
- pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- */
+ for(i = fftLen - 1; i > 0; i--)
+ {
+ /*
+ outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
+ + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
+ pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ */
- /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
+ /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
#ifndef ARM_MATH_BIG_ENDIAN
- /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */
- outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA));
+ /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */
+ outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA));
#else
- /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */
- outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)));
+ /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */
+ outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)));
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
- /* pSrc[2 * n - 2 * i] * pBTable[2 * i] +
- pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
- outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 15u;
+ /* pSrc[2 * n - 2 * i] * pBTable[2 * i] +
+ pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
+ outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 16u;
- /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+ /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
#ifndef ARM_MATH_BIG_ENDIAN
- outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
+ outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
#else
- outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--);
+ outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--);
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
- /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */
- outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI);
+ /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */
+ outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI);
- /* write output */
- pDst[2u * i] = (q15_t) outR;
- pDst[(2u * i) + 1u] = outI >> 15u;
-
- /* write complex conjugate output */
- pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR;
- pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 15u);
+ /* write output */
+ *pD1++ = (q15_t) outR;
+ *pD1++ = outI >> 16u;
- /* update coefficient pointer */
- pCoefB = pCoefB + (2u * modifier);
- pCoefA = pCoefA + (2u * modifier);
-
- i++;
+ /* write complex conjugate output */
+ pD2[0] = (q15_t) outR;
+ pD2[1] = -(outI >> 16u);
+ pD2 -= 2;
- }
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (2u * modifier);
+ pCoefA = pCoefA + (2u * modifier);
+ }
- pDst[2u * fftLen] = pSrc[0] - pSrc[1];
- pDst[(2u * fftLen) + 1u] = 0;
+ pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+ pDst[(2u * fftLen) + 1u] = 0;
- pDst[0] = pSrc[0] + pSrc[1];
- pDst[1] = 0;
-
+ pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+ pDst[1] = 0;
#else
- /* Run the below code for Cortex-M0 */
-
- i = 1u;
+ /* Run the below code for Cortex-M0 */
+ i = 1u;
- while(i < fftLen)
- {
- /*
- outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
- + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
- pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- */
+ while(i < fftLen)
+ {
+ /*
+ outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
+ + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
+ pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ */
- outR = *pSrc1 * *pCoefA;
- outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1));
- outR = outR + (*pSrc2 * *pCoefB);
- outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 15;
+ outR = *pSrc1 * *pCoefA;
+ outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1));
+ outR = outR + (*pSrc2 * *pCoefB);
+ outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 16;
- /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
- */
+ /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
+ */
- outI = *pSrc2 * *(pCoefB + 1);
- outI = outI - (*(pSrc2 + 1) * *pCoefB);
- outI = outI + (*(pSrc1 + 1) * *pCoefA);
- outI = outI + (*pSrc1 * *(pCoefA + 1));
+ outI = *pSrc2 * *(pCoefB + 1);
+ outI = outI - (*(pSrc2 + 1) * *pCoefB);
+ outI = outI + (*(pSrc1 + 1) * *pCoefA);
+ outI = outI + (*pSrc1 * *(pCoefA + 1));
- /* update input pointers */
- pSrc1 += 2u;
- pSrc2 -= 2u;
-
- /* write output */
- pDst[2u * i] = (q15_t) outR;
- pDst[(2u * i) + 1u] = outI >> 15u;
+ /* update input pointers */
+ pSrc1 += 2u;
+ pSrc2 -= 2u;
- /* write complex conjugate output */
- pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR;
- pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 15u);
+ /* write output */
+ pDst[2u * i] = (q15_t) outR;
+ pDst[(2u * i) + 1u] = outI >> 16u;
- /* update coefficient pointer */
- pCoefB = pCoefB + (2u * modifier);
- pCoefA = pCoefA + (2u * modifier);
+ /* write complex conjugate output */
+ pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR;
+ pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 16u);
- i++;
-
- }
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (2u * modifier);
+ pCoefA = pCoefA + (2u * modifier);
- pDst[2u * fftLen] = pSrc[0] - pSrc[1];
- pDst[(2u * fftLen) + 1u] = 0;
+ i++;
+ }
- pDst[0] = pSrc[0] + pSrc[1];
- pDst[1] = 0;
+ pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+ pDst[(2u * fftLen) + 1u] = 0;
+
+ pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+ pDst[1] = 0;
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
-
}
/**
- * @brief Core Real IFFT process
- * @param[in] *pSrc points to the input buffer.
- * @param[in] fftLen length of FFT.
- * @param[in] *pATable points to the twiddle Coef A buffer.
- * @param[in] *pBTable points to the twiddle Coef B buffer.
- * @param[out] *pDst points to the output buffer.
- * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
- * @return none.
- * The function implements a Real IFFT
- */
+* @brief Core Real IFFT process
+* @param[in] *pSrc points to the input buffer.
+* @param[in] fftLen length of FFT.
+* @param[in] *pATable points to the twiddle Coef A buffer.
+* @param[in] *pBTable points to the twiddle Coef B buffer.
+* @param[out] *pDst points to the output buffer.
+* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+* @return none.
+* The function implements a Real IFFT
+*/
void arm_split_rifft_q15(
- q15_t * pSrc,
- uint32_t fftLen,
- q15_t * pATable,
- q15_t * pBTable,
- q15_t * pDst,
- uint32_t modifier)
+ q15_t * pSrc,
+ uint32_t fftLen,
+ q15_t * pATable,
+ q15_t * pBTable,
+ q15_t * pDst,
+ uint32_t modifier)
{
- uint32_t i; /* Loop Counter */
- q31_t outR, outI; /* Temporary variables for output */
- q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
- q15_t *pSrc1, *pSrc2;
- q15_t *pDst1 = &pDst[0];
+ uint32_t i; /* Loop Counter */
+ q31_t outR, outI; /* Temporary variables for output */
+ q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
+ q15_t *pSrc1, *pSrc2;
+ q15_t *pDst1 = &pDst[0];
- pCoefA = &pATable[0];
- pCoefB = &pBTable[0];
+ pCoefA = &pATable[0];
+ pCoefB = &pBTable[0];
- pSrc1 = &pSrc[0];
- pSrc2 = &pSrc[2u * fftLen];
+ pSrc1 = &pSrc[0];
+ pSrc2 = &pSrc[2u * fftLen];
#ifndef ARM_MATH_CM0_FAMILY
- /* Run the below code for Cortex-M4 and Cortex-M3 */
-
- i = fftLen;
-
- while(i > 0u)
- {
+ /* Run the below code for Cortex-M4 and Cortex-M3 */
+ i = fftLen;
- /*
- outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ while(i > 0u)
+ {
+ /*
+ outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
-
- */
+ outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
+ */
#ifndef ARM_MATH_BIG_ENDIAN
- /* pIn[2 * n - 2 * i] * pBTable[2 * i] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
- outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB));
+ /* pIn[2 * n - 2 * i] * pBTable[2 * i] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */
+ outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB));
#else
- /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] +
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */
- outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)));
+ /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] +
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */
+ outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)));
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
- /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i] */
- outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 15u;
+ /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i] */
+ outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 16u;
- /*
- -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] +
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
- outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
+ /*
+ -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] +
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+ outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB));
- /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */
+ /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */
#ifndef ARM_MATH_BIG_ENDIAN
- outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI);
+ outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI);
#else
- outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI);
+ outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI);
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
- /* write output */
+ /* write output */
#ifndef ARM_MATH_BIG_ENDIAN
- *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 15u), 16);
+ *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 16u), 16);
#else
- *__SIMD32(pDst1)++ = __PKHBT((outI >> 15u), outR, 16);
+ *__SIMD32(pDst1)++ = __PKHBT((outI >> 16u), outR, 16);
#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
- /* update coefficient pointer */
- pCoefB = pCoefB + (2u * modifier);
- pCoefA = pCoefA + (2u * modifier);
-
- i--;
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (2u * modifier);
+ pCoefA = pCoefA + (2u * modifier);
- }
-
-
+ i--;
+ }
#else
-
- /* Run the below code for Cortex-M0 */
+ /* Run the below code for Cortex-M0 */
+ i = fftLen;
- i = fftLen;
-
- while(i > 0u)
- {
+ while(i > 0u)
+ {
+ /*
+ outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ */
- /*
- outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- */
-
- outR = *pSrc2 * *pCoefB;
- outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1));
- outR = outR + (*pSrc1 * *pCoefA);
- outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 15;
+ outR = *pSrc2 * *pCoefB;
+ outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1));
+ outR = outR + (*pSrc1 * *pCoefA);
+ outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 16;
- /*
- outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
- */
+ /*
+ outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
+ */
- outI = *(pSrc1 + 1) * *pCoefA;
- outI = outI - (*pSrc1 * *(pCoefA + 1));
- outI = outI - (*pSrc2 * *(pCoefB + 1));
- outI = outI - (*(pSrc2 + 1) * *(pCoefB));
-
- /* update input pointers */
- pSrc1 += 2u;
- pSrc2 -= 2u;
+ outI = *(pSrc1 + 1) * *pCoefA;
+ outI = outI - (*pSrc1 * *(pCoefA + 1));
+ outI = outI - (*pSrc2 * *(pCoefB + 1));
+ outI = outI - (*(pSrc2 + 1) * *(pCoefB));
- /* write output */
- *pDst1++ = (q15_t) outR;
- *pDst1++ = (q15_t) (outI >> 15);
+ /* update input pointers */
+ pSrc1 += 2u;
+ pSrc2 -= 2u;
- /* update coefficient pointer */
- pCoefB = pCoefB + (2u * modifier);
- pCoefA = pCoefA + (2u * modifier);
+ /* write output */
+ *pDst1++ = (q15_t) outR;
+ *pDst1++ = (q15_t) (outI >> 16);
- i--;
-
- }
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (2u * modifier);
+ pCoefA = pCoefA + (2u * modifier);
+ i--;
+ }
#endif /* #ifndef ARM_MATH_CM0_FAMILY */
-
}
--- a/cmsis_dsp/TransformFunctions/arm_rfft_q31.c Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/TransformFunctions/arm_rfft_q31.c Fri Nov 20 08:45:18 2015 +0000
@@ -1,8 +1,8 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 19. March 2015
+* $Revision: V.1.4.5
*
* Project: CMSIS DSP Library
* Title: arm_rfft_q31.c
@@ -41,309 +41,256 @@
#include "arm_math.h"
-void arm_radix4_butterfly_inverse_q31(
-q31_t * pSrc,
-uint32_t fftLen,
-q31_t * pCoef,
-uint32_t twidCoefModifier);
-
-void arm_radix4_butterfly_q31(
-q31_t * pSrc,
-uint32_t fftLen,
-q31_t * pCoef,
-uint32_t twidCoefModifier);
-
-void arm_bitreversal_q31(
-q31_t * pSrc,
-uint32_t fftLen,
-uint16_t bitRevFactor,
-uint16_t * pBitRevTab);
-
/*--------------------------------------------------------------------
* Internal functions prototypes
--------------------------------------------------------------------*/
void arm_split_rfft_q31(
- q31_t * pSrc,
- uint32_t fftLen,
- q31_t * pATable,
- q31_t * pBTable,
- q31_t * pDst,
- uint32_t modifier);
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pATable,
+ q31_t * pBTable,
+ q31_t * pDst,
+ uint32_t modifier);
void arm_split_rifft_q31(
- q31_t * pSrc,
- uint32_t fftLen,
- q31_t * pATable,
- q31_t * pBTable,
- q31_t * pDst,
- uint32_t modifier);
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pATable,
+ q31_t * pBTable,
+ q31_t * pDst,
+ uint32_t modifier);
/**
- * @addtogroup RealFFT
- * @{
- */
+* @addtogroup RealFFT
+* @{
+*/
/**
- * @brief Processing function for the Q31 RFFT/RIFFT.
- * @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure.
- * @param[in] *pSrc points to the input buffer.
- * @param[out] *pDst points to the output buffer.
- * @return none.
- *
- * \par Input an output formats:
- * \par
- * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.
- * Hence the output format is different for different RFFT sizes.
- * The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
- * \par
- * \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT"
- *
- * \par
- * \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT"
- */
-
+* @brief Processing function for the Q31 RFFT/RIFFT.
+* @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure.
+* @param[in] *pSrc points to the input buffer.
+* @param[out] *pDst points to the output buffer.
+* @return none.
+*
+* \par Input an output formats:
+* \par
+* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process.
+* Hence the output format is different for different RFFT sizes.
+* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
+* \par
+* \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT"
+*
+* \par
+* \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT"
+*/
void arm_rfft_q31(
- const arm_rfft_instance_q31 * S,
- q31_t * pSrc,
- q31_t * pDst)
+ const arm_rfft_instance_q31 * S,
+ q31_t * pSrc,
+ q31_t * pDst)
{
- const arm_cfft_radix4_instance_q31 *S_CFFT = S->pCfft;
-
- /* Calculation of RIFFT of input */
- if(S->ifftFlagR == 1u)
- {
- /* Real IFFT core process */
- arm_split_rifft_q31(pSrc, S->fftLenBy2, S->pTwiddleAReal,
- S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+ const arm_cfft_instance_q31 *S_CFFT = S->pCfft;
+ uint32_t i;
+ uint32_t L2 = S->fftLenReal >> 1;
- /* Complex readix-4 IFFT process */
- arm_radix4_butterfly_inverse_q31(pDst, S_CFFT->fftLen,
- S_CFFT->pTwiddle,
- S_CFFT->twidCoefModifier);
- /* Bit reversal process */
- if(S->bitReverseFlagR == 1u)
+ /* Calculation of RIFFT of input */
+ if(S->ifftFlagR == 1u)
{
- arm_bitreversal_q31(pDst, S_CFFT->fftLen,
- S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+ /* Real IFFT core process */
+ arm_split_rifft_q31(pSrc, L2, S->pTwiddleAReal,
+ S->pTwiddleBReal, pDst, S->twidCoefRModifier);
+
+ /* Complex IFFT process */
+ arm_cfft_q31(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR);
+
+ for(i=0;i<S->fftLenReal;i++)
+ {
+ pDst[i] = pDst[i] << 1;
+ }
}
- }
- else
- {
- /* Calculation of RFFT of input */
+ else
+ {
+ /* Calculation of RFFT of input */
+
+ /* Complex FFT process */
+ arm_cfft_q31(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR);
- /* Complex readix-4 FFT process */
- arm_radix4_butterfly_q31(pSrc, S_CFFT->fftLen,
- S_CFFT->pTwiddle, S_CFFT->twidCoefModifier);
-
- /* Bit reversal process */
- if(S->bitReverseFlagR == 1u)
- {
- arm_bitreversal_q31(pSrc, S_CFFT->fftLen,
- S_CFFT->bitRevFactor, S_CFFT->pBitRevTable);
+ /* Real FFT core process */
+ arm_split_rfft_q31(pSrc, L2, S->pTwiddleAReal,
+ S->pTwiddleBReal, pDst, S->twidCoefRModifier);
}
-
- /* Real FFT core process */
- arm_split_rfft_q31(pSrc, S->fftLenBy2, S->pTwiddleAReal,
- S->pTwiddleBReal, pDst, S->twidCoefRModifier);
- }
-
}
-
- /**
- * @} end of RealFFT group
- */
+/**
+* @} end of RealFFT group
+*/
/**
- * @brief Core Real FFT process
- * @param[in] *pSrc points to the input buffer.
- * @param[in] fftLen length of FFT.
- * @param[in] *pATable points to the twiddle Coef A buffer.
- * @param[in] *pBTable points to the twiddle Coef B buffer.
- * @param[out] *pDst points to the output buffer.
- * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
- * @return none.
- */
-
+* @brief Core Real FFT process
+* @param[in] *pSrc points to the input buffer.
+* @param[in] fftLen length of FFT.
+* @param[in] *pATable points to the twiddle Coef A buffer.
+* @param[in] *pBTable points to the twiddle Coef B buffer.
+* @param[out] *pDst points to the output buffer.
+* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+* @return none.
+*/
void arm_split_rfft_q31(
- q31_t * pSrc,
- uint32_t fftLen,
- q31_t * pATable,
- q31_t * pBTable,
- q31_t * pDst,
- uint32_t modifier)
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pATable,
+ q31_t * pBTable,
+ q31_t * pDst,
+ uint32_t modifier)
{
- uint32_t i; /* Loop Counter */
- q31_t outR, outI; /* Temporary variables for output */
- q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
- q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */
- q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4u * fftLen) - 1u];
- q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2u * fftLen) - 1u];
+ uint32_t i; /* Loop Counter */
+ q31_t outR, outI; /* Temporary variables for output */
+ q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
+ q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */
+ q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4u * fftLen) - 1u];
+ q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2u * fftLen) - 1u];
- /* Init coefficient pointers */
- pCoefA = &pATable[modifier * 2u];
- pCoefB = &pBTable[modifier * 2u];
+ /* Init coefficient pointers */
+ pCoefA = &pATable[modifier * 2u];
+ pCoefB = &pBTable[modifier * 2u];
- i = fftLen - 1u;
+ i = fftLen - 1u;
- while(i > 0u)
- {
- /*
- outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
- + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
- pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- */
+ while(i > 0u)
+ {
+ /*
+ outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1]
+ + pSrc[2 * n - 2 * i] * pBTable[2 * i] +
+ pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ */
- /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
+ /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */
- CoefA1 = *pCoefA++;
- CoefA2 = *pCoefA;
-
- /* outR = (pSrc[2 * i] * pATable[2 * i] */
- outR = ((int32_t) (((q63_t) * pIn1 * CoefA1) >> 32));
+ CoefA1 = *pCoefA++;
+ CoefA2 = *pCoefA;
- /* outI = pIn[2 * i] * pATable[2 * i + 1] */
- outI = ((int32_t) (((q63_t) * pIn1++ * CoefA2) >> 32));
+ /* outR = (pSrc[2 * i] * pATable[2 * i] */
+ mult_32x32_keep32_R(outR, *pIn1, CoefA1);
- /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn1 * (-CoefA2))) >> 32);
+ /* outI = pIn[2 * i] * pATable[2 * i + 1] */
+ mult_32x32_keep32_R(outI, *pIn1++, CoefA2);
- /* (pIn[2 * i + 1] * pATable[2 * i] */
- outI =
- (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn1++ * (CoefA1))) >> 32);
+ /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */
+ multSub_32x32_keep32_R(outR, *pIn1, CoefA2);
- /* pSrc[2 * n - 2 * i] * pBTable[2 * i] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (-CoefA2))) >> 32);
- CoefB1 = *pCoefB;
+ /* (pIn[2 * i + 1] * pATable[2 * i] */
+ multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1);
- /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
- outI =
- (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (-CoefB1))) >> 32);
+ /* pSrc[2 * n - 2 * i] * pBTable[2 * i] */
+ multSub_32x32_keep32_R(outR, *pIn2, CoefA2);
+ CoefB1 = *pCoefB;
- /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefB1))) >> 32);
+ /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
+ multSub_32x32_keep32_R(outI, *pIn2--, CoefB1);
+
+ /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
+ multAcc_32x32_keep32_R(outR, *pIn2, CoefB1);
- /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
- outI =
- (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (-CoefA2))) >> 32);
+ /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+ multSub_32x32_keep32_R(outI, *pIn2--, CoefA2);
- /* write output */
- *pOut1++ = (outR << 1u);
- *pOut1++ = (outI << 1u);
+ /* write output */
+ *pOut1++ = outR;
+ *pOut1++ = outI;
- /* write complex conjugate output */
- *pOut2-- = -(outI << 1u);
- *pOut2-- = (outR << 1u);
+ /* write complex conjugate output */
+ *pOut2-- = -outI;
+ *pOut2-- = outR;
- /* update coefficient pointer */
- pCoefB = pCoefB + (modifier * 2u);
- pCoefA = pCoefA + ((modifier * 2u) - 1u);
-
- i--;
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (modifier * 2u);
+ pCoefA = pCoefA + ((modifier * 2u) - 1u);
- }
+ i--;
+ }
+ pDst[2u * fftLen] = (pSrc[0] - pSrc[1]) >> 1;
+ pDst[(2u * fftLen) + 1u] = 0;
- pDst[2u * fftLen] = pSrc[0] - pSrc[1];
- pDst[(2u * fftLen) + 1u] = 0;
-
- pDst[0] = pSrc[0] + pSrc[1];
- pDst[1] = 0;
-
+ pDst[0] = (pSrc[0] + pSrc[1]) >> 1;
+ pDst[1] = 0;
}
-
/**
- * @brief Core Real IFFT process
- * @param[in] *pSrc points to the input buffer.
- * @param[in] fftLen length of FFT.
- * @param[in] *pATable points to the twiddle Coef A buffer.
- * @param[in] *pBTable points to the twiddle Coef B buffer.
- * @param[out] *pDst points to the output buffer.
- * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
- * @return none.
- */
-
+* @brief Core Real IFFT process
+* @param[in] *pSrc points to the input buffer.
+* @param[in] fftLen length of FFT.
+* @param[in] *pATable points to the twiddle Coef A buffer.
+* @param[in] *pBTable points to the twiddle Coef B buffer.
+* @param[out] *pDst points to the output buffer.
+* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+* @return none.
+*/
void arm_split_rifft_q31(
- q31_t * pSrc,
- uint32_t fftLen,
- q31_t * pATable,
- q31_t * pBTable,
- q31_t * pDst,
- uint32_t modifier)
+ q31_t * pSrc,
+ uint32_t fftLen,
+ q31_t * pATable,
+ q31_t * pBTable,
+ q31_t * pDst,
+ uint32_t modifier)
{
- q31_t outR, outI; /* Temporary variables for output */
- q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
- q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */
- q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2u * fftLen) + 1u];
-
- pCoefA = &pATable[0];
- pCoefB = &pBTable[0];
+ q31_t outR, outI; /* Temporary variables for output */
+ q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */
+ q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */
+ q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2u * fftLen) + 1u];
- while(fftLen > 0u)
- {
- /*
- outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
- pIn[2 * n - 2 * i] * pBTable[2 * i] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
+ pCoefA = &pATable[0];
+ pCoefB = &pBTable[0];
- outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
- pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
- pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
-
- */
- CoefA1 = *pCoefA++;
- CoefA2 = *pCoefA;
+ while(fftLen > 0u)
+ {
+ /*
+ outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] +
+ pIn[2 * n - 2 * i] * pBTable[2 * i] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]);
- /* outR = (pIn[2 * i] * pATable[2 * i] */
- outR = ((int32_t) (((q63_t) * pIn1 * CoefA1) >> 32));
-
- /* - pIn[2 * i] * pATable[2 * i + 1] */
- outI = -((int32_t) (((q63_t) * pIn1++ * CoefA2) >> 32));
-
- /* pIn[2 * i + 1] * pATable[2 * i + 1] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn1 * (CoefA2))) >> 32);
+ outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] -
+ pIn[2 * n - 2 * i] * pBTable[2 * i + 1] -
+ pIn[2 * n - 2 * i + 1] * pBTable[2 * i]);
+ */
+ CoefA1 = *pCoefA++;
+ CoefA2 = *pCoefA;
- /* pIn[2 * i + 1] * pATable[2 * i] */
- outI =
- (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn1++ * (CoefA1))) >> 32);
+ /* outR = (pIn[2 * i] * pATable[2 * i] */
+ mult_32x32_keep32_R(outR, *pIn1, CoefA1);
- /* pIn[2 * n - 2 * i] * pBTable[2 * i] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefA2))) >> 32);
+ /* - pIn[2 * i] * pATable[2 * i + 1] */
+ mult_32x32_keep32_R(outI, *pIn1++, -CoefA2);
+
+ /* pIn[2 * i + 1] * pATable[2 * i + 1] */
+ multAcc_32x32_keep32_R(outR, *pIn1, CoefA2);
- CoefB1 = *pCoefB;
-
- /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
- outI =
- (q31_t) ((((q63_t) outI << 32) - ((q63_t) * pIn2-- * (CoefB1))) >> 32);
+ /* pIn[2 * i + 1] * pATable[2 * i] */
+ multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1);
- /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
- outR =
- (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefB1))) >> 32);
+ /* pIn[2 * n - 2 * i] * pBTable[2 * i] */
+ multAcc_32x32_keep32_R(outR, *pIn2, CoefA2);
+ CoefB1 = *pCoefB;
- /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
- outI =
- (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (CoefA2))) >> 32);
+ /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */
+ multSub_32x32_keep32_R(outI, *pIn2--, CoefB1);
- /* write output */
- *pDst++ = (outR << 1u);
- *pDst++ = (outI << 1u);
+ /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */
+ multAcc_32x32_keep32_R(outR, *pIn2, CoefB1);
+
+ /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */
+ multAcc_32x32_keep32_R(outI, *pIn2--, CoefA2);
- /* update coefficient pointer */
- pCoefB = pCoefB + (modifier * 2u);
- pCoefA = pCoefA + ((modifier * 2u) - 1u);
+ /* write output */
+ *pDst++ = outR;
+ *pDst++ = outI;
- /* Decrement loop count */
- fftLen--;
+ /* update coefficient pointer */
+ pCoefB = pCoefB + (modifier * 2u);
+ pCoefA = pCoefA + ((modifier * 2u) - 1u);
- }
-
-
+ /* Decrement loop count */
+ fftLen--;
+ }
}
--- a/cmsis_dsp/arm_common_tables.h Mon Jun 23 09:30:09 2014 +0100 +++ b/cmsis_dsp/arm_common_tables.h Fri Nov 20 08:45:18 2015 +0000 @@ -1,13 +1,13 @@ /* ---------------------------------------------------------------------- -* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. * -* $Date: 17. January 2013 -* $Revision: V1.4.1 +* $Date: 19. October 2015 +* $Revision: V.1.4.5 a * -* Project: CMSIS DSP Library -* Title: arm_common_tables.h +* Project: CMSIS DSP Library +* Title: arm_common_tables.h * -* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions +* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions * * Target Processor: Cortex-M4/Cortex-M3 * @@ -46,8 +46,8 @@ extern const uint16_t armBitRevTable[1024]; extern const q15_t armRecipTableQ15[64]; extern const q31_t armRecipTableQ31[64]; -extern const q31_t realCoefAQ31[1024]; -extern const q31_t realCoefBQ31[1024]; +/* extern const q31_t realCoefAQ31[1024]; */ +/* extern const q31_t realCoefBQ31[1024]; */ extern const float32_t twiddleCoef_16[32]; extern const float32_t twiddleCoef_32[64]; extern const float32_t twiddleCoef_64[128]; @@ -58,8 +58,24 @@ extern const float32_t twiddleCoef_2048[4096]; extern const float32_t twiddleCoef_4096[8192]; #define twiddleCoef twiddleCoef_4096 -extern const q31_t twiddleCoefQ31[6144]; -extern const q15_t twiddleCoefQ15[6144]; +extern const q31_t twiddleCoef_16_q31[24]; +extern const q31_t twiddleCoef_32_q31[48]; +extern const q31_t twiddleCoef_64_q31[96]; +extern const q31_t twiddleCoef_128_q31[192]; +extern const q31_t twiddleCoef_256_q31[384]; +extern const q31_t twiddleCoef_512_q31[768]; +extern const q31_t twiddleCoef_1024_q31[1536]; +extern const q31_t twiddleCoef_2048_q31[3072]; +extern const q31_t twiddleCoef_4096_q31[6144]; +extern const q15_t twiddleCoef_16_q15[24]; +extern const q15_t twiddleCoef_32_q15[48]; +extern const q15_t twiddleCoef_64_q15[96]; +extern const q15_t twiddleCoef_128_q15[192]; +extern const q15_t twiddleCoef_256_q15[384]; +extern const q15_t twiddleCoef_512_q15[768]; +extern const q15_t twiddleCoef_1024_q15[1536]; +extern const q15_t twiddleCoef_2048_q15[3072]; +extern const q15_t twiddleCoef_4096_q15[6144]; extern const float32_t twiddleCoef_rfft_32[32]; extern const float32_t twiddleCoef_rfft_64[64]; extern const float32_t twiddleCoef_rfft_128[128]; @@ -70,6 +86,7 @@ extern const float32_t twiddleCoef_rfft_4096[4096]; +/* floating-point bit reversal tables */ #define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 ) #define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 ) #define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 ) @@ -90,4 +107,30 @@ extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH]; extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH]; +/* fixed-point bit reversal tables */ +#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 ) +#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 ) +#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 ) +#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 ) +#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 ) +#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 ) +#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 ) +#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) +#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) + +extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; + +/* Tables for Fast Math Sine and Cosine */ +extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; +extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; +extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; + #endif /* ARM_COMMON_TABLES_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmsis_dsp/arm_const_structs.h Fri Nov 20 08:45:18 2015 +0000 @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. +* +* $Date: 19. March 2015 +* $Revision: V.1.4.5 +* +* Project: CMSIS DSP Library +* Title: arm_const_structs.h +* +* Description: This file has constant structs that are initialized for +* user convenience. For example, some can be given as +* arguments to the arm_cfft_f32() function. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +#ifndef _ARM_CONST_STRUCTS_H +#define _ARM_CONST_STRUCTS_H + +#include "arm_math.h" +#include "arm_common_tables.h" + + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; + + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; + + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; + +#endif
--- a/cmsis_dsp/arm_math.h Mon Jun 23 09:30:09 2014 +0100
+++ b/cmsis_dsp/arm_math.h Fri Nov 20 08:45:18 2015 +0000
@@ -1,15 +1,15 @@
/* ----------------------------------------------------------------------
-* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+* Copyright (C) 2010-2015 ARM Limited. All rights reserved.
*
-* $Date: 17. January 2013
-* $Revision: V1.4.1
+* $Date: 20. October 2015
+* $Revision: V1.4.5 b
*
* Project: CMSIS DSP Library
* Title: arm_math.h
*
* Description: Public header file for CMSIS DSP Library
*
-* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+* Target Processor: Cortex-M7/Cortex-M4/Cortex-M3/Cortex-M0
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -41,7 +41,8 @@
/**
\mainpage CMSIS DSP Software Library
*
- * <b>Introduction</b>
+ * Introduction
+ * ------------
*
* This user manual describes the CMSIS DSP software library,
* a suite of common signal processing functions for use on Cortex-M processor based devices.
@@ -61,49 +62,53 @@
* The library has separate functions for operating on 8-bit integers, 16-bit integers,
* 32-bit integer and 32-bit floating-point values.
*
- * <b>Using the Library</b>
+ * Using the Library
+ * ------------
*
* The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.
+ * - arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7)
+ * - arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7)
+ * - arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7)
+ * - arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7)
+ * - arm_cortexM7l_math.lib (Little endian on Cortex-M7)
+ * - arm_cortexM7b_math.lib (Big endian on Cortex-M7)
* - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)
* - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)
* - arm_cortexM4l_math.lib (Little endian on Cortex-M4)
* - arm_cortexM4b_math.lib (Big endian on Cortex-M4)
* - arm_cortexM3l_math.lib (Little endian on Cortex-M3)
* - arm_cortexM3b_math.lib (Big endian on Cortex-M3)
- * - arm_cortexM0l_math.lib (Little endian on Cortex-M0)
- * - arm_cortexM0b_math.lib (Big endian on Cortex-M3)
+ * - arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+)
+ * - arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+)
*
* The library functions are declared in the public file <code>arm_math.h</code> which is placed in the <code>Include</code> folder.
* Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single
- * public header file <code> arm_math.h</code> for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.
- * Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or
+ * public header file <code> arm_math.h</code> for Cortex-M7/M4/M3/M0/M0+ with little endian and big endian. Same header file will be used for floating point unit(FPU) variants.
+ * Define the appropriate pre processor MACRO ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or
* ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application.
*
- * <b>Examples</b>
+ * Examples
+ * --------
*
* The library ships with a number of examples which demonstrate how to use the library functions.
*
- * <b>Toolchain Support</b>
+ * Toolchain Support
+ * ------------
*
- * The library has been developed and tested with MDK-ARM version 4.60.
+ * The library has been developed and tested with MDK-ARM version 5.14.0.0
* The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.
*
- * <b>Building the Library</b>
+ * Building the Library
+ * ------------
*
- * The library installer contains project files to re build libraries on MDK Tool chain in the <code>CMSIS\\DSP_Lib\\Source\\ARM</code> folder.
- * - arm_cortexM0b_math.uvproj
- * - arm_cortexM0l_math.uvproj
- * - arm_cortexM3b_math.uvproj
- * - arm_cortexM3l_math.uvproj
- * - arm_cortexM4b_math.uvproj
- * - arm_cortexM4l_math.uvproj
- * - arm_cortexM4bf_math.uvproj
- * - arm_cortexM4lf_math.uvproj
+ * The library installer contains a project file to re build libraries on MDK-ARM Tool chain in the <code>CMSIS\\DSP_Lib\\Source\\ARM</code> folder.
+ * - arm_cortexM_math.uvprojx
*
*
- * The project can be built by opening the appropriate project in MDK-ARM 4.60 chain and defining the optional pre processor MACROs detailed above.
+ * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional pre processor MACROs detailed above.
*
- * <b>Pre-processor Macros</b>
+ * Pre-processor Macros
+ * ------------
*
* Each library project have differant pre-processor macros.
*
@@ -126,15 +131,34 @@
* - ARM_MATH_CMx:
*
* Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target
- * and ARM_MATH_CM0 for building library on cortex-M0 target, ARM_MATH_CM0PLUS for building library on cortex-M0+ target.
+ * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and
+ * ARM_MATH_CM7 for building the library on cortex-M7.
*
* - __FPU_PRESENT:
*
* Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries
*
- * <b>Copyright Notice</b>
+ * <hr>
+ * CMSIS-DSP in ARM::CMSIS Pack
+ * -----------------------------
*
- * Copyright (C) 2010-2013 ARM Limited. All rights reserved.
+ * The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:
+ * |File/Folder |Content |
+ * |------------------------------|------------------------------------------------------------------------|
+ * |\b CMSIS\\Documentation\\DSP | This documentation |
+ * |\b CMSIS\\DSP_Lib | Software license agreement (license.txt) |
+ * |\b CMSIS\\DSP_Lib\\Examples | Example projects demonstrating the usage of the library functions |
+ * |\b CMSIS\\DSP_Lib\\Source | Source files for rebuilding the library |
+ *
+ * <hr>
+ * Revision History of CMSIS-DSP
+ * ------------
+ * Please refer to \ref ChangeLog_pg.
+ *
+ * Copyright Notice
+ * ------------
+ *
+ * Copyright (C) 2010-2015 ARM Limited. All rights reserved.
*/
@@ -264,27 +288,37 @@
#ifndef _ARM_MATH_H
#define _ARM_MATH_H
+/* ignore some GCC warnings */
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
#define __CMSIS_GENERIC /* disable NVIC and Systick functions */
-#if defined (ARM_MATH_CM4)
-#include "core_cm4.h"
+#if defined(ARM_MATH_CM7)
+ #include "core_cm7.h"
+#elif defined (ARM_MATH_CM4)
+ #include "core_cm4.h"
#elif defined (ARM_MATH_CM3)
-#include "core_cm3.h"
+ #include "core_cm3.h"
#elif defined (ARM_MATH_CM0)
-#include "core_cm0.h"
-#define ARM_MATH_CM0_FAMILY
+ #include "core_cm0.h"
+ #define ARM_MATH_CM0_FAMILY
#elif defined (ARM_MATH_CM0PLUS)
-#include "core_cm0plus.h"
-#define ARM_MATH_CM0_FAMILY
+ #include "core_cm0plus.h"
+ #define ARM_MATH_CM0_FAMILY
#else
-#include "ARMCM4.h"
-#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."
+ #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0"
#endif
#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */
#include "string.h"
#include "math.h"
-#ifdef __cplusplus
+
+#ifdef __cplusplus
extern "C"
{
#endif
@@ -294,27 +328,31 @@
* @brief Macros required for reciprocal calculation in Normalized LMS
*/
-#define DELTA_Q31 (0x100)
-#define DELTA_Q15 0x5
-#define INDEX_MASK 0x0000003F
+#define DELTA_Q31 (0x100)
+#define DELTA_Q15 0x5
+#define INDEX_MASK 0x0000003F
#ifndef PI
-#define PI 3.14159265358979f
+#define PI 3.14159265358979f
#endif
/**
* @brief Macros required for SINE and COSINE Fast math approximations
*/
-#define TABLE_SIZE 256
-#define TABLE_SPACING_Q31 0x800000
-#define TABLE_SPACING_Q15 0x80
+#define FAST_MATH_TABLE_SIZE 512
+#define FAST_MATH_Q31_SHIFT (32 - 10)
+#define FAST_MATH_Q15_SHIFT (16 - 10)
+#define CONTROLLER_Q31_SHIFT (32 - 9)
+#define TABLE_SIZE 256
+#define TABLE_SPACING_Q31 0x400000
+#define TABLE_SPACING_Q15 0x80
/**
* @brief Macros required for SINE and COSINE Controller functions
*/
/* 1.31(q31) Fixed value of 2/360 */
/* -1 to +1 is divided into 360 values so total spacing is (2/360) */
-#define INPUT_SPACING 0xB60B61
+#define INPUT_SPACING 0xB60B61
/**
* @brief Macro for Unaligned Support
@@ -327,7 +365,7 @@
#else
#define ALIGN4 __align(4)
#endif
-#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */
+#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */
/**
* @brief Error status returned by some functions in the library.
@@ -378,24 +416,37 @@
* @brief definition to read/write two 16 bit values.
*/
#if defined __CC_ARM
-#define __SIMD32_TYPE int32_t __packed
-#define CMSIS_UNUSED __attribute__((unused))
+ #define __SIMD32_TYPE int32_t __packed
+ #define CMSIS_UNUSED __attribute__((unused))
+
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #define __SIMD32_TYPE int32_t
+ #define CMSIS_UNUSED __attribute__((unused))
+
+#elif defined __GNUC__
+ #define __SIMD32_TYPE int32_t
+ #define CMSIS_UNUSED __attribute__((unused))
+
#elif defined __ICCARM__
-#define CMSIS_UNUSED
-#define __SIMD32_TYPE int32_t __packed
-#elif defined __GNUC__
-#define __SIMD32_TYPE int32_t
-#define CMSIS_UNUSED __attribute__((unused))
+ #define __SIMD32_TYPE int32_t __packed
+ #define CMSIS_UNUSED
+
+#elif defined __CSMC__
+ #define __SIMD32_TYPE int32_t
+ #define CMSIS_UNUSED
+
+#elif defined __TASKING__
+ #define __SIMD32_TYPE __unaligned int32_t
+ #define CMSIS_UNUSED
+
#else
-#error Unknown compiler
+ #error Unknown compiler
#endif
-#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr))
+#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr))
#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr))
-
#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr))
-
-#define __SIMD64(addr) (*(int64_t **) & (addr))
+#define __SIMD64(addr) (*(int64_t **) & (addr))
#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY)
/**
@@ -414,16 +465,16 @@
*/
#ifndef ARM_MATH_BIG_ENDIAN
-#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \
- (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \
- (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
- (((int32_t)(v3) << 24) & (int32_t)0xFF000000) )
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \
+ (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \
+ (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
+ (((int32_t)(v3) << 24) & (int32_t)0xFF000000) )
#else
-#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \
- (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \
- (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
- (((int32_t)(v0) << 24) & (int32_t)0xFF000000) )
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \
+ (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \
+ (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
+ (((int32_t)(v0) << 24) & (int32_t)0xFF000000) )
#endif
@@ -480,15 +531,16 @@
(((q63_t) (x >> 32) * y)));
}
-
-#if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM )
-#define __CLZ __clz
-#elif defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) || defined (__TASKING__) )
-
+/*
+ #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM )
+ #define __CLZ __clz
+ #endif
+ */
+/* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */
+#if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) )
static __INLINE uint32_t __CLZ(
q31_t data);
-
static __INLINE uint32_t __CLZ(
q31_t data)
{
@@ -502,9 +554,7 @@
}
return (count);
-
}
-
#endif
/**
@@ -516,25 +566,25 @@
q31_t * dst,
q31_t * pRecipTable)
{
-
- uint32_t out, tempVal;
+ q31_t out;
+ uint32_t tempVal;
uint32_t index, i;
uint32_t signBits;
if(in > 0)
{
- signBits = __CLZ(in) - 1;
+ signBits = ((uint32_t) (__CLZ( in) - 1));
}
else
{
- signBits = __CLZ(-in) - 1;
+ signBits = ((uint32_t) (__CLZ(-in) - 1));
}
/* Convert input sample to 1.31 format */
- in = in << signBits;
+ in = (in << signBits);
/* calculation of index for initial approximated Val */
- index = (uint32_t) (in >> 24u);
+ index = (uint32_t)(in >> 24);
index = (index & INDEX_MASK);
/* 1.31 with exp 1 */
@@ -544,11 +594,11 @@
/* running approximation for two iterations */
for (i = 0u; i < 2u; i++)
{
- tempVal = (q31_t) (((q63_t) in * out) >> 31u);
- tempVal = 0x7FFFFFFF - tempVal;
+ tempVal = (uint32_t) (((q63_t) in * out) >> 31);
+ tempVal = 0x7FFFFFFFu - tempVal;
/* 1.31 with exp 1 */
- //out = (q31_t) (((q63_t) out * tempVal) >> 30u);
- out = (q31_t) clip_q63_to_q31(((q63_t) out * tempVal) >> 30u);
+ /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */
+ out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);
}
/* write output */
@@ -556,9 +606,9 @@
/* return num of signbits of out = 1/in value */
return (signBits + 1u);
-
}
+
/**
* @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.
*/
@@ -567,25 +617,25 @@
q15_t * dst,
q15_t * pRecipTable)
{
-
- uint32_t out = 0, tempVal = 0;
+ q15_t out = 0;
+ uint32_t tempVal = 0;
uint32_t index = 0, i = 0;
uint32_t signBits = 0;
if(in > 0)
{
- signBits = __CLZ(in) - 17;
+ signBits = ((uint32_t)(__CLZ( in) - 17));
}
else
{
- signBits = __CLZ(-in) - 17;
+ signBits = ((uint32_t)(__CLZ(-in) - 17));
}
/* Convert input sample to 1.15 format */
- in = in << signBits;
+ in = (in << signBits);
/* calculation of index for initial approximated Val */
- index = in >> 8;
+ index = (uint32_t)(in >> 8);
index = (index & INDEX_MASK);
/* 1.15 with exp 1 */
@@ -593,12 +643,13 @@
/* calculation of reciprocal value */
/* running approximation for two iterations */
- for (i = 0; i < 2; i++)
+ for (i = 0u; i < 2u; i++)
{
- tempVal = (q15_t) (((q31_t) in * out) >> 15);
- tempVal = 0x7FFF - tempVal;
+ tempVal = (uint32_t) (((q31_t) in * out) >> 15);
+ tempVal = 0x7FFFu - tempVal;
/* 1.15 with exp 1 */
out = (q15_t) (((q31_t) out * tempVal) >> 14);
+ /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */
}
/* write output */
@@ -606,7 +657,6 @@
/* return num of signbits of out = 1/in value */
return (signBits + 1);
-
}
@@ -614,7 +664,6 @@
* @brief C custom defined intrinisic function for only M0 processors
*/
#if defined(ARM_MATH_CM0_FAMILY)
-
static __INLINE q31_t __SSAT(
q31_t x,
uint32_t y)
@@ -647,14 +696,10 @@
}
}
return (x);
-
-
}
-
#endif /* end of ARM_MATH_CM0_FAMILY */
-
/*
* @brief C custom defined intrinsic function for M3 and M0 processors
*/
@@ -663,377 +708,319 @@
/*
* @brief C custom defined QADD8 for M3 and M0 processors
*/
- static __INLINE q31_t __QADD8(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QADD8(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
- q7_t r, s, t, u;
-
- r = (q7_t) x;
- s = (q7_t) y;
-
- r = __SSAT((q31_t) (r + s), 8);
- s = __SSAT(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8);
- t = __SSAT(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8);
- u = __SSAT(((q31_t) ((x >> 24) + (y >> 24))), 8);
-
- sum =
- (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) |
- (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF);
-
- return sum;
-
+ q31_t r, s, t, u;
+
+ r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+ s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+ t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
+ u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
+
+ return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r )));
}
+
/*
* @brief C custom defined QSUB8 for M3 and M0 processors
*/
- static __INLINE q31_t __QSUB8(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QSUB8(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
q31_t r, s, t, u;
- r = (q7_t) x;
- s = (q7_t) y;
-
- r = __SSAT((r - s), 8);
- s = __SSAT(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8;
- t = __SSAT(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16;
- u = __SSAT(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24;
-
- sum =
- (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r &
- 0x000000FF);
-
- return sum;
+ r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+ s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+ t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
+ u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
+
+ return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r )));
}
+
/*
* @brief C custom defined QADD16 for M3 and M0 processors
*/
-
- /*
- * @brief C custom defined QADD16 for M3 and M0 processors
- */
- static __INLINE q31_t __QADD16(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QADD16(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
- q31_t r, s;
-
- r = (short) x;
- s = (short) y;
-
- r = __SSAT(r + s, 16);
- s = __SSAT(((q31_t) ((x >> 16) + (y >> 16))), 16) << 16;
-
- sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return sum;
-
+/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */
+ q31_t r = 0, s = 0;
+
+ r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+ s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined SHADD16 for M3 and M0 processors
*/
- static __INLINE q31_t __SHADD16(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SHADD16(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
q31_t r, s;
- r = (short) x;
- s = (short) y;
-
- r = ((r >> 1) + (s >> 1));
- s = ((q31_t) ((x >> 17) + (y >> 17))) << 16;
-
- sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return sum;
-
+ r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+ s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined QSUB16 for M3 and M0 processors
*/
- static __INLINE q31_t __QSUB16(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QSUB16(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
q31_t r, s;
- r = (short) x;
- s = (short) y;
-
- r = __SSAT(r - s, 16);
- s = __SSAT(((q31_t) ((x >> 16) - (y >> 16))), 16) << 16;
-
- sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return sum;
+ r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+ s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined SHSUB16 for M3 and M0 processors
*/
- static __INLINE q31_t __SHSUB16(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SHSUB16(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t diff;
q31_t r, s;
- r = (short) x;
- s = (short) y;
-
- r = ((r >> 1) - (s >> 1));
- s = (((x >> 17) - (y >> 17)) << 16);
-
- diff = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return diff;
+ r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+ s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined QASX for M3 and M0 processors
*/
- static __INLINE q31_t __QASX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QASX(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum = 0;
-
- sum =
- ((sum +
- clip_q31_to_q15((q31_t) ((short) (x >> 16) + (short) y))) << 16) +
- clip_q31_to_q15((q31_t) ((short) x - (short) (y >> 16)));
-
- return sum;
+ q31_t r, s;
+
+ r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
+ s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined SHASX for M3 and M0 processors
*/
- static __INLINE q31_t __SHASX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SHASX(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
q31_t r, s;
- r = (short) x;
- s = (short) y;
-
- r = ((r >> 1) - (y >> 17));
- s = (((x >> 17) + (s >> 1)) << 16);
-
- sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return sum;
+ r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+ s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
/*
* @brief C custom defined QSAX for M3 and M0 processors
*/
- static __INLINE q31_t __QSAX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __QSAX(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum = 0;
-
- sum =
- ((sum +
- clip_q31_to_q15((q31_t) ((short) (x >> 16) - (short) y))) << 16) +
- clip_q31_to_q15((q31_t) ((short) x + (short) (y >> 16)));
-
- return sum;
+ q31_t r, s;
+
+ r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
+ s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined SHSAX for M3 and M0 processors
*/
- static __INLINE q31_t __SHSAX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SHSAX(
+ uint32_t x,
+ uint32_t y)
{
-
- q31_t sum;
q31_t r, s;
- r = (short) x;
- s = (short) y;
-
- r = ((r >> 1) + (y >> 17));
- s = (((x >> 17) - (s >> 1)) << 16);
-
- sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
-
- return sum;
+ r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+ s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+ return ((uint32_t)((s << 16) | (r )));
}
+
/*
* @brief C custom defined SMUSDX for M3 and M0 processors
*/
- static __INLINE q31_t __SMUSDX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SMUSDX(
+ uint32_t x,
+ uint32_t y)
{
-
- return ((q31_t) (((short) x * (short) (y >> 16)) -
- ((short) (x >> 16) * (short) y)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) -
+ ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) ));
}
/*
* @brief C custom defined SMUADX for M3 and M0 processors
*/
- static __INLINE q31_t __SMUADX(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SMUADX(
+ uint32_t x,
+ uint32_t y)
{
-
- return ((q31_t) (((short) x * (short) (y >> 16)) +
- ((short) (x >> 16) * (short) y)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) ));
}
+
/*
* @brief C custom defined QADD for M3 and M0 processors
*/
- static __INLINE q31_t __QADD(
- q31_t x,
- q31_t y)
+ static __INLINE int32_t __QADD(
+ int32_t x,
+ int32_t y)
{
- return clip_q63_to_q31((q63_t) x + y);
+ return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));
}
+
/*
* @brief C custom defined QSUB for M3 and M0 processors
*/
- static __INLINE q31_t __QSUB(
- q31_t x,
- q31_t y)
+ static __INLINE int32_t __QSUB(
+ int32_t x,
+ int32_t y)
{
- return clip_q63_to_q31((q63_t) x - y);
+ return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));
}
+
/*
* @brief C custom defined SMLAD for M3 and M0 processors
*/
- static __INLINE q31_t __SMLAD(
- q31_t x,
- q31_t y,
- q31_t sum)
+ static __INLINE uint32_t __SMLAD(
+ uint32_t x,
+ uint32_t y,
+ uint32_t sum)
{
-
- return (sum + ((short) (x >> 16) * (short) (y >> 16)) +
- ((short) x * (short) y));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) +
+ ( ((q31_t)sum ) ) ));
}
+
/*
* @brief C custom defined SMLADX for M3 and M0 processors
*/
- static __INLINE q31_t __SMLADX(
- q31_t x,
- q31_t y,
- q31_t sum)
+ static __INLINE uint32_t __SMLADX(
+ uint32_t x,
+ uint32_t y,
+ uint32_t sum)
{
-
- return (sum + ((short) (x >> 16) * (short) (y)) +
- ((short) x * (short) (y >> 16)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ( ((q31_t)sum ) ) ));
}
+
/*
* @brief C custom defined SMLSDX for M3 and M0 processors
*/
- static __INLINE q31_t __SMLSDX(
- q31_t x,
- q31_t y,
- q31_t sum)
+ static __INLINE uint32_t __SMLSDX(
+ uint32_t x,
+ uint32_t y,
+ uint32_t sum)
{
-
- return (sum - ((short) (x >> 16) * (short) (y)) +
- ((short) x * (short) (y >> 16)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) -
+ ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ( ((q31_t)sum ) ) ));
}
+
/*
* @brief C custom defined SMLALD for M3 and M0 processors
*/
- static __INLINE q63_t __SMLALD(
- q31_t x,
- q31_t y,
- q63_t sum)
+ static __INLINE uint64_t __SMLALD(
+ uint32_t x,
+ uint32_t y,
+ uint64_t sum)
{
-
- return (sum + ((short) (x >> 16) * (short) (y >> 16)) +
- ((short) x * (short) y));
+/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */
+ return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) +
+ ( ((q63_t)sum ) ) ));
}
+
/*
* @brief C custom defined SMLALDX for M3 and M0 processors
*/
- static __INLINE q63_t __SMLALDX(
- q31_t x,
- q31_t y,
- q63_t sum)
+ static __INLINE uint64_t __SMLALDX(
+ uint32_t x,
+ uint32_t y,
+ uint64_t sum)
{
-
- return (sum + ((short) (x >> 16) * (short) y)) +
- ((short) x * (short) (y >> 16));
+/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */
+ return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ( ((q63_t)sum ) ) ));
}
+
/*
* @brief C custom defined SMUAD for M3 and M0 processors
*/
- static __INLINE q31_t __SMUAD(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SMUAD(
+ uint32_t x,
+ uint32_t y)
{
-
- return (((x >> 16) * (y >> 16)) +
- (((x << 16) >> 16) * ((y << 16) >> 16)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+ ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) ));
}
+
/*
* @brief C custom defined SMUSD for M3 and M0 processors
*/
- static __INLINE q31_t __SMUSD(
- q31_t x,
- q31_t y)
+ static __INLINE uint32_t __SMUSD(
+ uint32_t x,
+ uint32_t y)
{
-
- return (-((x >> 16) * (y >> 16)) +
- (((x << 16) >> 16) * ((y << 16) >> 16)));
+ return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -
+ ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) ));
}
/*
* @brief C custom defined SXTB16 for M3 and M0 processors
*/
- static __INLINE q31_t __SXTB16(
- q31_t x)
+ static __INLINE uint32_t __SXTB16(
+ uint32_t x)
{
-
- return ((((x << 24) >> 24) & 0x0000FFFF) |
- (((x << 8) >> 8) & 0xFFFF0000));
+ return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |
+ ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) ));
}
-
#endif /* defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) */
@@ -1080,11 +1067,10 @@
/**
* @brief Processing function for the Q7 FIR filter.
- * @param[in] *S points to an instance of the Q7 FIR filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q7 FIR filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_q7(
const arm_fir_instance_q7 * S,
@@ -1095,12 +1081,11 @@
/**
* @brief Initialization function for the Q7 FIR filter.
- * @param[in,out] *S points to an instance of the Q7 FIR structure.
- * @param[in] numTaps Number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of samples that are processed.
- * @return none
+ * @param[in,out] S points to an instance of the Q7 FIR structure.
+ * @param[in] numTaps Number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of samples that are processed.
*/
void arm_fir_init_q7(
arm_fir_instance_q7 * S,
@@ -1112,11 +1097,10 @@
/**
* @brief Processing function for the Q15 FIR filter.
- * @param[in] *S points to an instance of the Q15 FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q15 FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_q15(
const arm_fir_instance_q15 * S,
@@ -1124,13 +1108,13 @@
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q15 FIR filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q15 FIR filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_fast_q15(
const arm_fir_instance_q15 * S,
@@ -1138,17 +1122,17 @@
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q15 FIR filter.
- * @param[in,out] *S points to an instance of the Q15 FIR filter structure.
- * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of samples that are processed at a time.
+ * @param[in,out] S points to an instance of the Q15 FIR filter structure.
+ * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of samples that are processed at a time.
* @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if
* <code>numTaps</code> is not a supported value.
*/
-
arm_status arm_fir_init_q15(
arm_fir_instance_q15 * S,
uint16_t numTaps,
@@ -1156,13 +1140,13 @@
q15_t * pState,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q31 FIR filter.
- * @param[in] *S points to an instance of the Q31 FIR filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q31 FIR filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_q31(
const arm_fir_instance_q31 * S,
@@ -1170,13 +1154,13 @@
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q31 FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q31 FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_fast_q31(
const arm_fir_instance_q31 * S,
@@ -1184,14 +1168,14 @@
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q31 FIR filter.
- * @param[in,out] *S points to an instance of the Q31 FIR structure.
- * @param[in] numTaps Number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of samples that are processed at a time.
- * @return none.
+ * @param[in,out] S points to an instance of the Q31 FIR structure.
+ * @param[in] numTaps Number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of samples that are processed at a time.
*/
void arm_fir_init_q31(
arm_fir_instance_q31 * S,
@@ -1200,13 +1184,13 @@
q31_t * pState,
uint32_t blockSize);
+
/**
* @brief Processing function for the floating-point FIR filter.
- * @param[in] *S points to an instance of the floating-point FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the floating-point FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_f32(
const arm_fir_instance_f32 * S,
@@ -1214,14 +1198,14 @@
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point FIR filter.
- * @param[in,out] *S points to an instance of the floating-point FIR filter structure.
- * @param[in] numTaps Number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of samples that are processed at a time.
- * @return none.
+ * @param[in,out] S points to an instance of the floating-point FIR filter structure.
+ * @param[in] numTaps Number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of samples that are processed at a time.
*/
void arm_fir_init_f32(
arm_fir_instance_f32 * S,
@@ -1236,14 +1220,12 @@
*/
typedef struct
{
- int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
- q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */
- q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */
- int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */
-
+ int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
+ q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */
+ q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */
+ int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */
} arm_biquad_casd_df1_inst_q15;
-
/**
* @brief Instance structure for the Q31 Biquad cascade filter.
*/
@@ -1253,7 +1235,6 @@
q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */
q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */
uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */
-
} arm_biquad_casd_df1_inst_q31;
/**
@@ -1261,40 +1242,34 @@
*/
typedef struct
{
- uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
- float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */
- float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */
-
-
+ uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
+ float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */
+ float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */
} arm_biquad_casd_df1_inst_f32;
-
/**
* @brief Processing function for the Q15 Biquad cascade filter.
- * @param[in] *S points to an instance of the Q15 Biquad cascade structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 Biquad cascade structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_biquad_cascade_df1_q15(
const arm_biquad_casd_df1_inst_q15 * S,
q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q15 Biquad cascade filter.
- * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure.
- * @param[in] numStages number of 2nd order stages in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the Q15 Biquad cascade structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format
+ */
void arm_biquad_cascade_df1_init_q15(
arm_biquad_casd_df1_inst_q15 * S,
uint8_t numStages,
@@ -1305,13 +1280,11 @@
/**
* @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q15 Biquad cascade structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 Biquad cascade structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_biquad_cascade_df1_fast_q15(
const arm_biquad_casd_df1_inst_q15 * S,
q15_t * pSrc,
@@ -1321,44 +1294,40 @@
/**
* @brief Processing function for the Q31 Biquad cascade filter
- * @param[in] *S points to an instance of the Q31 Biquad cascade structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
+ * @param[in] S points to an instance of the Q31 Biquad cascade structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
* @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ */
void arm_biquad_cascade_df1_q31(
const arm_biquad_casd_df1_inst_q31 * S,
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q31 Biquad cascade structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
+ * @param[in] S points to an instance of the Q31 Biquad cascade structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
* @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ */
void arm_biquad_cascade_df1_fast_q31(
const arm_biquad_casd_df1_inst_q31 * S,
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q31 Biquad cascade filter.
- * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure.
- * @param[in] numStages number of 2nd order stages in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the Q31 Biquad cascade structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format
+ */
void arm_biquad_cascade_df1_init_q31(
arm_biquad_casd_df1_inst_q31 * S,
uint8_t numStages,
@@ -1366,30 +1335,28 @@
q31_t * pState,
int8_t postShift);
+
/**
* @brief Processing function for the floating-point Biquad cascade filter.
- * @param[in] *S points to an instance of the floating-point Biquad cascade structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
+ * @param[in] S points to an instance of the floating-point Biquad cascade structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
* @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ */
void arm_biquad_cascade_df1_f32(
const arm_biquad_casd_df1_inst_f32 * S,
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point Biquad cascade filter.
- * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure.
- * @param[in] numStages number of 2nd order stages in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the floating-point Biquad cascade structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ */
void arm_biquad_cascade_df1_init_f32(
arm_biquad_casd_df1_inst_f32 * S,
uint8_t numStages,
@@ -1400,7 +1367,6 @@
/**
* @brief Instance structure for the floating-point matrix structure.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows of the matrix. */
@@ -1408,70 +1374,118 @@
float32_t *pData; /**< points to the data of the matrix. */
} arm_matrix_instance_f32;
+
+ /**
+ * @brief Instance structure for the floating-point matrix structure.
+ */
+ typedef struct
+ {
+ uint16_t numRows; /**< number of rows of the matrix. */
+ uint16_t numCols; /**< number of columns of the matrix. */
+ float64_t *pData; /**< points to the data of the matrix. */
+ } arm_matrix_instance_f64;
+
/**
* @brief Instance structure for the Q15 matrix structure.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows of the matrix. */
uint16_t numCols; /**< number of columns of the matrix. */
q15_t *pData; /**< points to the data of the matrix. */
-
} arm_matrix_instance_q15;
/**
* @brief Instance structure for the Q31 matrix structure.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows of the matrix. */
uint16_t numCols; /**< number of columns of the matrix. */
q31_t *pData; /**< points to the data of the matrix. */
-
} arm_matrix_instance_q31;
-
/**
* @brief Floating-point matrix addition.
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_add_f32(
const arm_matrix_instance_f32 * pSrcA,
const arm_matrix_instance_f32 * pSrcB,
arm_matrix_instance_f32 * pDst);
+
/**
* @brief Q15 matrix addition.
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_add_q15(
const arm_matrix_instance_q15 * pSrcA,
const arm_matrix_instance_q15 * pSrcB,
arm_matrix_instance_q15 * pDst);
+
/**
* @brief Q31 matrix addition.
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ */
+ arm_status arm_mat_add_q31(
+ const arm_matrix_instance_q31 * pSrcA,
+ const arm_matrix_instance_q31 * pSrcB,
+ arm_matrix_instance_q31 * pDst);
+
+
+ /**
+ * @brief Floating-point, complex, matrix multiplication.
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
- arm_status arm_mat_add_q31(
+ arm_status arm_mat_cmplx_mult_f32(
+ const arm_matrix_instance_f32 * pSrcA,
+ const arm_matrix_instance_f32 * pSrcB,
+ arm_matrix_instance_f32 * pDst);
+
+
+ /**
+ * @brief Q15, complex, matrix multiplication.
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ */
+ arm_status arm_mat_cmplx_mult_q15(
+ const arm_matrix_instance_q15 * pSrcA,
+ const arm_matrix_instance_q15 * pSrcB,
+ arm_matrix_instance_q15 * pDst,
+ q15_t * pScratch);
+
+
+ /**
+ * @brief Q31, complex, matrix multiplication.
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
+ * @return The function returns either
+ * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+ */
+ arm_status arm_mat_cmplx_mult_q31(
const arm_matrix_instance_q31 * pSrcA,
const arm_matrix_instance_q31 * pSrcB,
arm_matrix_instance_q31 * pDst);
@@ -1479,12 +1493,11 @@
/**
* @brief Floating-point matrix transpose.
- * @param[in] *pSrc points to the input matrix
- * @param[out] *pDst points to the output matrix
- * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
+ * @param[in] pSrc points to the input matrix
+ * @param[out] pDst points to the output matrix
+ * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
* or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_trans_f32(
const arm_matrix_instance_f32 * pSrc,
arm_matrix_instance_f32 * pDst);
@@ -1492,24 +1505,23 @@
/**
* @brief Q15 matrix transpose.
- * @param[in] *pSrc points to the input matrix
- * @param[out] *pDst points to the output matrix
- * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
+ * @param[in] pSrc points to the input matrix
+ * @param[out] pDst points to the output matrix
+ * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
* or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_trans_q15(
const arm_matrix_instance_q15 * pSrc,
arm_matrix_instance_q15 * pDst);
+
/**
* @brief Q31 matrix transpose.
- * @param[in] *pSrc points to the input matrix
- * @param[out] *pDst points to the output matrix
- * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
+ * @param[in] pSrc points to the input matrix
+ * @param[out] pDst points to the output matrix
+ * @return The function returns either <code>ARM_MATH_SIZE_MISMATCH</code>
* or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_trans_q31(
const arm_matrix_instance_q31 * pSrc,
arm_matrix_instance_q31 * pDst);
@@ -1517,73 +1529,72 @@
/**
* @brief Floating-point matrix multiplication
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_mult_f32(
const arm_matrix_instance_f32 * pSrcA,
const arm_matrix_instance_f32 * pSrcB,
arm_matrix_instance_f32 * pDst);
+
/**
* @brief Q15 matrix multiplication
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
- * @param[in] *pState points to the array for storing intermediate results
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
+ * @param[in] pState points to the array for storing intermediate results
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_mult_q15(
const arm_matrix_instance_q15 * pSrcA,
const arm_matrix_instance_q15 * pSrcB,
arm_matrix_instance_q15 * pDst,
q15_t * pState);
+
/**
* @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
- * @param[in] *pState points to the array for storing intermediate results
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
+ * @param[in] pState points to the array for storing intermediate results
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_mult_fast_q15(
const arm_matrix_instance_q15 * pSrcA,
const arm_matrix_instance_q15 * pSrcB,
arm_matrix_instance_q15 * pDst,
q15_t * pState);
+
/**
* @brief Q31 matrix multiplication
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_mult_q31(
const arm_matrix_instance_q31 * pSrcA,
const arm_matrix_instance_q31 * pSrcB,
arm_matrix_instance_q31 * pDst);
+
/**
* @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_mult_fast_q31(
const arm_matrix_instance_q31 * pSrcA,
const arm_matrix_instance_q31 * pSrcB,
@@ -1592,86 +1603,85 @@
/**
* @brief Floating-point matrix subtraction
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_sub_f32(
const arm_matrix_instance_f32 * pSrcA,
const arm_matrix_instance_f32 * pSrcB,
arm_matrix_instance_f32 * pDst);
+
/**
* @brief Q15 matrix subtraction
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_sub_q15(
const arm_matrix_instance_q15 * pSrcA,
const arm_matrix_instance_q15 * pSrcB,
arm_matrix_instance_q15 * pDst);
+
/**
* @brief Q31 matrix subtraction
- * @param[in] *pSrcA points to the first input matrix structure
- * @param[in] *pSrcB points to the second input matrix structure
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrcA points to the first input matrix structure
+ * @param[in] pSrcB points to the second input matrix structure
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_sub_q31(
const arm_matrix_instance_q31 * pSrcA,
const arm_matrix_instance_q31 * pSrcB,
arm_matrix_instance_q31 * pDst);
+
/**
* @brief Floating-point matrix scaling.
- * @param[in] *pSrc points to the input matrix
- * @param[in] scale scale factor
- * @param[out] *pDst points to the output matrix
+ * @param[in] pSrc points to the input matrix
+ * @param[in] scale scale factor
+ * @param[out] pDst points to the output matrix
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_scale_f32(
const arm_matrix_instance_f32 * pSrc,
float32_t scale,
arm_matrix_instance_f32 * pDst);
+
/**
* @brief Q15 matrix scaling.
- * @param[in] *pSrc points to input matrix
- * @param[in] scaleFract fractional portion of the scale factor
- * @param[in] shift number of bits to shift the result by
- * @param[out] *pDst points to output matrix
+ * @param[in] pSrc points to input matrix
+ * @param[in] scaleFract fractional portion of the scale factor
+ * @param[in] shift number of bits to shift the result by
+ * @param[out] pDst points to output matrix
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_scale_q15(
const arm_matrix_instance_q15 * pSrc,
q15_t scaleFract,
int32_t shift,
arm_matrix_instance_q15 * pDst);
+
/**
* @brief Q31 matrix scaling.
- * @param[in] *pSrc points to input matrix
- * @param[in] scaleFract fractional portion of the scale factor
- * @param[in] shift number of bits to shift the result by
- * @param[out] *pDst points to output matrix structure
+ * @param[in] pSrc points to input matrix
+ * @param[in] scaleFract fractional portion of the scale factor
+ * @param[in] shift number of bits to shift the result by
+ * @param[out] pDst points to output matrix structure
* @return The function returns either
* <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
*/
-
arm_status arm_mat_scale_q31(
const arm_matrix_instance_q31 * pSrc,
q31_t scaleFract,
@@ -1681,43 +1691,39 @@
/**
* @brief Q31 matrix initialization.
- * @param[in,out] *S points to an instance of the floating-point matrix structure.
- * @param[in] nRows number of rows in the matrix.
- * @param[in] nColumns number of columns in the matrix.
- * @param[in] *pData points to the matrix data array.
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the floating-point matrix structure.
+ * @param[in] nRows number of rows in the matrix.
+ * @param[in] nColumns number of columns in the matrix.
+ * @param[in] pData points to the matrix data array.
+ */
void arm_mat_init_q31(
arm_matrix_instance_q31 * S,
uint16_t nRows,
uint16_t nColumns,
q31_t * pData);
+
/**
* @brief Q15 matrix initialization.
- * @param[in,out] *S points to an instance of the floating-point matrix structure.
- * @param[in] nRows number of rows in the matrix.
- * @param[in] nColumns number of columns in the matrix.
- * @param[in] *pData points to the matrix data array.
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the floating-point matrix structure.
+ * @param[in] nRows number of rows in the matrix.
+ * @param[in] nColumns number of columns in the matrix.
+ * @param[in] pData points to the matrix data array.
+ */
void arm_mat_init_q15(
arm_matrix_instance_q15 * S,
uint16_t nRows,
uint16_t nColumns,
q15_t * pData);
+
/**
* @brief Floating-point matrix initialization.
- * @param[in,out] *S points to an instance of the floating-point matrix structure.
- * @param[in] nRows number of rows in the matrix.
- * @param[in] nColumns number of columns in the matrix.
- * @param[in] *pData points to the matrix data array.
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the floating-point matrix structure.
+ * @param[in] nRows number of rows in the matrix.
+ * @param[in] nColumns number of columns in the matrix.
+ * @param[in] pData points to the matrix data array.
+ */
void arm_mat_init_f32(
arm_matrix_instance_f32 * S,
uint16_t nRows,
@@ -1731,14 +1737,14 @@
*/
typedef struct
{
- q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */
+ q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */
#ifdef ARM_MATH_CM0_FAMILY
q15_t A1;
q15_t A2;
#else
q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/
#endif
- q15_t state[3]; /**< The state array of length 3. */
+ q15_t state[3]; /**< The state array of length 3. */
q15_t Kp; /**< The proportional gain. */
q15_t Ki; /**< The integral gain. */
q15_t Kd; /**< The derivative gain. */
@@ -1756,7 +1762,6 @@
q31_t Kp; /**< The proportional gain. */
q31_t Ki; /**< The integral gain. */
q31_t Kd; /**< The derivative gain. */
-
} arm_pid_instance_q31;
/**
@@ -1768,27 +1773,26 @@
float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */
float32_t A2; /**< The derived gain, A2 = Kd . */
float32_t state[3]; /**< The state array of length 3. */
- float32_t Kp; /**< The proportional gain. */
- float32_t Ki; /**< The integral gain. */
- float32_t Kd; /**< The derivative gain. */
+ float32_t Kp; /**< The proportional gain. */
+ float32_t Ki; /**< The integral gain. */
+ float32_t Kd; /**< The derivative gain. */
} arm_pid_instance_f32;
/**
* @brief Initialization function for the floating-point PID Control.
- * @param[in,out] *S points to an instance of the PID structure.
+ * @param[in,out] S points to an instance of the PID structure.
* @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state.
- * @return none.
*/
void arm_pid_init_f32(
arm_pid_instance_f32 * S,
int32_t resetStateFlag);
+
/**
* @brief Reset function for the floating-point PID Control.
- * @param[in,out] *S is an instance of the floating-point PID Control structure
- * @return none
+ * @param[in,out] S is an instance of the floating-point PID Control structure
*/
void arm_pid_reset_f32(
arm_pid_instance_f32 * S);
@@ -1796,9 +1800,8 @@
/**
* @brief Initialization function for the Q31 PID Control.
- * @param[in,out] *S points to an instance of the Q15 PID structure.
+ * @param[in,out] S points to an instance of the Q15 PID structure.
* @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state.
- * @return none.
*/
void arm_pid_init_q31(
arm_pid_instance_q31 * S,
@@ -1807,27 +1810,26 @@
/**
* @brief Reset function for the Q31 PID Control.
- * @param[in,out] *S points to an instance of the Q31 PID Control structure
- * @return none
+ * @param[in,out] S points to an instance of the Q31 PID Control structure
*/
void arm_pid_reset_q31(
arm_pid_instance_q31 * S);
+
/**
* @brief Initialization function for the Q15 PID Control.
- * @param[in,out] *S points to an instance of the Q15 PID structure.
- * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state.
- * @return none.
+ * @param[in,out] S points to an instance of the Q15 PID structure.
+ * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state.
*/
void arm_pid_init_q15(
arm_pid_instance_q15 * S,
int32_t resetStateFlag);
+
/**
* @brief Reset function for the Q15 PID Control.
- * @param[in,out] *S points to an instance of the q15 PID Control structure
- * @return none
+ * @param[in,out] S points to an instance of the q15 PID Control structure
*/
void arm_pid_reset_q15(
arm_pid_instance_q15 * S);
@@ -1847,7 +1849,6 @@
/**
* @brief Instance structure for the floating-point bilinear interpolation function.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows in the data table. */
@@ -1858,7 +1859,6 @@
/**
* @brief Instance structure for the Q31 bilinear interpolation function.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows in the data table. */
@@ -1869,7 +1869,6 @@
/**
* @brief Instance structure for the Q15 bilinear interpolation function.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows in the data table. */
@@ -1880,69 +1879,63 @@
/**
* @brief Instance structure for the Q15 bilinear interpolation function.
*/
-
typedef struct
{
uint16_t numRows; /**< number of rows in the data table. */
uint16_t numCols; /**< number of columns in the data table. */
- q7_t *pData; /**< points to the data table. */
+ q7_t *pData; /**< points to the data table. */
} arm_bilinear_interp_instance_q7;
/**
* @brief Q7 vector multiplication.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_mult_q7(
q7_t * pSrcA,
q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q15 vector multiplication.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_mult_q15(
q15_t * pSrcA,
q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q31 vector multiplication.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_mult_q31(
q31_t * pSrcA,
q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Floating-point vector multiplication.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_mult_f32(
float32_t * pSrcA,
float32_t * pSrcB,
@@ -1950,41 +1943,36 @@
uint32_t blockSize);
-
-
-
-
/**
* @brief Instance structure for the Q15 CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
- q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */
+ q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */
uint16_t *pBitRevTable; /**< points to the bit reversal table. */
uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
} arm_cfft_radix2_instance_q15;
+/* Deprecated */
arm_status arm_cfft_radix2_init_q15(
arm_cfft_radix2_instance_q15 * S,
uint16_t fftLen,
uint8_t ifftFlag,
uint8_t bitReverseFlag);
+/* Deprecated */
void arm_cfft_radix2_q15(
const arm_cfft_radix2_instance_q15 * S,
q15_t * pSrc);
-
/**
* @brief Instance structure for the Q15 CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
@@ -1996,12 +1984,14 @@
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
} arm_cfft_radix4_instance_q15;
+/* Deprecated */
arm_status arm_cfft_radix4_init_q15(
arm_cfft_radix4_instance_q15 * S,
uint16_t fftLen,
uint8_t ifftFlag,
uint8_t bitReverseFlag);
+/* Deprecated */
void arm_cfft_radix4_q15(
const arm_cfft_radix4_instance_q15 * S,
q15_t * pSrc);
@@ -2009,24 +1999,25 @@
/**
* @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
- q31_t *pTwiddle; /**< points to the Twiddle factor table. */
+ q31_t *pTwiddle; /**< points to the Twiddle factor table. */
uint16_t *pBitRevTable; /**< points to the bit reversal table. */
uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
} arm_cfft_radix2_instance_q31;
+/* Deprecated */
arm_status arm_cfft_radix2_init_q31(
arm_cfft_radix2_instance_q31 * S,
uint16_t fftLen,
uint8_t ifftFlag,
uint8_t bitReverseFlag);
+/* Deprecated */
void arm_cfft_radix2_q31(
const arm_cfft_radix2_instance_q31 * S,
q31_t * pSrc);
@@ -2034,7 +2025,6 @@
/**
* @brief Instance structure for the Q31 CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
@@ -2046,11 +2036,12 @@
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
} arm_cfft_radix4_instance_q31;
-
+/* Deprecated */
void arm_cfft_radix4_q31(
const arm_cfft_radix4_instance_q31 * S,
q31_t * pSrc);
+/* Deprecated */
arm_status arm_cfft_radix4_init_q31(
arm_cfft_radix4_instance_q31 * S,
uint16_t fftLen,
@@ -2060,7 +2051,6 @@
/**
* @brief Instance structure for the floating-point CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
@@ -2070,7 +2060,7 @@
uint16_t *pBitRevTable; /**< points to the bit reversal table. */
uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
- float32_t onebyfftLen; /**< value of 1/fftLen. */
+ float32_t onebyfftLen; /**< value of 1/fftLen. */
} arm_cfft_radix2_instance_f32;
/* Deprecated */
@@ -2088,7 +2078,6 @@
/**
* @brief Instance structure for the floating-point CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
@@ -2098,7 +2087,7 @@
uint16_t *pBitRevTable; /**< points to the bit reversal table. */
uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
- float32_t onebyfftLen; /**< value of 1/fftLen. */
+ float32_t onebyfftLen; /**< value of 1/fftLen. */
} arm_cfft_radix4_instance_f32;
/* Deprecated */
@@ -2114,9 +2103,42 @@
float32_t * pSrc);
/**
+ * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+ */
+ typedef struct
+ {
+ uint16_t fftLen; /**< length of the FFT. */
+ const q15_t *pTwiddle; /**< points to the Twiddle factor table. */
+ const uint16_t *pBitRevTable; /**< points to the bit reversal table. */
+ uint16_t bitRevLength; /**< bit reversal table length. */
+ } arm_cfft_instance_q15;
+
+void arm_cfft_q15(
+ const arm_cfft_instance_q15 * S,
+ q15_t * p1,
+ uint8_t ifftFlag,
+ uint8_t bitReverseFlag);
+
+ /**
+ * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+ */
+ typedef struct
+ {
+ uint16_t fftLen; /**< length of the FFT. */
+ const q31_t *pTwiddle; /**< points to the Twiddle factor table. */
+ const uint16_t *pBitRevTable; /**< points to the bit reversal table. */
+ uint16_t bitRevLength; /**< bit reversal table length. */
+ } arm_cfft_instance_q31;
+
+void arm_cfft_q31(
+ const arm_cfft_instance_q31 * S,
+ q31_t * p1,
+ uint8_t ifftFlag,
+ uint8_t bitReverseFlag);
+
+ /**
* @brief Instance structure for the floating-point CFFT/CIFFT function.
*/
-
typedef struct
{
uint16_t fftLen; /**< length of the FFT. */
@@ -2134,22 +2156,19 @@
/**
* @brief Instance structure for the Q15 RFFT/RIFFT function.
*/
-
typedef struct
{
uint32_t fftLenReal; /**< length of the real FFT. */
- uint32_t fftLenBy2; /**< length of the complex FFT. */
uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
- uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+ uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */
q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */
- arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */
+ const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */
} arm_rfft_instance_q15;
arm_status arm_rfft_init_q15(
arm_rfft_instance_q15 * S,
- arm_cfft_radix4_instance_q15 * S_CFFT,
uint32_t fftLenReal,
uint32_t ifftFlagR,
uint32_t bitReverseFlag);
@@ -2162,22 +2181,19 @@
/**
* @brief Instance structure for the Q31 RFFT/RIFFT function.
*/
-
typedef struct
{
uint32_t fftLenReal; /**< length of the real FFT. */
- uint32_t fftLenBy2; /**< length of the complex FFT. */
uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
- uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+ uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */
q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */
- arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */
+ const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */
} arm_rfft_instance_q31;
arm_status arm_rfft_init_q31(
arm_rfft_instance_q31 * S,
- arm_cfft_radix4_instance_q31 * S_CFFT,
uint32_t fftLenReal,
uint32_t ifftFlagR,
uint32_t bitReverseFlag);
@@ -2190,7 +2206,6 @@
/**
* @brief Instance structure for the floating-point RFFT/RIFFT function.
*/
-
typedef struct
{
uint32_t fftLenReal; /**< length of the real FFT. */
@@ -2218,17 +2233,16 @@
/**
* @brief Instance structure for the floating-point RFFT/RIFFT function.
*/
-
typedef struct
{
arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */
- uint16_t fftLenRFFT; /**< length of the real sequence */
- float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */
+ uint16_t fftLenRFFT; /**< length of the real sequence */
+ float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */
} arm_rfft_fast_instance_f32 ;
arm_status arm_rfft_fast_init_f32 (
- arm_rfft_fast_instance_f32 * S,
- uint16_t fftLen);
+ arm_rfft_fast_instance_f32 * S,
+ uint16_t fftLen);
void arm_rfft_fast_f32(
arm_rfft_fast_instance_f32 * S,
@@ -2238,29 +2252,28 @@
/**
* @brief Instance structure for the floating-point DCT4/IDCT4 function.
*/
-
typedef struct
{
- uint16_t N; /**< length of the DCT4. */
- uint16_t Nby2; /**< half of the length of the DCT4. */
- float32_t normalize; /**< normalizing factor. */
- float32_t *pTwiddle; /**< points to the twiddle factor table. */
- float32_t *pCosFactor; /**< points to the cosFactor table. */
+ uint16_t N; /**< length of the DCT4. */
+ uint16_t Nby2; /**< half of the length of the DCT4. */
+ float32_t normalize; /**< normalizing factor. */
+ float32_t *pTwiddle; /**< points to the twiddle factor table. */
+ float32_t *pCosFactor; /**< points to the cosFactor table. */
arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */
arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */
} arm_dct4_instance_f32;
+
/**
* @brief Initialization function for the floating-point DCT4/IDCT4.
- * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure.
- * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure.
- * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure.
+ * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure.
+ * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure.
+ * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure.
* @param[in] N length of the DCT4.
* @param[in] Nby2 half of the length of the DCT4.
* @param[in] normalize normalizing factor.
- * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
- */
-
+ * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
+ */
arm_status arm_dct4_init_f32(
arm_dct4_instance_f32 * S,
arm_rfft_instance_f32 * S_RFFT,
@@ -2269,45 +2282,44 @@
uint16_t Nby2,
float32_t normalize);
+
/**
* @brief Processing function for the floating-point DCT4/IDCT4.
- * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure.
- * @param[in] *pState points to state buffer.
- * @param[in,out] *pInlineBuffer points to the in-place input and output buffer.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure.
+ * @param[in] pState points to state buffer.
+ * @param[in,out] pInlineBuffer points to the in-place input and output buffer.
+ */
void arm_dct4_f32(
const arm_dct4_instance_f32 * S,
float32_t * pState,
float32_t * pInlineBuffer);
+
/**
* @brief Instance structure for the Q31 DCT4/IDCT4 function.
*/
-
typedef struct
{
- uint16_t N; /**< length of the DCT4. */
- uint16_t Nby2; /**< half of the length of the DCT4. */
- q31_t normalize; /**< normalizing factor. */
- q31_t *pTwiddle; /**< points to the twiddle factor table. */
- q31_t *pCosFactor; /**< points to the cosFactor table. */
+ uint16_t N; /**< length of the DCT4. */
+ uint16_t Nby2; /**< half of the length of the DCT4. */
+ q31_t normalize; /**< normalizing factor. */
+ q31_t *pTwiddle; /**< points to the twiddle factor table. */
+ q31_t *pCosFactor; /**< points to the cosFactor table. */
arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */
arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */
} arm_dct4_instance_q31;
+
/**
* @brief Initialization function for the Q31 DCT4/IDCT4.
- * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure.
- * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure
- * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure
+ * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure.
+ * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure
+ * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure
* @param[in] N length of the DCT4.
* @param[in] Nby2 half of the length of the DCT4.
* @param[in] normalize normalizing factor.
- * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
- */
-
+ * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+ */
arm_status arm_dct4_init_q31(
arm_dct4_instance_q31 * S,
arm_rfft_instance_q31 * S_RFFT,
@@ -2316,45 +2328,44 @@
uint16_t Nby2,
q31_t normalize);
+
/**
* @brief Processing function for the Q31 DCT4/IDCT4.
- * @param[in] *S points to an instance of the Q31 DCT4 structure.
- * @param[in] *pState points to state buffer.
- * @param[in,out] *pInlineBuffer points to the in-place input and output buffer.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 DCT4 structure.
+ * @param[in] pState points to state buffer.
+ * @param[in,out] pInlineBuffer points to the in-place input and output buffer.
+ */
void arm_dct4_q31(
const arm_dct4_instance_q31 * S,
q31_t * pState,
q31_t * pInlineBuffer);
+
/**
* @brief Instance structure for the Q15 DCT4/IDCT4 function.
*/
-
typedef struct
{
- uint16_t N; /**< length of the DCT4. */
- uint16_t Nby2; /**< half of the length of the DCT4. */
- q15_t normalize; /**< normalizing factor. */
- q15_t *pTwiddle; /**< points to the twiddle factor table. */
- q15_t *pCosFactor; /**< points to the cosFactor table. */
+ uint16_t N; /**< length of the DCT4. */
+ uint16_t Nby2; /**< half of the length of the DCT4. */
+ q15_t normalize; /**< normalizing factor. */
+ q15_t *pTwiddle; /**< points to the twiddle factor table. */
+ q15_t *pCosFactor; /**< points to the cosFactor table. */
arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */
arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */
} arm_dct4_instance_q15;
+
/**
* @brief Initialization function for the Q15 DCT4/IDCT4.
- * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure.
- * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure.
- * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure.
+ * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure.
+ * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure.
+ * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure.
* @param[in] N length of the DCT4.
* @param[in] Nby2 half of the length of the DCT4.
* @param[in] normalize normalizing factor.
- * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
- */
-
+ * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+ */
arm_status arm_dct4_init_q15(
arm_dct4_instance_q15 * S,
arm_rfft_instance_q15 * S_RFFT,
@@ -2363,164 +2374,153 @@
uint16_t Nby2,
q15_t normalize);
+
/**
* @brief Processing function for the Q15 DCT4/IDCT4.
- * @param[in] *S points to an instance of the Q15 DCT4 structure.
- * @param[in] *pState points to state buffer.
- * @param[in,out] *pInlineBuffer points to the in-place input and output buffer.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 DCT4 structure.
+ * @param[in] pState points to state buffer.
+ * @param[in,out] pInlineBuffer points to the in-place input and output buffer.
+ */
void arm_dct4_q15(
const arm_dct4_instance_q15 * S,
q15_t * pState,
q15_t * pInlineBuffer);
+
/**
* @brief Floating-point vector addition.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_add_f32(
float32_t * pSrcA,
float32_t * pSrcB,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q7 vector addition.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_add_q7(
q7_t * pSrcA,
q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q15 vector addition.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_add_q15(
q15_t * pSrcA,
q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q31 vector addition.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_add_q31(
q31_t * pSrcA,
q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Floating-point vector subtraction.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_sub_f32(
float32_t * pSrcA,
float32_t * pSrcB,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q7 vector subtraction.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_sub_q7(
q7_t * pSrcA,
q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q15 vector subtraction.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_sub_q15(
q15_t * pSrcA,
q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q31 vector subtraction.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_sub_q31(
q31_t * pSrcA,
q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Multiplies a floating-point vector by a scalar.
- * @param[in] *pSrc points to the input vector
- * @param[in] scale scale factor to be applied
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] scale scale factor to be applied
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_scale_f32(
float32_t * pSrc,
float32_t scale,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Multiplies a Q7 vector by a scalar.
- * @param[in] *pSrc points to the input vector
- * @param[in] scaleFract fractional portion of the scale value
- * @param[in] shift number of bits to shift the result by
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] scaleFract fractional portion of the scale value
+ * @param[in] shift number of bits to shift the result by
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_scale_q7(
q7_t * pSrc,
q7_t scaleFract,
@@ -2528,16 +2528,15 @@
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Multiplies a Q15 vector by a scalar.
- * @param[in] *pSrc points to the input vector
- * @param[in] scaleFract fractional portion of the scale value
- * @param[in] shift number of bits to shift the result by
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] scaleFract fractional portion of the scale value
+ * @param[in] shift number of bits to shift the result by
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_scale_q15(
q15_t * pSrc,
q15_t scaleFract,
@@ -2545,16 +2544,15 @@
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Multiplies a Q31 vector by a scalar.
- * @param[in] *pSrc points to the input vector
- * @param[in] scaleFract fractional portion of the scale value
- * @param[in] shift number of bits to shift the result by
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] scaleFract fractional portion of the scale value
+ * @param[in] shift number of bits to shift the result by
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_scale_q31(
q31_t * pSrc,
q31_t scaleFract,
@@ -2562,379 +2560,361 @@
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q7 vector absolute value.
- * @param[in] *pSrc points to the input buffer
- * @param[out] *pDst points to the output buffer
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input buffer
+ * @param[out] pDst points to the output buffer
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_abs_q7(
q7_t * pSrc,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Floating-point vector absolute value.
- * @param[in] *pSrc points to the input buffer
- * @param[out] *pDst points to the output buffer
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input buffer
+ * @param[out] pDst points to the output buffer
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_abs_f32(
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q15 vector absolute value.
- * @param[in] *pSrc points to the input buffer
- * @param[out] *pDst points to the output buffer
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input buffer
+ * @param[out] pDst points to the output buffer
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_abs_q15(
q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Q31 vector absolute value.
- * @param[in] *pSrc points to the input buffer
- * @param[out] *pDst points to the output buffer
- * @param[in] blockSize number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input buffer
+ * @param[out] pDst points to the output buffer
+ * @param[in] blockSize number of samples in each vector
+ */
void arm_abs_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Dot product of floating-point vectors.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] blockSize number of samples in each vector
- * @param[out] *result output result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] blockSize number of samples in each vector
+ * @param[out] result output result returned here
+ */
void arm_dot_prod_f32(
float32_t * pSrcA,
float32_t * pSrcB,
uint32_t blockSize,
float32_t * result);
+
/**
* @brief Dot product of Q7 vectors.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] blockSize number of samples in each vector
- * @param[out] *result output result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] blockSize number of samples in each vector
+ * @param[out] result output result returned here
+ */
void arm_dot_prod_q7(
q7_t * pSrcA,
q7_t * pSrcB,
uint32_t blockSize,
q31_t * result);
+
/**
* @brief Dot product of Q15 vectors.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] blockSize number of samples in each vector
- * @param[out] *result output result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] blockSize number of samples in each vector
+ * @param[out] result output result returned here
+ */
void arm_dot_prod_q15(
q15_t * pSrcA,
q15_t * pSrcB,
uint32_t blockSize,
q63_t * result);
+
/**
* @brief Dot product of Q31 vectors.
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] blockSize number of samples in each vector
- * @param[out] *result output result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] blockSize number of samples in each vector
+ * @param[out] result output result returned here
+ */
void arm_dot_prod_q31(
q31_t * pSrcA,
q31_t * pSrcB,
uint32_t blockSize,
q63_t * result);
+
/**
* @brief Shifts the elements of a Q7 vector a specified number of bits.
- * @param[in] *pSrc points to the input vector
- * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_shift_q7(
q7_t * pSrc,
int8_t shiftBits,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Shifts the elements of a Q15 vector a specified number of bits.
- * @param[in] *pSrc points to the input vector
- * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_shift_q15(
q15_t * pSrc,
int8_t shiftBits,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Shifts the elements of a Q31 vector a specified number of bits.
- * @param[in] *pSrc points to the input vector
- * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right.
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_shift_q31(
q31_t * pSrc,
int8_t shiftBits,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Adds a constant offset to a floating-point vector.
- * @param[in] *pSrc points to the input vector
- * @param[in] offset is the offset to be added
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] offset is the offset to be added
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_offset_f32(
float32_t * pSrc,
float32_t offset,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Adds a constant offset to a Q7 vector.
- * @param[in] *pSrc points to the input vector
- * @param[in] offset is the offset to be added
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] offset is the offset to be added
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_offset_q7(
q7_t * pSrc,
q7_t offset,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Adds a constant offset to a Q15 vector.
- * @param[in] *pSrc points to the input vector
- * @param[in] offset is the offset to be added
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] offset is the offset to be added
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_offset_q15(
q15_t * pSrc,
q15_t offset,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Adds a constant offset to a Q31 vector.
- * @param[in] *pSrc points to the input vector
- * @param[in] offset is the offset to be added
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[in] offset is the offset to be added
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_offset_q31(
q31_t * pSrc,
q31_t offset,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Negates the elements of a floating-point vector.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_negate_f32(
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Negates the elements of a Q7 vector.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_negate_q7(
q7_t * pSrc,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Negates the elements of a Q15 vector.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_negate_q15(
q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Negates the elements of a Q31 vector.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] blockSize number of samples in the vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] blockSize number of samples in the vector
+ */
void arm_negate_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
+
/**
* @brief Copies the elements of a floating-point vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_copy_f32(
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Copies the elements of a Q7 vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_copy_q7(
q7_t * pSrc,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Copies the elements of a Q15 vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_copy_q15(
q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Copies the elements of a Q31 vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_copy_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
+
/**
* @brief Fills a constant value into a floating-point vector.
- * @param[in] value input value to be filled
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] value input value to be filled
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_fill_f32(
float32_t value,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Fills a constant value into a Q7 vector.
- * @param[in] value input value to be filled
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] value input value to be filled
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_fill_q7(
q7_t value,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Fills a constant value into a Q15 vector.
- * @param[in] value input value to be filled
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] value input value to be filled
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_fill_q15(
q15_t value,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Fills a constant value into a Q31 vector.
- * @param[in] value input value to be filled
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] value input value to be filled
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_fill_q31(
q31_t value,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Convolution of floating-point sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1.
- * @return none.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1.
*/
-
void arm_conv_f32(
float32_t * pSrcA,
uint32_t srcALen,
@@ -2945,17 +2925,14 @@
/**
* @brief Convolution of Q15 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
- * @return none.
- */
-
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
+ */
void arm_conv_opt_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -2968,14 +2945,12 @@
/**
* @brief Convolution of Q15 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1.
- * @return none.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1.
*/
-
void arm_conv_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -2983,35 +2958,33 @@
uint32_t srcBLen,
q15_t * pDst);
- /**
- * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @return none.
- */
-
- void arm_conv_fast_q15(
- q15_t * pSrcA,
- uint32_t srcALen,
- q15_t * pSrcB,
- uint32_t srcBLen,
- q15_t * pDst);
/**
* @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ */
+ void arm_conv_fast_q15(
+ q15_t * pSrcA,
+ uint32_t srcALen,
+ q15_t * pSrcB,
+ uint32_t srcBLen,
+ q15_t * pDst);
+
+
+ /**
+ * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
+ */
void arm_conv_fast_opt_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -3022,17 +2995,14 @@
q15_t * pScratch2);
-
/**
* @brief Convolution of Q31 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ */
void arm_conv_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -3040,16 +3010,15 @@
uint32_t srcBLen,
q31_t * pDst);
+
/**
* @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ */
void arm_conv_fast_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -3060,16 +3029,14 @@
/**
* @brief Convolution of Q7 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+ */
void arm_conv_opt_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -3080,17 +3047,14 @@
q15_t * pScratch2);
-
/**
* @brief Convolution of Q7 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1.
+ */
void arm_conv_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -3101,16 +3065,15 @@
/**
* @brief Partial convolution of floating-point sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_f32(
float32_t * pSrcA,
uint32_t srcALen,
@@ -3120,20 +3083,20 @@
uint32_t firstIndex,
uint32_t numPoints);
- /**
+
+ /**
* @brief Partial convolution of Q15 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
- * @param[in] * pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] * pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_opt_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -3146,18 +3109,17 @@
q15_t * pScratch2);
-/**
+ /**
* @brief Partial convolution of Q15 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -3167,42 +3129,41 @@
uint32_t firstIndex,
uint32_t numPoints);
+
/**
* @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_fast_q15(
- q15_t * pSrcA,
- uint32_t srcALen,
- q15_t * pSrcB,
- uint32_t srcBLen,
- q15_t * pDst,
- uint32_t firstIndex,
- uint32_t numPoints);
+ q15_t * pSrcA,
+ uint32_t srcALen,
+ q15_t * pSrcB,
+ uint32_t srcBLen,
+ q15_t * pDst,
+ uint32_t firstIndex,
+ uint32_t numPoints);
/**
* @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
- * @param[in] * pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] * pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen).
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_fast_opt_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -3217,16 +3178,15 @@
/**
* @brief Partial convolution of Q31 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -3239,16 +3199,15 @@
/**
* @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_fast_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -3261,18 +3220,17 @@
/**
* @brief Partial convolution of Q7 sequences
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
- * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_opt_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -3287,16 +3245,15 @@
/**
* @brief Partial convolution of Q7 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data
- * @param[in] firstIndex is the first output sample to start with.
- * @param[in] numPoints is the number of output points to be computed.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data
+ * @param[in] firstIndex is the first output sample to start with.
+ * @param[in] numPoints is the number of output points to be computed.
* @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
*/
-
arm_status arm_conv_partial_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -3307,56 +3264,47 @@
uint32_t numPoints);
-
/**
* @brief Instance structure for the Q15 FIR decimator.
*/
-
typedef struct
{
- uint8_t M; /**< decimation factor. */
- uint16_t numTaps; /**< number of coefficients in the filter. */
- q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
- q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+ uint8_t M; /**< decimation factor. */
+ uint16_t numTaps; /**< number of coefficients in the filter. */
+ q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
+ q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
} arm_fir_decimate_instance_q15;
/**
* @brief Instance structure for the Q31 FIR decimator.
*/
-
typedef struct
{
uint8_t M; /**< decimation factor. */
uint16_t numTaps; /**< number of coefficients in the filter. */
- q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
- q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-
+ q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
+ q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
} arm_fir_decimate_instance_q31;
/**
* @brief Instance structure for the floating-point FIR decimator.
*/
-
typedef struct
{
- uint8_t M; /**< decimation factor. */
- uint16_t numTaps; /**< number of coefficients in the filter. */
- float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
- float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-
+ uint8_t M; /**< decimation factor. */
+ uint16_t numTaps; /**< number of coefficients in the filter. */
+ float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/
+ float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
} arm_fir_decimate_instance_f32;
-
/**
* @brief Processing function for the floating-point FIR decimator.
- * @param[in] *S points to an instance of the floating-point FIR decimator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of input samples to process per call.
- * @return none
- */
-
+ * @param[in] S points to an instance of the floating-point FIR decimator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_decimate_f32(
const arm_fir_decimate_instance_f32 * S,
float32_t * pSrc,
@@ -3366,16 +3314,15 @@
/**
* @brief Initialization function for the floating-point FIR decimator.
- * @param[in,out] *S points to an instance of the floating-point FIR decimator structure.
- * @param[in] numTaps number of coefficients in the filter.
- * @param[in] M decimation factor.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the floating-point FIR decimator structure.
+ * @param[in] numTaps number of coefficients in the filter.
+ * @param[in] M decimation factor.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* <code>blockSize</code> is not a multiple of <code>M</code>.
*/
-
arm_status arm_fir_decimate_init_f32(
arm_fir_decimate_instance_f32 * S,
uint16_t numTaps,
@@ -3384,30 +3331,28 @@
float32_t * pState,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q15 FIR decimator.
- * @param[in] *S points to an instance of the Q15 FIR decimator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of input samples to process per call.
- * @return none
- */
-
+ * @param[in] S points to an instance of the Q15 FIR decimator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_decimate_q15(
const arm_fir_decimate_instance_q15 * S,
q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q15 FIR decimator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of input samples to process per call.
- * @return none
- */
-
+ * @param[in] S points to an instance of the Q15 FIR decimator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_decimate_fast_q15(
const arm_fir_decimate_instance_q15 * S,
q15_t * pSrc,
@@ -3415,19 +3360,17 @@
uint32_t blockSize);
-
/**
* @brief Initialization function for the Q15 FIR decimator.
- * @param[in,out] *S points to an instance of the Q15 FIR decimator structure.
- * @param[in] numTaps number of coefficients in the filter.
- * @param[in] M decimation factor.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the Q15 FIR decimator structure.
+ * @param[in] numTaps number of coefficients in the filter.
+ * @param[in] M decimation factor.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* <code>blockSize</code> is not a multiple of <code>M</code>.
*/
-
arm_status arm_fir_decimate_init_q15(
arm_fir_decimate_instance_q15 * S,
uint16_t numTaps,
@@ -3436,15 +3379,14 @@
q15_t * pState,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q31 FIR decimator.
- * @param[in] *S points to an instance of the Q31 FIR decimator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
+ * @param[in] S points to an instance of the Q31 FIR decimator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
* @param[in] blockSize number of input samples to process per call.
- * @return none
- */
-
+ */
void arm_fir_decimate_q31(
const arm_fir_decimate_instance_q31 * S,
q31_t * pSrc,
@@ -3453,13 +3395,11 @@
/**
* @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
- * @param[in] *S points to an instance of the Q31 FIR decimator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of input samples to process per call.
- * @return none
- */
-
+ * @param[in] S points to an instance of the Q31 FIR decimator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_decimate_fast_q31(
arm_fir_decimate_instance_q31 * S,
q31_t * pSrc,
@@ -3469,16 +3409,15 @@
/**
* @brief Initialization function for the Q31 FIR decimator.
- * @param[in,out] *S points to an instance of the Q31 FIR decimator structure.
- * @param[in] numTaps number of coefficients in the filter.
- * @param[in] M decimation factor.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the Q31 FIR decimator structure.
+ * @param[in] numTaps number of coefficients in the filter.
+ * @param[in] M decimation factor.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* <code>blockSize</code> is not a multiple of <code>M</code>.
*/
-
arm_status arm_fir_decimate_init_q31(
arm_fir_decimate_instance_q31 * S,
uint16_t numTaps,
@@ -3488,11 +3427,9 @@
uint32_t blockSize);
-
/**
* @brief Instance structure for the Q15 FIR interpolator.
*/
-
typedef struct
{
uint8_t L; /**< upsample factor. */
@@ -3504,37 +3441,33 @@
/**
* @brief Instance structure for the Q31 FIR interpolator.
*/
-
typedef struct
{
uint8_t L; /**< upsample factor. */
uint16_t phaseLength; /**< length of each polyphase filter component. */
- q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */
- q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
+ q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */
+ q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
} arm_fir_interpolate_instance_q31;
/**
* @brief Instance structure for the floating-point FIR interpolator.
*/
-
typedef struct
{
uint8_t L; /**< upsample factor. */
uint16_t phaseLength; /**< length of each polyphase filter component. */
- float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */
- float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */
+ float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */
+ float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */
} arm_fir_interpolate_instance_f32;
/**
* @brief Processing function for the Q15 FIR interpolator.
- * @param[in] *S points to an instance of the Q15 FIR interpolator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 FIR interpolator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_interpolate_q15(
const arm_fir_interpolate_instance_q15 * S,
q15_t * pSrc,
@@ -3544,16 +3477,15 @@
/**
* @brief Initialization function for the Q15 FIR interpolator.
- * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure.
- * @param[in] L upsample factor.
- * @param[in] numTaps number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficient buffer.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the Q15 FIR interpolator structure.
+ * @param[in] L upsample factor.
+ * @param[in] numTaps number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficient buffer.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
*/
-
arm_status arm_fir_interpolate_init_q15(
arm_fir_interpolate_instance_q15 * S,
uint8_t L,
@@ -3562,33 +3494,32 @@
q15_t * pState,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q31 FIR interpolator.
- * @param[in] *S points to an instance of the Q15 FIR interpolator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 FIR interpolator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_interpolate_q31(
const arm_fir_interpolate_instance_q31 * S,
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q31 FIR interpolator.
- * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure.
- * @param[in] L upsample factor.
- * @param[in] numTaps number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficient buffer.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the Q31 FIR interpolator structure.
+ * @param[in] L upsample factor.
+ * @param[in] numTaps number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficient buffer.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
*/
-
arm_status arm_fir_interpolate_init_q31(
arm_fir_interpolate_instance_q31 * S,
uint8_t L,
@@ -3600,31 +3531,29 @@
/**
* @brief Processing function for the floating-point FIR interpolator.
- * @param[in] *S points to an instance of the floating-point FIR interpolator structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point FIR interpolator structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of input samples to process per call.
+ */
void arm_fir_interpolate_f32(
const arm_fir_interpolate_instance_f32 * S,
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point FIR interpolator.
- * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure.
- * @param[in] L upsample factor.
- * @param[in] numTaps number of filter coefficients in the filter.
- * @param[in] *pCoeffs points to the filter coefficient buffer.
- * @param[in] *pState points to the state buffer.
- * @param[in] blockSize number of input samples to process per call.
+ * @param[in,out] S points to an instance of the floating-point FIR interpolator structure.
+ * @param[in] L upsample factor.
+ * @param[in] numTaps number of filter coefficients in the filter.
+ * @param[in] pCoeffs points to the filter coefficient buffer.
+ * @param[in] pState points to the state buffer.
+ * @param[in] blockSize number of input samples to process per call.
* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
* the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
*/
-
arm_status arm_fir_interpolate_init_f32(
arm_fir_interpolate_instance_f32 * S,
uint8_t L,
@@ -3633,28 +3562,25 @@
float32_t * pState,
uint32_t blockSize);
+
/**
* @brief Instance structure for the high precision Q31 Biquad cascade filter.
*/
-
typedef struct
{
uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */
q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */
uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */
-
} arm_biquad_cas_df1_32x64_ins_q31;
/**
- * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
void arm_biquad_cas_df1_32x64_q31(
const arm_biquad_cas_df1_32x64_ins_q31 * S,
q31_t * pSrc,
@@ -3663,14 +3589,12 @@
/**
- * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure.
- * @param[in] numStages number of 2nd order stages in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format
+ */
void arm_biquad_cas_df1_32x64_init_q31(
arm_biquad_cas_df1_32x64_ins_q31 * S,
uint8_t numStages,
@@ -3679,11 +3603,9 @@
uint8_t postShift);
-
/**
* @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
*/
-
typedef struct
{
uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
@@ -3691,16 +3613,34 @@
float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */
} arm_biquad_cascade_df2T_instance_f32;
+ /**
+ * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+ */
+ typedef struct
+ {
+ uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
+ float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */
+ float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */
+ } arm_biquad_cascade_stereo_df2T_instance_f32;
+
+ /**
+ * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+ */
+ typedef struct
+ {
+ uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */
+ float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */
+ float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */
+ } arm_biquad_cascade_df2T_instance_f64;
+
/**
* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
- * @param[in] *S points to an instance of the filter data structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the filter data structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
void arm_biquad_cascade_df2T_f32(
const arm_biquad_cascade_df2T_instance_f32 * S,
float32_t * pSrc,
@@ -3709,14 +3649,40 @@
/**
+ * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels
+ * @param[in] S points to an instance of the filter data structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
+ void arm_biquad_cascade_stereo_df2T_f32(
+ const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+ float32_t * pSrc,
+ float32_t * pDst,
+ uint32_t blockSize);
+
+
+ /**
+ * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+ * @param[in] S points to an instance of the filter data structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
+ void arm_biquad_cascade_df2T_f64(
+ const arm_biquad_cascade_df2T_instance_f64 * S,
+ float64_t * pSrc,
+ float64_t * pDst,
+ uint32_t blockSize);
+
+
+ /**
* @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter.
- * @param[in,out] *S points to an instance of the filter data structure.
- * @param[in] numStages number of 2nd order stages in the filter.
- * @param[in] *pCoeffs points to the filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @return none
- */
-
+ * @param[in,out] S points to an instance of the filter data structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ */
void arm_biquad_cascade_df2T_init_f32(
arm_biquad_cascade_df2T_instance_f32 * S,
uint8_t numStages,
@@ -3724,33 +3690,57 @@
float32_t * pState);
+ /**
+ * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+ * @param[in,out] S points to an instance of the filter data structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ */
+ void arm_biquad_cascade_stereo_df2T_init_f32(
+ arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+ uint8_t numStages,
+ float32_t * pCoeffs,
+ float32_t * pState);
+
+
+ /**
+ * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+ * @param[in,out] S points to an instance of the filter data structure.
+ * @param[in] numStages number of 2nd order stages in the filter.
+ * @param[in] pCoeffs points to the filter coefficients.
+ * @param[in] pState points to the state buffer.
+ */
+ void arm_biquad_cascade_df2T_init_f64(
+ arm_biquad_cascade_df2T_instance_f64 * S,
+ uint8_t numStages,
+ float64_t * pCoeffs,
+ float64_t * pState);
+
/**
* @brief Instance structure for the Q15 FIR lattice filter.
*/
-
typedef struct
{
- uint16_t numStages; /**< number of filter stages. */
- q15_t *pState; /**< points to the state variable array. The array is of length numStages. */
- q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */
+ uint16_t numStages; /**< number of filter stages. */
+ q15_t *pState; /**< points to the state variable array. The array is of length numStages. */
+ q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */
} arm_fir_lattice_instance_q15;
/**
* @brief Instance structure for the Q31 FIR lattice filter.
*/
-
typedef struct
{
- uint16_t numStages; /**< number of filter stages. */
- q31_t *pState; /**< points to the state variable array. The array is of length numStages. */
- q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */
+ uint16_t numStages; /**< number of filter stages. */
+ q31_t *pState; /**< points to the state variable array. The array is of length numStages. */
+ q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */
} arm_fir_lattice_instance_q31;
/**
* @brief Instance structure for the floating-point FIR lattice filter.
*/
-
typedef struct
{
uint16_t numStages; /**< number of filter stages. */
@@ -3758,15 +3748,14 @@
float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */
} arm_fir_lattice_instance_f32;
+
/**
* @brief Initialization function for the Q15 FIR lattice filter.
- * @param[in] *S points to an instance of the Q15 FIR lattice structure.
+ * @param[in] S points to an instance of the Q15 FIR lattice structure.
* @param[in] numStages number of filter stages.
- * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages.
- * @param[in] *pState points to the state buffer. The array is of length numStages.
- * @return none.
- */
-
+ * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages.
+ * @param[in] pState points to the state buffer. The array is of length numStages.
+ */
void arm_fir_lattice_init_q15(
arm_fir_lattice_instance_q15 * S,
uint16_t numStages,
@@ -3776,11 +3765,10 @@
/**
* @brief Processing function for the Q15 FIR lattice filter.
- * @param[in] *S points to an instance of the Q15 FIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
+ * @param[in] S points to an instance of the Q15 FIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
*/
void arm_fir_lattice_q15(
const arm_fir_lattice_instance_q15 * S,
@@ -3788,15 +3776,14 @@
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q31 FIR lattice filter.
- * @param[in] *S points to an instance of the Q31 FIR lattice structure.
+ * @param[in] S points to an instance of the Q31 FIR lattice structure.
* @param[in] numStages number of filter stages.
- * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages.
- * @param[in] *pState points to the state buffer. The array is of length numStages.
- * @return none.
- */
-
+ * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages.
+ * @param[in] pState points to the state buffer. The array is of length numStages.
+ */
void arm_fir_lattice_init_q31(
arm_fir_lattice_instance_q31 * S,
uint16_t numStages,
@@ -3806,58 +3793,55 @@
/**
* @brief Processing function for the Q31 FIR lattice filter.
- * @param[in] *S points to an instance of the Q31 FIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 FIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
void arm_fir_lattice_q31(
const arm_fir_lattice_instance_q31 * S,
q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point FIR lattice filter.
- * @param[in] *S points to an instance of the floating-point FIR lattice structure.
+ * @param[in] S points to an instance of the floating-point FIR lattice structure.
* @param[in] numStages number of filter stages.
- * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages.
- * @param[in] *pState points to the state buffer. The array is of length numStages.
- * @return none.
+ * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages.
+ * @param[in] pState points to the state buffer. The array is of length numStages.
*/
-
void arm_fir_lattice_init_f32(
arm_fir_lattice_instance_f32 * S,
uint16_t numStages,
float32_t * pCoeffs,
float32_t * pState);
+
/**
* @brief Processing function for the floating-point FIR lattice filter.
- * @param[in] *S points to an instance of the floating-point FIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point FIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] blockSize number of samples to process.
+ */
void arm_fir_lattice_f32(
const arm_fir_lattice_instance_f32 * S,
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Instance structure for the Q15 IIR lattice filter.
*/
typedef struct
{
- uint16_t numStages; /**< number of stages in the filter. */
- q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
- q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
- q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
+ uint16_t numStages; /**< number of stages in the filter. */
+ q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
+ q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
+ q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
} arm_iir_lattice_instance_q15;
/**
@@ -3865,10 +3849,10 @@
*/
typedef struct
{
- uint16_t numStages; /**< number of stages in the filter. */
- q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
- q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
- q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
+ uint16_t numStages; /**< number of stages in the filter. */
+ q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
+ q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
+ q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
} arm_iir_lattice_instance_q31;
/**
@@ -3876,38 +3860,36 @@
*/
typedef struct
{
- uint16_t numStages; /**< number of stages in the filter. */
- float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
- float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
- float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
+ uint16_t numStages; /**< number of stages in the filter. */
+ float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */
+ float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */
+ float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */
} arm_iir_lattice_instance_f32;
+
/**
* @brief Processing function for the floating-point IIR lattice filter.
- * @param[in] *S points to an instance of the floating-point IIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point IIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_iir_lattice_f32(
const arm_iir_lattice_instance_f32 * S,
float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point IIR lattice filter.
- * @param[in] *S points to an instance of the floating-point IIR lattice structure.
- * @param[in] numStages number of stages in the filter.
- * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages.
- * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1.
- * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize-1.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point IIR lattice structure.
+ * @param[in] numStages number of stages in the filter.
+ * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages.
+ * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1.
+ * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_iir_lattice_init_f32(
arm_iir_lattice_instance_f32 * S,
uint16_t numStages,
@@ -3919,13 +3901,11 @@
/**
* @brief Processing function for the Q31 IIR lattice filter.
- * @param[in] *S points to an instance of the Q31 IIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 IIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_iir_lattice_q31(
const arm_iir_lattice_instance_q31 * S,
q31_t * pSrc,
@@ -3935,15 +3915,13 @@
/**
* @brief Initialization function for the Q31 IIR lattice filter.
- * @param[in] *S points to an instance of the Q31 IIR lattice structure.
- * @param[in] numStages number of stages in the filter.
- * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages.
- * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1.
- * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 IIR lattice structure.
+ * @param[in] numStages number of stages in the filter.
+ * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages.
+ * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1.
+ * @param[in] pState points to the state buffer. The array is of length numStages+blockSize.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_iir_lattice_init_q31(
arm_iir_lattice_instance_q31 * S,
uint16_t numStages,
@@ -3955,13 +3933,11 @@
/**
* @brief Processing function for the Q15 IIR lattice filter.
- * @param[in] *S points to an instance of the Q15 IIR lattice structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 IIR lattice structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_iir_lattice_q15(
const arm_iir_lattice_instance_q15 * S,
q15_t * pSrc,
@@ -3971,15 +3947,13 @@
/**
* @brief Initialization function for the Q15 IIR lattice filter.
- * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure.
+ * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure.
* @param[in] numStages number of stages in the filter.
- * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages.
- * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1.
- * @param[in] *pState points to state buffer. The array is of length numStages+blockSize.
- * @param[in] blockSize number of samples to process per call.
- * @return none.
+ * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages.
+ * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1.
+ * @param[in] pState points to state buffer. The array is of length numStages+blockSize.
+ * @param[in] blockSize number of samples to process per call.
*/
-
void arm_iir_lattice_init_q15(
arm_iir_lattice_instance_q15 * S,
uint16_t numStages,
@@ -3988,10 +3962,10 @@
q15_t * pState,
uint32_t blockSize);
+
/**
* @brief Instance structure for the floating-point LMS filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4000,17 +3974,16 @@
float32_t mu; /**< step size that controls filter coefficient updates. */
} arm_lms_instance_f32;
+
/**
* @brief Processing function for floating-point LMS filter.
- * @param[in] *S points to an instance of the floating-point LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_f32(
const arm_lms_instance_f32 * S,
float32_t * pSrc,
@@ -4019,17 +3992,16 @@
float32_t * pErr,
uint32_t blockSize);
+
/**
* @brief Initialization function for floating-point LMS filter.
- * @param[in] *S points to an instance of the floating-point LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to the coefficient buffer.
- * @param[in] *pState points to state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to the coefficient buffer.
+ * @param[in] pState points to state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_init_f32(
arm_lms_instance_f32 * S,
uint16_t numTaps,
@@ -4038,10 +4010,10 @@
float32_t mu,
uint32_t blockSize);
+
/**
* @brief Instance structure for the Q15 LMS filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4054,16 +4026,14 @@
/**
* @brief Initialization function for the Q15 LMS filter.
- * @param[in] *S points to an instance of the Q15 LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to the coefficient buffer.
- * @param[in] *pState points to the state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @param[in] postShift bit shift applied to coefficients.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to the coefficient buffer.
+ * @param[in] pState points to the state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ * @param[in] postShift bit shift applied to coefficients.
+ */
void arm_lms_init_q15(
arm_lms_instance_q15 * S,
uint16_t numTaps,
@@ -4073,17 +4043,16 @@
uint32_t blockSize,
uint32_t postShift);
+
/**
* @brief Processing function for Q15 LMS filter.
- * @param[in] *S points to an instance of the Q15 LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_q15(
const arm_lms_instance_q15 * S,
q15_t * pSrc,
@@ -4096,7 +4065,6 @@
/**
* @brief Instance structure for the Q31 LMS filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4104,20 +4072,18 @@
q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */
q31_t mu; /**< step size that controls filter coefficient updates. */
uint32_t postShift; /**< bit shift applied to coefficients. */
-
} arm_lms_instance_q31;
+
/**
* @brief Processing function for Q31 LMS filter.
- * @param[in] *S points to an instance of the Q15 LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_q31(
const arm_lms_instance_q31 * S,
q31_t * pSrc,
@@ -4126,18 +4092,17 @@
q31_t * pErr,
uint32_t blockSize);
+
/**
* @brief Initialization function for Q31 LMS filter.
- * @param[in] *S points to an instance of the Q31 LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to coefficient buffer.
- * @param[in] *pState points to state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @param[in] postShift bit shift applied to coefficients.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to coefficient buffer.
+ * @param[in] pState points to state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ * @param[in] postShift bit shift applied to coefficients.
+ */
void arm_lms_init_q31(
arm_lms_instance_q31 * S,
uint16_t numTaps,
@@ -4147,31 +4112,30 @@
uint32_t blockSize,
uint32_t postShift);
+
/**
* @brief Instance structure for the floating-point normalized LMS filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */
- float32_t mu; /**< step size that control filter coefficient updates. */
- float32_t energy; /**< saves previous frame energy. */
- float32_t x0; /**< saves previous input sample. */
+ float32_t mu; /**< step size that control filter coefficient updates. */
+ float32_t energy; /**< saves previous frame energy. */
+ float32_t x0; /**< saves previous input sample. */
} arm_lms_norm_instance_f32;
+
/**
* @brief Processing function for floating-point normalized LMS filter.
- * @param[in] *S points to an instance of the floating-point normalized LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point normalized LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_norm_f32(
arm_lms_norm_instance_f32 * S,
float32_t * pSrc,
@@ -4180,17 +4144,16 @@
float32_t * pErr,
uint32_t blockSize);
+
/**
* @brief Initialization function for floating-point normalized LMS filter.
- * @param[in] *S points to an instance of the floating-point LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to coefficient buffer.
- * @param[in] *pState points to state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the floating-point LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to coefficient buffer.
+ * @param[in] pState points to state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_norm_init_f32(
arm_lms_norm_instance_f32 * S,
uint16_t numTaps,
@@ -4215,17 +4178,16 @@
q31_t x0; /**< saves previous input sample. */
} arm_lms_norm_instance_q31;
+
/**
* @brief Processing function for Q31 normalized LMS filter.
- * @param[in] *S points to an instance of the Q31 normalized LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 normalized LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_norm_q31(
arm_lms_norm_instance_q31 * S,
q31_t * pSrc,
@@ -4234,18 +4196,17 @@
q31_t * pErr,
uint32_t blockSize);
+
/**
* @brief Initialization function for Q31 normalized LMS filter.
- * @param[in] *S points to an instance of the Q31 normalized LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to coefficient buffer.
- * @param[in] *pState points to state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @param[in] postShift bit shift applied to coefficients.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q31 normalized LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to coefficient buffer.
+ * @param[in] pState points to state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ * @param[in] postShift bit shift applied to coefficients.
+ */
void arm_lms_norm_init_q31(
arm_lms_norm_instance_q31 * S,
uint16_t numTaps,
@@ -4255,33 +4216,32 @@
uint32_t blockSize,
uint8_t postShift);
+
/**
* @brief Instance structure for the Q15 normalized LMS filter.
*/
-
typedef struct
{
- uint16_t numTaps; /**< Number of coefficients in the filter. */
+ uint16_t numTaps; /**< Number of coefficients in the filter. */
q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */
- q15_t mu; /**< step size that controls filter coefficient updates. */
- uint8_t postShift; /**< bit shift applied to coefficients. */
- q15_t *recipTable; /**< Points to the reciprocal initial value table. */
- q15_t energy; /**< saves previous frame energy. */
- q15_t x0; /**< saves previous input sample. */
+ q15_t mu; /**< step size that controls filter coefficient updates. */
+ uint8_t postShift; /**< bit shift applied to coefficients. */
+ q15_t *recipTable; /**< Points to the reciprocal initial value table. */
+ q15_t energy; /**< saves previous frame energy. */
+ q15_t x0; /**< saves previous input sample. */
} arm_lms_norm_instance_q15;
+
/**
* @brief Processing function for Q15 normalized LMS filter.
- * @param[in] *S points to an instance of the Q15 normalized LMS filter structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[in] *pRef points to the block of reference data.
- * @param[out] *pOut points to the block of output data.
- * @param[out] *pErr points to the block of error data.
- * @param[in] blockSize number of samples to process.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 normalized LMS filter structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[in] pRef points to the block of reference data.
+ * @param[out] pOut points to the block of output data.
+ * @param[out] pErr points to the block of error data.
+ * @param[in] blockSize number of samples to process.
+ */
void arm_lms_norm_q15(
arm_lms_norm_instance_q15 * S,
q15_t * pSrc,
@@ -4293,16 +4253,14 @@
/**
* @brief Initialization function for Q15 normalized LMS filter.
- * @param[in] *S points to an instance of the Q15 normalized LMS filter structure.
- * @param[in] numTaps number of filter coefficients.
- * @param[in] *pCoeffs points to coefficient buffer.
- * @param[in] *pState points to state buffer.
- * @param[in] mu step size that controls filter coefficient updates.
- * @param[in] blockSize number of samples to process.
- * @param[in] postShift bit shift applied to coefficients.
- * @return none.
- */
-
+ * @param[in] S points to an instance of the Q15 normalized LMS filter structure.
+ * @param[in] numTaps number of filter coefficients.
+ * @param[in] pCoeffs points to coefficient buffer.
+ * @param[in] pState points to state buffer.
+ * @param[in] mu step size that controls filter coefficient updates.
+ * @param[in] blockSize number of samples to process.
+ * @param[in] postShift bit shift applied to coefficients.
+ */
void arm_lms_norm_init_q15(
arm_lms_norm_instance_q15 * S,
uint16_t numTaps,
@@ -4312,16 +4270,15 @@
uint32_t blockSize,
uint8_t postShift);
+
/**
* @brief Correlation of floating-point sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ */
void arm_correlate_f32(
float32_t * pSrcA,
uint32_t srcALen,
@@ -4332,13 +4289,12 @@
/**
* @brief Correlation of Q15 sequences
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @return none.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
*/
void arm_correlate_opt_q15(
q15_t * pSrcA,
@@ -4351,12 +4307,11 @@
/**
* @brief Correlation of Q15 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
*/
void arm_correlate_q15(
@@ -4366,36 +4321,33 @@
uint32_t srcBLen,
q15_t * pDst);
+
/**
* @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
*/
void arm_correlate_fast_q15(
- q15_t * pSrcA,
- uint32_t srcALen,
- q15_t * pSrcB,
- uint32_t srcBLen,
- q15_t * pDst);
-
+ q15_t * pSrcA,
+ uint32_t srcALen,
+ q15_t * pSrcB,
+ uint32_t srcBLen,
+ q15_t * pDst);
/**
* @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ */
void arm_correlate_fast_opt_q15(
q15_t * pSrcA,
uint32_t srcALen,
@@ -4404,16 +4356,15 @@
q15_t * pDst,
q15_t * pScratch);
+
/**
* @brief Correlation of Q31 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ */
void arm_correlate_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -4421,16 +4372,15 @@
uint32_t srcBLen,
q31_t * pDst);
+
/**
* @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ */
void arm_correlate_fast_q31(
q31_t * pSrcA,
uint32_t srcALen,
@@ -4439,19 +4389,16 @@
q31_t * pDst);
-
/**
* @brief Correlation of Q7 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+ */
void arm_correlate_opt_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -4464,14 +4411,12 @@
/**
* @brief Correlation of Q7 sequences.
- * @param[in] *pSrcA points to the first input sequence.
- * @param[in] srcALen length of the first input sequence.
- * @param[in] *pSrcB points to the second input sequence.
- * @param[in] srcBLen length of the second input sequence.
- * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input sequence.
+ * @param[in] srcALen length of the first input sequence.
+ * @param[in] pSrcB points to the second input sequence.
+ * @param[in] srcBLen length of the second input sequence.
+ * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1.
+ */
void arm_correlate_q7(
q7_t * pSrcA,
uint32_t srcALen,
@@ -4496,7 +4441,6 @@
/**
* @brief Instance structure for the Q31 sparse FIR filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4510,7 +4454,6 @@
/**
* @brief Instance structure for the Q15 sparse FIR filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4524,7 +4467,6 @@
/**
* @brief Instance structure for the Q7 sparse FIR filter.
*/
-
typedef struct
{
uint16_t numTaps; /**< number of coefficients in the filter. */
@@ -4535,16 +4477,15 @@
int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */
} arm_fir_sparse_instance_q7;
+
/**
* @brief Processing function for the floating-point sparse FIR filter.
- * @param[in] *S points to an instance of the floating-point sparse FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] *pScratchIn points to a temporary buffer of size blockSize.
+ * @param[in] S points to an instance of the floating-point sparse FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] pScratchIn points to a temporary buffer of size blockSize.
* @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ */
void arm_fir_sparse_f32(
arm_fir_sparse_instance_f32 * S,
float32_t * pSrc,
@@ -4552,18 +4493,17 @@
float32_t * pScratchIn,
uint32_t blockSize);
+
/**
* @brief Initialization function for the floating-point sparse FIR filter.
- * @param[in,out] *S points to an instance of the floating-point sparse FIR structure.
+ * @param[in,out] S points to an instance of the floating-point sparse FIR structure.
* @param[in] numTaps number of nonzero coefficients in the filter.
- * @param[in] *pCoeffs points to the array of filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] *pTapDelay points to the array of offset times.
+ * @param[in] pCoeffs points to the array of filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] pTapDelay points to the array of offset times.
* @param[in] maxDelay maximum offset time supported.
* @param[in] blockSize number of samples that will be processed per block.
- * @return none
- */
-
+ */
void arm_fir_sparse_init_f32(
arm_fir_sparse_instance_f32 * S,
uint16_t numTaps,
@@ -4573,16 +4513,15 @@
uint16_t maxDelay,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q31 sparse FIR filter.
- * @param[in] *S points to an instance of the Q31 sparse FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] *pScratchIn points to a temporary buffer of size blockSize.
+ * @param[in] S points to an instance of the Q31 sparse FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] pScratchIn points to a temporary buffer of size blockSize.
* @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ */
void arm_fir_sparse_q31(
arm_fir_sparse_instance_q31 * S,
q31_t * pSrc,
@@ -4590,18 +4529,17 @@
q31_t * pScratchIn,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q31 sparse FIR filter.
- * @param[in,out] *S points to an instance of the Q31 sparse FIR structure.
+ * @param[in,out] S points to an instance of the Q31 sparse FIR structure.
* @param[in] numTaps number of nonzero coefficients in the filter.
- * @param[in] *pCoeffs points to the array of filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] *pTapDelay points to the array of offset times.
+ * @param[in] pCoeffs points to the array of filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] pTapDelay points to the array of offset times.
* @param[in] maxDelay maximum offset time supported.
* @param[in] blockSize number of samples that will be processed per block.
- * @return none
- */
-
+ */
void arm_fir_sparse_init_q31(
arm_fir_sparse_instance_q31 * S,
uint16_t numTaps,
@@ -4611,17 +4549,16 @@
uint16_t maxDelay,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q15 sparse FIR filter.
- * @param[in] *S points to an instance of the Q15 sparse FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] *pScratchIn points to a temporary buffer of size blockSize.
- * @param[in] *pScratchOut points to a temporary buffer of size blockSize.
+ * @param[in] S points to an instance of the Q15 sparse FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] pScratchIn points to a temporary buffer of size blockSize.
+ * @param[in] pScratchOut points to a temporary buffer of size blockSize.
* @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ */
void arm_fir_sparse_q15(
arm_fir_sparse_instance_q15 * S,
q15_t * pSrc,
@@ -4633,16 +4570,14 @@
/**
* @brief Initialization function for the Q15 sparse FIR filter.
- * @param[in,out] *S points to an instance of the Q15 sparse FIR structure.
+ * @param[in,out] S points to an instance of the Q15 sparse FIR structure.
* @param[in] numTaps number of nonzero coefficients in the filter.
- * @param[in] *pCoeffs points to the array of filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] *pTapDelay points to the array of offset times.
+ * @param[in] pCoeffs points to the array of filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] pTapDelay points to the array of offset times.
* @param[in] maxDelay maximum offset time supported.
* @param[in] blockSize number of samples that will be processed per block.
- * @return none
- */
-
+ */
void arm_fir_sparse_init_q15(
arm_fir_sparse_instance_q15 * S,
uint16_t numTaps,
@@ -4652,17 +4587,16 @@
uint16_t maxDelay,
uint32_t blockSize);
+
/**
* @brief Processing function for the Q7 sparse FIR filter.
- * @param[in] *S points to an instance of the Q7 sparse FIR structure.
- * @param[in] *pSrc points to the block of input data.
- * @param[out] *pDst points to the block of output data
- * @param[in] *pScratchIn points to a temporary buffer of size blockSize.
- * @param[in] *pScratchOut points to a temporary buffer of size blockSize.
+ * @param[in] S points to an instance of the Q7 sparse FIR structure.
+ * @param[in] pSrc points to the block of input data.
+ * @param[out] pDst points to the block of output data
+ * @param[in] pScratchIn points to a temporary buffer of size blockSize.
+ * @param[in] pScratchOut points to a temporary buffer of size blockSize.
* @param[in] blockSize number of input samples to process per call.
- * @return none.
- */
-
+ */
void arm_fir_sparse_q7(
arm_fir_sparse_instance_q7 * S,
q7_t * pSrc,
@@ -4671,18 +4605,17 @@
q31_t * pScratchOut,
uint32_t blockSize);
+
/**
* @brief Initialization function for the Q7 sparse FIR filter.
- * @param[in,out] *S points to an instance of the Q7 sparse FIR structure.
+ * @param[in,out] S points to an instance of the Q7 sparse FIR structure.
* @param[in] numTaps number of nonzero coefficients in the filter.
- * @param[in] *pCoeffs points to the array of filter coefficients.
- * @param[in] *pState points to the state buffer.
- * @param[in] *pTapDelay points to the array of offset times.
+ * @param[in] pCoeffs points to the array of filter coefficients.
+ * @param[in] pState points to the state buffer.
+ * @param[in] pTapDelay points to the array of offset times.
* @param[in] maxDelay maximum offset time supported.
* @param[in] blockSize number of samples that will be processed per block.
- * @return none
- */
-
+ */
void arm_fir_sparse_init_q7(
arm_fir_sparse_instance_q7 * S,
uint16_t numTaps,
@@ -4693,27 +4626,24 @@
uint32_t blockSize);
- /*
+ /**
* @brief Floating-point sin_cos function.
- * @param[in] theta input value in degrees
- * @param[out] *pSinVal points to the processed sine output.
- * @param[out] *pCosVal points to the processed cos output.
- * @return none.
- */
-
+ * @param[in] theta input value in degrees
+ * @param[out] pSinVal points to the processed sine output.
+ * @param[out] pCosVal points to the processed cos output.
+ */
void arm_sin_cos_f32(
float32_t theta,
float32_t * pSinVal,
- float32_t * pCcosVal);
-
- /*
+ float32_t * pCosVal);
+
+
+ /**
* @brief Q31 sin_cos function.
* @param[in] theta scaled input value in degrees
- * @param[out] *pSinVal points to the processed sine output.
- * @param[out] *pCosVal points to the processed cosine output.
- * @return none.
- */
-
+ * @param[out] pSinVal points to the processed sine output.
+ * @param[out] pCosVal points to the processed cosine output.
+ */
void arm_sin_cos_q31(
q31_t theta,
q31_t * pSinVal,
@@ -4722,12 +4652,10 @@
/**
* @brief Floating-point complex conjugate.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_conj_f32(
float32_t * pSrc,
float32_t * pDst,
@@ -4735,66 +4663,58 @@
/**
* @brief Q31 complex conjugate.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_conj_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q15 complex conjugate.
- * @param[in] *pSrc points to the input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_conj_q15(
q15_t * pSrc,
q15_t * pDst,
uint32_t numSamples);
-
/**
* @brief Floating-point complex magnitude squared
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_squared_f32(
float32_t * pSrc,
float32_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q31 complex magnitude squared
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_squared_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q15 complex magnitude squared
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_squared_q15(
q15_t * pSrc,
q15_t * pDst,
@@ -4869,12 +4789,10 @@
/**
* @brief Process function for the floating-point PID Control.
- * @param[in,out] *S is an instance of the floating-point PID Control structure
- * @param[in] in input sample to process
+ * @param[in,out] S is an instance of the floating-point PID Control structure
+ * @param[in] in input sample to process
* @return out processed output sample.
*/
-
-
static __INLINE float32_t arm_pid_f32(
arm_pid_instance_f32 * S,
float32_t in)
@@ -4897,8 +4815,8 @@
/**
* @brief Process function for the Q31 PID Control.
- * @param[in,out] *S points to an instance of the Q31 PID Control structure
- * @param[in] in input sample to process
+ * @param[in,out] S points to an instance of the Q31 PID Control structure
+ * @param[in] in input sample to process
* @return out processed output sample.
*
* <b>Scaling and Overflow Behavior:</b>
@@ -4909,7 +4827,6 @@
* In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.
* After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
*/
-
static __INLINE q31_t arm_pid_q31(
arm_pid_instance_q31 * S,
q31_t in)
@@ -4939,13 +4856,13 @@
/* return to application */
return (out);
-
}
+
/**
* @brief Process function for the Q15 PID Control.
- * @param[in,out] *S points to an instance of the Q15 PID Control structure
- * @param[in] in input sample to process
+ * @param[in,out] S points to an instance of the Q15 PID Control structure
+ * @param[in] in input sample to process
* @return out processed output sample.
*
* <b>Scaling and Overflow Behavior:</b>
@@ -4957,7 +4874,6 @@
* After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.
* Lastly, the accumulator is saturated to yield a result in 1.15 format.
*/
-
static __INLINE q15_t arm_pid_q15(
arm_pid_instance_q15 * S,
q15_t in)
@@ -4971,12 +4887,11 @@
/* Implementation of PID controller */
/* acc = A0 * x[n] */
- acc = (q31_t) __SMUAD(S->A0, in);
+ acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);
/* acc += A1 * x[n-1] + A2 * x[n-2] */
vstate = __SIMD32_CONST(S->state);
- acc = __SMLALD(S->A1, (q31_t) *vstate, acc);
-
+ acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc);
#else
/* acc = A0 * x[n] */
acc = ((q31_t) S->A0) * in;
@@ -4984,7 +4899,6 @@
/* acc += A1 * x[n-1] + A2 * x[n-2] */
acc += (q31_t) S->A1 * S->state[0];
acc += (q31_t) S->A2 * S->state[1];
-
#endif
/* acc += y[n-1] */
@@ -5000,7 +4914,6 @@
/* return to application */
return (out);
-
}
/**
@@ -5010,23 +4923,33 @@
/**
* @brief Floating-point matrix inverse.
- * @param[in] *src points to the instance of the input floating-point matrix structure.
- * @param[out] *dst points to the instance of the output floating-point matrix structure.
+ * @param[in] src points to the instance of the input floating-point matrix structure.
+ * @param[out] dst points to the instance of the output floating-point matrix structure.
* @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
* If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
*/
-
arm_status arm_mat_inverse_f32(
const arm_matrix_instance_f32 * src,
arm_matrix_instance_f32 * dst);
+ /**
+ * @brief Floating-point matrix inverse.
+ * @param[in] src points to the instance of the input floating-point matrix structure.
+ * @param[out] dst points to the instance of the output floating-point matrix structure.
+ * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
+ * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+ */
+ arm_status arm_mat_inverse_f64(
+ const arm_matrix_instance_f64 * src,
+ arm_matrix_instance_f64 * dst);
+
+
/**
* @ingroup groupController
*/
-
/**
* @defgroup clarke Vector Clarke Transform
* Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.
@@ -5057,13 +4980,11 @@
/**
*
* @brief Floating-point Clarke transform
- * @param[in] Ia input three-phase coordinate <code>a</code>
- * @param[in] Ib input three-phase coordinate <code>b</code>
- * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha
- * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta
- * @return none.
- */
-
+ * @param[in] Ia input three-phase coordinate <code>a</code>
+ * @param[in] Ib input three-phase coordinate <code>b</code>
+ * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha
+ * @param[out] pIbeta points to output two-phase orthogonal vector axis beta
+ */
static __INLINE void arm_clarke_f32(
float32_t Ia,
float32_t Ib,
@@ -5074,18 +4995,16 @@
*pIalpha = Ia;
/* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */
- *pIbeta =
- ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);
-
+ *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);
}
+
/**
* @brief Clarke transform for Q31 version
- * @param[in] Ia input three-phase coordinate <code>a</code>
- * @param[in] Ib input three-phase coordinate <code>b</code>
- * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha
- * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta
- * @return none.
+ * @param[in] Ia input three-phase coordinate <code>a</code>
+ * @param[in] Ib input three-phase coordinate <code>b</code>
+ * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha
+ * @param[out] pIbeta points to output two-phase orthogonal vector axis beta
*
* <b>Scaling and Overflow Behavior:</b>
* \par
@@ -5093,7 +5012,6 @@
* The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
* There is saturation on the addition, hence there is no risk of overflow.
*/
-
static __INLINE void arm_clarke_q31(
q31_t Ia,
q31_t Ib,
@@ -5121,10 +5039,9 @@
/**
* @brief Converts the elements of the Q7 vector to Q31 vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_q7_to_q31(
q7_t * pSrc,
@@ -5133,7 +5050,6 @@
-
/**
* @ingroup groupController
*/
@@ -5161,14 +5077,11 @@
/**
* @brief Floating-point Inverse Clarke transform
- * @param[in] Ialpha input two-phase orthogonal vector axis alpha
- * @param[in] Ibeta input two-phase orthogonal vector axis beta
- * @param[out] *pIa points to output three-phase coordinate <code>a</code>
- * @param[out] *pIb points to output three-phase coordinate <code>b</code>
- * @return none.
- */
-
-
+ * @param[in] Ialpha input two-phase orthogonal vector axis alpha
+ * @param[in] Ibeta input two-phase orthogonal vector axis beta
+ * @param[out] pIa points to output three-phase coordinate <code>a</code>
+ * @param[out] pIb points to output three-phase coordinate <code>b</code>
+ */
static __INLINE void arm_inv_clarke_f32(
float32_t Ialpha,
float32_t Ibeta,
@@ -5179,17 +5092,16 @@
*pIa = Ialpha;
/* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */
- *pIb = -0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta;
-
+ *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
}
+
/**
* @brief Inverse Clarke transform for Q31 version
- * @param[in] Ialpha input two-phase orthogonal vector axis alpha
- * @param[in] Ibeta input two-phase orthogonal vector axis beta
- * @param[out] *pIa points to output three-phase coordinate <code>a</code>
- * @param[out] *pIb points to output three-phase coordinate <code>b</code>
- * @return none.
+ * @param[in] Ialpha input two-phase orthogonal vector axis alpha
+ * @param[in] Ibeta input two-phase orthogonal vector axis beta
+ * @param[out] pIa points to output three-phase coordinate <code>a</code>
+ * @param[out] pIb points to output three-phase coordinate <code>b</code>
*
* <b>Scaling and Overflow Behavior:</b>
* \par
@@ -5197,7 +5109,6 @@
* The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
* There is saturation on the subtraction, hence there is no risk of overflow.
*/
-
static __INLINE void arm_inv_clarke_q31(
q31_t Ialpha,
q31_t Ibeta,
@@ -5217,7 +5128,6 @@
/* pIb is calculated by subtracting the products */
*pIb = __QSUB(product2, product1);
-
}
/**
@@ -5226,10 +5136,9 @@
/**
* @brief Converts the elements of the Q7 vector to Q15 vector.
- * @param[in] *pSrc input pointer
- * @param[out] *pDst output pointer
- * @param[in] blockSize number of samples to process
- * @return none.
+ * @param[in] pSrc input pointer
+ * @param[out] pDst output pointer
+ * @param[in] blockSize number of samples to process
*/
void arm_q7_to_q15(
q7_t * pSrc,
@@ -5273,18 +5182,16 @@
/**
* @brief Floating-point Park transform
- * @param[in] Ialpha input two-phase vector coordinate alpha
- * @param[in] Ibeta input two-phase vector coordinate beta
- * @param[out] *pId points to output rotor reference frame d
- * @param[out] *pIq points to output rotor reference frame q
- * @param[in] sinVal sine value of rotation angle theta
- * @param[in] cosVal cosine value of rotation angle theta
- * @return none.
+ * @param[in] Ialpha input two-phase vector coordinate alpha
+ * @param[in] Ibeta input two-phase vector coordinate beta
+ * @param[out] pId points to output rotor reference frame d
+ * @param[out] pIq points to output rotor reference frame q
+ * @param[in] sinVal sine value of rotation angle theta
+ * @param[in] cosVal cosine value of rotation angle theta
*
* The function implements the forward Park transform.
*
*/
-
static __INLINE void arm_park_f32(
float32_t Ialpha,
float32_t Ibeta,
@@ -5298,18 +5205,17 @@
/* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */
*pIq = -Ialpha * sinVal + Ibeta * cosVal;
-
}
+
/**
* @brief Park transform for Q31 version
- * @param[in] Ialpha input two-phase vector coordinate alpha
- * @param[in] Ibeta input two-phase vector coordinate beta
- * @param[out] *pId points to output rotor reference frame d
- * @param[out] *pIq points to output rotor reference frame q
- * @param[in] sinVal sine value of rotation angle theta
- * @param[in] cosVal cosine value of rotation angle theta
- * @return none.
+ * @param[in] Ialpha input two-phase vector coordinate alpha
+ * @param[in] Ibeta input two-phase vector coordinate beta
+ * @param[out] pId points to output rotor reference frame d
+ * @param[out] pIq points to output rotor reference frame q
+ * @param[in] sinVal sine value of rotation angle theta
+ * @param[in] cosVal cosine value of rotation angle theta
*
* <b>Scaling and Overflow Behavior:</b>
* \par
@@ -5317,8 +5223,6 @@
* The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
* There is saturation on the addition and subtraction, hence there is no risk of overflow.
*/
-
-
static __INLINE void arm_park_q31(
q31_t Ialpha,
q31_t Ibeta,
@@ -5356,10 +5260,9 @@
/**
* @brief Converts the elements of the Q7 vector to floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q7_to_float(
q7_t * pSrc,
@@ -5395,15 +5298,13 @@
/**
* @brief Floating-point Inverse Park transform
- * @param[in] Id input coordinate of rotor reference frame d
- * @param[in] Iq input coordinate of rotor reference frame q
- * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha
- * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta
- * @param[in] sinVal sine value of rotation angle theta
- * @param[in] cosVal cosine value of rotation angle theta
- * @return none.
- */
-
+ * @param[in] Id input coordinate of rotor reference frame d
+ * @param[in] Iq input coordinate of rotor reference frame q
+ * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha
+ * @param[out] pIbeta points to output two-phase orthogonal vector axis beta
+ * @param[in] sinVal sine value of rotation angle theta
+ * @param[in] cosVal cosine value of rotation angle theta
+ */
static __INLINE void arm_inv_park_f32(
float32_t Id,
float32_t Iq,
@@ -5417,19 +5318,17 @@
/* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */
*pIbeta = Id * sinVal + Iq * cosVal;
-
}
/**
- * @brief Inverse Park transform for Q31 version
- * @param[in] Id input coordinate of rotor reference frame d
- * @param[in] Iq input coordinate of rotor reference frame q
- * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha
- * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta
- * @param[in] sinVal sine value of rotation angle theta
- * @param[in] cosVal cosine value of rotation angle theta
- * @return none.
+ * @brief Inverse Park transform for Q31 version
+ * @param[in] Id input coordinate of rotor reference frame d
+ * @param[in] Iq input coordinate of rotor reference frame q
+ * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha
+ * @param[out] pIbeta points to output two-phase orthogonal vector axis beta
+ * @param[in] sinVal sine value of rotation angle theta
+ * @param[in] cosVal cosine value of rotation angle theta
*
* <b>Scaling and Overflow Behavior:</b>
* \par
@@ -5437,8 +5336,6 @@
* The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
* There is saturation on the addition, hence there is no risk of overflow.
*/
-
-
static __INLINE void arm_inv_park_q31(
q31_t Id,
q31_t Iq,
@@ -5468,7 +5365,6 @@
/* Calculate pIbeta by using the two intermediate products 3 and 4 */
*pIbeta = __QADD(product4, product3);
-
}
/**
@@ -5478,10 +5374,9 @@
/**
* @brief Converts the elements of the Q31 vector to floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q31_to_float(
q31_t * pSrc,
@@ -5531,17 +5426,15 @@
/**
* @brief Process function for the floating-point Linear Interpolation Function.
- * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure
- * @param[in] x input sample to process
+ * @param[in,out] S is an instance of the floating-point Linear Interpolation structure
+ * @param[in] x input sample to process
* @return y processed output sample.
*
*/
-
static __INLINE float32_t arm_linear_interp_f32(
arm_linear_interp_instance_f32 * S,
float32_t x)
{
-
float32_t y;
float32_t x0, x1; /* Nearest input values */
float32_t y0, y1; /* Nearest output values */
@@ -5565,7 +5458,7 @@
else
{
/* Calculation of nearest input values */
- x0 = S->x1 + i * xSpacing;
+ x0 = S->x1 + i * xSpacing;
x1 = S->x1 + (i + 1) * xSpacing;
/* Read of nearest output values */
@@ -5581,12 +5474,13 @@
return (y);
}
+
/**
*
* @brief Process function for the Q31 Linear Interpolation Function.
- * @param[in] *pYData pointer to Q31 Linear Interpolation table
- * @param[in] x input sample to process
- * @param[in] nValues number of table values
+ * @param[in] pYData pointer to Q31 Linear Interpolation table
+ * @param[in] x input sample to process
+ * @param[in] nValues number of table values
* @return y processed output sample.
*
* \par
@@ -5594,8 +5488,6 @@
* This function can support maximum of table size 2^12.
*
*/
-
-
static __INLINE q31_t arm_linear_interp_q31(
q31_t * pYData,
q31_t x,
@@ -5609,7 +5501,7 @@
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- index = ((x & 0xFFF00000) >> 20);
+ index = ((x & (q31_t)0xFFF00000) >> 20);
if(index >= (int32_t)(nValues - 1))
{
@@ -5621,14 +5513,13 @@
}
else
{
-
/* 20 bits for the fractional part */
/* shift left by 11 to keep fract in 1.31 format */
fract = (x & 0x000FFFFF) << 11;
/* Read two nearest output values from the index in 1.31(q31) format */
y0 = pYData[index];
- y1 = pYData[index + 1u];
+ y1 = pYData[index + 1];
/* Calculation of y0 * (1-fract) and y is in 2.30 format */
y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
@@ -5638,17 +5529,16 @@
/* Convert y to 1.31 format */
return (y << 1u);
-
}
-
}
+
/**
*
* @brief Process function for the Q15 Linear Interpolation Function.
- * @param[in] *pYData pointer to Q15 Linear Interpolation table
- * @param[in] x input sample to process
- * @param[in] nValues number of table values
+ * @param[in] pYData pointer to Q15 Linear Interpolation table
+ * @param[in] x input sample to process
+ * @param[in] nValues number of table values
* @return y processed output sample.
*
* \par
@@ -5656,8 +5546,6 @@
* This function can support maximum of table size 2^12.
*
*/
-
-
static __INLINE q15_t arm_linear_interp_q15(
q15_t * pYData,
q31_t x,
@@ -5671,7 +5559,7 @@
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- index = ((x & 0xFFF00000) >> 20u);
+ index = ((x & (int32_t)0xFFF00000) >> 20);
if(index >= (int32_t)(nValues - 1))
{
@@ -5689,7 +5577,7 @@
/* Read two nearest output values from the index */
y0 = pYData[index];
- y1 = pYData[index + 1u];
+ y1 = pYData[index + 1];
/* Calculation of y0 * (1-fract) and y is in 13.35 format */
y = ((q63_t) y0 * (0xFFFFF - fract));
@@ -5698,26 +5586,23 @@
y += ((q63_t) y1 * (fract));
/* convert y to 1.15 format */
- return (y >> 20);
+ return (q15_t) (y >> 20);
}
-
-
}
+
/**
*
* @brief Process function for the Q7 Linear Interpolation Function.
- * @param[in] *pYData pointer to Q7 Linear Interpolation table
- * @param[in] x input sample to process
- * @param[in] nValues number of table values
+ * @param[in] pYData pointer to Q7 Linear Interpolation table
+ * @param[in] x input sample to process
+ * @param[in] nValues number of table values
* @return y processed output sample.
*
* \par
* Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
* This function can support maximum of table size 2^12.
*/
-
-
static __INLINE q7_t arm_linear_interp_q7(
q7_t * pYData,
q31_t x,
@@ -5737,21 +5622,19 @@
}
index = (x >> 20) & 0xfff;
-
if(index >= (nValues - 1))
{
return (pYData[nValues - 1]);
}
else
{
-
/* 20 bits for the fractional part */
/* fract is in 12.20 format */
fract = (x & 0x000FFFFF);
/* Read two nearest output values from the index and are in 1.7(q7) format */
y0 = pYData[index];
- y1 = pYData[index + 1u];
+ y1 = pYData[index + 1];
/* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */
y = ((y0 * (0xFFFFF - fract)));
@@ -5760,66 +5643,64 @@
y += (y1 * fract);
/* convert y to 1.7(q7) format */
- return (y >> 20u);
-
- }
-
+ return (q7_t) (y >> 20);
+ }
}
+
/**
* @} end of LinearInterpolate group
*/
/**
* @brief Fast approximation to the trigonometric sine function for floating-point data.
- * @param[in] x input value in radians.
+ * @param[in] x input value in radians.
* @return sin(x).
*/
-
float32_t arm_sin_f32(
float32_t x);
+
/**
* @brief Fast approximation to the trigonometric sine function for Q31 data.
- * @param[in] x Scaled input value in radians.
+ * @param[in] x Scaled input value in radians.
* @return sin(x).
*/
-
q31_t arm_sin_q31(
q31_t x);
+
/**
* @brief Fast approximation to the trigonometric sine function for Q15 data.
- * @param[in] x Scaled input value in radians.
+ * @param[in] x Scaled input value in radians.
* @return sin(x).
*/
-
q15_t arm_sin_q15(
q15_t x);
+
/**
* @brief Fast approximation to the trigonometric cosine function for floating-point data.
- * @param[in] x input value in radians.
+ * @param[in] x input value in radians.
* @return cos(x).
*/
-
float32_t arm_cos_f32(
float32_t x);
+
/**
* @brief Fast approximation to the trigonometric cosine function for Q31 data.
- * @param[in] x Scaled input value in radians.
+ * @param[in] x Scaled input value in radians.
* @return cos(x).
*/
-
q31_t arm_cos_q31(
q31_t x);
+
/**
* @brief Fast approximation to the trigonometric cosine function for Q15 data.
- * @param[in] x Scaled input value in radians.
+ * @param[in] x Scaled input value in radians.
* @return cos(x).
*/
-
q15_t arm_cos_q15(
q15_t x);
@@ -5857,22 +5738,26 @@
/**
* @brief Floating-point square root function.
- * @param[in] in input value.
- * @param[out] *pOut square root of input value.
+ * @param[in] in input value.
+ * @param[out] pOut square root of input value.
* @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
* <code>in</code> is negative value and returns zero output for negative values.
*/
-
static __INLINE arm_status arm_sqrt_f32(
float32_t in,
float32_t * pOut)
{
- if(in > 0)
+ if(in >= 0.0f)
{
-// #if __FPU_USED
-#if (__FPU_USED == 1) && defined ( __CC_ARM )
+#if (__FPU_USED == 1) && defined ( __CC_ARM )
*pOut = __sqrtf(in);
+#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
+ *pOut = __builtin_sqrtf(in);
+#elif (__FPU_USED == 1) && defined(__GNUC__)
+ *pOut = __builtin_sqrtf(in);
+#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000)
+ __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in));
#else
*pOut = sqrtf(in);
#endif
@@ -5884,14 +5769,13 @@
*pOut = 0.0f;
return (ARM_MATH_ARGUMENT_ERROR);
}
-
}
/**
* @brief Q31 square root function.
- * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.
- * @param[out] *pOut square root of input value.
+ * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.
+ * @param[out] pOut square root of input value.
* @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
* <code>in</code> is negative value and returns zero output for negative values.
*/
@@ -5899,10 +5783,11 @@
q31_t in,
q31_t * pOut);
+
/**
* @brief Q15 square root function.
- * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF.
- * @param[out] *pOut square root of input value.
+ * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF.
+ * @param[out] pOut square root of input value.
* @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
* <code>in</code> is negative value and returns zero output for negative values.
*/
@@ -5915,14 +5800,9 @@
*/
-
-
-
-
/**
* @brief floating-point Circular write function.
*/
-
static __INLINE void arm_circularWrite_f32(
int32_t * circBuffer,
int32_t L,
@@ -5960,7 +5840,7 @@
}
/* Update the index pointer */
- *writeOffset = wOffset;
+ *writeOffset = (uint16_t)wOffset;
}
@@ -6019,10 +5899,10 @@
*readOffset = rOffset;
}
+
/**
* @brief Q15 Circular write function.
*/
-
static __INLINE void arm_circularWrite_q15(
q15_t * circBuffer,
int32_t L,
@@ -6060,11 +5940,10 @@
}
/* Update the index pointer */
- *writeOffset = wOffset;
+ *writeOffset = (uint16_t)wOffset;
}
-
/**
* @brief Q15 Circular Read function.
*/
@@ -6124,7 +6003,6 @@
/**
* @brief Q7 Circular write function.
*/
-
static __INLINE void arm_circularWrite_q7(
q7_t * circBuffer,
int32_t L,
@@ -6162,11 +6040,10 @@
}
/* Update the index pointer */
- *writeOffset = wOffset;
+ *writeOffset = (uint16_t)wOffset;
}
-
/**
* @brief Q7 Circular Read function.
*/
@@ -6225,271 +6102,252 @@
/**
* @brief Sum of the squares of the elements of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_power_q31(
q31_t * pSrc,
uint32_t blockSize,
q63_t * pResult);
+
/**
* @brief Sum of the squares of the elements of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_power_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult);
+
/**
* @brief Sum of the squares of the elements of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_power_q15(
q15_t * pSrc,
uint32_t blockSize,
q63_t * pResult);
+
/**
* @brief Sum of the squares of the elements of a Q7 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_power_q7(
q7_t * pSrc,
uint32_t blockSize,
q31_t * pResult);
+
/**
* @brief Mean value of a Q7 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_mean_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * pResult);
+
/**
* @brief Mean value of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
*/
void arm_mean_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult);
+
/**
* @brief Mean value of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
*/
void arm_mean_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult);
+
/**
* @brief Mean value of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
*/
void arm_mean_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult);
+
/**
* @brief Variance of the elements of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_var_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult);
+
/**
* @brief Variance of the elements of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_var_q31(
q31_t * pSrc,
uint32_t blockSize,
- q63_t * pResult);
+ q31_t * pResult);
+
/**
* @brief Variance of the elements of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_var_q15(
q15_t * pSrc,
uint32_t blockSize,
- q31_t * pResult);
+ q15_t * pResult);
+
/**
* @brief Root Mean Square of the elements of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_rms_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult);
+
/**
* @brief Root Mean Square of the elements of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_rms_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult);
+
/**
* @brief Root Mean Square of the elements of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_rms_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult);
+
/**
* @brief Standard deviation of the elements of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_std_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult);
+
/**
* @brief Standard deviation of the elements of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_std_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult);
+
/**
* @brief Standard deviation of the elements of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output value.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output value.
+ */
void arm_std_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult);
+
/**
* @brief Floating-point complex magnitude
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_f32(
float32_t * pSrc,
float32_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q31 complex magnitude
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_q31(
q31_t * pSrc,
q31_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q15 complex magnitude
- * @param[in] *pSrc points to the complex input vector
- * @param[out] *pDst points to the real output vector
- * @param[in] numSamples number of complex samples in the input vector
- * @return none.
- */
-
+ * @param[in] pSrc points to the complex input vector
+ * @param[out] pDst points to the real output vector
+ * @param[in] numSamples number of complex samples in the input vector
+ */
void arm_cmplx_mag_q15(
q15_t * pSrc,
q15_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q15 complex dot product
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] numSamples number of complex samples in each vector
- * @param[out] *realResult real part of the result returned here
- * @param[out] *imagResult imaginary part of the result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] numSamples number of complex samples in each vector
+ * @param[out] realResult real part of the result returned here
+ * @param[out] imagResult imaginary part of the result returned here
+ */
void arm_cmplx_dot_prod_q15(
q15_t * pSrcA,
q15_t * pSrcB,
@@ -6497,16 +6355,15 @@
q31_t * realResult,
q31_t * imagResult);
+
/**
* @brief Q31 complex dot product
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] numSamples number of complex samples in each vector
- * @param[out] *realResult real part of the result returned here
- * @param[out] *imagResult imaginary part of the result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] numSamples number of complex samples in each vector
+ * @param[out] realResult real part of the result returned here
+ * @param[out] imagResult imaginary part of the result returned here
+ */
void arm_cmplx_dot_prod_q31(
q31_t * pSrcA,
q31_t * pSrcB,
@@ -6514,16 +6371,15 @@
q63_t * realResult,
q63_t * imagResult);
+
/**
* @brief Floating-point complex dot product
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[in] numSamples number of complex samples in each vector
- * @param[out] *realResult real part of the result returned here
- * @param[out] *imagResult imaginary part of the result returned here
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[in] numSamples number of complex samples in each vector
+ * @param[out] realResult real part of the result returned here
+ * @param[out] imagResult imaginary part of the result returned here
+ */
void arm_cmplx_dot_prod_f32(
float32_t * pSrcA,
float32_t * pSrcB,
@@ -6531,88 +6387,83 @@
float32_t * realResult,
float32_t * imagResult);
+
/**
* @brief Q15 complex-by-real multiplication
- * @param[in] *pSrcCmplx points to the complex input vector
- * @param[in] *pSrcReal points to the real input vector
- * @param[out] *pCmplxDst points to the complex output vector
- * @param[in] numSamples number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcCmplx points to the complex input vector
+ * @param[in] pSrcReal points to the real input vector
+ * @param[out] pCmplxDst points to the complex output vector
+ * @param[in] numSamples number of samples in each vector
+ */
void arm_cmplx_mult_real_q15(
q15_t * pSrcCmplx,
q15_t * pSrcReal,
q15_t * pCmplxDst,
uint32_t numSamples);
+
/**
* @brief Q31 complex-by-real multiplication
- * @param[in] *pSrcCmplx points to the complex input vector
- * @param[in] *pSrcReal points to the real input vector
- * @param[out] *pCmplxDst points to the complex output vector
- * @param[in] numSamples number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcCmplx points to the complex input vector
+ * @param[in] pSrcReal points to the real input vector
+ * @param[out] pCmplxDst points to the complex output vector
+ * @param[in] numSamples number of samples in each vector
+ */
void arm_cmplx_mult_real_q31(
q31_t * pSrcCmplx,
q31_t * pSrcReal,
q31_t * pCmplxDst,
uint32_t numSamples);
+
/**
* @brief Floating-point complex-by-real multiplication
- * @param[in] *pSrcCmplx points to the complex input vector
- * @param[in] *pSrcReal points to the real input vector
- * @param[out] *pCmplxDst points to the complex output vector
- * @param[in] numSamples number of samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcCmplx points to the complex input vector
+ * @param[in] pSrcReal points to the real input vector
+ * @param[out] pCmplxDst points to the complex output vector
+ * @param[in] numSamples number of samples in each vector
+ */
void arm_cmplx_mult_real_f32(
float32_t * pSrcCmplx,
float32_t * pSrcReal,
float32_t * pCmplxDst,
uint32_t numSamples);
+
/**
* @brief Minimum value of a Q7 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *result is output pointer
- * @param[in] index is the array index of the minimum value in the input buffer.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] result is output pointer
+ * @param[in] index is the array index of the minimum value in the input buffer.
+ */
void arm_min_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * result,
uint32_t * index);
+
/**
* @brief Minimum value of a Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output pointer
- * @param[in] *pIndex is the array index of the minimum value in the input buffer.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output pointer
+ * @param[in] pIndex is the array index of the minimum value in the input buffer.
+ */
void arm_min_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Minimum value of a Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output pointer
- * @param[out] *pIndex is the array index of the minimum value in the input buffer.
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output pointer
+ * @param[out] pIndex is the array index of the minimum value in the input buffer.
*/
void arm_min_q31(
q31_t * pSrc,
@@ -6620,156 +6471,148 @@
q31_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Minimum value of a floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[in] blockSize is the number of samples to process
- * @param[out] *pResult is output pointer
- * @param[out] *pIndex is the array index of the minimum value in the input buffer.
- * @return none.
- */
-
+ * @param[in] pSrc is input pointer
+ * @param[in] blockSize is the number of samples to process
+ * @param[out] pResult is output pointer
+ * @param[out] pIndex is the array index of the minimum value in the input buffer.
+ */
void arm_min_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Maximum value of a Q7 vector.
- * @param[in] *pSrc points to the input buffer
- * @param[in] blockSize length of the input vector
- * @param[out] *pResult maximum value returned here
- * @param[out] *pIndex index of maximum value returned here
- * @return none.
+ * @param[in] pSrc points to the input buffer
+ * @param[in] blockSize length of the input vector
+ * @param[out] pResult maximum value returned here
+ * @param[out] pIndex index of maximum value returned here
*/
-
void arm_max_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Maximum value of a Q15 vector.
- * @param[in] *pSrc points to the input buffer
- * @param[in] blockSize length of the input vector
- * @param[out] *pResult maximum value returned here
- * @param[out] *pIndex index of maximum value returned here
- * @return none.
+ * @param[in] pSrc points to the input buffer
+ * @param[in] blockSize length of the input vector
+ * @param[out] pResult maximum value returned here
+ * @param[out] pIndex index of maximum value returned here
*/
-
void arm_max_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Maximum value of a Q31 vector.
- * @param[in] *pSrc points to the input buffer
- * @param[in] blockSize length of the input vector
- * @param[out] *pResult maximum value returned here
- * @param[out] *pIndex index of maximum value returned here
- * @return none.
+ * @param[in] pSrc points to the input buffer
+ * @param[in] blockSize length of the input vector
+ * @param[out] pResult maximum value returned here
+ * @param[out] pIndex index of maximum value returned here
*/
-
void arm_max_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Maximum value of a floating-point vector.
- * @param[in] *pSrc points to the input buffer
- * @param[in] blockSize length of the input vector
- * @param[out] *pResult maximum value returned here
- * @param[out] *pIndex index of maximum value returned here
- * @return none.
+ * @param[in] pSrc points to the input buffer
+ * @param[in] blockSize length of the input vector
+ * @param[out] pResult maximum value returned here
+ * @param[out] pIndex index of maximum value returned here
*/
-
void arm_max_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult,
uint32_t * pIndex);
+
/**
* @brief Q15 complex-by-complex multiplication
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_mult_cmplx_q15(
q15_t * pSrcA,
q15_t * pSrcB,
q15_t * pDst,
uint32_t numSamples);
+
/**
* @brief Q31 complex-by-complex multiplication
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_mult_cmplx_q31(
q31_t * pSrcA,
q31_t * pSrcB,
q31_t * pDst,
uint32_t numSamples);
+
/**
* @brief Floating-point complex-by-complex multiplication
- * @param[in] *pSrcA points to the first input vector
- * @param[in] *pSrcB points to the second input vector
- * @param[out] *pDst points to the output vector
- * @param[in] numSamples number of complex samples in each vector
- * @return none.
- */
-
+ * @param[in] pSrcA points to the first input vector
+ * @param[in] pSrcB points to the second input vector
+ * @param[out] pDst points to the output vector
+ * @param[in] numSamples number of complex samples in each vector
+ */
void arm_cmplx_mult_cmplx_f32(
float32_t * pSrcA,
float32_t * pSrcB,
float32_t * pDst,
uint32_t numSamples);
+
/**
* @brief Converts the elements of the floating-point vector to Q31 vector.
- * @param[in] *pSrc points to the floating-point input vector
- * @param[out] *pDst points to the Q31 output vector
- * @param[in] blockSize length of the input vector
- * @return none.
+ * @param[in] pSrc points to the floating-point input vector
+ * @param[out] pDst points to the Q31 output vector
+ * @param[in] blockSize length of the input vector
*/
void arm_float_to_q31(
float32_t * pSrc,
q31_t * pDst,
uint32_t blockSize);
+
/**
* @brief Converts the elements of the floating-point vector to Q15 vector.
- * @param[in] *pSrc points to the floating-point input vector
- * @param[out] *pDst points to the Q15 output vector
- * @param[in] blockSize length of the input vector
- * @return none
+ * @param[in] pSrc points to the floating-point input vector
+ * @param[out] pDst points to the Q15 output vector
+ * @param[in] blockSize length of the input vector
*/
void arm_float_to_q15(
float32_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Converts the elements of the floating-point vector to Q7 vector.
- * @param[in] *pSrc points to the floating-point input vector
- * @param[out] *pDst points to the Q7 output vector
- * @param[in] blockSize length of the input vector
- * @return none
+ * @param[in] pSrc points to the floating-point input vector
+ * @param[out] pDst points to the Q7 output vector
+ * @param[in] blockSize length of the input vector
*/
void arm_float_to_q7(
float32_t * pSrc,
@@ -6779,34 +6622,33 @@
/**
* @brief Converts the elements of the Q31 vector to Q15 vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q31_to_q15(
q31_t * pSrc,
q15_t * pDst,
uint32_t blockSize);
+
/**
* @brief Converts the elements of the Q31 vector to Q7 vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q31_to_q7(
q31_t * pSrc,
q7_t * pDst,
uint32_t blockSize);
+
/**
* @brief Converts the elements of the Q15 vector to floating-point vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q15_to_float(
q15_t * pSrc,
@@ -6816,10 +6658,9 @@
/**
* @brief Converts the elements of the Q15 vector to Q31 vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q15_to_q31(
q15_t * pSrc,
@@ -6829,10 +6670,9 @@
/**
* @brief Converts the elements of the Q15 vector to Q7 vector.
- * @param[in] *pSrc is input pointer
- * @param[out] *pDst is output pointer
- * @param[in] blockSize is the number of samples to process
- * @return none.
+ * @param[in] pSrc is input pointer
+ * @param[out] pDst is output pointer
+ * @param[in] blockSize is the number of samples to process
*/
void arm_q15_to_q7(
q15_t * pSrc,
@@ -6901,16 +6741,15 @@
* @{
*/
+
/**
*
* @brief Floating-point bilinear interpolation.
- * @param[in,out] *S points to an instance of the interpolation structure.
- * @param[in] X interpolation coordinate.
- * @param[in] Y interpolation coordinate.
+ * @param[in,out] S points to an instance of the interpolation structure.
+ * @param[in] X interpolation coordinate.
+ * @param[in] Y interpolation coordinate.
* @return out interpolated value.
*/
-
-
static __INLINE float32_t arm_bilinear_interp_f32(
const arm_bilinear_interp_instance_f32 * S,
float32_t X,
@@ -6928,8 +6767,7 @@
/* Care taken for table outside boundary */
/* Returns zero output when values are outside table boundary */
- if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0
- || yIndex > (S->numCols - 1))
+ if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1))
{
return (0);
}
@@ -6967,18 +6805,17 @@
/* return to application */
return (out);
-
}
+
/**
*
* @brief Q31 bilinear interpolation.
- * @param[in,out] *S points to an instance of the interpolation structure.
- * @param[in] X interpolation coordinate in 12.20 format.
- * @param[in] Y interpolation coordinate in 12.20 format.
+ * @param[in,out] S points to an instance of the interpolation structure.
+ * @param[in] X interpolation coordinate in 12.20 format.
+ * @param[in] Y interpolation coordinate in 12.20 format.
* @return out interpolated value.
*/
-
static __INLINE q31_t arm_bilinear_interp_q31(
arm_bilinear_interp_instance_q31 * S,
q31_t X,
@@ -6992,16 +6829,15 @@
q31_t *pYData = S->pData; /* pointer to output table values */
uint32_t nCols = S->numCols; /* num of rows */
+ /* Input is in 12.20 format */
+ /* 12 bits for the table index */
+ /* Index value calculation */
+ rI = ((X & (q31_t)0xFFF00000) >> 20);
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- rI = ((X & 0xFFF00000) >> 20u);
-
- /* Input is in 12.20 format */
- /* 12 bits for the table index */
- /* Index value calculation */
- cI = ((Y & 0xFFF00000) >> 20u);
+ cI = ((Y & (q31_t)0xFFF00000) >> 20);
/* Care taken for table outside boundary */
/* Returns zero output when values are outside table boundary */
@@ -7015,19 +6851,19 @@
xfract = (X & 0x000FFFFF) << 11u;
/* Read two nearest output values from the index */
- x1 = pYData[(rI) + nCols * (cI)];
- x2 = pYData[(rI) + nCols * (cI) + 1u];
+ x1 = pYData[(rI) + (int32_t)nCols * (cI) ];
+ x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
/* 20 bits for the fractional part */
/* shift left yfract by 11 to keep 1.31 format */
yfract = (Y & 0x000FFFFF) << 11u;
/* Read two nearest output values from the index */
- y1 = pYData[(rI) + nCols * (cI + 1)];
- y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
+ y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ];
+ y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
/* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */
- out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));
+ out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));
acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
/* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */
@@ -7043,18 +6879,17 @@
acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
/* Convert acc to 1.31(q31) format */
- return (acc << 2u);
-
+ return ((q31_t)(acc << 2));
}
+
/**
* @brief Q15 bilinear interpolation.
- * @param[in,out] *S points to an instance of the interpolation structure.
- * @param[in] X interpolation coordinate in 12.20 format.
- * @param[in] Y interpolation coordinate in 12.20 format.
+ * @param[in,out] S points to an instance of the interpolation structure.
+ * @param[in] X interpolation coordinate in 12.20 format.
+ * @param[in] Y interpolation coordinate in 12.20 format.
* @return out interpolated value.
*/
-
static __INLINE q15_t arm_bilinear_interp_q15(
arm_bilinear_interp_instance_q15 * S,
q31_t X,
@@ -7071,12 +6906,12 @@
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- rI = ((X & 0xFFF00000) >> 20);
+ rI = ((X & (q31_t)0xFFF00000) >> 20);
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- cI = ((Y & 0xFFF00000) >> 20);
+ cI = ((Y & (q31_t)0xFFF00000) >> 20);
/* Care taken for table outside boundary */
/* Returns zero output when values are outside table boundary */
@@ -7090,17 +6925,16 @@
xfract = (X & 0x000FFFFF);
/* Read two nearest output values from the index */
- x1 = pYData[(rI) + nCols * (cI)];
- x2 = pYData[(rI) + nCols * (cI) + 1u];
-
+ x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
+ x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
/* 20 bits for the fractional part */
/* yfract should be in 12.20 format */
yfract = (Y & 0x000FFFFF);
/* Read two nearest output values from the index */
- y1 = pYData[(rI) + nCols * (cI + 1)];
- y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
+ y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
+ y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
/* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */
@@ -7123,18 +6957,17 @@
/* acc is in 13.51 format and down shift acc by 36 times */
/* Convert out to 1.15 format */
- return (acc >> 36);
-
+ return ((q15_t)(acc >> 36));
}
+
/**
* @brief Q7 bilinear interpolation.
- * @param[in,out] *S points to an instance of the interpolation structure.
- * @param[in] X interpolation coordinate in 12.20 format.
- * @param[in] Y interpolation coordinate in 12.20 format.
+ * @param[in,out] S points to an instance of the interpolation structure.
+ * @param[in] X interpolation coordinate in 12.20 format.
+ * @param[in] Y interpolation coordinate in 12.20 format.
* @return out interpolated value.
*/
-
static __INLINE q7_t arm_bilinear_interp_q7(
arm_bilinear_interp_instance_q7 * S,
q31_t X,
@@ -7151,12 +6984,12 @@
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- rI = ((X & 0xFFF00000) >> 20);
+ rI = ((X & (q31_t)0xFFF00000) >> 20);
/* Input is in 12.20 format */
/* 12 bits for the table index */
/* Index value calculation */
- cI = ((Y & 0xFFF00000) >> 20);
+ cI = ((Y & (q31_t)0xFFF00000) >> 20);
/* Care taken for table outside boundary */
/* Returns zero output when values are outside table boundary */
@@ -7167,20 +7000,19 @@
/* 20 bits for the fractional part */
/* xfract should be in 12.20 format */
- xfract = (X & 0x000FFFFF);
+ xfract = (X & (q31_t)0x000FFFFF);
/* Read two nearest output values from the index */
- x1 = pYData[(rI) + nCols * (cI)];
- x2 = pYData[(rI) + nCols * (cI) + 1u];
-
+ x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
+ x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
/* 20 bits for the fractional part */
/* yfract should be in 12.20 format */
- yfract = (Y & 0x000FFFFF);
+ yfract = (Y & (q31_t)0x000FFFFF);
/* Read two nearest output values from the index */
- y1 = pYData[(rI) + nCols * (cI + 1)];
- y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
+ y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
+ y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
/* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */
out = ((x1 * (0xFFFFF - xfract)));
@@ -7199,8 +7031,7 @@
acc += (((q63_t) out * (xfract)));
/* acc in 16.47 format and down shift by 40 to convert to 1.7 format */
- return (acc >> 40);
-
+ return ((q7_t)(acc >> 40));
}
/**
@@ -7208,96 +7039,116 @@
*/
-#if defined ( __CC_ARM ) //Keil
-//SMMLAR
- #define multAcc_32x32_keep32_R(a, x, y) \
- a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
-
-//SMMLSR
- #define multSub_32x32_keep32_R(a, x, y) \
- a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
-
-//SMMULR
- #define mult_32x32_keep32_R(a, x, y) \
- a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
-
-//Enter low optimization region - place directly above function definition
- #define LOW_OPTIMIZATION_ENTER \
- _Pragma ("push") \
- _Pragma ("O1")
-
-//Exit low optimization region - place directly after end of function definition
- #define LOW_OPTIMIZATION_EXIT \
- _Pragma ("pop")
-
-//Enter low optimization region - place directly above function definition
+/* SMMLAR */
+#define multAcc_32x32_keep32_R(a, x, y) \
+ a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMLSR */
+#define multSub_32x32_keep32_R(a, x, y) \
+ a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMULR */
+#define mult_32x32_keep32_R(a, x, y) \
+ a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
+
+/* SMMLA */
+#define multAcc_32x32_keep32(a, x, y) \
+ a += (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMLS */
+#define multSub_32x32_keep32(a, x, y) \
+ a -= (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMUL */
+#define mult_32x32_keep32(a, x, y) \
+ a = (q31_t) (((q63_t) x * y ) >> 32)
+
+
+#if defined ( __CC_ARM )
+ /* Enter low optimization region - place directly above function definition */
+ #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+ #define LOW_OPTIMIZATION_ENTER \
+ _Pragma ("push") \
+ _Pragma ("O1")
+ #else
+ #define LOW_OPTIMIZATION_ENTER
+ #endif
+
+ /* Exit low optimization region - place directly after end of function definition */
+ #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+ #define LOW_OPTIMIZATION_EXIT \
+ _Pragma ("pop")
+ #else
+ #define LOW_OPTIMIZATION_EXIT
+ #endif
+
+ /* Enter low optimization region - place directly above function definition */
#define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-//Exit low optimization region - place directly after end of function definition
+ /* Exit low optimization region - place directly after end of function definition */
#define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-#elif defined(__ICCARM__) //IAR
- //SMMLA
- #define multAcc_32x32_keep32_R(a, x, y) \
- a += (q31_t) (((q63_t) x * y) >> 32)
-
- //SMMLS
- #define multSub_32x32_keep32_R(a, x, y) \
- a -= (q31_t) (((q63_t) x * y) >> 32)
-
-//SMMUL
- #define mult_32x32_keep32_R(a, x, y) \
- a = (q31_t) (((q63_t) x * y ) >> 32)
-
-//Enter low optimization region - place directly above function definition
- #define LOW_OPTIMIZATION_ENTER \
- _Pragma ("optimize=low")
-
-//Exit low optimization region - place directly after end of function definition
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #define LOW_OPTIMIZATION_ENTER
#define LOW_OPTIMIZATION_EXIT
-
-//Enter low optimization region - place directly above function definition
- #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
- _Pragma ("optimize=low")
-
-//Exit low optimization region - place directly after end of function definition
+ #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
#define IAR_ONLY_LOW_OPTIMIZATION_EXIT
#elif defined(__GNUC__)
- //SMMLA
- #define multAcc_32x32_keep32_R(a, x, y) \
- a += (q31_t) (((q63_t) x * y) >> 32)
-
- //SMMLS
- #define multSub_32x32_keep32_R(a, x, y) \
- a -= (q31_t) (((q63_t) x * y) >> 32)
-
-//SMMUL
- #define mult_32x32_keep32_R(a, x, y) \
- a = (q31_t) (((q63_t) x * y ) >> 32)
-
#define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") ))
-
+ #define LOW_OPTIMIZATION_EXIT
+ #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+ #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__ICCARM__)
+ /* Enter low optimization region - place directly above function definition */
+ #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+ #define LOW_OPTIMIZATION_ENTER \
+ _Pragma ("optimize=low")
+ #else
+ #define LOW_OPTIMIZATION_ENTER
+ #endif
+
+ /* Exit low optimization region - place directly after end of function definition */
#define LOW_OPTIMIZATION_EXIT
+ /* Enter low optimization region - place directly above function definition */
+ #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7)
+ #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
+ _Pragma ("optimize=low")
+ #else
+ #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+ #endif
+
+ /* Exit low optimization region - place directly after end of function definition */
+ #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__CSMC__)
+ #define LOW_OPTIMIZATION_ENTER
+ #define LOW_OPTIMIZATION_EXIT
#define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-
+ #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined(__TASKING__)
+ #define LOW_OPTIMIZATION_ENTER
+ #define LOW_OPTIMIZATION_EXIT
+ #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
#define IAR_ONLY_LOW_OPTIMIZATION_EXIT
#endif
-
-
-
-#ifdef __cplusplus
+#ifdef __cplusplus
}
#endif
+#if defined ( __GNUC__ )
+#pragma GCC diagnostic pop
+#endif
+
#endif /* _ARM_MATH_H */
-
/**
*
* End of file.