From 8a83b8625483403f3ca754e2f8bc82bb402bfbdc Mon Sep 17 00:00:00 2001 From: "Johann C. Rode" Date: Thu, 13 Nov 2025 16:32:50 -0800 Subject: [PATCH] spd/ddr4: add parts This patch adds parts used on Lenovo Thinkpads: Micron MT40A512M16HA-083E:A Micron MT40A1G16HBA-083E:A Samsung K4A8G165WB-BCPB Micron MT40A512M16JY-083E:B Micron MT40A1G16WBU-083E:B Samsung K4A8G165WC-BCRC Samsung K4AAG165WB-MCRC SKHynix H5AN8G6NAFR-UHC SKHynix H5AN8G6NAMR-UHC Micron MT40A512M6LY-075:E Micron MT40A256M16GE-083E Samsung K4A4G165WE-BCRC The SPD data (timing, configuration, etc.) has been extracted from datasheets and laptop schematics. When there has been conflicting data between these data sources, slower (safer) values were picked. Change-Id: Ied92619130feaa160d01f75bc38230ab6a024ace Signed-off-by: Johann C. Rode Reviewed-on: https://review.coreboot.org/c/coreboot/+/90032 Reviewed-by: Matt DeVillier Tested-by: build bot (Jenkins) --- spd/ddr4/memory_parts.json | 143 ++++++++++++++++++ spd/ddr4/platforms_manifest.generated.txt | 2 +- .../set-0/parts_spd_manifest.generated.txt | 15 +- spd/ddr4/set-0/spd-10.hex | 32 ++++ spd/ddr4/set-0/spd-11.hex | 32 ++++ spd/ddr4/set-0/spd-12.hex | 32 ++++ spd/ddr4/set-0/spd-13.hex | 32 ++++ spd/ddr4/set-0/spd-14.hex | 32 ++++ spd/ddr4/set-0/spd-15.hex | 32 ++++ 9 files changed, 350 insertions(+), 2 deletions(-) create mode 100644 spd/ddr4/set-0/spd-10.hex create mode 100644 spd/ddr4/set-0/spd-11.hex create mode 100644 spd/ddr4/set-0/spd-12.hex create mode 100644 spd/ddr4/set-0/spd-13.hex create mode 100644 spd/ddr4/set-0/spd-14.hex create mode 100644 spd/ddr4/set-0/spd-15.hex diff --git a/spd/ddr4/memory_parts.json b/spd/ddr4/memory_parts.json index aac5cc806b..7684401cdf 100644 --- a/spd/ddr4/memory_parts.json +++ b/spd/ddr4/memory_parts.json @@ -261,6 +261,149 @@ "packageBusWidth": 16, "ranksPerPackage": 1 } + }, + { + "name": "MT40A512M16HA-083E:A", + "attribs": { + "speedMTps": 2133, + "CL_nRCD_nRP": 15, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "MT40A1G16HBA-083E:A", + "attribs": { + "speedMTps": 2133, + "CL_nRCD_nRP": 15, + "capacityPerDieGb": 8, + "diesPerPackage": 2, + "packageBusWidth": 8, + "ranksPerPackage": 1 + } + }, + { + "name": "K4A8G165WB-BCPB", + "attribs": { + "speedMTps": 2133, + "CL_nRCD_nRP": 15, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "MT40A512M16JY-083E:B", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "MT40A1G16WBU-083E:B", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 2, + "packageBusWidth": 8, + "ranksPerPackage": 1 + } + }, + { + "name": "K4A8G165WB-BCRC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "K4A8G165WC-BCRC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "K4AAG165WB-MCRC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 2, + "packageBusWidth": 8, + "ranksPerPackage": 1 + } + }, + { + "name": "H5AN8G6NAFR-UHC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "H5AN8G6NAMR-UHC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 2, + "packageBusWidth": 8, + "ranksPerPackage": 1 + } + }, + { + "name": "MT40A512M16LY-075:E", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 8, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "MT40A256M16GE-083E:B", + "attribs": { + "speedMTps": 2133, + "CL_nRCD_nRP": 15, + "capacityPerDieGb": 4, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } + }, + { + "name": "K4A4G165WE-BCRC", + "attribs": { + "speedMTps": 2400, + "CL_nRCD_nRP": 17, + "capacityPerDieGb": 4, + "diesPerPackage": 1, + "packageBusWidth": 16, + "ranksPerPackage": 1 + } } ] } diff --git a/spd/ddr4/platforms_manifest.generated.txt b/spd/ddr4/platforms_manifest.generated.txt index 594f6c82f9..eedc5062c3 100644 --- a/spd/ddr4/platforms_manifest.generated.txt +++ b/spd/ddr4/platforms_manifest.generated.txt @@ -1,5 +1,5 @@ # Generated by: -# ../../util/spd_tools/bin/spd_gen memory_parts.json ddr4 +# util/spd_tools/bin/spd_gen spd/ddr4/memory_parts.json ddr4 TGL,set-0 PCO,set-0 diff --git a/spd/ddr4/set-0/parts_spd_manifest.generated.txt b/spd/ddr4/set-0/parts_spd_manifest.generated.txt index 6eb5e25306..440d4c1dab 100644 --- a/spd/ddr4/set-0/parts_spd_manifest.generated.txt +++ b/spd/ddr4/set-0/parts_spd_manifest.generated.txt @@ -1,5 +1,5 @@ # Generated by: -# ../../util/spd_tools/bin/spd_gen memory_parts.json ddr4 +# util/spd_tools/bin/spd_gen spd/ddr4/memory_parts.json ddr4 H5AN8G6NDJR-XNC,spd-1.hex MT40A512M16TB-062E:J,spd-1.hex @@ -22,3 +22,16 @@ K4AAG165WB-BCWE,spd-9.hex MT40A1G16RC-062E:B,spd-9.hex MT40A512M16TB-062E:R,spd-1.hex 4JQA-0622AD,spd-1.hex +MT40A512M16HA-083E:A,spd-10.hex +MT40A1G16HBA-083E:A,spd-11.hex +K4A8G165WB-BCPB,spd-10.hex +MT40A512M16JY-083E:B,spd-12.hex +MT40A1G16WBU-083E:B,spd-13.hex +K4A8G165WB-BCRC,spd-12.hex +K4A8G165WC-BCRC,spd-12.hex +K4AAG165WB-MCRC,spd-13.hex +H5AN8G6NAFR-UHC,spd-12.hex +H5AN8G6NAMR-UHC,spd-13.hex +MT40A512M16LY-075:E,spd-12.hex +MT40A256M16GE-083E:B,spd-14.hex +K4A4G165WE-BCRC,spd-15.hex diff --git a/spd/ddr4/set-0/spd-10.hex b/spd/ddr4/set-0/spd-10.hex new file mode 100644 index 0000000000..dd497e639a --- /dev/null +++ b/spd/ddr4/set-0/spd-10.hex @@ -0,0 +1,32 @@ +23 11 0C 03 45 21 00 08 00 00 00 00 02 03 00 00 +00 00 08 09 F4 03 00 00 71 71 71 11 08 79 F0 0A +20 08 00 05 00 F0 2B 34 2B 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 EC 9C B5 C3 C3 C3 C3 CA C1 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/spd/ddr4/set-0/spd-11.hex b/spd/ddr4/set-0/spd-11.hex new file mode 100644 index 0000000000..a29187c06a --- /dev/null +++ b/spd/ddr4/set-0/spd-11.hex @@ -0,0 +1,32 @@ +23 11 0C 03 85 21 91 08 00 00 00 00 01 03 00 00 +00 00 08 09 F4 03 00 00 71 71 71 11 08 79 F0 0A +20 08 00 05 00 A8 1E 2B 2B 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 EC B5 FE C3 C3 C3 C3 CA C1 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/spd/ddr4/set-0/spd-12.hex b/spd/ddr4/set-0/spd-12.hex new file mode 100644 index 0000000000..24a6c01b58 --- /dev/null +++ b/spd/ddr4/set-0/spd-12.hex @@ -0,0 +1,32 @@ +23 11 0C 03 45 21 00 08 00 00 00 00 02 03 00 00 +00 00 07 08 F8 0F 00 00 72 72 72 11 00 72 F0 0A +20 08 00 05 00 F0 2B 34 28 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 9C B5 AC AC AC AC C1 D6 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/spd/ddr4/set-0/spd-13.hex b/spd/ddr4/set-0/spd-13.hex new file mode 100644 index 0000000000..4d300ee875 --- /dev/null +++ b/spd/ddr4/set-0/spd-13.hex @@ -0,0 +1,32 @@ +23 11 0C 03 85 21 91 08 00 00 00 00 01 03 00 00 +00 00 07 08 F8 0F 00 00 72 72 72 11 00 72 F0 0A +20 08 00 05 00 A8 1B 2B 28 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 B5 D5 AC AC AC AC C1 D6 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/spd/ddr4/set-0/spd-14.hex b/spd/ddr4/set-0/spd-14.hex new file mode 100644 index 0000000000..ad66842f5e --- /dev/null +++ b/spd/ddr4/set-0/spd-14.hex @@ -0,0 +1,32 @@ +23 11 0C 03 44 19 00 08 00 00 00 00 02 03 00 00 +00 00 08 09 F4 03 00 00 71 71 71 11 08 79 20 08 +00 05 70 03 00 F0 2B 34 2B 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 EC 9C B5 C3 C3 C3 C3 CA C1 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/spd/ddr4/set-0/spd-15.hex b/spd/ddr4/set-0/spd-15.hex new file mode 100644 index 0000000000..a29ce9fd6b --- /dev/null +++ b/spd/ddr4/set-0/spd-15.hex @@ -0,0 +1,32 @@ +23 11 0C 03 44 19 00 08 00 00 00 00 02 03 00 00 +00 00 07 08 F8 0F 00 00 72 72 72 11 00 72 20 08 +00 05 70 03 00 F0 2B 34 28 00 78 00 14 3C 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 9C B5 AC AC AC AC C1 D6 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 +20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00