From 0f4130a01f2d970cad14acd29bd853eb03db820a Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 14 Nov 2025 11:16:14 +0000 Subject: [PATCH 01/65] Added imem.sv --- repo/rtl/imem.sv | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 repo/rtl/imem.sv diff --git a/repo/rtl/imem.sv b/repo/rtl/imem.sv new file mode 100644 index 0000000..0cd2f48 --- /dev/null +++ b/repo/rtl/imem.sv @@ -0,0 +1,13 @@ +module imem ( + input logic [31:0] addr, + output logic [31:0] instr +); + + logic [31:0] mem [0:255]; + + initial begin + $readmemh("program.hex", mem); + end + + assign instr = mem[addr[9:2]]; +endmodule From ce442c5b808bfc4bf3a5fef24e0845864eed47ea Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 14 Nov 2025 11:17:20 +0000 Subject: [PATCH 02/65] Added PC.sv --- repo/rtl/PC.sv | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 repo/rtl/PC.sv diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv new file mode 100644 index 0000000..90e1232 --- /dev/null +++ b/repo/rtl/PC.sv @@ -0,0 +1,21 @@ +module PC #( + parameter WIDTH = 32 +)( + input logic clk, + input logic rst, + input logic PCsrc, + input logic immOp, + output logic [WIDTH-1:0] pc +); + +logic [WIDTH-1:0] branch_PC; +logic [WIDTH-1:0] inc_PC; + +always_ff @(posedge clk) + if (rst) pc <= {WIDTH{1'b0}}; + else + assign inc_PC = pc + {{WIDTH-3{1'b0}}, 2'b100}; // pc + 4 + assign branch_PC = pc + immOp; + if (PCsrc) pc <= branch_PC; + else pc <= inc_PC; +endmodule From 46f87e44da8510e2df52661e034f393d53b6ef09 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 14 Nov 2025 11:36:25 +0000 Subject: [PATCH 03/65] Added control.sv --- repo/rtl/control.sv | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 repo/rtl/control.sv diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv new file mode 100644 index 0000000..3c1c384 --- /dev/null +++ b/repo/rtl/control.sv @@ -0,0 +1,41 @@ +module control ( + input logic [6:0] opcode, + input logic EQ, + output logic RegWrite, + output logic ALUsrc, + output logic ALUctrl, // 0 = add, 1 = sub + output logic ImmSrc, // 0 = I-type, 1 = B-type + output logic PCSrc +); + logic branch; + + always_comb begin + RegWrite = 0; + ALUsrc = 0; + ALUctrl = 0; + ImmSrc = 0; + branch = 0; + + case (opcode) + 7'b0010011: begin // ADDI + RegWrite = 1; + ALUsrc = 1; // immediate + ALUctrl = 0; // add + ImmSrc = 0; // I-type + branch = 0; + end + + 7'b1100011: begin // BNE + RegWrite = 0; + ALUsrc = 0; + ALUctrl = 1; // subtract + ImmSrc = 1; // B-type immediate + branch = 1; + end + endcase + end + + assign PCSrc = branch & (~EQ); + +endmodule + From cd24c26d408ec55a22bd65475cac98df3d4c6ce4 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 14 Nov 2025 11:40:08 +0000 Subject: [PATCH 04/65] Added signext.sv --- repo/rtl/signext.sv | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 repo/rtl/signext.sv diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv new file mode 100644 index 0000000..7625c96 --- /dev/null +++ b/repo/rtl/signext.sv @@ -0,0 +1,22 @@ +module signext ( + input logic [31:0] instr, + input logic ImmSrc, + output logic [31:0] ImmOp +); + + logic [31:0] immI; + logic [31:0] immB; + + assign immI = {{20{instr[31]}}, instr[31:20]}; + + assign immB = {{19{instr[31]}}, + instr[31], // imm[12] + instr[7], // imm[11] + instr[30:25], // imm[10:5] + instr[11:8], // imm[4:1] + 1'b0 // imm[0] + }; + + assign ImmOp = (ImmSrc == 0) ? immI : immB; +endmodule + From c4c799ffaefebedc3465f927b2b0215dbfeacb11 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 14 Nov 2025 11:41:19 +0000 Subject: [PATCH 05/65] Added PC.sv --- repo/rtl/PC.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv index 90e1232..6b6a2ee 100644 --- a/repo/rtl/PC.sv +++ b/repo/rtl/PC.sv @@ -14,7 +14,7 @@ logic [WIDTH-1:0] inc_PC; always_ff @(posedge clk) if (rst) pc <= {WIDTH{1'b0}}; else - assign inc_PC = pc + {{WIDTH-3{1'b0}}, 2'b100}; // pc + 4 + assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; // pc + 4 assign branch_PC = pc + immOp; if (PCsrc) pc <= branch_PC; else pc <= inc_PC; From 1f45afcfce16525b54d72ce8b2e2e7cb87ade6ed Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 14 Nov 2025 11:51:39 +0000 Subject: [PATCH 06/65] Added PC.sv --- repo/rtl/PC.sv | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv index 6b6a2ee..e4dc31d 100644 --- a/repo/rtl/PC.sv +++ b/repo/rtl/PC.sv @@ -4,18 +4,22 @@ module PC #( input logic clk, input logic rst, input logic PCsrc, - input logic immOp, + input logic [WIDTH-1:0] immOp, output logic [WIDTH-1:0] pc ); logic [WIDTH-1:0] branch_PC; logic [WIDTH-1:0] inc_PC; +logic [WIDTH-1:0] next_PC; -always_ff @(posedge clk) - if (rst) pc <= {WIDTH{1'b0}}; +assign inc_PC = pc + WIDTH'd4; +assign branch_PC = pc + immOp; +assign next_PC = PCsrc ? branch_PC : inc_PC; + +always_ff @(posedge clk or posedge rst) begin + if (rst) + pc <= {WIDTH{1'b0}}; else - assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; // pc + 4 - assign branch_PC = pc + immOp; - if (PCsrc) pc <= branch_PC; - else pc <= inc_PC; + pc <= next_PC; + end endmodule From a2ee2cb120c892bfe062087e45422a67b335fdaa Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Wed, 19 Nov 2025 15:05:33 +0000 Subject: [PATCH 07/65] Ignore macOS .DS_Store files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69d1af0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +repo/.DS_Store From 369768a61e69c0e115d4b7165d87ebeb22df4d4b Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Wed, 19 Nov 2025 15:12:58 +0000 Subject: [PATCH 08/65] alu/regfileetc --- repo/rtl/alu.sv | 32 +++++++++++++++++++++++++ repo/rtl/data_unit.sv | 56 +++++++++++++++++++++++++++++++++++++++++++ repo/rtl/reg_file.sv | 32 +++++++++++++++++++++++++ repo/rtl/register.sv | 11 +++++++++ 4 files changed, 131 insertions(+) create mode 100644 repo/rtl/alu.sv create mode 100644 repo/rtl/data_unit.sv create mode 100644 repo/rtl/reg_file.sv create mode 100644 repo/rtl/register.sv diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv new file mode 100644 index 0000000..d84c653 --- /dev/null +++ b/repo/rtl/alu.sv @@ -0,0 +1,32 @@ +module alu( + + input logic [31:0] alu_op1, + input logic [31:0] alu_op2, + input logic alu_ctrl, + + output logic [31:0] alu_out, + output logic eq + +); + +logic [31:0] equality; +logic [31:0] sum; + +always_comb begin + + equality = alu_op1 - alu_op2; + sum = alu_op1 + alu_op2; + + if(alu_ctrl == 1'b0) + alu_out = sum; + else + alu_out = equality; + + if(equality == 32'b0) + eq = 1; + else + eq = 0; + +end + +endmodule diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv new file mode 100644 index 0000000..10fed85 --- /dev/null +++ b/repo/rtl/data_unit.sv @@ -0,0 +1,56 @@ +module data_unit( + + input logic [5:0] rs1, + input logic [5:0] rs2, + input logic [5:0] rd, + input logic reg_write, + input logic [31:0] din, + input logic [31:0] imm_op, + input logic alu_src, + input logic alu_ctrl, + + + output logic [31:0] a0, + output logic eq_out + +); + +logic [31:0] mux_out; +logic [31:0] rd1; +logic [31:0] rd2; + + +reg_file1 reg_file( + + .read_addr1(rs1), + .read_addr2(rs2), + .write_addr(rd), + .wd3(din), + .rd1(rd1), + .rd2(rd2), + .a0(a0) + +); + +opsel mux( + + .in0(rd2), + .in1(imm_op), + .sel(alu_src), + .out(mux_out) +); + + +alu1 alu( + + .alu_op1(rd1), + .alu_op2(mux_out), + .alu_ctrl(alu_ctrl), + .alu_out(din), + .eq(eq_out) + + +); + + +endmodule diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv new file mode 100644 index 0000000..52346a0 --- /dev/null +++ b/repo/rtl/reg_file.sv @@ -0,0 +1,32 @@ +module reg_file #( + parameter ADDRESS_WIDTH = 5, + DATA_WIDTH = 32 +)( + input logic clk, + input logic [ADDRESS_WIDTH-1:0] write_addr, + input logic [ADDRESS_WIDTH-1:0] read_addr1, + input logic [ADDRESS_WIDTH-1:0] read_addr2, + input logic [DATA_WIDTH-1:0] wd3, + input logic we3, + output logic [DATA_WIDTH-1:0] dout1, + output logic [DATA_WIDTH-1:0] dout2, + output logic [DATA_WIDTH-1:0] a0 +); + +logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + + +always_ff @(posedge clk)begin + + if (we3 == 1'b1) + ram_array[write_addr] <= wd3; + + dout1 <= ram_array[read_addr1]; + dout2 <= ram_array[read_addr2]; + a0 <= ram_array[0]; + +end + + + +endmodule diff --git a/repo/rtl/register.sv b/repo/rtl/register.sv new file mode 100644 index 0000000..9daa813 --- /dev/null +++ b/repo/rtl/register.sv @@ -0,0 +1,11 @@ +module register( + + input logic clk, + input logic [31:0] d, + output logic [31:0] q +); + + always_ff @(posedge clk) + q <= d; + +endmodule From fb7bc7837cb82a888995e826be3702d694c4d6f3 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Thu, 20 Nov 2025 10:49:54 +0000 Subject: [PATCH 09/65] Verify Fixed --- repo/tb/compile.sh | 2 +- repo/tb/doit.sh | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/repo/tb/compile.sh b/repo/tb/compile.sh index af69829..1d3a146 100755 --- a/repo/tb/compile.sh +++ b/repo/tb/compile.sh @@ -52,7 +52,7 @@ riscv64-unknown-elf-objdump -f -d --source -m riscv \ a.out.reloc > ${SCRIPT_DIR}/${basename}.dis # Formats into a hex file -od -v -An -t x1 "a.bin" | tr -s '\n' | awk '{$1=$1};1' > "${output_file}" +od -v -An -t x4 "a.bin" | sed 's/^[ \t]*//' > "${output_file}" rm "a.out.reloc" rm "a.out" diff --git a/repo/tb/doit.sh b/repo/tb/doit.sh index 921062b..f439f51 100755 --- a/repo/tb/doit.sh +++ b/repo/tb/doit.sh @@ -38,12 +38,18 @@ for file in "${files[@]}"; do name="top" fi - # Automatically detect latest GoogleTest installation under Homebrew - GTEST_BASE=$(brew --prefix googletest 2>/dev/null) - if [ -z "$GTEST_BASE" ]; then - echo "${RED}Error: GoogleTest not found via Homebrew.${RESET}" - exit 1 - fi + + # # Automatically detect latest GoogleTest installation under Homebrew(macOS) + # GTEST_BASE=$(brew --prefix googletest 2>/dev/null) + # if [ -z "$GTEST_BASE" ]; then + # echo "${RED}Error: GoogleTest not found via Homebrew.${RESET}" + # exit 1 + # fi + + # --- GoogleTest for Ubuntu --- + # gtest headers and static libs installed via apt (libgtest-dev) + GTEST_INCLUDE="/usr/include" + GTEST_LIB="/usr/lib" # Construct include and lib paths dynamically GTEST_INCLUDE="$GTEST_BASE/include" From afc4b80af3c65eed2216ce9f6352d7af21b52399 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Thu, 20 Nov 2025 10:52:52 +0000 Subject: [PATCH 10/65] data_unit fixed --- repo/rtl/data_unit.sv | 9 +++++---- repo/rtl/top.sv | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 10fed85..19562d5 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -26,9 +26,11 @@ reg_file1 reg_file( .read_addr2(rs2), .write_addr(rd), .wd3(din), - .rd1(rd1), - .rd2(rd2), - .a0(a0) + .dout1(rd1), + .dout2(rd2), + .a0(a0), + .clk(clk), + .we3(reg_write) ); @@ -49,7 +51,6 @@ alu1 alu( .alu_out(din), .eq(eq_out) - ); diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index b25a766..4a2c556 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -5,5 +5,27 @@ module top #( input logic rst, output logic [DATA_WIDTH-1:0] a0 ); - assign a0 = 32'd5; + +assign a0 = 32'd5; + + + +data_unit1 data_unit( + + + + +); + + + + + + + + + + + + endmodule From f66e53443bf24b89871f7744a5df4ed6213b7ffa Mon Sep 17 00:00:00 2001 From: minimish1 Date: Thu, 20 Nov 2025 18:30:57 +0000 Subject: [PATCH 11/65] Added top.sv --- repo/rtl/top.sv | 74 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 4a2c556..529bc61 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -1,31 +1,71 @@ module top #( - DATA_WIDTH = 32 + parameter DATA_WIDTH = 32, + parameter ADDRESS_WIDTH = 5 ) ( input logic clk, input logic rst, output logic [DATA_WIDTH-1:0] a0 ); - -assign a0 = 32'd5; - - - -data_unit1 data_unit( - - - +logic RegWrite; +logic ALUsrc; +logic ALUctrl; +logic ImmSrc; +logic PCsrc; +logic EQ; + +logic [DATA_WIDTH-1:0] pc; +logic [DATA_WIDTH-1:0] ImmOp; +logic [DATA_WIDTH-1:0] instr; + +logic [ADDRESS_WIDTH-1:0] rs1; +logic [ADDRESS_WIDTH-1:0] rs2; +logic [ADDRESS_WIDTH-1:0] rd; + +assign rs1 = instr[19:15]; +assign rs2 = instr[24:20]; +assign rd = instr[11:7]; + +PC pc_module ( + .clk(clk), + .rst(rst), + .ImmOp(ImmOp), + .PCsrc(PCsrc), + .pc(pc) ); +imem imem ( + .addr(pc), + .instr(instr) +); +control control ( + .instr(instr), + .EQ(EQ), + .RegWrite(RegWrite), + .ALUsrc(ALUsrc), + .ALUctrl(ALUctrl), + .ImmSrc(ImmSrc), + .PCsrc(PCsrc) +); +signext signext ( + .instr(instr), + .ImmSrc(ImmSrc), + .ImmOp(ImmOp) +); - - - - - - - +reg_alu_top reg_alu_top ( + .clk(clk), + .AD1(rs1), + .AD2(rs2), + .AD3(rd), + .RegWrite(RegWrite), + .ImmOp(ImmOp), + .ALUsrc(ALUsrc), + .ALUctrl(ALUctrl), + .EQ(EQ), + .a0(a0) +); endmodule From ce76eb73522b5597715af36a36d4e77eaccb5a90 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Thu, 20 Nov 2025 18:32:05 +0000 Subject: [PATCH 12/65] reg_alu_top.sv --- repo/rtl/reg_alu_top.sv | 49 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 repo/rtl/reg_alu_top.sv diff --git a/repo/rtl/reg_alu_top.sv b/repo/rtl/reg_alu_top.sv new file mode 100644 index 0000000..91fdd59 --- /dev/null +++ b/repo/rtl/reg_alu_top.sv @@ -0,0 +1,49 @@ +module reg_alu_top #( + parameter DATA_WIDTH = 32, + ADDRESS_WIDTH = 5 +) ( + input logic clk, + input logic [ADDRESS_WIDTH-1:0] AD1, + input logic [ADDRESS_WIDTH-1:0] AD2, + input logic [ADDRESS_WIDTH-1:0] AD3, + input logic [DATA_WIDTH-1:0] ImmOp, + input logic RegWrite, + input logic ALUctrl, + input logic ALUsrc, + output logic EQ, + output logic [DATA_WIDTH-1:0] a0 +); + +logic [DATA_WIDTH-1:0] ALUout; +logic [DATA_WIDTH-1:0] ALUop1; +logic [DATA_WIDTH-1:0] ALUop2; +logic [DATA_WIDTH-1:0] regOp2; + +reg_file reg_file ( + .clk(clk), + .read_addr1(AD1), + .read_addr2(AD2), + .write_addr(AD3), + .wd3(ALUout), + .we3(RegWrite), + .dout1(ALUop1), + .dout2(regOp2), + .a0(a0) +); + +mux mux ( + .in0(regOp2), + .in1(ImmOp), + .sel(ALUsrc), + .out(ALUop2) +); + +alu alu ( + .alu_op1(ALUop1), + .alu_op2(ALUop2), + .alu_ctrl(ALUctrl), + .alu_out(ALUout), + .eq(EQ) +); + +endmodule From fe422cd10ab51bf0c036a19c0c77f4d6f74f43f0 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Thu, 20 Nov 2025 18:33:48 +0000 Subject: [PATCH 13/65] Fixed all modules --- repo/rtl/PC.sv | 6 +++--- repo/rtl/control.sv | 16 +++++++++++++--- repo/rtl/data_unit.sv | 2 +- repo/rtl/mux.sv | 2 +- repo/rtl/reg_file.sv | 1 - 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv index e4dc31d..1e8f739 100644 --- a/repo/rtl/PC.sv +++ b/repo/rtl/PC.sv @@ -4,7 +4,7 @@ module PC #( input logic clk, input logic rst, input logic PCsrc, - input logic [WIDTH-1:0] immOp, + input logic [WIDTH-1:0] ImmOp, output logic [WIDTH-1:0] pc ); @@ -12,8 +12,8 @@ logic [WIDTH-1:0] branch_PC; logic [WIDTH-1:0] inc_PC; logic [WIDTH-1:0] next_PC; -assign inc_PC = pc + WIDTH'd4; -assign branch_PC = pc + immOp; +assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; +assign branch_PC = pc + ImmOp; assign next_PC = PCsrc ? branch_PC : inc_PC; always_ff @(posedge clk or posedge rst) begin diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 3c1c384..1cba515 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,13 +1,15 @@ module control ( - input logic [6:0] opcode, + input logic [31:0] instr, input logic EQ, output logic RegWrite, output logic ALUsrc, output logic ALUctrl, // 0 = add, 1 = sub output logic ImmSrc, // 0 = I-type, 1 = B-type - output logic PCSrc + output logic PCsrc ); logic branch; + logic [6:0] opcode; + assign opcode = instr[6:0]; always_comb begin RegWrite = 0; @@ -32,10 +34,18 @@ module control ( ImmSrc = 1; // B-type immediate branch = 1; end + + default: begin + RegWrite = 0; + ALUsrc = 0; + ALUctrl = 0; + ImmSrc = 0; + branch = 0; + end endcase end - assign PCSrc = branch & (~EQ); + assign PCsrc = branch & (~EQ); endmodule diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 19562d5..2564eb0 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -3,7 +3,7 @@ module data_unit( input logic [5:0] rs1, input logic [5:0] rs2, input logic [5:0] rd, - input logic reg_write, + input logic reg_write, input logic [31:0] din, input logic [31:0] imm_op, input logic alu_src, diff --git a/repo/rtl/mux.sv b/repo/rtl/mux.sv index 11ef1e1..5c4b400 100644 --- a/repo/rtl/mux.sv +++ b/repo/rtl/mux.sv @@ -1,5 +1,5 @@ module mux #( - DATA_WIDTH = 32 + parameter DATA_WIDTH = 32 ) ( input logic [DATA_WIDTH-1:0] in0, input logic [DATA_WIDTH-1:0] in1, diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index 52346a0..284feda 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -15,7 +15,6 @@ module reg_file #( logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; - always_ff @(posedge clk)begin if (we3 == 1'b1) From 130cba12f543a3e51138c6b4f0a9ad4fbc9f2415 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 21 Nov 2025 10:33:48 +0000 Subject: [PATCH 14/65] Warnings fixed --- repo/rtl/control.sv | 2 ++ repo/rtl/data_unit.sv | 6 +++--- repo/rtl/imem.sv | 2 ++ repo/rtl/signext.sv | 2 ++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 1cba515..cd4b5db 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,5 +1,7 @@ module control ( + /* verilator lint_off UNUSED */ input logic [31:0] instr, + /* verilator lint_on UNUSED */ input logic EQ, output logic RegWrite, output logic ALUsrc, diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 2564eb0..63b2e89 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -20,7 +20,7 @@ logic [31:0] rd1; logic [31:0] rd2; -reg_file1 reg_file( +reg_file reg_file( .read_addr1(rs1), .read_addr2(rs2), @@ -34,7 +34,7 @@ reg_file1 reg_file( ); -opsel mux( +mux mux( .in0(rd2), .in1(imm_op), @@ -43,7 +43,7 @@ opsel mux( ); -alu1 alu( +alu alu( .alu_op1(rd1), .alu_op2(mux_out), diff --git a/repo/rtl/imem.sv b/repo/rtl/imem.sv index 0cd2f48..1076e55 100644 --- a/repo/rtl/imem.sv +++ b/repo/rtl/imem.sv @@ -1,6 +1,8 @@ module imem ( + /* verilator lint_off UNUSED */ input logic [31:0] addr, output logic [31:0] instr + /* verilator lint_on UNUSED */ ); logic [31:0] mem [0:255]; diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index 7625c96..c1ac25f 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,5 +1,7 @@ module signext ( + /* verilator lint_off UNUSED */ input logic [31:0] instr, + /* verilator lint_on UNUSED */ input logic ImmSrc, output logic [31:0] ImmOp ); From 65c432ee9028b016780472ec2507fffa8fc2c987 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 21 Nov 2025 12:07:48 +0000 Subject: [PATCH 15/65] Added mian decoder --- repo/rtl/main_decoder.sv | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 repo/rtl/main_decoder.sv diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv new file mode 100644 index 0000000..6f38772 --- /dev/null +++ b/repo/rtl/main_decoder.sv @@ -0,0 +1,67 @@ +module main_decoder ( + input logic [6:0] opcode, + output logic ResultsSrc, + output logic MemWrite, + output logic ALUsrc, + output logic RegWrite, + output logic Branch, + output logic [1:0] ImmSrc, + output logic [1:0] ALUop +); + +always_comb begin + case(opcode) + + 7'b0000011: begin + ResultsSrc = 1; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; + ALUop = 2'b00; + end + + 7'b0100011: begin + ResultsSrc = X; + MemWrite = 1; + ALUsrc = 1; + RegWrite = 0; + Branch = 0; + ImmSrc = 2'b01; + ALUop = 2'b00; + end + + 7'b0110011: begin + ResultsSrc = 0; + MemWrite = 0; + ALUsrc = 0; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'bXX; + ALUop = 2'b10; + end + + 7'b1100011: begin + ResultsSrc = X; + MemWrite = 0; + ALUsrc = 0; + RegWrite = 0; + Branch = 1; + ImmSrc = 2'b10; + ALUop = 2'b01; + end + + default: begin + ResultsSrc = 0; + MemWrite = 0; + ALUsrc = 0; + RegWrite = 0; + Branch = 0; + ImmSrc = 2'b00; + ALUop = 2'b00; + end + endcase +end + +endmodule \ No newline at end of file From 6c4948cd12734b642a959bc0cebb2953816cd381 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 21 Nov 2025 12:18:00 +0000 Subject: [PATCH 16/65] Fixed reg_file.sv --- repo/rtl/reg_file.sv | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index 284feda..b688fc6 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -17,15 +17,12 @@ logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; always_ff @(posedge clk)begin - if (we3 == 1'b1) + if (we3 == 1'b1 && write_addr != 0) ram_array[write_addr] <= wd3; - - dout1 <= ram_array[read_addr1]; - dout2 <= ram_array[read_addr2]; - a0 <= ram_array[0]; - end - +assign dout1 = ram_array[read_addr1]; +assign dout2 = ram_array[read_addr2]; +assign a0 = ram_array[10]; endmodule From feb764cb4ffb25d74d1d5eae9f0d305db4ad23f5 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 21 Nov 2025 12:33:23 +0000 Subject: [PATCH 17/65] F1 light implementation task 4 added to repo --- repo/task4/clktick.sv | 46 +++++++++++++++++++ repo/task4/delay.sh | 17 +++++++ repo/task4/delay.sv | 50 +++++++++++++++++++++ repo/task4/delay_tb.cpp | 65 +++++++++++++++++++++++++++ repo/task4/f1_fsm.sv | 83 ++++++++++++++++++++++++++++++++++ repo/task4/lfsr_7.sv | 21 +++++++++ repo/task4/lfsr_9.sv | 21 +++++++++ repo/task4/run_top.sh | 15 +++++++ repo/task4/top.sv | 53 ++++++++++++++++++++++ repo/task4/top_tb.cpp | 99 +++++++++++++++++++++++++++++++++++++++++ repo/task4/vbuddy.cfg | 1 + 11 files changed, 471 insertions(+) create mode 100644 repo/task4/clktick.sv create mode 100644 repo/task4/delay.sh create mode 100644 repo/task4/delay.sv create mode 100644 repo/task4/delay_tb.cpp create mode 100644 repo/task4/f1_fsm.sv create mode 100644 repo/task4/lfsr_7.sv create mode 100644 repo/task4/lfsr_9.sv create mode 100644 repo/task4/run_top.sh create mode 100644 repo/task4/top.sv create mode 100644 repo/task4/top_tb.cpp create mode 100644 repo/task4/vbuddy.cfg diff --git a/repo/task4/clktick.sv b/repo/task4/clktick.sv new file mode 100644 index 0000000..813f606 --- /dev/null +++ b/repo/task4/clktick.sv @@ -0,0 +1,46 @@ +module clktick #( + parameter WIDTH = 8 +)( + // interface signals + input logic clk, // clock + input logic rst, // reset + input logic en, // enable signal + input logic [WIDTH-1:0] N, // clock divided by N+1 + output logic tick // tick output +); + +logic [WIDTH-1:0] count; + +/* +How this works: basically we want a component that takes in a clock, +and produces a pulse lasting for one cycle every N + 1 cycles +Internally, this uses a counter. If reset is high, we set the counter to N +Then, on every rising edge of the clock, we check the value of count. +If count is non-zero, then we keep tick (the output) low, and decrement count by 1 every cycle. +Once count has reached 0, then on the rising edge of the clock, we set the output to 1, and reset count to N +So for example: we set N = 3 +So we have a table for the values of N and tick at the start of each cycle +i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 +N | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 +tick | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 +So we see that tick becomes 1 every (N + 1) i.e. 4 cycles +Note that there is a delay. i.e. at the begining of cycle 3, N = 0 but tick is still 0. +It is only at the begining of cycle 4 that tick is 1. +*/ + +always_ff @ (posedge clk, posedge rst) + if (rst) begin + tick <= 1'b0; + count <= N; + end + else if (en) begin + if (count == 0) begin + tick <= 1'b1; + count <= N; + end + else begin + tick <= 1'b0; + count <= count - 1'b1; + end + end +endmodule diff --git a/repo/task4/delay.sh b/repo/task4/delay.sh new file mode 100644 index 0000000..a488675 --- /dev/null +++ b/repo/task4/delay.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# cleanup +rm -rf obj_dir +rm -f *.vcd + +# run Verilator to translate Verilog into C++, including C++ testbench +verilator -Wall --cc --trace delay.sv --exe delay_tb.cpp + +# build C++ project via make automatically generated by Verilator +make -j -C obj_dir/ -f Vdelay.mk Vdelay + +# run executable simulation file +echo "\nRunning simulation" +obj_dir/Vdelay +echo "\nSimulation completed" + diff --git a/repo/task4/delay.sv b/repo/task4/delay.sv new file mode 100644 index 0000000..6978297 --- /dev/null +++ b/repo/task4/delay.sv @@ -0,0 +1,50 @@ +module delay #( + parameter WIDTH = 7 // no of bits in delay counter +)( + input logic clk, // clock signal + input logic rst, // reset signal + input logic trigger, // trigger input signal + input logic [WIDTH-1:0] n, // no of clock cycle delay + output logic time_out // output pulse signal +); + // Declare counter + logic [WIDTH-1:0] count = {WIDTH{1'b0}}; // internal counter + + // Define our states + typedef enum {IDLE, COUNTING, TIME_OUT, WAIT_LOW} my_state; + my_state current_state, next_state; + + // counter + always_ff @(posedge clk, posedge rst) + if (rst | trigger | count=={WIDTH{1'b0}}) count <= n - 1'b1; + else count <= count - 1'b1; + + // state transition + always_ff @(posedge clk, posedge rst) + if (rst) current_state <= IDLE; + else current_state <= next_state; + + // next state logic + always_comb + case (current_state) + IDLE: if (trigger==1'b1) next_state = COUNTING; + else next_state = current_state; + COUNTING: if (count=={WIDTH{1'b0}}) next_state = TIME_OUT; + else next_state = current_state; + TIME_OUT: if (trigger==1'b1) next_state = WAIT_LOW; + else next_state = IDLE; + WAIT_LOW: if (trigger==1'b0) next_state = IDLE; + else next_state = current_state; + default: next_state = IDLE; + endcase + + // output logic + always_comb + case (current_state) + IDLE: time_out = 1'b0; + COUNTING: time_out = 1'b0; + TIME_OUT: time_out = 1'b1; + WAIT_LOW: time_out = 1'b0; + default: time_out = 1'b0; + endcase +endmodule diff --git a/repo/task4/delay_tb.cpp b/repo/task4/delay_tb.cpp new file mode 100644 index 0000000..f4d207f --- /dev/null +++ b/repo/task4/delay_tb.cpp @@ -0,0 +1,65 @@ +#include "verilated.h" +#include "verilated_vcd_c.h" +#include "Vdelay.h" + +#include "../vbuddy.cpp" // include vbuddy code +#define MAX_SIM_CYC 100000 + +int main(int argc, char **argv, char **env) +{ + int simcyc; // simulation clock count + int tick; // each clk cycle has two ticks for two edges + int lights = 0; // state to toggle LED lights + + Verilated::commandArgs(argc, argv); + // init top verilog instance + Vdelay *top = new Vdelay; + // init trace dump + Verilated::traceEverOn(true); + VerilatedVcdC *tfp = new VerilatedVcdC; + top->trace(tfp, 99); + tfp->open("delay.vcd"); + + // init Vbuddy + if (vbdOpen() != 1) + return (-1); + vbdHeader("L3T2:Delay"); + vbdSetMode(1); // Flag mode set to one-shot + + // initialize simulation inputs + top->clk = 1; + top->rst = 0; + top->trigger = 0; + top->n = vbdValue(); + + // run simulation for MAX_SIM_CYC clock cycles + for (simcyc = 0; simcyc < MAX_SIM_CYC; simcyc++) + { + // dump variables into VCD file and toggle clock + for (tick = 0; tick < 2; tick++) + { + tfp->dump(2 * simcyc + tick); + top->clk = !top->clk; + top->eval(); + } + + // Display toggle neopixel + if (top->time_out) + { + vbdBar(lights); + lights = lights ^ 0xFF; + } + // set up input signals of testbench + top->rst = (simcyc < 2); // assert reset for 1st cycle + top->trigger = vbdFlag(); + top->n = vbdValue(); + vbdCycle(simcyc); + + if (Verilated::gotFinish() || vbdGetkey() == 'q') + exit(0); + } + + vbdClose(); // ++++ + tfp->close(); + exit(0); +} diff --git a/repo/task4/f1_fsm.sv b/repo/task4/f1_fsm.sv new file mode 100644 index 0000000..a56af2e --- /dev/null +++ b/repo/task4/f1_fsm.sv @@ -0,0 +1,83 @@ +module f1_fsm ( + input logic rst, + input logic en, + input logic clk, + input logic trigger, + output logic [7:0] data_out, + output logic cmd_delay, + output logic cmd_seq +); + +typedef enum {S0, S1, S2, S3, S4, S5, S6, S7, S8} light_state; +light_state curr_state, next_state; + +// initialise cmd_seq and cmd_delay to 0 +assign cmd_seq = 0; +assign cmd_delay = 0; + +// update the states on each clock cycle or async reset or async trigger +always_ff @ (posedge clk, posedge rst) + if (rst) curr_state <= S0; // if reset, set back to 00000000 + else if (en) curr_state <= next_state; // if en, set curr state to next state, else leave curr state alone + +// logic to decide what is the next state +// so this combinational logic will update the next_state, +// but the next state will only be assigned to the curr state on a posedge clk when en is high +always_comb begin + case (curr_state) + S0: next_state = S1; + S1: next_state = S2; + S2: next_state = S3; + S3: next_state = S4; + S4: next_state = S5; + S5: next_state = S6; + S6: next_state = S7; + S7: next_state = S8; + S8: next_state = S0; + default: next_state = S0; + endcase +end + +/* +We make the modification such that initially cmd_seq and cmd_delay are set to 0, and we are in state 0 +When we push the switch and set trigger = 1, we asynchronously update cmd_seq = 1 +This will allow the 1s ticks from clktick.sv to enable the FSM such that the FSM will start changing states every second +Note that when we are in S0, we update cmd_seq = 1 if trigger = 1, else we leave cmd_seq alone. +This means that once we set cmd_seq = 1 due to the trigger, we do not reset it back to 0 and block the en signal from clktick +Instead even after the trigger goes low, cmd_seq remains high so that the en signal from clktick can come in and update the FSM +Note also that trigger only has an effect when we are in S0. If we are in other states, the trigger doesn't do anything +Then once we are in the other states, we also do not update cmd_seq so it remains high +It is only once we are in S8, we set cmd_seq = 0 so that we transmit the time_out signal as the enable +Whereas for cmd_delay, once we are in S8, we set cmd_delay = 1, to wait for the en signal time_out +Then once the signal comes and we go back to S0, we set cmd_delay back to 0 +In between on other states, we also do not update cmd_delay +*/ + +// output logic +always_comb + case (curr_state) + S0: begin + data_out = 8'b00000000; + if (trigger) cmd_seq = 1'b1; + cmd_delay = 1'b0; + end + S1: data_out = 8'b00000001; + S2: data_out = 8'b00000011; + S3: data_out = 8'b00000111; + S4: data_out = 8'b00001111; + S5: data_out = 8'b00011111; + S6: data_out = 8'b00111111; + S7: data_out = 8'b01111111; + S8: begin + data_out = 8'b11111111; + cmd_seq = 1'b0; + cmd_delay = 1'b1; + end + default: begin + data_out = 8'b00000000; + cmd_seq = 1'b0; + cmd_delay = 1'b0; + end + endcase + +endmodule diff --git a/repo/task4/lfsr_7.sv b/repo/task4/lfsr_7.sv new file mode 100644 index 0000000..3fcd839 --- /dev/null +++ b/repo/task4/lfsr_7.sv @@ -0,0 +1,21 @@ +module lfsr_7 ( + input logic clk, + input logic rst, + input logic en, + output logic [6:0] data_out +); + +// initialise 7-bit shift register to 1 +logic[6:0] sreg = 7'b1; + +always_ff @ (posedge clk, posedge rst) + // async reset to 1 + if (rst) + sreg <= 7'b1; + // else if en, perform shift and pass bit 3 and bit 7 XORed to LSB + else if (en) + sreg <= {sreg[5:0], sreg[2] ^ sreg[6]}; + +assign data_out = sreg; + +endmodule diff --git a/repo/task4/lfsr_9.sv b/repo/task4/lfsr_9.sv new file mode 100644 index 0000000..6ea5697 --- /dev/null +++ b/repo/task4/lfsr_9.sv @@ -0,0 +1,21 @@ +module lfsr_9 ( + input logic clk, + input logic rst, + input logic en, + output logic [8:0] data_out +); + +// initialise 9-bit shift register to 1 +logic[8:0] sreg = 9'b1; + +always_ff @ (posedge clk, posedge rst) + // async reset to 1 + if (rst) + sreg <= 9'b1; + // else if en, perform shift and pass bit 3 and bit 7 XORed to LSB + else if (en) + sreg <= {sreg[7:0], sreg[3] ^ sreg[8]}; + +assign data_out = sreg; + +endmodule diff --git a/repo/task4/run_top.sh b/repo/task4/run_top.sh new file mode 100644 index 0000000..ba97659 --- /dev/null +++ b/repo/task4/run_top.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# cleanup +rm -rf obj_dir +rm -f top.vcd + +# run Verilator to translate Verilog into C++, including C++ testbench +# dumps the output files into a new folder obj_dir. Also generates the .mk file +verilator -Wall --cc --trace top.sv clktick.sv delay.sv f1_fsm.sv lfsr_7.sv --exe top_tb.cpp + +# build C++ project via make, automatically generated by Verilator +make -j -C obj_dir/ -f Vtop.mk Vtop + +# run executable simulation file +obj_dir/Vtop \ No newline at end of file diff --git a/repo/task4/top.sv b/repo/task4/top.sv new file mode 100644 index 0000000..7dffd2f --- /dev/null +++ b/repo/task4/top.sv @@ -0,0 +1,53 @@ +module top ( + input logic[7:0] N, // for clktick + input logic rst, // reset + input logic clk, + input logic trigger, // trigger for f1_fsm + output logic[7:0] data_out +); + +// intermediate signals +// the output of f1_fsm fed back into clktick and delay +// both default to 0 +logic cmd_seq; +logic cmd_delay; + +// intermediate signal +logic tick; // output of clktick +logic[6:0] prbs; // output of pseudo random binary module +logic time_out; + +clktick ticker1s ( + .rst (rst), + .clk (clk), + .en (cmd_seq), + .N (N), + .tick (tick) +); + +lfsr_7 prb_generator( + .clk (clk), + .rst (rst), + .en (1'b1), // always enable random generator + .data_out (prbs) +); + +delay delay_random( + .clk (clk), + .rst (rst), + .trigger (cmd_delay), + .n (prbs), + .time_out (time_out) +); + +f1_fsm light_fsm( + .rst (rst), + .en (cmd_seq ? tick : time_out), + .clk (clk), + .trigger (trigger), + .data_out (data_out), + .cmd_delay (cmd_delay), + .cmd_seq (cmd_seq) +); + +endmodule diff --git a/repo/task4/top_tb.cpp b/repo/task4/top_tb.cpp new file mode 100644 index 0000000..47e82db --- /dev/null +++ b/repo/task4/top_tb.cpp @@ -0,0 +1,99 @@ +#include "Vtop.h" +#include "verilated.h" +#include "verilated_vcd_c.h" +#include "../vbuddy.cpp" // include vbuddy code +#define MAX_SIM_CYC 100000 + + +int main(int argc, char **argv, char **env) +{ + int simcyc; // simulation clock count + int tick; // each clk cycle has two ticks for two edges + + Verilated::commandArgs(argc, argv); + // init top verilog instance + Vtop *top = new Vtop; + // init trace dump + Verilated::traceEverOn(true); + VerilatedVcdC *tfp = new VerilatedVcdC; + top->trace(tfp, 99); + tfp->open("top.vcd"); + + // init Vbuddy + if (vbdOpen() != 1) + return (-1); + vbdHeader("L3T3:FullF1"); + + vbdSetMode(1); + + // initialize simulation inputs + top->clk = 1; + top->rst = 1; // force reset on first 2 cycles + top->N = vbdValue(); // vbdValue() = 42 gives approx 1s tick + top->trigger = vbdFlag(); + + // boolean to keep track of whether the stopwatch has been started + bool is_timing = false; + // boolean to keep track of whether we are in the midst of a sequence + bool in_sequence = false; + + // run simulation for MAX_SIM_CYC clock cycles + for (simcyc = 0; simcyc < MAX_SIM_CYC; simcyc++) + { + // dump variables into VCD file and toggle clock + for (tick = 0; tick < 2; tick++) + { + tfp->dump(2 * simcyc + tick); + top->clk = !top->clk; + top->eval(); + } + + vbdBar(top -> data_out & 0xFF); + + // set up input signals of testbench + top->rst = (simcyc < 2); // assert reset for 1st cycle + top->N = vbdValue(); + vbdCycle(simcyc); + + // suppose initially data_out is 0. Thus in_sequence is False + // once the fsm starts counting up, then we set in_sequence to True, and it stays true while it counts up + if (top -> data_out) { + in_sequence = true; + } + int flag_val = vbdFlag(); + // if we are not currently timing, we can just set top -> trigger = flag_val which has the same behaviour as before + // if we are at S0, this will kick off the sequence, else if we are not in S0, pressing the button doesn't do anything + if (!is_timing) { + top -> trigger = flag_val; + } + // else if we are timing, then we want the button press to just stop the stopwatch + // we do not set top -> trigger = flag_val because we do not want this button press to trigger another sequence + else if (flag_val) { + is_timing = false; + in_sequence = false; + int rxntime = vbdElapsed(); + vbdHex(4, (rxntime >> 12) & 0xF); + vbdHex(3, (rxntime >> 8) & 0xF); + vbdHex(2, (rxntime >> 4) & 0xF); + vbdHex(1, (rxntime) & 0xF); + } + // if the data_out is 0 (i.e. we are in S0), we first check if we are in_sequence + // i.e. did the lights just go off. If so, we start timing + if (top -> data_out == 0) { + if (in_sequence) { + is_timing = true; + // very important to set this to false + // because otherwise we will keep on entering here and resetting the start time + in_sequence = false; + vbdInitWatch(); + } + } + + if (Verilated::gotFinish() || vbdGetkey() == 'q') + exit(0); + } + + vbdClose(); // ++++ + tfp->close(); + exit(0); +} diff --git a/repo/task4/vbuddy.cfg b/repo/task4/vbuddy.cfg new file mode 100644 index 0000000..f448d2b --- /dev/null +++ b/repo/task4/vbuddy.cfg @@ -0,0 +1 @@ +/dev/ttyUSB0 From 5bbebbf50de481d265a1524234c7e18a93138df8 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 21 Nov 2025 18:03:07 +0000 Subject: [PATCH 18/65] Comments added & reg alu top removed --- repo/rtl/PC.sv | 30 +++++++++----- repo/rtl/alu.sv | 30 ++++++++------ repo/rtl/control.sv | 10 +++-- repo/rtl/data_unit.sv | 87 +++++++++++++++++++--------------------- repo/rtl/imem.sv | 7 +++- repo/rtl/main_decoder.sv | 25 +++++++----- repo/rtl/mux.sv | 13 +++--- repo/rtl/reg_alu_top.sv | 49 ---------------------- repo/rtl/reg_file.sv | 30 ++++++++------ repo/rtl/register.sv | 9 +++-- repo/rtl/signext.sv | 13 +++--- repo/rtl/top.sv | 16 +++++--- 12 files changed, 156 insertions(+), 163 deletions(-) delete mode 100644 repo/rtl/reg_alu_top.sv diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv index 1e8f739..130bdd5 100644 --- a/repo/rtl/PC.sv +++ b/repo/rtl/PC.sv @@ -1,25 +1,37 @@ module PC #( parameter WIDTH = 32 )( - input logic clk, - input logic rst, - input logic PCsrc, - input logic [WIDTH-1:0] ImmOp, - output logic [WIDTH-1:0] pc + input logic clk, // system clock + input logic rst, // asynchronous reset + input logic PCsrc, // selects between sequential PC and branch target + input logic [WIDTH-1:0] ImmOp, // immediate offset for branch target + output logic [WIDTH-1:0] pc // current program counter ); -logic [WIDTH-1:0] branch_PC; +// compute PC+4 (normal sequential execution) logic [WIDTH-1:0] inc_PC; + +// compute PC+immediate (branch target address) +logic [WIDTH-1:0] branch_PC; + +// next PC after the mux logic [WIDTH-1:0] next_PC; +// add 4 to PC for next instruction assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; + +// add immediate offset to PC for branch target assign branch_PC = pc + ImmOp; + +// select between sequential PC and branch PC assign next_PC = PCsrc ? branch_PC : inc_PC; +// program counter register with asynchronous reset always_ff @(posedge clk or posedge rst) begin if (rst) - pc <= {WIDTH{1'b0}}; + pc <= {WIDTH{1'b0}}; // Reset PC to 0 else - pc <= next_PC; - end + pc <= next_PC; // Update PC normally +end + endmodule diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index d84c653..7cb1654 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -1,32 +1,38 @@ module alu( - input logic [31:0] alu_op1, - input logic [31:0] alu_op2, - input logic alu_ctrl, - - output logic [31:0] alu_out, - output logic eq - + input logic [31:0] alu_op1, // first operand for the ALU + input logic [31:0] alu_op2, // second operand for the ALU + input logic alu_ctrl, // ALU control signal: selects operation + // 0 -> addition (for addi) + // 1 -> subtraction (for bne) + + output logic [31:0] alu_out, // ALU output result + output logic eq // equality flag: 1 if alu_op1 == alu_op2 ); -logic [31:0] equality; -logic [31:0] sum; +// internal signals to hold intermediate results +logic [31:0] equality; // difference between operands, used for comparison +logic [31:0] sum; // sum of operands, used for addition +// combinational logic block (no clock) always_comb begin + // compute subtraction for branch comparison equality = alu_op1 - alu_op2; + // compute addition for arithmetic instructions sum = alu_op1 + alu_op2; + // select ALU output based on control signal if(alu_ctrl == 1'b0) - alu_out = sum; + alu_out = sum; // alu_ctrl=0 -> addition (addi) else - alu_out = equality; + alu_out = equality; // alu_ctrl=1 → subtraction (bne) + // set equality flag: 1 if operands are equal, 0 otherwise if(equality == 32'b0) eq = 1; else eq = 0; end - endmodule diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index cd4b5db..3963b35 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -2,17 +2,20 @@ module control ( /* verilator lint_off UNUSED */ input logic [31:0] instr, /* verilator lint_on UNUSED */ - input logic EQ, + input logic EQ, // equality flag from ALU (1 if operands are equal) output logic RegWrite, output logic ALUsrc, output logic ALUctrl, // 0 = add, 1 = sub output logic ImmSrc, // 0 = I-type, 1 = B-type - output logic PCsrc + output logic PCsrc // select next PC: 0 = PC+4, 1 = branch target ); + + // internal signals logic branch; logic [6:0] opcode; - assign opcode = instr[6:0]; + assign opcode = instr[6:0]; // extract opcode (bits [6:0]) + // combinational logic: decode opcode to generate control signals always_comb begin RegWrite = 0; ALUsrc = 0; @@ -47,6 +50,7 @@ module control ( endcase end + // determine next PC: branch taken if branch instruction AND operands not equal assign PCsrc = branch & (~EQ); endmodule diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 63b2e89..689e82d 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -1,57 +1,52 @@ -module data_unit( - - input logic [5:0] rs1, - input logic [5:0] rs2, - input logic [5:0] rd, - input logic reg_write, - input logic [31:0] din, - input logic [31:0] imm_op, - input logic alu_src, - input logic alu_ctrl, - - - output logic [31:0] a0, - output logic eq_out - +module data_unit #( + parameter DATA_WIDTH = 32, + ADDRESS_WIDTH = 5 +) ( + input logic clk, + input logic [ADDRESS_WIDTH-1:0] AD1, // rs1 address + input logic [ADDRESS_WIDTH-1:0] AD2, // rs2 address + input logic [ADDRESS_WIDTH-1:0] AD3, // rd address + input logic [DATA_WIDTH-1:0] ImmOp, // immediate value + input logic RegWrite, // write enable + input logic ALUctrl, // ALU control + input logic ALUsrc, // select imm or reg + output logic EQ, // ALU equality flag + output logic [DATA_WIDTH-1:0] a0 // x10 output ); -logic [31:0] mux_out; -logic [31:0] rd1; -logic [31:0] rd2; - - -reg_file reg_file( +logic [DATA_WIDTH-1:0] ALUout; // ALU result +logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 +logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 +logic [DATA_WIDTH-1:0] regOp2; // register file operand 2 - .read_addr1(rs1), - .read_addr2(rs2), - .write_addr(rd), - .wd3(din), - .dout1(rd1), - .dout2(rd2), - .a0(a0), +// register file: read rs1/rs2, write rd +reg_file reg_file ( .clk(clk), - .we3(reg_write) - + .read_addr1(AD1), + .read_addr2(AD2), + .write_addr(AD3), + .wd3(ALUout), + .we3(RegWrite), + .dout1(ALUop1), + .dout2(regOp2), + .a0(a0) ); -mux mux( - - .in0(rd2), - .in1(imm_op), - .sel(alu_src), - .out(mux_out) +// select ALU operand 2: register or immediate +mux mux ( + .in0(regOp2), + .in1(ImmOp), + .sel(ALUsrc), + .out(ALUop2) ); - -alu alu( - - .alu_op1(rd1), - .alu_op2(mux_out), - .alu_ctrl(alu_ctrl), - .alu_out(din), - .eq(eq_out) - +// ALU executes operation and sets EQ +alu alu ( + .alu_op1(ALUop1), + .alu_op2(ALUop2), + .alu_ctrl(ALUctrl), + .alu_out(ALUout), + .eq(EQ) ); - endmodule diff --git a/repo/rtl/imem.sv b/repo/rtl/imem.sv index 1076e55..9ff81f6 100644 --- a/repo/rtl/imem.sv +++ b/repo/rtl/imem.sv @@ -1,15 +1,18 @@ module imem ( /* verilator lint_off UNUSED */ - input logic [31:0] addr, - output logic [31:0] instr + input logic [31:0] addr, // byte address from the program counter (PC) + output logic [31:0] instr // 32-bit instruction read from memory /* verilator lint_on UNUSED */ ); + // instruction memory array: 256 instructions, each 32 bits wide logic [31:0] mem [0:255]; + // preload instructions from an external hex file at simulation start initial begin $readmemh("program.hex", mem); end + // output the instruction corresponding to the PC address assign instr = mem[addr[9:2]]; endmodule diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 6f38772..b23e37d 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,19 +1,21 @@ module main_decoder ( - input logic [6:0] opcode, - output logic ResultsSrc, - output logic MemWrite, - output logic ALUsrc, - output logic RegWrite, - output logic Branch, - output logic [1:0] ImmSrc, - output logic [1:0] ALUop + input logic [6:0] opcode, // 7-bit opcode field from the instruction + output logic ResultsSrc, // selects data written to register file (ALU result or memory data) + output logic MemWrite, // enable writing to data memory + output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) + output logic RegWrite, // enable writing to register file + output logic Branch, // indicates branch instruction + output logic [1:0] ImmSrc, // selects type of immediate + output logic [1:0] ALUop // encodes ALU operation type (passed to ALU control) ); +// combinational logic to decode opcode and generate control signals always_comb begin case(opcode) + // load instructions (e.g., LW) 7'b0000011: begin - ResultsSrc = 1; + ResultsSrc = 1; MemWrite = 0; ALUsrc = 1; RegWrite = 1; @@ -22,6 +24,7 @@ always_comb begin ALUop = 2'b00; end + // store instructions (e.g., SW) 7'b0100011: begin ResultsSrc = X; MemWrite = 1; @@ -32,6 +35,7 @@ always_comb begin ALUop = 2'b00; end + // R-type instructions (e.g., ADD, SUB) 7'b0110011: begin ResultsSrc = 0; MemWrite = 0; @@ -42,6 +46,7 @@ always_comb begin ALUop = 2'b10; end + // branch instructions (e.g., BNE, BEQ) 7'b1100011: begin ResultsSrc = X; MemWrite = 0; @@ -49,7 +54,7 @@ always_comb begin RegWrite = 0; Branch = 1; ImmSrc = 2'b10; - ALUop = 2'b01; + ALUop = 2'b01; // ALU performs subtraction for comparison end default: begin diff --git a/repo/rtl/mux.sv b/repo/rtl/mux.sv index 5c4b400..648a387 100644 --- a/repo/rtl/mux.sv +++ b/repo/rtl/mux.sv @@ -1,11 +1,14 @@ module mux #( parameter DATA_WIDTH = 32 ) ( - input logic [DATA_WIDTH-1:0] in0, - input logic [DATA_WIDTH-1:0] in1, - input logic sel, - output logic [DATA_WIDTH-1:0] out + input logic [DATA_WIDTH-1:0] in0, // first input (selected when sel = 0) + input logic [DATA_WIDTH-1:0] in1, // second input (selected when sel = 1) + input logic sel, // control signal to choose input + output logic [DATA_WIDTH-1:0] out // output of the multiplexer ); + + // combinational assignment: + // if sel == 1, output in1; otherwise, output in0 assign out = sel ? in1 : in0; -endmodule +endmodule \ No newline at end of file diff --git a/repo/rtl/reg_alu_top.sv b/repo/rtl/reg_alu_top.sv deleted file mode 100644 index 91fdd59..0000000 --- a/repo/rtl/reg_alu_top.sv +++ /dev/null @@ -1,49 +0,0 @@ -module reg_alu_top #( - parameter DATA_WIDTH = 32, - ADDRESS_WIDTH = 5 -) ( - input logic clk, - input logic [ADDRESS_WIDTH-1:0] AD1, - input logic [ADDRESS_WIDTH-1:0] AD2, - input logic [ADDRESS_WIDTH-1:0] AD3, - input logic [DATA_WIDTH-1:0] ImmOp, - input logic RegWrite, - input logic ALUctrl, - input logic ALUsrc, - output logic EQ, - output logic [DATA_WIDTH-1:0] a0 -); - -logic [DATA_WIDTH-1:0] ALUout; -logic [DATA_WIDTH-1:0] ALUop1; -logic [DATA_WIDTH-1:0] ALUop2; -logic [DATA_WIDTH-1:0] regOp2; - -reg_file reg_file ( - .clk(clk), - .read_addr1(AD1), - .read_addr2(AD2), - .write_addr(AD3), - .wd3(ALUout), - .we3(RegWrite), - .dout1(ALUop1), - .dout2(regOp2), - .a0(a0) -); - -mux mux ( - .in0(regOp2), - .in1(ImmOp), - .sel(ALUsrc), - .out(ALUop2) -); - -alu alu ( - .alu_op1(ALUop1), - .alu_op2(ALUop2), - .alu_ctrl(ALUctrl), - .alu_out(ALUout), - .eq(EQ) -); - -endmodule diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index b688fc6..324eb4e 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -1,28 +1,32 @@ module reg_file #( - parameter ADDRESS_WIDTH = 5, - DATA_WIDTH = 32 + parameter ADDRESS_WIDTH = 5, // 32 registers + DATA_WIDTH = 32 // 32-bits )( - input logic clk, - input logic [ADDRESS_WIDTH-1:0] write_addr, - input logic [ADDRESS_WIDTH-1:0] read_addr1, - input logic [ADDRESS_WIDTH-1:0] read_addr2, - input logic [DATA_WIDTH-1:0] wd3, - input logic we3, - output logic [DATA_WIDTH-1:0] dout1, - output logic [DATA_WIDTH-1:0] dout2, - output logic [DATA_WIDTH-1:0] a0 + input logic clk, // clock + input logic [ADDRESS_WIDTH-1:0] write_addr, // destination register + input logic [ADDRESS_WIDTH-1:0] read_addr1, // source register 1 address (rs1) + input logic [ADDRESS_WIDTH-1:0] read_addr2, // source register 2 address (rs2) + input logic [DATA_WIDTH-1:0] wd3, // write data + input logic we3, // write enable + output logic [DATA_WIDTH-1:0] dout1, // register file output for rs1 + output logic [DATA_WIDTH-1:0] dout2, // register file output for rs2 + output logic [DATA_WIDTH-1:0] a0 // special output for register x10 (a0) ); +// 32 32-bit registers logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; -always_ff @(posedge clk)begin - +// write operation (synchronous) -> writes occur only if we3 is asserted +always_ff @(posedge clk) begin if (we3 == 1'b1 && write_addr != 0) ram_array[write_addr] <= wd3; end +// read operations (combinational) -> outputs change immediately when read_addr changes assign dout1 = ram_array[read_addr1]; assign dout2 = ram_array[read_addr2]; + +// special readout of x10 (a0) assign a0 = ram_array[10]; endmodule diff --git a/repo/rtl/register.sv b/repo/rtl/register.sv index 9daa813..386bf62 100644 --- a/repo/rtl/register.sv +++ b/repo/rtl/register.sv @@ -1,11 +1,12 @@ module register( - input logic clk, - input logic [31:0] d, - output logic [31:0] q + input logic clk, // clock signal + input logic [31:0] d, // input data + output logic [31:0] q // stored output data ); - always_ff @(posedge clk) + // simple D-flip-flop register -> on every rising edge of clk, q updates to the value of d + always_ff @(posedge clk) q <= d; endmodule diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index c1ac25f..5f08a2a 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,13 +1,13 @@ module signext ( /* verilator lint_off UNUSED */ - input logic [31:0] instr, + input logic [31:0] instr, // full 32-bit instruction word /* verilator lint_on UNUSED */ - input logic ImmSrc, - output logic [31:0] ImmOp + input logic ImmSrc, // 0 = I-type immediate, 1 = B-type immediate + output logic [31:0] ImmOp // sign-extended immediate output ); - logic [31:0] immI; - logic [31:0] immB; + logic [31:0] immI; // I-type immediate + logic [31:0] immB; // B-type immediate assign immI = {{20{instr[31]}}, instr[31:20]}; @@ -19,6 +19,9 @@ module signext ( 1'b0 // imm[0] }; + // select appropriate immediate based on instruction type assign ImmOp = (ImmSrc == 0) ? immI : immB; + endmodule + diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 529bc61..e4e0c76 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -4,7 +4,7 @@ module top #( ) ( input logic clk, input logic rst, - output logic [DATA_WIDTH-1:0] a0 + output logic [DATA_WIDTH-1:0] a0 // x10 output ); logic RegWrite; @@ -22,10 +22,12 @@ logic [ADDRESS_WIDTH-1:0] rs1; logic [ADDRESS_WIDTH-1:0] rs2; logic [ADDRESS_WIDTH-1:0] rd; -assign rs1 = instr[19:15]; -assign rs2 = instr[24:20]; -assign rd = instr[11:7]; +// decode instruction fields +assign rs1 = instr[19:15]; // source register 1 +assign rs2 = instr[24:20]; // source register 2 +assign rd = instr[11:7]; // destination register +// program Counter: holds current instruction address PC pc_module ( .clk(clk), .rst(rst), @@ -34,11 +36,13 @@ PC pc_module ( .pc(pc) ); +// instruction memory: fetch instruction at PC imem imem ( .addr(pc), .instr(instr) ); +// control unit: generate control signals based on opcode control control ( .instr(instr), .EQ(EQ), @@ -49,13 +53,15 @@ control control ( .PCsrc(PCsrc) ); +// sign-extension unit: generate immediate values signext signext ( .instr(instr), .ImmSrc(ImmSrc), .ImmOp(ImmOp) ); -reg_alu_top reg_alu_top ( +// datapath unit: ALU + register file + muxes +data_unit data_unit ( .clk(clk), .AD1(rs1), .AD2(rs2), From cae624bf304cd3ded9dc6b9115bf04304a5ecf5c Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 21 Nov 2025 21:31:27 +0000 Subject: [PATCH 19/65] F1 starting light --- repo/tb/asm/f1.s | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 repo/tb/asm/f1.s diff --git a/repo/tb/asm/f1.s b/repo/tb/asm/f1.s new file mode 100644 index 0000000..44632de --- /dev/null +++ b/repo/tb/asm/f1.s @@ -0,0 +1,50 @@ +.text +.globl main +main: + li t1, 0 + li t2, 0x12345678 + li a0, 0 + +light_loop: + slli t1, t1, 1 + ori t1, t1, 1 + + addi a0, t1, 0 + + jal ra, fixed_delay + + li t3, 0xFF + bne t1, t3, light_loop + + addi t1, t2, 0 + jal ra, random_delay + addi t2, t1, 0 + + li a0, 0 + +fixed_delay: + li t0, 50000 +fixed_loop: + addi t0, t0, -1 + bne t0, zero, fixed_loop + jalr x0, ra, 0 + +random_delay: + slli t4, t1, 7 + xor t1, t1, t4 + + srli t4, t1, 9 + xor t1, t1, t4 + + slli t4, t1, 8 + xor t1, t1, t4 + + andi t0, t1, 0x3FF + +random_loop: + addi t0, t0, -1 + bne t0, zero, random_loop + + jalr x0, ra, 0 + + \ No newline at end of file From 3f50982903589a5bc97b908a93a60ee94c567857 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 21 Nov 2025 22:26:50 +0000 Subject: [PATCH 20/65] Added new testbench folder to repo with f1.s file --- repo/tb/asm/{program.S => 1_addi_bne.s} | 7 +- repo/tb/asm/2_li_add.s | 12 + repo/tb/asm/3_lbu_sb.s | 17 + repo/tb/asm/4_jal_ret.s | 16 + repo/tb/asm/5_pdf.s | 53 + repo/tb/asm/f1.s | 48 + repo/tb/assemble.sh | 47 + repo/tb/c/return_5.c | 23 - repo/tb/compile.sh | 59 - repo/tb/doit.sh | 45 +- repo/tb/reference/Makefile | 17 + repo/tb/reference/README.md | 1 + repo/tb/reference/Reference_Prog.md | 95 + repo/tb/reference/Reference_Prog.pdf | Bin 0 -> 314872 bytes repo/tb/reference/format_hex.sh | 5 + repo/tb/reference/gaussian.mem | 4096 ++++++++++++++++++++++ repo/tb/reference/images/memory_map.jpg | Bin 0 -> 11833 bytes repo/tb/reference/images/pdf_listing.jpg | Bin 0 -> 137825 bytes repo/tb/reference/noisy.mem | 4096 ++++++++++++++++++++++ repo/tb/reference/pdf.asm | 76 + repo/tb/reference/pdf.s | 43 + repo/tb/reference/triangle.mem | 4096 ++++++++++++++++++++++ repo/tb/tests/base_testbench.h | 44 - repo/tb/tests/cpu_testbench.h | 99 + repo/tb/tests/mux_tb.cpp | 64 - repo/tb/tests/testbench.h | 39 - repo/tb/tests/verify.cpp | 75 +- repo/tb/verification.md | 48 + 28 files changed, 12919 insertions(+), 302 deletions(-) rename repo/tb/asm/{program.S => 1_addi_bne.s} (56%) create mode 100644 repo/tb/asm/2_li_add.s create mode 100644 repo/tb/asm/3_lbu_sb.s create mode 100644 repo/tb/asm/4_jal_ret.s create mode 100644 repo/tb/asm/5_pdf.s create mode 100644 repo/tb/asm/f1.s create mode 100644 repo/tb/assemble.sh delete mode 100644 repo/tb/c/return_5.c delete mode 100755 repo/tb/compile.sh mode change 100755 => 100644 repo/tb/doit.sh create mode 100644 repo/tb/reference/Makefile create mode 100644 repo/tb/reference/README.md create mode 100644 repo/tb/reference/Reference_Prog.md create mode 100644 repo/tb/reference/Reference_Prog.pdf create mode 100644 repo/tb/reference/format_hex.sh create mode 100644 repo/tb/reference/gaussian.mem create mode 100644 repo/tb/reference/images/memory_map.jpg create mode 100644 repo/tb/reference/images/pdf_listing.jpg create mode 100644 repo/tb/reference/noisy.mem create mode 100644 repo/tb/reference/pdf.asm create mode 100644 repo/tb/reference/pdf.s create mode 100644 repo/tb/reference/triangle.mem delete mode 100644 repo/tb/tests/base_testbench.h create mode 100644 repo/tb/tests/cpu_testbench.h delete mode 100644 repo/tb/tests/mux_tb.cpp delete mode 100644 repo/tb/tests/testbench.h create mode 100644 repo/tb/verification.md diff --git a/repo/tb/asm/program.S b/repo/tb/asm/1_addi_bne.s similarity index 56% rename from repo/tb/asm/program.S rename to repo/tb/asm/1_addi_bne.s index 988d9c3..1c94cca 100644 --- a/repo/tb/asm/program.S +++ b/repo/tb/asm/1_addi_bne.s @@ -1,5 +1,7 @@ .text .globl main +# this is a modified version of the Lab4 test program +# which doesn't run in an infinite loop main: addi t1, zero, 0xff # t1 = 255 addi a0, zero, 0x0 # output = 0 @@ -9,4 +11,7 @@ iloop: addi a0, a1, 0 # output = i addi a1, a1, 1 # i++ bne a1, t1, iloop # if i != 255, goto iloop - bne t1, zero, mloop # if t1 != 0 (hint: ALWAYS) goto mloop + bne a0, zero, finish # enter finish state + +finish: # expected result is 254 + bne a0, zero, finish # loop forever diff --git a/repo/tb/asm/2_li_add.s b/repo/tb/asm/2_li_add.s new file mode 100644 index 0000000..c3002dc --- /dev/null +++ b/repo/tb/asm/2_li_add.s @@ -0,0 +1,12 @@ +.text +.globl main +main: + # li is broken into lui and addi for >12-bit values + # don't forget that addi sign-extends + li t1, -9000 # t1 = -9000 + li t2, 10000 # t2 = 10000 + add a0, t1, t2 # a0 = t1 + t2 (=1000) + bne a0, zero, finish # enter finish state + +finish: # expected result is 1000 + bne a0, zero, finish # loop forever diff --git a/repo/tb/asm/3_lbu_sb.s b/repo/tb/asm/3_lbu_sb.s new file mode 100644 index 0000000..a3d7930 --- /dev/null +++ b/repo/tb/asm/3_lbu_sb.s @@ -0,0 +1,17 @@ +.text +.globl main +main: + li s0, 0x00010000 # create pointer to base of data array + + li t1, 100 + sb t1, 0(s0) # store 100 at address 0x00010000 + li t2, 200 + sb t2, 1(s0) # store 200 at address 0x00010001 + + lbu t3, 0(s0) # t3 = *(0x00010000) (=100) + lbu t4, 1(s0) # t4 = *(0x00010001) (=200) + add a0, t3, t4 # a0 = t3 + t4 (=300) + bne a0, zero, finish # enter finish state + +finish: # expected result is 300 + bne a0, zero, finish # loop forever diff --git a/repo/tb/asm/4_jal_ret.s b/repo/tb/asm/4_jal_ret.s new file mode 100644 index 0000000..25f0002 --- /dev/null +++ b/repo/tb/asm/4_jal_ret.s @@ -0,0 +1,16 @@ +.text +.globl main +main: + li t1, 50 # t1 = 50 + jal ra, add_one # call add_one (t1 = 51) + jal ra, add_one # call add_one (t1 = 52) + jal ra, add_one # call add_one (t1 = 53) + j finish +add_one: + addi t1, t1, 1 # t += 1 + ret # return to main + +finish: # function to set the return value then wait + addi a0, t1, 0 # a0 = t1 (expected = 53) +_wait: + bne a0, zero, _wait # loop forever diff --git a/repo/tb/asm/5_pdf.s b/repo/tb/asm/5_pdf.s new file mode 100644 index 0000000..383745a --- /dev/null +++ b/repo/tb/asm/5_pdf.s @@ -0,0 +1,53 @@ +.text +.globl main +.equ base_pdf, 0x100 +.equ base_data, 0x10000 +.equ max_count, 200 +# this is a modified version of the pdf program that returns the sum +# of the value of all the bins +# default distribution is gaussian +main: + JAL ra, init # jump to init, ra and save position to ra + JAL ra, build + JAL ra, display + J finish + +init: # function to initialise PDF buffer memory + LI a1, 0x100 # loop_count a1 = 256 +_loop1: # repeat + ADDI a1, a1, -1 # decrement a1 + SB zero, base_pdf(a1) # mem[base_pdf+a1) = 0 + BNE a1, zero, _loop1 # until a1 = 0 + RET + +build: # function to build prob dist func (pdf) + LI a1, base_data # a1 = base address of data array + LI a2, 0 # a2 = offset into of data array + LI a3, base_pdf # a3 = base address of pdf array + LI a4, max_count # a4 = maximum count to terminate +_loop2: # repeat + ADD a5, a1, a2 # a5 = data base address + offset + LBU t0, 0(a5) # t0 = data value + ADD a6, t0, a3 # a6 = index into pdf array + LBU t1, 0(a6) # t1 = current bin count + ADDI t1, t1, 1 # increment bin count + SB t1, 0(a6) # update bin count + ADDI a2, a2, 1 # point to next data in array + BNE t1, a4, _loop2 # until bin count reaches max + RET + +display: # function send PDF array value to a0 for display + LI s1, 0 # s1 = counter to sum pdf values (not in original) + LI a1, 0 # a1 = offset into pdf array + LI a2, 255 # a2 = max index of pdf array +_loop3: # repeat + LBU a0, base_pdf(a1) # a0 = mem[base_pdf+a1) + ADD s1, s1, a0 # s1 += mem[base_pdf+a1) + ADDI a1, a1, 1 # incr + BNE a1, a2, _loop3 # until end of pdf array + RET + +finish: # function to set the return value then wait + ADDI a0, s1, 0 # a0 = sum of pdf values (expected = 15363) +_wait: + BNE a0, zero, _wait # loop forever diff --git a/repo/tb/asm/f1.s b/repo/tb/asm/f1.s new file mode 100644 index 0000000..b7e4ac5 --- /dev/null +++ b/repo/tb/asm/f1.s @@ -0,0 +1,48 @@ +.text +.globl main +main: + li t1, 0 + li t2, 0x12345678 + li a0, 0 + +light_loop: + slli t1, t1, 1 + ori t1, t1, 1 + + addi a0, t1, 0 + + jal ra, fixed_delay + + li t3, 0xFF + bne t1, t3, light_loop + + addi t1, t2, 0 + jal ra, random_delay + addi t2, t1, 0 + + li a0, 0 + +fixed_delay: + li t0, 50000 +fixed_loop: + addi t0, t0, -1 + bne t0, zero, fixed_loop + jalr x0, ra, 0 + +random_delay: + slli t4, t1, 7 + xor t1, t1, t4 + + srli t4, t1, 9 + xor t1, t1, t4 + + slli t4, t1, 8 + xor t1, t1, t4 + + andi t0, t1, 0x3FF + +random_loop: + addi t0, t0, -1 + bne t0, zero, random_loop + + jalr x0, ra, 0 \ No newline at end of file diff --git a/repo/tb/assemble.sh b/repo/tb/assemble.sh new file mode 100644 index 0000000..f837ef3 --- /dev/null +++ b/repo/tb/assemble.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Usage: ./assemble.sh + +# Default vars +SCRIPT_DIR=$(dirname "$(realpath "$0")") +output_file="$SCRIPT_DIR/program.hex" + +# Handle terminal arguments +if [[ $# -eq 0 ]]; then + echo "Usage: ./assemble.sh " + exit 1 +fi + +input_file=$1 +basename=$(basename "$input_file" | sed 's/\.[^.]*$//') +parent=$(dirname "$input_file") +file_extension="${input_file##*.}" +LOG_DIR="$SCRIPT_DIR/test_out/$basename" + +# Create output directory for disassembly, hex and waveforms +mkdir -p $LOG_DIR + +riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 \ + -o "a.out" "$input_file" + +riscv64-unknown-elf-ld -melf32lriscv \ + -e 0xBFC00000 \ + -Ttext 0xBFC00000 \ + -o "a.out.reloc" "a.out" + +riscv64-unknown-elf-objcopy -O binary \ + -j .text "a.out.reloc" "a.bin" + +rm *dis 2>/dev/null + +# This generates a disassembly file +# Memory in wrong place, but makes it easier to read (should be main = 0xbfc00000) +riscv64-unknown-elf-objdump -f -d --source -m riscv \ + a.out.reloc > ${LOG_DIR}/program.dis + +# Formats into a hex file +od -v -An -t x1 "a.bin" | tr -s '\n' | awk '{$1=$1};1' > "${output_file}" + +rm "a.out.reloc" +rm "a.out" +rm "a.bin" diff --git a/repo/tb/c/return_5.c b/repo/tb/c/return_5.c deleted file mode 100644 index 3c10f0c..0000000 --- a/repo/tb/c/return_5.c +++ /dev/null @@ -1,23 +0,0 @@ -#if !defined(__riscv) -#include -#else - -// entry point (0x0): compiler places earlier functions lower in memory. -int main(); - -void _start() -{ - main(); - - // Infinite loop to prevent undefined access to memory - while (1) - { - } -} - -#endif - -int main() -{ - return 5; -} \ No newline at end of file diff --git a/repo/tb/compile.sh b/repo/tb/compile.sh deleted file mode 100755 index 1d3a146..0000000 --- a/repo/tb/compile.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -# Usage: ./compile.sh - -# Default vars -SCRIPT_DIR=$(dirname "$(realpath "$0")") -output_file="../rtl/program.hex" - -# Handle terminal arguments -if [[ $# -eq 0 ]]; then - echo "Usage: ./compile.sh " - exit 1 -fi - -input_file=$1 -basename=$(basename "$input_file" | sed 's/\.[^.]*$//') -parent=$(dirname "$input_file") -file_extension="${input_file##*.}" - -# Compile the C code if necessary. -if [ $file_extension == "c" ]; then - # IMPORTANT: MUST NOT OPTIMIZE COMPILER! Or instructions could be lost! - riscv64-unknown-elf-gcc -S -g -O0 -fno-builtin -static \ - -march=rv32im -mabi=ilp32 \ - -o "${basename}.s" $input_file \ - -Wno-unused-result - # To get test case 24 passing, you need to modify ^^^^ - input_file="${basename}.s" -fi - -riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 \ - -o "a.out" "${input_file}" - -# Remove the .s file if necessary -if [ $file_extension == "c" ]; then - rm ${input_file} -fi - -riscv64-unknown-elf-ld -melf32lriscv \ - -e 0xBFC00000 \ - -Ttext 0xBFC00000 \ - -o "a.out.reloc" "a.out" - -riscv64-unknown-elf-objcopy -O binary \ - -j .text "a.out.reloc" "a.bin" - -rm *dis 2>/dev/null - -# This generates a disassembly file -# Memory in wrong place, but makes it easier to read (should be main = 0xbfc00000) -riscv64-unknown-elf-objdump -f -d --source -m riscv \ - a.out.reloc > ${SCRIPT_DIR}/${basename}.dis - -# Formats into a hex file -od -v -An -t x4 "a.bin" | sed 's/^[ \t]*//' > "${output_file}" - -rm "a.out.reloc" -rm "a.out" -rm "a.bin" \ No newline at end of file diff --git a/repo/tb/doit.sh b/repo/tb/doit.sh old mode 100755 new mode 100644 index f439f51..56c58a2 --- a/repo/tb/doit.sh +++ b/repo/tb/doit.sh @@ -24,37 +24,20 @@ else files=("$@") fi -# Cleanup -rm -rf obj_dir - cd $SCRIPT_DIR +# Wipe previous test output +rm -rf test_out/* + # Iterate through files for file in "${files[@]}"; do name=$(basename "$file" _tb.cpp | cut -f1 -d\-) - + # If verify.cpp -> we are testing the top module if [ $name == "verify.cpp" ]; then name="top" fi - - # # Automatically detect latest GoogleTest installation under Homebrew(macOS) - # GTEST_BASE=$(brew --prefix googletest 2>/dev/null) - # if [ -z "$GTEST_BASE" ]; then - # echo "${RED}Error: GoogleTest not found via Homebrew.${RESET}" - # exit 1 - # fi - - # --- GoogleTest for Ubuntu --- - # gtest headers and static libs installed via apt (libgtest-dev) - GTEST_INCLUDE="/usr/include" - GTEST_LIB="/usr/lib" - - # Construct include and lib paths dynamically - GTEST_INCLUDE="$GTEST_BASE/include" - GTEST_LIB="$GTEST_BASE/lib" - # Translate Verilog -> C++ including testbench verilator -Wall --trace \ -cc ${RTL_FOLDER}/${name}.sv \ @@ -62,30 +45,22 @@ for file in "${files[@]}"; do -y ${RTL_FOLDER} \ --prefix "Vdut" \ -o Vdut \ - -CFLAGS "-std=c++17 -isystem ${GTEST_INCLUDE}" \ - -LDFLAGS "-L${GTEST_LIB} -lgtest -lgtest_main -lpthread" + -LDFLAGS "-lgtest -lgtest_main -lpthread" # Build C++ project with automatically generated Makefile make -j -C obj_dir/ -f Vdut.mk - + # Run executable simulation file ./obj_dir/Vdut - + # Check if the test succeeded or not if [ $? -eq 0 ]; then ((passes++)) else ((fails++)) fi - + done -# Exit as a pass or fail (for CI purposes) -if [ $fails -eq 0 ]; then - echo "${GREEN}Success! All ${passes} test(s) passed!" - exit 0 -else - total=$((passes + fails)) - echo "${RED}Failure! Only ${passes} test(s) passed out of ${total}." - exit 1 -fi +# Save obj_dir in test_out +mv obj_dir test_out/ diff --git a/repo/tb/reference/Makefile b/repo/tb/reference/Makefile new file mode 100644 index 0000000..05de74b --- /dev/null +++ b/repo/tb/reference/Makefile @@ -0,0 +1,17 @@ +# Make file to assembly RISC-V assembly language program(s) in myprog folder +# ... relocate instruction to start at 0xBFC00000 +# ... output hex file ready to be read into instruction memory + +clean: + @rm -f *.hex *.asm *.out *.bin + +reference: pdf.s + @riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 -o pdf.out pdf.s + @riscv64-unknown-elf-ld -melf32lriscv -e 0xBFC00000 -Ttext 0xBFC00000 -o pdf.out.reloc pdf.out + @riscv64-unknown-elf-objcopy -O binary -j .text pdf.out.reloc pdf.bin + @riscv64-unknown-elf-objdump -D -S -l -F -Mno-aliases pdf.out.reloc > pdf.asm + @set -euo pipefail + @od -v -An -t x1 pdf.bin | tr -s '\n' | awk '{pdf=pdf};1' > pdf.hex + @rm pdf.out + @rm pdf.out.reloc + @rm pdf.bin diff --git a/repo/tb/reference/README.md b/repo/tb/reference/README.md new file mode 100644 index 0000000..591cf27 --- /dev/null +++ b/repo/tb/reference/README.md @@ -0,0 +1 @@ +Reference_Prog.md \ No newline at end of file diff --git a/repo/tb/reference/Reference_Prog.md b/repo/tb/reference/Reference_Prog.md new file mode 100644 index 0000000..5d2112c --- /dev/null +++ b/repo/tb/reference/Reference_Prog.md @@ -0,0 +1,95 @@ +
+ +## EIE2 Instruction Set Architecture & Compiler (IAC) + +--- +## Reference Program for Team Project + +**_Peter Cheung, V1.0 - 9 Dec 2022_** + +--- + +
+ +This assembly language program, **_pdf.s_** is a common test for team's CPU design. The program reads 8-bit data +from a data memory array starting at 0x10000 and produces a probability distribution function (PDF) in a pdf array at 0x100. + +## New Memory Map + +


+To run this program, you need to increase your data memory space according to the memory map shown here. The data memory space from 0x00000000 to 0x0001FFF is used in the following ways: + +* 0x00000000 to 0x000000FF is 256 bytes reserved for other purpose (not used here) +* 0x00000100 to 0x000001FF is 256 bytes to store the probability distribution function (pdf array) +* 0x00010000 to 0x0001FFFF is a 65,536-bytes array that stores the data the PDF of which is to be calculated + +The rest of the data memory space is not used by this program. +
+ +___ + +## How is probability distribution function calculated? +___ + +To find the PDF of an array of data (e.g. signals), we need to reserve a block of memory to store the distribution. Each entry is a "bin", storing how many times a data value occurred. Since the data is 8-bit wide, the range of data value is from 0 to 255. We therefore only need an array of size 256. + +To start, the count in each bin of the data array must be initialised to zero. We then read the data one byte at a time. If a data value is v, we increment by one the "frequency count" in bin base_address + v. We stop building the PDF array if any bin reaches a count of 255. + +--- + +## The Reference Program **_pdf.s_** +--- + +Here is the reference program with line number. + + +


+ +It consists of 4 segments: +1. The main program loop, +2. The init function, +3. The build function, +4. The display function. + +There are a number of important issues to note: + +* Lines 1-4 are assembler directives. **.text** means what follows is a program section. **.equ** defines symbolic constants. + +* Lines 5-10 are the main program which initialize the pdf array bin counts to zero, then build the pdf function, and finally go into an infinite loop that keep outputing the pdf array to a0, which can be displayed on Vbuddy in the testbench. + +* I have used pseudoinstructions throughout to make the program more readable. For example, line 21 +```brainfuck + LI a1, base_data +``` +is translated to the real instruction: +```brainfuck + LUI a1, 0x10 +``` + +The 32-bit constant **_base_data_** is 0x10000, which is larger than 12 bits allowed by I-type instructions. Therefore, we need to use the LUI instruciton. This requires the programmer to understand how the LUI instruction works. The LI pseudoinstruction hides such details from the programmable. Of course, as a hardware architect, you NEED to know that this instruction is translated to a LUI instruction! + +* To help you mapping all pseudoinstruction to real instructions, I have provided you with a Makefile in the reference folder, which not only assembles the pdf.s source code to a hex file ready to be loading into instruction memory, but also produces the assembly listing in a .asm file. + +* To **make** everything, simply type the command: + +```bash + make reference +``` + +* Provided in the repo are four data files each contains 65,536 bytes of signal data. They are: + 1. sine.mem - a sinewave signal. + 2. triangle.mem - a triangular wave signal. + 3. gaussian.mem - a noise signal with a gaussian distribution. + 4. noisy.mem - a noisy sinewave signal. + +* You can read any of these data into the data memory data_array at the base address 0x10000 with the SystemVerilog directive: + +```Verilog + $readmemh('xxxx.mem', data_array, 0x10000); +``` +* This program has data or control hazards if run on a pipelined version of the RISC-V processor. You must add NOP yourself to get round the hazards. + +* You are free to modify the pdf.s code but you should tell me what you have done and why. + +* Evidence of this program working would be the plot of the PDF on Vbuddy. This can be done by plotting the value of top->a0 AFTER the function which builds the distribution is finished. Do not plot a0 value every cycle - this will take too long. + \ No newline at end of file diff --git a/repo/tb/reference/Reference_Prog.pdf b/repo/tb/reference/Reference_Prog.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0f61844e779dc71eab2c09b7e4a0e398cafaad4f GIT binary patch literal 314872 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ⅇgI#pRseYThE8%%ou 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�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

gOf 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 "$1.hex" diff --git a/repo/tb/reference/gaussian.mem b/repo/tb/reference/gaussian.mem new file mode 100644 index 0000000..5d93491 --- /dev/null +++ b/repo/tb/reference/gaussian.mem @@ -0,0 +1,4096 @@ +55 42 4F 3C 50 1A 18 B9 5D 9B 36 74 67 7C 6A 61 +74 52 46 7B 68 57 8F 5B 9D 6E 85 64 31 AB 75 73 +40 81 43 91 49 6D D 60 67 43 85 9E 36 92 38 4B +6C 69 6B 66 43 91 7F 23 7E 85 4C 65 43 A4 85 49 +3B 4E 5E 4C 2C 41 44 63 40 36 71 8A 29 6D 3E 33 +92 4C 53 69 79 25 33 5B 5E 73 67 4C 50 42 47 66 +47 86 71 5C 5C 95 36 32 42 4B 8E 70 4F 36 64 41 +53 49 78 38 6E 60 55 48 6C 32 1A 7F 71 4A 57 A5 +7D 56 68 46 62 86 52 7C 29 7F 65 5D 9C 5D 41 6A +4B 4B 40 84 4E 81 59 43 3E A6 50 2A 8D E 66 29 +58 54 39 79 7A 60 60 24 49 53 70 60 60 8D 60 55 +61 77 74 48 70 5E 44 8B 7B 83 32 6C 43 95 41 3B +65 6B 61 37 3E 5D 35 7A 44 4F 89 8A 68 58 62 5B +23 41 59 7B 7E 4F 39 71 23 4B 5F 6B 9B 4D 7C 70 +33 81 72 71 76 A4 93 8C 58 1F 80 76 61 9A 6E 67 +70 7A 62 55 50 84 A8 4F 5D 4C 82 3F 38 5B 75 48 +4E 8C 7D 53 4F 4F 63 50 6F 79 65 5D 18 61 5D 60 +3C 98 2D 26 6E 49 99 6C 8F 3B 61 A8 47 66 75 2B +5B 94 57 58 98 85 71 5F 4A 5E 89 96 50 7F 72 6A +61 8E 7E 66 41 AB 4C 5D 5D 6C 1F 3E 6C 76 58 4F +7F 3C A0 91 5D 6B 73 33 40 63 3B 72 52 7C 70 38 +4A 6F 91 46 6F 8B 61 68 84 7C 6E 5E 7C 4E 3C 68 +72 1F 2A 33 4C 6C 3A 90 47 5E 38 86 70 92 56 A2 +67 92 2E 50 77 96 6F 3A 83 6B 57 51 89 6D 80 72 +29 95 6C 7B 56 52 7C 51 4B 55 27 55 85 3D 7D 4A +5A 58 6A 4B A9 95 65 44 36 A4 48 63 61 49 8A 73 +40 77 61 50 3B 79 2D 77 15 4F 5F 54 6A 6B 86 75 +28 80 6B 5C 18 49 3E 7E 53 5F A0 72 3B 91 5C 55 +87 74 95 82 2A 96 77 82 4F 99 5A 44 50 89 5F 2C +65 24 6A 62 88 83 80 54 4F 7D 6C 70 69 78 A2 8E +6A 60 8D 78 25 21 44 8C 13 16 54 69 4B 79 46 32 +2C 4C 6A 52 7A 43 6F 3B 92 1E 74 73 89 63 29 6B +80 63 3E 79 38 A3 78 23 37 78 80 70 9D 54 85 58 +87 62 8C 6D 6C 5D 37 75 8F 8D 64 89 33 33 4E 3B +37 67 6C 23 8E 72 7A 82 9C 96 81 73 6A 73 7B 3C +61 3B 62 6F 3D 86 84 53 56 95 73 7D 87 66 75 44 +3D 72 6F 8E 38 51 7E 28 46 A9 47 73 5E 70 83 43 +A3 6A 9A 54 8E 8C 5B 77 70 32 69 56 3D 73 A9 3E +55 9B 25 60 5F 6D 7C 74 63 63 70 49 41 60 AA 83 +63 67 8E 3B 4B 63 87 2A 43 49 36 9E 5D 45 68 A1 +55 59 5F 68 7B 36 A5 31 88 9A 69 9B 85 26 2F 6F +2F 6B 59 86 45 4C 33 3B 83 23 66 5A 67 2B 63 2E +90 70 52 3A 39 B0 69 61 5E 68 76 65 63 4D 32 56 +30 46 9A 7C 49 3B 6B 48 35 71 61 78 59 67 7A 59 +28 B8 82 5F 89 82 5B 8D 5E 6E 4C 5F 81 55 84 6E +4C 58 74 62 4F 92 B1 5F 8B 6A 40 67 68 93 84 40 +43 59 5F 68 63 61 60 5C 5A 68 54 50 79 46 4D 82 +58 76 87 3E 68 65 A8 7B A3 59 79 47 61 43 61 6B +42 66 5D 3C 93 54 7D 70 79 30 53 35 83 42 56 95 +55 56 42 83 8C 41 56 3C 75 B6 4B 9D 87 87 7F 6B +6B 59 57 3D 34 A0 99 50 99 91 82 57 70 55 65 9A +98 74 43 66 7E 39 59 75 29 96 1A 56 7D 60 7B 40 +1F 65 48 77 76 36 4B 70 39 7A 6B 33 6F 76 32 B9 +33 42 82 40 30 4F 5B 2C 41 42 7D 1B 42 89 18 3A +50 5D 45 38 6F 4E 42 38 7F 6C 4D A4 5F 3A 79 42 +43 55 5E 8A 36 66 86 7E 6A 23 74 6D 6A AD 74 49 +6F 6A 5D 5E 54 7E 5E 50 64 67 5C 48 6B 84 97 75 +67 4F 68 77 85 5D 92 83 78 43 76 8E 66 6F 72 85 +5C 7B 90 96 78 69 4F 62 93 72 48 72 65 53 82 9D +82 8C 76 4A 5D 67 60 30 8A 49 5F 72 5C 58 3E 5C +51 68 71 48 51 79 22 5B 4A 29 62 63 64 57 24 83 +32 98 60 69 57 51 44 57 86 7F 58 7C 5E 29 92 4C +4E 50 55 51 4B 84 44 19 94 81 79 64 6D 11 79 5D +49 74 8C 64 7F 57 2D 45 2D A0 60 6A 7D 86 2A 78 +59 5A 14 45 40 94 66 73 4F 42 61 31 4A 5A 3D 39 +45 22 47 98 6F A2 7C 77 41 3A 9A 55 38 2F 54 79 +50 6F 21 3C 4F 64 49 5F 77 7E 5E 56 84 59 29 5E +4E 64 6F 37 5D 5C 50 8C 5B 6E 12 81 39 70 7A 7C +80 57 32 53 6E 4F 71 67 40 9C 53 28 79 4C 6C 78 +89 83 59 53 7D 8F 92 62 5C 1A 50 67 79 82 66 30 +7A 4F 4D 81 7B 2E 40 4B 55 76 55 64 96 74 7A 60 +4B 52 A5 80 64 42 8C 5B 58 6F AB 92 5C 5F 79 62 +6D 37 50 57 54 A1 46 58 60 68 6B 74 5A 35 35 68 +71 3C 6C 7A 8D 77 30 67 3E 1C 92 42 9F 75 5D 77 +A0 42 39 71 38 6C 78 A0 68 63 AA 3C 94 70 8B 81 +84 51 6F 4D 59 89 28 6D 42 7B 52 65 35 72 38 56 +6F 57 1A 50 5D 7D 9D 67 3E 5F 7C 2C 6E 62 5B 2C +6C A5 38 66 62 6B 49 6D 5A 1D 72 5B 75 AB 3E 4C +55 81 7C 81 56 54 8F 6E 44 45 2E 6B 59 3F 24 85 +50 5A 33 44 93 8B 6A 4C 80 66 74 89 55 7D 32 96 +5E 24 26 67 8B 93 95 73 83 92 6A 7F 22 39 50 52 +4F 48 8E 63 76 57 76 4E 55 45 56 83 32 82 86 77 +76 51 62 7F 81 85 6B 67 80 75 82 26 8D 5D 99 8B +55 5D 23 4D 71 19 20 83 5A 78 8D 3F 40 77 75 6C +72 78 7F 8B 63 53 6D 8E 19 85 60 54 85 4D 51 2C +90 51 7F 8E 49 2D 84 48 41 5D 88 80 73 50 59 70 +8D 8D 7D 81 32 8E 41 55 46 3F 38 5C 49 55 7D B7 +8F 33 3A 4D 47 38 57 5F 4C 44 49 4E 8E 88 43 A2 +62 88 51 43 45 71 2D 38 65 73 7F 5B 10 6D 90 54 +75 3F 52 6A 83 60 6B 44 6E 93 3A 55 51 4D 56 64 +59 4E 58 8C 61 2F 61 6B 5C 99 AC 7B 30 55 91 6F +48 66 80 52 7D 88 75 39 55 97 6A 91 77 4D 90 5F +3C 79 7F 4C 4D 93 60 84 7F 80 40 90 40 75 7A 3F +1E 88 73 60 8B 26 43 56 6D 5B 53 6B 5E 54 4A 6B +83 65 42 70 98 71 7A 5B 76 73 7D 46 9F 2E 5E 4F +40 6B 53 1E 38 4E 8F 72 6F 51 53 73 3E 80 65 81 +24 5E 67 7B 76 92 58 55 5D 45 5A 62 54 90 67 4E +91 70 84 28 6E 72 46 81 4F 6B 54 24 4C 89 90 A0 +9B 65 5D 91 60 85 77 78 5A 82 5A 7F 93 84 52 5D +97 7F 56 50 6F 6E 68 6C 80 80 55 5C 61 4A 7A 2A +52 44 4C 62 74 3E 73 52 5F 49 6C 74 6B 35 4D 4A +85 5D 2D 4C 83 77 78 70 85 86 5E 3D 4B 45 18 75 +6E 5A 71 58 8A 3E 68 23 54 48 57 4E 4A 39 92 44 +59 66 A1 60 80 4E 31 32 59 61 83 54 84 8E 48 46 +7E 2E 5E 76 19 57 7B 59 91 60 4E AC 4B 59 44 36 +96 6F 84 8B 85 45 8F 4E 72 99 5F 74 42 79 6E 50 +69 58 79 9D 7E A5 53 4A AC 36 4B 5B 9B 75 6C 7A +4F 4F 2E 8F 75 9C 5C 1E 85 97 1F 42 6C 61 5C 8D +63 69 52 7D 48 80 6A 7D 92 3C 6C 3E 17 75 7C A0 +56 91 58 4F 6E 63 55 5A 6D AE 6C 76 93 4F 4A 72 +64 52 34 51 7E 57 85 70 74 4E 8A 6C 75 96 5F 3B +68 4F 71 2E 67 60 AF A4 6B 47 4C 47 38 4D 63 58 +5E 63 4A 80 86 68 51 6B 66 51 14 4E 57 6E 78 9F +56 4B 41 58 66 41 7B 69 2F 88 46 53 5E 40 55 5D +62 80 5E 4D 7D 8D 62 32 5C 6E 16 4A 73 6C 61 72 +46 85 58 9F 68 42 5B 60 4E 3A 69 4D 42 70 62 44 +3A 64 65 59 47 4E 59 4D 76 78 94 80 6C 76 7B 54 +4C 8C 65 60 67 5E 40 7C 63 8C 69 96 68 28 76 70 +4F 6A 82 78 41 6C 4F 8A 5D 76 54 8B 72 50 6C 5B +A0 52 51 69 A1 78 50 34 59 8A 2A 52 5B 56 6A 49 +36 80 36 9C 97 3C 75 64 28 54 88 5E 8D 8A 6A A8 +54 7F 83 31 8C 3F 62 66 43 84 5F 85 A2 75 66 34 +32 32 65 3F 43 74 84 3B A9 48 42 5C 8A 41 8C 93 +3B 3D 50 3F 60 80 70 42 79 74 5D 78 73 7D 93 65 +A6 44 37 40 97 4E 47 20 55 61 7C 65 78 88 32 97 +5F 52 85 57 B1 6E 59 83 53 6B 70 33 1B 83 9E 82 +6D 53 67 43 83 67 3C 47 78 64 88 87 7F 44 5B 5E +5D 54 67 69 67 96 6B 6C 4C 3F 68 5E 7C 4E 5E 80 +92 4A A2 29 39 31 78 62 71 5B 6E 3D 68 2E AC 4B +46 6A 58 61 2D 68 5F 30 4B 7F 56 93 76 7B 22 83 +5B 6F 34 45 38 2F 73 41 6D 98 49 75 7B 6E 8F 33 +64 96 69 47 6C 5C 3D 62 50 89 4D 61 36 71 73 67 +68 5C 77 74 37 4B 3D 5C 8C 6E 7D 36 38 4C 4E 3F +94 3E 4D 1A 5F 5B 4D 78 7A 3F 6E 7A 63 7B 45 8E +36 50 97 92 5D 84 81 40 93 35 70 66 50 51 66 73 +6B 6B 27 86 73 62 86 21 79 91 5D 61 89 81 3D 4E +54 63 76 95 86 6A 4E 6C 5A 75 29 65 5F 93 65 68 +5F 4C 66 6D 82 96 56 42 91 8E 5D 19 6A 98 37 78 +21 53 3A 80 88 9A 7E 5D 36 6C 48 66 1B A2 3F 92 +2D 5D 34 89 A7 63 29 33 63 69 64 46 7B 61 4D 58 +3C 72 2C 95 68 93 57 5F AC 3E 3E 77 56 5C 69 48 +73 4E 21 92 6A AD 9E A9 34 6E 42 73 8F 3C 61 17 +54 18 8A 63 4F 74 54 3D 56 5D 73 49 36 86 80 60 +4E 6D 42 52 14 6C 95 88 29 72 7C 39 61 7C 23 3B +41 6B 7E 62 8D 51 4C 88 6D 82 71 65 7E 57 58 1F +65 2F 3A 61 C 84 48 43 3F 52 A3 59 55 51 3B 6C +93 5E 86 73 58 42 33 5A 63 68 68 58 48 75 6B 6F +7A 54 36 67 A1 90 3A 62 8E 5E 8D 62 6D B 1A 6C +4A 2E 98 2D 41 59 87 59 9B 48 89 4C 59 20 71 66 +6E 3E 4A 63 88 27 6A 64 43 8E 47 81 2D 43 82 78 +4D 7E 2C 82 A1 44 91 37 40 7C 5A 72 72 58 1F A4 +83 62 7B 51 71 78 AA 73 25 42 4D A7 A2 5B 64 33 +A0 43 53 4B 82 6C 90 6C 65 86 78 4E 44 75 61 38 +52 5F 64 60 42 47 98 3F 4A 73 99 76 60 68 69 6C +3F 62 71 56 42 7B 70 6C 9A 90 59 2E 73 70 25 71 +85 44 63 8C 64 26 78 4F 21 4F 92 61 27 7A 5F 20 +55 46 99 73 7A 82 8F 49 67 89 68 54 76 59 7C 59 +52 73 69 88 87 30 94 61 4B A2 54 9D 70 64 8A B1 +30 73 82 94 4E 2F 5D 7B 6B 97 7D 30 5C 67 6B 84 +2D 56 48 21 57 2C 75 7D 5F 8B 7E A3 68 5C 54 71 +61 55 8E 3B 78 92 23 72 69 6C 76 77 21 7E 3F 78 +27 57 8D 34 78 84 70 70 83 85 5D 74 92 90 4F 51 +95 5C 4D 20 6B 52 51 6E 7D 58 2F 77 25 37 52 4C +35 8B 87 6A 9C AA 71 46 36 89 48 87 8E 4C 78 3F +67 7C 50 1E 4B 5D 64 5D 4F 6E 48 66 46 62 6E 8D +51 65 6C 58 9D 79 76 3D 73 60 8D 63 78 8E 8A A0 +A3 53 40 2D 56 89 33 1C 7A 1D 67 94 57 69 5E 64 +21 7B 51 6D 4B 72 A3 4F 4B 9E 44 3B 75 82 12 68 +87 8F 40 65 72 5D 4E 3B AE 52 78 84 26 77 7C 46 +88 69 8A 8D 7E 4C 64 89 87 62 7E 78 54 18 47 76 +83 60 44 87 55 48 7E 70 9A 7A 59 6F 61 79 42 5B +20 45 AB 74 51 5B 49 6F 6F 85 3B 59 48 7C 32 72 +61 5B 50 29 29 8C 78 60 46 5A 7C 62 43 A5 80 47 +5F 67 63 51 42 65 79 4F 45 3F 63 39 76 35 83 32 +85 2B 4E 47 3E 25 7A 74 47 4A 3A 6B 82 72 4C 56 +86 6A 79 69 6A A7 AB 7F 32 81 4E 71 84 5A 45 7F +59 64 88 7A 5E 63 4F 69 49 7E 7F 6F 56 5B 7C 7E +7A 71 78 68 53 81 85 51 4D 7A A2 85 7B 3D 84 57 +29 5C A3 72 4E 80 7B A9 6A 6D 66 4E 5C 4A 82 33 +6B 63 84 5F 33 A4 75 79 74 6D 35 60 93 58 5B 3C +5C 40 70 77 6B 8B 45 30 2D B3 6B 2F 73 69 66 4F +70 80 50 79 82 95 81 F 75 3A 86 8A 68 24 78 64 +7A 4B 73 58 49 B1 3E 6F 49 1C 71 8C 1F 59 8C 6A +5C A7 8F 65 73 33 41 5C A1 77 63 6B A4 5F 63 86 +49 A6 8B 67 7A 75 39 63 4B 86 3E 5C 9A 43 99 71 +7D 67 8B 4F 7C 8E 30 63 33 3C 77 3F 33 AF 3A 83 +96 6B 72 49 5C 89 86 96 7C 35 B3 23 4C 3E 6A 79 +73 AA 57 57 A2 43 6F 61 68 56 6B 4E 41 3F 97 4D +40 30 6D 49 3E 4F 60 6B 9B 56 4F 4F 45 74 7B 5C +7E 45 8D 41 5B 63 42 54 5F 8C 54 8F 5C 84 47 43 +84 59 99 8F 5F 34 73 7E A1 31 3A 36 E 3A 74 2C +78 36 8D 67 53 92 4E 5D 77 8A 5F 69 90 79 4B 66 +51 3C AD 63 A0 76 22 4F 4E 4F 59 4B 76 46 4D 4C +3E 4D A8 60 34 67 65 A1 35 45 A9 8A AA 22 60 92 +6C 92 67 7B 70 50 26 71 73 52 68 75 2C 7B 7F 75 +A5 6F 73 76 AD 7A 63 76 37 2A 4A 4D 5C 29 60 3D +59 6C 45 96 7D 5D 8B 3B 63 4D 6E 94 82 5B 6F 6E +46 6B 43 6A 2E 99 85 24 30 60 42 41 69 60 1C 6C +80 4A 57 56 82 9A 43 3A 3E 8E 76 23 71 53 5E 41 +79 62 38 72 6A 27 61 62 86 53 51 56 71 7A 47 62 +63 96 3A 78 47 87 58 51 81 5A 56 4F 62 8B 22 6C +86 5B 53 81 92 7A 6F 6E 6E 83 5E 6F 75 50 AA 52 +5C 8C 35 38 52 4B 5F 5B 12 6C 6C 37 73 83 4C 60 +87 4F 5B 4E 50 6F 80 39 56 89 80 60 79 63 3B 52 +55 B0 6B 55 3A 57 49 14 5E 61 9B 48 3B 6B 8D 6C +4F A4 1D 6E 4E 2B 76 59 4F 55 6B 61 7F 45 64 42 +5D 37 69 3B 50 5D 66 3F 41 5C 99 53 4D 6D 96 3E +56 7A 44 1C 6D 14 86 61 75 64 67 3B 52 5C 70 6C +98 26 63 46 80 A9 7D 94 8B A0 77 49 8B 62 2A 26 +3B 27 79 5B 47 85 8C 43 E 9C 57 7A 7C 3A 5A 81 +64 71 3B 4B 7F 51 34 88 55 58 52 70 30 81 5E 88 +60 4A 35 50 41 4C 42 69 16 41 75 77 4B 70 3C 70 +64 8E 61 4D 1F 6C 89 29 27 5F 61 7A 68 80 5A 6F +6A 51 33 6B 1E 59 7F 63 78 7B 42 81 90 5A 9D A3 +76 5D 67 7E 45 4C 58 3B 9B 89 72 3D 94 7E 40 4E +5D 7C 90 37 5D 94 6F 54 65 76 5C 27 62 80 75 5A +5A 82 5F 68 3A 4B 6D 85 55 25 1D 8E 82 68 33 78 +7A 86 5B 54 77 39 5B 4B 8D 30 4B 5E 6F 72 40 7A +81 6F 73 80 49 60 42 54 6C 4E 86 4C 54 92 2F 63 +5D 8F 57 6D 8F 23 6B A6 74 5B 72 8C 39 54 67 63 +54 34 6B 74 63 47 66 89 7D 8B 58 72 55 3D 77 78 +1E 88 48 A0 93 4C 73 60 88 60 36 70 92 67 71 50 +80 7D 6C 60 73 58 98 69 36 6A 6B 27 78 B0 8D 4E +5A 7A 2F 2D 62 69 54 59 7F 6B 3D 26 66 68 54 6B +A1 5A 68 4B 40 63 9B 7C 50 59 5A 42 6B 62 2C 8D +6D 87 64 7D 7F 9F 7A 51 5C 4E 20 AC 70 44 56 71 +4A 6D 7E 73 A7 7C 3E 7A 93 59 36 3A 5D 89 75 2B +5D 79 66 6F AE 47 4D 81 86 75 52 53 6A 98 79 9F +62 77 63 66 7E 4D 49 7B 24 91 60 73 42 74 6A 3D +64 30 46 7D 47 1F 6F 52 98 79 3C 84 7F 4E 41 43 +6E 8C 42 4A 4C 8D 5D 84 8A 84 44 50 4C 42 5E 25 +50 71 A1 4F 6A 87 51 61 16 45 41 6C 32 67 6A 71 +4D 74 6C 3C 35 96 50 27 66 68 6E 5D 45 B2 AE 47 +4F 5B 84 5B 81 48 5D 72 4E 85 54 85 91 7F 70 23 +7C 8E 79 3C 4C 53 52 41 87 6D 9E 35 38 7C 4C 25 +55 33 62 91 7E 7B 97 6E 5B 5A 48 57 59 52 68 4F +66 3E 6E 5C 4A 3E 9A A6 6E 85 7F 54 79 47 5B 3E +43 38 48 2C 48 6D 75 30 6B 5F 4F 62 5B 29 50 57 +45 88 83 64 3F 4A 6F 74 8C 7B 63 4D 6C 6F 54 65 +52 66 92 5 63 27 73 8E 7D 27 4D 6A 4D 60 89 71 +6C 49 65 5B 54 4D 42 9C 22 63 3E 2D 42 82 6B 8B +48 34 50 4C 6D 4F 8A 3C 2E 74 79 5B 77 44 55 48 +4B 4F 5D B 60 AB 8C 94 5F 8B 73 72 4A 5C 97 87 +7D 19 5E 49 91 45 97 59 A1 3F 55 50 4B 2F A1 81 +64 65 74 45 25 62 92 71 5F 2F 48 81 7E AB A0 48 +6C 22 54 48 2E 53 34 4D 55 70 52 93 72 9A B5 48 +6B 23 74 8E 5E 78 4F 3E 5B 7F 30 78 5C 5F 52 40 +7B 51 54 A7 28 34 64 3E 66 4A 80 6B 43 59 40 39 +3E 54 4A 94 6D 61 62 37 69 64 48 86 A0 72 87 6C +BE 80 5E 69 5F 95 82 45 71 6C 2E 71 80 5A 73 98 +63 8E 3E 60 61 55 AB 7F 76 54 6B 74 42 96 84 37 +B4 65 5A 5B 15 3D 6B 5D 40 26 53 62 8A 48 5B 45 +7F 60 4E 47 41 A6 61 6A 9A 6C 46 5A 53 3F 59 7C +A5 16 39 67 71 81 5D 65 87 63 3A 46 54 2D 96 37 +64 64 96 46 9C 75 80 66 53 9A 79 64 6A 9E 19 3A +85 8E 55 5E 72 30 A0 74 83 55 6F 62 46 8E 8C 67 +79 56 77 84 68 38 75 4C 80 69 69 4F 5B 62 5D 5F +50 22 71 4C 35 85 69 36 71 51 5B 48 A5 85 62 80 +2D 43 93 8E 32 6D A2 B6 54 71 56 57 6A 35 71 4F +79 73 84 54 68 6B 4F 4F 4B 42 55 8A 96 70 86 4A +41 41 19 63 5A 81 4B 70 6D 68 2D 42 8B 6E 6D A6 +88 65 92 68 71 62 2A 63 4B 76 2F 75 A2 96 79 65 +48 3C 65 84 57 73 8C 5F 44 60 60 7A 94 66 41 7E +78 46 8B 4F 56 7F 62 4D 58 64 87 87 A3 6B 5A 57 +6A 62 61 66 54 45 24 9A A2 81 AB 77 64 57 78 97 +65 47 49 44 86 62 40 22 75 79 7F 5B 94 4B 6A 58 +54 80 47 66 81 7A 72 39 77 3C 53 81 2D 3D 69 47 +71 3D 18 66 46 60 96 69 57 1B 9F 69 31 7E 74 45 +95 64 53 60 A0 64 6B 4B 80 9A 45 4E 70 85 66 4F +44 59 2D 5A 9D 71 77 49 48 52 1A 54 46 5B 3E 7D +2C 84 A1 52 4F 75 51 73 6D 26 5F 88 7A 86 8C 4A +87 45 36 86 6F 55 87 42 3E 45 53 60 86 89 A1 4A +79 83 63 AA 61 65 98 72 8E 39 5D 6D 45 80 39 5B +3B 52 4C 57 77 68 60 80 58 2D 53 45 61 73 81 5D +7B 2E 7C 8D 93 80 4B 77 74 5C 7A 85 6B 5B 93 50 +83 46 82 33 6E 63 7D 55 48 46 6B 7D 6E 54 55 6D +76 9E 3A 6A 56 1B 9B AD 84 7E 50 64 31 3F 9E 54 +63 3C 78 6A 59 59 6C 3C 4C 3D 8A 80 61 52 7B 3E +26 56 63 77 53 4D 7F 92 43 81 9C 56 72 54 49 6A +8E 18 32 4F 53 58 45 45 84 31 72 7D 76 85 2A 3D +4B 70 58 84 28 47 98 5A 40 98 74 90 5D 68 8E 3E +71 38 31 88 26 85 6B 72 81 62 A1 3E 71 38 81 49 +35 85 7C 75 4B 6D 37 38 5D 87 4B 63 61 49 60 93 +9B 40 5A 58 65 67 80 81 40 6F 75 82 88 4B 69 38 +4E 64 2C 7A 79 6C 77 3B 8D 54 3B 3F 69 95 79 49 +6E 7F 91 79 4B 7A 50 58 91 93 5B 64 63 9B 64 24 +57 5E 6F 98 92 65 73 57 78 20 6C 63 86 65 92 4C +3A 4B A2 78 6C 69 4E 54 7E 3B 66 76 87 78 41 50 +8D 75 55 7A 9A 54 7D 54 81 61 49 B4 87 A1 66 4D +A5 47 7E 43 67 75 62 51 84 64 53 5E 63 7F 81 63 +1E 62 7C 6E 39 59 60 66 61 5E 1B 63 40 60 1A 62 +6F 5A 49 5B 6C 5E 77 62 2E 6E 38 30 90 59 8C 58 +79 71 81 43 4F 3B 4B 80 31 84 7C 40 3D 79 5A 97 +44 37 77 50 58 6D 5C 75 55 50 3F 51 68 86 7C 9D +55 49 99 4E 38 50 5D 19 71 63 46 52 99 6C 4A 3C +18 45 17 A6 5D 5C 55 81 60 66 6A 74 6B 69 5C 78 +54 45 7C 75 90 3F 67 6B 5E 57 67 7D 97 22 7C A2 +45 86 2B 4F 92 50 8B 48 82 99 64 25 77 83 1F 57 +80 68 84 6D 92 65 61 83 5C 5D 8E 86 5D 40 3A 60 +6E 55 78 8C 8E 6A 75 68 81 79 52 44 53 54 64 4D +60 7D 80 48 68 3F 63 5D 60 28 68 50 3F 58 92 56 +70 4C 5C 90 51 80 79 63 56 62 56 7B 28 63 56 86 +56 5F 83 67 5E 48 41 A3 7D 41 7D 7F 56 69 54 54 +50 52 37 55 3D 2D 6F 41 6C 53 49 61 A1 54 30 22 +9A 59 54 32 34 56 23 1A 90 7A 2E 6B 71 71 7B 4D +AA 45 24 39 AC 6E 81 20 90 56 78 86 67 50 7B 67 +5E 89 63 40 8F 3A 75 69 7E 35 71 B2 61 57 6B 61 +23 29 8F 79 67 A4 37 64 4D 9A A2 59 3F 8D 72 81 +44 57 7C 6F 69 55 7F 75 4E 61 66 7F 3E 68 56 55 +60 55 6F 53 1F 7D 4A 3E A8 3E 51 85 5C 7B 7A 25 +5F 73 76 96 44 3C 80 54 38 9B 8D 6F 64 5B 46 73 +4F 4F 3D 55 6F 6F 68 62 84 52 5A 12 35 72 69 46 +4C 9D 39 7B 7B 76 3D 71 87 36 45 70 60 97 6C 8B +6A 5B 58 69 A9 6B 5E 67 74 5C 40 64 90 48 44 6D +78 6B 89 81 82 91 6D 48 7A 81 4B 71 63 80 3E 45 +64 79 6B 5F 71 1B 7D 44 71 3B 69 94 5A 5C 27 9C +77 90 4E 92 83 55 46 9F 86 42 8C 8B 74 83 75 5D +67 81 AD 70 3E 20 94 43 67 66 50 1E 40 35 8B 73 +57 67 45 3A 38 53 8B 33 5E 38 5C 47 6B 84 60 59 +62 A7 49 67 56 5B 66 4D 50 6E 90 5E 19 2B 48 89 +92 77 97 7B 5A 4F 74 99 80 44 61 40 56 99 5F 6F +99 64 4A 6A 16 56 2E 6D 95 32 6C 5F AD 39 33 8B +39 67 65 66 86 65 55 2F 6D 80 66 5B 66 72 69 49 +4E 5B 71 60 69 5E 6F 5E 4B 7A 76 79 39 7D 8B 90 +41 4E 3E 42 42 4B 57 28 64 72 6A 1D 6F 7D 71 92 +63 42 84 79 65 35 7F 4F 9A 43 67 6C 8E 88 61 59 +82 9A 4A 60 73 7A 40 40 6E 49 22 37 70 67 6E 83 +94 42 80 3E 73 5D 7B 5B 3A 34 5E 97 41 87 7B 37 +76 76 3B 9B 89 4F 94 60 75 28 57 54 2E 58 2B 97 +47 5C 9D 7D 37 73 63 71 28 7E 53 1B 7F 43 18 59 +5E 32 99 5D 47 8A 3B 8E 87 65 7D 6F B2 44 35 7B +11 51 5D 1C 93 51 84 51 57 83 35 73 70 84 3D 68 +7A 3E 3E 3B 9C 84 51 61 78 A0 97 92 35 31 86 55 +43 62 15 3B 3C 89 56 51 29 4E 77 3F 48 51 6A A8 +3D 43 35 61 26 84 36 76 55 48 29 6B 60 4E 59 5A +8C 2E 71 7E 70 23 6B 85 21 54 7C 89 79 4E 66 7C +76 57 28 5B 5F 71 85 71 89 95 7D 57 76 71 3E 6B +50 4C 81 80 55 94 9A 5E 5E 5B 9B 8D 68 92 55 73 +52 5D 5B 46 2B 75 73 36 63 44 43 90 93 74 93 69 +57 8A 6B 61 1D 3D 76 6D 31 7B 79 5C 77 5E A2 5F +6E 43 1A 84 55 5B 5C 40 3C 62 4D 3B 51 3C 9D 6E +2A 49 74 66 56 47 6E 62 85 84 81 9B 4B 4A 62 A9 +5D 35 70 53 88 AA 22 7F 88 94 5A 42 68 14 3B 1F +4B 38 58 42 5D 56 5A 41 82 2C 4D 51 87 36 9D 39 +A3 59 82 37 8E 3A 79 62 27 38 43 91 72 87 73 74 +44 20 5C 8A 62 7E 56 37 54 79 81 78 AD 7F 63 71 +52 6B 53 29 6F 23 57 6E 4C 85 69 AC 77 7C 3A 61 +8E 7E 85 3C 3D 47 7A 87 7F 54 52 61 45 7D 25 7C +80 62 80 96 40 73 5C 6D 40 51 6E 57 83 69 72 67 +61 5E 93 62 5D 29 58 99 66 79 54 98 A1 57 9B 56 +58 98 8D 92 40 55 43 51 2F 51 A5 3A 6D 41 84 6B +9D 5C 48 41 65 AA 33 46 78 96 65 8A 60 81 47 56 +5B 5D 68 76 61 50 94 3A 48 64 45 5F 3A 7D 31 53 +6D 42 48 71 68 74 23 6C 16 4C 85 6B 61 8E 56 52 +86 B1 65 90 5E 73 6A 47 5F 53 60 56 3D 51 7B 75 +3D 60 35 79 73 5C 65 74 47 74 7A 55 5E 55 54 70 +39 35 4D 8B 3B 41 A2 86 22 34 4E 49 4A 77 42 57 +58 5B 3E 48 6F 3B 5A 42 93 53 8A 7E 4B 8A 65 8F +7E 4F 71 6C 33 89 80 5F 66 69 34 5B 2E 61 6B 4E +69 73 72 78 4F 65 6A 6A 87 7C 80 2F 5B 4E 7C 4B +4E 60 73 77 46 42 66 60 32 69 59 47 4A 6D 79 26 +89 30 84 21 55 34 B6 7B 9D 67 A1 71 45 4A 8A 83 +3A 6E 4F 8B 4C 8C 6F A5 9D 8E 76 72 58 58 3B 5D +65 70 6B 36 6D 96 6F 7D 2A 5E 70 69 54 A2 AB 28 +19 91 60 82 1F 16 5B A9 21 8A 4E 88 85 3D 6B 2A +77 62 AD 4C 17 24 5D 5A 4F 67 6C 34 3A 66 3D 7A +95 47 7D 42 7C 73 66 2E 4C 4D 81 3A 72 41 33 B7 +9A 75 56 7A 57 2C 3D 79 56 90 33 4C 94 41 7E 14 +7A 38 75 3B 3C 22 6B 68 37 1E 5C 67 46 46 79 73 +66 54 8F 3F 45 70 80 3D 62 A0 90 40 9E 5B 70 63 +42 64 52 90 7E 46 7D AD BB 54 5A 5E 6D 58 18 7B +4A 5F 98 AE 5E 5C 78 6F 2D 36 95 88 4C 34 77 9C +67 70 75 1D 85 74 8A 56 56 24 89 75 76 79 7C 84 +46 68 94 4D 8F 55 53 7F 95 A0 37 5A 59 5B 57 74 +48 54 63 6B 7A 95 8A 49 2C 60 63 8C 37 6F 82 40 +44 1F A6 78 4A 7F 12 66 6E 5E 4A 5D 96 9D 74 22 +96 5B 84 67 5A 7C 60 74 AC 29 3A 3A A0 81 60 3F +84 4C 3A 83 49 68 4C 8D 4C 80 4F 2F 21 82 6C 80 +5B 9F 7C 2B 4F 69 90 5E 52 7B 2A 7F 7C 74 7F 71 +4A 62 4A 53 87 3D 59 57 27 64 70 88 9E 4D 70 68 +7A 62 74 4D 20 6E B7 6A 47 61 55 5C 5C 8A AC 4A +3D 57 3E 4A 93 73 2B 5A 6E 92 93 86 9D 83 3C 45 +6E 71 71 85 81 6E 3E 3D 5E 6A 59 60 6E 65 83 38 +48 73 75 55 4D 3D 42 78 18 74 60 80 33 69 74 25 +30 62 4E 4B 22 59 42 7B 9A 36 6B 1A 4D 71 4A 31 +18 5E 34 4A 53 8E 2E 81 B5 5F 38 7E 54 56 60 71 +78 3C 5A 48 82 55 55 7A 52 6D 50 6A 20 6B 46 76 +72 21 7B 2E 53 4A 56 3A 9D 8E 34 9E 64 63 5C 71 +23 63 44 77 52 49 41 72 57 61 46 7E 82 A9 54 8A +4A 85 65 51 62 8A 42 79 9D 53 74 81 54 B 2A 5F +A4 56 2F 8B 88 7E 85 6C 4C 4B 8E 71 44 79 1E 83 +61 8B 8A 75 88 4B 73 36 29 86 2E 65 70 3A 89 53 +4E 7C 31 6E 2E 62 AD 35 66 5A 2B 84 5D A0 7E 62 +91 7E 3B 89 44 95 69 61 56 41 9A 72 69 40 85 3B +51 57 20 44 95 A3 93 6A 57 19 98 5D 6B 3D 54 A2 +72 60 54 56 73 3A 4D 8A 7C 5F 4B 61 3D 38 3A 87 +63 3E 39 85 46 88 6C 4B 7A 59 66 85 5B 46 54 33 +79 9D 56 51 4E 74 6E 52 81 77 54 4B 4F 7E 71 77 +A8 74 3D 87 92 3B 3D 7A C2 82 64 7F 6C 48 37 46 +5C 3F 75 5E 4B 6B 6E 33 76 2F 86 7C 69 7D 83 59 +97 24 84 98 3B 64 4B 68 16 26 3E 57 5B 3A 7D 89 +21 15 3C 56 6A 8A A0 5B 2E 86 59 3D BA 95 57 77 +6F 6D 41 35 48 60 4C 32 B0 1F 35 9C 53 86 2A 41 +5D 62 6D 2A 82 3D 30 3D 54 56 4D 36 7E 76 58 50 +1D 68 5B 52 75 7F 28 2F 60 41 61 6E 95 8A 62 A0 +60 7C 49 45 78 6A 34 8A 61 6D 60 46 75 83 75 B7 +7E 79 65 81 99 A1 5D 25 84 6F 44 51 98 4F 71 4A +48 B5 33 4E 27 10 69 51 86 5A 72 51 8F 44 79 B6 +82 10 7D 2A 39 15 76 88 6C 5D 4F 71 40 70 64 8D +5A 55 8E 94 68 77 51 4A 73 44 7F 74 24 9F 4A 65 +58 8A 55 6A 22 74 60 4C 41 6A 61 4B 50 4D 88 62 +64 84 7B 5C 76 45 3B 53 2C 5F 48 3F 6D F 83 51 +91 B5 57 81 8A 5C 5F 41 68 88 48 40 7E 79 6E 27 +62 59 48 57 3B 3D 42 52 8F 67 79 4F 77 83 3D 85 +6F AE 56 97 7E 6C 62 B3 A0 66 5C 73 37 56 35 43 +A5 5D 63 46 54 70 3F 35 6C 87 6E 94 77 64 9A 59 +80 4A 78 88 93 70 63 6A A2 27 72 83 60 5D 3B 54 +60 7B 50 39 61 3E 44 96 32 1E 77 72 4C 82 66 53 +7A 51 89 62 55 79 67 84 76 2F 58 2C 45 5C 8C 40 +76 4B 4A 3A 7A 54 52 62 43 75 73 49 66 21 83 54 +61 60 5D 23 5D 68 78 62 32 34 6E 4C 7C 4B 74 4A +82 89 94 5D 2A 17 7B 78 67 73 81 61 8B 14 86 6F +44 29 64 7C 87 9A 5D 63 34 53 5B 95 68 68 69 6E +3C 49 53 7F 75 6C 4A 79 5F 59 7A 95 42 4E 30 A1 +77 67 86 99 82 90 6B 39 A1 6D 24 59 5D 5F 42 6C +46 58 81 87 7F 40 91 97 74 7F 51 4A 28 8B 62 7C +62 3E 23 71 66 4C 6E 5B 93 7E AA 29 85 66 A4 4D +38 68 72 4B 93 16 48 5C 37 80 5C 57 76 96 3F 4E +42 24 3C AB 6F 6E 58 63 7F 48 45 27 A0 9F 76 51 +58 76 69 61 60 A3 61 61 79 68 83 52 24 57 21 68 +76 9C 2A 61 65 39 65 76 4E 66 8F 57 93 3D 88 80 +64 4E 61 39 82 6F 4D 4C 3D 43 40 9F 70 78 31 85 +77 6D 82 49 47 8B 55 4D 6C 34 3B AA 62 64 79 8A +90 7F 6A 23 5C 58 85 3E 7A 75 7D 85 1D 3B 38 2D +56 58 70 53 3D 64 38 27 30 43 60 4A 1C 58 25 51 +59 33 3B 42 85 5A 80 52 A6 81 36 60 43 68 5A 79 +48 5C 45 7B 61 AC 56 97 56 5A 96 36 7D 76 5A 80 +73 71 8C 83 42 51 61 45 2A 60 4F 84 4B 2D A1 65 +6C 52 6C 6D 5F 55 66 58 88 57 54 1B 8C 82 2E 4C +60 71 83 8A 59 7C 64 7C 67 86 4F 9E 5D 59 41 70 +9D A2 59 45 7D 8C B2 6B 17 64 92 89 5B 5F 7B 71 +26 72 54 39 55 4D 22 9D 83 2E 98 53 6E 94 AA 4F +81 36 61 9A 3D 74 40 2A A9 63 47 3D A5 49 4F 74 +5A 52 4A 36 76 6E 66 50 36 A3 84 8C 3D 41 67 4D +85 5C 5E 81 77 5C 3F 37 55 25 3D 74 83 9B 3A 43 +42 7 5F 7C 5A 54 5C 52 75 4C 88 3E 95 3F 29 A2 +AE 74 98 52 5C 76 61 7D 65 83 5D AD 84 71 5A 98 +4D 3E 4B 45 94 59 77 54 7A 3A 26 3E 71 34 72 7C +64 8D 77 54 6E 3C 80 9E 89 79 55 6C 4E 78 30 98 +5C 7F 4A 6D 52 8B 74 53 89 68 68 2C 88 1D 74 68 +59 8B 85 49 48 80 75 5D 6E 88 89 63 63 50 4A 66 +5E A4 75 43 6B 49 9B A3 6F 86 5B 8A 85 99 8F 60 + D 9D 52 6E 4B 4A 52 2F 33 37 77 6A A4 93 45 42 +89 5F BD 73 45 B6 D 37 55 81 90 93 9A 7A 70 81 +6F 4A 6F 72 9D 6B 71 7F 5A 5A 93 75 90 66 84 36 +2C 71 51 94 7C 45 57 3F 6E 3E 54 5B 80 5C 74 50 +3D 50 47 38 5C 65 19 77 43 73 20 5A 70 7B 6E 3E +51 5B 4C 8B 24 77 37 47 5B 6F 1B 61 49 60 18 50 +75 47 76 7E A2 48 7C 46 77 4F 96 85 7E 6D 2D 68 +52 52 53 5E 3A 58 31 A0 28 82 51 5C 7E 9E 4E 5F +79 64 57 6E 48 1C 65 76 74 94 69 AA 78 57 74 9F +76 36 9E 5E 45 31 7D 7A 53 7E 77 94 57 3A 51 6B +65 77 8B 46 5E 56 5C 70 58 69 30 76 60 AB 3A 20 +4E 82 77 8E AB 37 9F 79 3F 2F 8A 8F 61 62 6B 82 +96 63 69 51 9A 9D 55 1F 56 53 77 A5 86 43 76 31 +79 55 6D 6A A2 98 86 41 64 29 46 90 90 7C 67 49 +55 7A 55 6C 7D 43 4F 4A 4B 92 8C 67 87 36 6A 3A +74 6B 7E 70 F 6C 74 A6 44 34 8F 45 80 6A 54 32 +4F 8A 7E 8A 7E 5F 51 38 31 37 68 72 6D 6F 68 25 +4A 42 6E 78 70 39 77 6F 81 52 7A 67 3D 9F 37 33 +9B 53 6B 59 6E 7E 33 8A 6B 71 6D 8C 47 6B 39 36 +B3 89 18 59 31 A9 38 81 63 50 4F 4F 7B 8C 6B 77 +82 46 5C 42 2A 57 5F 3E 69 68 7B 35 90 67 32 28 +30 53 21 6A 73 3E 89 8C 5E 91 88 55 62 57 51 97 +8E 47 60 3C 94 9F 6D 5B 73 91 50 7D 9A 7B 50 74 +71 55 7F 8D F 66 6A 54 A7 5B 30 99 77 79 4D 49 +7A 63 13 24 51 59 6F 56 4C 8B 63 8F A2 4A 43 52 +44 7C 83 2C 43 76 52 84 50 7B 84 63 71 6B 41 66 +55 93 89 56 7F 67 85 54 40 7B 8F 67 49 3E 5E 2B +6A 48 68 38 A2 4E 3A 7F 47 5B 60 6A 46 55 8E 8B +5D 56 34 58 53 5C 66 88 46 53 54 92 63 69 47 66 +5D 53 3B 5D 38 77 39 7E 60 4E 4D 58 75 85 45 27 +5A 6A 1B 49 5B 40 85 7A 34 6C 5E 4B 3F 56 50 73 +4A 87 2E 6C 36 41 8A 76 57 2D 2B 30 3E 43 3C 3B +71 26 40 93 83 35 7B 5D 3B 87 67 52 8B 60 5A 75 +3C 1E 5A 89 5F 53 89 56 60 61 56 43 72 93 73 63 +5E 57 77 4C 2A 5C 73 A5 3F 4D 56 73 42 50 60 20 +6F 4C 46 45 86 66 3A 90 58 79 B2 64 92 52 75 65 +44 5C 7A 67 7B 8B 7F 7D 35 62 91 2B 6A 91 52 5B +92 A1 9C 66 77 2E 73 6B 3C 75 6A 68 75 4A 57 54 +70 4C 72 87 48 55 53 88 67 43 65 7E 36 52 8C 68 +65 95 39 5D 73 34 8F 6E 8A 6F 5C 3D 47 57 73 6D +84 82 81 72 6D 8E 5F 7B 6A A1 38 61 43 4E 5B 4B +45 42 97 15 59 4D 2E 47 4E 8C 5E 4A 4E 5A 4F 3C +75 4D 90 4D 96 48 4C 6E 7E 34 22 58 78 8C 30 6A +74 57 6A 94 7A 5F 54 12 6C 71 81 6E 73 5F 6D 4C +36 71 76 A2 37 23 5B 44 8D 86 6F 79 33 57 55 4D +2E 31 79 98 72 52 73 6F 2F 5C 7B 7A 6C 5F 56 85 +5A 67 75 48 55 68 7E 5B 74 69 6D 70 4D 6B 45 48 +5D 6B 3E 7E 93 60 7C 7E B1 57 45 84 AC 64 8F 21 +71 5A 87 67 79 81 98 58 69 2A 31 4A 74 90 39 29 +85 46 7A 79 45 84 5A 60 AA A0 5E 4E A5 7D 5D 17 +82 65 59 9E 51 48 6D 84 71 43 B9 3C 69 3F 9D 61 +4F 66 AB 59 5F 52 76 65 41 4A 3B 6B 57 91 88 5D +6F 8E 67 56 77 7F 68 60 76 61 7D 72 38 77 47 31 +1B B 2D 5E B0 6C 2D 53 44 2C 74 5E 85 6C 4F 60 +54 5A 7A 74 79 92 5C 68 59 6A 45 43 47 35 7C 54 +41 33 4C 4C 60 45 55 50 32 78 5D 88 71 5E 82 7C +34 52 6A 4D 3C 4F 54 89 41 2E 61 5E 62 70 7B 70 +4C 6D 38 42 7E 6D 44 4F 4B A8 55 7B 31 6F 6D 58 +6B 87 3B 83 6E 4D 55 3C 1F 5A 5B 6D 71 42 27 88 +55 39 79 2D 7E 63 5C B4 76 43 7A 3F 6B 5C 7F 2F +7D 67 89 51 37 49 63 6C 43 40 60 70 62 66 28 74 +88 51 68 8D 47 42 4E 35 78 7C 93 4D 94 93 3F 79 +49 54 21 51 8C 81 91 6B 4D 9B 97 9F 5A 62 50 8E +51 4D 4D 33 5A 23 50 80 7E 2C A3 BC 9A 64 98 2C +B4 99 58 53 5B 5D 5B 81 69 8D 86 89 44 6C 5C BC +76 92 66 48 6F 5C 4D 47 33 78 87 4A 7C 1F 6F 41 +43 7B 85 76 5C 73 55 45 6E A7 74 6C 84 6D 3C 75 +25 2D 82 18 26 9A 58 97 80 6A 51 6E 59 62 7B 67 +6F 6F 63 6F 27 4F B7 15 58 27 5F 8E 5A 6E 68 65 +4E 34 4B 75 33 9D 73 99 5F 4F 5E 7D 7B 3C 25 55 +51 4B 6D 73 25 5D 45 83 84 49 76 77 67 79 82 63 +44 63 89 8D 6F 41 7A 91 4B 53 6C 3A 49 7C 79 64 +79 8F 79 43 82 77 89 45 1B 57 4E 6D 54 38 42 68 +26 36 23 6F 9E 49 74 5B 36 66 47 25 71 58 54 87 +56 6E 7F 3E 4C 69 6F 8E 62 3B AD 75 4C 1B 21 37 +72 6C 80 A0 45 45 65 7F 6C 78 41 60 41 32 78 B6 +6F 88 48 7B 54 91 8D 6B 8A 48 84 8A 5A 47 79 AD +29 59 67 5C 50 6B 3F 6E 73 80 66 83 8A 90 A1 5E +68 5B 3C 50 6D 8F 43 79 88 A3 5A 92 5C 37 43 70 +7F 36 7C 92 6B 84 5A 60 64 56 2C 84 58 B3 71 81 +48 97 69 95 42 AB 3E 5D A8 89 5B 97 8F 55 5E 5D +38 62 56 36 6E 60 78 8E 86 66 52 65 26 44 89 45 +77 4F 5F 3D 7B 7C 71 6D 78 5C 64 68 6D AC 59 64 +6B 65 B8 7D A5 48 6F 82 46 71 9E 66 36 3A 3E A6 +60 8A 2A 52 49 2D 9B 79 7D 61 7A 8B 6A 7E 7C 31 +5A 2C 53 36 80 A1 5D 45 2B 85 8A 51 76 6D 72 6B +43 96 44 45 97 88 8A 51 7C 4B 64 57 A1 81 27 38 +74 57 35 46 3A 3F 25 48 6D 7C 60 8C 77 80 55 9E +4C 92 72 5D 52 5E 33 91 74 78 4B 93 69 A5 60 81 +A7 36 5C 50 73 77 4E 25 4C 5A 59 3B 82 6D 28 6A +59 36 7E 70 62 5B 2B 3D 80 55 25 85 8D 4E 80 6C +6A 6E 9E 7B 59 A4 65 7B 69 7A 84 52 34 5B 59 73 +34 89 8A 47 B4 5C 70 61 79 80 32 74 45 89 73 63 +44 28 6F 61 71 29 70 54 5C A3 4E 70 4A A5 79 52 +50 54 86 3B 6E 2E 47 4F 81 78 84 85 78 5B 43 69 +89 2F 6A 68 72 65 7E 51 56 6A 43 5A 31 4C 52 4A +65 4D 71 36 7B 49 6E 4E A2 84 72 73 6C 43 81 51 +9A 55 7D 84 50 62 65 4D 6F 5C 4E 72 69 A5 39 4D +66 88 6A 40 3D 64 69 6D 7E 1A 6E 9E 6D 52 43 59 +63 6E 90 A3 4B 8C 55 68 15 5F 7B 3B 64 25 63 77 +8A 40 55 1F 3F 70 80 76 6B 35 3F 78 9B 71 7E AC +4E 53 22 5B 62 36 3D 64 45 88 49 62 72 6D 33 12 +67 55 87 38 3B 71 48 16 87 65 25 77 7C 46 2E 91 +6C 50 46 52 3C 40 44 6C 47 58 61 7A 82 53 B4 23 +82 46 81 66 56 5B 3C B4 33 65 53 69 97 40 6D 47 +79 7D 84 66 5B 3B 95 60 7D 69 81 78 92 7D 34 73 +57 71 7F 67 61 39 70 81 75 97 70 3A 3F 46 37 5A +7F 47 88 4C 6D 8C 7B 6A 5E 76 6C 8A 84 3D 4B 2B +5F 4D 44 7F 84 5F 8D 84 53 1D BE 74 7E 71 68 6D +43 69 52 96 50 8F 46 67 31 99 40 2E 81 4E 7E 86 +A2 8C 74 70 45 87 51 28 87 3C 50 85 1F 79 6E 2F +6C 89 54 6F 3B 7C 44 7B 9B 93 54 67 63 96 65 3B +51 62 26 68 AA 6F 58 33 58 8D 56 77 68 27 64 46 +1E 69 49 4F 99 51 98 80 36 6B 2D 72 76 86 5C 4D +64 45 6F 7B 69 4E 91 8F 80 30 52 41 93 3D 6C 40 +47 38 4D 36 93 5B 5F 90 80 83 5C 2A AA 60 7E 50 +50 86 60 76 78 5F 5E 4B 4B 62 6D 52 92 5B 5B 71 +50 94 3C 29 4E 6A 85 60 74 4A 5A 32 86 4A 7B 46 +5E 7D 28 42 82 B0 67 A5 56 68 95 3E 58 48 33 39 +68 10 6F 2C 32 17 34 76 42 39 5D 99 63 60 5D 15 +59 5B 3A 9F 9B 78 5E 78 7E 6D 45 6B 63 2A 80 6D +90 51 44 68 5A 6D A1 4D 42 71 6A 5A 7F 33 90 83 +71 48 43 92 4A 7B 77 34 80 76 61 6F 6D 4B 53 28 +73 9A 98 21 77 33 57 45 5B 91 65 3E 79 5D 33 66 +6D 74 8A 13 58 50 7B 84 79 7B 62 5C 70 3C 97 9F +66 6C 38 63 43 75 7D AD 83 40 6E 73 7D 62 50 5F +9E 4F B3 4D 6F 58 7C 77 3B 31 57 48 42 A6 35 4D +53 89 6C 5D 58 83 62 94 45 AA 43 3C 96 5B 65 5B +6A 40 46 B0 70 35 5F E 7A 64 49 69 8A 74 6E 57 +2C 85 53 54 16 89 49 2F 72 63 68 78 2D 6C 92 69 +3F 98 69 76 5A 7F 5F 82 62 78 50 B2 6A 2C 5B 8E +95 A8 8E 81 88 5E 54 46 69 74 7F 6D 45 3F 59 6C +82 26 AB A5 10 64 64 78 73 90 88 86 2D 34 71 5D +33 69 95 8B 5A 57 79 80 72 5D 4F 79 71 60 7C 5E +66 75 29 62 82 52 70 6B 5D 89 7C 4B 2B 52 88 3B +63 56 61 52 6C 61 53 54 6A 87 4A 4E 8C 8B 2A 65 +5A 57 76 50 87 5A 80 41 97 75 8A 67 39 25 67 41 +7D 5B 61 7E 6F 22 6E 8C 65 6D 61 58 90 38 89 58 +66 78 3B 77 8D 79 6D 8B 76 5F 72 26 62 70 53 6C +40 2D 35 3E 6B 6B 70 7C 94 8A 56 57 6F 93 40 4C +8F 48 2A 5C 90 82 7F 77 8D 79 B2 B5 74 54 5B 82 +42 6B 4C 87 50 5C C 50 46 37 43 52 7E 80 96 4B +3A 89 39 53 9E AA 82 70 2A 44 5F 6B 52 70 5E 56 +55 52 AC 73 45 6E 70 99 90 7F 88 28 59 8A 97 78 +10 54 5A 8C 3D 46 48 8A 4B 3E 6A 45 75 59 97 B4 +84 7E 80 4F 64 98 43 53 69 89 5D A3 89 5E 7D 6E +68 65 3B 68 8C 5A 86 48 4B 79 57 3A 77 7F 6E 68 +7C 2C 6A 88 53 5E 5F 61 5C 51 61 5E 54 89 9C 62 +4E 71 7F 65 7D 2D 55 52 7E 5E 38 8E 88 25 43 4A +56 70 1C 52 5D 90 86 96 50 3E 61 2D 5B 52 3A 48 +67 96 65 A3 45 7D 5A 91 64 54 71 67 62 58 76 4E +63 50 7A 74 35 48 63 27 4E 5B 84 39 7B 3D 82 72 +5A 53 7F 29 69 5D 49 66 9B 63 6 68 8C 21 42 66 +65 62 50 66 26 25 7D 8D 6C 81 42 59 6D 2A 2D 57 +76 79 69 4A 5 5B 6E 63 49 32 7A 78 36 4D 5F A8 +4C 4D 8E 31 83 4C 61 84 64 4F 8A 52 59 2E 86 7B +76 4B 4C 65 6C 87 45 7F 6E 70 52 71 65 28 70 64 +8F 5F 43 55 2E 7A 4D 58 82 3D 55 52 4B 70 5E 2D + B 73 75 7D 8F 5F 86 90 9A 58 4C 77 5C 46 48 6C +89 72 4B 7F 58 7C 63 7F 2F 45 61 45 5C 31 A4 7D +68 6C 52 52 36 7B 5B B0 6B 9C 62 89 75 9D 6B 69 +A6 22 46 4D 59 58 43 29 29 5C 64 6A AB 5A 51 78 +63 54 83 43 8D 90 56 7C 78 5A 5D 6F 70 7A 2B 59 +45 4A 2B 4D 2D 6B 6B 44 5A 58 5D 72 70 3F 65 42 +5F 69 6D 58 44 86 66 91 8A 70 85 67 65 6B 30 29 +6E 68 29 74 5C 48 58 43 42 30 62 50 B7 69 52 78 +AD 4C A9 6B 4A 6F 36 7C 6A 7D 35 86 6A 45 72 7C +8B 46 86 59 88 3A 3B 3D 76 66 7F 2C 63 79 25 41 +A9 83 30 93 4C 7C 95 86 56 7A 5F 58 89 5C A4 7D +3F 51 4B A8 82 3A 58 5B 54 71 86 82 7C 54 2D 74 +77 A2 3B 79 35 4F 62 88 3F 46 78 44 5D 64 88 81 +98 71 2D 49 4B 53 2B 39 51 6B 31 9F 5C 91 5F A2 +8B A0 62 38 6E 66 56 B7 62 8B 5F 62 61 85 9B 4F +82 61 6D 72 6C 84 63 7F 73 2E 50 69 5B 4E 3A D +84 7C 54 7A 5A 76 50 B4 59 8E 79 49 5A 56 76 97 +52 57 68 32 5B 53 16 67 1D 5C 6C 99 5A A2 85 2E +79 7D 70 3B 40 5E 5E 2E 4B 2A 33 64 67 6C 66 A5 +89 6A 77 6A 7A 68 8A 62 5D 69 5D 44 7C 74 54 A3 +6F 57 56 5D 7C 7A 3B 38 42 15 7B 73 65 5F 7C 82 +52 73 78 6D 8B 8E 8B 49 34 37 42 1A 71 68 5F 5F +6C 6D 43 60 5B 45 4C 7E 71 56 24 69 16 64 6D 20 +81 88 66 44 65 66 6E 6B 23 70 7E 4D 52 5E 65 7F +9A 47 7F 6C 71 8B 17 6C 70 75 65 63 97 35 69 28 +3A 72 6D 9F 90 23 94 76 49 9E 56 7C 64 8D 17 58 +9A 6A 44 73 49 71 85 7D 52 23 7C 33 5A 8B 8E 72 +8A 55 A8 78 1B 63 63 26 41 44 6D A5 3E 58 68 53 +5A 29 60 82 8A 5E 48 3C 19 43 5C 61 AF 5F 54 3D +90 15 89 7D AA 39 74 6D 69 5D 71 95 28 60 6E 39 +78 51 52 63 6F 47 8F 43 93 5F 63 55 B1 8A 78 50 +4B 69 44 6A 90 73 7D 2F 63 4D 38 70 59 2C 67 86 +65 79 66 55 6A 4E 49 80 63 70 71 57 81 92 5F 28 +87 2F 70 9D 99 7D 24 39 9C 7F 4B 47 4A 70 8D 23 +41 20 54 A2 49 7D 27 28 70 43 AF 6C 43 28 4A 68 +5F 60 99 7D 8F 82 94 4A 43 5E 3F 77 6 85 47 84 +6C 67 7A 6D 78 70 3C 64 9E 59 60 49 26 B 75 67 +AD 51 5D 68 3D 8D A7 7E 5C 67 A9 67 7B 48 66 98 +46 49 70 99 6D 3E 8E 1F 5E 89 45 88 39 54 3A 43 +27 8C 43 60 72 65 83 70 8A 7F 65 55 87 74 33 89 +49 93 6A 93 5D 50 2E 6C 82 4E A3 44 52 71 38 43 +97 75 79 58 49 5B 6E 41 3A 71 43 80 78 4F 1D 3E +76 54 33 93 90 39 6E 66 56 51 82 6E 44 96 42 53 +54 60 72 A3 9B 23 6E 6E 58 69 1F 6B 66 6C A9 87 +4C 51 8A 68 22 7D 8E 4A 81 4D 96 8B 74 5B B4 8D +1F 4E 69 5D 9E A4 2B 84 7D 79 6E 5A 43 74 AB 5A +6B 75 5C 54 6A 9B 5B 6C 6D 68 58 55 70 72 5F 3D +45 6A 6C AB 2B 7D 4D 59 4C 47 69 79 70 9D 68 5A +80 2C 31 88 4C 82 49 81 80 A8 99 63 47 4D B1 54 +53 52 74 8B 97 63 68 1F 4E 4B 64 70 78 57 8A 48 +57 73 56 5C 67 60 73 7C 6D A9 1F 3A 66 88 8E 7C +5A 3C 2F 5B 71 7D 9E 4E 8D 65 56 36 8C 54 56 62 +2C 83 3B 23 3A 4A 4A 67 81 5D 56 70 86 81 38 85 +61 41 5A 54 6A 6A 43 5B 83 7F 72 76 52 5F 88 85 +69 41 62 53 6C 7F 76 7A 54 71 5F A0 35 88 56 87 +9E F 5C 30 41 41 71 7C 6F A1 76 70 7C 74 64 52 +42 6F 4B 74 47 51 83 71 84 80 20 97 5B 60 73 68 +1F 6A 6F 62 4B 51 73 5A 85 52 6E 6E 49 86 24 71 +22 6C 7F 3B 77 41 54 43 5F 99 8C 63 90 72 4C 90 +8A 64 6A 52 3C 32 97 4D 4E 52 5E 95 7C 69 59 3C +35 6A 7C 3A 51 2D 8C 57 63 79 5A 2A 2E 43 69 85 +7B 81 21 3E 5A 96 7B 56 46 69 4E 94 98 A2 7F 82 +61 86 37 2D 95 99 60 A3 41 76 71 78 32 59 4A 6A +31 73 29 1D 58 88 3E 3D 54 65 83 7E 5A 68 6E 44 +5F 7B 4E 6E 42 76 7D 71 88 68 5C 54 54 79 32 59 +3D 8A 80 86 2C 4C 7F 5F 7D 7A 36 55 49 81 73 56 +5B 1F A5 3D 53 64 58 4D 5A 11 5C 87 96 53 68 71 +2B 3D 57 63 5E 58 65 68 51 86 66 71 38 5E 47 44 +65 7E 62 41 4F 5A 22 6C 55 53 59 A1 4C 8B 6C 64 +64 72 89 6C 20 3C 69 3D 61 4F 51 64 23 7E 55 8C +69 89 6F 8E 6F 25 A6 9E 5B 51 79 4B 85 96 57 49 +56 5C 4C 6B 5C 7E 3D 7B 6C 5D 17 2F 37 89 68 47 +5C 61 55 92 7B 6E 49 50 76 66 61 57 72 4F 58 85 +73 64 5C 69 51 64 5E 67 4A 5F 78 B6 82 3E 86 4C +B0 70 79 4D 5D 7F 20 9C 6C 92 77 4B 5E 65 76 6C +79 4E 58 40 4E 5E 75 42 6D 73 2B 5E 8C BA 54 46 +7F 8F 5A 76 59 B9 61 78 2D 86 5D 37 28 99 57 6A +6E 5A 46 A1 65 5D 83 93 6B 4F 5C 66 30 4A 3F 80 +55 77 34 6F 5B 77 10 79 4D 88 88 49 68 4C 19 4D +6F 7B 34 A9 48 A8 68 2C 74 A1 2B 7A 3C 4E 60 A3 +5A 53 6B 6A 9D 6C 71 4C 5E 56 79 50 46 4B 5D 49 +43 88 77 68 61 7A 70 95 5B 37 60 71 7D 6C 4C 77 +9E 5E 41 3B 7A 94 59 83 79 72 90 46 7B 71 3A 5D +5A 61 5F 45 7A 3A 50 71 71 61 52 99 8E 76 58 5A +66 46 43 3C 86 73 72 33 6A 5C 4D 46 6B 90 3C 64 +65 52 8C 56 27 32 23 7B 86 65 39 6F 97 92 50 43 +6E 80 57 85 55 AA 51 67 5D 39 8D 46 5C 86 5D A1 +87 7D 4F 79 26 75 95 34 60 5A 6D 52 78 9B 4A 87 +44 51 48 70 5D 3E 73 74 97 2B 6B 13 64 9C 20 5B +48 32 5D 73 76 59 9F 74 8C 6B 65 88 44 5C 7A 72 +65 5B 67 5E 82 9C 87 A6 78 61 80 1B 74 71 43 60 +5D 6A 31 A 59 70 4F 8D 48 76 48 59 4C B5 3B 75 +6B 90 76 65 5F 1F 46 51 80 6A 2D 22 4B 81 35 2C +4D 30 8B 9F 2A 89 46 5F 44 83 15 A0 3A 76 51 58 +72 51 59 57 42 53 9C 3D 48 4C 47 84 7D 78 69 84 +A6 93 51 47 7E 54 81 5B 4E 51 37 49 49 6F 65 6A +1D 72 33 92 65 A5 6E 87 7E 49 AF 3F 83 99 52 4E +7B AF 35 57 76 79 53 63 3D 74 63 8F 48 8D 6C 6D +56 4D 89 7A 55 83 80 73 81 69 4F 77 2B 28 84 87 +81 7E 7E 40 59 5D 7B 60 76 2C 6C 35 32 58 76 51 +8C 36 41 7B 56 95 43 75 57 5A 32 30 83 50 5E 58 +27 4F 86 79 76 8C A3 64 86 4D 1C 87 8A 6D 77 2C +57 51 4C A1 4F 4B 71 45 63 48 46 5F 6B 33 88 7D +25 38 4A 76 80 48 4C 45 68 8B 54 46 35 3D 7D 44 +60 B3 81 87 4E 52 7F 40 98 85 7B 54 44 5A A0 73 +62 6B 73 29 45 58 4B 76 6D 95 55 69 80 7A 46 7D +71 5B 7E 86 6F 4C 78 61 45 79 8C 64 95 94 95 3B +7D 54 70 80 58 7D 9E 80 67 7A 5D 53 98 54 7D 5F +6F 4E 64 87 92 4C 79 41 62 74 4F 8D 49 4D 92 45 +4E 74 61 40 4F 7F 59 7D 8F 59 6B 48 54 77 9B 77 +A6 7B 38 83 18 5D 6E A6 55 39 27 6C 41 79 61 67 +6D 6F 9A 7C AC 6C 85 74 66 72 5E 54 21 5C 1E 49 +3A C3 70 B4 30 8A 4C 5A 42 1C 82 70 90 5B 74 2C +62 6A 87 66 89 7F 2F 49 70 56 66 56 8A 3D 63 89 +9A 75 76 63 60 59 66 66 88 42 90 E 8C 29 7B 71 +52 7D 7A 26 75 63 6F 1E 52 41 90 8C 72 23 8F 36 +50 70 9E 7E 65 61 63 9C 87 80 42 55 72 75 86 97 +42 37 4B B2 64 69 67 4A 3F 39 85 54 45 56 6C 53 +4F 71 48 55 4E 65 83 48 80 5A 6C 68 6F 59 64 70 +60 69 54 6A 68 71 6B 7B 86 36 3D 22 4D 53 7B 4B +83 4E 3E 33 57 54 47 39 6C 6C AD 8B 59 32 71 69 +7A 8E 76 38 65 37 8D 62 6D 74 7E 6A 86 AF 45 65 +4A 76 99 8D 5A 45 2F 91 85 68 77 7F 70 6D 66 60 +1F 51 9F AB 43 5D 6C 16 55 9C 7E 68 10 49 47 54 +41 32 42 57 4A 51 30 80 5B 26 6A 5C 24 57 65 9A +8D 28 6E 4F 62 52 43 5A 28 91 31 74 81 79 9C 9D +61 9D 3A 52 4F 86 48 63 51 52 80 5B 4F 61 91 6D +65 22 A1 69 5A 68 5F 73 1E 6A 3F 45 28 41 56 41 +5A 5F 25 8D 29 84 6C 64 23 56 47 54 2F 2F 72 61 +5D 63 48 7B 58 AE 74 5C 60 46 3E 77 7C 89 55 62 +36 62 99 49 6E 87 5C 6B 83 71 9B 8E 44 97 34 6E +58 91 AA 69 6B 53 52 3C 45 43 53 2C 8D 78 95 9B +3F 47 88 7C 76 84 AF 50 96 75 60 4F 6E 4D 7C 40 +67 8A 2B 6B 8B A1 7E 60 A0 29 74 61 6F 28 52 A7 +59 2D 79 51 81 39 60 89 92 85 41 75 46 80 76 73 +70 4A 69 79 7B 4A 52 64 5F 9D 62 81 7C 71 89 6B +59 90 48 76 62 8B 6E 30 78 3C 7A 5C 1C 52 4C 58 +46 31 51 80 1E 48 6B 8C A9 78 92 24 57 60 87 7B +79 61 6F 58 8B 52 3E 59 77 60 44 AB 5D 46 6F 59 +58 62 7A 7A 2E 97 7E 60 62 9B 88 52 48 3A A0 5A +8B 40 55 6F 47 3B 7C 82 2A 20 92 4C 63 B0 6B 90 +A7 7C 9C 7B 39 7B 4D 35 52 78 BA 65 85 69 58 6F +70 79 8B 73 66 5C 44 7C 60 88 72 6B 44 40 82 12 +8B 58 50 51 85 6F 51 79 84 71 4C 67 40 87 42 4B +59 6A 5B 44 43 41 25 7A 62 7D 57 60 89 63 39 59 +6F 9B 77 89 46 32 46 58 1A 45 4D 7F 3D 81 87 62 +43 52 6D 74 4B 81 3A 68 5F 62 81 99 59 77 7F 28 +6E 73 54 71 86 62 79 21 33 4A 54 53 81 30 74 55 +40 7F 37 65 60 78 72 70 5C 55 3A 42 4D 51 46 9E +60 85 7E 56 12 69 80 89 3E 49 6D 6A 60 50 43 7B +40 7C 17 8B 2F 21 43 50 6B 55 3D 49 99 2B 6C 29 +64 8F 77 65 5F 8A A7 54 3A 8D 75 7B 4A 83 42 64 +64 73 77 78 44 90 8A 62 49 A0 45 74 8E 6A 58 7B +58 35 6C 55 69 65 6D 54 89 99 84 6F 88 79 29 AC +62 26 61 4A 5F 54 34 6E 1A 86 4D A7 64 73 76 62 +44 60 92 4B 73 51 3E 6D 34 B0 5D 4B 38 48 2B 2C +7E 2D 7E 2B 6B 4D 46 7C 42 91 88 66 5B 6C 4D 3B +78 70 85 52 50 9E 43 63 5C 58 7A 59 30 66 69 7D +73 69 7D 52 A1 8D 6E 48 32 5C 5D 6A A0 77 6A AA +5A 33 86 82 7D 47 2F 6A 70 5C 45 4D 62 84 68 47 +63 77 80 5C 87 4B 59 5D 70 35 10 73 56 63 9B 6B +59 78 9C 94 60 51 64 A2 23 98 31 5B 59 44 6C 48 +74 8B 80 73 40 74 51 44 3E 4A 71 7D 38 58 52 40 +91 63 4B 6B A0 66 A2 6D 7E 5A 3F 45 56 64 52 54 +81 6D 65 64 55 82 58 64 7B 6A 5B 24 A1 55 21 A1 +3D 58 97 74 33 7F 6B 6E 5F 6A 5E 75 45 7C 5D 3F +11 82 87 67 44 3B 5F 6B 5C 85 67 52 71 5F 67 43 +62 9A 34 36 65 50 63 54 52 8A 7C 19 74 20 5B 9B +57 85 63 67 3A 4B 97 7A 51 39 6D 68 48 55 58 82 +4F 69 70 84 18 50 6A 71 8D AC 39 84 3B 46 94 3B +66 81 92 5E 94 8F 80 9B 75 81 5F 57 54 34 29 29 +A9 78 61 6B 41 36 4A 87 68 83 60 5F 5C 7B 44 4F +62 7E 81 88 3B 91 53 8B 45 5F 6C 68 6D 6F 84 4C +37 36 83 1B 2F 66 54 6C 59 79 5E 4B 19 44 73 31 +76 79 1A 47 17 87 62 81 45 54 70 8E 54 8C 70 59 +61 4C 88 6E 63 85 7E 57 28 30 53 30 8B 72 56 5D +33 5E 6C 92 66 64 51 A0 85 5F 5E 67 45 45 55 65 +3A 70 44 92 91 36 79 47 86 79 3E 6C 75 6A BB 6C +29 6A 2E 28 4C 8E 98 46 26 71 7E 3F 7F 87 72 42 +44 71 9D 99 6B 65 A2 4E 8C 84 74 87 20 5E 64 46 +3F 44 78 55 3E 44 63 6F 6D 93 65 98 61 5D 7E 6F +77 49 62 49 4E 98 45 3C 73 4D 46 53 69 40 3E 62 +84 68 98 5D 62 46 65 60 8C 7B 63 60 29 87 76 94 +70 63 76 94 79 8B 7E 39 5B 68 94 A8 82 78 71 32 +62 80 5E 86 5C B0 2B 7F 48 68 B3 48 4F 92 66 8F +8A 65 3B 89 61 50 A0 29 58 3E 7D 98 6B 55 99 50 +94 83 57 77 60 6A 32 76 42 3D 55 4C 3A A2 97 88 +47 86 4E 96 84 11 9A 80 7F 87 A2 7A 6B 9B 59 42 +63 5F 6C 44 76 57 72 9A 5D 6F BE 43 4B 4E 45 51 +3B 65 59 1F 6F 9F A7 79 47 46 75 49 71 54 35 7A +4D 6D 57 45 22 5E 74 3E 6B 3E 76 A6 91 55 72 75 +77 5A 77 45 57 63 85 95 7D 51 3B 31 3A 6B 4B 52 +38 4C 59 6C 66 69 5E 64 76 70 61 5F 61 5F 9D 53 +79 77 6E 7C 6F 6F 59 4A 69 81 64 5E 9B 55 7C 20 +6E 58 5C 5F 1E 91 58 A4 66 25 3E 49 4E 93 4D 8B +41 72 47 7B 51 84 99 36 4F 6C 4D AC 5D 70 72 AF +80 71 36 42 6A 78 74 72 44 46 4D 30 8F 55 44 43 +A2 7E 7E 72 4C 38 65 61 50 37 6F 49 14 6E 64 83 +57 6A 75 77 33 90 72 72 8F 67 6A 5F 68 73 65 5F +73 41 63 87 82 8F 45 57 6E 4B 68 AA 83 72 93 75 +53 5B 25 71 68 32 7C 62 30 6B 71 1A 72 75 47 B4 +74 67 44 96 47 9C 52 7A 34 7D 4E 35 4A 4D 77 64 +38 89 AF 40 7E 81 AA 41 53 38 5E 6E 52 62 67 30 +5A 47 56 4D A2 8D 4A 67 53 93 67 43 77 7D 7C 41 +A4 93 70 51 5A 58 4D 1C 79 5B 97 8D 56 58 32 70 +5B 30 1B 6F 4B 7F 8B 3F 5A 86 80 4B 5C 6E 85 6D +41 AE 51 59 88 F 6A 95 29 7C 5E 52 A3 8F 65 50 +A3 43 82 54 47 75 7E 9B 90 49 7B 4F 5F 7C 4C 67 +2E B4 5C 3C 86 73 57 2A 7A 88 66 8D 3E 57 6F 6B +49 53 6B 77 3C 6B 4D 5A 42 4C 37 55 6B 5A 2E 64 +41 86 55 54 64 57 2E 6E 8A 78 21 61 4C 7B 63 89 +72 83 5C 2D 63 21 83 8E 4E 7C 6E 73 52 6E 4C 81 +86 86 53 17 59 A5 79 6C 64 59 53 7B 71 3D 43 63 +76 9F 61 93 3E 36 78 46 86 74 46 3A 76 76 1D 7C +59 96 6A 3C 7F 43 1B 31 67 2E 46 9F 6D 5F 1D 41 +3F 94 88 86 73 5C 9E 7E 64 74 65 45 71 6C 32 4A +4F AB 71 55 4A 1E 7A 7E 4C 46 43 4E 47 81 73 81 +49 7E 8A 71 3B 6E 4C 6D 31 41 41 88 74 99 4C 4C +94 5B 62 7C 6B 36 6B 4B 3D 61 86 68 30 3E 66 53 +60 3D 74 7C 3E 7B 64 4A 3A 59 31 8E 8C 88 5F 87 +50 75 79 78 5F 55 62 49 85 60 93 71 56 7B 51 79 +64 55 5A 48 6E 85 71 6B 85 9A 4B 64 AD 92 4D 8E +4A 36 9A 3B 17 34 57 5B 80 8D 8C 3C A3 73 62 5D +27 31 34 50 4D 89 6D 71 2E 6D 77 5C 53 60 46 7A +87 60 70 42 60 44 48 AB 68 44 5D 56 68 7D 5B 7C +7A 84 3D 82 2F 49 50 AC 81 42 84 49 6A 7A 50 41 +8D 7E 5A 72 77 7C 74 65 F 4F 4E 76 66 60 6A 50 +3C 53 50 4E 29 6E 5D 4D 34 75 46 9C 7E 46 72 85 +8A 76 75 51 6F 66 51 5D 57 66 85 7A 34 55 8E AF +48 56 44 7B 6E 70 61 80 7C 41 51 54 3D 1A 80 6B +4A 77 36 5E 70 3F 97 50 57 9B 8B 76 52 78 60 84 +36 76 4E 41 64 86 71 7A 43 62 89 68 6E 6E 59 82 +73 5A 60 4A 67 6C 7D 9D 57 78 51 4D 64 50 27 5C +37 47 3D 59 9E 8E 1E 86 8B 2C 66 A3 7D 50 95 32 +9A 28 7F 53 47 82 62 40 6A 7D 91 81 66 10 6C 60 +52 50 3F 35 5D 59 94 7D 63 2D 72 3C 8A 8D 9F 9B +6D 7F 61 5C 52 81 78 66 61 91 51 35 34 63 2C 6A +57 77 6A 8B 66 4C 7D 36 22 8E 71 59 54 29 81 80 +91 8E 42 74 77 6B 81 55 4D 89 79 43 6E 44 96 6C +8B 7C 32 3D 74 61 5B A7 7A 23 33 5D 45 23 A2 6D +6B 91 AC 55 85 51 52 7E 2E 7C 47 1A 8F 4D 5E 72 +62 5F 54 40 4E 22 58 8E 43 64 70 63 60 5C 2A 90 +59 B2 78 64 A2 93 90 79 6A 7F 65 6F 95 A4 42 37 +34 63 7E 12 55 AA 66 99 4D 2D 75 75 6C 7B 63 66 +9B 71 5C 3F 38 26 62 79 32 5B 5F 19 5E 76 50 76 +7F B4 29 92 6C 57 3C 41 A8 56 B0 48 67 3F B5 92 +54 5B 5A 87 8C 95 64 50 5F 79 5B 5E 37 68 56 64 +98 6C 70 35 55 38 6C 6F 6C 37 4D 7B 4C 7D 5F 99 +31 36 21 8A 92 33 5A 59 6B 77 68 27 4E 74 44 74 +6A 4F 5C 46 4D 4C 13 39 68 4B 7D 5E A4 82 7F 40 +94 61 A4 8C 75 61 5F 5F 65 8F B1 50 B7 59 64 47 +78 5E 5A B3 4B 83 6F AB 6E 5F 4E 4B A3 2C 76 61 +66 4E 69 4B 75 3C 72 76 84 56 68 20 6C 4F 63 47 +4C A4 7E 6E 53 5E 54 53 39 35 79 34 38 8F 67 76 +83 68 64 78 8A 57 40 81 47 81 7A 89 57 5F 77 60 +AA 3B 2F 5C 77 8A 8C 74 41 55 2E 7E 85 5A 97 AA +8E 38 42 6B 84 64 57 6C 59 90 32 55 50 60 50 1F +92 46 A6 76 5C 6F 74 58 94 78 4E 5A 8D 6C 81 46 +4D 7E 9D 87 65 73 4A 71 3D 61 5C 89 53 4B B3 65 +69 48 58 61 91 1A 69 7C 2C 7A 57 61 64 5C 4A 76 +43 65 BA 44 23 6D 6E 82 6E 40 5A 85 44 45 AD 36 +58 7B 20 5A 4D 65 83 88 88 6B 51 58 4C 9B 4F 55 +3E 4D 57 61 84 24 67 6B 58 76 A1 2B 22 33 85 45 +50 72 39 7B 58 5D 5A 40 6F 84 92 7A 4F 6F 50 8C +95 7D 88 9C 75 1A 53 49 59 73 1F A5 42 60 39 78 +83 8B 24 66 89 37 87 5A 75 53 71 45 66 99 29 50 +44 6F 90 6D 25 6B 66 8E 46 69 3F 50 58 43 3C 87 +5E 4E 62 71 8D 5E 7E 4E 55 95 3C 8A 85 A0 6E 84 +4F 5D 56 6E 66 63 9E 8F 4E 8A 4D 4C 24 72 7C 6F +5C 45 7F 2D 5B 55 6E 88 36 52 6E 6C 62 8E 75 71 +72 60 5C 70 52 91 41 75 5B 7C 6B 71 4D A0 51 5F +64 73 74 93 7A 5C 69 8D 4D 7F 12 55 90 5E 8C 8D +64 93 4C 53 57 54 41 4C 61 88 96 40 83 50 6A 47 +4D 5D 77 6B 27 9D 62 5F 5B 6A 13 68 93 54 63 A4 +5B 54 56 A8 64 4E 3D 54 5A 64 46 96 70 4C 42 73 +6B 16 56 B2 6A 68 56 22 70 65 8A 25 6C 6F 40 A7 +6E 6D 3E 31 9C 3C 5A 5A 3F 56 7A 79 46 8C 3F 5B +91 5D 75 4B 74 A8 2B 80 6F 17 65 7A 3D A5 5C 96 +4D 5E 77 8C 2E 76 6A 85 40 59 A0 50 43 74 68 42 +89 57 5B 89 28 9E 8F 54 3E 38 6D 63 5E 6A 4A 72 +7F 89 50 6D 53 77 8E 50 8A 94 43 6C 53 95 A3 26 +3A 39 26 77 72 51 87 5A 79 2E 73 16 6A A5 65 5A +5E 53 7F 8D 7A 73 6A 20 24 33 4C 42 65 4C 6E 8E +8A B8 34 7D 64 54 8E 98 3A 6A 5A 82 6B 7F 39 73 +50 54 33 68 5C 2D 68 54 81 58 55 70 83 86 A3 91 +51 5B 48 32 43 6E 54 5C 68 44 7C 88 65 A1 79 D +49 6B 7E 50 19 7E 5E 50 92 82 86 67 56 80 38 35 +68 72 3D 43 72 4E 4F 9C 2D 50 21 5A 29 89 46 4E +5E AB 64 5B 5B 7F 56 4B 38 A4 29 6B 30 4C 1E 5E +48 78 8E 22 6F 67 F 58 30 2E 51 90 5C 55 9B 86 +36 B1 8A 7F 7B 6F 60 44 2F B2 79 9D 7E 79 40 5F +A5 58 74 8B 2A 86 2F 85 40 2E 5B 6B 6C 7A 7E 48 +1F 56 82 38 50 65 39 45 37 64 5D 51 53 71 AE 5A +49 63 93 3F 7B 6B 91 B1 56 39 3E 29 1B 64 59 A7 +89 B 69 5E 6B 77 86 42 1A 9A 45 56 3D 1D 6D 6C +6C 69 88 9D 3E 87 75 92 58 4E 6B 29 3A 76 86 68 +64 45 81 73 5F 48 7D 2C 70 6C 65 69 5D 5F 6B 51 +47 97 50 77 3F 69 20 76 29 A8 60 92 59 3E 81 3B +49 E 65 78 8A 50 32 7D 43 9C 1D 38 34 3D 84 50 +7B 67 3B 58 59 76 50 5B 2C 20 80 6D 23 72 7E 4F +9B 4E 5B 7B 7E 87 83 2D 32 81 86 13 62 5D 52 65 +2B 46 6F 77 A4 8B 40 4D 8D 5B 65 6C 14 6F 65 5A +4C 37 6C 73 65 56 7B 55 8F 7C 46 6E 3E 85 7A 56 +63 9A 43 61 67 4B 70 4E 34 5A 74 71 65 92 5E 71 +50 99 4F 5D 77 5A 5E 7E 7B 6F 73 22 57 52 86 58 +56 22 2B 3F 85 95 6A 34 7C 49 73 A1 55 41 45 AC +3A 88 59 4B 27 65 26 1E 23 60 71 72 92 4C 2D 8A +60 5F 6C 5F 61 82 95 49 5B 4B 72 56 3E 7B 9A 76 +6C 88 77 6C 1C 72 66 96 9E 7E 63 60 9B 4A 6C 5B +50 9E 3A 7B 5A 51 79 3A 86 85 94 5B 41 6F 6F 52 +84 54 3C 57 A3 31 90 5F 48 5A 18 67 62 3E 3B 67 +53 62 3B 65 72 43 6E 69 80 13 7A 5D 44 25 53 3D +48 6E 8C 80 60 50 51 70 73 32 5A 56 77 72 55 7E +54 A1 59 6B 7E 2E 59 5D 65 50 A9 65 93 49 79 A8 +3F 6B B2 A1 40 4C 8C 7F 84 92 77 4A 73 8D 38 7F +74 87 64 10 66 4D 9E 56 90 4A 72 51 5B 67 59 65 +51 65 7C 87 37 94 81 33 53 3A 72 69 1B 64 7A 82 +54 7E 30 82 2E 40 5F 73 64 57 5D 9C A7 90 48 5A +7F 90 B3 89 42 59 27 49 5B 69 1F 4B 6A 62 8A 24 +60 65 50 74 6E 9D 5F 7F 30 77 5C 9A 68 47 5B 48 +4B 81 7C 5F 70 54 67 2E 39 28 8B 62 80 6B 4D 6A +4A 8D 62 4C 38 19 73 62 66 8F 56 7F 61 3D 43 7A +56 86 9E 4A 62 60 61 77 7F 30 41 92 4E 77 53 4F +5F 46 73 8D 66 44 93 35 83 39 43 72 58 55 44 92 +32 3B 47 3C 76 65 11 3A 4D 43 6A 70 61 71 3F 5C +3A 60 77 48 66 70 6D 4A 4F 88 4D 6F 3E 58 56 79 +5D 6B 88 4C 73 71 4F 66 98 61 41 8A 53 44 41 64 +42 51 7A 89 3F A5 5E 4A 52 7A 70 75 1E 61 4F 77 +5E 43 54 5E 59 50 79 4F 6A 6E 8A 9E 45 21 3F 7B +74 94 85 2D 92 67 69 90 49 58 39 59 4D 86 8B 8E +2D 63 62 56 5D 6C 80 7F 22 4F 5E 7C 13 A7 79 66 +6F 3B 40 83 3B 3C 59 77 60 37 4B 79 79 58 67 44 +44 7E 7E 9B 68 4B 7A F 5E 45 4A 6F 97 5F 5E 6A +52 9A 81 81 76 B 2E 71 62 5B 37 59 67 4A 26 2E +6E B1 78 82 7C 6D 3D 2F 66 4B 3C 95 34 73 A1 3D +2D 2E 4F 53 52 3C 37 5D 5A 46 74 72 71 74 A1 19 +32 6B 51 40 93 70 83 48 42 72 53 57 7C 71 93 40 +38 3E 56 3D 50 57 5F 75 A4 5B 60 21 5E 67 66 40 +8B 87 4B 78 29 46 6F 59 2C 29 62 57 89 5A 3D 8D +23 59 2E 4A 54 34 30 3C 5D 98 5A 3F A0 61 73 85 +44 75 45 40 3C 86 1D 7F 95 79 50 6B 86 A3 62 46 +55 56 2D 79 73 39 86 42 6F 81 4F 85 56 70 6D 65 +38 69 84 7F 7B 1A 58 4A 1F 5E 36 78 4C 62 3C 90 +4F 8C 33 72 54 77 77 74 96 5F 64 1A 5D 8F 8A 76 +74 75 6B 65 53 6D 62 52 7E 9B 1B 3E 4B 59 5E 75 +5D 5C 80 81 6B 81 83 82 6D 51 4F 57 64 5F 6A 91 +68 66 6D 54 64 56 96 4E 7D 62 53 57 57 66 48 52 +70 47 65 9F 4B 83 4E 79 51 7D 49 4C 5B 79 69 72 +A3 A7 A0 A9 90 61 85 4A 58 55 69 72 66 8A 7F 95 +6F 7E 26 51 65 77 3F 90 4D 67 5B 85 5C 37 82 A3 +7C 75 6B 9B 50 95 59 42 95 3F 54 45 7E 71 44 31 +5B 65 74 67 3D 82 2B 5D 63 5F 37 82 67 82 48 1A +6E AF 9B 98 50 36 7B 61 70 63 76 3E 6D 7D 64 64 +67 6B 9E 3B 74 88 83 52 7B 49 70 40 65 57 4A 9D +43 57 41 98 51 7F 63 84 50 54 63 81 83 96 6C 85 +5C AE 6C 18 59 71 7D 9B 82 94 49 5B 82 57 6B 3C +8D 4D 7A 9B 76 3D 70 3B 25 50 81 3C 7C A1 3A 7C +7D 3B 5C 5B 63 54 5C 59 6E 37 31 92 31 61 72 50 +41 54 84 7F 56 7B 72 2E 44 29 31 51 62 53 23 51 +57 64 68 7E 74 5A 55 70 5D 5A 53 61 5A 87 61 50 +80 4F 81 96 52 59 64 9A 6B 70 6B 90 6E 4E 4C 4E +59 59 65 55 58 2E A4 2E 99 9B 84 4C 53 45 68 5E +5E 49 68 57 4A 6C 71 37 6D A6 72 2C 4B 41 65 89 +42 68 61 5F 86 5A 65 47 42 79 6C 6C 88 6E 90 90 +7B AB 3C 87 36 5F 51 70 4E 57 5F 96 7C 63 27 7E +3D 7F 9D 5F 4E 67 70 46 61 9A 36 3E 42 5B 66 7D +11 31 73 2A 6B 8B 71 6B 40 A8 76 88 8D 74 81 82 +94 72 1F 85 6B 7D 55 9C 51 47 34 7D 26 6F 34 8A +32 78 42 7F 5C 53 94 68 79 91 49 53 53 56 34 96 +3F 40 65 76 72 2F 4D 54 6C 64 3C 38 5A 7E 2E 79 +27 86 5C 3E 52 78 28 65 52 AE 3F 78 72 53 67 9C +62 4F 4C A9 74 3E 4B 25 59 22 71 43 6A 81 6B 93 +6F 63 49 96 5C 8F 67 73 8C 78 7B 4E 4E 81 27 72 +4E 41 39 5A 61 82 57 4B 3E 80 61 47 58 7D 9E 57 +56 1E 54 6B 59 53 52 65 43 52 4E 4D 73 78 4C 42 +6D 6C 7B 59 5B 81 98 72 59 4A 67 7F 5B 68 60 89 +2C 69 68 66 7F 66 51 3F 45 49 42 59 3F 6E 3B 55 +2C 5E 7F 5B 67 43 3C 5B 31 56 76 8B 49 6E 68 45 +A2 20 3F 7E 8C 6A 8E 90 7E 8F 55 62 84 52 2D A1 +41 39 8B 7E 89 91 3A 30 5C 50 3B 78 51 62 71 68 +47 77 66 62 84 6D 8A 4B 45 62 51 79 55 46 38 51 +4D 7D 59 69 5F 62 35 76 30 A9 3B 76 64 7D 54 AD +63 17 4A 56 69 69 53 14 81 AE 18 5B 57 8A 48 65 +2E 55 79 80 6F 5E 5A 9A 45 6F 42 71 4C A6 76 50 +4C 3A 71 25 8B 67 60 98 26 4D 62 3D AE 4B 60 71 +5F 86 55 57 73 1D 38 46 7D 44 38 6F 54 76 47 89 +56 54 8B 54 3C 81 6D 94 52 7E 27 6C 6F 55 3C 8F +8B 60 71 75 17 40 62 33 57 39 8F 6E 61 83 7C 72 +31 6D 5B 31 77 3D 66 2A 59 4F 63 3C 75 67 38 59 +76 59 68 78 6C 7A 55 6B 53 40 2D 82 66 55 49 85 +57 8D 3F 34 A0 52 5F 78 63 5B 82 39 70 39 50 57 +65 50 98 3E 6A 4E 4C 9E 56 40 6D 6D 53 88 99 9B +5F 2E 78 83 7A 5E 27 5E 57 55 69 6B 76 75 46 4E +7C 9C 57 7F 77 46 68 82 37 76 A0 58 5E 11 7D 81 +4B 47 69 60 3D 68 7F 9E 50 89 5E 7B 74 7E 3E 46 +3B 89 7B 63 41 53 5F 56 2F 77 7F 96 6B 4F 5A 59 +44 57 90 7D 9F 72 39 6D 57 73 1A 47 88 15 76 83 +36 8F 5E 7D 95 61 8A 65 70 63 75 8B 5D 85 81 82 +5C 59 90 79 8E 54 5B 2E 5C 4B 23 4C 81 34 82 80 +53 60 57 84 53 7A 6D 8A 7E 68 88 83 70 4D 94 45 +52 8B 71 4A 71 44 4D 67 34 6A A4 4A 27 78 98 29 +6E 48 4D 50 8B AC 55 45 72 78 30 69 71 6F 49 3D +5E 78 29 5A 6B 41 80 5F 36 56 61 66 58 34 4B 73 +56 32 85 49 3B 53 51 5E 20 70 89 5C 6F 3B 74 5E +74 33 6C 83 A9 81 2C 75 7E 5F 4B 47 85 73 94 59 +2E 7C 68 7D 53 76 47 9 6F 4D 2F 45 52 6B 38 76 +3A 25 3D A0 29 67 40 63 90 8C A5 72 4C 46 53 67 +54 77 47 46 41 59 67 4B 6C 6E 23 67 37 55 39 56 +82 63 4A 5A 5D 75 62 88 57 46 14 44 3E 5C 36 4B +A8 7D 63 72 74 3F 85 56 76 78 9A 59 63 57 4D 47 +31 56 87 5D 65 55 69 5E 50 81 67 60 50 5F 94 3B +2B 76 94 3C 7A 5C 20 2D 35 42 6D 45 76 6E 82 81 +5C 6C 70 3D AF 5A 4E 75 81 14 3B 56 5E 84 86 5A +99 2C 99 56 47 2E 51 3E 1B 95 4B 69 7E 71 50 52 +73 87 4C 6B 7F 54 6D 13 3E 3E 5E 7E 62 82 9E 42 +91 2B 28 59 38 19 6C 5E 60 68 8A 50 78 9A 6B 39 +63 6D 18 76 2A 7F 5E 79 4C 83 90 53 83 69 97 67 +71 5F 84 57 7C 94 6F 88 43 5B 73 66 8C 60 5D 5F +41 5C 41 7A 5B 5C 69 70 64 40 78 14 44 62 11 98 +7D 50 60 6E 67 72 48 93 42 52 44 61 89 69 43 39 +A6 7A 62 45 57 8F 66 4D 62 13 1B 7C 47 4C 43 78 +4F 2C 19 75 6C 88 6A 5F 63 62 59 5E 57 69 9A 60 +37 98 95 64 5A 63 97 3E 7E 53 54 20 7D 52 66 40 +4D 2F 5A 79 62 6D 3A 69 42 43 91 64 2E 64 66 60 +51 4A 79 37 63 62 83 5B 1B 63 67 69 74 37 4C 92 +52 50 84 86 56 7A 28 7A 63 5A 7A 77 83 7B 52 95 +7A 83 17 86 60 71 6F 60 6C 5E 6E 67 64 95 17 8C +89 37 50 42 52 40 4B 24 83 71 68 60 6F 56 59 66 +38 8B 58 54 6A 58 48 3F 68 70 85 77 85 7D 23 59 +3E 6E 53 46 45 6A 72 95 73 4A 77 71 79 87 52 55 +7F 42 5A 3A 2E B6 3A 5A 5D 9F 4D 7A 80 30 5C 75 +61 7D 57 73 51 91 6D 96 53 4D 37 63 3B 73 7A 65 +81 7B 77 8E 85 66 48 6C 5E 22 1E 47 A5 83 8A 43 +6D 9C 70 79 A1 50 7F 85 3B 5E 45 74 71 BA 38 61 +71 4E AF 8F 49 35 6F 89 6B 9D 60 69 43 40 82 3C +5D 58 82 5D 30 99 25 20 5F 8B 60 59 89 8D 23 3B +95 47 70 67 69 43 81 63 60 70 5F 55 5C 57 52 5F +42 79 76 22 57 69 86 54 31 63 61 7C 8B 4F A1 7E +55 22 68 5E 78 85 9A 6F 3D 68 85 52 8D AB 83 61 +57 65 4F 90 5C 7A 61 72 71 51 44 81 62 7B 6A 1F +1F 49 3D 66 8F 4F 78 36 6F 96 88 92 80 69 4B 46 +52 9F 60 7B 43 72 98 43 3A 60 3E 66 A4 53 56 4E +7C 6D 46 98 61 67 28 63 58 4C 9F 8E 5E 89 44 5D +64 6E 48 59 60 84 7C 6F 91 6C 93 83 86 64 AB 96 +61 6C 55 69 61 6B 2A 1D 7B 4D 53 59 82 6C 38 9C +1D 6E 29 8E 63 93 67 4F 47 67 68 69 76 4B 60 20 +4E 66 7F 53 4D 8A 63 3F 2A 4B 54 36 6D 5D 33 5A +65 6B 60 93 77 76 4E 79 8E 9A 49 5E 68 97 3D 30 +47 6C 22 83 3B 8C 47 A7 69 87 86 74 5A 82 49 5D +6B 42 46 72 AE 60 63 6F 84 69 94 56 57 4C 9A 75 +22 3E 98 65 45 69 58 80 9F 72 5A 89 51 6E 6B 6D +29 2B 80 82 5D 54 82 84 4D 7C 6C 3C 52 47 71 78 +78 45 51 5B A2 A5 7A 38 6C 27 45 76 9B 65 24 63 +7E 87 89 8F 45 5E 40 49 A6 3B 78 53 3B 51 22 5B +4E 6D 52 31 71 9D 6A 9E 7B 88 45 6D 99 7A 88 9B +74 2E 86 82 74 30 41 60 6A 59 5E 59 52 3A 56 80 +42 7C 33 77 64 4D 61 53 9D 4B 80 3C 6C 67 5C 6E +77 80 78 6A 50 8C 79 46 4F 44 76 84 92 84 6C 6B +58 55 68 46 53 5E 58 59 7E 37 78 3D 3A 60 76 6D +67 81 7D 85 87 2B 87 56 42 7D 53 69 4A 6D 84 28 +49 57 B1 4A 55 8B 63 7B 77 42 80 65 55 8E 6F 35 +7A 7F 50 2B 95 27 22 6A 4E 8A 65 9 7C 6B 83 80 +6F 76 7C 60 79 28 AC 3B 6C 86 57 81 3D 36 35 6A +8B 50 40 69 47 2D 8A 32 30 41 5C 9B 7E A4 73 7A +94 33 79 6B 86 4B 59 48 97 5B 7C 78 5A 5C 72 70 +98 59 5F 6E 1D 13 41 8E 4F 6D 83 45 99 82 71 56 +7B 86 2C 51 44 38 34 5E 79 47 4E 5E 83 38 8F 62 +16 BF 54 7C 80 5C 8C 56 93 6D 49 37 7C 52 58 43 +4B 7A 43 69 75 5C 66 16 35 62 36 7E 3C 1E 86 27 +70 5D 38 78 4D 32 17 7D 5B 2A 56 6C 7C 55 5B 82 +1C 47 44 62 4B 81 4E 4B 38 4A 93 83 34 51 79 62 +A6 7A 8C 84 4E 81 B8 40 A8 5F 67 4B 4A 5D 49 36 +99 64 75 49 51 89 41 31 5E 56 24 60 45 67 64 6F +64 94 65 48 3F 5D 8C 4D 30 45 76 79 5D 41 52 43 +47 46 64 45 72 74 75 67 49 93 7A 36 46 3F 5E 60 +82 70 68 3E 67 69 90 74 8F 98 4E 85 86 37 7E 69 +55 54 6E 38 69 3C 6C 5D 64 69 47 3E 7B 4E 48 80 +48 1B 8D 50 53 6F 70 6E 4D 58 83 72 57 4C 66 95 +8C 49 67 52 6D 50 82 43 6E 3F 50 7A 54 35 7C 44 +7E 1B 88 30 5D 13 48 4E 99 73 8F 27 80 37 9A 9F +77 7E 9D 5F 4D 44 75 72 82 6C 59 47 74 6A 98 50 +9F 3F 22 4E 27 33 69 6E 5A 58 32 88 7C 67 7E AE +A3 81 46 3B 59 84 54 6B 40 68 66 7D 6B 45 41 9F +7A 3C 6D 80 75 95 66 32 70 8E AC 43 A4 74 47 48 +32 6D 7F 6B 81 18 85 63 6B 98 72 46 80 42 2E 88 +5E 4F 52 59 26 6C 60 62 81 64 58 68 77 5C 20 3A +77 34 72 76 6F AE 5C 6B 46 76 3F 28 9B 5F 82 60 +76 68 63 82 7D 55 91 6B 75 80 53 7B 32 3B 55 6E +58 62 5B 64 78 54 6C 6E 81 7C 50 5A 57 38 77 AC +79 93 2C 3B 56 81 71 78 86 8C 21 88 6C 78 54 63 +8D 77 3D 5E 54 79 26 A8 58 B4 22 64 7D 1E 61 78 +79 55 7 7E 6C 58 9D 8E 30 63 8A 72 7A 73 5C 72 +25 43 65 3E 3A 86 71 44 3B 54 79 2F 44 5F 5A 5D +62 38 7B 70 2A 48 70 47 99 50 90 73 8B 61 5E 3F +59 8A 7C 7A 5E 6C 73 50 90 4A 5C 50 5F 8C 85 51 +7D 51 59 56 60 99 51 7E 68 5F 26 88 3F 66 3A 69 +A1 4D 84 6E 4B A2 A4 49 40 54 52 4E 34 B5 85 47 +7E 69 A6 A 79 4C 3A 1E 46 6F D 68 46 7F 92 56 +63 5F 9B 2D 25 44 6F 5E 5D 54 4B 75 A8 6B 5C 68 +5A 49 7E A3 44 99 38 7D 49 7E 5B 4E 8B 80 2E 61 +61 49 81 4F 54 A3 AB 1A 72 51 5D 52 5E 4C 63 45 +8F 53 66 81 9F 91 8A 70 51 4D 6E 36 1A 8F 72 32 +A3 39 44 77 4F 7B 49 4E 34 4B 75 76 6C B0 56 88 +3E 51 78 69 33 29 5A 59 1D 70 5B 72 66 48 83 55 +3C 8D 89 5B 59 35 61 60 32 2B 8E 49 AC 7D A7 50 +86 94 5B 48 7E 71 81 66 34 9B 31 3D 71 BD 4E 78 +83 52 7A 72 17 26 64 49 5F 52 97 78 87 5F 42 6D +66 53 41 65 63 4C 45 4C AB 8A 85 62 5E 6B 71 20 +24 21 72 8D 2C 87 77 64 3C 92 68 5B 64 6B 40 53 +2D 62 6C 53 20 34 4C 5F 6D 6D 3C A4 43 54 63 49 +57 4A 5F 33 56 70 51 54 70 43 7E 5F 6E 22 94 7F +68 62 54 69 53 64 73 3F 71 3A 7D 44 5B 3E 42 74 +7A 7A 49 31 3E 41 52 74 5F 4D 65 87 87 3A 7E 6A +4A 3B 1D 64 3D 8D 4F 54 32 4F 4C 81 76 9C 8F 93 +38 76 91 69 9C 55 5A 7C 67 9E 5F 50 66 54 6E 45 +8B 72 39 68 70 67 6E 6D 69 3F 6F 47 6D A5 7B 6E +76 73 97 71 51 A4 6F 66 3B A0 43 2E 51 5D 1F 46 +4A 77 69 4E 53 87 7B 52 47 5F 67 56 87 A1 7B 7C +1B 63 84 81 46 77 9A 85 87 90 81 91 46 9D 48 69 +5E 43 61 5D 43 8 88 70 6F 48 8A 34 54 51 48 7F +59 35 7C 79 6B 85 82 42 54 71 78 7E 87 37 5B 44 +21 23 88 69 63 59 5A 73 A 5A 42 4D 74 2B 94 53 +6A 20 57 9C 67 29 50 4C 55 4D 9C 4B 64 98 6F 62 +2E 7E 7F 9F 87 62 86 9A 7F 65 33 52 1A 6A 42 89 +9D 58 B1 61 7D 2A 49 74 71 45 79 38 3D 90 52 18 +70 4A 4F 90 2E 2B 6C 50 76 51 83 70 55 59 59 53 +43 57 8C 71 4D B7 8F A0 77 5D 80 4D 4A 58 66 6A +A0 76 78 76 32 6F 32 66 38 80 6D 6F 57 36 68 96 +6F 5F 77 A2 56 81 25 51 77 50 60 81 4F 6B 38 23 +7B 7C 2E 29 5B 7B 91 65 2E 61 1D 3E 6E 67 5A 5B +59 6B 69 5E 41 60 50 68 6F 71 35 6B 52 30 6F 75 +51 2B 4F 73 4E 4B 79 20 7D 55 68 7F A5 50 7E 37 +77 87 97 5C 82 5F 72 43 3A 54 57 5A 93 61 5B 4B +75 79 82 7D 40 5C 71 89 95 33 55 60 B2 65 62 4F +8D 7D 49 65 96 55 7A 69 6D 75 28 4C 69 3E 7F 93 +53 6B 5C 7D 5B 77 8B 7E 6F A5 5E 36 4C 3B 4B 3C +2A 6E 93 6A 80 52 90 3B 9B 3A 1F 60 5F 55 4E 64 +66 37 3B 81 6E 92 39 6D 88 7E 68 3A 53 71 1D 78 +9F 82 7E 92 6E 7A 5F A9 93 7B 61 59 8E 5E 73 A2 +4E 8E 54 33 83 5F 67 67 A1 8A 60 68 55 47 2B 91 +68 2E 30 72 50 38 4A 5C 46 90 81 5A 69 31 99 85 +83 7C 3C B3 68 30 43 7F 1A 3C 77 49 78 71 2A 28 +68 6C 53 69 41 89 34 54 2F 73 77 83 49 66 61 89 +5D 4F 7E 81 79 5B 91 7E 8C 58 8B 6D 38 91 7D 88 +36 64 6C 93 4B 5A 1A 35 73 2E 5A 64 1D 3C 8B 78 +66 6B 78 3B 74 23 9B 42 4F 48 91 57 15 39 6F 58 +8C 1B 37 39 1B 56 8E 79 A7 5F 80 4A 38 74 20 65 +4C A1 9B 44 4A 4A 75 12 49 AE 4E 6F 6F 28 4F 6F +73 A8 5D 5D 22 3A 7B 69 99 58 35 2D 86 65 4D 6D +5D 22 61 AA 8F 72 D 52 68 4B 47 33 7B 99 63 47 +5A 92 54 62 6B 71 71 50 8A 8C 76 62 27 67 69 A9 +7A 83 1D 58 74 56 6C 40 4D 94 5A 3E 34 6A 65 9D +61 40 50 70 30 6D 2C 99 32 4A 2B 78 84 81 54 5A +73 69 23 82 78 58 6E 46 6D 8E 5A 5C 64 78 69 55 +A9 33 63 4D 5D 3D 88 69 63 4F 66 47 56 53 8A 1F +6F 6D 53 58 7D 3A 84 47 54 5C B1 53 52 61 A3 73 +6E 56 8A 44 67 43 63 69 69 1F 6C 52 5F 90 48 39 +36 6D 5D 6E 92 64 81 A5 25 4F 86 A9 3A 66 7A 1D +43 63 31 58 2B 6D 49 60 36 3D 57 2F 52 30 7A 72 +62 72 6F 1E 2A 56 2C 6F 44 90 84 7E 82 6B 36 9E +74 17 61 59 88 5E 67 67 74 8C 6E 32 55 7F 47 57 +95 1D 51 67 1B 52 49 25 89 53 35 59 9E 41 5C 68 +3B 5F 58 70 51 51 76 56 34 51 7D 8E 91 4D 57 B1 +9E 48 7B 5E 8D 87 57 72 A6 5F 60 4E 30 4A 16 76 +77 A3 8D 7D 2F 3B 44 71 69 62 23 75 70 70 80 85 +6B 5C 4A 60 3E 8D 4A 34 67 20 7D 84 78 73 77 38 +6B 77 70 8C 87 7D 58 22 5D 47 57 40 79 38 AD 5C +32 8D 52 59 4E 85 55 44 64 69 6E 41 65 4E 73 87 +5C 52 6D 52 34 4D 62 5B 58 63 2E 82 4B 9C 7E 4C +10 82 80 49 9D 27 42 3D 9D 87 5E 85 A0 8B B3 32 +7F 12 7F 76 51 2A 60 34 5F 6F 94 6C 4C 66 5F 4C +84 47 AB 31 6F 65 5A 6C 60 4A 81 6E 83 86 3D 62 +59 76 3E 4A 90 3A 40 4D 4B 69 7D 71 35 63 3C 65 +6E 74 68 64 91 5B 34 72 95 6A 46 55 98 47 9F 74 +5B 24 73 45 4C 79 66 80 94 73 49 63 38 7D 53 6D +1E 37 75 87 6B 93 28 8C 57 30 73 38 5E 67 4A 85 +9B 73 39 BD 5E 73 48 50 9C E 86 5F 5C 60 1B 79 +84 43 5E 2F 4B 72 87 4E 6C 6F 63 55 54 5E 5A 60 +53 2B 40 8E 94 6D 48 3E 92 71 60 7C 76 59 26 AC +61 40 75 B4 6D 5D 42 6A 7C 4F 78 62 4F 54 66 30 +47 52 7A 3A 6E 4B 40 4F 49 7B 31 5D 47 85 83 70 +65 A5 35 96 6D 74 53 55 42 62 33 5A 40 4B 39 67 +65 66 72 35 49 40 5B 79 4C 54 7C 69 82 4B 53 A9 +42 54 44 18 76 81 40 35 40 68 5F 33 24 78 4A 62 +4C 62 81 5B 24 63 5A 39 A4 5F 4A 5E 8B 54 7F 38 +80 5B 62 60 66 43 20 6E 31 4D 88 82 3E 1E 8B 95 +27 39 82 16 7A 90 4A 3F 29 52 59 6B 3B 56 63 87 +80 53 67 7B 5F 96 84 49 49 4B 5E 50 5F 77 88 5F +34 5B 71 38 60 82 7A 7F 75 66 66 6E 5C 63 81 51 +45 93 A6 22 39 7C 58 77 77 42 58 5D 46 59 39 85 +AF 2C 37 67 38 4C 6B 44 50 6E 39 8A 57 93 72 6C +47 7F 4D 4C 75 55 78 56 5A 6B 8E 68 7E 9B 79 43 +A6 7B 5A 56 62 6B 7E 4F 5E 99 8B 3C 52 76 AD 52 +6A 3F 3E 1F 86 91 65 2D 85 95 75 76 80 6E 5B 29 +47 3A 30 3D 52 76 94 73 7A 55 3C 5E 61 30 71 78 +83 51 5A 78 44 96 34 57 5E 5E 2B 6B 68 6A 4C 62 +35 74 49 6F 76 5D 5E 6A 50 33 7B 47 4F 60 3C 77 +61 5B 48 63 AB 56 A0 50 26 63 7D 78 75 99 54 3D +6C 68 40 7F 7B 73 56 61 67 41 68 5D 34 33 5C 83 +6A 4E 5E 45 65 63 39 5F 84 AE 61 39 58 64 3C 68 +3F 72 62 52 29 62 49 75 5B 5B 6C 77 40 75 77 84 +6D 40 5F 65 67 4B 3D 44 28 3F 3C 5F 5A 78 A8 79 +3F 59 7E 8E 54 70 56 A8 72 1B 37 6C 5B 67 7B 4F +7B 94 76 2E 63 4F 46 55 49 56 74 87 19 34 79 3A +77 42 69 96 51 90 53 6A 2C 9B 50 47 46 66 5B 6D +87 40 43 81 4C 5C 7A 3A 8D 59 31 31 60 4F 71 94 +4D 25 59 20 56 7B 74 9B 46 5D 6E 63 5B 3F 55 30 +81 5E 97 26 53 70 4A 3B 83 56 59 5E 6B 7A 32 89 +44 4F 5E 62 72 17 6F 5E 47 50 56 2D 41 48 5A 2D +56 7F 71 48 62 2B 5B 9C 45 7F 1C 56 6A 85 84 9A +58 75 65 8F 5B 86 56 48 95 89 6D 40 5F 7A 6E 54 +70 64 78 73 55 78 6A 77 5D 51 4B 6C 36 49 4A 44 +52 84 2F A2 4D 75 1E 43 5C 55 91 97 21 19 4E 81 +5D 4B 73 6C 7E 4B 3A 7A A0 75 51 76 6B 2F 56 6B +94 70 8C 57 5E 35 4D 6C 53 68 44 50 8B 72 50 85 +53 6A 26 A1 71 5F 82 94 4F 51 41 62 54 72 51 4D +89 5D 60 59 69 40 79 84 4B 4F 74 BD 64 7A 59 4D +5D 74 6E 30 9D 87 4D 7D 7F 6E 63 77 67 50 58 56 +5B 56 7D 63 36 2F 38 46 50 7A 70 7E 7C 43 69 74 +76 63 B3 54 8B 7E 62 3F A1 79 81 3D 7E 5F A5 29 +87 2B 49 98 73 8A A7 6D 7D 4A A0 83 84 7C A6 44 +60 4D 48 62 63 6D 54 6E 53 5E 78 6C 3C 7A 47 A5 +68 33 32 47 39 5A 4B 82 53 60 38 35 66 4C 55 8A +2B 46 71 42 8B 63 50 33 78 2F 8B 68 7F 3D 32 A2 +66 76 93 97 6B 33 66 1D 42 5C 56 48 3E 48 5B 85 +6F 55 5D 34 6D 22 74 76 41 59 6E 50 36 4A 68 59 +63 69 41 5A 47 7B 39 68 64 8A 94 84 68 10 54 39 +5A 45 5F 4F 62 5C 7B 62 5D 78 8B 73 23 20 20 8A +B4 6C 48 54 17 86 3F 87 3E 21 95 33 69 83 6E 20 +12 87 46 37 73 54 3B 59 7D 51 6F A9 72 7F 5D 56 +6C 6D 33 83 41 5F 88 46 53 8A A9 98 5A 5C 4D 3B +42 5C 59 51 71 3C 65 5C 6D 83 69 5F 71 84 40 74 +30 49 41 4A 4B 6D 7E 49 8C 8D 4B 63 96 5D 71 70 +89 40 77 7C 59 9F 3D 5A 5F 48 47 79 8D 55 7F 8C +70 3D 55 3F 22 83 65 65 38 31 6D 82 46 54 97 59 +6D 81 5B 31 88 52 A2 56 92 4D 92 62 5F 67 69 4E +7D 82 53 7A 4C 84 51 3F 62 4D 4C 38 6E 6A 60 5C +63 4B 65 80 65 46 A1 4A 74 80 42 72 7D A3 5F 78 +72 62 54 5E 96 82 61 8D B3 67 7A 2F 83 60 7B 6F +56 BD 40 5D 35 50 6A 5A AE 50 7C 2F 49 86 87 3D +5B 6B 5E 52 2F AC 9D 62 8E 5F 6F 5E 41 4E 47 89 +58 54 3A 2B 78 66 83 69 57 6E 20 57 80 50 2A B5 +4F 50 7B AC 78 60 2E 2F 63 3A 55 66 8D 7F 5F 2F +2A 90 20 5B 6F 7B 45 3B 7C 2F 78 8C 6A 30 90 25 +8A 46 55 5E 89 47 56 73 7A 88 90 34 31 7A 8D 43 +96 79 57 8D 79 89 42 4C 51 95 53 11 4C 39 5F 53 +69 42 64 57 6A 53 9F 30 74 5B 39 41 2F 50 8B 4B +80 8D 9B 43 4F 4D 34 6A 4C 5B 4F 4D 68 89 7F 48 +51 29 5D 51 76 50 5E 44 9C 6C 4D 1C 96 6B 3A 7F +30 92 63 63 5B 53 81 F 3E 62 51 4F 88 26 5B 49 +40 54 5E 3A AB 6E 57 88 76 66 81 8C 83 59 72 3A +5D 1B A3 84 8D A0 7F 58 3E 61 68 64 43 71 87 87 +42 8B 98 AC 3E 7F 7D 5F 42 3A 57 7B 40 70 4B 76 +1F A0 40 4D 76 3B 5F 66 43 49 A2 5E 3F 1E 75 47 +50 70 70 3C 57 39 65 7F 31 66 4D 27 88 5E 86 4C +56 90 37 71 56 6D 51 69 66 76 34 72 69 24 65 4B +62 64 4B 30 6D 77 49 79 61 8F 96 88 4E 5F 7E 48 +18 64 7D 5C 66 63 60 42 78 6E 54 59 47 53 40 80 +13 98 3D 59 B0 51 64 55 5C 32 23 5D 6E 79 82 2F +7F 85 8D 59 7F 60 34 60 A2 58 60 28 48 56 49 4F +46 4D 76 6E 4B 81 79 48 45 14 48 56 6D 96 1B 80 +95 6A 94 5B 99 58 5B 5D 29 65 8C 58 38 64 8E 5C +89 43 56 45 4B 71 4D 55 6B 4A 45 85 4B 51 7A 77 +8F 71 5A 56 74 7C 47 74 45 93 85 53 4E 92 41 7B +98 95 38 73 5A 8F 67 78 34 4D 5C 9C 1E 64 66 6E +86 5A 71 74 5A 4C 87 45 6B 7A 37 5D 66 43 7E 66 +27 3F 42 89 47 5E 53 7B 47 16 8F 4A 59 A1 42 51 +4B 83 99 49 78 50 66 35 86 82 69 42 8D 40 2C 4B +66 60 5B 5B 73 7C 48 54 4F 24 56 C 9C 5F 7D 4A +5B 6C 52 4B 6F 44 4A 87 52 6F 70 78 92 49 7F 44 +5E 5E 84 7D 77 24 77 6C 4E B2 98 5B 5E 5A 76 49 +63 83 49 96 79 83 59 4A 43 77 66 50 62 2B 37 56 +4A 77 52 96 4D 97 86 50 64 90 4D 80 46 56 84 8A +69 48 88 63 57 55 50 7B 52 2B AD 57 49 69 93 62 +64 7B 63 6E 5D 52 3F 96 5F 4F 6C 42 77 52 5F 59 +39 82 20 4E 75 31 7D 5F 79 5F 28 44 17 9D A7 2D +61 BD 28 66 4F 66 80 49 B3 AB 6D 5C 78 54 85 24 +45 5B 4F B4 8B 62 6E 6F 62 59 43 8A 72 A8 92 65 +57 7F 63 7C 2B 6F 61 3E 4D 68 99 71 2F 7C 6B 6F +91 62 4E 76 36 8A 6F 64 4B 52 58 6D 17 AB 6D 6A +57 5F 91 6E 5A 5B 8E 9B 70 31 4C 4C 42 86 60 68 +80 30 54 13 65 5D 86 3A 35 40 49 71 2D 54 7D 4F +9C 6A 91 46 64 4F 67 6A 4D 89 55 2E 24 5B 25 5A +7A 42 58 4C 5A 43 67 4E 97 5A 8B 44 6A 5D 40 68 +73 9B 5A 1C 36 74 9F 63 46 70 47 4F 7C 71 40 6A +3B 42 2D 4F 69 47 A7 6E 63 82 66 69 14 9C 65 4D +80 59 68 81 69 2F 46 35 51 78 95 79 57 4C 46 4F +4E 5B 6A 70 8C 99 60 5C 50 69 7D 64 86 26 7C 8A +38 71 5B 8D 53 6D 90 92 BA 30 5B 76 5A 7A 74 4A +49 91 5C 6B 64 59 89 45 31 5F 8D 7F 96 88 7D 82 +8B 85 38 84 96 4C 6B 52 88 3A 81 87 5A E 86 4F +30 41 4F 7B 79 49 71 23 8D 3D 76 4C 3F 80 3D 49 +61 66 75 8D 73 3F 5D 7B 5E 4D 6F 42 65 13 8F 6F +66 45 6E 67 6C 60 96 80 65 6C 62 46 A1 89 46 6E +55 5C 5D 74 67 5F 93 70 67 56 4C AB 25 46 4D 4F +3D 47 73 4F 6F 60 76 60 8F A5 80 3D 46 4D 58 41 +5A 4C 47 62 90 53 43 5F 79 74 4E 7F A7 9A 73 80 +6F 66 5C 70 9D 38 7E 23 72 47 26 81 68 53 5A 7A +40 5B 4B 8F 2B A6 5C 36 7D 46 85 68 7A 60 42 6E +63 4D 61 70 84 84 3B A1 66 7D 40 66 69 72 6B 58 +69 58 89 5A 68 26 62 7F 7E 2B 50 4C 53 2A 64 79 +26 3C 84 68 79 71 5F 64 4B 38 50 4B 56 56 65 90 +58 69 60 43 46 8E 43 81 58 66 8C 4C 4D 68 58 49 +80 2E 4C 84 54 5F 36 7D 49 69 B6 7A AA 64 51 38 +5C 39 66 5D 7B 37 7C 56 73 66 45 5C 26 58 3D 68 +5C 55 52 8D 6C 7E 71 95 4F 7A 9C 6C 63 68 85 86 +6F 55 5B 6B 90 55 A5 4E 85 79 78 81 75 5E 36 57 +94 5A 77 50 65 77 4D 56 49 60 65 83 15 5B 4A 81 +61 61 60 21 58 3E 69 7E 48 44 63 3C 53 86 6E 25 +57 8C 7A 3C 7C 45 41 95 86 30 6C 6E 9C 50 3F 37 +39 57 47 2E 66 7F 61 5A 8F 62 79 9E A2 21 4A 57 +7B 83 54 57 4F 67 72 61 8F 3C 7B 88 4B 2D 51 78 +AC 7D 5B 59 55 89 8A 97 44 26 47 78 41 3F 99 7A +8D 7E 4A 66 16 6D 96 79 A0 9E 32 72 2F 5A 3A 8C +9F 4E 72 A5 55 53 90 48 64 8C 74 A1 6D 83 88 6C +59 68 6E 53 69 93 9B 45 40 19 63 50 93 81 78 65 +8A 95 70 4E 2E 4A 7B 63 44 73 6A 91 3A 73 7F 81 +25 6F 3C 7D 72 6C A2 3F 62 8B 74 65 31 6A 64 4D +67 5F 29 6B 71 45 4C 21 57 77 80 56 6D 94 33 41 +4C 3D A8 69 50 9E 7B 9B 80 42 69 66 8F 68 58 5C +51 41 31 6B 39 71 2A 78 33 7B 92 6E 24 67 79 76 +94 5C 67 45 82 54 39 7C 54 A2 3B 4C 80 7D 53 27 +85 4F 7F 66 95 68 8C 67 3F 5B 2A 4F 78 5E 6B 86 +3D 73 34 82 9A 48 66 7F 37 68 76 6B 38 8C 8C 56 +7A 47 99 4B 66 82 3C 49 A9 55 76 56 1F 70 80 54 +70 40 38 70 78 78 67 6B 56 AA 9A 7F 46 3D 6F 4D +81 48 37 7F 3F 94 92 81 A6 5D 7D 75 92 55 77 38 +40 56 36 5C 4C 67 4F 6A 5E 2A 78 9D 6B 66 64 7C +47 76 71 24 6F 6E 3F 50 51 53 4F 62 41 87 A9 67 +7D 26 A6 4B 7A 91 2E 5C 75 70 33 4D 74 44 5C 56 +69 45 8D 4E 44 96 55 35 33 8B 63 86 5 8A 39 28 +8D 7F 66 68 48 56 33 6E 89 88 74 51 87 32 55 55 +4F 7B 50 77 3E 64 66 33 6F AB 71 A0 4A 5E 18 62 +1E 59 57 2B 69 49 92 53 69 AD 66 62 60 74 80 93 +79 6A 6A 81 9A 76 38 61 5D 4B 41 69 6C 3B 5A 65 +86 85 70 2E 84 81 56 68 2B 71 AA 5E 1A 35 86 91 +6F 1F 5A 5B 7A 4E 25 9A 3C 40 6F 40 A1 6F 56 84 +87 6D 53 58 88 51 5B 53 89 7B 47 76 B0 8C 48 3C +8A 74 77 66 31 27 5B 54 A6 40 67 81 54 7F 78 30 +94 A3 48 6B 8A 3A 6C 8A 9B 29 A3 92 76 2E 4C 83 +50 45 79 3D 70 43 A9 8B 65 44 79 26 7A 70 2D 25 +55 30 6D 66 33 3D 8E 68 58 6A 4A 52 78 57 3A 69 +A8 5A 97 5C 89 74 6A 9B 7B 3C 8B 71 9B 99 3F 98 +56 6D 7A 2D 66 3E 65 6D 72 61 6F 8C 50 5F 93 4F +4D 78 57 75 4D 51 49 5D 6D 46 75 28 8C 68 4F A4 +45 72 1E 32 51 63 1D 24 A2 83 36 48 74 60 3D 63 +51 A4 70 9D 52 6E 52 7C 5F 6F 6D 76 4A 6B 5F 80 +6E 53 7E 5C 84 61 2A 9C 51 9D 4D 38 45 1E 58 3C +4B 74 41 5F 4E 35 6A 81 33 39 42 6A 47 8A 7E 43 +97 46 3A 55 A1 52 7D 64 22 53 4F 15 7E 4E 65 76 +6D 5B 66 81 68 90 64 46 71 65 7D 7A 9E 45 49 57 +21 63 94 52 87 5D 6B 98 1D 92 65 3A 76 4C 7F 86 +9F 6B 94 58 64 60 32 85 9C 4B 9B 5F AD 46 59 61 +81 86 39 80 64 36 12 78 86 79 38 49 75 61 83 75 +49 80 6E 57 83 60 8D 8E 76 87 36 42 50 28 57 3C +65 5F 75 66 6B 69 56 5B 55 94 42 5E 5E 71 58 4F +6D 72 64 5F 73 1D 6A 1C 3E 6E 80 86 8B 91 4A 89 +3B 9A 60 5B 22 82 1B 5B 7F 49 63 9C 4E 7D 78 60 +5E 36 4B 8B 3B 5D 2D 61 58 26 AD 3B 38 58 73 4B +57 6F 6A 85 36 9B 6C 80 35 5A 4A 62 A4 7D 2A 6C +9B 6B 77 84 B7 5F 7E 3C 7B 48 74 53 37 66 7D 89 +4D 97 59 4B 7B 33 56 7F 74 5D 6F 57 55 4D 2F A7 +98 32 7A 54 49 79 64 93 26 1F 4C 36 7C 93 6E 5A +72 8B 55 63 5C 52 58 6A 9E 30 6A 53 72 39 83 7D +65 5C 8D 8B 76 75 53 8B 67 66 66 4C 6A 6C 5C 49 +9B 3C 84 46 81 57 35 72 2F 36 7F 79 7A 7D 4C 28 +54 3D 3B 1D 4C 75 59 41 49 62 7E 6F 84 5A A4 26 +41 69 8A 49 47 3B 5E 60 5E 64 78 5B 74 43 67 63 +96 9D 44 57 5A 64 7B 86 66 6C 55 7D 56 6B 82 4E +A1 46 6D 44 B4 42 6A 60 A5 5A 77 53 7B 95 68 48 +6E 56 AC 5B 56 95 8D 4D 90 76 60 60 87 17 4C 68 +61 3E 71 7D 7F 73 6E 57 44 64 75 3E 83 5F 4B 3F +6F 40 23 87 67 45 63 42 A2 43 40 77 92 88 79 9E +8D 51 40 6A 62 43 72 61 53 4F 48 82 76 5A 48 43 +78 67 3E 81 40 3A 58 74 A5 88 2D 2A 4A 6F 87 54 +52 60 2E A3 6E 61 85 6A 2B 4B 82 39 4C 65 72 5A +63 8A 6F 91 42 8C 5A 64 69 55 82 5C 5E 36 6D 46 +4C 67 46 35 47 67 73 6A 57 66 53 66 77 77 5E 56 +7B A8 64 9F 85 74 73 5E 3F 61 3B 75 78 46 17 84 +7A 71 57 50 4B F A9 3D 80 71 1D 89 81 7B 59 43 +82 39 9B 68 9F 44 82 58 56 77 5A 76 35 65 80 72 +83 53 45 21 8D 88 77 4B 5E 66 71 2F 2F 68 62 47 +9C 7E 86 79 71 85 A4 6A 43 98 5C 34 51 71 78 52 +71 36 7E 41 60 5B 6E 83 8A 6B 81 8A 75 82 3D 93 +89 91 89 32 5E 72 21 26 29 36 52 7F 25 65 42 42 +76 95 76 74 45 73 58 40 3F 53 89 34 3B 4E 56 4A +80 4E 8B 56 4A 46 5B 61 77 53 83 4E 45 3B 46 2D +6E 78 56 4F 7F 6F 65 68 81 58 8B 51 40 55 80 3F +2F 52 5A 66 60 90 56 77 A0 61 5E 98 37 80 98 9B +79 9C 9A 7F 75 5E 79 68 54 B7 65 41 71 7B 6C 95 +65 1D 54 4D 51 47 6A 8B 80 97 3C 8A 66 8E 3C 54 +56 3F 64 46 66 8D 52 3E 45 C 5B 56 42 60 66 3D +49 4C 49 39 33 5B 82 48 94 4A 4D 57 44 5C 9B 52 +47 7A 9F 6F 9B 5E 3B 6E 21 3D 4F 35 45 64 4C 32 +7F 48 55 73 6F 7A 82 6C 4E 7F 74 2D 79 8E 37 43 +53 41 72 65 71 5D 3D 74 35 A5 69 75 32 5E 2B 8E +7C 72 77 70 3D 79 49 58 81 7C 37 6B 75 4A A1 9C +5B 59 59 5B 85 25 76 43 48 59 78 53 5E 48 4C 57 +6F 71 52 7A 89 86 7D 6D 7D 58 61 74 48 57 5B 90 +51 62 31 64 59 36 AF 5D 63 A4 6E 6A 67 81 7F 40 +69 99 74 A3 64 25 5E 19 9B 70 73 57 73 6B 55 5E +5A 79 3A 5A 52 25 42 87 6F 56 46 6B 85 22 A8 84 +6B 45 73 40 58 87 87 54 85 66 50 6F B1 59 7B 5E +76 5B 4A 62 8E 5D 50 55 52 65 45 48 51 5B 4E 57 +24 8F 76 72 66 32 68 77 4E 72 6C 48 65 39 A4 4E +6B 72 27 51 56 62 37 5C 6E 2B 71 54 2F 79 32 6D +3C 52 1C 4D 6E 44 4B 94 8B 4C 92 5B 3C 69 35 8E +7B 6A 56 5C 59 6C 70 61 9E 6D 65 62 55 65 41 5B +53 6A 3A 64 54 38 47 39 5B 69 2C 31 49 51 91 57 +61 51 4D 74 5C 76 87 7A 72 25 32 54 56 21 66 70 +30 49 3D 6A 72 90 5F 81 8D 71 59 78 4D 64 43 77 +4E 9D 5B 71 59 79 81 73 75 9D A6 34 5F 74 72 82 +41 7C 8B 9B 5B 53 3F 7F 3C 2D 73 6B 63 4D 86 56 +2B 7B 63 63 94 11 39 B3 AC 6E 90 52 51 6D 65 B2 +88 75 E 5E 98 5C 80 72 2A 3D 3E 60 44 6D 3C 62 +60 49 41 28 43 50 52 24 59 90 8E 75 40 65 80 3E +71 44 8F 7C 7B 75 71 8A 8A 36 47 61 45 45 4D 33 +A3 84 29 5C 30 8F 78 6C 75 60 74 6C 6B 35 7E AC +89 83 91 84 49 A0 5D 30 2E 4E 70 65 60 62 65 8D +39 80 5D 92 51 67 3C 74 66 73 49 54 7A 5C 58 55 +65 6D 8C 4B 44 4B 57 51 38 4C 52 4F 51 33 6D 5E +63 39 40 6C 5B 80 6D 8D 5C 7B 3F 4B 61 F 44 75 +5B 27 53 1C 34 41 99 38 63 85 71 5E 31 3B 61 5E +32 B4 5E 47 3E 65 75 60 34 3F 13 1E 4A 7B 78 6A +4C 42 6F 5F 80 33 5A 43 51 69 82 5E 6F 3D AD 58 +7F 79 2C 63 8A 41 67 68 9C 83 57 59 7D 78 5C 73 +73 4D 6F A2 72 91 75 4F 95 BA 6D 80 88 A2 A7 6C +79 4D 6E A6 6C 3F 4D 47 9B 52 32 5D 47 68 28 8E +3B 8C 3A 3E 4D 4D 4C 3E 71 5A 69 52 75 6A 5D 58 +7F 66 7C 33 AB 7D 87 6C 49 8D 60 83 59 70 63 72 +A3 55 5E 8D 5D 73 59 C2 5A 6D 8C 43 48 4F 42 5C +97 6D 76 99 41 84 60 9F 6C 64 A5 94 57 56 5F 22 +4E 55 92 4F 6A 3E 52 35 2E 87 9C 54 71 2B 6F 5F +74 37 2C 26 21 62 22 70 79 93 4A 7F 6C 66 48 65 +32 82 76 98 7C 83 83 68 A2 7B 8B 5B 6A 8A 5E 5B +61 5D 69 20 7A 96 43 40 9F 5A 7F 3E 5E 61 42 5B +86 7E 88 44 73 23 A0 73 74 45 69 69 54 5E 33 4A +8D 4D 52 82 83 9F 91 79 7D 4B 58 5A 7E 4F 82 31 +52 71 53 85 68 28 6D 40 56 97 58 51 35 27 4B 5C +6A 83 4D 5E 55 65 4A 7B 67 59 3E 3D 67 81 1A 82 +A5 35 35 49 32 7C 64 5A 89 25 7F 2A 63 3E 41 49 +92 39 A4 68 AE 50 8A 7D 5A 62 5C 7C 73 77 6C 4A +7B 81 91 76 33 35 62 51 5C 74 38 56 77 4B 49 2D +4F 33 60 64 5D 6E 53 7F 80 61 B0 24 6F 5E 59 39 +79 72 38 49 A3 9A 5A A7 59 80 5D 18 44 68 3F 45 +5E 8C 4C 55 50 53 68 44 46 5B 7E 7A B0 9B 2F 73 +5E 77 39 98 5B 6D 86 72 92 2F A2 60 65 62 50 85 +87 48 53 4D 90 5A 1D 4F 82 70 8D 7F 52 27 4B 37 +81 58 4F 5B 83 5A 35 7C 90 35 8A 66 6B 59 4C 9F +5E 6E 52 80 75 5F 5B 5A 7F 21 55 5C 67 52 84 35 +7F 4F 5C 4F 60 AE 53 35 97 91 4E 69 53 38 42 42 +92 74 47 96 23 77 5A 64 90 57 80 97 61 54 96 26 +A6 5F BE 4D 6A 82 8E 7D 6D 11 3F 72 2A 7D 5B 56 +51 30 38 81 78 4B 25 5D 41 79 51 6A 48 3E 77 43 +43 76 45 3B 60 97 88 7F 6F 40 6C 4E 52 55 59 29 +8E 6C 51 49 75 95 40 5B 2E 73 62 9A 7E 84 77 6B +77 39 21 23 83 3C 69 97 B9 7B 9D 5F 5F 81 69 69 +43 50 8F 6D 52 50 4A C 61 54 5C 57 73 68 60 7D +7D 26 4B 61 7B 58 22 2E 97 53 34 B0 89 92 8A 53 +68 7F 72 5C 74 6B 6F 56 77 5A 9B 6D 5F 21 4D 72 +94 78 B4 8B 20 80 64 A1 6A 87 7B 73 5F 59 4D 66 +81 68 74 7C 4C 5C 54 80 8B 31 8E 4C 44 59 43 86 +1E 71 71 56 20 2A 49 6F 4C 7C 4E 67 62 88 8D 87 +82 97 50 6D 8B 33 48 A6 5E 48 A5 81 55 69 5E 55 +8B 7E 58 76 88 9F 7D 6F 62 68 48 17 93 4D 84 62 +BA 5B 3A 72 25 5F 28 3E 43 5C 9C 91 70 5B 49 5B +90 67 52 67 79 8B 1D 31 59 81 85 7E 56 51 6E 8E +9E 6C 66 7F 30 39 4B 58 39 64 3E A8 73 82 67 73 +B0 45 7C 48 93 36 6A 93 75 7C 91 32 64 88 83 7B +83 68 31 70 4E 9A 67 3D 63 75 6C 4B 88 82 6C 53 +2E 6C 49 94 7A A8 52 6C 56 3E 8A 67 40 62 3C 6A +A0 6B 92 37 65 98 4B 2C 62 42 44 3C 67 58 26 79 +7F 3E 4C 3D 9A 87 64 8C 77 7B 80 49 20 4F 88 43 +3D 70 71 63 3C 55 87 7B 26 7A 62 6F 77 75 73 35 +79 71 7E 90 9E 7F 6D 8D AB 66 37 90 83 90 81 49 +AC 72 84 67 58 66 70 A2 50 66 73 5A 41 66 4A 5A +BB D 7B 55 86 5A 74 3A 6C 59 4B B4 70 70 80 21 +79 66 4C 6B 79 2C 7A 38 45 B 3E 12 46 61 9F 6B +68 4B 7A 59 7B 7D 5A 61 56 4B 88 3D 61 74 6C 4F +27 6D 71 69 4D 5C 2C 56 6F 7C 48 3A 78 92 35 4C +71 48 76 45 84 7A 72 97 5D 6F 48 1C 78 76 76 70 +74 51 54 67 41 55 7E 5D 57 75 2F 54 4F 41 5F 6B +25 C2 11 4F 6C 6F 4F B5 77 29 61 7B 69 64 22 58 +6C 95 68 A2 4F 71 55 2D 61 42 3E 52 2E 4B 70 67 +64 55 72 62 62 52 29 83 6F 35 63 89 5B A6 82 54 +48 92 66 5F 61 9A 54 51 65 76 58 6E 69 55 22 61 +85 5F 4B 93 92 76 7D 9D 64 54 57 4D 6A 77 81 58 +73 A7 5A B3 8F 53 8A 76 42 73 1A 72 39 50 29 78 +36 65 6E 7C 76 60 6C 46 86 6E 91 54 34 6B 8E 5A +62 97 45 82 5F 4D 65 7C 46 6D A3 4F 38 35 84 34 +4B 81 5F 78 8A 6B 6A 8C 30 5F 49 40 57 73 59 72 +72 4A 76 6E 52 6A 5F 79 51 9B 50 4E 7E 4C 33 65 +3F 48 36 42 8D 91 3F 5C 7C 4D 65 8B 80 97 2B 83 +6B 8A 27 6D 8E 84 73 5C 7F 32 63 2F 91 47 35 69 +37 41 79 47 86 4A 5D 7A 36 7F 70 66 5D 5A 57 86 +83 5C 7E 95 46 68 70 5F 79 3A 2D 93 29 3D 4E 5A +6D 68 3C 68 7E 1A 85 44 54 69 90 68 7C 7A 86 55 +48 4A 4A 70 83 5A 80 49 5B 5C 8E A8 47 50 62 5B +64 42 66 7B B3 5D 40 7A 94 78 27 7B 6A 3A 5D 90 +79 73 16 68 84 71 57 6F 87 99 29 43 2C 40 36 65 +47 5E 57 4A 49 7A 6F 8A 7F 2D 86 35 8B 71 6E 84 +60 2C 5A 62 3D 50 4F 10 97 42 57 55 80 77 98 4D +4D 77 54 6D 67 3B 6C 79 66 3F 4E 29 29 67 77 4C +51 6B 35 73 85 64 5D 48 78 2F 77 56 5E 38 24 7E +72 5E 4E 81 81 8C 3A 28 3E 92 94 4A 89 7B 67 46 +75 50 97 5C 8E 41 63 5C 79 53 1B 4C 50 6F 92 3C +81 7E 96 86 3C 84 56 6B 65 B3 64 93 52 1E 18 8B +7A 79 7D 54 5B 7E 69 45 63 64 44 55 92 56 4F 74 +6F 56 4D 73 B5 61 9C 74 30 7E 3A 33 1C 49 4D 5B +79 70 88 57 82 63 7C 63 65 74 63 62 41 B9 54 4C +51 D 86 B0 89 90 89 77 36 4C 88 7C 75 39 35 6D +79 6A 40 40 5E 76 69 58 1D 4D 41 57 B3 75 9D 23 +40 E 51 68 BD 98 5B 6E 3E 4E 6C 6F 57 62 21 2A +61 76 89 6C 58 57 5C 4B 78 4F 62 98 9B 6C 3F 86 +30 40 48 4F 3E 69 90 74 37 3B 3E 70 75 5C 81 57 +4C 54 B3 62 80 86 6F A7 95 5C 2F 60 40 86 AF 5D +70 7A 6A 3D 3D 65 65 35 82 7C A9 7A 44 9D 7B 6F +59 70 39 88 99 B9 61 31 89 64 6B 7B 3B 7E 33 8D +63 7C 8B 80 62 4F 82 81 2A 90 6E 4A 51 7B 45 5F +5D 75 4B 63 5C 55 36 1D 3C 9A 4A 77 73 56 32 45 +5C 4C 23 46 57 71 33 98 52 70 46 22 3A 7E 20 77 +A8 1C 69 52 65 80 7C 27 73 A6 70 7C 46 9C 61 48 +2F 7A 4B 76 43 96 48 5C 1A 23 49 4B 6C 5B 2C 6E +63 A1 25 77 4E 79 78 1E 33 85 6E 38 8A 3F 5E 74 +57 6D 7B 5D 85 7C 8E 78 86 52 28 5B 5A 69 89 5B +1D 42 76 7C 91 93 8A 33 5F 81 5E 65 7B 2C 11 50 +82 36 5F 4F 2C 47 39 15 63 36 7A 8E 3B 68 87 7C +65 4A 73 68 44 54 90 61 38 5F 5A 5B 73 45 4F 5F +59 78 6A 29 5C 9D 5E 6C 2D 44 5F 62 2E A0 16 66 +68 64 73 64 83 72 5B 65 98 3E 70 62 45 45 43 48 +64 41 59 72 50 65 44 3E 74 71 41 56 6D 56 41 4E +79 50 5B 3A 4F 54 8B 34 54 33 46 88 53 7C 60 46 +90 44 15 40 3E 91 82 4B 71 7A 94 4C 8A 60 7A 63 +67 3F 56 74 5E 9D 51 72 2E 3B 55 75 9A 7A 49 49 +4B 5F 79 59 68 13 38 3D 6F 6E 78 67 74 51 4B 8F +50 27 2C 83 AC 6A 31 41 76 79 A8 95 63 15 62 22 +7C 7E 40 4C 29 62 86 97 4B 5E 50 24 76 51 AE 6E +7A 70 42 42 5F 56 3C 76 62 69 34 8B 4A 5C 86 65 +8B 6E 5D 30 67 59 88 8A 71 96 9F 69 63 69 4D 58 +90 5E 51 3D 42 28 7B 17 77 78 68 52 59 54 64 6D +43 8D 7 44 58 30 38 4D 58 81 78 64 71 56 63 5E +4A 7E 45 72 5A 3F 54 57 8F 68 59 84 70 57 7D 86 +97 6D 2B 62 43 6F 59 66 4D 60 77 9D 2B 7A 59 92 +2C 7C 66 7B 57 77 66 5D 4A 4A 51 3D 6E 88 6C 6F +5F 6F 70 64 29 4E 90 58 86 8F 8D 77 96 6F 42 49 +4E 50 68 62 3D 7A 40 4E 41 55 4C 53 9D 3E 53 6A +37 8C 5C 32 7C 93 55 38 7F 44 6E AB 8E 74 4E 5A +32 6B 95 8F 62 79 8E 6D 68 79 59 79 68 5A 2D 6D +7D 6F 81 49 49 7F 6A 5C 79 41 6D 96 4E 3E 84 3E +1E 8D 7C 7A 38 53 7A 6B 65 41 34 AA 5B 73 88 A8 +5C 47 7E 71 4A 49 77 92 5C 6D 79 50 6F 90 24 70 +2F 1F 4B 6B 63 2D 10 6C 8E 65 77 42 81 63 80 45 +5B 72 6D 8B 7F 61 50 7A 8F 63 4F 68 44 41 60 96 +53 3F 85 6C 97 9D 22 7C 6A 26 70 7D 6C 44 6F 3D +35 4E 76 66 2E 7A 5D 86 54 34 30 7D A1 66 57 74 +4B 59 41 80 5D 6F 32 74 5F 86 A0 7D 4D 5C 3C 94 +53 83 4A 50 A5 49 31 63 4A 8A 53 5A 3A 76 3B 6D +54 9F 69 4E 54 44 A2 50 2F 46 6D 5A B8 79 62 4E +5A 4B 61 64 3A 5F F 65 39 6C 50 9F 49 49 90 3A +45 70 32 60 87 10 44 99 4B 79 4F 34 5E 4D 14 70 +73 7 1A 5E 9C 58 65 A1 A3 7F 5C 83 59 5F 8E 73 +57 49 6E 7A 60 6A 83 85 8D 45 7E 67 4F 92 45 76 +73 42 1B 9B 63 74 73 50 6B 3B 62 6D 4D 82 40 84 +7D 7F 85 32 5C 15 8D 50 50 94 BE 65 99 A4 2B 5A +35 91 31 52 69 73 94 78 A4 A2 5D 4C 49 56 52 5B +93 8A 78 8D 4C 5E 28 31 61 7F 5E 50 55 54 29 5D +4F 4D 56 39 80 40 21 3E 5B 4E 3B 75 71 51 67 65 +5F 37 32 4B B0 69 4C 5C 4D 40 3C 3F 60 96 53 81 +59 78 81 67 2E 2C 47 4F 53 A6 62 5C 64 90 61 5F +3A 73 79 A8 3E 3C 74 5D 5F 4A 5A 4A 77 9E 8A 49 +6D 66 4B 9C 4A BA 6D 62 43 32 2E 8B 56 1D 2A 37 +80 7B 78 6A 5B 62 74 7C 66 31 63 3A 73 63 4D 2B +78 77 21 53 2B 29 4E 6A C 6A 66 52 98 54 A2 5C +9D 30 6C 4F 6F 18 5A 50 46 26 1E 3E 6D 41 26 86 +4E 5E 45 68 78 4A 49 6F 37 3E 8B 25 85 79 7A 8F +7E F 81 8A 75 6A 74 31 8A 48 98 5C 50 5A 51 90 +A0 62 54 9D 75 82 54 86 80 62 53 7A 89 30 49 42 +6C 34 4A 59 5B 3D 7D 93 73 25 74 78 68 9A 47 64 +55 2B 81 4B 63 22 7F 75 79 46 68 5A 62 67 82 12 +43 6B 3B 93 8A 5 5A 5E 80 77 80 69 47 79 50 A7 +85 75 91 95 6F 68 59 7D 8D 39 21 9F 3C 62 6D 88 +3A 6B 69 56 8B 25 64 65 68 77 52 48 5B 4E 6B 5E +8A 73 70 7E 6C 6D 62 47 A9 88 4B 61 6A 69 53 57 +8C 75 3E 79 48 55 64 74 6C 67 9E 97 65 6F 7C 8C +2E 83 42 84 72 A1 1B 4A 46 29 65 94 4A 36 40 4E +2E 55 5B 28 70 3D 45 3A 76 5B 5F 62 50 8A 70 38 +77 71 AF 83 61 79 3F 4A 73 6A 7D 68 93 34 76 32 +45 54 3B A1 56 8F 4E 62 74 51 62 57 6D 44 29 89 +59 4C 75 59 47 7C 5B 90 5B 80 87 5E 4C 70 76 56 +2D 73 46 AB 78 5C 60 60 2F 82 5C 54 7B 87 6E 7E +38 4C 6C 2A 7A 68 2B 6D 5D 6C 2C 87 90 51 55 69 +8D 80 56 57 74 28 5A 65 5B 49 53 50 3C 6C 80 83 +36 62 84 4D 39 6C 95 3C 42 72 8D 54 73 5C 6A 41 +7C 5B 59 78 54 92 3A 6A 72 67 7D 56 82 87 6F 55 +A6 5C 4C 4C 6C 3B 46 73 3F 63 4B 8D 7B 4F 4C 6C +66 50 64 6F 6C 80 22 54 47 89 8E 66 AB 4B 6C 4C +67 69 77 79 4F 6F 6E 5D 72 79 46 56 36 B9 58 43 +76 9A 9C 74 43 64 3D 8C 42 A4 6C 54 57 41 4F 90 +22 9C 78 73 1A 3F 95 86 5F 3A 89 65 32 89 3C A8 +A8 50 38 30 6D 82 5A 9B 44 54 79 7D 5A 61 4C 46 +46 A7 4B 7C 39 73 44 78 9D 76 4F 97 59 7B 53 67 +4B 36 3C 8D 45 94 3F 83 55 6A 62 64 6D 83 5E 53 +62 88 44 59 8E 81 26 69 23 69 83 25 6C 59 82 19 +34 AA 30 7D 82 57 5D 85 5E 6E 36 58 55 9A 7B 86 +5A 73 65 38 4D AC 40 44 75 5A AA 66 84 5A 1C 71 +6F 4F 4F 64 62 5C A4 6D 3E 44 46 5A 31 29 45 75 +45 46 41 84 5F 50 83 62 69 75 6B A6 4E 49 8E 63 +9F 4A 7B 8C 3B 83 3C 75 9C 5C 52 A9 6B 2D 1F 99 +14 67 45 91 82 67 37 42 3D 7F 8D 68 42 38 67 68 +5A 99 80 4B 58 9C 7C 81 5D 6A 61 70 40 6F 77 36 +6F 25 57 7B 79 7A 49 31 72 91 51 1E 98 68 85 3D +7F 6C 5C 54 62 7D 46 3C 69 6F 55 71 90 22 28 4C +55 48 6B 3D 5B 62 8E 3E 7B 45 5B 31 3A 41 7F 7B +6E 42 49 2D 55 53 6A 6E 61 36 79 7C 40 6F 92 61 +32 54 61 47 5B 72 5A 4E 65 4B 77 52 2B 3A 4D 5B +43 1F B0 95 36 60 37 5A 6F 29 76 3A 5A 25 66 64 +91 5F 44 90 3F 5C 7C 7E 39 35 7E 54 70 78 43 59 +69 6F 74 8F 5D 8B 9D 85 8D 5D 52 53 4F 43 30 97 +60 6B 77 AB 5E 55 44 46 93 4C 45 77 79 C 92 73 +8C 62 3B 64 84 79 78 87 6E 56 3D 8D 73 61 8C 6F +5C 65 5C 23 31 74 40 78 6E 61 8F 60 2F 99 30 72 +9A 2F 55 57 91 89 66 4F 94 36 36 3C 76 64 6E 9B +9B 8F 73 3D A3 80 42 38 84 9C 52 5B 30 4C 6A 7E +6C 69 3E 7E 29 51 89 92 9B 68 91 52 7F 60 53 73 +3A 55 88 64 6D 7F 48 38 70 66 7C 68 83 A2 93 76 +59 A2 5F 60 63 7F 7B 2F BA 84 5A 4D 2E 47 9D 77 +61 71 4C 36 3A 56 7A 4F 89 A3 93 61 44 39 5E 94 +5C 69 81 69 7B 86 5B 5D 83 4A 96 AA 3F 51 42 73 +6E 7E 65 93 6E 50 5B 89 7B 5F 45 30 A2 68 6E 89 +6A 78 48 42 5F 3D 85 72 3E 76 50 5E 75 5B 75 3D +31 79 4D 59 58 52 56 87 32 15 9A 5D 38 79 86 40 +5E 66 4A 80 7A 20 6C 57 65 2C 53 51 5B 71 7C 43 +42 4A 32 58 91 3D 59 6B A8 83 2E 3F 48 76 92 8D +50 5B 54 96 25 8C 5A 87 85 88 6E 8D 43 58 63 30 +61 43 80 81 71 6B 7A 47 52 96 82 55 44 46 51 63 +4B 5D 54 3A 59 92 32 47 51 3E 6E 89 77 78 A2 54 +5A 3F 5D 9A 51 31 AD 54 6E 87 5D 2E 60 47 84 80 +59 4A 7A 71 67 79 31 39 8B 26 49 7E 7A 5F 71 51 +53 5C 79 51 40 73 5B 88 6A 75 6D 2D 59 49 82 A6 +71 7D 35 33 3B 7E 71 80 5F 60 89 4B 87 31 59 70 +46 45 76 69 81 97 3D 83 51 7F 57 68 32 4C 73 61 +8F 9C 2F 5E 80 7C 5F 44 84 5A 70 5B A5 7B 3C 75 +59 86 73 86 8F 33 5E 34 3D 7D 53 45 6B 7A 7E 67 +6B 4B 84 1E 5D 82 77 82 7A 4D 34 7D 78 5F 85 9A +4E 3B 3C 67 5E 8D 75 5B 62 13 28 5C 85 42 8B 6A +83 5E 88 54 2F 4F 46 90 19 54 5A 6F 51 53 52 50 +7E 3B 73 57 70 5F 5D 51 60 5C 5A 6A 47 63 65 3D +77 A5 6C 86 64 5B 5E 91 5A 35 17 6D 69 A8 4A 51 +76 63 47 4C 6A 2B 1D 54 44 6D 4D 61 90 50 85 45 +73 57 52 9A 55 4A 82 B0 46 80 9D 7E 52 48 65 5A +80 7E 88 7F 6A 53 82 76 79 7A A3 78 55 86 7A 83 +7B 5E 5D 7B 6F 95 29 5E 58 89 A1 93 6E 22 5E 62 +3B 13 67 50 3D 6C 62 6A 5D 86 5E 89 5D 60 55 36 +4A 6B 4B AE 4A 62 59 A4 5F 64 9F 8F 43 46 6B 4F +6C 6A 18 99 7C 8D 2C 33 64 7C 2D 80 1A 47 55 91 +46 82 63 6A 81 77 33 38 79 95 7C 8C 5B 3C 83 4A +86 66 95 70 76 88 41 6E 5B 5C 63 56 58 5C 6F 55 +48 4F 2F A1 81 94 4E 46 10 77 66 55 33 67 3C 4F +4F 39 64 7F 7C 56 77 42 7E B7 4F 5A 81 68 28 7B +46 8B 52 36 71 53 74 7A 88 31 38 54 5B 45 6F 8C +27 77 65 9C 5D 78 53 5B 66 4C 72 6C 6B 53 71 33 +50 8A 9F 68 7A 3B 6B 6E 82 90 48 42 7C 6D 51 3D +51 8A 53 4A 23 37 1F 59 9C 3E 68 4A 63 58 8A 64 +54 4C 63 47 7F B0 76 13 83 58 5B 6B 7C 5B 70 34 +47 55 84 81 7E 8C 1F 55 4E 52 90 71 77 A4 84 19 +3C 86 76 76 5E 54 8A B8 3C 76 6A 6A 7F 62 80 44 +42 9D 5A 8A 5F 29 5F 8F 79 5E 95 74 5F 83 5E 89 +7E 63 67 6D 3D 96 46 67 42 61 7F A2 4A 66 3C 4A +52 4C 52 61 66 17 5B 82 1B 5E 5A 74 11 74 3E 62 +7E 3C 74 53 4A 6C 1B 96 2A 4A 54 5C 63 36 54 74 +7C 5A 67 81 6C 96 7F 67 8B 6D 63 3C 77 69 66 9F +45 7F 4C 88 77 79 A5 4A 6A 69 3A 55 62 81 6E 5E +54 4F 66 91 7D 68 71 7A 20 A7 53 55 40 7C 72 7A +6D 80 46 6C 23 4D 85 61 6B 62 5E 73 6D 4A 55 41 +88 3C 76 8D 63 5B 79 7B 5A 38 55 7D 51 60 61 64 +88 95 48 34 9E 4E 3A 68 41 97 75 2A 52 4A 75 53 +88 59 67 4E 8A 8C A3 55 80 61 2B 71 4E 5C 8A 6D +6F 4B 4B 5E 39 8D 76 5E 5B 22 8F 30 5C 7F 3A 83 +5C 79 15 57 5E 51 5F 7B 64 3C 91 A5 4D 8C 2E 28 +75 5D 62 72 73 4A 49 71 68 9C 72 52 78 8A 6A 58 +6B 60 45 85 4A 1F 7D 7E 52 6C 42 5F 1A 66 35 39 +7C 84 6C 22 86 9B A6 80 71 5A 9B 5F 6E 49 77 55 +59 71 69 4A 54 6E 72 84 88 3E 87 70 73 6F 89 7E +59 82 43 6C 66 94 7E 56 34 83 49 5B 8E 81 69 92 +65 49 56 68 65 51 4B 87 3A 45 6B 4C A4 42 6E 3D +7F 4E 9D 4D 6B 89 54 4F 91 17 7A 75 90 6B 5B 84 +6A 76 74 52 48 95 3C 61 51 A2 8E 29 47 9E 86 45 +8E 62 5B 77 38 33 6B 38 60 35 32 37 57 61 88 69 +24 2A 62 48 7F 3F 7C 5C 43 48 4D 5C 4F 6E 51 49 +60 57 60 8A 99 7A 35 6C 63 49 89 85 68 32 61 84 +87 54 90 5C 55 4E 75 76 29 6A 9B 54 63 92 67 44 +24 76 4E 19 55 24 8A 60 3A 8A 44 82 68 3F A0 43 +38 6F 98 4C 58 66 34 8B 3A 4A 86 30 72 52 43 87 +71 89 71 42 53 88 AC 5B 71 50 56 7F 34 70 3C 59 +77 38 49 50 77 68 6A 4E 61 7C A9 40 60 47 78 8C +67 50 43 59 79 5A 54 5F 3D 48 3B 6B 5E 57 67 58 +66 7A 71 67 67 63 5A 4C 2C 79 54 64 35 3D 4A 88 +51 70 4D 85 47 90 5A 72 6C 67 5F 77 56 52 96 56 +74 59 48 42 68 52 66 86 91 93 89 7F 72 6D 6B 72 +7E 36 6C AF 6C 73 B5 69 4E 3E 6A 51 78 6B 7F 65 +6E 72 6D 58 81 51 4E AA 3B 85 67 40 66 86 8C 63 +69 6E 3D 39 38 8B 76 A0 50 63 5D 52 43 51 65 42 +42 37 39 53 4B 79 36 6C 5C 63 93 76 9A 6F 48 94 +65 36 56 56 5A 4C 7A 3B 13 9D 31 4C 6A 53 61 24 +88 71 4D 63 83 35 75 47 65 6A 4B 7E 66 57 7C 18 +68 6C 81 8F 5A 4C 88 67 AA 69 74 64 6A 2D 45 42 +62 84 70 81 92 55 54 7A 4B 31 6C 67 88 21 5B 73 +5F 7B 56 74 24 73 68 78 25 79 87 47 67 70 66 3E +8C 52 5B 16 4E 47 17 46 5D 4E A3 7A 4B 71 4E 2F +42 5A A5 39 4E 69 9E 3D 87 82 6D 76 59 78 57 A2 +12 69 2D 2D A6 46 49 4F 4A 44 89 81 49 47 56 66 +66 6F 70 30 79 26 71 A1 74 24 60 8D 60 52 8E 43 +5B 75 58 7A 32 5E 56 91 54 39 9E 2A 7A 6E 77 24 +76 40 78 56 42 81 74 58 8A 7F 81 78 9C 71 6A 38 +35 47 72 4C 52 A5 5D 95 35 29 3E 8D 58 66 67 6A +49 5F 30 7E 69 8E 71 7F A3 54 6E 53 63 54 6A 89 +90 69 42 19 51 31 5A 52 65 49 34 69 6E 77 6B B0 +53 70 A4 79 7D 69 3E 69 B5 82 51 4B 58 85 4F 55 +2F 62 4D 3E 92 36 51 53 5E 70 76 9D 51 6F 5F 65 +38 5A 39 96 75 6C 36 73 3C 5D 7E 56 68 58 64 96 +90 7C 51 35 57 82 2B 8A 6D 8D 39 69 41 74 37 4B +68 50 9B 4A 79 74 8C A3 70 3B 51 2E 67 78 64 7F +75 6D 70 43 36 8D 54 51 69 79 56 7F 92 72 3B 54 +47 52 93 50 4D 15 37 6E 47 70 59 29 66 70 A8 66 +4B 60 3A 53 89 4C 95 68 70 61 A8 37 41 67 56 54 +1C 9F 5D 66 95 97 91 32 75 4E 36 7D 5D 72 63 65 +5E 95 B0 70 48 46 72 34 63 62 7F 95 1C 46 75 46 +64 18 6C 3C 47 5A 92 33 5C AC 7A 9D 60 22 59 51 +80 52 52 6B 6A 73 3E 3F 59 63 75 6E 66 68 96 59 +3F 72 76 3D 4C AE 70 69 2F 52 77 44 5A 6E 44 71 +BB 78 96 27 7C 67 54 90 81 4C 29 48 51 71 21 21 +62 47 53 83 61 1C 24 2C 6F 87 8C 5B 72 53 51 95 +A8 48 5E 43 8F 5A 68 38 4A 4D 5F 55 79 7E 67 6F +67 4C 72 63 71 4B 5A B2 3A 4E 3D 91 85 66 60 82 +7A 80 7A 74 65 70 2E 87 2B 88 83 5B 8D 7A 51 6E +97 3F 3B 43 6C 1F 3F 51 35 53 8A 35 6A 89 48 4D +92 41 65 52 64 34 46 5F 64 2B 53 4C 73 79 2E 86 +27 46 AD 14 45 81 21 75 48 58 61 72 86 44 9F 40 +67 46 89 3D 8D 48 84 47 17 91 3A 5E 78 38 3B 89 +4A 28 91 59 AC 9B 89 73 5C 74 42 65 67 45 41 4A +4A 58 67 66 4C 80 58 64 7E 48 77 57 32 4D 32 29 +1E 33 53 82 5E 4C 58 83 A0 5A 8C B0 72 81 7A 98 +6E 62 51 2C 47 4E 6D 64 5D 4F 1F 74 52 82 3F 35 +5D 29 7C 52 69 62 66 2E 4F 41 42 40 8B 67 76 85 +4B 43 69 40 95 6A 7B 8B 28 73 80 6B 66 5F 38 38 +3E 6D 75 78 60 7B 59 99 37 5F 4F 85 46 B2 60 9E +92 9A 69 77 9F 55 4A 5E 65 5C 88 3D 7F 60 61 35 +4C 6A 88 8B 9C 5B 36 65 72 6B 6F A8 71 73 2D 81 +83 61 53 58 71 65 3E 7B 1C 42 8C 48 51 48 59 70 +80 71 47 64 57 44 65 52 3C 8E 5C 2C 78 36 59 9B +64 4A 5C 7B 77 4A 8A 5B 65 55 49 23 5A 6E 40 78 +2B 65 8D 3F 87 25 47 5B 4D 7C 68 13 AF 42 18 63 +27 9D 6E 5B 78 8D 73 70 6B 82 61 61 7F 6C 79 5F +57 69 30 78 31 6E 49 59 22 92 61 53 52 31 35 52 +45 4F 6D 43 31 6B 55 69 59 5B 43 4E 5B 75 80 64 +8C 84 85 6E 5D 57 49 50 72 9A 6D 73 4C 6A 62 5F +93 42 8E 42 7D 3D 42 70 60 5C 3C 52 76 20 19 17 +82 77 5B 91 73 70 95 45 6B 76 5D 6C 80 4F 6E 6B +76 8F 8A 66 4D 72 61 68 2D 85 A9 96 63 3A 3F 4E +35 4B 40 A4 75 8E 5F 5A 64 21 6F 20 84 8A 7F 8A +68 5F 9D 5D 85 64 6F 60 6A 49 47 77 5D 58 58 77 +36 65 89 45 62 58 2F 5C 7D 64 6A 31 61 63 5A 94 +80 3E 5D 6C 6C 7D 62 7D 49 9C 40 53 29 9A 5C 8D +78 5D 66 82 66 42 59 6F 73 52 88 6B 47 75 63 66 +52 51 3A 5A 52 59 65 34 6E 60 6D 6D 34 8E 61 57 +4E 8A 51 4E 48 4B 54 A4 60 44 46 3E 5E 44 19 2B +3C 70 47 75 6D 5B 6D 60 58 4F 85 7B 4C 49 A6 76 +5B 52 7C 2E 54 67 70 5C 5F 38 76 56 5B 8F 81 66 +68 76 7E 46 47 93 81 4F 73 5B 68 65 63 B1 2B 32 +6E 58 91 9C 90 9B 63 82 83 A7 9D 3F 3A 3D 70 64 +A0 72 4F 3C 50 92 67 76 B5 62 80 67 2C 2E 64 4D +4A 73 3D 3B 3D 60 6F 5F 64 63 87 74 3A 1B 40 48 +58 5A 57 59 63 3E 3C 8C 51 40 60 AF 53 7F 97 94 +6B 7F 71 56 6A 78 60 7E 79 59 6D 4A 23 68 6B 6C +5D 73 92 8C 9A 44 67 83 61 79 B7 4F 36 2E 4F 71 +2C BC 3F 73 8F 44 67 1D 8A 57 7D 9A 68 48 40 1E +5C 77 27 65 4A 88 44 7D 52 86 53 6E 52 4B 79 7C +63 74 3F 7E 70 46 43 7C 29 62 5D 4E 3E 37 48 5C +3F 49 4B 68 8A 71 2D 93 8A 73 A2 6D 76 55 26 7D +78 56 74 42 68 49 91 6F A7 27 73 53 3C 30 68 4C +38 66 B1 82 56 53 90 55 3C 5B 5D 2D 53 99 72 68 +7F 5B 54 5D 72 43 68 7C 57 54 52 17 91 4D 79 74 +4E 44 98 70 91 5E 86 5C 49 77 6D 55 60 8E 57 54 +43 9D 5F 26 3B 78 37 81 64 5E 92 54 68 39 72 50 +64 6D 4E 75 74 8E 98 5D 4C 6E 60 4E 4C 47 7E 4C +84 71 58 71 46 52 79 96 5D 25 73 98 7F 7A 94 7C +5D 60 63 39 37 4A 50 73 58 69 3D 69 2B A6 6F 55 +69 48 58 96 7F 6E AF 74 5A 35 55 74 9F 6E 6C 57 +59 53 8A 60 78 6C 6C 4B 6B 50 2E 69 92 76 71 43 +59 4C 37 3D 9B 62 83 61 83 47 6A 32 62 6A 82 41 +4C 57 68 7A 3C 48 3E 82 94 7D 80 4A 89 71 62 B0 +13 31 99 86 69 44 20 62 7C 48 72 63 4D 94 81 5C +49 AD 86 32 57 16 66 6B 46 83 3F 77 52 59 3B 92 +7A 53 94 64 7A 32 63 86 44 62 68 70 53 38 77 77 +38 48 6E 36 58 87 9C 8A 80 70 30 6C 2F 57 6E 41 +85 51 4C 70 5D 3F 52 5B 30 89 56 8B 5E 6C 55 72 +6D 62 67 74 A1 28 72 7D 39 4E 42 62 9C 56 22 65 +9F 9C 5E AD 63 6F 51 7D 30 4E 4F 4E 3E 9F 34 80 +36 5A 5A 7A 70 56 42 86 A5 61 4C 94 85 A4 74 68 +37 79 8D 34 62 7D 9E 53 29 8B 7B 71 4D 9A 49 54 +6E A3 44 81 52 5C 6A 6D 4F 4A 4F 47 5B 85 6B 28 +27 83 3C 80 72 52 7A 57 67 94 42 3A 28 25 64 33 +2F 4C 8B 76 37 57 65 86 62 4F 81 7E 69 74 55 4F +70 7D 77 50 9B 61 39 4E 50 6E 69 54 99 83 6B 66 +8A E 60 29 80 6A 8C 71 65 7F 9E 48 57 66 48 57 +74 73 59 5A 40 24 64 68 59 1C 88 47 61 4F 58 38 +75 58 2D 57 4E 7F 2E 54 7C 7A 80 60 6C 6B 8A 3B +8D 81 50 97 3C 16 71 B 59 8F 98 71 3F 50 93 73 +89 90 48 54 1B 64 A 46 69 A5 51 5B 47 23 47 30 +47 4C 7F 6F 49 4B A6 79 6C 4C 3A 64 95 68 68 64 +68 7D 5F 82 88 57 51 47 79 60 47 71 40 67 67 74 +4E 95 92 77 86 7E 49 54 80 91 82 7E 74 5B 7F 37 +6D 5E 97 4B 64 7D 52 99 56 6B 9C 72 58 5F 56 53 +70 44 70 77 5E 86 6D 81 35 2B A0 67 7E 49 69 8C +60 6C 69 36 2B 61 7C 6C 78 2E 8F 7A 5C 64 53 5A +7D 95 1B 45 7B 56 5E 6D 89 30 66 2B 7A 5C 6C 4B +4F 7A 17 8F 87 76 5C 91 47 79 37 9D 57 84 89 37 +6C 45 A8 96 3E 33 7D 49 64 81 4C 75 6F 8E 74 7B +54 57 6C 3E 49 4E 2B 8E 7B 41 6E 54 AB 87 61 66 +7D 1B 92 61 42 5D 75 74 6B 60 5D 7F 45 72 AA 9B +53 58 7F 4D 2C 83 6D 5B 6C 77 4D 44 6F 5C 9C 77 +5D 67 66 95 51 4E 10 8C 8B 5E 77 58 70 9B 52 62 +48 A6 68 8C 6A 80 4D A1 6D 4E 6C 73 60 43 71 4B +82 40 80 61 7D 46 74 4A 83 52 63 49 70 58 61 64 +7C 7C 61 97 38 5B 59 84 46 9D 92 80 3B 80 82 8F +5C 4C 4F 16 2F 33 5E 9D 4F 51 45 51 80 32 8A 66 +7C 34 88 5A 5D 41 8D 29 4B 90 3C 5E 6C 3B 87 42 +81 75 41 49 1A 56 55 61 82 52 A0 6C 3B 5D 86 2C +7D 88 A5 5B 3C 63 32 5B 79 79 4F 86 83 6B 62 60 +56 78 4A 68 44 2E 70 8E 7D 6C 82 64 62 70 64 88 +49 72 3D 58 7F 34 74 85 86 5C 68 72 8F 95 48 36 +79 70 6F 51 5B 7C 33 69 82 69 59 42 74 72 2B 6C +77 20 7D 7B 26 66 63 3E 61 59 64 5C 83 70 55 76 +90 76 44 6B 57 4E 70 80 6D 88 92 A0 7D 30 47 74 +44 43 6D 73 55 66 37 59 90 6B 57 90 8F 89 64 5B +30 4F 5A 70 70 68 5F 50 75 5F 33 21 35 4F 77 4B +7F 6D A8 A5 7A 8C 43 58 79 B8 5F 2D 55 59 1E 4A +9C 55 48 3E 85 92 5D 66 7B A0 51 61 4F 47 2F 49 +44 6C 65 AF 25 6A 2A 81 9F 21 A0 6E 4F 44 4D 6C +2F 78 8C 66 57 6E 2E 54 6C 62 8F 4D 60 6F 80 60 +78 77 36 5F 68 6E 62 79 65 6A 7E 86 70 E 65 B2 +76 65 80 8B 2B 71 6B 54 54 6E 97 52 7B 65 8C 75 +4F 3B 56 82 92 5B 8A 55 8F 65 BD 89 90 59 21 7F +31 9E 66 61 2F 54 78 93 6F 3A 57 9F 84 55 64 89 +5B 71 5D 6A A5 4F 65 4C 68 3F 72 68 2F 6A 43 59 +53 42 6B 74 BC 68 94 7B 20 86 68 3F 50 8F 3E 87 +7D A9 2A 59 57 70 69 34 6E 5C 5F 75 52 4E 38 78 +61 32 5A 46 65 83 B9 43 68 5D 6A 56 A3 5A 4C 76 +49 46 70 A1 4A 60 50 6E 56 5A 4C 73 6D 3F 81 9B +53 76 46 7F 89 85 78 4E 5A 4A 4D 72 6F F 77 47 +4C 47 4B 40 5D 8B 98 46 4F 7B 8E 31 5A 5E 4D 44 +83 82 73 4D 24 6F 86 31 5C 9E 23 37 51 62 6C A8 +3C 3C 78 95 73 82 50 69 8B 5C 8B 5D A9 65 62 6A +A3 61 77 48 79 7E 5D 7A 88 6F 65 8D 2D 7D 79 5F +80 99 6D 66 5C 3F 96 72 A0 69 5B 2D 3C 68 5D 84 +A2 33 51 3B 94 60 1C 66 56 48 98 71 49 2B 56 45 +4F 35 32 97 46 78 A6 92 39 39 64 62 3A 5D 6A 72 +69 88 3E 91 92 7E 9D 89 76 5E 5E A7 35 62 7D 61 +54 8E 50 6B 6D 58 19 47 55 2C 76 58 48 4E 9A 66 +62 67 44 AC 80 74 45 85 77 64 49 6B 6C 49 4D 84 +50 60 6E 4B 52 4F 3A 99 5F 7B 56 4E 81 95 42 35 +74 84 3A 7D 34 5F 64 71 59 51 6E 64 40 62 5D 7C +49 49 7F 61 7A 67 81 56 56 93 44 73 7C 8D 7E 4B +2E 33 7D 67 2C 60 99 70 39 3E 6E 4B 91 82 22 56 +54 52 40 2C 23 58 5D 9A 39 63 43 84 6F 78 74 62 +4F 55 6B 66 1D 9D 67 74 7C 3E 4D 9D 79 4E AD 1D +5E 3C 56 40 52 A3 4D 3F 7A 54 79 6F 6D 31 7B 4B +82 6A 5E 4E 78 32 79 8D 5F 78 82 98 41 4B 65 23 +62 6B 64 53 41 83 64 7C 80 6B 39 79 73 A9 AD 57 +30 5B 40 6F 48 12 80 4D 7F 80 5B 79 62 2C 6B 35 +3F 3B 89 6D 28 50 8A 71 55 45 9D 47 70 7B 82 4E +29 61 62 3F 7E 66 81 95 9A 5F 8F 3B 62 4E 61 5C +69 1A 35 67 57 1F 13 73 13 67 76 46 58 52 68 5E +5C 3D 22 81 2D 70 82 50 85 55 83 9B 77 88 6C 27 +61 56 5D 6A 98 4C 70 38 6B 54 9D 75 50 25 34 A5 +7D 89 59 88 4F 46 5C 4C 39 68 56 5A 68 3F 25 54 +69 85 49 86 80 74 43 58 68 44 38 36 65 6D 96 55 +8F A2 78 5A 61 6C 99 14 58 5D 4C 4A 89 4A 1E 6B +AF 66 28 76 27 6E 51 41 97 71 6F 82 7D 79 4B 83 +53 48 4D 41 A0 74 90 62 38 48 3E 6B 17 59 65 8B +74 3D 2D 4A 51 7A 7F 5B B3 75 35 49 51 59 57 71 +73 94 84 7B 29 46 7D 54 55 75 5C A1 6E 80 76 39 +67 58 49 22 79 59 5F 59 30 51 83 7F 5D 7F 8C 42 +6D 78 3E 68 6F 81 7B 83 37 6E 4E 60 9A 75 93 35 +78 3E 63 48 92 71 78 83 68 3E 5C 5D 51 87 69 4B +52 5D 76 86 3E 6B 44 4B 7B 5D 3F 34 4F 2F 25 7B +68 7F 3E 57 41 36 65 9D 52 7B 5B 92 39 8F 66 A8 +7C 5B A2 4F 98 65 8C 56 5A 31 97 2D 39 34 50 96 +66 50 38 3F 56 76 48 61 73 65 5C 66 82 66 91 59 +6B 59 76 72 64 4F 9B AC 64 76 45 49 4F 38 69 98 +4F 6D 54 79 75 42 3A 4B 95 2E 1C 5F 8D 67 68 54 +A3 61 5D 8C 7D 3E 42 63 5B 96 44 7C 7F 72 5A 4C +48 58 72 42 4F 80 71 4E 93 9A 6B 81 39 63 4B 1C +5C 1C 66 62 3C 65 5F 7F 69 63 79 65 16 5B 5A 79 +6E 71 46 49 54 63 6D A3 8C 6B 8E 61 48 68 28 45 +63 A1 9E 8C 3F 72 47 75 73 6D 37 75 66 56 6B 8B +82 1C 33 8B 83 41 32 35 53 40 76 6E 4F 7B A9 89 +AA AF A0 9F 5A 6A 62 59 B6 69 35 47 77 55 81 95 +56 59 77 75 76 89 79 9F 33 22 71 5B 53 7E 61 40 +5C 4F 5F 16 7A 7E 51 65 49 57 43 5E 31 47 9A 37 +5D 5D 81 AC 29 52 67 74 54 57 3F 88 A2 55 6C 52 +91 8C 71 58 4A 23 27 4E 5E 81 47 4F 56 62 88 45 +91 6C 6A 72 47 5C 9F 59 55 25 75 8C 6B 5F 74 6C +59 84 58 61 1F 61 7A 7D 52 42 59 79 9B 4D 48 4B +67 97 46 7B 52 A5 7D 1E 68 72 22 70 74 3A 5A 3F +78 69 4F 77 5C 66 7D 4C 85 65 3C 5F 75 4C 3D 85 +65 36 65 2C 8D 5D 76 6C 61 84 32 73 46 48 A0 75 +5F 61 81 93 40 5E 7E 85 57 4C 52 98 86 6A 75 3E +25 70 66 64 56 61 4E 6A 6D 6D 46 50 7D 2E 67 89 +99 2B 72 39 67 6D 5F A9 3A 7D 52 64 78 43 46 65 +85 58 95 44 2A 5F 2B 62 73 71 5B 28 70 3B 6F 52 +58 77 5C 4C 71 76 74 3F 4B 83 5A 3D 63 86 3A AE +5F 7E 67 39 53 55 66 46 A4 6A 4F 57 1D 93 43 73 +74 6F 82 62 6E 42 4C 86 4F 67 8F 87 5E 4C 4A 67 +37 69 63 94 50 9F 8E 58 50 78 70 8C 3E 4B 37 4B +3D 22 94 44 7D 5C 99 71 7C 62 1A 74 67 7F 49 71 +38 70 3A 25 58 70 8A 60 5D 62 5F 43 8E 38 A2 2A +3F 65 55 28 60 9F 44 85 50 BB 5A A8 8B 62 9A 80 +82 5C 88 38 60 38 34 8D 2D 49 49 72 6A 73 7A 35 +4B 3F 80 45 7C 9D 51 70 67 54 77 49 48 6D 81 40 +51 47 5A 48 7E 86 3B 1C 86 6E 42 7C 85 3C 8E 5E +41 50 5C 5E 52 56 71 76 74 AC 6C 8B 43 58 64 5A +4C 44 66 7C 4F 60 55 43 6B 66 35 76 51 6D 6F 9F +69 66 A3 45 6E 81 4E 6D 71 55 67 3F 6A 87 68 92 +7B 8D 38 6A 7C 8A 39 7E 78 37 19 81 4A 7A 5C 5D +71 5C 58 60 A3 69 75 52 3E 92 4D 64 40 6B 41 7B +24 46 5F 58 87 83 53 35 5B 9C 6C 6A 72 54 9F 6D +85 64 52 6F 84 55 4B 8B 5 4F 62 4E 89 3C 44 49 +6F 3F 54 67 66 7D 55 81 65 8A 70 53 66 B3 50 76 +30 68 84 46 68 70 42 2E 71 71 65 59 73 6F 16 64 +2F 85 65 70 81 54 8A 6A 78 75 39 35 76 53 54 5E +99 65 5C 9A 5D 64 49 6B 73 51 57 7F 8D 8E 71 3D +BD 46 95 76 64 51 62 6B 52 51 2C 5D 5A 91 18 77 +62 52 48 95 37 71 1C 80 82 60 74 37 1D 36 99 A7 +53 7A 4A 57 4E 69 82 16 46 40 42 A0 4E 8D 28 5E +44 40 59 74 87 44 24 6A 46 46 91 4F 4E 42 42 85 +7D 56 54 77 95 6A 62 6A 52 39 2D 5E 56 62 3B 51 +5F 73 78 79 50 7F 51 96 A6 28 52 80 97 47 5B 71 +46 5C 5C 53 5F 5A 26 3D 49 6A 9D 66 55 46 37 5E +24 5C 79 87 4C 81 60 77 47 65 5B 63 4B 3C 21 77 +39 46 6C 72 35 66 57 A1 40 4C 3A 2C 6B 71 62 7F +52 6E 8E 4E 2B 4D 35 5C 49 84 A6 6D 56 68 63 4C +75 47 5E 53 4C AE 83 36 6F 8D 74 51 40 2E 6D 5C +38 61 5E 6E 66 29 4D 34 5C 5B 22 4D 7D 8C 61 7C +28 83 50 4B 7A 8C 8A 13 83 50 65 79 37 47 42 61 +96 72 92 70 2C 5B 43 4E 6C 8F 80 8E 6F 4D 7B 71 +5E 59 4C 79 34 8D 6D 55 4F 4B 51 54 6C 88 67 7D +4A 67 4B 6B 35 77 A1 74 51 9C 70 71 32 63 75 78 +3D 4F 20 8F 76 29 7C 9D 76 68 54 6A 6A 3C 7A 51 +55 1E 4F 29 5A 73 52 87 81 8B 7B 65 58 80 6B 60 +5A 6F 3D 53 A7 60 46 61 4E 8D 50 73 79 94 85 4B +3D 49 4E 3E 6C 78 2F 74 90 5C 63 4A 3E 6C 61 6F +99 34 69 4D 7D 5A 45 82 4A 99 50 27 8B 45 61 5F +83 7F 79 32 66 55 4E 70 89 34 4F 80 95 2F 59 6A +6E 56 78 3E 6D 57 4B 85 8F 70 49 3D 2F 6E 79 43 +78 7C 81 50 73 56 89 62 5E 79 A9 51 9C 6A 50 A9 +2B 3A 54 6A BC 5D 86 6F 70 55 59 82 7E 85 87 42 +4C 5A 76 79 41 48 56 17 60 C 62 8B 5A 71 6B 65 +7D 4C 66 32 71 4B 78 7C 20 6B 77 52 55 1E 69 70 +8C 8F 56 6D 9E 93 6C 55 83 2E 9B 75 63 3A 80 6B +55 3B 78 28 37 65 7D 89 73 5C 5C 2A 2F 25 6B 59 +5F 52 6A 72 5E 6B 53 57 85 8E 60 72 75 6E 45 23 +3B 60 51 81 8E 4F 8F 7B 91 5F 7C 38 53 36 47 71 +2A 41 60 A9 42 75 25 AF 3A 38 8B 2D 5E 6F 61 68 +43 57 3C 41 AE 62 4D 71 4E 54 89 71 74 67 6B 72 +69 3A 84 97 44 A 8 48 56 59 37 4A 3D 4A 41 6C +78 3A 54 65 2A 5D 81 83 4A 86 6D 5D 34 3E 42 7D +7E 42 99 9F 49 5F 78 79 55 87 79 8B 64 6F 7A 52 +4D 44 58 22 67 94 86 8B 34 70 4A 75 4D 21 71 64 +6D 43 6D 74 85 4E 6D 77 73 4E 42 54 97 53 63 96 +36 5D A1 60 A9 60 2F 8E 60 78 78 63 6D 53 BC B1 +42 6E 5C 92 82 61 38 5D 54 42 87 25 57 67 2F 81 +6D 7D 87 47 59 2C 1D 57 3F 80 85 7E 44 60 84 34 +8D 29 6F 54 80 71 2A 68 A1 9B 79 15 46 6A 2D 3E +5B 36 62 4F 78 5E 77 6B 4B 64 45 45 54 68 20 77 +98 55 6F 1A 5F 60 96 48 39 5A 6D 72 56 A6 30 71 +5B 59 2C 5E 9A 75 85 3F 4D 5C 81 7A 38 5C 75 7D +80 3A 60 8E 53 19 3F 64 6D 4E 34 79 90 2B 7E 48 +6C 72 5C 79 69 68 AD 55 51 5D 7A 4A 64 36 9B 8D +52 6E 86 58 AD 92 70 53 4D 1F 55 71 3A 52 82 7B +40 49 74 49 99 80 1A 38 AC 8E 93 68 81 36 85 5F +82 49 73 49 49 3D 32 75 7A 63 78 96 64 79 4C 49 +58 78 58 49 3A 44 41 3F 97 41 11 4C 76 3D 6A 7C +80 6E 2B 50 86 8D 42 27 68 33 5C 7F 33 33 5F 5A +B5 33 33 87 59 87 B0 57 54 5E 8B 7F 37 48 65 61 +61 6E 30 14 84 98 6C 5A 90 51 84 41 6D 62 54 5F +AD 3E 73 84 2B 44 8E 5F 64 40 4D A4 3F 66 5D 74 +5A 32 4D 40 69 1B 66 5E 56 42 50 69 4C 73 2D 7B +8F 53 88 34 54 5E 60 6E 70 68 8C 67 A3 5A 42 51 +55 43 6F 34 51 38 6C 76 8F 8B 3F 65 94 1A 50 46 +A0 4C 7B 47 2B 73 88 7D A3 88 80 85 8C 61 51 5A +48 52 2F 55 75 76 4D 2A 55 71 96 63 51 2F 40 49 +70 3C 70 AF 88 64 76 4A 7E 6E 5D 7D 6E 4C 86 5D +5A 46 78 7A 84 A5 9B 7D 3F 70 73 4D 6F 6E 3D 7D +44 55 72 14 4C 24 53 44 4F 4A 4C 72 5A 7F 65 9A +3F 8C 3D 8A 4C 65 47 4F 53 7B 53 58 9C 34 6F 5D +9A 58 3E 31 8B 8E 70 5D 7B 34 6A 35 78 53 A6 64 +4C 52 92 64 72 44 22 62 3E 82 50 58 6F 5E 41 4B +7E 64 7D 7B 65 8E 62 97 71 69 87 6D 92 46 61 42 +6F 46 29 81 84 52 7E 86 40 43 5F 52 75 15 AB 61 +4E 69 76 55 67 69 43 6F 31 5D 80 35 77 15 41 75 +58 7B 47 6F 81 61 87 29 7F 85 82 42 3D 5D 55 A0 +59 75 1E 27 47 88 62 2D 54 5A 69 77 6B 5C 5D 68 +56 31 83 41 52 52 53 77 92 97 7F 38 3F 6A 32 A0 +85 14 3F 5B 5B 98 A7 36 2E 4A 71 1A 84 58 73 54 +5B 60 A6 6A 3F 60 4B 33 7E 65 6A 6C 57 6B 84 78 +59 5C 80 5A 9A A8 8C 49 67 49 84 51 6E 69 69 93 +65 72 69 45 4B 4C 97 67 97 7D 6F 37 4E 76 76 7A +5B 34 3B 40 59 5E 76 7D 4A 3A 4E 30 7F 45 74 77 +6F 7E 49 62 9A 6D 6A A1 6C 71 65 7E 8A 64 71 60 +6E 69 5F 7B 68 90 88 6E 59 89 55 22 6D 3D 54 3E +59 46 31 AA 17 7F 31 60 70 6A A8 73 54 83 76 5E +7A A2 49 6A 63 B0 81 61 91 8F 37 66 40 7D 57 7E +74 40 72 5F 66 85 6E 62 18 72 88 75 B2 7B 61 81 +4A 92 3D 48 55 61 6C 63 50 6F 68 2E 93 7C 70 82 +9B 5E 52 5D 37 4B 82 65 5C 74 49 62 84 8A 7B 56 +4C 94 85 41 55 62 48 71 94 AD 5E 92 31 6C 6A 2B +6E 83 85 59 75 5B 7A 7A 50 89 70 7C 73 41 A9 22 +53 35 83 92 49 84 92 47 5C 51 83 67 70 69 45 3C +35 66 80 56 2C AB 77 51 6E 80 56 47 5B 95 53 83 +61 8A 84 56 3C 35 58 6D 37 13 6B 83 66 86 9D 51 +78 68 42 57 A7 95 56 A6 39 55 60 5D 73 7E 84 75 +4D 3A 69 80 5A 76 7E 3C 37 84 99 67 74 56 59 89 +78 4C 7E 39 86 70 5D 8A 45 7E 61 4E 4A 98 4A 8E +2B 69 59 41 7F 55 15 40 8D 92 5B 71 52 83 68 54 +81 72 87 70 72 7A 25 2D 22 B6 81 52 68 44 78 46 +87 59 75 34 47 A5 69 56 4A 97 63 BE 6C 2B 4F 60 +70 4A 72 2E 71 7B 79 57 85 54 85 45 7D 4D 4A 3D +74 84 96 63 56 84 7A 95 A5 67 4B 4F 76 48 91 5A +74 A7 7C 24 49 82 6A 56 28 6F 56 7A 84 64 28 61 +90 2E 6F 82 80 42 93 6D 75 57 79 6B 72 A5 58 8D +B6 75 46 34 4C 99 44 86 50 65 73 59 51 42 61 50 +4B 7A 94 20 5C 95 4E A5 5C 99 4 4A 6C 5B A6 74 +76 87 5A 3F 49 6D 2F 64 65 7A 49 79 5E 66 21 55 +36 8A 67 A6 30 78 3C 77 8F 30 4E 52 91 8F 4C 34 +27 61 81 43 74 5A 32 3B 8C 56 AF 37 3B 56 6A 87 +47 9F 4F 5B 37 4F 44 74 5F 40 8F 20 6F 6D 57 75 +43 77 4F 81 71 69 2D 6C A9 44 96 65 63 57 5B 96 +33 4A 85 91 75 52 42 3C 82 5E 4D 44 2F 91 4B 6B +8E 6A 80 9D 84 94 22 84 9D 75 2E 6C 2F AC 36 95 +39 6E A8 64 44 59 A9 29 67 40 67 5C A5 8E B6 A5 +4F 5C 7F A7 5B 6C 5F 63 2D 67 5A 8A 47 28 8B 96 +6E 61 6C 7C 42 7F 43 7D 77 7D 53 4B 7F 97 74 10 +87 73 6A 7D 32 7C 53 4B 56 50 73 1C 3B 35 46 47 +37 67 40 31 A9 80 6B 74 90 70 2F 4A 5E 63 25 99 +52 1F 73 45 38 70 49 60 93 58 5F 3C 5D 5B 6B 75 +49 6A 68 72 81 6A 1B 57 47 59 75 39 89 35 60 2C +93 B9 69 3C 77 8F 66 30 67 41 21 6A 89 48 59 89 +69 6B 58 5D 5C 82 65 61 9 56 4F 7F 26 86 45 AB +91 4B 69 76 42 40 67 64 5E 79 86 45 41 98 39 A0 +6F 25 6C 66 98 90 1B 2F 49 43 3B 62 41 7B 78 A5 +6A 6B 5E 5C 5F 8C 5E 50 36 8A 80 8D 46 77 8C A9 +46 43 62 8B 66 5D C 4D 4F 6E 79 54 53 1D 49 4A +44 3F 54 6F 68 5F 8B 70 5C 5D 4D 5D 68 81 4D 54 +66 5A 6E 71 7A 7B 6A 48 B1 7A 62 83 6C 54 26 42 +9D 59 6C 75 89 41 6C 8D 7A 66 25 47 19 5D 3A 52 +60 3F 26 72 53 8D 5E 55 91 61 5A 58 3B 8C 22 A2 +53 3F 5F 4F 69 61 70 6A 38 96 75 3B 49 62 5A 28 +6E 82 37 96 7C 4F 45 47 1A 5B 8D 6C 4D 35 6C 6E +44 2B 6C 55 6D 69 49 61 46 39 77 7C 63 70 5E B5 +6A 7D 81 50 56 30 88 73 6F 8C 7F 63 47 62 83 65 +54 5B 79 7D B1 7F 78 68 9C 4B 57 9A 53 55 3E 16 +45 7E 47 29 56 8B 2E A4 57 46 80 22 4E 4B 52 51 +60 95 19 61 7B 79 6D 3C 50 6E 6E A7 5C 81 44 47 +49 83 77 62 2C 5A 8D 71 57 7E 6F 72 56 56 59 4C +58 66 6C 6C A5 47 24 58 8A 3D 5F 56 21 3C 6D 25 +64 6D 7D 70 42 57 92 6C A4 9B 87 6C 30 6D 7C A1 +63 9A 7A 62 95 54 49 74 58 6E 4D 81 6C 88 76 61 +26 8A 48 8C 63 2C 27 54 56 59 5A 58 62 60 4A 41 +95 67 39 71 2F 5E 6F 92 74 4E 72 87 87 60 6E 33 +8F 80 68 46 3A 41 80 64 57 80 92 3F 3C 2F 7C 7B +4E 4E 52 57 85 49 4F 51 5B 69 32 6B 54 46 56 62 +1E 83 73 60 5B 71 57 90 91 B4 73 55 A0 89 70 50 +A1 5F 50 42 5D 73 40 43 35 AF 41 81 51 46 75 57 +71 85 82 9A 70 6B 68 63 5C 4C 62 3E 48 36 64 6D +68 21 36 6B 9C 6C 9C 58 41 2B 47 61 3B 6F 35 8C +3D 7A 55 50 6E 72 31 3F 9F 99 42 53 8A 57 6C 7C +78 65 62 9C 5B 65 6A 92 80 81 45 55 97 6C 8E B1 +8A 64 47 65 46 26 90 9F F 7D 3A 7D 8A 73 52 5A +57 6B 30 39 4A 3B A7 90 51 82 5B 67 45 44 A2 2F +41 30 9A 75 41 5F 64 A5 66 7E 75 29 79 AE 37 41 +70 7A 8F 6A 14 56 5F 71 67 62 5B 68 62 4B 45 81 +29 31 56 44 51 58 3C 85 37 63 3B 6D 74 7F 19 6F +53 A5 55 6B 42 3D 5D 73 63 5C 9C 4A 71 82 A1 67 +69 4B 7C AE 94 36 7F 4E 7A 69 41 59 4C 69 35 67 +85 5E 8E 9C 5C A4 8E 74 8A 52 8D 8F 44 16 59 46 +98 80 7E 55 8C B8 48 6A 83 23 4C 66 98 79 4F 5F +6F 9A 69 42 42 70 6D 7E 5D 7E 6A 57 6E 9A 9F 68 +2C 49 3D 6C 52 40 43 81 7F BA 32 90 65 69 4E 56 +75 40 40 5B 69 7D 47 9A 6D 5C 78 6C 61 5E 99 94 +64 62 3C B0 8A 9F 41 64 5F 5A 66 AA 68 72 6D 35 +33 7C 24 7F 86 8D 20 4B 81 5A 3D 65 69 31 83 45 +41 2F 98 1D 5B 49 4F 2B 84 81 8F 9F 4B 99 82 8A +33 1C 7E 48 5A 7C 6D 3A 83 56 84 75 79 8D AA 51 +39 47 43 50 6B 6D 86 71 86 81 4F 69 29 6C 3D 50 +6D 99 7E 77 9A 64 8E 5E 77 70 34 7B 7C 59 3B A1 +52 6A 40 75 87 2B 2C 65 48 30 5D 6E 86 39 8A 3E +8E 75 94 96 9D 79 73 92 5E 87 7A 69 5A 6E 7A 74 +83 4D 5C 7C 58 3B 68 51 80 45 76 4F 55 62 B1 7E +57 36 2D 57 55 75 60 89 17 A8 7C 51 8F 46 75 62 +7A 5F 87 5C 5E 3C 98 7A 7D 55 6E 74 59 8E 8F 4A +54 90 9E 70 6C 84 61 39 35 56 99 8F 3B 69 70 38 +7F 29 2E 84 62 82 88 67 58 99 6F 48 76 6B 6D 7A +8C 69 6F 51 72 3B 51 54 76 4B 2E 47 6B 80 67 4C +56 64 66 18 3B 86 4D 50 5A 69 45 90 55 6B 78 59 +75 8F 55 72 45 58 7C 61 80 5D 57 24 2F B5 65 69 +89 7D 78 2C 7C 5D 7A 17 46 4C 64 7D 98 4D 3B A5 +5D 9A 63 4A 71 4B 64 85 5D 57 6C 52 79 6F 78 5A +60 67 7C 8C 73 42 55 52 57 5D 45 84 8F 55 7A 83 +3B 4E 19 5C 64 53 59 80 9C 65 60 BB 67 6E 6B 69 +7E A1 1A 8C 4F 38 63 63 92 86 23 4F 2F 50 65 82 +6F 4E 8F 54 63 6C 4C 20 46 42 62 36 85 51 35 5C +5C 46 B0 35 82 8E 5C 5C 80 2E 48 74 3A 58 72 94 +28 93 55 6D 68 44 2D 17 6E 85 69 54 45 63 55 12 +7E 80 67 3A 63 4A 4D 5F 92 69 3D 47 8C 32 7C 33 +93 5C 6C 30 5B 76 75 5B 81 74 6D 3F 65 86 84 44 +7D 64 45 52 71 A8 21 5E 31 77 95 7C 49 76 7A 69 +63 5E 55 4C 4C 3C 5E 61 5B 86 84 78 4F 57 57 46 +5F 6F 65 6E 55 6C 72 57 54 63 3E 5F A1 5A 41 8A +44 4D 33 5C 7C 57 5C 6A 76 46 2E 9E 74 34 48 3F +45 81 6B 82 46 62 51 6C 71 33 B6 68 91 34 8C 65 +50 60 81 26 43 16 5D 93 76 80 72 51 76 89 50 B6 +58 84 43 34 59 2F 8B 73 5E 1D 7E 46 86 7E 60 5A +78 4B A0 84 53 99 61 3D 2B 4E 79 6E 6B 7A 5A 5A +65 6B 70 4C 6E 6C 70 21 A1 96 97 67 52 6F 67 66 +5A 73 53 74 37 AD 30 7F 5F 72 7D 2B 78 48 3C 64 +5F 44 4A 6B 9E B0 33 6A 79 75 94 6D 53 66 51 54 +9A 96 6F 71 82 72 62 6C 75 6B 68 64 5C 96 51 47 +65 92 61 4B 70 8B 6F 55 64 47 54 AC 79 85 76 2F +90 56 68 61 7D 87 98 7E 9C 63 7B 4B 56 4E 2E 61 +62 88 51 76 32 84 65 57 65 4C 53 36 6A 42 61 42 +51 95 61 3F 42 20 5B 82 68 5D 67 68 7D 8A 4F 5E +64 57 61 6D 45 70 4C 66 3C 85 6F 68 93 3A 4D 50 +A0 57 59 57 56 5D 3B 37 51 7E 3C 50 5B 7E 6F 47 +1D 35 9C 77 30 55 50 69 9D 99 5B 8D 4F 45 4F 88 +32 83 69 C1 74 69 7B 80 82 7D 75 8F 71 3F 49 3F +4E 45 39 5A 54 64 86 57 6F 60 84 47 E 55 80 76 +69 7D 7F 54 3B 79 87 79 62 73 58 B4 68 76 29 92 +61 39 52 82 50 56 24 72 61 6B 54 B0 36 70 2F 7B +47 6F 2F 4A 2D 8D 47 51 93 80 4A 36 4E 8D 5E 32 +83 8F 65 7D 4D 75 73 67 55 78 1C 9F 46 48 25 60 +33 4A 67 5C 71 66 7A 74 84 7C 89 51 35 3E 52 76 +72 28 31 3B 7A 7D 2C 4C 62 9E 2C 79 4C 8D 97 AC +37 4E 84 56 76 83 9A 4F 60 65 A3 84 5D 60 93 40 +63 7F 82 45 63 1D 40 65 78 88 80 69 62 9F 43 50 +58 2F 78 55 61 33 48 52 78 48 4A 86 51 75 3F 5A +3F 6A 3D A7 64 68 66 30 6F AC B8 74 88 72 60 81 +21 A7 52 30 69 A0 66 71 4C 4A 82 6B 56 5B 6F 7C +92 5C 53 35 9C 57 6B 91 39 7B 44 43 6E 6B 65 4F +70 64 62 68 5E 74 32 62 4C 5D 73 76 6C 60 6A 57 +71 98 7A 3E 84 90 76 49 86 49 4B 80 24 4A 44 34 +4B 3B 70 3C 98 55 33 85 AA 6A 6B 83 45 86 7C 84 +39 63 37 43 4A 85 53 46 12 2F 5A 61 5D 5B 99 41 +29 20 31 71 4A 5B 5E 7E 77 71 6E 3A 93 5B 66 51 +4B 5A 3E 54 3E 3B 3C 7F 45 82 82 15 7C 71 94 65 +61 44 93 61 59 61 78 5F 42 4D 8A 48 72 5A 76 97 +6C 1B 76 70 7D 74 6A 71 6B 87 31 2A 3E 75 5C 50 +5C 7B 8F 31 95 51 66 8E 45 80 73 9A 74 6F 5D 5E +61 7A 34 85 9A 6A 7A 4B B0 81 63 7A 50 9C 7C 40 +39 39 6E 4F 65 73 7E 59 52 64 5F 8B 78 58 39 7C +9F 83 83 45 5B 56 8D BE 96 6D 47 31 53 A2 4E 83 +7D 5E 5D 32 87 65 9A 4E 85 22 5E 80 70 73 84 55 +41 73 5B 17 7A 48 57 4D 78 9E 44 72 AF 83 85 6B +8E 8A 7C 4B 44 91 75 4D 48 50 7A 22 60 4E 37 70 +8F 8C AC 4D 9A 59 3A 45 2B 79 98 73 24 37 3D 62 +81 8E B8 5E 6B 60 2D 64 81 73 47 64 4E 5A 71 78 +57 6C 50 74 23 38 59 72 A7 68 84 64 38 40 56 58 +28 67 86 56 6C 1A 7C 3E 44 6A 82 72 52 7F 84 6D +5A 6E 82 50 4C 54 8F 5E 90 78 6A 6D A9 64 87 79 +59 72 77 76 97 68 66 23 79 55 56 72 A7 36 8A 29 +84 6D 78 50 70 3E 86 73 5E 3D 3E 28 2B 94 59 53 +81 56 6F 96 68 75 60 5A 31 35 42 85 81 77 87 67 +3C 65 3E 4C 9B 77 99 7A 47 56 8E 5A 63 67 49 83 +6B 37 4D 3D 84 6E 96 40 67 4A 7D 4D 76 72 34 76 +70 62 84 28 4B 4C 6D 8A 4A 34 52 89 3A 41 26 46 +10 78 48 A2 6D 9A 7E 47 32 44 35 3A 63 66 51 39 +84 39 5C 40 28 5E 69 89 6D 60 6D 61 4D 4D 73 62 +4B 55 47 3E 45 82 59 61 77 6E 71 85 82 53 79 3D +7A 68 68 47 80 2B 4F 2A 4B 7A 68 6B 8A 78 67 3D +58 41 6E A6 81 68 92 88 A8 80 73 3C 6E 7C 82 2D +45 A7 4E 25 6F 9A 59 66 46 56 39 3F 20 52 68 50 +11 86 62 67 A5 6B 71 6D 3F 6F 9B 4D 81 81 72 69 +75 6E 83 80 64 28 69 5A 4C 48 43 69 6D 3E 57 6D +37 54 62 60 72 7D 47 62 8D 80 8E 5C 76 9B 86 79 +49 94 75 55 70 81 76 6B 5F 8E 74 AA 70 39 43 58 +74 47 7B AC 4B 73 73 7E 90 65 7E 86 64 55 9C 64 +48 55 5C AA 6E 9A 7E 6C 52 5D 78 6E 34 A3 51 35 +3C 90 5A 70 40 48 41 60 95 90 71 72 51 62 50 87 +81 7B 51 B4 38 7E 9E 87 8C 26 79 6E 82 35 44 33 +90 76 49 6A 7A 99 77 61 52 8F 5D 62 6F 9C 31 3A +41 5C 6A 49 50 43 93 8B 5B 95 8E 70 82 89 31 3F +48 52 28 56 51 8C 79 6A 77 56 8E E 81 78 57 45 +5B 49 57 48 68 7A 5D 6D 5D 62 73 55 62 68 6D 89 +69 2C 38 5D 4B 51 7E 3B 84 79 7B 4A 31 67 6B 47 +5D 9B 5E 8F 66 2A 53 43 40 61 6A 5A 2F 75 3A 7D +5D 88 60 82 91 4A 64 40 85 45 6B 64 39 6D 6F 43 +5E AF 5A 4D 66 A2 86 4F 56 A9 42 84 48 58 4B 85 +75 63 5F 6D 7B 50 46 79 AF 8A 2B 53 79 34 78 5D +98 6B 49 5B 85 3C 5F 50 3F 8C 61 60 90 59 4B 60 +60 44 75 86 46 49 75 87 65 7B 4E 39 5B 63 47 B8 +B2 62 42 62 46 65 83 59 3E 57 4F A5 38 39 28 90 +41 81 47 8D 40 60 4C 4A 99 4E 5C 63 73 68 8C 7A +6F 2D 44 77 8F 75 6A 8B 4E 29 4A 5A 44 80 47 3B +7F 23 63 70 55 47 76 3B 5C 65 40 A0 31 71 8C 4A +46 76 5F 71 31 39 56 91 60 6C 95 4C 5F 57 44 82 +4E 63 73 84 72 75 55 52 70 58 75 54 7C 66 3C 77 +3A 4E 64 6E 34 2E 69 9E 40 48 8F 5E 55 B8 22 6E +2F 68 67 4B 72 89 71 3A 64 9F 51 49 67 41 49 67 +70 92 A0 8E 98 8A 81 5F 94 35 2C 7E 83 1D 2C 7C +55 70 2E 28 21 42 50 58 67 26 6A 89 89 8D 47 79 +57 5B 4C 61 93 7E 5F 54 42 57 75 63 29 7D 5C 58 +96 73 65 75 70 8E 91 77 4C 57 4F 80 5F 8B 77 57 +32 8A 8C 63 51 77 66 AB 48 74 75 63 55 60 58 5A +4B 6C 4D 6F 65 3D 77 68 64 68 62 4E 87 45 83 67 +6D 51 83 8B 43 70 7C 9B 6F 46 47 3C 50 5F 5A 4C +9E 88 63 86 2E 6D 7D BC 63 76 5B 90 5B 53 54 4A +49 45 75 78 80 98 6B 49 5F 83 75 43 64 81 67 8C +6B 63 70 3A 6F 11 9C 49 93 60 54 59 5A 5F 6C 42 +35 AC 49 75 5A 73 8F 5E 70 66 67 37 5F 89 5B 58 +5B 53 91 74 61 39 5E 58 3F 6D 49 69 88 46 42 32 +16 53 80 95 3F 76 71 40 53 49 82 5C 38 7A 65 82 +7D 48 6F 7F 9C 5B 8F 45 3F 25 44 2F 8C 83 2E 28 +79 5B 7F 62 87 79 9E 58 4F 5F 5B 71 54 95 5D 35 +7E 3C 8C 53 98 7F 75 70 72 96 56 6A 96 64 35 41 +3C 69 6E 6E 27 56 69 2A 81 52 8B 74 63 86 17 7F +65 5B 7A 1A 39 48 30 81 39 68 4C 44 59 77 7B 8A +70 7A 7D 77 9D 53 65 5A 66 71 33 8A 4D 71 80 4B +4C 8F 7F 48 BC 57 53 3B 5B 94 52 56 66 53 64 79 +4D 57 31 90 83 72 6D 86 6D 4D 30 55 52 27 6D 63 +60 4F 60 75 8B 75 90 B4 7F 7B 6B 51 65 47 6C 66 +A6 30 47 70 3F 6A 66 32 99 7F 86 47 35 7F 33 48 +6C 5F 7B 77 3C 3F 63 61 82 59 8A 61 79 2D 69 88 +53 56 75 5D 56 4C 7C 44 71 78 49 6D 70 99 32 8D +6D 8E 79 AF 6D 73 8E 76 3D 46 5B BB 7F 84 4E 4D +77 4C 37 56 5F 8D 4A 91 55 4D A2 88 85 6F 17 56 +70 7F 6F 43 88 B1 62 BE 43 75 9E 82 65 4A 95 62 +5A 48 59 78 76 A1 80 52 69 31 74 6C 67 6C 5B 7F +9B 43 85 48 42 8B 85 6C 74 72 98 8A 6D 63 9D 67 +47 82 4A 82 56 78 95 21 53 79 69 30 71 42 65 4F +99 21 52 8F 1B 86 4F 6A 6E 5D 6B 33 6B 66 A4 64 +3C 46 8E 59 7B 7A 30 A9 7D 18 34 8B 98 34 63 28 +34 93 7E 4B C3 37 5C 66 78 3E 50 78 7A 65 64 49 +4F 67 82 38 42 38 61 67 35 5E 44 8F 97 58 7E 6C +5C 37 2A 12 65 9B 50 5B 66 41 61 8D 78 72 63 73 +7D 5B 8C 4A 8F 7F A2 7D A7 3E 73 8D 60 58 95 58 +7B 7B 75 A5 5F 53 54 7A 72 40 5B 6E 7C 57 6E 13 +57 46 54 4D 7B 90 52 46 7A 66 6D 68 5D 96 6F 3B +83 7E 6A 94 71 43 76 40 5C 62 76 21 8B 9F 20 6A +49 AF 7B 62 66 48 76 93 61 5A 2E 3B 33 74 48 89 +86 44 59 7F 6E 26 63 6B 42 35 51 32 78 67 74 7E +7A 96 46 57 55 38 48 6B 44 92 6A 89 77 61 85 77 +8C 85 79 61 87 51 62 80 7E 4A 66 A7 39 8F 78 4A +80 54 4C 5B 65 70 53 8F 84 6D 43 2D 84 85 7F 94 +7C 26 5F 44 45 81 7A 37 50 5F 7F 55 62 25 3A 47 +82 72 84 3A 83 66 7C 43 63 50 8F 66 3D 9B 95 84 +35 71 4C 5A 5E 37 89 34 58 7B 50 5C 82 91 A7 57 +7C 31 44 76 8C 9C 3F 53 47 4E 18 73 39 92 4C A1 +5B 10 6A 7E 5E 63 30 7C 61 5F 5D 4B 38 6C 36 5E +32 69 17 95 8C B3 89 49 2D 3F 7B 3E 93 57 89 89 +7D 9A 3A A1 8E 6F 59 5A 87 7E 2D 4C 4E 83 63 98 +1D 53 6D 65 34 45 92 6E 69 7A 8A 79 AD 45 93 85 +35 4B 46 31 77 78 75 50 56 6C 85 3A 85 26 35 69 +70 9D 41 40 47 87 46 5F 4A 56 7F 57 64 51 67 33 +43 66 55 74 33 B3 49 6D AB 30 63 6A 46 50 7B 81 +A6 63 7F 4A 4D 7C 78 5D 5D 4E 38 3C 6B 51 4B 8A +5E 8F 6D 95 79 33 A2 62 88 AF 5F 36 8F 3D 33 73 +6C 73 58 59 57 4E 90 70 70 7F 49 8E 67 A0 4B 7E +56 84 9F 79 4A 5F A5 2E 94 3B 92 4C 3F 8F 63 60 +73 30 52 8D 7F 45 84 7C 4A 94 77 97 53 5A 7A 63 +59 73 1D 27 99 3C 2F 74 5B 66 59 64 76 1C 48 58 +75 67 38 46 8D 6B AB 79 5E 6D 3D 4A 7F 75 94 92 +56 7E 80 45 50 4E 68 A9 59 62 76 7F 40 3B 3B 7C +5E A3 57 41 4B 3C 89 6B 8E 2B 68 5D 4C 74 5E 6B +5F 7B 88 66 8D 79 88 92 55 87 3F 65 75 5E 6B 8F +51 51 86 72 BA 2C 34 5F 9D 93 8E 7F 5B 54 5F 77 +87 44 61 81 39 74 7A 80 8B 4C 6C 6D 7B 77 9E 82 +6F 45 A2 53 5E 39 77 81 4E 51 88 2F 99 A5 89 8C +9F 5E 73 C1 A6 72 50 65 39 80 78 54 5D 7F 84 81 +53 51 5C 7B 70 93 31 50 4A 4D 46 7B 78 89 65 6C +63 22 6F 2B 57 72 3D 87 75 75 3F 73 96 9A 5C 4D +6B 38 74 48 79 70 50 4C 7E 71 90 6E 60 A9 51 5D +62 93 87 74 A1 73 7C 37 89 81 58 4A 13 51 8D 63 +48 50 79 6D 34 2C 72 44 A5 6E 7E 6F 34 3C 65 94 +60 5C AA 80 63 2D 72 1F 5C 77 7D 71 6F 8E 20 33 +65 84 67 9B 53 97 41 3C C0 43 4D 34 74 32 19 34 +52 56 3A 31 79 73 6F 59 9B 8E 70 B2 68 66 76 7F +54 37 BF 8A 6F 9D 44 7D 5A 76 47 6D 42 7A AA 78 +4D 69 3C 51 6E 45 56 56 81 A6 4C 72 6A 33 42 33 +75 7F 76 32 51 9A 8F 6F 75 88 7A 76 83 7D 3F 41 +67 89 A4 9F 2D 62 3C 50 75 75 78 44 3E 74 56 57 +48 23 48 6D 86 72 7C 55 53 67 9A 5D 60 8C 67 54 +89 5C 7F 59 26 6F B1 49 4F 47 51 41 61 38 63 6D +57 4A 90 34 38 41 8D 33 7C 8B 8E 3E 6C 73 76 96 +48 BB 46 6B 35 60 75 56 56 5E 59 63 50 83 87 86 +59 8C 67 45 40 32 55 79 38 4A 26 4A 47 4A 15 70 +73 73 84 26 2A 7C 73 64 5A 67 8D 4E 4F 9C 4F 5C +52 5C 5E 7F 86 49 79 6D 4A 52 5B 86 44 91 6B 66 +6E 48 63 48 6C 42 2F 79 3F 9E 71 A1 36 5C 6C 5D +56 41 8A 69 69 90 71 A3 3F 30 7C 58 57 4E 68 7F +5E 62 65 7E 90 70 47 56 6A 61 4D 76 89 3C 9E 6D +A2 5D 84 3A 44 3C A1 73 54 2E 21 48 8B 36 9E 46 +66 54 4D 72 54 61 6A 5B 38 54 80 62 56 74 22 4F +84 5A 75 3E 75 3F A3 5A 40 57 80 2F 97 44 6E 7A +55 62 94 B3 5C 6A A7 6D 42 4E 63 72 1D 34 2E 5C +6F 66 97 78 86 B3 6C 44 73 46 73 AE 66 52 55 88 +47 20 30 73 3D 56 88 5A 5E 65 72 92 7B 50 A4 5C +93 6F 6E 4B 5D 3A 7A 4E 76 6D 4E 28 67 41 8A 4B +36 3B 75 8A 65 6F 3C 94 4D 4B 33 39 9D 45 99 6A +AD 50 68 7B 84 79 60 95 5C 21 62 8D 7E 47 4D 75 +6C 73 4C 78 69 75 6C 1C 82 63 58 5C 5B 67 68 75 +5D 84 43 3E 7B 8D 89 73 5A 63 7B 33 27 87 49 57 +71 61 7B 45 63 58 3B 6D 47 87 6F 23 8B 65 78 57 +95 6F 80 7B 69 84 6D 38 88 8E 37 50 60 73 84 79 +65 46 67 4C 4B 72 3F 8C 83 2D 5D 89 80 45 5A 42 +79 4D 2B 54 A4 65 2F 3F 84 7A 53 71 48 6F 67 7B +18 12 77 66 53 68 50 69 7A 7E 80 4A 5E 61 47 42 +75 46 4B 41 78 68 6C 39 77 4A 6C 3F 54 45 AF 6F +A0 29 3F 4C 96 5A 34 51 57 60 71 B3 6D 4B 74 77 +3C 33 6A 61 4E 53 76 52 6A 9A 4A 69 5C 66 46 2C +5A 7B 57 7D 43 7D 3E 8B B2 7C 6F 77 5A 68 3D 63 +6B 3A 5C 7A 41 7C 75 7E 45 5E 57 79 A1 70 69 4B +30 4C 3B 38 97 7E 24 85 90 5C 5A 90 6D 59 69 5A +86 8C 92 97 83 AC 4E 2F 60 63 9A 5D 70 5E 68 72 +A6 64 65 20 65 7A A 16 5E 72 86 67 7D 1B 2C 60 +72 3F 72 A5 56 51 9E 64 4D 29 73 97 5F 9C 89 63 +44 65 2C 34 5F 3A 63 69 58 43 38 46 75 69 AA 4B +53 24 49 5B 6C 6B 54 77 8D 4F 5B 7D 4E 7B 7A 9A +7D 76 1E 36 6D 7D 4F 42 4D 67 45 A6 68 41 AC 32 +5F 8E 6E 6E 2F 32 7C 29 6A 61 75 37 61 3F 2F 6A +25 61 20 82 7E 49 34 7D 5B 43 44 A0 4F 48 6C 5A +80 61 A0 80 6E 2C 72 72 69 7A 62 7C 65 90 43 45 +5C 47 7E 47 53 95 50 2F 5B 5A F 3E 77 5B 7D 81 +91 59 B0 28 70 1D 55 6D 5F 48 61 9D 67 31 2A 4E +53 33 78 31 15 36 98 73 27 41 59 73 40 5A 63 93 +4D 24 59 7D 51 86 5F 6A 7B 6F 3C 57 3B 3C 2B 5A +8C 96 7B 36 4C 6B 74 38 73 66 71 76 5E 55 26 5B +52 A9 42 AB 3F 86 7C 50 61 49 34 46 96 6C 32 67 +6D 55 AE 66 65 47 54 57 79 94 58 5A 96 7A 4C 58 +6D 10 59 89 7B 64 7D 9E 79 3E 47 72 56 87 4E 47 +12 5E 7C 40 79 3A 5E 3F 4E 67 8D 54 50 A3 62 63 +3E 60 A3 2A 7F 50 71 4A 6B 16 3A 63 5A 76 52 5C +7D 4D 8B 76 4F 8A 4A 5F 94 4B 5C 7D 72 7A 5C 74 +71 7B 5A A3 56 76 60 53 80 70 91 38 5E 26 40 86 +4E A2 4F 40 70 2F 5B 65 6B 31 74 2F AD 81 3E 5A +53 9C 56 40 71 69 7B 5D 6E 85 78 4E 61 89 7E 7E +88 3A A1 79 63 43 A9 85 93 50 24 5D 8E 93 35 9B +6D 72 76 56 7D 40 8D 6A 89 92 78 67 3A 36 5B 6B +69 8A 84 72 A1 3D 7C 65 47 50 6A E 56 67 84 78 +47 6D 93 7E 42 1E 9D 83 5C 7B 48 69 26 A1 77 46 +76 64 8B 2F 62 80 C0 4B 54 64 7D 82 B5 40 52 5F +44 67 7F 6C 55 62 81 73 97 31 74 1E 47 54 97 7C +53 49 7E 4A 30 9E 62 59 76 6F A3 4A 42 3C 85 45 +61 34 5E 51 2F 69 46 52 4C 42 5E 87 86 83 45 79 +83 7C A9 19 12 8D 56 75 52 33 4A 2D 93 77 9B 65 +50 2F 29 9A 52 59 85 5C 67 A4 48 61 5E 29 70 46 +53 4E 68 6E 81 49 59 49 56 9A 6C 67 67 6C 62 65 +5B 25 43 6B 39 60 56 60 6E 85 64 7F 30 4A 5C 4C +B0 68 BA 4C 72 6A 44 70 8D 48 28 79 48 7D 85 4F +5E 70 6C 6D 42 56 67 55 51 40 69 8C 74 B5 31 8A +64 8F 5F 45 1A 51 44 46 58 5E 44 A5 67 9C 61 7A +5C A3 8B 35 65 81 67 3F 53 60 5C 85 51 52 3B BF +4A 55 38 5D 58 8E 63 90 74 69 36 71 2F 23 79 3C +79 66 99 5B 98 77 A5 56 45 7B 49 3F 35 79 6A 53 +68 7B 30 82 72 6E 64 41 73 5E 6B 9F 4D 63 6D 44 +65 79 30 55 43 7B 65 5F 4B 61 70 61 61 3F 50 25 +5D 4E 29 51 54 86 52 4B 55 46 70 25 59 69 7D 5E +6E 5B 53 7C 37 91 56 75 8C 6D 71 61 8B 1B 9F 8B +5F 7B 4A 6D 4F AF 67 18 5A 72 65 53 A1 51 5C 6A +59 81 AA 7E 70 73 6B 54 2D 61 96 75 80 47 29 47 +51 4A 5C 7E 7F A8 5B 66 8D 72 4D 80 36 76 37 7A +54 58 62 5F 59 3D 98 83 5E 39 57 28 9C 48 6C 2F +6B 3A 6B 6B 61 74 58 2B 76 5C 82 78 52 57 73 12 +62 6D 9A 6D 61 6C 42 7D 30 6E 47 5A 3E 5C 5D 6F +7D 9E 82 8C 37 52 2E 52 57 9F 43 52 81 6D 7D 7C +62 3A 7D 4D 87 5A 5F 5A 6F 6C 5D 7A 70 6F 5F 46 +7E 40 4A 77 1 9C 2B 80 7C 57 49 4C 6B 6F 66 5D +39 B1 84 4F 79 4C 70 65 79 5B 38 4A 46 5D 74 89 +93 66 6A 43 59 62 34 64 50 73 35 81 79 97 25 50 +A7 65 98 F 58 7B 36 52 4B 3C 1B 5F 8A 81 B0 7B +3E 7A 4B 62 4A 67 30 5A 58 80 59 33 8C 51 12 78 +7A AE 8B 3B AC 5F 71 64 98 48 48 64 79 41 46 82 +5E 64 65 3E 66 30 92 49 80 97 79 75 81 5E 57 51 +50 60 6B 3C 1D 2E 77 4E 5E 62 66 9F 63 6D 6B 7B +72 6F 7A 38 71 69 4F 2F 2B 61 26 48 65 6B 4B 4E +6E 4E 50 74 3C 36 7A 73 97 8E 9F 7C 8C 81 7B 65 +BF 8C 94 7B 6C 81 95 31 79 66 1E 8F 85 67 63 4A +4B 60 6E 54 33 8D 7D 44 3E 4D 62 61 20 33 5E 77 +4C 75 82 5B 8A 69 4D 5A 66 3C 7F 98 83 5E 91 5B +52 4C 4F 5E 70 3A 83 7D 88 30 32 60 4B 6C 5E 23 +67 46 30 45 76 74 45 4C 68 59 47 27 65 48 69 93 +3C 50 94 57 4B 74 88 63 66 1D 6C 82 6B 3C 62 88 +66 7D 7A 86 66 80 77 57 8B 50 99 35 87 6A 26 19 +5D 88 40 8D 31 4E 4E 56 73 86 2B 71 4F 5E 49 10 +70 19 8D 3C 5B 7D 6B 7F 69 97 5F 20 32 6C 57 8B +4C 5C 3F 59 79 51 43 71 83 6E 6F 8F 7C A8 67 86 +43 3E 29 A4 68 5C 74 38 75 5E 30 48 89 27 55 74 +8B 6D 90 4B 7C 6C 5C 47 4B 90 50 5B 6F 62 39 A0 +77 79 81 40 4A 68 8B 73 4F 58 46 29 3D 48 7C 3C +77 44 5F 4B 88 76 71 39 6C 77 3F 52 5C 7A 42 22 +40 9C 4F 8B 56 35 7B 96 51 6A 2F 7C 5C 71 40 6C +84 70 80 80 79 33 49 A9 4C 45 64 3D 7B 4D 38 6A +5F 89 7F 37 7C 64 3D 76 8B 63 47 49 46 52 5B 35 +5F 62 56 8D 41 90 40 8E 5E B0 75 63 5E 57 79 69 +2A 50 60 85 5F 95 7A 9D 44 77 57 70 66 63 4E 6F +38 61 52 69 2C 64 70 55 89 86 5B 84 6C 84 5E 8F +5D 8C 3C 75 3D 2D 4B 4B 72 37 43 3B 85 6F B4 74 +7D 66 86 4C 1C 55 64 7D 4E 5B 11 33 65 52 74 84 +75 64 77 55 7A 4E 78 6F 95 73 5F 62 90 9A 50 4E +6B 6A 58 1F 48 70 62 78 73 39 5D 43 89 65 78 77 +63 90 27 88 7B 75 4D 49 8A 60 54 3C 5A 31 64 70 +56 69 67 71 4B 3A 38 41 38 93 6B 90 62 86 7B 2F +4C 5C 5D 2C 50 44 4D 31 88 64 6A 18 27 4E 23 52 +5F 91 6C 60 9A 2B 4A 34 A5 65 39 6D 81 62 70 57 +75 52 51 1E B7 68 4E 90 6D 64 5A 76 9B 6D 76 63 + F 5B 9A 88 3E 46 62 4E 41 88 6B 50 99 48 8A 36 +91 6C 77 56 41 85 1D 7D 54 71 7F 5E 52 AE 77 65 +27 31 4A 78 5E 6C 7F 3E 83 44 96 52 5A 2C 1D 6D +3D 1F 78 67 79 75 80 88 5D 32 90 8B 66 5F 92 59 +54 28 5F 77 47 68 48 6A 2A 53 67 5C 5B 4B 69 60 +74 66 77 4C 3B 88 37 5F 4E 26 51 71 63 3C 54 72 +60 80 6E 85 70 A6 5C 6E 4D 3B 7F 10 61 58 9C 4F +5E 7F 89 43 48 3F 76 AD 8A 87 5D 2F 40 6A 82 5E +75 6F 66 7A 7C 37 39 A2 8A 6C 92 74 7B 5B 56 57 +9E C 44 82 96 55 7D 74 6D 73 56 3A 69 89 28 73 +30 8C 8A 5B 52 46 4E AA 76 2E 65 3D 65 61 8A 91 +51 32 49 63 89 57 64 7F 46 6F 51 4E 7F 45 78 18 +92 85 62 F 50 95 56 61 65 7D 82 6E 53 85 4B 60 +67 82 63 4B 51 AA 46 48 80 83 45 95 49 7D 43 71 +4B 5A 74 28 97 23 6A 4C 68 69 4E 69 88 68 42 65 +AF 79 38 2F 94 91 7F 35 28 69 8B 74 42 81 C3 5D +40 64 70 78 93 7F 84 41 36 69 53 57 61 43 6C 32 +A6 6C 4E 7D 5D 46 72 4F 5A 38 6E 71 48 51 9B 57 +60 7A 3B 83 7A 4D 61 77 6F 8E 2F 46 3F 3B 3F 67 +88 5C 5B 75 58 5C 4F 7B 7D 6B 7C 4A 20 70 64 97 +7D 32 6F 72 4E 6F 5C 60 46 60 45 7D 54 58 9B 89 +4B 46 7D 58 82 8F 73 42 46 4E 3D 5D 52 69 37 79 +49 54 3D 1B 3C 52 7A 6D 89 2C 76 85 6D 37 60 8C +5E 47 14 32 78 63 57 83 81 6F 47 9D 7B 55 49 40 +5C 58 44 3E 73 45 72 64 5A 6F 3C 1A 77 61 66 4A +5B 6B 60 8C 8B 71 91 A0 4F 46 2C A9 AD 31 82 A8 +74 40 71 64 8F 74 5A 7D 5C 33 49 4B 5C 72 5D 54 +3F 3F 5B 47 46 56 73 56 85 69 43 78 A1 5D 94 6B +5E 79 7F 4A 3C 6C 68 91 77 4E 4A 69 44 4B 53 29 +A1 90 72 5A 85 33 52 9E 5C 59 57 71 63 84 42 7B +24 59 34 69 36 83 2B 68 54 26 B1 4E 42 6E 27 68 +6A 55 4B 79 75 61 61 3F 64 7B 35 71 81 A8 82 22 +34 93 59 72 54 42 70 2E 3E 5A 5D 75 84 6D 7B 4B +69 3D 2B 6F 84 65 5C 94 2D 61 61 6D 77 57 7C 94 +7D 5B 5E 6F 84 5D 47 67 62 4A 5D 7A 9B 53 75 4E +4B 66 96 65 1F 6F 99 88 53 72 5B 60 77 72 49 41 +74 AD A9 7A 63 8D 2A 90 6C 88 44 61 25 4C 7C 80 +6A 32 5B 4A 1B 2D 70 A4 84 79 6B 67 41 58 7A 45 +47 36 62 69 28 66 6D 74 6D AD 3C 83 1E 50 49 43 +7B 44 34 52 56 44 70 53 25 5F 32 30 6C 37 7C 79 +51 60 5E 33 50 5F AE 60 69 62 8F 31 9E 65 7A 49 +B4 4F 42 57 84 2F 6A 49 87 6B 32 52 55 94 78 54 +2A 4D 70 5F 4F 76 56 4C 65 77 79 9E 60 3F 8D 66 +91 76 54 3F 25 94 9B 79 69 4A 7E 66 4B 61 73 7F +5A 58 A5 7F A8 80 33 4E 68 5F 9A 82 70 78 3D 9A +60 44 68 5A 65 83 3E 7B 87 79 5F A4 42 7A 24 5E +4E 64 5D 75 4C 70 57 70 80 73 56 48 56 44 5B 38 +60 8F 5F 4A 84 7C 67 7A 63 4A 60 64 4E 55 6B 3D +6C 73 62 53 55 80 79 98 59 A0 7B 2D 73 68 4B 88 +5E 76 67 35 33 61 53 87 1A 3E 51 6D 50 72 77 47 +80 81 1E 3F 3B 61 6C 52 91 4E 4A 28 2A 77 2F 5C +81 75 96 8A 74 76 48 5A 3C 4F 94 5E 7D 92 3E 7A +A4 50 5B 7C 52 7C 4C 4D 4D 2A 43 61 4B 46 64 56 +2D 56 56 5F 87 5F 3F 47 80 6F 94 66 60 9C 66 61 +84 80 2D 6D 4F 6C 6C 54 71 8D 77 7D 83 7D 43 8A +33 7B 4E 50 46 63 1E 7A 40 6A 78 9E 3A 65 2B 67 +65 6A 84 63 5E 34 4F 69 A0 4F 69 7A 79 73 4A 7E +8E A7 60 61 5F 42 73 7C 4A 52 45 5A 72 66 42 40 +4E A 6B 55 18 79 65 7D 65 6A 39 5E 6B 62 58 A2 +5C 36 29 5C 39 99 52 6F 6C 85 79 4F 8F 5D 51 90 +89 5C 7B 86 3F 5B 6D 73 81 71 5F 4F 7E 76 39 6E +80 46 6C A4 8A 39 8D 54 7B 5F 77 5F 44 61 72 48 +5B 80 7D AC 41 46 46 75 3A 9A 85 82 37 50 7F 25 +87 8F 6D 58 66 46 33 68 5F 63 44 36 83 93 70 1F +75 52 8C 57 66 80 46 38 29 66 58 39 5D 4C 56 AD +44 43 87 84 59 11 8A 57 45 F 81 69 1B 6E 5D 38 +54 6F 6E 7C 97 5D 41 77 72 18 32 85 4A 3C 5D 34 +77 8A 16 2E 26 6C 55 49 62 5C 8E A1 74 86 47 46 +61 65 91 2F A7 86 9D 36 62 5D 8E 6F 64 A2 90 77 +3B 96 54 56 66 88 71 59 7C 3C 63 7F 53 5E 5B 79 +82 5B 6E 4C 5C 5E 9E 54 68 67 98 52 92 45 8D 6D +56 84 7E 56 8F 66 4E 6F 93 71 3F 7C 8F 86 74 3A +8E 70 78 52 64 6A 47 96 70 3D 45 70 34 48 99 54 +5E 7D 8A 77 62 93 68 55 73 4D 52 40 A4 4A 7C 74 +9C 5C 92 8A 67 3F 58 33 61 7C 5A 7B 52 24 5F A2 +1A 2E 6B 62 57 76 83 50 50 7F 41 5D 70 3E 57 4B +7E 45 5D 86 62 76 BD 72 75 56 59 6F 89 97 60 49 +38 9E 79 1A 79 64 30 8F 5D 67 5F 3E 46 92 7E 55 +9B 69 40 38 94 26 55 82 67 5D 59 5A 57 31 3B 4B +45 4C 23 64 77 7B 7B 3E 6E 6B 64 6A A6 20 76 9E +99 6E 7A 7D 69 70 63 68 2A 47 6B 65 73 7F 89 31 +5B 68 44 6B 9E 62 4D 1D 73 64 6F 57 4A 42 6B 37 +3D 3B 92 8A 6A 2C 5A 4F 66 6A 64 6E 65 63 28 97 +6C 43 6F 41 80 67 95 9F 50 78 70 6A 47 30 4D 78 +80 44 74 9C 87 7B 24 70 4F B1 97 55 4B 8B 8E 3F +13 A4 7F 38 6A 5D 1C 41 D AE 57 37 30 76 3C 9A +7D 40 50 7C 41 3D 55 93 4B 6D 9D 84 79 80 50 28 +5A 3D 7C 88 66 81 9B 81 35 3E 68 42 63 4F 6B 4E +68 5C 24 74 75 76 4F 7C 7E 74 4F 89 95 42 6A 68 +7E 6E 55 58 70 26 75 58 9B 74 3F 67 45 5F 66 7E +54 6C 83 58 58 58 36 81 5E 93 7E 92 B1 5D 68 2C +34 71 6D 6D 4A 70 88 6F 58 1C 26 76 2C 8A 69 28 +9A 63 92 4F 35 4A 5D 4F 37 5F 2B 33 6A 57 71 90 +3E 3B 67 51 6A 6C 44 5F 53 31 57 1C 3B 28 6A 44 +79 41 54 49 68 5E A9 66 8B 35 48 69 6E AC 1F 5D +55 6D 91 B6 62 42 5B 27 84 2E 6F 64 66 51 6D 5A +74 84 77 5F 51 58 67 63 87 35 5F 8C 52 80 92 6A +83 58 5A 63 67 57 7A 72 6E 7D 3F 88 3F 70 95 4D +52 32 32 85 9F 6A 7E 77 1F 4F 49 7F 69 50 68 31 +62 47 9C 73 87 6D 5D 4E 5F 77 5A 5A 53 59 6B 5E +7A 7E 4B 59 5D 35 63 68 59 80 97 9F 90 65 80 5C +5D 71 42 6D 85 A1 68 83 21 6B B5 68 8A 8F 5C 20 +47 59 37 9D 81 4D 50 6B 63 30 74 61 36 80 4F 81 +85 7F 5A 5D 80 7A 95 76 9E 5C 74 41 64 61 66 74 +4F 3E 9F 7B 88 6E 57 71 8A A6 50 87 51 35 54 9E +5A 54 62 5E 7B 35 78 90 76 39 6B 37 47 62 69 6B +71 5D 86 75 47 69 9C 4 AF 63 4B 5D 8C 69 80 65 +94 63 36 42 45 51 51 7E 39 77 81 3E 8C 5D 2F 36 +9A 84 71 68 2A 7F 54 78 7B 4D 3A 51 9F 66 4E 87 +56 8A 3F 63 51 70 75 2A 3C 5F 45 51 74 5C 4D 7E +7E 55 66 6C 66 6F 2F 66 6E 63 94 4B 5B 3C 39 51 +4D 6F 6D 49 73 4A 68 73 94 6E 3C 4B 86 5A 5A 8D +91 8B 5C 5A 75 B9 1A 5C 4B 43 91 AB 5F 74 52 3F +44 53 53 3B 47 70 4E 72 6B 9E 70 83 7E 6D 94 5D +56 88 99 C 5B 77 8C 38 8C 82 86 53 7A 48 69 61 +A2 42 17 6E 69 20 45 49 3F 83 5D 40 77 40 95 52 +94 AB 62 35 66 85 76 5A 8E 4C 40 9A 3D 78 60 57 +70 58 82 51 76 71 37 96 E 7C 58 8C 6C 82 73 47 +50 4A 8C 5A 4C 5B 78 6A 57 68 9B 4D F 54 48 73 +80 73 61 15 79 8E 89 83 32 98 53 4C 48 8B 52 6C +8D 5B 7C 32 61 85 46 57 55 8D 3C 36 69 98 2C 7E +42 69 3A 6A 7D 70 7B 9B 7E 97 78 5E 69 65 48 4D +93 50 56 7D 8F 59 93 71 A0 A2 A2 3E 56 5B 89 67 +83 7C 9E 5D 3A 85 A8 7E 5C 67 9D 59 5B 44 75 3E +8F 84 6C 6F 50 69 63 5F 49 72 54 4E 73 66 4D 49 +61 7B 69 86 3F 5D 66 67 AE 31 8E 7B 6A 5F 89 71 +3F 5D 85 21 88 53 3F 24 2B 5E 82 80 9A 24 66 4D +82 79 8C B9 5D 5C 6D A5 94 62 44 8A 68 3B 4F 83 +8E 82 8B 64 86 9A 84 43 1C 4C 5D 3D 83 44 8E 59 +7C 74 85 3E 7D 8A 4E 7C 3A 45 58 5F 5C 59 5E 4F +8E 85 31 8F 4E 66 67 74 68 5C 57 74 6B 71 3B 66 +72 65 4E 3E 3A 23 51 70 39 78 41 83 5D 6B 4F 5E +6A 83 2C 9F 93 77 8C 4D 59 58 3E 77 71 70 4D 8D +64 65 65 64 36 90 8A 8B 83 67 64 14 A0 82 46 86 +88 60 53 3C 3B 76 56 30 73 A3 63 59 91 6A 46 43 +23 A0 45 79 7B 7F 8A 67 6A 5E 7B 61 82 55 74 50 +76 32 76 81 79 82 72 62 52 7B 6D 5E 48 4E A5 8A +58 41 5C 4D 35 38 89 4E 38 70 73 35 79 48 74 35 +3C 7A 89 5D 66 29 45 50 9A 41 5F 69 9D 23 77 56 +6D 7B 52 96 61 71 41 7F 6B 4B 8D 71 9A 64 35 8C +60 78 4A 4B 56 58 51 4C 5B 8B 50 6B 68 90 55 91 +5C 4A 63 98 6F 1E 49 30 5D 62 64 6A 72 6D 4F 2A +6E 65 4A 1F 61 52 54 E 93 5B 90 4C 41 4B 7D A1 +69 59 63 5D 57 2C 6B 49 78 92 56 8C 74 8B A0 5B +3B 45 5F 75 AA 6A 9F 79 73 8B 57 81 96 6F 50 7E +58 38 61 87 6B 94 30 3E 66 43 51 2D 67 A4 71 53 +3F 6F 53 82 6E 7D 34 5F 81 87 72 50 82 3B 7B 31 +46 69 68 60 A9 62 79 8A 39 88 5C 44 85 7F 36 67 +4F 92 5B 1F 68 4F 94 3B 41 8F 89 88 6D 5D 49 56 +6D 3A 88 67 41 90 37 64 27 57 8C 36 43 A5 58 1D +AB 3D 32 63 49 54 61 73 63 60 6B 31 5F 49 38 4C +5B 5A 5C 35 68 68 83 55 8C 42 42 AD 60 4E 66 61 +18 45 32 46 51 85 7E 39 4C 53 3E 2B 54 33 6C 65 +33 63 3B 44 E 58 51 52 4E 5D 9E 26 78 61 6A 33 +6A 64 47 92 82 4B 3B 53 7C 56 32 3A A2 96 82 48 +7E 70 53 6D 7A 53 37 53 77 42 33 A6 70 57 58 9F +5F BB 7B 4B 7F A1 3D 97 5E 5D 42 52 33 3F 81 7B +54 90 48 58 2A 60 7C 94 51 87 45 7C 4A 5E 67 5A +38 73 2B 80 61 42 55 2D 91 33 68 33 13 82 6C 7A +52 1F 40 86 48 8C 93 53 4D 55 5C 58 84 84 7B 65 +67 4E 48 51 1C 49 55 61 A7 68 8F 65 2A 9C 47 4A +5A 3E 41 7A 54 7A 3D 49 1D 3E 69 63 86 92 27 3D +4F 55 51 4F 56 52 79 90 9E 5C 4A 4F A4 67 60 5F +63 75 3E 6C 50 7B 61 AA 4B 64 79 88 2B 3E 45 97 +69 59 54 74 7A 7C 8B 62 42 48 58 5C 43 5A 7 53 +48 75 66 7C 73 5B 78 61 7F 75 4B 59 5A 31 54 4B +41 47 52 7F 4D 88 8A 5D 22 69 89 5B 49 A2 4B 4F +5E 91 6E 58 8E 45 87 6E 22 35 29 59 8F 74 84 43 +60 64 80 78 91 80 89 88 60 63 AC 5B 5C 41 58 3D +60 85 99 8A 5B 6D 69 4E 5A 5C 4B 66 96 61 66 76 +5A 8D 94 9A 8C 5C AD 61 5D 90 67 6A 73 61 76 29 +3A 84 68 1D 41 76 3F 9C 40 78 5D 6A 88 38 6A 76 +89 52 69 3C A1 35 97 61 72 6F 43 76 47 6D 68 28 +A8 96 70 54 2D 60 55 31 60 30 89 5A 6B 69 44 5D +72 4D 52 8E 71 56 49 97 7C 58 90 1E 3B 6F 62 6B +7F 44 59 77 58 3E 53 3E 42 7F 6C 71 48 61 61 20 +91 61 5B 5E 9E 3F 32 67 3A 5F 63 A7 3A 9B 71 73 +46 44 61 3E 68 6B 84 2F AC 89 64 1D 79 43 5F 52 +80 64 83 6C 7C 27 3F A0 54 95 6C 5C 4D 4D 58 52 +54 75 6B 61 44 5C 60 14 50 A4 4F 7E 46 88 6A 87 +50 7E A9 4E 67 64 50 3C 3E A1 4E 80 4D 7C 17 33 +6F 4A 46 50 5C 4B 87 4E 49 BA 73 4E 45 61 50 74 +4E 7C 53 63 3E 7A 86 1F 63 66 69 58 28 89 4D 64 +47 29 57 4F 7A 87 8B 9F 5D 39 99 61 41 69 61 89 +62 6F 45 31 5A 82 8F 7B 5D A4 3A 9D 22 71 70 24 +3B 79 6F 69 74 53 44 63 2E 8D 32 7D 4C 52 5A 7F +47 5C 68 36 63 84 38 37 53 80 54 7C 43 72 62 8B +45 73 72 83 59 56 52 72 62 1F 8B 84 48 6A 61 66 +7D 7E 46 57 8E 67 5F 5F 69 83 56 6B 5A 8B 3D B2 +A1 73 61 4D 6F 8F 67 17 68 8E 34 3E 2F 65 88 8A +55 33 3C 4D 55 75 85 3C 62 67 67 7A 67 5F 54 4C +5B 40 62 60 8C 58 35 96 31 84 7E 5C 82 70 98 1F +91 4D 3E 6F 67 5B 37 A0 82 61 55 27 56 35 83 69 +78 57 3B 5B 55 90 46 5E 51 69 74 51 4F 57 6A 7D +74 52 32 7C 6C 59 49 84 76 4F 3C 48 76 78 33 29 +6D 75 53 A1 64 83 68 5C 6A 6B 2F F 5A 56 6D 68 +5C 3A 8F 24 48 68 9D 3C A2 32 2D 53 89 68 69 4F +56 6A 32 79 26 6F 59 16 8C 8A 78 2C 8D 6F 56 48 +72 68 56 39 66 86 5A 6C 5E 46 73 76 94 AA 73 45 +71 9C 75 7D 49 6D 56 69 80 2B 68 37 5A 9E 43 86 +B3 83 7D 71 4D 5B 7C 8D 7E 15 63 92 55 31 4F 5A +42 82 3E 4D 50 72 61 60 5F 3F 83 5F 70 35 70 83 +4C 5D 97 48 79 8B 59 6E 56 30 4E 45 44 4B 87 5F +4E 82 7C 9D 44 85 5E 45 3D 66 64 7E 49 51 4A 44 +57 61 57 3D 5B 36 4E 3F 4F 43 73 58 84 82 39 97 +41 7C 64 81 27 51 6B AA 5F 4A 7A 46 51 86 7F 54 +60 8B 6B 84 60 4F 67 78 56 66 68 28 5B 5A 54 6E +6A 2E 76 45 89 4D 92 55 66 74 31 6B 7C 7E 46 61 +A7 41 63 83 88 2F 3F 85 6E 5F 66 6D 2B 5D 64 5B +65 7E 7F 46 3E 4E 5F 5F 4D 61 5D 9D 6D 94 37 87 +50 7A 71 6B 33 46 4A 4B 93 85 52 5E 47 47 2E 4B +43 74 23 57 53 3E 55 6C 9B 6C 5D 5C 72 46 A3 6B +24 53 3D 56 9A 65 7A 4C 69 42 5C 39 70 5F A1 7E +49 6C 70 19 69 71 33 83 31 68 24 5A 68 4C 46 5A +A5 67 96 6B 78 5A 89 67 42 45 6B 83 30 7F 81 4B +78 4A 44 7E 4C 42 4A 2B 47 5B 93 77 26 46 3C 68 +52 9A 4C 73 83 55 61 9D 60 6C 65 73 71 59 37 70 +96 4F 54 92 47 4B 83 3E 5F 7B 41 4F 86 55 6E 6E +29 81 84 7E 4F 7C 62 75 30 4A 75 7C 8F 71 AC 47 +34 4F 60 24 70 AA 27 6D 68 79 59 9B 61 5B 59 5D +5B 67 5D 8C 53 43 8C 68 85 5C 42 76 7E 6E 25 7B +58 72 58 3E 2E 68 2C 64 7C 6F 24 50 29 59 7E 94 +6E 5B 70 60 4D 89 3E 66 A4 63 3E 7A 46 E 2F 9E +39 7D 63 70 79 A5 78 65 40 67 63 9E 75 39 5B 6E +64 3D 2E 9B 7E 65 50 A2 95 A8 52 60 3D 64 63 51 +52 67 6C AC 62 75 4A 8F 56 53 82 69 73 75 71 5A +5F 4F 6D 4F 53 79 28 9C 77 41 64 78 80 75 84 69 +40 94 51 64 7C 5B 68 79 62 55 2C 52 99 61 32 96 +59 57 69 4D 82 3D 2B 8D 62 3F 5C 3B 54 39 41 87 +64 15 44 48 58 76 68 79 87 3B 77 7C 4B 5D 4F 51 +67 85 75 41 81 55 60 86 42 74 3E 63 54 5E 21 5F +8D 4F 67 2E 6F 39 80 6E 64 70 7C 5C 4E 69 7E 6A +55 56 6B 43 6C 99 5D 51 39 67 86 57 3D 5A 38 68 +6D 4C 5C 8A A8 86 6F 23 78 64 5E 75 82 6E 71 97 +79 B0 6C 63 8B 76 91 2F 76 52 67 74 7D 79 55 7C +5F 38 73 89 B8 41 61 9D 89 91 7D 3E 47 66 88 55 +8A 73 44 1F 5D 3D 83 3C 81 9D 58 6D 57 74 34 97 +58 2E 43 54 77 66 33 3F 70 64 6B 61 8E 38 89 9C +64 43 55 7C 30 7A 5E 65 77 58 71 3C 6B 2C 88 49 +85 3B 53 76 8F 2D 51 72 66 60 7C 8B 82 79 B9 B6 +61 63 64 7D 81 75 62 8D 88 43 74 3A 35 3E 55 84 +56 61 9B 7F 7E 77 80 8D 7E 3D 72 AF 51 50 76 46 +27 92 59 6F 85 76 5D BA 72 73 2A 6A 85 3C 5F 72 +73 57 40 44 60 3C 75 50 63 6B 74 69 41 4D 55 3D +58 3C 2E 52 8A 47 27 71 5B 64 33 47 57 AB 9C 9D +72 72 53 3A 57 55 60 5F 52 51 61 66 90 70 79 69 +25 7B 56 4B 39 70 7E 63 39 60 8D 8B 3D 7F 73 46 +28 8B 69 4C 28 45 6B 47 5F 7B 54 40 72 59 93 71 +83 4F 72 55 43 9A AC 40 6D 46 41 4E 84 57 4E 90 +64 6F 56 45 33 3C 93 45 9F 4D 7E 56 5C 5A 36 47 +56 96 96 3D 92 56 53 70 85 71 AF 7D 1A 49 3D 87 +5D 5C 4D 3C 4E 58 59 5E 41 79 21 3 8B 5F 6D 4A +3A AA 3A 28 8E 70 3A 44 60 19 5B 36 7E 62 3D 62 +44 B2 72 62 46 72 94 77 92 7F 6A 5E 8D 42 29 92 +4C 4F 4F 40 36 4F 8B 78 A5 5B A5 91 7B 95 6A 5D +75 76 9D 65 81 B4 2E 98 77 8D 5C 65 42 6F 65 65 +8B 4F 3F 45 48 75 8D 56 2B 66 5B 71 80 44 82 8A +63 8B 74 7C 61 70 7D A7 68 57 75 4C 9B 6F 7F 27 +4D 76 28 90 90 5C 88 7F 54 86 90 61 79 42 81 53 +59 45 7F 66 3A 64 61 82 38 6B 69 3B 6A 34 7A 6A +5B 4D AF 6B 76 70 4E 8B 5D 3C 68 38 19 88 3E 64 +54 50 5B 98 41 9D 78 5C 93 58 43 58 6E 6E 6F 67 +62 55 66 72 4B 77 5F 59 4D 68 59 46 76 3B 52 3C +5A 90 29 7C A6 70 2E 67 70 49 5F 6D 6D 50 43 4D +66 51 74 69 71 79 34 6B 80 58 73 9A 89 83 71 84 +54 8F 5A 60 86 A1 9C 77 5F 73 43 57 9D 64 91 62 +85 49 41 7A 73 2B 75 45 3D 51 45 53 7A 4B 6C 47 +4D 56 89 42 55 AB 74 72 A4 81 57 6F 5A 92 6B B3 +7B 6C 7F 6D 8B 2E 8A 7F 65 77 69 37 49 6B 58 78 +58 65 50 6D 60 8F 2F 38 6D 44 6A 30 7C 88 47 75 +8E 73 4A 67 41 46 65 99 59 34 33 47 64 54 66 63 +54 84 39 56 55 14 81 23 6D 4C 2F 50 4D 6D 56 8D +41 82 73 5D 66 7C 3D 64 6B 4B 2A 6A 89 39 79 53 +6B 5D 40 8F 7D 4C 4B 70 34 51 88 66 51 67 63 2F +83 81 24 62 7A 65 4D AB 48 80 55 57 77 6C 75 8E +89 25 5B 5F 51 6B 6E 79 5D 6B 80 2F 9C 74 58 80 +86 28 88 61 20 71 4C 22 6A 2F 76 35 4F 99 52 5E +30 A0 5D 39 20 69 38 45 66 65 3E 6E 54 73 62 5F +18 7A 79 4D 2D 7E 45 51 7E 56 59 22 81 19 8C 95 +76 62 57 40 84 56 62 48 4D 6F 53 33 5A 51 68 51 +54 16 8B 78 60 85 4A 54 61 41 18 81 73 6C 56 49 +6A 4A 75 6C 60 A3 AE AC 53 36 55 6E 45 32 70 46 +6E 71 7C 81 72 7B 9B 43 20 A3 6D 63 18 7F 52 69 +74 42 60 AE 70 5F A1 85 A1 3B 1A A9 74 37 24 6F +5C 52 48 52 5D A0 4E 7D 26 3E 42 A6 78 62 64 2B +73 5F 77 5B 63 82 59 68 83 44 3D 65 61 3C 72 65 +94 42 6F 74 62 19 55 4E 35 3B 1D 79 5E 4C 5B 37 +6E 76 51 69 7E 3F 8C 4A 8D 83 99 64 4F 33 86 4B +6D 84 4C 41 71 42 6D 52 32 52 59 37 48 99 80 85 +64 60 6A 3C 6F 78 59 7D 71 66 81 59 43 7A 99 71 +74 6F 62 9A 89 65 80 4D B2 41 52 4B 6E 3E 67 63 +44 23 6E 88 72 37 8C 6D 51 6C 75 30 7D 45 74 9B +66 88 98 64 46 31 63 99 63 4E 6A 52 38 7F 92 5A +8D 5B 6C 8E 71 5A 55 7B 63 63 7E 49 88 60 26 8B +49 7D 5D 6C 51 74 9B B8 47 3D 56 53 5F 84 40 53 +61 1A 3D 4B 8B 8D 81 85 82 45 54 30 59 55 68 41 +77 69 7B 8D 64 6F 77 45 72 78 5F 80 6E 58 62 27 +6B 83 40 39 9B 92 7F 74 4B 46 57 37 84 4B 7D 5E +7E 47 36 2F 28 57 44 58 65 83 93 4D 86 78 54 2C +63 3F 5C 45 4A 9A 66 60 7E 2F 60 5B 58 75 A9 71 +61 76 5C 37 78 52 5B 48 95 3D 65 5E 72 3E 7F 65 +47 79 79 3D 43 34 3B 81 45 58 4E 55 7B 59 6C 76 +38 50 61 96 90 5D 49 3E 5B 50 84 36 73 1C 74 6F +6A 1E 24 75 9A A7 A0 2F 31 90 2B 18 72 27 2E 44 +57 95 87 17 76 56 69 48 92 7E 47 33 22 A0 60 65 +7C 9C 73 3C 6F 11 73 56 91 60 51 95 5D 71 3E 3C +5E 94 8F A1 78 7A 68 8E A3 5E 8A 83 79 4F 31 99 +53 4A 49 33 3C 4D 33 45 3B 2F 5C 7B 56 A4 6D 11 +57 85 2F 36 53 8C 59 33 1E 4A 73 5A 67 59 56 3C +5D 53 4E 7D 5D 7F 34 7C 38 92 6F 5F AF 4B A3 56 +3E 2E 76 48 78 9D 6F 87 75 64 38 19 7B 92 71 48 +58 45 81 73 87 6D 50 91 47 55 76 36 62 7D 1E 32 +73 7F 50 83 57 53 76 68 7C 77 59 41 83 5F 62 6A +63 5F 3A 83 47 3D 59 48 6B 3D 75 96 3C 4B 30 46 +86 52 4E 76 80 58 98 5A 74 44 70 6F 60 5A A9 38 +5E 65 43 84 6 3E 71 78 5A 30 4D 64 B8 30 84 A9 +7F 92 5F 7E 77 5C 90 A6 60 4A 2D 6D 45 80 7B 3B +6B 89 5E 2E 85 49 87 68 84 A0 7A 60 61 56 93 73 +84 7E 34 84 18 93 62 8C 60 6B 8F 78 70 31 55 90 +5E 7C 52 37 88 69 66 66 2B 56 69 55 65 6C 76 6E +37 6D 79 19 75 4A 32 3D 55 2B 66 5F 64 6B 48 4C +29 4C 44 41 6F 18 2B 7F 5A 4B 66 5B 73 BB 7C 98 +59 33 46 74 2A 54 73 70 B3 6D 3F 53 58 94 82 7D +7D 5E 35 51 3F 60 92 8D 5F B 3C 70 28 72 94 63 +6A 43 4B 84 61 58 6C 6D B0 81 5E 46 50 3E 5D 6D +36 4B 31 45 49 68 6D 95 7B 93 72 60 56 5A 71 65 +44 76 8B 4F 47 4C 69 6A 52 A6 8C 48 84 5E 89 2D +91 8A B3 33 56 2B 2B 98 3C 93 55 3C 73 28 7B 74 +57 62 86 7D 4F 87 6F 42 49 64 53 4D 6E 4B 7C 82 +38 5F 7E 84 89 4B 4E 7F 31 5F 53 36 80 7B 16 53 +A6 2E 77 34 6F 7F A0 4C 3E 3E 40 46 69 57 46 6E +36 AF 73 A8 57 55 62 70 22 8E 8D 9D 6B 7B 49 34 +60 8A 49 60 1B A0 49 81 67 55 51 4F 46 90 56 7F +31 71 8A 6C 6E 72 24 70 53 70 49 71 49 66 84 74 +5A 3D 62 5E 79 7E 56 38 84 AC 9D 50 6F 3A 58 68 +2A 32 25 75 56 50 6A 80 44 59 77 34 86 64 9B B1 +5C 59 43 33 7D 4A 73 51 5E 98 43 5B 7E 55 70 2D +79 49 61 84 8A 8B 38 80 5C 75 74 4D 65 74 64 B4 +60 75 8C 85 79 67 85 4B 39 1F 71 4F 8D 4C 9F 69 +9E 4E 18 73 30 A9 46 81 7A 29 6C 80 58 7B 82 27 +71 54 79 8A 6D 45 68 4A 31 56 53 88 31 90 B0 69 +3E 61 8D 5D 15 96 39 71 46 27 42 5A 5E 30 8E 59 +39 97 60 7F 6F 7B 1C 2B B 1D 64 A9 5A 49 6A 54 +2F 59 72 59 7A 54 40 56 4A A8 91 63 73 15 8F 6B +52 89 62 82 65 52 8F 26 4A 70 21 8C 31 6C D 62 +74 A2 49 48 6C 9A 9A 66 55 77 99 5A 8D 5D 6C 57 +48 6D 1D 8B 4A 5C 68 9A 8A 8A 51 4A 68 53 77 47 +74 2A A0 66 83 74 61 3D 54 77 3F 6B 5D 5A 60 89 +70 70 4A 3D 9F 73 5D 4D 2D 60 83 52 78 9C 72 96 +8B 81 71 59 81 64 77 63 71 3A 67 76 80 77 36 34 +A1 80 6A 83 2B 4B 45 34 7B 3D 69 88 5D 1D 7F 77 +9C 8C A7 9E 5B A0 8C 95 92 7C 5F 73 5F 30 4C 71 +9A 43 52 66 5D 57 5B 4E 8D 71 29 46 7B 6D 44 97 +81 4C 65 5B 63 6D 80 70 58 49 6F 65 53 63 A1 38 +40 6B 73 3D 52 8D 4C 9A 9F AA 69 5F 67 99 70 2C +72 70 75 6B 86 66 57 78 87 57 31 2A 5A 30 54 4C +6F 62 72 6F 77 5B 5B 56 35 8A 57 3A 63 8A 7C 74 +62 4C 69 61 8E 9B 57 89 8F 52 4E 21 5F 59 54 A4 +4B 86 40 99 6D 7C 3F 3F 54 97 84 69 7C 58 6B 7F +39 79 7B 45 9B 27 7A 7C 5E 81 8E 36 29 55 65 7D +57 65 45 95 5B 84 90 95 5A 89 43 40 6E 28 59 1D +98 61 AA 49 97 5F 36 5C 74 53 59 91 5F 54 9F 90 +35 76 4A 36 77 5B 5C 7A 4A 91 62 6F 61 52 A3 53 +9E 52 66 69 6A 79 62 81 57 7B 72 3F 4C 65 B4 A3 +88 97 2E 91 7C 6E 49 9A 78 92 66 69 6B 62 89 5C +9D 42 4B 5E 88 95 2D 73 73 7A 42 65 4E 54 8B 6E +50 57 49 5D A3 59 6D 4B 80 31 4E 67 6B 74 66 67 +5B 51 69 69 44 6C 77 7E 52 49 1E 70 76 6F 44 6F +7E 41 2A 84 46 7B 35 57 74 50 66 80 92 AB 25 80 +2D 67 23 4D 75 79 4F 37 36 7A 72 22 85 3B 49 45 +8F 17 63 6D 63 59 7A 63 40 5B 62 4A 61 BA 7B 59 +8F 67 63 76 58 65 34 37 A3 32 6F 66 44 3B 66 5A +71 8A A2 62 77 63 23 63 84 37 4A 82 80 4B 53 65 +3A 7F 47 72 66 90 2A 55 54 9F 7D B6 65 58 7F 45 +3A 4B 87 7C AA 87 78 2F 8A 50 68 93 8D 75 6D 4F +76 7A 6E 49 3C 88 6F B2 47 78 AE 7A 88 4D 45 7A +8E 10 1A 73 30 80 88 8B 87 77 5D 74 39 30 8F 3B +3F 39 41 4D 72 A3 56 6A 6D 59 79 82 4D 26 7B 87 +44 53 76 54 34 57 69 49 66 7D 5E 37 5E 63 8F 4C +7C 47 52 80 21 2B 6B 57 85 A1 66 3C 45 2F 3C 56 +57 BD 43 56 49 47 47 5D 6D 30 65 68 5C 90 70 4F +82 8E 85 3B 31 81 64 6F 5E 7D 94 51 50 80 38 5D +7F 39 84 83 99 5F 2A 47 85 57 67 66 6B 74 73 8A +59 65 74 B3 7F 6D 8C 7C 92 58 7E 50 4F 60 7A 52 +A2 76 6C A8 4A 44 1F 7F 85 66 77 A5 6E 8E 54 5D +97 32 62 99 65 68 53 3F 4B 53 5A 60 8F 40 7D 64 +98 94 8C 69 A3 7E 2A 3B 94 73 92 B2 78 61 69 48 +7E 60 31 82 78 3A 56 1E 46 23 66 70 69 3A 6D 78 +2F 71 6D 15 6D 64 49 50 62 9A 67 3E 8A 5F 5A 70 +1E 40 58 38 7C 67 32 33 62 98 6A 24 69 2E 8B 81 +7D 27 68 73 55 74 64 8D 81 61 62 31 7C 83 77 75 +A4 51 79 7B 20 24 7B 74 52 37 5E 9D 4C 7B 58 5F +49 65 86 7C 5B 7A 63 3B 2A 5B 80 67 5A 48 4C 57 +4D 28 83 48 77 50 77 43 4E 34 5A 7B 86 5C 5F 6B +4F 5D 70 5E 68 5E 58 4A 39 2C 63 40 62 6B 5B 6B +2D 6B 6D 86 55 48 92 75 35 5F 53 82 56 29 64 58 +40 74 A3 45 49 48 5C 2C 26 25 32 56 2D 6A 7F 83 +A2 30 69 93 6E 79 4E 7B 70 BB 75 4E 5D A4 45 5F +4D 66 62 9E 4F 5A 4E 84 40 82 7E 68 50 2A 5C 4F +7B 81 59 4F 62 73 4E 86 6A 36 43 30 85 89 6D 74 +7B 6A 69 97 88 69 81 24 4D 7D 69 52 52 A5 8E 74 +80 1D 26 4A 4C 72 3D 3D 39 A1 58 8C 75 8C 6B 76 +71 8A 55 75 5C 50 5B 32 9E 69 7C 61 4A 60 97 99 +57 9F B4 75 7B 1D 26 3B 41 9A 4F 5B 58 28 67 7A +44 8A 83 4E 81 4D 24 26 60 44 AF 8F 61 6F 67 27 +6F A2 81 5F 82 3A 3B 61 8F 88 1A 67 7D 64 35 84 +4E 6D 81 99 94 6A 99 26 5F 51 61 73 84 4D A4 77 +63 92 83 3B 38 58 70 6E 7A 67 63 67 5E 67 4E 6F +3D 85 5C 5A 5A 3D 9C 69 A6 6C 38 5E 8A 86 80 62 +70 59 2E AC 49 7F 81 98 3D 4A 41 99 44 1F 50 75 +38 46 18 4A 3E 2B 15 2A 75 7C 6D 26 36 7C 4B 79 +76 78 39 67 64 5B 68 78 56 35 18 2F D 1F 7F 54 +65 53 5A 3D 52 40 9A 59 60 81 1D 2A 3F 89 53 73 +3C 7F 70 79 78 6B 6A 73 5B 29 65 72 5A 73 8C 55 +82 85 6B 4B 64 77 4D 82 67 82 5C 7B 6E 7E 94 8D +6E 33 B0 3B 26 6F 6E 67 86 80 93 72 6E 44 58 7B +4C 62 82 43 1C 81 8C 5B 67 6A 41 5A 62 91 33 5B +95 92 65 8B 3B 4C B9 91 41 37 3E 64 71 4F 34 78 +94 3A 41 6F 98 67 46 7C 65 5F 27 3F 6C 34 73 74 +72 55 45 41 4F 73 82 77 68 79 48 99 7C 93 7B 72 +79 6F 35 29 94 66 8D 42 7F 4D 4D 79 78 3C 66 30 +61 17 9C 83 54 5E 4A 52 64 64 4C 69 6F 3B 56 77 +92 6D 54 99 6B 9D 79 59 8B 7B 5C 6B 77 6D 56 74 +64 B1 5A 7C 54 8B 2A 82 4D 61 1B 60 6B 36 2B 53 +91 28 4A 6E 2B 78 9F 79 6A 30 8D 8F 50 7E 9A 85 +58 78 53 71 66 67 2E 35 6D 4B 4D 6B 45 94 6A 54 +8B 53 92 85 5F 43 49 7E 60 9D 52 3E 90 36 9B 36 +77 5C 4E 9A 72 1E 97 1C 61 7F 80 8E 33 8B 30 9F +95 7F 23 84 2D 64 59 69 94 7A 8A 4D 48 51 69 57 +20 9A 37 75 7C 47 93 4E 72 78 2A 69 54 4B 65 8D +54 38 66 94 55 79 5E 6F 5A 42 6F 64 A1 74 6C 7F +7F 58 A2 4F 58 78 86 3C 3A 48 1A 79 A8 67 74 70 +65 3D 80 4A 91 98 61 45 8C 5D 3F 35 4E 4E 46 78 +6E B2 72 6D 70 7A 33 63 50 52 69 8A 3C 7B 80 69 +60 73 59 5A 3B 66 53 43 6B 66 52 64 73 58 7B 5D +4E 93 34 40 83 79 5D 78 49 3A 79 55 60 78 84 78 +2F 3C 4E A0 5F 8C 5B 82 64 61 37 6E 97 32 82 59 +73 3A 87 2A A0 2A 86 73 81 39 5A 5C 5A 62 68 39 +88 50 62 8A 45 43 80 5C 46 61 5E 64 38 4F A5 59 +65 94 38 7B 4D 87 A1 5F 5E AC 39 72 7B 88 71 58 +37 62 A2 76 3F 85 4D 61 6A 51 78 35 9E 9A 59 4F +19 74 7D 6E 7A 21 98 7C 5B 49 59 50 77 67 60 8E +3F 4D 41 70 17 1A 44 92 21 6A 66 61 66 6C 5F A3 +44 71 75 5E 6B 1E 60 86 62 6C 6B 67 87 58 A3 4F +50 6C 62 8E 29 2D 87 4F 65 8E 70 44 82 74 2B 8B +7C 63 4C 97 67 6D 6C 27 6A AB 15 5F 80 2F 7C 3B +55 98 62 47 63 90 45 70 7F 4C A6 7A 4D 60 5C 64 +64 7D A3 79 58 53 46 87 2F 69 4F 7A 72 57 5D 41 +6D 5C 8D 89 64 83 53 6F 57 4D 63 56 57 60 B8 57 +44 53 92 85 79 2A 56 89 88 96 6D 94 78 48 4B 54 +16 63 7D A1 3D 52 3D 57 5D 5F 6A 52 6B 3F 61 35 +5D 44 6C 57 6D 73 88 35 86 6F 85 64 88 62 36 55 +99 44 3E 8D 81 56 6D 73 2C 76 6E 4E 41 50 7D 5E +69 4F 5E 60 43 46 3B 40 66 56 45 27 35 72 6D BF +5D 4B 8B 68 58 7C 54 57 59 76 6C 4F 97 74 58 75 +54 35 7D 4B 7D 63 33 50 98 8D 58 68 46 7A 4B 59 +75 2A 91 A7 77 7C 92 31 9C 65 6C 68 39 83 66 5D +86 78 79 6B 93 8B 55 70 4E 5F 8D 74 66 53 64 76 +72 31 6F 81 33 82 6C 74 50 5A 7D 6C 65 60 3B 7D +63 69 5D 76 6E 3B 60 96 61 AA BB 77 3B 69 6E 63 +50 5A 86 2B 24 48 48 5F AE 52 6D 42 84 AC 78 57 +57 D 5F 32 88 1C 24 64 26 A7 21 64 73 92 34 4F +9A 44 52 50 4D 25 49 68 53 82 5F 3F 67 7E 79 8F +54 50 3A A1 57 2B A8 82 7F 7B 4F 76 68 52 38 86 +55 79 83 98 97 4A 6D B4 7B 86 7B 45 71 60 4B 38 +50 86 19 40 20 46 6B 79 7E 55 5A 7F 6B 7F 1C 60 +7C 8A 50 7E 4A 58 90 4B 34 7D 56 50 44 60 1A 68 +37 5E 96 5C 65 4C 2E 4B 36 55 69 1F 7E 68 88 4F +9E 65 7B 54 29 31 7B 3F 8E 22 62 39 6F 35 72 3D +67 6A 81 53 56 85 4C 85 8E 3A 72 91 63 65 52 68 +66 A9 43 6B 56 8A 3A 9F 75 5E 88 52 50 55 62 B6 +69 79 48 7F 7B 75 5E 55 5A 45 82 4A 67 55 81 4F +84 76 4E 4A 6C 61 1E 56 AB AF 5B 4A 8C 4E 90 4C +7F 9B 48 7B 7F 9F 4C 5B 7F 59 7E 4C 5F 1D 6C 33 +77 55 5E 31 5B 9D 7E 20 4F 6B 7D 58 5C 53 66 1A +63 83 8E 7A 98 1F 60 3C 2A 82 77 49 5D 6C 7C 6C +42 7A 95 79 27 63 7F 8D 65 7F 97 70 41 44 2E 47 +64 AD 2C 69 6A 1F 47 7A 30 4F 51 73 4E 4F 47 57 +97 9B 4C A3 6A 4E 7A 57 4D 33 71 58 48 7D 55 52 +3F 50 A1 6A 90 5A 83 71 57 8D 56 63 79 61 56 4D +65 87 6D 65 56 8E 7F 90 6A 4B 70 56 68 79 6D 5D +27 72 61 89 67 62 72 AE 3C 3F 5B 3B 60 6E 4B 84 +84 7B 82 7A 6F AE 6B 3D 44 77 6A 7D 6F A5 96 66 +63 A5 3D 4D 75 B3 7E 89 6C 47 35 2F 67 89 29 5B +44 61 74 39 43 60 4F 69 9D 50 56 36 67 5A 7A 97 +4F 71 7F 74 66 75 8A 68 4F 92 82 87 39 92 70 A6 +84 38 59 80 3D 15 44 6A 31 84 37 AD 34 59 3C 8D +52 B0 60 39 7D 75 94 8B A5 7F 7E 75 59 69 65 7E +4A 3F 44 7C 4F 39 6C 88 77 54 51 60 83 67 7F B7 +6B 90 8B 76 62 4D 79 45 55 49 65 7F 41 44 64 3F +6D 4E 5F 56 8D 5E 1E 78 46 69 53 56 5F 6B 59 7E +5A 49 78 49 51 3C 3E 27 50 64 4E 58 64 84 51 28 +81 35 5D 52 63 2B 4C 36 35 97 9B 8F 5D 6B 2A 4F +A2 39 3D 9C 94 1A 24 44 76 71 64 27 4C 5F 63 27 +6A 17 A1 71 8B 70 91 85 62 86 5D 57 56 26 7F 80 +58 74 86 6F 75 4D 7A 79 7C 89 50 1C 67 60 63 61 +44 8C 65 45 74 5D B1 72 2D 53 55 50 7A 7C 86 66 +69 53 59 48 4A 63 5C 48 63 2E 27 2D 50 7E 27 86 +31 38 4F 7A 31 85 27 72 5D 88 5B 57 96 97 47 2C +69 56 86 77 86 61 95 87 98 4F 47 2E 42 7F 5E 83 +59 98 2B 3B 4A 68 58 9C 39 33 77 5A 44 6B 52 97 +31 47 78 70 6A 39 89 6C 7A 7D 67 23 40 A3 56 5F +34 4E 31 76 34 5A 34 17 8D 81 7B 7F 4C 72 41 5C +82 5A 21 5F 4B 52 6C 66 44 5B 58 6D 65 42 47 7D +66 56 7A 64 83 43 7A 7F 65 6B 92 54 8C 51 63 42 +84 70 39 79 7A 84 67 4C 7F 3E 72 7D 7F 67 6A 71 +1F 63 A1 4C 53 3F 69 71 69 90 90 7B 5D 4B 42 5D +48 79 81 81 74 98 4B 74 3E 62 6F 56 6F 73 8D 37 +7E 9F 45 7F 50 55 72 8B 7A 7B 72 5B 4D 54 5F 68 +9B 30 6B 40 86 5B 2C 62 5B 7C 48 79 41 75 70 78 +9C 7B 90 81 97 55 82 3B 90 5C 8F 83 54 3B 2A 9B +7C 8D 2D 44 43 37 7E 52 5E 37 67 36 69 68 A1 4E +79 6E 71 7D 44 49 65 18 40 45 5B 80 A9 76 92 77 +6E 37 60 71 63 81 55 45 78 5C 47 38 52 83 60 B5 +66 77 8C 77 5E 67 62 26 3C 40 8F 6D 81 79 57 64 +99 6F 3E 26 56 69 5D 65 5D 69 67 20 2F 41 3A 30 +9A 61 44 99 48 87 23 4D 6C 44 7B 6C 39 4E 6B 2E +89 1C 65 6B 12 5E 52 6B 47 8D 65 2F 6F 2C AE 88 +5E 57 6B 31 4C 6B 25 24 66 45 85 91 4D 83 6C 98 +58 5C 43 3D 79 4C 6C 3D 7F 3F 22 88 65 A1 3C 57 +7B 49 6F 89 7D A6 46 80 9E 3C 7C 88 69 12 51 2A +6D 94 6F 88 74 53 62 52 91 6B 7A 55 3F 92 86 AD +52 5B 6C 5E 8A 54 61 A0 5B 70 62 67 6D 5E 74 4E +A3 33 43 7C 99 69 5E 3F 70 30 A1 78 54 65 66 A7 +66 53 79 76 77 AD 86 3B 3A 52 5E 47 5D 72 60 61 +64 74 57 5E 5A 29 81 28 78 53 92 39 85 4F 79 51 +BB 63 54 82 56 7A 96 52 5D 60 47 92 61 4D 7B 8A +91 4A 78 77 AC 2E 78 6C 53 38 82 3E 6C 73 36 83 +8B 3A 57 79 5D 73 55 4B 54 4B 46 80 57 5A 5B 7B +56 93 94 7B 6A 93 2F 7E 3C 6E 77 37 67 5D 59 3E +29 46 54 7F 3D 7A 42 6D 6B 46 7D 54 6A 4F 63 70 +82 95 3E 77 78 3B A0 3C 6C 51 57 6B 5A 92 3D 78 +74 91 6D 97 4E 68 F 5F 90 2A 27 91 52 92 68 8B +AA 68 25 69 3A 2F 55 68 59 27 60 86 49 53 50 5D +42 6B 41 6F 81 40 71 68 2A 20 85 8A 6C 6A 5F 58 +5A 39 4D 54 95 75 45 63 88 66 BD 77 67 64 95 2B +6A 56 48 6E 98 8D 3D 85 75 82 72 85 60 37 56 9A +29 83 56 74 66 5B 3B 4E 29 55 43 94 38 7C 78 46 +96 4B 61 B5 4B 3D 70 5D 39 81 85 5C 5D 57 37 70 +77 67 5B 2D 66 82 74 43 6F 98 82 3F 56 89 1D 34 +34 83 2C 54 43 76 4B 31 7D 68 72 4E 69 6B 54 57 +40 46 5F 82 6A B8 7F 92 70 98 6C 60 40 38 6D 43 +6D 67 4F 3D 15 55 62 57 5C 5A 60 8E 77 55 3F 3B +66 6E 4C 7E A0 61 80 50 4F 4E 72 A8 8A 90 46 5E +5D 70 6E 4F 4D 63 5F 6A 60 4B 37 5E 88 74 55 1D +76 75 6F B2 51 6A 57 4D 79 80 5F 30 6E 67 46 1B +3D 35 77 52 4A 39 79 4F 7D 41 56 55 60 4B 20 80 +59 8D 92 81 5A 6B 88 86 4F 5D 27 50 47 66 3F 70 +B7 65 56 6A 90 7A 68 3B 57 9B 3A 5B 6F 6C 42 A5 +42 82 51 5B 97 13 A3 3B 14 A2 3E 7E 53 5F 6C 72 +A7 99 43 63 37 88 55 74 9A 73 A3 96 1E 5F 78 8B +2C 6C 51 31 43 63 6C 5E 8C 43 83 9D 39 7E 74 52 +7D 6E 74 70 86 5C 5D 56 55 89 9C 8E 6D 82 6F 71 +4A B9 60 74 9E 70 4C 4D 33 58 7E 32 49 5B 7A 62 +7F 65 90 54 5E 7C 84 65 26 62 73 6F 71 8B 5C D +B1 46 86 3A 68 86 78 77 76 33 92 87 5F 91 46 78 +8C 69 82 6F 59 47 40 88 7F 38 20 5C 75 94 62 7F +3F 69 6C 38 76 49 75 90 39 49 57 4E 86 5B 39 7A +4A 6B 82 74 53 39 2E 42 9D 33 89 6B 5B 5E 74 2B +9C 3B 46 64 53 83 4C 3B 7B 5D 86 50 75 4E 7D 62 +69 48 46 41 80 67 52 5B 56 6E 8E 6D 50 52 6E 7C +60 84 52 4A 83 88 59 84 3A 4A 71 9C 89 96 72 73 +47 69 AE 30 5B 97 66 54 85 33 3E 36 74 35 91 3E +6F 39 57 45 36 62 99 6E 54 6C 58 68 3D 52 A1 70 +6C 59 A6 68 43 58 A2 72 70 89 45 8A 51 69 92 54 +50 2A 47 83 61 4F AD 4F 81 48 91 4D 76 77 7C 7B +38 51 48 3C 78 61 59 94 E 2C 77 55 43 98 99 3E +3D 7A 74 17 64 40 4A 85 75 65 43 8E 48 72 75 44 +A4 55 67 8D 78 48 12 67 6D 20 43 83 4E 4C 8B 8B +87 5B 41 7C 36 44 7F 4E 23 9E 80 68 72 83 68 61 +8C 72 8A 35 95 54 6B 53 8E 7F 31 5A 63 57 68 4F +2F 5A 51 76 56 68 52 64 79 5E 76 49 39 30 7A 83 +8E 54 47 7B 6A 3F 92 3C 65 6F 5B 84 31 8A 4A 62 +35 8F 3C 59 4E 65 48 6A 53 A7 3C 25 78 54 74 7B +92 95 87 77 7 49 72 4C 5F AF 49 5C 83 2A 44 1F +2A 55 9B 65 8A 6A 5D 4E 5F 61 88 8A 40 97 52 3D +72 47 66 5D 7E 54 2B 6F 5E 79 74 2A 63 5D 68 32 +97 BA 6A 67 61 91 45 2D 3D 7F 26 6A 4C 30 78 3E +6E 5F 81 81 57 91 85 36 6C 64 65 2F 83 5F 7F 7A +2A 6A 70 55 81 6D 7D A5 BB 63 58 51 85 95 74 41 +3B 7F 51 3A 74 5A 6B 73 77 8C 84 68 41 2A 59 29 +4B AE 39 45 64 78 60 6E 86 78 66 25 82 7B 6B 63 +57 61 51 19 95 6B 61 74 59 4D 3A 74 66 50 91 92 +87 37 2A 7F 6F 53 85 AC 5B 8E 71 7B 64 3B 65 55 +88 54 70 4D 7A 6D 7A 81 8C 6D 5D 4F 61 41 7B 78 +6E 3B 85 65 5F 8E 58 57 5A 8C 64 33 82 91 75 54 +56 41 58 81 55 4C 4F 69 2A 67 88 97 40 A4 4A 4B +7F 73 6A 2C 40 59 2C 83 51 15 5B 99 7B 6D 4E 68 +89 5C 81 90 A2 3E 96 66 A1 32 7A 80 48 A3 35 32 +55 7A 36 3F 63 5B A7 4D 96 D A1 53 84 79 37 5C +6F 44 7C 9F 88 5E 4E 55 93 50 67 39 A2 84 99 4C +8E 6F 6A 7F 7F 64 7A 6E 7F 62 59 A 63 7B 66 5C +67 88 8A 39 29 75 41 41 6B 78 6D 44 64 7D 2C 49 +5F 66 71 A6 93 35 30 6C 6C 71 5E 4D 56 64 63 49 +56 89 8E A7 58 6B 61 3C 5F 46 76 14 4B B1 8A 55 +6D 6C 49 75 49 78 69 89 5B 65 3A 5D 5A 3B 35 46 +4A 39 44 44 5C A2 36 4A 6B 4E 72 75 61 7D 79 6A +65 94 68 59 7D 6C 74 8C 87 60 81 96 88 6D 5E 54 +82 69 41 27 2B 1C 79 97 88 2E 8A 41 74 78 69 60 +6E 55 74 5B 52 6D 4B 61 84 5F 34 96 82 74 67 33 +22 60 7D 70 4A B1 44 72 90 52 4C 3E 31 6A 74 79 +5A 3E 7E 8B 60 97 54 63 85 3F A0 57 78 58 40 57 +91 6B E 27 9A AD 5C 4E 4D 43 86 8D 3A 4E 79 6C +52 4A 66 7A 60 37 5B 79 79 6D 3C 5F 7E 51 42 87 +82 74 67 61 A6 C0 38 75 4A 6D 40 23 76 8B 63 3A +74 47 37 70 37 3D 37 45 93 6B 2F 4D 62 56 5F 91 +52 62 4F 6F 22 6A 52 7C 26 63 53 88 83 2A 7C 7B +60 12 AC 62 68 60 65 58 45 67 32 65 39 70 6E 52 +5E 8D 99 60 63 40 72 A8 81 3B 54 46 78 56 46 63 +64 61 97 7A 3F 38 50 83 59 80 94 73 7A 95 4F 42 +60 5E 4D 7C 73 8B 66 5F 48 74 81 AF 2F 7B 3D 3C +68 B0 3B 61 5C 2D 9F 5F 71 90 55 5D 46 88 95 94 +81 75 30 7A 2C 74 36 6A 26 5E 84 5F 85 62 52 5F +8C 41 A3 4D 73 52 6F 57 4F 47 26 B1 54 43 59 25 +63 90 86 75 5B 5C 45 4B 83 5D 4A 4A 53 29 4F 49 +64 42 7C 67 83 7D 56 53 65 3B A7 96 6D 4F 43 A0 +55 A0 8D 79 5C 2F 32 4D 55 6C A6 7A 7A 4F 78 60 +6D 80 7E 8E 6D 13 7B 47 71 7B 91 2F 7F 95 96 51 +45 58 9B 59 6A 52 6D 4E 32 76 4A 84 43 A4 77 74 +6C 57 F 66 84 69 8B 76 6D 84 A4 48 57 4D 60 86 +67 39 46 67 7C 98 7E 6F 77 6B 35 6B 6E 56 74 31 +86 72 39 3D 6E 47 6F 6A 76 84 4C 4B 83 4E 91 1B +53 7A 69 59 76 6D 65 36 4F 6B 2D 41 43 44 6A 8E +7E 45 64 41 36 49 9D 51 9E 59 8B 41 74 52 39 68 +1F 6F 82 67 80 64 69 8E 8F 33 46 61 37 4B 5D 60 +65 95 84 91 46 33 56 52 45 7B 47 62 6A 8D 55 52 +98 52 8C 39 7D 71 5C 43 35 75 7D 87 7A 67 59 89 +61 4C 47 53 4B A9 1F 23 58 5E 44 A2 44 48 45 89 + A 37 4B 84 8C 6E 4C 72 75 6A 6D 68 71 64 6D 52 +45 8E A5 1A 6E 43 4D 70 52 50 7E 43 73 43 2E 29 +63 4F 40 40 4B 59 72 7C 8F 75 3E 8E 66 5B 5A 5F +7A 9D 8C 7A 8C 6B 52 45 86 71 50 44 7A 40 68 7F +72 6A 94 46 7A 24 67 A4 3C 83 6C 6A 8A 29 3A 39 +5A 51 7F 8C 90 67 7B 58 81 39 61 2A 81 25 5E 53 +27 56 71 A7 79 50 67 51 55 2F 78 7A 8D 8D 4E 4D +4B 58 4B A9 52 5D 17 53 7C 61 57 6F 65 57 62 56 +79 77 52 39 7E 4C 7C 5C 46 6F 69 37 7E 65 41 50 +7D 3F 62 94 69 71 59 67 67 59 83 3D 8C 5F 58 6A +60 92 33 1E 78 65 6F 8C 68 20 57 41 7B 80 47 62 +70 6D 81 9B 99 A7 A1 4C 44 7C 84 5A 51 15 A3 81 +8B 6A AA 26 88 58 5E 6D 6E 86 24 83 95 7A 8F 4B +4D 2F 8C 7F 5B 46 90 7E 33 4D 5B 7D 5E 8C 4C 74 +37 35 99 81 57 31 5E 85 19 95 82 59 74 71 86 37 +56 64 7D 5B 32 53 3C 74 4E 56 85 7E 8B 95 60 9B +33 4F AA 77 76 3A 59 50 49 52 B0 48 61 4E 92 76 +52 81 AF 6C 7C 6A 37 14 81 79 22 9D 39 5E 52 60 +6D 5D 6D 85 5B 2C 56 1D 33 4C 6E 4C 29 3B 53 58 +AA 6C 4D 6E 75 9C 3F 6A 77 49 2A 40 75 7E 69 46 +BA 6C 5C 47 28 7A 77 4C 68 86 65 BF 4E 44 5A 5E +82 63 6D 48 57 6C 94 6C 3C 5F 7F 39 81 85 B2 70 +42 6C 7B 6B 3E 7E 57 96 8E 64 57 5E B8 77 78 5B +28 7F D 93 5E 79 4B 63 25 94 6C 7F 58 65 20 50 +42 64 88 6F 63 A6 59 47 74 92 72 48 55 40 77 52 +7E 52 83 8D 6F 5F 6A 72 51 25 78 60 46 63 52 78 +5E 89 82 7C C1 79 79 73 5B 87 73 3F A7 25 1D 47 +3E 56 54 80 67 6C 72 4A 3A 74 60 7B 66 46 33 63 +76 4D 71 56 47 95 6E 7D 80 4D 2F 3D 72 3E 62 41 +78 7E 74 37 9C 1F 7B 2C 8A 5F 59 7D B 7D 5D 52 +6B 9E 94 72 7A 2B 77 7E 27 5F 47 59 70 17 31 59 +7E 45 41 47 22 95 76 48 74 28 39 6E 45 92 91 35 +5A 41 7B 61 60 65 16 96 6F 7C 3E 4E 8E A1 4B AA +4C 7A 2F 58 63 45 7C 46 49 66 89 84 45 5A 86 5A +58 72 9C 34 5F 72 7F 5A 88 32 63 4B 62 5A 76 2C +5A 6F 6C 61 64 7F 5E 6E 51 4B 67 59 A9 5C 60 6A +5F C 54 53 4A 7F 44 8D 84 72 80 41 8F 5D 5A 6A +64 63 7F 5A 9F 76 8F 48 83 76 3D 49 69 74 9C 64 +79 5A 7A 4B 3D 80 74 44 42 33 6F 16 A9 7E 36 5A +7F 5D 6E 4D 46 66 5B 98 74 82 87 63 5F 3F 63 46 +5A 69 53 36 76 75 46 8F 4E A7 7F 82 6C 44 9E 7B +5B 6D 74 32 43 5C 75 3C 50 7A 32 65 26 5B 5E 60 +73 1A 37 94 69 3B 3D 66 66 29 49 6F 42 67 57 91 +88 67 8E 5D 30 3C 4D 53 4D 5C 51 66 65 76 44 8A +75 7F 31 41 75 33 57 70 70 7A 74 5F 69 60 4B 69 +40 61 48 42 7D 4E 50 55 58 62 74 68 67 7E 84 4F +53 21 5A 33 43 8D 50 46 4F 4B 78 6D 93 41 6C 31 +63 68 49 57 7D 8D 5D 39 8C 6F 8F 4F 51 2C 74 83 +3D 35 88 6E 41 72 31 1B 9B 70 86 9E 69 3C 85 4A +49 94 28 A8 76 32 3B 3B 69 60 67 60 46 6D 42 3D +86 9F 1D AF 83 4D 41 3B 87 37 4F 84 76 8B 3A 97 +7B 5D 69 67 46 74 AC 62 88 5C 61 79 3E 49 86 AE +4B 5A 63 76 8A 4D 8F 73 50 2E 67 64 55 28 70 6A +73 71 6F 4D 80 2D 38 6E 6E 68 85 93 45 57 61 30 +8F 86 7D 9A 76 92 3F 35 71 70 23 56 8A 7E 2F 74 +63 4A 61 75 2D 50 50 87 4A 41 65 82 8C 67 39 59 +7E 7E 63 53 5D 6C 10 53 15 43 4F 26 81 58 5E 85 +49 9E 33 5C 3F 49 40 57 31 68 75 4E 7E 6F 26 72 +4A 62 79 69 6C 67 57 57 95 74 67 63 7E 64 42 54 +60 63 92 37 5E 7E 82 28 58 71 6D 8B 28 6C 56 74 +61 77 58 5F 90 7A 5F 51 46 80 66 6B 71 87 57 8F +6E 43 50 9C 5E 37 4C 51 99 51 92 51 20 3F 77 88 +59 4F 47 45 58 6C 6F 5F 40 44 42 5D 7B 9D 5C 5C +67 5B D 37 6F 85 3A 8A 88 64 37 4C 49 50 4D A8 +A5 87 69 90 2A 5D 96 43 2D 9C A9 47 3E 88 50 5F +4A 67 4E 5E 63 76 A3 63 41 61 52 B8 62 57 59 37 +77 56 41 4A 71 6B 8E 5B 7E 82 9F 74 7D 4A BC 44 +6E 70 34 55 7A 34 73 7F 33 55 A5 6C 79 3F 68 71 +37 5C B8 6B 51 2B 34 66 1A 8F 63 6D 4F 6F 6F 86 +67 42 98 5B 84 80 63 5D 89 6D 72 97 6E 5E 87 5A +50 64 8C 7B 3B 36 2A 80 8F 5A 36 52 72 6A 6A 8B +5A 63 52 70 18 5F 84 8B 58 67 76 52 7E 60 97 7C +54 79 7C 73 7A 52 4D 85 1B 37 6F 78 98 3D 3C 5A +42 5A 4E 4D 42 4E 4B 5C 3A 56 41 5B 22 2A 80 68 +52 6F 3B 51 93 36 60 58 8B 9D 43 43 5F 85 3E 6D +7B 37 6D 7D 66 50 3E 2E 51 63 98 A8 86 3F 85 67 +45 30 93 68 8A 86 A1 6E 7A 72 81 6A 23 7A 51 60 +6F 8A 7E 99 83 15 4C 85 65 79 58 66 50 61 91 8D +5B 43 7B 9C 44 3D 68 6C 22 52 61 57 70 8D 8B 48 +6C 57 89 43 9D A8 21 3D 63 9A AD 3C 52 27 29 6E +9F 6B 84 60 5A 5D 5C 6F 8F A4 AF 44 71 43 57 9D +6F 49 75 64 80 65 77 50 41 48 56 69 8A 7C 58 54 +8B 56 45 6C 55 54 72 8F 45 A7 82 74 80 33 85 48 +69 45 76 21 57 84 87 79 80 95 61 A6 96 7E 5E 48 +45 49 60 68 62 8F 9C 5C B6 77 7E 7E 8F 71 77 9D +92 19 5B 48 79 6F 7B 22 7A 62 2A 5C 42 56 22 70 +41 5B 5B 3B 7A 71 8C 62 6D 34 4B 70 44 3D 31 71 +66 86 64 95 4E 80 58 57 7C 39 7A 5D 81 38 B2 48 +23 49 45 55 54 77 60 60 B1 77 71 3A 57 7F 4C 79 +6C 5F 53 71 59 7E 26 58 6F 7A 3B 83 22 69 27 63 +22 84 91 75 57 5E A2 65 4E 68 61 52 54 5E 23 5E +27 48 89 70 4E 5C 7B 78 40 69 55 75 8F 7D 80 4C +91 63 50 39 53 37 4F 66 72 44 73 AD 46 57 4C 79 +6E 79 8C 81 82 3F 7D 6A 6A 30 53 56 29 89 3D 89 +75 9A 46 6C 51 6C 71 92 37 41 91 31 93 41 96 93 +6E 62 4E 3D 3D 56 69 44 55 5B 5A AE 6D 72 56 43 +89 78 51 6E 39 95 5E 5D 65 3C 54 40 63 2C 4D 71 +49 42 8D 7D 57 47 79 75 35 6A 58 57 5B 47 53 5E +72 6A 3D AE 98 13 93 55 A7 3A 81 82 5C 5E 7B 7D +55 2D 70 3F 90 82 93 6C 49 50 A4 6F 26 46 6B 3B +58 3E 7F 80 72 1B 63 8C 6E 12 47 40 3C 68 63 9A +94 54 8A 5D 5E 93 4E 74 9F 5C 4D 59 61 66 53 25 +8F 6F 5B 24 50 71 73 52 57 35 64 77 69 47 1F 76 +61 51 56 37 45 A8 74 80 5D 2D 90 85 3A 2A 72 94 +90 5A 6B 74 55 5A 7D 67 71 3B 1E 30 8D AA 35 58 +51 74 3A 71 3A 4B 4E 8B 7E 80 6F 5A 7A 5C 80 6D +65 71 4C 61 4A 76 A 49 63 59 47 71 25 18 68 82 +76 34 6D 5E 38 70 46 73 1D 49 69 72 73 3E 36 89 +59 11 28 5B 6F 7E 41 79 5C 37 89 34 47 57 82 4D +52 3F 7E 84 3C 38 A1 27 88 62 44 6D 84 6C 95 6F +5F 30 6D 75 85 B9 5D 3E 21 27 81 8E 7D 3F 27 63 +5D 24 6A 4A 79 6C 65 3D 49 43 40 9C AF 62 73 32 +6C 7A 8F 68 3F 4C 24 6E 34 47 60 A6 4E 3F 72 93 +6B 74 57 9D 59 6B AB 62 49 69 24 6A 94 8B 48 60 +95 91 7C 6E 5F 4A 44 48 52 47 64 46 59 3B 6A 46 +2E 58 48 2B 4C 84 30 53 92 72 61 41 4F 34 66 7B +2C 39 5F 62 58 6B 67 9F 50 87 2A 6A 58 21 F 7B +40 30 53 59 A5 79 5D 46 5E 70 80 74 B0 68 5A 73 +6B 58 A1 4B 63 7A 5A 6C 45 51 25 33 4E 71 95 81 +39 47 30 5E 4E 7C 4D 60 68 6E 5A 5B A0 45 5B 5D +6D 46 67 71 39 A7 6C 1A 49 58 44 7F 28 78 7B 6D +5E 4 72 93 4 7B 35 5E 2C 3D 27 61 7C 88 42 73 +49 8A 7A 83 B2 4C 3F 41 71 42 5C 69 7F 4A AA 53 +B6 54 59 7D 7D 67 8D 81 82 4C 7A 79 78 5E 9C 48 +76 80 3E 59 50 62 38 7B 3E 80 79 4D 3E 4A 64 6F +4F 3F 58 6F 19 5F 4B 69 47 87 74 59 6E 48 63 61 +60 64 93 35 6F 51 8C 48 70 18 3C 88 54 33 8D 3F +62 65 8C 34 90 55 73 48 70 76 6E 9F 5A 8A 5D 7F +6E 86 61 65 94 42 60 90 67 45 7A 56 5F 8F 6E 9E +57 5F 59 46 67 57 5A 58 7E 54 6E 60 55 6A 82 4D +5F 78 4F 76 7B 84 4D 6B A3 4E 3A 8E 32 70 6C 55 +84 4A 76 64 40 62 A5 53 3D 61 4F 58 50 45 5A 39 +85 3D 2F 57 32 51 71 4F 83 69 53 81 90 1D 3F 5A +6E A0 79 70 56 90 4D 66 79 89 46 67 5A 72 59 56 +82 62 60 77 95 32 7D 6F 5F 5B 51 3D 5F 56 35 6A +7F 93 2D 7F 5F 70 6C 50 69 5A 5A 79 6F 7F 53 35 +82 99 87 4A 77 33 40 7A 50 4C 37 67 35 55 50 34 +6B A1 6E 47 25 86 83 6D 5E 8A 65 7D 84 3F 7B 79 +74 6F 58 65 33 24 58 71 45 53 7F 55 55 A0 67 61 +A2 3A 4C 7C 79 56 80 73 99 46 83 A9 6A 6E 41 3C +59 52 6C 68 56 64 84 32 75 3E 6B B0 51 9C 98 5A +77 3E 75 8B 54 68 3D 5F 3D 69 22 7E 87 34 6E 3B +69 5B A9 6C 84 82 5C 71 7D 39 2E 62 50 51 89 51 +64 46 4F 8F A2 3D 1A 3B 64 92 3D 71 40 26 69 5B +9C 4F 75 93 49 7A 4D 52 6A 57 8E 3F 6D 89 4C 6B +36 7D 40 6D 4C 3B 49 5E 47 76 5E 55 69 3F 49 8E +65 3D 5E 79 56 83 5E AB 47 75 6C 7A 8C 73 50 15 +4B 91 5C 74 66 61 9A 6C 47 39 48 41 64 4F 51 54 +60 5D 43 76 A0 50 4D BA 45 7F 4B 5E 56 3D 41 71 +53 39 7F 8B 4F 4F 6C 3B A8 35 96 26 A5 60 47 64 +1F 5F 8E 7D 28 9D 61 54 75 59 36 A1 5B 72 51 5A +71 2C 31 71 3F 8F 7F 42 67 89 37 7A 65 5E 57 63 +75 A3 6C 96 5A 69 92 27 37 5A 57 5A 5F 2B 4D 78 +8C 81 66 A4 3C 61 52 76 86 3C 3D 48 60 7A B6 68 +2D 8D 6A 78 7B 64 84 46 3B 49 78 7D 59 5D 71 4B +63 49 6E 43 4E 5C 3D 65 23 4E A5 A0 89 4A 81 3D +4E 69 5F 29 50 92 19 59 5F 82 6F 62 59 1F 7D 81 +1A 6F 50 4B 78 4A 78 84 9B 70 74 62 7A 8D 6D 6A +49 9F 5D 46 38 3A 3B 7C 5D 7A 69 53 65 58 7A 97 +1E 70 3A 3E 44 9D 9A 86 7A 85 42 1E 6A 15 95 81 +50 37 91 78 4C 60 44 5E 78 49 4E 63 22 79 36 6F +64 97 69 84 50 95 19 9F 7C 37 2D 8D 46 2A 51 9E +25 6F 7F 83 5D 55 A5 66 63 66 57 4A 65 53 6E 7D +6B 31 4D 61 59 83 85 74 79 8F 81 5A 53 9F 72 1C +6F 89 6A 39 70 58 53 92 74 62 5E 25 83 A8 33 32 +12 65 59 66 84 6F 3F 3C 57 69 2F 5A 35 3F 5B 35 +88 90 89 90 97 59 6B 30 62 83 3B 46 6D 44 90 35 +4C 50 A7 B2 65 63 57 67 55 32 89 83 68 59 63 65 +76 83 49 87 40 63 52 42 61 54 48 7C 67 92 52 8D +38 66 6B 3D 45 8C 70 56 90 80 6C 4 76 60 61 6E +54 86 73 98 83 7F A2 5B 4E 6C 66 2A 67 43 98 4A +57 98 8D 94 78 64 94 61 55 58 7F 85 4F 7E 4C 70 +8E 87 64 23 71 89 87 59 2B 82 43 2E 49 73 B1 66 +51 42 82 79 90 36 42 62 53 5C AE 45 9E 6F 50 51 +50 46 46 7D 36 84 88 5A 7D 13 61 7F 73 3F 51 36 +69 4A 91 80 76 52 56 51 64 63 59 82 4B 80 60 56 +4F 34 32 63 5E 83 59 40 93 65 49 94 4E 67 5A 69 +7D 35 7C 69 4C 6B 47 77 72 85 48 72 2C A5 87 8F +4C 89 31 89 53 4E 41 65 80 7D 71 9A 83 A1 3E 5D +57 4B 56 68 70 4C 6B 75 7B 26 40 46 3D 55 51 6C +6F 47 6D 7B 91 42 6F 59 99 3F 44 A2 74 4A 2B 4F +9F 65 42 84 63 5E 6D 6B 68 66 7E 67 9E 86 57 65 +41 34 63 6D 73 67 6C 4C 3C 5A 8A 57 74 4D 65 3D +4F 55 6C 75 95 1D 66 57 83 55 7F 4C 9B 5A 9B 46 +60 1E 5C 70 34 70 7E 80 87 5F 4B 49 39 10 65 9A +4D 64 48 56 63 72 9A 68 73 47 AF 72 BE 80 5D A3 +9F 68 21 8F 83 A4 7C 50 53 4C 5C 4D 6B 92 83 50 +A6 7F 6E 8D 58 54 61 7B 96 A3 41 8D 9E 58 53 80 +B1 9B 3F 34 7B 97 5D 63 51 5F 3F 81 4D 65 71 84 +60 76 8F 5F 43 84 5A 9F 7A 5C 2B 51 8E 5C 6D 6D +6D 7A AB 44 34 57 67 D 7A 75 83 82 54 7A 38 83 +7A 4A 4A 21 4F 5B 5B 81 52 83 7D A0 69 7F 35 2E +6E 4F 6B 83 47 67 60 53 5A 62 4F 4D 58 86 56 7E +45 72 81 63 5B 4B 25 59 3F 82 7F 8E 72 1D 29 60 +5D 5C 54 93 62 1F 77 87 31 73 58 6B 82 4A 48 8B +43 5E A3 96 5B 76 44 5F 5E 67 8F 78 3A 39 63 A5 +27 50 74 5C 68 54 32 5D 5E 4C 6B 38 20 3E 4A 86 +40 43 74 44 95 49 7B 6B 32 9F 99 79 76 8A 8A 65 +45 7B 53 6B 44 48 41 3B AD 23 43 3D 49 59 8A 53 +4E 8B 6A 5D 85 25 3C 2E 8C 28 67 62 5C 4E 61 99 +6C 6C 68 49 3E 3A 65 34 47 B5 66 65 63 5B 87 64 +63 58 8C 50 46 4A 63 9A 67 3A 3E 54 6B 40 53 1F +1F 75 5F 8E 72 54 71 82 2D 67 8A 40 1E 8D 17 A3 +46 73 50 7D 75 78 73 71 74 65 85 79 49 AD 47 68 +68 66 74 4F 86 5C 66 55 49 3B 41 4E 63 6D 2C 7B +77 68 7E 5B 68 91 48 80 83 39 45 69 AF 68 76 65 +89 8C 5D 70 5A 73 62 42 60 54 AD 44 1E 5C 7E 74 +4D 41 57 A9 2E 69 79 48 86 8D 5E 47 A8 99 92 64 +30 35 5D 3C 7F 60 6E 52 4D 5D 57 7E A8 73 63 78 +82 6C 6E 50 48 55 7A 5B 75 5C 48 67 7F 5C 28 63 +80 51 46 71 54 13 56 82 52 75 49 9D 83 71 54 8D +94 85 62 42 54 3C 73 4A 67 64 6D 7F 5B 21 5F 6C +52 49 76 56 83 36 89 52 5C 7F 80 5F 72 51 5C 5C +80 40 49 41 76 4E 75 8E 48 2E AA 61 83 67 52 53 +4F 70 59 4C 6F 1B 9B 4A 71 5C 5C 71 7A 4C 3B 8C +74 63 64 69 71 4B A7 6A 49 20 5E 2A 90 35 B9 76 +29 93 88 5C B2 74 49 69 5A 20 65 50 40 59 7A 72 +8B 80 54 A9 81 5C 6F 4C 62 7F 6B 54 5F A0 3A 1F +2D 7D 71 99 59 4D B4 69 5D 6F 75 51 36 9B 3A 5F +41 50 58 24 3D 6B 72 77 8B 70 4C 74 31 27 48 3B +63 77 A5 5B 5B 4F 86 5B 30 3A 8E 45 59 61 5C 58 +AC 86 85 63 65 44 63 E 7C 44 B5 87 52 86 60 87 +3E 7C 65 50 8B 89 2C 41 7E 7A 44 A0 59 90 67 A0 +4B 71 6A 20 47 99 4D 3E 51 63 5A 4B 63 61 31 41 +37 85 5A 8E AC 87 6E 98 6B 69 A6 22 45 82 59 62 +4B 71 7E 55 58 56 59 32 78 85 62 3E 46 48 4C 8F +61 8C 34 88 8A 87 6E 51 39 39 81 64 6D 9E 1B 68 +67 37 8A 18 77 7F 5C 95 4D 69 6D 7F 3F 76 40 21 +49 57 72 92 39 6B 87 7B 8F 5A 44 36 66 1D 94 6F +2C 28 6E 32 63 54 5E 68 5D 5A 6E 71 6C 89 78 4F +2B 78 5B 5B 73 62 81 76 3F 4C 36 5F 4F 1E 6F 3E +4E 46 40 50 7D 45 2C 57 73 4E 34 86 A0 7D 62 7A +8E 57 87 40 4C 40 49 82 6D 5D 29 65 78 68 59 77 +51 93 43 77 72 3A 7D 58 67 76 54 5E 61 31 78 56 +67 4E 6E 3B 64 53 7B 23 78 7B 45 4E 7E 3F 6D 6E +47 2C 47 79 38 92 3F 45 67 5E 81 A8 68 59 57 6F +8E 1A 61 8F 86 46 51 37 59 56 65 6E 82 66 9A 81 +7F 6A 31 88 43 47 5D 82 93 60 75 48 62 47 57 49 +47 58 84 67 67 4F 7F 53 7D 78 7A 3B 38 88 70 E +7F 99 7A 33 68 4D 3A A4 2A 94 28 3D 58 87 3E 8B +74 22 57 61 50 50 AC B3 A3 52 8F 67 8A 64 90 49 +6C 39 4E 74 86 59 92 54 3C 6B 7C 5D 7D 76 6A 5D +70 1D 7D 8F 51 5F 5F 33 5A 69 8C 79 50 64 77 6A +30 49 68 41 7B 72 76 5A 6D 74 8D 7D 87 33 5B 45 +5A 92 50 3F 48 92 69 70 9A 4E 88 6A 9 48 53 67 +41 3E 49 66 86 53 49 33 66 5E 32 A6 92 5C 96 50 +52 51 4A 57 64 7C 73 22 10 95 6A 49 3D 50 70 4E +7D 1F 58 54 98 5D 83 5E 9C 50 A1 3D 29 3F 76 4F +71 8F 51 69 B6 4E 8F 36 73 26 3D 47 63 87 42 4E +7B 4A 5D 67 7A 60 6A 73 77 78 50 65 5C 32 23 9A +22 80 71 67 7A 62 47 76 7E 60 49 7D 83 8C 6A 36 +70 3D 3D 5A 56 21 9C 29 54 29 2B 4E 37 56 47 59 +71 3A 6D 47 4D 5A 54 78 4F 84 8E 76 36 45 61 35 +74 41 34 46 39 72 98 AE 76 8B 1E 83 53 5A 7C 6B +67 94 88 79 16 5F 71 54 79 65 23 70 6B AB 92 A8 +4C 1B 80 41 5E 4D 4B 5C 78 91 88 4A 60 69 6F 40 +7B 79 7E 7E 70 64 72 96 4C 5A 45 A2 8D 74 66 89 +74 41 57 BA 62 73 55 5E 5F 65 9E 68 19 9D 57 60 +85 49 50 55 15 6C 56 26 32 7F 9A 4B 37 6E 60 8B +3F 7A 33 6F A0 81 6C 71 50 31 3F 45 76 8D 31 8C +5C 97 76 4D 5F 46 47 58 8E A0 56 88 99 26 66 5C +56 63 73 56 60 61 7C A1 B2 69 56 6B 43 AA 6D 66 +78 5C 76 8A 75 94 6B 25 AC 63 70 92 66 2A 6A 77 +4D 59 42 45 4E 7F 4E 8D 9B 56 6E 8F 68 2C 9D 85 +2B 6C 40 44 67 72 17 4D 8D 84 4A 4D 5E 79 65 34 +3F 82 40 3B 78 37 71 A2 A2 72 9A 2E 67 2A 4E 7C +5C A7 22 5B 2F 54 21 69 80 54 7D 71 29 4D 62 70 +70 4C 8F 90 53 A2 3F 92 3D 60 4D 65 2B 60 7E 96 +5D 2D 80 8D 84 78 4C 36 7E 43 93 45 6C 44 38 6B +44 81 62 91 54 2F 4B 61 66 1F 6B 84 37 7F 32 86 +68 2F 61 7A 94 60 5C 20 76 3C 66 19 43 82 24 26 +50 7B 17 81 53 37 29 8A 16 3F 7F 5A 64 82 5D 9F +63 6A 38 76 85 A4 51 51 33 5F 4E 47 58 73 9C 9F +5B 86 53 2D 10 41 43 6B 8F 5A 6E 39 3D 83 47 7E +58 75 91 9E 7D 61 6C 87 72 51 2E 6A 5A 4F 6B 68 +48 67 29 11 58 55 4C 81 49 4B 75 90 A2 7F 65 75 +5F 32 A2 64 74 5E 45 70 51 56 51 89 2A 5B 66 65 +B2 4A 60 54 63 90 7F 75 6E 3E 5C 72 67 78 89 72 +65 7F 6B 4F 3D 51 61 54 7F 56 43 8D 8B 54 5A 89 +36 64 73 56 A2 94 7F 2C A3 7C 40 38 68 64 74 41 +81 15 85 54 71 89 42 6C 59 38 76 56 8E 61 3A 55 +81 4F 4A 4B 75 93 61 48 8C 53 68 26 5C 60 7F 5C +50 3C B7 51 63 57 45 84 67 4C 71 6E 47 B0 7A 9C +70 47 3B 50 95 7C 58 A4 77 8F 96 78 71 41 62 38 +6C 72 41 96 67 68 25 5E 7B 7D 77 17 85 79 74 56 +87 51 6B 43 B6 6B 51 6E 48 36 49 4E 4D 3A 8D 43 +59 4D 67 4B 4F A6 33 7D 9B AF 74 7D 54 63 53 49 +7D 7D 89 67 81 6B 89 22 AD 42 9E 28 4F 47 5C 5A +6F 39 72 82 73 57 63 58 95 72 61 43 A4 50 29 5A +86 71 A1 83 73 5E 5B 52 6F 5D 3B 7F 5F 56 8B 30 +92 65 6A 84 2E 88 85 7F 8B 44 95 69 4C 7E 74 68 +54 7B 46 29 42 69 79 5C 4D 70 4C 59 8E 72 7B 48 +94 33 53 2E 54 6C 66 2D 81 38 4E B1 97 55 5B 75 +63 95 3A 6F 11 52 35 34 48 32 7D 67 26 55 8D 4E +87 5A 82 6F 56 64 76 71 81 57 39 99 56 8E 78 68 +99 58 68 24 78 75 5C 58 4B 6B 30 57 81 82 9A 85 +7A 76 67 11 87 A8 78 8B 3B 5A 93 8C 4D 7B 73 9A +70 87 6A 8C 97 2E 56 8E 9C 52 4A 86 4B 4D 47 42 +6C 90 26 7C 7C 6D 5C 97 60 61 4F 87 9D 86 86 46 +32 74 87 80 9F 85 47 78 34 73 85 75 6B 2F 3B 60 +55 99 3D 6A 9E 5D 50 A1 76 4D 65 6E 62 45 56 4A +4C 2D 12 61 15 8B 4C 53 72 7C 62 4A 4C 5B 95 3C +85 65 33 7E 82 72 4A 9C 49 9E 9 7E 62 47 7E 2E +8C 70 6A 39 4C 59 A0 71 64 95 55 1C 53 94 6D 6C +20 7D 1F 38 5E 69 5D 27 85 7E 81 79 3D 9C 48 67 +90 5E 3A 70 68 88 A8 83 3A 51 69 5C 3A 4F 43 68 +37 62 4B 78 3A 6B 33 8C 82 76 5F 76 80 9A 54 6A +77 10 92 3D 7D 87 57 58 98 2A 57 25 53 53 31 78 +81 5A 2B 4F 86 7D 49 8B 62 4E 6A 58 15 3C 5A 5A +5F AB 63 73 74 4E 36 78 71 50 78 81 48 85 19 52 +77 66 7E 67 58 87 44 88 7C 5B 95 6B B8 5E 48 20 +74 8B 87 88 47 74 70 7B 53 65 70 63 81 64 85 3F +7F 6D 1B 5D 1F 89 43 5E 40 A3 1F 80 5C 3E 86 50 +52 2D 80 9E 69 75 84 60 6C 3E 56 52 3D 5E 6C 45 +80 3D 40 49 48 7C 5D 65 26 68 4E A2 39 95 31 48 +86 90 73 78 70 79 4D 47 70 6F 65 13 57 98 91 4E +4D 76 63 6A 93 75 7B A6 92 48 6C 74 70 67 84 54 +5E 6C 7C 6B 2F 99 40 86 28 89 8E 76 52 65 75 6C +57 72 96 5C 72 69 9E 63 60 7F 55 56 70 51 8C 34 +8B 7D 71 60 7A 4F 61 5C 37 5E 5B 75 6E 6B 5A 7B +35 16 6C 49 83 49 76 A8 3A 43 80 96 30 A8 76 65 +75 80 54 50 77 81 B2 E 6A 43 3A 3E 79 A1 73 49 +7B 64 54 62 63 51 5C 6B 42 75 55 63 69 75 5F 70 +7B 79 79 67 68 6D 5C 50 4C B7 74 62 9D 70 2A 6F +57 9F 7A 58 91 77 70 79 61 B3 12 8C 6B 79 50 29 +6B 87 4A 80 4B 69 3B 80 5F 4E 49 7B 7C 81 66 5B +38 50 9E A7 64 45 49 61 87 6D 74 61 88 6C 68 83 +7D 26 3F 40 94 49 33 6F 47 43 7E 73 34 70 5F 73 +6E 48 8B 80 7C 46 5A 72 A0 4A 41 33 51 69 5D 70 +5B 6C 5A 49 70 86 89 58 7B 4D 82 6F 6B 5C 5F 4E +B6 6F 4D 59 29 73 35 8B 2B 74 90 8B 66 39 2B 69 +94 9B 7F 34 5B 64 AE 5F 9A 6F 46 4B 6C 46 63 5D +81 76 59 57 5D 35 57 69 23 76 3A 65 69 9E 5A 67 +6A 6E 3F 4D 98 5C 75 62 A8 69 74 41 31 85 2D 3E +5B 42 44 5F 4D 4C 68 73 88 86 75 86 60 53 98 49 +A5 6A 56 82 52 83 41 69 7C 1B 6A 63 99 65 5C 41 +84 87 70 29 75 56 5B 65 5B 86 48 74 2A 65 3D 61 +6C 6C 71 62 93 4F 40 54 94 4D 30 6B 26 58 95 57 +6B 40 72 60 3E 77 69 7C 87 88 8A A5 54 68 76 68 +43 57 75 79 8D 4F 7E 35 68 AF 50 44 73 4F 60 65 +79 35 59 68 73 4A 55 6F 4B 35 88 7B 8E 5D 91 6A +90 77 59 7D 87 73 6F 5A 79 84 4C 68 3D 52 24 59 +8E A0 6A 24 9B 75 73 9E 5F 59 54 90 4F 78 70 5F +69 71 66 58 8F 5A 7F 86 75 52 7C A7 4C 62 40 50 +6E 74 6E 65 82 34 62 6F 3C 55 46 4C 54 3C 5B 48 +8C 63 3C 67 79 62 4C 4A 9C 9C 54 70 4B 3D 94 5D +7B 4F 55 98 7C 8A 57 61 8B 33 74 80 72 6B 5B 43 +43 6E 61 8C 51 73 53 E 6A 59 4E 79 23 6C 71 3C +5D 54 51 71 40 57 3E 59 5B 4E 4B 4A 57 71 3C 82 +5C 72 47 31 9A 5C 73 78 6E 45 5B 59 B4 49 70 52 +53 60 6B 97 4F 90 6C 79 37 79 58 95 48 68 48 4D +3D 43 68 6F 4C 6C 78 81 40 65 42 A0 57 6E 51 53 +60 56 7C 3D 41 76 72 38 3C 89 5A 1F 40 7E 8A 5F +4E 34 82 80 34 73 34 4E 6C 8D 94 64 2E 40 55 58 +62 66 8E 7D 78 9F 97 64 46 6C 73 64 6B 6E 70 36 +5E 9B 57 50 43 77 9C 87 44 4F 28 84 5C 55 89 44 +5A 52 95 97 79 61 60 57 6C 3F 7C 5A 8E 75 62 76 +62 58 73 75 97 17 47 3D 65 1A 5C 43 98 5C 60 3A +5E 5C 1D 2B 90 73 74 A0 AA 73 4E 8B 5B 3D 4C 2C +4A 31 6C 9B 2E 90 72 2E 72 91 69 B8 66 5C 2A 4D +9D 7B 63 57 81 81 73 7B 78 46 54 71 18 58 42 5D +37 71 37 65 79 5D 42 64 45 60 A2 53 34 37 52 70 +4F 74 92 85 4D 69 93 65 71 5A 6D 25 6D A2 20 49 +47 56 51 6D 74 66 35 2F 6B 3F 61 B2 53 50 63 86 +5C 69 3A 3C 43 53 61 7F 31 B2 90 50 82 61 83 61 +91 6B 69 4B 4B 6F 37 4D 64 93 50 61 37 4E 7F 44 +58 61 60 55 7A 91 49 8B 5A 48 3A 72 5E 66 67 78 +8C 85 23 47 4C 97 62 32 77 67 86 81 84 99 69 1D +55 95 43 62 9E 49 50 67 AB 58 44 49 7A 8B 84 7D +63 5E 79 2A 7A 2E 7A 76 1F 73 32 1A 6F 95 72 6F +51 1A 38 81 8D 66 57 71 A0 9E AD 4D 91 57 66 50 +6F 6D 96 65 36 A6 3B 31 A9 58 B3 55 6E 66 5E 9A +1C 61 24 A8 8C 4D 53 61 76 4D 74 89 3C 3B 50 56 +63 59 53 51 4F 6B 51 53 69 4E 47 9B 5B 96 7B 64 +3A 70 40 7E 42 52 54 8D 82 66 75 A0 85 63 76 94 +61 87 B8 60 72 7D 29 45 30 84 46 25 A1 65 6B 77 +80 46 6A 61 6C 63 36 84 A2 5C 24 57 8E A0 9A 55 +68 24 42 94 AE 70 1F 41 AD D 59 6B 72 40 4D 63 +49 91 5A 4D 42 96 64 4F A6 57 65 5B 42 4A 7D 5D +7F 70 41 85 8B 4C 67 5F 4F 90 87 42 41 44 78 65 +A8 72 46 2C 65 4E 88 44 3B 38 30 60 90 34 78 74 +67 70 84 83 53 68 72 9C 9B 56 2F 8F 1F 51 AA 92 +7C 5A 54 51 3E 84 46 5E 68 86 5B 65 41 87 5D 78 +63 1B 75 AA 43 B9 A9 75 93 87 7E 23 76 6D 54 18 +9D 5F 8C 67 AA 58 83 67 4F 8D 7F 9F 80 6E 87 3B +6F 72 86 36 7C 52 65 54 5F 9E 51 2E 57 2D 9B 78 +37 93 79 61 74 32 19 78 8A 5F 78 6D 4F 8F 53 5F +8C 60 61 7F 84 2A 79 62 7E 2B 6A 45 B0 45 7D 8A +46 AC 5F B0 89 5F 7A 35 52 76 7A 88 63 92 9F 2A +4A 5C 6A 83 49 66 76 16 5F 34 29 67 45 9A 7D 64 +64 20 8D 9A 36 62 5F B0 9F 4F 34 A7 98 5F 6E 67 +5F 59 69 66 66 34 39 44 2E 5D A1 50 A5 34 93 A3 +56 50 58 9A 57 81 A3 46 84 7F 5C 34 7E 6F 64 78 +65 4D 66 81 6C 46 7A 4E 6C 39 62 2E 91 55 62 45 +54 61 48 60 97 84 6F 66 88 4A 39 72 25 9A 77 62 +51 95 3A 74 5D 6E 98 7F 92 55 47 43 49 74 61 1E +6A 6C 59 73 3F 57 58 48 98 85 3F 52 2A BE 5E 39 +63 56 50 9A 56 25 68 30 61 6F 72 AE 4A 48 49 7D +75 7A A2 7F 31 76 39 7F 6B 70 5D 89 57 7F 51 26 +85 95 39 5E 26 5D 7A 42 4C A3 9F 44 80 78 7D 43 +97 38 7D 28 69 8C 85 52 61 70 4E B5 8F E 93 4D +3E 4A 4D 51 54 8E 5F 4C 58 5B 5C 45 4C 87 57 88 +6E 6E 8C 6E 68 64 7C 6F 3F 7E 5C 6B 47 88 6F 91 +22 3C 7D 6D 2B 69 5C 33 2B 9B 59 49 46 40 5A 3E +1E 6B 86 5A 49 4F 33 6B 31 56 66 7A 4A 58 6D 64 +84 AD 83 56 41 76 5B 5C 51 6C 65 4C 72 6A 76 A1 +6C 13 52 3D 76 53 94 71 9D 61 82 92 5F 6F 76 56 +B8 86 63 41 59 36 5F 56 5E 3A 79 45 54 65 3A 63 +9A 88 69 44 5C 87 58 82 93 29 91 50 33 5F 39 74 +4D 6B 34 4D 55 9D 57 6F 66 4F 48 9D 71 78 57 93 +4E 7B 7E 68 4B 6F 3B 62 38 6D 5C 31 34 4B A6 55 +6D 21 2C 57 62 31 3E 6C 34 45 3B 39 3C 92 40 83 +5B 60 4E 36 80 61 55 6D 41 32 90 1D A8 29 56 4E +88 54 84 31 6F 29 60 93 4F 47 72 80 7E 13 6A 89 +91 7F 8C 71 45 4F 42 4E 54 55 5D 68 60 99 54 81 +6B 9F B3 7B 8C 1A 9C 85 45 5C 70 49 6F 56 81 59 +5D 5C 77 25 62 16 80 93 69 5B 91 9A 41 1A 7E 89 +4E 60 A8 97 7A 77 72 87 8B 5E 96 46 42 90 6E 6B +58 60 35 67 33 86 75 6D 59 82 92 5E 33 B5 69 B5 +50 A6 63 52 76 50 65 58 1A 83 5D 49 4D 43 36 48 +A1 A7 9C 65 91 49 A2 5B 6C 4C 6C 50 78 61 62 45 +85 43 5D 80 77 39 4A 4E 3B 36 6F 7E 8F 68 3B 21 +25 67 86 75 98 67 55 4B 57 6A 3F 6A 9E 5E 40 57 +32 89 53 6A 66 5E 88 8B 47 64 49 7A 64 34 36 65 +43 41 5C 5E A7 6A 74 9F 2D 85 41 68 70 43 53 6F +54 2D 4B 46 4B 57 56 43 75 7A 9D 9F 91 74 66 52 +41 60 78 7F 4A 22 81 18 AA 9A 4E 6A 51 55 64 59 +8D 98 8C 51 78 76 7C 6E 66 70 2D 52 79 7D 4B 4A +28 76 9C 17 5A 6B 7C 83 2E 32 8C 85 6D 8B 16 63 +64 3D 9F 8A 9F 98 75 87 3D 82 7E 82 44 89 4F 89 +77 41 33 61 49 6E 7B 4D 7A 7A 19 3F A2 71 6E 59 +4C 5E 48 5C 7F 40 51 56 5B 2E 50 5B 71 63 97 A0 +88 54 8B 8 6D 3E F A 75 6B 6F 80 34 12 74 5D +32 74 56 7B 54 2A 65 64 6B 54 33 92 31 42 54 70 +66 55 5F 67 66 66 59 4F 74 62 56 65 29 3F 76 64 +51 7D 6F 2B 38 60 56 6B 63 9F 24 60 76 6C 6B A1 +87 73 69 71 68 4B 76 54 2E 5D 2E 20 8C 5A 8E 2F +24 54 3B 4C 7F 91 AB 59 49 6E 65 60 69 3F 61 89 +67 46 87 75 4D 80 A0 79 74 3A 81 68 81 6B 86 5E +5A 52 77 6A 45 73 42 73 54 50 95 50 79 57 72 39 +75 65 75 68 54 73 5A 31 6D 87 6D 75 AA 63 63 93 +6F 6D 7D 81 9F 3B 6D 1C 5B 2C 4E 73 9D A0 8F 44 +4B 66 97 51 97 71 5F 47 5E 77 60 62 53 44 48 67 +63 54 34 77 5E 5F 6D 82 60 79 2D 3E 62 45 69 4E +7D 5A 2C 55 12 6F 46 87 42 65 7C 6F 4F 8C 6F 63 +76 60 59 51 5C 5B 7E 76 25 7D 58 8B 7C 51 41 6E +68 6F 37 71 82 9A 6B 91 63 96 5A 4B 5D 50 28 69 +2E 38 93 20 5C 6F 46 66 4E 68 8B AB 43 64 36 6B +3F 3E 6B 78 7B 35 8B 34 AE 60 58 74 61 6C 8C 4C +78 A8 30 45 70 45 77 38 6C 28 63 3E 87 5F 54 4F +78 45 AE 86 93 69 77 4F 6A 5B 7E 94 6D 6A 86 8C +7B 38 60 41 3A 64 52 6F 7C 63 7A 69 67 9D 74 3F +20 76 2F 9A 4A 73 68 90 75 9B 97 7C 6F 6F 1A A7 +4B 53 88 60 83 54 76 42 5B 36 3F 31 8F 46 40 3F +4C 77 73 74 7C 7E 6B 53 39 3D 57 5F 42 2B 16 6A +2F 6D 77 79 74 36 A5 64 51 6E 89 95 7F 64 7D 73 +5D 67 51 62 56 6B 5D 82 82 6B 96 57 A5 95 7E 24 +61 2B 41 53 67 66 42 6A 73 76 80 A8 59 60 5E 4B +63 69 9C 87 45 3C 3D 7E A2 75 36 75 1E 66 6A 72 +5C 8C 25 91 51 64 7D 8C 57 33 4C 64 A0 9A 58 4C +83 82 39 4A 7D 20 46 68 49 7C 3C 59 7F 4F 62 39 +3A 7A 55 8F 90 73 45 58 38 89 50 70 64 2C 6D 47 +7C 53 93 88 57 B2 83 69 71 5D 62 43 6B 38 42 62 +50 4B 93 79 4C 63 6C 42 39 6A 51 92 74 8A 7C 65 +41 44 4F 73 54 81 87 3A 3E 61 75 9E 83 85 7C 4D +97 46 98 69 89 41 1C 6C 81 9B 48 49 37 66 4C BB +82 72 71 7E 41 5E 6D 7D 4A 6D 54 5C 73 4B 49 53 +86 50 7F 3E 70 60 71 52 69 47 97 2A 7D 65 4B 44 +95 3E 69 6E 64 75 75 5C 58 5D B1 6B 71 70 6E 78 +76 1B 7C 69 93 51 54 6E 44 50 44 60 4A A9 84 6E +52 5C 63 80 48 62 7F 43 56 73 A1 6A 7F 10 39 85 +43 49 22 71 7A 4C 63 8D 7B 2F 78 47 56 64 8E 5E +5B 42 7D 52 3E 8B 83 61 9C 57 6E 3A AA 64 28 62 +61 71 57 9E 4D 75 5E 6B 75 37 58 45 7D 7B 7A 87 +80 72 5A 68 60 43 6D 5E 67 65 8C 70 3D B0 A4 75 +17 41 46 36 92 94 2A 80 58 64 5C 43 66 69 5D 7E +52 6F 88 6A 65 71 67 42 3C 66 5D 7E 38 6B 96 6B +53 4F 30 49 7F 76 42 55 68 4A 5B 80 77 52 44 40 +93 68 40 67 5A 4E 4F 88 82 29 5C 75 94 8D 61 67 +27 4F 7C 73 54 5F 87 5B 69 47 6B 99 50 4B 47 5C +89 9A A2 86 45 63 39 49 9D 81 33 30 52 48 91 A4 +41 81 53 4C 78 A0 84 46 8B 75 57 42 6A 33 74 8E +5A 51 58 64 4C 82 86 66 95 73 71 60 7D 65 5D 61 +48 42 31 AB 48 6F 3B A0 3C 3F 11 A0 61 68 57 53 +46 58 4D 8B 33 87 6E 4E 44 84 4D 69 51 53 89 53 +59 6D 67 3F 62 4D 43 52 23 74 63 69 9A 4C 76 69 +6B 74 55 46 A1 3D 5 49 30 54 44 4B 51 65 45 57 +76 7B 6F 24 79 5F 4A 59 9E 40 32 58 7E 74 70 49 +61 71 AA 7B 91 3B 48 20 76 94 6F A2 6C 80 40 8B +66 68 5F 69 6F 36 3F 63 A2 89 83 26 6E 72 A7 5A +51 27 75 AA 71 72 47 7C 3C 42 56 84 5B 7A 2C 69 +81 77 8B 89 70 49 44 48 60 53 74 9D 57 6C 5A 6C +5F 8B 62 6E 64 63 60 6C 2D 82 59 4A 4C 6F 6D 49 +97 7F 58 75 58 60 5C 61 5C 4D 7E 3F 82 40 6D 7E +55 5A 5E 66 92 11 2E 3D B0 46 2B 40 77 80 9D 7D +61 7D 86 3C 80 B9 8D 61 97 69 42 3F 47 61 57 54 +76 39 68 6E 4D 3A 69 88 56 7D 74 79 5E 42 65 42 +42 43 65 8F 8F 89 6B 66 3B 79 51 8C 9C 6B 2C 44 +72 58 87 88 49 8E 5F 4D 68 66 27 67 6E 83 18 6D +A7 45 6D A3 82 40 29 4D 57 92 4F 51 5E 81 49 20 +66 8B 4D 33 94 78 57 62 5C 7D 7E 47 68 62 52 4A +5C 63 7A A6 37 6B 89 8B 41 2B 56 5F 37 6F 2D 40 +50 66 71 5C 5A 4D 7E 4B 55 69 59 4D 4B 31 65 57 +7F 47 85 88 86 6A 5E 85 72 6F 7B 72 88 28 93 34 +6A 46 55 41 74 8B 7B 4B 72 94 56 54 61 5E 4C 1F +34 75 4D 94 8A 4B 5B 18 1D 99 77 48 65 40 34 3A +7D 3D 78 5B 84 68 28 44 76 5A 45 BC 79 5B 16 48 +91 69 86 12 73 47 4E 4D 8D 7C 41 72 87 62 62 36 +46 46 9B 54 3B 75 74 92 70 4B 94 78 4A 4A 26 3C +44 76 66 74 60 87 67 76 9B 71 73 6B 68 A5 5D 7D +47 61 9C 5F 39 4E 57 7E A2 41 2E 34 79 5C 4C 1B +6B 77 47 56 7A 61 52 88 30 A7 7A 8D 58 31 79 81 +8A A8 7B 6F 5B 9C 39 41 74 6C 7F 50 78 6D 84 7B +5D 41 54 69 7B 10 82 76 8C 33 6A 68 6C 54 92 3C +33 83 86 8C 84 4A 70 7B 68 9C 66 72 A0 89 96 59 +65 70 40 44 69 18 1D 64 70 34 34 7E 91 64 AE 72 +5C 3E 6C 65 75 59 5F 39 1E 71 A2 29 44 36 5A 5D +54 78 51 46 3C 76 29 64 78 73 65 B6 6A 77 47 5E +3A 41 44 94 97 14 AD 3A 83 69 42 52 99 4D 9F 59 +78 84 51 A3 7D 36 5D 35 67 83 B0 43 69 34 38 AB +81 7C 77 64 6F 86 1F 85 53 48 59 58 33 8A 50 2C +29 6A 2A 7C 7C 5A 29 6F 7C 8D 79 93 4D D 32 58 +48 64 64 61 35 7F 63 5F 5E 8D 53 77 4C 5B 58 6A +44 35 B7 7B 15 8C 74 A6 7B 67 60 32 67 41 42 5D +70 54 6E 74 34 86 17 47 47 84 2D 45 7E 9D 2D 3B +6B 7C 5C 9E 4B 2F 43 93 92 3E 50 A5 5F 5E 52 6C +44 56 8C 90 5C 31 79 94 89 7F A7 1E 3B 59 8D 5F +50 A4 34 25 7C 64 46 B3 65 67 A9 61 4F 66 6A 73 +6E 8E 62 87 53 2F 2C 8D 70 59 61 5C 99 8D 92 9C +33 7A 4E 6D 9E 60 21 7B 6A 45 47 5F 8A 5D 89 73 +4B 91 50 8D 6B A4 68 4F 88 49 89 83 5E 51 95 9C +1E 73 73 65 7A 76 26 70 44 64 45 28 5A 62 78 98 +8C 85 78 69 A 94 54 79 8C A6 52 53 66 96 79 4D +61 AC 53 AE 41 4C 65 6C 68 77 5A 6E 90 38 5B 34 +6F 62 4D 7F 7A 7E 5C 83 59 95 53 79 67 67 5B 5E +6C 3D 5E 3C 30 5E 5E 47 61 57 5D 6D 57 70 88 65 +71 74 6D 5C 8B 22 44 87 6C 6A 59 68 63 85 9A 4F +68 52 57 96 5A 65 62 6D 68 6D 7C 46 72 2E 9F 9E +67 75 72 93 3F 5D 52 60 4C 65 37 62 8A 82 A3 54 +73 2D 40 51 7F 54 8B 8A 31 98 23 2D 2A 3E 6B 87 +58 69 2E 88 7B 6D 3F 64 32 5B 3B 6E 52 52 6A 3B +41 8A 49 50 A4 6E 2B 99 40 6C 68 A4 3A 3B 54 42 +4C 74 6D 4E 84 40 3D 60 77 75 89 68 80 40 85 84 +1C 7A 6B AA 83 43 85 85 57 A3 71 4A 39 6D 65 51 +4A 52 8E 61 46 84 7E 60 62 3E 72 89 6E 3C 48 84 +63 77 5B AA 31 62 80 55 77 66 6C 72 38 97 52 86 +60 7E 49 A0 5D 7D 62 94 7B 8D 66 3B 73 A2 71 3A +83 64 24 1D 28 40 81 33 43 4E 72 8C 62 70 A2 7A +4C 62 6B 42 49 48 84 72 59 49 75 6F 4F 8C 65 55 +58 3F 6F 7D 65 51 69 12 55 65 4D 50 1F 3E 57 6F +5B 80 45 9C 63 67 8E 52 8B 29 28 98 17 17 7D AC +79 79 80 98 8A 3E 73 67 6A 5E 67 A2 2B 52 AB 36 +5D 78 89 7D 5D 79 46 75 53 98 60 60 6C A6 52 4F +1C 59 80 2E 6F 4E 83 3B 6A 40 7F 51 66 D 4B 30 +5C 47 54 5E 58 91 6A 82 99 51 85 6B A1 7A 6A 5C +69 9B 51 A4 36 93 2C 81 91 5A 5F 2A 89 98 55 72 +68 88 7F 7B 39 3E 39 5F 3B 47 3D AA 5A 51 4C 8B +30 2F 51 88 4D 4E 90 44 58 1F 97 79 5C 99 7C 67 +42 3C 61 7C 8C B4 62 A4 5E 64 2E 50 46 54 51 7A +5D 53 8B 5B 62 7D 5E 53 42 47 A8 57 3E 78 8B 42 +71 32 4A 62 4E 32 39 72 7C 5E 4F 7A 41 66 7F 47 +64 6A 43 37 6A 7F 84 5A 5C 6F 5 69 80 3F 56 5B +68 67 8C 80 67 32 3D 5F 82 67 AE 7C 27 3D 37 6C +30 7A 7A 53 88 63 4B 49 72 49 A4 83 5F 7E A5 55 +70 1A 5A 3E 61 29 1B 4E 46 86 3E 73 5E 4A 88 62 +1F 6E 79 27 2E 6D 57 66 61 30 8E 4D 66 31 68 5B +6E 88 61 81 6E 42 97 8F 65 37 69 3C 75 73 6D 5C +4E 8D 6D 5A 52 40 61 3B 72 41 7B 9E 5B 38 5C 85 +6A 62 75 42 45 6E 69 86 4E 5A 39 58 5E 51 75 9D +65 67 8D 62 71 98 74 91 72 8B 69 69 59 76 3A 48 +60 81 31 4B 18 35 73 3E 6D 79 87 6B 1A 47 26 87 +3C 70 49 6A 66 71 7C 98 56 58 73 47 92 75 81 47 +A3 47 3E 26 64 11 45 32 64 78 7B 79 7D 82 9D 5C +78 60 60 50 5E 57 5B 2A 56 61 62 4A 64 4D 64 40 +72 47 4B 6A 6D 50 53 A1 66 76 13 83 3E 36 5A 8E +1C 34 2C F 90 41 8B 84 71 67 5C 4F 7D 74 63 53 +6A 78 7D 69 7B 3F 45 5D 98 3E 64 55 4B 5A 65 8C +77 31 9F 98 46 72 6F 58 7D 60 90 8E 6B 5A 66 7B +49 89 5E 48 70 88 A2 93 73 7D 89 7B 65 3B 78 8E +59 84 29 40 2D 62 4D 81 53 74 3B 57 67 6B 3B 50 +6E 8E 87 57 73 8C 69 AA 6E 23 74 70 4C 5B 78 54 +82 80 53 7D 62 70 7A 46 5C 59 4B A3 57 99 75 58 +65 7F 7C 40 4E 74 56 2E 5B 70 9A 78 99 59 8A 28 +72 62 78 6E 6E 65 89 7D 7D 4E 57 7B 50 5B 96 41 +66 46 5F 53 58 7E 87 85 33 34 7F 3D 60 61 48 61 +8D 73 47 8E 60 50 43 4F 82 8B A0 61 37 62 77 69 +88 3B 67 1D 7D 58 4A 8B 63 11 55 34 6F 62 55 45 +65 56 63 67 2F 86 6B 4B 40 62 79 8B 5E 3C 56 73 +8D 56 5C 5F 78 83 76 58 96 88 1E 56 10 65 9A 80 +2B 5D 2A 39 8B 7A 6D 48 75 7C 6B 79 72 95 BE 99 +53 A1 5C 7E 2C 66 81 74 45 64 81 42 5C AE 79 31 +50 41 7F 8A 1A 7F 45 9E 5C 4B 44 29 4A 8C 75 84 +29 60 77 8B 6E 79 59 6C 47 44 58 A0 35 82 7E 96 +6C 63 7B 7C 97 7D 2C 77 5A 2B 51 4C 75 64 5B 5C +90 30 44 5E 49 78 34 74 49 69 58 4A 76 3B 30 58 +78 52 4B 52 97 8A 48 49 45 60 22 6B 3D 4A 3C 70 +38 36 69 36 96 9B 8F 6B 6A 55 4E A8 7A 4F 1C 72 +75 42 85 57 71 51 28 4E 74 86 49 55 61 87 79 62 +42 A1 29 7B 5A 33 45 57 73 62 6A 56 45 F 75 41 +26 51 51 54 33 9C 5E 6F 54 90 A4 80 8C 64 84 7B +60 9C 5C 93 77 42 3D 7E 48 A 7A 58 AE 86 55 4B +67 55 2C 51 9F 6A 61 46 6E 48 6D 54 7F 50 85 53 +77 4A A0 9A 89 6C 74 7D 56 5A 45 65 60 7C 81 5F +3C 64 78 66 32 82 88 4A 84 5A 53 40 81 47 91 52 +55 71 60 4B A 52 8F 56 4F 83 82 64 70 7A 59 80 +7E 57 5C 61 8E 6C 59 4E 4D 90 75 42 7D 5B 71 71 +6A 3F 7D 6A 79 5D 6B 88 85 6F 29 37 75 4C 89 6A +55 87 88 6F 44 68 5F 8C 59 93 62 45 4C 8D A9 4F +72 62 62 4A 7C 4E 66 50 A9 56 68 13 54 6E 2F 3B +3C A0 23 1C 74 67 4B 1E AB 63 60 86 4F 56 A3 65 +3F 8B 3D 53 2B 34 72 66 75 8E 67 41 7F BD 6F 61 +41 7D 78 3C AA 84 92 3A 93 66 40 35 56 26 96 54 +8E 3E 2B 37 7C 7A 67 90 52 31 94 54 54 38 78 74 +6B 5E 57 69 6B 46 4A 43 62 45 69 3F 9B 18 6A 76 +76 39 7E 4A 31 29 3D 3D 22 56 29 8C 4A 94 8B 66 +4E 6B 22 46 58 4E 4A 5C 75 59 5C 60 53 5A 71 4D +7E 77 9B 55 97 64 79 7E 90 72 63 7F 46 80 53 3C +4E 61 4F 89 81 2F 68 92 6A 5D 89 3A 4D 50 8C 27 +6C 70 30 79 67 65 50 82 31 46 32 5D 9B 5C 63 63 +5B 87 71 6B 61 52 6A 1C 7E 78 6E 61 5B 76 72 7F +72 56 53 8A 65 61 33 4A 72 55 69 46 9B 51 91 59 +44 37 49 5F 66 50 A0 62 9E 83 49 4C 9E 30 4B 53 +86 66 5C 80 53 32 5D 58 63 40 6C 43 86 35 8D 8D +42 2F 93 71 5B 78 5E 57 64 78 7A 38 96 79 8F 82 +6D 97 3E 51 58 5B 32 51 35 51 47 81 8A 4C 7A 4D +4E 63 90 86 7D 8B 40 52 62 68 6F 87 4D 72 84 97 +5C 43 89 8E 4D 64 84 4A 67 79 52 62 4B 47 A3 47 +55 79 4A 83 5B 4B 55 A9 75 7D 7C 77 AC 32 67 52 +31 5E 85 50 53 56 A7 6A 74 7A 5B 52 7B 93 4A 3C +50 5F 62 54 2F 4B 75 A1 4E 8F 60 63 90 61 4B 6A +6A A9 4C 87 47 6D 59 40 5A 86 4C 40 7A AF 54 37 +B2 80 2B 92 74 4A 67 87 49 4B 6F 5A 67 A9 7B 7C +80 96 40 95 47 87 99 5B 77 98 6A 8F 4C 3E 5D 9E +4B 32 46 26 72 51 7D 78 5E 72 7F 64 7C 76 34 2C +7F 42 52 73 3D 40 5C 72 41 60 A0 35 60 61 43 90 +7F 76 1C 75 8B 63 4D 7F 4D 7D 91 93 71 69 4F 5F +43 30 82 64 71 59 66 85 4D 4B 4F 20 28 48 3B 3C +60 55 6D A3 71 23 5C 57 80 53 70 41 59 10 52 24 +9E 74 AA 67 41 6E 3B BC 59 1E 6D 5C 5F 36 6F A9 +88 2B 56 81 50 64 64 71 78 49 3B 6C 70 85 8C 63 +3C 2F 89 2E 46 4B 5D 50 48 43 88 1F 62 33 86 3D +66 67 92 59 36 51 75 49 52 61 46 66 90 99 7D 4C +8E 4F 40 96 33 C1 39 88 7B 55 53 A5 6D 8F 78 71 +53 52 88 53 5C 88 57 52 58 8F 66 71 34 68 31 67 +1A 7C A7 55 44 67 69 2C 3A 63 55 90 4F 6A A6 6A +6A 5B 2F 69 63 6A 86 5E 3E 4C 4D AF 41 69 61 6F +70 58 78 54 1E 71 4C 6E 60 6E 40 8B 72 26 73 78 +58 3B 97 9F 43 6B 9A 57 38 78 37 45 44 3B 68 29 +42 45 63 55 6D 74 93 8F 99 6B 5F 38 4D 72 63 98 +2D 4F 6D 6C A3 46 48 46 64 45 8C 22 7C 66 50 83 +78 32 6C 61 93 44 37 8C 85 59 89 7A 7B 85 40 62 +55 68 A1 75 65 74 9F 7A A5 38 36 8D 69 A2 7F 49 +A8 1E 4D 4C 5B 81 A7 8B 51 1D 76 4B 39 8F 65 63 +9F 66 54 4F 5A 82 7B 89 71 2E 88 22 4F 4A 43 45 +5F 61 82 1A 4B 4A 8B 4A 5A 47 8D 90 6D 65 55 95 +64 8D B5 43 35 5B 37 41 35 49 8C 71 B1 94 9D AC +7A 6A 67 26 78 84 49 8D 68 4B B1 A6 58 49 56 47 +63 62 5F 8F 7C 53 45 4E AA 53 44 91 8E 41 6A 5E +70 94 63 6B 62 41 97 73 57 5D 94 85 3D 89 56 9D +3C 57 75 76 C1 64 6B 64 67 81 47 A8 73 75 29 3D +44 78 31 6B 46 4B 84 22 8A 50 6B 2A 6A 80 6E 3F +83 3C 8D 81 74 78 F 1F 63 5B 61 73 28 B6 63 5C +65 35 64 50 73 60 87 20 78 5F 4D 6C 81 43 6F 65 +80 64 37 85 36 43 72 73 78 A9 1D 60 59 2C 66 6A +A4 7B 28 A 6D 89 7F 62 56 6C 91 58 73 7B 27 57 +4B A5 29 7C 7D 5E 4C 98 75 79 88 71 6A 2E 11 62 +6B 9A 9E 6B 3A 94 62 78 52 1C 8C 44 5B 75 8F 71 +61 41 6B 51 8D 34 78 6F 91 3F 42 6A 89 26 77 39 +35 8E 70 55 5F 15 AD 42 9D 7B 49 7C 50 5E 6B 57 +53 5E 4D 6E 40 84 69 88 35 2B 69 7C 47 27 95 52 +93 8C 4A 4A 41 72 47 8A 7B 6F A5 81 8B 67 7C 4A +7A 15 63 8B 56 55 4D 53 6B 68 73 75 4D 13 84 5C +44 54 8B 30 5D 2A 71 8F 7C 50 76 58 87 68 87 61 +92 74 47 70 2C 4F 78 30 62 7A 4B 5B 4B 5C 66 84 +62 70 68 6F 49 37 A5 13 43 45 AB 86 73 88 35 B1 +51 6F 5C 44 59 8C 50 3F 7F 69 56 7B 6F 53 3E 6B +5A 43 65 35 10 91 2A 77 18 6C 65 9A 67 63 4E 58 +52 89 71 86 44 6D 1A 75 6E 7E 5A 2B 3D 7A 98 8F +9A 8A 4A 53 A4 63 4D 53 33 42 7A 74 83 2C 79 94 +59 4D 3F A8 4B 9B 7A 7A 8B 74 4C 5E 29 8E AD 91 +60 62 66 3D 82 48 33 55 83 4B 22 5C 65 3A 41 5B +82 60 91 48 35 28 7B 36 88 8F 68 67 74 71 47 2A +66 66 55 3E 44 5C A8 83 52 7C 94 60 66 3F 89 5A +6A 8B 57 3C 6F 6E 67 7A 44 27 4D 65 60 6B 45 3B +7F 71 95 89 7F 14 74 7A 83 75 82 85 8C AF 50 7B +19 3B 84 23 52 8E 83 3D 5B 2A 37 57 4E 82 3A 89 +A1 1F 28 7D 7D 58 6C 78 5A 3E 43 88 55 89 41 48 +71 51 77 58 7A 73 61 2C 22 43 71 77 79 73 56 8E +6B 53 6E 7B 9E 2F 70 A5 6A 97 9F 68 6A A1 72 67 +88 41 63 54 75 25 9B 6B 67 6C 63 4E 48 B0 4A 4C +50 59 88 4E 54 52 80 56 76 70 5B 3F 40 55 A2 9E +5A 5B 6D 53 3F 6F 6A 5F 35 67 7D 9E 3C 81 93 57 +3A 45 64 6E 61 8A 6B 53 46 81 19 57 4B 4F 36 65 +42 4E 60 71 62 AC 50 94 59 56 58 6D 90 6C 69 83 +84 2E 8B 5C 62 5B 70 5F 76 83 3D 6D 87 9D 54 24 +91 61 3A 87 6B 59 3A A5 3B 6D 7B 91 14 62 5B 9F +4B 6D 6A 7F 99 2B 63 2A 3C 48 41 79 7D 32 2B 60 +48 3B 3F 7E 6E 6B 31 4A 92 78 5E 7C 4C 6B A7 6E +49 64 5B A6 37 35 59 55 82 4C 5B 68 54 5D 11 61 +6E 32 57 21 4E 8F 65 9E 43 22 5B 88 68 61 46 1E +20 57 5B 89 98 48 68 82 6D 7B 3C 92 A2 6A 86 59 +84 36 3A 75 79 55 63 74 66 82 5F 58 23 4B 8B 93 +68 80 54 21 30 3A 3A 6A 75 4A 58 B1 59 8B 82 9B +57 3F 76 65 46 7B 76 47 5E 59 18 4B 74 B2 1C 4D +AA 94 6F 85 78 75 7B A1 54 6A 88 8C 53 60 56 4D +62 93 70 51 8D 4F 9B 46 75 B5 89 5F 50 63 6F 3E +42 8E 58 91 4A 54 54 66 81 66 5D 5D 40 7E 4A 53 +89 4F 74 73 8D 65 5D 3E 2C 69 72 70 52 51 7C 4A +71 6A 57 8F B9 A0 5F 4A 8C 4C 65 86 77 62 6A A5 +6B 9D 1E 69 33 7E 98 71 6A 5A 42 90 5E 6D 87 E +45 68 9F 3E 26 94 1B 64 7E 66 53 6E 3F 5A 72 9C +74 A0 66 71 50 3F 5A 48 6E 71 A4 70 6C 55 87 A +8B 8A 64 7A 95 54 69 74 58 50 8A 4A 45 3E 52 9D +83 54 77 52 7B 54 53 96 84 4A 60 91 3A 64 7C 53 +5B 7B 4D 5F 5A 41 7A 8F 65 40 7A 47 24 68 75 93 +72 6A 51 70 83 86 59 52 57 41 59 25 63 67 85 4F +74 51 8A 85 53 4C 83 7E 5E 49 C5 30 64 9B 69 4D +7B 4D 38 55 4F 54 72 54 80 79 53 63 91 6F 75 61 +20 A4 4B 48 6C 48 37 34 3F 89 72 75 7F 6B 4C 72 +4F 57 3E 65 9F 53 7D 71 62 5E 76 5E 44 5E 9A 23 +3A 7A 46 75 4B 8D 64 60 60 5C 81 64 3A 1A 7A 71 +9C 6B BE 99 64 2D 77 8E 83 49 57 67 68 7F 70 95 +7B 4F 50 59 62 6C 59 47 38 45 67 7D 68 59 3F 83 +83 96 52 58 53 87 6B 3F 39 3A 60 6D 7C 89 58 6F +4F 46 4B 88 4C 39 7F 86 7E 78 42 62 AC 42 92 6B +49 6F 21 62 55 47 82 5B 7E 8C 61 A2 9B 37 96 AC +4C 89 91 3E 34 36 4A 73 1F 46 7F 6D 7E 51 38 3B +5E 73 5D 71 50 58 34 7D 56 31 4D 32 27 A6 57 56 +7D A7 6B 66 5A 85 64 5E 94 91 4D 52 50 74 78 62 +2F 2B 86 7B 18 55 92 5C 47 46 84 40 85 46 35 84 +69 6F 79 7A 60 72 4F A4 52 74 6E 8F 77 A7 2C 59 +58 6E 42 A0 6F 4A 69 8D 90 71 64 66 20 39 35 7D +60 4A 6D 68 49 55 63 5A 5D 21 8D 53 94 40 70 7A +31 67 70 49 84 AB 76 39 88 48 32 71 68 34 41 7C +25 68 77 5F 97 5C 5B 76 5E 80 27 54 4A 2A 62 52 +29 3E 5D 46 48 70 B5 35 74 70 59 41 3E 4C AC A1 +51 95 7B 5E 28 31 75 6E 32 46 59 48 84 79 6B 52 +4F 50 4D 3B 6E 63 86 33 35 6B 8B 81 9F 5F 36 88 +56 4D 5D 3F 29 85 4D 98 4F 50 30 90 6B 6C 5F 47 +95 4E 51 7B 2A 4B 3E 49 93 75 6B 2B 61 7E 4C 53 +5E 79 9F 57 94 83 7C 54 60 50 52 73 68 62 6C 9F +1C 44 38 82 67 4F 60 6A 48 56 70 4D 85 7B 79 78 +6A 88 71 4A 5B 64 87 83 88 39 88 4F 54 77 71 90 +50 53 8D 30 BB 39 84 96 40 44 99 4A 44 35 93 78 +6F 60 58 F 41 4D 53 39 59 5D 7F AC 6E A2 80 75 +19 63 6A 4D 9C 4D 84 A3 9E 6F 81 4E 71 8B D AE +3D 51 45 59 5D 36 57 3A 74 1D 5A 42 4F 6B 5F 57 +65 39 74 70 6C 98 81 74 56 6E 65 38 4A 6F 7C 3A +46 64 53 4A 40 51 62 A3 49 24 88 81 5E 77 5D 5F +38 1D 4C 6B 6A 35 2C 64 42 63 64 71 74 39 9E 51 +55 9B 48 53 16 50 61 5C 5B 76 40 7B 92 3E 69 5E +6B 83 50 5A 33 82 20 8B 3A 58 6C 7E 75 62 40 28 +86 4C 8C 79 27 6E 42 37 54 80 50 69 BD 2A 66 30 +A3 70 42 5B 91 3B 4E 50 41 74 61 90 68 55 50 45 +54 79 26 29 41 6A B1 6B 88 51 41 6C 89 38 27 3D +70 4D 8F 44 6D 74 6C 8C 47 56 61 5C 38 2F 74 7D +67 4A 5B 61 42 B3 9A 53 30 63 6B 82 77 81 41 6B +71 8B 90 3B 6D 6F 81 24 81 5D 48 30 5B 74 50 81 +2A 3C 4A 72 64 7E 77 5A 34 64 6E 80 6C 78 94 3D +8F 5A 8C 7D 44 93 42 79 B4 57 3B 3B 99 85 8A 8B +4E 6A 60 4F 44 3F 8B 7A 62 66 64 6E 38 8E 45 76 +21 7A 4C 31 7C 89 5C 82 79 45 29 8E 5A 71 8C 3B +5A 59 14 60 6F 60 63 3C 94 2E 1F 8D 46 6E 7C 5B +72 1F 79 B6 81 3B 45 27 74 A9 30 27 62 4D 2D 33 +40 41 42 4C 88 3E 47 3F 3A 8A 7C 7C 51 61 45 30 +2B 8E 88 4E 6B 9F 3F 41 5A 9B 86 9C 75 75 74 81 +77 31 2C 81 99 4E 5A 4A 2E 52 8B 3B 65 7D 3F 64 +5E 92 23 5E 2F 1F 85 4B 82 57 5B 63 21 7A 83 5A +15 A7 51 62 60 6F 41 33 45 24 53 18 9A 8C 4D 7E +81 73 7E B4 6A 8A 60 2F 4B 82 41 76 8B 34 86 92 +41 26 5C 5F 5C 85 38 79 64 4D 6A 95 73 95 4E 4C +67 7C 86 61 8C 7B 5C 42 3C A1 61 4D 2B 72 56 51 +6A 34 38 81 52 57 47 8A 62 49 3B 7E 2E 8D 77 67 +94 93 5D 52 5B 2E 9D 3B 94 93 4B 55 58 7C 6C A0 +81 5A A1 6A 3C 75 6D 80 62 54 3C 3D 8E 8E A5 80 +7C 47 2D 5D 2A 56 8B 76 48 5C 39 41 71 8F 4A 31 +49 4D 90 37 57 30 41 91 76 6E 60 86 6B 54 62 67 +72 7C 67 6E 7D 97 84 40 69 22 7F 41 92 B0 63 59 +7A 4C 5A 79 68 7A 8C 48 43 4F 41 4E 7A 4F 6F 64 +71 89 A7 4F 48 23 5C 44 47 8E 62 AE 5B 9C 70 20 +79 66 4D 7C 59 40 6A 3D 5F 51 51 73 51 63 3A 67 +82 26 53 55 48 33 5D 83 74 51 5A 8D 38 7C 65 86 +35 68 A5 AE 69 44 7B 61 50 30 61 BF 36 36 85 5E +6E 4C 77 4C 86 4A 32 40 5B 87 65 91 6C 7A 6D 80 +89 56 A1 78 6C 71 5B 78 80 3D 66 33 91 86 74 43 +5C 38 45 59 79 64 42 4C 62 1A 82 2C 67 5E 64 4D +74 50 78 66 4D 5C 6E 60 76 60 6A 38 4A 60 63 77 +55 83 4F 60 6F 27 47 76 5F 29 4C 58 3C 6B 53 62 +29 4C 4 AC 78 8C 36 58 9D 3D 64 21 98 8C 3E 59 +24 76 78 72 58 3C 66 57 36 8C 8F 4F 42 5B 3B 22 +70 4C 5F 71 57 3D 98 86 90 48 3D 4A 75 8B 62 62 +2B 69 32 6A 4B 64 6C 75 61 6F 2F 52 9E 5F 8E B0 +39 57 7A 32 A5 4E 7B 80 6C 45 9B 7F 3B 8F 7A 2D +76 79 9A 69 6B 9D 5 48 97 7D 30 34 7B A6 59 82 +8C 56 30 6A 79 44 51 4A 94 5F 91 67 36 85 45 8E +8F 78 1C 54 52 52 5C 57 A1 5B 66 7E 4A A6 4B 70 +A0 69 7E 82 9E 88 6F 49 5C 70 79 52 18 41 4A 5E +95 5E 43 4C 4E 59 69 6F 79 7C 3A 83 83 48 82 64 +57 83 3E A0 51 57 44 52 50 6B 4D 7B 70 48 94 8F +61 44 51 3F 19 7E 3E 89 8A 68 87 57 3F 53 53 2E +9B 8B 60 68 7B 3E 58 65 44 BB 85 AB 8A 62 68 4E +3F AF 4F 22 58 5C 76 7F 75 99 88 2E 85 35 35 62 +7B 73 6A 5E 98 A6 33 35 55 69 53 74 86 5C 60 81 +25 8D A9 62 49 34 53 3B 49 92 F 2F 4C 4D 60 AC +A4 5E 74 54 10 71 8C 72 8B 6A 27 3A 95 82 60 69 +45 3E 5A 78 67 8D 68 70 61 6C 63 57 63 8C 5F 6E +A0 6B 37 6B 7A 4D 18 A8 9D 91 87 44 59 83 9E 74 +61 68 3B 72 7B 78 3B 70 80 84 7E 74 2F 83 21 2B +5B 40 39 68 75 64 79 97 79 5B 73 44 6E 86 5C 10 +2B 57 52 62 2F 5C 4D 3C 33 7C 6A 7A 7E A7 51 67 +B7 43 6F 91 56 7B 76 1E 32 8A A4 62 16 8E 5A 6F +87 5F 66 7C 65 4B 7C 2D 5D 77 33 55 A6 49 63 6C +6C 6D 73 73 72 47 1D 61 1E 71 66 6C 57 49 86 6B +95 34 56 7E 6C 67 4E 95 50 65 A7 61 62 43 67 95 +52 96 6B 5F 31 3C 52 85 5B 49 86 63 5F 92 3F 7A +6E 5A 2F 4C 39 35 2C 5B 2F 68 67 5E 58 8A 92 A4 +5D 3A 44 44 61 68 77 5A 5D 81 3C 70 80 98 60 5F +38 66 77 70 8C 62 93 68 8A 3B 1F 50 73 82 7C 64 +1E 83 61 47 59 2D 38 51 6C 6E 56 9D 79 7E 93 86 +3F 7F 51 A9 4F 3F 92 5A 51 78 4A 6E 71 A1 7E A4 +70 6C 56 48 55 6D 32 38 2C 59 3B 8C 4C 50 58 22 +3A A5 8C 78 3E 4D 66 51 43 68 74 64 78 67 65 84 +4B 7B 3A 95 90 8A 53 89 46 5B 3E 58 60 6F B3 4B +B7 8D 53 28 45 5E 64 86 7C 47 7A 16 70 55 34 53 +59 81 71 A3 70 43 26 2B 9F 5F 30 4F 6B 58 52 1F +5E 51 B0 45 2C 3A 58 1C 4A 48 5A 95 30 7A 4C 2B +5D 81 A8 64 5A 73 4D 27 56 34 50 79 50 76 56 4C +91 53 5A 45 7B 97 46 48 A2 89 5E 4C 54 48 66 94 +8D 7D 3F 9F 29 66 95 5D 46 42 51 38 69 91 5F 42 +91 4A 68 47 8A 32 61 39 43 72 83 88 6F 45 84 50 +51 8E B5 79 90 80 52 85 46 41 63 76 61 48 4C 76 +46 8C 68 2A 67 83 7D 7F 8B 38 5A 49 79 5D 26 40 +80 4D 4E 57 87 78 7D 6F 77 58 49 7E 87 3A 67 5E +5F 84 45 AF 32 4A 81 5C 27 B5 45 47 86 75 59 59 +4C 56 3D 76 4B 41 69 4E 69 38 7C 5B 52 71 A9 64 +69 67 6A B0 36 1D 32 55 82 63 25 40 A1 AC 38 64 +7F 7C 52 78 65 85 63 66 61 79 58 7E 36 38 7B 51 +80 82 7B 48 51 7D 66 4A 7F 78 38 90 71 87 7E 43 +93 5A 5E 74 57 7F A2 69 49 84 60 88 72 66 97 62 +4B 75 65 7A 7F A8 5C 5D 7F 54 5A A2 32 84 54 9B +32 4E 7D 4C 6A 56 41 64 65 22 77 74 39 98 46 91 +3E 42 62 71 49 90 43 8B 91 35 45 70 5B 43 69 40 +82 31 4C 88 B3 A6 7C 85 6F 77 65 6B 4F 52 47 75 +6F 2A 56 75 AC 86 52 87 85 5F 5F 16 43 65 69 5B +7C 69 82 84 55 68 8F 9E 44 9A 67 8A 8D 83 41 4E +18 58 41 80 4F 45 4C 6D 62 80 1C 6F 4D 74 66 74 +95 54 68 B8 75 8D 4F 5D 4D 60 4B 76 63 80 84 73 +78 67 9C 5C 5C 14 54 4B 8E 9D 4C 5A 73 74 65 68 +73 5B 61 77 94 62 64 8F BA 70 57 53 7E 71 8D 78 +9A 85 5C 77 8E 70 5B 88 76 7B 7B 77 6F 7D 43 45 +44 78 69 5F 72 B0 18 52 27 6E B2 6A 91 2F 60 3E +AF 64 48 72 52 61 52 4C 83 70 79 67 B3 54 52 91 +4D 40 5A 6C 76 7A 71 9E 8D 46 2F A3 5D 92 73 43 +83 6C B0 51 4D 53 3C 74 78 87 73 57 5C 8B 4E 90 +75 4C 9A B4 47 4E 80 40 83 90 74 62 3F 3E 6C 99 +45 78 4D 77 6D 6E 65 67 4A 45 6C 67 6B 62 63 90 +55 2B 8A 5B 94 75 75 94 88 3C 4D 9F 4F 30 6D 72 +2F 37 40 77 8D 46 73 43 4C 54 70 B1 55 55 7B 62 +3E A8 32 24 98 6C AD 7B 8A 5F 9B 7D A2 28 42 7E +A2 66 64 4E 6D 6D 29 83 26 80 76 A3 88 87 40 52 +63 21 89 69 5A A7 98 5C 9 68 41 64 64 53 67 3A +93 5E 56 6E 6D 76 4B 66 3B 64 44 AF 25 4F 7A 5E +5E 3D 4C 2E 4F 4F 7C 4D 87 5E 83 7E 7B 2C 4D 99 +4C 66 63 3B 5B 52 52 69 9F 1A 4B 38 68 2C 45 40 +59 80 35 39 58 44 4D 41 48 72 74 78 4A 75 48 7C +7B 8F 8C 96 A1 5F 82 6E 57 29 58 91 5F 46 54 3B +6B 54 4E 90 5A A9 62 44 61 66 5F 49 90 97 4B 29 +6F 43 7E 78 6D 95 69 45 5C 4B 5F 8C 73 4E 7B 7D +51 6C 6A 52 77 57 5C 70 2B BA 7B 74 59 46 40 6B +53 74 57 34 51 71 4D 5C 62 8B 7C 67 92 50 75 AE +85 76 66 56 4A 66 50 49 6D A7 3F 8D 5D 76 76 78 +5B 9F 52 90 6E 51 58 4A 95 41 7F 66 36 83 74 8A +6E 75 87 92 99 3E 8F 46 6C 63 6D 5B 33 5B 74 37 +2D 8D 45 44 38 99 8E 6D 18 7A 84 84 7A 90 74 7B +5F 5B 5E 5D 58 87 27 60 6D 5B 6E 6D 83 69 45 2F +64 6A 46 56 84 6A 45 57 9F 4C A7 6E 78 8D 36 49 +85 6E 82 4A A4 34 3B 59 45 6B 5A 66 79 59 73 9D +76 7C 9C 62 60 99 1F 45 41 65 33 99 5E 48 55 33 +7A 4A 55 31 9D 8E 8D 4F 86 4F 5A 59 87 75 67 23 +2C 4C 95 3C 70 69 9B 86 47 59 5F 9F 5D 3B 3D 7E +64 6D 69 97 70 58 4B 56 43 AB 50 89 8B 88 5E 1E +67 48 52 43 54 51 46 B0 50 5D 4D 60 86 4F 50 98 +2B 52 7F 57 7F 71 6F 7D 6D 4C 51 3E 3B A3 5D 5D +3E 88 4D 96 68 66 4B 3F 31 61 80 56 98 48 72 7F +6D 57 83 8A 57 3F 75 83 4E 6B 4F 5F B9 7D 80 6D +42 10 71 48 63 59 62 34 42 97 93 28 74 48 54 36 +95 77 64 9B 4D 86 83 45 61 42 4B 6D 41 4F 84 42 +3B 5D 4F 75 66 45 46 9C 1B 50 42 7C 6A 7A 49 37 +27 83 70 79 90 5C 59 48 88 4E 6A 93 53 92 4D 74 +4E 69 65 55 68 AA 76 34 3A 76 3B 70 79 85 78 5E +BC A5 34 47 59 42 48 58 68 6A 91 7A 6D A1 7B 75 +62 46 35 9C 96 83 3A 8C 91 64 92 65 4D 52 67 44 +3C 5E 99 5C 97 6D 5F 30 3F 8D 4E 93 62 2A 8C 33 +34 49 67 61 7D 8D 56 55 44 71 42 71 68 4C 35 33 +6C 72 3A 93 33 69 5A 65 6D 61 46 75 77 24 82 3E +7B A6 52 61 30 44 46 5C 6B 51 98 6D 4F 58 57 85 +3E 64 6C 49 3E AA 71 25 6D 83 79 8B 7B 5C 71 81 +46 64 39 93 7C 4A 87 9D A0 39 88 68 5A 62 4D 4B +80 89 8B 74 77 36 7C 74 26 6E 58 87 6D 7F 92 39 +8C 7B 35 40 59 8D 75 78 62 7F 2C 47 88 75 60 41 +5C 35 86 4E 43 60 60 44 73 5D 96 68 1F 3F 91 5E +93 77 47 94 32 7D 3F 3E 65 54 31 46 65 79 54 7C +3D 7E 39 90 32 B3 1E 6F 51 83 99 51 36 5F 56 29 +64 63 59 54 6D 39 30 47 5B 62 54 5A 7C 8D AB 30 +59 85 25 85 91 6C 2D AF 84 87 78 B0 53 33 2A 4F +27 25 3B 36 4F 52 A0 76 8A 77 41 69 60 41 58 38 +3A 56 A5 7A 67 8F 4B 47 64 92 7A 5E 7A B 5E 45 +4B 7F 92 6D 6A 50 5C 78 45 73 73 7E 4D 94 29 7C +58 72 57 6C 49 89 25 5B 8E 6E 65 80 1E 5F 58 67 +56 90 93 74 88 56 88 2C 66 7B 70 38 7F 70 57 38 +89 3A 47 3C 6D 99 5B 8F 4E 4E 19 63 44 3C 6F 86 +82 65 6A 68 89 6D 46 81 5E 8D 55 40 67 4B 4C 6F +63 57 57 40 72 15 72 6E 78 78 8D 53 6B 4C A9 69 +77 97 78 72 48 73 6D 49 82 61 47 54 2E 42 66 62 +34 65 56 3E 89 6F 8B 31 6B 33 36 4C 89 55 39 3F +49 2B 45 7D 56 76 84 5B 5D 53 5C 42 4D 6B 63 7F +8F 38 65 7A 72 25 9B 7D 44 9E 6B 78 76 76 67 96 +6D 57 58 4C 94 7B 69 40 63 43 79 5F 3D 82 4A 63 +8E 4C 79 77 8A 6C 7C 3F 43 3D 66 3A 41 83 8C 87 +AF 85 89 B5 90 2C 4E 68 6C 57 67 64 6A 83 5B 46 +59 7D 51 45 68 91 4F 3D 5E 67 98 86 1A 51 79 91 +81 A2 6D 5A 25 B3 67 61 69 75 99 4D 6F 7C 7B 1B +36 60 64 9C 68 7F A0 24 2A 65 7C 3D 46 43 36 78 +81 46 71 74 68 70 20 72 9B 65 8D 79 73 5E 59 7A +83 4B 6D 55 93 7D 69 70 5A 59 37 6F 24 68 9E 3B +4B 41 79 65 86 6B 75 61 44 7D 48 2D 6E 57 90 80 +43 9A 31 1F 58 80 5D 8B 46 43 62 73 5B 51 27 94 +6D 5C 43 5D 47 64 40 6E 5E 67 6A 86 5F 7F 44 65 +69 76 56 7A 31 9D 79 50 4B 67 51 54 8B 65 55 83 +40 65 60 72 81 44 A4 31 48 56 4C 42 54 3C 55 57 +A9 67 60 63 56 9A 90 36 2F 47 31 65 36 B1 5A 61 +48 74 69 3D 3F 5D 76 9D 4C 59 5D 92 44 93 6E 34 +5A 43 59 27 7A 55 5B 60 7B 6C 68 59 72 59 82 69 +6B 7F 16 92 33 4B 3C 62 64 78 49 84 50 96 46 34 +54 45 65 58 88 7A 8E A0 2D 6B 52 92 53 20 77 4A +6A 6A 41 9A 64 45 4B 48 3C 74 85 7D 75 7B 63 62 +71 84 30 3B 82 84 5D 87 93 75 90 7C 5C A0 79 7F +40 42 48 A3 6C 6B 71 72 5C 44 5B 9A 52 7F 52 64 +49 50 65 72 3E 60 6A 61 AF A7 1D 53 6F 70 5B 61 +88 4F 74 47 88 66 6C 24 50 21 6A 6D 57 7E 99 9F +85 60 63 36 51 5B 84 2F 76 70 2A 53 45 7C 9A 5A +4F 58 4A B4 56 86 8A 23 78 7A 98 27 64 8D 53 43 +73 3E 70 8A 54 90 75 91 83 78 6E 3D 49 60 70 66 +43 5B 7E 41 80 51 4F 58 2A 37 80 43 8D 5A 75 94 +5A 3F A6 7B 93 70 6E 60 66 5E 9B 94 5E 43 53 5E +5A 54 8E 5D 28 35 69 72 82 99 7B 76 96 5E 88 8A +59 75 41 55 98 6E 4B 55 46 1B 49 68 6C 89 72 40 +45 6E 74 30 7B 4E 47 65 2D 73 5B 6E 45 5F 56 3B +57 3E 89 80 5B 68 69 25 30 33 4A 4E 25 85 88 70 +59 61 93 A4 67 5B 34 53 1B 47 63 6D 7E 42 26 30 +55 53 74 95 55 72 79 82 7C 7D 9A 7D 3A 54 6D 7C +87 82 83 A6 37 90 61 43 35 57 71 35 A9 64 25 75 +4F 4A A4 6F 48 86 5B 6E 61 85 34 7A 45 44 7C 98 +4F 58 7D 4A 95 7D 73 5B 51 79 49 85 3C 7A 90 4D +61 72 62 2D A0 89 68 7D 6B 50 98 94 35 70 4B 6B +6D 92 42 6A 4A 72 41 4E 5B 6E 48 9D 82 6E 45 40 +3E 5B 82 86 99 67 5D 46 70 71 5E 8F 4F 41 7B 59 +6A 2C 5D 67 5E 55 50 84 4F 60 96 29 6F 5B 81 32 +44 56 8C 79 8B 44 68 7E 5C 32 32 93 49 72 70 44 +82 49 65 76 5C 6B 67 31 6B 6A 7B 72 A4 63 6E 87 +66 47 58 2D 52 88 6E 56 53 86 7F 6C 26 7F 77 5A +74 4C 85 4B 7A AC 3B 81 62 5C 7C B7 A8 65 60 77 +83 60 19 6F 67 90 4E 73 84 6D 85 A7 58 73 9C 6A +74 7C 40 51 77 40 56 95 37 49 24 48 41 64 4E 34 +75 7E 6D 3B 36 70 13 6C 68 2F 39 72 3D A0 6D 68 +2F 67 31 8C 48 52 6A 7C A0 B0 AA 37 7B 7C 23 72 +72 B4 9E 48 53 7A 6D 4C A0 73 64 6F AC 6F 38 69 +85 39 5F 76 7B 56 54 5E 44 4E 22 11 2A A4 6D 79 +95 3F 77 55 3E 50 51 8D 38 47 72 6C 86 85 66 71 +63 8D 63 59 63 82 40 A5 88 6C 32 1E 58 73 63 37 +71 B4 21 4C 37 79 6E AE 40 6F 74 6C 5C 46 80 54 +26 8F 55 55 65 7B 56 84 9A 63 A5 36 8C 45 46 7C +9D 36 59 4A 78 6F B1 56 76 49 78 3D 71 4E 28 81 +87 29 8D 73 7D 8C 5F 7D 7F 62 49 79 4C 32 66 9D +7A 78 2E 69 4D 50 7F 82 55 78 58 6A 64 59 67 31 +42 75 67 75 60 7B 9A 92 31 2B 40 5E 67 55 66 6D +71 A2 75 4D 5B 9B 6F 31 34 74 7B 96 6B 9A 6D 79 +43 4A 75 75 7B 71 5C 28 7A 82 6A 74 52 68 8F 37 +6F 96 98 7B 77 97 8A A2 75 84 39 71 AA 96 3D 7C +4B 63 6A 51 53 70 83 7B 71 91 50 1B 88 4F 97 4A +5C 42 3D 4A 67 85 56 58 53 54 32 45 63 6F 93 41 +5D 56 9E 80 51 56 3E 52 88 2A 54 15 B1 93 6A 53 +4C 82 6E 77 61 56 96 9B 59 72 4C 80 80 70 94 6C +56 73 3E 65 53 74 5C 93 4B 73 57 72 6F 35 64 3D +99 44 3B 91 5B 73 58 33 8F 47 80 8D 71 72 8D 91 +76 85 95 6F 3F 2A 3F 5A 70 2C A1 77 43 84 73 7A +1E 49 50 36 37 6C 56 71 AF 5A 3F 80 76 59 68 1F +A9 AD 6D 7A 35 4B 5C 9E 50 85 38 7B 63 60 8B 31 +50 4C 7A 60 87 80 4E 3F 74 6C 3E 21 8F 54 46 64 +57 5D A9 6B 5A 80 7B 77 34 9C 49 71 24 99 27 84 +46 93 30 7D 6A 9C 4B 83 44 93 5C 77 4B 52 61 79 +87 2F 56 75 38 5D 77 68 6C 50 9D 5E 74 9F 50 48 +52 40 24 5D 9B 7B 16 61 5B 6A 63 7A 83 7B 4A 79 +63 A5 85 6A 6F 80 22 43 76 5F 4B 95 66 78 77 73 +28 A0 2A AA A0 6A A9 8F 48 5A 5E 4E 85 6F 46 97 +68 6A 66 A0 75 2A A5 A7 83 5A 20 A 73 AB 6C 54 +36 82 6A 55 53 73 70 72 4E 74 7C 57 5B 3A 7E 9B +54 6E 7D 5A 66 65 80 7D 72 8B 29 52 29 8C 4F 34 +32 4E 52 63 12 2D 51 86 4A 52 B1 45 2C 5E 71 7F +9D 59 3D 49 54 A5 84 56 5C 3B 2A A1 49 7E 8C 7B +61 7B 65 5E 59 90 5B 67 7F 2B 9D 92 5E 54 48 59 +55 4D 70 61 3D 7E 2F 2F 6C 68 81 6B 74 45 55 8A +6E 4D 78 3F 84 5F 81 3A 67 12 79 86 4F 61 95 4E +7A 48 65 6B 6C 73 3F 86 61 57 9D 2F 54 3B 91 A0 +93 2D 51 13 35 7C 41 33 58 64 6E 6B 5A 4D 56 2A +3B 34 40 6F 42 1E 54 3F 59 5B 30 6E 78 64 29 82 +75 6F 52 5B 84 75 45 65 87 55 56 6C 8B 55 7C 10 +60 7C 38 7C 79 49 46 57 5C 69 54 52 5E 66 9F 30 +75 31 84 30 49 64 75 62 9A 36 27 34 57 39 60 90 +59 77 7B 6B 5E 66 70 3B 3C 75 3F 87 38 54 58 84 +60 7C 71 70 7E 63 5C 66 69 1D 32 72 6A 5A 3D 64 +94 45 A1 72 58 A2 35 54 4B 24 7C 5D 53 5E 55 81 +9F 82 71 28 8B 5C 12 82 46 2E 74 5A 5B 76 76 68 +71 77 49 35 54 63 63 4C 1A 72 6A 60 12 81 79 8D +6C 4D 4A 4A 8D 73 8D 36 83 77 4F 44 6B 85 45 1F +72 45 6D 5D 8D 88 86 5A 3F 55 6A 53 88 5B 90 5F +80 54 4C 6A 48 1C 7E 77 76 6F 2F 89 85 64 97 68 +59 42 49 9A F 77 9C 4B 4D 51 42 70 8D 86 2F 5F +9C 4F 6C 4F 74 6D 45 66 95 5F 35 54 5C 73 43 85 +49 AF 39 7A 98 6C 5B 80 1F 52 88 5A 98 85 49 5E +5D 8A 36 3F 79 3D 72 73 83 31 1F 5B 62 7F 1D 71 +36 B7 48 37 5D 6D 5E 70 93 12 67 1C 5F 52 64 6B +43 79 57 42 81 31 54 6A 93 7B 52 7C 76 A6 6E 2B +22 72 96 68 87 4E 85 6F 38 76 96 5D 46 2A B4 3B +6F 25 76 7B 6E 70 5A 92 93 87 79 7D 40 5E B5 74 +8B 4E 71 5D 62 79 2F 54 56 4D 38 62 90 52 9B 64 +1C 62 5B 47 74 85 41 6F 7E 47 89 22 75 98 A5 41 +70 55 68 79 8C 5B 4C 6E 6C AA 2F 51 57 A5 54 6D +A7 5E 7E 88 8C 44 43 89 40 5F 23 56 70 6E 7F 56 +65 13 53 74 4B 31 1F 61 73 55 5E 79 90 68 16 31 +B3 7A A5 5A 5D 7C 4D 9C 55 2B 48 57 4C 18 62 65 +58 52 51 92 71 4A 52 55 B6 31 55 56 4C 26 50 81 +71 61 9C 7D 2A 68 62 65 95 46 8A 62 5D 70 97 92 +5E 54 67 33 3A 4A 6F 42 82 5B 5D 51 4D 92 46 8B +11 A3 5D 8D 38 8D B9 48 5A 75 85 5C 63 7F 89 5E +3A 43 49 36 7C 1A 7E 5B 6D 46 80 59 51 63 4D 6E +3F 69 40 D 77 91 3F 45 1C 67 93 56 47 6D 5A 1B +62 8C 20 7F 71 83 66 51 5B 59 68 5B 61 62 8F 4E +72 A1 91 8C 50 65 79 3D 3F 5D 3B 68 68 5B 4B 6C +31 43 96 1F 86 7D 4F 34 8A 78 54 5A 70 93 5C 6E +3F 9A 7F 42 62 50 5C 65 6C 7C 2D 80 52 58 60 64 +5B 86 31 57 77 64 44 44 5C 9E 45 AA 52 5D 85 48 +6D 8F 47 6A 41 72 80 8E 6E 5F 4B 58 1F 34 78 67 +4D 62 96 5C 49 83 53 30 56 58 81 83 67 5C 63 8A diff --git a/repo/tb/reference/images/memory_map.jpg b/repo/tb/reference/images/memory_map.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65dd70ae356e6ac0d90e12b9e642d9db4d9e9351 GIT binary patch literal 11833 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 G)c;?cfApyU literal 0 HcmV?d00001 diff --git a/repo/tb/reference/images/pdf_listing.jpg b/repo/tb/reference/images/pdf_listing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8d923cbcb748c1b5ee2aa641dfef78144c84705 GIT binary patch literal 137825 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 z

mkUYQr`2-mH7Qr^&m=WY)yP$2hoqb8M2FDa% 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

0I*wb^Ls%V(XkKejw9~)>q-6rY>T|vAr2W?)% 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 (File Offset: 0x1000): +main(): +bfc00000: 010000ef jal ra,bfc00010 (File Offset: 0x1010) +bfc00004: 020000ef jal ra,bfc00024 (File Offset: 0x1024) + +bfc00008 (File Offset: 0x1008): +forever(): +bfc00008: 050000ef jal ra,bfc00058 (File Offset: 0x1058) +bfc0000c: ffdff06f jal zero,bfc00008 (File Offset: 0x1008) + +bfc00010 (File Offset: 0x1010): +init(): +bfc00010: 10000593 addi a1,zero,256 + +bfc00014 <_loop1> (File Offset: 0x1014): +_loop1(): +bfc00014: fff58593 addi a1,a1,-1 +bfc00018: 10058023 sb zero,256(a1) +bfc0001c: fe059ce3 bne a1,zero,bfc00014 <_loop1> (File Offset: 0x1014) +bfc00020: 00008067 jalr zero,0(ra) + +bfc00024 (File Offset: 0x1024): +build(): +bfc00024: 000105b7 lui a1,0x10 +bfc00028: 00000613 addi a2,zero,0 +bfc0002c: 10000693 addi a3,zero,256 +bfc00030: 0c800713 addi a4,zero,200 + +bfc00034 <_loop2> (File Offset: 0x1034): +_loop2(): +bfc00034: 00c587b3 add a5,a1,a2 +bfc00038: 0007c283 lbu t0,0(a5) +bfc0003c: 00d28833 add a6,t0,a3 +bfc00040: 00084303 lbu t1,0(a6) +bfc00044: 00130313 addi t1,t1,1 +bfc00048: 00680023 sb t1,0(a6) +bfc0004c: 00160613 addi a2,a2,1 +bfc00050: fee312e3 bne t1,a4,bfc00034 <_loop2> (File Offset: 0x1034) +bfc00054: 00008067 jalr zero,0(ra) + +bfc00058 (File Offset: 0x1058): +display(): +bfc00058: 00000593 addi a1,zero,0 +bfc0005c: 0ff00613 addi a2,zero,255 + +bfc00060 <_loop3> (File Offset: 0x1060): +_loop3(): +bfc00060: 1005c503 lbu a0,256(a1) # 10100 (File Offset: 0xffffffff40411100) +bfc00064: 00158593 addi a1,a1,1 +bfc00068: fec59ce3 bne a1,a2,bfc00060 <_loop3> (File Offset: 0x1060) +bfc0006c: 00008067 jalr zero,0(ra) + +Disassembly of section .riscv.attributes: + +00000000 <.riscv.attributes> (File Offset: 0x1070): + 0: 1e41 .2byte 0x1e41 + 2: 0000 .2byte 0x0 + 4: 7200 .2byte 0x7200 + 6: 7369 .2byte 0x7369 + 8: 01007663 bgeu zero,a6,14 (File Offset: 0x1084) + c: 0014 .2byte 0x14 + e: 0000 .2byte 0x0 + 10: 7205 .2byte 0x7205 + 12: 3376 .2byte 0x3376 + 14: 6932 .2byte 0x6932 + 16: 7032 .2byte 0x7032 + 18: 5f30 .2byte 0x5f30 + 1a: 326d .2byte 0x326d + 1c: 3070 .2byte 0x3070 + ... diff --git a/repo/tb/reference/pdf.s b/repo/tb/reference/pdf.s new file mode 100644 index 0000000..0dbb664 --- /dev/null +++ b/repo/tb/reference/pdf.s @@ -0,0 +1,43 @@ +.text +.equ base_pdf, 0x100 +.equ base_data, 0x10000 +.equ max_count, 200 +main: + JAL ra, init # jump to init, ra and save position to ra + JAL ra, build +forever: + JAL ra, display + J forever + +init: # function to initialise PDF buffer memory + LI a1, 0x100 # loop_count a1 = 256 +_loop1: # repeat + ADDI a1, a1, -1 # decrement a1 + SB zero, base_pdf(a1) # mem[base_pdf+a1) = 0 + BNE a1, zero, _loop1 # until a1 = 0 + RET + +build: # function to build prob dist func (pdf) + LI a1, base_data # a1 = base address of data array + LI a2, 0 # a2 = offset into of data array + LI a3, base_pdf # a3 = base address of pdf array + LI a4, max_count # a4 = maximum count to terminate +_loop2: # repeat + ADD a5, a1, a2 # a5 = data base address + offset + LBU t0, 0(a5) # t0 = data value + ADD a6, t0, a3 # a6 = index into pdf array + LBU t1, 0(a6) # t1 = current bin count + ADDI t1, t1, 1 # increment bin count + SB t1, 0(a6) # update bin count + ADDI a2, a2, 1 # point to next data in array + BNE t1, a4, _loop2 # until bin count reaches max + RET + +display: # function send PDF array value to a0 for display + LI a1, 0 # a1 = offset into pdf array + LI a2, 255 # a2 = max index of pdf array +_loop3: # repeat + LBU a0, base_pdf(a1) # a0 = mem[base_pdf+a1) + addi a1, a1, 1 # incr + BNE a1, a2, _loop3 # until end of pdf array + RET diff --git a/repo/tb/reference/triangle.mem b/repo/tb/reference/triangle.mem new file mode 100644 index 0000000..bdc2852 --- /dev/null +++ b/repo/tb/reference/triangle.mem @@ -0,0 +1,4096 @@ + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 +E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB +D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 +C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 +B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 +A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 93 92 90 8F +8E 8D 8C 8B 89 88 87 86 85 83 82 81 80 7F 7E 7C +7B 7A 79 78 77 75 74 73 72 71 6F 6E 6D 6C 6B 6A +68 67 66 65 64 62 61 60 5F 5E 5D 5B 5A 59 58 57 +56 54 53 52 51 50 4E 4D 4C 4B 4A 49 47 46 45 44 +43 41 40 3F 3E 3D 3C 3A 39 38 37 36 35 33 32 31 +30 2F 2D 2C 2B 2A 29 28 26 25 24 23 22 20 1F 1E +1D 1C 1B 19 18 17 16 15 14 12 11 10 F E C B + A 9 8 7 5 4 3 2 1 2 3 4 5 7 8 9 + A B C E F 10 11 12 14 15 16 17 18 19 1B 1C +1D 1E 1F 20 22 23 24 25 26 28 29 2A 2B 2C 2D 2F +30 31 32 33 35 36 37 38 39 3A 3C 3D 3E 3F 40 41 +43 44 45 46 47 49 4A 4B 4C 4D 4E 50 51 52 53 54 +56 57 58 59 5A 5B 5D 5E 5F 60 61 62 64 65 66 67 +68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 77 78 79 7A +7B 7C 7E 7F 80 81 82 83 85 86 87 88 89 8B 8C 8D +8E 8F 90 92 93 94 95 96 97 99 9A 9B 9C 9D 9F A0 +A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 +B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 +C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 +D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 +E8 E6 E5 E4 E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 +D5 D4 D2 D1 D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 +C2 C1 C0 BE BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 +AF AE AD AC AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D +9C 9B 9A 99 97 96 95 94 93 92 90 8F 8E 8D 8C 8B +89 88 87 86 85 83 82 81 80 7F 7E 7C 7B 7A 79 78 +77 75 74 73 72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 +64 62 61 60 5F 5E 5D 5B 5A 59 58 57 56 54 53 52 +51 50 4E 4D 4C 4B 4A 49 47 46 45 44 43 41 40 3F +3E 3D 3C 3A 39 38 37 36 35 33 32 31 30 2F 2D 2C +2B 2A 29 28 26 25 24 23 22 20 1F 1E 1D 1C 1B 19 +18 17 16 15 14 12 11 10 F E C B A 9 8 7 + 5 4 3 2 1 2 3 4 5 7 8 9 A B C E + F 10 11 12 14 15 16 17 18 19 1B 1C 1D 1E 1F 20 +22 23 24 25 26 28 29 2A 2B 2C 2D 2F 30 31 32 33 +35 36 37 38 39 3A 3C 3D 3E 3F 40 41 43 44 45 46 +47 49 4A 4B 4C 4D 4E 50 51 52 53 54 56 57 58 59 +5A 5B 5D 5E 5F 60 61 62 64 65 66 67 68 6A 6B 6C +6D 6E 6F 71 72 73 74 75 77 78 79 7A 7B 7C 7E 7F +80 81 82 83 85 86 87 88 89 8B 8C 8D 8E 8F 90 92 +93 94 95 96 97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 +A6 A7 A8 A9 AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 +B8 BA BB BC BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA +CB CD CE CF D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD +DE DF E1 E2 E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 +E3 E2 E1 DF DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 +D0 CF CE CD CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE +BD BC BB BA B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC +AA A9 A8 A7 A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 +97 96 95 94 93 92 90 8F 8E 8D 8C 8B 89 88 87 86 +85 83 82 81 80 7F 7E 7C 7B 7A 79 78 77 75 74 73 +72 71 6F 6E 6D 6C 6B 6A 68 67 66 65 64 62 61 60 +5F 5E 5D 5B 5A 59 58 57 56 54 53 52 51 50 4E 4D +4C 4B 4A 49 47 46 45 44 43 41 40 3F 3E 3D 3C 3A +39 38 37 36 35 33 32 31 30 2F 2D 2C 2B 2A 29 28 +26 25 24 23 22 20 1F 1E 1D 1C 1B 19 18 17 16 15 +14 12 11 10 F E C B A 9 8 7 5 4 3 2 + 1 2 3 4 5 7 8 9 A B C E F 10 11 12 +14 15 16 17 18 19 1B 1C 1D 1E 1F 20 22 23 24 25 +26 28 29 2A 2B 2C 2D 2F 30 31 32 33 35 36 37 38 +39 3A 3C 3D 3E 3F 40 41 43 44 45 46 47 49 4A 4B +4C 4D 4E 50 51 52 53 54 56 57 58 59 5A 5B 5D 5E +5F 60 61 62 64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 +72 73 74 75 77 78 79 7A 7B 7C 7E 7F 80 81 82 83 +85 86 87 88 89 8B 8C 8D 8E 8F 90 92 93 94 95 96 +97 99 9A 9B 9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 +AA AC AD AE AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC +BD BE C0 C1 C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF +D0 D1 D2 D4 D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 +E3 E4 E5 E6 E8 E9 EA E9 E8 E6 E5 E4 E3 E2 E1 DF +DE DD DC DB D9 D8 D7 D6 D5 D4 D2 D1 D0 CF CE CD +CB CA C9 C8 C7 C5 C4 C3 C2 C1 C0 BE BD BC BB BA +B8 B7 B6 B5 B4 B3 B1 B0 AF AE AD AC AA A9 A8 A7 +A6 A4 A3 A2 A1 A0 9F 9D 9C 9B 9A 99 97 96 95 94 +93 92 90 8F 8E 8D 8C 8B 89 88 87 86 85 83 82 81 +80 7F 7E 7C 7B 7A 79 78 77 75 74 73 72 71 6F 6E +6D 6C 6B 6A 68 67 66 65 64 62 61 60 5F 5E 5D 5B +5A 59 58 57 56 54 53 52 51 50 4E 4D 4C 4B 4A 49 +47 46 45 44 43 41 40 3F 3E 3D 3C 3A 39 38 37 36 +35 33 32 31 30 2F 2D 2C 2B 2A 29 28 26 25 24 23 +22 20 1F 1E 1D 1C 1B 19 18 17 16 15 14 12 11 10 + F E C B A 9 8 7 5 4 3 2 1 2 3 4 + 5 7 8 9 A B C E F 10 11 12 14 15 16 17 +18 19 1B 1C 1D 1E 1F 20 22 23 24 25 26 28 29 2A +2B 2C 2D 2F 30 31 32 33 35 36 37 38 39 3A 3C 3D +3E 3F 40 41 43 44 45 46 47 49 4A 4B 4C 4D 4E 50 +51 52 53 54 56 57 58 59 5A 5B 5D 5E 5F 60 61 62 +64 65 66 67 68 6A 6B 6C 6D 6E 6F 71 72 73 74 75 +77 78 79 7A 7B 7C 7E 7F 80 81 82 83 85 86 87 88 +89 8B 8C 8D 8E 8F 90 92 93 94 95 96 97 99 9A 9B +9C 9D 9F A0 A1 A2 A3 A4 A6 A7 A8 A9 AA AC AD AE +AF B0 B1 B3 B4 B5 B6 B7 B8 BA BB BC BD BE C0 C1 +C2 C3 C4 C5 C7 C8 C9 CA CB CD CE CF D0 D1 D2 D4 +D5 D6 D7 D8 D9 DB DC DD DE DF E1 E2 E3 E4 E5 E6 diff --git a/repo/tb/tests/base_testbench.h b/repo/tb/tests/base_testbench.h deleted file mode 100644 index ef94861..0000000 --- a/repo/tb/tests/base_testbench.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include - -#include "Vdut.h" -#include "verilated.h" -#include "verilated_vcd_c.h" -#include "gtest/gtest.h" - -#define MAX_SIM_CYCLES 10000 - -extern unsigned int ticks; - -class BaseTestbench : public ::testing::Test -{ -public: - void SetUp() override - { - top = std::make_unique(); -#ifndef __APPLE__ - tfp = std::make_unique(); - Verilated::traceEverOn(true); - top->trace(tfp.get(), 99); - tfp->open("waveform.vcd"); -#endif - initializeInputs(); - } - - void TearDown() override - { - top->final(); -#ifndef __APPLE__ - tfp->close(); -#endif - } - - virtual void initializeInputs() = 0; - -protected: - std::unique_ptr top; -#ifndef __APPLE__ - std::unique_ptr tfp; -#endif -}; \ No newline at end of file diff --git a/repo/tb/tests/cpu_testbench.h b/repo/tb/tests/cpu_testbench.h new file mode 100644 index 0000000..b60333a --- /dev/null +++ b/repo/tb/tests/cpu_testbench.h @@ -0,0 +1,99 @@ +#pragma once + +#include + +#include "Vdut.h" +#include "verilated.h" +#include "verilated_vcd_c.h" +#include "gtest/gtest.h" + +#define MAX_SIM_CYCLES 10000 + +class CpuTestbench : public ::testing::Test +{ +public: + void SetUp() override + { + // Create new context for simulation + context_ = new VerilatedContext; + ticks_ = 0; + } + + void setupTest(const std::string &name) + { + name_ = name; + // Assemble the program + std::ignore = system(("./assemble.sh asm/" + name_ + ".s").c_str()); + // Create default empty file for data memory + std::ignore = system("touch data.hex"); + } + + // CPU instantiated outside of SetUp to allow for correct + // program to be assembled and loaded into instruction memory + void initSimulation() + { + top_ = new Vdut(context_); + tfp_ = new VerilatedVcdC; + + // Initialise trace and simulation + Verilated::traceEverOn(true); + top_->trace(tfp_, 99); + tfp_->open(("test_out/" + name_ + "/waveform.vcd").c_str()); + + // Initialise inputs + top_->clk = 1; + top_->rst = 1; + top_->trigger = 0; + runSimulation(10); // Process reset + top_->rst = 0; + } + + // Runs the simulation for a clock cycle, evaluates the DUT, dumps waveform. + void runSimulation(int cycles = 1) + { + for (int i = 0; i < cycles; i++) + { + for (int clk = 0; clk < 2; clk++) + { + top_->eval(); + tfp_->dump(2 * ticks_ + clk); + top_->clk = !top_->clk; + } + ticks_++; + + if (Verilated::gotFinish()) + { + exit(0); + } + } + } + + void TearDown() override + { + // End trace and simulation + top_->final(); + tfp_->close(); + + // Free memory + if (top_) delete top_; + if (tfp_) delete tfp_; + delete context_; + + // Save data and program memory files to test_out directory + std::ignore = system(("mv data.hex test_out/" + name_ + "/data.hex").c_str()); + std::ignore = system(("mv program.hex test_out/" + name_ + "/program.hex").c_str()); + } + + void setData(const std::string &data_file) + { + // Fill data.hex with program data + std::ignore = system(("cp " + data_file + " data.hex").c_str()); + } + +protected: + VerilatedContext* context_; + Vdut* top_; + VerilatedVcdC* tfp_; + std::string name_; + unsigned int ticks_; +}; diff --git a/repo/tb/tests/mux_tb.cpp b/repo/tb/tests/mux_tb.cpp deleted file mode 100644 index 74c07a7..0000000 --- a/repo/tb/tests/mux_tb.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Verifies the results of the mux, exits with a 0 on success. - */ - -#include "base_testbench.h" - -Vdut *top; -VerilatedVcdC *tfp; -unsigned int ticks = 0; - -class MuxTestbench : public BaseTestbench -{ -protected: - void initializeInputs() override - { - top->sel = 0; - top->in0 = 0; - top->in1 = 0; - // output: out - } -}; - -TEST_F(MuxTestbench, Mux0WorksTest) -{ - top->sel = 0; - top->in0 = 1; - top->in1 = 0; - - top->eval(); - - EXPECT_EQ(top->out, 1); -} - -TEST_F(MuxTestbench, Mux1WorksTest) -{ - top->sel = 1; - top->in0 = 0; - top->in1 = 1; - - top->eval(); - - EXPECT_EQ(top->out, 1); -} - -int main(int argc, char **argv) -{ - top = new Vdut; - tfp = new VerilatedVcdC; - - Verilated::traceEverOn(true); - top->trace(tfp, 99); - tfp->open("waveform.vcd"); - - testing::InitGoogleTest(&argc, argv); - auto res = RUN_ALL_TESTS(); - - top->final(); - tfp->close(); - - delete top; - delete tfp; - - return res; -} diff --git a/repo/tb/tests/testbench.h b/repo/tb/tests/testbench.h deleted file mode 100644 index c37558c..0000000 --- a/repo/tb/tests/testbench.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "base_testbench.h" - -/** - * Class only exists because top->clk is not always accessible in the testbench, - * and will otherwise not compile. - */ -class Testbench : public BaseTestbench -{ -public: - // Runs the simulation for a clock cycle, evaluates the DUT, dumps waveform. - void runSimulation(int cycles = 1) - { - for (int i = 0; i < cycles; i++) - { - for (int clk = 0; clk < 2; clk++) - { - top->eval(); -#ifndef __APPLE__ - tfp->dump(2 * ticks + clk); -#endif - top->clk = !top->clk; - } - ticks++; - - if (Verilated::gotFinish()) - { - exit(0); - } - } - } - - void compile(const std::string &program) - { - // Compile - system(("./compile.sh " + program).c_str()); - } -}; \ No newline at end of file diff --git a/repo/tb/tests/verify.cpp b/repo/tb/tests/verify.cpp index b2168ed..ba210ae 100644 --- a/repo/tb/tests/verify.cpp +++ b/repo/tb/tests/verify.cpp @@ -1,49 +1,50 @@ -#include "testbench.h" #include +#include + +#include "cpu_testbench.h" #define CYCLES 10000 -unsigned int ticks = 0; +TEST_F(CpuTestbench, TestAddiBne) +{ + setupTest("1_addi_bne"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 254); +} + +TEST_F(CpuTestbench, TestLiAdd) +{ + setupTest("2_li_add"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1000); +} -class CpuTestbench : public Testbench +TEST_F(CpuTestbench, TestLbuSb) { -protected: - void initializeInputs() override - { - top->clk = 1; - top->rst = 0; - } -}; - -TEST_F(CpuTestbench, BaseProgramTest) + setupTest("3_lbu_sb"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 300); +} + +TEST_F(CpuTestbench, TestJalRet) { - bool success = false; - system("./compile.sh asm/program.S"); - - for (int i = 0; i < CYCLES; i++) - { - runSimulation(1); - if (top->a0 == 254) - { - SUCCEED(); - success = true; - break; - } - } - if (!success) - { - FAIL() << "Counter did not reach 254"; - } + setupTest("4_jal_ret"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 53); } -// Note this is how we are going to test your CPU. Do not worry about this for -// now, as it requires a lot more instructions to function -// TEST_F(CpuTestbench, Return5Test) -// { -// system("./compile.sh c/return_5.c"); -// runSimulation(100); -// EXPECT_EQ(top->a0, 5); -// } +TEST_F(CpuTestbench, TestPdf) +{ + setupTest("5_pdf"); + setData("reference/gaussian.mem"); + initSimulation(); + runSimulation(CYCLES * 100); + EXPECT_EQ(top_->a0, 15363); +} int main(int argc, char **argv) { diff --git a/repo/tb/verification.md b/repo/tb/verification.md new file mode 100644 index 0000000..81464f3 --- /dev/null +++ b/repo/tb/verification.md @@ -0,0 +1,48 @@ +

+ +## EIE2 Instruction Set Architecture & Compiler (IAC) + +--- +## Verification of the CPU + +**Ryan Voecks, V2.0 - 25 Nov 2024** + +--- + +
+ +## Quick Start + +The verification testing in this repository is significantly different from Lab 4. You will need to copy the new `tb` folder to your coursework repository. + +To run the tests, run the `doit.sh` script in this folder. + +**IMPORTANT - Your code must meet the following requirements for the script to work properly:** +1. Your RTL must be in a top-level folder called `rtl`. +2. The top-level module of your RTL must have the following interface: +```sv +module top ( + input logic clk, + input logic rst, + input logic trigger, + output logic [31:0] a0 +); + +endmodule +``` +3. Your instruction memory must load the file `"program.hex"`. +4. Your data memory must load the file `"data.hex"`. + +To keep the RTL consistent, it is recommended to use a shell script that moves the correct hex instructions and data into `"program.hex"` and `"data.hex"` when testing the PDF and F1 starting lights for Vbuddy. + +## Explanation of the tests + +The `doit.sh` script compiles a verilator model of your RTL, using the `src/verify.cpp` testbench. The following steps are then taken for each test program: +1. Assemble the program. +2. Load the program (and data if needed) into the CPU memory. +3. Run the verilator model for many cycles. +4. Check if the return value (a0) matches the expected value. + +The verilator-generated `obj_dir` is stored in `tb/test_out`, along with the waveform, hex and disassembly for each test. + +You are free to add more tests if it helps with your testing, but you are only required to pass the tests given in this repository (alongside PDF and F1 programs on Vbuddy). From 2ac9bc4e1975e72665493730ead30ecbf62ebf9c Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 21 Nov 2025 22:36:30 +0000 Subject: [PATCH 21/65] Added f1.s --- repo/tb/asm/f1.s | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 repo/tb/asm/f1.s diff --git a/repo/tb/asm/f1.s b/repo/tb/asm/f1.s new file mode 100644 index 0000000..b7e4ac5 --- /dev/null +++ b/repo/tb/asm/f1.s @@ -0,0 +1,48 @@ +.text +.globl main +main: + li t1, 0 + li t2, 0x12345678 + li a0, 0 + +light_loop: + slli t1, t1, 1 + ori t1, t1, 1 + + addi a0, t1, 0 + + jal ra, fixed_delay + + li t3, 0xFF + bne t1, t3, light_loop + + addi t1, t2, 0 + jal ra, random_delay + addi t2, t1, 0 + + li a0, 0 + +fixed_delay: + li t0, 50000 +fixed_loop: + addi t0, t0, -1 + bne t0, zero, fixed_loop + jalr x0, ra, 0 + +random_delay: + slli t4, t1, 7 + xor t1, t1, t4 + + srli t4, t1, 9 + xor t1, t1, t4 + + slli t4, t1, 8 + xor t1, t1, t4 + + andi t0, t1, 0x3FF + +random_loop: + addi t0, t0, -1 + bne t0, zero, random_loop + + jalr x0, ra, 0 \ No newline at end of file From 61362c8c3a0bee57479026e4b18b466a4bd8c749 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Sun, 23 Nov 2025 19:45:40 +0000 Subject: [PATCH 22/65] Fixed imem.sv --- repo/rtl/imem.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/rtl/imem.sv b/repo/rtl/imem.sv index 1076e55..2002c35 100644 --- a/repo/rtl/imem.sv +++ b/repo/rtl/imem.sv @@ -8,7 +8,7 @@ module imem ( logic [31:0] mem [0:255]; initial begin - $readmemh("program.hex", mem); + $readmemh("../rtl/program.hex", mem); end assign instr = mem[addr[9:2]]; From b5735ece4489725c1ddf8ac2432ad2c82a8c3e59 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Sun, 23 Nov 2025 22:42:58 +0000 Subject: [PATCH 23/65] Added opcode instructions and updated data_unit with data_mem --- repo/rtl/data_mem.sv | 23 +++++++++++++ repo/rtl/data_unit.sv | 30 ++++++++++++++--- repo/rtl/main_decoder.sv | 73 ++++++++++++++++++++++++++++++++++------ repo/rtl/top.sv | 4 ++- 4 files changed, 113 insertions(+), 17 deletions(-) create mode 100644 repo/rtl/data_mem.sv diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv new file mode 100644 index 0000000..43330e5 --- /dev/null +++ b/repo/rtl/data_mem.sv @@ -0,0 +1,23 @@ +module data_mem #( + parameter DATA_WIDTH = 32, + ADDRESS_WIDTH = 32 +) ( + input logic clk, + input logic en, // write enable + input logic [ADDRESS_WIDTH-1:0] wr_addr, // memory address + input logic [DATA_WIDTH-1:0] din, // data to write + output logic [DATA_WIDTH-1:0] dout // data read +); + + // 2^32 32-bit memory locations + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + + assign dout = ram_array[wr_addr]; // read data from memory assynchronously + + always_ff @(posedge clk) begin + if (en == 1'b1) begin + ram_array[wr_addr] <= din; // write data to memory synchronously + end + end + +endmodule \ No newline at end of file diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 689e82d..dd44727 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -7,9 +7,11 @@ module data_unit #( input logic [ADDRESS_WIDTH-1:0] AD2, // rs2 address input logic [ADDRESS_WIDTH-1:0] AD3, // rd address input logic [DATA_WIDTH-1:0] ImmOp, // immediate value - input logic RegWrite, // write enable + input logic RegWrite, // write enable to register file + input logic MemWrite, // write enable to memory input logic ALUctrl, // ALU control input logic ALUsrc, // select imm or reg + input logic ResultSrc, // select ALU or mem data output logic EQ, // ALU equality flag output logic [DATA_WIDTH-1:0] a0 // x10 output ); @@ -17,7 +19,9 @@ module data_unit #( logic [DATA_WIDTH-1:0] ALUout; // ALU result logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 -logic [DATA_WIDTH-1:0] regOp2; // register file operand 2 +logic [DATA_WIDTH-1:0] WriteData; // register file output 2 +logic [DATA_WIDTH-1:0] ReadData; // data memory output +logic [DATA_WIDTH-1:0] result; // data to write back to register file // register file: read rs1/rs2, write rd reg_file reg_file ( @@ -28,13 +32,13 @@ reg_file reg_file ( .wd3(ALUout), .we3(RegWrite), .dout1(ALUop1), - .dout2(regOp2), + .dout2(WriteData), .a0(a0) ); // select ALU operand 2: register or immediate -mux mux ( - .in0(regOp2), +mux mux1 ( + .in0(WriteData), .in1(ImmOp), .sel(ALUsrc), .out(ALUop2) @@ -49,4 +53,20 @@ alu alu ( .eq(EQ) ); +// memory +data_mem data_mem ( + .clk(clk), + .en(MemWrite), + .wr_addr(ALUout), + .din(WriteData), + .dout(ReadData) +); + +mux mux2 ( + .in0(ALUout), + .in1(ReadData), + .sel(ResultSrc), + .out(result) +); + endmodule diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index b23e37d..29c84d6 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,6 +1,6 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction - output logic ResultsSrc, // selects data written to register file (ALU result or memory data) + output logic ResultSrc, // selects data written to register file (ALU result or memory data) output logic MemWrite, // enable writing to data memory output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) output logic RegWrite, // enable writing to register file @@ -13,9 +13,9 @@ module main_decoder ( always_comb begin case(opcode) - // load instructions (e.g., LW) + // load instructions: LB, LH, LW, LBU, LHU 7'b0000011: begin - ResultsSrc = 1; + ResultSrc = 1; MemWrite = 0; ALUsrc = 1; RegWrite = 1; @@ -24,9 +24,9 @@ always_comb begin ALUop = 2'b00; end - // store instructions (e.g., SW) + // store instructions: SB, SH, SW 7'b0100011: begin - ResultsSrc = X; + ResultSrc = 0; // don't care MemWrite = 1; ALUsrc = 1; RegWrite = 0; @@ -35,20 +35,20 @@ always_comb begin ALUop = 2'b00; end - // R-type instructions (e.g., ADD, SUB) + // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND 7'b0110011: begin - ResultsSrc = 0; + ResultSrc = 0; MemWrite = 0; ALUsrc = 0; RegWrite = 1; Branch = 0; - ImmSrc = 2'bXX; + ImmSrc = 2'b00; // don't care ALUop = 2'b10; end - // branch instructions (e.g., BNE, BEQ) + // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU 7'b1100011: begin - ResultsSrc = X; + ResultSrc = 0; // don't care MemWrite = 0; ALUsrc = 0; RegWrite = 0; @@ -57,8 +57,59 @@ always_comb begin ALUop = 2'b01; // ALU performs subtraction for comparison end + // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI + 7'b0010011: begin + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; + ALUop = 2'b10; + end + + 7'b0010111: begin // AUIPC U-type + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b11; + ALUop = 2'b00; + end + + 7'b0110111: begin // LUI U-type + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b11; + ALUop = 2'b00; + end + + 7'b1101111: begin // JAL J-type + ResultSrc = 0; // don't care + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; // don't care + ALUop = 2'b00; + end + + 7'b1100111: begin // JALR I-type + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; + ALUop = 2'b00; + end + default: begin - ResultsSrc = 0; + ResultSrc = 0; MemWrite = 0; ALUsrc = 0; RegWrite = 0; diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index e4e0c76..7e6fcbe 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -16,12 +16,14 @@ logic EQ; logic [DATA_WIDTH-1:0] pc; logic [DATA_WIDTH-1:0] ImmOp; +logic [DATA_WIDTH-1:0] PCtarget; logic [DATA_WIDTH-1:0] instr; logic [ADDRESS_WIDTH-1:0] rs1; logic [ADDRESS_WIDTH-1:0] rs2; logic [ADDRESS_WIDTH-1:0] rd; +assign pc_next = pc + ImmOp; // decode instruction fields assign rs1 = instr[19:15]; // source register 1 assign rs2 = instr[24:20]; // source register 2 @@ -31,7 +33,7 @@ assign rd = instr[11:7]; // destination register PC pc_module ( .clk(clk), .rst(rst), - .ImmOp(ImmOp), + .ImmOp(PCtarget), .PCsrc(PCsrc), .pc(pc) ); From 5c671e0e7b90a9fc580a5885949c33a287879116 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Sun, 23 Nov 2025 22:55:44 +0000 Subject: [PATCH 24/65] Fully explained f1.s with comments --- repo/tb/asm/f1.s | 84 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 28 deletions(-) diff --git a/repo/tb/asm/f1.s b/repo/tb/asm/f1.s index b7e4ac5..3e06402 100644 --- a/repo/tb/asm/f1.s +++ b/repo/tb/asm/f1.s @@ -1,48 +1,76 @@ .text .globl main + +# REGISTERS +# t1 -> light pattern counter +# t2 -> saved RNG seed +# t3 -> max light pattern value +# t0 -> loop counters for delays +# t4 -> temporary for RNG calculations +# a0 -> output to lights + +# SUBROUTINES +# fixed_delay -> consistent delay for each light step +# random_delay -> pseudo-random delay using a simple LFSR + +# Lights turn on from right to left until all 8 are on after random delay + +# f1 starting light sequence + main: - li t1, 0 - li t2, 0x12345678 - li a0, 0 + li t1, 0 # initialise light pattern counter to 0 + li t2, 0x12345678 # seed for random delay generator + li a0, 0 # output register initialised to 0 + +# main light loop light_loop: - slli t1, t1, 1 - ori t1, t1, 1 + slli t1, t1, 1 # shift light pattern left by 1 + ori t1, t1, 1 # set LSB to 1 (lights accumulate) + + addi a0, t1, 0 # update output register with current light pattern - addi a0, t1, 0 + jal ra, fixed_delay # call fixed delay subroutine - jal ra, fixed_delay + li t3, 0xFF # maximum light pattern (all 8 lights on) + bne t1, t3, light_loop # repeat loop until all lights are on - li t3, 0xFF - bne t1, t3, light_loop +# random delay sequence +# runs a pseudo-random delay, updates the seed and turns off LEDs - addi t1, t2, 0 - jal ra, random_delay - addi t2, t1, 0 + addi t1, t2, 0 # copy RNG seed into t1 + jal ra, random_delay # call random delay subroutine + addi t2, t1, 0 # update RNG seed - li a0, 0 + li a0, 0 # turn off lights before next sequence + +# fixed delay subroutine +# runs a simple countdown, spaces out LED activations fixed_delay: - li t0, 50000 + li t0, 50000 # set fixed countdown fixed_loop: - addi t0, t0, -1 - bne t0, zero, fixed_loop - jalr x0, ra, 0 + addi t0, t0, -1 # decrement counter + bne t0, zero, fixed_loop # loop until t0 = 0 + jalr x0, ra, 0 # return to caller +# random delay subroutine -> implements LFSR +# uses the lowest 10 bits for delay, xorshift random generator random_delay: - slli t4, t1, 7 - xor t1, t1, t4 - - srli t4, t1, 9 - xor t1, t1, t4 + slli t4, t1, 7 # shift t1 left 7 bits + xor t1, t1, t4 # XOR to mix bits + srli t4, t1, 9 # shift t1 right 9 bits + xor t1, t1, t4 # XOR to mix bits + slli t4, t1, 8 # shift t1 left 8 bits + xor t1, t1, t4 # XOR to mix bits - slli t4, t1, 8 - xor t1, t1, t4 + andi t0, t1, 0x3FF # limit random delay to 10 bits (0-1023) - andi t0, t1, 0x3FF +# random countdown loop +# wait a random number of cycles (0-1023) random_loop: - addi t0, t0, -1 - bne t0, zero, random_loop + addi t0, t0, -1 # countdown random delay + bne t0, zero, random_loop # loop until t0 = 0 - jalr x0, ra, 0 \ No newline at end of file + jalr x0, ra, 0 # return to caller \ No newline at end of file From 14ce198ee28ac2d0423abeacc46bf13ef69142d2 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Mon, 24 Nov 2025 13:54:34 +0000 Subject: [PATCH 25/65] ALU Decoder --- repo/rtl/alu_decoder.sv | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 repo/rtl/alu_decoder.sv diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv new file mode 100644 index 0000000..61824cf --- /dev/null +++ b/repo/rtl/alu_decoder.sv @@ -0,0 +1,40 @@ +module alu_decoder ( + input logic [1:0] ALUOp, + input logic [2:0] funct3, + input logic funct75, + input logic [6:0] op, + output logic [2:0] ALUControl +); + + logic op5; + assign op5 = op[5]; + + always_comb begin + case (ALUOp) + + 2'b00: ALUControl = 3'b000; + + 2'b01: ALUControl = 3'b001; + + 2'b10: begin + unique case (funct3) + 3'b000: begin + if ({op5, funct75} == 2'b11) + ALUControl = 3'b001; + else + ALUControl = 3'b000; + end + + 3'b010: ALUControl = 3'b101; // slt + 3'b110: ALUControl = 3'b011; // or + 3'b111: ALUControl = 3'b010; //and + + default: ALUControl = 3'b000; + endcase + end + + default: ALUControl = 3'b000; + endcase + end + +endmodule \ No newline at end of file From a0c766b5b8182bde1adf8312c87e2c7ab70f7017 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Mon, 24 Nov 2025 13:55:37 +0000 Subject: [PATCH 26/65] Unify ALUOp naming --- repo/rtl/main_decoder.sv | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 29c84d6..6e1456d 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -6,7 +6,7 @@ module main_decoder ( output logic RegWrite, // enable writing to register file output logic Branch, // indicates branch instruction output logic [1:0] ImmSrc, // selects type of immediate - output logic [1:0] ALUop // encodes ALU operation type (passed to ALU control) + output logic [1:0] ALUOp // encodes ALU operation type (passed to ALU control) ); // combinational logic to decode opcode and generate control signals @@ -21,7 +21,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b00; - ALUop = 2'b00; + ALUOp = 2'b00; end // store instructions: SB, SH, SW @@ -32,7 +32,7 @@ always_comb begin RegWrite = 0; Branch = 0; ImmSrc = 2'b01; - ALUop = 2'b00; + ALUOp = 2'b00; end // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND @@ -43,7 +43,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b00; // don't care - ALUop = 2'b10; + ALUOp = 2'b10; end // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU @@ -54,7 +54,7 @@ always_comb begin RegWrite = 0; Branch = 1; ImmSrc = 2'b10; - ALUop = 2'b01; // ALU performs subtraction for comparison + ALUOp = 2'b01; // ALU performs subtraction for comparison end // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI @@ -65,7 +65,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b00; - ALUop = 2'b10; + ALUOp = 2'b10; end 7'b0010111: begin // AUIPC U-type @@ -75,7 +75,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b11; - ALUop = 2'b00; + ALUOp = 2'b00; end 7'b0110111: begin // LUI U-type @@ -85,7 +85,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b11; - ALUop = 2'b00; + ALUOp = 2'b00; end 7'b1101111: begin // JAL J-type @@ -95,7 +95,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b00; // don't care - ALUop = 2'b00; + ALUOp = 2'b00; end 7'b1100111: begin // JALR I-type @@ -105,7 +105,7 @@ always_comb begin RegWrite = 1; Branch = 0; ImmSrc = 2'b00; - ALUop = 2'b00; + ALUOp = 2'b00; end default: begin @@ -115,7 +115,7 @@ always_comb begin RegWrite = 0; Branch = 0; ImmSrc = 2'b00; - ALUop = 2'b00; + ALUOp = 2'b00; end endcase end From 039bd08084c1435457964ca3d10efedeb6285180 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Mon, 24 Nov 2025 14:50:08 +0000 Subject: [PATCH 27/65] ALU Updated (3bits ALUControl) --- repo/rtl/alu.sv | 57 ++++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 7cb1654..7c847bb 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -1,38 +1,23 @@ -module alu( - - input logic [31:0] alu_op1, // first operand for the ALU - input logic [31:0] alu_op2, // second operand for the ALU - input logic alu_ctrl, // ALU control signal: selects operation - // 0 -> addition (for addi) - // 1 -> subtraction (for bne) - - output logic [31:0] alu_out, // ALU output result - output logic eq // equality flag: 1 if alu_op1 == alu_op2 +module alu ( + input logic [31:0] SrcA, + input logic [31:0] SrcB, + input logic [2:0] ALUControl, + output logic [31:0] ALUResult, + output logic Zero ); -// internal signals to hold intermediate results -logic [31:0] equality; // difference between operands, used for comparison -logic [31:0] sum; // sum of operands, used for addition - -// combinational logic block (no clock) -always_comb begin - - // compute subtraction for branch comparison - equality = alu_op1 - alu_op2; - // compute addition for arithmetic instructions - sum = alu_op1 + alu_op2; - - // select ALU output based on control signal - if(alu_ctrl == 1'b0) - alu_out = sum; // alu_ctrl=0 -> addition (addi) - else - alu_out = equality; // alu_ctrl=1 → subtraction (bne) - - // set equality flag: 1 if operands are equal, 0 otherwise - if(equality == 32'b0) - eq = 1; - else - eq = 0; - -end -endmodule + always_comb begin + case (ALUControl) + 3'b000: ALUResult = SrcA + SrcB; // add + 3'b001: ALUResult = SrcA - SrcB; // sub + 3'b010: ALUResult = SrcA & SrcB; // and + 3'b011: ALUResult = SrcA | SrcB; // or + 3'b101: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1:32'b0; + default: ALUResult = 32'b0; + + endcase + end + + assign Zero = (ALUResult == 32'b0); + +endmodule \ No newline at end of file From 1f2e8b2f359a44e71a3b7245e7bbc5dbaa71b09a Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Mon, 24 Nov 2025 19:59:25 +0000 Subject: [PATCH 28/65] Added top.sv --- repo/rtl/top.sv | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 7e6fcbe..3ea1289 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -7,23 +7,26 @@ module top #( output logic [DATA_WIDTH-1:0] a0 // x10 output ); +// control signals logic RegWrite; -logic ALUsrc; -logic ALUctrl; -logic ImmSrc; +logic ALUSrc; +logic [2:0] ALUctrl; // 3-bit ALU control +logic [1:0] ImmSrc; // 2-bit immediate +logic [1:0] ResultSrc logic PCsrc; +logic MemWrite; logic EQ; +// data wires logic [DATA_WIDTH-1:0] pc; -logic [DATA_WIDTH-1:0] ImmOp; -logic [DATA_WIDTH-1:0] PCtarget; logic [DATA_WIDTH-1:0] instr; +logic [DATA_WIDTH-1:0] ImmOp; +// register file address fields logic [ADDRESS_WIDTH-1:0] rs1; logic [ADDRESS_WIDTH-1:0] rs2; logic [ADDRESS_WIDTH-1:0] rd; -assign pc_next = pc + ImmOp; // decode instruction fields assign rs1 = instr[19:15]; // source register 1 assign rs2 = instr[24:20]; // source register 2 @@ -33,8 +36,8 @@ assign rd = instr[11:7]; // destination register PC pc_module ( .clk(clk), .rst(rst), - .ImmOp(PCtarget), .PCsrc(PCsrc), + .ImmOp(ImmOp), .pc(pc) ); @@ -49,9 +52,11 @@ control control ( .instr(instr), .EQ(EQ), .RegWrite(RegWrite), - .ALUsrc(ALUsrc), + .ALUSrc(ALUSrc), .ALUctrl(ALUctrl), .ImmSrc(ImmSrc), + .ResultSrc(ResultSrc), + .MemWrite(MemWrite), .PCsrc(PCsrc) ); @@ -70,8 +75,10 @@ data_unit data_unit ( .AD3(rd), .RegWrite(RegWrite), .ImmOp(ImmOp), - .ALUsrc(ALUsrc), + .ALUSrc(ALUSrc), .ALUctrl(ALUctrl), + .ResultSrc(ResultSrc), + .MemWrite(MemWrite), .EQ(EQ), .a0(a0) ); From d3b8e18543d9c0c6b9913a2c2f15de6ebf9ef80f Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Mon, 24 Nov 2025 20:10:39 +0000 Subject: [PATCH 29/65] Fixed control.sv --- repo/rtl/control.sv | 90 ++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 50 deletions(-) diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 3963b35..70c5b01 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,57 +1,47 @@ module control ( - /* verilator lint_off UNUSED */ input logic [31:0] instr, - /* verilator lint_on UNUSED */ - input logic EQ, // equality flag from ALU (1 if operands are equal) - output logic RegWrite, - output logic ALUsrc, - output logic ALUctrl, // 0 = add, 1 = sub - output logic ImmSrc, // 0 = I-type, 1 = B-type - output logic PCsrc // select next PC: 0 = PC+4, 1 = branch target + input logic EQ, // ALU zero/equality flag + + output logic RegWrite, + output logic ALUSrc, + output logic [2:0] ALUctrl, + output logic [1:0] ImmSrc, + output logic [1:0] ResultSrc, + output logic MemWrite, + output logic PCsrc ); - // internal signals - logic branch; - logic [6:0] opcode; - assign opcode = instr[6:0]; // extract opcode (bits [6:0]) - - // combinational logic: decode opcode to generate control signals - always_comb begin - RegWrite = 0; - ALUsrc = 0; - ALUctrl = 0; - ImmSrc = 0; - branch = 0; - - case (opcode) - 7'b0010011: begin // ADDI - RegWrite = 1; - ALUsrc = 1; // immediate - ALUctrl = 0; // add - ImmSrc = 0; // I-type - branch = 0; - end - - 7'b1100011: begin // BNE - RegWrite = 0; - ALUsrc = 0; - ALUctrl = 1; // subtract - ImmSrc = 1; // B-type immediate - branch = 1; - end - - default: begin - RegWrite = 0; - ALUsrc = 0; - ALUctrl = 0; - ImmSrc = 0; - branch = 0; - end - endcase - end - - // determine next PC: branch taken if branch instruction AND operands not equal - assign PCsrc = branch & (~EQ); + // fields + logic [6:0] opcode = instr[6:0]; + logic [2:0] funct3 = instr[14:12]; + logic [6:0] funct7 = instr[31:25]; + + // wires between decoders + logic Branch; + logic [1:0] ALUOp; + + // instantiate main decoder + main_decoder main_dec ( + .opcode(opcode), + .RegWrite(RegWrite), + .ALUSrc(ALUSrc), + .ResultSrc(ResultSrc), + .MemWrite(MemWrite), + .ImmSrc(ImmSrc), + .Branch(Branch), + .ALUOp(ALUOp) + ); + + // instantiate ALU decoder + alu_decoder alu_dec ( + .ALUOp(ALUOp), + .funct3(funct3), + .funct7(funct7), + .ALUctrl(ALUctrl) + ); + + // PCsrc: branch AND zero + assign PCsrc = Branch & EQ; endmodule From 7af5d4db9d382ab60d5b85d530de374eb7f47d49 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Mon, 24 Nov 2025 21:20:44 +0000 Subject: [PATCH 30/65] Fixed signext, top, control, decoders --- repo/rtl/alu_decoder.sv | 42 +++++----- repo/rtl/control.sv | 2 +- repo/rtl/main_decoder.sv | 167 ++++++++++++++++++++++----------------- repo/rtl/signext.sv | 49 ++++++++---- repo/rtl/top.sv | 2 +- 5 files changed, 154 insertions(+), 108 deletions(-) diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv index 61824cf..2c4e202 100644 --- a/repo/rtl/alu_decoder.sv +++ b/repo/rtl/alu_decoder.sv @@ -1,34 +1,40 @@ module alu_decoder ( - input logic [1:0] ALUOp, - input logic [2:0] funct3, - input logic funct75, - input logic [6:0] op, + input logic [1:0] ALUOp, + input logic [2:0] funct3, + input logic funct75, // funct7[5] output logic [2:0] ALUControl ); - logic op5; - assign op5 = op[5]; +// for the full RV32I ALU, add R-type, I-type shift instructions, and STLU and SLTIU always_comb begin - case (ALUOp) + unique case (ALUOp) + // 00: Load/Store -> ADD 2'b00: ALUControl = 3'b000; + // 01: Branch -> SUB 2'b01: ALUControl = 3'b001; + // 10: R-type -> Use funct3 + funct7b5 2'b10: begin unique case (funct3) - 3'b000: begin - if ({op5, funct75} == 2'b11) - ALUControl = 3'b001; - else - ALUControl = 3'b000; - end - - 3'b010: ALUControl = 3'b101; // slt - 3'b110: ALUControl = 3'b011; // or - 3'b111: ALUControl = 3'b010; //and + 3'b000: ALUControl = funct75 ? 3'b001 // SUB + : 3'b000; // ADD + 3'b010: ALUControl = 3'b101; // SLT + 3'b110: ALUControl = 3'b011; // OR + 3'b111: ALUControl = 3'b010; // AND + default: ALUControl = 3'b000; + endcase + end + // 11: I-type ALU (ADDI/ANDI/ORI/SLTI) + 2'b11: begin + unique case (funct3) + 3'b000: ALUControl = 3'b000; // ADDI + 3'b010: ALUControl = 3'b101; // SLTI + 3'b110: ALUControl = 3'b011; // ORI + 3'b111: ALUControl = 3'b010; // ANDI default: ALUControl = 3'b000; endcase end @@ -37,4 +43,4 @@ module alu_decoder ( endcase end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 70c5b01..193abc7 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -36,7 +36,7 @@ module control ( alu_decoder alu_dec ( .ALUOp(ALUOp), .funct3(funct3), - .funct7(funct7), + .funct75(funct7[5]), .ALUctrl(ALUctrl) ); diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 6e1456d..c286b7d 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,5 +1,6 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction + output logic ResultSrc, // selects data written to register file (ALU result or memory data) output logic MemWrite, // enable writing to data memory output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) @@ -11,101 +12,123 @@ module main_decoder ( // combinational logic to decode opcode and generate control signals always_comb begin - case(opcode) + // default values (safe defaults) + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 0; + RegWrite = 0; + Branch = 0; + ImmSrc = 2'b00; + ALUOp = 2'b00; + case(opcode) + // load instructions: LB, LH, LW, LBU, LHU - 7'b0000011: begin - ResultSrc = 1; - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b00; - ALUOp = 2'b00; + // opcode = 0000011 + 7'b0000011: begin + ResultSrc = 1; // load data from memory + MemWrite = 0; + ALUsrc = 1; // use immediate for address + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; // I-type immediate + ALUOp = 2'b00; // ALU does ADD for address end // store instructions: SB, SH, SW - 7'b0100011: begin - ResultSrc = 0; // don't care - MemWrite = 1; - ALUsrc = 1; - RegWrite = 0; - Branch = 0; - ImmSrc = 2'b01; - ALUOp = 2'b00; + // opcode = 0100011 + 7'b0100011: begin + ResultSrc = 0; // don't care + MemWrite = 1; // write to data memory + ALUsrc = 1; // use immediate for address + RegWrite = 0; + Branch = 0; + ImmSrc = 2'b01; // S-type immediate + ALUOp = 2'b00; // ALU does ADD for address end // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND - 7'b0110011: begin - ResultSrc = 0; - MemWrite = 0; - ALUsrc = 0; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b00; // don't care - ALUOp = 2'b10; + // opcode = 0110011 + 7'b0110011: begin + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 0; // second operand from register + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; // don't care + ALUOp = 2'b10; // R-type ALU decoding end // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU - 7'b1100011: begin - ResultSrc = 0; // don't care - MemWrite = 0; - ALUsrc = 0; - RegWrite = 0; - Branch = 1; - ImmSrc = 2'b10; - ALUOp = 2'b01; // ALU performs subtraction for comparison + // opcode = 1100011 + 7'b1100011: begin + ResultSrc = 0; // don't care + MemWrite = 0; + ALUsrc = 0; // use registers + RegWrite = 0; + Branch = 1; // enable branch logic + ImmSrc = 2'b10; // B-type immediate + ALUOp = 2'b01; // ALU subtracts for comparison end // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI + // opcode = 0010011 7'b0010011: begin - ResultSrc = 0; - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b00; - ALUOp = 2'b10; + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; // use immediate + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; // I-type immediate + ALUOp = 2'b11; // I-type ALU (distinct from R-type) end - 7'b0010111: begin // AUIPC U-type - ResultSrc = 0; - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b11; - ALUOp = 2'b00; + // AUIPC (U-type) + // opcode = 0010111 + 7'b0010111: begin + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b11; // U-type immediate + ALUOp = 2'b00; end - 7'b0110111: begin // LUI U-type - ResultSrc = 0; - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b11; - ALUOp = 2'b00; + // LUI (U-type) + // opcode = 0110111 + 7'b0110111: begin + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b11; // U-type immediate + ALUOp = 2'b00; end - 7'b1101111: begin // JAL J-type - ResultSrc = 0; // don't care - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b00; // don't care - ALUOp = 2'b00; + // JAL (J-type) + // opcode = 1101111 + 7'b1101111: begin + ResultSrc = 0; // return address is PC+4 (handled in datapath) + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; // write x[rd] = PC+4 + Branch = 0; + ImmSrc = 2'11; + ALUOp = 2'b00; end - 7'b1100111: begin // JALR I-type - ResultSrc = 0; - MemWrite = 0; - ALUsrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 2'b00; - ALUOp = 2'b00; + // JALR (I-type) + // opcode = 1100111 + 7'b1100111: begin + ResultSrc = 0; + MemWrite = 0; + ALUsrc = 1; + RegWrite = 1; + Branch = 0; + ImmSrc = 2'b00; + ALUOp = 2'b00; end default: begin diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index 5f08a2a..e7a3307 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,27 +1,44 @@ module signext ( - /* verilator lint_off UNUSED */ - input logic [31:0] instr, // full 32-bit instruction word - /* verilator lint_on UNUSED */ - input logic ImmSrc, // 0 = I-type immediate, 1 = B-type immediate - output logic [31:0] ImmOp // sign-extended immediate output + input logic [31:0] instr, + input logic [1:0] ImmSrc, // 2 bits + output logic [31:0] ImmOp ); - logic [31:0] immI; // I-type immediate - logic [31:0] immB; // B-type immediate + logic [31:0] immI, immS, immB, immU, immJ; + // I-type assign immI = {{20{instr[31]}}, instr[31:20]}; + // S-type + assign immS = {{20{instr[31]}}, instr[31:25], instr[11:7]}; + + // B-type assign immB = {{19{instr[31]}}, - instr[31], // imm[12] - instr[7], // imm[11] - instr[30:25], // imm[10:5] - instr[11:8], // imm[4:1] - 1'b0 // imm[0] - }; + instr[31], + instr[7], + instr[30:25], + instr[11:8], + 1'b0}; - // select appropriate immediate based on instruction type - assign ImmOp = (ImmSrc == 0) ? immI : immB; + // U-type (LUI, AUIPC) + assign immU = {instr[31:12], 12'b0}; -endmodule + // J-type (JAL) + assign immJ = {{11{instr[31]}}, + instr[31], + instr[19:12], + instr[20], + instr[30:21], + 1'b0}; + always_comb begin + unique case (ImmSrc) + 2'b00: ImmOp = immI; // I-type + 2'b01: ImmOp = immS; // S-type + 2'b10: ImmOp = immB; // B-type + 2'b11: ImmOp = immU; // U-type (could also be J-type depending on decoder) + default: ImmOp = immI; + endcase + end +endmodule diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 3ea1289..d7436fc 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -12,7 +12,7 @@ logic RegWrite; logic ALUSrc; logic [2:0] ALUctrl; // 3-bit ALU control logic [1:0] ImmSrc; // 2-bit immediate -logic [1:0] ResultSrc +logic [1:0] ResultSrc; logic PCsrc; logic MemWrite; logic EQ; From 3af4ed22db6683a39adc7f2550c3629b7013e7a8 Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Tue, 25 Nov 2025 13:37:26 +0000 Subject: [PATCH 31/65] Changed ALUControl to 4 bits --- repo/rtl/alu_decoder.sv | 60 ++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv index 2c4e202..f774d3d 100644 --- a/repo/rtl/alu_decoder.sv +++ b/repo/rtl/alu_decoder.sv @@ -2,45 +2,63 @@ module alu_decoder ( input logic [1:0] ALUOp, input logic [2:0] funct3, input logic funct75, // funct7[5] - output logic [2:0] ALUControl + output logic [3:0] ALUControl // extended to 4 bits ); -// for the full RV32I ALU, add R-type, I-type shift instructions, and STLU and SLTIU + // ALUControl encoding (4 bits) + // 0000 = ADD + // 0001 = SUB + // 0010 = AND + // 0011 = OR + // 0100 = XOR + // 0101 = SLL + // 0110 = SRL + // 0111 = SRA + // 1000 = SLT (signed) + // 1001 = SLTU (unsigned) + // (leave others for future) always_comb begin unique case (ALUOp) + // Load/Store/AUIPC: always ADD (address calculation) + 2'b00: ALUControl = 4'b0000; // ADD - // 00: Load/Store -> ADD - 2'b00: ALUControl = 3'b000; + // Branch comparison: set to SUB (we also use Zero and SLT flags) + 2'b01: ALUControl = 4'b0001; // SUB - // 01: Branch -> SUB - 2'b01: ALUControl = 3'b001; - - // 10: R-type -> Use funct3 + funct7b5 + // R-type: decode by funct3 + funct7 2'b10: begin unique case (funct3) - 3'b000: ALUControl = funct75 ? 3'b001 // SUB - : 3'b000; // ADD - 3'b010: ALUControl = 3'b101; // SLT - 3'b110: ALUControl = 3'b011; // OR - 3'b111: ALUControl = 3'b010; // AND - default: ALUControl = 3'b000; + 3'b000: ALUControl = funct75 ? 4'b0001 : 4'b0000; // SUB : ADD + 3'b001: ALUControl = 4'b0101; // SLL + 3'b010: ALUControl = 4'b1000; // SLT (signed) + 3'b011: ALUControl = 4'b1001; // SLTU (unsigned) + 3'b100: ALUControl = 4'b0100; // XOR + 3'b101: ALUControl = funct75 ? 4'b0111 : 4'b0110; // SRA : SRL + 3'b110: ALUControl = 4'b0011; // OR + 3'b111: ALUControl = 4'b0010; // AND + default: ALUControl = 4'b0000; endcase end - // 11: I-type ALU (ADDI/ANDI/ORI/SLTI) + // I-type: similar to R-type but shifts use funct7[5] as well 2'b11: begin unique case (funct3) - 3'b000: ALUControl = 3'b000; // ADDI - 3'b010: ALUControl = 3'b101; // SLTI - 3'b110: ALUControl = 3'b011; // ORI - 3'b111: ALUControl = 3'b010; // ANDI - default: ALUControl = 3'b000; + 3'b000: ALUControl = 4'b0000; // ADDI + 3'b001: ALUControl = 4'b0101; // SLLI (shamt) + 3'b010: ALUControl = 4'b1000; // SLTI + 3'b011: ALUControl = 4'b1001; // SLTIU + 3'b100: ALUControl = 4'b0100; // XORI + 3'b101: ALUControl = funct75 ? 4'b0111 : 4'b0110; // SRAI : SRLI + 3'b110: ALUControl = 4'b0011; // ORI + 3'b111: ALUControl = 4'b0010; // ANDI + default: ALUControl = 4'b0000; endcase end - default: ALUControl = 3'b000; + default: ALUControl = 4'b0000; endcase end endmodule +*/ \ No newline at end of file From f306c207d05d12cccabb6c83640eb5d920531250 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Tue, 25 Nov 2025 13:53:47 +0000 Subject: [PATCH 32/65] Added alu instructions --- repo/rtl/alu.sv | 29 +++++++++++++++++++++++------ repo/rtl/signext.sv | 7 +++++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 7c847bb..96fc01e 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -1,18 +1,35 @@ + // 0000 = ADD + // 0001 = SUB + // 0010 = AND + // 0011 = OR + // 0100 = XOR + // 0101 = SLL + // 0110 = SRL + // 0111 = SRA + // 1000 = SLT (signed) + // 1001 = SLTU (unsigned) + module alu ( input logic [31:0] SrcA, input logic [31:0] SrcB, - input logic [2:0] ALUControl, + input logic [3:0] ALUControl, output logic [31:0] ALUResult, output logic Zero ); always_comb begin case (ALUControl) - 3'b000: ALUResult = SrcA + SrcB; // add - 3'b001: ALUResult = SrcA - SrcB; // sub - 3'b010: ALUResult = SrcA & SrcB; // and - 3'b011: ALUResult = SrcA | SrcB; // or - 3'b101: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1:32'b0; + 4'b0000: ALUResult = SrcA + SrcB; // add + 4'b0001: ALUResult = SrcA - SrcB; // sub + 4'b0010: ALUResult = SrcA & SrcB; // and + 4'b0011: ALUResult = SrcA | SrcB; // or + 4'b0100: ALUResult = SrcA ^ SrcB; // xor + + 4'b0101 : ALUResult = SrcA << SrcB[4:0]; // sll + 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl + 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra + 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt + 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu default: ALUResult = 32'b0; endcase diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index e7a3307..30b2f88 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -7,10 +7,13 @@ module signext ( logic [31:0] immI, immS, immB, immU, immJ; // I-type - assign immI = {{20{instr[31]}}, instr[31:20]}; + assign immI = {{20{instr[31]}}, + instr[31:20]}; // S-type - assign immS = {{20{instr[31]}}, instr[31:25], instr[11:7]}; + assign immS = {{20{instr[31]}}, + instr[31:25], + instr[11:7]}; // B-type assign immB = {{19{instr[31]}}, From 4b2c2ab80a40a34c8f4078bb01c98a96dbd74559 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Tue, 25 Nov 2025 14:30:09 +0000 Subject: [PATCH 33/65] Changed ImmSrc to 3 bits --- repo/rtl/alu_decoder.sv | 1 - repo/rtl/control.sv | 6 +++--- repo/rtl/data_mem.sv | 2 +- repo/rtl/data_unit.sv | 4 +++- repo/rtl/main_decoder.sv | 26 +++++++++++------------ repo/rtl/signext.sv | 46 ++++++++++++++++++++-------------------- 6 files changed, 43 insertions(+), 42 deletions(-) diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv index f774d3d..a8beed5 100644 --- a/repo/rtl/alu_decoder.sv +++ b/repo/rtl/alu_decoder.sv @@ -61,4 +61,3 @@ module alu_decoder ( end endmodule -*/ \ No newline at end of file diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 193abc7..d2961d0 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -8,14 +8,14 @@ module control ( output logic [1:0] ImmSrc, output logic [1:0] ResultSrc, output logic MemWrite, - output logic PCsrc + output logic PCsrc, + output logic [2:0] funct3 ); // fields logic [6:0] opcode = instr[6:0]; - logic [2:0] funct3 = instr[14:12]; logic [6:0] funct7 = instr[31:25]; - + assign funct3 = instr[14:12]; // wires between decoders logic Branch; logic [1:0] ALUOp; diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv index 43330e5..7a80919 100644 --- a/repo/rtl/data_mem.sv +++ b/repo/rtl/data_mem.sv @@ -11,7 +11,7 @@ module data_mem #( // 2^32 32-bit memory locations logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; - + assign dout = ram_array[wr_addr]; // read data from memory assynchronously always_ff @(posedge clk) begin diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index dd44727..40facb0 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -12,6 +12,7 @@ module data_unit #( input logic ALUctrl, // ALU control input logic ALUsrc, // select imm or reg input logic ResultSrc, // select ALU or mem data + input logic [2:0] funct3, // for memory access size output logic EQ, // ALU equality flag output logic [DATA_WIDTH-1:0] a0 // x10 output ); @@ -59,7 +60,8 @@ data_mem data_mem ( .en(MemWrite), .wr_addr(ALUout), .din(WriteData), - .dout(ReadData) + .dout(ReadData), + .funct3(funct3) ); mux mux2 ( diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index c286b7d..1bd306b 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -6,7 +6,7 @@ module main_decoder ( output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) output logic RegWrite, // enable writing to register file output logic Branch, // indicates branch instruction - output logic [1:0] ImmSrc, // selects type of immediate + output logic [2:0] ImmSrc, // selects type of immediate output logic [1:0] ALUOp // encodes ALU operation type (passed to ALU control) ); @@ -18,7 +18,7 @@ always_comb begin ALUsrc = 0; RegWrite = 0; Branch = 0; - ImmSrc = 2'b00; + ImmSrc = 3'b000; ALUOp = 2'b00; case(opcode) @@ -31,11 +31,11 @@ always_comb begin ALUsrc = 1; // use immediate for address RegWrite = 1; Branch = 0; - ImmSrc = 2'b00; // I-type immediate + ImmSrc = 2'b000; // I-type immediate ALUOp = 2'b00; // ALU does ADD for address end - // store instructions: SB, SH, SW + // store instructions: SB, SH, SW S-type // opcode = 0100011 7'b0100011: begin ResultSrc = 0; // don't care @@ -43,7 +43,7 @@ always_comb begin ALUsrc = 1; // use immediate for address RegWrite = 0; Branch = 0; - ImmSrc = 2'b01; // S-type immediate + ImmSrc = 2'b001; // S-type immediate ALUOp = 2'b00; // ALU does ADD for address end @@ -55,7 +55,7 @@ always_comb begin ALUsrc = 0; // second operand from register RegWrite = 1; Branch = 0; - ImmSrc = 2'b00; // don't care + ImmSrc = 2'b000; // don't care ALUOp = 2'b10; // R-type ALU decoding end @@ -67,7 +67,7 @@ always_comb begin ALUsrc = 0; // use registers RegWrite = 0; Branch = 1; // enable branch logic - ImmSrc = 2'b10; // B-type immediate + ImmSrc = 2'b010; // B-type immediate ALUOp = 2'b01; // ALU subtracts for comparison end @@ -79,7 +79,7 @@ always_comb begin ALUsrc = 1; // use immediate RegWrite = 1; Branch = 0; - ImmSrc = 2'b00; // I-type immediate + ImmSrc = 2'b000; // I-type immediate ALUOp = 2'b11; // I-type ALU (distinct from R-type) end @@ -91,7 +91,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b11; // U-type immediate + ImmSrc = 2'b011; // U-type immediate ALUOp = 2'b00; end @@ -103,7 +103,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b11; // U-type immediate + ImmSrc = 2'b011; // U-type immediate ALUOp = 2'b00; end @@ -115,7 +115,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; // write x[rd] = PC+4 Branch = 0; - ImmSrc = 2'11; + ImmSrc = 2'100; ALUOp = 2'b00; end @@ -127,7 +127,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b00; + ImmSrc = 2'b000; ALUOp = 2'b00; end @@ -137,7 +137,7 @@ always_comb begin ALUsrc = 0; RegWrite = 0; Branch = 0; - ImmSrc = 2'b00; + ImmSrc = 2'b000; ALUOp = 2'b00; end endcase diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index 30b2f88..a9b1626 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,47 +1,47 @@ module signext ( input logic [31:0] instr, - input logic [1:0] ImmSrc, // 2 bits + input logic [2:0] ImmSrc, output logic [31:0] ImmOp ); logic [31:0] immI, immS, immB, immU, immJ; // I-type - assign immI = {{20{instr[31]}}, - instr[31:20]}; + assign immI = {{20{instr[31]}}, instr[31:20]}; // S-type - assign immS = {{20{instr[31]}}, - instr[31:25], + assign immS = {{20{instr[31]}}, + instr[31:25], instr[11:7]}; // B-type assign immB = {{19{instr[31]}}, - instr[31], - instr[7], - instr[30:25], - instr[11:8], - 1'b0}; + instr[31], // imm[12] + instr[7], // imm[11] + instr[30:25], // imm[10:5] + instr[11:8], // imm[4:1] + 1'b0}; // imm[0] = 0 // U-type (LUI, AUIPC) assign immU = {instr[31:12], 12'b0}; // J-type (JAL) assign immJ = {{11{instr[31]}}, - instr[31], - instr[19:12], - instr[20], - instr[30:21], - 1'b0}; + instr[31], // imm[20] + instr[19:12], // imm[19:12] + instr[20], // imm[11] + instr[30:21], // imm[10:1] + 1'b0}; // imm[0] = 0 + // MUX between immediate types always_comb begin unique case (ImmSrc) - 2'b00: ImmOp = immI; // I-type - 2'b01: ImmOp = immS; // S-type - 2'b10: ImmOp = immB; // B-type - 2'b11: ImmOp = immU; // U-type (could also be J-type depending on decoder) - default: ImmOp = immI; + 3'b000: ImmOp = immI; // I-type + 3'b001: ImmOp = immS; // S-type + 3'b010: ImmOp = immB; // B-type + 3'b011: ImmOp = immU; // U-type + 3'b100: ImmOp = immJ; // J-type + default: ImmOp = 32'b0; endcase - end - -endmodule +    end +endmodule \ No newline at end of file From e56ef3443c137a7e3b1cf6ab2f080b09d4b7ea0a Mon Sep 17 00:00:00 2001 From: minimish1 Date: Tue, 25 Nov 2025 16:33:39 +0000 Subject: [PATCH 34/65] Added most instructions --- repo/rtl/alu.sv | 23 +++++++++++++++++--- repo/rtl/control.sv | 45 ++++++++++++++++++++++++++++++++++------ repo/rtl/data_mem.sv | 40 ++++++++++++++++++++++++++++++++--- repo/rtl/data_unit.sv | 2 +- repo/rtl/main_decoder.sv | 22 ++++++++++---------- repo/rtl/signext.sv | 2 +- repo/rtl/top.sv | 15 +++++++++----- 7 files changed, 119 insertions(+), 30 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 96fc01e..2324c8f 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -14,7 +14,7 @@ module alu ( input logic [31:0] SrcB, input logic [3:0] ALUControl, output logic [31:0] ALUResult, - output logic Zero + output logic [2:0] Zero ); always_comb begin @@ -35,6 +35,23 @@ module alu ( endcase end - assign Zero = (ALUResult == 32'b0); - + if ($signed(SrcA) == $signed(SrcB)) begin + assign Zero = 3'b000; // zero flag + end + if ($signed(SrcA) != $signed(SrcB)) begin + assign Zero = 3'b001; // not equal + end + if ($signed(SrcA) < $signed(SrcB)) begin + assign Zero = 3'b010; // less than flag + end + if ($signed(SrcA) >= $signed(SrcB)) begin + assign Zero = 3'b011; // greater/equal than flag + end + if ($unsigned(SrcA) < $unsigned(SrcB)) begin + assign Zero = 3'b100; // less than flag unsigned + end + if ($unsigned(SrcA) >= $unsigned(SrcB)) begin + assign Zero = 3'b101; // greater/equal than flag unsinged + end + endmodule \ No newline at end of file diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index d2961d0..5016f0e 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,11 +1,10 @@ module control ( input logic [31:0] instr, - input logic EQ, // ALU zero/equality flag - + input logic [2:0] EQ, output logic RegWrite, output logic ALUSrc, output logic [2:0] ALUctrl, - output logic [1:0] ImmSrc, + output logic [2:0] ImmSrc, output logic [1:0] ResultSrc, output logic MemWrite, output logic PCsrc, @@ -40,8 +39,42 @@ module control ( .ALUctrl(ALUctrl) ); - // PCsrc: branch AND zero - assign PCsrc = Branch & EQ; - + if (Branch) begin + case(funct3) + 3'b000: begin // BEQ + if (EQ == 3'b000) begin + PCsrc = 1'b1; + end + end + 3'b001: begin // BNE + if (EQ == 3'b001) begin + PCsrc = 1'b1; + end + end + 3'b100: begin // BLT + if (EQ == 3'b010) begin + PCsrc = 1'b1; + end + end + 3'b101: begin // BGE + if (EQ == 3'b011) begin + PCsrc = 1'b1; + end + end + 3'b110: begin // BLTU + if (EQ == 3'b100) begin + PCsrc = 1'b1; + end + end + 3'b111: begin // BGEU + if (EQ == 3'b101) begin + PCsrc = 1'b1; + end + end + default: begin + PCsrc = 1'b0; + end + endcase + end endmodule diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv index 7a80919..b21fe1d 100644 --- a/repo/rtl/data_mem.sv +++ b/repo/rtl/data_mem.sv @@ -6,17 +6,51 @@ module data_mem #( input logic en, // write enable input logic [ADDRESS_WIDTH-1:0] wr_addr, // memory address input logic [DATA_WIDTH-1:0] din, // data to write + input logic [2:0] funct3, // for byte/halfword/word selection output logic [DATA_WIDTH-1:0] dout // data read ); // 2^32 32-bit memory locations logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; - - assign dout = ram_array[wr_addr]; // read data from memory assynchronously + case(funct3) + 3'b000: begin // LB + assign dout = {{24{ram_array[wr_addr][7]}}, ram_array[wr_addr][7:0]}; + end + 3'b001: begin // LH + assign dout = {{16{ram_array[wr_addr][15]}}, ram_array[wr_addr][15:0]}; + end + 3'b010: begin // LW + assign dout = ram_array[wr_addr]; + end + 3'b100: begin // LBU + assign dout = {24'b0, ram_array[wr_addr][7:0]}; + end + 3'b101: begin // LHU + assign dout = {16'b0, ram_array[wr_addr][15:0]}; + end + default: begin + assign dout = ram_array[wr_addr]; // read data from memory assynchronously + + end + endcase + always_ff @(posedge clk) begin if (en == 1'b1) begin - ram_array[wr_addr] <= din; // write data to memory synchronously + case(funct3) + 3'b000: begin // SB + ram_array[wr_addr][7:0] <= din[7:0]; + end + 3'b001: begin // SH + ram_array[wr_addr][15:0] <= din[15:0]; + end + 3'b010: begin // SW + ram_array[wr_addr] <= din; + end + default: begin + ram_array[wr_addr] <= din; // write data to memory synchronously + end + endcase end end diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index 40facb0..f908d79 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -13,7 +13,7 @@ module data_unit #( input logic ALUsrc, // select imm or reg input logic ResultSrc, // select ALU or mem data input logic [2:0] funct3, // for memory access size - output logic EQ, // ALU equality flag + output logic [2:0] EQ, // ALU equality flag output logic [DATA_WIDTH-1:0] a0 // x10 output ); diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 1bd306b..f0b968b 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -7,7 +7,7 @@ module main_decoder ( output logic RegWrite, // enable writing to register file output logic Branch, // indicates branch instruction output logic [2:0] ImmSrc, // selects type of immediate - output logic [1:0] ALUOp // encodes ALU operation type (passed to ALU control) + output logic [1:0] ALUOp, // encodes ALU operation type (passed to ALU control) ); // combinational logic to decode opcode and generate control signals @@ -31,7 +31,7 @@ always_comb begin ALUsrc = 1; // use immediate for address RegWrite = 1; Branch = 0; - ImmSrc = 2'b000; // I-type immediate + ImmSrc = 3'b000; // I-type immediate ALUOp = 2'b00; // ALU does ADD for address end @@ -43,7 +43,7 @@ always_comb begin ALUsrc = 1; // use immediate for address RegWrite = 0; Branch = 0; - ImmSrc = 2'b001; // S-type immediate + ImmSrc = 3'b001; // S-type immediate ALUOp = 2'b00; // ALU does ADD for address end @@ -55,7 +55,7 @@ always_comb begin ALUsrc = 0; // second operand from register RegWrite = 1; Branch = 0; - ImmSrc = 2'b000; // don't care + ImmSrc = 3'b000; // don't care ALUOp = 2'b10; // R-type ALU decoding end @@ -67,7 +67,7 @@ always_comb begin ALUsrc = 0; // use registers RegWrite = 0; Branch = 1; // enable branch logic - ImmSrc = 2'b010; // B-type immediate + ImmSrc = 3'b010; // B-type immediate ALUOp = 2'b01; // ALU subtracts for comparison end @@ -79,7 +79,7 @@ always_comb begin ALUsrc = 1; // use immediate RegWrite = 1; Branch = 0; - ImmSrc = 2'b000; // I-type immediate + ImmSrc = 3'b000; // I-type immediate ALUOp = 2'b11; // I-type ALU (distinct from R-type) end @@ -91,7 +91,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b011; // U-type immediate + ImmSrc = 3'b011; // U-type immediate ALUOp = 2'b00; end @@ -103,7 +103,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b011; // U-type immediate + ImmSrc = 3'b011; // U-type immediate ALUOp = 2'b00; end @@ -115,7 +115,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; // write x[rd] = PC+4 Branch = 0; - ImmSrc = 2'100; + ImmSrc = 3'b100; ALUOp = 2'b00; end @@ -127,7 +127,7 @@ always_comb begin ALUsrc = 1; RegWrite = 1; Branch = 0; - ImmSrc = 2'b000; + ImmSrc = 3'b000; ALUOp = 2'b00; end @@ -137,7 +137,7 @@ always_comb begin ALUsrc = 0; RegWrite = 0; Branch = 0; - ImmSrc = 2'b000; + ImmSrc = 3'b000; ALUOp = 2'b00; end endcase diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index a9b1626..e968c5c 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -43,5 +43,5 @@ module signext ( 3'b100: ImmOp = immJ; // J-type default: ImmOp = 32'b0; endcase -    end + end endmodule \ No newline at end of file diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index d7436fc..8b5ae92 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -11,22 +11,25 @@ module top #( logic RegWrite; logic ALUSrc; logic [2:0] ALUctrl; // 3-bit ALU control -logic [1:0] ImmSrc; // 2-bit immediate +logic [2:0] ImmSrc; // 2-bit immediate logic [1:0] ResultSrc; logic PCsrc; logic MemWrite; -logic EQ; +logic [2:0] EQ; +logic [2:0] funct3; // data wires logic [DATA_WIDTH-1:0] pc; logic [DATA_WIDTH-1:0] instr; logic [DATA_WIDTH-1:0] ImmOp; +logic [DATA_WIDTH-1:0] PCtarget; // register file address fields logic [ADDRESS_WIDTH-1:0] rs1; logic [ADDRESS_WIDTH-1:0] rs2; logic [ADDRESS_WIDTH-1:0] rd; +assign pc_next = pc + ImmOp; // PC + immediate for branch target // decode instruction fields assign rs1 = instr[19:15]; // source register 1 assign rs2 = instr[24:20]; // source register 2 @@ -37,7 +40,7 @@ PC pc_module ( .clk(clk), .rst(rst), .PCsrc(PCsrc), - .ImmOp(ImmOp), + .ImmOp(PCtarget), .pc(pc) ); @@ -57,7 +60,8 @@ control control ( .ImmSrc(ImmSrc), .ResultSrc(ResultSrc), .MemWrite(MemWrite), - .PCsrc(PCsrc) + .PCsrc(PCsrc), + .funct3(funct3) ); // sign-extension unit: generate immediate values @@ -80,7 +84,8 @@ data_unit data_unit ( .ResultSrc(ResultSrc), .MemWrite(MemWrite), .EQ(EQ), - .a0(a0) + .a0(a0), + .funct3(funct3) ); endmodule From ccad76928c3cd57bf93939de40d4bdd6e3a2d8e8 Mon Sep 17 00:00:00 2001 From: minimish1 Date: Tue, 25 Nov 2025 18:04:06 +0000 Subject: [PATCH 35/65] Added final instructions --- repo/rtl/PC.sv | 12 ++++-- repo/rtl/alu.sv | 79 ++++++++++++++++++++++++---------------- repo/rtl/control.sv | 70 +++++++++++++++++++++-------------- repo/rtl/data_unit.sv | 22 ++++++----- repo/rtl/main_decoder.sv | 24 ++++++------ repo/rtl/top.sv | 14 +++++-- 6 files changed, 134 insertions(+), 87 deletions(-) diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv index 130bdd5..090778e 100644 --- a/repo/rtl/PC.sv +++ b/repo/rtl/PC.sv @@ -3,8 +3,9 @@ module PC #( )( input logic clk, // system clock input logic rst, // asynchronous reset - input logic PCsrc, // selects between sequential PC and branch target + input logic [1:0] PCsrc, // selects between sequential PC and branch target input logic [WIDTH-1:0] ImmOp, // immediate offset for branch target + input logic [WIDTH-1:0] JALRjump, // current program counter input output logic [WIDTH-1:0] pc // current program counter ); @@ -23,8 +24,13 @@ assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; // add immediate offset to PC for branch target assign branch_PC = pc + ImmOp; -// select between sequential PC and branch PC -assign next_PC = PCsrc ? branch_PC : inc_PC; +// select between sequential PC and branch PC and JALR target +case(PCsrc) + 2'b00: assign next_PC = inc_PC; // Next sequential instruction + 2'b01: assign next_PC = branch_PC; // Branch target + 2'b10: assign next_PC = JALRjump; // JALR target + default: assign next_PC = inc_PC; // Default to sequential +endcase // program counter register with asynchronous reset always_ff @(posedge clk or posedge rst) begin diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 2324c8f..24ad38d 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -13,45 +13,60 @@ module alu ( input logic [31:0] SrcA, input logic [31:0] SrcB, input logic [3:0] ALUControl, + input logic [31:0] PC, + input logic [6:0] opcode, output logic [31:0] ALUResult, output logic [2:0] Zero ); always_comb begin - case (ALUControl) - 4'b0000: ALUResult = SrcA + SrcB; // add - 4'b0001: ALUResult = SrcA - SrcB; // sub - 4'b0010: ALUResult = SrcA & SrcB; // and - 4'b0011: ALUResult = SrcA | SrcB; // or - 4'b0100: ALUResult = SrcA ^ SrcB; // xor - 4'b0101 : ALUResult = SrcA << SrcB[4:0]; // sll - 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl - 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra - 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt - 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu - default: ALUResult = 32'b0; + case(opcode) + 7'b0110111: begin // LUI + ALUResult = SrcB; // Load Upper Immediate + end + 7'b0010111: begin // AUIPC + ALUResult = PC + SrcB; // Add Upper Immediate to PC + end + default: begin + // perform ALU operation based on ALUControl signal + case (ALUControl) + 4'b0000: ALUResult = SrcA + SrcB; // add + 4'b0001: ALUResult = SrcA - SrcB; // sub + 4'b0010: ALUResult = SrcA & SrcB; // and + 4'b0011: ALUResult = SrcA | SrcB; // or + 4'b0100: ALUResult = SrcA ^ SrcB; // xor + + 4'b0101 : ALUResult = SrcA << SrcB[4:0]; // sll + 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl + 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra + 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt + 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu + default: ALUResult = 32'b0; + + endcase + + if ($signed(SrcA) == $signed(SrcB)) begin + assign Zero = 3'b000; // zero flag + end + if ($signed(SrcA) != $signed(SrcB)) begin + assign Zero = 3'b001; // not equal + end + if ($signed(SrcA) < $signed(SrcB)) begin + assign Zero = 3'b010; // less than flag + end + if ($signed(SrcA) >= $signed(SrcB)) begin + assign Zero = 3'b011; // greater/equal than flag + end + if ($unsigned(SrcA) < $unsigned(SrcB)) begin + assign Zero = 3'b100; // less than flag unsigned + end + if ($unsigned(SrcA) >= $unsigned(SrcB)) begin + assign Zero = 3'b101; // greater/equal than flag unsinged + end + + end endcase end - - if ($signed(SrcA) == $signed(SrcB)) begin - assign Zero = 3'b000; // zero flag - end - if ($signed(SrcA) != $signed(SrcB)) begin - assign Zero = 3'b001; // not equal - end - if ($signed(SrcA) < $signed(SrcB)) begin - assign Zero = 3'b010; // less than flag - end - if ($signed(SrcA) >= $signed(SrcB)) begin - assign Zero = 3'b011; // greater/equal than flag - end - if ($unsigned(SrcA) < $unsigned(SrcB)) begin - assign Zero = 3'b100; // less than flag unsigned - end - if ($unsigned(SrcA) >= $unsigned(SrcB)) begin - assign Zero = 3'b101; // greater/equal than flag unsinged - end - endmodule \ No newline at end of file diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 5016f0e..a55de92 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -7,7 +7,7 @@ module control ( output logic [2:0] ImmSrc, output logic [1:0] ResultSrc, output logic MemWrite, - output logic PCsrc, + output logic [1:0] PCsrc, output logic [2:0] funct3 ); @@ -39,42 +39,56 @@ module control ( .ALUctrl(ALUctrl) ); - if (Branch) begin - case(funct3) - 3'b000: begin // BEQ - if (EQ == 3'b000) begin - PCsrc = 1'b1; + always_comb begin + if (Branch) begin + case(funct3) + 3'b000: begin // BEQ + if (EQ == 3'b000) begin + PCsrc = 2'b01; + end end - end - 3'b001: begin // BNE - if (EQ == 3'b001) begin - PCsrc = 1'b1; + 3'b001: begin // BNE + if (EQ == 3'b001) begin + PCsrc = 2'b01; + end end - end - 3'b100: begin // BLT - if (EQ == 3'b010) begin - PCsrc = 1'b1; + 3'b100: begin // BLT + if (EQ == 3'b010) begin + PCsrc = 2'b01; + end end - end - 3'b101: begin // BGE - if (EQ == 3'b011) begin - PCsrc = 1'b1; + 3'b101: begin // BGE + if (EQ == 3'b011) begin + PCsrc = 2'b01; + end end - end - 3'b110: begin // BLTU - if (EQ == 3'b100) begin - PCsrc = 1'b1; + 3'b110: begin // BLTU + if (EQ == 3'b100) begin + PCsrc = 2'b01; + end end - end - 3'b111: begin // BGEU - if (EQ == 3'b101) begin - PCsrc = 1'b1; + 3'b111: begin // BGEU + if (EQ == 3'b101) begin + PCsrc = 2'b01; + end end + default: begin + PCsrc = 2'b00; + end + endcase + end + + case(opcode) + 7'b1101111: begin // JAL + PCsrc = 2'b01; + end + 7'b1100111: begin // JALR + PCsrc = 2'b10; end default: begin - PCsrc = 1'b0; + PCsrc = 2'b00; end endcase end -endmodule +endmodule diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv index f908d79..4bdbfef 100644 --- a/repo/rtl/data_unit.sv +++ b/repo/rtl/data_unit.sv @@ -11,13 +11,16 @@ module data_unit #( input logic MemWrite, // write enable to memory input logic ALUctrl, // ALU control input logic ALUsrc, // select imm or reg - input logic ResultSrc, // select ALU or mem data + input logic [1:0] ResultSrc, // select ALU or mem data input logic [2:0] funct3, // for memory access size + input logic [DATA_WIDTH-1:0] PCtarget, // branch target address + input logic [DATA_WIDTH-1:0] PC, + input loguc [6:0] opcode, output logic [2:0] EQ, // ALU equality flag output logic [DATA_WIDTH-1:0] a0 // x10 output + output loguc [DATA_WIDTH-1:0] ALUout // ALU result ); -logic [DATA_WIDTH-1:0] ALUout; // ALU result logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 logic [DATA_WIDTH-1:0] WriteData; // register file output 2 @@ -51,7 +54,8 @@ alu alu ( .alu_op2(ALUop2), .alu_ctrl(ALUctrl), .alu_out(ALUout), - .eq(EQ) + .eq(EQ), + .PC(PC) ); // memory @@ -64,11 +68,11 @@ data_mem data_mem ( .funct3(funct3) ); -mux mux2 ( - .in0(ALUout), - .in1(ReadData), - .sel(ResultSrc), - .out(result) -); +case (ResultSrc) + 2'b00: assign ALUout = ALUout; // ALU result + 2'b01: assign ALUout = ReadData; // Memory data + 2'b10: assign ALUout = PCtarget; // PC + 4 for JAL/JALR + default: assign ALUout = ALUout; // Default to ALU result +endcase endmodule diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index f0b968b..47744f2 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,7 +1,7 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction - output logic ResultSrc, // selects data written to register file (ALU result or memory data) + output logic [1:0] ResultSrc, // selects data written to register file (ALU result or memory data) output logic MemWrite, // enable writing to data memory output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) output logic RegWrite, // enable writing to register file @@ -13,7 +13,7 @@ module main_decoder ( // combinational logic to decode opcode and generate control signals always_comb begin // default values (safe defaults) - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 0; RegWrite = 0; @@ -26,7 +26,7 @@ always_comb begin // load instructions: LB, LH, LW, LBU, LHU // opcode = 0000011 7'b0000011: begin - ResultSrc = 1; // load data from memory + ResultSrc = 2'b01; // load data from memory MemWrite = 0; ALUsrc = 1; // use immediate for address RegWrite = 1; @@ -38,7 +38,7 @@ always_comb begin // store instructions: SB, SH, SW S-type // opcode = 0100011 7'b0100011: begin - ResultSrc = 0; // don't care + ResultSrc = 2'b00; // don't care MemWrite = 1; // write to data memory ALUsrc = 1; // use immediate for address RegWrite = 0; @@ -50,7 +50,7 @@ always_comb begin // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND // opcode = 0110011 7'b0110011: begin - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 0; // second operand from register RegWrite = 1; @@ -62,7 +62,7 @@ always_comb begin // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU // opcode = 1100011 7'b1100011: begin - ResultSrc = 0; // don't care + ResultSrc = 2'b00; // don't care MemWrite = 0; ALUsrc = 0; // use registers RegWrite = 0; @@ -74,7 +74,7 @@ always_comb begin // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI // opcode = 0010011 7'b0010011: begin - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 1; // use immediate RegWrite = 1; @@ -86,7 +86,7 @@ always_comb begin // AUIPC (U-type) // opcode = 0010111 7'b0010111: begin - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 1; RegWrite = 1; @@ -98,7 +98,7 @@ always_comb begin // LUI (U-type) // opcode = 0110111 7'b0110111: begin - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 1; RegWrite = 1; @@ -110,7 +110,7 @@ always_comb begin // JAL (J-type) // opcode = 1101111 7'b1101111: begin - ResultSrc = 0; // return address is PC+4 (handled in datapath) + ResultSrc = 2'b10; // return address is PC+4 (handled in datapath) MemWrite = 0; ALUsrc = 1; RegWrite = 1; // write x[rd] = PC+4 @@ -122,7 +122,7 @@ always_comb begin // JALR (I-type) // opcode = 1100111 7'b1100111: begin - ResultSrc = 0; + ResultSrc = 2'b10; MemWrite = 0; ALUsrc = 1; RegWrite = 1; @@ -132,7 +132,7 @@ always_comb begin end default: begin - ResultSrc = 0; + ResultSrc = 2'b00; MemWrite = 0; ALUsrc = 0; RegWrite = 0; diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 8b5ae92..43d6e06 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -13,7 +13,7 @@ logic ALUSrc; logic [2:0] ALUctrl; // 3-bit ALU control logic [2:0] ImmSrc; // 2-bit immediate logic [1:0] ResultSrc; -logic PCsrc; +logic [1:0] PCsrc; logic MemWrite; logic [2:0] EQ; logic [2:0] funct3; @@ -23,7 +23,9 @@ logic [DATA_WIDTH-1:0] pc; logic [DATA_WIDTH-1:0] instr; logic [DATA_WIDTH-1:0] ImmOp; logic [DATA_WIDTH-1:0] PCtarget; +logic [DATA_WIDTH-1:0] ALUout; +logic [6:0] opcode = instr[6:0]; // register file address fields logic [ADDRESS_WIDTH-1:0] rs1; logic [ADDRESS_WIDTH-1:0] rs2; @@ -41,7 +43,8 @@ PC pc_module ( .rst(rst), .PCsrc(PCsrc), .ImmOp(PCtarget), - .pc(pc) + .pc(pc), + .JALRjump(ALUout) ); // instruction memory: fetch instruction at PC @@ -85,7 +88,12 @@ data_unit data_unit ( .MemWrite(MemWrite), .EQ(EQ), .a0(a0), - .funct3(funct3) + .funct3(funct3), + .PCtarget(PCtarget), + .ALUout(ALUout), + .PC(pc), + .opcode(opcode) + ); endmodule From d8764d02c5bac756f8a012f63f20b7b5020513b3 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Wed, 26 Nov 2025 12:53:13 +0000 Subject: [PATCH 36/65] I/O Updated --- repo/rtl/main_decoder.sv | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 47744f2..55d9615 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,13 +1,16 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction - output logic [1:0] ResultSrc, // selects data written to register file (ALU result or memory data) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) output logic MemWrite, // enable writing to data memory - output logic ALUsrc, // selects ALU second operand (0 = register, 1 = immediate) + output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) output logic RegWrite, // enable writing to register file output logic Branch, // indicates branch instruction - output logic [2:0] ImmSrc, // selects type of immediate + output logic Jump, + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, U = 011, J = 100) output logic [1:0] ALUOp, // encodes ALU operation type (passed to ALU control) + output logic [2:0] AddressingControl ); // combinational logic to decode opcode and generate control signals @@ -15,7 +18,7 @@ always_comb begin // default values (safe defaults) ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 0; + ALUSrc = 0; RegWrite = 0; Branch = 0; ImmSrc = 3'b000; @@ -28,7 +31,7 @@ always_comb begin 7'b0000011: begin ResultSrc = 2'b01; // load data from memory MemWrite = 0; - ALUsrc = 1; // use immediate for address + ALUSrc = 1; // use immediate for address RegWrite = 1; Branch = 0; ImmSrc = 3'b000; // I-type immediate @@ -40,7 +43,7 @@ always_comb begin 7'b0100011: begin ResultSrc = 2'b00; // don't care MemWrite = 1; // write to data memory - ALUsrc = 1; // use immediate for address + ALUSrc = 1; // use immediate for address RegWrite = 0; Branch = 0; ImmSrc = 3'b001; // S-type immediate @@ -52,7 +55,7 @@ always_comb begin 7'b0110011: begin ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 0; // second operand from register + ALUSrc = 0; // second operand from register RegWrite = 1; Branch = 0; ImmSrc = 3'b000; // don't care @@ -64,7 +67,7 @@ always_comb begin 7'b1100011: begin ResultSrc = 2'b00; // don't care MemWrite = 0; - ALUsrc = 0; // use registers + ALUSrc = 0; // use registers RegWrite = 0; Branch = 1; // enable branch logic ImmSrc = 3'b010; // B-type immediate @@ -76,7 +79,7 @@ always_comb begin 7'b0010011: begin ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 1; // use immediate + ALUSrc = 1; // use immediate RegWrite = 1; Branch = 0; ImmSrc = 3'b000; // I-type immediate @@ -88,7 +91,7 @@ always_comb begin 7'b0010111: begin ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 1; + ALUSrc = 1; RegWrite = 1; Branch = 0; ImmSrc = 3'b011; // U-type immediate @@ -100,7 +103,7 @@ always_comb begin 7'b0110111: begin ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 1; + ALUSrc = 1; RegWrite = 1; Branch = 0; ImmSrc = 3'b011; // U-type immediate @@ -112,7 +115,7 @@ always_comb begin 7'b1101111: begin ResultSrc = 2'b10; // return address is PC+4 (handled in datapath) MemWrite = 0; - ALUsrc = 1; + ALUSrc = 1; RegWrite = 1; // write x[rd] = PC+4 Branch = 0; ImmSrc = 3'b100; @@ -124,7 +127,7 @@ always_comb begin 7'b1100111: begin ResultSrc = 2'b10; MemWrite = 0; - ALUsrc = 1; + ALUSrc = 1; RegWrite = 1; Branch = 0; ImmSrc = 3'b000; @@ -134,7 +137,7 @@ always_comb begin default: begin ResultSrc = 2'b00; MemWrite = 0; - ALUsrc = 0; + ALUSrc = 0; RegWrite = 0; Branch = 0; ImmSrc = 3'b000; From 42b217f1f03adddb752668202ec1702c10dd756d Mon Sep 17 00:00:00 2001 From: Sicovo Date: Wed, 26 Nov 2025 13:59:57 +0000 Subject: [PATCH 37/65] Full ISA Supported --- repo/rtl/main_decoder.sv | 133 +++++++++++++++------------------------ 1 file changed, 51 insertions(+), 82 deletions(-) diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 55d9615..501c927 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,39 +1,39 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction - - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) - output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic MemWrite, // enable writing to data memory - output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) + output logic RegWrite, // enable writing to register file + output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) + output logic MemWrite, // enable writing to data memory + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4, 11 = imm) + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) output logic Branch, // indicates branch instruction - output logic Jump, - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, U = 011, J = 100) - output logic [1:0] ALUOp, // encodes ALU operation type (passed to ALU control) - output logic [2:0] AddressingControl + output logic Jump, // indicates jump instruction + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [1:0] ALUOp // encodes ALU operation type (00 = ADD category(load/store/addi/auipc/jalr), 01 = SUB category(branch), 10 = R-type/I-type) + ); // combinational logic to decode opcode and generate control signals always_comb begin // default values (safe defaults) + RegWrite = 1'b0; + ALUSrc = 1'b0; + MemWrite = 1'b0; ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 0; - RegWrite = 0; - Branch = 0; - ImmSrc = 3'b000; - ALUOp = 2'b00; + PCSrc = 2'b00; + Branch = 1'b0; + Jump = 1'b0; + ImmSrc = 3'b000; + ALUOp = 2'b00; case(opcode) // load instructions: LB, LH, LW, LBU, LHU // opcode = 0000011 7'b0000011: begin + RegWrite = 1'b1; + ALUSrc = 1'b1; ResultSrc = 2'b01; // load data from memory - MemWrite = 0; - ALUSrc = 1; // use immediate for address - RegWrite = 1; - Branch = 0; ImmSrc = 3'b000; // I-type immediate ALUOp = 2'b00; // ALU does ADD for address end @@ -41,107 +41,76 @@ always_comb begin // store instructions: SB, SH, SW S-type // opcode = 0100011 7'b0100011: begin - ResultSrc = 2'b00; // don't care - MemWrite = 1; // write to data memory - ALUSrc = 1; // use immediate for address - RegWrite = 0; - Branch = 0; - ImmSrc = 3'b001; // S-type immediate - ALUOp = 2'b00; // ALU does ADD for address + MemWrite = 1'b1; + ALUSrc = 1'b1; + ImmSrc = 3'b001; // S-type immediate end // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND // opcode = 0110011 7'b0110011: begin - ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 0; // second operand from register - RegWrite = 1; - Branch = 0; - ImmSrc = 3'b000; // don't care - ALUOp = 2'b10; // R-type ALU decoding + RegWrite = 1'b1; + ALUSrc = 1'b0; + ALUOp = 2'b10; end // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU // opcode = 1100011 7'b1100011: begin - ResultSrc = 2'b00; // don't care - MemWrite = 0; - ALUSrc = 0; // use registers - RegWrite = 0; - Branch = 1; // enable branch logic + Branch = 1'b1; ImmSrc = 3'b010; // B-type immediate - ALUOp = 2'b01; // ALU subtracts for comparison + ALUOp = 2'b01; // ALU does SUB for comparison end // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI // opcode = 0010011 7'b0010011: begin - ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 1; // use immediate - RegWrite = 1; - Branch = 0; - ImmSrc = 3'b000; // I-type immediate - ALUOp = 2'b11; // I-type ALU (distinct from R-type) + RegWrite = 1'b1; + ALUSrc = 1'b1; + ALUOp = 2'b10; + ImmSrc = 3'b000; // I-type immediate end // AUIPC (U-type) // opcode = 0010111 7'b0010111: begin - ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 3'b011; // U-type immediate + RegWrite = 1'b1; + ImmSrc = 3'b100; // U-type immediate + ALUSrc = 1'b1; ALUOp = 2'b00; + ResultSrc = 2'b00; end // LUI (U-type) // opcode = 0110111 7'b0110111: begin + RegWrite = 1'b1; + ImmSrc = 3'b100; // U-type immediate ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 3'b011; // U-type immediate - ALUOp = 2'b00; + ALUSrc = 1'b1; + ALUOp = 2'b00; //ALU does ADD with 0 + imm end // JAL (J-type) // opcode = 1101111 7'b1101111: begin - ResultSrc = 2'b10; // return address is PC+4 (handled in datapath) - MemWrite = 0; - ALUSrc = 1; - RegWrite = 1; // write x[rd] = PC+4 - Branch = 0; - ImmSrc = 3'b100; - ALUOp = 2'b00; + RegWrite = 1'b1; + Jump = 1'b1; + ResultSrc = 2'b10; // return address is PC+4 written to rd + ImmSrc = 3'b011; // J-type immediate + PCSrc = 2'b01; // PC + imm end // JALR (I-type) // opcode = 1100111 7'b1100111: begin - ResultSrc = 2'b10; - MemWrite = 0; - ALUSrc = 1; - RegWrite = 1; - Branch = 0; - ImmSrc = 3'b000; - ALUOp = 2'b00; - end - - default: begin - ResultSrc = 2'b00; - MemWrite = 0; - ALUSrc = 0; - RegWrite = 0; - Branch = 0; - ImmSrc = 3'b000; - ALUOp = 2'b00; + RegWrite = 1'b1; + Jump = 1'b1; + ResultSrc = 2'b10; // return address is PC+4 written to rd + ImmSrc = 3'b000; // I-type immediate + ALUSrc = 1'b1; + ALUOp = 2'b00; // ALU does ADD for address calculation + PCSrc = 2'b10; // ALU result (rs1 + imm) end endcase end From 6859162677dfe33eb24bb89de5100ca4abc0ec2c Mon Sep 17 00:00:00 2001 From: Sicovo Date: Wed, 26 Nov 2025 21:59:03 +0000 Subject: [PATCH 38/65] ALUOp = 10 for I-type/R-type for better implementation in pipeline --- repo/rtl/alu_decoder.sv | 80 +++++++++++++++++----------------------- repo/rtl/main_decoder.sv | 8 +++- 2 files changed, 40 insertions(+), 48 deletions(-) diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv index a8beed5..dadab97 100644 --- a/repo/rtl/alu_decoder.sv +++ b/repo/rtl/alu_decoder.sv @@ -1,57 +1,44 @@ module alu_decoder ( - input logic [1:0] ALUOp, - input logic [2:0] funct3, - input logic funct75, // funct7[5] - output logic [3:0] ALUControl // extended to 4 bits + input logic [1:0] ALUOp, + input logic [2:0] funct3, + input logic [6:0] funct7, + output logic [3:0] ALUControl ); - // ALUControl encoding (4 bits) - // 0000 = ADD - // 0001 = SUB - // 0010 = AND - // 0011 = OR - // 0100 = XOR - // 0101 = SLL - // 0110 = SRL - // 0111 = SRA - // 1000 = SLT (signed) - // 1001 = SLTU (unsigned) - // (leave others for future) + logic funct7_5; + assign funct7_5 = funct7[5]; always_comb begin - unique case (ALUOp) - // Load/Store/AUIPC: always ADD (address calculation) - 2'b00: ALUControl = 4'b0000; // ADD + case (ALUOp) + + 2'b00: ALUControl = 4'b0000; // add for lw/sw/addi/auipc/jalr/ - // Branch comparison: set to SUB (we also use Zero and SLT flags) - 2'b01: ALUControl = 4'b0001; // SUB + 2'b01: ALUControl = 4'b0001; // sub for beq/bne - // R-type: decode by funct3 + funct7 - 2'b10: begin + 2'b10: begin // r-type/i-type unique case (funct3) - 3'b000: ALUControl = funct75 ? 4'b0001 : 4'b0000; // SUB : ADD - 3'b001: ALUControl = 4'b0101; // SLL - 3'b010: ALUControl = 4'b1000; // SLT (signed) - 3'b011: ALUControl = 4'b1001; // SLTU (unsigned) - 3'b100: ALUControl = 4'b0100; // XOR - 3'b101: ALUControl = funct75 ? 4'b0111 : 4'b0110; // SRA : SRL - 3'b110: ALUControl = 4'b0011; // OR - 3'b111: ALUControl = 4'b0010; // AND - default: ALUControl = 4'b0000; - endcase - end + 3'b000: begin + if ({funct7_5} == 1'b1) + ALUControl = 4'b0001; // sub + else + ALUControl = 4'b0000; // add + end + + 3'b001: ALUControl = 4'b0101; // sll + + 3'b010: ALUControl = 4'b1000; // slt + + 3'b011: ALUControl = 4'b1001; // sltu + 3'b100: ALUControl = 4'b0100; // xor + 3'b101: begin // SRL / SRA / SRLI / SRAI + if (funct7_5 == 1'b1) + ALUControl = 4'b0111; // sra + else + ALUControl = 4'b0110; // srl + end + 3'b110: ALUControl = 4'b0011; // or + 3'b111: ALUControl = 4'b0010; // and - // I-type: similar to R-type but shifts use funct7[5] as well - 2'b11: begin - unique case (funct3) - 3'b000: ALUControl = 4'b0000; // ADDI - 3'b001: ALUControl = 4'b0101; // SLLI (shamt) - 3'b010: ALUControl = 4'b1000; // SLTI - 3'b011: ALUControl = 4'b1001; // SLTIU - 3'b100: ALUControl = 4'b0100; // XORI - 3'b101: ALUControl = funct75 ? 4'b0111 : 4'b0110; // SRAI : SRLI - 3'b110: ALUControl = 4'b0011; // ORI - 3'b111: ALUControl = 4'b0010; // ANDI default: ALUControl = 4'b0000; endcase end @@ -59,5 +46,4 @@ module alu_decoder ( default: ALUControl = 4'b0000; endcase end - -endmodule +endmodule \ No newline at end of file diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 501c927..89a4840 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -67,8 +67,14 @@ always_comb begin 7'b0010011: begin RegWrite = 1'b1; ALUSrc = 1'b1; - ALUOp = 2'b10; ImmSrc = 3'b000; // I-type immediate + + case (funct3) + 3'b000: ALUOp = 2'b00; + + default: ALUOp = 2'b10; + + endcase end // AUIPC (U-type) From 682eec0bd9e4360ef3e6ba3d42d5c0b5182fd3d0 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Thu, 27 Nov 2025 12:16:50 +0000 Subject: [PATCH 39/65] Control path for all ISA --- repo/rtl/alu_decoder.sv | 12 ++++- repo/rtl/control.sv | 103 +++++++++++++++------------------------ repo/rtl/main_decoder.sv | 7 +-- 3 files changed, 50 insertions(+), 72 deletions(-) diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv index dadab97..1236ba4 100644 --- a/repo/rtl/alu_decoder.sv +++ b/repo/rtl/alu_decoder.sv @@ -11,9 +11,17 @@ module alu_decoder ( always_comb begin case (ALUOp) - 2'b00: ALUControl = 4'b0000; // add for lw/sw/addi/auipc/jalr/ + 2'b00: ALUControl = 4'b0000; // add for lw/sw/addi/auipc/jalr/lui(0 + imm) - 2'b01: ALUControl = 4'b0001; // sub for beq/bne + 2'b01: begin + unique case (funct3) + 3'b100: ALUControl = 4'b1000; // slt for blt + 3'b101: ALUControl = 4'b1000; // !slt for bge + 3'b110: ALUControl = 4'b1001; // sltu for bltu + 3'b111: ALUControl = 4'b1001; // !sltu for bgeu + default: ALUControl = 4'b0001; // sub + endcase + end 2'b10: begin // r-type/i-type unique case (funct3) diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index a55de92..3d9089d 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,94 +1,67 @@ module control ( - input logic [31:0] instr, - input logic [2:0] EQ, - output logic RegWrite, - output logic ALUSrc, - output logic [2:0] ALUctrl, - output logic [2:0] ImmSrc, - output logic [1:0] ResultSrc, - output logic MemWrite, - output logic [1:0] PCsrc, - output logic [2:0] funct3 + input logic [31:0] Instr, + input logic Zero, + + output logic [2:0] AddressingControl, // hand to data memory for bit selection (000 = lb/sb, 001 = lh/sh, 010 = lw/sw, 100 = lbu, 101 = lhu) + output logic RegWrite, // enable writing to register file + output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) + output logic MemWrite, // enable writing to data memory + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4, 11 = imm) + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic Branch, // indicates branch instruction + output logic Jump, // indicates jump instruction + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [3:0] ALUControl // selects ALU operation ); - // fields - logic [6:0] opcode = instr[6:0]; - logic [6:0] funct7 = instr[31:25]; - assign funct3 = instr[14:12]; + logic [6:0] opcode; + logic [2:0] funct3; + logic [6:0] funct7; + + assign opcode = Instr[6:0]; + assign funct3 = Instr[14:12]; + assign funct7 = Instr[31:25]; + assign AddressingControl = funct3; // store width + // wires between decoders - logic Branch; logic [1:0] ALUOp; - // instantiate main decoder main_decoder main_dec ( .opcode(opcode), + .funct3(funct3), .RegWrite(RegWrite), .ALUSrc(ALUSrc), .ResultSrc(ResultSrc), .MemWrite(MemWrite), .ImmSrc(ImmSrc), .Branch(Branch), + .Jump(Jump), .ALUOp(ALUOp) ); - // instantiate ALU decoder alu_decoder alu_dec ( .ALUOp(ALUOp), .funct3(funct3), - .funct75(funct7[5]), - .ALUctrl(ALUctrl) + .funct7(funct7), + .ALUControl(ALUControl) ); always_comb begin + PCSrc = 2'b00; // default PC+4 + if (Branch) begin - case(funct3) - 3'b000: begin // BEQ - if (EQ == 3'b000) begin - PCsrc = 2'b01; - end - end - 3'b001: begin // BNE - if (EQ == 3'b001) begin - PCsrc = 2'b01; - end - end - 3'b100: begin // BLT - if (EQ == 3'b010) begin - PCsrc = 2'b01; - end - end - 3'b101: begin // BGE - if (EQ == 3'b011) begin - PCsrc = 2'b01; - end - end - 3'b110: begin // BLTU - if (EQ == 3'b100) begin - PCsrc = 2'b01; - end - end - 3'b111: begin // BGEU - if (EQ == 3'b101) begin - PCsrc = 2'b01; - end - end - default: begin - PCsrc = 2'b00; - end + unique case (funct3) + 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU endcase end - - case(opcode) - 7'b1101111: begin // JAL - PCsrc = 2'b01; - end - 7'b1100111: begin // JALR - PCsrc = 2'b10; - end - default: begin - PCsrc = 2'b00; - end - endcase + + if (opcode == 7'b1101111) PCSrc = 2'b01; // JAL + if (opcode == 7'b1100111) PCSrc = 2'b10; // JALR end endmodule diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv index 89a4840..7a768f9 100644 --- a/repo/rtl/main_decoder.sv +++ b/repo/rtl/main_decoder.sv @@ -1,11 +1,11 @@ module main_decoder ( input logic [6:0] opcode, // 7-bit opcode field from the instruction + input logic [2:0] funct3, // 3-bit funct3 field from the instruction output logic RegWrite, // enable writing to register file output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) output logic MemWrite, // enable writing to data memory output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4, 11 = imm) - output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) output logic Branch, // indicates branch instruction output logic Jump, // indicates jump instruction output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) @@ -20,7 +20,6 @@ always_comb begin ALUSrc = 1'b0; MemWrite = 1'b0; ResultSrc = 2'b00; - PCSrc = 2'b00; Branch = 1'b0; Jump = 1'b0; ImmSrc = 3'b000; @@ -59,7 +58,7 @@ always_comb begin 7'b1100011: begin Branch = 1'b1; ImmSrc = 3'b010; // B-type immediate - ALUOp = 2'b01; // ALU does SUB for comparison + ALUOp = 2'b01; // ALU does SUB for BEQ/BNE (other comparisons handled in ALU decoder) end // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI @@ -104,7 +103,6 @@ always_comb begin Jump = 1'b1; ResultSrc = 2'b10; // return address is PC+4 written to rd ImmSrc = 3'b011; // J-type immediate - PCSrc = 2'b01; // PC + imm end // JALR (I-type) @@ -116,7 +114,6 @@ always_comb begin ImmSrc = 3'b000; // I-type immediate ALUSrc = 1'b1; ALUOp = 2'b00; // ALU does ADD for address calculation - PCSrc = 2'b10; // ALU result (rs1 + imm) end endcase end From 54fd695da11e644287595f99ab1fef99bec6bc64 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Thu, 27 Nov 2025 21:32:43 +0000 Subject: [PATCH 40/65] Single Cycle RV32I Processor --- repo/rtl/PC.sv | 43 ------ repo/rtl/alu.sv | 65 +++----- repo/rtl/alu_decoder.sv | 57 ------- repo/rtl/contol_path.sv | 54 +++++++ repo/rtl/control.sv | 230 ++++++++++++++++++++++------- repo/rtl/data_mem.sv | 80 +++++----- repo/rtl/data_path.sv | 84 +++++++++++ repo/rtl/data_unit.sv | 78 ---------- repo/rtl/{imem.sv => instr_mem.sv} | 12 +- repo/rtl/main_decoder.sv | 121 --------------- repo/rtl/mux.sv | 14 -- repo/rtl/pc.sv | 38 +++++ repo/rtl/pcsrc_unit.sv | 34 +++++ repo/rtl/reg_file.sv | 38 +++-- repo/rtl/register.sv | 12 -- repo/rtl/signext.sv | 52 ++----- repo/rtl/top.sv | 147 +++++++----------- 17 files changed, 523 insertions(+), 636 deletions(-) delete mode 100644 repo/rtl/PC.sv delete mode 100644 repo/rtl/alu_decoder.sv create mode 100644 repo/rtl/contol_path.sv create mode 100644 repo/rtl/data_path.sv delete mode 100644 repo/rtl/data_unit.sv rename repo/rtl/{imem.sv => instr_mem.sv} (53%) delete mode 100644 repo/rtl/main_decoder.sv delete mode 100644 repo/rtl/mux.sv create mode 100644 repo/rtl/pc.sv create mode 100644 repo/rtl/pcsrc_unit.sv delete mode 100644 repo/rtl/register.sv diff --git a/repo/rtl/PC.sv b/repo/rtl/PC.sv deleted file mode 100644 index 090778e..0000000 --- a/repo/rtl/PC.sv +++ /dev/null @@ -1,43 +0,0 @@ -module PC #( - parameter WIDTH = 32 -)( - input logic clk, // system clock - input logic rst, // asynchronous reset - input logic [1:0] PCsrc, // selects between sequential PC and branch target - input logic [WIDTH-1:0] ImmOp, // immediate offset for branch target - input logic [WIDTH-1:0] JALRjump, // current program counter input - output logic [WIDTH-1:0] pc // current program counter -); - -// compute PC+4 (normal sequential execution) -logic [WIDTH-1:0] inc_PC; - -// compute PC+immediate (branch target address) -logic [WIDTH-1:0] branch_PC; - -// next PC after the mux -logic [WIDTH-1:0] next_PC; - -// add 4 to PC for next instruction -assign inc_PC = pc + {{WIDTH-3{1'b0}}, 3'b100}; - -// add immediate offset to PC for branch target -assign branch_PC = pc + ImmOp; - -// select between sequential PC and branch PC and JALR target -case(PCsrc) - 2'b00: assign next_PC = inc_PC; // Next sequential instruction - 2'b01: assign next_PC = branch_PC; // Branch target - 2'b10: assign next_PC = JALRjump; // JALR target - default: assign next_PC = inc_PC; // Default to sequential -endcase - -// program counter register with asynchronous reset -always_ff @(posedge clk or posedge rst) begin - if (rst) - pc <= {WIDTH{1'b0}}; // Reset PC to 0 - else - pc <= next_PC; // Update PC normally -end - -endmodule diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 24ad38d..5a0f2e4 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -8,65 +8,34 @@ // 0111 = SRA // 1000 = SLT (signed) // 1001 = SLTU (unsigned) + // 1111 = LUI operation module alu ( input logic [31:0] SrcA, input logic [31:0] SrcB, input logic [3:0] ALUControl, - input logic [31:0] PC, - input logic [6:0] opcode, output logic [31:0] ALUResult, - output logic [2:0] Zero + output logic Zero ); always_comb begin + case (ALUControl) + 4'b0000: ALUResult = SrcA + SrcB; // add + 4'b0001: ALUResult = SrcA - SrcB; // sub + 4'b0010: ALUResult = SrcA & SrcB; // and + 4'b0011: ALUResult = SrcA | SrcB; // or + 4'b0100: ALUResult = SrcA ^ SrcB; // xor - case(opcode) - 7'b0110111: begin // LUI - ALUResult = SrcB; // Load Upper Immediate - end - 7'b0010111: begin // AUIPC - ALUResult = PC + SrcB; // Add Upper Immediate to PC - end - default: begin - // perform ALU operation based on ALUControl signal + 4'b0101: ALUResult = SrcA << SrcB[4:0]; // sll + 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl + 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra + 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt + 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu + 4'b1111: ALUResult = SrcB; // LUI operation (Load Upper Immediate) - case (ALUControl) - 4'b0000: ALUResult = SrcA + SrcB; // add - 4'b0001: ALUResult = SrcA - SrcB; // sub - 4'b0010: ALUResult = SrcA & SrcB; // and - 4'b0011: ALUResult = SrcA | SrcB; // or - 4'b0100: ALUResult = SrcA ^ SrcB; // xor - - 4'b0101 : ALUResult = SrcA << SrcB[4:0]; // sll - 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl - 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra - 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt - 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu - default: ALUResult = 32'b0; - - endcase - - if ($signed(SrcA) == $signed(SrcB)) begin - assign Zero = 3'b000; // zero flag - end - if ($signed(SrcA) != $signed(SrcB)) begin - assign Zero = 3'b001; // not equal - end - if ($signed(SrcA) < $signed(SrcB)) begin - assign Zero = 3'b010; // less than flag - end - if ($signed(SrcA) >= $signed(SrcB)) begin - assign Zero = 3'b011; // greater/equal than flag - end - if ($unsigned(SrcA) < $unsigned(SrcB)) begin - assign Zero = 3'b100; // less than flag unsigned - end - if ($unsigned(SrcA) >= $unsigned(SrcB)) begin - assign Zero = 3'b101; // greater/equal than flag unsinged - end - - end + default: ALUResult = 32'b0; endcase + + Zero = (ALUResult == 32'd0); end endmodule \ No newline at end of file diff --git a/repo/rtl/alu_decoder.sv b/repo/rtl/alu_decoder.sv deleted file mode 100644 index 1236ba4..0000000 --- a/repo/rtl/alu_decoder.sv +++ /dev/null @@ -1,57 +0,0 @@ -module alu_decoder ( - input logic [1:0] ALUOp, - input logic [2:0] funct3, - input logic [6:0] funct7, - output logic [3:0] ALUControl -); - - logic funct7_5; - assign funct7_5 = funct7[5]; - - always_comb begin - case (ALUOp) - - 2'b00: ALUControl = 4'b0000; // add for lw/sw/addi/auipc/jalr/lui(0 + imm) - - 2'b01: begin - unique case (funct3) - 3'b100: ALUControl = 4'b1000; // slt for blt - 3'b101: ALUControl = 4'b1000; // !slt for bge - 3'b110: ALUControl = 4'b1001; // sltu for bltu - 3'b111: ALUControl = 4'b1001; // !sltu for bgeu - default: ALUControl = 4'b0001; // sub - endcase - end - - 2'b10: begin // r-type/i-type - unique case (funct3) - 3'b000: begin - if ({funct7_5} == 1'b1) - ALUControl = 4'b0001; // sub - else - ALUControl = 4'b0000; // add - end - - 3'b001: ALUControl = 4'b0101; // sll - - 3'b010: ALUControl = 4'b1000; // slt - - 3'b011: ALUControl = 4'b1001; // sltu - 3'b100: ALUControl = 4'b0100; // xor - 3'b101: begin // SRL / SRA / SRLI / SRAI - if (funct7_5 == 1'b1) - ALUControl = 4'b0111; // sra - else - ALUControl = 4'b0110; // srl - end - 3'b110: ALUControl = 4'b0011; // or - 3'b111: ALUControl = 4'b0010; // and - - default: ALUControl = 4'b0000; - endcase - end - - default: ALUControl = 4'b0000; - endcase - end -endmodule \ No newline at end of file diff --git a/repo/rtl/contol_path.sv b/repo/rtl/contol_path.sv new file mode 100644 index 0000000..181eb21 --- /dev/null +++ b/repo/rtl/contol_path.sv @@ -0,0 +1,54 @@ +module control_path #( + input logic [31:0] Instr, + input logic Zero, + + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + logic Branch; + logic [2:0] BranchType; + logic [1:0] Jump; + + logic [6:0] opcode; + logic [2:0] funct3; + logic [6:0] funct7; + + assign opcode = Instr[6:0]; + assign funct3 = Instr[14:12]; + assign funct7 = Instr[31:25]; + + control control_unit ( + .opcode(opcode), + .funct3(funct3), + .funct7(funct7), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .Branch(Branch), + .BranchType(BranchType), + .Jump(Jump), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + + pcsrc_unit pcsrc_unit_inst ( + .Jump(Jump), + .Branch(Branch), + .Zero(Zero), + .BranchType(BranchType), + .PCSrc(PCSrc) + ); + +endmodule \ No newline at end of file diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 3d9089d..01b35ef 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,67 +1,185 @@ -module control ( - input logic [31:0] Instr, - input logic Zero, - - output logic [2:0] AddressingControl, // hand to data memory for bit selection (000 = lb/sb, 001 = lh/sh, 010 = lw/sw, 100 = lbu, 101 = lhu) - output logic RegWrite, // enable writing to register file - output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) - output logic MemWrite, // enable writing to data memory - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4, 11 = imm) - output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic Branch, // indicates branch instruction - output logic Jump, // indicates jump instruction - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) - output logic [3:0] ALUControl // selects ALU operation +module control #( + input logic [6:0] opcode, + input logic [2:0] funct3, + input logic [6:0] funct7, + + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic Branch, + output logic [2:0] BranchType, + output logic [1:0] Jump, // indicates jump instruction (00 = no jump, 01 = JAL, 10 = JALR) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform ); - logic [6:0] opcode; - logic [2:0] funct3; - logic [6:0] funct7; + // logic [6:0] opcode; + // logic [2:0] funct3; + // logic [6:0] funct7; - assign opcode = Instr[6:0]; - assign funct3 = Instr[14:12]; - assign funct7 = Instr[31:25]; + // assign opcode = Instr[6:0]; + // assign funct3 = Instr[14:12]; + // assign funct7 = Instr[31:25]; assign AddressingControl = funct3; // store width - // wires between decoders - logic [1:0] ALUOp; + always_comb begin + // Default values to prevent latches + RegWrite = 1'b0; + ALUControl = 4'b0000; + ALUSrcA = 1'b0; + ALUSrcB = 1'b0; + MemWrite = 1'b0; + ResultSrc = 2'b00; + Branch = 1'b0; + BranchType = 3'b000; + Jump = 2'b00; + ImmSrc = 3'b000; + AddressingControl = 3'b000; - main_decoder main_dec ( - .opcode(opcode), - .funct3(funct3), - .RegWrite(RegWrite), - .ALUSrc(ALUSrc), - .ResultSrc(ResultSrc), - .MemWrite(MemWrite), - .ImmSrc(ImmSrc), - .Branch(Branch), - .Jump(Jump), - .ALUOp(ALUOp) - ); - alu_decoder alu_dec ( - .ALUOp(ALUOp), - .funct3(funct3), - .funct7(funct7), - .ALUControl(ALUControl) - ); + case(opcode) + // R-type instructions + 7'b0110011: begin + RegWrite = 1'b1; + ALUSrc = 1'b0; + + case(funct3) + 3'b000: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0000; // add + 7'b0100000: ALUControl = 4'b0001; // sub + default: ALUControl = 4'b0000; + endcase + end + 3'b001: ALUControl = 4'b0101; // sll + 3'b010: ALUControl = 4'b1000; // slt + 3'b011: ALUControl = 4'b1001; // sltu + 3'b100: ALUControl = 4'b0100; // xor + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srl + 7'b0100000: ALUControl = 4'b0111; // sra + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // or + 3'b111: ALUControl = 4'b0010; // and - always_comb begin - PCSrc = 2'b00; // default PC+4 + default: ALUControl = 4'b0000; + endcase + end - if (Branch) begin - unique case (funct3) - 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ - 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE - 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT - 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE - 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU - 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU - endcase - end + // I-type instructions (Arithmetic/Logic) + 7'b0010011: begin + RegWrite = 1'b1; + ImmSrc = 3'b000; // I-type imm + ALUSrcB = 1'b1; + + case(funct3) + 3'b000: ALUControl = 4'b0000; // addi + 3'b001: ALUControl = 4'b0101; // slli + 3'b010: ALUControl = 4'b1000; // slti (Added) + 3'b011: ALUControl = 4'b1001; // sltiu (Added) + 3'b100: ALUControl = 4'b0100; // xori + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srli + 7'b0100000: ALUControl = 4'b0111; // srai + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // ori + 3'b111: ALUControl = 4'b0010; // andi + default: ALUControl = 4'b0000; + endcase + end - if (opcode == 7'b1101111) PCSrc = 2'b01; // JAL - if (opcode == 7'b1100111) PCSrc = 2'b10; // JALR - end + // I-type Load instructions + 7'b0000011: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b01; // From Memory + ImmSrc = 3'b000; // I-type imm + AddressingControl = funct3; + ALUControl = 4'b0000; // Add for address + end + + // S-type Store instructions + 7'b0100011: begin + MemWrite = 1'b1; + ALUSrcB = 1'b1; // read from immediate + ImmSrc = 3'b001; // S-type immediate + ALUControl = 4'b0000; // Add for address + AddressingControl = funct3; + end -endmodule + // B-type Branch instructions + 7'b1100011: begin + Branch = 1'b1; + ImmSrc = 3'b010; // B-type imm + BranchType = funct3; + + case(funct3) + // BEQ, BNE: ALU does SUB (0001) + // If A == B, Result = 0, Zero = 1 + 3'b000: ALUControl = 4'b0001; // beq + 3'b001: ALUControl = 4'b0001; // bne + + // BLT, BGE: ALU does SLT (1000) + // If A < B: Result = 1, Zero = 0. If A >= B: Result = 0, Zero = 1. + 3'b100: ALUControl = 4'b1000; // blt + 3'b101: ALUControl = 4'b1000; // bge + + // BLTU, BGEU: ALU does SLTU (1001) + 3'b110: ALUControl = 4'b1001; // bltu + 3'b111: ALUControl = 4'b1001; // bgeu + endcase + end + + // J-type JAL + 7'b1101111: begin + RegWrite = 1'b1; + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b011; // J-type imm + Jump = 2'b01; + end + + // I-type JALR + 7'b1100111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b000; // I-type imm + Jump = 2'b10; + // ALUControl = 4'b0000; // Add for target address + end + + // U-type LUI + 7'b0110111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; + ResultSrc = 2'b00; + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b1111; // LUI operation (0 + imm shifted) + end + + // U-type AUIPC rd <- PC + imm << 12 + 7'b0010111: begin + RegWrite = 1'b1; + MemWrite = 1'b0; + ALUSrcA = 1'b1; // Select PC + ALUSrcB = 1'b1; // Select Imm + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b000; // AUIPC operation (PC + imm shifted) + end + + default: begin + // Already handled by defaults at top + end + endcase + end +endmodule \ No newline at end of file diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv index b21fe1d..25ced8f 100644 --- a/repo/rtl/data_mem.sv +++ b/repo/rtl/data_mem.sv @@ -1,57 +1,49 @@ module data_mem #( - parameter DATA_WIDTH = 32, - ADDRESS_WIDTH = 32 + parameter XLEN = 32, + parameter ADDRESS_WIDTH = 16, + parameter DATA_WIDTH = 8 ) ( - input logic clk, - input logic en, // write enable - input logic [ADDRESS_WIDTH-1:0] wr_addr, // memory address - input logic [DATA_WIDTH-1:0] din, // data to write - input logic [2:0] funct3, // for byte/halfword/word selection - output logic [DATA_WIDTH-1:0] dout // data read + input logic clk, + input logic WE, // write enable + input logic [XLEN-1:0] A, // memory address + input logic [XLEN-1:0] WD, // data to write + input logic [2:0] AddressingControl, // funct3 to determine load/store type + output logic [XLEN-1:0] RD // data read ); + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; // 64KB data memory - // 2^32 32-bit memory locations - logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + logic [ADDRESS_WIDTH-1:0] addr; + assign addr = A[ADDRESS_WIDTH-1:0]; // use lower ADDRESS_WIDTH bits of address - case(funct3) - 3'b000: begin // LB - assign dout = {{24{ram_array[wr_addr][7]}}, ram_array[wr_addr][7:0]}; - end - 3'b001: begin // LH - assign dout = {{16{ram_array[wr_addr][15]}}, ram_array[wr_addr][15:0]}; - end - 3'b010: begin // LW - assign dout = ram_array[wr_addr]; - end - 3'b100: begin // LBU - assign dout = {24'b0, ram_array[wr_addr][7:0]}; - end - 3'b101: begin // LHU - assign dout = {16'b0, ram_array[wr_addr][15:0]}; - end - default: begin - assign dout = ram_array[wr_addr]; // read data from memory assynchronously - - end - endcase - always_ff @(posedge clk) begin - if (en == 1'b1) begin - case(funct3) - 3'b000: begin // SB - ram_array[wr_addr][7:0] <= din[7:0]; - end - 3'b001: begin // SH - ram_array[wr_addr][15:0] <= din[15:0]; - end - 3'b010: begin // SW - ram_array[wr_addr] <= din; + if (WE) begin + case (AddressingControl) + 3'b000: ram_array[addr] <= WD[7:0]; // SB + 3'b001: begin // SH + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; end - default: begin - ram_array[wr_addr] <= din; // write data to memory synchronously + 3'b010: begin // SW + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; + ram_array[addr+2] <= WD[23:16]; + ram_array[addr+3] <= WD[31:24]; end + default: ; // ignore other funct3 endcase end end + always_comb begin + case (AddressingControl) + 3'b000: RD = {{24{ram_array[addr][7]}}, ram_array[addr]}; // LB (signed) + 3'b001: RD = {{16{ram_array[addr+1][7]}}, ram_array[addr+1], ram_array[addr]}; // LH (signed) + 3'b010: RD = {ram_array[addr+3], ram_array[addr+2], ram_array[addr+1], ram_array[addr]}; // LW + 3'b100: RD = {24'b0, ram_array[addr]}; // LBU + 3'b101: RD = {16'b0, ram_array[addr+1], ram_array[addr]}; // LHU + default: RD = 32'b0; + endcase + end + + endmodule \ No newline at end of file diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv new file mode 100644 index 0000000..4ac4f5e --- /dev/null +++ b/repo/rtl/data_path.sv @@ -0,0 +1,84 @@ +module data_path ( + input logic clk, + input logic rst, + + input logic [1:0] PCSrc, + input logic RegWrite, + input logic [3:0] ALUControl, + input logic ALUSrcA, + input logic ALUSrcB, + input logic MemWrite, + input logic [1:0] ResultSrc, + input logic [2:0] ImmSrc, + input logic [2:0] AddressingControl, + + output logic [31:0] Instr, + output logic Zero +); + + logic [31:0] PC, PCPlus4, ImmExt, MemData, ALUResult, SrcA, SrcB, ReadData1, ReadData2, ResultData; + + assign SrcA = ALUSrcA ? PC : ReadData1; + assign SrcB = ALUSrcB ? ImmExt : ReadData2; + + + pc pc_inst( + .clk(clk), + .rst(rst), + .PCSrc(PCSrc), + .ImmExt(ImmExt), + .ALUResult(ALUResult), + .PCPlus4(PCPlus4), + .PC(PC) + ); + + alu alu_inst( + .SrcA(SrcA), + .SrcB(SrcB), + .ALUControl(ALUControl), + .ALUResult(ALUResult), + .Zero(Zero) + ); + + instr_mem instr_mem_inst( + .A(PC), + .RD(Instr) + ); + + data_mem data_mem_inst( + .clk(clk), + .WE(MemWrite), + .A(ALUResult), + .WD(ReadData2), + .AddressingControl(AddressingControl), + .RD(MemData) + ); + + reg_file reg_file_inst( + .clk(clk), + .AD1(Instr[19:15]), + .AD2(Instr[24:20]), + .AD3(Instr[11:7]), + .WD3(ResultData), + .WE3(RegWrite), + .RD1(ReadData1), + .RD2(ReadData2) + ); + + signext signext_inst( + .Imm(Instr[31:7]), + .ImmSrc(ImmSrc), + .ImmExt(ImmExt) + ); + + always_comb begin + case (ResultSrc) + 2'b00: ResultData = ALUResult; + 2'b01: ResultData = MemData; + 2'b10: ResultData = PCPlus4; + default: ResultData = 32'b0; + endcase + end + + +endmodule \ No newline at end of file diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv deleted file mode 100644 index 4bdbfef..0000000 --- a/repo/rtl/data_unit.sv +++ /dev/null @@ -1,78 +0,0 @@ -module data_unit #( - parameter DATA_WIDTH = 32, - ADDRESS_WIDTH = 5 -) ( - input logic clk, - input logic [ADDRESS_WIDTH-1:0] AD1, // rs1 address - input logic [ADDRESS_WIDTH-1:0] AD2, // rs2 address - input logic [ADDRESS_WIDTH-1:0] AD3, // rd address - input logic [DATA_WIDTH-1:0] ImmOp, // immediate value - input logic RegWrite, // write enable to register file - input logic MemWrite, // write enable to memory - input logic ALUctrl, // ALU control - input logic ALUsrc, // select imm or reg - input logic [1:0] ResultSrc, // select ALU or mem data - input logic [2:0] funct3, // for memory access size - input logic [DATA_WIDTH-1:0] PCtarget, // branch target address - input logic [DATA_WIDTH-1:0] PC, - input loguc [6:0] opcode, - output logic [2:0] EQ, // ALU equality flag - output logic [DATA_WIDTH-1:0] a0 // x10 output - output loguc [DATA_WIDTH-1:0] ALUout // ALU result -); - -logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 -logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 -logic [DATA_WIDTH-1:0] WriteData; // register file output 2 -logic [DATA_WIDTH-1:0] ReadData; // data memory output -logic [DATA_WIDTH-1:0] result; // data to write back to register file - -// register file: read rs1/rs2, write rd -reg_file reg_file ( - .clk(clk), - .read_addr1(AD1), - .read_addr2(AD2), - .write_addr(AD3), - .wd3(ALUout), - .we3(RegWrite), - .dout1(ALUop1), - .dout2(WriteData), - .a0(a0) -); - -// select ALU operand 2: register or immediate -mux mux1 ( - .in0(WriteData), - .in1(ImmOp), - .sel(ALUsrc), - .out(ALUop2) -); - -// ALU executes operation and sets EQ -alu alu ( - .alu_op1(ALUop1), - .alu_op2(ALUop2), - .alu_ctrl(ALUctrl), - .alu_out(ALUout), - .eq(EQ), - .PC(PC) -); - -// memory -data_mem data_mem ( - .clk(clk), - .en(MemWrite), - .wr_addr(ALUout), - .din(WriteData), - .dout(ReadData), - .funct3(funct3) -); - -case (ResultSrc) - 2'b00: assign ALUout = ALUout; // ALU result - 2'b01: assign ALUout = ReadData; // Memory data - 2'b10: assign ALUout = PCtarget; // PC + 4 for JAL/JALR - default: assign ALUout = ALUout; // Default to ALU result -endcase - -endmodule diff --git a/repo/rtl/imem.sv b/repo/rtl/instr_mem.sv similarity index 53% rename from repo/rtl/imem.sv rename to repo/rtl/instr_mem.sv index 20d0a3f..7967c15 100644 --- a/repo/rtl/imem.sv +++ b/repo/rtl/instr_mem.sv @@ -1,18 +1,18 @@ -module imem ( +module instr_mem #( /* verilator lint_off UNUSED */ - input logic [31:0] addr, // byte address from the program counter (PC) - output logic [31:0] instr // 32-bit instruction read from memory + input logic [31:0] A, + output logic [31:0] RD /* verilator lint_on UNUSED */ ); // instruction memory array: 256 instructions, each 32 bits wide - logic [31:0] mem [0:255]; + logic [31:0] rom_array [0:255]; // preload instructions from an external hex file at simulation start initial begin - $readmemh("../rtl/program.hex", mem); + $readmemh("../rtl/program.hex", rom_array); end // output the instruction corresponding to the PC address - assign instr = mem[addr[9:2]]; + assign RD = rom_array[A[9:2]]; endmodule diff --git a/repo/rtl/main_decoder.sv b/repo/rtl/main_decoder.sv deleted file mode 100644 index 7a768f9..0000000 --- a/repo/rtl/main_decoder.sv +++ /dev/null @@ -1,121 +0,0 @@ -module main_decoder ( - input logic [6:0] opcode, // 7-bit opcode field from the instruction - input logic [2:0] funct3, // 3-bit funct3 field from the instruction - - output logic RegWrite, // enable writing to register file - output logic ALUSrc, // selects ALU second operand (0 = register, 1 = immediate) - output logic MemWrite, // enable writing to data memory - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4, 11 = imm) - output logic Branch, // indicates branch instruction - output logic Jump, // indicates jump instruction - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) - output logic [1:0] ALUOp // encodes ALU operation type (00 = ADD category(load/store/addi/auipc/jalr), 01 = SUB category(branch), 10 = R-type/I-type) - -); - -// combinational logic to decode opcode and generate control signals -always_comb begin - // default values (safe defaults) - RegWrite = 1'b0; - ALUSrc = 1'b0; - MemWrite = 1'b0; - ResultSrc = 2'b00; - Branch = 1'b0; - Jump = 1'b0; - ImmSrc = 3'b000; - ALUOp = 2'b00; - - case(opcode) - - // load instructions: LB, LH, LW, LBU, LHU - // opcode = 0000011 - 7'b0000011: begin - RegWrite = 1'b1; - ALUSrc = 1'b1; - ResultSrc = 2'b01; // load data from memory - ImmSrc = 3'b000; // I-type immediate - ALUOp = 2'b00; // ALU does ADD for address - end - - // store instructions: SB, SH, SW S-type - // opcode = 0100011 - 7'b0100011: begin - MemWrite = 1'b1; - ALUSrc = 1'b1; - ImmSrc = 3'b001; // S-type immediate - end - - // R-type instructions: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND - // opcode = 0110011 - 7'b0110011: begin - RegWrite = 1'b1; - ALUSrc = 1'b0; - ALUOp = 2'b10; - end - - // B-type instructions: BEQ, BNE, BLT, BGE, BLTU, BGEU - // opcode = 1100011 - 7'b1100011: begin - Branch = 1'b1; - ImmSrc = 3'b010; // B-type immediate - ALUOp = 2'b01; // ALU does SUB for BEQ/BNE (other comparisons handled in ALU decoder) - end - - // I-type arithmetic: ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI, SRAI - // opcode = 0010011 - 7'b0010011: begin - RegWrite = 1'b1; - ALUSrc = 1'b1; - ImmSrc = 3'b000; // I-type immediate - - case (funct3) - 3'b000: ALUOp = 2'b00; - - default: ALUOp = 2'b10; - - endcase - end - - // AUIPC (U-type) - // opcode = 0010111 - 7'b0010111: begin - RegWrite = 1'b1; - ImmSrc = 3'b100; // U-type immediate - ALUSrc = 1'b1; - ALUOp = 2'b00; - ResultSrc = 2'b00; - end - - // LUI (U-type) - // opcode = 0110111 - 7'b0110111: begin - RegWrite = 1'b1; - ImmSrc = 3'b100; // U-type immediate - ResultSrc = 2'b00; - ALUSrc = 1'b1; - ALUOp = 2'b00; //ALU does ADD with 0 + imm - end - - // JAL (J-type) - // opcode = 1101111 - 7'b1101111: begin - RegWrite = 1'b1; - Jump = 1'b1; - ResultSrc = 2'b10; // return address is PC+4 written to rd - ImmSrc = 3'b011; // J-type immediate - end - - // JALR (I-type) - // opcode = 1100111 - 7'b1100111: begin - RegWrite = 1'b1; - Jump = 1'b1; - ResultSrc = 2'b10; // return address is PC+4 written to rd - ImmSrc = 3'b000; // I-type immediate - ALUSrc = 1'b1; - ALUOp = 2'b00; // ALU does ADD for address calculation - end - endcase -end - -endmodule \ No newline at end of file diff --git a/repo/rtl/mux.sv b/repo/rtl/mux.sv deleted file mode 100644 index 648a387..0000000 --- a/repo/rtl/mux.sv +++ /dev/null @@ -1,14 +0,0 @@ -module mux #( - parameter DATA_WIDTH = 32 -) ( - input logic [DATA_WIDTH-1:0] in0, // first input (selected when sel = 0) - input logic [DATA_WIDTH-1:0] in1, // second input (selected when sel = 1) - input logic sel, // control signal to choose input - output logic [DATA_WIDTH-1:0] out // output of the multiplexer -); - - // combinational assignment: - // if sel == 1, output in1; otherwise, output in0 - assign out = sel ? in1 : in0; - -endmodule \ No newline at end of file diff --git a/repo/rtl/pc.sv b/repo/rtl/pc.sv new file mode 100644 index 0000000..6405913 --- /dev/null +++ b/repo/rtl/pc.sv @@ -0,0 +1,38 @@ +module pc #( + parameter WIDTH = 32 +)( + input logic clk, // system clock + input logic rst, // asynchronous reset + input logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + input logic [WIDTH-1:0] ImmExt, // immediate offset for branch target + input logic [WIDTH-1:0] ALUResult, + output logic [WIDTH-1:0] PCPlus4, // PC + 4 + output logic [WIDTH-1:0] PC // current program counter +); + +// next PC after the mux +logic [WIDTH-1:0] PCNext; + +logic [WIDTH-1:0] PCTarget; + +always_comb begin + PCPlus4 = PC + 4; + PCTarget = PC + ImmExt; + + case(PCSrc) + 2'b00: PCNext = PCPlus4; + 2'b01: PCNext = PCTarget; + 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 + endcase + +end + +// program counter register with asynchronous reset +always_ff @(posedge clk or posedge rst) begin + if (rst) + PC <= {WIDTH{1'b0}}; // Reset PC to 0 + else + PC <= PCNext; // Update PC normally +end + +endmodule diff --git a/repo/rtl/pcsrc_unit.sv b/repo/rtl/pcsrc_unit.sv new file mode 100644 index 0000000..78cc1f3 --- /dev/null +++ b/repo/rtl/pcsrc_unit.sv @@ -0,0 +1,34 @@ +module pcsrc_unit ( + input logic [1:0] Jump, + input logic Branch, + input logic Zero, + input logic [2:0] BranchType, + output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) +); + + always_comb begin + // default + PCSrc = 2'b00; + + // handle jumps first + case (Jump) + 2'b01: PCSrc = 2'b01; // JAL + 2'b10: PCSrc = 2'b10; // JALR + 2'b00: begin + // if jump==00 then check branches + if (Branch) begin + case (BranchType) + 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU + default: PCSrc = 2'b00; + endcase + end + end + endcase + end + +endmodule diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index 324eb4e..6ff2149 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -3,30 +3,26 @@ module reg_file #( DATA_WIDTH = 32 // 32-bits )( input logic clk, // clock - input logic [ADDRESS_WIDTH-1:0] write_addr, // destination register - input logic [ADDRESS_WIDTH-1:0] read_addr1, // source register 1 address (rs1) - input logic [ADDRESS_WIDTH-1:0] read_addr2, // source register 2 address (rs2) - input logic [DATA_WIDTH-1:0] wd3, // write data - input logic we3, // write enable - output logic [DATA_WIDTH-1:0] dout1, // register file output for rs1 - output logic [DATA_WIDTH-1:0] dout2, // register file output for rs2 - output logic [DATA_WIDTH-1:0] a0 // special output for register x10 (a0) + input logic [ADDRESS_WIDTH-1:0] AD3, // destination register + input logic [ADDRESS_WIDTH-1:0] AD1, // source register 1 address (rs1) + input logic [ADDRESS_WIDTH-1:0] AD2, // source register 2 address (rs2) + input logic [DATA_WIDTH-1:0] WD3, // write data + input logic WE3, // write enable + output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 + output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 ); -// 32 32-bit registers -logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + // 32 32-bit registers + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; -// write operation (synchronous) -> writes occur only if we3 is asserted -always_ff @(posedge clk) begin - if (we3 == 1'b1 && write_addr != 0) - ram_array[write_addr] <= wd3; -end + // write operation (synchronous) -> writes occur only if WE3 is asserted + always_ff @(posedge clk) begin + if (WE3 == 1'b1 && AD3 != 0) + ram_array[AD3] <= WD3; + end -// read operations (combinational) -> outputs change immediately when read_addr changes -assign dout1 = ram_array[read_addr1]; -assign dout2 = ram_array[read_addr2]; - -// special readout of x10 (a0) -assign a0 = ram_array[10]; + // read operations (combinational) -> outputs change immediately when read_addr changes + assign RD1 = ram_array[AD1]; + assign RD2 = ram_array[AD2]; endmodule diff --git a/repo/rtl/register.sv b/repo/rtl/register.sv deleted file mode 100644 index 386bf62..0000000 --- a/repo/rtl/register.sv +++ /dev/null @@ -1,12 +0,0 @@ -module register( - - input logic clk, // clock signal - input logic [31:0] d, // input data - output logic [31:0] q // stored output data -); - - // simple D-flip-flop register -> on every rising edge of clk, q updates to the value of d - always_ff @(posedge clk) - q <= d; - -endmodule diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index e968c5c..9aaa8b9 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,47 +1,17 @@ -module signext ( - input logic [31:0] instr, - input logic [2:0] ImmSrc, - output logic [31:0] ImmOp +module signext #( + input logic [31:7] Imm, + input logic [2:0] ImmSrc, + output logic [31:0] ImmExt ); - logic [31:0] immI, immS, immB, immU, immJ; - - // I-type - assign immI = {{20{instr[31]}}, instr[31:20]}; - - // S-type - assign immS = {{20{instr[31]}}, - instr[31:25], - instr[11:7]}; - - // B-type - assign immB = {{19{instr[31]}}, - instr[31], // imm[12] - instr[7], // imm[11] - instr[30:25], // imm[10:5] - instr[11:8], // imm[4:1] - 1'b0}; // imm[0] = 0 - - // U-type (LUI, AUIPC) - assign immU = {instr[31:12], 12'b0}; - - // J-type (JAL) - assign immJ = {{11{instr[31]}}, - instr[31], // imm[20] - instr[19:12], // imm[19:12] - instr[20], // imm[11] - instr[30:21], // imm[10:1] - 1'b0}; // imm[0] = 0 - - // MUX between immediate types always_comb begin - unique case (ImmSrc) - 3'b000: ImmOp = immI; // I-type - 3'b001: ImmOp = immS; // S-type - 3'b010: ImmOp = immB; // B-type - 3'b011: ImmOp = immU; // U-type - 3'b100: ImmOp = immJ; // J-type - default: ImmOp = 32'b0; + case (ImmSrc) + 3'b000: ImmExt = {{20{Imm[31]}}, Imm[31:20]}; // I-type + 3'b001: ImmExt = {{20{Imm[31]}}, Imm[31:25], Imm[11:7]}; // S-type + 3'b010: ImmExt = {{20{Imm[31]}}, Imm[7], Imm[30:25], Imm[11:8], 1'b0}; // B-type + 3'b011: ImmExt = {{12{Imm[31]}}, Imm[19:12], Imm[20], Imm[30:21], 1'b0}; // J-type + 3'b100: ImmExt = {Imm[31:12], 12'b0}; // U-type + default: ImmExt = 32'b0; endcase end endmodule \ No newline at end of file diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 43d6e06..fd2a132 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -1,99 +1,56 @@ -module top #( - parameter DATA_WIDTH = 32, - parameter ADDRESS_WIDTH = 5 -) ( - input logic clk, - input logic rst, - output logic [DATA_WIDTH-1:0] a0 // x10 output +module top ( + input logic clk, + input logic rst ); -// control signals -logic RegWrite; -logic ALUSrc; -logic [2:0] ALUctrl; // 3-bit ALU control -logic [2:0] ImmSrc; // 2-bit immediate -logic [1:0] ResultSrc; -logic [1:0] PCsrc; -logic MemWrite; -logic [2:0] EQ; -logic [2:0] funct3; - -// data wires -logic [DATA_WIDTH-1:0] pc; -logic [DATA_WIDTH-1:0] instr; -logic [DATA_WIDTH-1:0] ImmOp; -logic [DATA_WIDTH-1:0] PCtarget; -logic [DATA_WIDTH-1:0] ALUout; - -logic [6:0] opcode = instr[6:0]; -// register file address fields -logic [ADDRESS_WIDTH-1:0] rs1; -logic [ADDRESS_WIDTH-1:0] rs2; -logic [ADDRESS_WIDTH-1:0] rd; - -assign pc_next = pc + ImmOp; // PC + immediate for branch target -// decode instruction fields -assign rs1 = instr[19:15]; // source register 1 -assign rs2 = instr[24:20]; // source register 2 -assign rd = instr[11:7]; // destination register - -// program Counter: holds current instruction address -PC pc_module ( - .clk(clk), - .rst(rst), - .PCsrc(PCsrc), - .ImmOp(PCtarget), - .pc(pc), - .JALRjump(ALUout) -); - -// instruction memory: fetch instruction at PC -imem imem ( - .addr(pc), - .instr(instr) -); - -// control unit: generate control signals based on opcode -control control ( - .instr(instr), - .EQ(EQ), - .RegWrite(RegWrite), - .ALUSrc(ALUSrc), - .ALUctrl(ALUctrl), - .ImmSrc(ImmSrc), - .ResultSrc(ResultSrc), - .MemWrite(MemWrite), - .PCsrc(PCsrc), - .funct3(funct3) -); - -// sign-extension unit: generate immediate values -signext signext ( - .instr(instr), - .ImmSrc(ImmSrc), - .ImmOp(ImmOp) -); - -// datapath unit: ALU + register file + muxes -data_unit data_unit ( - .clk(clk), - .AD1(rs1), - .AD2(rs2), - .AD3(rd), - .RegWrite(RegWrite), - .ImmOp(ImmOp), - .ALUSrc(ALUSrc), - .ALUctrl(ALUctrl), - .ResultSrc(ResultSrc), - .MemWrite(MemWrite), - .EQ(EQ), - .a0(a0), - .funct3(funct3), - .PCtarget(PCtarget), - .ALUout(ALUout), - .PC(pc), - .opcode(opcode) - -); + // Control signals + logic [1:0] PCSrc; + logic RegWrite; + logic [3:0] ALUControl; + logic ALUSrcA; + logic ALUSrcB; + logic MemWrite; + logic [1:0] ResultSrc; + logic [2:0] ImmSrc; + logic [2:0] AddressingControl; + + // Datapath outputs + logic [31:0] Instr; + logic Zero; + + // Datapath + data_path dp_inst ( + .clk(clk), + .rst(rst), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl), + + .Instr(Instr), + .Zero(Zero) + ); + + // Control path + control_path ctrl_inst ( + .Instr(Instr), + .Zero(Zero), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); endmodule From 4dcc04cce9dec1d46eccb23bbcdf3f179aa4e129 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Thu, 27 Nov 2025 22:50:07 +0000 Subject: [PATCH 41/65] errors fixed --- repo/rtl/alu.sv | 2 +- repo/rtl/control.sv | 6 +-- repo/rtl/control_path.sv | 54 ++++++++++++++++++++++++++ repo/rtl/data_mem.sv | 2 +- repo/rtl/data_path.sv | 2 +- repo/rtl/data_unit.sv | 82 ++++++++++++++++++++++++++++++++++++++++ repo/rtl/instr_mem.sv | 2 +- repo/rtl/signext.sv | 4 +- 8 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 repo/rtl/control_path.sv create mode 100644 repo/rtl/data_unit.sv diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 5a0f2e4..188c20e 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -38,4 +38,4 @@ module alu ( Zero = (ALUResult == 32'd0); end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 01b35ef..4fc7269 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -1,4 +1,4 @@ -module control #( +module control( input logic [6:0] opcode, input logic [2:0] funct3, input logic [6:0] funct7, @@ -45,7 +45,7 @@ module control #( // R-type instructions 7'b0110011: begin RegWrite = 1'b1; - ALUSrc = 1'b0; + ALUSrcB = 1'b0; case(funct3) 3'b000: begin @@ -182,4 +182,4 @@ module control #( end endcase end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv new file mode 100644 index 0000000..1ec9609 --- /dev/null +++ b/repo/rtl/control_path.sv @@ -0,0 +1,54 @@ +module control_path( + input logic [31:0] Instr, + input logic Zero, + + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + logic Branch; + logic [2:0] BranchType; + logic [1:0] Jump; + + logic [6:0] opcode; + logic [2:0] funct3; + logic [6:0] funct7; + + assign opcode = Instr[6:0]; + assign funct3 = Instr[14:12]; + assign funct7 = Instr[31:25]; + + control control_unit ( + .opcode(opcode), + .funct3(funct3), + .funct7(funct7), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .Branch(Branch), + .BranchType(BranchType), + .Jump(Jump), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + + pcsrc_unit pcsrc_unit_inst ( + .Jump(Jump), + .Branch(Branch), + .Zero(Zero), + .BranchType(BranchType), + .PCSrc(PCSrc) + ); + +endmodule diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv index 25ced8f..fe1b5c0 100644 --- a/repo/rtl/data_mem.sv +++ b/repo/rtl/data_mem.sv @@ -46,4 +46,4 @@ module data_mem #( end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv index 4ac4f5e..e621c2a 100644 --- a/repo/rtl/data_path.sv +++ b/repo/rtl/data_path.sv @@ -81,4 +81,4 @@ module data_path ( end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv new file mode 100644 index 0000000..bfdc3dc --- /dev/null +++ b/repo/rtl/data_unit.sv @@ -0,0 +1,82 @@ +module data_unit #( + parameter DATA_WIDTH = 32, + ADDRESS_WIDTH = 5 +) ( + input logic clk, + input logic [ADDRESS_WIDTH-1:0] AD1, // rs1 address + input logic [ADDRESS_WIDTH-1:0] AD2, // rs2 address + input logic [ADDRESS_WIDTH-1:0] AD3, // rd address + input logic [DATA_WIDTH-1:0] ImmOp, // immediate value + input logic RegWrite, // write enable to register file + input logic MemWrite, // write enable to memory + input logic ALUctrl, // ALU control + input logic ALUsrc, // select imm or reg + input logic [1:0] ResultSrc, // select ALU or mem data + input logic [2:0] funct3, // for memory access size + input logic [DATA_WIDTH-1:0] PCtarget, // branch target address + input logic [DATA_WIDTH-1:0] PC, + input logic [6:0] opcode, + output logic [2:0] EQ, // ALU equality flag + output logic [DATA_WIDTH-1:0] a0, // x10 output + output logic [DATA_WIDTH-1:0] ALUout // ALU result +); + +logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 +logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 +logic [DATA_WIDTH-1:0] WriteData; // register file output 2 +logic [DATA_WIDTH-1:0] ReadData; // data memory output +logic [DATA_WIDTH-1:0] result; // data to write back to register file + +// register file: read rs1/rs2, write rd +reg_file reg_file ( + .clk(clk), + .read_addr1(AD1), + .read_addr2(AD2), + .write_addr(AD3), + .wd3(ALUout), + .we3(RegWrite), + .dout1(ALUop1), + .dout2(WriteData), + .a0(a0) +); + +// select ALU operand 2: register or immediate +mux mux1 ( + .in0(WriteData), + .in1(ImmOp), + .sel(ALUsrc), + .out(ALUop2) +); + +// ALU executes operation and sets EQ +alu alu ( + .alu_op1(ALUop1), + .alu_op2(ALUop2), + .alu_ctrl(ALUctrl), + .alu_out(ALUout), + .eq(EQ), + .PC(PC) +); + +// memory +data_mem data_mem ( + .clk(clk), + .en(MemWrite), + .wr_addr(ALUout), + .din(WriteData), + .dout(ReadData), + .funct3(funct3) +); + +always_comb begin + + case (ResultSrc) + 2'b00: assign ALUout = ALUout; // ALU result + 2'b01: assign ALUout = ReadData; // Memory data + 2'b10: assign ALUout = PCtarget; // PC + 4 for JAL/JALR + default: assign ALUout = ALUout; // Default to ALU result + endcase + +end + +endmodule diff --git a/repo/rtl/instr_mem.sv b/repo/rtl/instr_mem.sv index 7967c15..54dbf7a 100644 --- a/repo/rtl/instr_mem.sv +++ b/repo/rtl/instr_mem.sv @@ -1,4 +1,4 @@ -module instr_mem #( +module instr_mem ( /* verilator lint_off UNUSED */ input logic [31:0] A, output logic [31:0] RD diff --git a/repo/rtl/signext.sv b/repo/rtl/signext.sv index 9aaa8b9..d2c6ae2 100644 --- a/repo/rtl/signext.sv +++ b/repo/rtl/signext.sv @@ -1,4 +1,4 @@ -module signext #( +module signext ( input logic [31:7] Imm, input logic [2:0] ImmSrc, output logic [31:0] ImmExt @@ -14,4 +14,4 @@ module signext #( default: ImmExt = 32'b0; endcase end -endmodule \ No newline at end of file +endmodule From 9eb89d0673795e47e07e3c9f55c0654660f72878 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Thu, 27 Nov 2025 22:51:25 +0000 Subject: [PATCH 42/65] contol_path.sv deleted --- repo/rtl/contol_path.sv | 54 ----------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 repo/rtl/contol_path.sv diff --git a/repo/rtl/contol_path.sv b/repo/rtl/contol_path.sv deleted file mode 100644 index 181eb21..0000000 --- a/repo/rtl/contol_path.sv +++ /dev/null @@ -1,54 +0,0 @@ -module control_path #( - input logic [31:0] Instr, - input logic Zero, - - output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic RegWrite, // enable write to register - output logic [3:0] ALUControl, // control operation in ALU - output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A - output logic ALUSrcB, // choose immediate (1) or register (0) operand - output logic MemWrite, // enable write into the data memory - // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) - output logic [2:0] AddressingControl // choose which type of load/store instruction to perform -); - - logic Branch; - logic [2:0] BranchType; - logic [1:0] Jump; - - logic [6:0] opcode; - logic [2:0] funct3; - logic [6:0] funct7; - - assign opcode = Instr[6:0]; - assign funct3 = Instr[14:12]; - assign funct7 = Instr[31:25]; - - control control_unit ( - .opcode(opcode), - .funct3(funct3), - .funct7(funct7), - .RegWrite(RegWrite), - .ALUControl(ALUControl), - .ALUSrcA(ALUSrcA), - .ALUSrcB(ALUSrcB), - .MemWrite(MemWrite), - .ResultSrc(ResultSrc), - .Branch(Branch), - .BranchType(BranchType), - .Jump(Jump), - .ImmSrc(ImmSrc), - .AddressingControl(AddressingControl) - ); - - pcsrc_unit pcsrc_unit_inst ( - .Jump(Jump), - .Branch(Branch), - .Zero(Zero), - .BranchType(BranchType), - .PCSrc(PCSrc) - ); - -endmodule \ No newline at end of file From 8c91968ff0ea42e2fd6bcc1ff9f3208a992dfc14 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 02:48:06 +0000 Subject: [PATCH 43/65] testbench nearly done --- repo/rtl/alu.sv | 4 ++-- repo/rtl/control.sv | 2 +- repo/rtl/control_path.sv | 4 ++-- repo/rtl/data_path.sv | 7 ++++--- repo/rtl/reg_file.sv | 3 ++- repo/rtl/top.sv | 11 +++++++---- repo/tb/doit.sh | 3 ++- repo/tb/tests/cpu_testbench.h | 14 ++++++++------ 8 files changed, 28 insertions(+), 20 deletions(-) mode change 100644 => 100755 repo/tb/doit.sh diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 188c20e..9bdc83c 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -15,7 +15,7 @@ module alu ( input logic [31:0] SrcB, input logic [3:0] ALUControl, output logic [31:0] ALUResult, - output logic Zero + output logic [31:0] Zero ); always_comb begin @@ -36,6 +36,6 @@ module alu ( default: ALUResult = 32'b0; endcase - Zero = (ALUResult == 32'd0); + Zero = 32'b0; end endmodule diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 4fc7269..4b220c1 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -24,7 +24,7 @@ module control( // assign opcode = Instr[6:0]; // assign funct3 = Instr[14:12]; // assign funct7 = Instr[31:25]; - assign AddressingControl = funct3; // store width + // assign AddressingControl = funct3; // store width always_comb begin // Default values to prevent latches diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index 1ec9609..bd768ed 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -1,6 +1,6 @@ module control_path( - input logic [31:0] Instr, - input logic Zero, + output logic [31:0] Instr, + input logic [31:0] Zero, output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) output logic RegWrite, // enable write to register diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv index e621c2a..04b9ffb 100644 --- a/repo/rtl/data_path.sv +++ b/repo/rtl/data_path.sv @@ -11,16 +11,17 @@ module data_path ( input logic [1:0] ResultSrc, input logic [2:0] ImmSrc, input logic [2:0] AddressingControl, - + output logic [31:0] Instr, - output logic Zero + output logic [31:0] Zero, + output logic [31:0] a0 ); logic [31:0] PC, PCPlus4, ImmExt, MemData, ALUResult, SrcA, SrcB, ReadData1, ReadData2, ResultData; assign SrcA = ALUSrcA ? PC : ReadData1; assign SrcB = ALUSrcB ? ImmExt : ReadData2; - + assign a0 = ALUResult; pc pc_inst( .clk(clk), diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index 6ff2149..c422341 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -9,7 +9,8 @@ module reg_file #( input logic [DATA_WIDTH-1:0] WD3, // write data input logic WE3, // write enable output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 - output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 + output logic [DATA_WIDTH-1:0] RD2 // register file output for rs2 + ); // 32 32-bit registers diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index fd2a132..38e69a2 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -1,6 +1,8 @@ module top ( input logic clk, - input logic rst + input logic rst, + input logic trigger, + output logic [31:0] a0 ); // Control signals @@ -15,8 +17,8 @@ module top ( logic [2:0] AddressingControl; // Datapath outputs - logic [31:0] Instr; - logic Zero; + logic [31:0] Zero; + logic [31:0] Instr1; // Datapath data_path dp_inst ( @@ -34,7 +36,8 @@ module top ( .AddressingControl(AddressingControl), .Instr(Instr), - .Zero(Zero) + .Zero(Zero), + .a0(a0) ); // Control path diff --git a/repo/tb/doit.sh b/repo/tb/doit.sh old mode 100644 new mode 100755 index 56c58a2..a8ff86a --- a/repo/tb/doit.sh +++ b/repo/tb/doit.sh @@ -45,7 +45,8 @@ for file in "${files[@]}"; do -y ${RTL_FOLDER} \ --prefix "Vdut" \ -o Vdut \ - -LDFLAGS "-lgtest -lgtest_main -lpthread" + -CFLAGS "-std=c++17 -isystem /opt/homebrew/Cellar/googletest/1.17.0/include"\ + -LDFLAGS "-L/opt/homebrew/Cellar/googletest/1.17.0/lib -lgtest -lgtest_main -lpthread" \ # Build C++ project with automatically generated Makefile make -j -C obj_dir/ -f Vdut.mk diff --git a/repo/tb/tests/cpu_testbench.h b/repo/tb/tests/cpu_testbench.h index b60333a..4873847 100644 --- a/repo/tb/tests/cpu_testbench.h +++ b/repo/tb/tests/cpu_testbench.h @@ -44,7 +44,7 @@ class CpuTestbench : public ::testing::Test top_->clk = 1; top_->rst = 1; top_->trigger = 0; - runSimulation(10); // Process reset + runSimulation(10); // Process reset top_->rst = 0; } @@ -75,8 +75,10 @@ class CpuTestbench : public ::testing::Test tfp_->close(); // Free memory - if (top_) delete top_; - if (tfp_) delete tfp_; + if (top_) + delete top_; + if (tfp_) + delete tfp_; delete context_; // Save data and program memory files to test_out directory @@ -91,9 +93,9 @@ class CpuTestbench : public ::testing::Test } protected: - VerilatedContext* context_; - Vdut* top_; - VerilatedVcdC* tfp_; + VerilatedContext *context_; + Vdut *top_; + VerilatedVcdC *tfp_; std::string name_; unsigned int ticks_; }; From 75c2262daa5d3fceb875b7c20e37d240d83c994c Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 09:47:44 +0000 Subject: [PATCH 44/65] fixing pcsrc --- repo/rtl/pcsrc_unit.sv | 15 ++++++++------- repo/rtl/top.sv | 2 +- repo/tb/assemble.sh | 0 3 files changed, 9 insertions(+), 8 deletions(-) mode change 100644 => 100755 repo/tb/assemble.sh diff --git a/repo/rtl/pcsrc_unit.sv b/repo/rtl/pcsrc_unit.sv index 78cc1f3..f54b868 100644 --- a/repo/rtl/pcsrc_unit.sv +++ b/repo/rtl/pcsrc_unit.sv @@ -1,8 +1,9 @@ module pcsrc_unit ( input logic [1:0] Jump, input logic Branch, - input logic Zero, + input logic [31:0] Zero, input logic [2:0] BranchType, + input logic [31:0] ALUResult, output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) ); @@ -18,12 +19,12 @@ module pcsrc_unit ( // if jump==00 then check branches if (Branch) begin case (BranchType) - 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ - 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE - 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT - 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE - 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU - 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU + 3'b000: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BGEU default: PCSrc = 2'b00; endcase end diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 38e69a2..3a26197 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -18,7 +18,7 @@ module top ( // Datapath outputs logic [31:0] Zero; - logic [31:0] Instr1; + logic [31:0] Instr; // Datapath data_path dp_inst ( diff --git a/repo/tb/assemble.sh b/repo/tb/assemble.sh old mode 100644 new mode 100755 From 4e49e5007d4bf79f11f30e92ed07923dfc56b93b Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 09:57:28 +0000 Subject: [PATCH 45/65] fixing branch --- repo/rtl/control_path.sv | 3 ++- repo/rtl/pcsrc_unit.sv | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index bd768ed..ec6f59c 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -48,7 +48,8 @@ module control_path( .Branch(Branch), .Zero(Zero), .BranchType(BranchType), - .PCSrc(PCSrc) + .PCSrc(PCSrc), + .ALUResult(ALUResult) ); endmodule diff --git a/repo/rtl/pcsrc_unit.sv b/repo/rtl/pcsrc_unit.sv index f54b868..1ae1d09 100644 --- a/repo/rtl/pcsrc_unit.sv +++ b/repo/rtl/pcsrc_unit.sv @@ -7,10 +7,12 @@ module pcsrc_unit ( output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) ); + logic TakeBranch; + always_comb begin // default PCSrc = 2'b00; - + TakeBranch = 1'b0; // handle jumps first case (Jump) 2'b01: PCSrc = 2'b01; // JAL @@ -18,13 +20,18 @@ module pcsrc_unit ( 2'b00: begin // if jump==00 then check branches if (Branch) begin + + if(TakeBranch)begin + TakeBranch = 1'b1; + end + case (BranchType) - 3'b000: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BEQ - 3'b001: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BNE - 3'b100: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BLT - 3'b101: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BGE - 3'b110: PCSrc = ~ALUResult[0] ? 2'b01 : 2'b00; // BLTU - 3'b111: PCSrc = ALUResult[0] ? 2'b01 : 2'b00; // BGEU + 3'b000: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BGEU default: PCSrc = 2'b00; endcase end From 595f224274a8f0003eeb6577ad5926a9b3663225 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 10:06:37 +0000 Subject: [PATCH 46/65] fixes --- repo/rtl/alu.sv | 4 ++-- repo/rtl/control_path.sv | 2 +- repo/rtl/data_path.sv | 2 +- repo/rtl/pcsrc_unit.sv | 24 ++++++++---------------- repo/rtl/top.sv | 2 +- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index 9bdc83c..d955b5e 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -15,7 +15,7 @@ module alu ( input logic [31:0] SrcB, input logic [3:0] ALUControl, output logic [31:0] ALUResult, - output logic [31:0] Zero + output logic Zero ); always_comb begin @@ -36,6 +36,6 @@ module alu ( default: ALUResult = 32'b0; endcase - Zero = 32'b0; + Zero = 1'b0; end endmodule diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index ec6f59c..402a1f2 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -1,6 +1,6 @@ module control_path( output logic [31:0] Instr, - input logic [31:0] Zero, + input logic Zero, output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) output logic RegWrite, // enable write to register diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv index 04b9ffb..47dbb90 100644 --- a/repo/rtl/data_path.sv +++ b/repo/rtl/data_path.sv @@ -13,7 +13,7 @@ module data_path ( input logic [2:0] AddressingControl, output logic [31:0] Instr, - output logic [31:0] Zero, + output logic Zero, output logic [31:0] a0 ); diff --git a/repo/rtl/pcsrc_unit.sv b/repo/rtl/pcsrc_unit.sv index 1ae1d09..78cc1f3 100644 --- a/repo/rtl/pcsrc_unit.sv +++ b/repo/rtl/pcsrc_unit.sv @@ -1,18 +1,15 @@ module pcsrc_unit ( input logic [1:0] Jump, input logic Branch, - input logic [31:0] Zero, + input logic Zero, input logic [2:0] BranchType, - input logic [31:0] ALUResult, output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) ); - logic TakeBranch; - always_comb begin // default PCSrc = 2'b00; - TakeBranch = 1'b0; + // handle jumps first case (Jump) 2'b01: PCSrc = 2'b01; // JAL @@ -20,18 +17,13 @@ module pcsrc_unit ( 2'b00: begin // if jump==00 then check branches if (Branch) begin - - if(TakeBranch)begin - TakeBranch = 1'b1; - end - case (BranchType) - 3'b000: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BEQ - 3'b001: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BNE - 3'b100: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BLT - 3'b101: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BGE - 3'b110: PCSrc = ~TakeBranch ? 2'b01 : 2'b00; // BLTU - 3'b111: PCSrc = TakeBranch ? 2'b01 : 2'b00; // BGEU + 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU default: PCSrc = 2'b00; endcase end diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 3a26197..8625f2d 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -17,7 +17,7 @@ module top ( logic [2:0] AddressingControl; // Datapath outputs - logic [31:0] Zero; + logic Zero; logic [31:0] Instr; // Datapath From 805cad507447b981f073d91e2001b5b7a8196402 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 10:07:37 +0000 Subject: [PATCH 47/65] fixes --- repo/rtl/control_path.sv | 1 - 1 file changed, 1 deletion(-) diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index 402a1f2..8342047 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -49,7 +49,6 @@ module control_path( .Zero(Zero), .BranchType(BranchType), .PCSrc(PCSrc), - .ALUResult(ALUResult) ); endmodule From 3c0b8650563e7d9fece823c2e0a26f1d5ee54954 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 10:08:02 +0000 Subject: [PATCH 48/65] fixes --- repo/rtl/control_path.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index 8342047..94342ce 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -48,7 +48,7 @@ module control_path( .Branch(Branch), .Zero(Zero), .BranchType(BranchType), - .PCSrc(PCSrc), + .PCSrc(PCSrc) ); endmodule From 7f32a20b7764d40464f68435dc15386398034362 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 10:51:11 +0000 Subject: [PATCH 49/65] fixes --- repo/rtl/control_path.sv | 4 +++- repo/rtl/data_path.sv | 4 ++-- repo/rtl/pc.sv | 3 +++ repo/rtl/reg_file.sv | 4 +++- repo/rtl/top.sv | 2 ++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/repo/rtl/control_path.sv b/repo/rtl/control_path.sv index 94342ce..a419210 100644 --- a/repo/rtl/control_path.sv +++ b/repo/rtl/control_path.sv @@ -1,5 +1,7 @@ module control_path( - output logic [31:0] Instr, + /* verilator lint_off UNUSED */ + input logic [31:0] Instr, + /* verilator lint_on UNUSED */ input logic Zero, output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv index 47dbb90..5f89c15 100644 --- a/repo/rtl/data_path.sv +++ b/repo/rtl/data_path.sv @@ -21,7 +21,6 @@ module data_path ( assign SrcA = ALUSrcA ? PC : ReadData1; assign SrcB = ALUSrcB ? ImmExt : ReadData2; - assign a0 = ALUResult; pc pc_inst( .clk(clk), @@ -63,7 +62,8 @@ module data_path ( .WD3(ResultData), .WE3(RegWrite), .RD1(ReadData1), - .RD2(ReadData2) + .RD2(ReadData2), + .a0(a0) ); signext signext_inst( diff --git a/repo/rtl/pc.sv b/repo/rtl/pc.sv index 6405913..3043892 100644 --- a/repo/rtl/pc.sv +++ b/repo/rtl/pc.sv @@ -22,7 +22,10 @@ always_comb begin case(PCSrc) 2'b00: PCNext = PCPlus4; 2'b01: PCNext = PCTarget; + /* verilator lint_off UNUSED */ 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 + /* verilator lint_on UNUSED */ + endcase end diff --git a/repo/rtl/reg_file.sv b/repo/rtl/reg_file.sv index c422341..084e03f 100644 --- a/repo/rtl/reg_file.sv +++ b/repo/rtl/reg_file.sv @@ -9,7 +9,8 @@ module reg_file #( input logic [DATA_WIDTH-1:0] WD3, // write data input logic WE3, // write enable output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 - output logic [DATA_WIDTH-1:0] RD2 // register file output for rs2 + output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 + output logic [DATA_WIDTH-1:0] a0 // register file output for testbenches ); @@ -25,5 +26,6 @@ module reg_file #( // read operations (combinational) -> outputs change immediately when read_addr changes assign RD1 = ram_array[AD1]; assign RD2 = ram_array[AD2]; + assign a0 = ram_array[5'b01010]; endmodule diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index 8625f2d..efccc5f 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -1,7 +1,9 @@ module top ( input logic clk, input logic rst, + /* verilator lint_off UNUSED */ input logic trigger, + /* verilator lint_on UNUSED */ output logic [31:0] a0 ); From a976adc74a70b740fb29bbea39cc650afe9a5b7d Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 11:04:24 +0000 Subject: [PATCH 50/65] fixes --- repo/rtl/pc.sv | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/repo/rtl/pc.sv b/repo/rtl/pc.sv index 3043892..d08c272 100644 --- a/repo/rtl/pc.sv +++ b/repo/rtl/pc.sv @@ -5,7 +5,12 @@ module pc #( input logic rst, // asynchronous reset input logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) input logic [WIDTH-1:0] ImmExt, // immediate offset for branch target + + /* verilator lint_off UNUSED */ + input logic [WIDTH-1:0] ALUResult, + + /* verilator lint_on UNUSED */ output logic [WIDTH-1:0] PCPlus4, // PC + 4 output logic [WIDTH-1:0] PC // current program counter ); @@ -15,6 +20,7 @@ logic [WIDTH-1:0] PCNext; logic [WIDTH-1:0] PCTarget; + always_comb begin PCPlus4 = PC + 4; PCTarget = PC + ImmExt; @@ -22,14 +28,15 @@ always_comb begin case(PCSrc) 2'b00: PCNext = PCPlus4; 2'b01: PCNext = PCTarget; - /* verilator lint_off UNUSED */ + 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 - /* verilator lint_on UNUSED */ + default: PCNext = PCPlus4; endcase - end + + // program counter register with asynchronous reset always_ff @(posedge clk or posedge rst) begin if (rst) From 1df77771ade4c5dcf27cffee9816a4e8d8158c0e Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 11:13:23 +0000 Subject: [PATCH 51/65] data_unit deleted --- repo/rtl/control.sv | 2 ++ repo/rtl/data_mem.sv | 2 ++ repo/rtl/data_unit.sv | 82 ------------------------------------------ repo/rtl/pcsrc_unit.sv | 1 + 4 files changed, 5 insertions(+), 82 deletions(-) delete mode 100644 repo/rtl/data_unit.sv diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 4b220c1..b9d60ee 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -137,6 +137,8 @@ module control( // BLTU, BGEU: ALU does SLTU (1001) 3'b110: ALUControl = 4'b1001; // bltu 3'b111: ALUControl = 4'b1001; // bgeu + default: ALUControl = 4'b0000; + endcase end diff --git a/repo/rtl/data_mem.sv b/repo/rtl/data_mem.sv index fe1b5c0..8c5ec7d 100644 --- a/repo/rtl/data_mem.sv +++ b/repo/rtl/data_mem.sv @@ -5,7 +5,9 @@ module data_mem #( ) ( input logic clk, input logic WE, // write enable + /* verilator lint_off UNUSED */ input logic [XLEN-1:0] A, // memory address + /* verilator lint_on UNUSED */ input logic [XLEN-1:0] WD, // data to write input logic [2:0] AddressingControl, // funct3 to determine load/store type output logic [XLEN-1:0] RD // data read diff --git a/repo/rtl/data_unit.sv b/repo/rtl/data_unit.sv deleted file mode 100644 index bfdc3dc..0000000 --- a/repo/rtl/data_unit.sv +++ /dev/null @@ -1,82 +0,0 @@ -module data_unit #( - parameter DATA_WIDTH = 32, - ADDRESS_WIDTH = 5 -) ( - input logic clk, - input logic [ADDRESS_WIDTH-1:0] AD1, // rs1 address - input logic [ADDRESS_WIDTH-1:0] AD2, // rs2 address - input logic [ADDRESS_WIDTH-1:0] AD3, // rd address - input logic [DATA_WIDTH-1:0] ImmOp, // immediate value - input logic RegWrite, // write enable to register file - input logic MemWrite, // write enable to memory - input logic ALUctrl, // ALU control - input logic ALUsrc, // select imm or reg - input logic [1:0] ResultSrc, // select ALU or mem data - input logic [2:0] funct3, // for memory access size - input logic [DATA_WIDTH-1:0] PCtarget, // branch target address - input logic [DATA_WIDTH-1:0] PC, - input logic [6:0] opcode, - output logic [2:0] EQ, // ALU equality flag - output logic [DATA_WIDTH-1:0] a0, // x10 output - output logic [DATA_WIDTH-1:0] ALUout // ALU result -); - -logic [DATA_WIDTH-1:0] ALUop1; // ALU operand 1 -logic [DATA_WIDTH-1:0] ALUop2; // ALU operand 2 -logic [DATA_WIDTH-1:0] WriteData; // register file output 2 -logic [DATA_WIDTH-1:0] ReadData; // data memory output -logic [DATA_WIDTH-1:0] result; // data to write back to register file - -// register file: read rs1/rs2, write rd -reg_file reg_file ( - .clk(clk), - .read_addr1(AD1), - .read_addr2(AD2), - .write_addr(AD3), - .wd3(ALUout), - .we3(RegWrite), - .dout1(ALUop1), - .dout2(WriteData), - .a0(a0) -); - -// select ALU operand 2: register or immediate -mux mux1 ( - .in0(WriteData), - .in1(ImmOp), - .sel(ALUsrc), - .out(ALUop2) -); - -// ALU executes operation and sets EQ -alu alu ( - .alu_op1(ALUop1), - .alu_op2(ALUop2), - .alu_ctrl(ALUctrl), - .alu_out(ALUout), - .eq(EQ), - .PC(PC) -); - -// memory -data_mem data_mem ( - .clk(clk), - .en(MemWrite), - .wr_addr(ALUout), - .din(WriteData), - .dout(ReadData), - .funct3(funct3) -); - -always_comb begin - - case (ResultSrc) - 2'b00: assign ALUout = ALUout; // ALU result - 2'b01: assign ALUout = ReadData; // Memory data - 2'b10: assign ALUout = PCtarget; // PC + 4 for JAL/JALR - default: assign ALUout = ALUout; // Default to ALU result - endcase - -end - -endmodule diff --git a/repo/rtl/pcsrc_unit.sv b/repo/rtl/pcsrc_unit.sv index 78cc1f3..f31e45f 100644 --- a/repo/rtl/pcsrc_unit.sv +++ b/repo/rtl/pcsrc_unit.sv @@ -12,6 +12,7 @@ module pcsrc_unit ( // handle jumps first case (Jump) + default: PCSrc = 2'b00; 2'b01: PCSrc = 2'b01; // JAL 2'b10: PCSrc = 2'b10; // JALR 2'b00: begin From f6a1535d84d71d2ff94b8730cc13ac8404cbbb3a Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:15:25 +0000 Subject: [PATCH 52/65] Zero --- repo/rtl/alu.sv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index d955b5e..dbad7c3 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -36,6 +36,6 @@ module alu ( default: ALUResult = 32'b0; endcase - Zero = 1'b0; + Zero = (ALUResult == 32'd0); end -endmodule +endmodule \ No newline at end of file From c4ee6a966ef739c08302ecc88a6325d350cf4421 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:18:08 +0000 Subject: [PATCH 53/65] AddressingCtrl --- repo/rtl/control.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index b9d60ee..586e1b3 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -24,7 +24,7 @@ module control( // assign opcode = Instr[6:0]; // assign funct3 = Instr[14:12]; // assign funct7 = Instr[31:25]; - // assign AddressingControl = funct3; // store width + assign AddressingControl = funct3; // store width always_comb begin // Default values to prevent latches From 5231813ed922af728b67f70590ae4575f2772898 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:22:32 +0000 Subject: [PATCH 54/65] Trigger Removerd --- repo/rtl copy/alu.sv | 41 ++++++++ repo/rtl copy/control.sv | 187 ++++++++++++++++++++++++++++++++++ repo/rtl copy/control_path.sv | 56 ++++++++++ repo/rtl copy/data_mem.sv | 51 ++++++++++ repo/rtl copy/data_path.sv | 85 ++++++++++++++++ repo/rtl copy/instr_mem.sv | 18 ++++ repo/rtl copy/pc.sv | 48 +++++++++ repo/rtl copy/pcsrc_unit.sv | 35 +++++++ repo/rtl copy/reg_file.sv | 31 ++++++ repo/rtl copy/signext.sv | 17 ++++ repo/rtl copy/top.sv | 61 +++++++++++ repo/rtl/top.sv | 3 - 12 files changed, 630 insertions(+), 3 deletions(-) create mode 100644 repo/rtl copy/alu.sv create mode 100644 repo/rtl copy/control.sv create mode 100644 repo/rtl copy/control_path.sv create mode 100644 repo/rtl copy/data_mem.sv create mode 100644 repo/rtl copy/data_path.sv create mode 100644 repo/rtl copy/instr_mem.sv create mode 100644 repo/rtl copy/pc.sv create mode 100644 repo/rtl copy/pcsrc_unit.sv create mode 100644 repo/rtl copy/reg_file.sv create mode 100644 repo/rtl copy/signext.sv create mode 100644 repo/rtl copy/top.sv diff --git a/repo/rtl copy/alu.sv b/repo/rtl copy/alu.sv new file mode 100644 index 0000000..dbad7c3 --- /dev/null +++ b/repo/rtl copy/alu.sv @@ -0,0 +1,41 @@ + // 0000 = ADD + // 0001 = SUB + // 0010 = AND + // 0011 = OR + // 0100 = XOR + // 0101 = SLL + // 0110 = SRL + // 0111 = SRA + // 1000 = SLT (signed) + // 1001 = SLTU (unsigned) + // 1111 = LUI operation + +module alu ( + input logic [31:0] SrcA, + input logic [31:0] SrcB, + input logic [3:0] ALUControl, + output logic [31:0] ALUResult, + output logic Zero +); + + always_comb begin + case (ALUControl) + 4'b0000: ALUResult = SrcA + SrcB; // add + 4'b0001: ALUResult = SrcA - SrcB; // sub + 4'b0010: ALUResult = SrcA & SrcB; // and + 4'b0011: ALUResult = SrcA | SrcB; // or + 4'b0100: ALUResult = SrcA ^ SrcB; // xor + + 4'b0101: ALUResult = SrcA << SrcB[4:0]; // sll + 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl + 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra + 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt + 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu + 4'b1111: ALUResult = SrcB; // LUI operation (Load Upper Immediate) + + default: ALUResult = 32'b0; + endcase + + Zero = (ALUResult == 32'd0); + end +endmodule \ No newline at end of file diff --git a/repo/rtl copy/control.sv b/repo/rtl copy/control.sv new file mode 100644 index 0000000..586e1b3 --- /dev/null +++ b/repo/rtl copy/control.sv @@ -0,0 +1,187 @@ +module control( + input logic [6:0] opcode, + input logic [2:0] funct3, + input logic [6:0] funct7, + + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic Branch, + output logic [2:0] BranchType, + output logic [1:0] Jump, // indicates jump instruction (00 = no jump, 01 = JAL, 10 = JALR) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + // logic [6:0] opcode; + // logic [2:0] funct3; + // logic [6:0] funct7; + + // assign opcode = Instr[6:0]; + // assign funct3 = Instr[14:12]; + // assign funct7 = Instr[31:25]; + assign AddressingControl = funct3; // store width + + always_comb begin + // Default values to prevent latches + RegWrite = 1'b0; + ALUControl = 4'b0000; + ALUSrcA = 1'b0; + ALUSrcB = 1'b0; + MemWrite = 1'b0; + ResultSrc = 2'b00; + Branch = 1'b0; + BranchType = 3'b000; + Jump = 2'b00; + ImmSrc = 3'b000; + AddressingControl = 3'b000; + + + case(opcode) + // R-type instructions + 7'b0110011: begin + RegWrite = 1'b1; + ALUSrcB = 1'b0; + + case(funct3) + 3'b000: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0000; // add + 7'b0100000: ALUControl = 4'b0001; // sub + default: ALUControl = 4'b0000; + endcase + end + 3'b001: ALUControl = 4'b0101; // sll + 3'b010: ALUControl = 4'b1000; // slt + 3'b011: ALUControl = 4'b1001; // sltu + 3'b100: ALUControl = 4'b0100; // xor + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srl + 7'b0100000: ALUControl = 4'b0111; // sra + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // or + 3'b111: ALUControl = 4'b0010; // and + + default: ALUControl = 4'b0000; + endcase + end + + // I-type instructions (Arithmetic/Logic) + 7'b0010011: begin + RegWrite = 1'b1; + ImmSrc = 3'b000; // I-type imm + ALUSrcB = 1'b1; + + case(funct3) + 3'b000: ALUControl = 4'b0000; // addi + 3'b001: ALUControl = 4'b0101; // slli + 3'b010: ALUControl = 4'b1000; // slti (Added) + 3'b011: ALUControl = 4'b1001; // sltiu (Added) + 3'b100: ALUControl = 4'b0100; // xori + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srli + 7'b0100000: ALUControl = 4'b0111; // srai + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // ori + 3'b111: ALUControl = 4'b0010; // andi + default: ALUControl = 4'b0000; + endcase + end + + // I-type Load instructions + 7'b0000011: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b01; // From Memory + ImmSrc = 3'b000; // I-type imm + AddressingControl = funct3; + ALUControl = 4'b0000; // Add for address + end + + // S-type Store instructions + 7'b0100011: begin + MemWrite = 1'b1; + ALUSrcB = 1'b1; // read from immediate + ImmSrc = 3'b001; // S-type immediate + ALUControl = 4'b0000; // Add for address + AddressingControl = funct3; + end + + // B-type Branch instructions + 7'b1100011: begin + Branch = 1'b1; + ImmSrc = 3'b010; // B-type imm + BranchType = funct3; + + case(funct3) + // BEQ, BNE: ALU does SUB (0001) + // If A == B, Result = 0, Zero = 1 + 3'b000: ALUControl = 4'b0001; // beq + 3'b001: ALUControl = 4'b0001; // bne + + // BLT, BGE: ALU does SLT (1000) + // If A < B: Result = 1, Zero = 0. If A >= B: Result = 0, Zero = 1. + 3'b100: ALUControl = 4'b1000; // blt + 3'b101: ALUControl = 4'b1000; // bge + + // BLTU, BGEU: ALU does SLTU (1001) + 3'b110: ALUControl = 4'b1001; // bltu + 3'b111: ALUControl = 4'b1001; // bgeu + default: ALUControl = 4'b0000; + + endcase + end + + // J-type JAL + 7'b1101111: begin + RegWrite = 1'b1; + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b011; // J-type imm + Jump = 2'b01; + end + + // I-type JALR + 7'b1100111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b000; // I-type imm + Jump = 2'b10; + // ALUControl = 4'b0000; // Add for target address + end + + // U-type LUI + 7'b0110111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; + ResultSrc = 2'b00; + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b1111; // LUI operation (0 + imm shifted) + end + + // U-type AUIPC rd <- PC + imm << 12 + 7'b0010111: begin + RegWrite = 1'b1; + MemWrite = 1'b0; + ALUSrcA = 1'b1; // Select PC + ALUSrcB = 1'b1; // Select Imm + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b000; // AUIPC operation (PC + imm shifted) + end + + default: begin + // Already handled by defaults at top + end + endcase + end +endmodule diff --git a/repo/rtl copy/control_path.sv b/repo/rtl copy/control_path.sv new file mode 100644 index 0000000..a419210 --- /dev/null +++ b/repo/rtl copy/control_path.sv @@ -0,0 +1,56 @@ +module control_path( + /* verilator lint_off UNUSED */ + input logic [31:0] Instr, + /* verilator lint_on UNUSED */ + input logic Zero, + + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + logic Branch; + logic [2:0] BranchType; + logic [1:0] Jump; + + logic [6:0] opcode; + logic [2:0] funct3; + logic [6:0] funct7; + + assign opcode = Instr[6:0]; + assign funct3 = Instr[14:12]; + assign funct7 = Instr[31:25]; + + control control_unit ( + .opcode(opcode), + .funct3(funct3), + .funct7(funct7), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .Branch(Branch), + .BranchType(BranchType), + .Jump(Jump), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + + pcsrc_unit pcsrc_unit_inst ( + .Jump(Jump), + .Branch(Branch), + .Zero(Zero), + .BranchType(BranchType), + .PCSrc(PCSrc) + ); + +endmodule diff --git a/repo/rtl copy/data_mem.sv b/repo/rtl copy/data_mem.sv new file mode 100644 index 0000000..8c5ec7d --- /dev/null +++ b/repo/rtl copy/data_mem.sv @@ -0,0 +1,51 @@ +module data_mem #( + parameter XLEN = 32, + parameter ADDRESS_WIDTH = 16, + parameter DATA_WIDTH = 8 +) ( + input logic clk, + input logic WE, // write enable + /* verilator lint_off UNUSED */ + input logic [XLEN-1:0] A, // memory address + /* verilator lint_on UNUSED */ + input logic [XLEN-1:0] WD, // data to write + input logic [2:0] AddressingControl, // funct3 to determine load/store type + output logic [XLEN-1:0] RD // data read +); + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; // 64KB data memory + + logic [ADDRESS_WIDTH-1:0] addr; + assign addr = A[ADDRESS_WIDTH-1:0]; // use lower ADDRESS_WIDTH bits of address + + always_ff @(posedge clk) begin + if (WE) begin + case (AddressingControl) + 3'b000: ram_array[addr] <= WD[7:0]; // SB + 3'b001: begin // SH + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; + end + 3'b010: begin // SW + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; + ram_array[addr+2] <= WD[23:16]; + ram_array[addr+3] <= WD[31:24]; + end + default: ; // ignore other funct3 + endcase + end + end + + always_comb begin + case (AddressingControl) + 3'b000: RD = {{24{ram_array[addr][7]}}, ram_array[addr]}; // LB (signed) + 3'b001: RD = {{16{ram_array[addr+1][7]}}, ram_array[addr+1], ram_array[addr]}; // LH (signed) + 3'b010: RD = {ram_array[addr+3], ram_array[addr+2], ram_array[addr+1], ram_array[addr]}; // LW + 3'b100: RD = {24'b0, ram_array[addr]}; // LBU + 3'b101: RD = {16'b0, ram_array[addr+1], ram_array[addr]}; // LHU + default: RD = 32'b0; + endcase + end + + +endmodule diff --git a/repo/rtl copy/data_path.sv b/repo/rtl copy/data_path.sv new file mode 100644 index 0000000..5f89c15 --- /dev/null +++ b/repo/rtl copy/data_path.sv @@ -0,0 +1,85 @@ +module data_path ( + input logic clk, + input logic rst, + + input logic [1:0] PCSrc, + input logic RegWrite, + input logic [3:0] ALUControl, + input logic ALUSrcA, + input logic ALUSrcB, + input logic MemWrite, + input logic [1:0] ResultSrc, + input logic [2:0] ImmSrc, + input logic [2:0] AddressingControl, + + output logic [31:0] Instr, + output logic Zero, + output logic [31:0] a0 +); + + logic [31:0] PC, PCPlus4, ImmExt, MemData, ALUResult, SrcA, SrcB, ReadData1, ReadData2, ResultData; + + assign SrcA = ALUSrcA ? PC : ReadData1; + assign SrcB = ALUSrcB ? ImmExt : ReadData2; + + pc pc_inst( + .clk(clk), + .rst(rst), + .PCSrc(PCSrc), + .ImmExt(ImmExt), + .ALUResult(ALUResult), + .PCPlus4(PCPlus4), + .PC(PC) + ); + + alu alu_inst( + .SrcA(SrcA), + .SrcB(SrcB), + .ALUControl(ALUControl), + .ALUResult(ALUResult), + .Zero(Zero) + ); + + instr_mem instr_mem_inst( + .A(PC), + .RD(Instr) + ); + + data_mem data_mem_inst( + .clk(clk), + .WE(MemWrite), + .A(ALUResult), + .WD(ReadData2), + .AddressingControl(AddressingControl), + .RD(MemData) + ); + + reg_file reg_file_inst( + .clk(clk), + .AD1(Instr[19:15]), + .AD2(Instr[24:20]), + .AD3(Instr[11:7]), + .WD3(ResultData), + .WE3(RegWrite), + .RD1(ReadData1), + .RD2(ReadData2), + .a0(a0) + ); + + signext signext_inst( + .Imm(Instr[31:7]), + .ImmSrc(ImmSrc), + .ImmExt(ImmExt) + ); + + always_comb begin + case (ResultSrc) + 2'b00: ResultData = ALUResult; + 2'b01: ResultData = MemData; + 2'b10: ResultData = PCPlus4; + default: ResultData = 32'b0; + endcase + end + + +endmodule diff --git a/repo/rtl copy/instr_mem.sv b/repo/rtl copy/instr_mem.sv new file mode 100644 index 0000000..54dbf7a --- /dev/null +++ b/repo/rtl copy/instr_mem.sv @@ -0,0 +1,18 @@ +module instr_mem ( + /* verilator lint_off UNUSED */ + input logic [31:0] A, + output logic [31:0] RD + /* verilator lint_on UNUSED */ +); + + // instruction memory array: 256 instructions, each 32 bits wide + logic [31:0] rom_array [0:255]; + + // preload instructions from an external hex file at simulation start + initial begin + $readmemh("../rtl/program.hex", rom_array); + end + + // output the instruction corresponding to the PC address + assign RD = rom_array[A[9:2]]; +endmodule diff --git a/repo/rtl copy/pc.sv b/repo/rtl copy/pc.sv new file mode 100644 index 0000000..d08c272 --- /dev/null +++ b/repo/rtl copy/pc.sv @@ -0,0 +1,48 @@ +module pc #( + parameter WIDTH = 32 +)( + input logic clk, // system clock + input logic rst, // asynchronous reset + input logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + input logic [WIDTH-1:0] ImmExt, // immediate offset for branch target + + /* verilator lint_off UNUSED */ + + input logic [WIDTH-1:0] ALUResult, + + /* verilator lint_on UNUSED */ + output logic [WIDTH-1:0] PCPlus4, // PC + 4 + output logic [WIDTH-1:0] PC // current program counter +); + +// next PC after the mux +logic [WIDTH-1:0] PCNext; + +logic [WIDTH-1:0] PCTarget; + + +always_comb begin + PCPlus4 = PC + 4; + PCTarget = PC + ImmExt; + + case(PCSrc) + 2'b00: PCNext = PCPlus4; + 2'b01: PCNext = PCTarget; + + 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 + + default: PCNext = PCPlus4; + endcase +end + + + +// program counter register with asynchronous reset +always_ff @(posedge clk or posedge rst) begin + if (rst) + PC <= {WIDTH{1'b0}}; // Reset PC to 0 + else + PC <= PCNext; // Update PC normally +end + +endmodule diff --git a/repo/rtl copy/pcsrc_unit.sv b/repo/rtl copy/pcsrc_unit.sv new file mode 100644 index 0000000..f31e45f --- /dev/null +++ b/repo/rtl copy/pcsrc_unit.sv @@ -0,0 +1,35 @@ +module pcsrc_unit ( + input logic [1:0] Jump, + input logic Branch, + input logic Zero, + input logic [2:0] BranchType, + output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) +); + + always_comb begin + // default + PCSrc = 2'b00; + + // handle jumps first + case (Jump) + default: PCSrc = 2'b00; + 2'b01: PCSrc = 2'b01; // JAL + 2'b10: PCSrc = 2'b10; // JALR + 2'b00: begin + // if jump==00 then check branches + if (Branch) begin + case (BranchType) + 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU + default: PCSrc = 2'b00; + endcase + end + end + endcase + end + +endmodule diff --git a/repo/rtl copy/reg_file.sv b/repo/rtl copy/reg_file.sv new file mode 100644 index 0000000..084e03f --- /dev/null +++ b/repo/rtl copy/reg_file.sv @@ -0,0 +1,31 @@ +module reg_file #( + parameter ADDRESS_WIDTH = 5, // 32 registers + DATA_WIDTH = 32 // 32-bits +)( + input logic clk, // clock + input logic [ADDRESS_WIDTH-1:0] AD3, // destination register + input logic [ADDRESS_WIDTH-1:0] AD1, // source register 1 address (rs1) + input logic [ADDRESS_WIDTH-1:0] AD2, // source register 2 address (rs2) + input logic [DATA_WIDTH-1:0] WD3, // write data + input logic WE3, // write enable + output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 + output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 + output logic [DATA_WIDTH-1:0] a0 // register file output for testbenches + +); + + // 32 32-bit registers + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + + // write operation (synchronous) -> writes occur only if WE3 is asserted + always_ff @(posedge clk) begin + if (WE3 == 1'b1 && AD3 != 0) + ram_array[AD3] <= WD3; + end + + // read operations (combinational) -> outputs change immediately when read_addr changes + assign RD1 = ram_array[AD1]; + assign RD2 = ram_array[AD2]; + assign a0 = ram_array[5'b01010]; + +endmodule diff --git a/repo/rtl copy/signext.sv b/repo/rtl copy/signext.sv new file mode 100644 index 0000000..d2c6ae2 --- /dev/null +++ b/repo/rtl copy/signext.sv @@ -0,0 +1,17 @@ +module signext ( + input logic [31:7] Imm, + input logic [2:0] ImmSrc, + output logic [31:0] ImmExt +); + + always_comb begin + case (ImmSrc) + 3'b000: ImmExt = {{20{Imm[31]}}, Imm[31:20]}; // I-type + 3'b001: ImmExt = {{20{Imm[31]}}, Imm[31:25], Imm[11:7]}; // S-type + 3'b010: ImmExt = {{20{Imm[31]}}, Imm[7], Imm[30:25], Imm[11:8], 1'b0}; // B-type + 3'b011: ImmExt = {{12{Imm[31]}}, Imm[19:12], Imm[20], Imm[30:21], 1'b0}; // J-type + 3'b100: ImmExt = {Imm[31:12], 12'b0}; // U-type + default: ImmExt = 32'b0; + endcase + end +endmodule diff --git a/repo/rtl copy/top.sv b/repo/rtl copy/top.sv new file mode 100644 index 0000000..efccc5f --- /dev/null +++ b/repo/rtl copy/top.sv @@ -0,0 +1,61 @@ +module top ( + input logic clk, + input logic rst, + /* verilator lint_off UNUSED */ + input logic trigger, + /* verilator lint_on UNUSED */ + output logic [31:0] a0 +); + + // Control signals + logic [1:0] PCSrc; + logic RegWrite; + logic [3:0] ALUControl; + logic ALUSrcA; + logic ALUSrcB; + logic MemWrite; + logic [1:0] ResultSrc; + logic [2:0] ImmSrc; + logic [2:0] AddressingControl; + + // Datapath outputs + logic Zero; + logic [31:0] Instr; + + // Datapath + data_path dp_inst ( + .clk(clk), + .rst(rst), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl), + + .Instr(Instr), + .Zero(Zero), + .a0(a0) + ); + + // Control path + control_path ctrl_inst ( + .Instr(Instr), + .Zero(Zero), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + +endmodule diff --git a/repo/rtl/top.sv b/repo/rtl/top.sv index efccc5f..d763023 100644 --- a/repo/rtl/top.sv +++ b/repo/rtl/top.sv @@ -1,9 +1,6 @@ module top ( input logic clk, input logic rst, - /* verilator lint_off UNUSED */ - input logic trigger, - /* verilator lint_on UNUSED */ output logic [31:0] a0 ); From 8c0ad3775ba862ea59fd1390ed8c13ce10c1537a Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:23:51 +0000 Subject: [PATCH 55/65] sig_ext --- repo/rtl/data_path.sv | 2 +- repo/rtl/{signext.sv => sign_ext.sv} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename repo/rtl/{signext.sv => sign_ext.sv} (100%) diff --git a/repo/rtl/data_path.sv b/repo/rtl/data_path.sv index 5f89c15..8d1cf62 100644 --- a/repo/rtl/data_path.sv +++ b/repo/rtl/data_path.sv @@ -66,7 +66,7 @@ module data_path ( .a0(a0) ); - signext signext_inst( + sign_ext sign_ext_inst( .Imm(Instr[31:7]), .ImmSrc(ImmSrc), .ImmExt(ImmExt) diff --git a/repo/rtl/signext.sv b/repo/rtl/sign_ext.sv similarity index 100% rename from repo/rtl/signext.sv rename to repo/rtl/sign_ext.sv From b405fea5dfd8da20d3ad2a421a809b09e244895e Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:26:54 +0000 Subject: [PATCH 56/65] rtl_pipelined --- repo/{rtl copy => rtl_pipelined}/alu.sv | 0 repo/{rtl copy => rtl_pipelined}/control.sv | 0 repo/{rtl copy => rtl_pipelined}/control_path.sv | 0 repo/{rtl copy => rtl_pipelined}/data_mem.sv | 0 repo/{rtl copy => rtl_pipelined}/data_path.sv | 0 repo/{rtl copy => rtl_pipelined}/instr_mem.sv | 0 repo/{rtl copy => rtl_pipelined}/pc.sv | 0 repo/{rtl copy => rtl_pipelined}/pcsrc_unit.sv | 0 repo/{rtl copy => rtl_pipelined}/reg_file.sv | 0 repo/{rtl copy => rtl_pipelined}/signext.sv | 0 repo/{rtl copy => rtl_pipelined}/top.sv | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename repo/{rtl copy => rtl_pipelined}/alu.sv (100%) rename repo/{rtl copy => rtl_pipelined}/control.sv (100%) rename repo/{rtl copy => rtl_pipelined}/control_path.sv (100%) rename repo/{rtl copy => rtl_pipelined}/data_mem.sv (100%) rename repo/{rtl copy => rtl_pipelined}/data_path.sv (100%) rename repo/{rtl copy => rtl_pipelined}/instr_mem.sv (100%) rename repo/{rtl copy => rtl_pipelined}/pc.sv (100%) rename repo/{rtl copy => rtl_pipelined}/pcsrc_unit.sv (100%) rename repo/{rtl copy => rtl_pipelined}/reg_file.sv (100%) rename repo/{rtl copy => rtl_pipelined}/signext.sv (100%) rename repo/{rtl copy => rtl_pipelined}/top.sv (100%) diff --git a/repo/rtl copy/alu.sv b/repo/rtl_pipelined/alu.sv similarity index 100% rename from repo/rtl copy/alu.sv rename to repo/rtl_pipelined/alu.sv diff --git a/repo/rtl copy/control.sv b/repo/rtl_pipelined/control.sv similarity index 100% rename from repo/rtl copy/control.sv rename to repo/rtl_pipelined/control.sv diff --git a/repo/rtl copy/control_path.sv b/repo/rtl_pipelined/control_path.sv similarity index 100% rename from repo/rtl copy/control_path.sv rename to repo/rtl_pipelined/control_path.sv diff --git a/repo/rtl copy/data_mem.sv b/repo/rtl_pipelined/data_mem.sv similarity index 100% rename from repo/rtl copy/data_mem.sv rename to repo/rtl_pipelined/data_mem.sv diff --git a/repo/rtl copy/data_path.sv b/repo/rtl_pipelined/data_path.sv similarity index 100% rename from repo/rtl copy/data_path.sv rename to repo/rtl_pipelined/data_path.sv diff --git a/repo/rtl copy/instr_mem.sv b/repo/rtl_pipelined/instr_mem.sv similarity index 100% rename from repo/rtl copy/instr_mem.sv rename to repo/rtl_pipelined/instr_mem.sv diff --git a/repo/rtl copy/pc.sv b/repo/rtl_pipelined/pc.sv similarity index 100% rename from repo/rtl copy/pc.sv rename to repo/rtl_pipelined/pc.sv diff --git a/repo/rtl copy/pcsrc_unit.sv b/repo/rtl_pipelined/pcsrc_unit.sv similarity index 100% rename from repo/rtl copy/pcsrc_unit.sv rename to repo/rtl_pipelined/pcsrc_unit.sv diff --git a/repo/rtl copy/reg_file.sv b/repo/rtl_pipelined/reg_file.sv similarity index 100% rename from repo/rtl copy/reg_file.sv rename to repo/rtl_pipelined/reg_file.sv diff --git a/repo/rtl copy/signext.sv b/repo/rtl_pipelined/signext.sv similarity index 100% rename from repo/rtl copy/signext.sv rename to repo/rtl_pipelined/signext.sv diff --git a/repo/rtl copy/top.sv b/repo/rtl_pipelined/top.sv similarity index 100% rename from repo/rtl copy/top.sv rename to repo/rtl_pipelined/top.sv From c52e20ceb6b3c92559260f3fdb9ad232870b62f4 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 11:29:38 +0000 Subject: [PATCH 57/65] sign_ext --- repo/rtl/alu.sv | 2 +- repo/rtl/sign_ext.sv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/repo/rtl/alu.sv b/repo/rtl/alu.sv index dbad7c3..497dae5 100644 --- a/repo/rtl/alu.sv +++ b/repo/rtl/alu.sv @@ -38,4 +38,4 @@ module alu ( Zero = (ALUResult == 32'd0); end -endmodule \ No newline at end of file +endmodule diff --git a/repo/rtl/sign_ext.sv b/repo/rtl/sign_ext.sv index d2c6ae2..10834a9 100644 --- a/repo/rtl/sign_ext.sv +++ b/repo/rtl/sign_ext.sv @@ -1,4 +1,4 @@ -module signext ( +module sign_ext ( input logic [31:7] Imm, input logic [2:0] ImmSrc, output logic [31:0] ImmExt From 40902a692e82c1a5058a5c2cd4536f12106218d0 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 11:19:24 +0000 Subject: [PATCH 58/65] single_cycle_design_folder --- repo/single_cycle_design/rtl/alu.sv | 41 ++++ repo/single_cycle_design/rtl/control.sv | 187 +++++++++++++++++++ repo/single_cycle_design/rtl/control_path.sv | 56 ++++++ repo/single_cycle_design/rtl/data_mem.sv | 51 +++++ repo/single_cycle_design/rtl/data_path.sv | 85 +++++++++ repo/single_cycle_design/rtl/instr_mem.sv | 18 ++ repo/single_cycle_design/rtl/pc.sv | 48 +++++ repo/single_cycle_design/rtl/pcsrc_unit.sv | 35 ++++ repo/single_cycle_design/rtl/reg_file.sv | 31 +++ repo/single_cycle_design/rtl/signext.sv | 17 ++ repo/single_cycle_design/rtl/top.sv | 61 ++++++ 11 files changed, 630 insertions(+) create mode 100644 repo/single_cycle_design/rtl/alu.sv create mode 100644 repo/single_cycle_design/rtl/control.sv create mode 100644 repo/single_cycle_design/rtl/control_path.sv create mode 100644 repo/single_cycle_design/rtl/data_mem.sv create mode 100644 repo/single_cycle_design/rtl/data_path.sv create mode 100644 repo/single_cycle_design/rtl/instr_mem.sv create mode 100644 repo/single_cycle_design/rtl/pc.sv create mode 100644 repo/single_cycle_design/rtl/pcsrc_unit.sv create mode 100644 repo/single_cycle_design/rtl/reg_file.sv create mode 100644 repo/single_cycle_design/rtl/signext.sv create mode 100644 repo/single_cycle_design/rtl/top.sv diff --git a/repo/single_cycle_design/rtl/alu.sv b/repo/single_cycle_design/rtl/alu.sv new file mode 100644 index 0000000..d955b5e --- /dev/null +++ b/repo/single_cycle_design/rtl/alu.sv @@ -0,0 +1,41 @@ + // 0000 = ADD + // 0001 = SUB + // 0010 = AND + // 0011 = OR + // 0100 = XOR + // 0101 = SLL + // 0110 = SRL + // 0111 = SRA + // 1000 = SLT (signed) + // 1001 = SLTU (unsigned) + // 1111 = LUI operation + +module alu ( + input logic [31:0] SrcA, + input logic [31:0] SrcB, + input logic [3:0] ALUControl, + output logic [31:0] ALUResult, + output logic Zero +); + + always_comb begin + case (ALUControl) + 4'b0000: ALUResult = SrcA + SrcB; // add + 4'b0001: ALUResult = SrcA - SrcB; // sub + 4'b0010: ALUResult = SrcA & SrcB; // and + 4'b0011: ALUResult = SrcA | SrcB; // or + 4'b0100: ALUResult = SrcA ^ SrcB; // xor + + 4'b0101: ALUResult = SrcA << SrcB[4:0]; // sll + 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl + 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra + 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt + 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu + 4'b1111: ALUResult = SrcB; // LUI operation (Load Upper Immediate) + + default: ALUResult = 32'b0; + endcase + + Zero = 1'b0; + end +endmodule diff --git a/repo/single_cycle_design/rtl/control.sv b/repo/single_cycle_design/rtl/control.sv new file mode 100644 index 0000000..b9d60ee --- /dev/null +++ b/repo/single_cycle_design/rtl/control.sv @@ -0,0 +1,187 @@ +module control( + input logic [6:0] opcode, + input logic [2:0] funct3, + input logic [6:0] funct7, + + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic Branch, + output logic [2:0] BranchType, + output logic [1:0] Jump, // indicates jump instruction (00 = no jump, 01 = JAL, 10 = JALR) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + // logic [6:0] opcode; + // logic [2:0] funct3; + // logic [6:0] funct7; + + // assign opcode = Instr[6:0]; + // assign funct3 = Instr[14:12]; + // assign funct7 = Instr[31:25]; + // assign AddressingControl = funct3; // store width + + always_comb begin + // Default values to prevent latches + RegWrite = 1'b0; + ALUControl = 4'b0000; + ALUSrcA = 1'b0; + ALUSrcB = 1'b0; + MemWrite = 1'b0; + ResultSrc = 2'b00; + Branch = 1'b0; + BranchType = 3'b000; + Jump = 2'b00; + ImmSrc = 3'b000; + AddressingControl = 3'b000; + + + case(opcode) + // R-type instructions + 7'b0110011: begin + RegWrite = 1'b1; + ALUSrcB = 1'b0; + + case(funct3) + 3'b000: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0000; // add + 7'b0100000: ALUControl = 4'b0001; // sub + default: ALUControl = 4'b0000; + endcase + end + 3'b001: ALUControl = 4'b0101; // sll + 3'b010: ALUControl = 4'b1000; // slt + 3'b011: ALUControl = 4'b1001; // sltu + 3'b100: ALUControl = 4'b0100; // xor + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srl + 7'b0100000: ALUControl = 4'b0111; // sra + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // or + 3'b111: ALUControl = 4'b0010; // and + + default: ALUControl = 4'b0000; + endcase + end + + // I-type instructions (Arithmetic/Logic) + 7'b0010011: begin + RegWrite = 1'b1; + ImmSrc = 3'b000; // I-type imm + ALUSrcB = 1'b1; + + case(funct3) + 3'b000: ALUControl = 4'b0000; // addi + 3'b001: ALUControl = 4'b0101; // slli + 3'b010: ALUControl = 4'b1000; // slti (Added) + 3'b011: ALUControl = 4'b1001; // sltiu (Added) + 3'b100: ALUControl = 4'b0100; // xori + 3'b101: begin + case(funct7) + 7'b0000000: ALUControl = 4'b0110; // srli + 7'b0100000: ALUControl = 4'b0111; // srai + default: ALUControl = 4'b0110; + endcase + end + 3'b110: ALUControl = 4'b0011; // ori + 3'b111: ALUControl = 4'b0010; // andi + default: ALUControl = 4'b0000; + endcase + end + + // I-type Load instructions + 7'b0000011: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b01; // From Memory + ImmSrc = 3'b000; // I-type imm + AddressingControl = funct3; + ALUControl = 4'b0000; // Add for address + end + + // S-type Store instructions + 7'b0100011: begin + MemWrite = 1'b1; + ALUSrcB = 1'b1; // read from immediate + ImmSrc = 3'b001; // S-type immediate + ALUControl = 4'b0000; // Add for address + AddressingControl = funct3; + end + + // B-type Branch instructions + 7'b1100011: begin + Branch = 1'b1; + ImmSrc = 3'b010; // B-type imm + BranchType = funct3; + + case(funct3) + // BEQ, BNE: ALU does SUB (0001) + // If A == B, Result = 0, Zero = 1 + 3'b000: ALUControl = 4'b0001; // beq + 3'b001: ALUControl = 4'b0001; // bne + + // BLT, BGE: ALU does SLT (1000) + // If A < B: Result = 1, Zero = 0. If A >= B: Result = 0, Zero = 1. + 3'b100: ALUControl = 4'b1000; // blt + 3'b101: ALUControl = 4'b1000; // bge + + // BLTU, BGEU: ALU does SLTU (1001) + 3'b110: ALUControl = 4'b1001; // bltu + 3'b111: ALUControl = 4'b1001; // bgeu + default: ALUControl = 4'b0000; + + endcase + end + + // J-type JAL + 7'b1101111: begin + RegWrite = 1'b1; + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b011; // J-type imm + Jump = 2'b01; + end + + // I-type JALR + 7'b1100111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; // SrcB = imm + ResultSrc = 2'b10; // PC+4 + ImmSrc = 3'b000; // I-type imm + Jump = 2'b10; + // ALUControl = 4'b0000; // Add for target address + end + + // U-type LUI + 7'b0110111: begin + RegWrite = 1'b1; + ALUSrcB = 1'b1; + ResultSrc = 2'b00; + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b1111; // LUI operation (0 + imm shifted) + end + + // U-type AUIPC rd <- PC + imm << 12 + 7'b0010111: begin + RegWrite = 1'b1; + MemWrite = 1'b0; + ALUSrcA = 1'b1; // Select PC + ALUSrcB = 1'b1; // Select Imm + ImmSrc = 3'b100; // U-type imm + ALUControl = 4'b000; // AUIPC operation (PC + imm shifted) + end + + default: begin + // Already handled by defaults at top + end + endcase + end +endmodule diff --git a/repo/single_cycle_design/rtl/control_path.sv b/repo/single_cycle_design/rtl/control_path.sv new file mode 100644 index 0000000..a419210 --- /dev/null +++ b/repo/single_cycle_design/rtl/control_path.sv @@ -0,0 +1,56 @@ +module control_path( + /* verilator lint_off UNUSED */ + input logic [31:0] Instr, + /* verilator lint_on UNUSED */ + input logic Zero, + + output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic RegWrite, // enable write to register + output logic [3:0] ALUControl, // control operation in ALU + output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A + output logic ALUSrcB, // choose immediate (1) or register (0) operand + output logic MemWrite, // enable write into the data memory + // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) + output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) + output logic [2:0] AddressingControl // choose which type of load/store instruction to perform +); + + logic Branch; + logic [2:0] BranchType; + logic [1:0] Jump; + + logic [6:0] opcode; + logic [2:0] funct3; + logic [6:0] funct7; + + assign opcode = Instr[6:0]; + assign funct3 = Instr[14:12]; + assign funct7 = Instr[31:25]; + + control control_unit ( + .opcode(opcode), + .funct3(funct3), + .funct7(funct7), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .Branch(Branch), + .BranchType(BranchType), + .Jump(Jump), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + + pcsrc_unit pcsrc_unit_inst ( + .Jump(Jump), + .Branch(Branch), + .Zero(Zero), + .BranchType(BranchType), + .PCSrc(PCSrc) + ); + +endmodule diff --git a/repo/single_cycle_design/rtl/data_mem.sv b/repo/single_cycle_design/rtl/data_mem.sv new file mode 100644 index 0000000..8c5ec7d --- /dev/null +++ b/repo/single_cycle_design/rtl/data_mem.sv @@ -0,0 +1,51 @@ +module data_mem #( + parameter XLEN = 32, + parameter ADDRESS_WIDTH = 16, + parameter DATA_WIDTH = 8 +) ( + input logic clk, + input logic WE, // write enable + /* verilator lint_off UNUSED */ + input logic [XLEN-1:0] A, // memory address + /* verilator lint_on UNUSED */ + input logic [XLEN-1:0] WD, // data to write + input logic [2:0] AddressingControl, // funct3 to determine load/store type + output logic [XLEN-1:0] RD // data read +); + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; // 64KB data memory + + logic [ADDRESS_WIDTH-1:0] addr; + assign addr = A[ADDRESS_WIDTH-1:0]; // use lower ADDRESS_WIDTH bits of address + + always_ff @(posedge clk) begin + if (WE) begin + case (AddressingControl) + 3'b000: ram_array[addr] <= WD[7:0]; // SB + 3'b001: begin // SH + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; + end + 3'b010: begin // SW + ram_array[addr] <= WD[7:0]; + ram_array[addr+1] <= WD[15:8]; + ram_array[addr+2] <= WD[23:16]; + ram_array[addr+3] <= WD[31:24]; + end + default: ; // ignore other funct3 + endcase + end + end + + always_comb begin + case (AddressingControl) + 3'b000: RD = {{24{ram_array[addr][7]}}, ram_array[addr]}; // LB (signed) + 3'b001: RD = {{16{ram_array[addr+1][7]}}, ram_array[addr+1], ram_array[addr]}; // LH (signed) + 3'b010: RD = {ram_array[addr+3], ram_array[addr+2], ram_array[addr+1], ram_array[addr]}; // LW + 3'b100: RD = {24'b0, ram_array[addr]}; // LBU + 3'b101: RD = {16'b0, ram_array[addr+1], ram_array[addr]}; // LHU + default: RD = 32'b0; + endcase + end + + +endmodule diff --git a/repo/single_cycle_design/rtl/data_path.sv b/repo/single_cycle_design/rtl/data_path.sv new file mode 100644 index 0000000..5f89c15 --- /dev/null +++ b/repo/single_cycle_design/rtl/data_path.sv @@ -0,0 +1,85 @@ +module data_path ( + input logic clk, + input logic rst, + + input logic [1:0] PCSrc, + input logic RegWrite, + input logic [3:0] ALUControl, + input logic ALUSrcA, + input logic ALUSrcB, + input logic MemWrite, + input logic [1:0] ResultSrc, + input logic [2:0] ImmSrc, + input logic [2:0] AddressingControl, + + output logic [31:0] Instr, + output logic Zero, + output logic [31:0] a0 +); + + logic [31:0] PC, PCPlus4, ImmExt, MemData, ALUResult, SrcA, SrcB, ReadData1, ReadData2, ResultData; + + assign SrcA = ALUSrcA ? PC : ReadData1; + assign SrcB = ALUSrcB ? ImmExt : ReadData2; + + pc pc_inst( + .clk(clk), + .rst(rst), + .PCSrc(PCSrc), + .ImmExt(ImmExt), + .ALUResult(ALUResult), + .PCPlus4(PCPlus4), + .PC(PC) + ); + + alu alu_inst( + .SrcA(SrcA), + .SrcB(SrcB), + .ALUControl(ALUControl), + .ALUResult(ALUResult), + .Zero(Zero) + ); + + instr_mem instr_mem_inst( + .A(PC), + .RD(Instr) + ); + + data_mem data_mem_inst( + .clk(clk), + .WE(MemWrite), + .A(ALUResult), + .WD(ReadData2), + .AddressingControl(AddressingControl), + .RD(MemData) + ); + + reg_file reg_file_inst( + .clk(clk), + .AD1(Instr[19:15]), + .AD2(Instr[24:20]), + .AD3(Instr[11:7]), + .WD3(ResultData), + .WE3(RegWrite), + .RD1(ReadData1), + .RD2(ReadData2), + .a0(a0) + ); + + signext signext_inst( + .Imm(Instr[31:7]), + .ImmSrc(ImmSrc), + .ImmExt(ImmExt) + ); + + always_comb begin + case (ResultSrc) + 2'b00: ResultData = ALUResult; + 2'b01: ResultData = MemData; + 2'b10: ResultData = PCPlus4; + default: ResultData = 32'b0; + endcase + end + + +endmodule diff --git a/repo/single_cycle_design/rtl/instr_mem.sv b/repo/single_cycle_design/rtl/instr_mem.sv new file mode 100644 index 0000000..54dbf7a --- /dev/null +++ b/repo/single_cycle_design/rtl/instr_mem.sv @@ -0,0 +1,18 @@ +module instr_mem ( + /* verilator lint_off UNUSED */ + input logic [31:0] A, + output logic [31:0] RD + /* verilator lint_on UNUSED */ +); + + // instruction memory array: 256 instructions, each 32 bits wide + logic [31:0] rom_array [0:255]; + + // preload instructions from an external hex file at simulation start + initial begin + $readmemh("../rtl/program.hex", rom_array); + end + + // output the instruction corresponding to the PC address + assign RD = rom_array[A[9:2]]; +endmodule diff --git a/repo/single_cycle_design/rtl/pc.sv b/repo/single_cycle_design/rtl/pc.sv new file mode 100644 index 0000000..d08c272 --- /dev/null +++ b/repo/single_cycle_design/rtl/pc.sv @@ -0,0 +1,48 @@ +module pc #( + parameter WIDTH = 32 +)( + input logic clk, // system clock + input logic rst, // asynchronous reset + input logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) + input logic [WIDTH-1:0] ImmExt, // immediate offset for branch target + + /* verilator lint_off UNUSED */ + + input logic [WIDTH-1:0] ALUResult, + + /* verilator lint_on UNUSED */ + output logic [WIDTH-1:0] PCPlus4, // PC + 4 + output logic [WIDTH-1:0] PC // current program counter +); + +// next PC after the mux +logic [WIDTH-1:0] PCNext; + +logic [WIDTH-1:0] PCTarget; + + +always_comb begin + PCPlus4 = PC + 4; + PCTarget = PC + ImmExt; + + case(PCSrc) + 2'b00: PCNext = PCPlus4; + 2'b01: PCNext = PCTarget; + + 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 + + default: PCNext = PCPlus4; + endcase +end + + + +// program counter register with asynchronous reset +always_ff @(posedge clk or posedge rst) begin + if (rst) + PC <= {WIDTH{1'b0}}; // Reset PC to 0 + else + PC <= PCNext; // Update PC normally +end + +endmodule diff --git a/repo/single_cycle_design/rtl/pcsrc_unit.sv b/repo/single_cycle_design/rtl/pcsrc_unit.sv new file mode 100644 index 0000000..f31e45f --- /dev/null +++ b/repo/single_cycle_design/rtl/pcsrc_unit.sv @@ -0,0 +1,35 @@ +module pcsrc_unit ( + input logic [1:0] Jump, + input logic Branch, + input logic Zero, + input logic [2:0] BranchType, + output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) +); + + always_comb begin + // default + PCSrc = 2'b00; + + // handle jumps first + case (Jump) + default: PCSrc = 2'b00; + 2'b01: PCSrc = 2'b01; // JAL + 2'b10: PCSrc = 2'b10; // JALR + 2'b00: begin + // if jump==00 then check branches + if (Branch) begin + case (BranchType) + 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ + 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE + 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT + 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE + 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU + 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU + default: PCSrc = 2'b00; + endcase + end + end + endcase + end + +endmodule diff --git a/repo/single_cycle_design/rtl/reg_file.sv b/repo/single_cycle_design/rtl/reg_file.sv new file mode 100644 index 0000000..084e03f --- /dev/null +++ b/repo/single_cycle_design/rtl/reg_file.sv @@ -0,0 +1,31 @@ +module reg_file #( + parameter ADDRESS_WIDTH = 5, // 32 registers + DATA_WIDTH = 32 // 32-bits +)( + input logic clk, // clock + input logic [ADDRESS_WIDTH-1:0] AD3, // destination register + input logic [ADDRESS_WIDTH-1:0] AD1, // source register 1 address (rs1) + input logic [ADDRESS_WIDTH-1:0] AD2, // source register 2 address (rs2) + input logic [DATA_WIDTH-1:0] WD3, // write data + input logic WE3, // write enable + output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 + output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 + output logic [DATA_WIDTH-1:0] a0 // register file output for testbenches + +); + + // 32 32-bit registers + logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; + + // write operation (synchronous) -> writes occur only if WE3 is asserted + always_ff @(posedge clk) begin + if (WE3 == 1'b1 && AD3 != 0) + ram_array[AD3] <= WD3; + end + + // read operations (combinational) -> outputs change immediately when read_addr changes + assign RD1 = ram_array[AD1]; + assign RD2 = ram_array[AD2]; + assign a0 = ram_array[5'b01010]; + +endmodule diff --git a/repo/single_cycle_design/rtl/signext.sv b/repo/single_cycle_design/rtl/signext.sv new file mode 100644 index 0000000..d2c6ae2 --- /dev/null +++ b/repo/single_cycle_design/rtl/signext.sv @@ -0,0 +1,17 @@ +module signext ( + input logic [31:7] Imm, + input logic [2:0] ImmSrc, + output logic [31:0] ImmExt +); + + always_comb begin + case (ImmSrc) + 3'b000: ImmExt = {{20{Imm[31]}}, Imm[31:20]}; // I-type + 3'b001: ImmExt = {{20{Imm[31]}}, Imm[31:25], Imm[11:7]}; // S-type + 3'b010: ImmExt = {{20{Imm[31]}}, Imm[7], Imm[30:25], Imm[11:8], 1'b0}; // B-type + 3'b011: ImmExt = {{12{Imm[31]}}, Imm[19:12], Imm[20], Imm[30:21], 1'b0}; // J-type + 3'b100: ImmExt = {Imm[31:12], 12'b0}; // U-type + default: ImmExt = 32'b0; + endcase + end +endmodule diff --git a/repo/single_cycle_design/rtl/top.sv b/repo/single_cycle_design/rtl/top.sv new file mode 100644 index 0000000..efccc5f --- /dev/null +++ b/repo/single_cycle_design/rtl/top.sv @@ -0,0 +1,61 @@ +module top ( + input logic clk, + input logic rst, + /* verilator lint_off UNUSED */ + input logic trigger, + /* verilator lint_on UNUSED */ + output logic [31:0] a0 +); + + // Control signals + logic [1:0] PCSrc; + logic RegWrite; + logic [3:0] ALUControl; + logic ALUSrcA; + logic ALUSrcB; + logic MemWrite; + logic [1:0] ResultSrc; + logic [2:0] ImmSrc; + logic [2:0] AddressingControl; + + // Datapath outputs + logic Zero; + logic [31:0] Instr; + + // Datapath + data_path dp_inst ( + .clk(clk), + .rst(rst), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl), + + .Instr(Instr), + .Zero(Zero), + .a0(a0) + ); + + // Control path + control_path ctrl_inst ( + .Instr(Instr), + .Zero(Zero), + + .PCSrc(PCSrc), + .RegWrite(RegWrite), + .ALUControl(ALUControl), + .ALUSrcA(ALUSrcA), + .ALUSrcB(ALUSrcB), + .MemWrite(MemWrite), + .ResultSrc(ResultSrc), + .ImmSrc(ImmSrc), + .AddressingControl(AddressingControl) + ); + +endmodule From 0a5148af92c4c701b878e07eb57f638639d799b0 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 11:32:51 +0000 Subject: [PATCH 59/65] removed folder --- repo/single_cycle_design/rtl/alu.sv | 41 ---- repo/single_cycle_design/rtl/control.sv | 187 ------------------- repo/single_cycle_design/rtl/control_path.sv | 56 ------ repo/single_cycle_design/rtl/data_mem.sv | 51 ----- repo/single_cycle_design/rtl/data_path.sv | 85 --------- repo/single_cycle_design/rtl/instr_mem.sv | 18 -- repo/single_cycle_design/rtl/pc.sv | 48 ----- repo/single_cycle_design/rtl/pcsrc_unit.sv | 35 ---- repo/single_cycle_design/rtl/reg_file.sv | 31 --- repo/single_cycle_design/rtl/signext.sv | 17 -- repo/single_cycle_design/rtl/top.sv | 61 ------ 11 files changed, 630 deletions(-) delete mode 100644 repo/single_cycle_design/rtl/alu.sv delete mode 100644 repo/single_cycle_design/rtl/control.sv delete mode 100644 repo/single_cycle_design/rtl/control_path.sv delete mode 100644 repo/single_cycle_design/rtl/data_mem.sv delete mode 100644 repo/single_cycle_design/rtl/data_path.sv delete mode 100644 repo/single_cycle_design/rtl/instr_mem.sv delete mode 100644 repo/single_cycle_design/rtl/pc.sv delete mode 100644 repo/single_cycle_design/rtl/pcsrc_unit.sv delete mode 100644 repo/single_cycle_design/rtl/reg_file.sv delete mode 100644 repo/single_cycle_design/rtl/signext.sv delete mode 100644 repo/single_cycle_design/rtl/top.sv diff --git a/repo/single_cycle_design/rtl/alu.sv b/repo/single_cycle_design/rtl/alu.sv deleted file mode 100644 index d955b5e..0000000 --- a/repo/single_cycle_design/rtl/alu.sv +++ /dev/null @@ -1,41 +0,0 @@ - // 0000 = ADD - // 0001 = SUB - // 0010 = AND - // 0011 = OR - // 0100 = XOR - // 0101 = SLL - // 0110 = SRL - // 0111 = SRA - // 1000 = SLT (signed) - // 1001 = SLTU (unsigned) - // 1111 = LUI operation - -module alu ( - input logic [31:0] SrcA, - input logic [31:0] SrcB, - input logic [3:0] ALUControl, - output logic [31:0] ALUResult, - output logic Zero -); - - always_comb begin - case (ALUControl) - 4'b0000: ALUResult = SrcA + SrcB; // add - 4'b0001: ALUResult = SrcA - SrcB; // sub - 4'b0010: ALUResult = SrcA & SrcB; // and - 4'b0011: ALUResult = SrcA | SrcB; // or - 4'b0100: ALUResult = SrcA ^ SrcB; // xor - - 4'b0101: ALUResult = SrcA << SrcB[4:0]; // sll - 4'b0110: ALUResult = SrcA >> SrcB[4:0]; // srl - 4'b0111: ALUResult = $signed(SrcA) >>> SrcB[4:0]; // sra - 4'b1000: ALUResult = ($signed(SrcA) < $signed(SrcB)) ? 32'b1 : 32'b0; //slt - 4'b1001: ALUResult = (SrcA < SrcB) ? 32'b1 : 32'b0; //sltu - 4'b1111: ALUResult = SrcB; // LUI operation (Load Upper Immediate) - - default: ALUResult = 32'b0; - endcase - - Zero = 1'b0; - end -endmodule diff --git a/repo/single_cycle_design/rtl/control.sv b/repo/single_cycle_design/rtl/control.sv deleted file mode 100644 index b9d60ee..0000000 --- a/repo/single_cycle_design/rtl/control.sv +++ /dev/null @@ -1,187 +0,0 @@ -module control( - input logic [6:0] opcode, - input logic [2:0] funct3, - input logic [6:0] funct7, - - output logic RegWrite, // enable write to register - output logic [3:0] ALUControl, // control operation in ALU - output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A - output logic ALUSrcB, // choose immediate (1) or register (0) operand - output logic MemWrite, // enable write into the data memory - // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) - output logic Branch, - output logic [2:0] BranchType, - output logic [1:0] Jump, // indicates jump instruction (00 = no jump, 01 = JAL, 10 = JALR) - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) - output logic [2:0] AddressingControl // choose which type of load/store instruction to perform -); - - // logic [6:0] opcode; - // logic [2:0] funct3; - // logic [6:0] funct7; - - // assign opcode = Instr[6:0]; - // assign funct3 = Instr[14:12]; - // assign funct7 = Instr[31:25]; - // assign AddressingControl = funct3; // store width - - always_comb begin - // Default values to prevent latches - RegWrite = 1'b0; - ALUControl = 4'b0000; - ALUSrcA = 1'b0; - ALUSrcB = 1'b0; - MemWrite = 1'b0; - ResultSrc = 2'b00; - Branch = 1'b0; - BranchType = 3'b000; - Jump = 2'b00; - ImmSrc = 3'b000; - AddressingControl = 3'b000; - - - case(opcode) - // R-type instructions - 7'b0110011: begin - RegWrite = 1'b1; - ALUSrcB = 1'b0; - - case(funct3) - 3'b000: begin - case(funct7) - 7'b0000000: ALUControl = 4'b0000; // add - 7'b0100000: ALUControl = 4'b0001; // sub - default: ALUControl = 4'b0000; - endcase - end - 3'b001: ALUControl = 4'b0101; // sll - 3'b010: ALUControl = 4'b1000; // slt - 3'b011: ALUControl = 4'b1001; // sltu - 3'b100: ALUControl = 4'b0100; // xor - 3'b101: begin - case(funct7) - 7'b0000000: ALUControl = 4'b0110; // srl - 7'b0100000: ALUControl = 4'b0111; // sra - default: ALUControl = 4'b0110; - endcase - end - 3'b110: ALUControl = 4'b0011; // or - 3'b111: ALUControl = 4'b0010; // and - - default: ALUControl = 4'b0000; - endcase - end - - // I-type instructions (Arithmetic/Logic) - 7'b0010011: begin - RegWrite = 1'b1; - ImmSrc = 3'b000; // I-type imm - ALUSrcB = 1'b1; - - case(funct3) - 3'b000: ALUControl = 4'b0000; // addi - 3'b001: ALUControl = 4'b0101; // slli - 3'b010: ALUControl = 4'b1000; // slti (Added) - 3'b011: ALUControl = 4'b1001; // sltiu (Added) - 3'b100: ALUControl = 4'b0100; // xori - 3'b101: begin - case(funct7) - 7'b0000000: ALUControl = 4'b0110; // srli - 7'b0100000: ALUControl = 4'b0111; // srai - default: ALUControl = 4'b0110; - endcase - end - 3'b110: ALUControl = 4'b0011; // ori - 3'b111: ALUControl = 4'b0010; // andi - default: ALUControl = 4'b0000; - endcase - end - - // I-type Load instructions - 7'b0000011: begin - RegWrite = 1'b1; - ALUSrcB = 1'b1; // SrcB = imm - ResultSrc = 2'b01; // From Memory - ImmSrc = 3'b000; // I-type imm - AddressingControl = funct3; - ALUControl = 4'b0000; // Add for address - end - - // S-type Store instructions - 7'b0100011: begin - MemWrite = 1'b1; - ALUSrcB = 1'b1; // read from immediate - ImmSrc = 3'b001; // S-type immediate - ALUControl = 4'b0000; // Add for address - AddressingControl = funct3; - end - - // B-type Branch instructions - 7'b1100011: begin - Branch = 1'b1; - ImmSrc = 3'b010; // B-type imm - BranchType = funct3; - - case(funct3) - // BEQ, BNE: ALU does SUB (0001) - // If A == B, Result = 0, Zero = 1 - 3'b000: ALUControl = 4'b0001; // beq - 3'b001: ALUControl = 4'b0001; // bne - - // BLT, BGE: ALU does SLT (1000) - // If A < B: Result = 1, Zero = 0. If A >= B: Result = 0, Zero = 1. - 3'b100: ALUControl = 4'b1000; // blt - 3'b101: ALUControl = 4'b1000; // bge - - // BLTU, BGEU: ALU does SLTU (1001) - 3'b110: ALUControl = 4'b1001; // bltu - 3'b111: ALUControl = 4'b1001; // bgeu - default: ALUControl = 4'b0000; - - endcase - end - - // J-type JAL - 7'b1101111: begin - RegWrite = 1'b1; - ResultSrc = 2'b10; // PC+4 - ImmSrc = 3'b011; // J-type imm - Jump = 2'b01; - end - - // I-type JALR - 7'b1100111: begin - RegWrite = 1'b1; - ALUSrcB = 1'b1; // SrcB = imm - ResultSrc = 2'b10; // PC+4 - ImmSrc = 3'b000; // I-type imm - Jump = 2'b10; - // ALUControl = 4'b0000; // Add for target address - end - - // U-type LUI - 7'b0110111: begin - RegWrite = 1'b1; - ALUSrcB = 1'b1; - ResultSrc = 2'b00; - ImmSrc = 3'b100; // U-type imm - ALUControl = 4'b1111; // LUI operation (0 + imm shifted) - end - - // U-type AUIPC rd <- PC + imm << 12 - 7'b0010111: begin - RegWrite = 1'b1; - MemWrite = 1'b0; - ALUSrcA = 1'b1; // Select PC - ALUSrcB = 1'b1; // Select Imm - ImmSrc = 3'b100; // U-type imm - ALUControl = 4'b000; // AUIPC operation (PC + imm shifted) - end - - default: begin - // Already handled by defaults at top - end - endcase - end -endmodule diff --git a/repo/single_cycle_design/rtl/control_path.sv b/repo/single_cycle_design/rtl/control_path.sv deleted file mode 100644 index a419210..0000000 --- a/repo/single_cycle_design/rtl/control_path.sv +++ /dev/null @@ -1,56 +0,0 @@ -module control_path( - /* verilator lint_off UNUSED */ - input logic [31:0] Instr, - /* verilator lint_on UNUSED */ - input logic Zero, - - output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic RegWrite, // enable write to register - output logic [3:0] ALUControl, // control operation in ALU - output logic ALUSrcA, // choose PC (1) or register (0) for ALU operand A - output logic ALUSrcB, // choose immediate (1) or register (0) operand - output logic MemWrite, // enable write into the data memory - // output logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - output logic [1:0] ResultSrc, // control the source of data to write back to register file (00 = ALU, 01 = Memory, 10 = PC+4) - output logic [2:0] ImmSrc, // selects type of immediate (I = 000, S = 001, B = 010, J = 011, U = 100) - output logic [2:0] AddressingControl // choose which type of load/store instruction to perform -); - - logic Branch; - logic [2:0] BranchType; - logic [1:0] Jump; - - logic [6:0] opcode; - logic [2:0] funct3; - logic [6:0] funct7; - - assign opcode = Instr[6:0]; - assign funct3 = Instr[14:12]; - assign funct7 = Instr[31:25]; - - control control_unit ( - .opcode(opcode), - .funct3(funct3), - .funct7(funct7), - .RegWrite(RegWrite), - .ALUControl(ALUControl), - .ALUSrcA(ALUSrcA), - .ALUSrcB(ALUSrcB), - .MemWrite(MemWrite), - .ResultSrc(ResultSrc), - .Branch(Branch), - .BranchType(BranchType), - .Jump(Jump), - .ImmSrc(ImmSrc), - .AddressingControl(AddressingControl) - ); - - pcsrc_unit pcsrc_unit_inst ( - .Jump(Jump), - .Branch(Branch), - .Zero(Zero), - .BranchType(BranchType), - .PCSrc(PCSrc) - ); - -endmodule diff --git a/repo/single_cycle_design/rtl/data_mem.sv b/repo/single_cycle_design/rtl/data_mem.sv deleted file mode 100644 index 8c5ec7d..0000000 --- a/repo/single_cycle_design/rtl/data_mem.sv +++ /dev/null @@ -1,51 +0,0 @@ -module data_mem #( - parameter XLEN = 32, - parameter ADDRESS_WIDTH = 16, - parameter DATA_WIDTH = 8 -) ( - input logic clk, - input logic WE, // write enable - /* verilator lint_off UNUSED */ - input logic [XLEN-1:0] A, // memory address - /* verilator lint_on UNUSED */ - input logic [XLEN-1:0] WD, // data to write - input logic [2:0] AddressingControl, // funct3 to determine load/store type - output logic [XLEN-1:0] RD // data read -); - logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; // 64KB data memory - - logic [ADDRESS_WIDTH-1:0] addr; - assign addr = A[ADDRESS_WIDTH-1:0]; // use lower ADDRESS_WIDTH bits of address - - always_ff @(posedge clk) begin - if (WE) begin - case (AddressingControl) - 3'b000: ram_array[addr] <= WD[7:0]; // SB - 3'b001: begin // SH - ram_array[addr] <= WD[7:0]; - ram_array[addr+1] <= WD[15:8]; - end - 3'b010: begin // SW - ram_array[addr] <= WD[7:0]; - ram_array[addr+1] <= WD[15:8]; - ram_array[addr+2] <= WD[23:16]; - ram_array[addr+3] <= WD[31:24]; - end - default: ; // ignore other funct3 - endcase - end - end - - always_comb begin - case (AddressingControl) - 3'b000: RD = {{24{ram_array[addr][7]}}, ram_array[addr]}; // LB (signed) - 3'b001: RD = {{16{ram_array[addr+1][7]}}, ram_array[addr+1], ram_array[addr]}; // LH (signed) - 3'b010: RD = {ram_array[addr+3], ram_array[addr+2], ram_array[addr+1], ram_array[addr]}; // LW - 3'b100: RD = {24'b0, ram_array[addr]}; // LBU - 3'b101: RD = {16'b0, ram_array[addr+1], ram_array[addr]}; // LHU - default: RD = 32'b0; - endcase - end - - -endmodule diff --git a/repo/single_cycle_design/rtl/data_path.sv b/repo/single_cycle_design/rtl/data_path.sv deleted file mode 100644 index 5f89c15..0000000 --- a/repo/single_cycle_design/rtl/data_path.sv +++ /dev/null @@ -1,85 +0,0 @@ -module data_path ( - input logic clk, - input logic rst, - - input logic [1:0] PCSrc, - input logic RegWrite, - input logic [3:0] ALUControl, - input logic ALUSrcA, - input logic ALUSrcB, - input logic MemWrite, - input logic [1:0] ResultSrc, - input logic [2:0] ImmSrc, - input logic [2:0] AddressingControl, - - output logic [31:0] Instr, - output logic Zero, - output logic [31:0] a0 -); - - logic [31:0] PC, PCPlus4, ImmExt, MemData, ALUResult, SrcA, SrcB, ReadData1, ReadData2, ResultData; - - assign SrcA = ALUSrcA ? PC : ReadData1; - assign SrcB = ALUSrcB ? ImmExt : ReadData2; - - pc pc_inst( - .clk(clk), - .rst(rst), - .PCSrc(PCSrc), - .ImmExt(ImmExt), - .ALUResult(ALUResult), - .PCPlus4(PCPlus4), - .PC(PC) - ); - - alu alu_inst( - .SrcA(SrcA), - .SrcB(SrcB), - .ALUControl(ALUControl), - .ALUResult(ALUResult), - .Zero(Zero) - ); - - instr_mem instr_mem_inst( - .A(PC), - .RD(Instr) - ); - - data_mem data_mem_inst( - .clk(clk), - .WE(MemWrite), - .A(ALUResult), - .WD(ReadData2), - .AddressingControl(AddressingControl), - .RD(MemData) - ); - - reg_file reg_file_inst( - .clk(clk), - .AD1(Instr[19:15]), - .AD2(Instr[24:20]), - .AD3(Instr[11:7]), - .WD3(ResultData), - .WE3(RegWrite), - .RD1(ReadData1), - .RD2(ReadData2), - .a0(a0) - ); - - signext signext_inst( - .Imm(Instr[31:7]), - .ImmSrc(ImmSrc), - .ImmExt(ImmExt) - ); - - always_comb begin - case (ResultSrc) - 2'b00: ResultData = ALUResult; - 2'b01: ResultData = MemData; - 2'b10: ResultData = PCPlus4; - default: ResultData = 32'b0; - endcase - end - - -endmodule diff --git a/repo/single_cycle_design/rtl/instr_mem.sv b/repo/single_cycle_design/rtl/instr_mem.sv deleted file mode 100644 index 54dbf7a..0000000 --- a/repo/single_cycle_design/rtl/instr_mem.sv +++ /dev/null @@ -1,18 +0,0 @@ -module instr_mem ( - /* verilator lint_off UNUSED */ - input logic [31:0] A, - output logic [31:0] RD - /* verilator lint_on UNUSED */ -); - - // instruction memory array: 256 instructions, each 32 bits wide - logic [31:0] rom_array [0:255]; - - // preload instructions from an external hex file at simulation start - initial begin - $readmemh("../rtl/program.hex", rom_array); - end - - // output the instruction corresponding to the PC address - assign RD = rom_array[A[9:2]]; -endmodule diff --git a/repo/single_cycle_design/rtl/pc.sv b/repo/single_cycle_design/rtl/pc.sv deleted file mode 100644 index d08c272..0000000 --- a/repo/single_cycle_design/rtl/pc.sv +++ /dev/null @@ -1,48 +0,0 @@ -module pc #( - parameter WIDTH = 32 -)( - input logic clk, // system clock - input logic rst, // asynchronous reset - input logic [1:0] PCSrc, // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) - input logic [WIDTH-1:0] ImmExt, // immediate offset for branch target - - /* verilator lint_off UNUSED */ - - input logic [WIDTH-1:0] ALUResult, - - /* verilator lint_on UNUSED */ - output logic [WIDTH-1:0] PCPlus4, // PC + 4 - output logic [WIDTH-1:0] PC // current program counter -); - -// next PC after the mux -logic [WIDTH-1:0] PCNext; - -logic [WIDTH-1:0] PCTarget; - - -always_comb begin - PCPlus4 = PC + 4; - PCTarget = PC + ImmExt; - - case(PCSrc) - 2'b00: PCNext = PCPlus4; - 2'b01: PCNext = PCTarget; - - 2'b10: PCNext = {ALUResult[31:2], 2'b00}; // word addressed << 2 - - default: PCNext = PCPlus4; - endcase -end - - - -// program counter register with asynchronous reset -always_ff @(posedge clk or posedge rst) begin - if (rst) - PC <= {WIDTH{1'b0}}; // Reset PC to 0 - else - PC <= PCNext; // Update PC normally -end - -endmodule diff --git a/repo/single_cycle_design/rtl/pcsrc_unit.sv b/repo/single_cycle_design/rtl/pcsrc_unit.sv deleted file mode 100644 index f31e45f..0000000 --- a/repo/single_cycle_design/rtl/pcsrc_unit.sv +++ /dev/null @@ -1,35 +0,0 @@ -module pcsrc_unit ( - input logic [1:0] Jump, - input logic Branch, - input logic Zero, - input logic [2:0] BranchType, - output logic [1:0] PCSrc // control the source for the next PC value (00 = PC+4, 01 = PC + imm(branch/jal), 10 = ALUResult (jalr)) -); - - always_comb begin - // default - PCSrc = 2'b00; - - // handle jumps first - case (Jump) - default: PCSrc = 2'b00; - 2'b01: PCSrc = 2'b01; // JAL - 2'b10: PCSrc = 2'b10; // JALR - 2'b00: begin - // if jump==00 then check branches - if (Branch) begin - case (BranchType) - 3'b000: PCSrc = Zero ? 2'b01 : 2'b00; // BEQ - 3'b001: PCSrc = ~Zero ? 2'b01 : 2'b00; // BNE - 3'b100: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLT - 3'b101: PCSrc = Zero ? 2'b01 : 2'b00; // BGE - 3'b110: PCSrc = ~Zero ? 2'b01 : 2'b00; // BLTU - 3'b111: PCSrc = Zero ? 2'b01 : 2'b00; // BGEU - default: PCSrc = 2'b00; - endcase - end - end - endcase - end - -endmodule diff --git a/repo/single_cycle_design/rtl/reg_file.sv b/repo/single_cycle_design/rtl/reg_file.sv deleted file mode 100644 index 084e03f..0000000 --- a/repo/single_cycle_design/rtl/reg_file.sv +++ /dev/null @@ -1,31 +0,0 @@ -module reg_file #( - parameter ADDRESS_WIDTH = 5, // 32 registers - DATA_WIDTH = 32 // 32-bits -)( - input logic clk, // clock - input logic [ADDRESS_WIDTH-1:0] AD3, // destination register - input logic [ADDRESS_WIDTH-1:0] AD1, // source register 1 address (rs1) - input logic [ADDRESS_WIDTH-1:0] AD2, // source register 2 address (rs2) - input logic [DATA_WIDTH-1:0] WD3, // write data - input logic WE3, // write enable - output logic [DATA_WIDTH-1:0] RD1, // register file output for rs1 - output logic [DATA_WIDTH-1:0] RD2, // register file output for rs2 - output logic [DATA_WIDTH-1:0] a0 // register file output for testbenches - -); - - // 32 32-bit registers - logic [DATA_WIDTH-1:0] ram_array [2**ADDRESS_WIDTH-1:0]; - - // write operation (synchronous) -> writes occur only if WE3 is asserted - always_ff @(posedge clk) begin - if (WE3 == 1'b1 && AD3 != 0) - ram_array[AD3] <= WD3; - end - - // read operations (combinational) -> outputs change immediately when read_addr changes - assign RD1 = ram_array[AD1]; - assign RD2 = ram_array[AD2]; - assign a0 = ram_array[5'b01010]; - -endmodule diff --git a/repo/single_cycle_design/rtl/signext.sv b/repo/single_cycle_design/rtl/signext.sv deleted file mode 100644 index d2c6ae2..0000000 --- a/repo/single_cycle_design/rtl/signext.sv +++ /dev/null @@ -1,17 +0,0 @@ -module signext ( - input logic [31:7] Imm, - input logic [2:0] ImmSrc, - output logic [31:0] ImmExt -); - - always_comb begin - case (ImmSrc) - 3'b000: ImmExt = {{20{Imm[31]}}, Imm[31:20]}; // I-type - 3'b001: ImmExt = {{20{Imm[31]}}, Imm[31:25], Imm[11:7]}; // S-type - 3'b010: ImmExt = {{20{Imm[31]}}, Imm[7], Imm[30:25], Imm[11:8], 1'b0}; // B-type - 3'b011: ImmExt = {{12{Imm[31]}}, Imm[19:12], Imm[20], Imm[30:21], 1'b0}; // J-type - 3'b100: ImmExt = {Imm[31:12], 12'b0}; // U-type - default: ImmExt = 32'b0; - endcase - end -endmodule diff --git a/repo/single_cycle_design/rtl/top.sv b/repo/single_cycle_design/rtl/top.sv deleted file mode 100644 index efccc5f..0000000 --- a/repo/single_cycle_design/rtl/top.sv +++ /dev/null @@ -1,61 +0,0 @@ -module top ( - input logic clk, - input logic rst, - /* verilator lint_off UNUSED */ - input logic trigger, - /* verilator lint_on UNUSED */ - output logic [31:0] a0 -); - - // Control signals - logic [1:0] PCSrc; - logic RegWrite; - logic [3:0] ALUControl; - logic ALUSrcA; - logic ALUSrcB; - logic MemWrite; - logic [1:0] ResultSrc; - logic [2:0] ImmSrc; - logic [2:0] AddressingControl; - - // Datapath outputs - logic Zero; - logic [31:0] Instr; - - // Datapath - data_path dp_inst ( - .clk(clk), - .rst(rst), - - .PCSrc(PCSrc), - .RegWrite(RegWrite), - .ALUControl(ALUControl), - .ALUSrcA(ALUSrcA), - .ALUSrcB(ALUSrcB), - .MemWrite(MemWrite), - .ResultSrc(ResultSrc), - .ImmSrc(ImmSrc), - .AddressingControl(AddressingControl), - - .Instr(Instr), - .Zero(Zero), - .a0(a0) - ); - - // Control path - control_path ctrl_inst ( - .Instr(Instr), - .Zero(Zero), - - .PCSrc(PCSrc), - .RegWrite(RegWrite), - .ALUControl(ALUControl), - .ALUSrcA(ALUSrcA), - .ALUSrcB(ALUSrcB), - .MemWrite(MemWrite), - .ResultSrc(ResultSrc), - .ImmSrc(ImmSrc), - .AddressingControl(AddressingControl) - ); - -endmodule From 53432e95389b8083cb92d185ff742258c842fc26 Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Fri, 28 Nov 2025 11:38:18 +0000 Subject: [PATCH 60/65] trigger removed --- repo/tb/tests/cpu_testbench.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repo/tb/tests/cpu_testbench.h b/repo/tb/tests/cpu_testbench.h index 4873847..a3ba948 100644 --- a/repo/tb/tests/cpu_testbench.h +++ b/repo/tb/tests/cpu_testbench.h @@ -43,7 +43,7 @@ class CpuTestbench : public ::testing::Test // Initialise inputs top_->clk = 1; top_->rst = 1; - top_->trigger = 0; + // top_->trigger = 0; runSimulation(10); // Process reset top_->rst = 0; } From d5ea9d5d5eed5f4129114f1cd1cded1a0cb445ac Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 28 Nov 2025 11:46:16 +0000 Subject: [PATCH 61/65] Added all RV32I Instruction tests --- repo/tb/asm/add_test.s | 15 +++++++++++++++ repo/tb/asm/addi_test.s | 14 ++++++++++++++ repo/tb/asm/and_test.s | 15 +++++++++++++++ repo/tb/asm/andi_test.s | 14 ++++++++++++++ repo/tb/asm/auipc_test.s | 16 ++++++++++++++++ repo/tb/asm/beq_test.s | 22 ++++++++++++++++++++++ repo/tb/asm/bge_test.s | 21 +++++++++++++++++++++ repo/tb/asm/bgeu_test.s | 18 ++++++++++++++++++ repo/tb/asm/blt_test.s | 21 +++++++++++++++++++++ repo/tb/asm/bltu_test.s | 21 +++++++++++++++++++++ repo/tb/asm/bne_test.s | 21 +++++++++++++++++++++ repo/tb/asm/jal_test.s | 17 +++++++++++++++++ repo/tb/asm/jalr_test.s | 17 +++++++++++++++++ repo/tb/asm/lb_test.s | 12 ++++++++++++ repo/tb/asm/lbu_test.s | 12 ++++++++++++ repo/tb/asm/lh_test.s | 12 ++++++++++++ repo/tb/asm/lhu_test.s | 12 ++++++++++++ repo/tb/asm/lui_test.s | 6 ++++++ repo/tb/asm/lw_test.s | 12 ++++++++++++ repo/tb/asm/or_test.s | 11 +++++++++++ repo/tb/asm/ori_test.s | 10 ++++++++++ repo/tb/asm/sb_test.s | 12 ++++++++++++ repo/tb/asm/sh_test.s | 12 ++++++++++++ repo/tb/asm/sll_test.s | 11 +++++++++++ repo/tb/asm/slli_test.s | 10 ++++++++++ repo/tb/asm/slt_test.s | 11 +++++++++++ repo/tb/asm/slti_test.s | 10 ++++++++++ repo/tb/asm/sltiu_test.s | 10 ++++++++++ repo/tb/asm/sltu_test.s | 11 +++++++++++ repo/tb/asm/sra_test.s | 11 +++++++++++ repo/tb/asm/srai_test.s | 10 ++++++++++ repo/tb/asm/srl_test.s | 11 +++++++++++ repo/tb/asm/srli_test.s | 10 ++++++++++ repo/tb/asm/sub_test.s | 11 +++++++++++ repo/tb/asm/sw_test.s | 12 ++++++++++++ repo/tb/asm/xor_test.s | 11 +++++++++++ repo/tb/asm/xori_test.s | 11 +++++++++++ 37 files changed, 493 insertions(+) create mode 100644 repo/tb/asm/add_test.s create mode 100644 repo/tb/asm/addi_test.s create mode 100644 repo/tb/asm/and_test.s create mode 100644 repo/tb/asm/andi_test.s create mode 100644 repo/tb/asm/auipc_test.s create mode 100644 repo/tb/asm/beq_test.s create mode 100644 repo/tb/asm/bge_test.s create mode 100644 repo/tb/asm/bgeu_test.s create mode 100644 repo/tb/asm/blt_test.s create mode 100644 repo/tb/asm/bltu_test.s create mode 100644 repo/tb/asm/bne_test.s create mode 100644 repo/tb/asm/jal_test.s create mode 100644 repo/tb/asm/jalr_test.s create mode 100644 repo/tb/asm/lb_test.s create mode 100644 repo/tb/asm/lbu_test.s create mode 100644 repo/tb/asm/lh_test.s create mode 100644 repo/tb/asm/lhu_test.s create mode 100644 repo/tb/asm/lui_test.s create mode 100644 repo/tb/asm/lw_test.s create mode 100644 repo/tb/asm/or_test.s create mode 100644 repo/tb/asm/ori_test.s create mode 100644 repo/tb/asm/sb_test.s create mode 100644 repo/tb/asm/sh_test.s create mode 100644 repo/tb/asm/sll_test.s create mode 100644 repo/tb/asm/slli_test.s create mode 100644 repo/tb/asm/slt_test.s create mode 100644 repo/tb/asm/slti_test.s create mode 100644 repo/tb/asm/sltiu_test.s create mode 100644 repo/tb/asm/sltu_test.s create mode 100644 repo/tb/asm/sra_test.s create mode 100644 repo/tb/asm/srai_test.s create mode 100644 repo/tb/asm/srl_test.s create mode 100644 repo/tb/asm/srli_test.s create mode 100644 repo/tb/asm/sub_test.s create mode 100644 repo/tb/asm/sw_test.s create mode 100644 repo/tb/asm/xor_test.s create mode 100644 repo/tb/asm/xori_test.s diff --git a/repo/tb/asm/add_test.s b/repo/tb/asm/add_test.s new file mode 100644 index 0000000..f27f20a --- /dev/null +++ b/repo/tb/asm/add_test.s @@ -0,0 +1,15 @@ +# Add the two registers and put the result in rd + +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 3 + add a0, t0, t1 # a0 = t0 + t1 + j finish + +# a0 = 8 \ No newline at end of file diff --git a/repo/tb/asm/addi_test.s b/repo/tb/asm/addi_test.s new file mode 100644 index 0000000..1c3bfa7 --- /dev/null +++ b/repo/tb/asm/addi_test.s @@ -0,0 +1,14 @@ +# Add an immediate value to a register and store the result in rd + +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 + addi a0, a0, 3 # a0 = 5 + 3 + j finish + +# a0 = 8 \ No newline at end of file diff --git a/repo/tb/asm/and_test.s b/repo/tb/asm/and_test.s new file mode 100644 index 0000000..4787eff --- /dev/null +++ b/repo/tb/asm/and_test.s @@ -0,0 +1,15 @@ +# Perform bitwise AND of two registers and store the result in rd + +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 # t0 = 5 (binary 0101) + li t1, 3 # t1 = 3 (binary 0011) + and a0, t0, t1 # a0 = t0 & t1 + j finish + +# a0 = 1 \ No newline at end of file diff --git a/repo/tb/asm/andi_test.s b/repo/tb/asm/andi_test.s new file mode 100644 index 0000000..6aa0d93 --- /dev/null +++ b/repo/tb/asm/andi_test.s @@ -0,0 +1,14 @@ +# Perform bitwise AND of a register with an immediate value and store the result in rd + +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 # a0 = 5 (binary 0101) + andi a0, a0, 3 # a0 = a0 & 3 + j finish + +# a0 = 1 \ No newline at end of file diff --git a/repo/tb/asm/auipc_test.s b/repo/tb/asm/auipc_test.s new file mode 100644 index 0000000..ac4415d --- /dev/null +++ b/repo/tb/asm/auipc_test.s @@ -0,0 +1,16 @@ +# Add the upper 20 bits of an immediate to the PC and store the result in rd + +.text +.globl main + +finish: + bne a0, zero, finish # loop forever + +main: + li a0, 1 # wrong output value + auipc t0, %hi(correct) + +.org 8192 +correct: + li a0, 2 # correct output value + j finish diff --git a/repo/tb/asm/beq_test.s b/repo/tb/asm/beq_test.s new file mode 100644 index 0000000..48e71b6 --- /dev/null +++ b/repo/tb/asm/beq_test.s @@ -0,0 +1,22 @@ +# Branch to a label if two registers are equal + +.text +.globl main + +main: + li t0, 5 # Set a0 to 5 + li t1, 5 # Set a1 to 5 (equal to a0) + beq t0, t1, pass # Branch to pass if a0 equals a1 + + j fail # If not equal, jump to fail + +pass: + li a0, 1 # Set a0 to 1 for success + j finish # Loop to check result + +fail: + li a0, 0 # Set a0 to 0 for failure + j finish # Loop to check result + +finish: + j finish # Loop forever \ No newline at end of file diff --git a/repo/tb/asm/bge_test.s b/repo/tb/asm/bge_test.s new file mode 100644 index 0000000..0868535 --- /dev/null +++ b/repo/tb/asm/bge_test.s @@ -0,0 +1,21 @@ +# Branch to a label if the first register is greater than or equal to the second register + +.text +.globl main + +main: + li t0, 5 + li t1, 5 + bge t0, t1, pass + j fail + +pass: + li a0, 1 + j finish + +fail: + li a0, 0 + j finish + +finish: + j finish \ No newline at end of file diff --git a/repo/tb/asm/bgeu_test.s b/repo/tb/asm/bgeu_test.s new file mode 100644 index 0000000..b1424f7 --- /dev/null +++ b/repo/tb/asm/bgeu_test.s @@ -0,0 +1,18 @@ +# Branch to a label if the first register is greater than or equal to the second register (unsigned comparison) + +.text +.globl main + +main: + li t0, 1 # 1 in both signed and unsigned + li t1, 0xFFFFFFFF # -1 in signed, but large in unsigned + bgeu t0, t1, fail # Should not branch because 1 !>= 0xFFFFFFFF in unsigned + li a0, 1 # If we don't branch to fail, it's a success + j finish + +fail: + li a0, 0 + j finish + +finish: + j finish \ No newline at end of file diff --git a/repo/tb/asm/blt_test.s b/repo/tb/asm/blt_test.s new file mode 100644 index 0000000..54fa328 --- /dev/null +++ b/repo/tb/asm/blt_test.s @@ -0,0 +1,21 @@ +# Branch to a label if the first register is less than the second register + +.text +.globl main + +main: + li t0, 3 + li t1, 5 + blt t0, t1, pass + j fail + +pass: + li a0, 1 + j finish + +fail: + li a0, 0 + j finish + +finish: + j finish \ No newline at end of file diff --git a/repo/tb/asm/bltu_test.s b/repo/tb/asm/bltu_test.s new file mode 100644 index 0000000..bc6ee8f --- /dev/null +++ b/repo/tb/asm/bltu_test.s @@ -0,0 +1,21 @@ +# Branch to a label if the first register is less than the second register (unsigned comparison) + +.text +.globl main + +main: + li t0, 0xFFFFFFFF # -1 in signed, but large in unsigned + li t1, 1 # 1 in both signed and unsigned + bltu t0, t1, fail # Should branch because 0xFFFFFFFF < 1 in unsigned comparison + j pass # If we don't branch, we fail the test + +pass: + li a0, 1 # Set to 1 for pass + j finish + +fail: + li a0, 0 # Set to 0 for fail + j finish + +finish: + j finish \ No newline at end of file diff --git a/repo/tb/asm/bne_test.s b/repo/tb/asm/bne_test.s new file mode 100644 index 0000000..42828e8 --- /dev/null +++ b/repo/tb/asm/bne_test.s @@ -0,0 +1,21 @@ +# Branch to a label if two registers are not equal + +.text +.globl main + +main: + li t0, 5 + li t1, 6 + bne t0, t1, pass + j fail + +pass: + li a0, 1 + j finish + +fail: + li a0, 0 + j finish + +finish: + j finish \ No newline at end of file diff --git a/repo/tb/asm/jal_test.s b/repo/tb/asm/jal_test.s new file mode 100644 index 0000000..bf5aad5 --- /dev/null +++ b/repo/tb/asm/jal_test.s @@ -0,0 +1,17 @@ +.text +.globl main + +finish: + bne a0, zero, finish # loop forever (if a0 != 0) + +main: + li a0, 1 # Wrong output value + jal ra, correct # Jump to 'correct' and save return address in 'ra' + + # This line should not be executed if 'correct' is reached + li a0, 99 # Wrong output value + +.org 8192 +correct: + li a0, 2 # Correct output value + j finish \ No newline at end of file diff --git a/repo/tb/asm/jalr_test.s b/repo/tb/asm/jalr_test.s new file mode 100644 index 0000000..55cb901 --- /dev/null +++ b/repo/tb/asm/jalr_test.s @@ -0,0 +1,17 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, 1 # Wrong output value + jal ra, correct # Jump to 'correct' and save return address in 'ra' + + # This line should not be executed if 'correct' is reached + li a0, 99 # Wrong output value + +.org 8192 +correct: + li a0, 2 # Correct output value + j finish \ No newline at end of file diff --git a/repo/tb/asm/lb_test.s b/repo/tb/asm/lb_test.s new file mode 100644 index 0000000..7693f7e --- /dev/null +++ b/repo/tb/asm/lb_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li t0, 0x7F # 0x7F is the highest positive byte value, no sign extension + sb t0, 1(sp) + + lb a0, 1(sp) + j finish \ No newline at end of file diff --git a/repo/tb/asm/lbu_test.s b/repo/tb/asm/lbu_test.s new file mode 100644 index 0000000..da49ec9 --- /dev/null +++ b/repo/tb/asm/lbu_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s in binary (0xFF for byte) + sb a0, 0(sp) + + lbu a0, 0(sp) # Load byte unsigned back into a0, zero-extended + j finish \ No newline at end of file diff --git a/repo/tb/asm/lh_test.s b/repo/tb/asm/lh_test.s new file mode 100644 index 0000000..98ac3d7 --- /dev/null +++ b/repo/tb/asm/lh_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li t0, 0x7FFF # 0x7FFF is the highest positive halfword value, no sign extension + sh t0, 2(sp) + + lh a0, 2(sp) + j finish \ No newline at end of file diff --git a/repo/tb/asm/lhu_test.s b/repo/tb/asm/lhu_test.s new file mode 100644 index 0000000..e1d7902 --- /dev/null +++ b/repo/tb/asm/lhu_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s in binary (0xFFFF for halfword) + sh a0, 0(sp) + + lhu a0, 0(sp) # Load halfword unsigned back into a0, zero-extended + j finish \ No newline at end of file diff --git a/repo/tb/asm/lui_test.s b/repo/tb/asm/lui_test.s new file mode 100644 index 0000000..ee7803d --- /dev/null +++ b/repo/tb/asm/lui_test.s @@ -0,0 +1,6 @@ +.text +.globl main +main: + lui t0, 0b10101010101010101010 # load top 20 bits + addi t0, t0, -1 # load bottom 12 bits + add a0, zero, t0 # output = 0b10101010101010101010 - 1 \ No newline at end of file diff --git a/repo/tb/asm/lw_test.s b/repo/tb/asm/lw_test.s new file mode 100644 index 0000000..e3b11c1 --- /dev/null +++ b/repo/tb/asm/lw_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s in binary (0xFFFFFFFF) + sw a0, 0(sp) + + lw a0, 0(sp) + j finish \ No newline at end of file diff --git a/repo/tb/asm/or_test.s b/repo/tb/asm/or_test.s new file mode 100644 index 0000000..35ff141 --- /dev/null +++ b/repo/tb/asm/or_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 3 + or a0, t0, t1 # a0 = t0 | t1 + j finish \ No newline at end of file diff --git a/repo/tb/asm/ori_test.s b/repo/tb/asm/ori_test.s new file mode 100644 index 0000000..59c99ad --- /dev/null +++ b/repo/tb/asm/ori_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 + ori a0, a0, 3 # a0 = 5 | 3 + j finish \ No newline at end of file diff --git a/repo/tb/asm/sb_test.s b/repo/tb/asm/sb_test.s new file mode 100644 index 0000000..7ffb56c --- /dev/null +++ b/repo/tb/asm/sb_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s in binary + sb a0, 0(sp) # Store byte on stack + + lw a0, 0(sp) # Load word to check only lower byte + j finish # Loop to check result \ No newline at end of file diff --git a/repo/tb/asm/sh_test.s b/repo/tb/asm/sh_test.s new file mode 100644 index 0000000..d22d35f --- /dev/null +++ b/repo/tb/asm/sh_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s in binary + sh a0, 0(sp) # Store halfword on stack + + lw a0, 0(sp) # Load word to check only lower halfword + j finish # Loop to check result \ No newline at end of file diff --git a/repo/tb/asm/sll_test.s b/repo/tb/asm/sll_test.s new file mode 100644 index 0000000..1972b42 --- /dev/null +++ b/repo/tb/asm/sll_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 2 + sll a0, t0, t1 # a0 = t0 << t1 + j finish \ No newline at end of file diff --git a/repo/tb/asm/slli_test.s b/repo/tb/asm/slli_test.s new file mode 100644 index 0000000..f65a600 --- /dev/null +++ b/repo/tb/asm/slli_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 + slli a0, a0, 2 # a0 = 5 << 2 + j finish \ No newline at end of file diff --git a/repo/tb/asm/slt_test.s b/repo/tb/asm/slt_test.s new file mode 100644 index 0000000..41649c0 --- /dev/null +++ b/repo/tb/asm/slt_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 10 + slt a0, t0, t1 # a0 = (t0 < t1) ? 1 : 0 + j finish \ No newline at end of file diff --git a/repo/tb/asm/slti_test.s b/repo/tb/asm/slti_test.s new file mode 100644 index 0000000..2af08d4 --- /dev/null +++ b/repo/tb/asm/slti_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 + slti a0, a0, 10 # a0 = (5 < 10) ? 1 : 0 + j finish \ No newline at end of file diff --git a/repo/tb/asm/sltiu_test.s b/repo/tb/asm/sltiu_test.s new file mode 100644 index 0000000..9230701 --- /dev/null +++ b/repo/tb/asm/sltiu_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 0xFFFFFFFF # -1 in signed, largest unsigned 32-bit number + sltiu a0, a0, 1 # a0 = (0xFFFFFFFF < 1) in unsigned compare ? 1 : 0 + j finish \ No newline at end of file diff --git a/repo/tb/asm/sltu_test.s b/repo/tb/asm/sltu_test.s new file mode 100644 index 0000000..2c3a08c --- /dev/null +++ b/repo/tb/asm/sltu_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 0xFFFFFFFF # -1 in signed, largest unsigned 32-bit number + li t1, 1 + sltu a0, t0, t1 # a0 = (t0 < t1) in unsigned compare ? 1 : 0 + j finish \ No newline at end of file diff --git a/repo/tb/asm/sra_test.s b/repo/tb/asm/sra_test.s new file mode 100644 index 0000000..5e214f7 --- /dev/null +++ b/repo/tb/asm/sra_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, -8 # -8 in binary: 1111...1000 + li t1, 2 + sra a0, t0, t1 # a0 = t0 >> t1 (arithmetic, preserves sign) + j finish \ No newline at end of file diff --git a/repo/tb/asm/srai_test.s b/repo/tb/asm/srai_test.s new file mode 100644 index 0000000..d9e81d0 --- /dev/null +++ b/repo/tb/asm/srai_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, -8 # -8 in binary: 1111...1000 + srai a0, a0, 2 # a0 = -8 >> 2 (arithmetic, preserves sign) + j finish \ No newline at end of file diff --git a/repo/tb/asm/srl_test.s b/repo/tb/asm/srl_test.s new file mode 100644 index 0000000..915d902 --- /dev/null +++ b/repo/tb/asm/srl_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, -8 # -8 in binary: 1111...1000 + li t1, 2 + srl a0, t0, t1 # a0 = t0 >> t1 (logical, should not sign extend) + j finish \ No newline at end of file diff --git a/repo/tb/asm/srli_test.s b/repo/tb/asm/srli_test.s new file mode 100644 index 0000000..23ab1f7 --- /dev/null +++ b/repo/tb/asm/srli_test.s @@ -0,0 +1,10 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, -8 # -8 in binary: 1111...1000 (assuming 32-bit) + srli a0, a0, 2 # a0 = -8 >> 2 (logical, should not sign extend) + j finish \ No newline at end of file diff --git a/repo/tb/asm/sub_test.s b/repo/tb/asm/sub_test.s new file mode 100644 index 0000000..d5ed649 --- /dev/null +++ b/repo/tb/asm/sub_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 3 + sub a0, t0, t1 # a0 = t0 - t1 + j finish \ No newline at end of file diff --git a/repo/tb/asm/sw_test.s b/repo/tb/asm/sw_test.s new file mode 100644 index 0000000..bd6215e --- /dev/null +++ b/repo/tb/asm/sw_test.s @@ -0,0 +1,12 @@ +.text +.globl main + +finish: + bne a0, zero, finish # Loop forever if a0 is not zero + +main: + li a0, -1 # -1 is all 1s + sw a0, 0(sp) # Store word + + lw a0, 0(sp) # Load word + j finish # Loop to check result \ No newline at end of file diff --git a/repo/tb/asm/xor_test.s b/repo/tb/asm/xor_test.s new file mode 100644 index 0000000..755ed1c --- /dev/null +++ b/repo/tb/asm/xor_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li t0, 5 + li t1, 3 + xor a0, t0, t1 # a0 = t0 ^ t1 + j finish \ No newline at end of file diff --git a/repo/tb/asm/xori_test.s b/repo/tb/asm/xori_test.s new file mode 100644 index 0000000..3c4accb --- /dev/null +++ b/repo/tb/asm/xori_test.s @@ -0,0 +1,11 @@ +.text +.globl main + +finish: + bne a0, zero, finish + +main: + li a0, 5 + xori a0, a0, 3 # a0 = 5 ^ 3 + j finish + \ No newline at end of file From 7d33dd6bd4a51c0ad29038eaf1d37fb9579a2b1b Mon Sep 17 00:00:00 2001 From: Preet Harquissandas Date: Fri, 28 Nov 2025 12:21:52 +0000 Subject: [PATCH 62/65] Completed the verify.cpp and testbench for each instruction --- repo/tb/asm/jal_test.s | 2 + repo/tb/asm/jalr_test.s | 2 + repo/tb/asm/lb_test.s | 2 + repo/tb/asm/lbu_test.s | 2 + repo/tb/asm/lh_test.s | 2 + repo/tb/asm/lhu_test.s | 2 + repo/tb/asm/lui_test.s | 2 + repo/tb/asm/lw_test.s | 2 + repo/tb/asm/or_test.s | 2 + repo/tb/asm/ori_test.s | 2 + repo/tb/asm/sb_test.s | 2 + repo/tb/asm/sh_test.s | 2 + repo/tb/asm/sll_test.s | 2 + repo/tb/asm/slli_test.s | 2 + repo/tb/asm/slt_test.s | 2 + repo/tb/asm/slti_test.s | 2 + repo/tb/asm/sltiu_test.s | 2 + repo/tb/asm/sltu_test.s | 2 + repo/tb/asm/sra_test.s | 2 + repo/tb/asm/srai_test.s | 2 + repo/tb/asm/srl_test.s | 2 + repo/tb/asm/srli_test.s | 2 + repo/tb/asm/sub_test.s | 2 + repo/tb/asm/sw_test.s | 2 + repo/tb/asm/xor_test.s | 2 + repo/tb/asm/xori_test.s | 2 + repo/tb/tests/verify.cpp | 267 +++++++++++++++++++++++++++++++++++++++ 27 files changed, 319 insertions(+) diff --git a/repo/tb/asm/jal_test.s b/repo/tb/asm/jal_test.s index bf5aad5..8210b72 100644 --- a/repo/tb/asm/jal_test.s +++ b/repo/tb/asm/jal_test.s @@ -1,3 +1,5 @@ +# Jump to a label and store the return address in rd (used for function calls) + .text .globl main diff --git a/repo/tb/asm/jalr_test.s b/repo/tb/asm/jalr_test.s index 55cb901..f88592a 100644 --- a/repo/tb/asm/jalr_test.s +++ b/repo/tb/asm/jalr_test.s @@ -1,3 +1,5 @@ +# Jump to an address in a register and store the return address in rd (used for indirect function calls) + .text .globl main diff --git a/repo/tb/asm/lb_test.s b/repo/tb/asm/lb_test.s index 7693f7e..7573815 100644 --- a/repo/tb/asm/lb_test.s +++ b/repo/tb/asm/lb_test.s @@ -1,3 +1,5 @@ +# Load a byte from memory into a register and sign-extend it to 32 bits + .text .globl main diff --git a/repo/tb/asm/lbu_test.s b/repo/tb/asm/lbu_test.s index da49ec9..8c4280e 100644 --- a/repo/tb/asm/lbu_test.s +++ b/repo/tb/asm/lbu_test.s @@ -1,3 +1,5 @@ +# Load a byte from memory into a register and zero-extend it to 32 bits + .text .globl main diff --git a/repo/tb/asm/lh_test.s b/repo/tb/asm/lh_test.s index 98ac3d7..895832a 100644 --- a/repo/tb/asm/lh_test.s +++ b/repo/tb/asm/lh_test.s @@ -1,3 +1,5 @@ +# Load a 16-bit halfword from memory into a register and sign-extend it to 32 bits + .text .globl main diff --git a/repo/tb/asm/lhu_test.s b/repo/tb/asm/lhu_test.s index e1d7902..d864ed3 100644 --- a/repo/tb/asm/lhu_test.s +++ b/repo/tb/asm/lhu_test.s @@ -1,3 +1,5 @@ +# Load a 16-bit halfword from memory into a register and zero-extend it to 32 bits + .text .globl main diff --git a/repo/tb/asm/lui_test.s b/repo/tb/asm/lui_test.s index ee7803d..2629ce1 100644 --- a/repo/tb/asm/lui_test.s +++ b/repo/tb/asm/lui_test.s @@ -1,3 +1,5 @@ +# Load a 20-bit immediate into the upper 20 bits of a register, setting the lower 12 bits to zero + .text .globl main main: diff --git a/repo/tb/asm/lw_test.s b/repo/tb/asm/lw_test.s index e3b11c1..aca16a0 100644 --- a/repo/tb/asm/lw_test.s +++ b/repo/tb/asm/lw_test.s @@ -1,3 +1,5 @@ +# Load a 32-bit word from memory into a register + .text .globl main diff --git a/repo/tb/asm/or_test.s b/repo/tb/asm/or_test.s index 35ff141..40d38c6 100644 --- a/repo/tb/asm/or_test.s +++ b/repo/tb/asm/or_test.s @@ -1,3 +1,5 @@ +# Perform bitwise OR of two registers and store the result in rd + .text .globl main diff --git a/repo/tb/asm/ori_test.s b/repo/tb/asm/ori_test.s index 59c99ad..6899f16 100644 --- a/repo/tb/asm/ori_test.s +++ b/repo/tb/asm/ori_test.s @@ -1,3 +1,5 @@ +# Perform bitwise OR of a register with an immediate value and store the result in rd + .text .globl main diff --git a/repo/tb/asm/sb_test.s b/repo/tb/asm/sb_test.s index 7ffb56c..9bc2f29 100644 --- a/repo/tb/asm/sb_test.s +++ b/repo/tb/asm/sb_test.s @@ -1,3 +1,5 @@ +# Store the least significant byte of a register into memory + .text .globl main diff --git a/repo/tb/asm/sh_test.s b/repo/tb/asm/sh_test.s index d22d35f..963f28c 100644 --- a/repo/tb/asm/sh_test.s +++ b/repo/tb/asm/sh_test.s @@ -1,3 +1,5 @@ +# Store the least significant 16 bits (halfword) of a register into memory + .text .globl main diff --git a/repo/tb/asm/sll_test.s b/repo/tb/asm/sll_test.s index 1972b42..2a69231 100644 --- a/repo/tb/asm/sll_test.s +++ b/repo/tb/asm/sll_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register left by a specified amount and store the result in rd + .text .globl main diff --git a/repo/tb/asm/slli_test.s b/repo/tb/asm/slli_test.s index f65a600..302b79f 100644 --- a/repo/tb/asm/slli_test.s +++ b/repo/tb/asm/slli_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register left by an immediate value and store the result in rd + .text .globl main diff --git a/repo/tb/asm/slt_test.s b/repo/tb/asm/slt_test.s index 41649c0..316579a 100644 --- a/repo/tb/asm/slt_test.s +++ b/repo/tb/asm/slt_test.s @@ -1,3 +1,5 @@ +# Set rd to 1 if the first register is less than the second register (signed comparison), otherwise set rd to 0 + .text .globl main diff --git a/repo/tb/asm/slti_test.s b/repo/tb/asm/slti_test.s index 2af08d4..1bd407c 100644 --- a/repo/tb/asm/slti_test.s +++ b/repo/tb/asm/slti_test.s @@ -1,3 +1,5 @@ +# Set rd to 1 if the register is less than an immediate value (signed comparison), otherwise set rd to 0 + .text .globl main diff --git a/repo/tb/asm/sltiu_test.s b/repo/tb/asm/sltiu_test.s index 9230701..128896e 100644 --- a/repo/tb/asm/sltiu_test.s +++ b/repo/tb/asm/sltiu_test.s @@ -1,3 +1,5 @@ +# Set rd to 1 if the register is less than an immediate value (unsigned comparison), otherwise set rd to 0 + .text .globl main diff --git a/repo/tb/asm/sltu_test.s b/repo/tb/asm/sltu_test.s index 2c3a08c..bbf7099 100644 --- a/repo/tb/asm/sltu_test.s +++ b/repo/tb/asm/sltu_test.s @@ -1,3 +1,5 @@ +# Set rd to 1 if the first register is less than the second register (unsigned comparison), otherwise set rd to 0 + .text .globl main diff --git a/repo/tb/asm/sra_test.s b/repo/tb/asm/sra_test.s index 5e214f7..8703b2a 100644 --- a/repo/tb/asm/sra_test.s +++ b/repo/tb/asm/sra_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register right arithmetically (preserving the sign) and store the result in rd + .text .globl main diff --git a/repo/tb/asm/srai_test.s b/repo/tb/asm/srai_test.s index d9e81d0..cca023d 100644 --- a/repo/tb/asm/srai_test.s +++ b/repo/tb/asm/srai_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register right arithmetically by an immediate value (preserving the sign) and store the result in rd + .text .globl main diff --git a/repo/tb/asm/srl_test.s b/repo/tb/asm/srl_test.s index 915d902..aa82b13 100644 --- a/repo/tb/asm/srl_test.s +++ b/repo/tb/asm/srl_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register right logically (fill with zeros) and store the result in rd + .text .globl main diff --git a/repo/tb/asm/srli_test.s b/repo/tb/asm/srli_test.s index 23ab1f7..75f2357 100644 --- a/repo/tb/asm/srli_test.s +++ b/repo/tb/asm/srli_test.s @@ -1,3 +1,5 @@ +# Shift the bits in a register right logically by an immediate value (fill with zeros) and store the result in rd + .text .globl main diff --git a/repo/tb/asm/sub_test.s b/repo/tb/asm/sub_test.s index d5ed649..ebc81eb 100644 --- a/repo/tb/asm/sub_test.s +++ b/repo/tb/asm/sub_test.s @@ -1,3 +1,5 @@ +# Subtract the second register from the first register and store the result in rd + .text .globl main diff --git a/repo/tb/asm/sw_test.s b/repo/tb/asm/sw_test.s index bd6215e..caa4e77 100644 --- a/repo/tb/asm/sw_test.s +++ b/repo/tb/asm/sw_test.s @@ -1,3 +1,5 @@ +# Store a 32-bit word from a register into memory + .text .globl main diff --git a/repo/tb/asm/xor_test.s b/repo/tb/asm/xor_test.s index 755ed1c..064878f 100644 --- a/repo/tb/asm/xor_test.s +++ b/repo/tb/asm/xor_test.s @@ -1,3 +1,5 @@ +# Perform bitwise XOR of two registers and store the result in rd + .text .globl main diff --git a/repo/tb/asm/xori_test.s b/repo/tb/asm/xori_test.s index 3c4accb..e4ca50a 100644 --- a/repo/tb/asm/xori_test.s +++ b/repo/tb/asm/xori_test.s @@ -1,3 +1,5 @@ +# Perform bitwise XOR of a register with an immediate value and store the result in rd + .text .globl main diff --git a/repo/tb/tests/verify.cpp b/repo/tb/tests/verify.cpp index ba210ae..78e2323 100644 --- a/repo/tb/tests/verify.cpp +++ b/repo/tb/tests/verify.cpp @@ -46,6 +46,273 @@ TEST_F(CpuTestbench, TestPdf) EXPECT_EQ(top_->a0, 15363); } +/* Instruction Coverage */ + +// Upper and Jump/Link Instructions +TEST_F(CpuTestbench, TestLUI){ + setupTest("lui_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, (0b1010'1010'1010'1010'1010'0000'0000'0000) - 1); +} + +TEST_F(CpuTestbench, TestAUIPC){ + setupTest("auipc_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 2); +} + +TEST_F(CpuTestbench, TestJAL){ + setupTest("jal_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 2); +} + +TEST_F(CpuTestbench, TestJALR){ +setupTest("jalr_test"); +initSimulation(); +runSimulation(CYCLES); +EXPECT_EQ(top_->a0, 2); +} + +// PC-relative Branch Instructions +TEST_F(CpuTestbench, TestBEQ){ + setupTest("beq_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +TEST_F(CpuTestbench, TestBNE){ + setupTest("bne_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +TEST_F(CpuTestbench, TestBLT){ + setupTest("blt_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +TEST_F(CpuTestbench, TestBGE){ + setupTest("bge_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +TEST_F(CpuTestbench, TestBLTU){ + setupTest("bltu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +TEST_F(CpuTestbench, TestBGEU){ + setupTest("bgeu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); +} + +// Load Instructions +TEST_F(CpuTestbench, TestLB){ + setupTest("lb_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0x7F); +} + +TEST_F(CpuTestbench, TestLH){ + setupTest("lh_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0x7FFF); +} + +TEST_F(CpuTestbench, TestLW){ + setupTest("lw_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, -1); +} + +TEST_F(CpuTestbench, TestLBU){ + setupTest("lbu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0xFF); +} + +TEST_F(CpuTestbench, TestLHU){ + setupTest("lhu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0xFFFF); +} + +// Store Instructions +TEST_F(CpuTestbench, TestSB){ + setupTest("sb_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0xFF); +} + +TEST_F(CpuTestbench, TestSH){ + setupTest("sh_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0xFFFF); +} + +TEST_F(CpuTestbench, TestSW){ + setupTest("sw_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, -1); +} + +// Immediate Instructions +TEST_F(CpuTestbench, TestADDI){ + setupTest("addi_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 8); // 5 + 3 +} + +TEST_F(CpuTestbench, TestSLTI){ + setupTest("slti_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); // 5 < 10, so true (1) +} + +TEST_F(CpuTestbench, TestSLTIU){ + setupTest("sltiu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0); // 0xFFFFFFFF < 1 in unsigned compare, so true (1) +} + +TEST_F(CpuTestbench, TestXORI){ + setupTest("xori_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 6); // 5 ^ 3 = 6 +} + +TEST_F(CpuTestbench, TestORI){ + setupTest("ori_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 7); // 5 | 3 = 7 +} + +TEST_F(CpuTestbench, TestANDI){ + setupTest("andi_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); // 5 & 3 = 1 +} + +TEST_F(CpuTestbench, TestSLLI){ + setupTest("slli_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 20); // 5 << 2 = 20 +} + +TEST_F(CpuTestbench, TestSRLI){ + setupTest("srli_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, (uint32_t) -8 >> 2); +} + +TEST_F(CpuTestbench, TestSRAI){ + setupTest("srai_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, -2); // -8 >> 2 = -2 (arithmetic, preserves sign) +} + +// Register-Register Instructions +TEST_F(CpuTestbench, TestADD){ + setupTest("add_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 8); // 5 + 3 +} + +TEST_F(CpuTestbench, TestSUB){ + setupTest("sub_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 2); // 5 - 3 +} + +TEST_F(CpuTestbench, TestXOR){ + setupTest("xor_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 6); // 5 ^ 3 = 6 +} + +TEST_F(CpuTestbench, TestSLL){ + setupTest("sll_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 20); // 5 << 2 = 20 +} + +TEST_F(CpuTestbench, TestSLT){ + setupTest("slt_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); // 5 < 10, so true (1) +} + +TEST_F(CpuTestbench, TestSLTU){ + setupTest("sltu_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 0); // 0xFFFFFFFF is not less than 1 in unsigned compare, so false (0) +} + +TEST_F(CpuTestbench, TestSRL){ + setupTest("srl_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, (uint32_t) -8 >> 2); +} + +TEST_F(CpuTestbench, TestSRA){ + setupTest("sra_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, -2); // -8 >> 2 = -2 (arithmetic, preserves sign) +} + +TEST_F(CpuTestbench, TestOR){ + setupTest("or_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 7); // 5 | 3 = 7 +} + +TEST_F(CpuTestbench, TestAND){ + setupTest("and_test"); + initSimulation(); + runSimulation(CYCLES); + EXPECT_EQ(top_->a0, 1); // 5 & 3 = 1 +} + int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); From 0273080ba668f37c0dea022ad436a47443c3da8a Mon Sep 17 00:00:00 2001 From: minimish1 Date: Fri, 28 Nov 2025 12:31:26 +0000 Subject: [PATCH 63/65] Added fetch and decode pipeline registers --- .../decode_to_execute_register.sv | 69 +++++++++++++++++++ .../rtl_pipelined/fetch_to_decode_register.sv | 17 +++++ 2 files changed, 86 insertions(+) create mode 100644 repo/rtl_pipelined/decode_to_execute_register.sv create mode 100644 repo/rtl_pipelined/fetch_to_decode_register.sv diff --git a/repo/rtl_pipelined/decode_to_execute_register.sv b/repo/rtl_pipelined/decode_to_execute_register.sv new file mode 100644 index 0000000..4fe342e --- /dev/null +++ b/repo/rtl_pipelined/decode_to_execute_register.sv @@ -0,0 +1,69 @@ +module fetch_to_decode_register( + + input logic clk, + input logic RegWriteD, + input logic [1:0] ResultSrcD, + input logic MemWriteD, + input logic [1:0] JumpD, + input logic BranchD, + input logic [3:0] ALUControlD, + input logic ALUSrcAD, + input logic ALUSrcBD, + input logic [2:0] ImmSrcD, + input logic [2:0] AddressingControlD, + input logic [2:0] BranchTypeD, + + input logic [31:0] RD1D, + input logic [31:0] RD2D, + input logic [31:0] PCD, + input logic [4:0] Rs1D, + input logic [4:0] Rs2D, + input logic [4:0] RdD + input logic [31:0] ImmExtD, + input logic [31:0] PCPlus4D, + + output logic RegWriteE, + output logic [1:0] ResultSrcE, + output logic MemWriteE, + output logic [1:0] JumpE, + output logic BranchE, + output logic [3:0] ALUControlE, + output logic ALUSrcAE, + output logic ALUSrcBE, + output logic [2:0] ImmSrcE, + output logic [2:0] AddressingControlE, + output logic [2:0] BranchTypeE + + output logic [31:0] RD1E, + output logic [31:0] RD2E, + output logic [31:0] PCE, + output logic [4:0] Rs1E, + output logic [4:0] Rs2E, + output logic [4:0] RdE, + output logic [31:0] ImmExtE, + output logic [31:0] PCPlus4E +); + always_ff @(posedge clk) begin + RegWriteE <= RegWriteD; + ResultSrcE <= ResultSrcD; + MemWriteE <= MemWriteD; + JumpE <= JumpD; + BranchE <= BranchD; + ALUControlE <= ALUControlD; + ALUSrcAE <= ALUSrcAD; + ALUSrcBE <= ALUSrcBD; + ImmSrcE <= ImmSrcD; + AddressingControlE <= AddressingControlD; + BranchTypeE <= BranchTypeD; + + RD1E <= RD1D; + RD2E <= RD2D; + PCE <= PCD; + Rs1E <= Rs1D; + Rs2E <= Rs2D; + RdE <= RdD; + ImmExtE <= ImmExtD; + PCPlus4E <= PCPlus4D; + end + +endmodule diff --git a/repo/rtl_pipelined/fetch_to_decode_register.sv b/repo/rtl_pipelined/fetch_to_decode_register.sv new file mode 100644 index 0000000..456bc65 --- /dev/null +++ b/repo/rtl_pipelined/fetch_to_decode_register.sv @@ -0,0 +1,17 @@ +module fetch_to_decode_register( + + input logic clk, + input logic [31:0] PCF, + input logic [31:0] PCPlus4F, + input logic [31:0] InstrF, + output logic [31:0] PCD, + output logic [31:0] PCPlus4D, + output logic [31:0] InstrD +); + always_ff @(posedge clk) begin + PCD <= PCF; + PCPlus4D <= PCPlus4F; + InstrD <= InstrF; + end + +endmodule From ca6c35f253fc9cf9667f12faf30b7f71ab6b2638 Mon Sep 17 00:00:00 2001 From: Sicovo Date: Fri, 28 Nov 2025 12:38:39 +0000 Subject: [PATCH 64/65] doit/assemble --- repo/tb/assemble.sh | 32 +++++++++++++++++++++---------- repo/tb/doit.sh | 46 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/repo/tb/assemble.sh b/repo/tb/assemble.sh index f837ef3..1d3a146 100755 --- a/repo/tb/assemble.sh +++ b/repo/tb/assemble.sh @@ -1,14 +1,14 @@ #!/bin/bash -# Usage: ./assemble.sh +# Usage: ./compile.sh # Default vars SCRIPT_DIR=$(dirname "$(realpath "$0")") -output_file="$SCRIPT_DIR/program.hex" +output_file="../rtl/program.hex" # Handle terminal arguments if [[ $# -eq 0 ]]; then - echo "Usage: ./assemble.sh " + echo "Usage: ./compile.sh " exit 1 fi @@ -16,13 +16,25 @@ input_file=$1 basename=$(basename "$input_file" | sed 's/\.[^.]*$//') parent=$(dirname "$input_file") file_extension="${input_file##*.}" -LOG_DIR="$SCRIPT_DIR/test_out/$basename" -# Create output directory for disassembly, hex and waveforms -mkdir -p $LOG_DIR +# Compile the C code if necessary. +if [ $file_extension == "c" ]; then + # IMPORTANT: MUST NOT OPTIMIZE COMPILER! Or instructions could be lost! + riscv64-unknown-elf-gcc -S -g -O0 -fno-builtin -static \ + -march=rv32im -mabi=ilp32 \ + -o "${basename}.s" $input_file \ + -Wno-unused-result + # To get test case 24 passing, you need to modify ^^^^ + input_file="${basename}.s" +fi riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 \ - -o "a.out" "$input_file" + -o "a.out" "${input_file}" + +# Remove the .s file if necessary +if [ $file_extension == "c" ]; then + rm ${input_file} +fi riscv64-unknown-elf-ld -melf32lriscv \ -e 0xBFC00000 \ @@ -37,11 +49,11 @@ rm *dis 2>/dev/null # This generates a disassembly file # Memory in wrong place, but makes it easier to read (should be main = 0xbfc00000) riscv64-unknown-elf-objdump -f -d --source -m riscv \ - a.out.reloc > ${LOG_DIR}/program.dis + a.out.reloc > ${SCRIPT_DIR}/${basename}.dis # Formats into a hex file -od -v -An -t x1 "a.bin" | tr -s '\n' | awk '{$1=$1};1' > "${output_file}" +od -v -An -t x4 "a.bin" | sed 's/^[ \t]*//' > "${output_file}" rm "a.out.reloc" rm "a.out" -rm "a.bin" +rm "a.bin" \ No newline at end of file diff --git a/repo/tb/doit.sh b/repo/tb/doit.sh index a8ff86a..d7256e2 100755 --- a/repo/tb/doit.sh +++ b/repo/tb/doit.sh @@ -24,20 +24,37 @@ else files=("$@") fi -cd $SCRIPT_DIR +# Cleanup +rm -rf obj_dir -# Wipe previous test output -rm -rf test_out/* +cd $SCRIPT_DIR # Iterate through files for file in "${files[@]}"; do name=$(basename "$file" _tb.cpp | cut -f1 -d\-) - + # If verify.cpp -> we are testing the top module if [ $name == "verify.cpp" ]; then name="top" fi + + # # Automatically detect latest GoogleTest installation under Homebrew(macOS) + # GTEST_BASE=$(brew --prefix googletest 2>/dev/null) + # if [ -z "$GTEST_BASE" ]; then + # echo "${RED}Error: GoogleTest not found via Homebrew.${RESET}" + # exit 1 + # fi + + # --- GoogleTest for Ubuntu --- + # gtest headers and static libs installed via apt (libgtest-dev) + GTEST_INCLUDE="/usr/include" + GTEST_LIB="/usr/lib" + + # Construct include and lib paths dynamically + GTEST_INCLUDE="$GTEST_BASE/include" + GTEST_LIB="$GTEST_BASE/lib" + # Translate Verilog -> C++ including testbench verilator -Wall --trace \ -cc ${RTL_FOLDER}/${name}.sv \ @@ -45,23 +62,30 @@ for file in "${files[@]}"; do -y ${RTL_FOLDER} \ --prefix "Vdut" \ -o Vdut \ - -CFLAGS "-std=c++17 -isystem /opt/homebrew/Cellar/googletest/1.17.0/include"\ - -LDFLAGS "-L/opt/homebrew/Cellar/googletest/1.17.0/lib -lgtest -lgtest_main -lpthread" \ + -CFLAGS "-std=c++17 -isystem ${GTEST_INCLUDE}" \ + -LDFLAGS "-L${GTEST_LIB} -lgtest -lgtest_main -lpthread" # Build C++ project with automatically generated Makefile make -j -C obj_dir/ -f Vdut.mk - + # Run executable simulation file ./obj_dir/Vdut - + # Check if the test succeeded or not if [ $? -eq 0 ]; then ((passes++)) else ((fails++)) fi - + done -# Save obj_dir in test_out -mv obj_dir test_out/ +# Exit as a pass or fail (for CI purposes) +if [ $fails -eq 0 ]; then + echo "${GREEN}Success! All ${passes} test(s) passed!" + exit 0 +else + total=$((passes + fails)) + echo "${RED}Failure! Only ${passes} test(s) passed out of ${total}." + exit 1 +fi \ No newline at end of file From a6b4e07fa71c470ddfa21e6cbb8f2dc950e5da9a Mon Sep 17 00:00:00 2001 From: ojas-parikh Date: Sat, 29 Nov 2025 19:45:52 +0000 Subject: [PATCH 65/65] trying to fix testing for mac modified: ../rtl/control.sv --- repo/rtl/control.sv | 2 +- repo/rtl/instr_mem.sv | 4 +- repo/tb/assemble.sh | 77 +++++++---- repo/tb/doit.sh | 82 ++++++------ repo/tb/tests/verify.cpp | 273 +-------------------------------------- 5 files changed, 95 insertions(+), 343 deletions(-) diff --git a/repo/rtl/control.sv b/repo/rtl/control.sv index 586e1b3..b9d60ee 100644 --- a/repo/rtl/control.sv +++ b/repo/rtl/control.sv @@ -24,7 +24,7 @@ module control( // assign opcode = Instr[6:0]; // assign funct3 = Instr[14:12]; // assign funct7 = Instr[31:25]; - assign AddressingControl = funct3; // store width + // assign AddressingControl = funct3; // store width always_comb begin // Default values to prevent latches diff --git a/repo/rtl/instr_mem.sv b/repo/rtl/instr_mem.sv index 54dbf7a..e66f08e 100644 --- a/repo/rtl/instr_mem.sv +++ b/repo/rtl/instr_mem.sv @@ -6,7 +6,7 @@ module instr_mem ( ); // instruction memory array: 256 instructions, each 32 bits wide - logic [31:0] rom_array [0:255]; + logic [31:0] rom_array [0:4095]; // preload instructions from an external hex file at simulation start initial begin @@ -14,5 +14,5 @@ module instr_mem ( end // output the instruction corresponding to the PC address - assign RD = rom_array[A[9:2]]; + assign RD = rom_array[A[13:2]]; endmodule diff --git a/repo/tb/assemble.sh b/repo/tb/assemble.sh index 1d3a146..ffba434 100755 --- a/repo/tb/assemble.sh +++ b/repo/tb/assemble.sh @@ -1,40 +1,40 @@ #!/bin/bash -# Usage: ./compile.sh +# Usage: ./assemble.sh # Default vars -SCRIPT_DIR=$(dirname "$(realpath "$0")") -output_file="../rtl/program.hex" +SCRIPT_DIR=$(dirname "$(realpath "$0")") #SCRIPT_DIR is variable, $ accesses value of variable, $0 is the name of the script executing, realpath gives absolute path of this file, dirname get rid of file portion and gives directory part only +output_file="$SCRIPT_DIR/program.hex" #giving path of output file +PROGRAM_FOLDER=$(realpath "$SCRIPT_DIR/../rtl/program.hex") # Handle terminal arguments -if [[ $# -eq 0 ]]; then - echo "Usage: ./compile.sh " +if [[ $# -eq 0 ]]; then # $# gives number of arguments, this checks if number of arguments in command is equal to zero if so we need to tell user to give more arguments + echo "Usage: ./assemble.sh " exit 1 fi -input_file=$1 -basename=$(basename "$input_file" | sed 's/\.[^.]*$//') -parent=$(dirname "$input_file") -file_extension="${input_file##*.}" - -# Compile the C code if necessary. -if [ $file_extension == "c" ]; then - # IMPORTANT: MUST NOT OPTIMIZE COMPILER! Or instructions could be lost! - riscv64-unknown-elf-gcc -S -g -O0 -fno-builtin -static \ - -march=rv32im -mabi=ilp32 \ - -o "${basename}.s" $input_file \ - -Wno-unused-result - # To get test case 24 passing, you need to modify ^^^^ - input_file="${basename}.s" -fi +input_file=$1 #$1 is the first argument sent to the script +basename=$(basename "$input_file" | sed 's/\.[^.]*$//') #basename removes anything including and past the last slash, here we have sed which is doing a substitution hence s, \.[^.]*$ are replaced with a / +parent=$(dirname "$input_file") +file_extension="${input_file##*.}" #${input_file##*.} is the value of input_file's path with only whats after the . in the path kept and the rest removed +LOG_DIR="$SCRIPT_DIR/test_out/$basename" #LOG_DIR has value of script_dir followed by /test_out /value of basename -riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 \ - -o "a.out" "${input_file}" +# Create output directory for disassembly, hex and waveforms +mkdir -p $LOG_DIR #makes a directory called value of LOG_DIR, with any non-existent intermediate directories created as necessary -# Remove the .s file if necessary -if [ $file_extension == "c" ]; then - rm ${input_file} -fi +#risc64-unknown-elf-as is an assembler for riscv +#-march=rv32im sets the ISA to be used in this case / the instructions that will be accepted +#-mabi=ilp32 sets the ABI (application binary interface) which defines the purpose of specific registers, its set to ILP32 here +#riscv64-unknown-elf-ld is the gnu linker it links together different files to create an executable file +# -o "a.out" "input_file" says the output of the assembler will be stored in the file a.out and the source code file is $input_file +#the linker will output to a.out.reloc with the source file being a.out, Ttext specifies the text start address, melf32lriscv tells the linker +#the objects being linked are 32-bit RISC-V code +# a.out.reloc is the executable that can be loaded to the processor's instruction memory +#-e is the entry point, the address where the execution of the program begins - i.e. i think at what addresses to begin writing the output +#-O binary means we write the output file in binary format +#-j .text "a.out.reloc" "a.bin" copies only sections matching .text from a.out.reloc and writes it to a.bin +riscv64-unknown-elf-as -R -march=rv32im -mabi=ilp32 \ + -o "a.out" "$input_file" riscv64-unknown-elf-ld -melf32lriscv \ -e 0xBFC00000 \ @@ -45,15 +45,36 @@ riscv64-unknown-elf-objcopy -O binary \ -j .text "a.out.reloc" "a.bin" rm *dis 2>/dev/null +#rm means remove, 2> redirects stderr to the file /dev/null, dis stands for dissambler, not sure yet what this means # This generates a disassembly file # Memory in wrong place, but makes it easier to read (should be main = 0xbfc00000) + +#objdump displays information from object files +# -f means display summary infromation from the overall header of each of the objfile files +# -d means disassemble, it displays the assembler mnemonics for the machine instructions from the input file +# --source displays soruce code intermixed with disassembly +# -m specifies the architecture to use when disassembling the object files in this case riscv +# I believe we disassemble a.out.reloc and write this into the program.dis file riscv64-unknown-elf-objdump -f -d --source -m riscv \ - a.out.reloc > ${SCRIPT_DIR}/${basename}.dis + a.out.reloc > ${LOG_DIR}/program.dis # Formats into a hex file -od -v -An -t x4 "a.bin" | sed 's/^[ \t]*//' > "${output_file}" +# od -v means we will write all input data even if its duplicated, -An specifies the input address base as no address +#-t is to specify the output format, x1 means x = hexadecimal and 1 is the size specifier here its 1 which represents the byte count, so we will +#output the hex two hex digits at a time +#"a.bin" is the input file +#tr is translate +#awk scans through the input file for lines matching a set of specified paterns +#$1 denotes a field, with an input line being made up of fields seperated by white space or by the regular expressions +#awk '{$1=$1};1' rewrites a.bin removing whitespace and outputs it to ${output_file} +od -v -An -t x1 "a.bin" | tr -s '\n' | awk '{$1=$1};1' > "${PROGRAM_FOLDER}" +#od -v -An -t x1 "a.bin" | tr -s '\n' | awk '{$1=$1};1' > "${output_file}" + + + +#this part removes the following files rm "a.out.reloc" rm "a.out" rm "a.bin" \ No newline at end of file diff --git a/repo/tb/doit.sh b/repo/tb/doit.sh index d7256e2..b53bca1 100755 --- a/repo/tb/doit.sh +++ b/repo/tb/doit.sh @@ -4,56 +4,55 @@ # Usage: ./doit.sh # Constants -SCRIPT_DIR=$(dirname "$(realpath "$0")") -TEST_FOLDER=$(realpath "$SCRIPT_DIR/tests") -RTL_FOLDER=$(realpath "$SCRIPT_DIR/../rtl") -GREEN=$(tput setaf 2) -RED=$(tput setaf 1) -RESET=$(tput sgr0) +SCRIPT_DIR=$(dirname "$(realpath "$0")") #SCRIPT_DIR is the directory this file is in +TEST_FOLDER=$(realpath "$SCRIPT_DIR/tests") #test folder is a folder in this directory with name tests +RTL_FOLDER=$(realpath "$SCRIPT_DIR/../rtl") #RTL_FOLDER is set to a file called rtl from the directory above this one +GREEN=$(tput setaf 2) #setting terminal text colour to green +RED=$(tput setaf 1) #setting terminal text colour to red +RESET=$(tput sgr0) #resets terminal text to black and white # Variables passes=0 fails=0 # Handle terminal arguments +# $# gives number of arguments, this checks if number of arguments in command is equal to zero +# if so we run all the tests in the /test folder, so we set files equal to all the files ending in .cpp +# not sure how this works exactly is files a vector? if [[ $# -eq 0 ]]; then # If no arguments provided, run all tests files=(${TEST_FOLDER}/*.cpp) else # If arguments provided, use them as input files - files=("$@") + files=("$@") #$@ is an array of all arguments given to the script fi -# Cleanup -rm -rf obj_dir - +#change directory to this directory cd $SCRIPT_DIR +# Wipe previous test output +# -r rmoves file hierachy rooted in each file argument +# -f attempts to remove files regardless of file permissions +# test_out/* means we remove the files in test_out directory +rm -rf test_out/* + # Iterate through files for file in "${files[@]}"; do - name=$(basename "$file" _tb.cpp | cut -f1 -d\-) - + name=$(basename "$file" _tb.cpp | cut -f1 -d\-) #basename ouptuts the filename with _tb.cpp chopped of + #cut -f1 takes just column 1 with the delimiters being \ and - is this correct? + # If verify.cpp -> we are testing the top module if [ $name == "verify.cpp" ]; then name="top" fi - - # # Automatically detect latest GoogleTest installation under Homebrew(macOS) - # GTEST_BASE=$(brew --prefix googletest 2>/dev/null) - # if [ -z "$GTEST_BASE" ]; then - # echo "${RED}Error: GoogleTest not found via Homebrew.${RESET}" - # exit 1 - # fi - - # --- GoogleTest for Ubuntu --- - # gtest headers and static libs installed via apt (libgtest-dev) - GTEST_INCLUDE="/usr/include" - GTEST_LIB="/usr/lib" - - # Construct include and lib paths dynamically - GTEST_INCLUDE="$GTEST_BASE/include" - GTEST_LIB="$GTEST_BASE/lib" + #exe generates an executable + #y specifies the directory to search for the modules + #cc creates C++ output? + #prefix specifies name of top-level class and makefile + #name of final executable built if using --exe + #CFLAGS C++ compiler arguments for makefile + #LDFLAGS Linker pre-object arguments for makefile # Translate Verilog -> C++ including testbench verilator -Wall --trace \ @@ -62,30 +61,29 @@ for file in "${files[@]}"; do -y ${RTL_FOLDER} \ --prefix "Vdut" \ -o Vdut \ - -CFLAGS "-std=c++17 -isystem ${GTEST_INCLUDE}" \ - -LDFLAGS "-L${GTEST_LIB} -lgtest -lgtest_main -lpthread" + -CFLAGS "-std=c++17 -isystem /opt/homebrew/Cellar/googletest/1.17.0/include"\ + -LDFLAGS "-L/opt/homebrew/Cellar/googletest/1.17.0/lib -lgtest -lgtest_main -lpthread" \ # Build C++ project with automatically generated Makefile + #-j specifies number of jobs, no argument is given so there is no limit + #-C changes the directory to obj_dir/ in this case + #-f specifes the make file which is Vdut.mk here make -j -C obj_dir/ -f Vdut.mk - + # Run executable simulation file ./obj_dir/Vdut - + # Check if the test succeeded or not + #$? is the exit status of the command, zero means success of sorts + if [ $? -eq 0 ]; then ((passes++)) else ((fails++)) fi - + done -# Exit as a pass or fail (for CI purposes) -if [ $fails -eq 0 ]; then - echo "${GREEN}Success! All ${passes} test(s) passed!" - exit 0 -else - total=$((passes + fails)) - echo "${RED}Failure! Only ${passes} test(s) passed out of ${total}." - exit 1 -fi \ No newline at end of file +# Save obj_dir in test_out +#mv means move files, we move obj_dir files to test_out directory +mv obj_dir test_out/ \ No newline at end of file diff --git a/repo/tb/tests/verify.cpp b/repo/tb/tests/verify.cpp index 78e2323..99e8fd1 100644 --- a/repo/tb/tests/verify.cpp +++ b/repo/tb/tests/verify.cpp @@ -37,285 +37,18 @@ TEST_F(CpuTestbench, TestJalRet) EXPECT_EQ(top_->a0, 53); } -TEST_F(CpuTestbench, TestPdf) +/*TEST_F(CpuTestbench, TestPdf) { setupTest("5_pdf"); setData("reference/gaussian.mem"); initSimulation(); runSimulation(CYCLES * 100); EXPECT_EQ(top_->a0, 15363); -} - -/* Instruction Coverage */ - -// Upper and Jump/Link Instructions -TEST_F(CpuTestbench, TestLUI){ - setupTest("lui_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, (0b1010'1010'1010'1010'1010'0000'0000'0000) - 1); -} - -TEST_F(CpuTestbench, TestAUIPC){ - setupTest("auipc_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 2); -} - -TEST_F(CpuTestbench, TestJAL){ - setupTest("jal_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 2); -} - -TEST_F(CpuTestbench, TestJALR){ -setupTest("jalr_test"); -initSimulation(); -runSimulation(CYCLES); -EXPECT_EQ(top_->a0, 2); -} - -// PC-relative Branch Instructions -TEST_F(CpuTestbench, TestBEQ){ - setupTest("beq_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -TEST_F(CpuTestbench, TestBNE){ - setupTest("bne_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -TEST_F(CpuTestbench, TestBLT){ - setupTest("blt_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -TEST_F(CpuTestbench, TestBGE){ - setupTest("bge_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -TEST_F(CpuTestbench, TestBLTU){ - setupTest("bltu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -TEST_F(CpuTestbench, TestBGEU){ - setupTest("bgeu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); -} - -// Load Instructions -TEST_F(CpuTestbench, TestLB){ - setupTest("lb_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0x7F); -} - -TEST_F(CpuTestbench, TestLH){ - setupTest("lh_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0x7FFF); -} - -TEST_F(CpuTestbench, TestLW){ - setupTest("lw_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, -1); -} - -TEST_F(CpuTestbench, TestLBU){ - setupTest("lbu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0xFF); -} - -TEST_F(CpuTestbench, TestLHU){ - setupTest("lhu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0xFFFF); -} - -// Store Instructions -TEST_F(CpuTestbench, TestSB){ - setupTest("sb_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0xFF); -} - -TEST_F(CpuTestbench, TestSH){ - setupTest("sh_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0xFFFF); -} - -TEST_F(CpuTestbench, TestSW){ - setupTest("sw_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, -1); -} - -// Immediate Instructions -TEST_F(CpuTestbench, TestADDI){ - setupTest("addi_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 8); // 5 + 3 -} - -TEST_F(CpuTestbench, TestSLTI){ - setupTest("slti_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); // 5 < 10, so true (1) -} - -TEST_F(CpuTestbench, TestSLTIU){ - setupTest("sltiu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0); // 0xFFFFFFFF < 1 in unsigned compare, so true (1) -} - -TEST_F(CpuTestbench, TestXORI){ - setupTest("xori_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 6); // 5 ^ 3 = 6 -} - -TEST_F(CpuTestbench, TestORI){ - setupTest("ori_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 7); // 5 | 3 = 7 -} - -TEST_F(CpuTestbench, TestANDI){ - setupTest("andi_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); // 5 & 3 = 1 -} - -TEST_F(CpuTestbench, TestSLLI){ - setupTest("slli_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 20); // 5 << 2 = 20 -} - -TEST_F(CpuTestbench, TestSRLI){ - setupTest("srli_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, (uint32_t) -8 >> 2); -} - -TEST_F(CpuTestbench, TestSRAI){ - setupTest("srai_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, -2); // -8 >> 2 = -2 (arithmetic, preserves sign) -} - -// Register-Register Instructions -TEST_F(CpuTestbench, TestADD){ - setupTest("add_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 8); // 5 + 3 -} - -TEST_F(CpuTestbench, TestSUB){ - setupTest("sub_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 2); // 5 - 3 -} - -TEST_F(CpuTestbench, TestXOR){ - setupTest("xor_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 6); // 5 ^ 3 = 6 -} - -TEST_F(CpuTestbench, TestSLL){ - setupTest("sll_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 20); // 5 << 2 = 20 -} - -TEST_F(CpuTestbench, TestSLT){ - setupTest("slt_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); // 5 < 10, so true (1) -} - -TEST_F(CpuTestbench, TestSLTU){ - setupTest("sltu_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 0); // 0xFFFFFFFF is not less than 1 in unsigned compare, so false (0) -} - -TEST_F(CpuTestbench, TestSRL){ - setupTest("srl_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, (uint32_t) -8 >> 2); -} - -TEST_F(CpuTestbench, TestSRA){ - setupTest("sra_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, -2); // -8 >> 2 = -2 (arithmetic, preserves sign) -} - -TEST_F(CpuTestbench, TestOR){ - setupTest("or_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 7); // 5 | 3 = 7 -} - -TEST_F(CpuTestbench, TestAND){ - setupTest("and_test"); - initSimulation(); - runSimulation(CYCLES); - EXPECT_EQ(top_->a0, 1); // 5 & 3 = 1 -} +}*/ int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); auto res = RUN_ALL_TESTS(); return res; -} +} \ No newline at end of file