From 649b33d7783cf3021928534b7ae127e0a89e8807 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 21 Jun 2016 22:39:54 -0400 Subject: Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432) * fixes from tmk's repo * rename keyboard to keyboards --- .../keymaps/german-manuneo/compile_keymap.py | 710 +++++++++++ .../ergodox_ez/keymaps/german-manuneo/compiled.hex | 1274 ++++++++++++++++++++ .../ergodox_ez/keymaps/german-manuneo/keymap.c | 783 ++++++++++++ .../ergodox_ez/keymaps/german-manuneo/keymap.md | 188 +++ 4 files changed, 2955 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/german-manuneo/compile_keymap.py create mode 100644 keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex create mode 100644 keyboards/ergodox_ez/keymaps/german-manuneo/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/german-manuneo/keymap.md (limited to 'keyboards/ergodox_ez/keymaps/german-manuneo') diff --git a/keyboards/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboards/ergodox_ez/keymaps/german-manuneo/compile_keymap.py new file mode 100644 index 0000000000..7076a6ecb2 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -0,0 +1,710 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Compiler for keymap.c files + +This scrip will generate a keymap.c file from a simple +markdown file with a specific layout. + +Usage: + python compile_keymap.py INPUT_PATH [OUTPUT_PATH] +""" +from __future__ import division +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals + +import os +import io +import re +import sys +import json +import unicodedata +import collections +import itertools as it + +PY2 = sys.version_info.major == 2 + +if PY2: + chr = unichr + + +KEYBOARD_LAYOUTS = { + # These map positions in the parsed layout to + # positions in the KEYMAP MATRIX + 'ergodox_ez': [ + [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44], + [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51], + [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57], + [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64], + [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69], + [ 32, 33], [70, 71 ], + [ 34], [72 ], + [ 35, 36, 37], [73, 74, 75 ], + ] +} + +ROW_INDENTS = { + 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0] +} + +BLANK_LAYOUTS = [ +# Compact Layout +""" +.------------------------------------.------------------------------------. +| | | | | | | | | | | | | | | +!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +| | | | | | | | | | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | |-----!-----! | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | | | | | | | | | | +'-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' +""", + +# Wide Layout +""" +.---------------------------------------------. .---------------------------------------------. +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | |-------! !-------! | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | | | | | | ! | | | | | + '------------------------------' '------------------------------' + .---------------. .---------------. + | | | ! | | + .-------+-------+-------! !-------+-------+-------. + ! ! | | ! | ! ! + ! ! !-------! !-------! ! ! + | | | | ! | | | + '-----------------------' '-----------------------' +""", +] + + +DEFAULT_CONFIG = { + "keymaps_includes": [ + "keymap_common.h", + ], + 'filler': "-+.'!:x", + 'separator': "|", + 'default_key_prefix': ["KC_"], +} + + +SECTIONS = [ + 'layout_config', + 'layers', +] + + +# Markdown Parsing + +ONELINE_COMMENT_RE = re.compile(r""" + ^ # comment must be at the start of the line + \s* # arbitrary whitespace + // # start of the comment + (.*) # the comment + $ # until the end of line +""", re.MULTILINE | re.VERBOSE +) + +INLINE_COMMENT_RE = re.compile(r""" + ([\,\"\[\]\{\}\d]) # anythig that might end a expression + \s+ # comment must be preceded by whitespace + // # start of the comment + \s # and succeded by whitespace + (?:[^\"\]\}\{\[]*) # the comment (except things which might be json) + $ # until the end of line +""", re.MULTILINE | re.VERBOSE) + +TRAILING_COMMA_RE = re.compile(r""" + , # the comma + (?:\s*) # arbitrary whitespace + $ # only works if the trailing comma is followed by newline + (\s*) # arbitrary whitespace + ([\]\}]) # end of an array or object +""", re.MULTILINE | re.VERBOSE) + + +def loads(raw_data): + if isinstance(raw_data, bytes): + raw_data = raw_data.decode('utf-8') + + raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) + raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) + raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data) + return json.loads(raw_data) + + +def parse_config(path): + def reset_section(): + section.update({ + 'name': section.get('name', ""), + 'sub_name': "", + 'start_line': -1, + 'end_line': -1, + 'code_lines': [], + }) + + def start_section(line_index, line): + end_section() + if line.startswith("# "): + name = line[2:] + elif line.startswith("## "): + name = line[3:] + else: + name = "" + + name = name.strip().replace(" ", "_").lower() + if name in SECTIONS: + section['name'] = name + else: + section['sub_name'] = name + section['start_line'] = line_index + + def end_section(): + if section['start_line'] >= 0: + if section['name'] == 'layout_config': + config.update(loads("\n".join( + section['code_lines'] + ))) + elif section['sub_name'].startswith('layer'): + layer_name = section['sub_name'] + config['layer_lines'][layer_name] = section['code_lines'] + + reset_section() + + def amend_section(line_index, line): + section['end_line'] = line_index + section['code_lines'].append(line) + + config = DEFAULT_CONFIG.copy() + config.update({ + 'layer_lines': collections.OrderedDict(), + 'macro_ids': {'UM'}, + 'unicode_macros': {}, + }) + + section = {} + reset_section() + + with io.open(path, encoding="utf-8") as fh: + for i, line in enumerate(fh): + if line.startswith("#"): + start_section(i, line) + elif line.startswith(" "): + amend_section(i, line[4:]) + else: + # TODO: maybe parse description + pass + + end_section() + assert 'layout' in config + return config + +# header file parsing + +IF0_RE = re.compile(r""" + ^ + #if 0 + $.*? + #endif +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +COMMENT_RE = re.compile(r""" + /\* + .*? + \*/" +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def read_header_file(path): + with io.open(path, encoding="utf-8") as fh: + data = fh.read() + data, _ = COMMENT_RE.subn("", data) + data, _ = IF0_RE.subn("", data) + return data + + +def regex_partial(re_str_fmt, flags): + def partial(*args, **kwargs): + re_str = re_str_fmt.format(*args, **kwargs) + return re.compile(re_str, flags) + return partial + + +KEYDEF_REP = regex_partial(r""" + #define + \s + ( + (?:{}) # the prefixes + (?:\w+) # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_RE = re.compile(r""" + ( + enum + \s\w+\s + \{ + .*? # the enum content + \} + ; + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +ENUM_KEY_REP = regex_partial(r""" + ( + {} # the prefixes + \w+ # the key name + ) # capture group end +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + + +def parse_keydefs(config, data): + prefix_options = "|".join(config['key_prefixes']) + keydef_re = KEYDEF_REP(prefix_options) + enum_key_re = ENUM_KEY_REP(prefix_options) + for match in keydef_re.finditer(data): + yield match.groups()[0] + + for enum_match in ENUM_RE.finditer(data): + enum = enum_match.groups()[0] + for key_match in enum_key_re.finditer(enum): + yield key_match.groups()[0] + + +def parse_valid_keys(config, out_path): + basepath = os.path.abspath(os.path.join(os.path.dirname(out_path))) + dirpaths = [] + subpaths = [] + while len(subpaths) < 6: + path = os.path.join(basepath, *subpaths) + dirpaths.append(path) + dirpaths.append(os.path.join(path, "tmk_core", "common")) + dirpaths.append(os.path.join(path, "quantum")) + subpaths.append('..') + + includes = set(config['keymaps_includes']) + includes.add("keycode.h") + + valid_keycodes = set() + for dirpath, include in it.product(dirpaths, includes): + include_path = os.path.join(dirpath, include) + if os.path.exists(include_path): + header_data = read_header_file(include_path) + valid_keycodes.update( + parse_keydefs(config, header_data) + ) + return valid_keycodes + + +# Keymap Parsing + +def iter_raw_codes(layer_lines, filler, separator): + filler_re = re.compile("[" + filler + " ]") + for line in layer_lines: + line, _ = filler_re.subn("", line.strip()) + if not line: + continue + codes = line.split(separator) + for code in codes[1:-1]: + yield code + + +def iter_indexed_codes(raw_codes, key_indexes): + key_rows = {} + key_indexes_flat = [] + + for row_index, key_indexes in enumerate(key_indexes): + for key_index in key_indexes: + key_rows[key_index] = row_index + key_indexes_flat.extend(key_indexes) + assert len(raw_codes) == len(key_indexes_flat) + for raw_code, key_index in zip(raw_codes, key_indexes_flat): + # we keep track of the row mostly for layout purposes + yield raw_code, key_index, key_rows[key_index] + + +LAYER_CHANGE_RE = re.compile(r""" + (DF|TG|MO)\(\d+\) +""", re.VERBOSE) + + +MACRO_RE = re.compile(r""" + M\(\w+\) +""", re.VERBOSE) + + +UNICODE_RE = re.compile(r""" + U[0-9A-F]{4} +""", re.VERBOSE) + + +NON_CODE = re.compile(r""" + ^[^A-Z0-9_]$ +""", re.VERBOSE) + + +def parse_uni_code(raw_code): + macro_id = "UC_" + ( + unicodedata.name(raw_code) + .replace(" ", "_") + .replace("-", "_") + ) + code = "M({})".format(macro_id) + uc_hex = "{:04X}".format(ord(raw_code)) + return code, macro_id, uc_hex + + +def parse_key_code(raw_code, key_prefixes, valid_keycodes): + if raw_code in valid_keycodes: + return raw_code + + for prefix in key_prefixes: + code = prefix + raw_code + if code in valid_keycodes: + return code + + +def parse_code(raw_code, key_prefixes, valid_keycodes): + if not raw_code: + return 'KC_TRNS', None, None + + if LAYER_CHANGE_RE.match(raw_code): + return raw_code, None, None + + if MACRO_RE.match(raw_code): + macro_id = raw_code[2:-1] + return raw_code, macro_id, None + + if UNICODE_RE.match(raw_code): + hex_code = raw_code[1:] + return parse_uni_code(chr(int(hex_code, 16))) + + if NON_CODE.match(raw_code): + return parse_uni_code(raw_code) + + code = parse_key_code(raw_code, key_prefixes, valid_keycodes) + return code, None, None + + +def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): + keymap = {} + raw_codes = list(iter_raw_codes( + layer_lines, config['filler'], config['separator'] + )) + indexed_codes = iter_indexed_codes(raw_codes, key_indexes) + key_prefixes = config['key_prefixes'] + for raw_code, key_index, row_index in indexed_codes: + code, macro_id, uc_hex = parse_code( + raw_code, key_prefixes, valid_keycodes + ) + # TODO: line numbers for invalid codes + err_msg = "Could not parse key '{}' on row {}".format( + raw_code, row_index + ) + assert code is not None, err_msg + # print(repr(raw_code), repr(code), macro_id, uc_hex) + if macro_id: + config['macro_ids'].add(macro_id) + if uc_hex: + config['unicode_macros'][macro_id] = uc_hex + keymap[key_index] = (code, row_index) + return keymap + + +def parse_keymaps(config, valid_keycodes): + keymaps = collections.OrderedDict() + key_indexes = config.get( + 'key_indexes', KEYBOARD_LAYOUTS[config['layout']] + ) + # TODO: maybe validate key_indexes + + for layer_name, layer_lines, in config['layer_lines'].items(): + keymaps[layer_name] = parse_keymap( + config, key_indexes, layer_lines, valid_keycodes + ) + return keymaps + +# keymap.c output + +USERCODE = """ +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; +""" + +MACROCODE = """ +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 + +// TODO: allow default mode to be configured +static uint16_t unicode_mode = UC_MODE_WIN; + +uint16_t hextokeycode(uint8_t hex) {{ + if (hex == 0x0) {{ + return KC_P0; + }} + if (hex < 0xA) {{ + return KC_P1 + (hex - 0x1); + }} + return KC_A + (hex - 0xA); +}} + +void unicode_action_function(uint16_t hi, uint16_t lo) {{ + switch (unicode_mode) {{ + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + }} +}} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ + if (!record->event.pressed) {{ + return MACRO_NONE; + }} + // MACRODOWN only works in this function + switch(id) {{ + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; +{macro_cases} +{unicode_macro_cases} + default: + break; + }} + return MACRO_NONE; +}}; +""" + + +UNICODE_MACRO_TEMPLATE = """ +case {macro_id}: + unicode_action_function(0x{hi:02x}, 0x{lo:02x}); + break; +""".strip() + + +def unicode_macro_cases(config): + for macro_id, uc_hex in config['unicode_macros'].items(): + hi = int(uc_hex, 16) >> 8 + lo = int(uc_hex, 16) & 0xFF + unimacro_keys = ", ".join( + "T({})".format( + "KP_" + digit if digit.isdigit() else digit + ) for digit in uc_hex + ) + yield UNICODE_MACRO_TEMPLATE.format( + macro_id=macro_id, hi=hi, lo=lo + ) + + +def iter_keymap_lines(keymap, row_indents=None): + col_widths = {} + col = 0 + # first pass, figure out the column widths + prev_row_index = None + for code, row_index in keymap.values(): + if row_index != prev_row_index: + col = 0 + if row_indents: + col = row_indents[row_index] + col_widths[col] = max(len(code), col_widths.get(col, 0)) + prev_row_index = row_index + col += 1 + + # second pass, yield the cell values + col = 0 + prev_row_index = None + for key_index in sorted(keymap): + code, row_index = keymap[key_index] + if row_index != prev_row_index: + col = 0 + yield "\n" + if row_indents: + for indent_col in range(row_indents[row_index]): + pad = " " * (col_widths[indent_col] - 4) + yield (" /*-*/" + pad) + col = row_indents[row_index] + else: + yield pad + yield " {}".format(code) + if key_index < len(keymap) - 1: + yield "," + # This will be yielded on the next iteration when + # we know that we're not at the end of a line. + pad = " " * (col_widths[col] - len(code)) + prev_row_index = row_index + col += 1 + + +def iter_keymap_parts(config, keymaps): + # includes + for include_path in config['keymaps_includes']: + yield '#include "{}"\n'.format(include_path) + + yield "\n" + + # definitions + for i, macro_id in enumerate(sorted(config['macro_ids'])): + yield "#define {} {}\n".format(macro_id, i) + + yield "\n" + + for i, layer_name in enumerate(config['layer_lines']): + yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) + + yield "\n" + + # keymaps + yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" + + for i, layer_name in enumerate(config['layer_lines']): + # comment + layer_lines = config['layer_lines'][layer_name] + prefixed_lines = " * " + " * ".join(layer_lines) + yield "/*\n{} */\n".format(prefixed_lines) + + # keymap codes + keymap = keymaps[layer_name] + row_indents = ROW_INDENTS.get(config['layout']) + keymap_lines = "".join(iter_keymap_lines(keymap, row_indents)) + yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) + + yield "};\n\n" + + # no idea what this is for + yield "const uint16_t PROGMEM fn_actions[] = {};\n" + + # macros + yield MACROCODE.format( + macro_cases="", + unicode_macro_cases="\n".join(unicode_macro_cases(config)), + ) + + # TODO: dynamically create blinking lights + yield USERCODE + + +def main(argv=sys.argv[1:]): + if not argv or '-h' in argv or '--help' in argv: + print(__doc__) + return 0 + + in_path = os.path.abspath(argv[0]) + if not os.path.exists(in_path): + print("No such file '{}'".format(in_path)) + return 1 + + if len(argv) > 1: + out_path = os.path.abspath(argv[1]) + else: + dirname = os.path.dirname(in_path) + out_path = os.path.join(dirname, "keymap.c") + + config = parse_config(in_path) + valid_keys = parse_valid_keys(config, out_path) + keymaps = parse_keymaps(config, valid_keys) + + with io.open(out_path, mode="w", encoding="utf-8") as fh: + for part in iter_keymap_parts(config, keymaps): + fh.write(part) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex b/keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex new file mode 100644 index 0000000000..bef079b16a --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex @@ -0,0 +1,1274 @@ +:100000000C9427040C946B040C946B040C946B04F8 +:100010000C946B040C946B040C946B040C946B04A4 +:100020000C946B040C946B040C9403110C94D51178 +:100030000C946B040C946B040C946B040C946B0484 +:100040000C946B040C94DF250C946B040C946B04DF +:100050000C946B040C94721F0C946B040C946B0442 +:100060000C946B040C946B040C946B040C946B0454 +:100070000C946B040C946B040C946B040C946B0444 +:100080000C946B040C946B040C946B040C946B0434 +:100090000C946B040C946B040C946B040C946B0424 +:1000A0000C946B040C946B040C946B040F08DC0729 +:1000B000C707210848087B085D0863087808A60878 +:1000C0009B0866089E08B20757088F089808D9074A +:1000D000D0071E081508FD07D30792072A088008D5 +:1000E00089089508030833081208AC0786085108E8 +:1000F000F40709080008E8078C08F7079D0754086B +:10010000EE072D088C071808CA07B807E207DF07B3 +:10011000360806087208A307F1071B088F07240892 +:100120006F0875083F08C1075A08AF07D607BB0715 +:1001300030086008A10895070C08270869083908E5 +:10014000BE0792084E08A907FA07C4074508CD075D +:100150006C08A6073C084B089807B507AB0883084E +:10016000E507A0074208EB0780074212641252130A +:1001700064125213A912CC12521321133413031612 +:1001800003163216321668168816B917B917931661 +:10019000B91743174317AA17B917B917B317501749 +:1001A0005017501750175017501750175017501717 +:1001B00050175017501750175017501750176217F5 +:1001C0006F1776177D178717055204520152035295 +:1001D000010000001E001B0018002F000100290074 +:1001E0001F0013000C003300E300E10020000900B1 +:1001F00004003400E2002A0021001A000800060072 +:10020000E000650022000A00120019000000490009 +:100210002E004A0000004D00000002542E0202543D +:1002200000002B0000005E3023000B0016000500CC +:1002300000004C0024000D0011001000E4004B00F1 +:1002400025000E0015003600E6002C0026000F00E9 +:100250001700370050002800270014000700520044 +:1002600051004E0035001C002D001D004F00000005 +:100270000100010001000100010000001E02300227 +:1002800038020100010001001F0264143800300030 +:1002900001000100200224022302270201000100C4 +:1002A000010024142514010001000100010027149D +:1002B00026140100000001000100010000000100FF +:1002C0000000010001000100000001000000010029 +:1002D0000100310021022D14000001000100640022 +:1002E00025022202010001000100640226023602FA +:1002F0000100010001000100301437023830010014 +:1003000035021F02310255300230010001000100A8 +:100310002D0201003D30000001000100010001003C +:10032000010000003A00010001000100010001008D +:100330003B00010001000100010001003C00010040 +:1003400001000100010001003D0001000100010069 +:10035000010001003E000100010001000000010059 +:100360004400010000000100000001004500010000 +:1003700000005300000001003F00010001000100E7 +:100380000000010040005F005C00590062000100B5 +:10039000410060005D005A008500010042006100DC +:1003A0005E005B00630001004300550056005700EB +:1003B0005800010067005400560057005800000024 +:1003C0000100010001000100010000004D30393042 +:1003D00001005B3001000100513058303C303B30AF +:1003E000010001005030013014145D3001000100A3 +:1003F0004A30593008145C30010001004930573050 +:100400000430003000000100053001000000010050 +:1004100000000100010001000000010000000100D7 +:100420004F305A3037301E02000001004E300100BC +:100430004B30010001000100483056305430533039 +:10044000010001004C30010003303A30010001008E +:100450005230010001000100010001000100010013 +:100460000100010001000000010001000100010085 +:100470000100000042302030343001000100010052 +:1004800046302E30263033300100010045302D300B +:100490001E3001000100010040302B3022300100ED +:1004A000010001003F3025302C3001000000010028 +:1004B0000100010000000100000001000100010036 +:1004C00000000100000001004430233031301F30B3 +:1004D00000000100433035302A302930010001008E +:1004E0003E3027303030010001000100413028301B +:1004F00032300100010001004730010021300100CD +:10050000010001000100363024302F3001000000CE +:10051000010001000100010001000000010008309D +:100520001B30010001000100010015300D301A30B0 +:10053000010001000100143006300100010001003B +:10054000010012300A3001000100010001000C30EE +:100550001330010000000100010001000000010053 +:100560000000010001000100000001000000010086 +:1005700001000B30183007300000010001001C3072 +:10058000113010300100010001000E301730010061 +:100590000100010001000F301930010001000100CD +:1005A00001000100093001000100010001001D30BF +:1005B00001001630010000000100010001000100EF +:1005C0000100000001000100010001000100010024 +:1005D0000100010001000100010001000100010013 +:1005E0000100010001000100010001000100010003 +:1005F00001000100010001000100010000000100F4 +:1006000001000100000001000000010001000100E4 +:1006100000000100000001000100010001000100D4 +:1006200000000100010001000100010001000100C3 +:1006300001000100010001000100010001000100B2 +:1006400001000100010001000100010001000100A2 +:100650000100010001000100010001000100000093 +:1006600016034500720067006F0044006F007800B9 +:10067000200045005A000000160345007200670084 +:100680006F0044006F007800200045005A00000011 +:100690000403090409026D00040100A0FA09040022 +:1006A000000103010100092111010001223F00079F +:1006B00005810308000A0904010001030102000981 +:1006C0002111010001224D000705820308000A09DB +:1006D000040200010300000009211101000122367B +:1006E000000705830308000A090403000103000052 +:1006F00000092111010001223900070584031000BF +:10070000011201100100000008EDFE0713010001B5 +:1007100002000105010906A101050719E029E715F5 +:100720000025019508750181020508190129059523 +:1007300005750191029501750391010507190029BD +:100740007715002501957875018102C005010980A2 +:10075000A101850216010026B7001A01002AB70080 +:10076000751095018100C0050C0901A101850316D2 +:100770000100269C021A01002A9C02751095018135 +:1007800000C005010902A1010901A1000509190123 +:10079000290515002501950575018102950175034F +:1007A00081010501093009311581257F9502750800 +:1007B000810609381581257F950175088106050C8C +:1007C0000A38021581257F950175088106C0C0058C +:1007D000010906A101050719E029E7150025019582 +:1007E0000875018102950175088101050819012923 +:1007F000059505750191029501750391010507198C +:100800000029FF150025FF950675088100C000002E +:10081000000000000000000000010204060A0F179B +:10082000202C3A4A5D71879DB3C7DAE9F5FCFFFCDD +:10083000F5E9DAC7B39D87715D4A3A2C20170F0A94 +:100840000604020100000000000000000000112466 +:100850001FBECFEFDAE0DEBFCDBF04B603FE24C07B +:100860008091FD019091FE01A091FF01B0910002E5 +:100870008730904BA740B04BB9F41092FD01109215 +:10088000FE011092FF011092000214BE84B7877F10 +:1008900084BF88E10FB6F8948093600010926000E6 +:1008A0000FBEE0E0FFE3099511E0A0E0B1E0ECE469 +:1008B000FFE402C005900D92A433B107D9F711E00F +:1008C000A4E3B1E001C01D92AD3FB107E1F70E9482 +:1008D000470E0C94A4270C9400001092B9008AE0F3 +:1008E0008093B800089594EA9093BC009091BC0066 +:1008F00097FFFCCF9091B900987F983021F090310C +:1009000011F081E008958093BB0084E88093BC00DF +:100910008091BC0087FFFCCF8091B900887F88312F +:1009200011F0803471F780E0089584E98093BC0071 +:100930008091BC0084FDFCCF08958093BB0084E8C7 +:100940008093BC008091BC0087FFFCCF9091B900E0 +:10095000987F81E0983209F480E0089584E88093DC +:10096000BC008091BC0087FFFCCF8091BB00089544 +:1009700080910101811115C080E40E94730480936D +:10098000010181110CC082E10E949D04809301014C +:10099000811105C08FEF0E949D04809301010E9488 +:1009A000950484B1807F84B985B1807F85B98AB18F +:1009B000837F8AB98BB1837F8BB93E98469808951F +:1009C0000E947306809301010E94B80480B38C706A +:1009D00080BB81B3836F81BBA5E3B1E0E3E4F1E0C9 +:1009E0008EE08E0F11921D928E13FCCF0C945D063B +:1009F000BF92CF92DF92EF92FF920F931F93CF930C +:100A0000DF9380910101882379F0809134018F5F19 +:100A100080933401811108C00E9473068093010104 +:100A2000811102C00E94050605E311E0C0E0D0E09C +:100A3000DD24D39482E0C82EEE24E394F12CC73059 +:100A4000D10500F580910101811164C080E40E940C +:100A5000730480930101811112C082E10E949D0400 +:100A60008093010181110BC0C7010C2E01C0880FBA +:100A70000A94EAF780950E949D04809301010E94E8 +:100A8000950448C0CA30A1F028F4C83059F0C930E4 +:100A900061F005C0CC3089F070F0CD3089F0209A3B +:100AA000289810C0219A29980DC0229A2A980AC025 +:100AB000239A2B9807C0529A01C0539A5B9802C0A0 +:100AC0003E9A469890EA9A95F1F79FB1799902C0BB +:100AD00082E001C080E091709D25982B7C9902C036 +:100AE00084E001C080E0892B7D9902C038E001C01C +:100AF00030E0832B7E9902C020E101C020E0822BF0 +:100B00009FB19095991F9927991F9295990F907E63 +:100B1000892B0FC080910101811149C080E40E949E +:100B2000730480930101882379F1B12C0E9495040C +:100B30008B2DF8019081981719F08083C0920001E5 +:100B40000E94B80421960F5F1F4FCE30D10509F0E7 +:100B500076CF80910001882361F18150809300015C +:100B6000882339F08FE99FE00197F1F700C000007A +:100B700020C0A3E4B1E0E5E3F1E0CF01825F919111 +:100B80009D938E13FCCF15C083E10E949D0480933A +:100B900001018111CACF81E40E9473048093010195 +:100BA0008111C3CF0E94AE04B82EB094BFCF80E0B5 +:100BB000C0CF0E94030681E0DF91CF911F910F917A +:100BC000FF90EF90DF90CF90BF900895E82FF0E076 +:100BD000ED5BFE4F8081089508950F931F93CF938F +:100BE000DF93C3E4D1E010E00C2F025F899190E025 +:100BF0000E94981E180F0C13F9CF812FDF91CF910F +:100C00001F910F9108950C94B50856985E982598F9 +:100C10002D9826982E9827982F988FEF90E09093F4 +:100C200089008093880090938B0080938A00909332 +:100C30008D0080938C00259A2D9A2FEF80E792E00B +:100C4000215080409040E1F700C00000269A2E9A83 +:100C50002FEF80E792E0215080409040E1F700C004 +:100C60000000279A2F9A2FEF80E792E021508040D2 +:100C70009040E1F700C0000025982D982FEF80E705 +:100C800092E0215080409040E1F700C0000026989B +:100C90002E982FEF80E792E0215080409040E1F7BE +:100CA00000C0000027982F9856985E9825982D9898 +:100CB00026982E9827982F98089589EA8093800087 +:100CC00089E08093810024982C983F988AB18F7492 +:100CD0008AB96E98479A8BB1806B8BB9769A0E94CD +:100CE00005060C94B40880E28093010180915101C3 +:100CF00081110EC00E946D0481E0809351012FEF9D +:100D000083ED90E3215080409040E1F700C0000067 +:100D100080E40E9473048093010181112EC00E941F +:100D20009D0480930101811128C00E949D0480933D +:100D30000101811122C08FE30E949D048093010173 +:100D400081111BC00E94950480E40E94730480936B +:100D50000101811112C08CE00E949D048093010169 +:100D600081110BC00E949D0480930101811105C077 +:100D70008FE30E949D04809301010E94950480915D +:100D800001010895882359F0282F30E08A3020F49B +:100D9000C901885A9F4F0895C9010697089582E6B0 +:100DA00090E008950F931F93CF93DF938C01EB0195 +:100DB0008091520190915301009709F448C0019726 +:100DC00009F089C080EE0E94A71481EE0E94A7144A +:100DD00088E10E94A71488E10E946F15C801807FF6 +:100DE000992724E0969587952A95E1F70E94C206F7 +:100DF000182F0E94A714812F0E946F15802F8F70CB +:100E00000E94C206182F0E94A714812F0E946F15FE +:100E1000CE01807F992734E0969587953A95E1F742 +:100E20000E94C206D82F0E94A7148D2F0E946F1512 +:100E30008C2F8F700E94C206C82F0E94A7148C2F7F +:100E40000E946F1580EE0E946F1581EE3EC082EE0B +:100E50000E94A71487E50E94A71487E50E946F15DA +:100E6000C801807F992744E0969587954A95E1F7D8 +:100E70000E94C206182F0E94A714812F0E946F158E +:100E8000802F8F700E94C206182F0E94A714812FF6 +:100E90000E946F15CE01807F992754E09695879523 +:100EA0005A95E1F70E94C206D82F0E94A7148D2FF1 +:100EB0000E946F158C2F8F700E94C206C82F0E944F +:100EC000A7148C2F0E946F1582EEDF91CF911F9196 +:100ED0000F910C946F15DF91CF911F910F91089591 +:100EE000FC018281882309F43CC1862F90E08F3574 +:100EF000910508F036C1FC01EA5AFF4F0C945427C3 +:100F0000809152019091530101968170992790939D +:100F100053018093520125C16FEB70E019C160E964 +:100F200070E008C061EA70E013C163E870E00BC1D3 +:100F30006BE570E081E290E012C16BEB70E008C1FC +:100F400063E570E0F7CF6EEB70E002C164E070E043 +:100F5000D4C069EB70E001C162EB70E0F9C065E8F4 +:100F600070E0F1C069E970E0F3C065E570E0E2CFE0 +:100F700068EC70E0EDC069E870E0E5C064E770E03F +:100F8000E2C062E970E0D6CF66E770E0DCC063E9FA +:100F900070E0D0CF60EC70E0DBC062EB70E0DDC0F1 +:100FA00069EA70E0D5C068EA70E0D2C064E870E039 +:100FB000CAC06DE970E0CCC067EF70E0CEC063ECF2 +:100FC00070E0C6C061EC70E0C3C069E570E0B2CF0C +:100FD00063EB70E0BDC064E570E0ACCF6DEB70E03A +:100FE000B7C066EB70E0B4C065EB70E0B1C06AEB0F +:100FF00070E0AEC067E770E0A6C060EA70E0A8C02D +:1010000062EC70E0A5C06EE970E0A2C068EB70E031 +:101010009FC067EB70E09CC062E870E094C063E43E +:1010200070E06BC061EB70E093C066EA70E090C066 +:1010300066EC70E08DC06EE170E05FC06FE970E05B +:1010400087C068E070E059C067ED70E086C060E876 +:1010500070E079C063EA70E07BC069EC70E078C052 +:1010600061E870E070C066E970E072C064EC70E046 +:101070006FC065E770E067C063E070E03EC061EBA1 +:1010800070E06BC06EEB70E068C063EB70E065C051 +:1010900065E070E032C061E970E04CCF69E770E074 +:1010A00052C064EB70E054C06CEB70E051C06AE970 +:1010B00070E04EC068E870E046C061E970E048C08A +:1010C00067E870E040C062E970E042C067E970E044 +:1010D0003FC068E770E037C060E770E034C069E0A7 +:1010E00070E00BC065EC70E033C060E670E005C0F6 +:1010F00067EA70E02DC060E070E082E290E02FC00F +:1011000064EA70E025C06CEB70E027C067EC70E02B +:101110001FC068E970E01CC069EB70E019C06BE9A2 +:1011200070E016C06FE770E00EC065EA70E010C0B6 +:101130006CE970E00DC065E970E00AC063E970E039 +:1011400007C066E870E080E290E009C064E970E002 +:1011500083E090E004C06DEB70E080E090E00E94DE +:10116000D20680E090E0089508956091BF017091EB +:10117000C0018091C1019091C2010E94A41E5698A5 +:101180005E9825982D9826982E9827982F9883302A +:10119000A9F028F4813051F0823069F012C0843017 +:1011A00041F0853071F4259A2D9A08C0259A2D9A20 +:1011B0000895259A2D9A269A2E9A0895279A2F9A5D +:1011C000089556985E98089581E0089581E0089505 +:1011D0000C94E60808950F931F93CF93DF938C012F +:1011E000FC01C081D181CE010E941D1DBE010E9463 +:1011F0009409EC01B8010E94E808882309F48DC025 +:10120000F8018281882309F44AC080915F0181112D +:101210001FC0C431F0E5DF0709F051C00E94EA08A1 +:1012200081E080935F010E943C1F90935E01809358 +:101230005D011092560110925801109257011092C0 +:101240005A011092590110925C0110925B0165C025 +:1012500080915D0190915E010E94481F883C91053C +:1012600070F480915601E82FF0E0EE0FFF1FE95A6D +:10127000FE4FD183C0838F5F809356014EC0C43828 +:1012800080E5D80721F0C538D04501F13AC0F80112 +:101290008281882341F01092540182E01EC0C4383C +:1012A000E0E5DE0759F580915401811106C086E220 +:1012B0000E94A71486E20E946F1582E01CC0C43809 +:1012C000F0E5DF0741F3C538D045D9F4F801828154 +:1012D000882331F01092550180E20E94BE151DC096 +:1012E00080915501811106C087E20E94A71487E210 +:1012F0000E946F1580E20E94C5150FC0C538D04509 +:1013000029F381E08093540180935501C801DF9156 +:10131000CF911F910F910C94E40880E0DF91CF9161 +:101320001F910F910895089596E0799FF00111247F +:1013300094E5899FE00DF11D1124E60FF11DEE0FDC +:10134000FF1FE853FE4F859194910895880F991FD0 +:10135000FC01E85BFF4F859194910895880F991FD8 +:10136000FC01E853FE4F8591949108950F931F93CC +:10137000CF93DF93EC01811520E3920750F5C1155F +:1013800080E2D80708F0C3C0CB3BD10590F4C83A3F +:10139000D10508F06AC0C53AD10508F05BC0C43079 +:1013A000D10508F0D0C1219709F0CAC101E010E0D1 +:1013B0000AC2CF3FD10511F008F0C5C1C03FD10529 +:1013C00008F0A2C0CE01805E9109089708F4BBC165 +:1013D000B7C1C13090E5D90709F4A2C020F5C031EA +:1013E0008FE4D80770F4C11590E4D90708F094C0D1 +:1013F000C11521E3D20708F0A3C1DD278E01106CCF +:10140000E2C1C115D04509F09BC10E9424188FEF9D +:1014100094E32CE0815090402040E1F700C00000B0 +:101420000E94971FD0C1C11597E5D90758F4C03164 +:1014300021E5D20708F01CC1C43180E5D80708F4C3 +:1014400075C07EC1CE0190578115904108F078C1DA +:10145000DF7073C1C53AD10509F477C1C63AD10529 +:1014600009F076C102E810E4AEC1C83AD10509F42A +:1014700072C1C93AD10509F471C1CA3AD10509F45A +:1014800070C1CB3AD10509F46FC1CC3AD10509F44A +:101490006EC1CD3AD10509F46DC1C03BD10509F447 +:1014A0006CC1CE3AD10509F46BC1CF3AD10509F42C +:1014B0006AC1C13BD10509F469C1C23BD10509F438 +:1014C00068C1C33BD10509F467C1C43BD10509F428 +:1014D00066C1C53BD10509F465C1C63BD10509F418 +:1014E00064C1C73BD10509F463C1C83BD10509F408 +:1014F00062C1C93BD10509F461C1CA3BD10509F4F8 +:1015000060C100E014E45FC18E0110655CC1CE01D2 +:101510009F700E94AE0958C1DF708E01106A53C1DE +:101520008091DC0181608093DC014DC10E943C21EF +:10153000811102C00E9422210E94592190E09093C3 +:10154000FD018093FC01C23080E5D80721F4809131 +:10155000FC01816086C0C43090E5D90721F48091F8 +:10156000FC0182607EC0C63020E5D20721F4809164 +:10157000FC01846076C0C83080E5D80719F48091FA +:10158000FC0127C0CA3090E5D90721F48091FC0105 +:10159000806167C0CC3020E5D20721F48091FC0146 +:1015A00080625FC0CE3080E5D80721F48091FC01D5 +:1015B000806457C0C03190E5D90721F48091FC01C7 +:1015C00080684FC0C23120E5D20729F48091FC0128 +:1015D0008460886046C0C33080E5D80721F48091DC +:1015E000FC018E7F3EC0C53090E5D90721F4809183 +:1015F000FC018D7F36C0C73020E5D20721F48091F1 +:10160000FC018B7F2EC0C93080E5D80719F480918A +:10161000FC0126C0CB3090E5D90721F48091FC0174 +:101620008F7E1FC0CD3020E5D20721F48091FC01D0 +:101630008F7D17C0CF3080E5D80721F48091FC0161 +:101640008F7B0FC0C13190E5D90721F48091FC0157 +:101650008F7707C0C331D04531F48091FC018B7F77 +:10166000877F8093FC018091FC010E945D21ABC0CB +:101670008D2F99278F70992781309105D9F49E017C +:101680002370332702C0880F991F2A95E2F79C68C0 +:101690008E0144E0000F111F4A95E1F700271370F7 +:1016A000802B912B53E0CC0FDD1F5A95E1F7C076CC +:1016B000DD272FC08230910531F4DC2FCC278E013D +:1016C000016F106A80C08330910569F4CE01837088 +:1016D000992701E010E002C0000F111F8A95E2F780 +:1016E000C8019C680FC084309105B9F4CE018370A5 +:1016F000992701E010E002C0000F111F8A95E2F760 +:10170000C8019A6823E0CC0FDD1F2A95E1F7C07E5F +:10171000D7708C010C2B1D2B56C08530910531F4F0 +:10172000DC2FCC278E01046F106A4DC0069709F09C +:101730004AC0CF71DD27DC2FCC278E01106243C059 +:1017400000E010E040C08E013EC001E810E43BC064 +:1017500003E810E438C002EE14E435C009EE14E4E6 +:1017600032C00AEE14E42FC005EB14E42CC006EBE3 +:1017700014E429C007EB14E426C00CEC14E423C0E5 +:101780000DEC14E420C003E815E41DC00AE815E4DC +:101790001AC002E915E417C004E915E414C001E217 +:1017A00016E411C003E216E40EC004E216E40BC016 +:1017B00005E216E408C006E216E405C007E216E4F6 +:1017C00002C00AE216E4C801DF91CF911F910F9188 +:1017D000089596E0799FF001112494E5899FE00D2A +:1017E000F11D1124E60FF11DEE0FFF1FE853FE4F10 +:1017F00085919491803E9105E0F4803C910558F5E7 +:101800008133910509F46FC048F48932910509F4D8 +:1018100063C08A32910509F46DC072C089339105A5 +:10182000E9F082389105D1F08533910509F44DC076 +:1018300067C0833E910581F138F4803E9105B9F08F +:10184000823E9105D9F05CC0863E910561F1873EEC +:101850009105A1F155C00E94A60908952091FC01AF +:1018600020FD02C021FF4CC080EE90E049C0809175 +:10187000FC0180FFF9CF89E390E042C08091FC0138 +:1018800082FF0EC08091FC0184FF03C080E090E0E5 +:1018900037C083EE90E034C08091FC0182FFF2CF2C +:1018A00082EE90E02DC08091FC0183FF0BC08091FF +:1018B000FC0184FDEBCF87EE90E022C08091FC011B +:1018C00083FFF5CF86EE90E01BC08091FC0185FF81 +:1018D00007C089E290E014C08091FC0185FFF9CF38 +:1018E00085E390E00DC08091FC0186FF07C08AE28D +:1018F00090E006C08091FC0186FFF9CF81E390E083 +:101900000E94B609089508950C94830C809170018B +:101910000895CF93DF9300D01F92CDB7DEB79C011F +:101920008091F301843019F593E099833B832A83F6 +:101930009093E9008FEF9091E800815095FD06C0EB +:1019400095ED9A95F1F700008111F5CF8091E800AF +:1019500085FF0DC040E050E063E070E0CE010196ED +:101960000E94F30E8091E8008E778093E8000F903C +:101970000F900F90DF91CF910895CF93DF9300D018 +:101980001F92CDB7DEB72091F301243021F522E07C +:1019900029839B838A8383E08093E9008FEF909172 +:1019A000E800815095FD06C095ED9A95F1F700008D +:1019B0008111F5CF8091E80085FF0DC040E050E037 +:1019C00063E070E0CE0101960E94F30E8091E80082 +:1019D0008E778093E8000F900F900F90DF91CF915A +:1019E00008952091F3012430F1F422E02093E900DE +:1019F0002FEF3091E800215035FD06C035ED3A95C6 +:101A0000F1F700002111F5CF2091E80025FF0BC070 +:101A100040E050E065E070E00E94F30E8091E80045 +:101A20008E778093E8000895CF93DF93EC01909137 +:101A3000F301943009F046C080910C018823D9F05D +:101A400080910D018823B9F09093E9008FEF909178 +:101A5000E800815095FD06C095E19A95F1F70000E8 +:101A60008111F5CF8091E80085FF2CC040E050E067 +:101A700060E170E017C081E08093E9008FEF909102 +:101A8000E800815095FD06C095ED9A95F1F70000AC +:101A90008111F5CF8091E80085FF14C040E050E04F +:101AA00068E070E0CE010E94F30E8091E8008E772E +:101AB0008093E80080E1FE01A0E6B1E001900D9284 +:101AC0008A95E1F7DF91CF9108958091F20181111C +:101AD00009C00E9488100E94E5108091E200846095 +:101AE0008093E20008951092F201089508950C94F5 +:101AF000CC250E942D1F0E94D2250E948B130C948E +:101B0000840C42E061EC81E00E94021042E061EC52 +:101B100082E00E94021042E061EC83E00E94021029 +:101B200042E161EC84E00C9402108091F501833075 +:101B300009F455C030F4813071F0823009F48EC060 +:101B400008958A3009F47AC08B3009F460C0893076 +:101B500009F09CC020C08091F401813A09F096C040 +:101B60008091E800877F8093E8008091F801909150 +:101B7000F901892B21F460E180E691E003C060E087 +:101B800080E090E070E00E943E0F8091E8008B774B +:101B90008093E80008958091F401813209F076C0C5 +:101BA0008091F8019091F901009719F0039709F0DD +:101BB0006DC08091E800877F8093E8008091E80005 +:101BC00082FD05C08091F3018111F8CF5FC0809143 +:101BD000F100809370018091E8008B7753C0809171 +:101BE000F401813A09F052C08091F8019091F90115 +:101BF000892B09F04BC08091E800877F8093E80033 +:101C00008091E80080FFFCCF80910C0136C080916C +:101C1000F4018132D9F58091F8019091F901892B75 +:101C2000A9F58091E800877F8093E8000E94371033 +:101C30008091F60180930C010C9424188091F4019A +:101C4000813221F58091E800877F8093E8000E942F +:101C500037108091F7018093710108958091F4010C +:101C6000813AA1F48091E800877F8093E800809119 +:101C7000E80080FFFCCF809171018093F10080919A +:101C8000E8008E778093E8000C943710089584B7AD +:101C9000877F84BF88E10FB6F8948093600010922C +:101CA00060000FBE90E080E80FB6F894809361006A +:101CB000909361000FBE0E94DA130E9488100E9468 +:101CC000E5108091E20084608093E20078940E94A5 +:101CD0006B130E94DC1382E091E00E9486130E9445 +:101CE000BA258091F301853069F40E94F41E809139 +:101CF000F1018823B1F30E941F1F882391F30E94F2 +:101D0000DD0EEFCF0E94E213ECCF292F33272330D3 +:101D10003105C9F064F42130310581F022303105FC +:101D200009F043C08DE690E024E936E042C021325C +:101D30003105F1F02232310541F137C082E190E006 +:101D400021E037E036C099278130910541F082309B +:101D5000910541F0892B49F5E0E9F6E005C0E8E797 +:101D6000F6E002C0E0E6F6E0849190E09F0121C039 +:101D70006430D8F4E62FF0E0EE0FFF1FEE5DFE4F6B +:101D80002081318189E090E014C0643070F470E00B +:101D9000FB01EE0FFF1FE65EFE4F20813181FB014C +:101DA000EA5EFE4F808190E004C080E090E020E099 +:101DB00030E0FA0131832083089580E189BD82E11A +:101DC00089BD09B400FEFDCF8091D8008F7D80933E +:101DD000D8008091E00082608093E0008091E00074 +:101DE00081FDFCCF0895CF92DF92EF92FF920F9387 +:101DF0001F93CF93DF93EC018B016A010E94561071 +:101E0000811133C0C114D10439F0F6018081918170 +:101E1000081B190BC80FD91FE12CF12C0115110556 +:101E200019F18091E80085FD16C08091E8008E7759 +:101E30008093E800C114D10449F0F60180819181BA +:101E4000E80EF91EF182E08285E00FC00E94561074 +:101E5000882321F30AC089918093F1000150110970 +:101E6000FFEFEF1AFF0ADACF80E0DF91CF911F91E9 +:101E70000F91FF90EF90DF90CF9008952091FA019D +:101E80003091FB012617370748F06115710539F4C9 +:101E90002091E8002E772093E80001C0B90140E0CE +:101EA00061157105A9F12091F301222309F443C0C2 +:101EB000253009F442C02091E80023FD40C0209164 +:101EC000E80022FD32C02091E80020FFE9CF4091D8 +:101ED000F3002091F20030E0342BFC01CF016115BA +:101EE000710559F02830310540F481918093F1005B +:101EF000615071092F5F3F4FF1CF41E0283031052C +:101F000009F040E02091E8002E772093E800C8CF48 +:101F10004111C9CF0AC08091F301882361F0853057 +:101F200061F08091E80083FD0AC08091E80082FFA3 +:101F3000F2CF80E0089582E0089583E0089581E083 +:101F400008952091FA013091FB012617370748F0D8 +:101F50006115710539F42091E8002E772093E8008F +:101F600001C0B901FC0120E06115710591F180917A +:101F7000F301882309F440C0853009F43FC0809103 +:101F8000E80083FD3DC08091E80082FD2FC0809174 +:101F9000E80080FFE9CF2091F3008091F20090E00B +:101FA000922B6115710559F08830910540F4249108 +:101FB0002093F1003196615071090196F2CF21E032 +:101FC000089709F020E08091E8008E778093E80080 +:101FD000CBCF2111CCCF0AC08091F301882361F0CF +:101FE000853061F08091E80083FD0AC08091E800AF +:101FF00082FFF2CF80E0089582E0089583E00895A3 +:1020000081E00895982F973058F59093E90098173C +:1020100039F07091EC002091ED005091F00003C078 +:10202000242F762F50E021FF19C03091EB003E7F26 +:102030003093EB003091ED003D7F3093ED00309117 +:10204000EB0031603093EB007093EC002093ED00D7 +:102050005093F0002091EE0027FF07C09F5FD3CF81 +:102060008F708093E90081E0089580E00895809169 +:10207000F40187FF11C08091E80082FD05C08091C6 +:10208000F3018111F8CF11C08091E8008B770BC06C +:102090008091F301882349F08091E80080FFF8CF18 +:1020A0008091E8008E778093E80008952091E40005 +:1020B0003091E50095E64091EC00842F817040FF5F +:1020C00022C08091E80080FD1CC08091F30188232C +:1020D00091F0853091F08091EB0085FD10C040912A +:1020E000E4005091E5004217530729F39A019150FB +:1020F00011F784E0089582E0089583E0089581E077 +:10210000089580E008954091E80042FFDECF0895F1 +:102110000E94F6100E94FE10E0EEF0E080818160E7 +:102120008083E8EDF0E080818F77808319BCA7ED94 +:10213000B0E08C918E7F8C9380818F7E8083109213 +:10214000F20108950F931F93CF93DF930E94F6102F +:102150000E94FE10C8EDD0E088818F778883888147 +:102160008068888388818F7D888319BC1092F301F1 +:102170001092EF011092F1011092F00100EE10E0C8 +:10218000F80180818B7F808388818160888342E031 +:1021900060E080E00E940210E1EEF0E080818E7F3E +:1021A0008083E2EEF0E080818160808380818860BE +:1021B0008083F80180818E7F80838881806188831D +:1021C000DF91CF911F910F910895E8EDF0E08081AC +:1021D0008F7E8083E7EDF0E080818160808384E002 +:1021E00082BF81E08093F2010C94A210E8EDF0E050 +:1021F00080818E7F80831092E20008951092DA0031 +:102200001092E10008951F920F920FB60F921124C1 +:102210002F933F934F935F936F937F938F939F93EE +:10222000AF93BF93EF93FF938091E10082FF0BC0C8 +:102230008091E20082FF07C08091E1008B7F809354 +:10224000E1000E946A138091DA0080FF1FC0809134 +:10225000D80080FF1BC08091DA008E7F8093DA0067 +:102260008091D90080FF0DC080E189BD82E189BDE8 +:1022700009B400FEFDCF81E08093F3010E94650D5B +:1022800005C019BC1092F3010E94730D8091E1000A +:1022900080FF19C08091E20080FF15C08091E200AC +:1022A0008E7F8093E2008091E20080618093E20063 +:1022B0008091D80080628093D80019BC85E080931B +:1022C000F3010E94770D8091E10084FF30C080917E +:1022D000E20084FF2CC080E189BD82E189BD09B4A0 +:1022E00000FEFDCF8091D8008F7D8093D800809133 +:1022F000E1008F7E8093E1008091E2008F7E8093E9 +:10230000E2008091E20081608093E2008091EF0121 +:10231000882311F084E007C08091E30087FD02C0AC +:1023200081E001C083E08093F3010E94790D8091E8 +:10233000E10083FF29C08091E20083FF25C08091E6 +:10234000E100877F8093E10082E08093F3011092A7 +:10235000EF018091E1008E7F8093E1008091E200A7 +:102360008E7F8093E2008091E20080618093E200A2 +:1023700042E060E080E00E9402108091F0008860FE +:102380008093F0000E94760DFF91EF91BF91AF9185 +:102390009F918F917F916F915F914F913F912F917D +:1023A0000F900FBE0F901F9018951F920F920FB6AF +:1023B0000F9211242F933F934F935F936F937F93CB +:1023C0008F939F93AF93BF93CF93DF93EF93FF933D +:1023D000C091E900CF708091EC00D82FD17080FDC2 +:1023E000D0E81092E9008091F000877F8093F000A0 +:1023F00078940E9419121092E9008091F000886090 +:102400008093F000CD2BCF70C093E900FF91EF9146 +:10241000DF91CF91BF91AF919F918F917F916F91FC +:102420005F914F913F912F910F900FBE0F901F9092 +:1024300018951F93CF93DF93CDB7DEB7AA970FB64A +:10244000F894DEBF0FBECDBFE4EFF1E088E08E0F61 +:102450009091F10091938E13FBCF0E94950D809186 +:10246000E80083FF1FC18091F4019091F501492F8D +:1024700050E04A30510508F015C1FA01EB54FF4F06 +:102480000C945427803881F0823809F00BC1809178 +:10249000F8018F708093E9008091EB0085FB88271D +:1024A00080F91092E90006C08091F0019091F1014D +:1024B000911182609091E800977F9093E80080935B +:1024C000F1001092F100C8C0282F2D7F09F0EAC05A +:1024D000882319F0823061F0E5C08091F6018130E7 +:1024E00009F0E0C0933009F080E08093F1012BC047 +:1024F0008091F601811127C08091F8018F7009F455 +:10250000D1C08093E9002091EB0020FF1CC09330E4 +:1025100021F48091EB00806214C09091EB009061F7 +:102520009093EB0021E030E0A90102C0440F551F59 +:102530008A95E2F74093EA001092EA008091EB005E +:1025400088608093EB001092E9008091E800877F1B +:1025500086C08111A7C01091F6011F778091E3001A +:102560008078812B8093E3008091E800877F8093BF +:10257000E8000E9437108091E80080FFFCCF809136 +:10258000E30080688093E300111102C082E001C083 +:1025900083E08093F30186C08058823008F082C0C7 +:1025A0008091F6019091F7018C3D53E0950779F504 +:1025B00083E08A838AE289834FB7F894DE01139619 +:1025C00020E03EE051E2E32FF0E050935700E49129 +:1025D00020FF03C0E295EF703F5FEF708E2F90E019 +:1025E000EA3010F0C79601C0C0968D939D932F5F7F +:1025F000243149F74FBF8091E800877F8093E8003E +:102600006AE270E0CE0101960E943E0F14C0AE0156 +:102610004F5F5F4F6091F8010E94850EBC010097EB +:1026200009F440C09091E800977F9093E800898179 +:102630009A810E94A10F8091E8008B778093E80037 +:1026400031C0803879F58091E800877F8093E80079 +:102650008091EF018093F1008091E8008E77809364 +:10266000E8000E9437101EC081111CC09091F60135 +:102670009230C0F48091E800877F8093E8009093C7 +:10268000EF010E9437108091EF01811106C0809107 +:10269000E30087FD02C081E001C084E08093F30184 +:1026A0000E94810D8091E80083FF0AC08091E800BC +:1026B000877F8093E8008091EB0080628093EB003D +:1026C000AA960FB6F894DEBF0FBECDBFDF91CF91B3 +:1026D0001F9108950895CF938091F3018823A1F06D +:1026E000C091E900CF709091EC00892F817090FD2E +:1026F00080E8C82B1092E9008091E80083FD0E94D9 +:102700001912CF70C093E900CF910895909377018B +:10271000809376010895E0917601F09177013097EA +:1027200021F00190F081E02D099480E00895E0917E +:102730007601F0917701309721F00280F381E02D4E +:1027400009940895E0917601F0917701309721F096 +:102750000480F581E02D0994089520917401309151 +:1027600075018217930771F090937501809374013E +:10277000E0917601F0917701309721F00680F781A2 +:10278000E02D099408952091720130917301821710 +:10279000930771F09093730180937201E091760139 +:1027A000F0917701309721F00084F185E02D0994B4 +:1027B000089508950C94D9130E94331F0E94E004D9 +:1027C0000C94F51F9F92AF92BF92CF92DF92EF923F +:1027D000FF920F931F93CF93DF9300D000D000D0D0 +:1027E000CDB7DEB70E94F8040DE010E0AA24A39450 +:1027F000B12C902E802F0E94E605980127583E4F5D +:102800006901F901F080F826A1F40150110988F757 +:102810008FEF89838A831B820E943C1F8160782FFF +:102820009D838C8349815A816B818D810E947914AB +:102830002FC09091DC0191FF04C08E830E94EC05B3 +:102840008E8125E030E0A501022E01C0440F0A94DC +:10285000EAF7E42E4F21C1F029839A828E2191E07C +:1028600009F490E09B830E943C1F8160782F9D8338 +:102870008C8349815A816B818D810E947914F60184 +:102880008081E826E08204C021503109E0F6BDCF06 +:102890000E94DC22109178010E948B131817B9F066 +:1028A0000E948B138093780126960FB6F894DEBFB2 +:1028B0000FBECDBFDF91CF911F910F91FF90EF9091 +:1028C000DF90CF90BF90AF909F900C94840C269691 +:1028D0000FB6F894DEBF0FBECDBFDF91CF911F9131 +:1028E0000F91FF90EF90DF90CF90BF90AF909F90AF +:1028F0000895CF93DF93CDB7DEB72B970FB6F8943B +:10290000DEBF0FBECDBF4F83588769877A878B871D +:10291000DE01119686E0FD0111928A95E9F785E0C6 +:10292000FE01379601900D928A95E1F749815A810F +:102930006B817C818D819E810E94C21A2B960FB67D +:10294000F894DEBF0FBECDBFDF91CF910895CF9336 +:10295000882309F4C2C0C82F823859F40E948B130F +:1029600081FDBBC089E30E949C1D0E94691E89E312 +:102970000CC0833879F40E948B1380FDAEC083E5D0 +:102980000E949C1D0E94691E83E50E94DE1DCF915E +:102990000C94691E843859F40E948B1382FD9DC0EB +:1029A00087E40E949C1D0E94691E87E4EECF8CEF95 +:1029B0008C0F813A48F48C2F0E941F2581118DC005 +:1029C0008C2F0E949C1DE3CF80E28C0F883048F44E +:1029D000C77081E001C0880FCA95EAF70E94221EE5 +:1029E000D6CF8BE58C0F833078F4C53A29F0C63A00 +:1029F00031F083E890E005C081E890E002C082E811 +:102A000090E0CF910C94AD1388E58C0F833108F0E2 +:102A100064C0C83A39F1C93A41F1CA3A49F1CB3AEE +:102A200051F1CC3A59F1CD3A61F1C03B69F1CE3A5E +:102A300071F1CF3A79F1C13B81F1C23B89F1C33BDE +:102A400091F1C43B99F1C53BA1F1C63BA9F1C73B4C +:102A5000B1F1C83BB9F1C93BC1F1CA3BC9F180E052 +:102A600090E038C082EE90E035C089EE90E032C050 +:102A70008AEE90E02FC085EB90E02CC086EB90E0D2 +:102A800029C087EB90E026C08CEC90E023C08DEC51 +:102A900090E020C083E891E01DC08AE891E01AC070 +:102AA00082E991E017C084E991E014C081E292E0EC +:102AB00011C083E292E00EC084E292E00BC085E296 +:102AC00092E008C086E292E005C087E292E002C090 +:102AD0008AE292E0CF910C94C313CF91089588239A +:102AE00009F44BC0823859F40E948B1381FF45C012 +:102AF00089E30E949C1D0E94691E89E30CC08338F3 +:102B000071F40E948B1380FF38C083E50E949C1DE6 +:102B10000E94691E83E50E94DE1D0C94691E8438A4 +:102B200059F40E948B1382FF28C087E40E949C1DE9 +:102B30000E94691E87E4EFCF9CEF980F913A58F3FB +:102B400090E2980F983050F4877091E001C0990F8F +:102B50008A95EAF7892F0E94281EDFCF9BE5980F00 +:102B6000933020F480E090E00C94AD13885A8331C8 +:102B700020F480E090E00C94C3130895882321F0A2 +:102B80000E94221E0C94691E0895882321F00E9441 +:102B9000281E0C94691E08957F928F929F92AF9287 +:102BA000BF92CF92DF92EF92FF920F931F93CF933A +:102BB000DF931F92CDB7DEB77C01C62E772EFC01C6 +:102BC000058102950F70128111110E943F1E0E9413 +:102BD000951D882379F0112369F080E28C0D8830EF +:102BE00048F082E00E947E1D0E94951D91E0D82E43 +:102BF000D92601C0D12CE72DE295EF70F0E0E15429 +:102C0000FF4F0C945427872D807F072D0F7088234A +:102C100011F00295007F112389F0002309F490C17F +:102C200080E28C0D883020F4802F0E94221E03C089 +:102C3000802F0E94321E0E94691E82C18C2D0E942C +:102C40006F15002309F495C180E28C0D883020F4C3 +:102C5000802F0E94281E03C0802F0E94381E0E94D1 +:102C6000691E87C1972D907F872D8F70903211F04C +:102C70008295807FCC2021F0F1E0CF16B1F01EC00C +:102C8000112349F0002309F414C1013009F011C1E6 +:102C90000E94521E6EC1002319F0013009F469C16F +:102CA00089830E94551E89810AC1112321F00230B7 +:102CB00008F05FC1FEC001115CC101C1112321F008 +:102CC000002309F4F6C03CC1002309F4F8C03EC15A +:102CD000872D86958695837090E0009719F001976F +:102CE00061F047C1112321F08C2D972D937002C004 +:102CF00080E090E00E94AD133CC1112321F08C2DA7 +:102D0000972D937002C080E090E00E94C31331C100 +:102D10008C2D112319F00E94E42102C00E944C2244 +:102D20000E94D12226C1872D837009F052C0111153 +:102D300020C18C2D829586958770880F880F9C2DD9 +:102D40009F70892E912CA12CB12C082E04C0880CC8 +:102D5000991CAA1CBB1C0A94D2F7C4FE14C00FE035 +:102D600010E020E030E0B901A80104C0440F551F75 +:102D7000661F771F8A95D2F7CB01BA0160957095CF +:102D80008095909503C060E070E0CB01272D2695DB +:102D90002695237030E02230310569F0233031056B +:102DA00089F0682979298A299B292130310571F018 +:102DB0000E940A1CDEC0682979298A299B290E9461 +:102DC000261CD7C00E940A1CC501B4010E94EE1B3C +:102DD000D0C0112319F0872D817001C086958823FA +:102DE00009F4C7C08C2D829586958770880F880F4F +:102DF0009C2D9F70892E912CA12CB12C082E04C0E3 +:102E0000880C991CAA1CBB1C0A94D2F7C4FE14C0DF +:102E10000FE010E020E030E0B901A80104C0440F49 +:102E2000551F661F771F8A95D2F7CB01BA016095AF +:102E300070958095909503C060E070E0CB01272DE0 +:102E4000269526952370422F50E04230510569F0B7 +:102E50004330510589F0682979298A299B29413015 +:102E6000510571F00E94E41C84C0682979298A29DF +:102E70009B290E94001D7DC00E94E41CC501B40175 +:102E80000E94C81C76C08C2D90E0FC01E05EF10928 +:102E9000E531F10508F050C0E153FF4F0C94542781 +:102EA0000C2D0F70872D8F71112331F00E94611C42 +:102EB000802F0E94BE155DC00E94821C802F0E9440 +:102EC000C51557C0112339F0011153C0872D8F71DB +:102ED0000E94A71C4EC0023008F04BC0F7CF112350 +:102EE00039F0872D8F710E94611C43C01123C9F3F3 +:102EF000872D8F710E94821C3CC0112329F0872DE1 +:102F00008F710E944C1C35C00E94421C32C011239C +:102F100051F0172D1F71812F0E94611C63E0812FDA +:102F20000E94751D26C081E00E947E1D023008F1BE +:102F300082E00E947E1D1DC0112331F0002389F222 +:102F40008C2D0E94A71415C0002391F28C2D0E9495 +:102F50006F150FC0472D4F706C2DC7010E94700771 +:102F60000E94661B06C0472D4F706C2DC7010E9442 +:102F70009309DD20F9F00E94711D80FD1BC0F7014F +:102F800012820E946B1D0E94611CC7010E94E917FA +:102F90000E946B1D0F90DF91CF911F910F91FF90B9 +:102FA000EF90DF90CF90BF90AF909F908F907F90E9 +:102FB0000C94821C0F90DF91CF911F910F91FF9085 +:102FC000EF90DF90CF90BF90AF909F908F907F90C9 +:102FD00008950F931F93CF93DF93EC01888199811C +:102FE0002B813C81232BB9F09F3F11F48F3F99F047 +:102FF000CE010E94EB08882371F0688179818A8173 +:103000000E94671D8C010E941C1D0E94E31BB801D9 +:10301000CE010E94CC15DF91CF911F910F910895A1 +:103020000E943F1E0E944F1E0E94141E0E94691E95 +:103030000E9482230E94D12280E090E00E94AD1382 +:1030400080E090E00C94C3130E942F1E0C94101883 +:103050000E945C1D292F22952F7030E02C30310505 +:103060004CF42A3031056CF42250310922303105FC +:10307000A8F407C02C30310569F02F30310551F02C +:103080000DC0803F69F018F4803E40F409C0843FD1 +:1030900029F406C093FB882780F9089580E00895FD +:1030A00081E00895CF93DF9300D000D01F92CDB779 +:1030B000DEB70F900F900F900F900F90DF91CF9190 +:1030C0000895CF93DF9300D000D000D0CDB7DEB706 +:1030D00026960FB6F894DEBF0FBECDBFDF91CF911D +:1030E00008951F93CF93DF93C091870116E08091DD +:1030F0008801C81799F0D0E01C9FF0011D9FF00DCA +:103100001124E757FE4F4081518162817381848190 +:1031100095810E9461182196C770E9CFDF91CF9108 +:103120001F9108954091B9015091BA016091BB017E +:103130007091BC018091BD019091BE010C94611809 +:103140008091BE0182958F7009F054C08091BB01BF +:10315000882309F44FC080918701A0918801609174 +:10316000B9017091BA014091BC015091BD01B6E026 +:103170008A1709F43FC090E041155105C1F17F3F26 +:1031800011F46F3FA1F1B89FF001B99FF00D112428 +:10319000E757FE4F218172132AC02081621327C096 +:1031A0002281211124C0238134812417350710F492 +:1031B00021503109241B350B283C3105C0F42091E6 +:1031C000BE012F7020612093BE0126E0289FF001F0 +:1031D000299FF00D1124E257FE4F80818F7080618E +:1031E000808389EB91E00E94E9170C947118019695 +:1031F0008770BECF0895CF92DF92EF92FF920F9328 +:103200001F93CF93DF93CDB7DEB762970FB6F894D5 +:10321000DEBF0FBECDBF8C0185E0F801DE011D963B +:1032200001900D928A95E1F7D8014C9111965C912D +:10323000119712966C9112971396CD90DC9014977B +:103240003091B9017091BA018091BC019091BD019A +:10325000009709F46BC17F3F19F43F3F09F466C141 +:10326000E090BB01EE2009F4C0C02091BE01C81659 +:10327000D90628F0F601E81BF90BCF0104C08095B0 +:1032800090958C0D9D1DFF24F394883C910578F05A +:10329000F12C207F09F0C6C07C2DD98AC88A898983 +:1032A0000E94521889EB91E00E94E917B1C0822F69 +:1032B000807F09F046C0751314C0341312C0611129 +:1032C00010C02F7020612093BE010E94921889EBDC +:1032D00091E00E94E9178091BE01D80115968C9368 +:1032E0002EC0CD2819F15F3F11F44F3FF9F0F62EB3 +:1032F00061111CC0809187012091880136E08217FE +:1033000009F45AC090E0389FF001399FF00D112464 +:10331000E757FE4F7181571306C07081471303C0F2 +:103320007281711103C001968770E9CFF62E662372 +:1033300009F418C18091BE0181608093BE01F12C17 +:1033400011C1751308C0341306C0611104C0809107 +:10335000BE01D801C3C04D875E878D859E856A8B6F +:103360000E9428186A898823E1F16623D1F120910F +:10337000BE01822F82958F7090E0029774F0809149 +:10338000B9019091BA0198878F831986DB86CA8626 +:103390002C87CE0107960E94E91786E0F801A9EB79 +:1033A000B1E001900D928A95E1F70E94A0180E9469 +:1033B0009218FF24F394D6C04D875E878D859E8535 +:1033C0000E945C1D292F22952F7030E0223031059C +:1033D0000CF0BCC09F7009F0B6C0805E883008F465 +:1033E000C1C0C8010E94E917E4CFC816D90608F485 +:1033F00053C0F601E81BF90BCF01883C910508F496 +:1034000050C0F12C7C2DD98AC88A89890E94521813 +:10341000E9EBF1E086E0DF011D928A95E9F70E9471 +:103420009218A0C0751314C0341312C0611110C0DB +:103430008091BE01F8018583C8010E94E91786E0EA +:10344000E9EBF1E0DF011D928A95E9F7FE2C8AC0D5 +:103450004D875E878D859E856A8B0E9428186A89B4 +:10346000882309F4BECF662309F4BBCF2091BE01A7 +:10347000822F82958F7090E002970CF48ECF80910E +:10348000B9019091BA019A8389831B82DD82CC8233 +:103490002E83CE0101967FCF809590958C0D9D1D3A +:1034A000ACCFF62E662309F49CCF75132EC03413CF +:1034B0002CC02091BE0120FD1FC0822F82958F70ED +:1034C000D9F0D80115962C9315978F3049F08F5F5E +:1034D000982F9295907F822F8F70892B15968C93C1 +:1034E000C8010E94E91786E0F801A9EBB1E001905C +:1034F0000D928A95E1F793CF86E0F801A9EBB1E050 +:1035000001900D928A95E1F72DC04D875E878D85DC +:103510009E850E942818811140CF8091BE01816054 +:103520008093BE01C8010E94E9171CC0662309F4FC +:1035300058CF4D875E878D859E850E9428188823E9 +:1035400009F44FCF2ACF811148CF0CC02430310568 +:103550000CF047CF9F7009F440CFF8019581907F20 +:1035600009F03BCF8F2D62960FB6F894DEBF0FBEE9 +:10357000CDBFDF91CF911F910F91FF90EF90DF9022 +:10358000CF9008951F93CF93DF93CDB7DEB72C97DD +:103590000FB6F894DEBF0FBECDBF4F835887698743 +:1035A0007A878B879C87CE0107960E94FB18882319 +:1035B00069F08F8198852A853B85232BF1F19F3F08 +:1035C00009F063C08F3F09F060C037C086E0FE019C +:1035D0003796DE01119601900D928A95E1F76F8181 +:1035E0007885EA85FB85309741F17F3F11F46F3F85 +:1035F00021F12091880130E0C90101968770992757 +:103600004091870150E08417950709F447C069830A +:103610007A83FD83EC8396E0929FD001939FB00D57 +:103620001124A757BE4FFE01319601900D929A9535 +:10363000E1F7809388010E94711816E0809187015C +:10364000909188018917C1F1189FC00111248757F3 +:103650009E4F0E94FB18882379F1E09187011E9FFD +:10366000F0011124E757FE4F40815181628173813F +:10367000848195810E9461188091870190E0019674 +:103680008770992780938701D9CF4F8158856985A5 +:103690007A858B859C850E946118CFCF0E94241863 +:1036A0001092880110928701E9EBF1E086E0DF01DA +:1036B0001D928A95E9F7C1CF2C960FB6F894DEBF1C +:1036C0000FBECDBFDF91CF911F910895EF92FF9272 +:1036D0000F931F93CF93DF938C01009709F46CC075 +:1036E000F12CEE24E394E8012196F80184918437CB +:1036F00040F4843008F051C0813081F0823019F1FB +:103700005BC0853709F444C0A8F19CE7980F903757 +:1037100008F052C08F770E946F1541C00E5F1F4F97 +:10372000FE01C49180E28C0F883048F4C7708E2D62 +:1037300001C0880FCA95EAF70E94421E14C08C2F60 +:103740000E94A7142DC00E5F1F4FFE01C49180E29E +:103750008C0F883058F4C7708E2D01C0880FCA9521 +:10376000EAF70E94481E0E94691E1AC08C2F0E9410 +:103770006F1516C00E5F1F4FFE01C491CC2381F060 +:103780008FE99FE00197F1F700C00000C150F6CF2C +:103790000E5F1F4FFE01F49003C00E94A7148E011C +:1037A0008F2D882309F49FCFEFE9FFE03197F1F7E0 +:1037B00000C000008150F5CFDF91CF911F910F9194 +:1037C000FF90EF90089508956093C3017093C40132 +:1037D0008093C5019093C6010C9410180F931F930A +:1037E0000091C3011091C4012091C5013091C6011F +:1037F000DC01CB01802B912BA22BB32B8093C30137 +:103800009093C401A093C501B093C6011F910F917D +:103810000C9410180F931F930091C3011091C401D1 +:103820002091C5013091C601DC01CB018023912399 +:10383000A223B3238093C3019093C401A093C50135 +:10384000B093C6011F910F910C9410180F931F9302 +:103850000091C3011091C4012091C5013091C601AE +:10386000DC01CB0180279127A227B3278093C301D6 +:103870009093C401A093C501B093C6011F910F910D +:103880000C9410181092BF011092C0011092C10147 +:103890001092C2010C94101841E050E060E070E01A +:1038A