diff --git a/dev/build/litex/.gitignore b/dev/build/litex/.gitignore new file mode 100644 index 0000000..21cd8a2 --- /dev/null +++ b/dev/build/litex/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +vivado* diff --git a/dev/build/litex/a2o.py b/dev/build/litex/a2o.py new file mode 100755 index 0000000..df465ca --- /dev/null +++ b/dev/build/litex/a2o.py @@ -0,0 +1,221 @@ +#!/usr/bin/python3 + +# A2O Test - build with core.py +# a2o.py --csr-csv csr.csv --no-compile-software --build --sys-clk-freq 10e6 +# + +import os +import argparse + +from migen import * + +# wtf - use local platform +from platforms import cmod7 + +# wtf - use local core (not built into litex) +# help python find package +import sys +binPath = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(os.path.join(binPath, 'a2p')) # dir with core package; core.py defines core source location +# get core def +from a2o import A2O +# add to litex dict +from litex.soc.cores import cpu +cpu.CPUS['a2o'] = A2O + +from litex.soc.cores.clock import * +from litex.soc.integration.soc import SoCRegion +from litex.soc.integration.soc_core import * +from litex.soc.integration.builder import * + +from litex.soc.cores.led import LedChaser +from litex.soc.cores import dna, xadc +from litex.soc.cores.gpio import GPIOIn +from litex.soc.cores.gpio import GPIOOut +from litex.soc.cores.bitbang import I2CMaster + +from litex.soc.interconnect import wishbone + +from litex.soc.cores import uart +from litex.soc.cores.uart import UART +from litex.soc.cores.uart import UARTPHY +from litex.soc.cores.uart import UARTWishboneBridge +from litescope import LiteScopeAnalyzer + +# CRG ---------------------------------------------------------------------------------------------- + +class _CRG(Module): + def __init__(self, platform, sys_clk_freq): + self.rst = Signal() + self.clock_domains.cd_sys = ClockDomain() + self.clock_domains.cd_sys2x = ClockDomain(reset_less=True) + self.clock_domains.cd_idelay = ClockDomain() + + self.submodules.pll = pll = S7MMCM(speedgrade=-1) + #wtf if you do this it crashes later..request() takes the pin off 'available' list i think; so can't put to csr reg + #no idea how to modify the reset signal later + #maybe have to change this class to take a signal you create first? + #x = platform.request('user_btn',0) + self.comb += pll.reset.eq(self.rst) + #self.comb += pll.reset.eq(self.rst) + pll.register_clkin(platform.request('clk12'), 12e6) + pll.create_clkout(self.cd_sys, sys_clk_freq) + pll.create_clkout(self.cd_sys2x, 2*sys_clk_freq) + pll.create_clkout(self.cd_idelay, 200e6) + platform.add_false_path_constraints(self.cd_sys.clk, pll.clkin) # Ignore sys_clk to pll.clkin path created by SoC's rst. + + self.submodules.idelayctrl = S7IDELAYCTRL(self.cd_idelay) + +def _to_signal(obj): + return obj.raw_bits() if isinstance(obj, Record) else obj + +class BaseSoC(SoCCore): + + def __init__(self, sys_clk_freq=int(50e6), + with_analyzer=False, + uart_baudrate=115200, + **kwargs): + + coreUART = True + + # try build using different fpga's + #platform = cmod7.Platform() + platform = cmod7.Platform(fpga='xc7a200t-SBG484-1') # arty-200 + #platform = cmod7.Platform(fpga='xc7k325t-FFG676-1') #xc7k325t-ffv676-1 ?? need to try it on machine with license + + SoCCore.__init__(self, platform, sys_clk_freq, csr_data_width=32, + with_uart=coreUART, integrated_sram_size=0, integrated_rom_size=0, + ident='A2O Test', ident_version=True, uart_baudrate=uart_baudrate, + cpu_type='a2o') + + print(f'Building variant={self.cpu.variant}.') + + # no irq yet? should be able to connect + #self.add_constant('UART_POLLING') + + #!!!!!!!!!!!!!!!!!! + # any hints here on using uarts (to get the gpio one working)? + # cult-soft.de/2920/05/24/litex-uart-hub + # played a little below but didnt try if it works + #!!!!!!!!!!!!!!!!!! + + # this appears to be how to set up fixed csr order but not sure it works this way. https://github.com/litex-hub/linux-on-litex-vexriscv/blob/master/soc_linux.py + #SoCCore.csr_map + #self.csr_map = {**SoCCore.csr_map, **{ + #self.csr_map = { + # 'ctrl': 0, + # 'dna' : 1, + # 'uart': 2, + # 'i2c': 3, + # 'leds': 4 + #}} + #interrupt_map = {**soc_cls.interrupt_map, **{ + # 'uart': 0, + # 'timer0': 1, + #}} + + self.mem_map = { + 'csr': 0xFFF00000, + 'main_ram': 0x00100000, + 'rom': 0x00000000, + 'ram': 0x00010000, + } + + # CRG -------------------------------------------------------------------------------------- + self.submodules.crg = _CRG(platform, sys_clk_freq) + + if not coreUART: + self.submodules.serial_bridge = UARTWishboneBridge(platform.request('serial'), sys_clk_freq) + self.add_wb_master(self.serial_bridge.wishbone) + + self.add_csr('node_ctl') + self.add_csr('node_config') + self.add_csr('node_status') + + # ON-BOARD MEM ------------------------------------------------------------------------------ + + with open('rom.init', 'r') as file: + hexdata = file.read().replace('\n', '') + + #a2o how will this work for a2o? should allow 32BE or 64LE to load kernel+bios + # 1. core resets to 32BE + # 2. probably want to link kernel+bios in same mode, so have kernel deal with possible mode switch + # 3. load mem here in proper mode based on variant (A2O_32BE or A2O64_LE) + + outFile = open('mem_init', 'w') # write data immediately so available even if not building (sim) + # this seems to work (specified in BE in rom.init, instructions are decoded properly) + # BUT, vivado wants each line to be 4B to match width (at least for sim) + bytedata = [] + for i in range(0, len(hexdata), 8): + data = int(hexdata[i+6:i+8] + hexdata[i+4:i+6] + hexdata[i+2:i+4] + hexdata[i:i+2], 16) # BE->LE + bytedata.append(data) + outFile.write(hexdata[i+6:i+8] + hexdata[i+4:i+6] + hexdata[i+2:i+4] + hexdata[i:i+2] + '\n') + #bytedata.append(int(hexdata[i:i+2] + hexdata[i+2:i+4] + hexdata[i+4:i+6] + hexdata[i+6:i+8], 16)) + romdata = bytedata + print('Read ' + str(len(romdata)) + ' bytes for ROM data.') + outFile.close() + print('Wrote mem.init') + + self.add_rom('rom', origin=self.mem_map['rom'], size=0x10000, contents=romdata) # name, origin, size, contents=[], mode='r' + # make this sram to match what linker expects + self.add_ram('sram', origin=self.mem_map['ram'], size=0x10000) # name, origin, size, contents=[], mode='rw' + + # Leds ------------------------------------------------------------------------------------- + self.submodules.leds = LedChaser( + pads = platform.request_all('user_led'), + sys_clk_freq = sys_clk_freq + ) + self.add_csr('leds') + + # Buttons + self.submodules.buttons = GPIOIn( + pads = platform.request_all('user_btn') + ) + self.add_csr('buttons') + + # SRAM ------------------------------------------------------------------------------------- + self.add_ram('main_ram', origin=self.mem_map['main_ram'], size=0x100) + + # Analyzer --------------------------------------------------------------------------------- + if with_analyzer: + analyzer_signals = [ + self.cpu.dbus.stb, + self.cpu.dbus.cyc, + self.cpu.dbus.adr, + self.cpu.dbus.we, + self.cpu.dbus.ack, + self.cpu.dbus.sel, + self.cpu.dbus.dat_w, + self.cpu.dbus.dat_r, + ] + self.submodules.analyzer = LiteScopeAnalyzer(analyzer_signals, + depth = 512, + clock_domain = 'sys', + csr_csv = 'analyzer.csv') + self.add_csr('analyzer') + + + +# Build -------------------------------------------------------------------------------------------- + +def main(): + + parser = argparse.ArgumentParser(description='A2O Test') + parser.add_argument('--build', action='store_true', help='Build bitstream') + parser.add_argument('--load', action='store_true', help='Load bitstream') + parser.add_argument('--sys-clk-freq', default=100e6, help='System clock frequency (default: 100MHz)') + parser.add_argument('--with-analyzer', action='store_true', help='Include analyzer') + + builder_args(parser) + args = parser.parse_args() + + soc = BaseSoC( + sys_clk_freq = int(float(args.sys_clk_freq)), + with_analyzer = args.with_analyzer, + ) + + builder = Builder(soc, **builder_argdict(args)) + builder.build(run=args.build) + +if __name__ == '__main__': + main() diff --git a/dev/build/litex/a2o/__init__.py b/dev/build/litex/a2o/__init__.py new file mode 100644 index 0000000..292ef48 --- /dev/null +++ b/dev/build/litex/a2o/__init__.py @@ -0,0 +1 @@ +from .core import A2O \ No newline at end of file diff --git a/dev/build/litex/a2o/core.py b/dev/build/litex/a2o/core.py new file mode 100644 index 0000000..6323bb1 --- /dev/null +++ b/dev/build/litex/a2o/core.py @@ -0,0 +1,130 @@ +# A2O variants + +import os + +from migen import * + +from litex import get_data_mod +from litex.soc.interconnect import wishbone +from litex.soc.interconnect.csr import * +from litex.soc.cores.cpu import CPU + +dir = os.path.dirname(os.path.realpath(__file__)) + +# these select the top RTL file for each variant name +CPU_VARIANTS = { + 'WB_32BE' : 'a2owb', + 'WB_64LE' : 'a2owb', + 'standard' : 'a2owb' +} + +# 32 is from a2p plus -ma2; can get rid of some of them +GCC_FLAGS = { + 'WB_32BE' : '-ma2 -m32 -mbig-endian fomit-frame-pointer -Wall -fno-builtin -nostdinc -fno-stack-protector -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes', + 'WB_64LE' : '-ma2 -m64 -mlittle-endian -mabi=elfv2 -fnostack-protector' +} + +class A2O(CPU, AutoCSR): + name = 'a2o' + human_name = 'a2o' + variants = CPU_VARIANTS + family = 'ppc64' + data_width = 64 + endianness = 'little' + gcc_triple = ('powerpc64le-linux', 'powerpc64le-linux-gnu') + linker_output_format = 'elf64-powerpcle' + nop = 'nop' + io_regions = {0xF0000000: 0x10000000} # origin, length + + @property + def mem_map(self): + return { + 'rom': 0x00000000, # on-board + 'sram': 0x00004000, # on-board + 'main_ram': 0x00100000, # external 1M+ + 'csr': 0xF0000000, + } + + @property + def gcc_flags(self): + flags = GCC_FLAGS[self.variant] + flags += ' -D__a2o__' + return flags + + def __init__(self, platform, variant='WB'): + + if variant == 'standard': + variant = 'WB_64LE' + + if variant == 'WB_32LE': + self.family = 'ppc32' + self.data_width = 32 + self.endianness = 'big' + self.gcc_triple = 'powerpc-linux-gnu' + self.linker_output_format = 'elf32-powerpc' + + self.platform = platform + self.variant = variant + self.human_name = CPU_VARIANTS.get(variant, 'a2o') + self.external_variant = None + self.reset = Signal() + self.interrupt = Signal(3) + self.interruptS = Signal() + self.dbus = dbus = wishbone.Interface() + self.periph_buses = [dbus] + self.memory_buses = [] + self.enableDebug = False + self.enableJTAG = False + self.reset_address = 0x00000000 + + self.cpu_params = dict( + i_clk_1x = ClockSignal('sys'), + i_clk_2x = ClockSignal('sys2x'), + i_rst = ResetSignal() | self.reset, + + # how do i connect these to csr? + #i_cfg_wr = csr_0[0], # wr command - will be 3+ bit cmd + #i_cfg_dat = csr_1, # wr data + #o_status = status, # should update csr continuously + i_cfg_wr = 0, + + i_externalInterrupt = self.interrupt[0], + i_timerInterrupt = self.interrupt[1], + i_softwareInterrupt = self.interrupt[2], + i_externalInterruptS = self.interruptS, + + #wtf i guess you get these names from the Inteface() def - but what about other sigs? + o_wb_cyc = dbus.cyc, + o_wb_stb = dbus.stb, + o_wb_adr = Cat(dbus.adr,Signal(2)), + o_wb_we = dbus.we, + o_wb_sel = dbus.sel, + o_wb_datw = dbus.dat_w, + i_wb_ack = dbus.ack, + i_wb_datr = dbus.dat_r + ) + + def set_reset_address(self, reset_address): + if reset_address != self.reset_address: + print(f'Reset address = {self.reset_address} and cannot be changed here!') + assert False + + @staticmethod + def add_sources(platform, variant='WB_64LE'): + dir = os.path.dirname(os.path.realpath(__file__)) + + # unfortunately, vivado doesn't do the right thing and skip modules already analyzed, so overrides dirs don't work; rearrange override after + platform.add_source(os.path.join(dir, 'verilog/a2o_litex/')) # node, wrapper + platform.add_source(os.path.join(dir, 'verilog/trilib/')) # array, ff + platform.add_source(os.path.join(dir, 'verilog/trilib_clk1x/')) # 2r4w override + #platform.add_source(os.path.join(dir, 'verilog/unisims/')) # xil array + platform.add_source(os.path.join(dir, 'verilog/work/')) # core + + def use_external_variant(self, variant_filename): + self.external_variant = True + self.platform.add_source(variant_filename) + + def do_finalize(self): + if not self.external_variant: + self.add_sources(self.platform, self.variant) + self.specials += Instance('a2owb', **self.cpu_params) diff --git a/dev/build/litex/a2o/verilog b/dev/build/litex/a2o/verilog new file mode 120000 index 0000000..b628320 --- /dev/null +++ b/dev/build/litex/a2o/verilog @@ -0,0 +1 @@ +../../verilog \ No newline at end of file diff --git a/dev/build/litex/csr.csv b/dev/build/litex/csr.csv new file mode 100644 index 0000000..48b6a3c --- /dev/null +++ b/dev/build/litex/csr.csv @@ -0,0 +1,50 @@ +#-------------------------------------------------------------------------------- +# Auto-generated by LiteX (6932fc51) on 2022-08-03 07:06:41 +#-------------------------------------------------------------------------------- +csr_base,leds,0xfff01800,, +csr_base,buttons,0xfff02000,, +csr_base,ctrl,0xfff02800,, +csr_base,identifier_mem,0xfff03000,, +csr_base,timer0,0xfff03800,, +csr_base,uart,0xfff04000,, +csr_register,leds_out,0xfff01800,1,rw +csr_register,buttons_in,0xfff02000,1,ro +csr_register,ctrl_reset,0xfff02800,1,rw +csr_register,ctrl_scratch,0xfff02804,1,rw +csr_register,ctrl_bus_errors,0xfff02808,1,ro +csr_register,timer0_load,0xfff03800,1,rw +csr_register,timer0_reload,0xfff03804,1,rw +csr_register,timer0_en,0xfff03808,1,rw +csr_register,timer0_update_value,0xfff0380c,1,rw +csr_register,timer0_value,0xfff03810,1,ro +csr_register,timer0_ev_status,0xfff03814,1,ro +csr_register,timer0_ev_pending,0xfff03818,1,rw +csr_register,timer0_ev_enable,0xfff0381c,1,rw +csr_register,uart_rxtx,0xfff04000,1,rw +csr_register,uart_txfull,0xfff04004,1,ro +csr_register,uart_rxempty,0xfff04008,1,ro +csr_register,uart_ev_status,0xfff0400c,1,ro +csr_register,uart_ev_pending,0xfff04010,1,rw +csr_register,uart_ev_enable,0xfff04014,1,rw +csr_register,uart_txempty,0xfff04018,1,ro +csr_register,uart_rxfull,0xfff0401c,1,ro +constant,config_clock_frequency,50000000,, +constant,config_cpu_has_interrupt,None,, +constant,config_cpu_reset_addr,0,, +constant,config_cpu_type_a2o,None,, +constant,config_cpu_variant_standard,None,, +constant,config_cpu_human_name,a2owb,, +constant,config_cpu_nop,nop,, +constant,config_rom_init,1,, +constant,config_csr_data_width,32,, +constant,config_csr_alignment,32,, +constant,config_bus_standard,wishbone,, +constant,config_bus_data_width,32,, +constant,config_bus_address_width,32,, +constant,config_bus_bursting,0,, +constant,timer0_interrupt,1,, +constant,uart_interrupt,0,, +memory_region,rom,0x00000000,65536,cached +memory_region,sram,0x00010000,65536,cached +memory_region,main_ram,0x00100000,256,cached +memory_region,csr,0xfff00000,65536,io diff --git a/dev/build/litex/litex-install b/dev/build/litex/litex-install new file mode 120000 index 0000000..7bc409f --- /dev/null +++ b/dev/build/litex/litex-install @@ -0,0 +1 @@ +/home/wtf/projects/litex/litex \ No newline at end of file diff --git a/dev/build/litex/mem_init b/dev/build/litex/mem_init new file mode 100644 index 0000000..c0d0cf1 --- /dev/null +++ b/dev/build/litex/mem_init @@ -0,0 +1,3790 @@ +00040048 +02000044 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +0C100048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +54110048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +A66ABE7C +0000252C +E0008240 +008C603C +1F000038 +15004038 +00008038 +3F020039 +A6FB7C7C +A611407C +A609807C +A601007D +2C01004C +00004039 +00004A65 +3F004A61 +1E000038 +00008038 +01008464 +00008460 +00000039 +01000865 +00000861 +3F020861 +A611407D +A609807C +A601007D +2C01004C +0088603C +0F000038 +3F004038 +00008038 +3F020039 +A6FB7C7C +A611407C +A609807C +A601007D +2C01004C +0D000038 +00008038 +01008464 +00008460 +00000039 +01000865 +00000861 +3F020861 +A611407D +A609807C +A601007D +2C01004C +04000048 +00004039 +02804A65 +00B04A61 +2401407D +2C01004C +FA082080 +20000048 +00004039 +02804A65 +00B04A61 +2401407D +2C01004C +FE082080 +04000048 +0000603C +340C6360 +A603697C +A66A7E7C +2104804E +E4020048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000048 +00000000 +00000048 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000048 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +6E69616D +29692528 +0100000A +0000F8FF +0000F8FF +08080808 +08080808 +28282808 +08082828 +08080808 +08080808 +08080808 +08080808 +101010A0 +10101010 +10101010 +10101010 +04040404 +04040404 +10100404 +10101010 +41414110 +01414141 +01010101 +01010101 +01010101 +01010101 +10010101 +10101010 +42424210 +02424242 +02020202 +02020202 +02020202 +02020202 +10020202 +08101010 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +101010A0 +10101010 +10101010 +10101010 +10101010 +10101010 +10101010 +10101010 +01010101 +01010101 +01010101 +01010101 +01010101 +10010101 +01010101 +02010101 +02020202 +02020202 +02020202 +02020202 +02020202 +10020202 +02020202 +02020202 +726F6241 +2E646574 +00000000 +33323130 +37363534 +42413938 +46454443 +4A494847 +4E4D4C4B +5251504F +56555453 +5A595857 +00000000 +33323130 +37363534 +62613938 +66656463 +6A696867 +6E6D6C6B +7271706F +76757473 +7A797877 +00000000 +4C554E3C +00003E4C +80210000 +B0210000 +B0210000 +90210000 +B0210000 +B0210000 +B0210000 +B0210000 +B0210000 +B0210000 +B0210000 +70210000 +B0210000 +60210000 +B0210000 +B0210000 +A0210000 +E8280000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +20290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +48290000 +24240000 +38290000 +48290000 +48290000 +48290000 +48290000 +38290000 +48290000 +48290000 +48290000 +48290000 +6C270000 +14290000 +C4260000 +48290000 +48290000 +40250000 +48290000 +C0290000 +48290000 +48290000 +2C290000 +00000000 +F0FF2194 +781B697C +08002199 +0100203D +00202981 +01000939 +0100403D +00200A91 +08004189 +00004999 +00000060 +10002138 +2000804E +C0FF2194 +A602087C +44000190 +38006190 +0100203D +00202939 +0C002191 +0000203D +60102939 +10002191 +38002181 +0000092C +0C008241 +FFFF2039 +8C010048 +0000203D +30102939 +08002191 +28000048 +0C002181 +04004939 +0C004191 +08004181 +00004A81 +00004991 +08002181 +04002939 +08002191 +08004181 +0000203D +38102939 +40480A7C +CCFF8041 +0200203D +08E02939 +08002191 +24000048 +08002181 +04004939 +08004191 +00004039 +00004991 +08002181 +04002939 +08002191 +08004181 +0200203D +28E02939 +40480A7C +D0FF8041 +0000203D +000C6938 +3D2B0048 +77006038 +852B0048 +74006038 +7D2B0048 +66006038 +752B0048 +0A006038 +6D2B0048 +38008180 +0000203D +F0086938 +8231C64C +612D0048 +0003203D +34002191 +34002181 +A64B337D +00000060 +00002039 +30002191 +30002181 +A603367D +00000060 +00002039 +2C002191 +2C002181 +A6433D7D +00000060 +00002039 +28002191 +28002181 +A6433C7D +00000060 +00FE203D +24002191 +24002181 +A653307D +00000060 +A6FA367D +20002191 +20002181 +EA052955 +1C002191 +1C002181 +A6FB367D +00000060 +00002039 +18002191 +18002181 +A653307D +00000060 +00002039 +14002191 +14002181 +A653347D +00000060 +10002181 +784B237D +90030048 +00000048 +784B237D +44000180 +A603087C +40002138 +2000804E +E0FF2194 +A602087C +24000190 +18006190 +01002039 +0C002191 +18004181 +6708203D +09532961 +00480A7C +0C008241 +0080603C +B9F9FF4B +00002039 +08002191 +8C000048 +08002181 +3A102A55 +0000203D +60132939 +144A2A7D +00002981 +10002191 +08002181 +3A102A55 +0000203D +00142939 +144A2A7D +00002981 +14002191 +0C002181 +0000092C +1C008241 +10004181 +14002181 +00480A7C +0C008240 +01002039 +08000048 +00002039 +0C002191 +0C002181 +0000092C +10008240 +08002181 +784B237D +31F9FF4B +08002181 +01002939 +08002191 +08002181 +1F000928 +70FF8140 +21002039 +08002191 +08002181 +3A102A55 +0000203D +60132939 +144A2A7D +00002981 +10002191 +08002181 +3A102A55 +0000203D +00142939 +144A2A7D +00002981 +44062955 +14002191 +0C002181 +0000092C +1C008241 +10004181 +14002181 +00480A7C +0C008240 +01002039 +08000048 +00002039 +0C002191 +0C002181 +0000092C +10008240 +08002181 +784B237D +91F8FF4B +22002039 +08002191 +8C000048 +08002181 +3A102A55 +0000203D +60132939 +144A2A7D +00002981 +10002191 +08002181 +3A102A55 +0000203D +00142939 +144A2A7D +00002981 +14002191 +0C002181 +0000092C +1C008241 +10004181 +14002181 +00480A7C +0C008240 +01002039 +08000048 +00002039 +0C002191 +0C002181 +0000092C +10008240 +08002181 +784B237D +09F8FF4B +08002181 +01002939 +08002191 +08002181 +23000928 +70FF8140 +E9F7FF4B +00000048 +F0FF2194 +08006190 +0C008190 +58020048 +00000060 +10002138 +2000804E +00000048 +00C00100 +00000000 +00000000 +00000000 +6F666E69 +78657420 +65680074 +72656461 +78657420 +00000074 +00000000 +00000000 +00000000 +05C92258 +FFFFFFFF +A3D1B691 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +88EE117E +FFFFFFFF +FFFFFF7F +FFFFFFFF +FFFFFFFF +E6BD208C +FFFFFFFF +DFDAD076 +421F1115 +FFFFFFFF +508E1036 +FFFFFFFF +FFFFFFFF +ED0C8A32 +FFFFFFFF +FFFFFFFF +194C22AF +FFFFFFFF +FFFFFFFF +7AB224D6 +FFFFFFFF +FFFFFFFF +FFFFFFFF +2836FDDB +6E00F089 +FFFFFFFF +FFFFFFFF +FFFFFFFF +04110000 +00000100 +00000000 +0D000000 +14CC617C +9505237D +9273C37A +114C097E +15B11C7E +8688337A +D104607C +38B0097E +9105367C +D1002B7E +00000060 +00000060 +00000060 +00000100 +04000100 +08000100 +0C000100 +10000100 +14000100 +18000100 +1C000100 +20000100 +24000100 +28000100 +2C000100 +30000100 +14000048 +00000060 +00000060 +00000060 +00000060 +9C002390 +A0002380 +A603297C +A4002338 +D8004338 +00008180 +0000A280 +00008590 +04002138 +04004238 +ECFF0042 +0048803C +06008460 +00008590 +F4102080 +A6033B7C +38112080 +A6033A7C +80002380 +20F12F7C +84002380 +A603217C +88002380 +A603297C +8C002380 +A603287C +90002380 +A6CB2F7C +00000380 +04002380 +08004380 +10008380 +1400A380 +1800C380 +1C00E380 +20000381 +24002381 +28004381 +2C006381 +30008381 +3400A381 +3800C381 +3C00E381 +40000382 +44002382 +48004382 +4C006382 +50008382 +5400A382 +5800C382 +5C00E382 +60000383 +64002383 +68004383 +6C006383 +70008383 +7400A383 +7800C383 +7C00E383 +0C006380 +6400004C +0C000048 +00000060 +00000060 +A6CB2F7C +0000203C +60132160 +00000190 +08004190 +0C006190 +10008190 +1400A190 +1800C190 +1C00E190 +20000191 +24002191 +28004191 +2C006191 +30008191 +3400A191 +3800C191 +3C00E191 +40000192 +44002192 +48004192 +4C006192 +50008192 +5400A192 +5800C192 +5C00E192 +60000193 +64002193 +68004193 +6C006193 +70008193 +7400A193 +7800C193 +7C00E193 +A6CA4F7C +04004190 +2600407C +80004190 +A602417C +84004190 +A602497C +88004190 +A602487C +8C004190 +A6CA4F7C +90004190 +0000603C +60106360 +9C002380 +6708603C +09536360 +0F0E0048 +00000060 +00000060 +00000060 +00000060 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +00000060 +00000060 +00000060 +00000000 +13F375CD +FFFFFFFF +00000000 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +680C8A00 +FFFFFFFF +FFFFFF7F +FFFFFFFF +FFFFFFFF +E6BD208C +FFFFFFFF +68BFAE08 +01000080 +FFFFFFFF +00000000 +FFFFFFFF +FFFFFFFF +ED0C8A32 +FFFFFFFF +FFFFFFFF +194C22AF +FFFFFFFF +FFFFFFFF +7AB224D6 +FFFFFFFF +FFFFFFFF +FFFFFFFF +2836FD9B +6E00F098 +FFFFFFFF +FFFFFFFF +FFFFFFFF +04110000 +38000100 +F0FF2194 +781B697C +08002199 +08002189 +0000403D +04094A39 +AE482A7D +BC072955 +0000092C +10008241 +08002189 +E0FF2939 +08002199 +08002189 +784B237D +10002138 +2000804E +F0FF2194 +781B697C +080021B1 +080021A1 +2E402955 +34072A7D +080021A1 +3EC22955 +3E042955 +3407297D +784B497D +3407297D +3E042955 +784B237D +10002138 +2000804E +F0FF2194 +08006190 +08002181 +3E462A55 +08002181 +3EC22955 +2E042955 +784B4A7D +08002181 +2E402955 +1E022955 +784B4A7D +08002181 +0EC02955 +784B497D +784B237D +10002138 +2000804E +F0FF2194 +08006190 +0C008190 +28000048 +08002181 +00002989 +0000092C +0C008240 +00002039 +2C000048 +08002181 +01002939 +08002191 +08002181 +00004989 +0C002181 +3E062955 +40480A7C +C8FF8240 +08002181 +784B237D +10002138 +2000804E +E0FF2194 +18006190 +1C008190 +18002181 +08002191 +58000048 +1C002181 +0C002191 +30000048 +08002181 +00004989 +0C002181 +00002989 +40480A7C +0C008240 +08002181 +40000048 +0C002181 +01002939 +0C002191 +0C002181 +00002989 +0000092C +C8FF8240 +08002181 +01002939 +08002191 +08002181 +00002989 +0000092C +A0FF8240 +00002039 +784B237D +20002138 +2000804E +E0FF2194 +A602087C +24000190 +18006190 +1C008190 +18006180 +DD030048 +781B6A7C +18002181 +1452297D +08002191 +08002181 +00004989 +1C002181 +3E062955 +40480A7C +0C008240 +08002181 +24000048 +08002181 +FFFF2939 +08002191 +08004181 +18002181 +40480A7C +C8FF8040 +00002039 +784B237D +24000180 +A603087C +20002138 +2000804E +E0FF2194 +08006190 +0C008190 +1000A190 +30000048 +08002181 +00004989 +10002181 +3E062955 +40480A7C +0C008240 +08002181 +38000048 +08002181 +01002939 +08002191 +0C002181 +FFFF4939 +0C004191 +0000092C +14008241 +08002181 +00002989 +0000092C +B4FF8240 +00002039 +784B237D +20002138 +2000804E +E0FF2194 +18006190 +1C008190 +18002181 +08002191 +00000060 +1C004181 +01002A39 +1C002191 +18002181 +01000939 +18000191 +00004A89 +00004999 +00002989 +0000092C +D8FF8240 +08002181 +784B237D +20002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18002181 +08002191 +48000048 +1C002181 +00004989 +08002181 +00004999 +08002181 +00002989 +0000092C +10008241 +1C002181 +01002939 +1C002191 +08002181 +01002939 +08002191 +20002181 +FFFF2939 +20002191 +20002181 +0000092C +B4FF8240 +18002181 +784B237D +30002138 +2000804E +E0FF2194 +18006190 +1C008190 +18002181 +00004989 +1C002181 +01000939 +1C000191 +00002989 +5050297D +3E062955 +08002199 +08002189 +7407297D +0000092C +20008240 +18002181 +01004939 +18004191 +00002989 +0000092C +08008241 +B4FFFF4B +08002189 +7407297D +784B237D +20002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +00002039 +0C002191 +00002039 +08002199 +5C000048 +18002181 +00004989 +1C002181 +01000939 +1C000191 +00002989 +5050297D +3E062955 +08002199 +08002189 +7407297D +0000092C +38008240 +18002181 +01004939 +18004191 +00002989 +0000092C +20008241 +0C002181 +01002939 +0C002191 +0C004181 +20002181 +40480A7C +9CFF8041 +08002189 +7407297D +784B237D +30002138 +2000804E +E0FF2194 +18006190 +1C008190 +18002181 +08002191 +10000048 +18002181 +01002939 +18002191 +18002181 +00002989 +0000092C +E8FF8240 +00000060 +1C004181 +01002A39 +1C002191 +18002181 +01000939 +18000191 +00004A89 +00004999 +00002989 +0000092C +D8FF8240 +08002181 +784B237D +20002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18002181 +08002191 +20002181 +0000092C +7C008241 +10000048 +18002181 +01002939 +18002191 +18002181 +00002989 +0000092C +E8FF8240 +2C000048 +20002181 +FFFF2939 +20002191 +20002181 +0000092C +14008240 +18002181 +00004039 +00004999 +30000048 +1C004181 +01002A39 +1C002191 +18002181 +01000939 +18000191 +00004A89 +00004999 +00002989 +0000092C +B0FF8240 +08002181 +784B237D +30002138 +2000804E +E0FF2194 +18006190 +18002181 +08002191 +10000048 +08002181 +01002939 +08002191 +08002181 +00002989 +0000092C +E8FF8240 +08004181 +18002181 +5050297D +784B237D +20002138 +2000804E +E0FF2194 +18006190 +1C008190 +18002181 +08002191 +10000048 +08002181 +01002939 +08002191 +1C002181 +FFFF4939 +1C004191 +0000092C +14008241 +08002181 +00002989 +0000092C +D4FF8240 +08004181 +18002181 +5050297D +784B237D +20002138 +2000804E +E0FF2194 +18006190 +1C008190 +00002039 +10002191 +18002181 +08002191 +7C000048 +1C002181 +0C002191 +28000048 +08002181 +00004989 +0C002181 +00002989 +40480A7C +24008241 +0C002181 +01002939 +0C002191 +0C002181 +00002989 +0000092C +D0FF8240 +08000048 +00000060 +0C002181 +00002989 +0000092C +0C008240 +10002181 +30000048 +10002181 +01002939 +10002191 +08002181 +01002939 +08002191 +08002181 +00002989 +0000092C +7CFF8240 +10002181 +784B237D +20002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +00002039 +10002191 +18002181 +08002191 +1C002181 +0C002191 +50000048 +08002181 +00002989 +784B2A7D +0C002181 +00002989 +5050297D +10002191 +10002181 +0000092C +38008240 +08002181 +01002939 +08002191 +0C002181 +01002939 +0C002191 +20002181 +FFFF2939 +20002191 +20002181 +0000092C +ACFF8240 +08000048 +00000060 +10002181 +784B237D +30002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18002181 +08002191 +1C000048 +08002181 +01004939 +08004191 +1C004181 +3E064A55 +00004999 +20002181 +FFFF4939 +20004191 +0000092C +D8FF8240 +18002181 +784B237D +30002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18002181 +08002191 +1C002181 +0C002191 +24000048 +0C004181 +01002A39 +0C002191 +08002181 +01000939 +08000191 +00004A89 +00004999 +20002181 +FFFF4939 +20004191 +0000092C +D0FF8240 +18002181 +784B237D +30002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18004181 +1C002181 +40480A7C +50008141 +18002181 +08002191 +1C002181 +0C002191 +24000048 +0C004181 +01002A39 +0C002191 +08002181 +01000939 +08000191 +00004A89 +00004999 +20002181 +FFFF4939 +20004191 +0000092C +D0FF8240 +64000048 +18004181 +20002181 +144A2A7D +08002191 +1C004181 +20002181 +144A2A7D +0C002191 +2C000048 +0C002181 +FFFF2939 +0C002191 +08002181 +FFFF2939 +08002191 +0C002181 +00004989 +08002181 +00004999 +20002181 +FFFF4939 +20004191 +0000092C +C8FF8240 +18002181 +784B237D +30002138 +2000804E +E0FF2194 +A602087C +24000190 +18006190 +1C008190 +1C006180 +51FCFF4B +781B697C +0C002191 +0C002181 +0000092C +0C008240 +18002181 +68000048 +18006180 +2DFCFF4B +781B697C +08002191 +40000048 +08002181 +FFFF2939 +08002191 +0C00A180 +1C008180 +18006180 +65FDFF4B +781B697C +0000092C +0C008240 +18002181 +24000048 +18002181 +01002939 +18002191 +08004181 +0C002181 +40480A7C +B8FF8040 +00002039 +784B237D +24000180 +A603087C +20002138 +2000804E +D0FF2194 +18006190 +1C008190 +2000A190 +18002181 +08002191 +30000048 +1C002181 +3E062A55 +08002181 +01000939 +08000191 +00002989 +40480A7C +10008240 +08002181 +FFFF2939 +1C000048 +20002181 +FFFF4939 +20004191 +0000092C +C4FF8240 +00002039 +784B237D +30002138 +2000804E +D0FF2194 +A602087C +34000190 +18006190 +1C008190 +2000A190 +00002039 +08002191 +20002181 +0000092C +8C008240 +0A002039 +20002191 +18002181 +00002989 +30000928 +E4008240 +08002039 +20002191 +18002181 +01002939 +18002191 +18002181 +00002989 +784B237D +41F5FF4B +781B697C +58000928 +B4008240 +18002181 +01002939 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +44002971 +0000092C +8C008241 +18002181 +01002939 +18002191 +10002039 +20002191 +74000048 +20002181 +1000092C +68008240 +18002181 +00002989 +30000928 +58008240 +18002181 +01002939 +00002989 +784B237D +C5F4FF4B +781B697C +58000928 +38008240 +18002181 +02002939 +18002191 +28000048 +08004181 +20002181 +D6492A7D +0C004181 +144A2A7D +08002191 +18002181 +01002939 +18002191 +18002181 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +44002971 +0000092C +64008241 +18002181 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +7A072955 +0000092C +14008241 +18002181 +00002989 +D0FF2939 +1C000048 +18002181 +00002989 +784B237D +1DF4FF4B +781B697C +C9FF2939 +0C002191 +0C004181 +20002181 +40480A7C +5CFF8041 +1C002181 +0000092C +10008241 +1C002181 +18004181 +00004991 +08002181 +784B237D +34000180 +A603087C +30002138 +2000804E +E0FF2194 +A602087C +24000190 +08006190 +0C008190 +1000A190 +08002181 +00002989 +2D000928 +2C008240 +08002181 +01002939 +10004181 +7853457D +0C008180 +784B237D +E9FDFF4B +781B697C +D000297D +1C000048 +10002181 +784B257D +0C008180 +08006180 +C9FDFF4B +781B697C +784B237D +24000180 +A603087C +20002138 +2000804E +E0FF2194 +18006190 +00002039 +08002191 +30000048 +08002181 +0A00491D +18002181 +00002981 +0100E938 +18000181 +0000E890 +00002989 +144A2A7D +D0FF2939 +08002191 +18002181 +00002981 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +7A072955 +0000092C +B0FF8240 +08002181 +784B237D +20002138 +2000804E +70FF2194 +68006190 +6C008190 +7000A190 +7400C190 +7800E190 +7C000191 +80002191 +80002181 +72062955 +0000092C +10008241 +0000203D +100A2939 +0C000048 +0000203D +380A2939 +10002191 +80002181 +F6062955 +0000092C +10008241 +80002181 +3C002955 +80002191 +74002181 +0100092C +10008140 +74002181 +2400092C +0C008140 +00002039 +FC030048 +80002181 +FE072955 +0000092C +0C008241 +30002039 +08000048 +20002039 +14002199 +00002039 +08002199 +80002181 +BC072955 +0000092C +80008241 +70002181 +0000092C +28008040 +2D002039 +08002199 +70002181 +D000297D +70002191 +78002181 +FFFF2939 +78002191 +50000048 +80002181 +7A072955 +0000092C +1C008241 +2B002039 +08002199 +78002181 +FFFF2939 +78002191 +28000048 +80002181 +38072955 +0000092C +18008241 +20002039 +08002199 +78002181 +FFFF2939 +78002191 +80002181 +B4062955 +0000092C +38008241 +74002181 +1000092C +14008240 +78002181 +FEFF2939 +78002191 +1C000048 +74002181 +0800092C +10008240 +78002181 +FFFF2939 +78002191 +00002039 +0C002191 +70002181 +0000092C +6C008240 +0C002181 +01004939 +0C004191 +08004139 +144A2A7D +30004039 +10004999 +58000048 +74004181 +70002181 +9653097D +D651487D +50482A7D +10004181 +144A4A7D +0C002181 +01000939 +0C000191 +00004A89 +08000139 +144A287D +10004999 +74002181 +70004181 +964B2A7D +70002191 +70002181 +0000092C +B0FF8240 +0C004181 +7C002181 +00480A7C +0C008140 +0C002181 +7C002191 +78004181 +7C002181 +5050297D +78002191 +80002181 +11002971 +0000092C +44008240 +2C000048 +68004181 +6C002181 +40480A7C +10008040 +68002181 +20004039 +00004999 +68002181 +01002939 +68002191 +78002181 +FFFF4939 +78004191 +0000092C +C8FF8141 +08002189 +0000092C +2C008241 +68004181 +6C002181 +40480A7C +10008040 +68002181 +08004189 +00004999 +68002181 +01002939 +68002191 +80002181 +B4062955 +0000092C +9C008241 +74002181 +0800092C +30008240 +68004181 +6C002181 +40480A7C +10008040 +68002181 +30004039 +00004999 +68002181 +01002939 +68002191 +64000048 +74002181 +1000092C +58008240 +68004181 +6C002181 +40480A7C +10008040 +68002181 +30004039 +00004999 +68002181 +01002939 +68002191 +68004181 +6C002181 +40480A7C +14008040 +10002181 +21004989 +68002181 +00004999 +68002181 +01002939 +68002191 +80002181 +F6062955 +0000092C +70008240 +2C000048 +68004181 +6C002181 +40480A7C +10008040 +68002181 +14004189 +00004999 +68002181 +01002939 +68002191 +78002181 +FFFF4939 +78004191 +0000092C +C8FF8141 +2C000048 +68004181 +6C002181 +40480A7C +10008040 +68002181 +30004039 +00004999 +68002181 +01002939 +68002191 +7C002181 +FFFF4939 +7C004191 +0C004181 +00480A7C +C4FF8041 +38000048 +68004181 +6C002181 +40480A7C +1C008040 +18004139 +0C002181 +144A2A7D +00004989 +68002181 +00004999 +68002181 +01002939 +68002191 +0C002181 +FFFF4939 +0C004191 +0000092C +BCFF8141 +2C000048 +68004181 +6C002181 +40480A7C +10008040 +68002181 +20004039 +00004999 +68002181 +01002939 +68002191 +78002181 +FFFF4939 +78004191 +0000092C +C8FF8141 +68002181 +784B237D +90002138 +2000804E +D0FF2194 +A602087C +34000190 +18006190 +1C008190 +2000A190 +2400C190 +2400C180 +2000A180 +1C008180 +18006180 +4D040048 +781B697C +08002191 +08004181 +1C002181 +40480A7C +10008041 +1C002181 +FFFF2939 +08000048 +08002181 +784B237D +34000180 +A603087C +30002138 +2000804E +80FF2194 +A602087C +84000190 +18006190 +1C008190 +2000A190 +2C00C190 +3000E190 +34000191 +38002191 +3C004191 +24008640 +400021D8 +480041D8 +500061D8 +580081D8 +6000A1D8 +6800C1D8 +7000E1D8 +780001D9 +03002039 +0C002199 +00002039 +0D002199 +88002139 +10002191 +20002139 +14002191 +0C002139 +784B267D +2000A180 +1C008180 +18006180 +89030048 +781B697C +08002191 +08002181 +784B237D +84000180 +A603087C +80002138 +2000804E +80FF2194 +A602087C +84000190 +18006190 +1C008190 +2000A190 +2C00C190 +3000E190 +34000191 +38002191 +3C004191 +24008640 +400021D8 +480041D8 +500061D8 +580081D8 +6000A1D8 +6800C1D8 +7000E1D8 +780001D9 +03002039 +0C002199 +00002039 +0D002199 +88002139 +10002191 +20002139 +14002191 +0C002139 +784B267D +2000A180 +1C008180 +18006180 +E1020048 +781B697C +08002191 +08004181 +1C002181 +40480A7C +10008041 +1C002181 +FFFF2939 +08000048 +08002181 +784B237D +84000180 +A603087C +80002138 +2000804E +E0FF2194 +A602087C +24000190 +08006190 +0C008190 +1000A190 +1000C180 +0C00A180 +FF7F203D +FFFF2461 +08006180 +75020048 +781B697C +784B237D +24000180 +A603087C +20002138 +2000804E +80FF2194 +A602087C +84000190 +18006190 +1C008190 +2000A190 +2400C190 +2800E190 +2C000191 +30002191 +34004191 +24008640 +380021D8 +400041D8 +480061D8 +500081D8 +5800A1D8 +6000C1D8 +6800E1D8 +700001D9 +02002039 +0C002199 +00002039 +0D002199 +88002139 +10002191 +18002139 +14002191 +0C002139 +784B267D +1C00A180 +FF7F203D +FFFF2461 +18006180 +D1010048 +781B697C +08002191 +08002181 +784B237D +84000180 +A603087C +80002138 +2000804E +0200203D +14E02981 +8100291D +1936293D +E9624939 +0200203D +14E04991 +0200203D +14E02981 +784B237D +2000804E +F0FF2194 +08006190 +0200203D +08004181 +14E04991 +00000060 +10002138 +2000804E +F0FF2194 +A602087C +14000190 +0000203D +040A6938 +8231C64C +1D110048 +00000048 +E0FF2194 +A602087C +24000190 +18006190 +01002039 +08002191 +08002189 +0000092C +14008241 +18006180 +75EBFF4B +781B697C +08000048 +18002181 +784B237D +24000180 +A603087C +20002138 +2000804E +E0FF2194 +A602087C +24000190 +781B697C +180021B1 +01002039 +08002191 +08002189 +0000092C +18008241 +180021A1 +784B237D +E1EAFF4B +781B697C +08000048 +180021A1 +784B237D +24000180 +A603087C +20002138 +2000804E +E0FF2194 +A602087C +24000190 +18006190 +01002039 +08002191 +08002189 +0000092C +14008241 +18006180 +D5EAFF4B +781B697C +08000048 +18002181 +784B237D +24000180 +A603087C +20002138 +2000804E +E0FF2194 +A602087C +24000190 +781B697C +180021B1 +01002039 +08002191 +08002189 +0000092C +18008241 +180021A1 +784B237D +41EAFF4B +781B697C +08000048 +180021A1 +784B237D +24000180 +A603087C +20002138 +2000804E +A0FF2194 +A602087C +64000190 +48006190 +4C008190 +5000A190 +5400C190 +4C002181 +0000092C +0C008040 +00002039 +3C0D0048 +48002181 +18002191 +48004181 +4C002181 +144A2A7D +1C002191 +1C004181 +48002181 +40480A7C +BC0C8040 +FFFF2039 +1C002191 +1C004181 +48002181 +5050297D +4C002191 +A00C0048 +50002181 +00002989 +25000928 +34008241 +18004181 +1C002181 +40480A7C +14008040 +50002181 +00004989 +18002181 +00004999 +18002181 +01002939 +18002191 +540C0048 +00002039 +24002191 +50002181 +01002939 +50002191 +50002181 +00002989 +E0FF2939 +10000928 +7C008141 +3A102A55 +0000203D +680A2939 +144A2A7D +00004981 +0000203D +680A2939 +144A2A7D +A603297D +2004804E +24002181 +10002961 +24002191 +ACFFFF4B +24002181 +04002961 +24002191 +9CFFFF4B +24002181 +08002961 +24002191 +8CFFFF4B +24002181 +20002961 +24002191 +7CFFFF4B +24002181 +01002961 +24002191 +6CFFFF4B +FFFF2039 +28002191 +50002181 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +7A072955 +0000092C +1C008241 +50002139 +784B237D +01F5FF4B +781B697C +28002191 +9C000048 +50002181 +00002989 +2A000928 +8C008240 +50002181 +01002939 +50002191 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +28002191 +28002181 +0000092C +1C008040 +28002181 +D000297D +28002191 +24002181 +10002961 +24002191 +FFFF2039 +2C002191 +50002181 +00002989 +2E000928 +D4008240 +50002181 +01002939 +50002191 +50002181 +00002989 +784B2A7D +0000203D +04092939 +AE50297D +7A072955 +0000092C +1C008241 +50002139 +784B237D +09F4FF4B +781B697C +2C002191 +78000048 +50002181 +00002989 +2A000928 +68008240 +50002181 +01002939 +50002191 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +2C002191 +2C002181 +0000092C +0C008040 +00002039 +2C002191 +FFFF2039 +30002191 +50002181 +00002989 +68000928 +54008241 +50002181 +00002989 +6C000928 +44008241 +50002181 +00002989 +4C000928 +34008241 +50002181 +00002989 +5A000928 +24008241 +50002181 +00002989 +7A000928 +14008241 +50002181 +00002989 +74000928 +4C008240 +50002181 +00002989 +30002191 +50002181 +01002939 +50002191 +30002181 +6C00092C +28008240 +50002181 +00002989 +6C000928 +18008240 +4C002039 +30002191 +50002181 +01002939 +50002191 +0A002039 +14002191 +50002181 +00002989 +DBFF2939 +53000928 +50058141 +3A102A55 +0000203D +AC0A2939 +144A2A7D +00004981 +0000203D +AC0A2939 +144A2A7D +A603297D +2004804E +24002181 +F6062955 +0000092C +48008240 +2C000048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +20004039 +00004999 +18002181 +01002939 +18002191 +28002181 +FFFF2939 +28002191 +28002181 +0000092C +C4FF8141 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +44002199 +18004181 +1C002181 +40480A7C +10008040 +18002181 +44004189 +00004999 +18002181 +01002939 +18002191 +2C000048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +20004039 +00004999 +18002181 +01002939 +18002191 +28002181 +FFFF2939 +28002191 +28002181 +0000092C +C4FF8141 +E0070048 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +20002191 +20002181 +0000092C +10008240 +0000203D +600A2939 +20002191 +2C002181 +784B247D +20006180 +25EAFF4B +781B697C +34002191 +24002181 +F6062955 +0000092C +48008240 +2C000048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +20004039 +00004999 +18002181 +01002939 +18002191 +28002181 +FFFF4939 +28004191 +34004181 +00480A7C +C4FF8041 +00002039 +10002191 +48000048 +18004181 +1C002181 +40480A7C +14008040 +20002181 +00004989 +18002181 +00004999 +18002181 +01002939 +18002191 +20002181 +01002939 +20002191 +10002181 +01002939 +10002191 +10004181 +34002181 +00480A7C +B0FF8041 +2C000048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +20004039 +00004999 +18002181 +01002939 +18002191 +28002181 +FFFF4939 +28004191 +34004181 +00480A7C +C4FF8041 +5C060048 +28004181 +FFFF2039 +00480A7C +18008240 +08002039 +28002191 +24002181 +21002961 +24002191 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +784B2A7D +24002181 +2C000181 +2800E180 +1000C038 +7853457D +1C008180 +18006180 +BDEFFF4B +781B697C +18002191 +B4050048 +30002181 +6C00092C +74008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +40002191 +18004181 +48002181 +5050497D +40002181 +00004991 +38050048 +30002181 +5A00092C +10008241 +30002181 +7A00092C +7C008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +3C002191 +18004181 +48002181 +5050297D +784B2A7D +3C002181 +00004991 +00000060 +A8040048 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +38002191 +18004181 +48002181 +5050497D +38002181 +00004991 +38040048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +25004039 +00004999 +18002181 +01002939 +18002191 +0C040048 +08002039 +14002191 +A8000048 +24002181 +40002961 +24002191 +10002039 +14002191 +90000048 +24002181 +02002961 +24002191 +7C000048 +18004181 +1C002181 +40480A7C +10008040 +18002181 +25004039 +00004999 +18002181 +01002939 +18002191 +50002181 +00002989 +0000092C +34008241 +18004181 +1C002181 +40480A7C +14008040 +50002181 +00004989 +18002181 +00004999 +18002181 +01002939 +18002191 +70030048 +50002181 +FFFF2939 +50002191 +60030048 +00000060 +30002181 +4C00092C +90008240 +54002181 +00002989 +54004181 +00004A89 +FE074A55 +3E064A55 +144A4A7D +3E064855 +54004181 +00000A99 +06000928 +30008141 +54002181 +08004981 +54002181 +00002989 +02000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +20000048 +54002181 +04002981 +07002939 +38002955 +08000939 +54004181 +04000A91 +00004981 +04006981 +08004191 +0C006191 +98020048 +30002181 +6C00092C +88008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +0C002191 +00002039 +08002191 +24002181 +BC072955 +0000092C +1C028241 +0C002181 +0C002191 +70FE297D +08002191 +08020048 +30002181 +5A00092C +10008241 +30002181 +7A00092C +68008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +0C002191 +00002039 +08002191 +8C010048 +30002181 +7400092C +68008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +0C002191 +70FE297D +08002191 +1C010048 +30002181 +6800092C +90008240 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +3E042955 +0C002191 +00002039 +08002191 +24002181 +BC072955 +0000092C +9C008241 +0E0021A1 +3407297D +0C002191 +70FE297D +08002191 +84000048 +54002181 +00002989 +07000928 +30008141 +54002181 +08004981 +54002181 +00002989 +01000939 +3E060755 +54000181 +0000E898 +3A102955 +144A2A7D +18000048 +54002181 +04002981 +04000939 +54004181 +04000A91 +00002981 +0C002191 +00002039 +08002191 +24002181 +BC072955 +0000092C +14008241 +0C002181 +0C002191 +70FE297D +08002191 +0C004181 +24002181 +2C000181 +2800E180 +1400C180 +7853457D +1C008180 +18006180 +09EAFF4B +781B697C +18002191 +50002181 +01002939 +50002191 +50002181 +00002989 +0000092C +58F38240 +4C002181 +0000092C +34008241 +18004181 +1C002181 +40480A7C +14008040 +18002181 +00004039 +00004999 +14000048 +1C002181 +FFFF2939 +00004039 +00004999 +18004181 +48002181 +5050297D +784B237D +64000180 +A603087C +60002138 +2000804E +F0FF2194 +08006190 +0200203D +08004181 +18E04991 +00000060 +10002138 +2000804E +F0FF2194 +08006190 +0C008190 +0200203D +08004181 +1CE04991 +0200203D +0C004181 +20E04991 +00000060 +10002138 +2000804E +F0FF2194 +A602087C +14000190 +08006190 +0200203D +18E02981 +0000092C +20008241 +0200203D +18E02981 +08004181 +3E064A55 +7853437D +A603297D +2104804E +08002181 +784B237D +14000180 +A603087C +10002138 +2000804E +F0FF2194 +A602087C +14000190 +0200203D +20E02981 +0000092C +F4FF8241 +0200203D +20E02981 +A603297D +2104804E +781B697C +0000092C +D8FF8241 +0200203D +1CE02981 +A603297D +2104804E +781B697C +784B237D +14000180 +A603087C +10002138 +2000804E +F0FF2194 +A602087C +14000190 +0200203D +20E02981 +0000092C +28008241 +0200203D +20E02981 +A603297D +2104804E +781B697C +0000092C +0C008241 +01002039 +08000048 +00002039 +784B237D +14000180 +A603087C +10002138 +2000804E +F0FF2194 +A602087C +14000190 +08006190 +08006180 +25000048 +0A006038 +D9FEFF4B +01002039 +784B237D +14000180 +A603087C +10002138 +2000804E +F0FF2194 +A602087C +14000190 +08006190 +20000048 +08002181 +00002989 +784B237D +9DFEFF4B +08002181 +01002939 +08002191 +08002181 +00002989 +0000092C +D8FF8240 +00000060 +00000060 +14000180 +A603087C +10002138 +2000804E +E0FE2194 +A602087C +24010190 +18016190 +1C018190 +0C002139 +1C01C180 +1801A180 +00018038 +784B237D +F9EBFF4B +781B697C +08002191 +0C004139 +08002181 +144A2A7D +00004039 +00004999 +0C002139 +784B237D +59FFFF4B +08002181 +784B237D +24010180 +A603087C +20012138 +2000804E +80FF2194 +A602087C +84000190 +18006190 +24008190 +2800A190 +2C00C190 +3000E190 +34000191 +38002191 +3C004191 +24008640 +400021D8 +480041D8 +500061D8 +580081D8 +6000A1D8 +6800C1D8 +7000E1D8 +780001D9 +01002039 +0C002199 +00002039 +0D002199 +88002139 +10002191 +20002139 +14002191 +0C002139 +784B247D +18006180 +19FFFF4B +781B697C +08002191 +08002181 +784B237D +84000180 +A603087C +80002138 +2000804E diff --git a/dev/build/litex/platforms/cmod7.py b/dev/build/litex/platforms/cmod7.py new file mode 100644 index 0000000..ef3a8c5 --- /dev/null +++ b/dev/build/litex/platforms/cmod7.py @@ -0,0 +1,172 @@ +#wtf from litex-boards; added some stuff from https://github.com/litex-hub/fpga_101 + +# +# This file is part of LiteX-Boards. +# +# Copyright (c) 2018-2019 Florent Kermarrec +# SPDX-License-Identifier: BSD-2-Clause + +from litex.build.generic_platform import * +from litex.build.xilinx import XilinxPlatform, VivadoProgrammer +from litex.build.openocd import OpenOCD + +# IOs ---------------------------------------------------------------------------------------------- + +_io = [ + # Clk / Rst + ('clk12', 0, Pins('L17'), IOStandard('LVCMOS33')), + + # Leds + ('user_led', 0, Pins('A17'), IOStandard('LVCMOS33')), # LD1 + ('user_led', 1, Pins('C16'), IOStandard('LVCMOS33')), # LD2 + + # RGB + ('user_rgb_led', 0, + Subsignal('r', Pins('C17')), + Subsignal('g', Pins('B16')), + Subsignal('b', Pins('B17')), + IOStandard('LVCMOS33'), + ), + + # Buttons + ('user_btn', 0, Pins('A18'), IOStandard('LVCMOS33')), # B0 + ('user_btn', 1, Pins('B18'), IOStandard('LVCMOS33')), # B1 + + #### test to see if can add uart by changing platform + ('uart_0', 0, + Subsignal('tx', Pins('J3')), # 10 + Subsignal('rx', Pins('J1')), # 11 + IOStandard('LVCMOS33'), + ), + + # GPIO + ('digital', 0, Pins('M3'), IOStandard('LVCMOS33')), # 1 + ('digital', 1, Pins('L3'), IOStandard('LVCMOS33')), # 2 + ('digital', 2, Pins('A16'), IOStandard('LVCMOS33')), # 3 + ('digital', 3, Pins('K3'), IOStandard('LVCMOS33')), # 4 + ('digital', 4, Pins('C15'), IOStandard('LVCMOS33')), # 5 + ('digital', 5, Pins('H1'), IOStandard('LVCMOS33')), # 6 + ('digital', 6, Pins('A15'), IOStandard('LVCMOS33')), # 7 + ('digital', 7, Pins('B15'), IOStandard('LVCMOS33')), # 8 + ('digital', 8, Pins('A14'), IOStandard('LVCMOS33')), # 9 + ('digital', 9, Pins('J3'), IOStandard('LVCMOS33')), # 10 + ('digital', 10, Pins('J1'), IOStandard('LVCMOS33')), # 11 + ('digital', 11, Pins('K2'), IOStandard('LVCMOS33')), # 12 + ('digital', 12, Pins('L1'), IOStandard('LVCMOS33')), # 13 + ('digital', 13, Pins('L2'), IOStandard('LVCMOS33')), # 14 + ('digital', 14, Pins('M1'), IOStandard('LVCMOS33')), # 17 + ('digital', 15, Pins('N3'), IOStandard('LVCMOS33')), # 18 + ('digital', 16, Pins('P3'), IOStandard('LVCMOS33')), # 19 + ('digital', 17, Pins('M2'), IOStandard('LVCMOS33')), # 20 + ('digital', 18, Pins('N1'), IOStandard('LVCMOS33')), # 21 + ('digital', 19, Pins('N2'), IOStandard('LVCMOS33')), # 22 + ('digital', 20, Pins('P1'), IOStandard('LVCMOS33')), # 23 + ('digital', 21, Pins('R3'), IOStandard('LVCMOS33')), # 26 + ('digital', 22, Pins('T3'), IOStandard('LVCMOS33')), # 27 + ('digital', 23, Pins('R2'), IOStandard('LVCMOS33')), # 28 + ('digital', 24, Pins('T1'), IOStandard('LVCMOS33')), # 29 + ('digital', 25, Pins('T2'), IOStandard('LVCMOS33')), # 30 + ('digital', 26, Pins('U1'), IOStandard('LVCMOS33')), # 31 + ('digital', 27, Pins('W2'), IOStandard('LVCMOS33')), # 32 + ('digital', 28, Pins('V2'), IOStandard('LVCMOS33')), # 33 + ('digital', 29, Pins('W3'), IOStandard('LVCMOS33')), # 34 + ('digital', 30, Pins('V3'), IOStandard('LVCMOS33')), # 35 + ('digital', 31, Pins('W5'), IOStandard('LVCMOS33')), # 36 + ('digital', 32, Pins('V4'), IOStandard('LVCMOS33')), # 37 + ('digital', 33, Pins('U4'), IOStandard('LVCMOS33')), # 38 + ('digital', 34, Pins('V5'), IOStandard('LVCMOS33')), # 39 + ('digital', 35, Pins('W4'), IOStandard('LVCMOS33')), # 40 + ('digital', 36, Pins('U5'), IOStandard('LVCMOS33')), # 41 + ('digital', 37, Pins('U2'), IOStandard('LVCMOS33')), # 42 + ('digital', 38, Pins('W6'), IOStandard('LVCMOS33')), # 43 + ('digital', 39, Pins('U3'), IOStandard('LVCMOS33')), # 44 + ('digital', 40, Pins('U7'), IOStandard('LVCMOS33')), # 45 + ('digital', 41, Pins('W7'), IOStandard('LVCMOS33')), # 46 + ('digital', 42, Pins('U8'), IOStandard('LVCMOS33')), # 47 + ('digital', 43, Pins('V8'), IOStandard('LVCMOS33')), # 48 + + # declare these to use GPIO 15/16 as analog to xadc + ('analog', 0, + Subsignal('n'), Pins('G2'), + Subsignal('p'), Pins('G3'), + IOStandard('LVCMOS33') + ), + + ('analog', 1, + Subsignal('n'), Pins('J2'), + Subsignal('p'), Pins('H2'), + IOStandard('LVCMOS33') + ), + + # PMOD + ('pmod', 0, Pins('G17'), IOStandard('LVCMOS33')), # 1 + ('pmod', 1, Pins('G19'), IOStandard('LVCMOS33')), # 2 + ('pmod', 2, Pins('N18'), IOStandard('LVCMOS33')), # 3 + ('pmod', 3, Pins('L18'), IOStandard('LVCMOS33')), # 4 + ('pmod', 4, Pins('H17'), IOStandard('LVCMOS33')), # 7 + ('pmod', 5, Pins('H19'), IOStandard('LVCMOS33')), # 8 + ('pmod', 6, Pins('J19'), IOStandard('LVCMOS33')), # 9 + ('pmod', 7, Pins('K18'), IOStandard('LVCMOS33')), # 10 + + # Serial + ('serial', 0, + Subsignal('tx', Pins('J18')), + Subsignal('rx', Pins('J17')), + IOStandard('LVCMOS33'), + ), + + # JTAG: TMS(W9),TCK(C8),TDI(W10),TDO(W8) + + # Crypto 1-Wire (?) - goes to ATSHA204A-MAHCZ-T + ('crypto_sda', 0, Pins('D17'), IOStandard('LVCMOS33')), + + # QSPI + ('mx25l3233_spi', 0, + Subsignal('cs', Pins('K19')), + Subsignal('mosi', Pins('D18')), # DQ0 + Subsignal('miso', Pins('D19')), # DQ1 + #Subsignal('clk', Pins('E19')), # ref says E19; doesn't show in xdc; C11 in schematic +# ref: On other boards, SCK is an exception because it remains a dedicated pin even after configuration, +# however, on the Cmod A7 the SCK signal is routed to an additional general purpose pin that can be +# accessed after configuration (pin E19). This allows access to this pin without having to instantiate +# the special FPGA primitive called STARTUPE2. + Subsignal('wp', Pins('G18')), # DQ2 + Subsignal('hld', Pins('F18')), # DQ3 + IOStandard('LVCMOS33') + ), + + # SRAM + ('issiram', 0, + Subsignal('addr', Pins('M18 M19 K17 N17 P17 P18 R18 W19 U19 V19 W18 T17 T18 U17 U18 V16 W16 W17 V15'), + IOStandard('LVCMOS33') + ), + Subsignal('data', Pins('W15 W13 W14 U15 U16 V13 V14 U14'), + IOStandard('LVCMOS33') + ), + #this shows up as input! issiram_oen + Subsignal('oen', Pins('P19'), IOStandard('LVCMOS33')), + Subsignal('wen', Pins('R19'), IOStandard('LVCMOS33')), + Subsignal('cen', Pins('N19'), IOStandard('LVCMOS33')), + Misc('SLEW=FAST') + ), + +] + +# Platform ----------------------------------------------------------------------------------------- + +class Platform(XilinxPlatform): + default_clk_name = 'clk12' + default_clk_period = 1e9/12e6 + + def __init__(self, fpga=None): + if fpga is None: # real cmod7 + XilinxPlatform.__init__(self, 'xc7a35t-CPG236-1', _io, toolchain='vivado') + else: # phony for build + XilinxPlatform.__init__(self, fpga, _io, toolchain='vivado') + + #def create_programmer(self): + # return OpenOCD('openocd_xc7_ft2232.cfg', 'bscan_spi_xc7a100t.bit') + + def do_finalize(self, fragment): + XilinxPlatform.do_finalize(self, fragment) + self.add_period_constraint(self.lookup_request('clk12', loose=True), self.default_clk_period) diff --git a/dev/build/litex/platforms/nexys4ddr.py b/dev/build/litex/platforms/nexys4ddr.py new file mode 100644 index 0000000..6d10118 --- /dev/null +++ b/dev/build/litex/platforms/nexys4ddr.py @@ -0,0 +1,181 @@ +#wtf from litex-boards; added some stuff from https://github.com/litex-hub/fpga_101 + +# +# This file is part of LiteX-Boards. +# +# Copyright (c) 2018-2019 Florent Kermarrec +# SPDX-License-Identifier: BSD-2-Clause + +from litex.build.generic_platform import * +from litex.build.xilinx import XilinxPlatform, VivadoProgrammer +from litex.build.openocd import OpenOCD + +# IOs ---------------------------------------------------------------------------------------------- + +_io = [ + # Clk / Rst + ("clk100", 0, Pins("E3"), IOStandard("LVCMOS33")), + ("cpu_reset", 0, Pins("C12"), IOStandard("LVCMOS33")), + + # Leds + ("user_led", 0, Pins("H17"), IOStandard("LVCMOS33")), + ("user_led", 1, Pins("K15"), IOStandard("LVCMOS33")), + ("user_led", 2, Pins("J13"), IOStandard("LVCMOS33")), + ("user_led", 3, Pins("N14"), IOStandard("LVCMOS33")), + ("user_led", 4, Pins("R18"), IOStandard("LVCMOS33")), + ("user_led", 5, Pins("V17"), IOStandard("LVCMOS33")), + ("user_led", 6, Pins("U17"), IOStandard("LVCMOS33")), + ("user_led", 7, Pins("U16"), IOStandard("LVCMOS33")), + ("user_led", 8, Pins("V16"), IOStandard("LVCMOS33")), + ("user_led", 9, Pins("T15"), IOStandard("LVCMOS33")), + ("user_led", 10, Pins("U14"), IOStandard("LVCMOS33")), + ("user_led", 11, Pins("T16"), IOStandard("LVCMOS33")), + ("user_led", 12, Pins("V15"), IOStandard("LVCMOS33")), + ("user_led", 13, Pins("V14"), IOStandard("LVCMOS33")), + ("user_led", 14, Pins("V12"), IOStandard("LVCMOS33")), + ("user_led", 15, Pins("V11"), IOStandard("LVCMOS33")), + + # Switches + ("user_sw", 0, Pins("J15"), IOStandard("LVCMOS33")), + ("user_sw", 1, Pins("L16"), IOStandard("LVCMOS33")), + ("user_sw", 2, Pins("M13"), IOStandard("LVCMOS33")), + ("user_sw", 3, Pins("R15"), IOStandard("LVCMOS33")), + ("user_sw", 4, Pins("R17"), IOStandard("LVCMOS33")), + ("user_sw", 5, Pins("T18"), IOStandard("LVCMOS33")), + ("user_sw", 6, Pins("U18"), IOStandard("LVCMOS33")), + ("user_sw", 7, Pins("R13"), IOStandard("LVCMOS33")), + ("user_sw", 8, Pins("T8"), IOStandard("LVCMOS18")), + ("user_sw", 9, Pins("U8"), IOStandard("LVCMOS18")), + ("user_sw", 10, Pins("R16"), IOStandard("LVCMOS33")), + ("user_sw", 11, Pins("T13"), IOStandard("LVCMOS33")), + ("user_sw", 12, Pins("H6"), IOStandard("LVCMOS33")), + ("user_sw", 13, Pins("U12"), IOStandard("LVCMOS33")), + ("user_sw", 14, Pins("U11"), IOStandard("LVCMOS33")), + ("user_sw", 15, Pins("V10"), IOStandard("LVCMOS33")), + + # Buttons + ("user_btn", 0, Pins("N17"), IOStandard("LVCMOS33")), # C + ("user_btn", 1, Pins("P17"), IOStandard("LVCMOS33")), # L + ("user_btn", 2, Pins("M17"), IOStandard("LVCMOS33")), # R + ("user_btn", 3, Pins("M18"), IOStandard("LVCMOS33")), # U + ("user_btn", 4, Pins("P18"), IOStandard("LVCMOS33")), # D + + ("user_rgb_led", 0, + Subsignal("r", Pins("N16")), + Subsignal("g", Pins("R11")), + Subsignal("b", Pins("G14")), + IOStandard("LVCMOS33"), + ), + + ("display_cs_n", 0, Pins("J17 J18 J14 P14 K2 U13 T9 T14"), IOStandard("LVCMOS33")), + ("display_abcdefg", 0, Pins("T10 R10 K16 K13 P15 T11 L18 H15"), IOStandard("LVCMOS33")), + + # Serial + ("serial", 0, + Subsignal("tx", Pins("D4")), + Subsignal("rx", Pins("C4")), + IOStandard("LVCMOS33"), + ), + + # SPI + ("adxl362_spi", 0, + Subsignal("cs_n", Pins("D15")), + Subsignal("clk", Pins("F15")), + Subsignal("mosi", Pins("F14")), + Subsignal("miso", Pins("E15")), + IOStandard("LVCMOS33") + ), + + # SDCard + ("spisdcard", 0, + Subsignal("rst", Pins("E2")), + Subsignal("clk", Pins("B1")), + Subsignal("mosi", Pins("C1"), Misc("PULLUP True")), + Subsignal("cs_n", Pins("D2"), Misc("PULLUP True")), + Subsignal("miso", Pins("C2"), Misc("PULLUP True")), + Misc("SLEW=FAST"), + IOStandard("LVCMOS33"), + ), + ("sdcard", 0, + Subsignal("rst", Pins("E2"), Misc("PULLUP True")), + Subsignal("data", Pins("C2 E1 F1 D2"), Misc("PULLUP True")), + Subsignal("cmd", Pins("C1"), Misc("PULLUP True")), + Subsignal("clk", Pins("B1")), + Subsignal("cd", Pins("A1")), + Misc("SLEW=FAST"), + IOStandard("LVCMOS33"), + ), + + # DDR2 SDRAM + ("ddram", 0, + Subsignal("a", Pins( + "M4 P4 M6 T1 L3 P5 M2 N1", + "L4 N5 R2 K5 N6"), + IOStandard("SSTL18_II")), + Subsignal("ba", Pins("P2 P3 R1"), IOStandard("SSTL18_II")), + Subsignal("ras_n", Pins("N4"), IOStandard("SSTL18_II")), + Subsignal("cas_n", Pins("L1"), IOStandard("SSTL18_II")), + Subsignal("we_n", Pins("N2"), IOStandard("SSTL18_II")), + Subsignal("dm", Pins("T6 U1"), IOStandard("SSTL18_II")), + Subsignal("dq", Pins( + "R7 V6 R8 U7 V7 R6 U6 R5", + "T5 U3 V5 U4 V4 T4 V1 T3"), + IOStandard("SSTL18_II"), + Misc("IN_TERM=UNTUNED_SPLIT_50")), + Subsignal("dqs_p", Pins("U9 U2"), IOStandard("DIFF_SSTL18_II")), + Subsignal("dqs_n", Pins("V9 V2"), IOStandard("DIFF_SSTL18_II")), + Subsignal("clk_p", Pins("L6"), IOStandard("DIFF_SSTL18_II")), + Subsignal("clk_n", Pins("L5"), IOStandard("DIFF_SSTL18_II")), + Subsignal("cke", Pins("M1"), IOStandard("SSTL18_II")), + Subsignal("odt", Pins("M3"), IOStandard("SSTL18_II")), + Subsignal("cs_n", Pins("K6"), IOStandard("SSTL18_II")), + Misc("SLEW=FAST"), + ), + + # RMII Ethernet + ("eth_clocks", 0, + Subsignal("ref_clk", Pins("D5")), + IOStandard("LVCMOS33"), + ), + + ("eth", 0, + Subsignal("rst_n", Pins("B3")), + Subsignal("rx_data", Pins("C11 D10")), + Subsignal("crs_dv", Pins("D9")), + Subsignal("tx_en", Pins("B9")), + Subsignal("tx_data", Pins("A10 A8")), + Subsignal("mdc", Pins("C9")), + Subsignal("mdio", Pins("A9")), + Subsignal("rx_er", Pins("C10")), + Subsignal("int_n", Pins("B8")), + IOStandard("LVCMOS33") + ), + + # VGA + ("vga", 0, + Subsignal("hsync_n", Pins("B11")), + Subsignal("vsync_n", Pins("B12")), + Subsignal("r", Pins("A4 C5 B4 A3")), + Subsignal("g", Pins("A6 B6 A5 C6")), + Subsignal("b", Pins("D7 C7 B7 D8")), + IOStandard("LVCMOS33") + ), +] + +# Platform ----------------------------------------------------------------------------------------- + +class Platform(XilinxPlatform): + default_clk_name = "clk100" + default_clk_period = 1e9/100e6 + + def __init__(self): + XilinxPlatform.__init__(self, "xc7a100t-CSG324-1", _io, toolchain="vivado") + self.add_platform_command("set_property INTERNAL_VREF 0.750 [get_iobanks 34]") + + def create_programmer(self): + return OpenOCD("openocd_xc7_ft2232.cfg", "bscan_spi_xc7a100t.bit") + + def do_finalize(self, fragment): + XilinxPlatform.do_finalize(self, fragment) + self.add_period_constraint(self.lookup_request("clk100", loose=True), 1e9/100e6) + self.add_period_constraint(self.lookup_request("eth_clocks:ref_clk", loose=True), 1e9/50e6) diff --git a/dev/build/litex/readme.md b/dev/build/litex/readme.md new file mode 100644 index 0000000..410c7b3 --- /dev/null +++ b/dev/build/litex/readme.md @@ -0,0 +1,51 @@ +# Build Targets + +## Litex + +#### Core and wishbone wrapper with extra stuff for Litex integration + +* create a2o/core.py and a2o.py (SOC) from a2p +* makes it through vivado compile +* cleaned up some various minor rtl warnings +* added parm to cmod7 platform to allow replacing the target fpga device; trying arty-200 to see if it fits as-is - no, but can override? + +``` +ERROR: [DRC UTLZ-1] Resource utilization: Slice LUTs over-utilized in Top Level Design (This design requires more Slice LUTs cells than are available in the target device. This design requires 212846 of such cell types but only 134600 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device. Please set tcl parameter "drc.disableLUTOverUtilError" to 1 to change this error to warning.) +``` + +* try adding ```set drc.disableLUTOverUtilError 1``` to build script and running... +``` +cd build/cmod7/gateware +vivado -mode tcl -source cmod7.tcl +``` + +* doesn't change results +* try in gui: +``` +set_property SEVERITY WARNING [get_drc_checks {DRC UTLZ-1}] +WARNING: [Vivado 12-4383] DRC UTLZ-1 may not change severity +``` +* do get the synth util report; iu=25% lq=28% xu=12% rv=16% fu=9% mmu=8% + +``` ++-----------------------------------------+--------------------------------------------+------------+------------+---------+------+-------+--------+--------+------------+ +| Instance | Module | Total LUTs | Logic LUTs | LUTRAMs | SRLs | FFs | RAMB36 | RAMB18 | DSP Blocks | ++-----------------------------------------+--------------------------------------------+------------+------------+---------+------+-------+--------+--------+------------+ +| cmod7 | (top) | 212875 | 210949 | 1924 | 2 | 83329 | 116 | 13 | 0 | +| (cmod7) | (top) | 162 | 146 | 16 | 0 | 312 | 20 | 1 | 0 | +| a2owb | a2owb | 212713 | 210803 | 1908 | 2 | 83017 | 96 | 12 | 0 | +| c0 | c | 212222 | 210312 | 1908 | 2 | 82296 | 96 | 12 | 0 | +| fupc | c_fu_pc | 20918 | 20317 | 600 | 1 | 7726 | 0 | 0 | 0 | +| iuq0 | iuq | 54334 | 53794 | 540 | 0 | 19339 | 25 | 6 | 0 | +| lq0 | lq | 60745 | 60744 | 0 | 1 | 26090 | 49 | 6 +| mmu0 | mmq | 16032 | 16032 | 0 | 0 | 8151 | 21 | +| rv0 | rv | 34548 | 34292 | 256 | 0 | 9989 | 0 | 0 | 0 | +| xu0 | xu | 25469 | 24957 | 512 | 0 | 10997 | 1 | +| n0 | a2l2wb | 491 | 491 | 0 | 0 | 721 | 0 | 0 | 0 | ++-----------------------------------------+--------------------------------------------+------------+------------+---------+------+-------+--------+--------+------------+ + +``` + +* errors to check in source: a lot of critical warnings are vdd vs VCC and gnd vs GND; are these inouts and ties missing? + + diff --git a/dev/build/litex/readme2.md b/dev/build/litex/readme2.md new file mode 100644 index 0000000..8287693 --- /dev/null +++ b/dev/build/litex/readme2.md @@ -0,0 +1,19 @@ +## Current build + +``` +python3 a2o.py --csr-csv csr.csv --no-compile-software --build +``` + +``` +# build and program +make c # copy code, build, program +make # build and program +make p # program only +``` + +start terminal... + +``` +# start in separate terminal (if running core uart terminal) +python3 litex-install/tools/litex_term.py /dev/ttyUSB0 +``` diff --git a/dev/build/litex/rom.init b/dev/build/litex/rom.init new file mode 100644 index 0000000..90c7718 --- /dev/null +++ b/dev/build/litex/rom.init @@ -0,0 +1,3790 @@ +48000400 +44000002 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +4800100C +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48001154 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +7CBE6AA6 +2C250000 +408200E0 +3C608C00 +3800001F +38400015 +38800000 +3900023F +7C7CFBA6 +7C4011A6 +7C8009A6 +7D0001A6 +4C00012C +39400000 +654A0000 +614A003F +3800001E +38800000 +64840001 +60840000 +39000000 +65080001 +61080000 +6108023F +7D4011A6 +7C8009A6 +7D0001A6 +4C00012C +3C608800 +3800000F +3840003F +38800000 +3900023F +7C7CFBA6 +7C4011A6 +7C8009A6 +7D0001A6 +4C00012C +3800000D +38800000 +64840001 +60840000 +39000000 +65080001 +61080000 +6108023F +7D4011A6 +7C8009A6 +7D0001A6 +4C00012C +48000004 +39400000 +654A8002 +614AB000 +7D400124 +4C00012C +802008FA +48000020 +39400000 +654A8002 +614AB000 +7D400124 +4C00012C +802008FE +48000004 +3C600000 +60630C34 +7C6903A6 +7C7E6AA6 +4E800421 +480002E4 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +48000000 +00000000 +48000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +48000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +6D61696E +28256929 +0A000001 +FFF80000 +FFF80000 +08080808 +08080808 +08282828 +28280808 +08080808 +08080808 +08080808 +08080808 +A0101010 +10101010 +10101010 +10101010 +04040404 +04040404 +04041010 +10101010 +10414141 +41414101 +01010101 +01010101 +01010101 +01010101 +01010110 +10101010 +10424242 +42424202 +02020202 +02020202 +02020202 +02020202 +02020210 +10101008 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +A0101010 +10101010 +10101010 +10101010 +10101010 +10101010 +10101010 +10101010 +01010101 +01010101 +01010101 +01010101 +01010101 +01010110 +01010101 +01010102 +02020202 +02020202 +02020202 +02020202 +02020202 +02020210 +02020202 +02020202 +41626F72 +7465642E +00000000 +30313233 +34353637 +38394142 +43444546 +4748494A +4B4C4D4E +4F505152 +53545556 +5758595A +00000000 +30313233 +34353637 +38396162 +63646566 +6768696A +6B6C6D6E +6F707172 +73747576 +7778797A +00000000 +3C4E554C +4C3E0000 +00002180 +000021B0 +000021B0 +00002190 +000021B0 +000021B0 +000021B0 +000021B0 +000021B0 +000021B0 +000021B0 +00002170 +000021B0 +00002160 +000021B0 +000021B0 +000021A0 +000028E8 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002920 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002948 +00002424 +00002938 +00002948 +00002948 +00002948 +00002948 +00002938 +00002948 +00002948 +00002948 +00002948 +0000276C +00002914 +000026C4 +00002948 +00002948 +00002540 +00002948 +000029C0 +00002948 +00002948 +0000292C +00000000 +9421FFF0 +7C691B78 +99210008 +3D200001 +81292000 +39090001 +3D400001 +910A2000 +89410008 +99490000 +60000000 +38210010 +4E800020 +9421FFC0 +7C0802A6 +90010044 +90610038 +3D200001 +39292000 +9121000C +3D200000 +39291060 +91210010 +81210038 +2C090000 +4182000C +3920FFFF +4800018C +3D200000 +39291030 +91210008 +48000028 +8121000C +39490004 +9141000C +81410008 +814A0000 +91490000 +81210008 +39290004 +91210008 +81410008 +3D200000 +39291038 +7C0A4840 +4180FFCC +3D200002 +3929E008 +91210008 +48000024 +81210008 +39490004 +91410008 +39400000 +91490000 +81210008 +39290004 +91210008 +81410008 +3D200002 +3929E028 +7C0A4840 +4180FFD0 +3D200000 +38690C00 +48002B3D +38600077 +48002B85 +38600074 +48002B7D +38600066 +48002B75 +3860000A +48002B6D +80810038 +3D200000 +386908F0 +4CC63182 +48002D61 +3D200300 +91210034 +81210034 +7D334BA6 +60000000 +39200000 +91210030 +81210030 +7D3603A6 +60000000 +39200000 +9121002C +8121002C +7D3D43A6 +60000000 +39200000 +91210028 +81210028 +7D3C43A6 +60000000 +3D20FE00 +91210024 +81210024 +7D3053A6 +60000000 +7D36FAA6 +91210020 +81210020 +552905EA +9121001C +8121001C +7D36FBA6 +60000000 +39200000 +91210018 +81210018 +7D3053A6 +60000000 +39200000 +91210014 +81210014 +7D3453A6 +60000000 +81210010 +7D234B78 +48000390 +48000000 +7D234B78 +80010044 +7C0803A6 +38210040 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610018 +39200001 +9121000C +81410018 +3D200867 +61295309 +7C0A4800 +4182000C +3C608000 +4BFFF9B9 +39200000 +91210008 +4800008C +81210008 +552A103A +3D200000 +39291360 +7D2A4A14 +81290000 +91210010 +81210008 +552A103A +3D200000 +39291400 +7D2A4A14 +81290000 +91210014 +8121000C +2C090000 +4182001C +81410010 +81210014 +7C0A4800 +4082000C +39200001 +48000008 +39200000 +9121000C +8121000C +2C090000 +40820010 +81210008 +7D234B78 +4BFFF931 +81210008 +39290001 +91210008 +81210008 +2809001F +4081FF70 +39200021 +91210008 +81210008 +552A103A +3D200000 +39291360 +7D2A4A14 +81290000 +91210010 +81210008 +552A103A +3D200000 +39291400 +7D2A4A14 +81290000 +55290644 +91210014 +8121000C +2C090000 +4182001C +81410010 +81210014 +7C0A4800 +4082000C +39200001 +48000008 +39200000 +9121000C +8121000C +2C090000 +40820010 +81210008 +7D234B78 +4BFFF891 +39200022 +91210008 +4800008C +81210008 +552A103A +3D200000 +39291360 +7D2A4A14 +81290000 +91210010 +81210008 +552A103A +3D200000 +39291400 +7D2A4A14 +81290000 +91210014 +8121000C +2C090000 +4182001C +81410010 +81210014 +7C0A4800 +4082000C +39200001 +48000008 +39200000 +9121000C +8121000C +2C090000 +40820010 +81210008 +7D234B78 +4BFFF809 +81210008 +39290001 +91210008 +81210008 +28090023 +4081FF70 +4BFFF7E9 +48000000 +9421FFF0 +90610008 +9081000C +48000258 +60000000 +38210010 +4E800020 +48000000 +0001C000 +00000000 +00000000 +00000000 +696E666F +20746578 +74006865 +61646572 +20746578 +74000000 +00000000 +00000000 +00000000 +5822C905 +FFFFFFFF +91B6D1A3 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +7E11EE88 +FFFFFFFF +7FFFFFFF +FFFFFFFF +FFFFFFFF +8C20BDE6 +FFFFFFFF +76D0DADF +15111F42 +FFFFFFFF +36108E50 +FFFFFFFF +FFFFFFFF +328A0CED +FFFFFFFF +FFFFFFFF +AF224C19 +FFFFFFFF +FFFFFFFF +D624B27A +FFFFFFFF +FFFFFFFF +FFFFFFFF +DBFD3628 +89F0006E +FFFFFFFF +FFFFFFFF +FFFFFFFF +00001104 +00010000 +00000000 +0000000D +7C61CC14 +7D230595 +7AC37392 +7E094C11 +7E1CB115 +7A338886 +7C6004D1 +7E09B038 +7C360591 +7E2B00D1 +60000000 +60000000 +60000000 +00010000 +00010004 +00010008 +0001000C +00010010 +00010014 +00010018 +0001001C +00010020 +00010024 +00010028 +0001002C +00010030 +48000014 +60000000 +60000000 +60000000 +60000000 +9023009C +802300A0 +7C2903A6 +382300A4 +384300D8 +80810000 +80A20000 +90850000 +38210004 +38420004 +4200FFEC +3C804800 +60840006 +90850000 +802010F4 +7C3B03A6 +80201138 +7C3A03A6 +80230080 +7C2FF120 +80230084 +7C2103A6 +80230088 +7C2903A6 +8023008C +7C2803A6 +80230090 +7C2FCBA6 +80030000 +80230004 +80430008 +80830010 +80A30014 +80C30018 +80E3001C +81030020 +81230024 +81430028 +8163002C +81830030 +81A30034 +81C30038 +81E3003C +82030040 +82230044 +82430048 +8263004C +82830050 +82A30054 +82C30058 +82E3005C +83030060 +83230064 +83430068 +8363006C +83830070 +83A30074 +83C30078 +83E3007C +8063000C +4C000064 +4800000C +60000000 +60000000 +7C2FCBA6 +3C200000 +60211360 +90010000 +90410008 +9061000C +90810010 +90A10014 +90C10018 +90E1001C +91010020 +91210024 +91410028 +9161002C +91810030 +91A10034 +91C10038 +91E1003C +92010040 +92210044 +92410048 +9261004C +92810050 +92A10054 +92C10058 +92E1005C +93010060 +93210064 +93410068 +9361006C +93810070 +93A10074 +93C10078 +93E1007C +7C4FCAA6 +90410004 +7C400026 +90410080 +7C4102A6 +90410084 +7C4902A6 +90410088 +7C4802A6 +9041008C +7C4FCAA6 +90410090 +3C600000 +60631060 +8023009C +3C600867 +60635309 +48000E0F +60000000 +60000000 +60000000 +60000000 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +60000000 +60000000 +60000000 +00000000 +CD75F313 +FFFFFFFF +00000000 +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +FFFFFFFF +008A0C68 +FFFFFFFF +7FFFFFFF +FFFFFFFF +FFFFFFFF +8C20BDE6 +FFFFFFFF +08AEBF68 +80000001 +FFFFFFFF +00000000 +FFFFFFFF +FFFFFFFF +328A0CED +FFFFFFFF +FFFFFFFF +AF224C19 +FFFFFFFF +FFFFFFFF +D624B27A +FFFFFFFF +FFFFFFFF +FFFFFFFF +9BFD3628 +98F0006E +FFFFFFFF +FFFFFFFF +FFFFFFFF +00001104 +00010038 +9421FFF0 +7C691B78 +99210008 +89210008 +3D400000 +394A0904 +7D2A48AE +552907BC +2C090000 +41820010 +89210008 +3929FFE0 +99210008 +89210008 +7D234B78 +38210010 +4E800020 +9421FFF0 +7C691B78 +B1210008 +A1210008 +5529402E +7D2A0734 +A1210008 +5529C23E +5529043E +7D290734 +7D494B78 +7D290734 +5529043E +7D234B78 +38210010 +4E800020 +9421FFF0 +90610008 +81210008 +552A463E +81210008 +5529C23E +5529042E +7D4A4B78 +81210008 +5529402E +5529021E +7D4A4B78 +81210008 +5529C00E +7D494B78 +7D234B78 +38210010 +4E800020 +9421FFF0 +90610008 +9081000C +48000028 +81210008 +89290000 +2C090000 +4082000C +39200000 +4800002C +81210008 +39290001 +91210008 +81210008 +89490000 +8121000C +5529063E +7C0A4840 +4082FFC8 +81210008 +7D234B78 +38210010 +4E800020 +9421FFE0 +90610018 +9081001C +81210018 +91210008 +48000058 +8121001C +9121000C +48000030 +81210008 +89490000 +8121000C +89290000 +7C0A4840 +4082000C +81210008 +48000040 +8121000C +39290001 +9121000C +8121000C +89290000 +2C090000 +4082FFC8 +81210008 +39290001 +91210008 +81210008 +89290000 +2C090000 +4082FFA0 +39200000 +7D234B78 +38210020 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610018 +9081001C +80610018 +480003DD +7C6A1B78 +81210018 +7D295214 +91210008 +81210008 +89490000 +8121001C +5529063E +7C0A4840 +4082000C +81210008 +48000024 +81210008 +3929FFFF +91210008 +81410008 +81210018 +7C0A4840 +4080FFC8 +39200000 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFE0 +90610008 +9081000C +90A10010 +48000030 +81210008 +89490000 +81210010 +5529063E +7C0A4840 +4082000C +81210008 +48000038 +81210008 +39290001 +91210008 +8121000C +3949FFFF +9141000C +2C090000 +41820014 +81210008 +89290000 +2C090000 +4082FFB4 +39200000 +7D234B78 +38210020 +4E800020 +9421FFE0 +90610018 +9081001C +81210018 +91210008 +60000000 +8141001C +392A0001 +9121001C +81210018 +39090001 +91010018 +894A0000 +99490000 +89290000 +2C090000 +4082FFD8 +81210008 +7D234B78 +38210020 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81210018 +91210008 +48000048 +8121001C +89490000 +81210008 +99490000 +81210008 +89290000 +2C090000 +41820010 +8121001C +39290001 +9121001C +81210008 +39290001 +91210008 +81210020 +3929FFFF +91210020 +81210020 +2C090000 +4082FFB4 +81210018 +7D234B78 +38210030 +4E800020 +9421FFE0 +90610018 +9081001C +81210018 +89490000 +8121001C +39090001 +9101001C +89290000 +7D295050 +5529063E +99210008 +89210008 +7D290774 +2C090000 +40820020 +81210018 +39490001 +91410018 +89290000 +2C090000 +41820008 +4BFFFFB4 +89210008 +7D290774 +7D234B78 +38210020 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +39200000 +9121000C +39200000 +99210008 +4800005C +81210018 +89490000 +8121001C +39090001 +9101001C +89290000 +7D295050 +5529063E +99210008 +89210008 +7D290774 +2C090000 +40820038 +81210018 +39490001 +91410018 +89290000 +2C090000 +41820020 +8121000C +39290001 +9121000C +8141000C +81210020 +7C0A4840 +4180FF9C +89210008 +7D290774 +7D234B78 +38210030 +4E800020 +9421FFE0 +90610018 +9081001C +81210018 +91210008 +48000010 +81210018 +39290001 +91210018 +81210018 +89290000 +2C090000 +4082FFE8 +60000000 +8141001C +392A0001 +9121001C +81210018 +39090001 +91010018 +894A0000 +99490000 +89290000 +2C090000 +4082FFD8 +81210008 +7D234B78 +38210020 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81210018 +91210008 +81210020 +2C090000 +4182007C +48000010 +81210018 +39290001 +91210018 +81210018 +89290000 +2C090000 +4082FFE8 +4800002C +81210020 +3929FFFF +91210020 +81210020 +2C090000 +40820014 +81210018 +39400000 +99490000 +48000030 +8141001C +392A0001 +9121001C +81210018 +39090001 +91010018 +894A0000 +99490000 +89290000 +2C090000 +4082FFB0 +81210008 +7D234B78 +38210030 +4E800020 +9421FFE0 +90610018 +81210018 +91210008 +48000010 +81210008 +39290001 +91210008 +81210008 +89290000 +2C090000 +4082FFE8 +81410008 +81210018 +7D295050 +7D234B78 +38210020 +4E800020 +9421FFE0 +90610018 +9081001C +81210018 +91210008 +48000010 +81210008 +39290001 +91210008 +8121001C +3949FFFF +9141001C +2C090000 +41820014 +81210008 +89290000 +2C090000 +4082FFD4 +81410008 +81210018 +7D295050 +7D234B78 +38210020 +4E800020 +9421FFE0 +90610018 +9081001C +39200000 +91210010 +81210018 +91210008 +4800007C +8121001C +9121000C +48000028 +81210008 +89490000 +8121000C +89290000 +7C0A4840 +41820024 +8121000C +39290001 +9121000C +8121000C +89290000 +2C090000 +4082FFD0 +48000008 +60000000 +8121000C +89290000 +2C090000 +4082000C +81210010 +48000030 +81210010 +39290001 +91210010 +81210008 +39290001 +91210008 +81210008 +89290000 +2C090000 +4082FF7C +81210010 +7D234B78 +38210020 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +39200000 +91210010 +81210018 +91210008 +8121001C +9121000C +48000050 +81210008 +89290000 +7D2A4B78 +8121000C +89290000 +7D295050 +91210010 +81210010 +2C090000 +40820038 +81210008 +39290001 +91210008 +8121000C +39290001 +9121000C +81210020 +3929FFFF +91210020 +81210020 +2C090000 +4082FFAC +48000008 +60000000 +81210010 +7D234B78 +38210030 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81210018 +91210008 +4800001C +81210008 +39490001 +91410008 +8141001C +554A063E +99490000 +81210020 +3949FFFF +91410020 +2C090000 +4082FFD8 +81210018 +7D234B78 +38210030 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81210018 +91210008 +8121001C +9121000C +48000024 +8141000C +392A0001 +9121000C +81210008 +39090001 +91010008 +894A0000 +99490000 +81210020 +3949FFFF +91410020 +2C090000 +4082FFD0 +81210018 +7D234B78 +38210030 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81410018 +8121001C +7C0A4840 +41810050 +81210018 +91210008 +8121001C +9121000C +48000024 +8141000C +392A0001 +9121000C +81210008 +39090001 +91010008 +894A0000 +99490000 +81210020 +3949FFFF +91410020 +2C090000 +4082FFD0 +48000064 +81410018 +81210020 +7D2A4A14 +91210008 +8141001C +81210020 +7D2A4A14 +9121000C +4800002C +8121000C +3929FFFF +9121000C +81210008 +3929FFFF +91210008 +8121000C +89490000 +81210008 +99490000 +81210020 +3949FFFF +91410020 +2C090000 +4082FFC8 +81210018 +7D234B78 +38210030 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610018 +9081001C +8061001C +4BFFFC51 +7C691B78 +9121000C +8121000C +2C090000 +4082000C +81210018 +48000068 +80610018 +4BFFFC2D +7C691B78 +91210008 +48000040 +81210008 +3929FFFF +91210008 +80A1000C +8081001C +80610018 +4BFFFD65 +7C691B78 +2C090000 +4082000C +81210018 +48000024 +81210018 +39290001 +91210018 +81410008 +8121000C +7C0A4840 +4080FFB8 +39200000 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFD0 +90610018 +9081001C +90A10020 +81210018 +91210008 +48000030 +8121001C +552A063E +81210008 +39090001 +91010008 +89290000 +7C0A4840 +40820010 +81210008 +3929FFFF +4800001C +81210020 +3949FFFF +91410020 +2C090000 +4082FFC4 +39200000 +7D234B78 +38210030 +4E800020 +9421FFD0 +7C0802A6 +90010034 +90610018 +9081001C +90A10020 +39200000 +91210008 +81210020 +2C090000 +4082008C +3920000A +91210020 +81210018 +89290000 +28090030 +408200E4 +39200008 +91210020 +81210018 +39290001 +91210018 +81210018 +89290000 +7D234B78 +4BFFF541 +7C691B78 +28090058 +408200B4 +81210018 +39290001 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +71290044 +2C090000 +4182008C +81210018 +39290001 +91210018 +39200010 +91210020 +48000074 +81210020 +2C090010 +40820068 +81210018 +89290000 +28090030 +40820058 +81210018 +39290001 +89290000 +7D234B78 +4BFFF4C5 +7C691B78 +28090058 +40820038 +81210018 +39290002 +91210018 +48000028 +81410008 +81210020 +7D2A49D6 +8141000C +7D2A4A14 +91210008 +81210018 +39290001 +91210018 +81210018 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +71290044 +2C090000 +41820064 +81210018 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +5529077A +2C090000 +41820014 +81210018 +89290000 +3929FFD0 +4800001C +81210018 +89290000 +7D234B78 +4BFFF41D +7C691B78 +3929FFC9 +9121000C +8141000C +81210020 +7C0A4840 +4180FF5C +8121001C +2C090000 +41820010 +8121001C +81410018 +91490000 +81210008 +7D234B78 +80010034 +7C0803A6 +38210030 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610008 +9081000C +90A10010 +81210008 +89290000 +2809002D +4082002C +81210008 +39290001 +81410010 +7D455378 +8081000C +7D234B78 +4BFFFDE9 +7C691B78 +7D2900D0 +4800001C +81210010 +7D254B78 +8081000C +80610008 +4BFFFDC9 +7C691B78 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFE0 +90610018 +39200000 +91210008 +48000030 +81210008 +1D49000A +81210018 +81290000 +38E90001 +81010018 +90E80000 +89290000 +7D2A4A14 +3929FFD0 +91210008 +81210018 +81290000 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +5529077A +2C090000 +4082FFB0 +81210008 +7D234B78 +38210020 +4E800020 +9421FF70 +90610068 +9081006C +90A10070 +90C10074 +90E10078 +9101007C +91210080 +81210080 +55290672 +2C090000 +41820010 +3D200000 +39290A10 +4800000C +3D200000 +39290A38 +91210010 +81210080 +552906F6 +2C090000 +41820010 +81210080 +5529003C +91210080 +81210074 +2C090001 +40810010 +81210074 +2C090024 +4081000C +39200000 +480003FC +81210080 +552907FE +2C090000 +4182000C +39200030 +48000008 +39200020 +99210014 +39200000 +99210008 +81210080 +552907BC +2C090000 +41820080 +81210070 +2C090000 +40800028 +3920002D +99210008 +81210070 +7D2900D0 +91210070 +81210078 +3929FFFF +91210078 +48000050 +81210080 +5529077A +2C090000 +4182001C +3920002B +99210008 +81210078 +3929FFFF +91210078 +48000028 +81210080 +55290738 +2C090000 +41820018 +39200020 +99210008 +81210078 +3929FFFF +91210078 +81210080 +552906B4 +2C090000 +41820038 +81210074 +2C090010 +40820014 +81210078 +3929FFFE +91210078 +4800001C +81210074 +2C090008 +40820010 +81210078 +3929FFFF +91210078 +39200000 +9121000C +81210070 +2C090000 +4082006C +8121000C +39490001 +9141000C +39410008 +7D2A4A14 +39400030 +99490010 +48000058 +81410074 +81210070 +7D095396 +7D4851D6 +7D2A4850 +81410010 +7D4A4A14 +8121000C +39090001 +9101000C +894A0000 +39010008 +7D284A14 +99490010 +81210074 +81410070 +7D2A4B96 +91210070 +81210070 +2C090000 +4082FFB0 +8141000C +8121007C +7C0A4800 +4081000C +8121000C +9121007C +81410078 +8121007C +7D295050 +91210078 +81210080 +71290011 +2C090000 +40820044 +4800002C +81410068 +8121006C +7C0A4840 +40800010 +81210068 +39400020 +99490000 +81210068 +39290001 +91210068 +81210078 +3949FFFF +91410078 +2C090000 +4181FFC8 +89210008 +2C090000 +4182002C +81410068 +8121006C +7C0A4840 +40800010 +81210068 +89410008 +99490000 +81210068 +39290001 +91210068 +81210080 +552906B4 +2C090000 +4182009C +81210074 +2C090008 +40820030 +81410068 +8121006C +7C0A4840 +40800010 +81210068 +39400030 +99490000 +81210068 +39290001 +91210068 +48000064 +81210074 +2C090010 +40820058 +81410068 +8121006C +7C0A4840 +40800010 +81210068 +39400030 +99490000 +81210068 +39290001 +91210068 +81410068 +8121006C +7C0A4840 +40800014 +81210010 +89490021 +81210068 +99490000 +81210068 +39290001 +91210068 +81210080 +552906F6 +2C090000 +40820070 +4800002C +81410068 +8121006C +7C0A4840 +40800010 +81210068 +89410014 +99490000 +81210068 +39290001 +91210068 +81210078 +3949FFFF +91410078 +2C090000 +4181FFC8 +4800002C +81410068 +8121006C +7C0A4840 +40800010 +81210068 +39400030 +99490000 +81210068 +39290001 +91210068 +8121007C +3949FFFF +9141007C +8141000C +7C0A4800 +4180FFC4 +48000038 +81410068 +8121006C +7C0A4840 +4080001C +39410018 +8121000C +7D2A4A14 +89490000 +81210068 +99490000 +81210068 +39290001 +91210068 +8121000C +3949FFFF +9141000C +2C090000 +4181FFBC +4800002C +81410068 +8121006C +7C0A4840 +40800010 +81210068 +39400020 +99490000 +81210068 +39290001 +91210068 +81210078 +3949FFFF +91410078 +2C090000 +4181FFC8 +81210068 +7D234B78 +38210090 +4E800020 +9421FFD0 +7C0802A6 +90010034 +90610018 +9081001C +90A10020 +90C10024 +80C10024 +80A10020 +8081001C +80610018 +4800044D +7C691B78 +91210008 +81410008 +8121001C +7C0A4840 +41800010 +8121001C +3929FFFF +48000008 +81210008 +7D234B78 +80010034 +7C0803A6 +38210030 +4E800020 +9421FF80 +7C0802A6 +90010084 +90610018 +9081001C +90A10020 +90C1002C +90E10030 +91010034 +91210038 +9141003C +40860024 +D8210040 +D8410048 +D8610050 +D8810058 +D8A10060 +D8C10068 +D8E10070 +D9010078 +39200003 +9921000C +39200000 +9921000D +39210088 +91210010 +39210020 +91210014 +3921000C +7D264B78 +80A10020 +8081001C +80610018 +48000389 +7C691B78 +91210008 +81210008 +7D234B78 +80010084 +7C0803A6 +38210080 +4E800020 +9421FF80 +7C0802A6 +90010084 +90610018 +9081001C +90A10020 +90C1002C +90E10030 +91010034 +91210038 +9141003C +40860024 +D8210040 +D8410048 +D8610050 +D8810058 +D8A10060 +D8C10068 +D8E10070 +D9010078 +39200003 +9921000C +39200000 +9921000D +39210088 +91210010 +39210020 +91210014 +3921000C +7D264B78 +80A10020 +8081001C +80610018 +480002E1 +7C691B78 +91210008 +81410008 +8121001C +7C0A4840 +41800010 +8121001C +3929FFFF +48000008 +81210008 +7D234B78 +80010084 +7C0803A6 +38210080 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610008 +9081000C +90A10010 +80C10010 +80A1000C +3D207FFF +6124FFFF +80610008 +48000275 +7C691B78 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FF80 +7C0802A6 +90010084 +90610018 +9081001C +90A10020 +90C10024 +90E10028 +9101002C +91210030 +91410034 +40860024 +D8210038 +D8410040 +D8610048 +D8810050 +D8A10058 +D8C10060 +D8E10068 +D9010070 +39200002 +9921000C +39200000 +9921000D +39210088 +91210010 +39210018 +91210014 +3921000C +7D264B78 +80A1001C +3D207FFF +6124FFFF +80610018 +480001D1 +7C691B78 +91210008 +81210008 +7D234B78 +80010084 +7C0803A6 +38210080 +4E800020 +3D200002 +8129E014 +1D290081 +3D293619 +394962E9 +3D200002 +9149E014 +3D200002 +8129E014 +7D234B78 +4E800020 +9421FFF0 +90610008 +3D200002 +81410008 +9149E014 +60000000 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +3D200000 +38690A04 +4CC63182 +4800111D +48000000 +9421FFE0 +7C0802A6 +90010024 +90610018 +39200001 +91210008 +89210008 +2C090000 +41820014 +80610018 +4BFFEB75 +7C691B78 +48000008 +81210018 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFE0 +7C0802A6 +90010024 +7C691B78 +B1210018 +39200001 +91210008 +89210008 +2C090000 +41820018 +A1210018 +7D234B78 +4BFFEAE1 +7C691B78 +48000008 +A1210018 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFE0 +7C0802A6 +90010024 +90610018 +39200001 +91210008 +89210008 +2C090000 +41820014 +80610018 +4BFFEAD5 +7C691B78 +48000008 +81210018 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFE0 +7C0802A6 +90010024 +7C691B78 +B1210018 +39200001 +91210008 +89210008 +2C090000 +41820018 +A1210018 +7D234B78 +4BFFEA41 +7C691B78 +48000008 +A1210018 +7D234B78 +80010024 +7C0803A6 +38210020 +4E800020 +9421FFA0 +7C0802A6 +90010064 +90610048 +9081004C +90A10050 +90C10054 +8121004C +2C090000 +4080000C +39200000 +48000D3C +81210048 +91210018 +81410048 +8121004C +7D2A4A14 +9121001C +8141001C +81210048 +7C0A4840 +40800CBC +3920FFFF +9121001C +8141001C +81210048 +7D295050 +9121004C +48000CA0 +81210050 +89290000 +28090025 +41820034 +81410018 +8121001C +7C0A4840 +40800014 +81210050 +89490000 +81210018 +99490000 +81210018 +39290001 +91210018 +48000C54 +39200000 +91210024 +81210050 +39290001 +91210050 +81210050 +89290000 +3929FFE0 +28090010 +4181007C +552A103A +3D200000 +39290A68 +7D2A4A14 +81490000 +3D200000 +39290A68 +7D2A4A14 +7D2903A6 +4E800420 +81210024 +61290010 +91210024 +4BFFFFAC +81210024 +61290004 +91210024 +4BFFFF9C +81210024 +61290008 +91210024 +4BFFFF8C +81210024 +61290020 +91210024 +4BFFFF7C +81210024 +61290001 +91210024 +4BFFFF6C +3920FFFF +91210028 +81210050 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +5529077A +2C090000 +4182001C +39210050 +7D234B78 +4BFFF501 +7C691B78 +91210028 +4800009C +81210050 +89290000 +2809002A +4082008C +81210050 +39290001 +91210050 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +91210028 +81210028 +2C090000 +4080001C +81210028 +7D2900D0 +91210028 +81210024 +61290010 +91210024 +3920FFFF +9121002C +81210050 +89290000 +2809002E +408200D4 +81210050 +39290001 +91210050 +81210050 +89290000 +7D2A4B78 +3D200000 +39290904 +7D2950AE +5529077A +2C090000 +4182001C +39210050 +7D234B78 +4BFFF409 +7C691B78 +9121002C +48000078 +81210050 +89290000 +2809002A +40820068 +81210050 +39290001 +91210050 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121002C +8121002C +2C090000 +4080000C +39200000 +9121002C +3920FFFF +91210030 +81210050 +89290000 +28090068 +41820054 +81210050 +89290000 +2809006C +41820044 +81210050 +89290000 +2809004C +41820034 +81210050 +89290000 +2809005A +41820024 +81210050 +89290000 +2809007A +41820014 +81210050 +89290000 +28090074 +4082004C +81210050 +89290000 +91210030 +81210050 +39290001 +91210050 +81210030 +2C09006C +40820028 +81210050 +89290000 +2809006C +40820018 +3920004C +91210030 +81210050 +39290001 +91210050 +3920000A +91210014 +81210050 +89290000 +3929FFDB +28090053 +41810550 +552A103A +3D200000 +39290AAC +7D2A4A14 +81490000 +3D200000 +39290AAC +7D2A4A14 +7D2903A6 +4E800420 +81210024 +552906F6 +2C090000 +40820048 +4800002C +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400020 +99490000 +81210018 +39290001 +91210018 +81210028 +3929FFFF +91210028 +81210028 +2C090000 +4181FFC4 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +99210044 +81410018 +8121001C +7C0A4840 +40800010 +81210018 +89410044 +99490000 +81210018 +39290001 +91210018 +4800002C +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400020 +99490000 +81210018 +39290001 +91210018 +81210028 +3929FFFF +91210028 +81210028 +2C090000 +4181FFC4 +480007E0 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +91210020 +81210020 +2C090000 +40820010 +3D200000 +39290A60 +91210020 +8121002C +7D244B78 +80610020 +4BFFEA25 +7C691B78 +91210034 +81210024 +552906F6 +2C090000 +40820048 +4800002C +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400020 +99490000 +81210018 +39290001 +91210018 +81210028 +3949FFFF +91410028 +81410034 +7C0A4800 +4180FFC4 +39200000 +91210010 +48000048 +81410018 +8121001C +7C0A4840 +40800014 +81210020 +89490000 +81210018 +99490000 +81210018 +39290001 +91210018 +81210020 +39290001 +91210020 +81210010 +39290001 +91210010 +81410010 +81210034 +7C0A4800 +4180FFB0 +4800002C +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400020 +99490000 +81210018 +39290001 +91210018 +81210028 +3949FFFF +91410028 +81410034 +7C0A4800 +4180FFC4 +4800065C +81410028 +3920FFFF +7C0A4800 +40820018 +39200008 +91210028 +81210024 +61290021 +91210024 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +7D2A4B78 +81210024 +8101002C +80E10028 +38C00010 +7D455378 +8081001C +80610018 +4BFFEFBD +7C691B78 +91210018 +480005B4 +81210030 +2C09006C +40820074 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +91210040 +81410018 +81210048 +7D495050 +81210040 +91490000 +48000538 +81210030 +2C09005A +41820010 +81210030 +2C09007A +4082007C +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121003C +81410018 +81210048 +7D295050 +7D2A4B78 +8121003C +91490000 +60000000 +480004A8 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +91210038 +81410018 +81210048 +7D495050 +81210038 +91490000 +48000438 +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400025 +99490000 +81210018 +39290001 +91210018 +4800040C +39200008 +91210014 +480000A8 +81210024 +61290040 +91210024 +39200010 +91210014 +48000090 +81210024 +61290002 +91210024 +4800007C +81410018 +8121001C +7C0A4840 +40800010 +81210018 +39400025 +99490000 +81210018 +39290001 +91210018 +81210050 +89290000 +2C090000 +41820034 +81410018 +8121001C +7C0A4840 +40800014 +81210050 +89490000 +81210018 +99490000 +81210018 +39290001 +91210018 +48000370 +81210050 +3929FFFF +91210050 +48000360 +60000000 +81210030 +2C09004C +40820090 +81210054 +89290000 +81410054 +894A0000 +554A07FE +554A063E +7D4A4A14 +5548063E +81410054 +990A0000 +28090006 +41810030 +81210054 +81490008 +81210054 +89290000 +39090002 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000020 +81210054 +81290004 +39290007 +55290038 +39090008 +81410054 +910A0004 +81490000 +81690004 +91410008 +9161000C +48000298 +81210030 +2C09006C +40820088 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121000C +39200000 +91210008 +81210024 +552907BC +2C090000 +4182021C +8121000C +9121000C +7D29FE70 +91210008 +48000208 +81210030 +2C09005A +41820010 +81210030 +2C09007A +40820068 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121000C +39200000 +91210008 +4800018C +81210030 +2C090074 +40820068 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121000C +7D29FE70 +91210008 +4800011C +81210030 +2C090068 +40820090 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +5529043E +9121000C +39200000 +91210008 +81210024 +552907BC +2C090000 +4182009C +A121000E +7D290734 +9121000C +7D29FE70 +91210008 +48000084 +81210054 +89290000 +28090007 +41810030 +81210054 +81490008 +81210054 +89290000 +39090001 +5507063E +81010054 +98E80000 +5529103A +7D2A4A14 +48000018 +81210054 +81290004 +39090004 +81410054 +910A0004 +81290000 +9121000C +39200000 +91210008 +81210024 +552907BC +2C090000 +41820014 +8121000C +9121000C +7D29FE70 +91210008 +8141000C +81210024 +8101002C +80E10028 +80C10014 +7D455378 +8081001C +80610018 +4BFFEA09 +7C691B78 +91210018 +81210050 +39290001 +91210050 +81210050 +89290000 +2C090000 +4082F358 +8121004C +2C090000 +41820034 +81410018 +8121001C +7C0A4840 +40800014 +81210018 +39400000 +99490000 +48000014 +8121001C +3929FFFF +39400000 +99490000 +81410018 +81210048 +7D295050 +7D234B78 +80010064 +7C0803A6 +38210060 +4E800020 +9421FFF0 +90610008 +3D200002 +81410008 +9149E018 +60000000 +38210010 +4E800020 +9421FFF0 +90610008 +9081000C +3D200002 +81410008 +9149E01C +3D200002 +8141000C +9149E020 +60000000 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +90610008 +3D200002 +8129E018 +2C090000 +41820020 +3D200002 +8129E018 +81410008 +554A063E +7D435378 +7D2903A6 +4E800421 +81210008 +7D234B78 +80010014 +7C0803A6 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +3D200002 +8129E020 +2C090000 +4182FFF4 +3D200002 +8129E020 +7D2903A6 +4E800421 +7C691B78 +2C090000 +4182FFD8 +3D200002 +8129E01C +7D2903A6 +4E800421 +7C691B78 +7D234B78 +80010014 +7C0803A6 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +3D200002 +8129E020 +2C090000 +41820028 +3D200002 +8129E020 +7D2903A6 +4E800421 +7C691B78 +2C090000 +4182000C +39200001 +48000008 +39200000 +7D234B78 +80010014 +7C0803A6 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +90610008 +80610008 +48000025 +3860000A +4BFFFED9 +39200001 +7D234B78 +80010014 +7C0803A6 +38210010 +4E800020 +9421FFF0 +7C0802A6 +90010014 +90610008 +48000020 +81210008 +89290000 +7D234B78 +4BFFFE9D +81210008 +39290001 +91210008 +81210008 +89290000 +2C090000 +4082FFD8 +60000000 +60000000 +80010014 +7C0803A6 +38210010 +4E800020 +9421FEE0 +7C0802A6 +90010124 +90610118 +9081011C +3921000C +80C1011C +80A10118 +38800100 +7D234B78 +4BFFEBF9 +7C691B78 +91210008 +3941000C +81210008 +7D2A4A14 +39400000 +99490000 +3921000C +7D234B78 +4BFFFF59 +81210008 +7D234B78 +80010124 +7C0803A6 +38210120 +4E800020 +9421FF80 +7C0802A6 +90010084 +90610018 +90810024 +90A10028 +90C1002C +90E10030 +91010034 +91210038 +9141003C +40860024 +D8210040 +D8410048 +D8610050 +D8810058 +D8A10060 +D8C10068 +D8E10070 +D9010078 +39200001 +9921000C +39200000 +9921000D +39210088 +91210010 +39210020 +91210014 +3921000C +7D244B78 +80610018 +4BFFFF19 +7C691B78 +91210008 +81210008 +7D234B78 +80010084 +7C0803A6 +38210080 +4E800020