diff --git a/nyancat/icepi-zero-v1_3.lpf b/nyancat/icepi-zero-v1_3.lpf new file mode 100644 index 0000000..98e776d --- /dev/null +++ b/nyancat/icepi-zero-v1_3.lpf @@ -0,0 +1,290 @@ +SYSCONFIG CONFIG_IOVOLTAGE=3.3 COMPRESS_CONFIG=ON MCCLK_FREQ=62 MASTER_SPI_PORT=ENABLE SLAVE_SPI_PORT=DISABLE SLAVE_PARALLEL_PORT=DISABLE; + +# https://www.latticesemi.com/en/Support/AnswerDatabase/1/9/6/1964 +BLOCK RESETPATHS; +BLOCK ASYNCPATHS; + +# Clock +LOCATE COMP "clk" SITE "M1"; +IOBUF PORT "clk" IO_TYPE=LVCMOS33 PULLMODE=NONE; +FREQUENCY PORT "clk" 50 MHZ; + +# FTDI +LOCATE COMP "usb_tx" SITE "K15"; # Transmit to ftdi +IOBUF PORT "usb_tx" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +LOCATE COMP "usb_rx" SITE "K16"; # Transmit from ftdi +IOBUF PORT "usb_rx" PULLMODE=UP IO_TYPE=LVCMOS33 DRIVE=4; +LOCATE COMP "usb_rtsn" SITE "L16"; +IOBUF PORT "usb_rtsn" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=DOWN; +LOCATE COMP "usb_dtrn" SITE "L15"; +IOBUF PORT "usb_dtrn" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=DOWN; + +# GPIOs +LOCATE COMP "gpio[0]" SITE "G3"; # 27 +IOBUF PORT "gpio[0]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[1]" SITE "K3"; # 28 +IOBUF PORT "gpio[1]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[2]" SITE "T2"; # 3 +IOBUF PORT "gpio[2]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[3]" SITE "R2"; # 5 +IOBUF PORT "gpio[3]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[4]" SITE "R1"; # 7 +IOBUF PORT "gpio[4]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[5]" SITE "E1"; # 29 +IOBUF PORT "gpio[5]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[6]" SITE "F3"; # 31 +IOBUF PORT "gpio[6]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[7]" SITE "G1"; # 26 +IOBUF PORT "gpio[7]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[8]" SITE "H2"; # 24 +IOBUF PORT "gpio[8]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[9]" SITE "J1"; # 21 +IOBUF PORT "gpio[9]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[10]" SITE "L2"; # 19 +IOBUF PORT "gpio[10]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[11]" SITE "G2"; # 23 +IOBUF PORT "gpio[11]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[12]" SITE "J3"; # 32 +IOBUF PORT "gpio[12]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[13]" SITE "E3"; # 33 +IOBUF PORT "gpio[13]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[14]" SITE "P1"; # 8 +IOBUF PORT "gpio[14]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[15]" SITE "N1"; # 10 +IOBUF PORT "gpio[15]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[16]" SITE "H3"; # 36 +IOBUF PORT "gpio[16]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[17]" SITE "R3"; # 11 +IOBUF PORT "gpio[17]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[18]" SITE "N4"; # 12 +IOBUF PORT "gpio[18]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[19]" SITE "E4"; # 35 +IOBUF PORT "gpio[19]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[20]" SITE "F1"; # 38 +IOBUF PORT "gpio[20]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[21]" SITE "F2"; # 40 +IOBUF PORT "gpio[21]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[22]" SITE "P2"; # 15 +IOBUF PORT "gpio[22]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[23]" SITE "M2"; # 16 +IOBUF PORT "gpio[23]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[24]" SITE "L1"; # 18 +IOBUF PORT "gpio[24]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[25]" SITE "J2"; # 22 +IOBUF PORT "gpio[25]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[26]" SITE "D4"; # 37 +IOBUF PORT "gpio[26]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "gpio[27]" SITE "P3"; # 13 +IOBUF PORT "gpio[27]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; + +LOCATE COMP "pi_rx" SITE "N1"; +IOBUF PORT "pi_rx" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_tx" SITE "P1"; +IOBUF PORT "pi_tx" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_led" SITE "G3"; # 27 +IOBUF PORT "pi_led" IO_TYPE=LVCMOS33 PULLMODE=DOWN; + +LOCATE COMP "pi_miso" SITE "J1"; +IOBUF PORT "pi_miso" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_mosi" SITE "L2"; +IOBUF PORT "pi_mosi" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_sclk" SITE "G2"; +IOBUF PORT "pi_sclk" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_ce0" SITE "H2"; +IOBUF PORT "pi_ce0" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "pi_nirq" SITE "J2"; # GPIO 25 +IOBUF PORT "pi_nirq" IO_TYPE=LVCMOS33 PULLMODE=DOWN; + +# LEDs +LOCATE COMP "led[0]" SITE "E13"; +IOBUF PORT "led[0]" IO_TYPE=LVCMOS33 PULLMODE=DOWN DRIVE=4; +LOCATE COMP "led[1]" SITE "D14"; +IOBUF PORT "led[1]" IO_TYPE=LVCMOS33 PULLMODE=DOWN DRIVE=4; +LOCATE COMP "led[2]" SITE "E12"; +IOBUF PORT "led[2]" IO_TYPE=LVCMOS33 PULLMODE=DOWN DRIVE=4; +LOCATE COMP "led[3]" SITE "C13"; +IOBUF PORT "led[3]" IO_TYPE=LVCMOS33 PULLMODE=DOWN DRIVE=4; +LOCATE COMP "led[4]" SITE "D13"; +IOBUF PORT "led[4]" IO_TYPE=LVCMOS33 PULLMODE=DOWN DRIVE=4; + +# Buttons +LOCATE COMP "button[0]" SITE "C4"; +IOBUF PORT "button[0]" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "button[1]" SITE "C5"; +IOBUF PORT "button[1]" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; + +# FDPI +LOCATE COMP "gpdi_dp[0]" SITE "R13"; # Blue +IOBUF PORT "gpdi_dp[0]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dn[0]" SITE "T14"; +IOBUF PORT "gpdi_dn[0]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dp[1]" SITE "R15"; # Green +IOBUF PORT "gpdi_dp[1]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dn[1]" SITE "T15"; +IOBUF PORT "gpdi_dn[1]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dp[2]" SITE "P16"; # Red +IOBUF PORT "gpdi_dp[2]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dn[2]" SITE "R16"; +IOBUF PORT "gpdi_dn[2]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dp[3]" SITE "R12"; # Clock +IOBUF PORT "gpdi_dp[3]" IO_TYPE=LVCMOS33D DRIVE=4; +LOCATE COMP "gpdi_dn[3]" SITE "T13"; +IOBUF PORT "gpdi_dn[3]" IO_TYPE=LVCMOS33D DRIVE=4; + +LOCATE COMP "gpdi_cec" SITE "R5"; +IOBUF PORT "gpdi_cec" IO_TYPE=LVCMOS33 PULLMODE=NONE PULLMODE=UP DRIVE=4; +LOCATE COMP "gpdi_sck" SITE "T3"; +IOBUF PORT "gpdi_sck" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "gpdi_sda" SITE "T4"; +IOBUF PORT "gpdi_sda" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "gpdi_util" SITE "P5"; +IOBUF PORT "gpdi_util" IO_TYPE=LVCMOS33 PULLMODE=NONE; +LOCATE COMP "gpdi_hpd" SITE "L14"; +IOBUF PORT "gpdi_hpd" IO_TYPE=LVCMOS33 PULLMODE=NONE; + +# SD Card +LOCATE COMP "sd_dat[0]" SITE "P14"; +IOBUF PORT "sd_dat[0]" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_dat[1]" SITE "R14"; +IOBUF PORT "sd_dat[1]" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_dat[2]" SITE "M15"; +IOBUF PORT "sd_dat[2]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sd_dat[3]" SITE "M14"; +IOBUF PORT "sd_dat[3]" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; + +LOCATE COMP "sd_miso" SITE "P14"; +IOBUF PORT "sd_miso" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_mosi" SITE "N16"; +IOBUF PORT "sd_mosi" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_csn" SITE "M14"; +IOBUF PORT "sd_csn" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; + +LOCATE COMP "sd_clk" SITE "P15"; +IOBUF PORT "sd_clk" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_cmd" SITE "N16"; +IOBUF PORT "sd_cmd" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "sd_det" SITE "M16"; +IOBUF PORT "sd_det" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; + +# USB +LOCATE COMP "usb_dp[0]" SITE "F15"; +IOBUF PORT "usb_dp[0]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_dn[0]" SITE "E16"; +IOBUF PORT "usb_dn[0]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_pull_dp[0]" SITE "G15"; +IOBUF PORT "usb_pull_dp[0]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_pull_dn[0]" SITE "H14"; +IOBUF PORT "usb_pull_dn[0]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_dp[1]" SITE "J16"; +IOBUF PORT "usb_dp[1]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_dn[1]" SITE "J15"; +IOBUF PORT "usb_dn[1]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_pull_dp[1]" SITE "E14"; +IOBUF PORT "usb_pull_dp[1]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; +LOCATE COMP "usb_pull_dn[1]" SITE "E11"; +IOBUF PORT "usb_pull_dn[1]" IO_TYPE=LVCMOS33 DRIVE=4 PULLMODE=NONE; + +# SDRAM +LOCATE COMP "sdram_a[0]" SITE "B10"; +IOBUF PORT "sdram_a[0]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[1]" SITE "A9"; +IOBUF PORT "sdram_a[1]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[2]" SITE "B9"; +IOBUF PORT "sdram_a[2]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[3]" SITE "A8"; +IOBUF PORT "sdram_a[3]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[4]" SITE "B8"; +IOBUF PORT "sdram_a[4]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[5]" SITE "A7"; +IOBUF PORT "sdram_a[5]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[6]" SITE "B7"; +IOBUF PORT "sdram_a[6]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[7]" SITE "A6"; +IOBUF PORT "sdram_a[7]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[8]" SITE "B6"; +IOBUF PORT "sdram_a[8]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[9]" SITE "A5"; +IOBUF PORT "sdram_a[9]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[10]" SITE "A10"; +IOBUF PORT "sdram_a[10]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[11]" SITE "B5"; +IOBUF PORT "sdram_a[11]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_a[12]" SITE "A4"; +IOBUF PORT "sdram_a[12]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; + +LOCATE COMP "sdram_dq[0]" SITE "B16"; +IOBUF PORT "sdram_dq[0]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[1]" SITE "C14"; +IOBUF PORT "sdram_dq[1]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[2]" SITE "C16"; +IOBUF PORT "sdram_dq[2]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[3]" SITE "C15"; +IOBUF PORT "sdram_dq[3]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[4]" SITE "D16"; +IOBUF PORT "sdram_dq[4]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[5]" SITE "A15"; +IOBUF PORT "sdram_dq[5]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[6]" SITE "B15"; +IOBUF PORT "sdram_dq[6]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[7]" SITE "A14"; +IOBUF PORT "sdram_dq[7]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[8]" SITE "A2"; +IOBUF PORT "sdram_dq[8]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[9]" SITE "B2"; +IOBUF PORT "sdram_dq[9]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[10]" SITE "E2"; +IOBUF PORT "sdram_dq[10]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[11]" SITE "D1"; +IOBUF PORT "sdram_dq[11]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[12]" SITE "C2"; +IOBUF PORT "sdram_dq[12]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[13]" SITE "C1"; +IOBUF PORT "sdram_dq[13]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[14]" SITE "C3"; +IOBUF PORT "sdram_dq[14]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dq[15]" SITE "B1"; +IOBUF PORT "sdram_dq[15]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; + +LOCATE COMP "sdram_ba[0]" SITE "A11"; +IOBUF PORT "sdram_ba[0]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_ba[1]" SITE "B11"; +IOBUF PORT "sdram_ba[1]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; + +LOCATE COMP "sdram_dqm[0]" SITE "B14"; +IOBUF PORT "sdram_dqm[0]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_dqm[1]" SITE "B3"; +IOBUF PORT "sdram_dqm[1]" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; + +LOCATE COMP "sdram_csn" SITE "B12"; +IOBUF PORT "sdram_csn" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_cke" SITE "B4"; +IOBUF PORT "sdram_cke" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_clk" SITE "A3"; +IOBUF PORT "sdram_clk" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_wen" SITE "A13"; +IOBUF PORT "sdram_wen" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_casn" SITE "B13"; +IOBUF PORT "sdram_casn" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; +LOCATE COMP "sdram_rasn" SITE "A12"; +IOBUF PORT "sdram_rasn" IO_TYPE=LVCMOS33 PULLMODE=NONE DRIVE=4; + +# SPI Flash +LOCATE COMP "flash_csn" SITE "N8"; +IOBUF PORT "flash_csn" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "flash_clk" SITE "N9"; +IOBUF PORT "flash_clk" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "flash_mosi" SITE "T8"; +IOBUF PORT "flash_mosi" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "flash_miso" SITE "T7"; +IOBUF PORT "flash_miso" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "flash_wpn" SITE "M7"; +IOBUF PORT "flash_wpn" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; +LOCATE COMP "flash_resetn" SITE "N7"; +IOBUF PORT "flash_resetn" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE=4; + +# Testpoints +LOCATE COMP "tp[0]" SITE "C7"; +IOBUF PORT "tp[0]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; +LOCATE COMP "tp[1]" SITE "C8"; +IOBUF PORT "tp[1]" IO_TYPE=LVCMOS33 PULLMODE=DOWN; + diff --git a/nyancat/nyan.bit b/nyancat/nyan.bit new file mode 100644 index 0000000000000000000000000000000000000000..9717fb1091fbdc902d21be4305f4fd4f41e50ef9 GIT binary patch literal 116027 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 250 MHz (TMDS) + 25 MHz (pixel clock) + wire clk_tmds, clk_pixel; + pll_dvi dvi_pll ( + .clk(clk), .clkout0(clk_tmds), .clkout1(clk_pixel), .locked() + ); + + // VGA timing + wire [9:0] pix_x, pix_y; + wire hsync, vsync, de; + wire [7:0] vga_r, vga_g, vga_b; + + vga vga_inst ( + .clk(clk_pixel), + .r(pixel_r), .g(pixel_g), .b(pixel_b), + .px(pix_x), .py(pix_y), + .vsync(vsync), .hsync(hsync), .de(de), + .vga_r(vga_r), .vga_g(vga_g), .vga_b(vga_b) + ); + + // ---- Exact adaptation of a1k0n's rendering pipeline ---- + + reg [7:0] frame_count; + reg [2:0] nyanframe; + reg [6:0] line_lfsr; + wire [6:0] line_lfsr_next = {line_lfsr[0], line_lfsr[0]^line_lfsr[6], line_lfsr[5:1]}; + + // Scrolling x position + wire [9:0] moving_x = pix_x + (frame_count << 2); + + // Palettes (loaded from hex files) + reg [3:0] palette_r[0:7], palette_g[0:7], palette_b[0:7]; + reg [3:0] rainbow_r[0:7], rainbow_g[0:7], rainbow_b[0:7]; + initial begin + $readmemh("palette_r.hex", palette_r); + $readmemh("palette_g.hex", palette_g); + $readmemh("palette_b.hex", palette_b); + $readmemh("rainbow_r.hex", rainbow_r); + $readmemh("rainbow_g.hex", rainbow_g); + $readmemh("rainbow_b.hex", rainbow_b); + end + + // Sprite ROM + reg [2:0] nyan[0:16383]; + initial begin + $readmemh("nyan_flat.hex", nyan); + end + + // Bayer dithering (2-bit output dithered to simulate more colors) + wire bi = pix_x[0] ^ frame_count[0]; + wire bj = pix_y[0] ^ frame_count[0]; + wire bx = bi ^ bj; + wire [1:0] bayer = {bx, bi}; + + // CORDIC bounce animation + reg signed [6:0] cos, sin; + wire signed [6:0] cos_ = cos - (sin >>> 4); + wire signed [6:0] sin_ = sin + (cos_ >>> 4); + + // Sprite coordinates (exact from original) + wire [5:0] nyan_x_offset = sin[6:1] ^ 6'h20; + wire [9:0] nyan_x = pix_x - 222 + {3'b0, nyan_x_offset}; + wire [7:0] nyan_y = (pix_y - 152) >> 3; + + // Sprite pixel lookup + wire [2:0] idx = ((nyan_x < 272) && (nyan_y < 21)) ? + nyan[{nyanframe, nyan_y[4:0], nyan_x[8:3]}] : 3'd0; + + // Rainbow visibility: behind cat or to the left + wire rainbow_on = (idx == 0 || nyan_x > 272) && (pix_x < 300) && (nyan_y < 18); + + // Rainbow color index (scrolling bands) + wire [3:0] rainbow_off = pix_y[6:3] - 5 + {3'b0, moving_x[6]}; + + // Twinkling stars + wire star = (idx == 0) && (moving_x[9:3] == line_lfsr); + + // Pixel color compositing (exact from original, scaled to 8-bit) + // Original outputs 4-bit, we scale to 8-bit by duplicating nibble + wire [3:0] r4 = rainbow_on ? rainbow_r[rainbow_off[3:1]] : + star ? 4'hc : palette_r[idx]; + wire [3:0] g4 = rainbow_on ? rainbow_g[rainbow_off[3:1]] : + star ? 4'hc : palette_g[idx]; + wire [3:0] b4 = rainbow_on ? rainbow_b[rainbow_off[3:1]] : + star ? 4'hc : palette_b[idx]; + + // Bayer dither (adds 2-bit dither to 4-bit, take top 4 bits) + wire [3:0] dr = r4 + {2'b0, bayer}; + wire [3:0] dg = g4 + {2'b0, bayer}; + wire [3:0] db = b4 + {2'b0, bayer}; + + // Scale 4-bit to 8-bit for our VGA module + wire [7:0] pixel_r = de ? {dr, dr} : 8'd0; + wire [7:0] pixel_g = de ? {dg, dg} : 8'd0; + wire [7:0] pixel_b = de ? {db, db} : 8'd0; + + // Animation timing (exact from original) + always @(posedge clk_pixel) begin + if (pix_x == 0) begin + if (pix_y == 0) begin + frame_count <= frame_count + 1; + if (frame_count[1:0] == 0) begin + nyanframe <= (nyanframe == 5) ? 0 : nyanframe + 1; + end + cos <= cos_; + sin <= sin_; + line_lfsr <= 7'h5a; + end else begin + if (pix_y[2:0] == 0) begin + line_lfsr <= line_lfsr_next; + end + end + end + end + + // TMDS encoding + vga2tmds tmds_inst ( + .clkp(clk_pixel), .clkt(clk_tmds), + .vsync(vsync), .hsync(hsync), .de(de), + .r(vga_r), .g(vga_g), .b(vga_b), + .tmds(gpdi_dp) + ); + + // LEDs + reg [24:0] heartbeat; + always @(posedge clk) heartbeat <= heartbeat + 1; + assign led[0] = 1'b1; + assign led[1] = nyanframe[2]; + assign led[2] = heartbeat[24]; + assign led[3] = de; + assign led[4] = 1'b1; + +endmodule diff --git a/nyancat/nyan_flat.hex b/nyancat/nyan_flat.hex new file mode 100644 index 0000000..7b685d5 --- /dev/null +++ b/nyancat/nyan_flat.hex @@ -0,0 +1,16384 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +2 +5 +2 +2 +4 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +2 +2 +2 +4 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +3 +3 +1 +2 +2 +2 +4 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +1 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +5 +2 +2 +4 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +2 +2 +4 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +3 +3 +1 +2 +2 +4 +1 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +0 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +3 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +5 +2 +2 +4 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +2 +2 +4 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +3 +3 +1 +2 +2 +4 +1 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +3 +3 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +1 +1 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +5 +2 +2 +4 +1 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +2 +2 +4 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +3 +3 +1 +2 +2 +4 +1 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +3 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +1 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +2 +5 +2 +2 +4 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +2 +2 +2 +4 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +3 +3 +1 +2 +2 +2 +4 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +1 +1 +1 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +3 +3 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +3 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +4 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +5 +2 +2 +2 +2 +2 +4 +4 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +5 +2 +2 +2 +2 +2 +2 +2 +1 +1 +2 +2 +2 +2 +2 +4 +1 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +1 +2 +5 +2 +2 +4 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +2 +2 +2 +4 +1 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +3 +3 +3 +1 +1 +1 +1 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +0 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +1 +1 +1 +4 +2 +2 +2 +5 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +3 +1 +4 +2 +2 +2 +2 +2 +2 +2 +5 +1 +3 +3 +3 +7 +1 +3 +3 +3 +3 +3 +7 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +3 +3 +1 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +3 +3 +3 +1 +3 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +6 +6 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +2 +2 +2 +2 +2 +5 +2 +2 +1 +3 +6 +6 +3 +1 +3 +3 +1 +3 +3 +1 +3 +6 +6 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +4 +4 +2 +5 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +4 +4 +4 +2 +2 +2 +2 +2 +2 +2 +2 +1 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +1 +1 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +1 +3 +3 +1 +0 +1 +3 +3 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/nyancat/nyan_rom.v b/nyancat/nyan_rom.v new file mode 100644 index 0000000..c86f196 --- /dev/null +++ b/nyancat/nyan_rom.v @@ -0,0 +1,59 @@ +// Nyan Cat sprite ROM - adapted from github.com/a1k0n/tt08-nyan +// 6 frames x 32 rows x 64 cols = 12288 entries, 3-bit indexed color + +module nyan_rom ( + input wire [2:0] frame, // 0-5 + input wire [5:0] x, // 0-63 + input wire [4:0] y, // 0-31 + output reg [2:0] color +); + + reg [2:0] nyan [0:12287]; + + initial begin + $readmemh("nyan_flat.hex", nyan); + end + + always @(*) begin + color = nyan[{frame, y, x}]; + end + +endmodule + +// Cat body palette (8 colors, 4-bit per channel) +module nyan_palette ( + input wire [2:0] idx, + output reg [3:0] r, g, b +); + always @(*) begin + case (idx) + 3'd0: begin r=4'h0; g=4'h3; b=4'h6; end // dark blue (bg) + 3'd1: begin r=4'h0; g=4'h0; b=4'h0; end // black (outline) + 3'd2: begin r=4'hc; g=4'h7; b=4'hc; end // pink (body) + 3'd3: begin r=4'h7; g=4'h7; b=4'h7; end // gray (face) + 3'd4: begin r=4'hc; g=4'h9; b=4'h7; end // tan (belly) + 3'd5: begin r=4'hc; g=4'h2; b=4'h7; end // dark pink (stripes) + 3'd6: begin r=4'hc; g=4'h7; b=4'h7; end // light pink (tongue) + 3'd7: begin r=4'hc; g=4'hc; b=4'hc; end // white (eyes) + endcase + end +endmodule + +// Rainbow palette (8 colors) +module rainbow_palette ( + input wire [2:0] idx, + output reg [3:0] r, g, b +); + always @(*) begin + case (idx) + 3'd0: begin r=4'h0; g=4'h3; b=4'h6; end // blue + 3'd1: begin r=4'hc; g=4'h0; b=4'h0; end // red + 3'd2: begin r=4'hc; g=4'h7; b=4'h0; end // orange + 3'd3: begin r=4'hc; g=4'hc; b=4'h0; end // yellow + 3'd4: begin r=4'h2; g=4'hc; b=4'h0; end // green + 3'd5: begin r=4'h0; g=4'h7; b=4'hc; end // cyan + 3'd6: begin r=4'h4; g=4'h2; b=4'hc; end // purple + 3'd7: begin r=4'h0; g=4'h3; b=4'h6; end // blue + endcase + end +endmodule diff --git a/nyancat/palette_b.hex b/nyancat/palette_b.hex new file mode 100644 index 0000000..a04d087 --- /dev/null +++ b/nyancat/palette_b.hex @@ -0,0 +1 @@ +06 00 0c 07 07 07 07 0c diff --git a/nyancat/palette_g.hex b/nyancat/palette_g.hex new file mode 100644 index 0000000..c7736aa --- /dev/null +++ b/nyancat/palette_g.hex @@ -0,0 +1 @@ +03 00 07 07 09 02 07 0c diff --git a/nyancat/palette_r.hex b/nyancat/palette_r.hex new file mode 100644 index 0000000..2d2ff40 --- /dev/null +++ b/nyancat/palette_r.hex @@ -0,0 +1 @@ +00 00 0c 07 0c 0c 0c 0c diff --git a/nyancat/pll1.v b/nyancat/pll1.v new file mode 100644 index 0000000..6ebc36c --- /dev/null +++ b/nyancat/pll1.v @@ -0,0 +1,53 @@ +// diamond 3.7 accepts this PLL +// diamond 3.8-3.9 is untested +// diamond 3.10 or higher is likely to abort with error about unable to use feedback signal +// cause of this could be from wrong CPHASE/FPHASE parameters +module pll_dvi +( + input clk, // 50 MHz, 0 deg + output clkout0, // 250 MHz, 0 deg + output clkout1, // 25 MHz, 0 deg + output locked +); +(* FREQUENCY_PIN_CLKI="50" *) +(* FREQUENCY_PIN_CLKOP="250" *) +(* FREQUENCY_PIN_CLKOS="25" *) +(* ICP_CURRENT="12" *) (* LPF_RESISTOR="8" *) (* MFG_ENABLE_FILTEROPAMP="1" *) (* MFG_GMCREF_SEL="2" *) +EHXPLLL #( + .PLLRST_ENA("DISABLED"), + .INTFB_WAKE("DISABLED"), + .STDBY_ENABLE("DISABLED"), + .DPHASE_SOURCE("DISABLED"), + .OUTDIVIDER_MUXA("DIVA"), + .OUTDIVIDER_MUXB("DIVB"), + .OUTDIVIDER_MUXC("DIVC"), + .OUTDIVIDER_MUXD("DIVD"), + .CLKI_DIV(1), + .CLKOP_ENABLE("ENABLED"), + .CLKOP_DIV(2), + .CLKOP_CPHASE(0), + .CLKOP_FPHASE(0), + .CLKOS_ENABLE("ENABLED"), + .CLKOS_DIV(20), + .CLKOS_CPHASE(0), + .CLKOS_FPHASE(0), + .FEEDBK_PATH("CLKOP"), + .CLKFB_DIV(5) + ) pll_i ( + .RST(1'b0), + .STDBY(1'b0), + .CLKI(clk), + .CLKOP(clkout0), + .CLKOS(clkout1), + .CLKFB(clkout0), + .CLKINTFB(), + .PHASESEL0(1'b0), + .PHASESEL1(1'b0), + .PHASEDIR(1'b1), + .PHASESTEP(1'b1), + .PHASELOADREG(1'b1), + .PLLWAKESYNC(1'b0), + .ENCLKOP(1'b0), + .LOCK(locked) + ); +endmodule diff --git a/nyancat/rainbow_b.hex b/nyancat/rainbow_b.hex new file mode 100644 index 0000000..e65ec37 --- /dev/null +++ b/nyancat/rainbow_b.hex @@ -0,0 +1 @@ +06 00 00 00 00 0c 0c 06 diff --git a/nyancat/rainbow_g.hex b/nyancat/rainbow_g.hex new file mode 100644 index 0000000..d707512 --- /dev/null +++ b/nyancat/rainbow_g.hex @@ -0,0 +1 @@ +03 00 07 0c 0c 07 02 03 diff --git a/nyancat/rainbow_r.hex b/nyancat/rainbow_r.hex new file mode 100644 index 0000000..f117d92 --- /dev/null +++ b/nyancat/rainbow_r.hex @@ -0,0 +1 @@ +00 0c 0c 0c 02 00 04 00 diff --git a/nyancat/tmds_encoder.sv b/nyancat/tmds_encoder.sv new file mode 100644 index 0000000..e7bc8ee --- /dev/null +++ b/nyancat/tmds_encoder.sv @@ -0,0 +1,49 @@ +module tmds_encoder ( + input wire clk, + input wire [7:0] data, + input wire [1:0] c, + input wire de, + output logic [9:0] out +); + // https://www.fpga4fun.com/files/dvi_spec-V1_0.pdf Page 29 + wire [3:0] Nb1s = data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7]; + + wire XNOR = (Nb1s>4'd4) || (Nb1s==4'd4 && data[0]==1'b0); + wire [8:0] q_m = {~XNOR, q_m[6:0] ^ data[7:1] ^ {7{XNOR}}, data[0]}; + + logic [3:0] balance_acc; + wire [3:0] balance = q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7] - 4'd4; + wire balance_sign_eq = (balance[3] == balance_acc[3]); + wire invert_q_m = (balance==0 || balance_acc==0) ? ~q_m[8] : balance_sign_eq; + wire [3:0] balance_acc_inc = balance - ({q_m[8] ^ ~balance_sign_eq} & ~(balance==0 || balance_acc==0)); + wire [3:0] balance_acc_new = invert_q_m ? balance_acc-balance_acc_inc : balance_acc+balance_acc_inc; + + initial begin + balance_acc = 0; + end + + always_ff @(posedge clk) begin + if (de) begin + out <= {invert_q_m, q_m[8], q_m[7:0] ^ {8{invert_q_m}}}; + + balance_acc <= balance_acc_new; + end else begin + case (c) + 2'b00: begin + out <= 10'b1101010100; + end + 2'b01: begin + out <= 10'b0010101011; + end + 2'b10: begin + out <= 10'b0101010100; + end + 2'b11: begin + out <= 10'b1010101011; + end + endcase + + balance_acc <= 4'b0; + end + end +endmodule diff --git a/nyancat/vga.sv b/nyancat/vga.sv new file mode 100644 index 0000000..8cb46f4 --- /dev/null +++ b/nyancat/vga.sv @@ -0,0 +1,46 @@ +module vga ( + input wire clk, + input wire [7:0] r, + input wire [7:0] g, + input wire [7:0] b, + output logic [9:0] px, + output logic [9:0] py, + output logic vsync, + output logic hsync, + output logic de, + output logic [7:0] vga_r, + output logic [7:0] vga_g, + output logic [7:0] vga_b +); + // 640x480 @ 60Hz + localparam HA_END = 639; + localparam HS_STA = HA_END + 16; + localparam HS_END = HS_STA + 96; + localparam LINE = 799; + + localparam VA_END = 479; + localparam VS_STA = VA_END + 10; + localparam VS_END = VS_STA + 2; + localparam SCREEN = 524; + + // Generate hsync and vsync signals + always_comb begin + hsync = ~(px >= HS_STA && px < HS_END); + vsync = ~(py >= VS_STA && py < VS_END); + de = (px <= HA_END && py <= VA_END); + + vga_r = de ? r : 8'b0; + vga_g = de ? g : 8'b0; + vga_b = de ? b : 8'b0; + end + + // Count the x, y positions + always_ff @(posedge clk) begin + if (px == LINE) begin + px <= 0; + py <= (py == SCREEN) ? 0 : py + 1; + end else begin + px <= px + 1; + end + end +endmodule diff --git a/nyancat/vga2tmds.sv b/nyancat/vga2tmds.sv new file mode 100644 index 0000000..382811d --- /dev/null +++ b/nyancat/vga2tmds.sv @@ -0,0 +1,37 @@ +// Convert vga signals to tmds https://www.fpga4fun.com/HDMI.html +module vga2tmds ( + input wire clkp, // Normally 25MHz + input wire clkt, // 10x clkp (250MHz) + input wire vsync, + input wire hsync, + input wire de, + input wire [7:0] r, // Colors! + input wire [7:0] g, + input wire [7:0] b, + output logic [3:0] tmds +); + assign tmds[0] = bts[0]; + assign tmds[1] = gts[0]; + assign tmds[2] = rts[0]; + assign tmds[3] = clkp; // Third is clock signal + + logic [3:0] counter; + logic load; + logic [9:0] rt, gt, bt; + logic [9:0] rts, gts, bts; + + // Encode tmds signals + tmds_encoder B_encode (clkp, b, {vsync, hsync}, de, bt); + tmds_encoder G_encode (clkp, g, {2'b0}, de, gt); + tmds_encoder R_encode (clkp, r, {2'b0}, de, rt); + + always_ff @(posedge clkt) begin + load <= (counter == 4'd9); + + rts <= load ? rt : {1'b0, rts[9:1]}; + gts <= load ? gt : {1'b0, gts[9:1]}; + bts <= load ? bt : {1'b0, bts[9:1]}; + + counter <= (counter == 4'd9) ? 4'b0 : counter + 1; + end +endmodule