From: Sascha Wildner Date: Tue, 3 Aug 2010 12:20:56 +0000 (+0200) Subject: twa(4): Sync with FreeBSD's current code. X-Git-Tag: v2.9.0~618 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/df54c2f9f57a79043fbeded2137ab6ad1189ad47 twa(4): Sync with FreeBSD's current code. This adds support for more and newer cards (see the hardware list in the manual page). Big thanks to Damian Lubosch for testing it on a 9650SE. --- diff --git a/share/man/man4/twa.4 b/share/man/man4/twa.4 index af0f39e357..a8a529061b 100644 --- a/share/man/man4/twa.4 +++ b/share/man/man4/twa.4 @@ -23,23 +23,36 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/twa.4,v 1.4 2005/02/27 13:14:28 brueffer Exp $ -.\" $DragonFly: src/share/man/man4/twa.4,v 1.1 2006/04/30 18:46:39 swildner Exp $ +.\" $FreeBSD: src/share/man/man4/twa.4,v 1.9 2010/05/13 12:07:55 uqs Exp $ .\" -.Dd August 15, 2004 +.Dd August 1, 2010 .Dt TWA 4 .Os .Sh NAME .Nm twa -.Nd 3ware 9000 series SATA RAID controllers driver +.Nd 3ware 9000/9500/9550/9650 series SATA RAID controllers driver .Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device scbus" .Cd "device twa" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +twa_load="YES" +.Ed .Sh DESCRIPTION The .Nm -driver provides support for the AMCC's 3ware 9000 series SATA controllers. +driver provides support for AMCC's 3ware 9000/9500/9550/9650 series +SATA controllers. .Pp -These controllers are available in 4, 8 or 12-port configurations, +These controllers are available in 4, 8, 12 or 16-port configurations, and support the following RAID levels: 0, 1, 10, 5, 50. The device nodes for the controllers are of the form .Pa /dev/twa Ns Ar X , @@ -69,6 +82,38 @@ AMCC's 3ware 9500S-8MI AMCC's 3ware 9500S-12 .It AMCC's 3ware 9500S-12MI +.It +AMCC's 3ware 9500SX-4LP +.It +AMCC's 3ware 9500SX-8LP +.It +AMCC's 3ware 9500SX-12 +.It +AMCC's 3ware 9500SX-12MI +.It +AMCC's 3ware 9500SX-16ML +.It +AMCC's 3ware 9550SX-4LP +.It +AMCC's 3ware 9550SX-8LP +.It +AMCC's 3ware 9550SX-12 +.It +AMCC's 3ware 9550SX-12MI +.It +AMCC's 3ware 9550SX-16ML +.It +AMCC's 3ware 9650SE-2LP +.It +AMCC's 3ware 9650SE-4LPML +.It +AMCC's 3ware 9650SE-8LPML +.It +AMCC's 3ware 9650SE-12ML +.It +AMCC's 3ware 9650SE-16ML +.It +AMCC's 3ware 9650SE-24M8 .El .Sh DIAGNOSTICS Whenever the driver encounters a command failure, it prints out an error code in diff --git a/sys/conf/files b/sys/conf/files index c2b03b8344..56b3960753 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -716,13 +716,14 @@ bus/iicbus/iicbus.c optional iicbus bus/iicbus/iic.c optional iic dev/netif/ic/if_ic.c optional ic dev/disk/trm/trm.c optional trm +dev/raid/twa/tw_cl_init.c optional twa +dev/raid/twa/tw_cl_intr.c optional twa +dev/raid/twa/tw_cl_io.c optional twa +dev/raid/twa/tw_cl_misc.c optional twa +dev/raid/twa/tw_osl_cam.c optional twa +dev/raid/twa/tw_osl_freebsd.c optional twa dev/raid/twe/twe.c optional twe dev/raid/twe/twe_freebsd.c optional twe -dev/raid/twa/twa.c optional twa -dev/raid/twa/twa_cam.c optional twa -dev/raid/twa/twa_freebsd.c optional twa -dev/raid/twa/twa_fwimg.c optional twa -dev/raid/twa/twa_globals.c optional twa dev/netif/tx/if_tx.c optional tx dev/netif/txp/if_txp.c optional txp dev/raid/vinum/vinum.c optional vinum diff --git a/sys/conf/options b/sys/conf/options index e9f1f32f2d..46644b6ef4 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -74,7 +74,6 @@ AHD_REG_PRETTY_PRINT opt_aic79xx.h # Print register bitfields in debug ADW_ALLOW_MEMIO opt_adw.h # Allow PCI devices to use memory # mapped I/O TWA_DEBUG opt_twa.h -TWA_FLASH_FIRMWARE opt_twa.h #options for ACPI support ACPI_DEBUG opt_acpi.h diff --git a/sys/config/GENERIC b/sys/config/GENERIC index 0a13082372..096c175e44 100644 --- a/sys/config/GENERIC +++ b/sys/config/GENERIC @@ -160,7 +160,7 @@ device ips # IBM ServeRAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family device twe # 3ware Escalade 7000/8000's -device twa # 3ware Escalade 9000's +device twa # 3ware 9000 series PATA/SATA RAID device pst # Promise Supertrack # atkbdc0 controls both the keyboard and the PS/2 mouse diff --git a/sys/config/LINT b/sys/config/LINT index 8bb7ef456c..4f300d6b74 100644 --- a/sys/config/LINT +++ b/sys/config/LINT @@ -1255,9 +1255,8 @@ device amr # AMI MegaRAID # 3ware ATA RAID # device twe # 3ware ATA RAID -device twa # 3ware SATA RAID +device twa # 3ware 9000 series PATA/SATA RAID options TWA_DEBUG=10 # enable debug messages -options TWA_FLASH_FIRMWARE # # Promise Supertrack SX6000 diff --git a/sys/config/X86_64_GENERIC b/sys/config/X86_64_GENERIC index 5f4435dfd3..5a516f58b8 100644 --- a/sys/config/X86_64_GENERIC +++ b/sys/config/X86_64_GENERIC @@ -142,7 +142,7 @@ device ips # IBM ServeRAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family device twe # 3ware Escalade 7000/8000's -device twa # 3ware Escalade 9000's +device twa # 3ware 9000 series PATA/SATA RAID # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD diff --git a/sys/dev/raid/twa/Makefile b/sys/dev/raid/twa/Makefile index 9e89c9c139..e6cf930a15 100644 --- a/sys/dev/raid/twa/Makefile +++ b/sys/dev/raid/twa/Makefile @@ -1,25 +1,45 @@ -# $FreeBSD$ -# $DragonFly: src/sys/dev/raid/twa/Makefile,v 1.1 2004/04/16 20:13:16 drhodus Exp $ +# $FreeBSD: src/sys/modules/twa/Makefile,v 1.8 2007/05/09 04:16:31 scottl Exp $ +# +# Copyright (c) 2004-06 Applied Micro Circuits Corporation. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# # -# Uncomment the following line to bundle firmware with the driver, -# which may be flashed onto the controller, if the firmware on the -# controller is older than the one bundled, and needs to be upgraded. -# The size of the driver will increase significantly (to over 500KB) -# if this option is selected. +# 3ware driver for 9000 series storage controllers. +# +# Author: Vinod Kashyap +# Modifications by: Adam Radford # -FLASH_FIRMWARE=1 KMOD = twa -.PATH: ${.CURDIR} -SRCS = twa_freebsd.c twa_cam.c twa.c twa_globals.c \ +SRCS= tw_osl_freebsd.c tw_osl_cam.c \ + tw_cl_init.c tw_cl_io.c tw_cl_intr.c tw_cl_misc.c \ bus_if.h device_if.h pci_if.h opt_scsi.h opt_cam.h opt_twa.h -.if defined(FLASH_FIRMWARE) -CFLAGS+=-DTWA_FLASH_FIRMWARE -SRCS += twa_fwimg.c -.endif +# Uncomment the following line to turn on Enclosure Services support. +#CFLAGS+= -DTWA_ENCLOSURE_SUPPORT -#CFLAGS+=-DTWA_DEBUG=0 +#CFLAGS+= -DTWA_DEBUG=0 .include diff --git a/sys/dev/raid/twa/tw_cl.h b/sys/dev/raid/twa/tw_cl.h new file mode 100644 index 0000000000..8963c9efc5 --- /dev/null +++ b/sys/dev/raid/twa/tw_cl.h @@ -0,0 +1,345 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl.h,v 1.5 2010/07/09 17:38:15 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_CL_H + +#define TW_CL_H + + +/* + * Common Layer internal macros, structures and functions. + */ + + +#define TW_CLI_SECTOR_SIZE 0x200 +#define TW_CLI_REQUEST_TIMEOUT_PERIOD 60 /* seconds */ +#define TW_CLI_RESET_TIMEOUT_PERIOD 60 /* seconds */ +#define TW_CLI_MAX_RESET_ATTEMPTS 2 + +/* Possible values of ctlr->ioctl_lock.lock. */ +#define TW_CLI_LOCK_FREE 0x0 /* lock is free */ +#define TW_CLI_LOCK_HELD 0x1 /* lock is held */ + +/* Possible values of req->state. */ +#define TW_CLI_REQ_STATE_INIT 0x0 /* being initialized */ +#define TW_CLI_REQ_STATE_BUSY 0x1 /* submitted to controller */ +#define TW_CLI_REQ_STATE_PENDING 0x2 /* in pending queue */ +#define TW_CLI_REQ_STATE_COMPLETE 0x3 /* completed by controller */ + +/* Possible values of req->flags. */ +#define TW_CLI_REQ_FLAGS_7K (1<<0) /* 7000 cmd pkt */ +#define TW_CLI_REQ_FLAGS_9K (1<<1) /* 9000 cmd pkt */ +#define TW_CLI_REQ_FLAGS_INTERNAL (1<<2) /* internal request */ +#define TW_CLI_REQ_FLAGS_PASSTHRU (1<<3) /* passthru request */ +#define TW_CLI_REQ_FLAGS_EXTERNAL (1<<4) /* external request */ + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE +/* Register offsets in PCI config space. */ +#define TW_CLI_PCI_CONFIG_COMMAND_OFFSET 0x4 /* cmd register offset */ +#define TW_CLI_PCI_CONFIG_STATUS_OFFSET 0x6 /* status register offset */ +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + +#ifdef TW_OSL_DEBUG +struct tw_cli_q_stats { + TW_UINT32 cur_len;/* current # of entries in q */ + TW_UINT32 max_len; /* max # of entries in q, ever reached */ +}; +#endif /* TW_OSL_DEBUG */ + + +/* Queues of CL internal request context packets. */ +#define TW_CLI_FREE_Q 0 /* free q */ +#define TW_CLI_BUSY_Q 1 /* q of reqs submitted to fw */ +#define TW_CLI_PENDING_Q 2 /* q of reqs deferred due to 'q full' */ +#define TW_CLI_COMPLETE_Q 3 /* q of reqs completed by fw */ +#define TW_CLI_Q_COUNT 4 /* total number of queues */ + + +/* CL's internal request context. */ +struct tw_cli_req_context { + struct tw_cl_req_handle *req_handle;/* handle to track requests between + OSL & CL */ + struct tw_cli_ctlr_context *ctlr; /* ptr to CL's controller context */ + struct tw_cl_command_packet *cmd_pkt;/* ptr to ctlr cmd pkt */ + TW_UINT64 cmd_pkt_phys; /* cmd pkt physical address */ + TW_VOID *data; /* ptr to data being passed to fw */ + TW_UINT32 length; /* length of data being passed to fw */ + TW_UINT64 data_phys; /* physical address of data */ + + TW_UINT32 state; /* request state */ + TW_UINT32 flags; /* request flags */ + + TW_UINT32 error_code; /* error encountered before submission + of request to fw, if any */ + + TW_VOID *orig_req; /* ptr to original request for use + during callback */ + TW_VOID (*tw_cli_callback)(struct tw_cli_req_context *req); + /* CL internal callback */ + TW_UINT32 request_id; /* request id for tracking with fw */ + struct tw_cl_link link; /* to link this request in a list */ +}; + + +/* CL's internal controller context. */ +struct tw_cli_ctlr_context { + struct tw_cl_ctlr_handle *ctlr_handle; /* handle to track ctlr between + OSL & CL. */ + struct tw_cli_req_context *req_ctxt_buf;/* pointer to the array of CL's + internal request context pkts */ + struct tw_cl_command_packet *cmd_pkt_buf;/* ptr to array of cmd pkts */ + + TW_UINT64 cmd_pkt_phys; /* phys addr of cmd_pkt_buf */ + + TW_UINT32 device_id; /* controller device id */ + TW_UINT32 arch_id; /* controller architecture id */ + TW_UINT8 active; /* Initialization done, and controller is active. */ + TW_UINT8 interrupts_enabled; /* Interrupts on controller enabled. */ + TW_UINT8 internal_req_busy; /* Data buffer for internal requests in use. */ + TW_UINT8 get_more_aens; /* More AEN's need to be retrieved. */ + TW_UINT8 reset_in_progress; /* Controller is being reset. */ + TW_UINT8 reset_phase1_in_progress; /* In 'phase 1' of reset. */ + TW_UINT32 flags; /* controller settings */ + TW_UINT32 sg_size_factor; /* SG element size should be a + multiple of this */ + + /* Request queues and arrays. */ + struct tw_cl_link req_q_head[TW_CLI_Q_COUNT]; + + TW_UINT8 *internal_req_data;/* internal req data buf */ + TW_UINT64 internal_req_data_phys;/* phys addr of internal + req data buf */ + TW_UINT32 max_simult_reqs; /* max simultaneous requests + supported */ + TW_UINT32 max_aens_supported;/* max AEN's supported */ + /* AEN handler fields. */ + struct tw_cl_event_packet *aen_queue; /* circular queue of AENs from + firmware/CL/OSL */ + TW_UINT32 aen_head; /* AEN queue head */ + TW_UINT32 aen_tail; /* AEN queue tail */ + TW_UINT32 aen_cur_seq_id; /* index of the last event+1 */ + TW_UINT32 aen_q_overflow; /* indicates if unretrieved + events were overwritten */ + TW_UINT32 aen_q_wrapped; /* indicates if AEN queue ever + wrapped */ + + TW_UINT16 working_srl; /* driver & firmware negotiated + srl */ + TW_UINT16 working_branch; /* branch # of the firmware + that the driver is compatible with */ + TW_UINT16 working_build; /* build # of the firmware + that the driver is compatible with */ + TW_UINT16 fw_on_ctlr_srl; /* srl of running firmware */ + TW_UINT16 fw_on_ctlr_branch;/* branch # of running + firmware */ + TW_UINT16 fw_on_ctlr_build;/* build # of running + firmware */ + TW_UINT32 operating_mode; /* base mode/current mode */ + + TW_INT32 host_intr_pending;/* host intr processing + needed */ + TW_INT32 attn_intr_pending;/* attn intr processing + needed */ + TW_INT32 cmd_intr_pending;/* cmd intr processing + needed */ + TW_INT32 resp_intr_pending;/* resp intr processing + needed */ + + TW_LOCK_HANDLE gen_lock_handle;/* general purpose lock */ + TW_LOCK_HANDLE *gen_lock;/* ptr to general purpose lock */ + TW_LOCK_HANDLE io_lock_handle; /* lock held during cmd + submission */ + TW_LOCK_HANDLE *io_lock;/* ptr to lock held during cmd + submission */ + +#ifdef TW_OSL_CAN_SLEEP + TW_SLEEP_HANDLE sleep_handle; /* handle to co-ordinate sleeps + & wakeups */ +#endif /* TW_OSL_CAN_SLEEP */ + + struct { + TW_UINT32 lock; /* lock state */ + TW_TIME timeout; /* time at which the lock will + become available, even if not + explicitly released */ + } ioctl_lock; /* lock for use by user applications, for + synchronization between ioctl calls */ +#ifdef TW_OSL_DEBUG + struct tw_cli_q_stats q_stats[TW_CLI_Q_COUNT];/* queue statistics */ +#endif /* TW_OSL_DEBUG */ +}; + + + +/* + * Queue primitives + */ + +#ifdef TW_OSL_DEBUG + +#define TW_CLI_Q_INIT(ctlr, q_type) do { \ + (ctlr)->q_stats[q_type].cur_len = 0; \ + (ctlr)->q_stats[q_type].max_len = 0; \ +} while (0) + + +#define TW_CLI_Q_INSERT(ctlr, q_type) do { \ + struct tw_cli_q_stats *q_stats = &((ctlr)->q_stats[q_type]); \ + \ + if (++(q_stats->cur_len) > q_stats->max_len) \ + q_stats->max_len = q_stats->cur_len; \ +} while (0) + + +#define TW_CLI_Q_REMOVE(ctlr, q_type) \ + (ctlr)->q_stats[q_type].cur_len-- + +#else /* TW_OSL_DEBUG */ + +#define TW_CLI_Q_INIT(ctlr, q_index) +#define TW_CLI_Q_INSERT(ctlr, q_index) +#define TW_CLI_Q_REMOVE(ctlr, q_index) + +#endif /* TW_OSL_DEBUG */ + + +/* Initialize a queue of requests. */ +static __inline TW_VOID +tw_cli_req_q_init(struct tw_cli_ctlr_context *ctlr, TW_UINT8 q_type) +{ + TW_CL_Q_INIT(&(ctlr->req_q_head[q_type])); + TW_CLI_Q_INIT(ctlr, q_type); +} + + + +/* Insert the given request at the head of the given queue (q_type). */ +static __inline TW_VOID +tw_cli_req_q_insert_head(struct tw_cli_req_context *req, TW_UINT8 q_type) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + + tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); + TW_CL_Q_INSERT_HEAD(&(ctlr->req_q_head[q_type]), &(req->link)); + TW_CLI_Q_INSERT(ctlr, q_type); + tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); +} + + + +/* Insert the given request at the tail of the given queue (q_type). */ +static __inline TW_VOID +tw_cli_req_q_insert_tail(struct tw_cli_req_context *req, TW_UINT8 q_type) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + + tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); + TW_CL_Q_INSERT_TAIL(&(ctlr->req_q_head[q_type]), &(req->link)); + TW_CLI_Q_INSERT(ctlr, q_type); + tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); +} + + + +/* Remove and return the request at the head of the given queue (q_type). */ +static __inline struct tw_cli_req_context * +tw_cli_req_q_remove_head(struct tw_cli_ctlr_context *ctlr, TW_UINT8 q_type) +{ + struct tw_cli_req_context *req = TW_CL_NULL; + struct tw_cl_link *link; + + tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); + if ((link = TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[q_type]))) != + TW_CL_NULL) { + req = TW_CL_STRUCT_HEAD(link, + struct tw_cli_req_context, link); + TW_CL_Q_REMOVE_ITEM(&(ctlr->req_q_head[q_type]), &(req->link)); + TW_CLI_Q_REMOVE(ctlr, q_type); + } + tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); + return(req); +} + + + +/* Remove the given request from the given queue (q_type). */ +static __inline TW_VOID +tw_cli_req_q_remove_item(struct tw_cli_req_context *req, TW_UINT8 q_type) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + + tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); + TW_CL_Q_REMOVE_ITEM(&(ctlr->req_q_head[q_type]), &(req->link)); + TW_CLI_Q_REMOVE(ctlr, q_type); + tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); +} + + + +/* Create an event packet for an event/error posted by the controller. */ +#define tw_cli_create_ctlr_event(ctlr, event_src, cmd_hdr) do { \ + TW_UINT8 severity = \ + GET_SEVERITY((cmd_hdr)->status_block.res__severity); \ + \ + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_TRUE, event_src, \ + (cmd_hdr)->status_block.error, \ + severity, \ + tw_cli_severity_string_table[severity], \ + (cmd_hdr)->err_specific_desc + \ + tw_osl_strlen((cmd_hdr)->err_specific_desc) + 1, \ + (cmd_hdr)->err_specific_desc); \ + /* Print 18 bytes of sense information. */ \ + tw_cli_dbg_printf(2, ctlr->ctlr_handle, \ + tw_osl_cur_func(), \ + "sense info: %x %x %x %x %x %x %x %x %x " \ + "%x %x %x %x %x %x %x %x %x", \ + (cmd_hdr)->sense_data[0], (cmd_hdr)->sense_data[1], \ + (cmd_hdr)->sense_data[2], (cmd_hdr)->sense_data[3], \ + (cmd_hdr)->sense_data[4], (cmd_hdr)->sense_data[5], \ + (cmd_hdr)->sense_data[6], (cmd_hdr)->sense_data[7], \ + (cmd_hdr)->sense_data[8], (cmd_hdr)->sense_data[9], \ + (cmd_hdr)->sense_data[10], (cmd_hdr)->sense_data[11], \ + (cmd_hdr)->sense_data[12], (cmd_hdr)->sense_data[13], \ + (cmd_hdr)->sense_data[14], (cmd_hdr)->sense_data[15], \ + (cmd_hdr)->sense_data[16], (cmd_hdr)->sense_data[17]); \ +} while (0) + + + +#endif /* TW_CL_H */ diff --git a/sys/dev/raid/twa/tw_cl_externs.h b/sys/dev/raid/twa/tw_cl_externs.h new file mode 100644 index 0000000000..441a841a86 --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_externs.h @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_externs.h,v 1.3 2007/05/09 04:16:32 scottl Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_CL_EXTERNS_H + +#define TW_CL_EXTERNS_H + + +/* + * Data structures and functions global to the Common Layer. + */ + + +extern TW_INT8 tw_cli_fw_img[]; +extern TW_INT32 tw_cli_fw_img_size; +extern TW_INT8 *tw_cli_severity_string_table[]; + + +/* Do controller initialization. */ +extern TW_INT32 tw_cli_start_ctlr(struct tw_cli_ctlr_context *ctlr); + +/* Establish a logical connection with the firmware on the controller. */ +extern TW_INT32 tw_cli_init_connection(struct tw_cli_ctlr_context *ctlr, + TW_UINT16 message_credits, TW_UINT32 set_features, + TW_UINT16 current_fw_srl, TW_UINT16 current_fw_arch_id, + TW_UINT16 current_fw_branch, TW_UINT16 current_fw_build, + TW_UINT16 *fw_on_ctlr_srl, TW_UINT16 *fw_on_ctlr_arch_id, + TW_UINT16 *fw_on_ctlr_branch, TW_UINT16 *fw_on_ctlr_build, + TW_UINT32 *init_connect_result); + + + +/* Functions in tw_cl_io.c */ + +/* Submit a command packet to the firmware on the controller. */ +extern TW_INT32 tw_cli_submit_cmd(struct tw_cli_req_context *req); + +/* Get a firmware parameter. */ +extern TW_INT32 tw_cli_get_param(struct tw_cli_ctlr_context *ctlr, + TW_INT32 table_id, TW_INT32 parameter_id, TW_VOID *param_data, + TW_INT32 size, TW_VOID (* callback)(struct tw_cli_req_context *req)); + +/* Set a firmware parameter. */ +extern TW_INT32 tw_cli_set_param(struct tw_cli_ctlr_context *ctlr, + TW_INT32 table_id, TW_INT32 param_id, TW_INT32 param_size, + TW_VOID *data, TW_VOID (* callback)(struct tw_cli_req_context *req)); + +/* Submit a command to the firmware and poll for completion. */ +extern TW_INT32 tw_cli_submit_and_poll_request(struct tw_cli_req_context *req, + TW_UINT32 timeout); + +/* Soft reset the controller. */ +extern TW_INT32 tw_cli_soft_reset(struct tw_cli_ctlr_context *ctlr); + +/* Send down a SCSI command to the firmware (usually, an internal Req Sense. */ +extern TW_INT32 tw_cli_send_scsi_cmd(struct tw_cli_req_context *req, + TW_INT32 cmd); + +/* Get an AEN from the firmware (by sending down a Req Sense). */ +extern TW_INT32 tw_cli_get_aen(struct tw_cli_ctlr_context *ctlr); + +/* Fill in the scatter/gather list. */ +extern TW_VOID tw_cli_fill_sg_list(struct tw_cli_ctlr_context *ctlr, + TW_VOID *sgl_src, TW_VOID *sgl_dest, TW_INT32 num_sgl_entries); + + + +/* Functions in tw_cl_intr.c */ + +/* Process a host interrupt. */ +extern TW_VOID tw_cli_process_host_intr(struct tw_cli_ctlr_context *ctlr); + +/* Process an attention interrupt. */ +extern TW_VOID tw_cli_process_attn_intr(struct tw_cli_ctlr_context *ctlr); + +/* Process a command interrupt. */ +extern TW_VOID tw_cli_process_cmd_intr(struct tw_cli_ctlr_context *ctlr); + +/* Process a response interrupt from the controller. */ +extern TW_INT32 tw_cli_process_resp_intr(struct tw_cli_ctlr_context *ctlr); + +/* Submit any requests in the pending queue to the firmware. */ +extern TW_INT32 tw_cli_submit_pending_queue(struct tw_cli_ctlr_context *ctlr); + +/* Process all requests in the complete queue. */ +extern TW_VOID tw_cli_process_complete_queue(struct tw_cli_ctlr_context *ctlr); + +/* CL internal callback for SCSI/fw passthru requests. */ +extern TW_VOID tw_cli_complete_io(struct tw_cli_req_context *req); + +/* Completion routine for SCSI requests. */ +extern TW_VOID tw_cli_scsi_complete(struct tw_cli_req_context *req); + +/* Callback for get/set param requests. */ +extern TW_VOID tw_cli_param_callback(struct tw_cli_req_context *req); + +/* Callback for Req Sense commands to get AEN's. */ +extern TW_VOID tw_cli_aen_callback(struct tw_cli_req_context *req); + +/* Decide what to do with a retrieved AEN. */ +extern TW_UINT16 tw_cli_manage_aen(struct tw_cli_ctlr_context *ctlr, + struct tw_cli_req_context *req); + +/* Enable controller interrupts. */ +extern TW_VOID + tw_cli_enable_interrupts(struct tw_cli_ctlr_context *ctlr_handle); + +/* Disable controller interrupts. */ +extern TW_VOID + tw_cli_disable_interrupts(struct tw_cli_ctlr_context *ctlr_handle); + + + +/* Functions in tw_cl_misc.c */ + +/* Print if dbg_level is appropriate (by calling OS Layer). */ +extern TW_VOID tw_cli_dbg_printf(TW_UINT8 dbg_level, + struct tw_cl_ctlr_handle *ctlr_handle, const TW_INT8 *cur_func, + TW_INT8 *fmt, ...); + +/* Describe meaning of each set bit in the given register. */ +extern TW_INT8 *tw_cli_describe_bits(TW_UINT32 reg, TW_INT8 *str); + +/* Complete all requests in the complete queue with a RESET status. */ +extern TW_VOID tw_cli_drain_complete_queue(struct tw_cli_ctlr_context *ctlr); + +/* Complete all requests in the busy queue with a RESET status. */ +extern TW_VOID tw_cli_drain_busy_queue(struct tw_cli_ctlr_context *ctlr); + +/* Complete all requests in the pending queue with a RESET status. */ +extern TW_VOID tw_cli_drain_pending_queue(struct tw_cli_ctlr_context *ctlr); + +/* Drain the controller response queue. */ +extern TW_INT32 tw_cli_drain_response_queue(struct tw_cli_ctlr_context *ctlr); + +/* Find a particular response in the controller response queue. */ +extern TW_INT32 tw_cli_find_response(struct tw_cli_ctlr_context *ctlr, + TW_INT32 req_id); + +/* Drain the controller AEN queue. */ +extern TW_INT32 tw_cli_drain_aen_queue(struct tw_cli_ctlr_context *ctlr); + +/* Determine if a given AEN has been posted by the firmware. */ +extern TW_INT32 tw_cli_find_aen(struct tw_cli_ctlr_context *ctlr, + TW_UINT16 aen_code); + +/* Poll for a given status to show up in the firmware status register. */ +extern TW_INT32 tw_cli_poll_status(struct tw_cli_ctlr_context *ctlr, + TW_UINT32 status, TW_UINT32 timeout); + +/* Get a free CL internal request context packet. */ +extern struct tw_cli_req_context * + tw_cli_get_request(struct tw_cli_ctlr_context *ctlr + ); + +/* Notify OSL of controller info (fw/BIOS versions, etc.). */ +extern TW_VOID tw_cli_notify_ctlr_info(struct tw_cli_ctlr_context *ctlr); + +/* Make sure that the firmware status register reports a proper status. */ +extern TW_INT32 tw_cli_check_ctlr_state(struct tw_cli_ctlr_context *ctlr, + TW_UINT32 status_reg); + + + +#endif /* TW_CL_EXTERNS_H */ diff --git a/sys/dev/raid/twa/tw_cl_fwif.h b/sys/dev/raid/twa/tw_cl_fwif.h new file mode 100644 index 0000000000..3c8e8a42e0 --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_fwif.h @@ -0,0 +1,449 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_fwif.h,v 1.4 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_CL_FWIF_H + +#define TW_CL_FWIF_H + + +/* + * Macros and data structures for interfacing with the firmware. + */ + + +/* Register offsets from base address. */ +#define TWA_CONTROL_REGISTER_OFFSET 0x0 +#define TWA_STATUS_REGISTER_OFFSET 0x4 +#define TWA_COMMAND_QUEUE_OFFSET 0x8 +#define TWA_RESPONSE_QUEUE_OFFSET 0xC +#define TWA_COMMAND_QUEUE_OFFSET_LOW 0x20 +#define TWA_COMMAND_QUEUE_OFFSET_HIGH 0x24 +#define TWA_LARGE_RESPONSE_QUEUE_OFFSET 0x30 + + +/* Control register bit definitions. */ +#define TWA_CONTROL_ISSUE_HOST_INTERRUPT 0x00000020 +#define TWA_CONTROL_DISABLE_INTERRUPTS 0x00000040 +#define TWA_CONTROL_ENABLE_INTERRUPTS 0x00000080 +#define TWA_CONTROL_ISSUE_SOFT_RESET 0x00000100 +#define TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT 0x00004000 +#define TWA_CONTROL_UNMASK_COMMAND_INTERRUPT 0x00008000 +#define TWA_CONTROL_MASK_RESPONSE_INTERRUPT 0x00010000 +#define TWA_CONTROL_MASK_COMMAND_INTERRUPT 0x00020000 +#define TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT 0x00040000 +#define TWA_CONTROL_CLEAR_HOST_INTERRUPT 0x00080000 +#define TWA_CONTROL_CLEAR_PCI_ABORT 0x00100000 +#define TWA_CONTROL_CLEAR_QUEUE_ERROR 0x00400000 +#define TWA_CONTROL_CLEAR_PARITY_ERROR 0x00800000 + + +/* Status register bit definitions. */ +#define TWA_STATUS_ROM_BIOS_IN_SBUF 0x00000002 +#define TWA_STATUS_COMMAND_QUEUE_EMPTY 0x00001000 +#define TWA_STATUS_MICROCONTROLLER_READY 0x00002000 +#define TWA_STATUS_RESPONSE_QUEUE_EMPTY 0x00004000 +#define TWA_STATUS_COMMAND_QUEUE_FULL 0x00008000 +#define TWA_STATUS_RESPONSE_INTERRUPT 0x00010000 +#define TWA_STATUS_COMMAND_INTERRUPT 0x00020000 +#define TWA_STATUS_ATTENTION_INTERRUPT 0x00040000 +#define TWA_STATUS_HOST_INTERRUPT 0x00080000 +#define TWA_STATUS_PCI_ABORT_INTERRUPT 0x00100000 +#define TWA_STATUS_MICROCONTROLLER_ERROR 0x00200000 +#define TWA_STATUS_QUEUE_ERROR_INTERRUPT 0x00400000 +#define TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT 0x00800000 +#define TWA_STATUS_MINOR_VERSION_MASK 0x0F000000 +#define TWA_STATUS_MAJOR_VERSION_MASK 0xF0000000 + +#define TWA_STATUS_UNEXPECTED_BITS 0x00F00000 + + +/* PCI related defines. */ +#define TWA_IO_CONFIG_REG 0x10 + +#define TWA_PCI_CONFIG_CLEAR_PARITY_ERROR 0xc100 +#define TWA_PCI_CONFIG_CLEAR_PCI_ABORT 0x2000 + +#define TWA_RESET_PHASE1_NOTIFICATION_RESPONSE 0xFFFF +#define TWA_RESET_PHASE1_WAIT_TIME_MS 500 + + +/* Command packet opcodes. */ +#define TWA_FW_CMD_NOP 0x00 +#define TWA_FW_CMD_INIT_CONNECTION 0x01 +#define TWA_FW_CMD_READ 0x02 +#define TWA_FW_CMD_WRITE 0x03 +#define TWA_FW_CMD_READVERIFY 0x04 +#define TWA_FW_CMD_VERIFY 0x05 +#define TWA_FW_CMD_ZEROUNIT 0x08 +#define TWA_FW_CMD_REPLACEUNIT 0x09 +#define TWA_FW_CMD_HOTSWAP 0x0A +#define TWA_FW_CMD_SELFTESTS 0x0B +#define TWA_FW_CMD_SYNC_PARAM 0x0C +#define TWA_FW_CMD_REORDER_UNITS 0x0D + +#define TWA_FW_CMD_EXECUTE_SCSI 0x10 +#define TWA_FW_CMD_ATA_PASSTHROUGH 0x11 +#define TWA_FW_CMD_GET_PARAM 0x12 +#define TWA_FW_CMD_SET_PARAM 0x13 +#define TWA_FW_CMD_CREATEUNIT 0x14 +#define TWA_FW_CMD_DELETEUNIT 0x15 +#define TWA_FW_CMD_DOWNLOAD_FIRMWARE 0x16 +#define TWA_FW_CMD_REBUILDUNIT 0x17 +#define TWA_FW_CMD_POWER_MANAGEMENT 0x18 + +#define TWA_FW_CMD_REMOTE_PRINT 0x1B +#define TWA_FW_CMD_HARD_RESET_FIRMWARE 0x1C +#define TWA_FW_CMD_DEBUG 0x1D + +#define TWA_FW_CMD_DIAGNOSTICS 0x1F + + +/* Misc defines. */ +#define TWA_SHUTDOWN_MESSAGE_CREDITS 0x001 +#define TWA_64BIT_SG_ADDRESSES 0x00000001 +#define TWA_EXTENDED_INIT_CONNECT 0x00000002 +#define TWA_BASE_MODE 1 +#define TWA_BASE_FW_SRL 24 +#define TWA_BASE_FW_BRANCH 0 +#define TWA_BASE_FW_BUILD 1 +#define TWA_CURRENT_FW_SRL 41 +#define TWA_CURRENT_FW_BRANCH_9K 4 +#define TWA_CURRENT_FW_BUILD_9K 8 +#define TWA_CURRENT_FW_BRANCH_9K_X 8 +#define TWA_CURRENT_FW_BUILD_9K_X 4 +#define TWA_MULTI_LUN_FW_SRL 28 +#define TWA_ARCH_ID_9K 0x5 /* 9000 PCI controllers */ +#define TWA_ARCH_ID_9K_X 0x6 /* 9000 PCI-X controllers */ +#define TWA_CTLR_FW_SAME_OR_NEWER 0x00000001 +#define TWA_CTLR_FW_COMPATIBLE 0x00000002 +#define TWA_SENSE_DATA_LENGTH 18 + + +#define TWA_ARCH_ID(device_id) \ + (((device_id) == TW_CL_DEVICE_ID_9K) ? TWA_ARCH_ID_9K : \ + TWA_ARCH_ID_9K_X) +#define TWA_CURRENT_FW_BRANCH(arch_id) \ + (((arch_id) == TWA_ARCH_ID_9K) ? TWA_CURRENT_FW_BRANCH_9K : \ + TWA_CURRENT_FW_BRANCH_9K_X) +#define TWA_CURRENT_FW_BUILD(arch_id) \ + (((arch_id) == TWA_ARCH_ID_9K) ? TWA_CURRENT_FW_BUILD_9K : \ + TWA_CURRENT_FW_BUILD_9K_X) + +/* + * All SG addresses and DMA'able memory allocated by the OSL should be + * TWA_ALIGNMENT bytes aligned, and have a size that is a multiple of + * TWA_SG_ELEMENT_SIZE_FACTOR. + */ +#define TWA_ALIGNMENT(device_id) 0x4 +#define TWA_SG_ELEMENT_SIZE_FACTOR(device_id) \ + (((device_id) == TW_CL_DEVICE_ID_9K) ? 512 : 4) + + +/* + * Some errors of interest (in cmd_hdr->status_block.error) when a command + * is completed by the firmware with a bad status. + */ +#define TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED 0x010a +#define TWA_ERROR_UNIT_OFFLINE 0x0128 +#define TWA_ERROR_MORE_DATA 0x0231 + + +/* AEN codes of interest. */ +#define TWA_AEN_QUEUE_EMPTY 0x00 +#define TWA_AEN_SOFT_RESET 0x01 +#define TWA_AEN_SYNC_TIME_WITH_HOST 0x31 + + +/* Table #'s and id's of parameters of interest in firmware's param table. */ +#define TWA_PARAM_VERSION_TABLE 0x0402 +#define TWA_PARAM_VERSION_FW 3 /* firmware version [16] */ +#define TWA_PARAM_VERSION_BIOS 4 /* BIOSs version [16] */ +#define TWA_PARAM_CTLR_MODEL 8 /* Controller model [16] */ + +#define TWA_PARAM_CONTROLLER_TABLE 0x0403 +#define TWA_PARAM_CONTROLLER_PORT_COUNT 3 /* number of ports [1] */ + +#define TWA_PARAM_TIME_TABLE 0x40A +#define TWA_PARAM_TIME_SCHED_TIME 0x3 + +#define TWA_9K_PARAM_DESCRIPTOR 0x8000 + + +#pragma pack(1) +/* 7000 structures. */ +struct tw_cl_command_init_connect { + TW_UINT8 res1__opcode; /* 3:5 */ + TW_UINT8 size; + TW_UINT8 request_id; + TW_UINT8 res2; + TW_UINT8 status; + TW_UINT8 flags; + TW_UINT16 message_credits; + TW_UINT32 features; + TW_UINT16 fw_srl; + TW_UINT16 fw_arch_id; + TW_UINT16 fw_branch; + TW_UINT16 fw_build; + TW_UINT32 result; +}; + + +/* Structure for downloading firmware onto the controller. */ +struct tw_cl_command_download_firmware { + TW_UINT8 sgl_off__opcode;/* 3:5 */ + TW_UINT8 size; + TW_UINT8 request_id; + TW_UINT8 unit; + TW_UINT8 status; + TW_UINT8 flags; + TW_UINT16 param; + TW_UINT8 sgl[1]; +}; + + +/* Structure for hard resetting the controller. */ +struct tw_cl_command_reset_firmware { + TW_UINT8 res1__opcode; /* 3:5 */ + TW_UINT8 size; + TW_UINT8 request_id; + TW_UINT8 unit; + TW_UINT8 status; + TW_UINT8 flags; + TW_UINT8 res2; + TW_UINT8 param; +}; + + +/* Structure for sending get/set param commands. */ +struct tw_cl_command_param { + TW_UINT8 sgl_off__opcode;/* 3:5 */ + TW_UINT8 size; + TW_UINT8 request_id; + TW_UINT8 host_id__unit; /* 4:4 */ + TW_UINT8 status; + TW_UINT8 flags; + TW_UINT16 param_count; + TW_UINT8 sgl[1]; +}; + + +/* Generic command packet. */ +struct tw_cl_command_generic { + TW_UINT8 sgl_off__opcode;/* 3:5 */ + TW_UINT8 size; + TW_UINT8 request_id; + TW_UINT8 host_id__unit; /* 4:4 */ + TW_UINT8 status; + TW_UINT8 flags; + TW_UINT16 count; /* block cnt, parameter cnt, message credits */ +}; + + +/* Command packet header. */ +struct tw_cl_command_header { + TW_UINT8 sense_data[TWA_SENSE_DATA_LENGTH]; + struct { + TW_INT8 reserved[4]; + TW_UINT16 error; + TW_UINT8 padding; + TW_UINT8 res__severity; /* 5:3 */ + } status_block; + TW_UINT8 err_specific_desc[98]; + struct { + TW_UINT8 size_header; + TW_UINT16 reserved; + TW_UINT8 size_sense; + } header_desc; +}; + + +/* 7000 Command packet. */ +union tw_cl_command_7k { + struct tw_cl_command_init_connect init_connect; + struct tw_cl_command_download_firmware download_fw; + struct tw_cl_command_reset_firmware reset_fw; + struct tw_cl_command_param param; + struct tw_cl_command_generic generic; + TW_UINT8 padding[1024 - sizeof(struct tw_cl_command_header)]; +}; + + +/* 9000 Command Packet. */ +struct tw_cl_command_9k { + TW_UINT8 res__opcode; /* 3:5 */ + TW_UINT8 unit; + TW_UINT16 lun_l4__req_id; /* 4:12 */ + TW_UINT8 status; + TW_UINT8 sgl_offset; /* offset (in bytes) to sg_list, from the + end of sgl_entries */ + TW_UINT16 lun_h4__sgl_entries; + TW_UINT8 cdb[16]; + TW_UINT8 sg_list[872];/* total struct size = + 1024-sizeof(cmd_hdr) */ +}; + + +/* Full command packet. */ +struct tw_cl_command_packet { + struct tw_cl_command_header cmd_hdr; + union { + union tw_cl_command_7k cmd_pkt_7k; + struct tw_cl_command_9k cmd_pkt_9k; + } command; +}; + + +/* Structure describing payload for get/set param commands. */ +struct tw_cl_param_9k { + TW_UINT16 table_id; + TW_UINT8 parameter_id; + TW_UINT8 reserved; + TW_UINT16 parameter_size_bytes; + TW_UINT16 parameter_actual_size_bytes; + TW_UINT8 data[1]; +}; +#pragma pack() + + +/* Functions to read from, and write to registers */ +#define TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, value) \ + tw_osl_write_reg(ctlr_handle, TWA_CONTROL_REGISTER_OFFSET, value, 4) + + +#define TW_CLI_READ_STATUS_REGISTER(ctlr_handle) \ + tw_osl_read_reg(ctlr_handle, TWA_STATUS_REGISTER_OFFSET, 4) + + +#define TW_CLI_WRITE_COMMAND_QUEUE(ctlr_handle, value) do { \ + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { \ + /* First write the low 4 bytes, then the high 4. */ \ + tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET_LOW, \ + (TW_UINT32)(value), 4); \ + tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET_HIGH,\ + (TW_UINT32)(((TW_UINT64)value)>>32), 4); \ + } else \ + tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET, \ + (TW_UINT32)(value), 4); \ +} while (0) + + +#define TW_CLI_READ_RESPONSE_QUEUE(ctlr_handle) \ + tw_osl_read_reg(ctlr_handle, TWA_RESPONSE_QUEUE_OFFSET, 4) + + +#define TW_CLI_READ_LARGE_RESPONSE_QUEUE(ctlr_handle) \ + tw_osl_read_reg(ctlr_handle, TWA_LARGE_RESPONSE_QUEUE_OFFSET, 4) + + +#define TW_CLI_SOFT_RESET(ctlr) \ + TW_CLI_WRITE_CONTROL_REGISTER(ctlr, \ + TWA_CONTROL_ISSUE_SOFT_RESET | \ + TWA_CONTROL_CLEAR_HOST_INTERRUPT | \ + TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | \ + TWA_CONTROL_MASK_COMMAND_INTERRUPT | \ + TWA_CONTROL_MASK_RESPONSE_INTERRUPT | \ + TWA_CONTROL_DISABLE_INTERRUPTS) + +/* Detect inconsistencies in the status register. */ +#define TW_CLI_STATUS_ERRORS(x) \ + ((x & TWA_STATUS_UNEXPECTED_BITS) && \ + (x & TWA_STATUS_MICROCONTROLLER_READY)) + + +/* + * Functions for making transparent, the bit fields in firmware + * interface structures. + */ +#define BUILD_SGL_OFF__OPCODE(sgl_off, opcode) \ + ((sgl_off << 5) & 0xE0) | (opcode & 0x1F) /* 3:5 */ + +#define BUILD_RES__OPCODE(res, opcode) \ + ((res << 5) & 0xE0) | (opcode & 0x1F) /* 3:5 */ + +#define BUILD_HOST_ID__UNIT(host_id, unit) \ + ((host_id << 4) & 0xF0) | (unit & 0xF) /* 4:4 */ + +#define BUILD_RES__SEVERITY(res, severity) \ + ((res << 3) & 0xF8) | (severity & 0x7) /* 5:3 */ + +#define BUILD_LUN_L4__REQ_ID(lun, req_id) \ + (((lun << 12) & 0xF000) | (req_id & 0xFFF)) /* 4:12 */ + +#define BUILD_LUN_H4__SGL_ENTRIES(lun, sgl_entries) \ + (((lun << 8) & 0xF000) | (sgl_entries & 0xFFF)) /* 4:12 */ + + +#define GET_OPCODE(sgl_off__opcode) \ + (sgl_off__opcode & 0x1F) /* 3:5 */ + +#define GET_SGL_OFF(sgl_off__opcode) \ + ((sgl_off__opcode >> 5) & 0x7) /* 3:5 */ + +#define GET_UNIT(host_id__unit) \ + (host_id__unit & 0xF) /* 4:4 */ + +#define GET_HOST_ID(host_id__unit) \ + ((host_id__unit >> 4) & 0xF) /* 4:4 */ + +#define GET_SEVERITY(res__severity) \ + (res__severity & 0x7) /* 5:3 */ + +#define GET_RESP_ID(undef2__resp_id__undef1) \ + ((undef2__resp_id__undef1 >> 4) & 0xFF) /* 20:8:4 */ + +#define GET_RESP_ID_9K_X(undef2__resp_id) \ + ((undef2__resp_id) & 0xFFF) /* 20:12 */ + +#define GET_LARGE_RESP_ID(misc__large_resp_id) \ + ((misc__large_resp_id) & 0xFFFF) /* 16:16 */ + +#define GET_REQ_ID(lun_l4__req_id) \ + (lun_l4__req_id & 0xFFF) /* 4:12 */ + +#define GET_LUN_L4(lun_l4__req_id) \ + ((lun_l4__req_id >> 12) & 0xF) /* 4:12 */ + +#define GET_SGL_ENTRIES(lun_h4__sgl_entries) \ + (lun_h4__sgl_entries & 0xFFF) /* 4:12 */ + +#define GET_LUN_H4(lun_h4__sgl_entries) \ + ((lun_h4__sgl_entries >> 12) & 0xF) /* 4:12 */ + + + +#endif /* TW_CL_FWIF_H */ diff --git a/sys/dev/raid/twa/tw_cl_init.c b/sys/dev/raid/twa/tw_cl_init.c new file mode 100644 index 0000000000..3a8c2a166c --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_init.c @@ -0,0 +1,708 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_init.c,v 1.6 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * Common Layer initialization functions. + */ + + +#include "tw_osl_share.h" +#include "tw_cl_share.h" +#include "tw_cl_fwif.h" +#include "tw_cl_ioctl.h" +#include "tw_cl.h" +#include "tw_cl_externs.h" +#include "tw_osl_ioctl.h" + + +/* + * Function name: tw_cl_ctlr_supported + * Description: Determines if a controller is supported. + * + * Input: vendor_id -- vendor id of the controller + * device_id -- device id of the controller + * Output: None + * Return value: TW_CL_TRUE-- controller supported + * TW_CL_FALSE-- controller not supported + */ +TW_INT32 +tw_cl_ctlr_supported(TW_INT32 vendor_id, TW_INT32 device_id) +{ + if ((vendor_id == TW_CL_VENDOR_ID) && + ((device_id == TW_CL_DEVICE_ID_9K) || + (device_id == TW_CL_DEVICE_ID_9K_X) || + (device_id == TW_CL_DEVICE_ID_9K_E) || + (device_id == TW_CL_DEVICE_ID_9K_SA))) + return(TW_CL_TRUE); + return(TW_CL_FALSE); +} + + + +/* + * Function name: tw_cl_get_pci_bar_info + * Description: Returns PCI BAR info. + * + * Input: device_id -- device id of the controller + * bar_type -- type of PCI BAR in question + * Output: bar_num -- PCI BAR number corresponding to bar_type + * bar0_offset -- byte offset from BAR 0 (0x10 in + * PCI config space) + * bar_size -- size, in bytes, of the BAR in question + * Return value: 0 -- success + * non-zero -- failure + */ +TW_INT32 +tw_cl_get_pci_bar_info(TW_INT32 device_id, TW_INT32 bar_type, + TW_INT32 *bar_num, TW_INT32 *bar0_offset, TW_INT32 *bar_size) +{ + TW_INT32 error = TW_OSL_ESUCCESS; + + switch(device_id) { + case TW_CL_DEVICE_ID_9K: + switch(bar_type) { + case TW_CL_BAR_TYPE_IO: + *bar_num = 0; + *bar0_offset = 0; + *bar_size = 4; + break; + + case TW_CL_BAR_TYPE_MEM: + *bar_num = 1; + *bar0_offset = 0x4; + *bar_size = 8; + break; + + case TW_CL_BAR_TYPE_SBUF: + *bar_num = 2; + *bar0_offset = 0xC; + *bar_size = 8; + break; + } + break; + + case TW_CL_DEVICE_ID_9K_X: + case TW_CL_DEVICE_ID_9K_E: + case TW_CL_DEVICE_ID_9K_SA: + switch(bar_type) { + case TW_CL_BAR_TYPE_IO: + *bar_num = 2; + *bar0_offset = 0x10; + *bar_size = 4; + break; + + case TW_CL_BAR_TYPE_MEM: + *bar_num = 1; + *bar0_offset = 0x8; + *bar_size = 8; + break; + + case TW_CL_BAR_TYPE_SBUF: + *bar_num = 0; + *bar0_offset = 0; + *bar_size = 8; + break; + } + break; + + default: + error = TW_OSL_ENOTTY; + break; + } + + return(error); +} + + + +/* + * Function name: tw_cl_get_mem_requirements + * Description: Provides info about Common Layer requirements for a + * controller, given the controller type (in 'flags'). + * Input: ctlr_handle -- controller handle + * flags -- more info passed by the OS Layer + * device_id -- device id of the controller + * max_simult_reqs -- maximum # of simultaneous + * requests that the OS Layer expects + * the Common Layer to support + * max_aens -- maximun # of AEN's needed to be supported + * Output: alignment -- alignment needed for all DMA'able + * buffers + * sg_size_factor -- every SG element should have a size + * that's a multiple of this number + * non_dma_mem_size -- # of bytes of memory needed for + * non-DMA purposes + * dma_mem_size -- # of bytes of DMA'able memory needed + * per_req_dma_mem_size -- # of bytes of DMA'able memory + * needed per request, if applicable + * per_req_non_dma_mem_size -- # of bytes of memory needed + * per request for non-DMA purposes, + * if applicable + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_get_mem_requirements(struct tw_cl_ctlr_handle *ctlr_handle, + TW_UINT32 flags, TW_INT32 device_id, TW_INT32 max_simult_reqs, + TW_INT32 max_aens, TW_UINT32 *alignment, TW_UINT32 *sg_size_factor, + TW_UINT32 *non_dma_mem_size, TW_UINT32 *dma_mem_size + ) +{ + if (device_id == 0) + device_id = TW_CL_DEVICE_ID_9K; + + if (max_simult_reqs > TW_CL_MAX_SIMULTANEOUS_REQUESTS) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1000, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Too many simultaneous requests to support!", + "requested = %d, supported = %d, error = %d\n", + max_simult_reqs, TW_CL_MAX_SIMULTANEOUS_REQUESTS, + TW_OSL_EBIG); + return(TW_OSL_EBIG); + } + + *alignment = TWA_ALIGNMENT(device_id); + *sg_size_factor = TWA_SG_ELEMENT_SIZE_FACTOR(device_id); + + /* + * Total non-DMA memory needed is the sum total of memory needed for + * the controller context, request packets (including the 1 needed for + * CL internal requests), and event packets. + */ + + *non_dma_mem_size = sizeof(struct tw_cli_ctlr_context) + + (sizeof(struct tw_cli_req_context) * max_simult_reqs) + + (sizeof(struct tw_cl_event_packet) * max_aens); + + + /* + * Total DMA'able memory needed is the sum total of memory needed for + * all command packets (including the 1 needed for CL internal + * requests), and memory needed to hold the payload for internal + * requests. + */ + + *dma_mem_size = (sizeof(struct tw_cl_command_packet) * + (max_simult_reqs)) + (TW_CLI_SECTOR_SIZE); + + return(0); +} + + + +/* + * Function name: tw_cl_init_ctlr + * Description: Initializes driver data structures for the controller. + * + * Input: ctlr_handle -- controller handle + * flags -- more info passed by the OS Layer + * device_id -- device id of the controller + * max_simult_reqs -- maximum # of simultaneous requests + * that the OS Layer expects the Common + * Layer to support + * max_aens -- maximun # of AEN's needed to be supported + * non_dma_mem -- ptr to allocated non-DMA memory + * dma_mem -- ptr to allocated DMA'able memory + * dma_mem_phys -- physical address of dma_mem + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_init_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags, + TW_INT32 device_id, TW_INT32 max_simult_reqs, TW_INT32 max_aens, + TW_VOID *non_dma_mem, TW_VOID *dma_mem, TW_UINT64 dma_mem_phys + ) +{ + struct tw_cli_ctlr_context *ctlr; + struct tw_cli_req_context *req; + TW_UINT8 *free_non_dma_mem; + TW_INT32 error = TW_OSL_ESUCCESS; + TW_INT32 i; + + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), "entered"); + + if (flags & TW_CL_START_CTLR_ONLY) { + ctlr = (struct tw_cli_ctlr_context *) + (ctlr_handle->cl_ctlr_ctxt); + goto start_ctlr; + } + + if (max_simult_reqs > TW_CL_MAX_SIMULTANEOUS_REQUESTS) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1000, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Too many simultaneous requests to support!", + "requested = %d, supported = %d, error = %d\n", + max_simult_reqs, TW_CL_MAX_SIMULTANEOUS_REQUESTS, + TW_OSL_EBIG); + return(TW_OSL_EBIG); + } + + if ((non_dma_mem == TW_CL_NULL) || (dma_mem == TW_CL_NULL) + ) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1001, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Insufficient memory for Common Layer's internal usage", + "error = %d\n", TW_OSL_ENOMEM); + return(TW_OSL_ENOMEM); + } + + tw_osl_memzero(non_dma_mem, sizeof(struct tw_cli_ctlr_context) + + (sizeof(struct tw_cli_req_context) * max_simult_reqs) + + (sizeof(struct tw_cl_event_packet) * max_aens)); + + tw_osl_memzero(dma_mem, + (sizeof(struct tw_cl_command_packet) * + max_simult_reqs) + + TW_CLI_SECTOR_SIZE); + + free_non_dma_mem = (TW_UINT8 *)non_dma_mem; + + ctlr = (struct tw_cli_ctlr_context *)free_non_dma_mem; + free_non_dma_mem += sizeof(struct tw_cli_ctlr_context); + + ctlr_handle->cl_ctlr_ctxt = ctlr; + ctlr->ctlr_handle = ctlr_handle; + + ctlr->device_id = (TW_UINT32)device_id; + ctlr->arch_id = TWA_ARCH_ID(device_id); + ctlr->flags = flags; + ctlr->sg_size_factor = TWA_SG_ELEMENT_SIZE_FACTOR(device_id); + ctlr->max_simult_reqs = max_simult_reqs; + ctlr->max_aens_supported = max_aens; + + /* Initialize queues of CL internal request context packets. */ + tw_cli_req_q_init(ctlr, TW_CLI_FREE_Q); + tw_cli_req_q_init(ctlr, TW_CLI_BUSY_Q); + tw_cli_req_q_init(ctlr, TW_CLI_PENDING_Q); + tw_cli_req_q_init(ctlr, TW_CLI_COMPLETE_Q); + + /* Initialize all locks used by CL. */ + ctlr->gen_lock = &(ctlr->gen_lock_handle); + tw_osl_init_lock(ctlr_handle, "tw_cl_gen_lock", ctlr->gen_lock); + ctlr->io_lock = &(ctlr->io_lock_handle); + tw_osl_init_lock(ctlr_handle, "tw_cl_io_lock", ctlr->io_lock); + + /* Initialize CL internal request context packets. */ + ctlr->req_ctxt_buf = (struct tw_cli_req_context *)free_non_dma_mem; + free_non_dma_mem += (sizeof(struct tw_cli_req_context) * + max_simult_reqs); + + ctlr->cmd_pkt_buf = (struct tw_cl_command_packet *)dma_mem; + ctlr->cmd_pkt_phys = dma_mem_phys; + + ctlr->internal_req_data = (TW_UINT8 *) + (ctlr->cmd_pkt_buf + + max_simult_reqs); + ctlr->internal_req_data_phys = ctlr->cmd_pkt_phys + + (sizeof(struct tw_cl_command_packet) * + max_simult_reqs); + + for (i = 0; i < max_simult_reqs; i++) { + req = &(ctlr->req_ctxt_buf[i]); + + req->cmd_pkt = &(ctlr->cmd_pkt_buf[i]); + req->cmd_pkt_phys = ctlr->cmd_pkt_phys + + (i * sizeof(struct tw_cl_command_packet)); + + req->request_id = i; + req->ctlr = ctlr; + + /* Insert request into the free queue. */ + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + + /* Initialize the AEN queue. */ + ctlr->aen_queue = (struct tw_cl_event_packet *)free_non_dma_mem; + + +start_ctlr: + /* + * Disable interrupts. Interrupts will be enabled in tw_cli_start_ctlr + * (only) if initialization succeeded. + */ + tw_cli_disable_interrupts(ctlr); + + /* Initialize the controller. */ + if ((error = tw_cli_start_ctlr(ctlr))) { + /* Soft reset the controller, and try one more time. */ + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1002, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller initialization failed. Retrying...", + "error = %d\n", error); + if ((error = tw_cli_soft_reset(ctlr))) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1003, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller soft reset failed", + "error = %d\n", error); + return(error); + } else if ((error = tw_cli_start_ctlr(ctlr))) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1004, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller initialization retry failed", + "error = %d\n", error); + return(error); + } + } + /* Notify some info about the controller to the OSL. */ + tw_cli_notify_ctlr_info(ctlr); + + /* Mark the controller active. */ + ctlr->active = TW_CL_TRUE; + return(error); +} + +/* + * Function name: tw_cli_start_ctlr + * Description: Establishes a logical connection with the controller. + * Determines whether or not the driver is compatible + * with the firmware on the controller, before proceeding + * to work with it. + * + * Input: ctlr -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_start_ctlr(struct tw_cli_ctlr_context *ctlr) +{ + TW_UINT16 fw_on_ctlr_srl = 0; + TW_UINT16 fw_on_ctlr_arch_id = 0; + TW_UINT16 fw_on_ctlr_branch = 0; + TW_UINT16 fw_on_ctlr_build = 0; + TW_UINT32 init_connect_result = 0; + TW_INT32 error = TW_OSL_ESUCCESS; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Wait for the controller to become ready. */ + if ((error = tw_cli_poll_status(ctlr, + TWA_STATUS_MICROCONTROLLER_READY, + TW_CLI_REQUEST_TIMEOUT_PERIOD))) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1009, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Microcontroller not ready", + "error = %d", error); + return(error); + } + /* Drain the response queue. */ + if ((error = tw_cli_drain_response_queue(ctlr))) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x100A, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Can't drain response queue", + "error = %d", error); + return(error); + } + /* Establish a logical connection with the controller. */ + if ((error = tw_cli_init_connection(ctlr, + (TW_UINT16)(ctlr->max_simult_reqs), + TWA_EXTENDED_INIT_CONNECT, TWA_CURRENT_FW_SRL, + (TW_UINT16)(ctlr->arch_id), + TWA_CURRENT_FW_BRANCH(ctlr->arch_id), + TWA_CURRENT_FW_BUILD(ctlr->arch_id), + &fw_on_ctlr_srl, &fw_on_ctlr_arch_id, + &fw_on_ctlr_branch, &fw_on_ctlr_build, + &init_connect_result))) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x100B, 0x2, TW_CL_SEVERITY_WARNING_STRING, + "Can't initialize connection in current mode", + "error = %d", error); + return(error); + } + { + /* See if we can at least work with the firmware on the + * controller in the current mode. + */ + if (init_connect_result & TWA_CTLR_FW_COMPATIBLE) { + /* Yes, we can. Make note of the operating mode. */ + if (init_connect_result & TWA_CTLR_FW_SAME_OR_NEWER) { + ctlr->working_srl = TWA_CURRENT_FW_SRL; + ctlr->working_branch = + TWA_CURRENT_FW_BRANCH(ctlr->arch_id); + ctlr->working_build = + TWA_CURRENT_FW_BUILD(ctlr->arch_id); + } else { + ctlr->working_srl = fw_on_ctlr_srl; + ctlr->working_branch = fw_on_ctlr_branch; + ctlr->working_build = fw_on_ctlr_build; + } + } else { + /* + * No, we can't. See if we can at least work with + * it in the base mode. + */ + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1010, 0x2, TW_CL_SEVERITY_WARNING_STRING, + "Driver/Firmware mismatch. " + "Negotiating for base level...", + " "); + if ((error = tw_cli_init_connection(ctlr, + (TW_UINT16)(ctlr->max_simult_reqs), + TWA_EXTENDED_INIT_CONNECT, + TWA_BASE_FW_SRL, + (TW_UINT16)(ctlr->arch_id), + TWA_BASE_FW_BRANCH, TWA_BASE_FW_BUILD, + &fw_on_ctlr_srl, &fw_on_ctlr_arch_id, + &fw_on_ctlr_branch, &fw_on_ctlr_build, + &init_connect_result))) { + tw_cl_create_event(ctlr->ctlr_handle, + TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1011, 0x1, + TW_CL_SEVERITY_ERROR_STRING, + "Can't initialize connection in " + "base mode", + " "); + return(error); + } + if (!(init_connect_result & TWA_CTLR_FW_COMPATIBLE)) { + /* + * The firmware on the controller is not even + * compatible with our base mode. We cannot + * work with it. Bail... + */ + return(1); + } + /* + * We can work with this firmware, but only in + * base mode. + */ + ctlr->working_srl = TWA_BASE_FW_SRL; + ctlr->working_branch = TWA_BASE_FW_BRANCH; + ctlr->working_build = TWA_BASE_FW_BUILD; + ctlr->operating_mode = TWA_BASE_MODE; + } + ctlr->fw_on_ctlr_srl = fw_on_ctlr_srl; + ctlr->fw_on_ctlr_branch = fw_on_ctlr_branch; + ctlr->fw_on_ctlr_build = fw_on_ctlr_build; + } + + /* Drain the AEN queue */ + if ((error = tw_cli_drain_aen_queue(ctlr))) + /* + * We will just print that we couldn't drain the AEN queue. + * There's no need to bail out. + */ + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1014, 0x2, TW_CL_SEVERITY_WARNING_STRING, + "Can't drain AEN queue", + "error = %d", error); + + /* Enable interrupts. */ + tw_cli_enable_interrupts(ctlr); + + return(TW_OSL_ESUCCESS); +} + + +/* + * Function name: tw_cl_shutdown_ctlr + * Description: Closes logical connection with the controller. + * + * Input: ctlr -- ptr to per ctlr structure + * flags -- more info passed by the OS Layer + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_shutdown_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + TW_INT32 error; + + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), "entered"); + /* + * Mark the controller as inactive, disable any further interrupts, + * and notify the controller that we are going down. + */ + ctlr->active = TW_CL_FALSE; + + tw_cli_disable_interrupts(ctlr); + + /* Let the controller know that we are going down. */ + if ((error = tw_cli_init_connection(ctlr, TWA_SHUTDOWN_MESSAGE_CREDITS, + 0, 0, 0, 0, 0, TW_CL_NULL, TW_CL_NULL, TW_CL_NULL, + TW_CL_NULL, TW_CL_NULL))) + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1015, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Can't close connection with controller", + "error = %d", error); + + if (flags & TW_CL_STOP_CTLR_ONLY) + goto ret; + + /* Destroy all locks used by CL. */ + tw_osl_destroy_lock(ctlr_handle, ctlr->gen_lock); + tw_osl_destroy_lock(ctlr_handle, ctlr->io_lock); + +ret: + return(error); +} + + + +/* + * Function name: tw_cli_init_connection + * Description: Sends init_connection cmd to firmware + * + * Input: ctlr -- ptr to per ctlr structure + * message_credits -- max # of requests that we might send + * down simultaneously. This will be + * typically set to 256 at init-time or + * after a reset, and to 1 at shutdown-time + * set_features -- indicates if we intend to use 64-bit + * sg, also indicates if we want to do a + * basic or an extended init_connection; + * + * Note: The following input/output parameters are valid, only in case of an + * extended init_connection: + * + * current_fw_srl -- srl of fw we are bundled + * with, if any; 0 otherwise + * current_fw_arch_id -- arch_id of fw we are bundled + * with, if any; 0 otherwise + * current_fw_branch -- branch # of fw we are bundled + * with, if any; 0 otherwise + * current_fw_build -- build # of fw we are bundled + * with, if any; 0 otherwise + * Output: fw_on_ctlr_srl -- srl of fw on ctlr + * fw_on_ctlr_arch_id -- arch_id of fw on ctlr + * fw_on_ctlr_branch -- branch # of fw on ctlr + * fw_on_ctlr_build -- build # of fw on ctlr + * init_connect_result -- result bitmap of fw response + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_init_connection(struct tw_cli_ctlr_context *ctlr, + TW_UINT16 message_credits, TW_UINT32 set_features, + TW_UINT16 current_fw_srl, TW_UINT16 current_fw_arch_id, + TW_UINT16 current_fw_branch, TW_UINT16 current_fw_build, + TW_UINT16 *fw_on_ctlr_srl, TW_UINT16 *fw_on_ctlr_arch_id, + TW_UINT16 *fw_on_ctlr_branch, TW_UINT16 *fw_on_ctlr_build, + TW_UINT32 *init_connect_result) +{ + struct tw_cli_req_context *req; + struct tw_cl_command_init_connect *init_connect; + TW_INT32 error = TW_OSL_EBUSY; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Get a request packet. */ + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) + goto out; + + req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; + + /* Build the cmd pkt. */ + init_connect = &(req->cmd_pkt->command.cmd_pkt_7k.init_connect); + + req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; + + init_connect->res1__opcode = + BUILD_RES__OPCODE(0, TWA_FW_CMD_INIT_CONNECTION); + init_connect->request_id = + (TW_UINT8)(TW_CL_SWAP16(req->request_id)); + init_connect->message_credits = TW_CL_SWAP16(message_credits); + init_connect->features = TW_CL_SWAP32(set_features); + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) + init_connect->features |= TW_CL_SWAP32(TWA_64BIT_SG_ADDRESSES); + if (set_features & TWA_EXTENDED_INIT_CONNECT) { + /* + * Fill in the extra fields needed for an extended + * init_connect. + */ + init_connect->size = 6; + init_connect->fw_srl = TW_CL_SWAP16(current_fw_srl); + init_connect->fw_arch_id = TW_CL_SWAP16(current_fw_arch_id); + init_connect->fw_branch = TW_CL_SWAP16(current_fw_branch); + init_connect->fw_build = TW_CL_SWAP16(current_fw_build); + } else + init_connect->size = 3; + + /* Submit the command, and wait for it to complete. */ + error = tw_cli_submit_and_poll_request(req, + TW_CLI_REQUEST_TIMEOUT_PERIOD); + if (error == TW_OSL_ETIMEDOUT) + /* Clean-up done by tw_cli_submit_and_poll_request. */ + return(error); + if (error) + goto out; + if ((error = init_connect->status)) { + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + &(req->cmd_pkt->cmd_hdr)); + goto out; + } + if (set_features & TWA_EXTENDED_INIT_CONNECT) { + *fw_on_ctlr_srl = TW_CL_SWAP16(init_connect->fw_srl); + *fw_on_ctlr_arch_id = TW_CL_SWAP16(init_connect->fw_arch_id); + *fw_on_ctlr_branch = TW_CL_SWAP16(init_connect->fw_branch); + *fw_on_ctlr_build = TW_CL_SWAP16(init_connect->fw_build); + *init_connect_result = TW_CL_SWAP32(init_connect->result); + } + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + return(error); + +out: + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1016, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "init_connection failed", + "error = %d", error); + if (req) + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + return(error); +} diff --git a/sys/dev/raid/twa/tw_cl_intr.c b/sys/dev/raid/twa/tw_cl_intr.c new file mode 100644 index 0000000000..8f0cee9dbb --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_intr.c @@ -0,0 +1,752 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_intr.c,v 1.5 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * Common Layer interrupt handling functions. + */ + + +#include "tw_osl_share.h" +#include "tw_cl_share.h" +#include "tw_cl_fwif.h" +#include "tw_cl_ioctl.h" +#include "tw_cl.h" +#include "tw_cl_externs.h" +#include "tw_osl_ioctl.h" + + + +/* + * Function name: twa_interrupt + * Description: Interrupt handler. Determines the kind of interrupt, + * and returns TW_CL_TRUE if it recognizes the interrupt. + * + * Input: ctlr_handle -- controller handle + * Output: None + * Return value: TW_CL_TRUE -- interrupt recognized + * TW_CL_FALSE-- interrupt not recognized + */ +TW_INT32 +tw_cl_interrupt(struct tw_cl_ctlr_handle *ctlr_handle) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + TW_UINT32 status_reg; + TW_INT32 rc = TW_CL_FALSE; + + tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); + + /* If we don't have controller context, bail */ + if (ctlr == NULL) + goto out; + + /* + * Bail If we get an interrupt while resetting, or shutting down. + */ + if (ctlr->reset_in_progress || !(ctlr->active)) + goto out; + + /* Read the status register to determine the type of interrupt. */ + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); + if (tw_cli_check_ctlr_state(ctlr, status_reg)) + goto out; + + /* Clear the interrupt. */ + if (status_reg & TWA_STATUS_HOST_INTERRUPT) { + tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), + "Host interrupt"); + TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, + TWA_CONTROL_CLEAR_HOST_INTERRUPT); + } + if (status_reg & TWA_STATUS_ATTENTION_INTERRUPT) { + tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), + "Attention interrupt"); + rc |= TW_CL_TRUE; /* request for a deferred isr call */ + tw_cli_process_attn_intr(ctlr); + TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, + TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); + } + if (status_reg & TWA_STATUS_COMMAND_INTERRUPT) { + tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), + "Command interrupt"); + rc |= TW_CL_TRUE; /* request for a deferred isr call */ + tw_cli_process_cmd_intr(ctlr); + if ((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) == TW_CL_NULL) + TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, + TWA_CONTROL_MASK_COMMAND_INTERRUPT); + } + if (status_reg & TWA_STATUS_RESPONSE_INTERRUPT) { + tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), + "Response interrupt"); + rc |= TW_CL_TRUE; /* request for a deferred isr call */ + tw_cli_process_resp_intr(ctlr); + } +out: + return(rc); +} + + + +/* + * Function name: tw_cli_process_host_intr + * Description: This function gets called if we triggered an interrupt. + * We don't use it as of now. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_process_host_intr(struct tw_cli_ctlr_context *ctlr) +{ + tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); +} + + + +/* + * Function name: tw_cli_process_attn_intr + * Description: This function gets called if the fw posted an AEN + * (Asynchronous Event Notification). It fetches + * all the AEN's that the fw might have posted. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_process_attn_intr(struct tw_cli_ctlr_context *ctlr) +{ + TW_INT32 error; + + tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + if ((error = tw_cli_get_aen(ctlr))) { + /* + * If the driver is already in the process of retrieveing AEN's, + * we will be returned TW_OSL_EBUSY. In this case, + * tw_cli_param_callback or tw_cli_aen_callback will eventually + * retrieve the AEN this attention interrupt is for. So, we + * don't need to print the failure. + */ + if (error != TW_OSL_EBUSY) + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1200, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Failed to fetch AEN", + "error = %d", error); + } +} + + + +/* + * Function name: tw_cli_process_cmd_intr + * Description: This function gets called if we hit a queue full + * condition earlier, and the fw is now ready for + * new cmds. Submits any pending requests. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_process_cmd_intr(struct tw_cli_ctlr_context *ctlr) +{ + tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Start any requests that might be in the pending queue. */ + tw_cli_submit_pending_queue(ctlr); + + /* + * If tw_cli_submit_pending_queue was unsuccessful due to a "cmd queue + * full" condition, cmd_intr will already have been unmasked by + * tw_cli_submit_cmd. We don't need to do it again... simply return. + */ +} + + + +/* + * Function name: tw_cli_process_resp_intr + * Description: Looks for cmd completions from fw; queues cmds completed + * by fw into complete queue. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: 0 -- no ctlr error + * non-zero-- ctlr error + */ +TW_INT32 +tw_cli_process_resp_intr(struct tw_cli_ctlr_context *ctlr) +{ + TW_UINT32 resp; + struct tw_cli_req_context *req; + TW_INT32 error; + TW_UINT32 status_reg; + + tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + for (;;) { + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); + if ((error = tw_cli_check_ctlr_state(ctlr, status_reg))) + break; + if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) { + tw_cli_dbg_printf(7, ctlr->ctlr_handle, + tw_osl_cur_func(), "Response queue empty"); + break; + } + + /* Response queue is not empty. */ + resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); + { + req = &(ctlr->req_ctxt_buf[GET_RESP_ID(resp)]); + } + + if (req->state != TW_CLI_REQ_STATE_BUSY) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1201, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Unposted command completed!!", + "request = %p, status = %d", + req, req->state); +#ifdef TW_OSL_DEBUG + tw_cl_print_ctlr_stats(ctlr->ctlr_handle); +#endif /* TW_OSL_DEBUG */ + tw_cl_reset_ctlr(ctlr->ctlr_handle); + return(TW_OSL_EIO); + } + + /* + * Remove the request from the busy queue, mark it as complete, + * and enqueue it in the complete queue. + */ + tw_cli_req_q_remove_item(req, TW_CLI_BUSY_Q); + req->state = TW_CLI_REQ_STATE_COMPLETE; + tw_cli_req_q_insert_tail(req, TW_CLI_COMPLETE_Q); + + } + + /* Complete this, and other requests in the complete queue. */ + tw_cli_process_complete_queue(ctlr); + + return(error); +} + + + +/* + * Function name: tw_cli_submit_pending_queue + * Description: Kick starts any requests in the pending queue. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: 0 -- all pending requests submitted successfully + * non-zero-- otherwise + */ +TW_INT32 +tw_cli_submit_pending_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + TW_INT32 error = TW_OSL_ESUCCESS; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* + * Pull requests off the pending queue, and submit them. + */ + while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_PENDING_Q)) != + TW_CL_NULL) { + if ((error = tw_cli_submit_cmd(req))) { + if (error == TW_OSL_EBUSY) { + tw_cli_dbg_printf(2, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Requeueing pending request"); + req->state = TW_CLI_REQ_STATE_PENDING; + /* + * Queue the request at the head of the pending + * queue, and break away, so we don't try to + * submit any more requests. + */ + tw_cli_req_q_insert_head(req, TW_CLI_PENDING_Q); + break; + } else { + tw_cl_create_event(ctlr->ctlr_handle, + TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1202, 0x1, + TW_CL_SEVERITY_ERROR_STRING, + "Could not start request " + "in pending queue", + "request = %p, opcode = 0x%x, " + "error = %d", req, + GET_OPCODE(req->cmd_pkt-> + command.cmd_pkt_9k.res__opcode), + error); + /* + * Set the appropriate error and call the CL + * internal callback if there's one. If the + * request originator is polling for completion, + * he should be checking req->error to + * determine that the request did not go + * through. The request originators are + * responsible for the clean-up. + */ + req->error_code = error; + req->state = TW_CLI_REQ_STATE_COMPLETE; + if (req->tw_cli_callback) + req->tw_cli_callback(req); + error = TW_OSL_ESUCCESS; + } + } + } + return(error); +} + + + +/* + * Function name: tw_cli_process_complete_queue + * Description: Calls the CL internal callback routine, if any, for + * each request in the complete queue. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_process_complete_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + + tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* + * Pull commands off the completed list, dispatch them appropriately. + */ + while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_COMPLETE_Q)) != + TW_CL_NULL) { + /* Call the CL internal callback, if there's one. */ + if (req->tw_cli_callback) + req->tw_cli_callback(req); + } +} + + + +/* + * Function name: tw_cli_complete_io + * Description: CL internal callback for SCSI/fw passthru requests. + * + * Input: req -- ptr to CL internal request context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_complete_io(struct tw_cli_req_context *req) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + struct tw_cl_req_packet *req_pkt = + (struct tw_cl_req_packet *)(req->orig_req); + + tw_cli_dbg_printf(8, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + req_pkt->status = TW_CL_ERR_REQ_SUCCESS; + if (req->error_code) { + req_pkt->status = TW_CL_ERR_REQ_UNABLE_TO_SUBMIT_COMMAND; + goto out; + } + + if (req->state != TW_CLI_REQ_STATE_COMPLETE) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1203, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "I/O completion on incomplete command!!", + "request = %p, status = %d", + req, req->state); +#ifdef TW_OSL_DEBUG + tw_cl_print_ctlr_stats(ctlr->ctlr_handle); +#endif /* TW_OSL_DEBUG */ + tw_cl_reset_ctlr(ctlr->ctlr_handle); + req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; + goto out; + } + + if (req->flags & TW_CLI_REQ_FLAGS_PASSTHRU) { + /* Copy the command packet back into OSL's space. */ + tw_osl_memcpy(req_pkt->gen_req_pkt.pt_req.cmd_pkt, req->cmd_pkt, + sizeof(struct tw_cl_command_packet)); + } else + tw_cli_scsi_complete(req); + +out: + req_pkt->tw_osl_callback(req->req_handle); + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); +} + + + +/* + * Function name: tw_cli_scsi_complete + * Description: Completion routine for SCSI requests. + * + * Input: req -- ptr to CL internal request context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_scsi_complete(struct tw_cli_req_context *req) +{ + struct tw_cl_req_packet *req_pkt = + (struct tw_cl_req_packet *)(req->orig_req); + struct tw_cl_scsi_req_packet *scsi_req = + &(req_pkt->gen_req_pkt.scsi_req); + struct tw_cl_command_9k *cmd = + &(req->cmd_pkt->command.cmd_pkt_9k); + struct tw_cl_command_header *cmd_hdr; + TW_UINT16 error; + TW_UINT8 *cdb; + + tw_cli_dbg_printf(8, req->ctlr->ctlr_handle, tw_osl_cur_func(), + "entered"); + + scsi_req->scsi_status = cmd->status; + if (! cmd->status) + return; + + tw_cli_dbg_printf(1, req->ctlr->ctlr_handle, tw_osl_cur_func(), + "req_id = 0x%x, status = 0x%x", + GET_REQ_ID(cmd->lun_l4__req_id), cmd->status); + + cmd_hdr = &(req->cmd_pkt->cmd_hdr); + error = cmd_hdr->status_block.error; + if ((error == TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED) || + (error == TWA_ERROR_UNIT_OFFLINE)) { + if (GET_LUN_L4(cmd->lun_l4__req_id)) + req_pkt->status |= TW_CL_ERR_REQ_INVALID_LUN; + else + req_pkt->status |= TW_CL_ERR_REQ_INVALID_TARGET; + } else { + tw_cli_dbg_printf(2, req->ctlr->ctlr_handle, + tw_osl_cur_func(), + "cmd = %x %x %x %x %x %x %x", + GET_OPCODE(cmd->res__opcode), + GET_SGL_OFF(cmd->res__opcode), + cmd->unit, + cmd->lun_l4__req_id, + cmd->status, + cmd->sgl_offset, + cmd->lun_h4__sgl_entries); + + cdb = (TW_UINT8 *)(cmd->cdb); + tw_cli_dbg_printf(2, req->ctlr->ctlr_handle, + tw_osl_cur_func(), + "cdb = %x %x %x %x %x %x %x %x " + "%x %x %x %x %x %x %x %x", + cdb[0], cdb[1], cdb[2], cdb[3], + cdb[4], cdb[5], cdb[6], cdb[7], + cdb[8], cdb[9], cdb[10], cdb[11], + cdb[12], cdb[13], cdb[14], cdb[15]); + + /* + * Print the error. Firmware doesn't yet support + * the 'Mode Sense' cmd. Don't print if the cmd + * is 'Mode Sense', and the error is 'Invalid field + * in CDB'. + */ + if (! ((cdb[0] == 0x1A) && (error == 0x10D))) + tw_cli_create_ctlr_event(req->ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + cmd_hdr); + } + + if (scsi_req->sense_data) { + tw_osl_memcpy(scsi_req->sense_data, cmd_hdr->sense_data, + TWA_SENSE_DATA_LENGTH); + scsi_req->sense_len = TWA_SENSE_DATA_LENGTH; + req_pkt->status |= TW_CL_ERR_REQ_AUTO_SENSE_VALID; + } + req_pkt->status |= TW_CL_ERR_REQ_SCSI_ERROR; +} + + + +/* + * Function name: tw_cli_param_callback + * Description: Callback for get/set_param requests. + * + * Input: req -- ptr to completed request pkt + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_param_callback(struct tw_cli_req_context *req) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + union tw_cl_command_7k *cmd = + &(req->cmd_pkt->command.cmd_pkt_7k); + TW_INT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* + * If the request was never submitted to the controller, the function + * that sets req->error is responsible for calling tw_cl_create_event. + */ + if (! req->error_code) + if (cmd->param.status) { + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + &(req->cmd_pkt->cmd_hdr)); + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1204, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "get/set_param failed", + "status = %d", cmd->param.status); + } + + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + + if ((ctlr->get_more_aens) && (!(ctlr->reset_in_progress))) { + ctlr->get_more_aens = TW_CL_FALSE; + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "Fetching more AEN's"); + if ((error = tw_cli_get_aen(ctlr))) + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1205, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Failed to fetch all AEN's from param_callback", + "error = %d", error); + } +} + + + +/* + * Function name: tw_cli_aen_callback + * Description: Callback for requests to fetch AEN's. + * + * Input: req -- ptr to completed request pkt + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_aen_callback(struct tw_cli_req_context *req) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + struct tw_cl_command_header *cmd_hdr; + struct tw_cl_command_9k *cmd = + &(req->cmd_pkt->command.cmd_pkt_9k); + TW_UINT16 aen_code = TWA_AEN_QUEUE_EMPTY; + TW_INT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "req_id = 0x%x, req error = %d, status = 0x%x", + GET_REQ_ID(cmd->lun_l4__req_id), req->error_code, cmd->status); + + /* + * If the request was never submitted to the controller, the function + * that sets error is responsible for calling tw_cl_create_event. + */ + if (!(error = req->error_code)) + if ((error = cmd->status)) { + cmd_hdr = (struct tw_cl_command_header *) + (&(req->cmd_pkt->cmd_hdr)); + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + cmd_hdr); + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1206, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Request Sense failed", + "opcode = 0x%x, status = %d", + GET_OPCODE(cmd->res__opcode), cmd->status); + } + + if (error) { + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + return; + } + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "Request Sense command succeeded"); + + aen_code = tw_cli_manage_aen(ctlr, req); + + if (aen_code != TWA_AEN_SYNC_TIME_WITH_HOST) { + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + if (aen_code != TWA_AEN_QUEUE_EMPTY) + if ((error = tw_cli_get_aen(ctlr))) + tw_cl_create_event(ctlr->ctlr_handle, + TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1207, 0x1, + TW_CL_SEVERITY_ERROR_STRING, + "Failed to fetch all AEN's", + "error = %d", error); + } +} + + + +/* + * Function name: tw_cli_manage_aen + * Description: Handles AEN's. + * + * Input: ctlr -- ptr to CL internal ctlr context + * req -- ptr to CL internal request context + * Output: None + * Return value: None + */ +TW_UINT16 +tw_cli_manage_aen(struct tw_cli_ctlr_context *ctlr, + struct tw_cli_req_context *req) +{ + struct tw_cl_command_header *cmd_hdr; + TW_UINT16 aen_code; + TW_TIME local_time; + TW_TIME sync_time; + TW_UINT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + cmd_hdr = (struct tw_cl_command_header *)(req->data); + aen_code = cmd_hdr->status_block.error; + + switch (aen_code) { + case TWA_AEN_SYNC_TIME_WITH_HOST: + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "Received AEN_SYNC_TIME"); + /* + * Free the internal req pkt right here, since + * tw_cli_set_param will need it. + */ + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + + /* + * We will use a callback in tw_cli_set_param only when + * interrupts are enabled and we can expect our callback + * to get called. Setting the get_more_aens + * flag will make the callback continue to try to retrieve + * more AEN's. + */ + if (ctlr->interrupts_enabled) + ctlr->get_more_aens = TW_CL_TRUE; + /* Calculate time (in seconds) since last Sunday 12.00 AM. */ + local_time = tw_osl_get_local_time(); + sync_time = (local_time - (3 * 86400)) % 604800; + if ((error = tw_cli_set_param(ctlr, TWA_PARAM_TIME_TABLE, + TWA_PARAM_TIME_SCHED_TIME, 4, + &sync_time, + (ctlr->interrupts_enabled) + ? tw_cli_param_callback : TW_CL_NULL))) + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1208, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Unable to sync time with ctlr", + "error = %d", error); + + break; + + + case TWA_AEN_QUEUE_EMPTY: + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "AEN queue empty"); + break; + + + default: + /* Queue the event. */ + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), + "Queueing AEN"); + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_EVENT, + cmd_hdr); + break; + } /* switch */ + return(aen_code); +} + + + +/* + * Function name: tw_cli_enable_interrupts + * Description: Enables interrupts on the controller + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_enable_interrupts(struct tw_cli_ctlr_context *ctlr) +{ + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + ctlr->interrupts_enabled = TW_CL_TRUE; + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | + TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT | + TWA_CONTROL_ENABLE_INTERRUPTS); +} + + + +/* + * Function name: twa_setup + * Description: Disables interrupts on the controller + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_disable_interrupts(struct tw_cli_ctlr_context *ctlr) +{ + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_DISABLE_INTERRUPTS); + ctlr->interrupts_enabled = TW_CL_FALSE; +} diff --git a/sys/dev/raid/twa/tw_cl_io.c b/sys/dev/raid/twa/tw_cl_io.c new file mode 100644 index 0000000000..bd2244a5ed --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_io.c @@ -0,0 +1,1430 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_io.c,v 1.6 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * Common Layer I/O functions. + */ + + +#include "tw_osl_share.h" +#include "tw_cl_share.h" +#include "tw_cl_fwif.h" +#include "tw_cl_ioctl.h" +#include "tw_cl.h" +#include "tw_cl_externs.h" +#include "tw_osl_ioctl.h" + +#include +#include +#include + + + +/* + * Function name: tw_cl_start_io + * Description: Interface to OS Layer for accepting SCSI requests. + * + * Input: ctlr_handle -- controller handle + * req_pkt -- OSL built request packet + * req_handle -- request handle + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_start_io(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle) +{ + struct tw_cli_ctlr_context *ctlr; + struct tw_cli_req_context *req; + struct tw_cl_command_9k *cmd; + struct tw_cl_scsi_req_packet *scsi_req; + TW_INT32 error; + + tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); + + ctlr = (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + + if (ctlr->reset_in_progress) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "I/O during reset: returning busy."); + return(TW_OSL_EBUSY); + } + + /* + * If working with a firmware version that does not support multiple + * luns, and this request is directed at a non-zero lun, error it + * back right away. + */ + if ((req_pkt->gen_req_pkt.scsi_req.lun) && + (ctlr->working_srl < TWA_MULTI_LUN_FW_SRL)) { + req_pkt->status |= (TW_CL_ERR_REQ_INVALID_LUN | + TW_CL_ERR_REQ_SCSI_ERROR); + req_pkt->tw_osl_callback(req_handle); + return(TW_CL_ERR_REQ_SUCCESS); + } + + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "Out of request context packets: returning busy"); + return(TW_OSL_EBUSY); + } + + req_handle->cl_req_ctxt = req; + req->req_handle = req_handle; + req->orig_req = req_pkt; + req->tw_cli_callback = tw_cli_complete_io; + + req->flags |= TW_CLI_REQ_FLAGS_EXTERNAL; + req->flags |= TW_CLI_REQ_FLAGS_9K; + + scsi_req = &(req_pkt->gen_req_pkt.scsi_req); + + /* Build the cmd pkt. */ + cmd = &(req->cmd_pkt->command.cmd_pkt_9k); + + req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; + + cmd->res__opcode = BUILD_RES__OPCODE(0, TWA_FW_CMD_EXECUTE_SCSI); + cmd->unit = (TW_UINT8)(scsi_req->unit); + cmd->lun_l4__req_id = TW_CL_SWAP16( + BUILD_LUN_L4__REQ_ID(scsi_req->lun, req->request_id)); + cmd->status = 0; + cmd->sgl_offset = 16; /* offset from end of hdr = max cdb len */ + tw_osl_memcpy(cmd->cdb, scsi_req->cdb, scsi_req->cdb_len); + + if (req_pkt->flags & TW_CL_REQ_CALLBACK_FOR_SGLIST) { + TW_UINT32 num_sgl_entries; + + req_pkt->tw_osl_sgl_callback(req_handle, cmd->sg_list, + &num_sgl_entries); + cmd->lun_h4__sgl_entries = + TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(scsi_req->lun, + num_sgl_entries)); + } else { + cmd->lun_h4__sgl_entries = + TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(scsi_req->lun, + scsi_req->sgl_entries)); + tw_cli_fill_sg_list(ctlr, scsi_req->sg_list, + cmd->sg_list, scsi_req->sgl_entries); + } + + if ((error = tw_cli_submit_cmd(req))) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "Could not start request. request = %p, error = %d", + req, error); + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + return(error); +} + + + +/* + * Function name: tw_cli_submit_cmd + * Description: Submits a cmd to firmware. + * + * Input: req -- ptr to CL internal request context + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_submit_cmd(struct tw_cli_req_context *req) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; + TW_UINT32 status_reg; + TW_INT32 error; + + tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Serialize access to the controller cmd queue. */ + tw_osl_get_lock(ctlr_handle, ctlr->io_lock); + + /* For 9650SE first write low 4 bytes */ + if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || + (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) + tw_osl_write_reg(ctlr_handle, + TWA_COMMAND_QUEUE_OFFSET_LOW, + (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); + + /* Check to see if we can post a command. */ + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); + if ((error = tw_cli_check_ctlr_state(ctlr, status_reg))) + goto out; + + if (status_reg & TWA_STATUS_COMMAND_QUEUE_FULL) { + struct tw_cl_req_packet *req_pkt = + (struct tw_cl_req_packet *)(req->orig_req); + + tw_cli_dbg_printf(7, ctlr_handle, tw_osl_cur_func(), + "Cmd queue full"); + + if ((req->flags & TW_CLI_REQ_FLAGS_INTERNAL) + || ((req_pkt) && + (req_pkt->flags & TW_CL_REQ_RETRY_ON_BUSY)) + ) { + if (req->state != TW_CLI_REQ_STATE_PENDING) { + tw_cli_dbg_printf(2, ctlr_handle, + tw_osl_cur_func(), + "pending internal/ioctl request"); + req->state = TW_CLI_REQ_STATE_PENDING; + tw_cli_req_q_insert_tail(req, TW_CLI_PENDING_Q); + error = 0; + /* Unmask command interrupt. */ + TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, + TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); + } else + error = TW_OSL_EBUSY; + } else { + tw_osl_ctlr_busy(ctlr_handle, req->req_handle); + error = TW_OSL_EBUSY; + } + } else { + tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), + "Submitting command"); + + /* Insert command into busy queue */ + req->state = TW_CLI_REQ_STATE_BUSY; + tw_cli_req_q_insert_tail(req, TW_CLI_BUSY_Q); + + if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || + (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) { + /* Now write the high 4 bytes */ + tw_osl_write_reg(ctlr_handle, + TWA_COMMAND_QUEUE_OFFSET_HIGH, + (TW_UINT32)(((TW_UINT64)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)))>>32), 4); + } else { + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { + /* First write the low 4 bytes, then the high 4. */ + tw_osl_write_reg(ctlr_handle, + TWA_COMMAND_QUEUE_OFFSET_LOW, + (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); + tw_osl_write_reg(ctlr_handle, + TWA_COMMAND_QUEUE_OFFSET_HIGH, + (TW_UINT32)(((TW_UINT64)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)))>>32), 4); + } else + tw_osl_write_reg(ctlr_handle, + TWA_COMMAND_QUEUE_OFFSET, + (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); + } + } +out: + tw_osl_free_lock(ctlr_handle, ctlr->io_lock); + + return(error); +} + + + +/* + * Function name: tw_cl_fw_passthru + * Description: Interface to OS Layer for accepting firmware + * passthru requests. + * Input: ctlr_handle -- controller handle + * req_pkt -- OSL built request packet + * req_handle -- request handle + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_fw_passthru(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle) +{ + struct tw_cli_ctlr_context *ctlr; + struct tw_cli_req_context *req; + union tw_cl_command_7k *cmd_7k; + struct tw_cl_command_9k *cmd_9k; + struct tw_cl_passthru_req_packet *pt_req; + TW_UINT8 opcode; + TW_UINT8 sgl_offset; + TW_VOID *sgl = TW_CL_NULL; + TW_INT32 error; + + tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), "entered"); + + ctlr = (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + + if (ctlr->reset_in_progress) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "Passthru request during reset: returning busy."); + return(TW_OSL_EBUSY); + } + + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "Out of request context packets: returning busy"); + return(TW_OSL_EBUSY); + } + + req_handle->cl_req_ctxt = req; + req->req_handle = req_handle; + req->orig_req = req_pkt; + req->tw_cli_callback = tw_cli_complete_io; + + req->flags |= (TW_CLI_REQ_FLAGS_EXTERNAL | TW_CLI_REQ_FLAGS_PASSTHRU); + + pt_req = &(req_pkt->gen_req_pkt.pt_req); + + tw_osl_memcpy(req->cmd_pkt, pt_req->cmd_pkt, + pt_req->cmd_pkt_length); + /* Build the cmd pkt. */ + if ((opcode = GET_OPCODE(((TW_UINT8 *) + (pt_req->cmd_pkt))[sizeof(struct tw_cl_command_header)])) + == TWA_FW_CMD_EXECUTE_SCSI) { + TW_UINT16 lun_l4, lun_h4; + + tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), + "passthru: 9k cmd pkt"); + req->flags |= TW_CLI_REQ_FLAGS_9K; + cmd_9k = &(req->cmd_pkt->command.cmd_pkt_9k); + lun_l4 = GET_LUN_L4(cmd_9k->lun_l4__req_id); + lun_h4 = GET_LUN_H4(cmd_9k->lun_h4__sgl_entries); + cmd_9k->lun_l4__req_id = TW_CL_SWAP16( + BUILD_LUN_L4__REQ_ID(lun_l4, req->request_id)); + if (pt_req->sgl_entries) { + cmd_9k->lun_h4__sgl_entries = + TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(lun_h4, + pt_req->sgl_entries)); + sgl = (TW_VOID *)(cmd_9k->sg_list); + } + } else { + tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), + "passthru: 7k cmd pkt"); + cmd_7k = &(req->cmd_pkt->command.cmd_pkt_7k); + cmd_7k->generic.request_id = + (TW_UINT8)(TW_CL_SWAP16(req->request_id)); + if ((sgl_offset = + GET_SGL_OFF(cmd_7k->generic.sgl_off__opcode))) { + if (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA) + sgl = (((TW_UINT32 *)cmd_7k) + cmd_7k->generic.size); + else + sgl = (((TW_UINT32 *)cmd_7k) + sgl_offset); + cmd_7k->generic.size += pt_req->sgl_entries * + ((ctlr->flags & TW_CL_64BIT_ADDRESSES) ? 3 : 2); + } + } + + if (sgl) + tw_cli_fill_sg_list(ctlr, pt_req->sg_list, + sgl, pt_req->sgl_entries); + + if ((error = tw_cli_submit_cmd(req))) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1100, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Failed to start passthru command", + "error = %d", error); + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + return(error); +} + + + +/* + * Function name: tw_cl_ioctl + * Description: Handler of CL supported ioctl cmds. + * + * Input: ctlr -- ptr to per ctlr structure + * cmd -- ioctl cmd + * buf -- ptr to buffer in kernel memory, which is + * a copy of the input buffer in user-space + * Output: buf -- ptr to buffer in kernel memory, which will + * need to be copied to the output buffer in + * user-space + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_ioctl(struct tw_cl_ctlr_handle *ctlr_handle, u_long cmd, TW_VOID *buf) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + struct tw_cl_ioctl_packet *user_buf = + (struct tw_cl_ioctl_packet *)buf; + struct tw_cl_event_packet event_buf; + TW_INT32 event_index; + TW_INT32 start_index; + TW_INT32 error = TW_OSL_ESUCCESS; + + tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Serialize access to the AEN queue and the ioctl lock. */ + tw_osl_get_lock(ctlr_handle, ctlr->gen_lock); + + switch (cmd) { + case TW_CL_IOCTL_GET_FIRST_EVENT: + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get First Event"); + + if (ctlr->aen_q_wrapped) { + if (ctlr->aen_q_overflow) { + /* + * The aen queue has wrapped, even before some + * events have been retrieved. Let the caller + * know that he missed out on some AEN's. + */ + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_OVERFLOW; + ctlr->aen_q_overflow = TW_CL_FALSE; + } else + user_buf->driver_pkt.status = 0; + event_index = ctlr->aen_head; + } else { + if (ctlr->aen_head == ctlr->aen_tail) { + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + user_buf->driver_pkt.status = 0; + event_index = ctlr->aen_tail; /* = 0 */ + } + tw_osl_memcpy(user_buf->data_buf, + &(ctlr->aen_queue[event_index]), + sizeof(struct tw_cl_event_packet)); + + ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; + + break; + + + case TW_CL_IOCTL_GET_LAST_EVENT: + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get Last Event"); + + if (ctlr->aen_q_wrapped) { + if (ctlr->aen_q_overflow) { + /* + * The aen queue has wrapped, even before some + * events have been retrieved. Let the caller + * know that he missed out on some AEN's. + */ + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_OVERFLOW; + ctlr->aen_q_overflow = TW_CL_FALSE; + } else + user_buf->driver_pkt.status = 0; + } else { + if (ctlr->aen_head == ctlr->aen_tail) { + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + user_buf->driver_pkt.status = 0; + } + event_index = (ctlr->aen_head - 1 + ctlr->max_aens_supported) % + ctlr->max_aens_supported; + + tw_osl_memcpy(user_buf->data_buf, + &(ctlr->aen_queue[event_index]), + sizeof(struct tw_cl_event_packet)); + + ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; + + break; + + + case TW_CL_IOCTL_GET_NEXT_EVENT: + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get Next Event"); + + user_buf->driver_pkt.status = 0; + if (ctlr->aen_q_wrapped) { + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get Next Event: wrapped"); + if (ctlr->aen_q_overflow) { + /* + * The aen queue has wrapped, even before some + * events have been retrieved. Let the caller + * know that he missed out on some AEN's. + */ + tw_cli_dbg_printf(2, ctlr_handle, + tw_osl_cur_func(), + "Get Next Event: overflow"); + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_OVERFLOW; + ctlr->aen_q_overflow = TW_CL_FALSE; + } + start_index = ctlr->aen_head; + } else { + if (ctlr->aen_head == ctlr->aen_tail) { + tw_cli_dbg_printf(3, ctlr_handle, + tw_osl_cur_func(), + "Get Next Event: empty queue"); + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + start_index = ctlr->aen_tail; /* = 0 */ + } + tw_osl_memcpy(&event_buf, user_buf->data_buf, + sizeof(struct tw_cl_event_packet)); + + event_index = (start_index + event_buf.sequence_id - + ctlr->aen_queue[start_index].sequence_id + 1) % + ctlr->max_aens_supported; + + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get Next Event: si = %x, ei = %x, ebsi = %x, " + "sisi = %x, eisi = %x", + start_index, event_index, event_buf.sequence_id, + ctlr->aen_queue[start_index].sequence_id, + ctlr->aen_queue[event_index].sequence_id); + + if (! (ctlr->aen_queue[event_index].sequence_id > + event_buf.sequence_id)) { + /* + * We don't have any event matching the criterion. So, + * we have to report TW_CL_ERROR_NO_EVENTS. If we also + * encountered an overflow condition above, we cannot + * report both conditions during this call. We choose + * to report NO_EVENTS this time, and an overflow the + * next time we are called. + */ + if (user_buf->driver_pkt.status == + TW_CL_ERROR_AEN_OVERFLOW) { + /* + * Make a note so we report the overflow + * next time. + */ + ctlr->aen_q_overflow = TW_CL_TRUE; + } + user_buf->driver_pkt.status = TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + /* Copy the event -- even if there has been an overflow. */ + tw_osl_memcpy(user_buf->data_buf, + &(ctlr->aen_queue[event_index]), + sizeof(struct tw_cl_event_packet)); + + ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; + + break; + + + case TW_CL_IOCTL_GET_PREVIOUS_EVENT: + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get Previous Event"); + + user_buf->driver_pkt.status = 0; + if (ctlr->aen_q_wrapped) { + if (ctlr->aen_q_overflow) { + /* + * The aen queue has wrapped, even before some + * events have been retrieved. Let the caller + * know that he missed out on some AEN's. + */ + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_OVERFLOW; + ctlr->aen_q_overflow = TW_CL_FALSE; + } + start_index = ctlr->aen_head; + } else { + if (ctlr->aen_head == ctlr->aen_tail) { + user_buf->driver_pkt.status = + TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + start_index = ctlr->aen_tail; /* = 0 */ + } + tw_osl_memcpy(&event_buf, user_buf->data_buf, + sizeof(struct tw_cl_event_packet)); + + event_index = (start_index + event_buf.sequence_id - + ctlr->aen_queue[start_index].sequence_id - 1) % + ctlr->max_aens_supported; + + if (! (ctlr->aen_queue[event_index].sequence_id < + event_buf.sequence_id)) { + /* + * We don't have any event matching the criterion. So, + * we have to report TW_CL_ERROR_NO_EVENTS. If we also + * encountered an overflow condition above, we cannot + * report both conditions during this call. We choose + * to report NO_EVENTS this time, and an overflow the + * next time we are called. + */ + if (user_buf->driver_pkt.status == + TW_CL_ERROR_AEN_OVERFLOW) { + /* + * Make a note so we report the overflow + * next time. + */ + ctlr->aen_q_overflow = TW_CL_TRUE; + } + user_buf->driver_pkt.status = TW_CL_ERROR_AEN_NO_EVENTS; + break; + } + /* Copy the event -- even if there has been an overflow. */ + tw_osl_memcpy(user_buf->data_buf, + &(ctlr->aen_queue[event_index]), + sizeof(struct tw_cl_event_packet)); + + ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; + + break; + + + case TW_CL_IOCTL_GET_LOCK: + { + struct tw_cl_lock_packet lock_pkt; + TW_TIME cur_time; + + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get ioctl lock"); + + cur_time = tw_osl_get_local_time(); + tw_osl_memcpy(&lock_pkt, user_buf->data_buf, + sizeof(struct tw_cl_lock_packet)); + + if ((ctlr->ioctl_lock.lock == TW_CLI_LOCK_FREE) || + (lock_pkt.force_flag) || + (cur_time >= ctlr->ioctl_lock.timeout)) { + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "GET_LOCK: Getting lock!"); + ctlr->ioctl_lock.lock = TW_CLI_LOCK_HELD; + ctlr->ioctl_lock.timeout = + cur_time + (lock_pkt.timeout_msec / 1000); + lock_pkt.time_remaining_msec = lock_pkt.timeout_msec; + user_buf->driver_pkt.status = 0; + } else { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "GET_LOCK: Lock already held!"); + lock_pkt.time_remaining_msec = (TW_UINT32)( + (ctlr->ioctl_lock.timeout - cur_time) * 1000); + user_buf->driver_pkt.status = + TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD; + } + tw_osl_memcpy(user_buf->data_buf, &lock_pkt, + sizeof(struct tw_cl_lock_packet)); + break; + } + + + case TW_CL_IOCTL_RELEASE_LOCK: + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Release ioctl lock"); + + if (ctlr->ioctl_lock.lock == TW_CLI_LOCK_FREE) { + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "twa_ioctl: RELEASE_LOCK: Lock not held!"); + user_buf->driver_pkt.status = + TW_CL_ERROR_IOCTL_LOCK_NOT_HELD; + } else { + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "RELEASE_LOCK: Releasing lock!"); + ctlr->ioctl_lock.lock = TW_CLI_LOCK_FREE; + user_buf->driver_pkt.status = 0; + } + break; + + + case TW_CL_IOCTL_GET_COMPATIBILITY_INFO: + { + struct tw_cl_compatibility_packet comp_pkt; + + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Get compatibility info"); + + tw_osl_memcpy(comp_pkt.driver_version, + TW_OSL_DRIVER_VERSION_STRING, + sizeof(TW_OSL_DRIVER_VERSION_STRING)); + comp_pkt.working_srl = ctlr->working_srl; + comp_pkt.working_branch = ctlr->working_branch; + comp_pkt.working_build = ctlr->working_build; + comp_pkt.driver_srl_high = TWA_CURRENT_FW_SRL; + comp_pkt.driver_branch_high = + TWA_CURRENT_FW_BRANCH(ctlr->arch_id); + comp_pkt.driver_build_high = + TWA_CURRENT_FW_BUILD(ctlr->arch_id); + comp_pkt.driver_srl_low = TWA_BASE_FW_SRL; + comp_pkt.driver_branch_low = TWA_BASE_FW_BRANCH; + comp_pkt.driver_build_low = TWA_BASE_FW_BUILD; + comp_pkt.fw_on_ctlr_srl = ctlr->fw_on_ctlr_srl; + comp_pkt.fw_on_ctlr_branch = ctlr->fw_on_ctlr_branch; + comp_pkt.fw_on_ctlr_build = ctlr->fw_on_ctlr_build; + user_buf->driver_pkt.status = 0; + + /* Copy compatibility information to user space. */ + tw_osl_memcpy(user_buf->data_buf, &comp_pkt, + (sizeof(struct tw_cl_compatibility_packet) < + user_buf->driver_pkt.buffer_length) ? + sizeof(struct tw_cl_compatibility_packet) : + user_buf->driver_pkt.buffer_length); + break; + } + + default: + /* Unknown opcode. */ + tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), + "Unknown ioctl cmd 0x%x", cmd); + error = TW_OSL_ENOTTY; + } + + tw_osl_free_lock(ctlr_handle, ctlr->gen_lock); + return(error); +} + + + +/* + * Function name: tw_cli_get_param + * Description: Get a firmware parameter. + * + * Input: ctlr -- ptr to per ctlr structure + * table_id -- parameter table # + * param_id -- index of the parameter in the table + * param_size -- size of the parameter in bytes + * callback -- ptr to function, if any, to be called + * back on completion; TW_CL_NULL if no callback. + * Output: param_data -- param value + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_get_param(struct tw_cli_ctlr_context *ctlr, TW_INT32 table_id, + TW_INT32 param_id, TW_VOID *param_data, TW_INT32 param_size, + TW_VOID (* callback)(struct tw_cli_req_context *req)) +{ + struct tw_cli_req_context *req; + union tw_cl_command_7k *cmd; + struct tw_cl_param_9k *param = TW_CL_NULL; + TW_INT32 error = TW_OSL_EBUSY; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Get a request packet. */ + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) + goto out; + + /* Make sure this is the only CL internal request at this time. */ + if (ctlr->internal_req_busy) { + error = TW_OSL_EBUSY; + goto out; + } + ctlr->internal_req_busy = TW_CL_TRUE; + req->data = ctlr->internal_req_data; + req->data_phys = ctlr->internal_req_data_phys; + req->length = TW_CLI_SECTOR_SIZE; + req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; + + /* Initialize memory to read data into. */ + param = (struct tw_cl_param_9k *)(req->data); + tw_osl_memzero(param, sizeof(struct tw_cl_param_9k) - 1 + param_size); + + /* Build the cmd pkt. */ + cmd = &(req->cmd_pkt->command.cmd_pkt_7k); + + req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; + + cmd->param.sgl_off__opcode = + BUILD_SGL_OFF__OPCODE(2, TWA_FW_CMD_GET_PARAM); + cmd->param.request_id = + (TW_UINT8)(TW_CL_SWAP16(req->request_id)); + cmd->param.host_id__unit = BUILD_HOST_ID__UNIT(0, 0); + cmd->param.param_count = TW_CL_SWAP16(1); + + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { + ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].address = + TW_CL_SWAP64(req->data_phys); + ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].length = + TW_CL_SWAP32(req->length); + cmd->param.size = 2 + 3; + } else { + ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].address = + TW_CL_SWAP32(req->data_phys); + ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].length = + TW_CL_SWAP32(req->length); + cmd->param.size = 2 + 2; + } + + /* Specify which parameter we need. */ + param->table_id = TW_CL_SWAP16(table_id | TWA_9K_PARAM_DESCRIPTOR); + param->parameter_id = (TW_UINT8)(param_id); + param->parameter_size_bytes = TW_CL_SWAP16(param_size); + + /* Submit the command. */ + if (callback == TW_CL_NULL) { + /* There's no call back; wait till the command completes. */ + error = tw_cli_submit_and_poll_request(req, + TW_CLI_REQUEST_TIMEOUT_PERIOD); + if (error == TW_OSL_ETIMEDOUT) + /* Clean-up done by tw_cli_submit_and_poll_request. */ + return(error); + if (error) + goto out; + if ((error = cmd->param.status)) { + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + &(req->cmd_pkt->cmd_hdr)); + goto out; + } + tw_osl_memcpy(param_data, param->data, param_size); + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } else { + /* There's a call back. Simply submit the command. */ + req->tw_cli_callback = callback; + if ((error = tw_cli_submit_cmd(req))) + goto out; + } + return(0); + +out: + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1101, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "get_param failed", + "error = %d", error); + if (param) + ctlr->internal_req_busy = TW_CL_FALSE; + if (req) + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + return(1); +} + + + +/* + * Function name: tw_cli_set_param + * Description: Set a firmware parameter. + * + * Input: ctlr -- ptr to per ctlr structure + * table_id -- parameter table # + * param_id -- index of the parameter in the table + * param_size -- size of the parameter in bytes + * callback -- ptr to function, if any, to be called + * back on completion; TW_CL_NULL if no callback. + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_set_param(struct tw_cli_ctlr_context *ctlr, TW_INT32 table_id, + TW_INT32 param_id, TW_INT32 param_size, TW_VOID *data, + TW_VOID (* callback)(struct tw_cli_req_context *req)) +{ + struct tw_cli_req_context *req; + union tw_cl_command_7k *cmd; + struct tw_cl_param_9k *param = TW_CL_NULL; + TW_INT32 error = TW_OSL_EBUSY; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Get a request packet. */ + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) + goto out; + + /* Make sure this is the only CL internal request at this time. */ + if (ctlr->internal_req_busy) { + error = TW_OSL_EBUSY; + goto out; + } + ctlr->internal_req_busy = TW_CL_TRUE; + req->data = ctlr->internal_req_data; + req->data_phys = ctlr->internal_req_data_phys; + req->length = TW_CLI_SECTOR_SIZE; + req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; + + /* Initialize memory to send data using. */ + param = (struct tw_cl_param_9k *)(req->data); + tw_osl_memzero(param, sizeof(struct tw_cl_param_9k) - 1 + param_size); + + /* Build the cmd pkt. */ + cmd = &(req->cmd_pkt->command.cmd_pkt_7k); + + req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; + + cmd->param.sgl_off__opcode = + BUILD_SGL_OFF__OPCODE(2, TWA_FW_CMD_SET_PARAM); + cmd->param.request_id = (TW_UINT8)(TW_CL_SWAP16(req->request_id)); + cmd->param.host_id__unit = BUILD_HOST_ID__UNIT(0, 0); + cmd->param.param_count = TW_CL_SWAP16(1); + + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { + ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].address = + TW_CL_SWAP64(req->data_phys); + ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].length = + TW_CL_SWAP32(req->length); + cmd->param.size = 2 + 3; + } else { + ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].address = + TW_CL_SWAP32(req->data_phys); + ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].length = + TW_CL_SWAP32(req->length); + cmd->param.size = 2 + 2; + } + + /* Specify which parameter we want to set. */ + param->table_id = TW_CL_SWAP16(table_id | TWA_9K_PARAM_DESCRIPTOR); + param->parameter_id = (TW_UINT8)(param_id); + param->parameter_size_bytes = TW_CL_SWAP16(param_size); + tw_osl_memcpy(param->data, data, param_size); + + /* Submit the command. */ + if (callback == TW_CL_NULL) { + /* There's no call back; wait till the command completes. */ + error = tw_cli_submit_and_poll_request(req, + TW_CLI_REQUEST_TIMEOUT_PERIOD); + if (error == TW_OSL_ETIMEDOUT) + /* Clean-up done by tw_cli_submit_and_poll_request. */ + return(error); + if (error) + goto out; + if ((error = cmd->param.status)) { + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + &(req->cmd_pkt->cmd_hdr)); + goto out; + } + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } else { + /* There's a call back. Simply submit the command. */ + req->tw_cli_callback = callback; + if ((error = tw_cli_submit_cmd(req))) + goto out; + } + return(error); + +out: + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1102, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "set_param failed", + "error = %d", error); + if (param) + ctlr->internal_req_busy = TW_CL_FALSE; + if (req) + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + return(error); +} + + + +/* + * Function name: tw_cli_submit_and_poll_request + * Description: Sends down a firmware cmd, and waits for the completion + * in a tight loop. + * + * Input: req -- ptr to request pkt + * timeout -- max # of seconds to wait before giving up + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_submit_and_poll_request(struct tw_cli_req_context *req, + TW_UINT32 timeout) +{ + struct tw_cli_ctlr_context *ctlr = req->ctlr; + TW_TIME end_time; + TW_INT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* + * If the cmd queue is full, tw_cli_submit_cmd will queue this + * request in the pending queue, since this is an internal request. + */ + if ((error = tw_cli_submit_cmd(req))) { + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1103, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Failed to start internal request", + "error = %d", error); + return(error); + } + + /* + * Poll for the response until the command gets completed, or there's + * a timeout. + */ + end_time = tw_osl_get_local_time() + timeout; + do { + if ((error = req->error_code)) + /* + * This will take care of completion due to a reset, + * or a failure in tw_cli_submit_pending_queue. + * The caller should do the clean-up. + */ + return(error); + + /* See if the command completed. */ + tw_cli_process_resp_intr(ctlr); + + if ((req->state != TW_CLI_REQ_STATE_BUSY) && + (req->state != TW_CLI_REQ_STATE_PENDING)) + return(req->state != TW_CLI_REQ_STATE_COMPLETE); + } while (tw_osl_get_local_time() <= end_time); + + /* Time out! */ + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1104, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Internal request timed out", + "request = %p", req); + + /* + * We will reset the controller only if the request has already been + * submitted, so as to not lose the request packet. If a busy request + * timed out, the reset will take care of freeing resources. If a + * pending request timed out, we will free resources for that request, + * right here, thereby avoiding a reset. So, the caller is expected + * to NOT cleanup when TW_OSL_ETIMEDOUT is returned. + */ + + /* + * We have to make sure that this timed out request, if it were in the + * pending queue, doesn't get submitted while we are here, from + * tw_cli_submit_pending_queue. There could be a race in that case. + * Need to revisit. + */ + if (req->state != TW_CLI_REQ_STATE_PENDING) + tw_cl_reset_ctlr(ctlr->ctlr_handle); + else { + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), + "Removing request from pending queue"); + /* + * Request was never submitted. Clean up. Note that we did + * not do a reset. So, we have to remove the request ourselves + * from the pending queue (as against tw_cli_drain_pendinq_queue + * taking care of it). + */ + tw_cli_req_q_remove_item(req, TW_CLI_PENDING_Q); + if ((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) == TW_CL_NULL) + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_MASK_COMMAND_INTERRUPT); + if (req->data) + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + + return(TW_OSL_ETIMEDOUT); +} + + + +/* + * Function name: tw_cl_reset_ctlr + * Description: Soft resets and then initializes the controller; + * drains any incomplete requests. + * + * Input: ctlr -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cl_reset_ctlr(struct tw_cl_ctlr_handle *ctlr_handle) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + struct twa_softc *sc = ctlr_handle->osl_ctlr_ctxt; + TW_INT32 reset_attempt = 1; + TW_INT32 error; + + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), "entered"); + + ctlr->reset_in_progress = TW_CL_TRUE; + xpt_freeze_simq(sc->sim, 1); + + tw_cli_disable_interrupts(ctlr); + + /* + * Error back all requests in the complete, busy, and pending queues. + * If any request is already on its way to getting submitted, it's in + * none of these queues and so, will not be completed. That request + * will continue its course and get submitted to the controller after + * the reset is done (and io_lock is released). + */ + tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), + "Draining all queues following reset"); + tw_cli_drain_complete_queue(ctlr); + tw_cli_drain_busy_queue(ctlr); + tw_cli_drain_pending_queue(ctlr); + ctlr->internal_req_busy = TW_CL_FALSE; + ctlr->get_more_aens = TW_CL_FALSE; + + /* Soft reset the controller. */ +try_reset: + if ((error = tw_cli_soft_reset(ctlr))) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1105, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller reset failed", + "error = %d; attempt %d", error, reset_attempt++); + if (reset_attempt <= TW_CLI_MAX_RESET_ATTEMPTS) + goto try_reset; + else + goto out; + } + + /* Re-establish logical connection with the controller. */ + if ((error = tw_cli_init_connection(ctlr, + (TW_UINT16)(ctlr->max_simult_reqs), + 0, 0, 0, 0, 0, TW_CL_NULL, TW_CL_NULL, TW_CL_NULL, + TW_CL_NULL, TW_CL_NULL))) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1106, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Can't initialize connection after reset", + "error = %d", error); + goto out; + } + + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1107, 0x3, TW_CL_SEVERITY_INFO_STRING, + "Controller reset done!", + " "); + +out: + ctlr->reset_in_progress = TW_CL_FALSE; + xpt_release_simq(sc->sim, 1); + + /* + * Enable interrupts, and also clear attention and response interrupts. + */ + tw_cli_enable_interrupts(ctlr); + + /* Request for a bus re-scan. */ + if (!error) + tw_osl_scan_bus(ctlr_handle); + return(error); +} + + + +/* + * Function name: tw_cli_soft_reset + * Description: Does the actual soft reset. + * + * Input: ctlr -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_soft_reset(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; + TW_UINT32 status_reg; + int found; + int loop_count; + TW_UINT32 error; + + tw_cli_dbg_printf(1, ctlr_handle, tw_osl_cur_func(), "entered"); + + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1108, 0x3, TW_CL_SEVERITY_INFO_STRING, + "Resetting controller...", + " "); + + /* Don't let any new commands get submitted to the controller. */ + tw_osl_get_lock(ctlr_handle, ctlr->io_lock); + + TW_CLI_SOFT_RESET(ctlr_handle); + + if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_X) || + (ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || + (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) { + /* + * There's a hardware bug in the G133 ASIC, which can lead to + * PCI parity errors and hangs, if the host accesses any + * registers when the firmware is resetting the hardware, as + * part of a hard/soft reset. The window of time when the + * problem can occur is about 10 ms. Here, we will handshake + * with the firmware to find out when the firmware is pulling + * down the hardware reset pin, and wait for about 500 ms to + * make sure we don't access any hardware registers (for + * polling) during that window. + */ + ctlr->reset_phase1_in_progress = TW_CL_TRUE; + loop_count = 0; + do { + found = (tw_cli_find_response(ctlr, TWA_RESET_PHASE1_NOTIFICATION_RESPONSE) == TW_OSL_ESUCCESS); + tw_osl_delay(10); + loop_count++; + error = 0x7888; + } while (!found && (loop_count < 6000000)); /* Loop for no more than 60 seconds */ + + if (!found) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1109, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Missed firmware handshake after soft-reset", + "error = %d", error); + tw_osl_free_lock(ctlr_handle, ctlr->io_lock); + return(error); + } + + tw_osl_delay(TWA_RESET_PHASE1_WAIT_TIME_MS * 1000); + ctlr->reset_phase1_in_progress = TW_CL_FALSE; + } + + if ((error = tw_cli_poll_status(ctlr, + TWA_STATUS_MICROCONTROLLER_READY | + TWA_STATUS_ATTENTION_INTERRUPT, + TW_CLI_RESET_TIMEOUT_PERIOD))) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1109, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Micro-ctlr not ready/No attn intr after reset", + "error = %d", error); + tw_osl_free_lock(ctlr_handle, ctlr->io_lock); + return(error); + } + + TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, + TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); + + if ((error = tw_cli_drain_response_queue(ctlr))) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x110A, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Can't drain response queue after reset", + "error = %d", error); + tw_osl_free_lock(ctlr_handle, ctlr->io_lock); + return(error); + } + + tw_osl_free_lock(ctlr_handle, ctlr->io_lock); + + if ((error = tw_cli_drain_aen_queue(ctlr))) { + tw_cl_create_event(ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x110B, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Can't drain AEN queue after reset", + "error = %d", error); + return(error); + } + + if ((error = tw_cli_find_aen(ctlr, TWA_AEN_SOFT_RESET))) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x110C, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Reset not reported by controller", + "error = %d", error); + return(error); + } + + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); + + if ((error = TW_CLI_STATUS_ERRORS(status_reg)) || + (error = tw_cli_check_ctlr_state(ctlr, status_reg))) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x110D, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller errors detected after reset", + "error = %d", error); + return(error); + } + + return(TW_OSL_ESUCCESS); +} + + + +/* + * Function name: tw_cli_send_scsi_cmd + * Description: Sends down a scsi cmd to fw. + * + * Input: req -- ptr to request pkt + * cmd -- opcode of scsi cmd to send + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_send_scsi_cmd(struct tw_cli_req_context *req, TW_INT32 cmd) +{ + struct tw_cl_command_packet *cmdpkt; + struct tw_cl_command_9k *cmd9k; + struct tw_cli_ctlr_context *ctlr; + TW_INT32 error; + + ctlr = req->ctlr; + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Make sure this is the only CL internal request at this time. */ + if (ctlr->internal_req_busy) + return(TW_OSL_EBUSY); + ctlr->internal_req_busy = TW_CL_TRUE; + req->data = ctlr->internal_req_data; + req->data_phys = ctlr->internal_req_data_phys; + tw_osl_memzero(req->data, TW_CLI_SECTOR_SIZE); + req->length = TW_CLI_SECTOR_SIZE; + + /* Build the cmd pkt. */ + cmdpkt = req->cmd_pkt; + + cmdpkt->cmd_hdr.header_desc.size_header = 128; + + cmd9k = &(cmdpkt->command.cmd_pkt_9k); + + cmd9k->res__opcode = + BUILD_RES__OPCODE(0, TWA_FW_CMD_EXECUTE_SCSI); + cmd9k->unit = 0; + cmd9k->lun_l4__req_id = TW_CL_SWAP16(req->request_id); + cmd9k->status = 0; + cmd9k->sgl_offset = 16; /* offset from end of hdr = max cdb len */ + cmd9k->lun_h4__sgl_entries = TW_CL_SWAP16(1); + + if (req->ctlr->flags & TW_CL_64BIT_ADDRESSES) { + ((struct tw_cl_sg_desc64 *)(cmd9k->sg_list))[0].address = + TW_CL_SWAP64(req->data_phys); + ((struct tw_cl_sg_desc64 *)(cmd9k->sg_list))[0].length = + TW_CL_SWAP32(req->length); + } else { + ((struct tw_cl_sg_desc32 *)(cmd9k->sg_list))[0].address = + TW_CL_SWAP32(req->data_phys); + ((struct tw_cl_sg_desc32 *)(cmd9k->sg_list))[0].length = + TW_CL_SWAP32(req->length); + } + + cmd9k->cdb[0] = (TW_UINT8)cmd; + cmd9k->cdb[4] = 128; + + if ((error = tw_cli_submit_cmd(req))) + if (error != TW_OSL_EBUSY) { + tw_cli_dbg_printf(1, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Failed to start SCSI command", + "request = %p, error = %d", req, error); + return(TW_OSL_EIO); + } + return(TW_OSL_ESUCCESS); +} + + + +/* + * Function name: tw_cli_get_aen + * Description: Sends down a Request Sense cmd to fw to fetch an AEN. + * + * Input: ctlr -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_get_aen(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + TW_INT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) + return(TW_OSL_EBUSY); + + req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; + req->flags |= TW_CLI_REQ_FLAGS_9K; + req->tw_cli_callback = tw_cli_aen_callback; + if ((error = tw_cli_send_scsi_cmd(req, 0x03 /* REQUEST_SENSE */))) { + tw_cli_dbg_printf(1, ctlr->ctlr_handle, tw_osl_cur_func(), + "Could not send SCSI command", + "request = %p, error = %d", req, error); + if (req->data) + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + return(error); +} + + + +/* + * Function name: tw_cli_fill_sg_list + * Description: Fills in the scatter/gather list. + * + * Input: ctlr -- ptr to per ctlr structure + * sgl_src -- ptr to fill the sg list from + * sgl_dest-- ptr to sg list + * nsegments--# of segments + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_fill_sg_list(struct tw_cli_ctlr_context *ctlr, TW_VOID *sgl_src, + TW_VOID *sgl_dest, TW_INT32 num_sgl_entries) +{ + TW_INT32 i; + + tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { + struct tw_cl_sg_desc64 *sgl_s = + (struct tw_cl_sg_desc64 *)sgl_src; + struct tw_cl_sg_desc64 *sgl_d = + (struct tw_cl_sg_desc64 *)sgl_dest; + + tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), + "64 bit addresses"); + for (i = 0; i < num_sgl_entries; i++) { + sgl_d[i].address = TW_CL_SWAP64(sgl_s->address); + sgl_d[i].length = TW_CL_SWAP32(sgl_s->length); + sgl_s++; + if (ctlr->flags & TW_CL_64BIT_SG_LENGTH) + sgl_s = (struct tw_cl_sg_desc64 *) + (((TW_INT8 *)(sgl_s)) + 4); + } + } else { + struct tw_cl_sg_desc32 *sgl_s = + (struct tw_cl_sg_desc32 *)sgl_src; + struct tw_cl_sg_desc32 *sgl_d = + (struct tw_cl_sg_desc32 *)sgl_dest; + + tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), + "32 bit addresses"); + for (i = 0; i < num_sgl_entries; i++) { + sgl_d[i].address = TW_CL_SWAP32(sgl_s[i].address); + sgl_d[i].length = TW_CL_SWAP32(sgl_s[i].length); + } + } +} diff --git a/sys/dev/raid/twa/tw_cl_ioctl.h b/sys/dev/raid/twa/tw_cl_ioctl.h new file mode 100644 index 0000000000..4b2ee79092 --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_ioctl.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_ioctl.h,v 1.3 2007/05/09 04:16:32 scottl Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_CL_IOCTL_H + +#define TW_CL_IOCTL_H + + +/* + * Macros and structures for Common Layer handled ioctls. + */ + + +#define TW_CL_AEN_NOT_RETRIEVED 0x1 +#define TW_CL_AEN_RETRIEVED 0x2 + +#define TW_CL_ERROR_AEN_NO_EVENTS 0x1003 /* No more events */ +#define TW_CL_ERROR_AEN_OVERFLOW 0x1004 /* AEN overflow occurred */ + +#define TW_CL_ERROR_IOCTL_LOCK_NOT_HELD 0x1001 /* Not locked */ +#define TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD 0x1002 /* Already locked */ + + +#pragma pack(1) + +/* Structure used to handle GET/RELEASE LOCK ioctls. */ +struct tw_cl_lock_packet { + TW_UINT32 timeout_msec; + TW_UINT32 time_remaining_msec; + TW_UINT32 force_flag; +}; + + +/* Structure used to handle GET COMPATIBILITY INFO ioctl. */ +struct tw_cl_compatibility_packet { + TW_UINT8 driver_version[32];/* driver version */ + TW_UINT16 working_srl; /* driver & firmware negotiated srl */ + TW_UINT16 working_branch; /* branch # of the firmware that the + driver is compatible with */ + TW_UINT16 working_build; /* build # of the firmware that the + driver is compatible with */ + TW_UINT16 driver_srl_high;/* highest driver supported srl */ + TW_UINT16 driver_branch_high;/* highest driver supported branch */ + TW_UINT16 driver_build_high;/* highest driver supported build */ + TW_UINT16 driver_srl_low;/* lowest driver supported srl */ + TW_UINT16 driver_branch_low;/* lowest driver supported branch */ + TW_UINT16 driver_build_low;/* lowest driver supported build */ + TW_UINT16 fw_on_ctlr_srl; /* srl of running firmware */ + TW_UINT16 fw_on_ctlr_branch;/* branch # of running firmware */ + TW_UINT16 fw_on_ctlr_build;/* build # of running firmware */ +}; + + +/* Driver understandable part of the ioctl packet built by the API. */ +struct tw_cl_driver_packet { + TW_UINT32 control_code; + TW_UINT32 status; + TW_UINT32 unique_id; + TW_UINT32 sequence_id; + TW_UINT32 os_status; + TW_UINT32 buffer_length; +}; + + +/* ioctl packet built by the API. */ +struct tw_cl_ioctl_packet { + struct tw_cl_driver_packet driver_pkt; + TW_INT8 padding[488]; + struct tw_cl_command_packet cmd_pkt; + TW_INT8 data_buf[1]; +}; + +#pragma pack() + + + +#endif /* TW_CL_IOCTL_H */ diff --git a/sys/dev/raid/twa/tw_cl_misc.c b/sys/dev/raid/twa/tw_cl_misc.c new file mode 100644 index 0000000000..7993430a53 --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_misc.c @@ -0,0 +1,1038 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_misc.c,v 1.6 2010/06/17 19:48:03 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * Common Layer miscellaneous functions. + */ + + +#include "tw_osl_share.h" +#include "tw_cl_share.h" +#include "tw_cl_fwif.h" +#include "tw_cl_ioctl.h" +#include "tw_cl.h" +#include "tw_cl_externs.h" +#include "tw_osl_ioctl.h" + + + +/* AEN severity table. */ +TW_INT8 *tw_cli_severity_string_table[] = { + "None", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_SEVERITY_WARNING_STRING, + TW_CL_SEVERITY_INFO_STRING, + TW_CL_SEVERITY_DEBUG_STRING, + "" +}; + + + +/* + * Function name: tw_cli_drain_complete_queue + * Description: This function gets called during a controller reset. + * It errors back to the OS Layer, all those requests that + * are in the complete queue, at the time of the reset. + * Any CL internal requests will be simply freed. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_drain_complete_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + struct tw_cl_req_packet *req_pkt; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Walk the busy queue. */ + while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_COMPLETE_Q))) { + if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { + /* + * It's an internal request. Set the appropriate + * error and call the CL internal callback if there's + * one. If the request originator is polling for + * completion, he should be checking req->error to + * determine that the request did not go through. + * The request originators are responsible for the + * clean-up. + */ + req->error_code = TW_CL_ERR_REQ_BUS_RESET; + if (req->tw_cli_callback) + req->tw_cli_callback(req); + } else { + if ((req_pkt = req->orig_req)) { + /* It's a SCSI request. Complete it. */ + tw_cli_dbg_printf(2, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Completing complete request %p " + "on reset", + req); + req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; + req_pkt->tw_osl_callback(req->req_handle); + } + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + } +} + + + +/* + * Function name: tw_cli_drain_busy_queue + * Description: This function gets called during a controller reset. + * It errors back to the OS Layer, all those requests that + * were pending with the firmware, at the time of the + * reset. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_drain_busy_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + struct tw_cl_req_packet *req_pkt; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Walk the busy queue. */ + while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_BUSY_Q))) { + if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { + /* + * It's an internal request. Set the appropriate + * error and call the CL internal callback if there's + * one. If the request originator is polling for + * completion, he should be checking req->error to + * determine that the request did not go through. + * The request originators are responsible for the + * clean-up. + */ + req->error_code = TW_CL_ERR_REQ_BUS_RESET; + if (req->tw_cli_callback) + req->tw_cli_callback(req); + } else { + if ((req_pkt = req->orig_req)) { + /* It's a SCSI request. Complete it. */ + tw_cli_dbg_printf(2, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Completing busy request %p on reset", + req); + req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; + req_pkt->tw_osl_callback(req->req_handle); + } + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + } +} + + + +/* + * Function name: tw_cli_drain_pending_queue + * Description: This function gets called during a controller reset. + * It errors back to the OS Layer, all those requests that + * were in the pending queue, at the time of the reset. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ + +TW_VOID +tw_cli_drain_pending_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + struct tw_cl_req_packet *req_pkt; + + tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* + * Pull requests off the pending queue, and complete them. + */ + while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_PENDING_Q))) { + if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { + /* + * It's an internal request. Set the appropriate + * error and call the CL internal callback if there's + * one. If the request originator is polling for + * completion, he should be checking req->error to + * determine that the request did not go through. + * The request originators are responsible for the + * clean-up. + */ + req->error_code = TW_CL_ERR_REQ_BUS_RESET; + if (req->tw_cli_callback) + req->tw_cli_callback(req); + } else { + if ((req_pkt = req->orig_req)) { + /* It's an external request. Complete it. */ + tw_cli_dbg_printf(2, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Completing pending request %p " + "on reset", req); + req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; + req_pkt->tw_osl_callback(req->req_handle); + } + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + } +} + + + +/* + * Function name: tw_cli_drain_response_queue + * Description: Drain the controller response queue. + * + * Input: ctlr -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_drain_response_queue(struct tw_cli_ctlr_context *ctlr) +{ + TW_UINT32 resp; + TW_UINT32 status_reg; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + for (;;) { + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); + + if (tw_cli_check_ctlr_state(ctlr, status_reg)) + return(TW_OSL_EGENFAILURE); + + if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) + return(TW_OSL_ESUCCESS); /* no more response queue entries */ + + resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); + } +} + + + +/* + * Function name: tw_cli_find_response + * Description: Find a particular response in the ctlr response queue. + * + * Input: ctlr -- ptr to per ctlr structure + * req_id -- request id of the response to look for + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_find_response(struct tw_cli_ctlr_context *ctlr, TW_INT32 req_id) +{ + TW_UINT32 resp; + TW_INT32 resp_id; + TW_UINT32 status_reg; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + for (;;) { + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); + + if (tw_cli_check_ctlr_state(ctlr, status_reg)) + return(TW_OSL_EGENFAILURE); + + if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) + return(TW_OSL_ENOTTY); /* no more response queue entries */ + + if (ctlr->device_id == TW_CL_DEVICE_ID_9K) { + resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); + resp_id = GET_RESP_ID(resp); + } else { + resp = TW_CLI_READ_LARGE_RESPONSE_QUEUE( + ctlr->ctlr_handle); + resp_id = GET_LARGE_RESP_ID(resp); + } + if (resp_id == req_id) + return(TW_OSL_ESUCCESS); /* found the req_id */ + } +} + + + +/* + * Function name: tw_cli_drain_aen_queue + * Description: Fetches all un-retrieved AEN's posted by fw. + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_drain_aen_queue(struct tw_cli_ctlr_context *ctlr) +{ + struct tw_cli_req_context *req; + struct tw_cl_command_header *cmd_hdr; + TW_TIME end_time; + TW_UINT16 aen_code; + TW_INT32 error; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + for (;;) { + if ((req = tw_cli_get_request(ctlr + )) == TW_CL_NULL) { + error = TW_OSL_EBUSY; + break; + } + + req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; + req->tw_cli_callback = TW_CL_NULL; + if ((error = tw_cli_send_scsi_cmd(req, + 0x03 /* REQUEST_SENSE */))) { + tw_cli_dbg_printf(1, ctlr->ctlr_handle, + tw_osl_cur_func(), + "Cannot send command to fetch aen"); + break; + } + + end_time = tw_osl_get_local_time() + + TW_CLI_REQUEST_TIMEOUT_PERIOD; + do { + if ((error = req->error_code)) + /* + * This will take care of completion due to + * a reset, or a failure in + * tw_cli_submit_pending_queue. + */ + goto out; + + tw_cli_process_resp_intr(req->ctlr); + + if ((req->state != TW_CLI_REQ_STATE_BUSY) && + (req->state != TW_CLI_REQ_STATE_PENDING)) + break; + } while (tw_osl_get_local_time() <= end_time); + + if (req->state != TW_CLI_REQ_STATE_COMPLETE) { + error = TW_OSL_ETIMEDOUT; + break; + } + + if ((error = req->cmd_pkt->command.cmd_pkt_9k.status)) { + cmd_hdr = &req->cmd_pkt->cmd_hdr; + tw_cli_create_ctlr_event(ctlr, + TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, + cmd_hdr); + break; + } + + aen_code = tw_cli_manage_aen(ctlr, req); + if (aen_code == TWA_AEN_QUEUE_EMPTY) + break; + if (aen_code == TWA_AEN_SYNC_TIME_WITH_HOST) + continue; + + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + +out: + if (req) { + if (req->data) + ctlr->internal_req_busy = TW_CL_FALSE; + tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); + } + return(error); +} + + + +/* + * Function name: tw_cli_find_aen + * Description: Reports whether a given AEN ever occurred. + * + * Input: ctlr -- ptr to CL internal ctlr context + * aen_code-- AEN to look for + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_find_aen(struct tw_cli_ctlr_context *ctlr, TW_UINT16 aen_code) +{ + TW_UINT32 last_index; + TW_INT32 i; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + if (ctlr->aen_q_wrapped) + last_index = ctlr->aen_head; + else + last_index = 0; + + i = ctlr->aen_head; + do { + i = (i + ctlr->max_aens_supported - 1) % + ctlr->max_aens_supported; + if (ctlr->aen_queue[i].aen_code == aen_code) + return(TW_OSL_ESUCCESS); + } while (i != last_index); + + return(TW_OSL_EGENFAILURE); +} + + + +/* + * Function name: tw_cli_poll_status + * Description: Poll for a given status to show up in the firmware + * status register. + * + * Input: ctlr -- ptr to CL internal ctlr context + * status -- status to look for + * timeout -- max # of seconds to wait before giving up + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_cli_poll_status(struct tw_cli_ctlr_context *ctlr, TW_UINT32 status, + TW_UINT32 timeout) +{ + TW_TIME end_time; + TW_UINT32 status_reg; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + end_time = tw_osl_get_local_time() + timeout; + do { + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); + if ((status_reg & status) == status) + /* got the required bit(s) */ + return(TW_OSL_ESUCCESS); + + tw_osl_delay(1000); + } while (tw_osl_get_local_time() <= end_time); + + return(TW_OSL_ETIMEDOUT); +} + + + +/* + * Function name: tw_cl_create_event + * Description: Creates and queues ctlr/CL/OSL AEN's to be + * supplied to user-space tools on request. + * Also notifies OS Layer. + * Input: ctlr -- ptr to CL internal ctlr context + * queue_event-- TW_CL_TRUE --> queue event; + * TW_CL_FALSE--> don't queue event + * (simply notify OSL) + * event_src -- source of event + * event_code -- AEN/error code + * severity -- severity of event + * severity_str--Text description of severity + * event_desc -- standard string related to the event/error + * event_specific_desc -- format string for additional + * info about the event + * ... -- additional arguments conforming to the format + * specified by event_specific_desc + * Output: None + * Return value: None + */ +TW_VOID +tw_cl_create_event(struct tw_cl_ctlr_handle *ctlr_handle, + TW_UINT8 queue_event, TW_UINT8 event_src, TW_UINT16 event_code, + TW_UINT8 severity, TW_UINT8 *severity_str, TW_UINT8 *event_desc, + TW_UINT8 *event_specific_desc, ...) +{ + struct tw_cli_ctlr_context *ctlr = ctlr_handle->cl_ctlr_ctxt; + struct tw_cl_event_packet event_pkt; + struct tw_cl_event_packet *event; + TW_UINT32 aen_head; + va_list ap; + + tw_cli_dbg_printf(8, ctlr_handle, tw_osl_cur_func(), "entered"); + + if ((ctlr) && (queue_event)) { + /* Protect access to ctlr->aen_head. */ + tw_osl_get_lock(ctlr_handle, ctlr->gen_lock); + + aen_head = ctlr->aen_head; + ctlr->aen_head = (aen_head + 1) % ctlr->max_aens_supported; + + /* Queue the event. */ + event = &(ctlr->aen_queue[aen_head]); + tw_osl_memzero(event->parameter_data, + sizeof(event->parameter_data)); + + if (event->retrieved == TW_CL_AEN_NOT_RETRIEVED) + ctlr->aen_q_overflow = TW_CL_TRUE; + event->sequence_id = ++(ctlr->aen_cur_seq_id); + if ((aen_head + 1) == ctlr->max_aens_supported) { + tw_cli_dbg_printf(4, ctlr->ctlr_handle, + tw_osl_cur_func(), "AEN queue wrapped"); + ctlr->aen_q_wrapped = TW_CL_TRUE; + } + + /* Free access to ctlr->aen_head. */ + tw_osl_free_lock(ctlr_handle, ctlr->gen_lock); + } else { + event = &event_pkt; + tw_osl_memzero(event, sizeof(struct tw_cl_event_packet)); + } + + event->event_src = event_src; + event->time_stamp_sec = (TW_UINT32)tw_osl_get_local_time(); + event->aen_code = event_code; + event->severity = severity; + tw_osl_strcpy(event->severity_str, severity_str); + event->retrieved = TW_CL_AEN_NOT_RETRIEVED; + + va_start(ap, event_specific_desc); + tw_osl_vsprintf(event->parameter_data, event_specific_desc, ap); + va_end(ap); + + event->parameter_len = + (TW_UINT8)(tw_osl_strlen(event->parameter_data)); + tw_osl_strcpy(event->parameter_data + event->parameter_len + 1, + event_desc); + event->parameter_len += (1 + tw_osl_strlen(event_desc)); + + tw_cli_dbg_printf(4, ctlr_handle, tw_osl_cur_func(), + "event = %x %x %x %x %x %x %x\n %s", + event->sequence_id, + event->time_stamp_sec, + event->aen_code, + event->severity, + event->retrieved, + event->repeat_count, + event->parameter_len, + event->parameter_data); + + tw_osl_notify_event(ctlr_handle, event); +} + + + +/* + * Function name: tw_cli_get_request + * Description: Gets a request pkt from the free queue. + * + * Input: ctlr -- ptr to CL internal ctlr context + * req_pkt -- ptr to OSL built req_pkt, if there's one + * Output: None + * Return value: ptr to request pkt -- success + * TW_CL_NULL -- failure + */ +struct tw_cli_req_context * +tw_cli_get_request(struct tw_cli_ctlr_context *ctlr + ) +{ + struct tw_cli_req_context *req; + + tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + { + /* Get a free request packet. */ + req = tw_cli_req_q_remove_head(ctlr, TW_CLI_FREE_Q); + } + + /* Initialize some fields to their defaults. */ + if (req) { + req->req_handle = TW_CL_NULL; + req->data = TW_CL_NULL; + req->length = 0; + req->data_phys = 0; + req->state = TW_CLI_REQ_STATE_INIT; /* req being initialized */ + req->flags = 0; + req->error_code = 0; + req->orig_req = TW_CL_NULL; + req->tw_cli_callback = TW_CL_NULL; + + /* + * Look at the status field in the command packet to see how + * it completed the last time it was used, and zero out only + * the portions that might have changed. Note that we don't + * care to zero out the sglist. + */ + if (req->cmd_pkt->command.cmd_pkt_9k.status) + tw_osl_memzero(req->cmd_pkt, + sizeof(struct tw_cl_command_header) + + 28 /* max bytes before sglist */); + else + tw_osl_memzero(&(req->cmd_pkt->command), + 28 /* max bytes before sglist */); + + } + return(req); +} + + + +/* + * Function name: tw_cli_dbg_printf + * Description: Calls OSL print function if dbg_level is appropriate + * + * Input: dbg_level -- Determines whether or not to print + * ctlr_handle -- controller handle + * cur_func -- text name of calling function + * fmt -- format string for the arguments to follow + * ... -- variable number of arguments, to be printed + * based on the fmt string + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_dbg_printf(TW_UINT8 dbg_level, + struct tw_cl_ctlr_handle *ctlr_handle, const TW_INT8 *cur_func, + TW_INT8 *fmt, ...) +{ +#ifdef TW_OSL_DEBUG + TW_INT8 print_str[256]; + va_list ap; + + tw_osl_memzero(print_str, 256); + if (dbg_level <= TW_OSL_DEBUG_LEVEL_FOR_CL) { + tw_osl_sprintf(print_str, "%s: ", cur_func); + + va_start(ap, fmt); + tw_osl_vsprintf(print_str + tw_osl_strlen(print_str), fmt, ap); + va_end(ap); + + tw_osl_strcpy(print_str + tw_osl_strlen(print_str), "\n"); + tw_osl_dbg_printf(ctlr_handle, print_str); + } +#endif /* TW_OSL_DEBUG */ +} + + + +/* + * Function name: tw_cli_notify_ctlr_info + * Description: Notify OSL of controller info (fw/BIOS versions, etc.). + * + * Input: ctlr -- ptr to CL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_cli_notify_ctlr_info(struct tw_cli_ctlr_context *ctlr) +{ + TW_INT8 fw_ver[16]; + TW_INT8 bios_ver[16]; + TW_INT8 ctlr_model[16]; + TW_INT32 error[3]; + TW_UINT8 num_ports = 0; + + tw_cli_dbg_printf(5, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Get the port count. */ + error[0] = tw_cli_get_param(ctlr, TWA_PARAM_CONTROLLER_TABLE, + TWA_PARAM_CONTROLLER_PORT_COUNT, &num_ports, + 1, TW_CL_NULL); + + /* Get the firmware and BIOS versions. */ + error[0] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, + TWA_PARAM_VERSION_FW, fw_ver, 16, TW_CL_NULL); + error[1] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, + TWA_PARAM_VERSION_BIOS, bios_ver, 16, TW_CL_NULL); + error[2] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, + TWA_PARAM_CTLR_MODEL, ctlr_model, 16, TW_CL_NULL); + + tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, + 0x1300, 0x3, TW_CL_SEVERITY_INFO_STRING, + "Controller details:", + "Model %.16s, %d ports, Firmware %.16s, BIOS %.16s", + error[2]?(TW_INT8 *)TW_CL_NULL:ctlr_model, + num_ports, + error[0]?(TW_INT8 *)TW_CL_NULL:fw_ver, + error[1]?(TW_INT8 *)TW_CL_NULL:bios_ver); +} + + + +/* + * Function name: tw_cli_check_ctlr_state + * Description: Makes sure that the fw status register reports a + * proper status. + * + * Input: ctlr -- ptr to CL internal ctlr context + * status_reg-- value in the status register + * Output: None + * Return value: 0 -- no errors + * non-zero-- errors + */ +TW_INT32 +tw_cli_check_ctlr_state(struct tw_cli_ctlr_context *ctlr, TW_UINT32 status_reg) +{ + struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; + TW_INT32 error = TW_OSL_ESUCCESS; + + tw_cli_dbg_printf(8, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); + + /* Check if the 'micro-controller ready' bit is not set. */ + if (!(status_reg & TWA_STATUS_MICROCONTROLLER_READY)) { + TW_INT8 desc[200]; + + tw_osl_memzero(desc, 200); + if (!(ctlr->reset_phase1_in_progress)) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1301, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Missing expected status bit(s)", + "status reg = 0x%x; Missing bits: %s", + status_reg, + tw_cli_describe_bits( + TWA_STATUS_MICROCONTROLLER_READY, + desc)); + error = TW_OSL_EGENFAILURE; + } + } + + /* Check if any error bits are set. */ + if ((status_reg & TWA_STATUS_UNEXPECTED_BITS) != 0) { + TW_INT8 desc[200]; + + tw_osl_memzero(desc, 200); + + /* Skip queue error msgs during 9650SE/9690SA reset */ + if (((ctlr->device_id != TW_CL_DEVICE_ID_9K_E) && + (ctlr->device_id != TW_CL_DEVICE_ID_9K_SA)) || + (!(ctlr->reset_in_progress)) || + ((status_reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) == 0)) + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1302, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Unexpected status bit(s)", + "status reg = 0x%x Unexpected bits: %s", + status_reg & TWA_STATUS_UNEXPECTED_BITS, + tw_cli_describe_bits(status_reg & + TWA_STATUS_UNEXPECTED_BITS, desc)); + + if (status_reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1303, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "PCI parity error: clearing... " + "Re-seat/move/replace card", + "status reg = 0x%x %s", + status_reg, + tw_cli_describe_bits(status_reg, desc)); + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_CLEAR_PARITY_ERROR); + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE + tw_osl_write_pci_config(ctlr->ctlr_handle, + TW_CLI_PCI_CONFIG_STATUS_OFFSET, + TWA_PCI_CONFIG_CLEAR_PARITY_ERROR, 2); +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + } + + if (status_reg & TWA_STATUS_PCI_ABORT_INTERRUPT) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1304, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "PCI abort: clearing... ", + "status reg = 0x%x %s", + status_reg, + tw_cli_describe_bits(status_reg, desc)); + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_CLEAR_PCI_ABORT); + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE + tw_osl_write_pci_config(ctlr->ctlr_handle, + TW_CLI_PCI_CONFIG_STATUS_OFFSET, + TWA_PCI_CONFIG_CLEAR_PCI_ABORT, 2); +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + } + + if (status_reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) { + /* Skip queue error msgs during 9650SE/9690SA reset */ + if (((ctlr->device_id != TW_CL_DEVICE_ID_9K_E) && + (ctlr->device_id != TW_CL_DEVICE_ID_9K_SA)) || + (!(ctlr->reset_in_progress))) + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1305, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Controller queue error: clearing... ", + "status reg = 0x%x %s", + status_reg, + tw_cli_describe_bits(status_reg, desc)); + TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, + TWA_CONTROL_CLEAR_QUEUE_ERROR); + } + + if (status_reg & TWA_STATUS_MICROCONTROLLER_ERROR) { + tw_cl_create_event(ctlr_handle, TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, + 0x1307, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Micro-controller error! ", + "status reg = 0x%x %s", + status_reg, + tw_cli_describe_bits(status_reg, desc)); + error = TW_OSL_EGENFAILURE; + } + } + return(error); +} + + + +/* + * Function name: tw_cli_describe_bits + * Description: Given the value of the status register, returns a + * string describing the meaning of each set bit. + * + * Input: reg -- status register value + * Output: Pointer to a string describing each set bit + * Return value: Pointer to the string describing each set bit + */ +TW_INT8 * +tw_cli_describe_bits(TW_UINT32 reg, TW_INT8 *str) +{ + tw_osl_strcpy(str, "["); + + if (reg & TWA_STATUS_COMMAND_QUEUE_EMPTY) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_Q_EMPTY,"); + if (reg & TWA_STATUS_MICROCONTROLLER_READY) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "MC_RDY,"); + if (reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "RESP_Q_EMPTY,"); + if (reg & TWA_STATUS_COMMAND_QUEUE_FULL) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_Q_FULL,"); + if (reg & TWA_STATUS_RESPONSE_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "RESP_INTR,"); + if (reg & TWA_STATUS_COMMAND_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_INTR,"); + if (reg & TWA_STATUS_ATTENTION_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "ATTN_INTR,"); + if (reg & TWA_STATUS_HOST_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "HOST_INTR,"); + if (reg & TWA_STATUS_PCI_ABORT_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "PCI_ABRT,"); + if (reg & TWA_STATUS_MICROCONTROLLER_ERROR) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "MC_ERR,"); + if (reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "Q_ERR,"); + if (reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) + tw_osl_strcpy(&str[tw_osl_strlen(str)], "PCI_PERR"); + + tw_osl_strcpy(&str[tw_osl_strlen(str)], "]"); + return(str); +} + + + +#ifdef TW_OSL_DEBUG + +/* + * Function name: tw_cl_print_ctlr_stats + * Description: Prints the current status of the controller. + * + * Input: ctlr_handle-- controller handle + * Output: None + * Return value: None + */ +TW_VOID +tw_cl_print_ctlr_stats(struct tw_cl_ctlr_handle *ctlr_handle) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + TW_UINT32 status_reg; + TW_INT8 desc[200]; + + tw_cli_dbg_printf(7, ctlr->ctlr_handle, "", "entered"); + + /* Print current controller details. */ + tw_cli_dbg_printf(0, ctlr_handle, "", "cl_ctlr_ctxt = %p", ctlr); + + tw_osl_memzero(desc, 200); + status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); + tw_cli_dbg_printf(0, ctlr_handle, "", "status reg = 0x%x %s", + status_reg, tw_cli_describe_bits(status_reg, desc)); + + tw_cli_dbg_printf(0, ctlr_handle, "", "CLq type current max"); + tw_cli_dbg_printf(0, ctlr_handle, "", "free %04d %04d", + ctlr->q_stats[TW_CLI_FREE_Q].cur_len, + ctlr->q_stats[TW_CLI_FREE_Q].max_len); + tw_cli_dbg_printf(0, ctlr_handle, "", "busy %04d %04d", + ctlr->q_stats[TW_CLI_BUSY_Q].cur_len, + ctlr->q_stats[TW_CLI_BUSY_Q].max_len); + tw_cli_dbg_printf(0, ctlr_handle, "", "pending %04d %04d", + ctlr->q_stats[TW_CLI_PENDING_Q].cur_len, + ctlr->q_stats[TW_CLI_PENDING_Q].max_len); + tw_cli_dbg_printf(0, ctlr_handle, "", "complete %04d %04d", + ctlr->q_stats[TW_CLI_COMPLETE_Q].cur_len, + ctlr->q_stats[TW_CLI_COMPLETE_Q].max_len); + tw_cli_dbg_printf(0, ctlr_handle, "", "AEN queue head %d tail %d", + ctlr->aen_head, ctlr->aen_tail); +} + + + +/* + * Function name: tw_cl_reset_stats + * Description: Resets CL maintained statistics for the controller. + * + * Input: ctlr_handle-- controller handle + * Output: None + * Return value: None + */ +TW_VOID +tw_cl_reset_stats(struct tw_cl_ctlr_handle *ctlr_handle) +{ + struct tw_cli_ctlr_context *ctlr = + (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); + + tw_cli_dbg_printf(7, ctlr_handle, tw_osl_cur_func(), "entered"); + ctlr->q_stats[TW_CLI_FREE_Q].max_len = 0; + ctlr->q_stats[TW_CLI_BUSY_Q].max_len = 0; + ctlr->q_stats[TW_CLI_PENDING_Q].max_len = 0; + ctlr->q_stats[TW_CLI_COMPLETE_Q].max_len = 0; +} + + + +/* + * Function name: tw_cli_print_req_info + * Description: Prints CL internal details of a given request. + * + * Input: req -- ptr to CL internal request context + * Output: None + * Return value: None + */ +TW_VOID +tw_cl_print_req_info(struct tw_cl_req_handle *req_handle) +{ + struct tw_cli_req_context *req = req_handle->cl_req_ctxt; + struct tw_cli_ctlr_context *ctlr = req->ctlr; + struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; + struct tw_cl_command_packet *cmd_pkt = req->cmd_pkt; + struct tw_cl_command_9k *cmd9k; + union tw_cl_command_7k *cmd7k; + TW_UINT8 *cdb; + TW_VOID *sgl; + TW_UINT32 sgl_entries; + TW_UINT32 i; + + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "CL details for request:"); + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "req_handle = %p, ctlr = %p,\n" + "cmd_pkt = %p, cmd_pkt_phys = 0x%llx,\n" + "data = %p, length = 0x%x, data_phys = 0x%llx,\n" + "state = 0x%x, flags = 0x%x, error = 0x%x,\n" + "orig_req = %p, callback = %p, req_id = 0x%x,\n" + "next_req = %p, prev_req = %p", + req_handle, ctlr, + cmd_pkt, req->cmd_pkt_phys, + req->data, req->length, req->data_phys, + req->state, req->flags, req->error_code, + req->orig_req, req->tw_cli_callback, req->request_id, + req->link.next, req->link.prev); + + if (req->flags & TW_CLI_REQ_FLAGS_9K) { + cmd9k = &(cmd_pkt->command.cmd_pkt_9k); + sgl = cmd9k->sg_list; + sgl_entries = TW_CL_SWAP16( + GET_SGL_ENTRIES(cmd9k->lun_h4__sgl_entries)); + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "9K cmd: opcode = 0x%x, unit = 0x%x, req_id = 0x%x,\n" + "status = 0x%x, sgl_offset = 0x%x, sgl_entries = 0x%x", + GET_OPCODE(cmd9k->res__opcode), + cmd9k->unit, + TW_CL_SWAP16(GET_REQ_ID(cmd9k->lun_l4__req_id)), + cmd9k->status, + cmd9k->sgl_offset, + sgl_entries); + + cdb = (TW_UINT8 *)(cmd9k->cdb); + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "CDB: %x %x %x %x %x %x %x %x" + "%x %x %x %x %x %x %x %x", + cdb[0], cdb[1], cdb[2], cdb[3], + cdb[4], cdb[5], cdb[6], cdb[7], + cdb[8], cdb[9], cdb[10], cdb[11], + cdb[12], cdb[13], cdb[14], cdb[15]); + } else { + cmd7k = &(cmd_pkt->command.cmd_pkt_7k); + sgl = cmd7k->param.sgl; + sgl_entries = (cmd7k->generic.size - + GET_SGL_OFF(cmd7k->generic.sgl_off__opcode)) / + ((ctlr->flags & TW_CL_64BIT_ADDRESSES) ? 3 : 2); + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "7K cmd: opcode = 0x%x, sgl_offset = 0x%x,\n" + "size = 0x%x, req_id = 0x%x, unit = 0x%x,\n" + "status = 0x%x, flags = 0x%x, count = 0x%x", + GET_OPCODE(cmd7k->generic.sgl_off__opcode), + GET_SGL_OFF(cmd7k->generic.sgl_off__opcode), + cmd7k->generic.size, + TW_CL_SWAP16(cmd7k->generic.request_id), + GET_UNIT(cmd7k->generic.host_id__unit), + cmd7k->generic.status, + cmd7k->generic.flags, + TW_CL_SWAP16(cmd7k->generic.count)); + } + + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), "SG entries:"); + + if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { + struct tw_cl_sg_desc64 *sgl64 = (struct tw_cl_sg_desc64 *)sgl; + + for (i = 0; i < sgl_entries; i++) { + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "0x%llx 0x%x", + sgl64[i].address, sgl64[i].length); + } + } else { + struct tw_cl_sg_desc32 *sgl32 = (struct tw_cl_sg_desc32 *)sgl; + + for (i = 0; i < sgl_entries; i++) { + tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), + "0x%x 0x%x", + sgl32[i].address, sgl32[i].length); + } + } +} + +#endif /* TW_OSL_DEBUG */ diff --git a/sys/dev/raid/twa/tw_cl_share.h b/sys/dev/raid/twa/tw_cl_share.h new file mode 100644 index 0000000000..ec8326dd2b --- /dev/null +++ b/sys/dev/raid/twa/tw_cl_share.h @@ -0,0 +1,595 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_cl_share.h,v 1.7 2010/07/09 17:38:15 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + + +#ifndef TW_CL_SHARE_H + +#define TW_CL_SHARE_H + + +/* + * Macros, structures and functions shared between OSL and CL, + * and defined by CL. + */ + +#define TW_CL_NULL ((TW_VOID *)0) +#define TW_CL_TRUE 1 +#define TW_CL_FALSE 0 + +#define TW_CL_VENDOR_ID 0x13C1 /* 3ware vendor id */ +#define TW_CL_DEVICE_ID_9K 0x1002 /* 9000 PCI series device id */ +#define TW_CL_DEVICE_ID_9K_X 0x1003 /* 9000 PCI-X series device id */ +#define TW_CL_DEVICE_ID_9K_E 0x1004 /* 9000 PCIe series device id */ +#define TW_CL_DEVICE_ID_9K_SA 0x1005 /* 9000 PCIe SAS series device id */ + +#define TW_CL_BAR_TYPE_IO 1 /* I/O base address */ +#define TW_CL_BAR_TYPE_MEM 2 /* memory base address */ +#define TW_CL_BAR_TYPE_SBUF 3 /* SBUF base address */ + +#ifdef TW_OSL_ENCLOSURE_SUPPORT +#define TW_CL_MAX_NUM_UNITS 65 /* max # of units we support + -- enclosure target id is 64 */ +#else /* TW_OSL_ENCLOSURE_SUPPORT */ +#define TW_CL_MAX_NUM_UNITS 32 /* max # of units we support */ +#endif /* TW_OSL_ENCLOSURE_SUPPORT */ + +#define TW_CL_MAX_NUM_LUNS 16 /* max # of LUN's we support */ +#define TW_CL_MAX_IO_SIZE 0x20000 /* 128K */ + +/* + * Though we can support 256 simultaneous requests, we advertise as capable + * of supporting only 255, since we want to keep one CL internal request + * context packet always available for internal requests. + */ +#define TW_CL_MAX_SIMULTANEOUS_REQUESTS 256 /* max simult reqs supported */ + +#define TW_CL_MAX_32BIT_SG_ELEMENTS 109 /* max 32-bit sg elements */ +#define TW_CL_MAX_64BIT_SG_ELEMENTS 72 /* max 64-bit sg elements */ + + +/* Possible values of ctlr->flags */ +#define TW_CL_64BIT_ADDRESSES (1<<0) /* 64 bit cmdpkt & SG addresses */ +#define TW_CL_64BIT_SG_LENGTH (1<<1) /* 64 bit SG length */ +#define TW_CL_START_CTLR_ONLY (1<<2) /* Start ctlr only */ +#define TW_CL_STOP_CTLR_ONLY (1<<3) /* Stop ctlr only */ +#define TW_CL_DEFERRED_INTR_USED (1<<5) /* OS Layer uses deferred intr */ + +/* Possible error values from the Common Layer. */ +#define TW_CL_ERR_REQ_SUCCESS 0 +#define TW_CL_ERR_REQ_GENERAL_FAILURE (1<<0) +#define TW_CL_ERR_REQ_INVALID_TARGET (1<<1) +#define TW_CL_ERR_REQ_INVALID_LUN (1<<2) +#define TW_CL_ERR_REQ_SCSI_ERROR (1<<3) +#define TW_CL_ERR_REQ_AUTO_SENSE_VALID (1<<4) +#define TW_CL_ERR_REQ_BUS_RESET (1<<5) +#define TW_CL_ERR_REQ_UNABLE_TO_SUBMIT_COMMAND (1<<6) + + +/* Possible values of req_pkt->flags */ +#define TW_CL_REQ_RETRY_ON_BUSY (1<<0) +#define TW_CL_REQ_CALLBACK_FOR_SGLIST (1<<1) + + +#define TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR 3 +#define TW_CL_MESSAGE_SOURCE_CONTROLLER_EVENT 4 +#define TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR 21 +#define TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT 22 +#define TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER 5 +#define TW_CL_MESSAGE_SOURCE_FREEBSD_OS 8 +#define TW_CL_MESSAGE_SOURCE_WINDOWS_DRIVER 7 +#define TW_CL_MESSAGE_SOURCE_WINDOWS_OS 10 + +#define TW_CL_SEVERITY_ERROR 0x1 +#define TW_CL_SEVERITY_WARNING 0x2 +#define TW_CL_SEVERITY_INFO 0x3 +#define TW_CL_SEVERITY_DEBUG 0x4 + +#define TW_CL_SEVERITY_ERROR_STRING "ERROR" +#define TW_CL_SEVERITY_WARNING_STRING "WARNING" +#define TW_CL_SEVERITY_INFO_STRING "INFO" +#define TW_CL_SEVERITY_DEBUG_STRING "DEBUG" + + + +/* + * Structure, a pointer to which is used as the controller handle in + * communications between the OS Layer and the Common Layer. + */ +struct tw_cl_ctlr_handle { + TW_VOID *osl_ctlr_ctxt; /* OSL's ctlr context */ + TW_VOID *cl_ctlr_ctxt; /* CL's ctlr context */ +}; + + +/* + * Structure, a pointer to which is used as the request handle in + * communications between the OS Layer and the Common Layer. + */ +struct tw_cl_req_handle { + TW_VOID *osl_req_ctxt; /* OSL's request context */ + TW_VOID *cl_req_ctxt; /* CL's request context */ + TW_UINT8 is_io; /* Only freeze/release simq for IOs */ +}; + + +/* Structure used to describe SCSI requests to CL. */ +struct tw_cl_scsi_req_packet { + TW_UINT32 unit; /* unit # to send cmd to */ + TW_UINT32 lun; /* LUN to send cmd to */ + TW_UINT8 *cdb; /* ptr to SCSI cdb */ + TW_UINT32 cdb_len; /* # of valid cdb bytes */ + TW_UINT32 sense_len; /* # of bytes of valid sense info */ + TW_UINT8 *sense_data; /* ptr to sense data, if any */ + TW_UINT32 scsi_status; /* SCSI status returned by fw */ + TW_UINT32 sgl_entries; /* # of SG descriptors */ + TW_UINT8 *sg_list; /* ptr to SG list */ +}; + + +/* Structure used to describe pass through command packets to CL. */ +struct tw_cl_passthru_req_packet { + TW_UINT8 *cmd_pkt; /* ptr to passthru cmd pkt */ + TW_UINT32 cmd_pkt_length; /* size of cmd pkt */ + TW_UINT32 sgl_entries; /* # of SG descriptors */ + TW_UINT8 *sg_list; /* ptr to SG list */ +}; + + +/* Request packet submitted to the Common Layer, by the OS Layer. */ +struct tw_cl_req_packet { + TW_UINT32 cmd; /* Common Layer cmd */ + TW_UINT32 flags; /* flags describing request */ + TW_UINT32 status; /* Common Layer returned status */ + TW_VOID (*tw_osl_callback)(struct tw_cl_req_handle *req_handle); + /* OSL routine to be called by CL on req completion */ + TW_VOID (*tw_osl_sgl_callback)( + struct tw_cl_req_handle *req_handle, TW_VOID *sg_list, + TW_UINT32 *num_sgl_entries); + /* OSL callback to get SG list. */ + + union { + struct tw_cl_scsi_req_packet scsi_req; /* SCSI req */ + struct tw_cl_passthru_req_packet pt_req;/*Passthru req*/ + } gen_req_pkt; +}; + + +#pragma pack(1) +/* + * Packet that describes an AEN/error generated by the controller, + * Common Layer, or even the OS Layer. + */ +struct tw_cl_event_packet { + TW_UINT32 sequence_id; + TW_UINT32 time_stamp_sec; + TW_UINT16 aen_code; + TW_UINT8 severity; + TW_UINT8 retrieved; + TW_UINT8 repeat_count; + TW_UINT8 parameter_len; + TW_UINT8 parameter_data[98]; + TW_UINT32 event_src; + TW_UINT8 severity_str[20]; +}; +#pragma pack() + + +/* Structure to link 2 adjacent elements in a list. */ +struct tw_cl_link { + struct tw_cl_link *next; + struct tw_cl_link *prev; +}; + + +#pragma pack(1) +/* Scatter/Gather list entry with 32 bit addresses. */ +struct tw_cl_sg_desc32 { + TW_UINT32 address; + TW_UINT32 length; +}; + + +/* Scatter/Gather list entry with 64 bit addresses. */ +struct tw_cl_sg_desc64 { + TW_UINT64 address; + TW_UINT32 length; +}; + +#pragma pack() + + +/* Byte swap functions. Valid only if running on big endian platforms. */ +#ifdef TW_OSL_BIG_ENDIAN + +#define TW_CL_SWAP16_WITH_CAST(x) \ + ((x << 8) | (x >> 8)) + + +#define TW_CL_SWAP32_WITH_CAST(x) \ + ((x << 24) | ((x << 8) & (0xFF0000)) | \ + ((x >> 8) & (0xFF00)) | (x >> 24)) + + +#define TW_CL_SWAP64_WITH_CAST(x) \ + ((((TW_UINT64)(TW_CL_SWAP32(((TW_UINT32 *)(&(x)))[1]))) << 32) |\ + ((TW_UINT32)(TW_CL_SWAP32(((TW_UINT32 *)(&(x)))[0])))) + + +#else /* TW_OSL_BIG_ENDIAN */ + +#define TW_CL_SWAP16_WITH_CAST(x) x +#define TW_CL_SWAP32_WITH_CAST(x) x +#define TW_CL_SWAP64_WITH_CAST(x) x + +#endif /* TW_OSL_BIG_ENDIAN */ + +#define TW_CL_SWAP16(x) TW_CL_SWAP16_WITH_CAST((TW_UINT16)(x)) +#define TW_CL_SWAP32(x) TW_CL_SWAP32_WITH_CAST((TW_UINT32)(x)) +#define TW_CL_SWAP64(x) TW_CL_SWAP64_WITH_CAST((TW_UINT64)(x)) + + +/* Queue manipulation functions. */ + +/* Initialize a queue. */ +#define TW_CL_Q_INIT(head) do { \ + (head)->prev = (head)->next = head; \ +} while (0) + + +/* Insert an item at the head of the queue. */ +#define TW_CL_Q_INSERT_HEAD(head, item) do { \ + (item)->next = (head)->next; \ + (item)->prev = head; \ + (head)->next->prev = item; \ + (head)->next = item; \ +} while (0) + + +/* Insert an item at the tail of the queue. */ +#define TW_CL_Q_INSERT_TAIL(head, item) do { \ + (item)->next = head; \ + (item)->prev = (head)->prev; \ + (head)->prev->next = item; \ + (head)->prev = item; \ +} while (0) + + +/* Remove an item from the head of the queue. */ +#define TW_CL_Q_REMOVE_ITEM(head, item) do { \ + (item)->prev->next = (item)->next; \ + (item)->next->prev = (item)->prev; \ +} while (0) + + +/* Retrieve the item at the head of the queue. */ +#define TW_CL_Q_FIRST_ITEM(head) \ + (((head)->next != head) ? ((head)->next) : TW_CL_NULL) + + +/* Retrieve the item at the tail of the queue. */ +#define TW_CL_Q_LAST_ITEM(head) \ + (((head)->prev != head) ? ((head)->prev) : TW_CL_NULL) + + +/* Retrieve the item next to a given item in the queue. */ +#define TW_CL_Q_NEXT_ITEM(head, item) \ + (((item)->next != head) ? ((item)->next) : TW_CL_NULL) + + +/* Retrieve the item previous to a given item in the queue. */ +#define TW_CL_Q_PREV_ITEM(head, item) \ + (((item)->prev != head) ? ((item)->prev) : TW_CL_NULL) + + +/* Determine the offset of a field from the head of the structure it is in. */ +#define TW_CL_STRUCT_OFFSET(struct_type, field) \ + (TW_INT8 *)(&((struct_type *)0)->field) + + +/* + * Determine the address of the head of a structure, given the address of a + * field within it. + */ +#define TW_CL_STRUCT_HEAD(addr, struct_type, field) \ + (struct_type *)((TW_INT8 *)addr - \ + TW_CL_STRUCT_OFFSET(struct_type, field)) + + + +#ifndef TW_BUILDING_API + +#include "tw_osl_inline.h" + + + +/* + * The following are extern declarations of OS Layer defined functions called + * by the Common Layer. If any function has been defined as a macro in + * tw_osl_share.h, we will not make the extern declaration here. + */ + +#ifndef tw_osl_breakpoint +/* Allows setting breakpoints in the CL code for debugging purposes. */ +extern TW_VOID tw_osl_breakpoint(TW_VOID); +#endif + + +#ifndef tw_osl_ctlr_busy +/* Called when CL is too busy to accept new requests. */ +extern TW_VOID tw_osl_ctlr_busy(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_handle *req_handle); +#endif + + +#ifndef tw_osl_cur_func +/* Text name of current function. */ +extern TW_INT8 *tw_osl_cur_func(TW_VOID); +#endif + + +#ifdef TW_OSL_DEBUG +#ifndef tw_osl_dbg_printf +/* Print to syslog/event log/debug console, as applicable. */ +extern TW_INT32 tw_osl_dbg_printf(struct tw_cl_ctlr_handle *ctlr_handle, + const TW_INT8 *fmt, ...); +#endif +#endif /* TW_OSL_DEBUG */ + + +#ifndef tw_osl_delay +/* Cause a delay of usecs micro-seconds. */ +extern TW_VOID tw_osl_delay(TW_INT32 usecs); +#endif + + +#ifndef tw_osl_destroy_lock +/* Create/initialize a lock for CL's use. */ +extern TW_VOID tw_osl_destroy_lock(struct tw_cl_ctlr_handle *ctlr_handle, + TW_LOCK_HANDLE *lock); +#endif + + +#ifndef tw_osl_free_lock +/* Free a previously held lock. */ +extern TW_VOID tw_osl_free_lock(struct tw_cl_ctlr_handle *ctlr_handle, + TW_LOCK_HANDLE *lock); +#endif + + +#ifndef tw_osl_get_local_time +/* Get local time. */ +extern TW_TIME tw_osl_get_local_time(TW_VOID); +#endif + + +#ifndef tw_osl_get_lock +/* Acquire a lock. */ +extern TW_VOID tw_osl_get_lock(struct tw_cl_ctlr_handle *ctlr_handle, + TW_LOCK_HANDLE *lock); +#endif + + +#ifndef tw_osl_init_lock +/* Create/initialize a lock for CL's use. */ +extern TW_VOID tw_osl_init_lock(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT8 *lock_name, TW_LOCK_HANDLE *lock); +#endif + + +#ifndef tw_osl_memcpy +/* Copy 'size' bytes from 'src' to 'dest'. */ +extern TW_VOID tw_osl_memcpy(TW_VOID *src, TW_VOID *dest, TW_INT32 size); +#endif + + +#ifndef tw_osl_memzero +/* Zero 'size' bytes starting at 'addr'. */ +extern TW_VOID tw_osl_memzero(TW_VOID *addr, TW_INT32 size); +#endif + + +#ifndef tw_osl_notify_event +/* Notify OSL of a controller/CL (or even OSL) event. */ +extern TW_VOID tw_osl_notify_event(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_event_packet *event); +#endif + + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE +#ifndef tw_osl_read_pci_config +/* Read 'size' bytes from 'offset' in the PCI config space. */ +extern TW_UINT32 tw_osl_read_pci_config( + struct tw_cl_ctlr_handle *ctlr_handle, TW_INT32 offset, TW_INT32 size); +#endif +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + +#ifndef tw_osl_read_reg +/* Read 'size' bytes at 'offset' from base address of this controller. */ +extern TW_UINT32 tw_osl_read_reg(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT32 offset, TW_INT32 size); +#endif + + +#ifndef tw_osl_scan_bus +/* Request OSL for a bus scan. */ +extern TW_VOID tw_osl_scan_bus(struct tw_cl_ctlr_handle *ctlr_handle); +#endif + + +#ifdef TW_OSL_CAN_SLEEP +#ifndef tw_osl_sleep +/* Sleep for 'timeout' ms or until woken up (by tw_osl_wakeup). */ +extern TW_INT32 tw_osl_sleep(struct tw_cl_ctlr_handle *ctlr_handle, + TW_SLEEP_HANDLE *sleep_handle, TW_INT32 timeout); +#endif +#endif /* TW_OSL_CAN_SLEEP */ + + +#ifndef tw_osl_sprintf +/* Standard sprintf. */ +extern TW_INT32 tw_osl_sprintf(TW_INT8 *dest, const TW_INT8 *fmt, ...); +#endif + + +#ifndef tw_osl_strcpy +/* Copy string 'src' to 'dest'. */ +extern TW_INT8 *tw_osl_strcpy(TW_INT8 *dest, TW_INT8 *src); +#endif + + +#ifndef tw_osl_strlen +/* Return length of string pointed at by 'str'. */ +extern TW_INT32 tw_osl_strlen(TW_VOID *str); +#endif + +#ifndef tw_osl_vsprintf +/* Standard vsprintf. */ +extern TW_INT32 tw_osl_vsprintf(TW_INT8 *dest, const TW_INT8 *fmt, va_list ap); +#endif + + +#ifdef TW_OSL_CAN_SLEEP +#ifndef tw_osl_wakeup +/* Wake up a thread sleeping by a call to tw_osl_sleep. */ +extern TW_VOID tw_osl_wakeup(struct tw_cl_ctlr_handle *ctlr_handle, + TW_SLEEP_HANDLE *sleep_handle); +#endif +#endif /* TW_OSL_CAN_SLEEP */ + + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE +#ifndef tw_osl_write_pci_config +/* Write 'value' of 'size' bytes at 'offset' in the PCI config space. */ +extern TW_VOID tw_osl_write_pci_config(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT32 offset, TW_INT32 value, TW_INT32 size); +#endif +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + +#ifndef tw_osl_write_reg +/* + * Write 'value' of 'size' (max 4) bytes at 'offset' from base address of + * this controller. + */ +extern TW_VOID tw_osl_write_reg(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT32 offset, TW_INT32 value, TW_INT32 size); +#endif + + + +/* Functions in the Common Layer */ + +/* Creates and queues AEN's. Also notifies OS Layer. */ +extern TW_VOID tw_cl_create_event(struct tw_cl_ctlr_handle *ctlr_handle, + TW_UINT8 queue_event, TW_UINT8 event_src, TW_UINT16 event_code, + TW_UINT8 severity, TW_UINT8 *severity_str, TW_UINT8 *event_desc, + TW_UINT8 *event_specific_desc, ...); + +/* Indicates whether a ctlr is supported by CL. */ +extern TW_INT32 tw_cl_ctlr_supported(TW_INT32 vendor_id, TW_INT32 device_id); + + +/* Submit a firmware cmd packet. */ +extern TW_INT32 tw_cl_fw_passthru(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle); + + +/* Find out how much memory CL needs. */ +extern TW_INT32 tw_cl_get_mem_requirements( + struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags, + TW_INT32 device_id, TW_INT32 max_simult_reqs, TW_INT32 max_aens, + TW_UINT32 *alignment, TW_UINT32 *sg_size_factor, + TW_UINT32 *non_dma_mem_size, TW_UINT32 *dma_mem_size + ); + + +/* Return PCI BAR info. */ +extern TW_INT32 tw_cl_get_pci_bar_info(TW_INT32 device_id, TW_INT32 bar_type, + TW_INT32 *bar_num, TW_INT32 *bar0_offset, TW_INT32 *bar_size); + + +/* Initialize Common Layer for a given controller. */ +extern TW_INT32 tw_cl_init_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, + TW_UINT32 flags, TW_INT32 device_id, TW_INT32 max_simult_reqs, + TW_INT32 max_aens, TW_VOID *non_dma_mem, TW_VOID *dma_mem, + TW_UINT64 dma_mem_phys + ); + + +/* CL's interrupt handler. */ +extern TW_INT32 tw_cl_interrupt(struct tw_cl_ctlr_handle *ctlr_handle); + + +/* CL's ioctl handler. */ +extern TW_INT32 tw_cl_ioctl(struct tw_cl_ctlr_handle *ctlr_handle, + u_long cmd, TW_VOID *buf); + + +#ifdef TW_OSL_DEBUG +/* Print CL's state/statistics for a controller. */ +extern TW_VOID tw_cl_print_ctlr_stats(struct tw_cl_ctlr_handle *ctlr_handle); + +/* Prints CL internal details of a given request. */ +extern TW_VOID tw_cl_print_req_info(struct tw_cl_req_handle *req_handle); +#endif /* TW_OSL_DEBUG */ + + +/* Soft reset controller. */ +extern TW_INT32 tw_cl_reset_ctlr(struct tw_cl_ctlr_handle *ctlr_handle); + + +#ifdef TW_OSL_DEBUG +/* Reset CL's statistics for a controller. */ +extern TW_VOID tw_cl_reset_stats(struct tw_cl_ctlr_handle *ctlr_handle); +#endif /* TW_OSL_DEBUG */ + + +/* Stop a controller. */ +extern TW_INT32 tw_cl_shutdown_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, + TW_UINT32 flags); + + +/* Submit a SCSI I/O request. */ +extern TW_INT32 tw_cl_start_io(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle); + + +#endif /* TW_BUILDING_API */ + +#endif /* TW_CL_SHARE_H */ diff --git a/sys/dev/raid/twa/tw_osl.h b/sys/dev/raid/twa/tw_osl.h new file mode 100644 index 0000000000..edc558021b --- /dev/null +++ b/sys/dev/raid/twa/tw_osl.h @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl.h,v 1.8 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + + +#ifndef TW_OSL_H + +#define TW_OSL_H + + +/* + * OS Layer internal macros, structures and functions. + */ + + +#define TW_OSLI_DEVICE_NAME "3ware 9000 series Storage Controller" + +#define TW_OSLI_MALLOC_CLASS M_TWA +#define TW_OSLI_MAX_NUM_REQUESTS TW_CL_MAX_SIMULTANEOUS_REQUESTS +/* Reserve two command packets. One for ioctls and one for AENs */ +#define TW_OSLI_MAX_NUM_IOS (TW_OSLI_MAX_NUM_REQUESTS - 2) +#define TW_OSLI_MAX_NUM_AENS 0x100 + +#ifdef PAE +#define TW_OSLI_DMA_BOUNDARY (1u << 31) +#else +#define TW_OSLI_DMA_BOUNDARY ((bus_size_t)((uint64_t)1 << 32)) +#endif + +/* Possible values of req->state. */ +#define TW_OSLI_REQ_STATE_INIT 0x0 /* being initialized */ +#define TW_OSLI_REQ_STATE_BUSY 0x1 /* submitted to CL */ +#define TW_OSLI_REQ_STATE_PENDING 0x2 /* in pending queue */ +#define TW_OSLI_REQ_STATE_COMPLETE 0x3 /* completed by CL */ + +/* Possible values of req->flags. */ +#define TW_OSLI_REQ_FLAGS_DATA_IN (1<<0) /* read request */ +#define TW_OSLI_REQ_FLAGS_DATA_OUT (1<<1) /* write request */ +#define TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED (1<<2)/* data in ccb is misaligned, + have to copy to/from private buffer */ +#define TW_OSLI_REQ_FLAGS_MAPPED (1<<3) /* request has been mapped */ +#define TW_OSLI_REQ_FLAGS_IN_PROGRESS (1<<4) /* bus_dmamap_load returned + EINPROGRESS */ +#define TW_OSLI_REQ_FLAGS_PASSTHRU (1<<5) /* pass through request */ +#define TW_OSLI_REQ_FLAGS_SLEEPING (1<<6) /* owner sleeping on this cmd */ + + +#ifdef TW_OSL_DEBUG +struct tw_osli_q_stats { + TW_UINT32 cur_len; /* current # of items in q */ + TW_UINT32 max_len; /* max value reached by q_length */ +}; +#endif /* TW_OSL_DEBUG */ + + +/* Queues of OSL internal request context packets. */ +#define TW_OSLI_FREE_Q 0 /* free q */ +#define TW_OSLI_BUSY_Q 1 /* q of reqs submitted to CL */ +#define TW_OSLI_Q_COUNT 2 /* total number of queues */ + +/* Driver's request packet. */ +struct tw_osli_req_context { + struct tw_cl_req_handle req_handle;/* tag to track req b/w OSL & CL */ + struct lock ioctl_wake_timeout_lock_handle;/* non-spin lock used to detect ioctl timeout */ + struct lock *ioctl_wake_timeout_lock;/* ptr to above lock */ + struct twa_softc *ctlr; /* ptr to OSL's controller context */ + TW_VOID *data; /* ptr to data being passed to CL */ + TW_UINT32 length; /* length of buf being passed to CL */ + + /* + * ptr to, and length of data passed to us from above, in case a buffer + * copy was done due to non-compliance to alignment requirements + */ + TW_VOID *real_data; + TW_UINT32 real_length; + + TW_UINT32 state; /* request state */ + TW_UINT32 flags; /* request flags */ + + /* error encountered before request submission to CL */ + TW_UINT32 error_code; + + /* ptr to orig req for use during callback */ + TW_VOID *orig_req; + + struct tw_cl_link link; /* to link this request in a list */ + bus_dmamap_t dma_map;/* DMA map for data */ + struct tw_cl_req_packet req_pkt;/* req pkt understood by CL */ +}; + + +/* Per-controller structure. */ +struct twa_softc { + struct tw_cl_ctlr_handle ctlr_handle; + struct tw_osli_req_context *req_ctx_buf; + + /* Controller state. */ + TW_UINT8 open; + TW_UINT32 flags; + + TW_INT32 device_id; + TW_UINT32 alignment; + TW_UINT32 sg_size_factor; + + TW_VOID *non_dma_mem; + TW_VOID *dma_mem; + TW_UINT64 dma_mem_phys; + + /* Request queues and arrays. */ + struct tw_cl_link req_q_head[TW_OSLI_Q_COUNT]; + + struct task deferred_intr_callback;/* taskqueue function */ + struct spinlock io_lock_handle;/* general purpose lock */ + struct spinlock *io_lock;/* ptr to general purpose lock */ + struct spinlock q_lock_handle; /* queue manipulation lock */ + struct spinlock *q_lock;/* ptr to queue manipulation lock */ + struct lock sim_lock_handle;/* sim lock shared with cam */ + struct lock *sim_lock;/* ptr to sim lock */ + +#ifdef TW_OSL_DEBUG + struct tw_osli_q_stats q_stats[TW_OSLI_Q_COUNT];/* queue statistics */ +#endif /* TW_OSL_DEBUG */ + + device_t bus_dev; /* bus device */ + struct cdev *ctrl_dev; /* control device */ + struct resource *reg_res; /* register interface window */ + TW_INT32 reg_res_id; /* register resource id */ + bus_space_handle_t bus_handle; /* bus space handle */ + bus_space_tag_t bus_tag; /* bus space tag */ + bus_dma_tag_t parent_tag; /* parent DMA tag */ + bus_dma_tag_t cmd_tag; /* DMA tag for CL's DMA'able mem */ + bus_dma_tag_t dma_tag; /* data buffer DMA tag */ + bus_dma_tag_t ioctl_tag; /* ioctl data buffer DMA tag */ + bus_dmamap_t cmd_map; /* DMA map for CL's DMA'able mem */ + bus_dmamap_t ioctl_map; /* DMA map for ioctl data buffers */ + struct resource *irq_res; /* interrupt resource */ + TW_INT32 irq_res_id; /* register resource id */ + TW_VOID *intr_handle; /* interrupt handle */ + + struct sysctl_ctx_list sysctl_ctxt; /* sysctl context */ + struct sysctl_oid *sysctl_tree; /* sysctl oid */ + + struct cam_sim *sim; /* sim for this controller */ + struct cam_path *path; /* peripheral, path, tgt, lun + associated with this controller */ +}; + + + +/* + * Queue primitives. + */ + +#ifdef TW_OSL_DEBUG + +#define TW_OSLI_Q_INIT(sc, q_type) do { \ + (sc)->q_stats[q_type].cur_len = 0; \ + (sc)->q_stats[q_type].max_len = 0; \ +} while(0) + + +#define TW_OSLI_Q_INSERT(sc, q_type) do { \ + struct tw_osli_q_stats *q_stats = &((sc)->q_stats[q_type]); \ + \ + if (++(q_stats->cur_len) > q_stats->max_len) \ + q_stats->max_len = q_stats->cur_len; \ +} while(0) + + +#define TW_OSLI_Q_REMOVE(sc, q_type) \ + (sc)->q_stats[q_type].cur_len-- + + +#else /* TW_OSL_DEBUG */ + +#define TW_OSLI_Q_INIT(sc, q_index) +#define TW_OSLI_Q_INSERT(sc, q_index) +#define TW_OSLI_Q_REMOVE(sc, q_index) + +#endif /* TW_OSL_DEBUG */ + + + +/* Initialize a queue of requests. */ +static __inline TW_VOID +tw_osli_req_q_init(struct twa_softc *sc, TW_UINT8 q_type) +{ + TW_CL_Q_INIT(&(sc->req_q_head[q_type])); + TW_OSLI_Q_INIT(sc, q_type); +} + + + +/* Insert the given request at the head of the given queue (q_type). */ +static __inline TW_VOID +tw_osli_req_q_insert_head(struct tw_osli_req_context *req, TW_UINT8 q_type) +{ + spin_lock_wr(req->ctlr->q_lock); + TW_CL_Q_INSERT_HEAD(&(req->ctlr->req_q_head[q_type]), &(req->link)); + TW_OSLI_Q_INSERT(req->ctlr, q_type); + spin_unlock_wr(req->ctlr->q_lock); +} + + + +/* Insert the given request at the tail of the given queue (q_type). */ +static __inline TW_VOID +tw_osli_req_q_insert_tail(struct tw_osli_req_context *req, TW_UINT8 q_type) +{ + spin_lock_wr(req->ctlr->q_lock); + TW_CL_Q_INSERT_TAIL(&(req->ctlr->req_q_head[q_type]), &(req->link)); + TW_OSLI_Q_INSERT(req->ctlr, q_type); + spin_unlock_wr(req->ctlr->q_lock); +} + + + +/* Remove and return the request at the head of the given queue (q_type). */ +static __inline struct tw_osli_req_context * +tw_osli_req_q_remove_head(struct twa_softc *sc, TW_UINT8 q_type) +{ + struct tw_osli_req_context *req = NULL; + struct tw_cl_link *link; + + spin_lock_wr(sc->q_lock); + if ((link = TW_CL_Q_FIRST_ITEM(&(sc->req_q_head[q_type]))) != + TW_CL_NULL) { + req = TW_CL_STRUCT_HEAD(link, + struct tw_osli_req_context, link); + TW_CL_Q_REMOVE_ITEM(&(sc->req_q_head[q_type]), &(req->link)); + TW_OSLI_Q_REMOVE(sc, q_type); + } + spin_unlock_wr(sc->q_lock); + return(req); +} + + + +/* Remove the given request from the given queue (q_type). */ +static __inline TW_VOID +tw_osli_req_q_remove_item(struct tw_osli_req_context *req, TW_UINT8 q_type) +{ + spin_lock_wr(req->ctlr->q_lock); + TW_CL_Q_REMOVE_ITEM(&(req->ctlr->req_q_head[q_type]), &(req->link)); + TW_OSLI_Q_REMOVE(req->ctlr, q_type); + spin_unlock_wr(req->ctlr->q_lock); +} + + + +#ifdef TW_OSL_DEBUG + +extern TW_INT32 TW_DEBUG_LEVEL_FOR_OSL; + +#define tw_osli_dbg_dprintf(dbg_level, sc, fmt, args...) \ + if (dbg_level <= TW_DEBUG_LEVEL_FOR_OSL) \ + device_printf(sc->bus_dev, "%s: " fmt "\n", \ + __func__, ##args) + + +#define tw_osli_dbg_printf(dbg_level, fmt, args...) \ + if (dbg_level <= TW_DEBUG_LEVEL_FOR_OSL) \ + kprintf("%s: " fmt "\n", __func__, ##args) + +#else /* TW_OSL_DEBUG */ + +#define tw_osli_dbg_dprintf(dbg_level, sc, fmt, args...) +#define tw_osli_dbg_printf(dbg_level, fmt, args...) + +#endif /* TW_OSL_DEBUG */ + + +/* For regular printing. */ +#define twa_printf(sc, fmt, args...) \ + device_printf(((struct twa_softc *)(sc))->bus_dev, fmt, ##args) + +/* For printing in the "consistent error reporting" format. */ +#define tw_osli_printf(sc, err_specific_desc, args...) \ + device_printf((sc)->bus_dev, \ + "%s: (0x%02X: 0x%04X): %s: " err_specific_desc "\n", ##args) + + + +#endif /* TW_OSL_H */ diff --git a/sys/dev/raid/twa/tw_osl_cam.c b/sys/dev/raid/twa/tw_osl_cam.c new file mode 100644 index 0000000000..a5bffa6db5 --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_cam.c @@ -0,0 +1,741 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_cam.c,v 1.14 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * FreeBSD CAM related functions. + */ + + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static TW_VOID twa_action(struct cam_sim *sim, union ccb *ccb); +static TW_VOID twa_poll(struct cam_sim *sim); +static TW_VOID twa_timeout(TW_VOID *arg); +static TW_VOID twa_bus_scan_cb(struct cam_periph *periph, union ccb *ccb); + +static TW_INT32 tw_osli_execute_scsi(struct tw_osli_req_context *req, + union ccb *ccb); + + + +/* + * Function name: tw_osli_cam_attach + * Description: Attaches the driver to CAM. + * + * Input: sc -- ptr to OSL internal ctlr context + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_osli_cam_attach(struct twa_softc *sc) +{ + struct cam_devq *devq; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + /* + * Create the device queue for our SIM. + */ + if ((devq = cam_simq_alloc(TW_OSLI_MAX_NUM_REQUESTS)) == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2100, + "Failed to create SIM device queue", + ENOMEM); + return(ENOMEM); + } + + /* + * Create a SIM entry. Though we can support TW_OSLI_MAX_NUM_REQUESTS + * simultaneous requests, we claim to be able to handle only + * TW_OSLI_MAX_NUM_IOS (two less), so that we always have a request + * packet available to service ioctls and AENs. + */ + tw_osli_dbg_dprintf(3, sc, "Calling cam_sim_alloc"); + sc->sim = cam_sim_alloc(twa_action, twa_poll, "twa", sc, + device_get_unit(sc->bus_dev), sc->sim_lock, + TW_OSLI_MAX_NUM_IOS, 1, devq); + if (sc->sim == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2101, + "Failed to create a SIM entry", + ENOMEM); + return(ENOMEM); + } + + /* + * Register the bus. + */ + tw_osli_dbg_dprintf(3, sc, "Calling xpt_bus_register"); + lockmgr(sc->sim_lock, LK_EXCLUSIVE); + if (xpt_bus_register(sc->sim, 0) != CAM_SUCCESS) { + cam_sim_free(sc->sim); + sc->sim = NULL; /* so cam_detach will not try to free it */ + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2102, + "Failed to register the bus", + ENXIO); + lockmgr(sc->sim_lock, LK_RELEASE); + return(ENXIO); + } + + tw_osli_dbg_dprintf(3, sc, "Calling xpt_create_path"); + if (xpt_create_path(&sc->path, NULL, + cam_sim_path(sc->sim), + CAM_TARGET_WILDCARD, + CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + xpt_bus_deregister(cam_sim_path (sc->sim)); + /* Passing TRUE to cam_sim_free will free the devq as well. */ + cam_sim_free(sc->sim); + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2103, + "Failed to create path", + ENXIO); + lockmgr(sc->sim_lock, LK_RELEASE); + return(ENXIO); + } + lockmgr(sc->sim_lock, LK_RELEASE); + + tw_osli_dbg_dprintf(3, sc, "exiting"); + return(0); +} + + + +/* + * Function name: tw_osli_cam_detach + * Description: Detaches the driver from CAM. + * + * Input: sc -- ptr to OSL internal ctlr context + * Output: None + * Return value: None + */ +TW_VOID +tw_osli_cam_detach(struct twa_softc *sc) +{ + tw_osli_dbg_dprintf(3, sc, "entered"); + + lockmgr(sc->sim_lock, LK_EXCLUSIVE); + + if (sc->path) + xpt_free_path(sc->path); + if (sc->sim) { + xpt_bus_deregister(cam_sim_path(sc->sim)); + /* Passing TRUE to cam_sim_free will free the devq as well. */ + cam_sim_free(sc->sim); + } + /* It's ok have 1 hold count while destroying the mutex */ + lockuninit(sc->sim_lock); +} + + + +/* + * Function name: tw_osli_execute_scsi + * Description: Build a fw cmd, based on a CAM style ccb, and + * send it down. + * + * Input: req -- ptr to OSL internal request context + * ccb -- ptr to CAM style ccb + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_osli_execute_scsi(struct tw_osli_req_context *req, union ccb *ccb) +{ + struct twa_softc *sc = req->ctlr; + struct tw_cl_req_packet *req_pkt; + struct tw_cl_scsi_req_packet *scsi_req; + struct ccb_hdr *ccb_h = &(ccb->ccb_h); + struct ccb_scsiio *csio = &(ccb->csio); + TW_INT32 error; + + tw_osli_dbg_dprintf(10, sc, "SCSI I/O request 0x%x", + csio->cdb_io.cdb_bytes[0]); + + if (ccb_h->target_id >= TW_CL_MAX_NUM_UNITS) { + tw_osli_dbg_dprintf(3, sc, "Invalid target. PTL = %x %x %x", + ccb_h->path_id, ccb_h->target_id, ccb_h->target_lun); + ccb_h->status |= CAM_TID_INVALID; + xpt_done(ccb); + return(1); + } + if (ccb_h->target_lun >= TW_CL_MAX_NUM_LUNS) { + tw_osli_dbg_dprintf(3, sc, "Invalid lun. PTL = %x %x %x", + ccb_h->path_id, ccb_h->target_id, ccb_h->target_lun); + ccb_h->status |= CAM_LUN_INVALID; + xpt_done(ccb); + return(1); + } + + if(ccb_h->flags & CAM_CDB_PHYS) { + tw_osli_printf(sc, "", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2105, + "Physical CDB address!"); + ccb_h->status = CAM_REQ_INVALID; + xpt_done(ccb); + return(1); + } + + /* + * We are going to work on this request. Mark it as enqueued (though + * we don't actually queue it...) + */ + ccb_h->status |= CAM_SIM_QUEUED; + + if((ccb_h->flags & CAM_DIR_MASK) != CAM_DIR_NONE) { + if(ccb_h->flags & CAM_DIR_IN) + req->flags |= TW_OSLI_REQ_FLAGS_DATA_IN; + else + req->flags |= TW_OSLI_REQ_FLAGS_DATA_OUT; + } + + /* Build the CL understood request packet for SCSI cmds. */ + req_pkt = &req->req_pkt; + req_pkt->status = 0; + req_pkt->tw_osl_callback = tw_osl_complete_io; + scsi_req = &(req_pkt->gen_req_pkt.scsi_req); + scsi_req->unit = ccb_h->target_id; + scsi_req->lun = ccb_h->target_lun; + scsi_req->sense_len = 0; + scsi_req->sense_data = (TW_UINT8 *)(&csio->sense_data); + scsi_req->scsi_status = 0; + if(ccb_h->flags & CAM_CDB_POINTER) + scsi_req->cdb = csio->cdb_io.cdb_ptr; + else + scsi_req->cdb = csio->cdb_io.cdb_bytes; + scsi_req->cdb_len = csio->cdb_len; + + if (!(ccb_h->flags & CAM_DATA_PHYS)) { + /* Virtual data addresses. Need to convert them... */ + tw_osli_dbg_dprintf(3, sc, + "XPT_SCSI_IO: Single virtual address!"); + if (!(ccb_h->flags & CAM_SCATTER_VALID)) { + if (csio->dxfer_len > TW_CL_MAX_IO_SIZE) { + tw_osli_printf(sc, "size = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2106, + "I/O size too big", + csio->dxfer_len); + ccb_h->status = CAM_REQ_TOO_BIG; + xpt_done(ccb); + return(1); + } + + if ((req->length = csio->dxfer_len)) { + req->data = csio->data_ptr; + scsi_req->sgl_entries = 1; + } + } else { + tw_osli_printf(sc, "", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2107, + "XPT_SCSI_IO: Got SGList"); + ccb_h->status = CAM_REQ_INVALID; + xpt_done(ccb); + return(1); + } + } else { + /* Data addresses are physical. */ + tw_osli_printf(sc, "", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2108, + "XPT_SCSI_IO: Physical data addresses"); + ccb_h->status = CAM_REQ_INVALID; + ccb_h->status &= ~CAM_SIM_QUEUED; + xpt_done(ccb); + return(1); + } + + callout_reset(&ccb->ccb_h.timeout_ch, + (ccb_h->timeout * hz) / 1000, twa_timeout, req); + /* + * twa_map_load_data_callback will fill in the SGL, + * and submit the I/O. + */ + error = tw_osli_map_request(req); + return(error); +} + + + +/* + * Function name: twa_action + * Description: Driver entry point for CAM's use. + * + * Input: sim -- sim corresponding to the ctlr + * ccb -- ptr to CAM request + * Output: None + * Return value: None + */ +TW_VOID +twa_action(struct cam_sim *sim, union ccb *ccb) +{ + struct twa_softc *sc = (struct twa_softc *)cam_sim_softc(sim); + struct ccb_hdr *ccb_h = &(ccb->ccb_h); + + switch (ccb_h->func_code) { + case XPT_SCSI_IO: /* SCSI I/O */ + { + struct tw_osli_req_context *req; + + req = tw_osli_get_request(sc); + if (req == NULL) { + tw_osli_dbg_dprintf(2, sc, "Cannot get request pkt."); + /* + * Freeze the simq to maintain ccb ordering. The next + * ccb that gets completed will unfreeze the simq. + */ + ccb_h->status |= CAM_REQUEUE_REQ; + xpt_done(ccb); + break; + } + req->req_handle.osl_req_ctxt = req; + req->req_handle.is_io = TW_CL_TRUE; + req->orig_req = ccb; + if (tw_osli_execute_scsi(req, ccb)) + tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); + break; + } + + case XPT_ABORT: + tw_osli_dbg_dprintf(2, sc, "Abort request."); + ccb_h->status = CAM_UA_ABORT; + xpt_done(ccb); + break; + + case XPT_RESET_BUS: + tw_cl_create_event(&(sc->ctlr_handle), TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2108, 0x3, TW_CL_SEVERITY_INFO_STRING, + "Received Reset Bus request from CAM", + " "); + + lockmgr(sc->sim_lock, LK_RELEASE); + if (tw_cl_reset_ctlr(&sc->ctlr_handle)) { + tw_cl_create_event(&(sc->ctlr_handle), TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2109, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Failed to reset bus", + " "); + ccb_h->status = CAM_REQ_CMP_ERR; + } + else + ccb_h->status = CAM_REQ_CMP; + + lockmgr(sc->sim_lock, LK_EXCLUSIVE); + xpt_done(ccb); + break; + + case XPT_SET_TRAN_SETTINGS: + tw_osli_dbg_dprintf(3, sc, "XPT_SET_TRAN_SETTINGS"); + + /* + * This command is not supported, since it's very specific + * to SCSI, and we are doing ATA. + */ + ccb_h->status = CAM_FUNC_NOTAVAIL; + xpt_done(ccb); + break; + + case XPT_GET_TRAN_SETTINGS: + { + struct ccb_trans_settings *cts = &ccb->cts; + struct ccb_trans_settings_scsi *scsi = + &cts->proto_specific.scsi; + struct ccb_trans_settings_spi *spi = + &cts->xport_specific.spi; + + cts->protocol = PROTO_SCSI; + cts->protocol_version = SCSI_REV_2; + cts->transport = XPORT_SPI; + cts->transport_version = 2; + + spi->valid = CTS_SPI_VALID_DISC; + spi->flags = CTS_SPI_FLAGS_DISC_ENB; + scsi->valid = CTS_SCSI_VALID_TQ; + scsi->flags = CTS_SCSI_FLAGS_TAG_ENB; + tw_osli_dbg_dprintf(3, sc, "XPT_GET_TRAN_SETTINGS"); + ccb_h->status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } + + case XPT_CALC_GEOMETRY: + tw_osli_dbg_dprintf(3, sc, "XPT_CALC_GEOMETRY"); + cam_calc_geometry(&ccb->ccg, 1/* extended */); + xpt_done(ccb); + break; + + case XPT_PATH_INQ: /* Path inquiry -- get twa properties */ + { + struct ccb_pathinq *path_inq = &ccb->cpi; + + tw_osli_dbg_dprintf(3, sc, "XPT_PATH_INQ request"); + + path_inq->version_num = 1; + path_inq->hba_inquiry = 0; + path_inq->target_sprt = 0; + path_inq->hba_misc = 0; + path_inq->hba_eng_cnt = 0; + path_inq->max_target = TW_CL_MAX_NUM_UNITS; + path_inq->max_lun = TW_CL_MAX_NUM_LUNS - 1; + path_inq->unit_number = cam_sim_unit(sim); + path_inq->bus_id = cam_sim_bus(sim); + path_inq->initiator_id = TW_CL_MAX_NUM_UNITS; + path_inq->base_transfer_speed = 100000; + strncpy(path_inq->sim_vid, "FreeBSD", SIM_IDLEN); + strncpy(path_inq->hba_vid, "3ware", HBA_IDLEN); + strncpy(path_inq->dev_name, cam_sim_name(sim), DEV_IDLEN); + path_inq->transport = XPORT_SPI; + path_inq->transport_version = 2; + path_inq->protocol = PROTO_SCSI; + path_inq->protocol_version = SCSI_REV_2; + ccb_h->status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } + + default: + tw_osli_dbg_dprintf(3, sc, "func_code = %x", ccb_h->func_code); + ccb_h->status = CAM_REQ_INVALID; + xpt_done(ccb); + break; + } +} + + + +/* + * Function name: twa_poll + * Description: Driver entry point called when interrupts are not + * available. + * + * Input: sim -- sim corresponding to the controller + * Output: None + * Return value: None + */ +TW_VOID +twa_poll(struct cam_sim *sim) +{ + struct twa_softc *sc = (struct twa_softc *)(cam_sim_softc(sim)); + + tw_osli_dbg_dprintf(3, sc, "entering; sc = %p", sc); + tw_cl_interrupt(&(sc->ctlr_handle)); + tw_osli_dbg_dprintf(3, sc, "exiting; sc = %p", sc); +} + + + +/* + * Function name: twa_timeout + * Description: Driver entry point for being alerted on a request + * timing out. + * + * Input: arg -- ptr to timed out request + * Output: None + * Return value: None + */ +static TW_VOID +twa_timeout(TW_VOID *arg) +{ + struct tw_osli_req_context *req = + (struct tw_osli_req_context *)arg; + + tw_cl_create_event(&(req->ctlr->ctlr_handle), TW_CL_TRUE, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x210B, 0x1, TW_CL_SEVERITY_ERROR_STRING, + "Request timed out!", + "request = %p", req); + tw_cl_reset_ctlr(&(req->ctlr->ctlr_handle)); +} + + + +/* + * Function name: tw_osli_request_bus_scan + * Description: Requests CAM for a scan of the bus. + * + * Input: sc -- ptr to per ctlr structure + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_osli_request_bus_scan(struct twa_softc *sc) +{ + union ccb *ccb; + + tw_osli_dbg_dprintf(3, sc, "entering"); + + /* If we get here before sc->sim is initialized, return an error. */ + if (!(sc->sim)) + return(ENXIO); + if ((ccb = xpt_alloc_ccb()) == NULL) + return(ENOMEM); + lockmgr(sc->sim_lock, LK_EXCLUSIVE); + if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim), + CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + xpt_free_ccb(ccb); + lockmgr(sc->sim_lock, LK_RELEASE); + return(EIO); + } + + xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, 5/*priority (low)*/); + ccb->ccb_h.func_code = XPT_SCAN_BUS; + ccb->ccb_h.cbfcnp = twa_bus_scan_cb; + ccb->crcn.flags = CAM_FLAG_NONE; + xpt_action(ccb); + + lockmgr(sc->sim_lock, LK_RELEASE); + return(0); +} + + + +/* + * Function name: twa_bus_scan_cb + * Description: Callback from CAM on a bus scan request. + * + * Input: periph -- we don't use this + * ccb -- bus scan request ccb that we sent to CAM + * Output: None + * Return value: None + */ +static TW_VOID +twa_bus_scan_cb(struct cam_periph *periph, union ccb *ccb) +{ + tw_osli_dbg_printf(3, "entering"); + + if (ccb->ccb_h.status != CAM_REQ_CMP) + kprintf("cam_scan_callback: failure status = %x\n", + ccb->ccb_h.status); + else + tw_osli_dbg_printf(3, "success"); + + xpt_free_path(ccb->ccb_h.path); + kfree(ccb, M_TEMP); +} + + + +/* + * Function name: tw_osli_disallow_new_requests + * Description: Calls the appropriate CAM function, so as to freeze + * the flow of new requests from CAM to this controller. + * + * Input: sc -- ptr to OSL internal ctlr context + * req_handle -- ptr to request handle sent by OSL. + * Output: None + * Return value: None + */ +TW_VOID +tw_osli_disallow_new_requests(struct twa_softc *sc, + struct tw_cl_req_handle *req_handle) +{ + /* Only freeze/release the simq for IOs */ + if (req_handle->is_io) { + struct tw_osli_req_context *req = req_handle->osl_req_ctxt; + union ccb *ccb = (union ccb *)(req->orig_req); + + xpt_freeze_simq(sc->sim, 1); + ccb->ccb_h.status |= CAM_RELEASE_SIMQ; + } +} + + + +/* + * Function name: tw_osl_ctlr_busy + * Description: CL calls this function on cmd queue full or otherwise, + * when it is too busy to accept new requests. + * + * Input: ctlr_handle -- ptr to controller handle + * req_handle -- ptr to request handle sent by OSL. + * Output: None + * Return value: None + */ +TW_VOID +tw_osl_ctlr_busy(struct tw_cl_ctlr_handle *ctlr_handle, + struct tw_cl_req_handle *req_handle) +{ + tw_osli_disallow_new_requests(ctlr_handle->osl_ctlr_ctxt, req_handle); +} + + + +/* + * Function name: tw_osl_scan_bus + * Description: CL calls this function to request for a bus scan. + * + * Input: ctlr_handle -- ptr to controller handle + * Output: None + * Return value: None + */ +TW_VOID +tw_osl_scan_bus(struct tw_cl_ctlr_handle *ctlr_handle) +{ + struct twa_softc *sc = ctlr_handle->osl_ctlr_ctxt; + TW_INT32 error; + + if ((error = tw_osli_request_bus_scan(sc))) + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2109, + "Bus scan request to CAM failed", + error); +} + + + +/* + * Function name: tw_osl_complete_io + * Description: Called to complete CAM scsi requests. + * + * Input: req_handle -- ptr to request handle + * Output: None + * Return value: None + */ +TW_VOID +tw_osl_complete_io(struct tw_cl_req_handle *req_handle) +{ + struct tw_osli_req_context *req = req_handle->osl_req_ctxt; + struct tw_cl_req_packet *req_pkt = + (struct tw_cl_req_packet *)(&req->req_pkt); + struct tw_cl_scsi_req_packet *scsi_req; + struct twa_softc *sc = req->ctlr; + union ccb *ccb = (union ccb *)(req->orig_req); + + tw_osli_dbg_dprintf(10, sc, "entering"); + + if (req->state != TW_OSLI_REQ_STATE_BUSY) + tw_osli_printf(sc, "request = %p, status = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x210A, + "Unposted command completed!!", + req, req->state); + + /* + * Remove request from the busy queue. Just mark it complete. + * There's no need to move it into the complete queue as we are + * going to be done with it right now. + */ + req->state = TW_OSLI_REQ_STATE_COMPLETE; + tw_osli_req_q_remove_item(req, TW_OSLI_BUSY_Q); + + tw_osli_unmap_request(req); + + callout_stop(&ccb->ccb_h.timeout_ch); + if (req->error_code) { + /* This request never got submitted to the firmware. */ + if (req->error_code == EBUSY) { + /* + * Cmd queue is full, or the Common Layer is out of + * resources. The simq will already have been frozen. + * When this ccb gets completed will unfreeze the simq. + */ + ccb->ccb_h.status |= CAM_REQUEUE_REQ; + } + else if (req->error_code == EFBIG) + ccb->ccb_h.status = CAM_REQ_TOO_BIG; + else + ccb->ccb_h.status = CAM_REQ_CMP_ERR; + } else { + scsi_req = &(req_pkt->gen_req_pkt.scsi_req); + if (req_pkt->status == TW_CL_ERR_REQ_SUCCESS) + ccb->ccb_h.status = CAM_REQ_CMP; + else { + if (req_pkt->status & TW_CL_ERR_REQ_INVALID_TARGET) + ccb->ccb_h.status |= CAM_TID_INVALID; + else if (req_pkt->status & TW_CL_ERR_REQ_INVALID_LUN) + ccb->ccb_h.status |= CAM_LUN_INVALID; + else if (req_pkt->status & TW_CL_ERR_REQ_SCSI_ERROR) + ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR; + else if (req_pkt->status & TW_CL_ERR_REQ_BUS_RESET) + ccb->ccb_h.status |= CAM_SCSI_BUS_RESET; + /* + * If none of the above errors occurred, simply + * mark completion error. + */ + if (ccb->ccb_h.status == 0) + ccb->ccb_h.status = CAM_REQ_CMP_ERR; + + if (req_pkt->status & TW_CL_ERR_REQ_AUTO_SENSE_VALID) { + ccb->csio.sense_len = scsi_req->sense_len; + ccb->ccb_h.status |= CAM_AUTOSNS_VALID; + } + } + + ccb->csio.scsi_status = scsi_req->scsi_status; + } + + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + lockmgr(sc->sim_lock, LK_EXCLUSIVE); + xpt_done(ccb); + lockmgr(sc->sim_lock, LK_RELEASE); + if (! req->error_code) + /* twa_action will free the request otherwise */ + tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); +} diff --git a/sys/dev/raid/twa/tw_osl_externs.h b/sys/dev/raid/twa/tw_osl_externs.h new file mode 100644 index 0000000000..6a4962b313 --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_externs.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_externs.h,v 1.3 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_OSL_EXTERNS_H + +#define TW_OSL_EXTERNS_H + + +/* + * Data structures and functions global to the OS Layer. + */ + + +/* External data structures. */ + +extern int mp_ncpus; + + + +/* Functions in tw_osl_freebsd.c */ + +/* Build a firmware passthru cmd pkt, and submit it to CL. */ +extern TW_INT32 tw_osli_fw_passthru(struct twa_softc *sc, TW_INT8 *buf); + +/* Get an OSL internal request context packet. */ +extern struct tw_osli_req_context *tw_osli_get_request(struct twa_softc *sc); + +/* Map data to DMA'able memory. */ +extern TW_INT32 tw_osli_map_request(struct tw_osli_req_context *req); + +/* Undo mapping. */ +extern TW_VOID tw_osli_unmap_request(struct tw_osli_req_context *req); + + + +/* Functions in tw_osl_cam.c */ + +/* Attach to CAM. */ +extern TW_INT32 tw_osli_cam_attach(struct twa_softc *sc); + +/* Detach from CAM. */ +extern TW_VOID tw_osli_cam_detach(struct twa_softc *sc); + +/* Request CAM for a bus scan. */ +extern TW_INT32 tw_osli_request_bus_scan(struct twa_softc *sc); + +/* Freeze ccb flow from CAM. */ +extern TW_VOID tw_osli_disallow_new_requests(struct twa_softc *sc, + struct tw_cl_req_handle *req_handle); + +/* OSL's completion routine for SCSI I/O's. */ +extern TW_VOID tw_osl_complete_io(struct tw_cl_req_handle *req_handle); + +/* OSL's completion routine for passthru requests. */ +extern TW_VOID tw_osl_complete_passthru(struct tw_cl_req_handle *req_handle); + + + +#endif /* TW_OSL_EXTERNS_H */ diff --git a/sys/dev/raid/twa/tw_osl_freebsd.c b/sys/dev/raid/twa/tw_osl_freebsd.c new file mode 100644 index 0000000000..6e19c70ca8 --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_freebsd.c @@ -0,0 +1,1624 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * Copyright (c) 2000 Michael Smith + * Copyright (c) 2000 BSDi + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_freebsd.c,v 1.15 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + * Modifications by: Manjunath Ranganathaiah + */ + + +/* + * FreeBSD specific functions not related to CAM, and other + * miscellaneous functions. + */ + + +#include +#include +#include +#include + +#ifdef TW_OSL_DEBUG +TW_INT32 TW_DEBUG_LEVEL_FOR_OSL = TW_OSL_DEBUG; +TW_INT32 TW_OSL_DEBUG_LEVEL_FOR_CL = TW_OSL_DEBUG; +#endif /* TW_OSL_DEBUG */ + +MALLOC_DEFINE(TW_OSLI_MALLOC_CLASS, "twa_commands", "twa commands"); + + +static d_open_t twa_open; +static d_close_t twa_close; +static d_ioctl_t twa_ioctl; + +static struct dev_ops twa_ops = { + { "twa", 0, 0 }, + .d_open = twa_open, + .d_close = twa_close, + .d_ioctl = twa_ioctl, +}; + +static devclass_t twa_devclass; + + +/* + * Function name: twa_open + * Description: Called when the controller is opened. + * Simply marks the controller as open. + * + * Input: dev -- control device corresponding to the ctlr + * flags -- mode of open + * fmt -- device type (character/block etc.) + * proc -- current process + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_open(struct dev_open_args *ap) +{ + cdev_t dev = ap->a_head.a_dev; + struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); + + tw_osli_dbg_dprintf(5, sc, "entered"); + sc->open = TW_CL_TRUE; + return(0); +} + + + +/* + * Function name: twa_close + * Description: Called when the controller is closed. + * Simply marks the controller as not open. + * + * Input: dev -- control device corresponding to the ctlr + * flags -- mode of corresponding open + * fmt -- device type (character/block etc.) + * proc -- current process + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_close(struct dev_close_args *ap) +{ + cdev_t dev = ap->a_head.a_dev; + struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); + + tw_osli_dbg_dprintf(5, sc, "entered"); + sc->open = TW_CL_FALSE; + return(0); +} + + + +/* + * Function name: twa_ioctl + * Description: Called when an ioctl is posted to the controller. + * Handles any OS Layer specific cmds, passes the rest + * on to the Common Layer. + * + * Input: dev -- control device corresponding to the ctlr + * cmd -- ioctl cmd + * buf -- ptr to buffer in kernel memory, which is + * a copy of the input buffer in user-space + * flags -- mode of corresponding open + * proc -- current process + * Output: buf -- ptr to buffer in kernel memory, which will + * be copied to the output buffer in user-space + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_ioctl(struct dev_ioctl_args *ap) +{ + cdev_t dev = ap->a_head.a_dev; + u_long cmd = ap->a_cmd; + caddr_t buf = ap->a_data; + struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); + TW_INT32 error; + + tw_osli_dbg_dprintf(5, sc, "entered"); + + switch (cmd) { + case TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH: + tw_osli_dbg_dprintf(6, sc, "ioctl: fw_passthru"); + error = tw_osli_fw_passthru(sc, (TW_INT8 *)buf); + break; + + case TW_OSL_IOCTL_SCAN_BUS: + /* Request CAM for a bus scan. */ + tw_osli_dbg_dprintf(6, sc, "ioctl: scan bus"); + error = tw_osli_request_bus_scan(sc); + break; + + default: + tw_osli_dbg_dprintf(6, sc, "ioctl: 0x%lx", cmd); + error = tw_cl_ioctl(&sc->ctlr_handle, cmd, buf); + break; + } + return(error); +} + + + +static TW_INT32 twa_probe(device_t dev); +static TW_INT32 twa_attach(device_t dev); +static TW_INT32 twa_detach(device_t dev); +static TW_INT32 twa_shutdown(device_t dev); +#if 0 /* XXX swildner */ +static TW_VOID twa_busdma_lock(TW_VOID *lock_arg, bus_dma_lock_op_t op); +#endif +static TW_VOID twa_pci_intr(TW_VOID *arg); + +static TW_INT32 tw_osli_alloc_mem(struct twa_softc *sc); +static TW_VOID tw_osli_free_resources(struct twa_softc *sc); + +static TW_VOID twa_map_load_data_callback(TW_VOID *arg, + bus_dma_segment_t *segs, TW_INT32 nsegments, TW_INT32 error); +static TW_VOID twa_map_load_callback(TW_VOID *arg, + bus_dma_segment_t *segs, TW_INT32 nsegments, TW_INT32 error); + + +static device_method_t twa_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, twa_probe), + DEVMETHOD(device_attach, twa_attach), + DEVMETHOD(device_detach, twa_detach), + DEVMETHOD(device_shutdown, twa_shutdown), + + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_driver_added, bus_generic_driver_added), + {0, 0} +}; + +static driver_t twa_pci_driver = { + "twa", + twa_methods, + sizeof(struct twa_softc) +}; + +DRIVER_MODULE(twa, pci, twa_pci_driver, twa_devclass, 0, 0); +MODULE_DEPEND(twa, cam, 1, 1, 1); +MODULE_DEPEND(twa, pci, 1, 1, 1); + + +/* + * Function name: twa_probe + * Description: Called at driver load time. Claims 9000 ctlrs. + * + * Input: dev -- bus device corresponding to the ctlr + * Output: None + * Return value: <= 0 -- success + * > 0 -- failure + */ +static TW_INT32 +twa_probe(device_t dev) +{ + static TW_UINT8 first_ctlr = 1; + + tw_osli_dbg_printf(3, "entered"); + + if (tw_cl_ctlr_supported(pci_get_vendor(dev), pci_get_device(dev))) { + device_set_desc(dev, TW_OSLI_DEVICE_NAME); + /* Print the driver version only once. */ + if (first_ctlr) { + kprintf("3ware device driver for 9000 series storage " + "controllers, version: %s\n", + TW_OSL_DRIVER_VERSION_STRING); + first_ctlr = 0; + } + return(0); + } + return(ENXIO); +} + + + +/* + * Function name: twa_attach + * Description: Allocates pci resources; updates sc; adds a node to the + * sysctl tree to expose the driver version; makes calls + * (to the Common Layer) to initialize ctlr, and to + * attach to CAM. + * + * Input: dev -- bus device corresponding to the ctlr + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_attach(device_t dev) +{ + struct twa_softc *sc = device_get_softc(dev); + TW_UINT32 command; + TW_INT32 bar_num; + TW_INT32 bar0_offset; + TW_INT32 bar_size; + TW_INT32 error; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + sc->ctlr_handle.osl_ctlr_ctxt = sc; + + /* Initialize the softc structure. */ + sc->bus_dev = dev; + sc->device_id = pci_get_device(dev); + + /* Initialize the mutexes right here. */ + sc->io_lock = &(sc->io_lock_handle); + spin_init(sc->io_lock); + sc->q_lock = &(sc->q_lock_handle); + spin_init(sc->q_lock); + sc->sim_lock = &(sc->sim_lock_handle); + lockinit(sc->sim_lock, "tw_osl_sim_lock", 0, LK_CANRECURSE); + + sysctl_ctx_init(&sc->sysctl_ctxt); + sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctxt, + SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, + device_get_nameunit(dev), CTLFLAG_RD, 0, ""); + if (sc->sysctl_tree == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2000, + "Cannot add sysctl tree node", + ENXIO); + return(ENXIO); + } + SYSCTL_ADD_STRING(&sc->sysctl_ctxt, SYSCTL_CHILDREN(sc->sysctl_tree), + OID_AUTO, "driver_version", CTLFLAG_RD, + TW_OSL_DRIVER_VERSION_STRING, 0, "TWA driver version"); + + /* Make sure we are going to be able to talk to this board. */ + command = pci_read_config(dev, PCIR_COMMAND, 2); + if ((command & PCIM_CMD_PORTEN) == 0) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2001, + "Register window not available", + ENXIO); + tw_osli_free_resources(sc); + return(ENXIO); + } + + /* Force the busmaster enable bit on, in case the BIOS forgot. */ + command |= PCIM_CMD_BUSMASTEREN; + pci_write_config(dev, PCIR_COMMAND, command, 2); + + /* Allocate the PCI register window. */ + if ((error = tw_cl_get_pci_bar_info(sc->device_id, TW_CL_BAR_TYPE_MEM, + &bar_num, &bar0_offset, &bar_size))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201F, + "Can't get PCI BAR info", + error); + tw_osli_free_resources(sc); + return(error); + } + sc->reg_res_id = PCIR_BARS + bar0_offset; + if ((sc->reg_res = bus_alloc_resource(dev, SYS_RES_MEMORY, + &(sc->reg_res_id), 0, ~0, 1, RF_ACTIVE)) + == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2002, + "Can't allocate register window", + ENXIO); + tw_osli_free_resources(sc); + return(ENXIO); + } + sc->bus_tag = rman_get_bustag(sc->reg_res); + sc->bus_handle = rman_get_bushandle(sc->reg_res); + + /* Allocate and register our interrupt. */ + sc->irq_res_id = 0; + if ((sc->irq_res = bus_alloc_resource(sc->bus_dev, SYS_RES_IRQ, + &(sc->irq_res_id), 0, ~0, 1, + RF_SHAREABLE | RF_ACTIVE)) == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2003, + "Can't allocate interrupt", + ENXIO); + tw_osli_free_resources(sc); + return(ENXIO); + } + if ((error = bus_setup_intr(sc->bus_dev, sc->irq_res, + 0, + twa_pci_intr, + sc, &sc->intr_handle, NULL))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2004, + "Can't set up interrupt", + error); + tw_osli_free_resources(sc); + return(error); + } + + if ((error = tw_osli_alloc_mem(sc))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2005, + "Memory allocation failure", + error); + tw_osli_free_resources(sc); + return(error); + } + + /* Initialize the Common Layer for this controller. */ + if ((error = tw_cl_init_ctlr(&sc->ctlr_handle, sc->flags, sc->device_id, + TW_OSLI_MAX_NUM_REQUESTS, TW_OSLI_MAX_NUM_AENS, + sc->non_dma_mem, sc->dma_mem, + sc->dma_mem_phys + ))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2006, + "Failed to initialize Common Layer/controller", + error); + tw_osli_free_resources(sc); + return(error); + } + + /* Create the control device. */ + sc->ctrl_dev = make_dev(&twa_ops, device_get_unit(sc->bus_dev), + UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, + "twa%d", device_get_unit(sc->bus_dev)); + sc->ctrl_dev->si_drv1 = sc; + + if ((error = tw_osli_cam_attach(sc))) { + tw_osli_free_resources(sc); + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2007, + "Failed to initialize CAM", + error); + return(error); + } + + return(0); +} + + + +/* + * Function name: tw_osli_alloc_mem + * Description: Allocates memory needed both by CL and OSL. + * + * Input: sc -- OSL internal controller context + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +tw_osli_alloc_mem(struct twa_softc *sc) +{ + struct tw_osli_req_context *req; + TW_UINT32 max_sg_elements; + TW_UINT32 non_dma_mem_size; + TW_UINT32 dma_mem_size; + TW_INT32 error; + TW_INT32 i; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + sc->flags |= (sizeof(bus_addr_t) == 8) ? TW_CL_64BIT_ADDRESSES : 0; + sc->flags |= (sizeof(bus_size_t) == 8) ? TW_CL_64BIT_SG_LENGTH : 0; + + max_sg_elements = (sizeof(bus_addr_t) == 8) ? + TW_CL_MAX_64BIT_SG_ELEMENTS : TW_CL_MAX_32BIT_SG_ELEMENTS; + + if ((error = tw_cl_get_mem_requirements(&sc->ctlr_handle, sc->flags, + sc->device_id, TW_OSLI_MAX_NUM_REQUESTS, TW_OSLI_MAX_NUM_AENS, + &(sc->alignment), &(sc->sg_size_factor), + &non_dma_mem_size, &dma_mem_size + ))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2008, + "Can't get Common Layer's memory requirements", + error); + return(error); + } + + if ((sc->non_dma_mem = kmalloc(non_dma_mem_size, TW_OSLI_MALLOC_CLASS, + M_WAITOK)) == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2009, + "Can't allocate non-dma memory", + ENOMEM); + return(ENOMEM); + } + + /* Create the parent dma tag. */ + if (bus_dma_tag_create(NULL, /* parent */ + sc->alignment, /* alignment */ + TW_OSLI_DMA_BOUNDARY, /* boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + TW_CL_MAX_IO_SIZE, /* maxsize */ + max_sg_elements, /* nsegments */ + TW_CL_MAX_IO_SIZE, /* maxsegsize */ + 0, /* flags */ + &sc->parent_tag /* tag */)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x200A, + "Can't allocate parent DMA tag", + ENOMEM); + return(ENOMEM); + } + + /* Create a dma tag for Common Layer's DMA'able memory (dma_mem). */ + if (bus_dma_tag_create(sc->parent_tag, /* parent */ + sc->alignment, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + dma_mem_size, /* maxsize */ + 1, /* nsegments */ + BUS_SPACE_MAXSIZE, /* maxsegsize */ + 0, /* flags */ + &sc->cmd_tag /* tag */)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x200B, + "Can't allocate DMA tag for Common Layer's " + "DMA'able memory", + ENOMEM); + return(ENOMEM); + } + + if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem, + BUS_DMA_NOWAIT, &sc->cmd_map)) { + /* Try a second time. */ + if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem, + BUS_DMA_NOWAIT, &sc->cmd_map)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x200C, + "Can't allocate DMA'able memory for the" + "Common Layer", + ENOMEM); + return(ENOMEM); + } + } + + bus_dmamap_load(sc->cmd_tag, sc->cmd_map, sc->dma_mem, + dma_mem_size, twa_map_load_callback, + &sc->dma_mem_phys, 0); + + /* + * Create a dma tag for data buffers; size will be the maximum + * possible I/O size (128kB). + */ + if (bus_dma_tag_create(sc->parent_tag, /* parent */ + sc->alignment, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + TW_CL_MAX_IO_SIZE, /* maxsize */ + max_sg_elements, /* nsegments */ + TW_CL_MAX_IO_SIZE, /* maxsegsize */ + BUS_DMA_ALLOCNOW, /* flags */ +#if 0 /* XXX swildner */ + twa_busdma_lock, /* lockfunc */ + sc->io_lock, /* lockfuncarg */ +#endif + &sc->dma_tag /* tag */)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x200F, + "Can't allocate DMA tag for data buffers", + ENOMEM); + return(ENOMEM); + } + + /* + * Create a dma tag for ioctl data buffers; size will be the maximum + * possible I/O size (128kB). + */ + if (bus_dma_tag_create(sc->parent_tag, /* parent */ + sc->alignment, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + TW_CL_MAX_IO_SIZE, /* maxsize */ + max_sg_elements, /* nsegments */ + TW_CL_MAX_IO_SIZE, /* maxsegsize */ + BUS_DMA_ALLOCNOW, /* flags */ +#if 0 /* XXX swildner */ + twa_busdma_lock, /* lockfunc */ + sc->io_lock, /* lockfuncarg */ +#endif + &sc->ioctl_tag /* tag */)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2010, + "Can't allocate DMA tag for ioctl data buffers", + ENOMEM); + return(ENOMEM); + } + + /* Create just one map for all ioctl request data buffers. */ + if (bus_dmamap_create(sc->ioctl_tag, 0, &sc->ioctl_map)) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2011, + "Can't create ioctl map", + ENOMEM); + return(ENOMEM); + } + + + /* Initialize request queues. */ + tw_osli_req_q_init(sc, TW_OSLI_FREE_Q); + tw_osli_req_q_init(sc, TW_OSLI_BUSY_Q); + + if ((sc->req_ctx_buf = (struct tw_osli_req_context *) + kmalloc((sizeof(struct tw_osli_req_context) * + TW_OSLI_MAX_NUM_REQUESTS), + TW_OSLI_MALLOC_CLASS, M_WAITOK)) == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2012, + "Failed to allocate request packets", + ENOMEM); + return(ENOMEM); + } + bzero(sc->req_ctx_buf, + sizeof(struct tw_osli_req_context) * TW_OSLI_MAX_NUM_REQUESTS); + + for (i = 0; i < TW_OSLI_MAX_NUM_REQUESTS; i++) { + req = &(sc->req_ctx_buf[i]); + req->ctlr = sc; + if (bus_dmamap_create(sc->dma_tag, 0, &req->dma_map)) { + tw_osli_printf(sc, "request # = %d, error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2013, + "Can't create dma map", + i, ENOMEM); + return(ENOMEM); + } + + /* Initialize the ioctl wakeup/ timeout mutex */ + req->ioctl_wake_timeout_lock = &(req->ioctl_wake_timeout_lock_handle); + lockinit(req->ioctl_wake_timeout_lock, "tw_ioctl_wake_timeout_lock", 0, 0); + + /* Insert request into the free queue. */ + tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); + } + + return(0); +} + + + +/* + * Function name: tw_osli_free_resources + * Description: Performs clean-up at the time of going down. + * + * Input: sc -- ptr to OSL internal ctlr context + * Output: None + * Return value: None + */ +static TW_VOID +tw_osli_free_resources(struct twa_softc *sc) +{ + struct tw_osli_req_context *req; + TW_INT32 error = 0; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + /* Detach from CAM */ + tw_osli_cam_detach(sc); + + if (sc->req_ctx_buf) + while ((req = tw_osli_req_q_remove_head(sc, TW_OSLI_FREE_Q)) != + NULL) { + lockuninit(req->ioctl_wake_timeout_lock); + + if ((error = bus_dmamap_destroy(sc->dma_tag, + req->dma_map))) + tw_osli_dbg_dprintf(1, sc, + "dmamap_destroy(dma) returned %d", + error); + } + + if ((sc->ioctl_tag) && (sc->ioctl_map)) + if ((error = bus_dmamap_destroy(sc->ioctl_tag, sc->ioctl_map))) + tw_osli_dbg_dprintf(1, sc, + "dmamap_destroy(ioctl) returned %d", error); + + /* Free all memory allocated so far. */ + if (sc->req_ctx_buf) + kfree(sc->req_ctx_buf, TW_OSLI_MALLOC_CLASS); + + if (sc->non_dma_mem) + kfree(sc->non_dma_mem, TW_OSLI_MALLOC_CLASS); + + if (sc->dma_mem) { + bus_dmamap_unload(sc->cmd_tag, sc->cmd_map); + bus_dmamem_free(sc->cmd_tag, sc->dma_mem, + sc->cmd_map); + } + if (sc->cmd_tag) + if ((error = bus_dma_tag_destroy(sc->cmd_tag))) + tw_osli_dbg_dprintf(1, sc, + "dma_tag_destroy(cmd) returned %d", error); + + if (sc->dma_tag) + if ((error = bus_dma_tag_destroy(sc->dma_tag))) + tw_osli_dbg_dprintf(1, sc, + "dma_tag_destroy(dma) returned %d", error); + + if (sc->ioctl_tag) + if ((error = bus_dma_tag_destroy(sc->ioctl_tag))) + tw_osli_dbg_dprintf(1, sc, + "dma_tag_destroy(ioctl) returned %d", error); + + if (sc->parent_tag) + if ((error = bus_dma_tag_destroy(sc->parent_tag))) + tw_osli_dbg_dprintf(1, sc, + "dma_tag_destroy(parent) returned %d", error); + + + /* Disconnect the interrupt handler. */ + if (sc->intr_handle) + if ((error = bus_teardown_intr(sc->bus_dev, + sc->irq_res, sc->intr_handle))) + tw_osli_dbg_dprintf(1, sc, + "teardown_intr returned %d", error); + + if (sc->irq_res != NULL) + if ((error = bus_release_resource(sc->bus_dev, + SYS_RES_IRQ, sc->irq_res_id, sc->irq_res))) + tw_osli_dbg_dprintf(1, sc, + "release_resource(irq) returned %d", error); + + + /* Release the register window mapping. */ + if (sc->reg_res != NULL) + if ((error = bus_release_resource(sc->bus_dev, + SYS_RES_MEMORY, sc->reg_res_id, sc->reg_res))) + tw_osli_dbg_dprintf(1, sc, + "release_resource(io) returned %d", error); + + dev_ops_remove_minor(&twa_ops, device_get_unit(sc->bus_dev)); + + /* Destroy the control device. */ + if (sc->ctrl_dev != (struct cdev *)NULL) + destroy_dev(sc->ctrl_dev); + + if ((error = sysctl_ctx_free(&sc->sysctl_ctxt))) + tw_osli_dbg_dprintf(1, sc, + "sysctl_ctx_free returned %d", error); + +} + + + +/* + * Function name: twa_detach + * Description: Called when the controller is being detached from + * the pci bus. + * + * Input: dev -- bus device corresponding to the ctlr + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_detach(device_t dev) +{ + struct twa_softc *sc = device_get_softc(dev); + TW_INT32 error; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + error = EBUSY; + if (sc->open) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2014, + "Device open", + error); + goto out; + } + + /* Shut the controller down. */ + if ((error = twa_shutdown(dev))) + goto out; + + /* Free all resources associated with this controller. */ + tw_osli_free_resources(sc); + error = 0; + +out: + return(error); +} + + + +/* + * Function name: twa_shutdown + * Description: Called at unload/shutdown time. Lets the controller + * know that we are going down. + * + * Input: dev -- bus device corresponding to the ctlr + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +static TW_INT32 +twa_shutdown(device_t dev) +{ + struct twa_softc *sc = device_get_softc(dev); + TW_INT32 error = 0; + + tw_osli_dbg_dprintf(3, sc, "entered"); + + /* Disconnect from the controller. */ + if ((error = tw_cl_shutdown_ctlr(&(sc->ctlr_handle), 0))) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2015, + "Failed to shutdown Common Layer/controller", + error); + } + return(error); +} + + + +#if 0 /* XXX swildner */ +/* + * Function name: twa_busdma_lock + * Description: Function to provide synchronization during busdma_swi. + * + * Input: lock_arg -- lock mutex sent as argument + * op -- operation (lock/unlock) expected of the function + * Output: None + * Return value: None + */ +TW_VOID +twa_busdma_lock(TW_VOID *lock_arg, bus_dma_lock_op_t op) +{ + struct spinlock *lock; + + lock = (struct spinlock *)lock_arg; + switch (op) { + case BUS_DMA_LOCK: + spin_lock_wr(lock); + break; + + case BUS_DMA_UNLOCK: + spin_unlock_wr(lock); + break; + + default: + panic("Unknown operation 0x%x for twa_busdma_lock!", op); + } +} +#endif + + +/* + * Function name: twa_pci_intr + * Description: Interrupt handler. Wrapper for twa_interrupt. + * + * Input: arg -- ptr to OSL internal ctlr context + * Output: None + * Return value: None + */ +static TW_VOID +twa_pci_intr(TW_VOID *arg) +{ + struct twa_softc *sc = (struct twa_softc *)arg; + + tw_osli_dbg_dprintf(10, sc, "entered"); + tw_cl_interrupt(&(sc->ctlr_handle)); +} + + +/* + * Function name: tw_osli_fw_passthru + * Description: Builds a fw passthru cmd pkt, and submits it to CL. + * + * Input: sc -- ptr to OSL internal ctlr context + * buf -- ptr to ioctl pkt understood by CL + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_osli_fw_passthru(struct twa_softc *sc, TW_INT8 *buf) +{ + struct tw_osli_req_context *req; + struct tw_osli_ioctl_no_data_buf *user_buf = + (struct tw_osli_ioctl_no_data_buf *)buf; + TW_TIME end_time; + TW_UINT32 timeout = 60; + TW_UINT32 data_buf_size_adjusted; + struct tw_cl_req_packet *req_pkt; + struct tw_cl_passthru_req_packet *pt_req; + TW_INT32 error; + + tw_osli_dbg_dprintf(5, sc, "ioctl: passthru"); + + if ((req = tw_osli_get_request(sc)) == NULL) + return(EBUSY); + + req->req_handle.osl_req_ctxt = req; + req->orig_req = buf; + req->flags |= TW_OSLI_REQ_FLAGS_PASSTHRU; + + req_pkt = &(req->req_pkt); + req_pkt->status = 0; + req_pkt->tw_osl_callback = tw_osl_complete_passthru; + /* Let the Common Layer retry the request on cmd queue full. */ + req_pkt->flags |= TW_CL_REQ_RETRY_ON_BUSY; + + pt_req = &(req_pkt->gen_req_pkt.pt_req); + /* + * Make sure that the data buffer sent to firmware is a + * 512 byte multiple in size. + */ + data_buf_size_adjusted = + (user_buf->driver_pkt.buffer_length + + (sc->sg_size_factor - 1)) & ~(sc->sg_size_factor - 1); + if ((req->length = data_buf_size_adjusted)) { + if ((req->data = kmalloc(data_buf_size_adjusted, + TW_OSLI_MALLOC_CLASS, M_WAITOK)) == NULL) { + error = ENOMEM; + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2016, + "Could not alloc mem for " + "fw_passthru data_buf", + error); + goto fw_passthru_err; + } + /* Copy the payload. */ + if ((error = copyin((TW_VOID *)(user_buf->pdata), + req->data, + user_buf->driver_pkt.buffer_length)) != 0) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2017, + "Could not copyin fw_passthru data_buf", + error); + goto fw_passthru_err; + } + pt_req->sgl_entries = 1; /* will be updated during mapping */ + req->flags |= (TW_OSLI_REQ_FLAGS_DATA_IN | + TW_OSLI_REQ_FLAGS_DATA_OUT); + } else + pt_req->sgl_entries = 0; /* no payload */ + + pt_req->cmd_pkt = (TW_VOID *)(&(user_buf->cmd_pkt)); + pt_req->cmd_pkt_length = sizeof(struct tw_cl_command_packet); + + if ((error = tw_osli_map_request(req))) + goto fw_passthru_err; + + end_time = tw_osl_get_local_time() + timeout; + while (req->state != TW_OSLI_REQ_STATE_COMPLETE) { + lockmgr(req->ioctl_wake_timeout_lock, LK_EXCLUSIVE); + req->flags |= TW_OSLI_REQ_FLAGS_SLEEPING; + + error = lksleep(req, req->ioctl_wake_timeout_lock, 0, + "twa_passthru", timeout*hz); + lockmgr(req->ioctl_wake_timeout_lock, LK_RELEASE); + + if (!(req->flags & TW_OSLI_REQ_FLAGS_SLEEPING)) + error = 0; + req->flags &= ~TW_OSLI_REQ_FLAGS_SLEEPING; + + if (! error) { + if (((error = req->error_code)) || + ((error = (req->state != + TW_OSLI_REQ_STATE_COMPLETE))) || + ((error = req_pkt->status))) + goto fw_passthru_err; + break; + } + + if (req_pkt->status) { + error = req_pkt->status; + goto fw_passthru_err; + } + + if (error == EWOULDBLOCK) { + /* Time out! */ + if ((!(req->error_code)) && + (req->state == TW_OSLI_REQ_STATE_COMPLETE) && + (!(req_pkt->status)) ) { +#ifdef TW_OSL_DEBUG + tw_osli_printf(sc, "request = %p", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x7777, + "FALSE Passthru timeout!", + req); +#endif /* TW_OSL_DEBUG */ + error = 0; /* False error */ + break; + } + tw_osli_printf(sc, "request = %p", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2018, + "Passthru request timed out!", + req); + /* + * Should I check here if the timeout happened + * because of yet another reset, and not do a + * second reset? + */ + tw_cl_reset_ctlr(&sc->ctlr_handle); + /* + * Don't touch req after a reset. It (and any + * associated data) will already have been + * unmapped by the callback. + */ + user_buf->driver_pkt.os_status = error; + error = ETIMEDOUT; + goto fw_passthru_err; + } + /* + * Either the request got completed, or we were woken up by a + * signal. Calculate the new timeout, in case it was the latter. + */ + timeout = (end_time - tw_osl_get_local_time()); + } + + /* If there was a payload, copy it back. */ + if ((!error) && (req->length)) + if ((error = copyout(req->data, user_buf->pdata, + user_buf->driver_pkt.buffer_length))) + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x2019, + "Could not copyout fw_passthru data_buf", + error); + +fw_passthru_err: + /* + * Print the failure message. For some reason, on certain OS versions, + * printing this error message during reset hangs the display (although + * the rest of the system is running fine. So, don't print it if the + * failure was due to a reset. + */ + if ((error) && (error != TW_CL_ERR_REQ_BUS_RESET)) + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201A, + "Firmware passthru failed!", + error); + + user_buf->driver_pkt.os_status = error; + /* Free resources. */ + if (req->data) + kfree(req->data, TW_OSLI_MALLOC_CLASS); + tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); + return(error); +} + + + +/* + * Function name: tw_osl_complete_passthru + * Description: Called to complete passthru requests. + * + * Input: req_handle -- ptr to request handle + * Output: None + * Return value: None + */ +TW_VOID +tw_osl_complete_passthru(struct tw_cl_req_handle *req_handle) +{ + struct tw_osli_req_context *req = req_handle->osl_req_ctxt; + struct twa_softc *sc = req->ctlr; + + tw_osli_dbg_dprintf(5, sc, "entered"); + + if (req->state != TW_OSLI_REQ_STATE_BUSY) { + tw_osli_printf(sc, "request = %p, status = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201B, + "Unposted command completed!!", + req, req->state); + } + + /* + * Remove request from the busy queue. Just mark it complete. + * There's no need to move it into the complete queue as we are + * going to be done with it right now. + */ + req->state = TW_OSLI_REQ_STATE_COMPLETE; + tw_osli_req_q_remove_item(req, TW_OSLI_BUSY_Q); + + tw_osli_unmap_request(req); + + /* + * Don't do a wake up if there was an error even before the request + * was sent down to the Common Layer, and we hadn't gotten an + * EINPROGRESS. The request originator will then be returned an + * error, and he can do the clean-up. + */ + if ((req->error_code) && (!(req->flags & TW_OSLI_REQ_FLAGS_IN_PROGRESS))) + return; + + if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { + if (req->flags & TW_OSLI_REQ_FLAGS_SLEEPING) { + /* Wake up the sleeping command originator. */ + tw_osli_dbg_dprintf(5, sc, + "Waking up originator of request %p", req); + req->flags &= ~TW_OSLI_REQ_FLAGS_SLEEPING; + wakeup_one(req); + } else { + /* + * If the request completed even before mtx_sleep + * was called, simply return. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_MAPPED) + return; + + tw_osli_printf(sc, "request = %p", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201C, + "Passthru callback called, " + "and caller not sleeping", + req); + } + } else { + tw_osli_printf(sc, "request = %p", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201D, + "Passthru callback called for non-passthru request", + req); + } +} + + + +/* + * Function name: tw_osli_get_request + * Description: Gets a request pkt from the free queue. + * + * Input: sc -- ptr to OSL internal ctlr context + * Output: None + * Return value: ptr to request pkt -- success + * NULL -- failure + */ +struct tw_osli_req_context * +tw_osli_get_request(struct twa_softc *sc) +{ + struct tw_osli_req_context *req; + + tw_osli_dbg_dprintf(4, sc, "entered"); + + /* Get a free request packet. */ + req = tw_osli_req_q_remove_head(sc, TW_OSLI_FREE_Q); + + /* Initialize some fields to their defaults. */ + if (req) { + req->req_handle.osl_req_ctxt = NULL; + req->req_handle.cl_req_ctxt = NULL; + req->req_handle.is_io = 0; + req->data = NULL; + req->length = 0; + req->real_data = NULL; + req->real_length = 0; + req->state = TW_OSLI_REQ_STATE_INIT;/* req being initialized */ + req->flags = 0; + req->error_code = 0; + req->orig_req = NULL; + + bzero(&(req->req_pkt), sizeof(struct tw_cl_req_packet)); + + } + return(req); +} + + + +/* + * Function name: twa_map_load_data_callback + * Description: Callback of bus_dmamap_load for the buffer associated + * with data. Updates the cmd pkt (size/sgl_entries + * fields, as applicable) to reflect the number of sg + * elements. + * + * Input: arg -- ptr to OSL internal request context + * segs -- ptr to a list of segment descriptors + * nsegments--# of segments + * error -- 0 if no errors encountered before callback, + * non-zero if errors were encountered + * Output: None + * Return value: None + */ +static TW_VOID +twa_map_load_data_callback(TW_VOID *arg, bus_dma_segment_t *segs, + TW_INT32 nsegments, TW_INT32 error) +{ + struct tw_osli_req_context *req = + (struct tw_osli_req_context *)arg; + struct twa_softc *sc = req->ctlr; + struct tw_cl_req_packet *req_pkt = &(req->req_pkt); + + tw_osli_dbg_dprintf(10, sc, "entered"); + + /* Mark the request as currently being processed. */ + req->state = TW_OSLI_REQ_STATE_BUSY; + /* Move the request into the busy queue. */ + tw_osli_req_q_insert_tail(req, TW_OSLI_BUSY_Q); + + req->flags |= TW_OSLI_REQ_FLAGS_MAPPED; + + if (error == EFBIG) { + req->error_code = error; + goto out; + } + + if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { + struct tw_cl_passthru_req_packet *pt_req; + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) + bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, + BUS_DMASYNC_PREREAD); + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) { + /* + * If we're using an alignment buffer, and we're + * writing data, copy the real data out. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) + bcopy(req->real_data, req->data, req->real_length); + bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, + BUS_DMASYNC_PREWRITE); + } + + pt_req = &(req_pkt->gen_req_pkt.pt_req); + pt_req->sg_list = (TW_UINT8 *)segs; + pt_req->sgl_entries += (nsegments - 1); + error = tw_cl_fw_passthru(&(sc->ctlr_handle), req_pkt, + &(req->req_handle)); + } else { + struct tw_cl_scsi_req_packet *scsi_req; + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) + bus_dmamap_sync(sc->dma_tag, req->dma_map, + BUS_DMASYNC_PREREAD); + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) { + /* + * If we're using an alignment buffer, and we're + * writing data, copy the real data out. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) + bcopy(req->real_data, req->data, req->real_length); + bus_dmamap_sync(sc->dma_tag, req->dma_map, + BUS_DMASYNC_PREWRITE); + } + + scsi_req = &(req_pkt->gen_req_pkt.scsi_req); + scsi_req->sg_list = (TW_UINT8 *)segs; + scsi_req->sgl_entries += (nsegments - 1); + error = tw_cl_start_io(&(sc->ctlr_handle), req_pkt, + &(req->req_handle)); + } + +out: + if (error) { + req->error_code = error; + req_pkt->tw_osl_callback(&(req->req_handle)); + /* + * If the caller had been returned EINPROGRESS, and he has + * registered a callback for handling completion, the callback + * will never get called because we were unable to submit the + * request. So, free up the request right here. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_IN_PROGRESS) + tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); + } +} + + + +/* + * Function name: twa_map_load_callback + * Description: Callback of bus_dmamap_load for the buffer associated + * with a cmd pkt. + * + * Input: arg -- ptr to variable to hold phys addr + * segs -- ptr to a list of segment descriptors + * nsegments--# of segments + * error -- 0 if no errors encountered before callback, + * non-zero if errors were encountered + * Output: None + * Return value: None + */ +static TW_VOID +twa_map_load_callback(TW_VOID *arg, bus_dma_segment_t *segs, + TW_INT32 nsegments, TW_INT32 error) +{ + *((bus_addr_t *)arg) = segs[0].ds_addr; +} + + + +/* + * Function name: tw_osli_map_request + * Description: Maps a cmd pkt and data associated with it, into + * DMA'able memory. + * + * Input: req -- ptr to request pkt + * Output: None + * Return value: 0 -- success + * non-zero-- failure + */ +TW_INT32 +tw_osli_map_request(struct tw_osli_req_context *req) +{ + struct twa_softc *sc = req->ctlr; + TW_INT32 error = 0; + + tw_osli_dbg_dprintf(10, sc, "entered"); + + /* If the command involves data, map that too. */ + if (req->data != NULL) { + /* + * It's sufficient for the data pointer to be 4-byte aligned + * to work with 9000. However, if 4-byte aligned addresses + * are passed to bus_dmamap_load, we can get back sg elements + * that are not 512-byte multiples in size. So, we will let + * only those buffers that are 512-byte aligned to pass + * through, and bounce the rest, so as to make sure that we + * always get back sg elements that are 512-byte multiples + * in size. + */ + if (((vm_offset_t)req->data % sc->sg_size_factor) || + (req->length % sc->sg_size_factor)) { + req->flags |= TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED; + /* Save original data pointer and length. */ + req->real_data = req->data; + req->real_length = req->length; + req->length = (req->length + + (sc->sg_size_factor - 1)) & + ~(sc->sg_size_factor - 1); + req->data = kmalloc(req->length, TW_OSLI_MALLOC_CLASS, + M_NOWAIT); + if (req->data == NULL) { + tw_osli_printf(sc, "error = %d", + TW_CL_SEVERITY_ERROR_STRING, + TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, + 0x201E, + "Failed to allocate memory " + "for bounce buffer", + ENOMEM); + /* Restore original data pointer and length. */ + req->data = req->real_data; + req->length = req->real_length; + return(ENOMEM); + } + } + + /* + * Map the data buffer into bus space and build the SG list. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { + /* Lock against multiple simultaneous ioctl calls. */ + spin_lock_wr(sc->io_lock); + error = bus_dmamap_load(sc->ioctl_tag, sc->ioctl_map, + req->data, req->length, + twa_map_load_data_callback, req, + BUS_DMA_WAITOK); + spin_unlock_wr(sc->io_lock); + } else { + /* + * There's only one CAM I/O thread running at a time. + * So, there's no need to hold the io_lock. + */ + error = bus_dmamap_load(sc->dma_tag, req->dma_map, + req->data, req->length, + twa_map_load_data_callback, req, + BUS_DMA_WAITOK); + } + + if (!error) + error = req->error_code; + else { + if (error == EINPROGRESS) { + /* + * Specifying sc->io_lock as the lockfuncarg + * in ...tag_create should protect the access + * of ...FLAGS_MAPPED from the callback. + */ + spin_lock_wr(sc->io_lock); + if (!(req->flags & TW_OSLI_REQ_FLAGS_MAPPED)) + req->flags |= TW_OSLI_REQ_FLAGS_IN_PROGRESS; + tw_osli_disallow_new_requests(sc, &(req->req_handle)); + spin_unlock_wr(sc->io_lock); + error = 0; + } else { + /* Free alignment buffer if it was used. */ + if (req->flags & + TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) { + kfree(req->data, TW_OSLI_MALLOC_CLASS); + /* + * Restore original data pointer + * and length. + */ + req->data = req->real_data; + req->length = req->real_length; + } + } + } + + } else { + /* Mark the request as currently being processed. */ + req->state = TW_OSLI_REQ_STATE_BUSY; + /* Move the request into the busy queue. */ + tw_osli_req_q_insert_tail(req, TW_OSLI_BUSY_Q); + if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) + error = tw_cl_fw_passthru(&sc->ctlr_handle, + &(req->req_pkt), &(req->req_handle)); + else + error = tw_cl_start_io(&sc->ctlr_handle, + &(req->req_pkt), &(req->req_handle)); + if (error) { + req->error_code = error; + req->req_pkt.tw_osl_callback(&(req->req_handle)); + } + } + return(error); +} + + + +/* + * Function name: tw_osli_unmap_request + * Description: Undoes the mapping done by tw_osli_map_request. + * + * Input: req -- ptr to request pkt + * Output: None + * Return value: None + */ +TW_VOID +tw_osli_unmap_request(struct tw_osli_req_context *req) +{ + struct twa_softc *sc = req->ctlr; + + tw_osli_dbg_dprintf(10, sc, "entered"); + + /* If the command involved data, unmap that too. */ + if (req->data != NULL) { + if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { + /* Lock against multiple simultaneous ioctl calls. */ + spin_lock_wr(sc->io_lock); + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) { + bus_dmamap_sync(sc->ioctl_tag, + sc->ioctl_map, BUS_DMASYNC_POSTREAD); + + /* + * If we are using a bounce buffer, and we are + * reading data, copy the real data in. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) + bcopy(req->data, req->real_data, + req->real_length); + } + + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) + bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, + BUS_DMASYNC_POSTWRITE); + + bus_dmamap_unload(sc->ioctl_tag, sc->ioctl_map); + + spin_unlock_wr(sc->io_lock); + } else { + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) { + bus_dmamap_sync(sc->dma_tag, + req->dma_map, BUS_DMASYNC_POSTREAD); + + /* + * If we are using a bounce buffer, and we are + * reading data, copy the real data in. + */ + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) + bcopy(req->data, req->real_data, + req->real_length); + } + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) + bus_dmamap_sync(sc->dma_tag, req->dma_map, + BUS_DMASYNC_POSTWRITE); + + bus_dmamap_unload(sc->dma_tag, req->dma_map); + } + } + + /* Free alignment buffer if it was used. */ + if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) { + kfree(req->data, TW_OSLI_MALLOC_CLASS); + /* Restore original data pointer and length. */ + req->data = req->real_data; + req->length = req->real_length; + } +} + + + +#ifdef TW_OSL_DEBUG + +TW_VOID twa_report_stats(TW_VOID); +TW_VOID twa_reset_stats(TW_VOID); +TW_VOID tw_osli_print_ctlr_stats(struct twa_softc *sc); +TW_VOID twa_print_req_info(struct tw_osli_req_context *req); + + +/* + * Function name: twa_report_stats + * Description: For being called from ddb. Calls functions that print + * OSL and CL internal stats for the controller. + * + * Input: None + * Output: None + * Return value: None + */ +TW_VOID +twa_report_stats(TW_VOID) +{ + struct twa_softc *sc; + TW_INT32 i; + + for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { + tw_osli_print_ctlr_stats(sc); + tw_cl_print_ctlr_stats(&sc->ctlr_handle); + } +} + + + +/* + * Function name: tw_osli_print_ctlr_stats + * Description: For being called from ddb. Prints OSL controller stats + * + * Input: sc -- ptr to OSL internal controller context + * Output: None + * Return value: None + */ +TW_VOID +tw_osli_print_ctlr_stats(struct twa_softc *sc) +{ + twa_printf(sc, "osl_ctlr_ctxt = %p\n", sc); + twa_printf(sc, "OSLq type current max\n"); + twa_printf(sc, "free %04d %04d\n", + sc->q_stats[TW_OSLI_FREE_Q].cur_len, + sc->q_stats[TW_OSLI_FREE_Q].max_len); + twa_printf(sc, "busy %04d %04d\n", + sc->q_stats[TW_OSLI_BUSY_Q].cur_len, + sc->q_stats[TW_OSLI_BUSY_Q].max_len); +} + + + +/* + * Function name: twa_print_req_info + * Description: For being called from ddb. Calls functions that print + * OSL and CL internal details for the request. + * + * Input: req -- ptr to OSL internal request context + * Output: None + * Return value: None + */ +TW_VOID +twa_print_req_info(struct tw_osli_req_context *req) +{ + struct twa_softc *sc = req->ctlr; + + twa_printf(sc, "OSL details for request:\n"); + twa_printf(sc, "osl_req_ctxt = %p, cl_req_ctxt = %p\n" + "data = %p, length = 0x%x, real_data = %p, real_length = 0x%x\n" + "state = 0x%x, flags = 0x%x, error = 0x%x, orig_req = %p\n" + "next_req = %p, prev_req = %p, dma_map = %p\n", + req->req_handle.osl_req_ctxt, req->req_handle.cl_req_ctxt, + req->data, req->length, req->real_data, req->real_length, + req->state, req->flags, req->error_code, req->orig_req, + req->link.next, req->link.prev, req->dma_map); + tw_cl_print_req_info(&(req->req_handle)); +} + + + +/* + * Function name: twa_reset_stats + * Description: For being called from ddb. + * Resets some OSL controller stats. + * + * Input: None + * Output: None + * Return value: None + */ +TW_VOID +twa_reset_stats(TW_VOID) +{ + struct twa_softc *sc; + TW_INT32 i; + + for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { + sc->q_stats[TW_OSLI_FREE_Q].max_len = 0; + sc->q_stats[TW_OSLI_BUSY_Q].max_len = 0; + tw_cl_reset_stats(&sc->ctlr_handle); + } +} + +#endif /* TW_OSL_DEBUG */ diff --git a/sys/dev/raid/twa/twa_includes.h b/sys/dev/raid/twa/tw_osl_includes.h similarity index 72% copy from sys/dev/raid/twa/twa_includes.h copy to sys/dev/raid/twa/tw_osl_includes.h index ef1906a896..2a219db6f7 100644 --- a/sys/dev/raid/twa/twa_includes.h +++ b/sys/dev/raid/twa/tw_osl_includes.h @@ -1,5 +1,6 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,14 +24,25 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_includes.h,v 1.4 2006/10/25 20:56:01 dillon Exp $ + * $FreeBSD: src/sys/dev/twa/tw_osl_includes.h,v 1.5 2007/05/09 04:16:32 scottl Exp $ */ /* - * 3ware driver for 9000 series storage controllers. + * AMCC'S 3ware driver for 9000 series storage controllers. * * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_OSL_INCLUDES_H + +#define TW_OSL_INCLUDES_H + + +/* + * All header files needed by the OS Layer. */ @@ -38,25 +50,32 @@ #include #include #include +#include +#include #include #include #include -#include #include +#include #include #include -#include -#include +#include +#include #include +#include #include +#include + #include #include -#include "opt_twa.h" -#include "twa_reg.h" -#include "twa_ioctl.h" -#include "twa.h" -#include "twa_externs.h" +#include +#include +#include + + + +#endif /* TW_OSL_INCLUDES_H */ diff --git a/sys/dev/raid/twa/tw_osl_inline.h b/sys/dev/raid/twa/tw_osl_inline.h new file mode 100644 index 0000000000..fc4ac71a27 --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_inline.h @@ -0,0 +1,349 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_inline.h,v 1.4 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_OSL_INLINE_H + +#define TW_OSL_INLINE_H + + +/* + * Inline functions shared between OSL and CL, and defined by OSL. + */ + + +#include + + + +/* + * Function name: tw_osl_init_lock + * Description: Initializes a lock. + * + * Input: ctlr_handle -- ptr to controller handle + * lock_name -- string indicating name of the lock + * Output: lock -- ptr to handle to the initialized lock + * Return value: None + */ +#define tw_osl_init_lock(ctlr_handle, lock_name, lock) \ + spin_init(lock) + + + +/* + * Function name: tw_osl_destroy_lock + * Description: Destroys a previously initialized lock. + * + * Input: ctlr_handle -- ptr to controller handle + * lock -- ptr to handle to the lock to be + * destroyed + * Output: None + * Return value: None + */ +#define tw_osl_destroy_lock(ctlr_handle, lock) \ + spin_uninit(lock) + + + +/* + * Function name: tw_osl_get_lock + * Description: Acquires the specified lock. + * + * Input: ctlr_handle -- ptr to controller handle + * lock -- ptr to handle to the lock to be + * acquired + * Output: None + * Return value: None + */ +#define tw_osl_get_lock(ctlr_handle, lock) \ + spin_lock_wr(lock) + + + +/* + * Function name: tw_osl_free_lock + * Description: Frees a previously acquired lock. + * + * Input: ctlr_handle -- ptr to controller handle + * lock -- ptr to handle to the lock to be freed + * Output: None + * Return value: None + */ +#define tw_osl_free_lock(ctlr_handle, lock) \ + spin_unlock_wr(lock) + + + +#ifdef TW_OSL_DEBUG + +/* + * Function name: tw_osl_dbg_printf + * Description: Prints passed info (prefixed by ctlr name)to syslog + * + * Input: ctlr_handle -- controller handle + * fmt -- format string for the arguments to follow + * ... -- variable number of arguments, to be printed + * based on the fmt string + * Output: None + * Return value: Number of bytes printed + */ +#define tw_osl_dbg_printf(ctlr_handle, fmt, args...) \ + twa_printf((ctlr_handle->osl_ctlr_ctxt), fmt, ##args) + +#endif /* TW_OSL_DEBUG */ + + + +/* + * Function name: tw_osl_notify_event + * Description: Prints passed event info (prefixed by ctlr name) + * to syslog + * + * Input: ctlr_handle -- controller handle + * event -- ptr to a packet describing the event/error + * Output: None + * Return value: None + */ +#define tw_osl_notify_event(ctlr_handle, event) \ + twa_printf((ctlr_handle->osl_ctlr_ctxt), \ + "%s: (0x%02X: 0x%04X): %s: %s\n", \ + event->severity_str, \ + event->event_src, \ + event->aen_code, \ + event->parameter_data + \ + strlen(event->parameter_data) + 1, \ + event->parameter_data) + + + +/* + * Function name: tw_osl_read_reg + * Description: Reads a register on the controller + * + * Input: ctlr_handle -- controller handle + * offset -- offset from Base Address + * size -- # of bytes to read + * Output: None + * Return value: Value read + */ +#define tw_osl_read_reg tw_osl_read_reg_inline +static __inline TW_UINT32 +tw_osl_read_reg_inline(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT32 offset, TW_INT32 size) +{ + bus_space_tag_t bus_tag = + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_tag; + bus_space_handle_t bus_handle = + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_handle; + + if (size == 4) + return((TW_UINT32)bus_space_read_4(bus_tag, bus_handle, + offset)); + else if (size == 2) + return((TW_UINT32)bus_space_read_2(bus_tag, bus_handle, + offset)); + else + return((TW_UINT32)bus_space_read_1(bus_tag, bus_handle, + offset)); +} + + + +/* + * Function name: tw_osl_write_reg + * Description: Writes to a register on the controller + * + * Input: ctlr_handle -- controller handle + * offset -- offset from Base Address + * value -- value to write + * size -- # of bytes to write + * Output: None + * Return value: None + */ +#define tw_osl_write_reg tw_osl_write_reg_inline +static __inline TW_VOID +tw_osl_write_reg_inline(struct tw_cl_ctlr_handle *ctlr_handle, + TW_INT32 offset, TW_INT32 value, TW_INT32 size) +{ + bus_space_tag_t bus_tag = + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_tag; + bus_space_handle_t bus_handle = + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_handle; + + if (size == 4) + bus_space_write_4(bus_tag, bus_handle, offset, value); + else if (size == 2) + bus_space_write_2(bus_tag, bus_handle, offset, (TW_INT16)value); + else + bus_space_write_1(bus_tag, bus_handle, offset, (TW_INT8)value); +} + + + +#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE + +/* + * Function name: tw_osl_read_pci_config + * Description: Reads from the PCI config space. + * + * Input: sc -- ptr to per ctlr structure + * offset -- register offset + * size -- # of bytes to be read + * Output: None + * Return value: Value read + */ +#define tw_osl_read_pci_config(ctlr_handle, offset, size) \ + pci_read_config( \ + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_dev, \ + offset, size) + + + +/* + * Function name: tw_osl_write_pci_config + * Description: Writes to the PCI config space. + * + * Input: sc -- ptr to per ctlr structure + * offset -- register offset + * value -- value to write + * size -- # of bytes to be written + * Output: None + * Return value: None + */ +#define tw_osl_write_pci_config(ctlr_handle, offset, value, size) \ + pci_write_config( \ + ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_dev, \ + offset/*PCIR_STATUS*/, value, size) + +#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ + + + +/* + * Function name: tw_osl_get_local_time + * Description: Gets the local time + * + * Input: None + * Output: None + * Return value: local time + */ +#define tw_osl_get_local_time() \ + (time_second - (tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0))) + + +/* + * Function name: tw_osl_delay + * Description: Spin for the specified time + * + * Input: usecs -- micro-seconds to spin + * Output: None + * Return value: None + */ +#define tw_osl_delay(usecs) DELAY(usecs) + + + +#ifdef TW_OSL_CAN_SLEEP + +/* + * Function name: tw_osl_sleep + * Description: Sleep for the specified time, or until woken up + * + * Input: ctlr_handle -- controller handle + * sleep_handle -- handle to sleep on + * timeout -- time period (in ms) to sleep + * Output: None + * Return value: 0 -- successfully woken up + * EWOULDBLOCK -- time out + * ERESTART -- woken up by a signal + */ +#define tw_osl_sleep(ctlr_handle, sleep_handle, timeout) \ + tsleep((TW_VOID *)sleep_handle, PRIBIO, NULL, timeout) + + + +/* + * Function name: tw_osl_wakeup + * Description: Wake up a sleeping process + * + * Input: ctlr_handle -- controller handle + * sleep_handle -- handle of sleeping process to be + woken up + * Output: None + * Return value: None + */ +#define tw_osl_wakeup(ctlr_handle, sleep_handle) \ + wakeup_one(sleep_handle) + +#endif /* TW_OSL_CAN_SLEEP */ + + + +/* Allows setting breakpoints in the CL code for debugging purposes. */ +#define tw_osl_breakpoint() breakpoint() + + +/* Text name of current function. */ +#define tw_osl_cur_func() __func__ + + +/* Copy 'size' bytes from 'src' to 'dest'. */ +#define tw_osl_memcpy(dest, src, size) bcopy(src, dest, size) + + +/* Zero 'size' bytes starting at 'addr'. */ +#define tw_osl_memzero bzero + + +/* Standard sprintf. */ +#define tw_osl_sprintf ksprintf + + +/* Copy string 'src' to 'dest'. */ +#define tw_osl_strcpy strcpy + + +/* Return length of string pointed at by 'str'. */ +#define tw_osl_strlen strlen + + +/* Standard vsprintf. */ +#define tw_osl_vsprintf kvsprintf + + + +#endif /* TW_OSL_INLINE_H */ diff --git a/sys/dev/raid/twa/tw_osl_ioctl.h b/sys/dev/raid/twa/tw_osl_ioctl.h new file mode 100644 index 0000000000..6a8333d278 --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_ioctl.h @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_ioctl.h,v 1.3 2007/05/09 04:16:32 scottl Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_OSL_IOCTL_H + +#define TW_OSL_IOCTL_H + + +/* + * Macros and structures for OS Layer/Common Layer handled ioctls. + */ + + + +#include +#include + + + +#pragma pack(1) +/* + * We need the structure below to ensure that the first byte of + * data_buf is not overwritten by the kernel, after we return + * from the ioctl call. Note that cmd_pkt has been reduced + * to an array of 1024 bytes even though it's actually 2048 bytes + * in size. This is because, we don't expect requests from user + * land requiring 2048 (273 sg elements) byte cmd pkts. + */ +typedef struct tw_osli_ioctl_no_data_buf { + struct tw_cl_driver_packet driver_pkt; + TW_VOID *pdata; /* points to data_buf */ + TW_INT8 padding[488 - sizeof(TW_VOID *)]; + struct tw_cl_command_packet cmd_pkt; +} TW_OSLI_IOCTL_NO_DATA_BUF; + +#pragma pack() + +/* ioctl cmds handled by the OS Layer */ +#define TW_OSL_IOCTL_SCAN_BUS \ + _IO('T', 200) +#define TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH \ + _IOWR('T', 202, TW_OSLI_IOCTL_NO_DATA_BUF) + + +#include + +#pragma pack(1) + +typedef struct tw_osli_ioctl_with_payload { + struct tw_cl_driver_packet driver_pkt; + TW_INT8 padding[488]; + struct tw_cl_command_packet cmd_pkt; + union { + struct tw_cl_event_packet event_pkt; + struct tw_cl_lock_packet lock_pkt; + struct tw_cl_compatibility_packet compat_pkt; + TW_INT8 data_buf[1]; + } payload; +} TW_OSLI_IOCTL_WITH_PAYLOAD; + +#pragma pack() + +/* ioctl cmds handled by the Common Layer */ +#define TW_CL_IOCTL_GET_FIRST_EVENT \ + _IOWR('T', 203, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_GET_LAST_EVENT \ + _IOWR('T', 204, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_GET_NEXT_EVENT \ + _IOWR('T', 205, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_GET_PREVIOUS_EVENT \ + _IOWR('T', 206, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_GET_LOCK \ + _IOWR('T', 207, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_RELEASE_LOCK \ + _IOWR('T', 208, TW_OSLI_IOCTL_WITH_PAYLOAD) +#define TW_CL_IOCTL_GET_COMPATIBILITY_INFO \ + _IOWR('T', 209, TW_OSLI_IOCTL_WITH_PAYLOAD) + + + +#endif /* TW_OSL_IOCTL_H */ diff --git a/sys/dev/raid/twa/tw_osl_share.h b/sys/dev/raid/twa/tw_osl_share.h new file mode 100644 index 0000000000..53e14ab3ce --- /dev/null +++ b/sys/dev/raid/twa/tw_osl_share.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/sys/dev/twa/tw_osl_share.h,v 1.10 2010/06/09 21:40:38 delphij Exp $ + */ + +/* + * AMCC'S 3ware driver for 9000 series storage controllers. + * + * Author: Vinod Kashyap + * Modifications by: Adam Radford + */ + + + +#ifndef TW_OSL_SHARE_H + +#define TW_OSL_SHARE_H + + +/* + * Macros, structures and functions shared between OSL and CL, + * and defined by OSL. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include "opt_twa.h" + + +#ifdef TWA_DEBUG +#define TW_OSL_DEBUG TWA_DEBUG +#endif + +#ifdef TWA_ENCLOSURE_SUPPORT +#define TW_OSL_ENCLOSURE_SUPPORT +#endif + +#define TW_OSL_DRIVER_VERSION_STRING "3.80.06.002" + +#define TW_OSL_CAN_SLEEP + +#ifdef TW_OSL_CAN_SLEEP +typedef TW_VOID *TW_SLEEP_HANDLE; +#endif /* TW_OSL_CAN_SLEEP */ + +#define TW_OSL_PCI_CONFIG_ACCESSIBLE + +#if _BYTE_ORDER == _BIG_ENDIAN +#define TW_OSL_BIG_ENDIAN +#else +#define TW_OSL_LITTLE_ENDIAN +#endif + +#ifdef TW_OSL_DEBUG +extern TW_INT32 TW_OSL_DEBUG_LEVEL_FOR_CL; +#endif /* TW_OSL_DEBUG */ + + +/* Possible return codes from/to Common Layer functions. */ +#define TW_OSL_ESUCCESS 0 /* success */ +#define TW_OSL_EGENFAILURE 1 /* general failure */ +#define TW_OSL_ENOMEM ENOMEM /* insufficient memory */ +#define TW_OSL_EIO EIO /* I/O error */ +#define TW_OSL_ETIMEDOUT ETIMEDOUT /* time out */ +#define TW_OSL_ENOTTY ENOTTY /* invalid command */ +#define TW_OSL_EBUSY EBUSY /* busy -- try later */ +#define TW_OSL_EBIG EFBIG /* request too big */ +#define TW_OSL_EWOULDBLOCK EWOULDBLOCK /* sleep timed out */ +#define TW_OSL_ERESTART ERESTART /* sleep terminated by a signal */ + + + +#endif /* TW_OSL_SHARE_H */ diff --git a/sys/dev/raid/twa/twa_includes.h b/sys/dev/raid/twa/tw_osl_types.h similarity index 64% rename from sys/dev/raid/twa/twa_includes.h rename to sys/dev/raid/twa/tw_osl_types.h index ef1906a896..985cae8760 100644 --- a/sys/dev/raid/twa/twa_includes.h +++ b/sys/dev/raid/twa/tw_osl_types.h @@ -1,5 +1,6 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. +/* + * Copyright (c) 2004-07 Applied Micro Circuits Corporation. + * Copyright (c) 2004-05 Vinod Kashyap. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,40 +24,41 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_includes.h,v 1.4 2006/10/25 20:56:01 dillon Exp $ + * $FreeBSD: src/sys/dev/twa/tw_osl_types.h,v 1.2 2007/05/09 04:16:32 scottl Exp $ */ /* - * 3ware driver for 9000 series storage controllers. + * AMCC'S 3ware driver for 9000 series storage controllers. * * Author: Vinod Kashyap + * Modifications by: Adam Radford */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include - -#include "opt_twa.h" -#include "twa_reg.h" -#include "twa_ioctl.h" -#include "twa.h" -#include "twa_externs.h" + +#ifndef TW_OSL_TYPES_H + +#define TW_OSL_TYPES_H + + +/* + * typedefs shared between OSL and CL, and defined by OSL. + */ + + +typedef void TW_VOID; +typedef char TW_INT8; +typedef unsigned char TW_UINT8; +typedef short TW_INT16; +typedef unsigned short TW_UINT16; +typedef int TW_INT32; +typedef unsigned int TW_UINT32; +typedef long long TW_INT64; +typedef unsigned long long TW_UINT64; + +typedef time_t TW_TIME; +typedef struct spinlock TW_LOCK_HANDLE; + + + +#endif /* TW_OSL_TYPES_H */ diff --git a/sys/dev/raid/twa/twa.c b/sys/dev/raid/twa/twa.c deleted file mode 100644 index 0737fc5e57..0000000000 --- a/sys/dev/raid/twa/twa.c +++ /dev/null @@ -1,2373 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * Copyright (c) 2000 Michael Smith - * Copyright (c) 2000 BSDi - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa.c,v 1.8 2008/01/06 16:55:51 swildner Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -#include "twa_includes.h" - -#ifdef TWA_FLASH_FIRMWARE -static int twa_flash_firmware(struct twa_softc *sc); -static int twa_hard_reset(struct twa_softc *sc); -#endif /* TWA_FLASH_FIRMWARE */ - -static int twa_init_ctlr(struct twa_softc *sc); -static void *twa_get_param(struct twa_softc *sc, int table_id, - int parameter_id, size_t size, - void (* callback)(struct twa_request *tr)); -static int twa_set_param(struct twa_softc *sc, int table_id, int param_id, - int param_size, void *data, - void (* callback)(struct twa_request *tr)); -static int twa_init_connection(struct twa_softc *sc, u_int16_t message_credits, - u_int32_t set_features, u_int16_t current_fw_srl, - u_int16_t current_fw_arch_id, u_int16_t current_fw_branch, - u_int16_t current_fw_build, u_int16_t *fw_on_ctlr_srl, - u_int16_t *fw_on_ctlr_arch_id, u_int16_t *fw_on_ctlr_branch, - u_int16_t *fw_on_ctlr_build, u_int32_t *init_connect_result); - -static int twa_wait_request(struct twa_request *req, u_int32_t timeout); -static int twa_immediate_request(struct twa_request *req, u_int32_t timeout); - -static int twa_done(struct twa_softc *sc); -static int twa_drain_pending_queue(struct twa_softc *sc); -static void twa_drain_complete_queue(struct twa_softc *sc); -static int twa_wait_status(struct twa_softc *sc, u_int32_t status, u_int32_t timeout); -static int twa_drain_response_queue(struct twa_softc *sc); -static int twa_check_ctlr_state(struct twa_softc *sc, u_int32_t status_reg); -static int twa_soft_reset(struct twa_softc *sc); - -static void twa_host_intr(struct twa_softc *sc); -static void twa_attention_intr(struct twa_softc *sc); -static void twa_command_intr(struct twa_softc *sc); - -static int twa_fetch_aen(struct twa_softc *sc); -static void twa_aen_callback(struct twa_request *tr); -static void twa_enqueue_aen(struct twa_softc *sc, struct twa_command_header *cmd_hdr); -static int twa_drain_aen_queue(struct twa_softc *sc); -static int twa_find_aen(struct twa_softc *sc, u_int16_t aen_code); - -static void twa_panic(struct twa_softc *sc, int8_t *reason); - -/* - * Function name: twa_setup - * Description: Initializes driver data structures for the controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_setup(struct twa_softc *sc) -{ - struct twa_event_packet *aen_queue; - int error = 0; - int i; - - twa_dbg_dprint_enter(3, sc); - - /* Initialize request queues. */ - twa_initq_free(sc); - twa_initq_busy(sc); - twa_initq_pending(sc); - twa_initq_complete(sc); - - if (twa_alloc_req_pkts(sc, TWA_Q_LENGTH)) { - twa_printf(sc, "Failed to allocate request packets.\n"); - return(ENOMEM); - } - - /* Allocate memory for the AEN queue. */ - aen_queue = kmalloc(sizeof(struct twa_event_packet) * TWA_Q_LENGTH, - M_DEVBUF, M_WAITOK | M_ZERO); - /* Initialize the aen queue. */ - for (i = 0; i < TWA_Q_LENGTH; i++) - sc->twa_aen_queue[i] = &(aen_queue[i]); - - /* - * Disable interrupts from the card. - * Interrupts will be enabled back in twa_intrhook. - */ - twa_disable_interrupts(sc); - - /* Initialize the controller. */ - if ((error = twa_init_ctlr(sc))) { - /* Soft reset the controller, and try one more time. */ - twa_printf(sc, "Controller initialization failed. Retrying...\n"); - if ((error = twa_soft_reset(sc))) - twa_printf(sc, "Controller soft reset failed.\n"); - else - error = twa_init_ctlr(sc); - } - return(error); -} - -#ifdef TWA_FLASH_FIRMWARE -/* - * Function name: twa_flash_firmware - * Description: Flashes bundled firmware image onto controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_flash_firmware(struct twa_softc *sc) -{ - struct twa_request *tr; - struct twa_command_download_firmware *cmd; - u_int32_t fw_img_chunk_size; - u_int32_t this_chunk_size = 0; - u_int32_t remaining_img_size = 0; - int error; - int i; - - if ((tr = twa_get_request(sc)) == NULL) { - /* No free request packets available. Can't proceed. */ - error = EIO; - goto out; - } - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - /* Allocate sufficient memory to hold a chunk of the firmware image. */ - fw_img_chunk_size = ((twa_fw_img_size/NUM_FW_IMAGE_CHUNKS) + 511) & ~511; - tr->tr_data = kmalloc(fw_img_chunk_size, M_DEVBUF, M_WAITOK); - remaining_img_size = twa_fw_img_size; - cmd = &(tr->tr_command->command.cmd_pkt_7k.download_fw); - - for (i = 0; i < NUM_FW_IMAGE_CHUNKS; i++) { - /* Build a cmd pkt for downloading firmware. */ - bzero(tr->tr_command, sizeof(struct twa_command_packet)); - - tr->tr_command->cmd_hdr.header_desc.size_header = 128; - - cmd->opcode = TWA_OP_DOWNLOAD_FIRMWARE; - cmd->sgl_offset = 2;/* offset in dwords, to the beginning of sg list */ - cmd->size = 2; /* this field will be updated at data map time */ - cmd->request_id = tr->tr_request_id; - cmd->unit = 0; - cmd->status = 0; - cmd->flags = 0; - cmd->param = 8; /* prom image */ - - if (i != (NUM_FW_IMAGE_CHUNKS - 1)) - this_chunk_size = fw_img_chunk_size; - else /* last chunk */ - this_chunk_size = remaining_img_size; - - remaining_img_size -= this_chunk_size; - bcopy(twa_fw_img + (i * fw_img_chunk_size), - tr->tr_data, this_chunk_size); - - /* - * The next line will effect only the last chunk. - */ - tr->tr_length = (this_chunk_size + 511) & ~511; - - tr->tr_flags |= TWA_CMD_DATA_OUT; - - error = twa_immediate_request(tr, TWA_REQUEST_TIMEOUT_PERIOD); - if (error) { - twa_printf(sc, "Firmware flash request could not be posted. error = 0x%x\n", - error); - if (error == ETIMEDOUT) - return(error); /* clean-up done by twa_immediate_request */ - break; - } - error = cmd->status; - if (i != (NUM_FW_IMAGE_CHUNKS - 1)) { - if ((error = tr->tr_command->cmd_hdr.status_block.error) != TWA_ERROR_MORE_DATA) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cmd->opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - error, - twa_find_msg_string(twa_error_table, error), - tr->tr_command->cmd_hdr.err_specific_desc); - twa_printf(sc, "Firmware flash request failed. Intermediate error = 0x%x, i = %x\n", - cmd->status, i); - /* Hard reset the controller, so that it doesn't wait for the remaining chunks. */ - twa_hard_reset(sc); - break; - } - } else /* last chunk */ - if (error) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cmd->opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_command->cmd_hdr.status_block.error, - twa_find_msg_string(twa_error_table, - tr->tr_command->cmd_hdr.status_block.error), - tr->tr_command->cmd_hdr.err_specific_desc); - twa_printf(sc, "Firmware flash request failed. error = 0x%x\n", error); - /* Hard reset the controller, so that it doesn't wait for more chunks. */ - twa_hard_reset(sc); - } - } /* for */ - - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); -out: - if (tr) - twa_release_request(tr); - return(error); -} - - -/* - * Function name: twa_hard_reset - * Description: Hard reset the controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_hard_reset(struct twa_softc *sc) -{ - struct twa_request *tr; - struct twa_command_reset_firmware *cmd; - int error; - - if ((tr = twa_get_request(sc)) == NULL) - return(EIO); - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - /* Build a cmd pkt for sending down the hard reset command. */ - tr->tr_command->cmd_hdr.header_desc.size_header = 128; - - cmd = &(tr->tr_command->command.cmd_pkt_7k.reset_fw); - cmd->opcode = TWA_OP_RESET_FIRMWARE; - cmd->size = 2; /* this field will be updated at data map time */ - cmd->request_id = tr->tr_request_id; - cmd->unit = 0; - cmd->status = 0; - cmd->flags = 0; - cmd->param = 0; /* don't reload FPGA logic */ - - tr->tr_data = NULL; - tr->tr_length = 0; - - error = twa_immediate_request(tr, TWA_REQUEST_TIMEOUT_PERIOD); - if (error) { - twa_printf(sc, "Hard reset request could not be posted. error = 0x%x\n", - error); - if (error == ETIMEDOUT) - return(error); /* clean-up done by twa_immediate_request */ - goto out; - } - if ((error = cmd->status)) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cmd->opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_command->cmd_hdr.status_block.error, - twa_find_msg_string(twa_error_table, - tr->tr_command->cmd_hdr.status_block.error), - tr->tr_command->cmd_hdr.err_specific_desc); - twa_printf(sc, "Hard reset request failed. error = 0x%x\n", error); - } - -out: - if (tr) - twa_release_request(tr); - return(error); -} - -#endif /* TWA_FLASH_FIRMWARE */ - -/* - * Function name: twa_init_ctlr - * Description: Establishes a logical connection with the controller. - * If bundled with firmware, determines whether or not - * to flash firmware, based on arch_id, fw SRL (Spec. - * Revision Level), branch & build #'s. Also determines - * whether or not the driver is compatible with the - * firmware on the controller, before proceeding to work - * with it. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_init_ctlr(struct twa_softc *sc) -{ - u_int16_t fw_on_ctlr_srl = 0; - u_int16_t fw_on_ctlr_arch_id = 0; - u_int16_t fw_on_ctlr_branch = 0; - u_int16_t fw_on_ctlr_build = 0; - u_int32_t init_connect_result = 0; - int error = 0; -#ifdef TWA_FLASH_FIRMWARE - int8_t fw_flashed = FALSE; - int8_t fw_flash_failed = FALSE; -#endif /* TWA_FLASH_FIRMWARE */ - - twa_dbg_dprint_enter(3, sc); - - /* Wait for the controller to become ready. */ - if (twa_wait_status(sc, TWA_STATUS_MICROCONTROLLER_READY, - TWA_REQUEST_TIMEOUT_PERIOD)) { - twa_printf(sc, "Microcontroller not ready.\n"); - return(ENXIO); - } - /* Drain the response queue. */ - if (twa_drain_response_queue(sc)) { - twa_printf(sc, "Can't drain response queue.\n"); - return(1); - } - /* Establish a logical connection with the controller. */ - if ((error = twa_init_connection(sc, TWA_INIT_MESSAGE_CREDITS, - TWA_EXTENDED_INIT_CONNECT, TWA_CURRENT_FW_SRL, - TWA_9000_ARCH_ID, TWA_CURRENT_FW_BRANCH, - TWA_CURRENT_FW_BUILD, &fw_on_ctlr_srl, - &fw_on_ctlr_arch_id, &fw_on_ctlr_branch, - &fw_on_ctlr_build, &init_connect_result))) { - twa_printf(sc, "Can't initialize connection in current mode.\n"); - return(error); - } - -#ifdef TWA_FLASH_FIRMWARE - - if ((init_connect_result & TWA_BUNDLED_FW_SAFE_TO_FLASH) && - (init_connect_result & TWA_CTLR_FW_RECOMMENDS_FLASH)) { - /* - * The bundled firmware is safe to flash, and the firmware - * on the controller recommends a flash. So, flash! - */ - twa_printf(sc, "Flashing bundled firmware...\n"); - if ((error = twa_flash_firmware(sc))) { - fw_flash_failed = TRUE; - twa_printf(sc, "Unable to flash bundled firmware.\n"); - twa_printf(sc, "Will see if possible to work with firmware on controller...\n"); - } else { - twa_printf(sc, "Successfully flashed bundled firmware.\n"); - fw_flashed = TRUE; - } - } - - if (fw_flashed) { - /* The firmware was flashed. Have the new image loaded */ - error = twa_hard_reset(sc); - if (error) - twa_printf(sc, "Could not reset controller after flash!\n"); - else /* Go through initialization again. */ - error = twa_init_ctlr(sc); - /* - * If hard reset of controller failed, we need to return. - * Otherwise, the above recursive call to twa_init_ctlr will - * have completed the rest of the initialization (starting - * from twa_drain_aen_queue below). Don't do it again. - * Just return. - */ - return(error); - } else -#endif /* TWA_FLASH_FIRMWARE */ - { - /* - * Either we are not bundled with a firmware image, or - * the bundled firmware is not safe to flash, - * or flash failed for some reason. See if we can at - * least work with the firmware on the controller in the - * current mode. - */ - if (init_connect_result & TWA_CTLR_FW_COMPATIBLE) { - /* Yes, we can. Make note of the operating mode. */ - sc->working_srl = TWA_CURRENT_FW_SRL; - sc->working_branch = TWA_CURRENT_FW_BRANCH; - sc->working_build = TWA_CURRENT_FW_BUILD; - } else { - /* - * No, we can't. See if we can at least work with - * it in the base mode. We should never come here - * if firmware has just been flashed. - */ - twa_printf(sc, "Driver/Firmware mismatch. Negotiating for base level...\n"); - if ((error = twa_init_connection(sc, TWA_INIT_MESSAGE_CREDITS, - TWA_EXTENDED_INIT_CONNECT, TWA_BASE_FW_SRL, - TWA_9000_ARCH_ID, TWA_BASE_FW_BRANCH, - TWA_BASE_FW_BUILD, &fw_on_ctlr_srl, - &fw_on_ctlr_arch_id, &fw_on_ctlr_branch, - &fw_on_ctlr_build, &init_connect_result))) { - twa_printf(sc, "Can't initialize connection in base mode.\n"); - return(error); - } - if (!(init_connect_result & TWA_CTLR_FW_COMPATIBLE)) { - /* - * The firmware on the controller is not even - * compatible with our base mode. We cannot - * work with it. Bail... - */ - twa_printf(sc, "Incompatible firmware on controller\n"); -#ifdef TWA_FLASH_FIRMWARE - if (fw_flash_failed) - twa_printf(sc, "...and could not flash bundled firmware.\n"); - else - twa_printf(sc, "...and bundled firmware not safe to flash.\n"); -#endif /* TWA_FLASH_FIRMWARE */ - return(1); - } - /* We can work with this firmware, but only in base mode. */ - sc->working_srl = TWA_BASE_FW_SRL; - sc->working_branch = TWA_BASE_FW_BRANCH; - sc->working_build = TWA_BASE_FW_BUILD; - sc->twa_operating_mode = TWA_BASE_MODE; - } - } - - /* Drain the AEN queue */ - if (twa_drain_aen_queue(sc)) { - /* - * We will just print that we couldn't drain the AEN queue. - * There's no need to bail out. - */ - twa_printf(sc, "Can't drain AEN queue.\n"); - } - - /* Set controller state to initialized. */ - sc->twa_state &= ~TWA_STATE_SHUTDOWN; - - twa_dbg_dprint_exit(3, sc); - return(0); -} - - -/* - * Function name: twa_deinit_ctlr - * Description: Close logical connection with the controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_deinit_ctlr(struct twa_softc *sc) -{ - /* - * Mark the controller as shutting down, - * and disable any further interrupts. - */ - sc->twa_state |= TWA_STATE_SHUTDOWN; - twa_disable_interrupts(sc); - - /* Let the controller know that we are going down. */ - return(twa_init_connection(sc, TWA_SHUTDOWN_MESSAGE_CREDITS, - 0, 0, 0, 0, 0, - NULL, NULL, NULL, NULL, NULL)); -} - - -/* - * Function name: twa_interrupt - * Description: Interrupt handler. Determines the kind of interrupt, - * and calls the appropriate handler. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_interrupt(struct twa_softc *sc) -{ - u_int32_t status_reg; - - twa_dbg_dprint_enter(5, sc); - - /* Collect current interrupt status. */ - status_reg = TWA_READ_STATUS_REGISTER(sc); - if (twa_check_ctlr_state(sc, status_reg)) - return; - - /* Dispatch based on the kind of interrupt. */ - if (status_reg & TWA_STATUS_HOST_INTERRUPT) - twa_host_intr(sc); - if (status_reg & TWA_STATUS_ATTENTION_INTERRUPT) - twa_attention_intr(sc); - if (status_reg & TWA_STATUS_COMMAND_INTERRUPT) - twa_command_intr(sc); - if (status_reg & TWA_STATUS_RESPONSE_INTERRUPT) - twa_done(sc); -} - - -/* - * Function name: twa_ioctl - * Description: ioctl handler. - * - * Input: sc -- ptr to per ctlr structure - * cmd -- ioctl cmd - * buf -- ptr to buffer in kernel memory, which is - * a copy of the input buffer in user-space - * Output: buf -- ptr to buffer in kernel memory, which will - * be copied of the output buffer in user-space - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_ioctl(struct twa_softc *sc, int cmd, void *buf) -{ - struct twa_ioctl_9k *user_buf = (struct twa_ioctl_9k *)buf; - struct twa_event_packet event_buf; - int32_t event_index; - int32_t start_index; - int error = 0; - - switch (cmd) { - case TWA_IOCTL_FIRMWARE_PASS_THROUGH: - { - struct twa_command_packet *cmdpkt; - struct twa_request *tr; - u_int32_t data_buf_size_adjusted; - - - twa_dbg_dprint(2, sc, "Firmware PassThru"); - - /* Get a request packet */ - while ((tr = twa_get_request(sc)) == NULL) - /* - * No free request packets available. Sleep until - * one becomes available. - */ - tsleep(&(sc->twa_wait_timeout), 0, "twioctl", hz); - - /* - * Make sure that the data buffer sent to firmware is a - * 512 byte multiple in size. - */ - data_buf_size_adjusted = (user_buf->twa_drvr_pkt.buffer_length + 511) & ~511; - if ((tr->tr_length = data_buf_size_adjusted)) { - tr->tr_data = kmalloc(data_buf_size_adjusted, M_DEVBUF, - M_WAITOK); - /* Copy the payload. */ - if ((error = copyin((void *) (user_buf->pdata), - (void *) (tr->tr_data), - user_buf->twa_drvr_pkt.buffer_length)) != 0) { - twa_printf (sc, "Could not copyin fw_passthru data_buf.\n"); - goto fw_passthru_done; - } - tr->tr_flags |= TWA_CMD_DATA_IN | TWA_CMD_DATA_OUT; - } - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_IOCTL; - cmdpkt = tr->tr_command; - - /* Copy the command packet. */ - bcopy(&(user_buf->twa_cmd_pkt), cmdpkt, - sizeof(struct twa_command_packet)); - cmdpkt->command.cmd_pkt_7k.generic.request_id = tr->tr_request_id; - - twa_dbg_dprint(3, sc, "cmd_pkt_7k = %x %x %x %x %x %x %x", - cmdpkt->command.cmd_pkt_7k.generic.opcode, - cmdpkt->command.cmd_pkt_7k.generic.sgl_offset, - cmdpkt->command.cmd_pkt_7k.generic.size, - cmdpkt->command.cmd_pkt_7k.generic.request_id, - cmdpkt->command.cmd_pkt_7k.generic.unit, - cmdpkt->command.cmd_pkt_7k.generic.status, - cmdpkt->command.cmd_pkt_7k.generic.flags); - - /* Send down the request, and wait for it to complete. */ - if ((error = twa_wait_request(tr, TWA_REQUEST_TIMEOUT_PERIOD))) { - twa_printf(sc, "fw_passthru request failed. error = 0x%x\n", error); - if (error == ETIMEDOUT) - break; /* clean-up done by twa_wait_request */ - goto fw_passthru_done; - } - - /* Copy the command packet back into user space. */ - bcopy(cmdpkt, &(user_buf->twa_cmd_pkt), - sizeof(struct twa_command_packet)); - - /* If there was a payload, copy it back too. */ - if (tr->tr_length) - error = copyout(tr->tr_data, user_buf->pdata, - user_buf->twa_drvr_pkt.buffer_length); - -fw_passthru_done: - /* Free resources. */ - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - if (tr) - twa_release_request(tr); - break; - } - - - case TWA_IOCTL_SCAN_BUS: - /* Request CAM for a bus scan. */ - twa_request_bus_scan(sc); - break; - - - case TWA_IOCTL_GET_FIRST_EVENT: - twa_dbg_dprint(3, sc, "Get First Event"); - - if (sc->twa_aen_queue_wrapped) { - if (sc->twa_aen_queue_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_OVERFLOW; - sc->twa_aen_queue_overflow = FALSE; - } else - user_buf->twa_drvr_pkt.status = 0; - event_index = sc->twa_aen_head; - } else { - if (sc->twa_aen_head == sc->twa_aen_tail) { - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - user_buf->twa_drvr_pkt.status = 0; - event_index = sc->twa_aen_tail; /* = 0 */ - } - if ((error = copyout(sc->twa_aen_queue[event_index], user_buf->pdata, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_first: Could not copyout to event_buf. error = %x\n", error); - (sc->twa_aen_queue[event_index])->retrieved = TWA_AEN_RETRIEVED; - break; - - - case TWA_IOCTL_GET_LAST_EVENT: - twa_dbg_dprint(3, sc, "Get Last Event"); - - if (sc->twa_aen_queue_wrapped) { - if (sc->twa_aen_queue_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_OVERFLOW; - sc->twa_aen_queue_overflow = FALSE; - } else - user_buf->twa_drvr_pkt.status = 0; - } else { - if (sc->twa_aen_head == sc->twa_aen_tail) { - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - user_buf->twa_drvr_pkt.status = 0; - } - event_index = (sc->twa_aen_head - 1 + TWA_Q_LENGTH) % TWA_Q_LENGTH; - if ((error = copyout(sc->twa_aen_queue[event_index], user_buf->pdata, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_last: Could not copyout to event_buf. error = %x\n", error); - (sc->twa_aen_queue[event_index])->retrieved = TWA_AEN_RETRIEVED; - break; - - - case TWA_IOCTL_GET_NEXT_EVENT: - twa_dbg_dprint(3, sc, "Get Next Event"); - - user_buf->twa_drvr_pkt.status = 0; - if (sc->twa_aen_queue_wrapped) { - twa_dbg_dprint(3, sc, "Get Next Event: wrapped"); - if (sc->twa_aen_queue_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - twa_dbg_dprint(2, sc, "Get Next Event: overflow"); - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_OVERFLOW; - sc->twa_aen_queue_overflow = FALSE; - } - start_index = sc->twa_aen_head; - } else { - if (sc->twa_aen_head == sc->twa_aen_tail) { - twa_dbg_dprint(3, sc, "Get Next Event: empty queue"); - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - start_index = sc->twa_aen_tail; /* = 0 */ - } - if ((error = copyin(user_buf->pdata, &event_buf, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_next: Could not copyin event_buf.\n"); - - event_index = (start_index + event_buf.sequence_id - - (sc->twa_aen_queue[start_index])->sequence_id + 1) - % TWA_Q_LENGTH; - - twa_dbg_dprint(3, sc, "Get Next Event: si = %x, ei = %x, ebsi = %x, sisi = %x, eisi = %x", - start_index, event_index, event_buf.sequence_id, - (sc->twa_aen_queue[start_index])->sequence_id, - (sc->twa_aen_queue[event_index])->sequence_id); - - if (! ((sc->twa_aen_queue[event_index])->sequence_id > - event_buf.sequence_id)) { - if (user_buf->twa_drvr_pkt.status == TWA_ERROR_AEN_OVERFLOW) - sc->twa_aen_queue_overflow = TRUE; /* so we report the overflow next time */ - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - if ((error = copyout(sc->twa_aen_queue[event_index], user_buf->pdata, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_next: Could not copyout to event_buf. error = %x\n", error); - - (sc->twa_aen_queue[event_index])->retrieved = TWA_AEN_RETRIEVED; - break; - - - case TWA_IOCTL_GET_PREVIOUS_EVENT: - twa_dbg_dprint(3, sc, "Get Previous Event"); - - user_buf->twa_drvr_pkt.status = 0; - if (sc->twa_aen_queue_wrapped) { - if (sc->twa_aen_queue_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_OVERFLOW; - sc->twa_aen_queue_overflow = FALSE; - } - start_index = sc->twa_aen_head; - } else { - if (sc->twa_aen_head == sc->twa_aen_tail) { - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - start_index = sc->twa_aen_tail; /* = 0 */ - } - if ((error = copyin(user_buf->pdata, &event_buf, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_previous: Could not copyin event_buf.\n"); - - event_index = (start_index + event_buf.sequence_id - - (sc->twa_aen_queue[start_index])->sequence_id - 1) % TWA_Q_LENGTH; - if (! ((sc->twa_aen_queue[event_index])->sequence_id < event_buf.sequence_id)) { - if (user_buf->twa_drvr_pkt.status == TWA_ERROR_AEN_OVERFLOW) - sc->twa_aen_queue_overflow = TRUE; /* so we report the overflow next time */ - user_buf->twa_drvr_pkt.status = TWA_ERROR_AEN_NO_EVENTS; - break; - } - if ((error = copyout(sc->twa_aen_queue [event_index], user_buf->pdata, - sizeof(struct twa_event_packet))) != 0) - twa_printf(sc, "get_previous: Could not copyout to event_buf. error = %x\n", error); - - (sc->twa_aen_queue[event_index])->retrieved = TWA_AEN_RETRIEVED; - break; - - - case TWA_IOCTL_GET_LOCK: - { - struct twa_lock_packet twa_lock; - u_int32_t cur_time; - - cur_time = time_second - (tz.tz_minuteswest * 60) - - (wall_cmos_clock ? adjkerntz : 0); - copyin(user_buf->pdata, &twa_lock, - sizeof(struct twa_lock_packet)); - crit_enter(); - if ((sc->twa_ioctl_lock.lock == TWA_LOCK_FREE) || - (twa_lock.force_flag) || - (cur_time >= sc->twa_ioctl_lock.timeout)) { - twa_dbg_dprint(3, sc, "GET_LOCK: Getting lock!"); - sc->twa_ioctl_lock.lock = TWA_LOCK_HELD; - sc->twa_ioctl_lock.timeout = cur_time + (twa_lock.timeout_msec / 1000); - twa_lock.time_remaining_msec = twa_lock.timeout_msec; - user_buf->twa_drvr_pkt.status = 0; - } else { - twa_dbg_dprint(2, sc, "GET_LOCK: Lock already held!"); - twa_lock.time_remaining_msec = - (sc->twa_ioctl_lock.timeout - cur_time) * 1000; - user_buf->twa_drvr_pkt.status = - TWA_ERROR_IOCTL_LOCK_ALREADY_HELD; - } - crit_exit(); - copyout(&twa_lock, user_buf->pdata, - sizeof(struct twa_lock_packet)); - break; - } - - - case TWA_IOCTL_RELEASE_LOCK: - crit_enter(); - if (sc->twa_ioctl_lock.lock == TWA_LOCK_FREE) { - twa_dbg_dprint(2, sc, "twa_ioctl: RELEASE_LOCK: Lock not held!"); - user_buf->twa_drvr_pkt.status = TWA_ERROR_IOCTL_LOCK_NOT_HELD; - } else { - twa_dbg_dprint(3, sc, "RELEASE_LOCK: Releasing lock!"); - sc->twa_ioctl_lock.lock = TWA_LOCK_FREE; - user_buf->twa_drvr_pkt.status = 0; - } - crit_exit(); - break; - - - case TWA_IOCTL_GET_COMPATIBILITY_INFO: - { - struct twa_compatibility_packet comp_pkt; - - bcopy(TWA_DRIVER_VERSION_STRING, comp_pkt.driver_version, - sizeof(TWA_DRIVER_VERSION_STRING)); - comp_pkt.working_srl = sc->working_srl; - comp_pkt.working_branch = sc->working_branch; - comp_pkt.working_build = sc->working_build; - user_buf->twa_drvr_pkt.status = 0; - - /* Copy compatibility information to user space. */ - copyout(&comp_pkt, user_buf->pdata, - min(sizeof(struct twa_compatibility_packet), - user_buf->twa_drvr_pkt.buffer_length)); - break; - } - - default: - /* Unknown opcode. */ - error = ENOTTY; - } - - return(error); -} - - -/* - * Function name: twa_enable_interrupts - * Description: Enables interrupts on the controller - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_enable_interrupts(struct twa_softc *sc) -{ - sc->twa_state |= TWA_STATE_INTR_ENABLED; - TWA_WRITE_CONTROL_REGISTER(sc, - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | - TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT | - TWA_CONTROL_ENABLE_INTERRUPTS); -} - - -/* - * Function name: twa_setup - * Description: Disables interrupts on the controller - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_disable_interrupts(struct twa_softc *sc) -{ - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_DISABLE_INTERRUPTS); - sc->twa_state &= ~TWA_STATE_INTR_ENABLED; -} - - - -/* - * Function name: twa_get_param - * Description: Get a firmware parameter. - * - * Input: sc -- ptr to per ctlr structure - * table_id -- parameter table # - * param_id -- index of the parameter in the table - * param_size -- size of the parameter in bytes - * callback -- ptr to function, if any, to be called - * back on completion; NULL if no callback. - * Output: None - * Return value: ptr to param structure -- success - * NULL -- failure - */ -static void * -twa_get_param(struct twa_softc *sc, int table_id, int param_id, - size_t param_size, void (* callback)(struct twa_request *tr)) -{ - struct twa_request *tr; - union twa_command_7k *cmd; - struct twa_param_9k *param = NULL; - int error = ENOMEM; - - twa_dbg_dprint_enter(4, sc); - - /* Get a request packet. */ - if ((tr = twa_get_request(sc)) == NULL) - goto out; - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - - /* Allocate memory to read data into. */ - param = kmalloc(TWA_SECTOR_SIZE, M_DEVBUF, M_INTWAIT); - bzero(param, sizeof(struct twa_param_9k) - 1 + param_size); - tr->tr_data = param; - tr->tr_length = TWA_SECTOR_SIZE; - tr->tr_flags = TWA_CMD_DATA_IN | TWA_CMD_DATA_OUT; - - /* Build the cmd pkt. */ - cmd = &(tr->tr_command->command.cmd_pkt_7k); - - tr->tr_command->cmd_hdr.header_desc.size_header = 128; - - cmd->param.opcode = TWA_OP_GET_PARAM; - cmd->param.sgl_offset = 2; - cmd->param.size = 2; - cmd->param.request_id = tr->tr_request_id; - cmd->param.unit = 0; - cmd->param.param_count = 1; - - /* Specify which parameter we need. */ - param->table_id = table_id | TWA_9K_PARAM_DESCRIPTOR; - param->parameter_id = param_id; - param->parameter_size_bytes = param_size; - - /* Submit the command. */ - if (callback == NULL) { - /* There's no call back; wait till the command completes. */ - error = twa_immediate_request(tr, TWA_REQUEST_TIMEOUT_PERIOD); - if (error == ETIMEDOUT) - return(NULL); /* clean-up done by twa_immediate_request */ - if (error) - goto out; - if ((error = cmd->param.status)) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cmd->param.opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_command->cmd_hdr.status_block.error, - twa_find_msg_string(twa_error_table, - tr->tr_command->cmd_hdr.status_block.error), - tr->tr_command->cmd_hdr.err_specific_desc); - goto out; /* twa_drain_complete_queue will have done the unmapping */ - } - twa_release_request(tr); - return(param); - } else { - /* There's a call back. Simply submit the command. */ - tr->tr_callback = callback; - if ((error = twa_map_request(tr))) { - twa_printf(tr->tr_sc, "%s: twa_map_request returned 0x%x\n", - __func__, error); - goto out; - } - return(callback); - } - -out: - twa_printf(sc, "get_param failed. error = 0x%x\n", error); - if (param) - kfree(param, M_DEVBUF); - if (tr) - twa_release_request(tr); - return(NULL); -} - - -/* - * Function name: twa_set_param - * Description: Set a firmware parameter. - * - * Input: sc -- ptr to per ctlr structure - * table_id -- parameter table # - * param_id -- index of the parameter in the table - * param_size -- size of the parameter in bytes - * callback -- ptr to function, if any, to be called - * back on completion; NULL if no callback. - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_set_param(struct twa_softc *sc, int table_id, - int param_id, int param_size, void *data, - void (* callback)(struct twa_request *tr)) -{ - struct twa_request *tr; - union twa_command_7k *cmd; - struct twa_param_9k *param = NULL; - int error = ENOMEM; - - twa_dbg_dprint_enter(4, sc); - - /* Get a request packet. */ - if ((tr = twa_get_request(sc)) == NULL) - goto out; - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - - /* Allocate memory to send data using. */ - param = kmalloc(TWA_SECTOR_SIZE, M_DEVBUF, M_INTWAIT); - bzero(param, sizeof(struct twa_param_9k) - 1 + param_size); - tr->tr_data = param; - tr->tr_length = TWA_SECTOR_SIZE; - tr->tr_flags = TWA_CMD_DATA_IN | TWA_CMD_DATA_OUT; - - /* Build the cmd pkt. */ - cmd = &(tr->tr_command->command.cmd_pkt_7k); - - tr->tr_command->cmd_hdr.header_desc.size_header = 128; - - cmd->param.opcode = TWA_OP_SET_PARAM; - cmd->param.sgl_offset = 2; - cmd->param.size = 2; - cmd->param.request_id = tr->tr_request_id; - cmd->param.unit = 0; - cmd->param.param_count = 1; - - /* Specify which parameter we want to set. */ - param->table_id = table_id | TWA_9K_PARAM_DESCRIPTOR; - param->parameter_id = param_id; - param->parameter_size_bytes = param_size; - bcopy(data, param->data, param_size); - - /* Submit the command. */ - if (callback == NULL) { - /* There's no call back; wait till the command completes. */ - error = twa_immediate_request(tr, TWA_REQUEST_TIMEOUT_PERIOD); - if (error == ETIMEDOUT) - return(error); /* clean-up done by twa_immediate_request */ - if (error) - goto out; - if ((error = cmd->param.status)) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cmd->param.opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_command->cmd_hdr.status_block.error, - twa_find_msg_string(twa_error_table, - tr->tr_command->cmd_hdr.status_block.error), - tr->tr_command->cmd_hdr.err_specific_desc); - goto out; /* twa_drain_complete_queue will have done the unmapping */ - } - kfree(param, M_DEVBUF); - twa_release_request(tr); - return(error); - } else { - /* There's a call back. Simply submit the command. */ - tr->tr_callback = callback; - if ((error = twa_map_request(tr))) { - twa_printf(tr->tr_sc, "%s: twa_map_request returned 0x%x\n", - __func__, error); - goto out; - } - return(0); - } - -out: - twa_printf(sc, "set_param failed. error = 0x%x\n", error); - if (param) - kfree(param, M_DEVBUF); - if (tr) - twa_release_request(tr); - return(error); -} - - -/* - * Function name: twa_init_connection - * Description: Send init_connection cmd to firmware - * - * Input: sc -- ptr to per ctlr structure - * message_credits -- max # of requests that we might send - * down simultaneously. This will be - * typically set to 256 at init-time or - * after a reset, and to 1 at shutdown-time - * set_features -- indicates if we intend to use 64-bit - * sg, also indicates if we want to do a - * basic or an extended init_connection; - * - * Note: The following input/output parameters are valid, only in case of an - * extended init_connection: - * - * current_fw_srl -- srl of fw we are bundled - * with, if any; 0 otherwise - * current_fw_arch_id -- arch_id of fw we are bundled - * with, if any; 0 otherwise - * current_fw_branch -- branch # of fw we are bundled - * with, if any; 0 otherwise - * current_fw_build -- build # of fw we are bundled - * with, if any; 0 otherwise - * Output: fw_on_ctlr_srl -- srl of fw on ctlr - * fw_on_ctlr_arch_id -- arch_id of fw on ctlr - * fw_on_ctlr_branch -- branch # of fw on ctlr - * fw_on_ctlr_build -- build # of fw on ctlr - * init_connect_result -- result bitmap of fw response - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_init_connection(struct twa_softc *sc, u_int16_t message_credits, - u_int32_t set_features, u_int16_t current_fw_srl, - u_int16_t current_fw_arch_id, u_int16_t current_fw_branch, - u_int16_t current_fw_build, u_int16_t *fw_on_ctlr_srl, - u_int16_t *fw_on_ctlr_arch_id, u_int16_t *fw_on_ctlr_branch, - u_int16_t *fw_on_ctlr_build, u_int32_t *init_connect_result) -{ - struct twa_request *tr; - struct twa_command_init_connect *init_connect; - int error = 1; - - twa_dbg_dprint_enter(3, sc); - - /* Get a request packet. */ - if ((tr = twa_get_request(sc)) == NULL) - goto out; - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - /* Build the cmd pkt. */ - init_connect = &(tr->tr_command->command.cmd_pkt_7k.init_connect); - - tr->tr_command->cmd_hdr.header_desc.size_header = 128; - - init_connect->opcode = TWA_OP_INIT_CONNECTION; - init_connect->request_id = tr->tr_request_id; - init_connect->message_credits = message_credits; - init_connect->features = set_features; - if (TWA_64BIT_ADDRESSES) - init_connect->features |= TWA_64BIT_SG_ADDRESSES; - if (set_features & TWA_EXTENDED_INIT_CONNECT) { - /* Fill in the extra fields needed for an extended init_connect. */ - init_connect->size = 6; - init_connect->fw_srl = current_fw_srl; - init_connect->fw_arch_id = current_fw_arch_id; - init_connect->fw_branch = current_fw_branch; - init_connect->fw_build = current_fw_build; - } else - init_connect->size = 3; - - /* Submit the command, and wait for it to complete. */ - error = twa_immediate_request(tr, TWA_REQUEST_TIMEOUT_PERIOD); - if (error == ETIMEDOUT) - return(error); /* clean-up done by twa_immediate_request */ - if (error) - goto out; - if ((error = init_connect->status)) { - twa_printf(sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - init_connect->opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_command->cmd_hdr.status_block.error, - twa_find_msg_string(twa_error_table, - tr->tr_command->cmd_hdr.status_block.error), - tr->tr_command->cmd_hdr.err_specific_desc); - goto out; /* twa_drain_complete_queue will have done the unmapping */ - } - if (set_features & TWA_EXTENDED_INIT_CONNECT) { - *fw_on_ctlr_srl = init_connect->fw_srl; - *fw_on_ctlr_arch_id = init_connect->fw_arch_id; - *fw_on_ctlr_branch = init_connect->fw_branch; - *fw_on_ctlr_build = init_connect->fw_build; - *init_connect_result = init_connect->result; - } - twa_release_request(tr); - return(error); - -out: - twa_printf(sc, "init_connection failed. error = 0x%x\n", error); - if (tr) - twa_release_request(tr); - return(error); -} - - - -/* - * Function name: twa_wait_request - * Description: Sends down a firmware cmd, and waits for the completion, - * but NOT in a tight loop. - * - * Input: tr -- ptr to request pkt - * timeout -- max # of seconds to wait before giving up - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_wait_request(struct twa_request *tr, u_int32_t timeout) -{ - time_t end_time; - int error; - - twa_dbg_dprint_enter(4, tr->tr_sc); - - tr->tr_flags |= TWA_CMD_SLEEP_ON_REQUEST; - tr->tr_status = TWA_CMD_BUSY; - if ((error = twa_map_request(tr))) { - twa_printf(tr->tr_sc, "%s: twa_map_request returned 0x%x\n", - __func__, error); - return(error); - } - - end_time = time_second + timeout; - while (tr->tr_status != TWA_CMD_COMPLETE) { - if ((error = tr->tr_error)) - return(error); - if ((error = tsleep(tr, 0, "twawait", timeout * hz)) == 0) { - error = (tr->tr_status != TWA_CMD_COMPLETE); - break; - } - if (error == EWOULDBLOCK) { - /* Time out! */ - twa_printf(tr->tr_sc, "%s: Request %p timed out.\n", - __func__, tr); - /* - * We will reset the controller only if the request has - * already been submitted, so as to not lose the - * request packet. If a busy request timed out, the - * reset will take care of freeing resources. If a - * pending request timed out, we will free resources - * for that request, right here. So, the caller is - * expected to NOT cleanup when ETIMEDOUT is returned. - */ - if (tr->tr_status != TWA_CMD_PENDING) - twa_reset(tr->tr_sc); - else { - /* Request was never submitted. Clean up. */ - twa_remove_pending(tr); - twa_unmap_request(tr); - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); - } - return(ETIMEDOUT); - } - /* - * Either the request got completed, or we were woken up by a - * signal. Calculate the new timeout, in case it was the latter. - */ - timeout = (end_time - time_second); - } - twa_unmap_request(tr); - return(error); -} - - - -/* - * Function name: twa_immediate_request - * Description: Sends down a firmware cmd, and waits for the completion - * in a tight loop. - * - * Input: tr -- ptr to request pkt - * timeout -- max # of seconds to wait before giving up - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_immediate_request(struct twa_request *tr, u_int32_t timeout) -{ - time_t end_time; - int error = 0; - - twa_dbg_dprint_enter(4, tr->tr_sc); - - if ((error = twa_map_request(tr))) { - twa_printf(tr->tr_sc, "%s: twa_map_request returned 0x%x\n", - __func__, error); - return(error); - } - - end_time = time_second + timeout; - do { - if ((error = tr->tr_error)) - return(error); - twa_done(tr->tr_sc); - if ((tr->tr_status != TWA_CMD_BUSY) && - (tr->tr_status != TWA_CMD_PENDING)) { - twa_unmap_request(tr); - return(tr->tr_status != TWA_CMD_COMPLETE); - } - } while (time_second <= end_time); - - /* Time out! */ - twa_printf(tr->tr_sc, "%s: Request %p timed out.\n", __func__, tr); - /* - * We will reset the controller only if the request has - * already been submitted, so as to not lose the - * request packet. If a busy request timed out, the - * reset will take care of freeing resources. If a - * pending request timed out, we will free resources - * for that request, right here. So, the caller is - * expected to NOT cleanup when ETIMEDOUT is returned. - */ - if (tr->tr_status != TWA_CMD_PENDING) - twa_reset(tr->tr_sc); - else { - /* Request was never submitted. Clean up. */ - twa_remove_pending(tr); - twa_unmap_request(tr); - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); - } - return(ETIMEDOUT); -} - - - -/* - * Function name: twa_complete_io - * Description: Callback on scsi requests to fw. - * - * Input: tr -- ptr to request pkt - * Output: None - * Return value: None - */ -void -twa_complete_io(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - - twa_dbg_dprint_enter(8, sc); - - if (tr->tr_status != TWA_CMD_COMPLETE) - twa_panic(sc, "twa_complete_io on incomplete command"); - if (tr->tr_private) /* This is a scsi cmd. Complete it. */ - twa_scsi_complete(tr); - twa_release_request(tr); -} - - -/* - * Function name: twa_reset - * Description: Soft resets and then initializes the controller; - * drains any incomplete requests. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_reset(struct twa_softc *sc) -{ - int error = 0; - - twa_dbg_dprint_enter(2, sc); - - /* - * Disable interrupts from the controller, and mask any - * accidental entry into our interrupt handler. - */ - twa_disable_interrupts(sc); - crit_enter(); - - /* Soft reset the controller. */ - if ((error = twa_soft_reset(sc))) { - twa_printf (sc, "Controller reset failed.\n"); - goto out; - } - - /* Re-establish logical connection with the controller. */ - if ((error = twa_init_connection(sc, TWA_INIT_MESSAGE_CREDITS, - 0, 0, 0, 0, 0, - NULL, NULL, NULL, NULL, NULL))) { - twa_printf(sc, "Can't initialize connection after reset.\n"); - goto out; - } - - twa_printf(sc, "Controller reset done!\n"); - - /* - * Complete all requests in the complete queue; error back all requests - * in the busy queue. Any internal requests will be simply freed. - * Re-submit any requests in the pending queue. - */ - twa_drain_complete_queue(sc); - twa_drain_busy_queue(sc); - -out: - crit_exit(); - /* - * Enable interrupts, and also clear attention and response interrupts. - */ - twa_enable_interrupts(sc); - return(error); -} - - - -/* - * Function name: twa_soft_reset - * Description: Does the actual soft reset. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_soft_reset(struct twa_softc *sc) -{ - u_int32_t status_reg; - - twa_dbg_dprint_enter(1, sc); - - twa_printf(sc, "Resetting controller...\n"); - TWA_SOFT_RESET(sc); - - if (twa_wait_status(sc, TWA_STATUS_MICROCONTROLLER_READY | - TWA_STATUS_ATTENTION_INTERRUPT, 30)) { - twa_printf(sc, "Micro-ctlr not ready/No attn intr after reset.\n"); - return(1); - } - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); - if (twa_drain_response_queue(sc)) { - twa_printf(sc, "Can't drain response queue.\n"); - return(1); - } - if (twa_drain_aen_queue(sc)) { - twa_printf(sc, "Can't drain AEN queue.\n"); - return(1); - } - if (twa_find_aen(sc, TWA_AEN_SOFT_RESET)) { - twa_printf(sc, "Reset not reported by controller.\n"); - return(1); - } - status_reg = TWA_READ_STATUS_REGISTER(sc); - if (TWA_STATUS_ERRORS(status_reg) || - twa_check_ctlr_state(sc, status_reg)) { - twa_printf(sc, "Controller errors detected.\n"); - return(1); - } - return(0); -} - - - -/* - * Function name: twa_submit_io - * Description: Wrapper to twa_start. - * - * Input: tr -- ptr to request pkt - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_submit_io(struct twa_request *tr) -{ - int error; - - if ((error = twa_start(tr))) { - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) { - if (error == EBUSY) - /* - * Cmd queue is full. Freeze the simq to - * maintain ccb ordering. The next ccb that - * gets completed will unfreeze the simq. - */ - twa_disallow_new_requests(tr->tr_sc); - else - /* It's a controller error. */ - twa_printf(tr->tr_sc, "SCSI cmd = 0x%x: ERROR: (0x%02X: 0x%04X)\n", - tr->tr_command->command.cmd_pkt_9k.cdb[0], - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - error); - - tr->tr_error = error; - twa_scsi_complete(tr); - } else { - if (error == EBUSY) - error = 0; /* the request will be in the pending queue */ - else { - twa_printf(tr->tr_sc, "cmd = 0x%x: ERROR: (0x%02X: 0x%04X)\n", - (tr->tr_cmd_pkt_type == TWA_CMD_PKT_TYPE_9K) ? - (tr->tr_command->command.cmd_pkt_9k.command.opcode) : - (tr->tr_command->command.cmd_pkt_7k.generic.opcode), - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - tr->tr_error); - tr->tr_error = error; - } - } - } - return(error); -} - - - -/* - * Function name: twa_start - * Description: Posts a cmd to firmware. - * - * Input: tr -- ptr to request pkt - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_start(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - u_int32_t status_reg; - int error; - - twa_dbg_dprint_enter(10, sc); - - crit_enter(); - /* Check to see if we can post a command. */ - status_reg = TWA_READ_STATUS_REGISTER(sc); - if ((error = twa_check_ctlr_state(sc, status_reg))) - goto out; - - if (status_reg & TWA_STATUS_COMMAND_QUEUE_FULL) { - if ((tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_INTERNAL) || - (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_IOCTL)) { - if (tr->tr_status != TWA_CMD_PENDING) { - twa_dbg_dprint(2, sc, "pending internal/ioctl request"); - tr->tr_status = TWA_CMD_PENDING; - twa_enqueue_pending(tr); - } - TWA_WRITE_CONTROL_REGISTER(sc, - TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); - } - error = EBUSY; - } else { - /* Cmd queue is not full. Post the command. */ - TWA_WRITE_COMMAND_QUEUE(sc, - tr->tr_cmd_phys + sizeof(struct twa_command_header)); - /* Mark the request as currently being processed. */ - tr->tr_status = TWA_CMD_BUSY; - /* Move the request into the busy queue. */ - twa_enqueue_busy(tr); - } - -out: - crit_exit(); - return(error); -} - - - -/* - * Function name: twa_done - * Description: Looks for cmd completions from fw; queues cmds completed - * by fw into complete queue. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- no ctlr error - * non-zero-- ctlr error - */ -static int -twa_done(struct twa_softc *sc) -{ - union twa_response_queue rq; - struct twa_request *tr; - int error = 0; - u_int32_t status_reg; - - twa_dbg_dprint_enter(10, sc); - - crit_enter(); - for (;;) { - status_reg = TWA_READ_STATUS_REGISTER(sc); - if ((error = twa_check_ctlr_state(sc, status_reg))) - break; - if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) - break; - /* Response queue is not empty. */ - rq = TWA_READ_RESPONSE_QUEUE(sc); - tr = sc->twa_lookup[rq.u.response_id]; /* lookup the request */ - if (tr->tr_status != TWA_CMD_BUSY) - twa_printf(sc, "ERROR: Unposted command completed!! req = %p; status = %d\n", - tr, tr->tr_status); - tr->tr_status = TWA_CMD_COMPLETE; - /* Enqueue request in the complete queue. */ - twa_remove_busy(tr); - twa_enqueue_complete(tr); - } - crit_exit(); - - /* Complete this, and other requests in the complete queue. */ - twa_drain_complete_queue(sc); - return(error); -} - - - -/* - * Function name: twa_drain_pending_queue - * Description: Kick starts any requests in the pending queue. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- all pending requests drained - * non-zero-- otherwise - */ -static int -twa_drain_pending_queue(struct twa_softc *sc) -{ - struct twa_request *tr; - int error = 0; - - twa_dbg_dprint_enter(10, sc); - - /* - * Pull requests off the pending queue, and submit them. - */ - while ((tr = twa_dequeue_pending(sc)) != NULL) { - if ((error = twa_start(tr))) { - if (error == EBUSY) { - twa_dbg_dprint(2, sc, "Requeueing pending request"); - tr->tr_status = TWA_CMD_PENDING; - twa_requeue_pending(tr);/* queue at the head */ - break; - } else { - twa_printf(sc, "%s: twa_start returned 0x%x\n", - __func__, error); - if (tr->tr_flags & TWA_CMD_SLEEP_ON_REQUEST) - wakeup_one(tr);/* let the caller know it failed */ - tr->tr_error = error; - error = 0; - } - } - } - return(error); -} - - - -/* - * Function name: twa_drain_complete_queue - * Description: Does unmapping for each request completed by fw, - * and lets the request originators know of the completion. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_drain_complete_queue(struct twa_softc *sc) -{ - struct twa_request *tr; - - twa_dbg_dprint_enter(10, sc); - - /* - * Pull commands off the completed list, dispatch them appropriately. - */ - while ((tr = twa_dequeue_complete(sc)) != NULL) { - /* Unmap the command packet, and any associated data buffer. */ - twa_unmap_request(tr); - - /* Call the callback, if there's one. */ - if (tr->tr_callback) - tr->tr_callback(tr); - else - if (tr->tr_flags & TWA_CMD_SLEEP_ON_REQUEST) { - /* Wake up the sleeping command originator. */ - twa_dbg_dprint(7, sc, "Waking up originator of request %p", tr); - wakeup_one(tr); - } - } -} - - - -/* - * Function name: twa_wait_status - * Description: Wait for a given status to show up in the fw status register. - * - * Input: sc -- ptr to per ctlr structure - * status -- status to look for - * timeout -- max # of seconds to wait before giving up - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_wait_status(struct twa_softc *sc, u_int32_t status, u_int32_t timeout) -{ - time_t end_time; - u_int32_t status_reg; - - twa_dbg_dprint_enter(4, sc); - - end_time = time_second + timeout; - do { - status_reg = TWA_READ_STATUS_REGISTER(sc); - if ((status_reg & status) == status)/* got the required bit(s)? */ - return(0); - DELAY(100000); - } while (time_second <= end_time); - - return(1); -} - - - -/* - * Function name: twa_drain_response_queue - * Description: Drain the response queue. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_drain_response_queue(struct twa_softc *sc) -{ - union twa_response_queue rq; - u_int32_t status_reg; - - twa_dbg_dprint_enter(4, sc); - - for (;;) { - status_reg = TWA_READ_STATUS_REGISTER(sc); - if (twa_check_ctlr_state(sc, status_reg)) - return(1); - if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) - return(0); /* no more response queue entries */ - rq = TWA_READ_RESPONSE_QUEUE(sc); - } -} - - - -/* - * Function name: twa_host_intr - * Description: This function gets called if we triggered an interrupt. - * We don't use it as of now. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_host_intr(struct twa_softc *sc) -{ - twa_dbg_dprint_enter(6, sc); - - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_HOST_INTERRUPT); -} - - - -/* - * Function name: twa_attention_intr - * Description: This function gets called if the fw posted an AEN - * (Asynchronous Event Notification). It fetches - * all the AEN's that the fw might have posted. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_attention_intr(struct twa_softc *sc) -{ - int error; - - twa_dbg_dprint_enter(6, sc); - - if ((error = twa_fetch_aen(sc))) - twa_printf(sc, "Fetch AEN failed. error = 0x%x\n", error); - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); -} - - - -/* - * Function name: twa_command_intr - * Description: This function gets called if we hit a queue full - * condition earlier, and the fw is now ready for - * new cmds. Submits any pending requests. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_command_intr(struct twa_softc *sc) -{ - twa_dbg_dprint_enter(6, sc); - - /* Start any requests that might be in the pending queue. */ - if (! twa_drain_pending_queue(sc)) - TWA_WRITE_CONTROL_REGISTER(sc, - TWA_CONTROL_MASK_COMMAND_INTERRUPT); -} - - - -/* - * Function name: twa_fetch_aen - * Description: Send down a Request Sense cmd to fw to fetch an AEN. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_fetch_aen(struct twa_softc *sc) -{ - struct twa_request *tr; - int error = 0; - - twa_dbg_dprint_enter(4, sc); - - if ((tr = twa_get_request(sc)) == NULL) - return(EIO); - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - tr->tr_callback = twa_aen_callback; - if ((error = twa_send_scsi_cmd(tr, 0x03 /* REQUEST_SENSE */))) { - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); - } - return(error); -} - - - -/* - * Function name: twa_aen_callback - * Description: Callback for requests to fetch AEN's. - * - * Input: tr -- ptr to completed request pkt - * Output: None - * Return value: None - */ -static void -twa_aen_callback(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - struct twa_command_header *cmd_hdr = (struct twa_command_header *)(tr->tr_data); - struct twa_command_9k *cmd = &(tr->tr_command->command.cmd_pkt_9k); - int i; - - twa_dbg_dprint_enter(4, sc); - - twa_dbg_dprint(4, sc, "req_id = 0x%x, status = 0x%x", - cmd->request_id, - cmd->status); - - if (! cmd->status) { - if ((tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_9K) && - (cmd->cdb[0] == 0x3 /* REQUEST_SENSE */)) - twa_enqueue_aen(sc, cmd_hdr); - } else { - cmd_hdr->err_specific_desc[sizeof(cmd_hdr->err_specific_desc) - 1] = '\0'; - twa_printf(sc, "%s: cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - __func__, cmd->command.opcode, - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - cmd_hdr->status_block.error, - twa_find_msg_string(twa_error_table, - cmd_hdr->status_block.error), - cmd_hdr->err_specific_desc); - twa_dbg_print(2, "sense info: "); - for (i = 0; i < 18; i++) - twa_dbg_print(2, "%x\t", tr->tr_command->cmd_hdr.sense_data[i]); - twa_dbg_print(2, ""); /* print new line */ - for (i = 0; i < 128; i++) - twa_dbg_print(7, "%x\t", ((int8_t *)(tr->tr_data))[i]); - } - - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); -} - - - -/* - * Function name: twa_drain_aen_queue - * Description: Fetches all un-retrieved AEN's posted by fw. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_drain_aen_queue(struct twa_softc *sc) -{ - struct twa_request *tr; - struct twa_command_header *cmd_hdr; - time_t end_time; - int error = 0; - - for (;;) { - if ((tr = twa_get_request(sc)) == NULL) { - error = EIO; - break; - } - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_INTERNAL; - tr->tr_callback = NULL; - if ((error = twa_send_scsi_cmd(tr, 0x03 /* REQUEST_SENSE */))) { - twa_dbg_dprint(1, sc, "Cannot send command to fetch aen"); - break; - } - - end_time = time_second + TWA_REQUEST_TIMEOUT_PERIOD; - do { - twa_done(tr->tr_sc); - if (tr->tr_status != TWA_CMD_BUSY) - break; - } while (time_second <= end_time); - - if (tr->tr_status != TWA_CMD_COMPLETE) { - error = ETIMEDOUT; - break; - } - - if ((error = tr->tr_command->command.cmd_pkt_9k.status)) - break; - - cmd_hdr = (struct twa_command_header *)(tr->tr_data); - if ((cmd_hdr->status_block.error) /* aen_code */ - == TWA_AEN_QUEUE_EMPTY) - break; - twa_enqueue_aen(sc, cmd_hdr); - - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); - } - - if (tr) { - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - twa_release_request(tr); - } - return(error); -} - - - -/* - * Function name: twa_enqueue_aen - * Description: Queues AEN's to be supplied to user-space tools on request. - * - * Input: sc -- ptr to per ctlr structure - * cmd_hdr -- ptr to hdr of fw cmd pkt, from where the AEN - * details can be retrieved. - * Output: None - * Return value: None - */ -static void -twa_enqueue_aen(struct twa_softc *sc, struct twa_command_header *cmd_hdr) -{ - struct twa_event_packet *event; - unsigned short aen_code; - unsigned long local_time; - unsigned long sync_time; - - twa_dbg_dprint_enter(4, sc); - crit_enter(); - aen_code = cmd_hdr->status_block.error; - - switch (aen_code) { - case TWA_AEN_SYNC_TIME_WITH_HOST: - twa_dbg_dprint(4, sc, "Received AEN_SYNC_TIME"); - /* Calculate time (in seconds) since last Sunday 12.00 AM. */ - local_time = time_second - (tz.tz_minuteswest * 60) - - (wall_cmos_clock ? adjkerntz : 0); - sync_time = (local_time - (3 * 86400)) % 604800; - if (twa_set_param(sc, TWA_PARAM_TIME_TABLE, - TWA_PARAM_TIME_SchedulerTime, 4, - &sync_time, twa_aen_callback)) - twa_printf(sc, "Unable to sync time with ctlr!\n"); - break; - - case TWA_AEN_QUEUE_EMPTY: - twa_dbg_dprint(4, sc, "AEN queue empty"); - break; - - default: - /* Queue the event. */ - event = sc->twa_aen_queue[sc->twa_aen_head]; - if (event->retrieved == TWA_AEN_NOT_RETRIEVED) - sc->twa_aen_queue_overflow = TRUE; - event->severity = cmd_hdr->status_block.substatus_block.severity; - local_time = time_second - (tz.tz_minuteswest * 60) - - (wall_cmos_clock ? adjkerntz : 0); - event->time_stamp_sec = local_time; - event->aen_code = aen_code; - event->retrieved = TWA_AEN_NOT_RETRIEVED; - event->sequence_id = ++(sc->twa_current_sequence_id); - cmd_hdr->err_specific_desc[sizeof(cmd_hdr->err_specific_desc) - 1] = '\0'; - event->parameter_len = strlen(cmd_hdr->err_specific_desc); - bcopy(cmd_hdr->err_specific_desc, event->parameter_data, - event->parameter_len); - - twa_dbg_dprint(4, sc, "event = %x %x %x %x %x %x %x\n %s", - event->sequence_id, - event->time_stamp_sec, - event->aen_code, - event->severity, - event->retrieved, - event->repeat_count, - event->parameter_len, - event->parameter_data); - - twa_dbg_dprint(4, sc, "cmd_hdr = %x %lx %x %x %x %x %x\n %s", - sc->twa_current_sequence_id, - local_time, - cmd_hdr->status_block.error, - cmd_hdr->status_block.substatus_block.severity, - TWA_AEN_NOT_RETRIEVED, - 0, - strlen(cmd_hdr->err_specific_desc), - cmd_hdr->err_specific_desc); - - /* Print the event. */ - if (event->severity < TWA_AEN_SEVERITY_DEBUG) - twa_printf(sc, "%s: (0x%02X: 0x%04X): %s: %s\n", - twa_aen_severity_table[event->severity], - TWA_MESSAGE_SOURCE_CONTROLLER_EVENT, - aen_code, - twa_find_msg_string(twa_aen_table, aen_code), - event->parameter_data); - - if ((sc->twa_aen_head + 1) == TWA_Q_LENGTH) - sc->twa_aen_queue_wrapped = TRUE; - sc->twa_aen_head = (sc->twa_aen_head + 1) % TWA_Q_LENGTH; - break; - } /* switch */ - crit_exit(); -} - - - -/* - * Function name: twa_find_aen - * Description: Reports whether a given AEN ever occurred. - * - * Input: sc -- ptr to per ctlr structure - * aen_code-- AEN to look for - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_find_aen(struct twa_softc *sc, u_int16_t aen_code) -{ - u_int32_t last_index; - int i; - - crit_enter(); - - if (sc->twa_aen_queue_wrapped) - last_index = sc->twa_aen_head; - else - last_index = 0; - - i = sc->twa_aen_head; - do { - i = (i + TWA_Q_LENGTH - 1) % TWA_Q_LENGTH; - if ((sc->twa_aen_queue[i])->aen_code == aen_code) { - crit_exit(); - return(0); - } - } while (i != last_index); - - crit_exit(); - return(1); -} - - - -/* - * Function name: twa_find_msg_string - * Description: Looks up a given table, and returns the message string - * corresponding to a given code (error code or AEN code). - * - * Input: sc -- ptr to per ctlr structure - * code -- code, the message string corresponding to - * which is to be returned. - * Output: None - * Return value: ptr to corresponding msg string -- success - * NULL -- failure - */ -char * -twa_find_msg_string(struct twa_message *table, u_int16_t code) -{ - int i; - - for (i = 0; table[i].message != NULL; i++) - if (table[i].code == code) - return(table[i].message); - - return(table[i].message); -} - - - -/* - * Function name: twa_get_request - * Description: Gets a request pkt from the free queue. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: ptr to request pkt -- success - * NULL -- failure - */ -struct twa_request * -twa_get_request(struct twa_softc *sc) -{ - struct twa_request *tr; - - twa_dbg_dprint_enter(4, sc); - - /* Get a free request packet. */ - tr = twa_dequeue_free(sc); - - /* Initialize some fields to their defaults. */ - if (tr) { - tr->tr_data = NULL; - tr->tr_real_data = NULL; - tr->tr_length = 0; - tr->tr_real_length = 0; - tr->tr_status = TWA_CMD_SETUP;/* command is in setup phase */ - tr->tr_flags = 0; - tr->tr_error = 0; - tr->tr_private = NULL; - tr->tr_callback = NULL; - tr->tr_cmd_pkt_type = 0; - - /* - * Look at the status field in the command packet to see how - * it completed the last time it was used, and zero out only - * the portions that might have changed. Note that we don't - * care to zero out the sglist. - */ - if (tr->tr_command->command.cmd_pkt_9k.status) - bzero(tr->tr_command, - sizeof(struct twa_command_header) + 28 /* max bytes before sglist */); - else - bzero(&(tr->tr_command->command), 28 /* max bytes before sglist */); - } - return(tr); -} - - - -/* - * Function name: twa_release_request - * Description: Puts a request pkt into the free queue. - * - * Input: tr -- ptr to request pkt to be freed - * Output: None - * Return value: None - */ -void -twa_release_request(struct twa_request *tr) -{ - twa_dbg_dprint_enter(4, tr->tr_sc); - - twa_enqueue_free(tr); -} - - - -/* - * Function name: twa_describe_controller - * Description: Describes the controller, in terms of its fw version, - * BIOS version etc. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_describe_controller(struct twa_softc *sc) -{ - struct twa_param_9k *p[6]; - u_int8_t num_ports = 0; - - twa_dbg_dprint_enter(2, sc); - - /* Get the port count. */ - p[0] = twa_get_param(sc, TWA_PARAM_CONTROLLER_TABLE, - TWA_PARAM_CONTROLLER_PORT_COUNT, 1, NULL); - if (p[0]) { - num_ports = *(u_int8_t *)(p[0]->data); - kfree(p[0], M_DEVBUF); - } - - /* Get the firmware and BIOS versions. */ - p[0] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_FW, 16, NULL); - p[1] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_BIOS, 16, NULL); - - twa_printf(sc, "%d ports, Firmware %.16s, BIOS %.16s\n", - num_ports, p[0]?(p[0]->data):NULL, p[1]?(p[1]->data):NULL); - if (bootverbose) { - /* Get more versions. */ - p[2] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_MONITOR, 16, NULL); - p[3] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_PCBA, 8, NULL); - p[4] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_ATA, 8, NULL); - p[5] = twa_get_param(sc, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_PCI, 8, NULL); - - twa_printf(sc, "Monitor %.16s, PCB %.8s, Achip %.8s, Pchip %.8s\n", - p[2]?(p[2]->data):NULL, p[3]?(p[3]->data):NULL, - p[4]?(p[4]->data):NULL, p[5]?(p[5]->data):NULL); - - if (p[2]) - kfree(p[2], M_DEVBUF); - if (p[3]) - kfree(p[3], M_DEVBUF); - if (p[4]) - kfree(p[4], M_DEVBUF); - if (p[5]) - kfree(p[5], M_DEVBUF); - } - if (p[0]) - kfree(p[0], M_DEVBUF); - if (p[1]) - kfree(p[1], M_DEVBUF); -} - - - -/* - * Function name: twa_check_ctlr_state - * Description: Makes sure that the fw status register reports a - * proper status. - * - * Input: sc -- ptr to per ctlr structure - * status_reg -- value in the status register - * Output: None - * Return value: 0 -- no errors - * non-zero-- errors - */ -static int -twa_check_ctlr_state(struct twa_softc *sc, u_int32_t status_reg) -{ - int result = 0; - static time_t last_warning[2] = {0, 0}; - - /* Check if the 'micro-controller ready' bit is not set. */ - if ((status_reg & TWA_STATUS_EXPECTED_BITS) != - TWA_STATUS_EXPECTED_BITS) { - if (time_second > (last_warning[0] + 5)) { - twa_printf(sc, "Missing expected status bit(s) %b\n", - ~status_reg & TWA_STATUS_EXPECTED_BITS, - TWA_STATUS_BITS_DESCRIPTION); - last_warning[0] = time_second; - } - result = 1; - } - - /* Check if any error bits are set. */ - if ((status_reg & TWA_STATUS_UNEXPECTED_BITS) != 0) { - if (time_second > (last_warning[1] + 5)) { - twa_printf(sc, "Unexpected status bit(s) %b\n", - status_reg & TWA_STATUS_UNEXPECTED_BITS, - TWA_STATUS_BITS_DESCRIPTION); - last_warning[1] = time_second; - } - if (status_reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) { - twa_printf(sc, "PCI parity error: clearing... Re-seat/move/replace card.\n"); - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_PARITY_ERROR); - twa_write_pci_config(sc, TWA_PCI_CONFIG_CLEAR_PARITY_ERROR, 2); - } - if (status_reg & TWA_STATUS_PCI_ABORT_INTERRUPT) { - twa_printf(sc, "PCI abort: clearing...\n"); - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_PCI_ABORT); - twa_write_pci_config(sc, TWA_PCI_CONFIG_CLEAR_PCI_ABORT, 2); - } - if (status_reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) { - twa_printf(sc, "Controller queue error: clearing...\n"); - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_PCI_ABORT); - } - if (status_reg & TWA_STATUS_SBUF_WRITE_ERROR) { - twa_printf(sc, "SBUF write error: clearing...\n"); - TWA_WRITE_CONTROL_REGISTER(sc, TWA_CONTROL_CLEAR_SBUF_WRITE_ERROR); - } - if (status_reg & TWA_STATUS_MICROCONTROLLER_ERROR) { - twa_printf(sc, "Micro-controller error!\n"); - result = 1; - } - } - return(result); -} - - - -/* - * Function name: twa_print_controller - * Description: Prints the current status of the controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_print_controller(struct twa_softc *sc) -{ - u_int32_t status_reg; - - /* Print current controller details. */ - status_reg = TWA_READ_STATUS_REGISTER(sc); - twa_printf(sc, "status %b\n", status_reg, TWA_STATUS_BITS_DESCRIPTION); -#ifdef TWA_DEBUG - twa_printf(sc, "q type current max\n"); - twa_printf(sc, "free %04d %04d\n", - sc->twa_qstats[TWAQ_FREE].q_length, sc->twa_qstats[TWAQ_FREE].q_max); - twa_printf(sc, "busy %04d %04d\n", - sc->twa_qstats[TWAQ_BUSY].q_length, sc->twa_qstats[TWAQ_BUSY].q_max); - twa_printf(sc, "pending %04d %04d\n", - sc->twa_qstats[TWAQ_PENDING].q_length, sc->twa_qstats[TWAQ_PENDING].q_max); - twa_printf(sc, "complete %04d %04d\n", - sc->twa_qstats[TWAQ_COMPLETE].q_length, sc->twa_qstats[TWAQ_COMPLETE].q_max); -#endif /* TWA_DEBUG */ - twa_printf(sc, "AEN queue head %d tail %d\n", - sc->twa_aen_head, sc->twa_aen_tail); -} - - - -/* - * Function name: twa_panic - * Description: Called when something is seriously wrong with the ctlr. - * Hits the debugger if the debugger is turned on, else - * resets the ctlr. - * - * Input: sc -- ptr to per ctlr structure - * reason -- string describing what went wrong - * Output: None - * Return value: None - */ -static void -twa_panic(struct twa_softc *sc, int8_t *reason) -{ - twa_print_controller(sc); -#ifdef TWA_DEBUG - panic(reason); -#else - twa_printf(sc, "twa_panic: RESETTING CONTROLLER...\n"); - twa_reset(sc); -#endif -} - diff --git a/sys/dev/raid/twa/twa.h b/sys/dev/raid/twa/twa.h deleted file mode 100644 index 4669048abc..0000000000 --- a/sys/dev/raid/twa/twa.h +++ /dev/null @@ -1,316 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * Copyright (c) 2000 Michael Smith - * Copyright (c) 2000 BSDi - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa.h,v 1.4 2006/12/22 23:26:24 swildner Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - -#include - -/* - * The scheme for the driver version is: - * ..<3ware internal release>. - */ -#define TWA_DRIVER_VERSION_STRING "2.40.00.000" - -#define TWA_CDEV_MAJOR 187 - -#define TWA_REQUEST_TIMEOUT_PERIOD 60 /* seconds */ -#define TWA_MESSAGE_SOURCE_CONTROLLER_ERROR 3 -#define TWA_MESSAGE_SOURCE_CONTROLLER_EVENT 4 -#define TWA_MESSAGE_SOURCE_FREEBSD_DRIVER 6 -#define TWA_MESSAGE_SOURCE_FREEBSD_OS 9 - -#define TWA_MALLOC_CLASS M_TWA - -/* Macros for bus-space calls. */ -#define TWA_READ_REGISTER(sc, offset) \ - (u_int32_t)bus_space_read_4(sc->twa_bus_tag, sc->twa_bus_handle, offset) -#define TWA_WRITE_REGISTER(sc, offset, val) \ - bus_space_write_4(sc->twa_bus_tag, sc->twa_bus_handle, offset, (u_int32_t)val) - -/* Possible values of tr->tr_status. */ -#define TWA_CMD_SETUP 0x0 /* being assembled */ -#define TWA_CMD_BUSY 0x1 /* submitted to controller */ -#define TWA_CMD_PENDING 0x2 /* in pending queue */ -#define TWA_CMD_COMPLETE 0x3 /* completed by controller (maybe with error) */ - -/* Possible values of tr->tr_flags. */ -#define TWA_CMD_DATA_IN (1<<0) /* read request */ -#define TWA_CMD_DATA_OUT (1<<1) /* write request */ -#define TWA_CMD_DATA_COPY_NEEDED (1<<2) /* data in ccb is misaligned, have to copy to/from private buffer */ -#define TWA_CMD_SLEEP_ON_REQUEST (1<<3) /* owner is sleeping on this command */ -#define TWA_CMD_IN_PROGRESS (1<<4) /* bus_dmamap_load returned EINPROGRESS */ - -/* Possible values of tr->tr_cmd_pkt_type. */ -#define TWA_CMD_PKT_TYPE_7K (1<<0) -#define TWA_CMD_PKT_TYPE_9K (1<<1) -#define TWA_CMD_PKT_TYPE_INTERNAL (1<<2) -#define TWA_CMD_PKT_TYPE_IOCTL (1<<3) -#define TWA_CMD_PKT_TYPE_EXTERNAL (1<<4) - -/* Possible values of sc->twa_state. */ -#define TWA_STATE_INTR_ENABLED (1<<0) /* interrupts have been enabled */ -#define TWA_STATE_SHUTDOWN (1<<1) /* controller is shut down */ -#define TWA_STATE_OPEN (1<<2) /* control device is open */ -#define TWA_STATE_SUSPEND (1<<3) /* controller is suspended */ -#define TWA_STATE_SIMQ_FROZEN (1<<4) /* simq frozen */ - -/* Possible values of sc->twa_ioctl_lock.lock. */ -#define TWA_LOCK_FREE 0x0 /* lock is free */ -#define TWA_LOCK_HELD 0x1 /* lock is held */ - - -/* Error/AEN message structure. */ -struct twa_message { - u_int32_t code; - char *message; -}; - -#ifdef TWA_DEBUG -struct twa_q_statistics { - u_int32_t q_length; - u_int32_t q_max; -}; - -#define TWAQ_FREE 0 -#define TWAQ_BUSY 1 -#define TWAQ_PENDING 2 -#define TWAQ_COMPLETE 3 -#define TWAQ_COUNT 4 /* total number of queues */ -#endif /* TWA_DEBUG */ - -/* Driver's request packet. */ -struct twa_request { - struct twa_command_packet *tr_command; /* ptr to cmd pkt submitted to controller */ - u_int32_t tr_request_id; /* request id for tracking with firmware */ - - void *tr_data; /* ptr to data being passed to firmware */ - size_t tr_length; /* length of buffer being passed to firmware */ - - void *tr_real_data; /* ptr to, and length of data passed */ - size_t tr_real_length; /* to us from above, in case a buffer copy - was done due to non-compliance to - alignment requirements */ - - TAILQ_ENTRY(twa_request) tr_link; /* to link this request in a list */ - struct twa_softc *tr_sc; /* controller that owns us */ - - u_int32_t tr_status; /* command status */ - u_int32_t tr_flags; /* request flags */ - u_int32_t tr_error; /* error encountered before request submission */ - u_int32_t tr_cmd_pkt_type;/* type of request */ - void *tr_private; /* request specific data to use during callback */ - void (*tr_callback)(struct twa_request *tr);/* callback handler */ - bus_addr_t tr_cmd_phys; /* physical address of command in controller space */ - bus_dmamap_t tr_dma_map; /* DMA map for data */ -} __attribute__ ((packed)); - - -/* Per-controller structure. */ -struct twa_softc { - /* Request queues and arrays. */ - TAILQ_HEAD(, twa_request) twa_free; /* free request packets */ - TAILQ_HEAD(, twa_request) twa_busy; /* requests busy in the controller */ - TAILQ_HEAD(, twa_request) twa_pending; /* internal requests pending */ - TAILQ_HEAD(, twa_request) twa_complete; /* requests completed by firmware (not by us) */ - - struct twa_request *twa_lookup[TWA_Q_LENGTH];/* requests indexed by request_id */ - - struct twa_request *twa_req_buf; - struct twa_command_packet *twa_cmd_pkt_buf; - - /* AEN handler fields. */ - struct twa_event_packet *twa_aen_queue[TWA_Q_LENGTH];/* circular queue of AENs from firmware */ - uint16_t working_srl; /* driver & firmware negotiated srl */ - uint16_t working_branch; /* branch # of the firmware that the driver is compatible with */ - uint16_t working_build; /* build # of the firmware that the driver is compatible with */ - u_int32_t twa_operating_mode; /* base mode/current mode */ - u_int32_t twa_aen_head; /* AEN queue head */ - u_int32_t twa_aen_tail; /* AEN queue tail */ - u_int32_t twa_current_sequence_id;/* index of the last event + 1 */ - u_int32_t twa_aen_queue_overflow; /* indicates if unretrieved events were overwritten */ - u_int32_t twa_aen_queue_wrapped; /* indicates if AEN queue ever wrapped */ - u_int32_t twa_wait_timeout; /* identifier for calling tsleep */ - - /* Controller state. */ - u_int32_t twa_state; -#ifdef TWA_DEBUG - struct twa_q_statistics twa_qstats[TWAQ_COUNT]; /* queue statistics */ -#endif /* TWA_DEBUG */ - struct { - u_int32_t lock; /* lock state */ - u_int32_t timeout;/* time at which the lock will become available, - even if not released */ - } twa_ioctl_lock; /* lock for use by user applications, for synchronization - between ioctl calls */ - - device_t twa_bus_dev; /* bus device */ - struct resource *twa_io_res; /* register interface window */ - bus_space_handle_t twa_bus_handle; /* bus space handle */ - bus_space_tag_t twa_bus_tag; /* bus space tag */ - bus_dma_tag_t twa_dma_tag; /* data buffer DMA tag */ - bus_dmamap_t twa_cmd_map; /* DMA map for the array of cmd pkts */ - bus_addr_t twa_cmd_pkt_phys;/* phys addr of first of array of cmd pkts */ - struct resource *twa_irq_res; /* interrupt resource*/ - void *twa_intr_handle;/* interrupt handle */ - struct intr_config_hook twa_ich; /* delayed-startup hook */ - - struct sysctl_ctx_list twa_sysctl_ctx; - struct sysctl_oid *twa_sysctl_tree; - - struct cam_sim *twa_sim; /* sim for this controller */ - struct cam_path *twa_path; /* peripheral, path, tgt, lun - associated with this controller */ -}; - - -/* - * Queue primitives - */ - -#ifdef TWA_DEBUG - -#define TWAQ_INIT(sc, qname) \ - do { \ - sc->twa_qstats[qname].q_length = 0; \ - sc->twa_qstats[qname].q_max = 0; \ - } while(0) - -#define TWAQ_ADD(sc, qname) \ - do { \ - struct twa_q_statistics *qs = &(sc)->twa_qstats[qname]; \ - \ - qs->q_length++; \ - if (qs->q_length > qs->q_max) \ - qs->q_max = qs->q_length; \ - } while(0) - -#define TWAQ_REMOVE(sc, qname) (sc)->twa_qstats[qname].q_length-- - -#else /* TWA_DEBUG */ - -#define TWAQ_INIT(sc, qname) -#define TWAQ_ADD(sc, qname) -#define TWAQ_REMOVE(sc, qname) - -#endif /* TWA_DEBUG */ - -#define TWAQ_REQUEST_QUEUE(name, index) \ -static __inline void twa_initq_ ## name(struct twa_softc *sc) \ -{ \ - TAILQ_INIT(&sc->twa_ ## name); \ - TWAQ_INIT(sc, index); \ -} \ -static __inline void twa_enqueue_ ## name(struct twa_request *tr) \ -{ \ - crit_enter(); \ - TAILQ_INSERT_TAIL(&tr->tr_sc->twa_ ## name, tr, tr_link); \ - TWAQ_ADD(tr->tr_sc, index); \ - crit_exit(); \ -} \ -static __inline void twa_requeue_ ## name(struct twa_request *tr) \ -{ \ - crit_enter(); \ - TAILQ_INSERT_HEAD(&tr->tr_sc->twa_ ## name, tr, tr_link); \ - TWAQ_ADD(tr->tr_sc, index); \ - crit_exit(); \ -} \ -static __inline struct twa_request *twa_dequeue_ ## name(struct twa_softc *sc)\ -{ \ - struct twa_request *tr; \ - \ - crit_enter(); \ - if ((tr = TAILQ_FIRST(&sc->twa_ ## name)) != NULL) { \ - TAILQ_REMOVE(&sc->twa_ ## name, tr, tr_link); \ - TWAQ_REMOVE(sc, index); \ - } \ - crit_exit(); \ - return(tr); \ -} \ -static __inline void twa_remove_ ## name(struct twa_request *tr) \ -{ \ - crit_enter(); \ - TAILQ_REMOVE(&tr->tr_sc->twa_ ## name, tr, tr_link); \ - TWAQ_REMOVE(tr->tr_sc, index); \ - crit_exit(); \ -} - -TWAQ_REQUEST_QUEUE(free, TWAQ_FREE) -TWAQ_REQUEST_QUEUE(busy, TWAQ_BUSY) -TWAQ_REQUEST_QUEUE(pending, TWAQ_PENDING) -TWAQ_REQUEST_QUEUE(complete, TWAQ_COMPLETE) - - -#ifdef TWA_DEBUG - -extern u_int8_t twa_dbg_level; -extern u_int8_t twa_call_dbg_level; - -/* Printf with the bus device in question. */ -#define twa_dbg_dprint(dbg_level, sc, fmt, args...) \ - do { \ - if (dbg_level <= twa_dbg_level) \ - device_printf(sc->twa_bus_dev, \ - "%s: " fmt "\n", __func__ , ##args);\ - } while(0) - -#define twa_dbg_dprint_enter(dbg_level, sc) \ - do { \ - if (dbg_level <= twa_call_dbg_level) \ - device_printf(sc->twa_bus_dev, \ - "%s: entered.\n", __func__); \ - } while(0) - -#define twa_dbg_dprint_exit(dbg_level, sc) \ - do { \ - if (dbg_level <= twa_call_dbg_level) \ - device_printf(sc->twa_bus_dev, \ - "%s: exiting.\n", __func__); \ - } while(0) - -#define twa_dbg_print(dbg_level, fmt, args...) \ - do { \ - if (dbg_level <= twa_dbg_level) \ - kprintf("%s: " fmt "\n", __func__ , ##args);\ - } while(0) - -#else -#define twa_dbg_dprint(dbg_level, sc, fmt, args...) -#define twa_dbg_dprint_enter(dbg_level, sc) -#define twa_dbg_dprint_exit(dbg_level, sc) -#define twa_dbg_print(dbg_level, fmt, args...) -#endif - -#define twa_printf(sc, fmt, args...) \ - device_printf(sc->twa_bus_dev, fmt, ##args) diff --git a/sys/dev/raid/twa/twa_cam.c b/sys/dev/raid/twa/twa_cam.c deleted file mode 100644 index b0fa114dcf..0000000000 --- a/sys/dev/raid/twa/twa_cam.c +++ /dev/null @@ -1,730 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_cam.c,v 1.10 2008/05/18 20:30:23 pavalos Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -#include "twa_includes.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -static int twa_execute_scsi(struct twa_request *tr, union ccb *ccb); -static void twa_action(struct cam_sim *sim, union ccb *ccb); -static void twa_poll(struct cam_sim *sim); -static void twa_async(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg); -static void twa_bus_scan_cb(struct cam_periph *periph, union ccb *ccb); - - - -/* - * Function name: twa_cam_setup - * Description: Attaches the driver to CAM. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_cam_setup(struct twa_softc *sc) -{ - struct cam_devq *devq; - struct ccb_setasync csa; - - twa_dbg_dprint(3, sc, "sc = %p", sc); - /* - * Create the device queue for our SIM. - */ - devq = cam_simq_alloc(TWA_Q_LENGTH); - if (devq == NULL) - return(ENOMEM); - - /* - * Create a SIM entry. Though we can support TWA_Q_LENGTH simultaneous - * requests, we claim to be able to handle only (TWA_Q_LENGTH - 1), so - * that we always have a request packet available to service attention - * interrupts. - */ - twa_dbg_dprint(3, sc, "Calling cam_sim_alloc"); - sc->twa_sim = cam_sim_alloc(twa_action, twa_poll, "twa", sc, - device_get_unit(sc->twa_bus_dev), - &sim_mplock, - TWA_Q_LENGTH - 1, 1, devq); - cam_simq_release(devq); - if (sc->twa_sim == NULL) { - return(ENOMEM); - } - - /* - * Register the bus. - */ - twa_dbg_dprint(3, sc, "Calling xpt_bus_register"); - if (xpt_bus_register(sc->twa_sim, 0) != CAM_SUCCESS) { - cam_sim_free(sc->twa_sim); - sc->twa_sim = NULL; /* so twa_cam_detach will not try to free it */ - return(ENXIO); - } - - twa_dbg_dprint(3, sc, "Calling xpt_create_path"); - if (xpt_create_path(&sc->twa_path, NULL, - cam_sim_path(sc->twa_sim), - CAM_TARGET_WILDCARD, - CAM_LUN_WILDCARD) != CAM_REQ_CMP) { - xpt_bus_deregister(cam_sim_path (sc->twa_sim)); - cam_sim_free(sc->twa_sim); /* passing TRUE will free the devq as well */ - return(ENXIO); - } - - twa_dbg_dprint(3, sc, "Calling xpt_setup_ccb"); - xpt_setup_ccb(&csa.ccb_h, sc->twa_path, 5); - csa.ccb_h.func_code = XPT_SASYNC_CB; - csa.event_enable = AC_FOUND_DEVICE | AC_LOST_DEVICE; - csa.callback = twa_async; - csa.callback_arg = sc; - xpt_action((union ccb *)&csa); - - twa_dbg_dprint(3, sc, "Calling twa_request_bus_scan"); - /* - * Request a bus scan, so that CAM gets to know of - * the logical units that we control. - */ - twa_request_bus_scan(sc); - twa_dbg_dprint(3, sc, "Exiting"); - return(0); -} - - - -/* - * Function name: twa_cam_detach - * Description: Detaches the driver from CAM. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_cam_detach(struct twa_softc *sc) -{ - if (sc->twa_path) - xpt_free_path(sc->twa_path); - if (sc->twa_sim) { - xpt_bus_deregister(cam_sim_path(sc->twa_sim)); - cam_sim_free(sc->twa_sim); /* passing TRUE will free the devq as well */ - } -} - - - -/* - * Function name: twa_send_scsi_cmd - * Description: Sends down a scsi cmd to fw. - * - * Input: tr -- ptr to request pkt - * cmd -- opcode of scsi cmd to send - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_send_scsi_cmd(struct twa_request *tr, int cmd) -{ - union ccb ccb; - - bzero(&ccb, sizeof(union ccb)); - ccb.csio.cdb_io.cdb_bytes[0] = (u_int8_t)cmd; - ccb.csio.cdb_io.cdb_bytes[4] = 128; - ccb.csio.cdb_len = 16; - ccb.csio.data_ptr = kmalloc(TWA_SECTOR_SIZE, M_DEVBUF, M_INTWAIT|M_ZERO); - ccb.csio.dxfer_len = TWA_SECTOR_SIZE; - - ccb.ccb_h.target_id = 0; - ccb.ccb_h.flags |= CAM_DIR_IN; - - if (twa_execute_scsi(tr, &ccb)) - return(EIO); - return(0); -} - - - -/* - * Function name: twa_execute_scsi - * Description: Build a fw cmd, based on a CAM style ccb, and - * send it down. - * - * Input: tr -- ptr to request pkt - * ccb -- ptr to CAM style ccb - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_execute_scsi(struct twa_request *tr, union ccb *ccb) -{ - struct twa_softc *sc = tr->tr_sc; - struct twa_command_packet *cmdpkt; - struct twa_command_9k *cmd9k; - struct ccb_hdr *ccb_h = &(ccb->ccb_h); - struct ccb_scsiio *csio = &(ccb->csio); - int error; - - twa_dbg_dprint(3, sc, "SCSI I/O request 0x%x", - csio->cdb_io.cdb_bytes[0]); - - if (ccb_h->target_id >= TWA_MAX_UNITS) { - twa_dbg_dprint(3, sc, "Invalid target. PTL = %x %x %x", - ccb_h->path_id, ccb_h->target_id, ccb_h->target_lun); - ccb_h->status |= CAM_TID_INVALID; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) - xpt_done(ccb); - return(1); - } - if (ccb_h->target_lun != 0) { - twa_dbg_dprint(3, sc, "Invalid lun. PTL = %x %x %x", - ccb_h->path_id, ccb_h->target_id, ccb_h->target_lun); - ccb_h->status |= CAM_LUN_INVALID; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) - xpt_done(ccb); - return(1); - } - - if(ccb_h->flags & CAM_CDB_PHYS) { - twa_printf(sc, "Physical CDB address!\n"); - ccb_h->status = CAM_REQ_CMP_ERR; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) - xpt_done(ccb); - return(1); - } - - /* - * We are going to work on this request. Mark it as enqueued (though - * we don't actually queue it...) - */ - ccb_h->status |= CAM_SIM_QUEUED; - - if((ccb_h->flags & CAM_DIR_MASK) != CAM_DIR_NONE) { - if(ccb_h->flags & CAM_DIR_IN) - tr->tr_flags |= TWA_CMD_DATA_IN; - else - tr->tr_flags |= TWA_CMD_DATA_OUT; - } - - cmdpkt = tr->tr_command; - - cmdpkt->cmd_hdr.header_desc.size_header = 128; - - cmd9k = &(cmdpkt->command.cmd_pkt_9k); - cmd9k->command.opcode = TWA_OP_EXECUTE_SCSI_COMMAND; - cmd9k->unit = ccb_h->target_id; - cmd9k->request_id = tr->tr_request_id; - cmd9k->status = 0; - cmd9k->sgl_offset = 16; /* offset from end of hdr = max cdb len */ - - if(ccb_h->flags & CAM_CDB_POINTER) - bcopy(csio->cdb_io.cdb_ptr, cmd9k->cdb, csio->cdb_len); - else - bcopy(csio->cdb_io.cdb_bytes, cmd9k->cdb, csio->cdb_len); - - if (!(ccb_h->flags & CAM_DATA_PHYS)) { - /* Virtual data addresses. Need to convert them... */ - twa_dbg_dprint(3, sc, "XPT_SCSI_IO: Single virtual address!"); - if (!(ccb_h->flags & CAM_SCATTER_VALID)) { - if (csio->dxfer_len > TWA_MAX_IO_SIZE) { - twa_printf(sc, "I/O size %d too big.\n", - csio->dxfer_len); - ccb_h->status = CAM_REQ_TOO_BIG; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) - xpt_done(ccb); - return(1); - } - - if ((tr->tr_length = csio->dxfer_len)) { - tr->tr_data = csio->data_ptr; - cmd9k->sgl_entries = 1; - } - } else { - twa_printf(sc, "twa_execute_scsi: XPT_SCSI_IO: Got SGList!\n"); - ccb_h->status = CAM_REQ_CMP_ERR; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) { - xpt_done(ccb); - } - return(1); - } - } else { - /* Data addresses are physical. */ - twa_printf(sc, "twa_execute_scsi: XPT_SCSI_IO: Physical data addresses!\n"); - ccb_h->status = CAM_REQ_CMP_ERR; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) { - ccb_h->status |= CAM_RELEASE_SIMQ; - ccb_h->status &= ~CAM_SIM_QUEUED; - xpt_done(ccb); - } - return(1); - } - - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_9K; - /* twa_setup_data_dmamap will fill in the SGL, and submit the I/O. */ - error = twa_map_request(tr); - return(error); -} - - - -/* - * Function name: twa_action - * Description: Driver entry point for CAM's use. - * - * Input: sim -- sim corresponding to the ctlr - * ccb -- ptr to CAM request - * Output: None - * Return value: None - */ -void -twa_action(struct cam_sim *sim, union ccb *ccb) -{ - struct twa_softc *sc = (struct twa_softc *)cam_sim_softc(sim); - struct ccb_hdr *ccb_h = &(ccb->ccb_h); - - switch (ccb_h->func_code) { - case XPT_SCSI_IO: /* SCSI I/O */ - { - struct twa_request *tr; - - if ((sc->twa_state & TWA_STATE_SIMQ_FROZEN) || - ((tr = twa_get_request(sc)) == NULL)) { - twa_dbg_dprint(2, sc, "simq frozen/Cannot get request pkt."); - /* - * Freeze the simq to maintain ccb ordering. The next - * ccb that gets completed will unfreeze the simq. - */ - twa_disallow_new_requests(sc); - ccb_h->status |= CAM_REQUEUE_REQ; - xpt_done(ccb); - break; - } - tr->tr_cmd_pkt_type |= TWA_CMD_PKT_TYPE_EXTERNAL; - tr->tr_private = ccb; - tr->tr_callback = twa_complete_io; - if (twa_execute_scsi(tr, ccb)) - twa_release_request(tr); - break; - } - - case XPT_ABORT: - twa_dbg_dprint(2, sc, "Abort request"); - ccb_h->status = CAM_UA_ABORT; - xpt_done(ccb); - break; - - case XPT_RESET_BUS: - twa_printf(sc, "Reset Bus request from CAM...\n"); - if (twa_reset(sc)) { - twa_printf(sc, "Reset Bus failed!\n"); - ccb_h->status = CAM_REQ_CMP_ERR; - } - else - ccb_h->status = CAM_REQ_CMP; - - xpt_done(ccb); - break; - - case XPT_SET_TRAN_SETTINGS: - twa_dbg_dprint(3, sc, "XPT_SET_TRAN_SETTINGS"); - - /* - * This command is not supported, since it's very specific - * to SCSI, and we are doing ATA. - */ - ccb_h->status = CAM_FUNC_NOTAVAIL; - xpt_done(ccb); - break; - - case XPT_GET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts = &ccb->cts; - struct ccb_trans_settings_scsi *scsi = - &cts->proto_specific.scsi; - struct ccb_trans_settings_spi *spi = - &cts->xport_specific.spi; - - cts->protocol = PROTO_SCSI; - cts->protocol_version = SCSI_REV_2; - cts->transport = XPORT_SPI; - cts->transport_version = 2; - - spi->valid = CTS_SPI_VALID_DISC; - spi->flags = CTS_SPI_FLAGS_DISC_ENB; - scsi->valid = CTS_SCSI_VALID_TQ; - scsi->flags = CTS_SCSI_FLAGS_TAG_ENB; - twa_dbg_dprint(3, sc, "XPT_GET_TRAN_SETTINGS"); - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - } - - case XPT_CALC_GEOMETRY: - { - struct ccb_calc_geometry *geom; - - twa_dbg_dprint(3, sc, "XPT_CALC_GEOMETRY request"); - geom = &ccb->ccg; - - if (geom->volume_size > 0x200000) /* 1 GB */ { - geom->heads = 255; - geom->secs_per_track = 63; - } else { - geom->heads = 64; - geom->secs_per_track = 32; - } - geom->cylinders = geom->volume_size / - (geom->heads * geom->secs_per_track); - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - } - - case XPT_PATH_INQ: /* Path inquiry -- get twa properties */ - { - struct ccb_pathinq *path_inq = &ccb->cpi; - - twa_dbg_dprint(3, sc, "XPT_PATH_INQ request"); - - path_inq->version_num = 1; - path_inq->hba_inquiry = 0; - path_inq->target_sprt = 0; - path_inq->hba_misc = 0; - path_inq->hba_eng_cnt = 0; - path_inq->max_target = TWA_MAX_UNITS; - path_inq->max_lun = 0; - path_inq->unit_number = cam_sim_unit(sim); - path_inq->bus_id = cam_sim_bus(sim); - path_inq->initiator_id = 12; - path_inq->base_transfer_speed = 100000; - strncpy(path_inq->sim_vid, "FreeBSD", SIM_IDLEN); - strncpy(path_inq->hba_vid, "3ware", HBA_IDLEN); - strncpy(path_inq->dev_name, cam_sim_name(sim), DEV_IDLEN); - path_inq->transport = XPORT_SPI; - path_inq->transport_version = 2; - path_inq->protocol = PROTO_SCSI; - path_inq->protocol_version = SCSI_REV_2; - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - } - - default: - twa_dbg_dprint(3, sc, "func_code = %x", ccb_h->func_code); - ccb_h->status = CAM_REQ_INVALID; - xpt_done(ccb); - break; - } -} - - - -/* - * Function name: twa_poll - * Description: Driver entry point called when interrupts are not available. - * - * Input: sim -- sim corresponding to the controller - * Output: None - * Return value: None - */ -void -twa_poll(struct cam_sim *sim) -{ -#ifdef TWA_DEBUG - struct twa_softc *sc = (struct twa_softc *)cam_sim_softc(sim); -#endif /* TWA_DEBUG */ - - twa_dbg_dprint(3, sc, "Entering sc = %p", sc); - twa_interrupt(cam_sim_softc(sim)); - twa_dbg_dprint(3, sc, "Exiting sc = %p", sc); -} - - - -/* - * Function name: twa_async - * Description: Driver entry point for CAM to notify driver of special - * events. We don't use this for now. - * - * Input: callback_arg -- ptr to per ctlr structure - * code -- code associated with the event - * path -- cam path - * arg -- - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -void -twa_async(void *callback_arg, u_int32_t code, - struct cam_path *path, void *arg) -{ -#ifdef TWA_DEBUG - struct twa_softc *sc = (struct twa_softc *)callback_arg; -#endif /* TWA_DEBUG */ - - twa_dbg_dprint(3, sc, "sc = %p, code = %x, path = %p, arg = %p", - sc, code, path, arg); -} - - - -/* - * Function name: twa_request_bus_scan - * Description: Requests CAM for a scan of the bus. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_request_bus_scan(struct twa_softc *sc) -{ - struct cam_path *path; - union ccb *ccb; - - ccb = kmalloc(sizeof(union ccb), M_TEMP, M_WAITOK | M_ZERO); - if (xpt_create_path(&path, xpt_periph, cam_sim_path(sc->twa_sim), - CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) - return; - - xpt_setup_ccb(&ccb->ccb_h, path, 5); - ccb->ccb_h.func_code = XPT_SCAN_BUS; - ccb->ccb_h.cbfcnp = twa_bus_scan_cb; - ccb->crcn.flags = CAM_FLAG_NONE; - xpt_action(ccb); -} - - - -/* - * Function name: twa_bus_scan_cb - * Description: Callback from CAM on a bus scan request. - * - * Input: periph -- we don't use this - * ccb -- bus scan request ccb that we sent to CAM - * Output: None - * Return value: None - */ -static void -twa_bus_scan_cb(struct cam_periph *periph, union ccb *ccb) -{ - twa_dbg_print(3, "ccb = %p\n", ccb); - if (ccb->ccb_h.status != CAM_REQ_CMP) - kprintf("cam_scan_callback: failure status = %x\n", - ccb->ccb_h.status); - else - twa_dbg_print(3, "success"); - - xpt_free_path(ccb->ccb_h.path); - kfree(ccb, M_TEMP); -} - - - -/* - * Function name: twa_scsi_complete - * Description: Called to complete CAM scsi requests. - * - * Input: tr -- ptr to request pkt to be completed - * Output: None - * Return value: None - */ -void -twa_scsi_complete(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - struct twa_command_header *cmd_hdr = &(tr->tr_command->cmd_hdr); - struct twa_command_9k *cmd = &(tr->tr_command->command.cmd_pkt_9k); - union ccb *ccb = (union ccb *)(tr->tr_private); - u_int16_t error; - u_int8_t *cdb; - - if (tr->tr_error) { - if (tr->tr_error == EBUSY) - ccb->ccb_h.status |= CAM_REQUEUE_REQ; - else if (tr->tr_error == EFBIG) - ccb->ccb_h.status = CAM_REQ_TOO_BIG; - else - ccb->ccb_h.status = CAM_REQ_CMP_ERR; - } else { - if (cmd->status) { - twa_dbg_dprint(1, sc, "req_id = 0x%x, status = 0x%x", - cmd->request_id, - cmd->status); - - error = cmd_hdr->status_block.error; - if ((error == TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED) || - (error == TWA_ERROR_UNIT_OFFLINE)) { - twa_dbg_dprint(3, sc, "Unsupported unit. PTL = %x %x %x", - ccb->ccb_h.path_id, - ccb->ccb_h.target_id, - ccb->ccb_h.target_lun); - ccb->ccb_h.status |= CAM_TID_INVALID; - } else { - twa_dbg_dprint(2, sc, "cmd = %x %x %x %x %x %x %x", - cmd->command.opcode, - cmd->command.reserved, - cmd->unit, - cmd->request_id, - cmd->status, - cmd->sgl_offset, - cmd->sgl_entries); - - cdb = (u_int8_t *)(cmd->cdb); - twa_dbg_dprint(2, sc, "cdb = %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", - cdb[0], cdb[1], cdb[2], cdb[3], cdb[4], cdb[5], cdb[6], cdb[7], - cdb[8], cdb[9], cdb[10], cdb[11], cdb[12], cdb[13], cdb[14], cdb[15]); - - cmd_hdr->err_specific_desc[sizeof(cmd_hdr->err_specific_desc) - 1] = '\0'; - /* - * Print the error. Firmware doesn't yet support - * the 'Mode Sense' cmd. Don't print if the cmd - * is 'Mode Sense', and the error is 'Invalid field - * in CDB'. - */ - if (! ((cdb[0] == 0x1A) && (error == 0x10D))) - twa_printf(sc, "SCSI cmd = 0x%x: ERROR: (0x%02X: 0x%04X): %s: %s\n", - cdb[0], - TWA_MESSAGE_SOURCE_CONTROLLER_ERROR, - error, - twa_find_msg_string(twa_error_table, error), - cmd_hdr->err_specific_desc); - } - - bcopy(cmd_hdr->sense_data, &(ccb->csio.sense_data), - TWA_SENSE_DATA_LENGTH); - ccb->csio.sense_len = TWA_SENSE_DATA_LENGTH; - ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; - } else - ccb->ccb_h.status = CAM_REQ_CMP; - - ccb->csio.scsi_status = cmd->status; - /* If simq is frozen, unfreeze it. */ - if (sc->twa_state & TWA_STATE_SIMQ_FROZEN) - twa_allow_new_requests(sc, (void *)ccb); - } - - ccb->ccb_h.status &= ~CAM_SIM_QUEUED; - xpt_done(ccb); -} - - - -/* - * Function name: twa_drain_busy_queue - * Description: This function gets called after a controller reset. - * It errors back to CAM, all those requests that were - * pending with the firmware, at the time of the reset. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_drain_busy_queue(struct twa_softc *sc) -{ - struct twa_request *tr; - union ccb *ccb; - - /* Walk the busy queue. */ - while ((tr = twa_dequeue_busy(sc))) { - twa_unmap_request(tr); - if ((tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_INTERNAL) || - (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_IOCTL)) { - /* It's an internal/ioctl request. Simply free it. */ - if (tr->tr_data) - kfree(tr->tr_data, M_DEVBUF); - } else { - if ((ccb = tr->tr_private)) { - /* It's a SCSI request. Complete it. */ - ccb->ccb_h.status = CAM_SCSI_BUS_RESET | - CAM_RELEASE_SIMQ; - ccb->ccb_h.status &= ~CAM_SIM_QUEUED; - xpt_done(ccb); - } - } - twa_release_request(tr); - } -} - - - -/* - * Function name: twa_allow_new_requests - * Description: Sets the appropriate status bits in a ccb such that, - * when the ccb is completed by a call to xpt_done, - * CAM knows that it's ok to unfreeze the flow of new - * requests to this controller, if the flow is frozen. - * - * Input: sc -- ptr to per ctlr structure - * ccb -- ptr to CAM request - * Output: None - * Return value: None - */ -void -twa_allow_new_requests(struct twa_softc *sc, void *ccb) -{ - ((union ccb *)(ccb))->ccb_h.status |= CAM_RELEASE_SIMQ; - sc->twa_state &= ~TWA_STATE_SIMQ_FROZEN; -} - - - -/* - * Function name: twa_disallow_new_requests - * Description: Calls the appropriate CAM function, so as to freeze - * the flow of new requests from CAM to this controller. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -void -twa_disallow_new_requests(struct twa_softc *sc) -{ - xpt_freeze_simq(sc->twa_sim, 1); - sc->twa_state |= TWA_STATE_SIMQ_FROZEN; -} diff --git a/sys/dev/raid/twa/twa_externs.h b/sys/dev/raid/twa/twa_externs.h deleted file mode 100644 index 8593a8f90b..0000000000 --- a/sys/dev/raid/twa/twa_externs.h +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_externs.h,v 1.1 2004/04/16 20:13:16 drhodus Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -/* Global data structures */ -extern char twa_fw_img[]; -extern int twa_fw_img_size; -extern struct twa_message twa_aen_table[]; -extern char *twa_aen_severity_table[]; -extern struct twa_message twa_error_table[]; - - -/* Functions in twa.c */ -extern int twa_setup(struct twa_softc *sc); /* do early driver/controller setup */ -extern int twa_deinit_ctlr(struct twa_softc *sc); /* stop controller */ -extern void twa_interrupt(struct twa_softc *sc); /* ISR */ -extern int twa_ioctl(struct twa_softc *sc, int cmd, void *addr);/* handle user request */ -extern void twa_enable_interrupts(struct twa_softc *sc); /* enable controller interrupts */ -extern void twa_disable_interrupts(struct twa_softc *sc); /* disable controller interrupts */ -extern void twa_complete_io(struct twa_request *tr); /* I/O completion callback */ -extern int twa_reset(struct twa_softc *sc); /* (soft) reset controller */ -extern int twa_submit_io(struct twa_request *tr); /* wrapper to twa_start */ -extern int twa_start(struct twa_request *tr); /* submit command to controller */ -extern char *twa_find_msg_string(struct twa_message *table, u_int16_t code);/* lookup a msg */ -extern struct twa_request *twa_get_request(struct twa_softc *sc);/* get a req pkt from free pool */ -extern void twa_release_request(struct twa_request *tr); /* put a req pkt back into free pool */ -extern void twa_describe_controller(struct twa_softc *sc); /* describe controller info */ -extern void twa_print_controller(struct twa_softc *sc); /* print controller state */ - -/* Functions in twa_freebsd.c */ -extern void twa_write_pci_config(struct twa_softc *sc, u_int32_t value, int size);/* write to pci config space */ -extern int twa_alloc_req_pkts(struct twa_softc *sc, int num_reqs); /* alloc req & cmd pkts */ -extern int twa_map_request(struct twa_request *tr); /* copy cmd pkt & data to DMA'able memory */ -extern void twa_unmap_request(struct twa_request *tr); /* undo mapping */ - -/* Functions in twa_cam.c */ -extern void twa_request_bus_scan(struct twa_softc *sc); /* request CAM for a bus scan */ -extern int twa_send_scsi_cmd(struct twa_request *tr, int cmd);/* send down a SCSI cmd */ -extern void twa_scsi_complete(struct twa_request *tr); /* complete a SCSI cmd by calling CAM */ -extern void twa_drain_busy_queue(struct twa_softc *sc); /* drain busy queue (during reset) */ - -extern int twa_cam_setup(struct twa_softc *sc); /* attach to CAM */ -extern void twa_cam_detach(struct twa_softc *sc); /* detach from CAM */ -extern void twa_allow_new_requests(struct twa_softc *sc, void *ccb);/* unfreeze ccb flow from CAM */ -extern void twa_disallow_new_requests(struct twa_softc *sc);/* freeze ccb flow from CAM */ - diff --git a/sys/dev/raid/twa/twa_freebsd.c b/sys/dev/raid/twa/twa_freebsd.c deleted file mode 100644 index e705bf9306..0000000000 --- a/sys/dev/raid/twa/twa_freebsd.c +++ /dev/null @@ -1,1025 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * Copyright (c) 2000 Michael Smith - * Copyright (c) 2000 BSDi - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_freebsd.c,v 1.14 2006/12/22 23:26:24 swildner Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -#include "twa_includes.h" - -static void twa_setup_data_dmamap(void *arg, bus_dma_segment_t *segs, - int nsegments, int error); -static void twa_setup_request_dmamap(void *arg, bus_dma_segment_t *segs, - int nsegments, int error); - -MALLOC_DEFINE(TWA_MALLOC_CLASS, "twa commands", "twa commands"); - - -static d_open_t twa_open; -static d_close_t twa_close; -static d_ioctl_t twa_ioctl_wrapper; - -static struct dev_ops twa_ops = { - { "twa", TWA_CDEV_MAJOR, 0 }, - .d_open = twa_open, - .d_close = twa_close, - .d_ioctl = twa_ioctl_wrapper, -}; - -static devclass_t twa_devclass; - - -/* - * Function name: twa_open - * Description: Called when the controller is opened. - * Simply marks the controller as open. - * - * Input: dev -- control device corresponding to the ctlr - * flags -- mode of open - * fmt -- device type (character/block etc.) - * proc -- current process - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_open(struct dev_open_args *ap) -{ - cdev_t dev = ap->a_head.a_dev; - int unit = minor(dev); - struct twa_softc *sc = devclass_get_softc(twa_devclass, unit); - - sc->twa_state |= TWA_STATE_OPEN; - return(0); -} - - - -/* - * Function name: twa_close - * Description: Called when the controller is closed. - * Simply marks the controller as not open. - * - * Input: dev -- control device corresponding to the ctlr - * flags -- mode of corresponding open - * fmt -- device type (character/block etc.) - * proc -- current process - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_close(struct dev_close_args *ap) -{ - cdev_t dev = ap->a_head.a_dev; - int unit = minor(dev); - struct twa_softc *sc = devclass_get_softc(twa_devclass, unit); - - sc->twa_state &= ~TWA_STATE_OPEN; - return(0); -} - - - -/* - * Function name: twa_ioctl_wrapper - * Description: Called when an ioctl is posted to the controller. - * Simply calls the ioctl handler. - * - * Input: dev -- control device corresponding to the ctlr - * cmd -- ioctl cmd - * buf -- ptr to buffer in kernel memory, which is - * a copy of the input buffer in user-space - * flags -- mode of corresponding open - * proc -- current process - * Output: buf -- ptr to buffer in kernel memory, which will - * be copied to the output buffer in user-space - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_ioctl_wrapper(struct dev_ioctl_args *ap) -{ - cdev_t dev = ap->a_head.a_dev; - struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); - - return(twa_ioctl(sc, ap->a_cmd, ap->a_data)); -} - - - -static int twa_probe (device_t dev); -static int twa_attach (device_t dev); -static void twa_free (struct twa_softc *sc); -static int twa_detach (device_t dev); -static int twa_shutdown (device_t dev); -static int twa_suspend (device_t dev); -static int twa_resume (device_t dev); -static void twa_pci_intr(void *arg); -static void twa_intrhook (void *arg); - -static device_method_t twa_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, twa_probe), - DEVMETHOD(device_attach, twa_attach), - DEVMETHOD(device_detach, twa_detach), - DEVMETHOD(device_shutdown, twa_shutdown), - DEVMETHOD(device_suspend, twa_suspend), - DEVMETHOD(device_resume, twa_resume), - - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), - {0, 0} -}; - -static driver_t twa_pci_driver = { - "twa", - twa_methods, - sizeof(struct twa_softc) -}; - -DRIVER_MODULE(twa, pci, twa_pci_driver, twa_devclass, 0, 0); - - - -/* - * Function name: twa_probe - * Description: Called at driver load time. Claims 9000 ctlrs. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: <= 0 -- success - * > 0 -- failure - */ -static int -twa_probe(device_t dev) -{ - static u_int8_t first_ctlr = 1; - - twa_dbg_print(3, "entered"); - - if ((pci_get_vendor(dev) == TWA_VENDOR_ID) && - (pci_get_device(dev) == TWA_DEVICE_ID_9K)) { - device_set_desc(dev, TWA_DEVICE_NAME); - /* Print the driver version only once. */ - if (first_ctlr) { - kprintf("3ware device driver for 9000 series storage controllers, version: %s\n", - TWA_DRIVER_VERSION_STRING); - first_ctlr = 0; - } - return(0); - } - return(ENXIO); -} - - - -/* - * Function name: twa_attach - * Description: Allocates pci resources; updates sc; adds a node to the - * sysctl tree to expose the driver version; makes calls - * to initialize ctlr, and to attach to CAM. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_attach(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - u_int32_t command; - int res_id; - int error; - cdev_t xdev; - - twa_dbg_dprint_enter(3, sc); - - /* Initialize the softc structure. */ - sc->twa_bus_dev = dev; - - sysctl_ctx_init(&sc->twa_sysctl_ctx); - sc->twa_sysctl_tree = SYSCTL_ADD_NODE(&sc->twa_sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, - device_get_nameunit(dev), CTLFLAG_RD, 0, ""); - if (sc->twa_sysctl_tree == NULL) { - twa_printf(sc, "Cannot add sysctl tree node.\n"); - return(ENXIO); - } - SYSCTL_ADD_STRING(&sc->twa_sysctl_ctx, SYSCTL_CHILDREN(sc->twa_sysctl_tree), - OID_AUTO, "driver_version", CTLFLAG_RD, - TWA_DRIVER_VERSION_STRING, 0, "TWA driver version"); - - /* Make sure we are going to be able to talk to this board. */ - command = pci_read_config(dev, PCIR_COMMAND, 2); - if ((command & PCIM_CMD_PORTEN) == 0) { - twa_printf(sc, "Register window not available.\n"); - return(ENXIO); - } - - /* Force the busmaster enable bit on, in case the BIOS forgot. */ - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - - /* Allocate the PCI register window. */ - res_id = TWA_IO_CONFIG_REG; - if ((sc->twa_io_res = bus_alloc_resource(dev, SYS_RES_IOPORT, &res_id, - 0, ~0, 1, RF_ACTIVE)) == NULL) { - twa_printf(sc, "can't allocate register window.\n"); - twa_free(sc); - return(ENXIO); - } - sc->twa_bus_tag = rman_get_bustag(sc->twa_io_res); - sc->twa_bus_handle = rman_get_bushandle(sc->twa_io_res); - - /* Allocate and connect our interrupt. */ - res_id = 0; - if ((sc->twa_irq_res = bus_alloc_resource(sc->twa_bus_dev, SYS_RES_IRQ, - &res_id, 0, ~0, 1, - RF_SHAREABLE | RF_ACTIVE)) == NULL) { - twa_printf(sc, "Can't allocate interrupt.\n"); - twa_free(sc); - return(ENXIO); - } - if (bus_setup_intr(sc->twa_bus_dev, sc->twa_irq_res, 0, - twa_pci_intr, sc, &sc->twa_intr_handle, NULL)) { - twa_printf(sc, "Can't set up interrupt.\n"); - twa_free(sc); - return(ENXIO); - } - - /* Initialize the driver for this controller. */ - if ((error = twa_setup(sc))) { - twa_free(sc); - return(error); - } - - /* Print some information about the controller and configuration. */ - twa_describe_controller(sc); - - /* Create the control device. */ - xdev = make_dev(&twa_ops, device_get_unit(sc->twa_bus_dev), - UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, - "twa%d", device_get_unit(sc->twa_bus_dev)); - xdev->si_drv1 = sc; - - /* - * Schedule ourselves to bring the controller up once interrupts are - * available. This isn't strictly necessary, since we disable - * interrupts while probing the controller, but it is more in keeping - * with common practice for other disk devices. - */ - sc->twa_ich.ich_func = twa_intrhook; - sc->twa_ich.ich_arg = sc; - sc->twa_ich.ich_desc = "twa"; - if (config_intrhook_establish(&sc->twa_ich) != 0) { - twa_printf(sc, "Can't establish configuration hook.\n"); - twa_free(sc); - return(ENXIO); - } - - if ((error = twa_cam_setup(sc))) { - twa_free(sc); - return(error); - } - return(0); -} - - - -/* - * Function name: twa_free - * Description: Performs clean-up at the time of going down. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_free(struct twa_softc *sc) -{ - struct twa_request *tr; - - twa_dbg_dprint_enter(3, sc); - - /* Detach from CAM */ - twa_cam_detach(sc); - - /* Destroy dma handles. */ - - bus_dmamap_unload(sc->twa_dma_tag, sc->twa_cmd_map); - while ((tr = twa_dequeue_free(sc)) != NULL) - bus_dmamap_destroy(sc->twa_dma_tag, tr->tr_dma_map); - - /* Free all memory allocated so far. */ - if (sc->twa_req_buf) - kfree(sc->twa_req_buf, TWA_MALLOC_CLASS); - if (sc->twa_cmd_pkt_buf) - bus_dmamem_free(sc->twa_dma_tag, sc->twa_cmd_pkt_buf, - sc->twa_cmd_map); - if (sc->twa_aen_queue[0]) - kfree (sc->twa_aen_queue[0], M_DEVBUF); - - /* Destroy the data-transfer DMA tag. */ - if (sc->twa_dma_tag) - bus_dma_tag_destroy(sc->twa_dma_tag); - - /* Disconnect the interrupt handler. */ - if (sc->twa_intr_handle) - bus_teardown_intr(sc->twa_bus_dev, sc->twa_irq_res, - sc->twa_intr_handle); - if (sc->twa_irq_res != NULL) - bus_release_resource(sc->twa_bus_dev, SYS_RES_IRQ, - 0, sc->twa_irq_res); - - /* Release the register window mapping. */ - if (sc->twa_io_res != NULL) - bus_release_resource(sc->twa_bus_dev, SYS_RES_IOPORT, - TWA_IO_CONFIG_REG, sc->twa_io_res); - - dev_ops_remove_minor(&twa_ops, device_get_unit(sc->twa_bus_dev)); - - sysctl_ctx_free(&sc->twa_sysctl_ctx); -} - - - -/* - * Function name: twa_detach - * Description: Called when the controller is being detached from - * the pci bus. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_detach(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - int error; - - twa_dbg_dprint_enter(3, sc); - - error = EBUSY; - crit_enter(); - if (sc->twa_state & TWA_STATE_OPEN) - goto out; - - /* Shut the controller down. */ - if ((error = twa_shutdown(dev))) - goto out; - - /* Free all resources associated with this controller. */ - twa_free(sc); - error = 0; - -out: - crit_exit(); - return(error); -} - - - -/* - * Function name: twa_shutdown - * Description: Called at unload/shutdown time. Lets the controller - * know that we are going down. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_shutdown(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - int error = 0; - - twa_dbg_dprint_enter(3, sc); - - crit_enter(); - - /* Disconnect from the controller. */ - error = twa_deinit_ctlr(sc); - - crit_exit(); - return(error); -} - - - -/* - * Function name: twa_suspend - * Description: Called to suspend I/O before hot-swapping PCI ctlrs. - * Doesn't do much as of now. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_suspend(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - - twa_dbg_dprint_enter(3, sc); - - crit_enter(); - sc->twa_state |= TWA_STATE_SUSPEND; - - twa_disable_interrupts(sc); - crit_exit(); - - return(1); -} - - - -/* - * Function name: twa_resume - * Description: Called to resume I/O after hot-swapping PCI ctlrs. - * Doesn't do much as of now. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static int -twa_resume(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - - twa_dbg_dprint_enter(3, sc); - - sc->twa_state &= ~TWA_STATE_SUSPEND; - twa_enable_interrupts(sc); - - return(1); -} - - - -/* - * Function name: twa_pci_intr - * Description: Interrupt handler. Wrapper for twa_interrupt. - * - * Input: arg -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_pci_intr(void *arg) -{ - struct twa_softc *sc = (struct twa_softc *)arg; - - twa_interrupt(sc); -} - - - -/* - * Function name: twa_intrhook - * Description: Callback for us to enable interrupts. - * - * Input: arg -- ptr to per ctlr structure - * Output: None - * Return value: None - */ -static void -twa_intrhook(void *arg) -{ - struct twa_softc *sc = (struct twa_softc *)arg; - - twa_dbg_dprint(4, sc, "twa_intrhook Entered"); - - /* Pull ourselves off the intrhook chain. */ - config_intrhook_disestablish(&sc->twa_ich); - - /* Enable interrupts. */ - twa_enable_interrupts(sc); -} - - - -/* - * Function name: twa_write_pci_config - * Description: Writes to the PCI config space. - * - * Input: sc -- ptr to per ctlr structure - * value -- value to be written - * size -- # of bytes to be written - * Output: None - * Return value: None - */ -void -twa_write_pci_config(struct twa_softc *sc, u_int32_t value, int size) -{ - pci_write_config(sc->twa_bus_dev, PCIR_STATUS, value, size); -} - - - -/* - * Function name: twa_alloc_req_pkts - * Description: Allocates memory for, and initializes request pkts, - * and queues them in the free queue. - * - * Input: sc -- ptr to per ctlr structure - * num_reqs-- # of request pkts to allocate and initialize. - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_alloc_req_pkts(struct twa_softc *sc, int num_reqs) -{ - struct twa_request *tr; - int i; - - sc->twa_req_buf = kmalloc(num_reqs * sizeof(struct twa_request), - TWA_MALLOC_CLASS, M_INTWAIT); - - /* Allocate the bus DMA tag appropriate for PCI. */ - if (bus_dma_tag_create(NULL, /* parent */ - TWA_ALIGNMENT, /* alignment */ - 0, /* boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - TWA_Q_LENGTH * - (sizeof(struct twa_command_packet)),/* maxsize */ - TWA_MAX_SG_ELEMENTS, /* nsegments */ - BUS_SPACE_MAXSIZE_32BIT,/* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - &sc->twa_dma_tag /* tag */)) { - twa_printf(sc, "Can't allocate DMA tag.\n"); - return(ENOMEM); - } - - /* Allocate memory for cmd pkts. */ - if (bus_dmamem_alloc(sc->twa_dma_tag, - (void *)(&(sc->twa_cmd_pkt_buf)), - BUS_DMA_WAITOK, &(sc->twa_cmd_map))) - return(ENOMEM); - - bus_dmamap_load(sc->twa_dma_tag, sc->twa_cmd_map, - sc->twa_cmd_pkt_buf, - num_reqs * sizeof(struct twa_command_packet), - twa_setup_request_dmamap, sc, 0); - bzero(sc->twa_req_buf, num_reqs * sizeof(struct twa_request)); - bzero(sc->twa_cmd_pkt_buf, - num_reqs * sizeof(struct twa_command_packet)); - - for (i = 0; i < num_reqs; i++) { - tr = &(sc->twa_req_buf[i]); - tr->tr_command = &(sc->twa_cmd_pkt_buf[i]); - tr->tr_cmd_phys = sc->twa_cmd_pkt_phys + - (i * sizeof(struct twa_command_packet)); - tr->tr_request_id = i; - tr->tr_sc = sc; - sc->twa_lookup[i] = tr; - - /* - * Create a map for data buffers. maxsize (256 * 1024) used in - * bus_dma_tag_create above should suffice the bounce page needs - * for data buffers, since the max I/O size we support is 128KB. - * If we supported I/O's bigger than 256KB, we would have to - * create a second dma_tag, with the appropriate maxsize. - */ - if (bus_dmamap_create(sc->twa_dma_tag, 0, - &tr->tr_dma_map)) - return(ENOMEM); - - /* Insert request into the free queue. */ - twa_release_request(tr); - } - return(0); -} - - - -/* - * Function name: twa_fillin_sgl - * Description: Fills in the scatter/gather list. - * - * Input: sgl -- ptr to sg list - * segs -- ptr to fill the sg list from - * nsegments--# of segments - * Output: None - * Return value: None - */ -static void -twa_fillin_sgl(struct twa_sg *sgl, bus_dma_segment_t *segs, int nsegments) -{ - int i; - - for (i = 0; i < nsegments; i++) { - sgl[i].address = segs[i].ds_addr; - sgl[i].length = segs[i].ds_len; - } -} - - - -/* - * Function name: twa_setup_data_dmamap - * Description: Callback of bus_dmamap_load for the buffer associated - * with data. Updates the cmd pkt (size/sgl_entries - * fields, as applicable) to reflect the number of sg - * elements. - * - * Input: arg -- ptr to request pkt - * segs -- ptr to a list of segment descriptors - * nsegments--# of segments - * error -- 0 if no errors encountered before callback, - * non-zero if errors were encountered - * Output: None - * Return value: None - */ -static void -twa_setup_data_dmamap(void *arg, bus_dma_segment_t *segs, - int nsegments, int error) -{ - struct twa_request *tr = (struct twa_request *)arg; - struct twa_command_packet *cmdpkt = tr->tr_command; - struct twa_command_9k *cmd9k; - union twa_command_7k *cmd7k; - u_int8_t sgl_offset; - - twa_dbg_dprint_enter(10, tr->tr_sc); - - if ((tr->tr_flags & TWA_CMD_IN_PROGRESS) && - (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL)) - twa_allow_new_requests(tr->tr_sc, (void *)(tr->tr_private)); - - if (error == EFBIG) { - tr->tr_error = error; - goto out; - } - - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_9K) { - cmd9k = &(cmdpkt->command.cmd_pkt_9k); - twa_fillin_sgl(&(cmd9k->sg_list[0]), segs, nsegments); - cmd9k->sgl_entries += nsegments - 1; - } else { - /* It's a 7000 command packet. */ - cmd7k = &(cmdpkt->command.cmd_pkt_7k); - if ((sgl_offset = cmdpkt->command.cmd_pkt_7k.generic.sgl_offset)) - twa_fillin_sgl((struct twa_sg *) - (((u_int32_t *)cmd7k) + sgl_offset), - segs, nsegments); - /* Modify the size field, based on sg address size. */ - cmd7k->generic.size += - ((TWA_64BIT_ADDRESSES ? 3 : 2) * nsegments); - } - - if (tr->tr_flags & TWA_CMD_DATA_IN) - bus_dmamap_sync(tr->tr_sc->twa_dma_tag, tr->tr_dma_map, - BUS_DMASYNC_PREREAD); - if (tr->tr_flags & TWA_CMD_DATA_OUT) { - /* - * If we're using an alignment buffer, and we're - * writing data, copy the real data out. - */ - if (tr->tr_flags & TWA_CMD_DATA_COPY_NEEDED) - bcopy(tr->tr_real_data, tr->tr_data, tr->tr_real_length); - bus_dmamap_sync(tr->tr_sc->twa_dma_tag, tr->tr_dma_map, - BUS_DMASYNC_PREWRITE); - } - error = twa_submit_io(tr); - -out: - if (error) { - twa_unmap_request(tr); - /* - * If the caller had been returned EINPROGRESS, and he has - * registered a callback for handling completion, the callback - * will never get called because we were unable to submit the - * request. So, free up the request right here. - */ - if ((tr->tr_flags & TWA_CMD_IN_PROGRESS) && (tr->tr_callback)) - twa_release_request(tr); - } -} - - - -/* - * Function name: twa_setup_request_dmamap - * Description: Callback of bus_dmamap_load for the buffer associated - * with a cmd pkt. - * - * Input: arg -- ptr to request pkt - * segs -- ptr to a list of segment descriptors - * nsegments--# of segments - * error -- 0 if no errors encountered before callback, - * non-zero if errors were encountered - * Output: None - * Return value: None - */ -static void -twa_setup_request_dmamap(void *arg, bus_dma_segment_t *segs, - int nsegments, int error) -{ - struct twa_softc *sc = (struct twa_softc *)arg; - - twa_dbg_dprint_enter(10, sc); - - sc->twa_cmd_pkt_phys = segs[0].ds_addr; -} - - - -/* - * Function name: twa_map_request - * Description: Maps a cmd pkt and data associated with it, into - * DMA'able memory. - * - * Input: tr -- ptr to request pkt - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -int -twa_map_request(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - int error = 0; - - twa_dbg_dprint_enter(10, sc); - - /* If the command involves data, map that too. */ - if (tr->tr_data != NULL) { - /* - * It's sufficient for the data pointer to be 4-byte aligned - * to work with 9000. However, if 4-byte aligned addresses - * are passed to bus_dmamap_load, we can get back sg elements - * that are not 512-byte multiples in size. So, we will let - * only those buffers that are 512-byte aligned to pass - * through, and bounce the rest, so as to make sure that we - * always get back sg elements that are 512-byte multiples - * in size. - * - * DragonFly's malloc only guarentees X alignment when X is - * a power of 2, otherwise we would have to use contigalloc, - * which is nasty. Use malloc. - */ - if (((vm_offset_t)tr->tr_data % 512) || (tr->tr_length % 512)) { - tr->tr_flags |= TWA_CMD_DATA_COPY_NEEDED; - tr->tr_real_data = tr->tr_data; /* save original data pointer */ - tr->tr_real_length = tr->tr_length; /* save original data length */ - tr->tr_length = 512; - while (tr->tr_length < tr->tr_real_length) - tr->tr_length <<= 1; - tr->tr_data = kmalloc(tr->tr_length, TWA_MALLOC_CLASS, M_INTWAIT); - } - - /* - * Map the data buffer into bus space and build the s/g list. - */ - if ((error = bus_dmamap_load(sc->twa_dma_tag, tr->tr_dma_map, - tr->tr_data, tr->tr_length, - twa_setup_data_dmamap, tr, - BUS_DMA_WAITOK))) { - if (error == EINPROGRESS) { - tr->tr_flags |= TWA_CMD_IN_PROGRESS; - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_EXTERNAL) - twa_disallow_new_requests(sc); - error = 0; - } else { - /* Free alignment buffer if it was used. */ - if (tr->tr_flags & TWA_CMD_DATA_COPY_NEEDED) { - kfree(tr->tr_data, TWA_MALLOC_CLASS); - tr->tr_data = tr->tr_real_data; /* restore 'real' data pointer */ - tr->tr_length = tr->tr_real_length;/* restore 'real' data length */ - } - } - } else - error = tr->tr_error; - - } else - if ((error = twa_submit_io(tr))) - twa_unmap_request(tr); - - return(error); -} - - - -/* - * Function name: twa_unmap_request - * Description: Undoes the mapping done by twa_map_request. - * - * Input: tr -- ptr to request pkt - * Output: None - * Return value: None - */ -void -twa_unmap_request(struct twa_request *tr) -{ - struct twa_softc *sc = tr->tr_sc; - u_int8_t cmd_status; - - twa_dbg_dprint_enter(10, sc); - - /* If the command involved data, unmap that too. */ - if (tr->tr_data != NULL) { - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_9K) - cmd_status = tr->tr_command->command.cmd_pkt_9k.status; - else - cmd_status = tr->tr_command->command.cmd_pkt_7k.generic.status; - - if (tr->tr_flags & TWA_CMD_DATA_IN) { - bus_dmamap_sync(sc->twa_dma_tag, - tr->tr_dma_map, BUS_DMASYNC_POSTREAD); - - /* - * If we are using a bounce buffer, and we are reading - * data, copy the real data in. - */ - if (tr->tr_flags & TWA_CMD_DATA_COPY_NEEDED) - if (cmd_status == 0) - bcopy(tr->tr_data, tr->tr_real_data, - tr->tr_real_length); - } - if (tr->tr_flags & TWA_CMD_DATA_OUT) - bus_dmamap_sync(sc->twa_dma_tag, tr->tr_dma_map, - BUS_DMASYNC_POSTWRITE); - - bus_dmamap_unload(sc->twa_dma_tag, tr->tr_dma_map); - } - - /* Free alignment buffer if it was used. */ - if (tr->tr_flags & TWA_CMD_DATA_COPY_NEEDED) { - kfree(tr->tr_data, TWA_MALLOC_CLASS); - tr->tr_data = tr->tr_real_data; /* restore 'real' data pointer */ - tr->tr_length = tr->tr_real_length;/* restore 'real' data length */ - } -} - - - -#ifdef TWA_DEBUG -void twa_report(void); -void twa_reset_stats(void); -void twa_print_request(struct twa_request *tr, int req_type); - - - -/* - * Function name: twa_report - * Description: For being called from ddb. Prints controller stats, - * and requests, if any, that are in the wrong queue. - * - * Input: None - * Output: None - * Return value: None - */ -void -twa_report(void) -{ - struct twa_softc *sc; - struct twa_request *tr; - int i; - - crit_enter(); - for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { - twa_print_controller(sc); - TAILQ_FOREACH(tr, &sc->twa_busy, tr_link) - twa_print_request(tr, TWA_CMD_BUSY); - TAILQ_FOREACH(tr, &sc->twa_complete, tr_link) - twa_print_request(tr, TWA_CMD_COMPLETE); - } - crit_exit(); -} - - - -/* - * Function name: twa_reset_stats - * Description: For being called from ddb. - * Resets some controller stats. - * - * Input: None - * Output: None - * Return value: None - */ -void -twa_reset_stats(void) -{ - struct twa_softc *sc; - int i; - - crit_enter(); - for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { - sc->twa_qstats[TWAQ_FREE].q_max = 0; - sc->twa_qstats[TWAQ_BUSY].q_max = 0; - sc->twa_qstats[TWAQ_PENDING].q_max = 0; - sc->twa_qstats[TWAQ_COMPLETE].q_max = 0; - } - crit_exit(); -} - - - -/* - * Function name: twa_print_request - * Description: Prints a given request if it's in the wrong queue. - * - * Input: tr -- ptr to request pkt - * req_type-- expected status of the given request - * Output: None - * Return value: None - */ -void -twa_print_request(struct twa_request *tr, int req_type) -{ - struct twa_softc *sc = tr->tr_sc; - struct twa_command_packet *cmdpkt = tr->tr_command; - struct twa_command_9k *cmd9k; - union twa_command_7k *cmd7k; - u_int8_t *cdb; - int cmd_phys_addr; - - if (tr->tr_status != req_type) { - twa_printf(sc, "Invalid %s request %p in queue! req_type = %x, queue_type = %x\n", - (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_INTERNAL) ? "INTERNAL" : "EXTERNAL", - tr, tr->tr_status, req_type); - - if (tr->tr_cmd_pkt_type & TWA_CMD_PKT_TYPE_9K) { - cmd9k = &(cmdpkt->command.cmd_pkt_9k); - cmd_phys_addr = cmd9k->sg_list[0].address; - twa_printf(sc, "9K cmd = %x %x %x %x %x %x %x %x %x\n", - cmd9k->command.opcode, - cmd9k->command.reserved, - cmd9k->unit, - cmd9k->request_id, - cmd9k->status, - cmd9k->sgl_offset, - cmd9k->sgl_entries, - cmd_phys_addr, - cmd9k->sg_list[0].length); - cdb = (u_int8_t *)(cmdpkt->command.cmd_pkt_9k.cdb); - twa_printf(sc, "cdb = %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x\n", - cdb[0], cdb[1], cdb[2], cdb[3], cdb[4], cdb[5], cdb[6], cdb[7], - cdb[8], cdb[9], cdb[10], cdb[11], cdb[12], cdb[13], cdb[14], cdb[15]); - } else { - cmd7k = &(cmdpkt->command.cmd_pkt_7k); - twa_printf(sc, "7K cmd = %x %x %x %x %x %x %x %x %x\n", - cmd7k->generic.opcode, - cmd7k->generic.sgl_offset, - cmd7k->generic.size, - cmd7k->generic.request_id, - cmd7k->generic.unit, - cmd7k->generic.host_id, - cmd7k->generic.status, - cmd7k->generic.flags, - cmd7k->generic.count); - } - - cmd_phys_addr = (int)(tr->tr_cmd_phys); - twa_printf(sc, "cmdphys=0x%x data=%p length=0x%x\n", - cmd_phys_addr, tr->tr_data, tr->tr_length); - twa_printf(sc, "req_id=0x%x flags=0x%x callback=%p private=%p\n", - tr->tr_request_id, tr->tr_flags, - tr->tr_callback, tr->tr_private); - } -} -#endif diff --git a/sys/dev/raid/twa/twa_fwimg.c b/sys/dev/raid/twa/twa_fwimg.c deleted file mode 100644 index 5828bca1b5..0000000000 --- a/sys/dev/raid/twa/twa_fwimg.c +++ /dev/null @@ -1,23839 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_fwimg.c,v 1.1 2004/04/16 20:13:16 drhodus Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -#include "opt_twa.h" - -#ifdef TWA_FLASH_FIRMWARE - -char twa_fw_img[] = { -1,0,208,0,196,66,7,0,51,71,250,136,5,0,0,0,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,51,119,97,114,101,32,69,115,99,97, -108,97,100,101,32,70,105,114,109,119,97,114,101,32,73,109,97,103,101,32, -40,67,41,32,50,48,48,51,45,50,48,48,52,32,51,119,97,114,101,32, -73,110,99,46,13,10,66,117,105,108,116,32,98,121,32,70,108,97,115,104, -73,109,97,103,101,67,111,109,112,111,115,101,114,32,49,46,48,51,32,111, -110,32,70,114,105,32,77,97,114,32,49,57,32,49,50,58,52,52,58,52, -48,32,50,48,48,52,10,13,10,72,101,97,100,101,114,32,82,101,118,105, -115,105,111,110,32,48,49,13,10,70,69,57,88,32,50,46,48,50,46,48, -48,46,48,48,56,13,10,66,69,57,88,32,50,46,48,50,46,48,49,46, -48,51,55,13,10,26,0,0,3,30,200,255,99,39,53,0,99,167,49,0, -99,175,45,0,99,183,41,0,99,191,37,0,99,199,33,0,99,207,29,0, -99,215,25,0,99,255,21,0,99,223,17,0,99,231,13,0,99,239,9,0, -128,255,4,0,31,232,93,38,1,0,36,38,24,90,4,38,0,64,4,38, -0,64,93,54,0,0,38,54,176,0,102,31,1,0,93,30,1,0,35,30, -20,90,93,54,0,0,38,54,144,0,28,10,64,14,128,0,1,14,80,58, -162,5,1,240,93,86,0,0,42,86,228,54,234,167,32,0,128,255,124,0, -93,54,0,0,38,54,176,0,38,31,1,0,35,255,21,0,35,239,9,0, -35,231,13,0,35,223,17,0,35,215,25,0,35,207,29,0,35,199,33,0, -35,191,37,0,35,183,41,0,35,175,45,0,35,167,49,0,35,39,53,0, -3,30,56,0,127,0,0,0,1,0,0,0,0,0,0,0,80,58,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,70,108,97,115,104,32,85,112,100,97,116,101,114,0,20,0, -138,7,225,255,128,239,4,0,6,16,93,78,0,0,41,78,14,48,93,214, -0,0,58,214,200,46,93,206,0,0,57,206,126,46,93,174,0,0,53,174, -28,56,0,226,26,160,99,79,1,0,34,143,1,0,97,138,234,29,2,134, -4,0,48,223,1,0,2,126,8,0,47,199,1,0,2,118,12,0,46,191, -1,0,2,110,16,0,45,255,1,0,2,102,20,0,44,183,1,0,2,94, -24,0,43,135,1,0,2,86,28,0,42,143,1,0,245,13,34,223,1,0, -2,142,4,0,49,199,1,0,2,134,8,0,48,191,1,0,0,178,0,250, -0,138,0,130,241,129,178,53,16,16,191,17,99,7,5,0,35,118,4,0, -14,126,4,0,111,7,1,0,35,102,4,0,12,110,8,0,109,7,1,0, -35,86,4,0,10,94,12,0,107,7,1,0,240,169,177,5,245,137,187,5, -2,224,128,225,240,161,177,5,244,137,251,5,2,80,218,81,10,208,2,80, -217,81,10,200,35,151,1,0,242,129,251,45,35,159,1,0,241,153,185,45, -246,249,146,45,162,73,245,37,99,7,5,0,35,134,4,0,16,142,4,0, -93,118,128,255,46,118,252,254,14,120,187,121,113,127,1,0,35,102,4,0, -12,110,8,0,68,86,254,255,42,86,0,96,10,88,184,89,109,95,1,0, -35,134,4,0,16,142,12,0,68,118,126,255,46,118,176,37,14,120,183,121, -113,127,1,0,93,110,0,0,45,110,28,56,28,216,205,217,93,102,0,0, -44,102,52,56,28,192,204,193,181,29,68,218,27,94,252,255,35,142,4,0, -17,86,12,0,42,23,1,0,43,135,1,0,208,17,59,87,1,0,68,218, -59,95,1,0,68,218,2,48,10,56,11,64,93,254,0,0,63,254,138,1, -122,0,248,217,218,229,93,126,0,0,47,126,52,56,28,216,207,217,93,118, -0,0,46,118,52,56,28,208,206,209,93,110,0,0,45,110,52,56,28,192, -205,193,181,45,250,217,137,13,35,94,4,0,11,102,12,0,44,23,1,0, -245,5,35,142,4,0,17,86,4,0,42,23,1,0,59,135,1,0,208,17, -68,218,68,218,27,126,252,255,35,110,4,0,13,118,4,0,46,87,1,0, -47,103,1,0,204,81,59,95,1,0,68,218,2,48,10,56,11,64,93,254, -0,0,63,254,8,2,121,0,248,217,218,213,93,198,0,0,56,198,62,47, -93,94,0,0,43,94,52,56,28,216,203,217,93,86,0,0,42,86,52,56, -28,208,202,209,93,142,0,0,49,142,52,56,28,200,209,201,181,45,250,217, -137,13,35,126,4,0,15,134,12,0,48,23,1,0,245,5,35,110,4,0, -13,118,4,0,46,23,1,0,59,103,1,0,204,17,68,218,68,218,27,94, -252,255,35,142,4,0,17,86,4,0,42,87,1,0,43,135,1,0,208,81, -59,95,1,0,68,218,2,48,10,56,11,64,93,254,0,0,63,254,142,2, -120,0,249,217,218,213,93,126,0,0,47,126,52,56,28,16,207,17,93,118, -0,0,46,118,20,57,28,64,206,65,93,110,0,0,45,110,20,57,28,56, -205,57,226,65,162,77,35,94,4,0,11,102,12,0,68,142,126,255,49,142, -176,37,44,135,1,0,17,80,176,81,170,65,197,61,65,58,7,126,255,255, -15,55,0,0,198,118,48,0,14,104,164,106,13,88,194,90,11,96,35,142, -4,0,12,80,209,81,42,87,1,0,68,18,2,134,252,255,48,127,1,0, -10,248,207,249,63,79,1,0,198,118,128,0,224,113,178,5,224,73,178,29, -198,110,3,0,13,88,194,90,11,96,35,142,4,0,12,80,209,81,42,87, -1,0,224,81,226,13,198,134,8,0,224,129,162,5,194,74,202,73,198,126, -8,0,224,121,162,5,162,74,127,79,1,0,232,17,202,197,128,255,8,0, -74,6,255,255,130,7,225,241,58,6,64,48,32,16,64,198,16,0,57,6, -68,51,34,17,55,6,192,176,160,144,128,255,194,17,31,88,128,255,4,0, -31,80,11,248,10,224,162,226,194,226,128,255,150,2,10,16,224,17,178,5, -128,7,250,1,0,218,27,16,194,18,2,104,220,105,13,80,42,127,1,0, -250,121,250,5,28,112,194,113,46,103,5,0,249,97,178,13,42,95,1,0, -250,89,170,29,28,80,194,81,42,135,5,0,247,129,202,21,13,232,28,120, -194,121,47,111,5,0,247,105,138,13,128,255,12,4,61,23,13,0,234,17, -250,5,181,13,29,48,128,255,182,1,224,81,226,5,65,218,128,94,0,240, -235,217,134,213,128,86,0,240,234,217,218,5,32,86,195,1,128,7,134,1, -61,143,1,0,250,137,234,37,61,135,5,0,247,129,170,37,128,255,38,4, -10,48,253,63,11,0,61,71,13,0,221,57,128,255,206,4,10,16,224,17, -178,5,128,7,88,1,253,95,11,0,221,89,61,239,13,0,203,233,61,87, -1,0,250,81,218,5,61,143,5,0,249,137,210,5,32,86,195,1,128,7, -52,1,128,255,228,3,248,81,170,13,128,255,128,3,10,224,216,225,128,255, -166,3,10,216,220,217,181,5,64,222,16,0,29,224,213,13,28,48,128,255, -30,1,10,16,224,17,178,5,128,7,2,1,28,48,128,255,122,1,10,224, -224,225,186,245,128,255,74,3,10,224,216,225,60,127,1,0,250,121,218,5, -60,119,5,0,249,113,162,5,27,224,60,111,1,0,250,105,202,37,60,103, -5,0,249,97,138,37,28,48,128,255,68,1,10,224,60,87,1,0,43,6, -128,112,96,80,235,81,186,21,60,135,5,0,49,6,136,119,102,85,241,129, -202,13,60,127,21,0,224,121,226,5,28,48,128,255,24,1,10,224,229,5, -0,226,197,5,0,226,165,5,0,226,27,48,61,71,13,0,29,56,128,255, -236,3,10,16,224,17,202,61,61,111,21,0,224,105,242,53,61,95,13,0, -29,48,129,90,193,90,203,217,128,255,224,0,10,232,224,225,178,21,187,225, -125,231,21,0,61,127,13,0,61,119,21,0,239,113,185,5,125,7,21,0, -29,48,128,255,68,0,61,111,21,0,106,111,21,0,27,48,61,71,13,0, -29,56,128,255,152,3,10,16,224,17,170,21,128,255,122,2,10,232,216,233, -61,95,5,0,249,89,154,13,31,82,99,87,1,0,29,48,3,56,4,66, -128,255,114,3,0,82,66,6,255,241,38,87,13,0,230,135,11,0,198,81, -176,81,127,0,128,7,97,0,6,232,191,255,236,255,10,16,61,135,1,0, -49,6,64,48,32,16,241,129,178,13,61,119,1,0,47,6,128,112,96,80, -239,113,194,5,32,86,200,1,229,29,34,103,1,0,45,6,64,48,32,16, -237,97,178,13,34,87,1,0,43,6,128,112,96,80,235,81,194,5,32,86, -200,1,213,13,29,48,2,56,253,71,11,0,128,255,102,35,224,81,194,5, -32,86,200,1,165,5,0,82,64,6,127,0,38,143,21,0,224,137,210,5, -38,87,21,0,198,81,165,5,0,82,127,0,128,7,225,0,128,239,4,0, -0,50,128,255,58,3,100,87,13,128,36,23,13,128,34,23,17,0,93,254, -0,0,34,127,16,0,63,254,44,0,36,55,13,128,15,112,34,111,21,0, -206,49,109,0,10,224,224,225,210,5,36,55,13,128,128,255,22,14,224,225, -226,29,0,50,128,255,196,6,100,87,13,128,36,23,13,128,34,23,17,0, -93,254,0,0,34,135,16,0,63,254,106,0,36,55,13,128,16,120,34,119, -21,0,207,49,110,0,10,224,224,225,210,5,36,55,13,128,128,255,216,13, -224,225,186,5,128,255,10,0,28,80,64,6,255,0,128,7,225,112,128,239, -4,0,36,23,13,128,34,23,17,0,93,254,0,0,34,127,24,0,63,254, -34,0,36,55,13,128,15,112,34,111,29,0,206,49,109,0,36,23,13,128, -10,224,34,23,17,0,93,254,0,0,34,87,56,0,63,254,70,0,36,55, -13,128,10,136,34,135,61,0,209,49,112,0,234,225,250,109,36,231,13,128, -60,231,17,0,36,223,13,128,93,254,0,0,59,223,17,0,63,254,124,0, -60,103,24,0,27,222,40,0,36,55,13,128,12,88,60,87,29,0,203,49, -28,230,24,0,106,0,59,135,0,0,10,224,36,55,13,128,16,120,207,49, -59,119,5,0,93,254,0,0,63,254,152,0,110,0,36,223,13,128,10,200, -59,223,17,0,220,201,36,231,13,128,60,231,17,0,93,254,0,0,36,215, -13,128,63,254,218,0,58,215,17,0,28,230,40,0,59,143,24,0,26,214, -48,0,36,55,13,128,17,128,59,127,29,0,208,49,27,222,24,0,111,0, -60,111,0,0,10,216,36,55,13,128,13,96,204,49,60,95,5,0,93,254, -0,0,63,254,246,0,107,0,10,224,58,143,0,0,219,225,36,55,13,128, -17,128,208,49,58,127,5,0,93,254,0,0,63,254,20,1,111,0,25,48, -220,81,10,62,8,0,128,255,236,0,100,87,17,128,181,5,100,231,17,128, -64,6,255,112,127,0,128,7,97,0,128,239,4,0,36,23,13,128,34,23, -17,0,93,254,0,0,34,127,40,0,63,254,34,0,36,55,13,128,15,112, -34,111,45,0,206,49,109,0,64,6,127,0,128,7,97,0,128,239,4,0, -36,23,13,128,34,23,17,0,93,254,0,0,34,127,48,0,63,254,34,0, -36,55,13,128,15,112,34,111,53,0,206,49,109,0,64,6,127,0,128,7, -97,0,128,239,4,0,36,23,13,128,34,23,17,0,93,254,0,0,34,127, -56,0,63,254,34,0,36,55,13,128,15,112,34,111,61,0,206,49,109,0, -64,6,127,0,12,0,128,7,97,0,6,232,61,135,1,0,49,6,64,48, -32,16,241,129,178,13,61,119,1,0,47,6,128,112,96,80,239,113,194,5, -32,86,202,1,133,21,29,48,128,255,184,0,29,48,10,56,253,71,11,0, -128,255,182,32,224,81,194,5,32,86,202,1,165,5,0,82,64,6,127,0, -128,7,128,7,225,16,7,216,6,232,149,21,61,135,1,0,49,6,64,48, -32,16,241,129,154,13,29,224,28,48,191,255,152,255,224,81,186,5,28,80, -213,5,68,234,251,233,241,237,0,82,64,6,255,16,52,0,154,7,24,0, -140,7,128,7,225,112,128,239,4,0,6,216,7,208,8,200,229,87,64,0, -224,7,96,1,36,23,13,128,10,224,34,23,17,0,27,56,34,127,8,0, -26,64,36,55,13,128,15,112,206,49,25,72,34,111,13,0,93,254,0,0, -63,254,56,0,109,0,10,216,252,47,32,0,27,80,64,6,255,112,128,7, -128,7,140,7,152,7,128,7,128,7,38,143,38,87,13,0,230,135,11,0, -198,81,176,81,127,0,24,0,128,7,33,0,6,16,224,17,138,13,32,54, -36,0,128,255,34,11,10,16,224,17,226,45,68,142,0,0,49,142,24,139, -98,143,17,0,68,134,0,0,48,134,164,139,98,135,17,0,64,126,16,0, -98,127,5,0,32,118,0,64,98,119,13,0,64,110,16,0,98,111,1,0, -34,103,1,0,12,102,170,10,98,103,21,0,34,95,1,0,11,94,84,5, -98,95,25,0,34,87,1,0,98,87,29,0,34,143,1,0,66,138,98,143, -33,0,2,80,64,6,63,0,38,23,1,0,2,80,127,0,38,23,5,0, -2,80,127,0,38,23,13,0,2,80,127,0,68,134,0,0,48,134,88,139, -16,142,4,0,68,110,0,0,45,110,88,139,13,118,8,0,46,127,1,0, -49,103,1,0,204,121,15,88,202,90,11,16,2,80,127,0,38,23,1,0, -2,80,127,0,128,7,193,16,6,232,0,226,229,87,64,0,224,7,96,1, -10,216,61,143,21,0,32,134,170,0,113,135,0,0,61,127,25,0,32,118, -85,0,111,119,0,0,61,111,21,0,32,102,144,0,109,103,0,0,61,95, -1,0,235,87,1,0,202,142,255,0,17,128,208,130,61,127,33,0,239,119, -1,0,14,224,16,225,61,111,21,0,32,102,240,0,109,103,0,0,251,47, -32,0,43,6,91,34,1,0,235,225,186,5,0,18,229,13,42,6,186,34, -1,0,234,225,250,5,64,142,8,0,125,143,5,0,0,18,181,5,32,22, -192,1,2,80,64,6,223,16,128,7,225,247,6,216,7,200,8,184,9,192, -59,143,1,0,241,201,161,13,24,128,217,129,59,127,5,0,59,119,1,0, -206,121,239,129,195,5,32,22,193,1,165,125,64,54,1,0,128,255,112,9, -10,16,2,208,26,168,224,209,202,5,32,22,21,1,229,109,0,18,59,231, -1,0,0,18,229,21,2,96,194,98,12,104,68,86,0,0,42,86,88,139, -13,88,202,89,43,239,1,0,29,136,202,138,17,232,29,128,220,129,240,201, -129,13,29,120,207,225,65,18,2,112,14,6,180,255,137,237,2,176,133,77, -22,96,194,98,12,104,68,86,0,0,42,86,88,139,13,88,202,89,43,239, -1,0,29,136,202,138,17,232,27,48,28,56,26,64,29,72,128,255,24,1, -25,16,188,17,25,80,229,13,2,128,213,129,65,186,23,126,255,255,15,119, -0,0,80,119,0,0,95,194,65,202,65,82,65,18,29,104,220,105,237,81, -161,5,181,5,224,193,218,237,27,48,28,56,128,255,52,1,27,48,28,56, -26,64,29,72,128,255,56,0,27,48,28,56,26,64,29,72,128,255,236,0, -224,81,242,5,26,48,128,255,186,8,32,22,194,1,165,13,29,96,204,225, -65,178,224,193,138,189,26,48,128,255,164,8,0,18,2,80,64,6,255,247, -128,7,193,240,6,216,7,232,8,224,9,192,58,6,240,255,31,0,229,87, -64,0,224,7,96,1,10,200,0,18,149,53,253,143,1,0,252,135,1,0, -240,137,202,5,66,234,66,226,245,37,59,127,21,0,32,118,170,0,111,119, -0,0,59,111,25,0,32,102,85,0,109,103,0,0,59,95,21,0,32,86, -160,0,107,87,0,0,66,234,29,142,254,255,66,226,28,134,254,255,240,127, -1,0,113,127,0,0,250,119,1,0,206,110,64,0,250,103,1,0,204,94, -64,0,235,105,250,245,65,18,24,80,191,82,10,136,159,138,24,128,209,129, -16,120,161,122,239,17,241,197,249,47,32,0,64,6,223,240,0,18,133,13, -231,143,1,0,104,143,0,0,66,58,66,66,65,18,9,120,191,122,159,122, -9,104,207,105,161,106,237,17,161,245,127,0,0,18,213,13,232,143,1,0, -66,66,231,135,1,0,66,58,240,137,194,5,32,86,194,1,181,13,65,18, -9,112,191,114,159,114,9,96,206,97,161,98,236,17,214,237,0,82,127,0, -34,6,240,255,31,0,38,143,21,0,32,134,170,0,113,135,0,0,38,127, -25,0,32,118,85,0,111,119,0,0,38,111,21,0,32,102,128,0,109,103, -0,0,38,95,21,0,32,86,170,0,107,87,0,0,38,143,25,0,32,134, -85,0,113,135,0,0,32,126,48,0,103,127,0,0,226,119,1,0,206,110, -64,0,226,103,1,0,204,94,64,0,235,105,250,245,127,0,128,7,97,0, -6,232,224,233,138,13,32,54,36,0,128,255,90,7,10,232,224,233,162,45, -29,48,191,255,30,252,68,142,0,0,49,142,228,139,125,143,17,0,64,134, -16,0,125,135,5,0,32,126,0,64,125,127,13,0,125,135,1,0,61,111, -1,0,128,102,170,170,204,105,125,111,21,0,61,95,1,0,11,94,84,85, -125,95,25,0,61,87,1,0,125,87,29,0,61,143,1,0,66,138,125,143, -33,0,29,80,64,6,127,0,128,7,225,0,6,248,229,87,64,0,224,7, -96,1,10,224,252,47,32,0,63,143,21,0,32,134,170,0,113,135,0,0, -63,127,25,0,32,118,85,0,111,119,0,0,63,111,21,0,32,102,144,0, -109,103,0,0,63,87,1,0,42,87,0,0,31,48,202,142,255,0,63,239, -33,0,208,138,253,239,1,0,17,233,128,255,26,0,44,6,91,0,32,0, -236,233,186,5,0,82,181,5,32,86,192,1,64,6,255,0,128,7,33,0, -38,143,21,0,32,134,240,0,113,135,0,0,12,50,128,255,126,5,64,6, -63,0,38,135,128,7,38,23,1,0,2,80,127,0,38,23,5,0,2,80, -127,0,38,23,13,0,2,80,127,0,34,6,0,192,23,0,2,80,127,0, -128,7,225,16,6,232,0,226,229,87,64,0,224,7,96,1,10,216,61,143, -21,0,128,134,170,170,113,135,0,0,61,127,25,0,32,118,85,85,111,119, -0,0,61,111,21,0,128,102,144,144,109,103,0,0,32,54,32,78,128,255, -22,5,61,95,1,0,235,87,1,0,10,136,208,138,61,135,29,0,240,127, -1,0,15,224,17,225,61,119,21,0,128,110,170,170,110,111,0,0,61,103, -25,0,32,94,85,85,108,95,0,0,61,87,21,0,128,142,240,240,106,143, -0,0,32,54,32,78,128,255,210,4,251,47,32,0,48,6,186,186,31,31, -240,225,186,5,0,18,181,5,32,22,192,1,2,80,64,6,255,16,190,7, -225,241,3,30,124,254,6,232,7,224,8,216,9,208,35,142,0,0,64,134, -0,64,17,200,16,201,61,127,1,0,239,225,161,13,26,112,220,113,61,111, -5,0,61,103,1,0,204,105,237,113,195,5,32,22,193,1,133,101,28,88, -61,87,1,0,11,136,170,137,17,16,61,135,9,0,240,23,194,2,2,184, -149,85,61,127,1,0,15,112,23,104,61,103,9,0,13,88,236,95,34,2, -11,96,12,192,206,193,29,48,24,56,25,64,128,255,32,1,0,18,24,72, -149,37,252,73,218,29,224,209,178,29,2,80,217,81,65,218,27,142,255,255, -17,135,0,0,74,135,0,0,95,210,65,226,224,209,226,13,2,126,1,0, -15,112,217,113,65,218,27,110,255,255,13,103,0,0,78,103,0,0,95,210, -65,226,66,74,68,18,61,87,9,0,10,88,129,90,11,128,193,130,16,136, -17,120,216,121,239,73,225,213,29,48,24,56,25,64,128,255,44,0,29,48, -24,56,25,64,128,255,248,0,10,16,224,17,194,5,32,22,194,1,213,5, -65,186,224,209,250,173,0,18,2,80,3,30,132,1,126,6,255,241,128,7, -225,48,6,224,7,216,8,248,60,135,5,0,16,136,129,138,17,232,59,233, -229,87,64,0,224,7,96,1,10,208,60,127,21,0,128,118,170,170,111,119, -0,0,60,111,25,0,32,102,85,85,109,103,0,0,60,95,21,0,128,86, -160,160,107,87,0,0,0,18,229,21,66,218,27,142,254,255,66,250,31,134, -254,255,240,127,1,0,113,127,0,0,66,234,29,118,254,255,66,250,31,110, -254,255,237,103,1,0,110,103,0,0,65,18,60,87,9,0,10,88,129,90, -235,17,225,229,32,54,32,78,128,255,44,3,250,47,32,0,64,6,255,48, -38,135,5,0,16,136,129,138,17,16,39,17,0,74,229,21,66,66,8,126, -254,255,66,58,7,118,254,255,238,111,1,0,111,111,0,0,66,66,8,102, -254,255,66,18,2,94,254,255,235,87,1,0,108,87,0,0,65,74,38,135, -9,0,16,136,129,138,241,73,225,229,127,0,38,135,5,0,16,136,129,138, -17,16,39,17,0,74,133,37,66,66,8,126,254,255,239,119,1,0,66,58, -7,110,254,255,237,103,1,0,236,113,194,5,32,22,194,1,149,29,66,66, -8,94,254,255,235,87,1,0,66,18,2,142,254,255,241,135,1,0,240,81, -194,5,32,22,194,1,165,13,65,74,9,120,38,111,9,0,13,112,129,114, -238,121,177,221,0,18,2,80,127,0,38,23,1,0,2,80,127,0,38,23, -5,0,2,80,127,0,38,23,13,0,2,80,127,0,34,6,0,192,23,0, -2,80,127,0,128,7,225,16,6,232,0,226,229,87,64,0,224,7,96,1, -10,216,61,143,21,0,128,134,170,170,113,135,0,0,61,127,25,0,32,118, -85,85,111,119,0,0,61,111,21,0,128,102,144,144,109,103,0,0,32,54, -32,78,128,255,26,2,61,95,1,0,235,87,1,0,10,136,208,138,61,135, -29,0,240,127,1,0,15,224,17,225,61,119,21,0,128,110,170,170,110,111, -0,0,61,103,25,0,32,94,85,85,108,95,0,0,61,87,21,0,128,142, -240,240,106,143,0,0,32,54,32,78,128,255,214,1,251,47,32,0,48,6, -186,186,31,31,240,225,186,5,0,18,181,5,32,22,192,1,2,80,64,6, -255,16,190,7,225,241,3,30,124,254,6,232,7,208,8,192,9,200,35,142, -0,0,64,134,0,64,17,216,16,217,61,127,1,0,239,209,161,13,25,112, -218,113,61,111,5,0,61,103,1,0,204,105,237,113,195,5,32,22,193,1, -149,85,26,88,61,87,1,0,11,136,170,137,17,16,61,135,9,0,240,23, -194,2,2,184,165,69,61,127,1,0,15,112,23,104,61,103,9,0,13,88, -236,95,34,2,11,96,12,224,206,225,29,48,28,56,27,64,128,255,226,0, -0,74,28,16,165,21,250,17,234,13,224,201,194,13,9,80,219,81,65,194, -24,142,255,255,17,135,0,0,74,135,0,0,95,202,65,210,65,18,65,74, -61,119,9,0,14,120,129,122,15,96,193,98,12,104,13,88,220,89,235,17, -209,229,29,48,28,56,27,64,128,255,44,0,29,48,28,56,27,64,128,255, -184,0,10,16,224,17,194,5,32,22,194,1,213,5,65,186,224,201,234,189, -0,18,2,80,3,30,132,1,126,6,255,241,128,7,225,16,6,248,7,232, -8,224,229,87,64,0,224,7,96,1,10,216,63,143,21,0,128,134,170,170, -113,135,0,0,63,127,25,0,32,118,85,85,111,119,0,0,63,111,21,0, -128,102,160,160,109,103,0,0,0,18,197,13,66,234,29,94,254,255,66,226, -28,86,254,255,234,143,1,0,107,143,0,0,65,18,63,127,9,0,15,128, -129,130,240,17,129,245,32,54,32,78,128,255,110,0,251,47,32,0,64,6, -255,16,0,18,197,13,66,66,8,142,254,255,66,58,7,134,254,255,240,127, -1,0,113,127,0,0,65,18,38,111,9,0,13,112,129,114,238,17,129,245, -127,0,0,18,149,21,66,66,8,142,254,255,241,135,1,0,66,58,7,126, -254,255,239,119,1,0,238,129,194,5,32,22,194,1,165,13,65,18,2,104, -38,95,9,0,11,96,129,98,236,105,161,237,0,18,2,80,127,0,127,0, -128,7,225,0,6,232,29,6,155,255,233,5,32,230,213,1,29,238,156,255, -149,21,47,6,140,134,71,0,15,128,253,135,34,2,16,136,17,112,45,6, -64,66,15,0,237,119,194,2,14,230,1,0,0,234,128,102,26,183,236,225, -147,13,128,54,26,183,128,255,54,0,128,94,26,183,171,225,229,5,28,80, -10,48,128,255,38,0,0,226,224,225,234,237,224,233,202,213,64,6,255,0, -127,0,36,135,64,86,0,0,42,87,80,245,10,16,194,0,2,80,127,0, -128,7,225,0,6,232,191,255,234,255,10,224,29,136,220,137,17,128,128,126, -27,183,239,135,192,234,252,233,231,5,191,255,210,255,253,81,214,253,197,13, -191,255,200,255,10,16,197,5,191,255,192,255,10,16,252,17,207,253,253,17, -166,253,64,6,255,0,192,25,1,50,127,0,88,26,99,255,5,0,99,231, -1,0,3,224,128,255,48,0,35,255,5,0,35,231,1,0,72,26,127,0, -88,26,99,255,5,0,99,231,1,0,224,49,3,224,178,5,128,255,38,18, -35,255,5,0,35,231,1,0,72,26,127,0,3,30,236,255,99,255,17,0, -99,231,13,0,99,215,9,0,3,230,12,0,99,239,1,0,99,223,5,0, -128,239,4,0,6,208,224,209,186,29,1,210,149,29,68,54,0,0,38,55, -45,141,224,49,218,5,93,54,0,0,38,54,128,0,6,216,93,254,0,0, -63,254,42,0,123,0,93,102,0,0,44,102,128,0,236,217,186,5,0,48, -245,5,26,48,128,255,132,17,10,48,224,49,178,229,35,215,9,0,35,231, -13,0,35,255,17,0,35,239,1,0,35,223,5,0,6,80,3,30,20,0, -127,0,88,26,99,255,5,0,99,231,1,0,6,50,3,224,128,255,170,1, -35,231,1,0,35,255,5,0,72,26,127,0,192,25,127,0,3,30,236,255, -99,255,17,0,99,231,13,0,99,215,9,0,3,230,12,0,99,239,1,0, -99,223,5,0,128,239,4,0,68,102,0,0,44,103,41,141,0,218,224,97, -218,37,1,50,68,14,0,0,97,55,41,141,93,54,0,0,38,54,112,0, -128,255,222,13,133,21,27,48,65,218,194,50,68,62,0,0,39,62,92,128, -199,49,38,215,1,0,93,254,0,0,63,254,68,0,122,0,27,88,194,90, -68,70,0,0,200,89,43,63,93,128,224,57,154,237,35,215,9,0,35,223, -5,0,35,239,1,0,35,255,17,0,35,231,13,0,3,30,20,0,127,0, -80,26,99,255,13,0,99,231,9,0,99,239,1,0,3,230,8,0,99,223, -5,0,128,239,4,0,213,29,39,103,1,0,68,14,0,0,97,103,201,134, -7,48,38,63,5,0,224,57,178,13,38,223,9,0,93,254,0,0,7,48, -2,58,63,254,42,0,123,0,133,13,38,223,9,0,93,254,0,0,63,254, -58,0,123,0,68,62,0,0,39,63,201,134,224,57,250,221,35,223,5,0, -35,239,1,0,35,255,13,0,35,231,9,0,3,30,16,0,127,0,88,26, -99,255,5,0,99,231,1,0,6,56,3,224,0,50,95,58,104,58,251,53, -71,0,9,0,14,0,19,0,24,0,29,0,34,0,39,0,44,0,49,0, -68,54,0,0,38,54,48,141,133,45,68,54,0,0,38,54,124,141,181,37, -68,54,0,0,38,54,180,141,229,29,68,54,0,0,38,54,96,142,149,29, -68,54,0,0,38,54,232,141,197,21,68,54,0,0,38,54,8,142,245,13, -68,54,0,0,38,54,44,142,165,13,68,54,0,0,38,54,68,142,213,5, -68,54,0,0,38,54,68,141,35,255,5,0,35,231,1,0,6,80,72,26, -127,0,80,26,99,255,13,0,99,231,9,0,99,239,1,0,3,230,8,0, -99,223,5,0,6,232,1,50,191,255,86,255,10,216,29,48,191,255,78,255, -64,54,0,0,38,54,128,128,196,49,27,64,10,72,68,62,0,0,39,62, -164,142,128,255,192,10,128,255,254,10,35,231,9,0,35,255,13,0,35,239, -1,0,35,223,5,0,3,30,16,0,127,0,3,30,224,255,99,79,29,0, -99,71,25,0,99,255,13,0,99,231,9,0,35,102,20,0,3,230,8,0, -99,103,1,0,6,64,64,54,0,0,38,54,112,128,99,63,21,0,196,49, -35,94,16,0,203,94,7,0,99,95,5,0,8,56,35,79,5,0,12,64, -128,255,20,0,35,231,9,0,35,255,13,0,3,30,32,0,127,0,4,2, -3,30,212,253,99,79,41,2,99,71,37,2,99,255,25,2,99,231,21,2, -99,207,17,2,3,230,20,2,99,215,13,2,99,239,5,2,99,223,9,2, -128,239,4,0,7,200,6,216,128,255,160,16,27,215,15,0,220,210,159,210, -219,247,15,0,218,5,9,50,128,255,86,27,133,61,59,103,5,0,224,97, -154,21,35,94,4,0,123,95,5,0,35,86,4,0,123,87,1,0,32,54, -0,2,123,55,9,0,219,175,15,0,219,151,15,0,27,48,93,62,0,0, -35,103,41,2,39,62,136,17,99,103,1,0,35,79,37,2,25,64,128,255, -38,2,10,200,59,87,5,0,35,94,4,0,235,81,170,13,27,48,128,255, -196,14,123,7,5,0,123,7,1,0,123,7,9,0,224,209,218,5,219,223, -15,0,162,5,31,202,27,48,128,255,62,16,25,80,35,207,17,2,35,215, -13,2,35,223,9,2,35,239,5,2,35,255,25,2,35,231,21,2,3,30, -44,2,127,0,88,26,99,255,5,0,99,231,1,0,3,224,197,13,6,88, -10,82,234,95,194,98,12,102,48,0,71,103,255,255,234,55,194,2,95,58, -224,49,202,245,224,65,146,13,229,5,32,54,48,0,71,55,255,255,95,58, -231,65,161,253,35,255,5,0,35,231,1,0,7,80,72,26,127,0,24,0, -3,30,208,255,99,255,45,0,99,231,41,0,99,207,37,0,3,230,40,0, -99,215,33,0,99,239,25,0,99,223,29,0,128,239,4,0,99,55,21,0, -38,119,9,0,99,119,17,0,7,216,38,207,13,0,224,217,99,223,1,0, -250,5,68,222,0,0,59,222,172,142,99,223,1,0,27,48,128,255,136,16, -35,111,21,0,10,48,13,71,21,0,45,63,5,0,224,65,194,5,230,57, -169,5,7,48,6,112,219,113,99,119,9,0,35,119,21,0,46,119,1,0, -230,113,99,119,5,0,190,5,99,55,5,0,35,79,21,0,35,215,5,0, -9,79,16,0,166,209,224,73,130,37,224,65,186,29,27,71,0,0,8,6, -211,255,242,5,8,6,213,255,194,5,8,6,224,255,170,5,65,218,27,95, -0,0,11,6,208,255,170,13,27,55,1,0,6,6,136,255,194,5,6,6, -168,255,170,5,66,218,32,118,48,0,181,5,32,118,32,0,99,119,13,0, -229,13,14,71,0,0,35,63,17,0,8,48,65,114,99,119,1,0,93,254, -0,0,63,254,212,0,121,0,35,119,1,0,251,113,129,245,35,63,21,0, -7,63,17,0,224,57,194,13,149,29,35,55,13,0,35,63,17,0,93,254, -0,0,63,254,252,0,121,0,95,210,224,209,223,245,197,13,27,103,0,0, -35,63,17,0,12,48,65,218,93,254,0,0,63,254,26,1,121,0,35,111, -9,0,237,217,161,245,181,13,35,63,17,0,32,54,32,0,93,254,0,0, -63,254,54,1,121,0,95,210,224,209,223,245,35,207,37,0,35,215,33,0, -35,223,29,0,35,239,25,0,35,255,45,0,35,231,41,0,35,87,5,0, -3,30,48,0,127,0,108,1,3,30,108,254,99,79,145,1,99,255,129,1, -99,231,125,1,99,207,121,1,3,230,124,1,99,215,117,1,99,239,109,1, -99,223,113,1,128,239,4,0,99,55,21,0,99,63,25,0,0,210,8,216, -224,217,218,5,68,222,0,0,59,222,172,142,35,111,21,0,99,111,89,1, -35,111,25,0,99,111,93,1,128,7,30,7,6,6,219,255,226,13,35,63, -21,0,93,254,0,0,35,103,25,0,63,254,68,0,108,0,65,218,65,210, -128,7,254,6,65,218,31,50,99,55,85,1,99,55,81,1,0,202,35,54, -96,1,197,5,70,7,0,0,65,50,35,78,105,1,233,49,163,253,27,255, -0,0,31,6,211,255,218,5,1,50,67,55,97,1,197,29,31,6,213,255, -218,5,1,50,67,55,98,1,213,21,31,6,208,255,218,5,1,50,67,55, -96,1,229,13,31,6,224,255,218,5,1,50,67,55,99,1,245,5,31,6, -221,255,234,5,1,50,67,55,100,1,65,218,181,221,31,6,208,255,198,29, -31,6,199,255,159,29,99,7,81,1,213,13,27,95,0,0,35,63,81,1, -65,218,234,63,64,2,199,89,11,94,208,255,99,95,81,1,27,55,0,0, -6,6,208,255,214,29,6,6,199,255,215,237,149,29,31,6,214,255,234,21, -35,95,145,1,28,66,67,90,72,89,68,90,43,55,253,255,99,95,145,1, -99,55,81,1,224,49,254,5,128,49,99,55,81,1,1,50,67,55,97,1, -65,218,27,79,0,0,9,6,210,255,234,61,27,55,1,0,1,202,65,218, -6,6,208,255,198,29,6,6,199,255,159,29,99,7,85,1,213,13,27,87, -0,0,35,55,85,1,65,218,234,55,64,2,198,81,10,86,208,255,99,87, -85,1,27,55,0,0,6,6,208,255,134,37,6,6,199,255,215,237,197,29, -27,95,0,0,11,6,214,255,186,21,35,87,145,1,28,58,67,82,71,81, -68,82,99,87,145,1,42,87,253,255,99,87,85,1,224,81,142,13,31,50, -99,55,85,1,197,5,99,7,85,1,165,5,65,218,27,55,0,0,6,6, -224,255,178,253,6,6,148,255,250,13,27,55,1,0,1,58,65,218,6,6, -148,255,218,5,65,218,67,63,103,1,181,21,67,63,102,1,133,21,6,6, -180,255,234,5,65,218,1,50,67,55,103,1,133,13,6,6,152,255,218,5, -65,218,1,50,67,55,104,1,27,63,0,0,65,218,67,63,105,1,7,6, -187,255,186,5,128,7,78,4,7,6,185,255,186,5,128,7,68,4,7,6, -176,255,186,5,128,7,8,2,7,6,168,255,186,5,128,7,32,2,7,6, -157,255,177,5,128,7,202,4,186,5,128,7,202,4,7,6,156,255,162,45, -7,6,152,255,177,5,128,7,16,4,7,6,151,255,162,37,7,6,146,255, -177,5,128,7,164,4,186,5,128,7,28,4,7,6,144,255,177,5,128,7, -224,1,186,5,128,7,184,1,7,6,141,255,186,5,128,7,102,4,7,6, -139,255,186,5,128,7,198,1,7,6,136,255,186,5,128,7,188,1,128,7, -108,4,224,201,178,5,67,7,96,1,3,63,103,1,224,57,35,63,145,1, -242,21,7,94,255,255,35,79,149,1,203,86,4,0,234,73,226,55,0,0, -194,50,199,49,67,50,28,82,74,49,72,50,99,55,145,1,38,71,249,255, -38,79,253,255,181,13,67,58,28,82,74,57,68,58,39,71,253,255,99,63, -145,1,8,72,191,74,3,55,104,1,224,49,194,5,232,0,8,72,191,74, -67,7,3,0,67,7,79,1,3,206,79,1,9,48,224,49,190,29,1,106, -67,111,3,0,193,50,250,13,224,65,218,13,32,54,56,0,89,55,255,255, -42,6,204,204,204,204,95,202,43,6,204,204,204,12,213,5,8,48,9,56, -128,255,92,13,10,64,11,72,9,48,99,55,17,0,25,80,8,48,32,78, -34,0,39,6,0,40,107,238,133,61,0,90,0,202,213,37,9,6,225,255, -254,5,40,6,0,202,154,59,233,71,192,0,165,5,25,88,35,103,17,0, -193,202,236,57,203,21,230,65,139,13,35,111,17,0,65,202,167,105,99,111, -17,0,165,13,35,103,17,0,236,57,249,5,65,202,167,97,95,98,99,103, -17,0,168,49,129,58,95,74,224,73,190,221,99,95,17,0,0,66,25,56, -11,57,178,5,10,70,247,255,10,56,191,255,90,250,25,48,3,58,4,74, -35,111,17,0,0,66,224,105,218,197,10,56,191,255,68,250,35,63,85,1, -10,200,224,57,174,5,1,58,35,54,79,1,167,49,229,5,32,62,48,0, -89,63,255,255,95,202,230,201,171,253,3,79,3,0,224,73,194,5,32,54, -45,0,133,21,3,71,98,1,224,65,194,5,32,54,43,0,149,13,3,63, -99,1,224,57,186,5,128,7,22,1,32,54,32,0,89,55,255,255,95,202, -128,7,8,1,3,55,105,1,35,95,145,1,72,50,67,55,105,1,67,90, -28,66,72,89,68,90,99,95,145,1,43,87,253,255,0,90,213,117,224,201, -178,5,67,7,96,1,3,79,103,1,35,71,145,1,224,73,146,29,8,72, -9,62,255,255,35,95,149,1,199,54,4,0,230,89,226,71,0,0,194,66, -201,65,8,62,3,0,28,50,70,57,72,58,99,63,145,1,39,87,249,255, -39,95,253,255,165,13,67,66,28,90,75,65,68,66,99,71,145,1,40,87, -253,255,0,90,3,63,104,1,224,57,178,5,202,0,0,90,3,79,105,1, -9,6,139,255,250,61,3,206,235,0,67,7,235,0,181,29,35,63,33,0, -35,55,29,0,10,66,0,74,128,255,122,13,10,48,11,56,32,70,48,0, -0,74,128,255,164,11,89,87,255,255,10,66,35,55,29,0,35,63,33,0, -95,202,0,74,128,255,52,12,99,87,29,0,99,95,33,0,11,72,10,64, -0,50,0,58,128,255,56,11,97,82,178,221,35,63,85,1,224,57,174,5, -1,58,35,54,235,0,167,49,229,5,32,62,48,0,89,63,255,255,95,202, -230,201,171,253,25,56,128,7,22,2,99,87,29,0,3,71,105,1,3,206, -135,0,8,6,168,255,226,111,0,0,99,95,33,0,196,106,68,94,0,0, -43,94,180,142,203,105,99,111,9,0,67,7,135,0,35,79,33,0,10,64, -0,50,0,58,128,255,150,10,97,82,186,5,67,7,100,1,3,87,105,1, -10,6,145,255,138,13,3,106,99,111,13,0,7,106,99,111,17,0,165,45, -4,106,99,111,13,0,15,106,149,253,35,71,17,0,35,55,29,0,8,72, -35,63,33,0,191,74,128,255,76,10,35,55,9,0,0,74,0,56,10,64, -128,255,202,10,10,55,0,0,35,71,13,0,89,55,255,255,8,72,95,202, -35,55,29,0,35,63,33,0,191,74,128,255,206,10,99,87,29,0,99,95, -33,0,35,79,33,0,35,71,29,0,0,50,0,58,128,255,82,10,97,82, -178,213,35,111,13,0,99,106,170,13,3,79,100,1,224,73,226,5,32,54, -48,0,89,55,255,255,95,202,35,71,85,1,224,65,174,5,1,66,35,54, -135,0,168,49,229,5,32,62,48,0,89,63,255,255,95,202,230,201,171,253, -35,111,13,0,100,106,178,5,191,7,248,254,3,95,100,1,224,89,186,5, -191,7,236,254,3,87,105,1,32,54,48,0,89,87,255,255,89,55,254,255, -94,202,191,7,214,254,68,206,0,0,57,206,212,142,25,56,35,54,80,1, -191,255,244,247,202,209,32,54,41,0,89,55,15,0,89,7,16,0,165,109, -67,7,96,1,3,79,104,1,35,95,145,1,224,73,210,13,11,70,3,0, -28,90,75,65,68,66,99,71,145,1,40,71,253,255,104,215,0,0,229,85, -3,63,103,1,28,66,224,57,130,21,11,54,3,0,72,49,68,50,99,55, -145,1,26,72,38,55,253,255,191,74,102,215,1,0,102,79,5,0,165,69, -67,90,72,89,68,90,99,95,145,1,43,95,253,255,107,215,1,0,133,61, -1,50,35,71,145,1,67,55,101,1,67,66,28,90,75,65,8,78,4,0, -99,79,145,1,40,63,1,0,197,37,67,63,4,0,213,13,35,71,145,1, -28,90,67,66,75,65,68,66,99,71,145,1,40,71,253,255,67,71,4,0, -3,63,4,0,67,7,5,0,224,57,218,13,35,63,21,0,0,50,93,254, -0,0,35,103,25,0,63,254,52,7,108,0,191,7,18,249,35,62,4,0, -35,54,80,1,191,255,20,247,202,209,27,55,0,0,224,49,178,5,191,7, -222,248,26,80,35,207,121,1,35,215,117,1,35,223,113,1,35,239,109,1, -35,255,129,1,35,231,125,1,3,30,148,1,127,0,3,30,224,255,99,79, -29,0,99,255,13,0,35,94,16,0,203,94,7,0,99,95,5,0,99,231, -9,0,99,71,25,0,35,79,5,0,35,70,24,0,99,71,1,0,3,230, -8,0,191,255,134,245,35,255,13,0,35,231,9,0,3,30,32,0,127,0, -88,26,99,255,5,0,99,231,1,0,6,50,3,224,128,255,68,19,35,231, -1,0,35,255,5,0,72,26,127,0,16,0,17,2,6,216,7,200,8,208, -64,230,0,0,60,230,128,128,196,225,28,232,29,56,68,54,0,0,38,54, -35,143,128,255,62,5,224,217,210,21,27,103,0,0,224,97,146,21,29,56, -32,54,34,0,128,255,32,5,27,48,29,56,128,255,32,5,29,56,68,54, -0,0,38,54,23,143,128,255,18,5,29,56,68,54,0,0,38,54,27,143, -128,255,4,5,25,48,29,56,128,255,252,4,29,56,68,54,0,0,38,54, -15,143,128,255,238,4,224,209,255,5,29,56,32,54,48,0,128,255,216,4, -213,29,3,238,12,0,26,48,67,7,12,0,181,13,10,74,6,64,233,71, -128,82,10,86,48,0,93,87,255,255,73,48,95,234,224,49,223,245,229,5, -11,48,65,234,28,56,128,255,166,4,29,95,0,0,224,89,138,253,28,56, -10,50,128,255,150,4,191,255,30,255,0,82,39,2,16,0,0,2,8,2, -128,255,252,18,32,230,35,0,28,48,194,50,68,86,0,0,202,49,38,63, -205,134,224,57,38,54,204,134,162,13,7,216,0,58,102,7,1,0,93,254, -0,0,63,254,48,0,123,0,95,226,188,237,68,230,0,0,60,79,161,129, -224,73,60,230,160,129,146,13,9,216,93,254,0,0,63,254,80,0,123,0, -124,7,1,0,128,255,172,18,30,2,8,2,6,216,68,230,0,0,128,255, -154,18,60,103,93,135,224,97,60,230,92,135,170,13,93,94,0,0,43,94, -162,255,124,95,1,0,28,48,128,255,152,16,0,74,9,48,194,50,68,70, -0,0,200,49,38,63,205,134,224,57,38,54,204,134,250,5,102,223,1,0, -128,255,96,18,0,82,133,13,65,74,9,6,220,255,198,237,128,255,80,18, -31,82,30,2,80,26,80,26,99,255,13,0,99,239,1,0,99,223,5,0, -6,232,99,231,9,0,68,222,0,0,59,222,100,135,59,103,33,0,3,230, -8,0,224,97,218,5,32,54,0,8,123,55,33,0,59,55,33,0,29,56, -95,50,6,72,221,73,72,74,38,232,73,233,180,5,231,233,185,5,0,216, -149,61,29,48,128,255,110,16,10,48,127,50,146,253,198,70,7,0,178,5, -8,58,135,65,59,95,29,0,230,89,138,13,29,56,198,57,123,63,29,0, -8,216,198,217,181,29,59,63,25,0,224,57,178,5,231,49,185,5,123,55, -25,0,59,63,29,0,224,57,210,5,29,72,198,73,233,57,217,5,29,56, -198,57,123,63,29,0,8,56,198,57,7,222,8,0,72,66,168,233,71,234, -24,82,74,233,123,239,253,255,27,48,128,255,76,1,27,80,35,223,5,0, -35,239,1,0,35,255,13,0,35,231,9,0,3,30,16,0,127,0,3,30, -228,255,99,255,25,0,99,207,17,0,99,215,13,0,99,231,21,0,99,239, -5,0,99,223,9,0,3,230,20,0,6,222,11,0,24,90,75,217,230,217, -185,5,0,72,149,117,27,6,240,255,177,5,32,222,16,0,68,214,0,0, -58,214,100,135,58,239,5,0,224,233,186,13,26,238,16,0,122,239,5,0, -122,239,17,0,122,239,21,0,122,7,13,0,29,56,61,239,1,0,61,79, -253,255,251,73,193,45,61,87,1,0,9,48,122,63,5,0,187,49,6,6, -120,255,241,5,103,87,1,0,29,72,106,63,5,0,197,69,58,71,29,0, -221,73,232,73,218,5,29,64,219,233,1,90,197,5,6,64,221,65,0,90, -104,223,253,255,8,72,125,55,253,255,224,89,146,53,103,239,1,0,125,63, -5,0,125,87,1,0,106,239,5,0,133,45,58,55,5,0,230,233,186,205, -99,55,1,0,27,200,25,48,0,58,191,255,88,254,224,81,234,21,29,56, -7,64,40,63,1,0,231,65,217,5,58,54,16,0,230,57,138,253,40,103, -253,255,25,48,172,49,1,58,191,255,50,254,224,81,186,5,0,74,229,5, -35,119,1,0,122,119,5,0,133,173,35,207,17,0,35,231,21,0,35,255, -25,0,35,239,5,0,35,223,9,0,35,215,13,0,9,80,3,30,28,0, -127,0,84,26,99,255,9,0,99,239,1,0,99,231,5,0,68,70,0,0, -38,79,253,255,40,71,105,135,3,230,4,0,232,49,169,13,8,56,7,64, -40,63,5,0,231,49,185,13,232,57,161,253,133,13,8,56,39,71,1,0, -232,57,185,5,230,65,163,253,68,14,0,0,97,63,105,135,0,250,39,87, -253,255,0,234,10,96,199,97,230,97,138,13,7,48,38,63,5,0,202,73, -102,79,253,255,1,250,9,88,198,89,232,89,170,21,40,95,1,0,40,87, -253,255,103,55,1,0,202,73,102,63,5,0,11,64,102,71,1,0,102,79, -253,255,104,55,5,0,1,234,224,249,186,13,224,233,154,13,103,55,1,0, -102,63,5,0,102,71,1,0,104,55,5,0,35,239,1,0,35,255,9,0, -35,231,5,0,76,26,127,0,84,26,99,255,9,0,99,231,5,0,99,239, -1,0,3,230,4,0,6,232,128,255,112,15,29,48,191,255,252,253,10,232, -128,255,104,15,29,80,35,239,1,0,35,255,9,0,35,231,5,0,76,26, -127,0,84,26,99,255,9,0,99,231,5,0,99,239,1,0,3,230,4,0, -6,232,128,255,58,15,224,233,194,5,29,48,191,255,242,254,128,255,48,15, -35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0,3,30,9,2, -0,226,6,232,128,255,104,1,224,233,194,69,61,55,5,0,224,49,130,69, -221,247,15,0,234,5,9,50,128,255,26,12,31,226,133,61,221,239,15,0, -218,53,61,103,1,0,230,97,163,37,221,255,13,0,146,13,61,95,12,0, -0,58,203,54,255,63,2,66,128,255,226,10,61,87,12,0,61,79,1,0, -61,63,5,0,202,54,255,63,167,73,9,64,128,255,200,9,61,63,5,0, -61,55,1,0,167,49,230,81,206,5,221,31,15,0,31,226,61,95,5,0, -221,183,13,0,125,95,1,0,224,89,202,5,125,7,9,0,213,5,32,54, -0,2,125,55,9,0,29,48,128,255,2,1,28,80,31,2,0,2,128,255, -116,1,22,2,8,2,6,224,7,232,29,48,128,255,192,0,61,103,5,0, -224,97,186,61,28,48,128,255,226,1,10,216,224,217,130,13,28,55,0,0, -29,56,128,255,232,1,127,82,130,21,95,218,224,217,247,45,61,87,12,0, -28,78,1,0,202,54,255,63,9,56,27,64,128,255,60,9,251,81,190,37, -221,31,15,0,31,226,133,37,61,71,9,0,95,66,125,71,9,0,140,13, -28,55,0,0,29,56,128,255,168,1,10,48,181,13,61,95,1,0,65,90, -125,95,1,0,28,55,0,0,75,55,255,255,134,0,65,226,127,50,210,229, -28,79,0,0,224,73,186,229,0,226,29,48,128,255,94,0,28,80,30,2, -0,2,68,94,0,0,43,94,96,128,171,49,164,50,6,6,236,255,193,13, -6,72,194,74,68,62,0,0,39,62,164,129,9,64,199,65,8,48,128,255, -202,13,22,2,0,2,68,94,0,0,43,94,96,128,171,49,164,50,6,6, -236,255,177,13,194,50,68,62,0,0,199,49,38,55,165,129,224,49,178,5, -128,255,146,13,22,2,0,2,68,94,0,0,43,94,96,128,171,49,164,50, -6,6,236,255,177,13,194,50,68,62,0,0,199,49,38,55,165,129,224,49, -178,5,128,255,108,13,22,2,0,2,9,2,68,54,0,0,38,54,96,128, -198,47,15,0,6,238,16,0,198,55,31,0,6,230,32,0,38,103,28,0, -32,110,0,192,77,97,140,102,1,0,38,87,44,0,102,103,28,0,77,81, -138,86,2,0,102,87,44,0,198,55,47,0,191,255,64,255,29,48,191,255, -58,255,28,48,191,255,52,255,31,2,9,2,6,224,7,232,29,48,191,255, -82,255,61,103,9,0,95,98,125,103,9,0,252,5,28,48,29,56,128,255, -132,0,10,224,149,13,61,95,1,0,65,90,125,95,1,0,75,231,255,255, -156,0,29,48,191,255,78,255,28,80,31,2,0,2,39,103,9,0,95,98, -103,103,9,0,220,5,128,255,84,0,10,48,149,13,39,95,1,0,65,90, -103,95,1,0,75,55,255,255,134,0,6,80,22,2,10,88,95,66,150,13, -6,87,0,0,7,95,0,0,65,50,65,58,234,89,242,245,202,86,255,0, -203,94,255,0,171,81,127,0,6,56,6,103,0,0,65,50,224,97,202,253, -6,86,255,255,167,81,127,0,4,0,20,2,6,224,7,232,68,54,0,0, -38,54,96,128,230,233,193,69,68,86,0,0,234,87,87,143,196,82,198,81, -234,233,201,61,221,247,15,0,146,61,29,71,15,0,200,70,3,0,99,66, -178,53,221,215,15,0,130,13,221,239,15,0,210,5,61,63,5,0,125,63, -1,0,221,151,15,0,61,55,5,0,221,175,15,0,224,49,202,29,67,231, -3,0,221,255,13,0,146,13,61,103,12,0,0,58,204,54,255,63,2,66, -128,255,6,8,61,95,12,0,35,62,3,0,203,54,255,63,1,66,128,255, -242,6,97,82,254,13,221,31,15,0,229,5,29,48,191,255,188,252,224,81, -178,5,31,82,245,5,28,48,29,56,191,255,74,253,28,80,138,0,42,2, -4,0,192,25,71,73,70,65,8,80,9,88,127,0,80,26,99,231,5,0, -99,215,13,0,6,224,99,239,1,0,8,208,99,223,9,0,7,232,9,216, -251,233,0,74,202,5,250,225,170,5,1,74,35,215,13,0,35,239,1,0, -35,231,5,0,35,223,9,0,9,80,3,30,16,0,127,0,80,26,99,231, -5,0,99,215,13,0,6,224,99,239,1,0,8,208,99,223,9,0,7,232, -9,216,251,233,1,74,202,5,250,225,170,5,0,74,35,215,13,0,35,239, -1,0,35,231,5,0,35,223,9,0,9,80,3,30,16,0,127,0,80,26, -80,26,192,25,8,80,198,81,230,81,225,95,0,0,201,89,199,89,127,0, -0,2,6,64,7,72,0,50,0,58,128,255,242,1,22,2,7,2,6,224, -7,232,9,48,8,72,224,49,159,21,127,50,246,13,9,6,193,255,207,13, -9,6,63,0,150,13,224,49,186,5,224,73,214,5,127,50,234,5,224,73, -198,5,0,82,0,90,245,37,224,73,202,5,28,80,29,88,165,37,224,73, -158,13,28,48,29,56,128,73,9,64,0,74,128,255,200,2,133,29,9,6, -224,255,134,13,29,80,9,62,224,255,231,87,128,0,0,88,229,13,32,86, -32,0,169,81,29,64,234,71,192,0,233,239,128,0,233,231,128,0,28,65, -8,80,29,88,29,2,24,0,17,2,99,55,17,0,8,208,99,63,21,0, -99,63,9,0,9,216,191,58,35,255,9,0,99,63,13,0,224,249,154,13, -224,217,250,5,35,87,17,0,0,88,250,87,194,2,133,125,64,70,0,128, -224,249,178,13,32,238,63,0,31,88,72,89,138,21,129,66,95,234,224,65, -170,253,181,13,32,238,31,0,35,103,17,0,72,97,218,5,129,66,95,234, -224,65,154,253,27,48,64,70,0,128,224,49,178,13,32,78,63,0,6,56, -72,57,250,13,129,66,95,74,224,65,170,253,165,13,32,78,31,0,26,48, -72,49,218,5,129,66,95,74,224,65,170,253,0,202,0,226,233,233,166,69, -35,103,9,0,99,103,1,0,35,103,17,0,169,233,99,103,5,0,162,13, -29,64,0,72,26,48,27,56,128,255,220,1,10,64,11,72,181,5,26,64, -27,72,9,56,8,48,133,45,28,64,193,226,159,66,193,202,35,111,1,0, -8,201,231,105,251,5,231,105,250,21,35,111,5,0,230,105,177,21,35,111, -5,0,230,105,225,71,0,0,35,111,1,0,199,65,168,105,99,111,1,0, -35,111,5,0,156,230,1,0,166,105,99,111,5,0,7,64,223,66,129,58, -129,50,8,49,95,234,224,233,142,221,28,80,25,88,39,2,24,0,7,2, -6,224,7,232,8,208,9,216,224,233,138,13,224,217,234,5,250,231,194,90, -11,80,0,88,213,21,28,48,29,56,26,64,27,72,191,255,186,254,10,48, -11,56,26,64,27,72,128,255,44,0,28,64,10,224,8,80,188,81,225,63, -0,0,167,233,157,89,29,2,9,2,135,73,232,49,225,63,0,0,167,73, -168,49,6,80,9,88,31,2,80,0,18,2,8,208,218,254,255,255,144,210, -6,224,220,70,255,255,8,48,250,55,34,2,99,55,21,0,9,216,27,48, -198,222,255,255,8,72,255,79,34,2,99,79,17,0,144,50,8,72,230,71, -34,2,251,79,34,2,99,79,25,0,99,71,29,0,144,226,28,72,255,79, -34,2,99,79,33,0,7,232,28,56,250,63,34,2,99,63,37,0,99,7, -45,0,221,54,255,255,6,56,255,63,34,2,99,63,49,0,250,55,34,2, -99,55,53,0,99,7,57,0,99,7,61,0,99,7,69,0,99,7,73,0, -251,231,34,2,99,231,41,0,99,7,77,0,144,234,255,239,34,2,99,239, -65,0,0,226,0,234,29,248,194,250,31,72,195,73,105,231,1,0,0,218, -0,226,245,21,27,56,194,58,29,80,187,81,199,81,194,82,195,81,42,55, -17,0,31,72,6,88,144,90,203,225,195,73,41,63,1,0,198,86,255,255, -202,57,105,63,1,0,65,218,253,217,151,237,195,249,63,87,1,0,65,234, -10,88,202,0,127,87,1,0,144,90,203,225,100,234,198,213,35,63,13,0, -35,95,9,0,208,58,7,89,35,87,5,0,35,55,1,0,208,82,6,81, -40,2,80,0,9,2,6,224,7,232,9,48,224,49,159,21,127,50,246,13, -8,6,193,255,207,13,8,6,63,0,150,13,224,49,186,5,224,65,214,5, -127,50,234,5,224,65,198,5,0,82,0,90,229,37,224,65,202,5,28,80, -29,88,149,37,224,65,142,13,28,48,29,56,128,65,0,74,191,255,164,252, -133,29,28,72,8,6,224,255,134,13,8,70,224,255,232,79,192,0,0,80, -9,88,213,13,32,86,32,0,168,81,234,231,128,0,232,239,192,0,29,225, -28,88,232,79,192,0,9,80,31,2,6,80,198,94,3,0,218,21,39,89, -203,94,3,0,154,21,100,66,241,13,6,96,200,97,130,98,194,98,39,95, -1,0,68,58,102,95,1,0,68,50,230,97,155,253,200,70,3,0,224,65, -178,13,6,96,200,97,7,95,0,0,65,58,70,95,0,0,65,50,230,97, -155,253,127,0,8,72,7,64,88,26,99,239,1,0,136,0,6,232,9,48, -99,231,5,0,221,49,29,230,255,255,9,6,223,255,169,37,8,56,200,58, -8,57,7,88,208,90,11,57,197,5,70,71,255,255,95,50,198,86,15,0, -186,253,16,74,29,80,73,81,149,13,102,63,1,0,102,63,5,0,102,63, -9,0,102,63,13,0,80,50,234,49,234,245,6,54,16,0,181,5,70,71, -0,0,95,50,252,49,202,253,29,80,35,231,5,0,35,239,1,0,72,26, -127,0,3,30,232,255,99,255,21,0,99,231,17,0,99,215,9,0,3,230, -16,0,8,208,99,207,13,0,199,209,6,72,99,239,1,0,9,200,99,223, -5,0,32,238,238,15,0,218,133,69,129,218,219,102,0,1,234,5,135,55, -1,0,65,58,134,222,0,255,219,94,1,0,135,103,1,0,146,13,73,103, -0,0,65,58,65,74,65,234,221,238,255,15,165,45,167,87,1,0,66,58, -202,70,240,0,196,66,8,97,202,86,15,0,67,82,12,48,201,49,189,49, -236,233,191,5,6,54,0,240,0,66,229,5,73,7,0,0,65,50,65,74, -65,66,249,49,185,13,234,65,134,253,133,13,134,95,1,0,73,95,0,0, -65,50,65,74,65,66,234,65,134,253,221,81,202,238,255,15,250,57,138,197, -35,207,13,0,35,215,9,0,35,223,5,0,35,239,1,0,35,255,21,0, -35,231,17,0,3,30,24,0,127,0,3,30,216,255,99,255,37,0,99,231, -33,0,99,239,21,0,3,230,32,0,99,215,29,0,6,232,99,223,25,0, -7,208,8,216,128,255,26,3,68,102,0,0,44,103,89,143,224,97,178,5, -128,255,190,5,68,94,0,0,43,95,93,143,224,89,178,5,191,255,82,248, -68,86,0,0,42,87,97,143,224,81,178,5,191,255,156,206,68,78,0,0, -41,79,101,143,224,73,194,5,0,50,128,255,128,4,68,70,0,0,40,71, -105,143,224,65,242,5,128,255,102,5,42,54,220,0,191,255,114,206,224,233, -234,21,67,7,2,0,67,7,3,0,35,62,2,0,99,63,13,0,99,7, -17,0,35,102,3,0,99,103,5,0,99,7,9,0,35,222,4,0,35,214, -12,0,1,234,68,14,0,0,97,223,245,129,68,94,0,0,43,95,109,143, -224,89,226,5,29,48,26,56,27,64,191,255,38,206,29,48,26,56,27,64, -191,255,120,210,10,48,128,255,136,2,35,215,29,0,35,223,25,0,35,239, -21,0,35,255,37,0,35,231,33,0,3,30,40,0,127,0,88,26,99,255, -5,0,99,231,1,0,8,80,3,224,7,72,9,64,10,72,6,56,38,6, -1,0,4,0,128,255,142,1,35,231,1,0,35,255,5,0,72,26,127,0, -88,26,99,255,5,0,99,231,1,0,8,80,3,224,7,72,9,64,10,72, -6,56,64,54,4,0,128,255,100,1,35,231,1,0,35,255,5,0,72,26, -127,0,3,30,224,255,99,79,29,0,99,255,13,0,99,231,9,0,7,72, -3,230,8,0,201,102,0,1,99,71,25,0,6,56,9,64,194,21,35,86, -16,0,202,86,7,0,99,87,5,0,35,94,27,0,28,98,76,89,68,90, -99,95,1,0,43,79,253,255,38,6,4,0,4,0,197,5,38,6,4,0, -3,0,128,255,4,1,35,255,13,0,35,231,9,0,3,30,32,0,127,0, -88,26,99,255,5,0,99,231,1,0,7,64,3,224,6,56,38,6,6,0, -3,0,128,255,220,0,35,231,1,0,35,255,5,0,72,26,127,0,88,26, -99,255,5,0,99,231,1,0,6,56,3,224,38,6,5,0,2,0,128,255, -184,0,35,231,1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0, -99,231,1,0,8,80,3,224,7,72,9,64,10,72,6,56,38,6,7,0, -4,0,128,255,140,0,35,231,1,0,35,255,5,0,72,26,127,0,88,26, -99,255,5,0,99,231,1,0,6,56,3,224,38,6,8,0,2,0,128,255, -104,0,35,231,1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0, -99,231,1,0,8,80,3,224,7,72,9,64,10,72,6,56,38,6,18,0, -4,0,128,255,60,0,35,231,1,0,35,255,5,0,72,26,127,0,88,26, -99,255,5,0,99,231,1,0,8,80,3,224,7,72,9,64,10,72,6,56, -38,6,19,0,4,0,128,255,16,0,35,231,1,0,35,255,5,0,72,26, -127,0,92,26,99,255,1,0,97,2,0,82,128,255,92,5,217,5,10,48, -128,255,86,0,31,82,35,255,1,0,68,26,127,0,84,26,99,255,9,0, -99,231,5,0,99,239,1,0,3,230,4,0,128,239,4,0,93,102,0,0, -44,102,4,3,224,97,234,5,68,86,0,0,42,86,248,129,245,5,128,255, -238,2,10,48,224,49,170,5,0,80,35,239,1,0,35,255,9,0,35,231, -5,0,76,26,127,0,84,26,99,255,9,0,99,231,5,0,99,239,1,0, -3,230,4,0,6,232,191,255,164,255,10,48,224,49,178,5,102,239,1,0, -35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0,88,26,88,26, -99,255,5,0,99,231,1,0,32,54,16,0,3,224,31,58,191,255,82,255, -35,231,1,0,35,255,5,0,72,26,127,0,4,0,3,30,228,255,99,255, -25,0,99,231,21,0,99,207,17,0,3,230,20,0,99,215,13,0,99,239, -5,0,99,223,9,0,128,239,4,0,99,55,1,0,0,202,128,255,92,2, -68,222,0,0,59,223,137,135,165,13,59,215,1,0,93,254,0,0,63,254, -34,0,122,0,59,223,5,0,224,217,234,245,68,102,0,0,44,103,113,143, -224,97,242,5,128,255,32,2,42,54,220,0,191,255,44,203,35,63,1,0, -2,50,191,255,212,254,25,88,171,0,2,82,75,80,202,54,1,0,98,50, -145,253,128,255,10,2,35,207,17,0,35,215,13,0,35,223,9,0,35,239, -5,0,35,255,25,0,35,231,21,0,3,30,28,0,127,0,84,26,99,255, -9,0,99,231,5,0,99,239,1,0,3,230,4,0,6,232,128,255,208,1, -68,102,0,0,44,103,137,135,125,103,5,0,68,14,0,0,97,239,137,135, -128,255,188,1,35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0, -88,26,99,255,5,0,99,231,1,0,1,50,3,224,191,255,16,255,35,231, -1,0,35,255,5,0,72,26,127,0,80,26,99,255,13,0,99,231,9,0, -99,223,5,0,3,230,8,0,99,239,1,0,6,216,68,238,0,0,128,255, -106,1,61,103,141,135,224,97,61,238,140,135,250,5,68,94,254,255,43,94, -0,96,125,95,1,0,61,55,1,0,68,78,254,255,219,49,41,78,0,96, -230,73,203,13,68,70,255,255,40,70,0,112,232,49,235,5,125,55,1,0, -6,232,187,233,213,5,31,234,12,50,191,255,68,254,128,255,34,1,29,80, -35,223,5,0,35,239,1,0,35,255,13,0,35,231,9,0,3,30,16,0, -127,0,88,26,99,255,5,0,99,231,1,0,6,248,3,224,224,249,202,5, -128,255,228,0,10,248,1,74,9,80,194,82,223,81,106,7,1,0,65,74, -9,6,224,255,135,253,32,78,18,0,1,50,9,96,194,98,223,97,108,55, -1,0,65,74,9,6,232,255,247,245,32,78,29,0,1,50,9,56,194,58, -223,57,103,55,1,0,65,74,9,6,224,255,247,245,35,255,5,0,35,231, -1,0,72,26,127,0,3,30,236,255,99,255,17,0,99,231,13,0,99,215, -9,0,3,230,12,0,99,239,1,0,99,223,5,0,128,239,4,0,6,216, -224,217,199,5,27,6,224,255,183,5,31,82,165,37,128,255,94,0,10,56, -27,48,194,50,6,72,199,73,41,215,1,0,105,218,178,5,224,209,218,5, -27,48,191,255,170,254,133,21,97,210,226,13,68,58,7,70,252,255,199,49, -102,7,253,255,0,58,27,48,93,254,0,0,63,254,80,0,122,0,0,82, -35,215,9,0,35,223,5,0,35,239,1,0,35,255,17,0,35,231,13,0, -3,30,20,0,127,0,88,26,192,25,68,86,0,0,42,86,252,129,127,0, -192,25,127,0,192,25,127,0,192,25,192,25,127,0,192,25,127,0,192,25, -127,0,192,25,31,82,127,0,192,25,127,0,192,25,127,0,88,0,96,0, -106,0,116,0,132,0,142,0,152,0,162,0,172,0,182,0,192,0,240,0, -208,0,218,0,228,0,0,1,246,0,10,1,20,1,30,1,40,1,50,1, -84,1,98,1,114,1,130,1,148,1,164,1,180,1,196,1,212,1,228,1, -244,1,74,1,88,1,104,1,120,1,138,1,154,1,170,1,186,1,202,1, -218,1,234,1,128,7,33,0,224,7,68,1,128,7,33,0,128,7,193,255, -165,13,128,7,33,0,128,7,193,247,213,5,128,7,33,0,128,7,193,243, -240,239,64,0,224,7,68,1,128,7,33,0,128,7,193,241,229,29,128,7, -33,0,128,7,193,240,149,29,128,7,33,0,128,7,193,112,197,21,128,7, -33,0,128,7,193,48,245,13,128,7,33,0,128,7,193,16,165,13,128,7, -33,0,128,7,193,0,213,5,128,7,33,0,128,7,65,0,240,239,64,0, -224,7,68,1,128,7,33,0,128,7,193,255,165,13,128,7,33,0,128,7, -193,247,213,5,128,7,33,0,128,7,193,243,128,7,78,0,128,7,33,0, -213,37,128,7,33,0,128,7,193,240,229,29,128,7,33,0,128,7,193,241, -149,29,128,7,33,0,128,7,193,112,197,21,128,7,33,0,128,7,193,48, -245,13,128,7,33,0,128,7,193,16,165,13,128,7,33,0,128,7,193,0, -213,5,128,7,33,0,128,7,65,0,240,239,64,0,240,87,64,0,234,95, -253,255,171,25,106,0,240,255,64,0,255,103,1,0,204,25,64,6,63,0, -240,103,64,0,236,103,1,0,204,25,64,6,192,255,133,21,240,103,64,0, -236,103,1,0,204,25,64,6,192,247,133,13,240,103,64,0,236,103,1,0, -204,25,64,6,192,243,64,6,63,0,240,103,64,0,236,103,1,0,204,25, -64,6,192,241,133,53,240,103,64,0,236,103,1,0,204,25,64,6,192,240, -133,45,240,103,64,0,236,103,1,0,204,25,64,6,192,112,133,37,240,103, -64,0,236,103,1,0,204,25,64,6,192,48,133,29,240,103,64,0,236,103, -1,0,204,25,64,6,192,16,133,21,240,103,64,0,236,103,1,0,204,25, -64,6,192,0,133,13,240,103,64,0,236,103,1,0,204,25,64,6,64,0, -64,6,63,0,0,0,0,0,127,0,0,0,88,90,129,0,0,0,0,0, -24,0,0,0,124,90,129,0,0,0,0,0,100,7,0,0,116,101,129,0, -124,101,129,0,132,101,129,0,140,101,129,0,148,101,129,0,156,101,129,0, -164,101,129,0,0,102,129,0,8,102,129,0,16,102,129,0,24,102,129,0, -32,102,129,0,40,102,129,0,48,102,129,0,64,102,129,0,72,102,129,0, -80,102,129,0,88,102,129,0,96,102,129,0,104,102,129,0,112,102,129,0, -128,102,129,0,136,102,129,0,144,102,129,0,152,102,129,0,160,102,129,0, -168,102,129,0,176,102,129,0,192,102,129,0,200,102,129,0,208,102,129,0, -216,102,129,0,224,102,129,0,232,102,129,0,240,102,129,0,0,103,129,0, -8,103,129,0,16,103,129,0,24,103,129,0,32,103,129,0,40,103,129,0, -48,103,129,0,64,103,129,0,72,103,129,0,80,103,129,0,88,103,129,0, -96,103,129,0,104,103,129,0,112,103,129,0,168,105,129,0,172,105,129,0, -176,105,129,0,180,105,129,0,184,105,129,0,188,105,129,0,192,105,129,0, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,177,177,177,177,177,177,177,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,238,238,34,34,187,187,85,85,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -102,108,97,115,104,70,105,108,101,46,99,112,112,0,0,0,67,104,101,99, -107,105,110,103,32,102,108,97,115,104,32,109,101,109,111,114,121,32,102,105, -108,101,115,10,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,32,58,32,32,45,45,45,45,45,45,45, -45,45,45,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,10,0,32,110,111,110,101,32,102,111,117,110,100,10,109,97,114,107, -105,110,103,32,108,97,115,116,32,118,97,108,105,100,32,102,105,108,101,46, -46,46,46,0,32,102,111,117,110,100,46,10,76,105,110,107,105,110,103,32, -118,97,108,105,100,32,102,105,108,101,115,46,46,46,46,32,10,0,0,0, -32,68,111,110,101,10,82,101,112,97,105,114,32,99,111,109,112,108,101,116, -101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,10,0,0,0, -10,10,82,101,112,97,105,114,105,110,103,32,116,104,101,32,102,108,97,115, -104,32,102,105,108,101,32,115,121,115,116,101,109,10,0,0,66,97,100,32, -100,105,114,101,99,116,111,114,121,44,32,114,101,112,97,105,114,32,97,98, -111,114,116,101,100,10,0,0,48,120,37,48,56,88,46,48,120,37,48,56, -88,32,58,32,32,48,120,37,48,56,120,32,32,37,54,100,32,40,61,37, -35,120,41,10,0,0,0,0,118,97,108,105,100,97,116,105,111,110,32,102, -97,105,108,101,100,44,32,115,101,97,114,99,104,105,110,103,32,102,111,114, -32,118,97,108,105,100,32,102,105,108,101,115,46,46,46,46,0,0,0,0, -32,82,101,112,97,105,114,32,102,97,105,108,101,100,32,10,0,0,0,0, -86,97,108,105,100,97,116,105,110,103,32,102,108,97,115,104,32,102,105,108, -101,32,115,121,115,116,101,109,46,46,46,46,46,10,115,105,103,110,97,116, -117,114,101,49,46,115,105,103,110,97,116,117,114,101,50,32,58,32,32,97, -100,100,114,101,115,115,32,32,32,32,32,116,111,116,97,108,32,115,105,122, -101,10,0,0,85,110,115,117,112,112,111,114,116,101,100,32,70,108,97,115, -104,70,105,108,101,32,118,101,114,115,105,111,110,32,40,97,100,100,114,61, -48,120,37,88,41,10,0,0,102,108,97,115,104,70,105,108,101,46,99,112, -112,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,70,108,97,115, -104,70,105,108,101,32,118,101,114,115,105,111,110,32,40,97,100,100,114,61, -48,120,37,88,41,10,0,0,66,73,79,83,32,105,109,97,103,101,32,110, -111,116,32,102,111,117,110,100,32,105,110,32,102,108,97,115,104,33,10,0, -70,105,114,109,119,97,114,101,32,105,109,97,103,101,32,110,111,116,32,102, -111,117,110,100,32,105,110,32,102,108,97,115,104,33,10,0,85,110,101,120, -112,101,99,116,101,100,32,108,111,99,97,116,105,111,110,32,111,102,32,70, -105,114,109,119,97,114,101,32,105,110,32,102,108,97,115,104,33,10,0,0, -32,32,32,69,120,112,101,99,116,101,100,32,97,100,100,114,58,32,37,120, -32,32,32,32,65,99,116,117,97,108,32,97,100,100,114,58,32,37,120,10, -0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,115,105,122,101,32, -111,102,32,70,105,114,109,119,97,114,101,32,104,101,97,100,101,114,33,10, -0,0,0,0,32,32,32,69,120,112,101,99,116,101,100,32,115,105,122,101, -58,32,37,120,32,32,32,32,65,99,116,117,97,108,32,115,105,122,101,58, -32,37,120,10,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,108, -111,99,97,116,105,111,110,32,111,102,32,66,73,79,83,32,105,110,32,102, -108,97,115,104,33,10,0,0,85,110,101,120,112,101,99,116,101,100,32,115, -105,122,101,32,111,102,32,66,73,79,83,32,104,101,97,100,101,114,33,10, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,22,128,0, -0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0, -22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0, -0,0,0,0,22,22,128,0,16,0,0,0,8,0,0,0,8,0,0,0, -32,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,11,128,0, -0,0,0,0,40,11,128,0,0,0,0,0,220,10,128,0,0,0,0,0, -228,10,128,0,0,0,0,0,236,10,128,0,0,0,0,0,244,10,128,0, -0,0,0,0,32,11,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -184,11,128,0,0,0,0,0,156,14,128,0,0,0,0,0,220,10,128,0, -0,0,0,0,228,10,128,0,0,0,0,0,236,10,128,0,0,0,0,0, -244,10,128,0,0,0,0,0,32,11,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0, -22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0, -0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,230,15,128,0,0,0,0,0,72,15,128,0, -0,0,0,0,38,15,128,0,0,0,0,0,46,15,128,0,0,0,0,0, -54,15,128,0,0,0,0,0,22,22,128,0,0,0,0,0,62,15,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,22,22,128,0,0,0,0,0, -22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0, -0,0,0,0,22,22,128,0,0,0,0,0,22,22,128,0,0,0,0,0, -22,22,128,0,0,0,0,0,0,0,0,0,0,0,0,0,226,18,128,0, -0,0,0,0,68,18,128,0,0,0,0,0,34,18,128,0,0,0,0,0, -42,18,128,0,0,0,0,0,50,18,128,0,0,0,0,0,22,22,128,0, -0,0,0,0,58,18,128,0,232,3,0,0,0,0,0,0,0,0,0,0, -67,43,43,32,114,117,110,116,105,109,101,32,97,98,111,114,116,0,0,0, -102,114,101,101,105,110,103,32,97,114,114,97,121,32,110,111,116,32,97,108, -108,111,99,97,116,101,100,32,98,121,32,97,110,32,97,114,114,97,121,32, -110,101,119,32,111,112,101,114,97,116,105,111,110,0,0,0,116,101,114,109, -105,110,97,116,101,40,41,32,99,97,108,108,101,100,32,98,121,32,116,104, -101,32,101,120,99,101,112,116,105,111,110,32,104,97,110,100,108,105,110,103, -32,109,101,99,104,97,110,105,115,109,0,0,114,101,116,117,114,110,101,100, -32,102,114,111,109,32,97,32,117,115,101,114,45,100,101,102,105,110,101,100, -32,116,101,114,109,105,110,97,116,101,40,41,32,114,111,117,116,105,110,101, -0,0,0,0,109,97,105,110,40,41,32,99,97,108,108,101,100,32,109,111, -114,101,32,116,104,97,110,32,111,110,99,101,0,0,0,0,97,32,112,117, -114,101,32,118,105,114,116,117,97,108,32,102,117,110,99,116,105,111,110,32, -119,97,115,32,99,97,108,108,101,100,0,0,105,110,118,97,108,105,100,32, -100,121,110,97,109,105,99,32,99,97,115,116,0,0,0,0,105,110,118,97, -108,105,100,32,116,121,112,101,105,100,32,111,112,101,114,97,116,105,111,110, -0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32, -115,116,97,116,105,99,32,111,98,106,101,99,116,32,109,97,114,107,101,100, -32,102,111,114,32,100,101,115,116,114,117,99,116,105,111,110,32,109,111,114, -101,32,116,104,97,110,32,111,110,99,101,0,37,115,58,32,37,115,10,0, -40,110,117,108,108,41,0,0,48,49,50,51,52,53,54,55,56,57,97,98, -99,100,101,102,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70, -40,70,108,111,97,116,105,110,103,32,112,111,105,110,116,32,111,117,116,112, -117,116,32,117,110,115,117,112,112,111,114,116,101,100,32,119,47,45,110,111, -102,108,111,97,116,105,111,32,111,114,32,45,102,110,111,110,101,41,0,44, -32,108,105,110,101,32,0,34,44,32,0,102,105,108,101,32,0,0,0,65, -115,115,101,114,116,105,111,110,32,102,97,105,108,101,100,58,32,0,0,95, -117,110,107,110,111,119,110,32,115,116,114,105,110,103,95,0,0,0,0,95, -78,97,109,101,108,101,115,115,95,0,20,0,2,55,128,0,166,41,128,0, -0,0,0,0,246,53,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -64,48,32,16,68,51,34,17,3,0,24,0,240,23,5,0,173,147,200,40, -240,23,5,0,0,0,128,0,0,226,128,255,4,0,31,232,8,72,7,64, -6,56,97,2,0,82,32,54,20,0,133,255,114,20,1,66,0,74,177,5, -128,7,6,0,0,66,64,38,133,0,36,38,188,23,64,30,150,0,35,30, -240,174,28,10,65,25,4,38,0,64,4,38,0,64,64,46,134,0,37,46, -188,151,64,14,133,0,1,14,188,23,186,5,128,7,6,0,1,240,93,86, -2,0,42,86,20,90,234,167,32,0,128,166,255,0,128,174,255,255,0,178, -0,186,0,194,0,202,0,210,93,54,0,0,38,54,230,0,128,255,216,1, -128,7,0,0,6,80,198,94,3,0,178,5,128,7,56,0,39,89,203,94, -3,0,178,5,128,7,44,0,100,66,185,5,128,7,36,0,6,96,200,97, -130,98,194,98,39,95,1,0,68,58,102,95,1,0,68,50,230,97,179,5, -191,7,240,255,200,70,3,0,224,65,186,5,128,7,28,0,6,96,200,97, -7,95,0,0,65,58,70,95,0,0,65,50,230,97,179,5,191,7,240,255, -127,0,0,0,1,0,0,0,0,0,0,0,84,123,132,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,7,193,0, -7,16,6,72,8,232,194,233,9,224,32,70,238,15,0,50,245,93,129,50, -198,142,0,1,224,137,138,13,65,18,2,134,255,255,144,87,1,0,138,54, -0,255,198,126,1,0,224,121,194,21,65,18,2,118,255,255,142,87,1,0, -65,74,9,110,255,255,10,96,172,0,12,88,139,0,77,95,0,0,8,86, -1,0,202,70,255,15,197,61,65,18,2,142,255,255,145,87,1,0,65,18, -2,134,255,255,144,63,1,0,199,126,240,0,15,112,196,114,14,81,199,110, -15,0,13,62,3,0,8,96,170,97,9,104,172,105,234,65,191,5,13,110, -0,240,0,98,133,13,65,74,9,94,255,255,75,7,0,0,65,106,65,98, -252,105,161,5,245,13,231,97,214,245,197,13,65,74,9,86,255,255,65,106, -13,142,255,255,145,135,1,0,74,135,0,0,65,98,231,97,198,245,7,120, -200,121,207,70,255,15,253,17,154,165,64,6,223,0,8,16,198,17,7,136, -145,0,17,72,6,62,255,255,8,6,223,255,169,45,9,136,200,138,9,128, -16,137,17,120,208,122,15,137,197,5,95,18,66,79,0,0,194,118,15,0, -224,113,170,253,16,106,6,112,77,113,245,13,98,143,1,0,2,102,4,0, -108,143,1,0,2,94,8,0,107,143,1,0,2,86,12,0,106,143,1,0, -80,18,238,17,138,245,2,22,16,0,181,5,66,79,0,0,95,18,231,17, -202,253,6,16,2,80,127,0,142,7,225,243,6,16,99,63,9,0,99,71, -5,0,99,79,1,0,59,6,140,5,128,0,63,6,230,1,128,0,60,6, -136,0,128,0,57,6,144,20,133,0,0,234,31,192,27,184,2,142,16,0, -49,215,1,0,2,134,20,0,48,183,1,0,2,126,24,0,47,79,1,0, -2,118,28,0,46,119,1,0,9,16,186,17,99,7,13,0,35,102,12,0, -12,110,4,0,109,7,1,0,35,86,12,0,10,94,8,0,107,7,1,0, -35,134,12,0,16,142,12,0,113,7,1,0,233,201,177,5,249,113,187,5, -2,232,128,233,233,193,177,5,248,113,251,5,2,80,223,81,10,248,2,80, -220,81,10,224,247,73,235,5,238,185,201,5,246,209,162,5,162,217,238,73, -162,13,26,48,9,56,14,120,169,121,15,64,63,6,24,3,128,0,124,0, -46,6,144,20,133,0,29,224,206,225,45,6,204,20,133,0,29,208,205,209, -133,29,68,226,28,102,252,255,35,86,12,0,10,94,12,0,43,23,1,0, -44,143,1,0,209,17,60,87,1,0,68,226,60,95,1,0,68,226,2,48, -10,56,11,64,191,255,142,254,250,225,138,237,48,6,204,20,133,0,29,224, -208,225,47,6,20,21,133,0,29,208,207,209,46,6,20,21,133,0,29,200, -206,201,133,45,250,225,137,13,35,102,12,0,12,110,12,0,45,23,1,0, -245,5,35,86,12,0,10,94,4,0,43,23,1,0,60,143,1,0,209,17, -68,226,68,226,28,134,252,255,35,118,12,0,14,126,4,0,47,87,1,0, -48,111,1,0,205,81,60,95,1,0,68,226,2,48,10,56,11,64,191,255, -190,252,249,225,138,221,44,6,20,21,133,0,29,224,204,225,43,6,32,21, -133,0,29,208,203,209,165,53,68,226,28,86,252,255,35,134,12,0,16,142, -12,0,49,255,1,0,42,127,1,0,207,249,68,226,28,118,252,255,35,102, -12,0,12,110,4,0,45,207,1,0,46,95,1,0,203,201,68,226,28,86, -252,255,42,199,1,0,64,86,0,0,3,90,106,95,10,248,31,48,25,56, -24,142,15,0,16,122,17,128,79,129,16,64,191,255,76,252,64,86,0,0, -0,90,106,95,10,248,250,225,225,205,46,6,20,21,133,0,29,224,206,225, -45,6,20,21,133,0,29,208,205,209,44,6,20,21,133,0,29,200,204,201, -133,45,250,225,137,13,35,86,12,0,10,94,12,0,43,23,1,0,245,5, -35,134,12,0,16,142,4,0,49,23,1,0,60,127,1,0,207,17,68,226, -68,226,28,118,252,255,35,102,12,0,12,110,4,0,45,87,1,0,46,95, -1,0,203,81,60,95,1,0,68,226,2,48,10,56,11,64,191,255,84,252, -249,225,138,221,42,6,32,21,133,0,29,16,202,17,49,6,116,21,133,0, -29,248,209,249,48,6,116,21,133,0,208,233,226,249,146,77,35,118,12,0, -14,126,12,0,44,6,0,0,0,0,47,95,1,0,12,104,171,105,173,249, -197,61,65,234,29,86,255,255,10,231,0,0,220,142,48,0,17,128,164,130, -16,112,194,114,14,120,35,102,12,0,15,104,204,105,45,103,1,0,68,18, -2,94,252,255,43,87,1,0,12,208,202,209,58,79,1,0,220,142,128,0, -224,137,178,5,224,73,178,29,220,134,3,0,16,112,194,114,14,120,35,102, -12,0,15,104,204,105,45,103,1,0,224,97,226,13,220,94,8,0,224,89, -162,5,194,74,204,73,220,86,8,0,224,81,162,5,162,74,122,79,1,0, -255,17,202,197,35,55,9,0,35,63,5,0,35,71,1,0,63,6,136,5, -128,0,123,0,78,6,255,243,128,7,225,0,6,232,7,224,37,143,21,128, -224,137,178,5,130,255,236,1,37,135,25,128,224,129,178,5,130,255,14,58, -37,127,29,128,224,121,178,5,191,255,76,250,37,119,33,128,224,113,194,5, -0,50,130,255,100,83,29,48,28,104,13,56,128,255,178,2,64,6,255,0, -128,7,225,0,6,232,7,224,224,233,226,13,61,143,1,0,224,137,210,5, -125,7,1,0,128,255,108,0,129,226,201,5,29,48,130,255,134,22,64,6, -255,0,132,7,97,0,7,16,8,56,32,71,37,183,40,71,41,0,6,72, -99,23,1,0,38,6,84,123,132,0,130,255,66,28,196,255,144,140,170,29, -196,63,144,140,0,50,129,255,102,171,1,138,99,143,5,0,31,50,128,255, -42,0,61,6,128,29,148,0,29,48,31,58,128,255,36,0,224,81,186,253, -35,54,4,0,2,58,191,255,130,255,133,5,33,6,2,99,0,0,97,0, -33,6,26,99,0,0,97,0,33,6,120,191,1,0,97,0,128,7,225,0, -0,226,64,22,134,0,34,238,144,142,125,7,1,0,29,54,4,0,0,58, -32,70,124,0,191,255,90,251,125,7,26,0,65,226,29,238,128,0,28,6, -216,255,134,245,32,142,40,0,100,143,93,134,100,7,97,134,100,7,101,134, -64,6,255,0,3,30,216,255,99,79,37,0,99,255,21,0,99,239,9,0, -99,231,13,0,99,223,17,0,6,224,252,0,7,216,99,71,33,0,35,142, -32,0,99,143,1,0,35,134,24,0,208,126,7,0,99,127,5,0,32,54, -255,0,130,255,114,21,10,232,29,48,35,79,5,0,35,71,1,0,27,56, -130,255,106,38,229,87,64,0,224,7,96,1,10,216,29,48,28,56,128,255, -66,0,196,231,144,140,242,5,32,110,0,16,64,14,32,0,97,111,20,0, -251,47,32,0,29,48,130,255,22,21,35,223,17,0,35,231,13,0,35,239, -9,0,35,255,21,0,3,30,40,0,127,0,71,7,0,0,71,7,1,0, -2,82,127,0,128,7,225,240,231,0,36,215,33,175,7,216,26,64,6,192, -38,6,120,123,132,0,130,255,242,26,229,87,64,0,224,7,96,1,36,135, -101,134,10,200,16,6,216,255,158,21,36,127,93,134,65,122,100,127,93,134, -15,6,216,255,182,5,100,7,93,134,36,119,101,134,65,114,100,119,101,134, -181,5,32,222,255,0,36,231,93,134,43,6,144,142,133,0,199,226,203,225, -60,238,4,0,29,48,0,58,32,70,124,0,191,255,38,250,29,48,27,56, -24,64,32,78,124,0,128,255,40,246,156,143,5,0,17,6,143,255,210,13, -32,134,113,0,92,135,4,0,28,127,29,0,24,146,82,121,143,126,4,0, -92,127,29,0,124,215,1,0,249,47,32,0,64,6,255,240,128,7,225,16, -6,224,229,87,64,0,224,7,96,1,10,216,36,143,101,134,32,70,124,0, -224,137,167,37,36,239,97,134,60,54,4,0,199,234,46,6,144,142,133,0, -206,233,61,62,4,0,191,255,86,248,61,111,1,0,36,103,97,134,124,111, -1,0,65,98,100,103,97,134,12,6,216,255,182,5,100,7,97,134,36,95, -101,134,95,90,100,95,101,134,213,13,60,54,4,0,0,58,191,255,130,249, -124,7,26,0,10,82,92,87,11,0,124,7,1,0,251,47,32,0,64,6, -255,16,128,7,225,16,6,232,189,0,7,224,188,0,130,255,170,23,29,48, -28,56,128,255,130,12,128,255,174,0,129,255,6,3,10,216,129,255,130,165, -224,217,194,5,27,48,128,255,118,19,38,6,60,126,132,0,130,255,168,25, -59,6,204,125,132,0,27,48,130,255,156,25,37,54,36,128,130,255,148,25, -38,6,112,126,132,0,130,255,138,25,38,6,252,125,132,0,32,62,23,0, -32,70,24,0,130,255,120,25,38,6,28,126,132,0,1,58,9,66,130,255, -106,25,38,6,148,126,132,0,39,6,220,125,132,0,40,6,176,126,132,0, -130,255,84,25,38,6,232,125,132,0,130,255,74,25,28,56,29,64,38,6, -188,126,132,0,130,255,60,25,37,54,36,128,130,255,52,25,27,48,130,255, -46,25,37,54,36,128,130,255,38,25,129,255,218,230,0,82,64,6,255,16, -33,6,38,102,0,0,97,0,128,7,33,0,196,223,144,140,138,21,32,54, -128,0,128,255,184,1,224,81,162,13,38,6,92,127,132,0,32,62,79,0, -0,66,191,255,144,252,224,81,64,6,63,0,140,7,97,0,49,6,128,112, -96,80,48,6,136,119,102,85,99,135,5,0,99,143,1,0,196,223,144,140, -170,69,32,126,0,1,64,14,32,0,97,127,12,0,3,48,129,255,224,12, -10,232,224,233,130,53,29,48,128,255,168,0,196,199,144,140,162,13,38,6, -208,127,132,0,39,6,224,70,133,0,130,255,150,24,197,45,29,62,24,0, -0,50,64,70,1,0,128,255,52,1,10,232,224,233,202,13,38,6,236,127, -132,0,39,6,224,70,133,0,130,255,112,24,196,7,144,140,245,21,29,48, -128,255,160,243,29,56,10,64,38,6,104,127,132,0,130,255,86,24,197,13, -38,6,136,127,132,0,130,255,74,24,229,5,38,6,160,127,132,0,130,255, -62,24,32,86,0,1,64,14,32,0,97,87,14,0,229,87,64,0,224,7, -96,1,10,232,64,86,0,0,10,87,34,241,10,248,32,86,191,255,74,249, -64,86,0,0,74,255,34,241,253,47,32,0,76,6,127,0,6,72,40,6, -224,70,133,0,6,62,244,1,8,54,16,0,213,77,9,80,37,94,40,128, -4,98,10,111,0,0,11,119,0,0,65,82,65,90,13,16,174,17,218,5, -224,105,178,5,95,98,202,245,224,17,154,61,68,74,9,16,2,119,0,0, -65,18,224,113,202,253,95,18,169,17,242,45,201,17,2,94,1,0,37,102, -44,128,4,106,11,119,0,0,12,87,0,0,65,90,65,98,14,16,170,17, -218,5,224,113,178,5,95,106,202,245,224,17,170,29,32,86,16,0,8,16, -9,88,11,135,0,0,66,135,0,0,65,90,65,18,224,129,186,5,95,18, -181,5,95,82,218,245,224,81,226,5,66,7,0,0,65,18,95,82,202,253, -70,7,0,0,65,74,231,73,177,181,127,0,6,88,33,6,182,68,1,0, -97,0,33,6,98,37,0,0,97,0,128,7,33,0,224,49,210,5,129,58, -185,5,130,255,86,17,64,6,63,0,128,7,33,0,38,6,152,175,138,0, -39,6,136,129,132,0,1,66,129,255,154,29,64,6,63,0,156,7,225,0, -6,232,99,7,17,0,99,7,21,0,99,7,24,0,35,126,36,0,99,127, -13,0,32,134,17,0,99,135,33,0,99,7,30,0,128,255,182,1,106,7, -9,0,46,6,36,64,1,0,106,119,5,0,32,110,236,176,106,111,29,0, -32,102,0,16,106,103,33,0,32,94,232,3,106,95,21,0,99,87,9,0, -0,226,221,207,6,0,194,29,189,79,5,0,99,79,26,0,29,48,0,58, -35,70,36,0,128,255,104,1,97,82,146,13,38,6,152,129,132,0,32,62, -134,0,0,66,191,255,54,250,12,50,12,58,35,70,8,0,128,255,64,1, -65,226,61,239,13,0,224,233,250,221,224,225,215,61,61,6,152,175,138,0, -29,48,31,58,191,255,120,250,224,81,186,253,35,239,9,0,229,87,64,0, -224,7,96,1,61,255,0,0,220,249,125,255,0,0,10,224,252,47,32,0, -224,249,138,13,29,48,61,135,5,0,63,6,38,12,128,0,112,0,31,122, -99,127,1,0,32,54,236,176,32,62,0,16,1,66,35,78,4,0,128,255, -242,0,38,6,152,175,138,0,128,255,240,0,224,81,162,13,38,6,168,129, -132,0,32,62,183,1,0,66,191,255,166,249,224,81,35,55,9,0,38,239, -12,0,102,7,0,0,128,255,210,0,29,80,92,6,255,0,128,7,225,16, -36,239,77,139,61,239,0,0,224,233,210,5,29,48,128,255,154,15,229,45, -229,87,64,0,224,7,96,1,10,216,0,50,128,255,208,135,10,224,38,6, -180,129,132,0,130,255,184,21,28,48,3,58,128,255,28,137,10,232,224,233, -210,5,29,48,128,255,104,15,181,5,128,255,134,0,224,225,242,13,60,23, -49,0,3,58,72,18,34,87,0,0,34,103,5,0,220,81,10,48,63,6, -226,12,128,0,108,0,251,47,32,0,224,233,210,5,196,31,144,140,128,255, -94,0,29,80,64,6,255,16,128,7,33,0,50,6,180,175,138,0,114,7, -1,0,38,6,0,71,133,0,130,255,46,20,64,6,63,0,33,6,28,11, -0,0,97,0,33,6,240,40,0,0,97,0,33,6,206,63,1,0,97,0, -33,6,230,192,1,0,97,0,33,6,66,192,1,0,97,0,33,6,186,206, -1,0,97,0,33,6,210,77,1,0,97,0,33,6,8,78,1,0,97,0, -132,7,225,48,7,224,0,18,28,6,240,255,241,5,252,22,120,4,45,6, -184,29,148,0,205,17,2,232,224,233,186,5,128,7,164,1,0,82,28,6, -240,255,177,13,252,22,40,0,32,134,160,180,208,17,34,127,17,0,224,121, -162,5,2,80,10,208,224,209,186,5,128,7,126,1,58,223,17,0,224,217, -186,5,128,7,114,1,59,23,105,0,63,6,198,13,128,0,2,22,80,0, -34,87,0,0,34,119,5,0,219,81,10,48,110,0,224,81,186,5,221,151, -0,0,59,23,105,0,3,56,2,22,64,1,34,87,0,0,34,111,5,0, -219,81,10,48,63,6,236,13,128,0,109,0,35,103,1,0,10,16,224,97, -194,45,224,17,250,29,132,23,21,139,224,17,130,21,221,215,0,0,210,13, -1,82,93,87,4,0,221,151,0,0,47,6,49,144,145,0,207,225,92,87, -0,0,245,21,157,111,5,0,224,105,178,21,224,17,154,21,93,7,4,0, -221,23,0,0,197,13,157,95,5,0,224,89,130,13,221,215,0,0,218,5, -93,7,4,0,221,23,0,0,221,215,0,0,130,69,221,215,2,0,218,61, -59,23,105,0,0,226,2,22,96,0,34,55,0,0,34,87,5,0,219,49, -63,6,116,14,128,0,106,0,224,81,194,5,221,47,1,0,1,226,125,7, -17,0,93,7,20,0,93,7,21,0,93,7,22,0,31,82,125,87,9,0, -125,87,13,0,93,7,23,0,99,7,5,0,61,54,40,4,26,56,28,64, -35,78,4,0,128,255,146,0,35,127,5,0,36,119,57,139,128,121,207,113, -100,119,57,139,26,48,128,255,132,0,197,82,125,87,117,4,125,7,113,4, -221,215,0,0,250,21,221,215,2,0,194,21,26,48,128,255,112,0,99,7, -5,0,61,54,40,4,0,58,35,70,4,0,128,255,102,0,35,103,5,0, -36,111,57,139,204,105,100,111,57,139,253,23,1,0,253,87,3,0,234,17, -226,5,125,23,2,0,29,48,128,255,34,0,68,6,255,48,132,135,13,139, -240,142,100,0,100,143,17,139,127,0,128,7,33,0,128,255,48,0,64,6, -63,0,33,6,18,43,0,0,97,0,33,6,54,189,1,0,97,0,33,6, -204,135,1,0,97,0,33,6,4,130,1,0,97,0,33,6,198,189,1,0, -97,0,33,6,94,147,1,0,97,0,128,7,193,16,6,224,7,232,229,87, -64,0,224,7,96,1,60,143,8,0,10,216,224,137,170,13,124,239,5,0, -124,239,1,0,125,239,17,0,125,239,21,0,181,21,60,119,5,0,125,119, -21,0,60,111,5,0,109,239,17,0,60,103,1,0,125,103,17,0,60,95, -1,0,107,239,21,0,124,239,5,0,60,87,8,0,65,82,124,87,8,0, -251,47,32,0,64,6,223,16,128,7,225,0,6,232,7,248,229,87,64,0, -224,7,96,1,61,143,8,0,10,224,224,137,170,13,38,6,72,131,132,0, -32,62,115,6,0,66,191,255,16,246,181,37,61,135,5,0,61,23,1,0, -240,17,127,23,1,0,234,5,125,7,5,0,125,7,1,0,149,21,61,111, -1,0,45,111,17,0,61,95,5,0,125,111,1,0,109,95,21,0,61,87, -5,0,61,143,1,0,106,143,17,0,61,135,8,0,95,130,125,135,8,0, -252,47,32,0,61,127,8,0,224,121,174,13,38,6,72,131,132,0,32,62, -153,6,0,66,191,255,174,245,224,81,64,6,255,0,128,7,225,16,7,224, -6,232,61,143,8,0,59,6,88,131,132,0,97,138,254,5,27,48,32,62, -176,6,0,66,191,255,134,245,229,87,64,0,224,7,96,1,10,248,61,23, -1,0,61,95,5,0,226,225,250,29,235,17,138,29,125,7,1,0,61,119, -8,0,125,7,5,0,95,114,125,119,8,0,255,47,32,0,61,111,8,0, -224,105,174,53,27,48,32,62,197,6,0,66,191,255,66,245,224,81,165,45, -60,103,17,0,125,103,1,0,245,5,235,225,218,5,60,87,21,0,125,87, -5,0,60,135,17,0,60,143,21,0,61,111,8,0,113,135,17,0,95,106, -60,127,17,0,60,119,21,0,125,111,8,0,111,119,21,0,255,47,32,0, -61,103,8,0,224,97,142,13,27,48,32,62,224,6,0,66,191,255,238,244, -224,81,64,6,255,16,49,6,60,180,138,0,100,143,33,139,100,7,29,139, -0,18,226,126,12,0,44,6,60,180,138,0,204,121,12,118,12,0,2,104, -236,111,64,2,206,105,111,111,9,0,111,7,5,0,111,7,1,0,65,18, -2,6,1,248,182,237,226,86,12,0,204,81,106,7,9,0,106,7,5,0, -106,7,1,0,127,0,128,7,193,16,6,216,7,224,229,87,64,0,224,7, -96,1,10,232,133,21,224,225,162,13,229,87,64,0,224,135,96,1,229,87, -64,0,224,7,96,1,213,5,253,47,32,0,0,82,213,21,36,143,33,139, -224,137,226,237,36,231,33,139,36,127,29,139,60,135,9,0,65,122,100,135, -33,139,100,127,29,139,253,47,32,0,124,223,1,0,28,80,64,6,223,16, -128,7,97,0,6,232,224,233,154,13,38,6,104,131,132,0,32,62,103,7, -0,66,191,255,32,244,229,87,64,0,224,7,96,1,36,23,33,139,10,248, -125,23,9,0,36,143,29,139,100,239,33,139,95,138,100,143,29,139,255,47, -32,0,64,6,127,0,128,7,225,16,6,216,7,232,8,224,224,233,154,13, -38,6,136,131,132,0,32,62,148,7,0,66,191,255,218,243,59,23,1,0, -224,17,178,21,224,225,194,5,60,23,9,0,213,5,34,231,5,0,123,239, -1,0,125,231,5,0,124,239,9,0,125,23,9,0,98,239,5,0,245,5, -125,239,9,0,125,239,5,0,123,239,1,0,64,6,255,16,128,7,225,0, -7,224,60,63,1,0,6,232,128,255,88,0,29,48,28,56,10,64,191,255, -144,255,64,6,255,0,128,7,97,0,38,143,1,0,1,234,241,57,186,13, -39,23,9,0,226,57,218,5,102,7,1,0,0,234,181,5,102,23,1,0, -39,23,5,0,39,87,9,0,106,23,5,0,39,87,5,0,39,23,9,0, -106,23,9,0,7,48,191,255,10,255,29,80,64,6,127,0,38,87,1,0, -224,81,10,16,210,29,34,95,1,0,39,127,13,0,43,103,9,0,43,111, -13,0,39,119,9,0,239,105,177,13,187,5,238,97,131,13,234,17,186,5, -0,82,181,13,34,87,5,0,133,13,34,23,9,0,234,17,250,229,34,23, -5,0,2,80,127,0,38,87,1,0,224,81,10,16,162,13,34,143,1,0, -231,137,226,5,34,23,9,0,234,17,154,253,0,18,2,80,127,0,130,7, -225,243,6,224,7,200,0,194,0,186,0,234,229,87,64,0,224,7,96,1, -10,176,60,223,1,0,99,7,1,0,224,217,186,5,128,7,70,1,28,48, -25,56,191,255,110,255,10,56,7,48,224,57,218,5,27,16,195,15,0,0, -245,5,39,23,9,0,251,17,186,5,195,23,0,0,57,223,13,0,57,71, -24,0,57,215,9,0,8,72,191,74,218,65,225,111,0,0,205,73,219,73, -195,207,0,0,178,13,245,45,60,103,1,0,236,57,202,5,195,15,0,0, -133,13,39,63,5,0,39,87,1,0,202,207,42,0,178,245,195,207,0,0, -234,29,42,103,9,0,42,111,13,0,42,87,24,0,10,120,191,122,204,81, -225,135,0,0,208,121,205,121,239,217,219,13,177,5,234,209,169,13,65,234, -221,0,7,192,7,184,195,15,0,0,195,7,0,0,181,5,195,15,0,0, -195,215,0,0,154,53,34,87,1,0,202,207,42,0,186,21,213,5,60,95, -1,0,235,17,130,13,34,23,9,0,34,87,1,0,202,207,42,0,226,245, -60,87,1,0,234,17,186,5,195,23,0,0,195,215,0,0,250,21,34,103, -1,0,44,95,13,0,44,87,9,0,235,73,209,13,187,5,234,65,163,13, -2,184,224,233,170,5,2,192,65,234,221,0,195,7,0,0,181,5,195,23, -0,0,34,23,9,0,195,207,0,0,194,5,195,215,0,0,218,5,60,127, -1,0,239,17,138,149,32,142,124,176,113,239,0,0,92,138,113,55,1,0, -32,142,112,176,113,199,1,0,68,138,113,191,1,0,1,114,64,119,126,176, -246,47,32,0,3,87,0,0,202,86,1,0,66,6,255,243,128,7,128,7, -128,7,33,0,224,49,210,5,129,58,185,5,130,255,196,7,64,6,63,0, -128,7,97,0,128,255,72,0,10,16,224,17,186,5,1,234,213,13,0,234, -2,6,226,255,146,13,38,6,12,133,132,0,32,62,39,1,0,66,191,255, -24,241,29,80,64,6,127,0,128,7,33,0,50,6,184,228,140,0,114,7, -1,0,38,6,24,71,133,0,130,255,54,12,64,6,63,0,33,6,20,199, -1,0,97,0,128,7,97,0,6,232,189,0,68,239,80,139,167,0,68,63, -81,139,0,50,128,255,74,0,196,191,144,140,99,234,210,5,100,7,141,140, -100,7,144,140,64,6,127,0,128,7,97,0,6,232,189,0,68,239,80,139, -224,233,226,55,0,0,128,255,32,0,98,234,146,13,99,234,154,13,36,127, -141,140,65,122,100,127,141,140,181,5,100,7,141,140,64,6,127,0,4,135, -144,140,32,150,239,255,82,129,198,126,1,0,196,122,15,129,68,135,144,140, -224,49,194,5,32,118,0,4,181,5,32,118,0,1,50,6,20,0,32,0, -114,119,0,0,127,0,144,7,225,16,0,226,0,50,128,255,208,40,172,82, -10,232,1,50,128,255,198,40,140,82,196,82,10,233,68,239,82,139,36,102, -8,132,12,54,4,0,29,64,168,0,37,62,88,128,130,255,44,23,38,6, -164,133,132,0,36,62,8,132,130,255,124,12,4,87,82,139,10,6,240,255, -166,5,1,226,32,62,36,244,99,63,1,0,32,70,4,244,99,71,5,0, -3,122,99,127,9,0,0,50,5,74,129,255,68,11,100,87,73,139,10,64, -0,50,32,62,80,0,129,255,2,164,100,87,77,139,10,48,129,255,54,164, -10,232,224,233,130,29,59,6,120,133,132,0,27,48,130,255,38,12,29,6, -192,253,250,5,38,6,184,133,132,0,130,255,22,12,229,5,38,6,104,133, -132,0,130,255,10,12,27,48,130,255,4,12,0,50,191,255,20,255,128,255, -24,248,128,255,238,4,38,6,238,238,34,34,129,255,86,47,38,6,153,153, -119,119,129,255,76,47,28,48,128,255,186,39,128,255,254,39,128,255,194,39, -36,95,77,139,43,95,0,0,224,89,186,29,191,255,172,246,0,234,165,21, -99,239,21,0,99,239,25,0,64,86,1,0,99,87,29,0,35,54,12,0, -32,62,128,0,0,66,128,255,208,39,93,238,1,0,128,255,128,39,234,233, -198,237,181,5,191,255,128,246,191,255,124,242,128,255,104,0,80,6,255,16, -128,7,33,0,36,63,169,172,38,6,68,134,132,0,130,255,114,11,36,63, -141,140,38,6,224,133,132,0,130,255,100,11,32,63,225,176,38,6,244,133, -132,0,130,255,86,11,128,255,136,39,10,56,38,6,8,134,132,0,130,255, -70,11,32,63,53,176,38,6,28,134,132,0,130,255,56,11,128,255,114,39, -10,56,38,6,48,134,132,0,130,255,40,11,64,6,63,0,128,7,33,0, -68,7,84,139,38,6,204,204,68,68,129,255,124,46,128,255,12,39,128,255, -80,39,128,255,220,38,128,255,200,38,128,255,76,39,129,255,14,157,128,255, -76,39,128,255,80,39,128,255,84,39,128,255,88,39,128,255,236,38,128,255, -240,38,128,255,84,39,191,255,172,243,129,255,98,162,191,255,230,238,129,255, -172,139,128,255,254,169,128,255,38,163,128,255,90,62,128,255,254,61,128,255, -56,39,129,255,130,167,129,255,86,118,128,255,40,192,128,255,160,38,0,18, -2,136,193,138,46,6,188,228,140,0,206,137,32,102,160,5,226,103,32,2, -113,103,0,0,65,18,103,18,166,245,3,82,100,87,86,139,38,6,255,255, -17,17,129,255,228,45,38,6,187,187,85,85,129,255,218,45,64,6,63,0, -136,7,225,0,198,0,224,49,146,21,228,119,69,139,6,113,100,119,68,139, -32,54,236,176,100,7,241,131,32,62,16,0,0,66,128,255,92,38,128,7, -106,1,35,54,3,0,35,62,4,0,129,255,180,167,36,239,241,131,10,16, -228,111,69,139,99,111,14,0,32,86,60,0,234,23,194,2,29,6,237,255, -154,13,2,102,5,0,32,86,96,39,234,103,128,90,100,95,237,131,29,6, -237,255,167,45,36,127,237,131,99,7,14,0,162,121,106,122,183,5,100,7, -237,131,0,98,12,112,193,114,43,6,188,228,140,0,203,113,36,87,237,131, -46,95,0,0,235,81,175,13,235,17,134,13,228,143,87,139,227,127,15,0, -17,121,99,127,14,0,65,98,103,98,150,237,227,119,15,0,224,113,194,5, -0,234,100,7,241,131,29,6,237,255,239,5,38,6,104,134,132,0,130,255, -162,9,29,6,240,255,190,21,29,56,38,6,140,134,132,0,130,255,144,9, -227,111,15,0,99,111,8,0,35,22,8,0,34,63,1,0,29,48,128,255, -166,0,165,53,29,6,237,255,222,21,29,230,240,255,28,56,38,6,88,134, -132,0,130,255,98,9,227,103,15,0,99,103,12,0,35,22,12,0,34,63, -1,0,28,48,128,255,200,1,181,29,29,6,237,255,234,5,38,6,116,134, -132,0,130,255,58,9,229,87,64,0,224,7,96,1,36,95,241,131,10,248, -235,233,250,5,29,86,1,0,100,87,241,131,100,7,68,139,255,47,32,0, -229,29,229,87,64,0,224,7,96,1,36,143,241,131,10,248,241,233,202,13, -29,134,1,0,100,135,241,131,227,127,15,0,228,111,69,139,15,105,100,111, -68,139,255,47,32,0,32,54,236,176,32,62,16,0,0,66,128,255,242,36, -72,6,255,0,3,30,208,255,99,63,37,0,99,255,29,0,99,215,25,0, -99,223,21,0,99,231,17,0,99,239,13,0,6,224,128,255,138,161,224,81, -138,13,38,6,224,134,132,0,130,255,168,8,128,7,6,1,0,234,1,210, -28,48,0,58,0,66,3,72,128,255,26,37,10,216,28,48,27,56,128,255, -88,36,59,143,0,0,224,137,218,253,59,135,12,0,224,129,234,5,227,127, -3,0,224,121,170,5,0,210,123,7,0,0,27,48,191,255,70,243,195,199, -36,0,146,37,28,48,128,255,232,36,10,232,224,233,234,13,28,48,128,255, -254,160,10,64,28,72,32,54,34,0,39,6,244,134,132,0,191,255,148,236, -149,13,29,6,255,239,226,5,38,6,176,134,132,0,130,255,42,8,29,6, -255,239,138,13,0,234,229,5,38,6,152,134,132,0,130,255,22,8,224,209, -130,53,4,95,84,139,224,89,202,45,195,207,36,0,242,29,224,233,218,29, -28,48,128,255,144,36,10,232,29,6,160,253,138,13,28,64,15,50,37,62, -96,128,191,255,62,236,197,21,224,233,250,5,38,6,8,135,132,0,130,255, -214,7,197,13,38,6,200,134,132,0,130,255,202,7,229,5,38,6,32,135, -132,0,130,255,190,7,32,54,244,1,129,255,172,218,229,5,38,6,56,135, -132,0,130,255,170,7,37,54,104,128,130,255,162,7,35,215,25,0,35,223, -21,0,35,231,17,0,35,239,13,0,35,255,29,0,3,30,48,0,127,0, -3,30,236,255,99,63,9,0,99,255,1,0,97,50,209,5,194,13,98,50, -194,37,165,45,38,6,112,135,132,0,130,255,102,7,129,255,114,118,165,37, -195,231,8,0,162,21,38,6,152,135,132,0,130,255,80,7,31,50,191,255, -78,235,128,255,228,35,191,255,62,235,32,54,244,1,129,255,48,218,229,13, -38,6,128,135,132,0,130,255,46,7,133,13,38,6,168,135,132,0,130,255, -34,7,129,255,88,118,37,54,106,128,130,255,22,7,35,255,1,0,3,30, -20,0,127,0,128,7,97,0,128,255,182,242,10,232,128,255,248,242,10,72, -9,16,133,85,2,88,37,102,108,128,4,106,65,90,11,119,255,255,65,98, -12,127,255,255,14,80,175,81,218,5,224,113,178,5,95,106,202,245,224,81, -202,61,68,18,2,80,65,82,10,119,255,255,224,113,202,253,95,82,162,81, -162,53,194,81,10,102,1,0,37,110,112,128,4,114,65,98,12,127,255,255, -65,106,13,87,255,255,15,88,170,89,218,5,224,121,178,5,95,114,202,245, -224,89,218,29,32,94,16,0,36,86,244,131,65,18,2,135,255,255,65,82, -74,135,255,255,224,129,186,5,95,82,181,5,95,90,218,245,224,89,226,5, -65,82,74,7,255,255,95,90,202,253,36,22,244,131,66,7,16,0,229,5, -65,18,29,112,201,113,238,17,225,173,38,6,180,135,132,0,36,62,244,131, -130,255,68,6,64,6,127,0,190,7,225,243,3,30,208,255,230,0,61,6, -12,72,133,0,61,198,120,255,0,218,27,16,195,18,216,17,34,23,0,0, -226,49,210,5,65,218,27,6,239,255,230,245,27,6,239,255,170,5,95,218, -32,54,16,0,130,255,68,0,10,224,224,225,146,13,35,142,3,0,99,143, -5,0,28,48,0,58,128,255,120,8,32,86,232,3,3,18,67,23,148,0, -67,23,164,0,67,23,156,0,99,87,169,0,32,22,44,1,99,23,153,0, -32,86,88,2,2,18,67,23,140,0,99,87,161,0,32,22,100,0,99,23, -145,0,67,7,132,0,60,95,5,0,99,23,137,0,224,89,186,5,0,18, -213,5,60,23,9,0,171,17,163,18,224,89,186,5,0,82,213,5,60,87, -13,0,171,81,163,82,60,215,9,0,234,17,169,37,99,215,25,0,26,200, -1,186,229,21,25,16,224,17,146,21,224,17,250,5,8,50,129,255,172,255, -10,16,224,17,146,13,3,87,164,0,66,87,0,0,35,87,169,0,98,87, -5,0,95,186,72,202,224,185,170,237,26,22,8,0,124,23,9,0,213,61, -99,215,13,0,35,102,12,0,60,87,5,0,99,103,21,0,224,81,186,5, -0,18,213,5,60,23,9,0,170,17,163,18,224,17,186,5,0,210,245,13, -60,87,5,0,99,87,17,0,35,215,21,0,35,86,16,0,42,127,1,0, -58,215,1,0,175,209,163,210,35,119,21,0,28,48,46,119,1,0,35,62, -16,0,99,119,17,0,1,66,35,78,164,0,128,255,212,17,60,87,5,0, -99,87,17,0,35,22,16,0,34,95,1,0,195,210,203,209,99,215,9,0, -27,200,195,202,25,16,216,17,34,215,5,0,10,82,74,208,0,186,128,7, -242,1,60,95,5,0,224,89,186,5,0,18,213,5,60,23,9,0,171,17, -163,18,224,89,186,5,0,82,213,5,60,87,13,0,171,81,163,82,60,223, -9,0,234,17,169,45,99,223,45,0,27,176,1,154,99,159,129,0,165,29, -22,16,224,17,146,21,224,17,250,5,8,50,129,255,172,254,10,16,224,17, -146,13,3,87,132,0,66,87,0,0,35,87,137,0,98,87,5,0,35,159, -129,0,72,178,95,154,99,159,129,0,35,159,129,0,224,153,202,229,27,22, -8,0,124,23,9,0,213,61,99,223,33,0,35,110,32,0,60,87,5,0, -99,111,41,0,224,81,186,5,0,18,213,5,60,23,9,0,170,17,163,18, -224,17,186,5,0,218,245,13,60,87,5,0,99,87,37,0,35,223,41,0, -35,86,36,0,42,135,1,0,59,223,1,0,176,217,163,218,35,127,41,0, -28,48,47,127,1,0,35,62,36,0,99,127,37,0,1,66,35,78,132,0, -128,255,200,16,60,87,5,0,99,87,37,0,35,22,36,0,34,103,1,0, -195,218,204,217,99,223,29,0,60,95,5,0,224,89,186,5,0,18,213,5, -60,23,9,0,171,17,163,18,224,89,186,5,0,82,213,5,60,87,13,0, -171,81,163,82,60,223,9,0,234,17,169,45,99,223,65,0,27,176,1,154, -99,159,129,0,165,29,22,16,224,17,146,21,224,17,250,5,8,50,129,255, -182,253,10,16,224,17,146,13,3,87,148,0,66,87,0,0,35,87,153,0, -98,87,5,0,35,159,129,0,72,178,95,154,99,159,129,0,35,159,129,0, -224,153,202,229,27,22,8,0,124,23,9,0,213,61,99,223,53,0,35,126, -52,0,60,87,5,0,99,127,61,0,224,81,186,5,0,18,213,5,60,23, -9,0,170,17,163,18,224,17,186,5,0,218,245,13,60,87,5,0,99,87, -57,0,35,223,61,0,35,86,56,0,42,87,1,0,59,223,1,0,170,217, -163,218,35,143,61,0,28,48,49,143,1,0,35,62,56,0,99,143,57,0, -1,66,35,78,148,0,128,255,210,15,60,87,5,0,99,87,57,0,35,22, -56,0,34,119,1,0,195,218,206,217,99,223,49,0,65,186,250,185,190,5, -191,7,14,254,224,209,194,117,60,95,5,0,224,89,186,5,0,18,213,5, -60,23,9,0,171,17,163,18,224,89,186,5,0,82,213,5,60,87,13,0, -171,81,163,82,60,223,9,0,234,17,169,37,99,223,85,0,27,208,1,186, -229,21,26,16,224,17,146,21,224,17,250,5,8,50,129,255,182,252,10,16, -224,17,146,13,3,87,156,0,66,87,0,0,35,87,161,0,98,87,5,0, -95,186,72,210,224,185,170,237,27,22,8,0,124,23,9,0,213,61,99,223, -73,0,35,142,72,0,60,87,5,0,99,143,81,0,224,81,186,5,0,18, -213,5,60,23,9,0,170,17,163,18,224,17,186,5,0,218,245,13,60,87, -5,0,99,87,77,0,35,223,81,0,35,86,76,0,42,103,1,0,59,223, -1,0,172,217,163,218,35,95,81,0,28,48,43,95,1,0,35,62,76,0, -99,95,77,0,1,66,35,78,156,0,128,255,222,14,60,87,5,0,99,87, -77,0,35,22,76,0,34,135,1,0,195,218,208,217,99,223,69,0,25,16, -216,17,34,23,5,0,10,82,234,23,128,210,0,210,128,7,210,1,60,95, -5,0,224,89,186,5,0,18,213,5,60,23,9,0,171,17,163,18,224,89, -186,5,0,82,213,5,60,87,13,0,171,81,163,82,60,223,9,0,234,17, -169,37,99,223,105,0,27,184,1,178,229,21,23,16,224,17,146,21,224,17, -250,5,8,50,129,255,188,251,10,16,224,17,146,13,3,87,140,0,66,87, -0,0,35,87,145,0,98,87,5,0,95,178,72,186,224,177,170,237,27,22, -8,0,124,23,9,0,213,61,99,223,93,0,35,94,92,0,60,87,5,0, -99,95,101,0,224,81,186,5,0,18,213,5,60,23,9,0,170,17,163,18, -224,17,186,5,0,218,245,13,60,87,5,0,99,87,97,0,35,223,101,0, -35,86,96,0,42,119,1,0,59,223,1,0,174,217,163,218,35,111,101,0, -28,48,45,111,1,0,35,62,96,0,99,111,97,0,1,66,35,78,140,0, -128,255,228,13,60,87,5,0,99,87,97,0,35,22,96,0,34,87,1,0, -195,218,202,217,99,223,89,0,60,95,5,0,224,89,186,5,0,18,213,5, -60,23,9,0,171,17,163,18,224,89,186,5,0,82,213,5,60,87,13,0, -171,81,163,82,60,223,9,0,234,17,169,37,99,223,125,0,27,184,1,178, -229,21,23,16,224,17,146,21,224,17,250,5,8,50,129,255,214,250,10,16, -224,17,146,13,3,87,148,0,66,87,0,0,35,87,153,0,98,87,5,0, -95,178,72,186,224,177,170,237,27,22,8,0,124,23,9,0,213,61,99,223, -113,0,35,110,112,0,60,87,5,0,99,111,121,0,224,81,186,5,0,18, -213,5,60,23,9,0,170,17,163,18,224,17,186,5,0,218,245,13,60,87, -5,0,99,87,117,0,35,223,121,0,35,86,116,0,42,135,1,0,59,223, -1,0,176,217,163,218,35,127,121,0,28,48,47,127,1,0,35,62,116,0, -99,127,117,0,1,66,35,78,148,0,128,255,254,12,60,87,5,0,99,87, -117,0,35,22,116,0,34,103,1,0,195,218,204,217,99,223,109,0,65,210, -25,16,216,17,34,23,5,0,10,82,234,23,128,18,226,209,190,5,191,7, -32,254,28,48,129,255,170,7,3,30,48,0,126,6,255,243,6,88,3,30, -232,255,99,255,5,0,99,239,1,0,213,21,41,135,1,0,88,130,105,135, -1,0,40,127,1,0,88,122,104,127,1,0,41,23,1,0,47,87,1,0, -98,87,1,0,47,87,5,0,98,87,5,0,39,111,1,0,40,119,1,0, -238,105,250,229,6,16,9,232,224,17,250,5,4,50,129,255,190,249,10,16, -224,17,210,5,61,103,1,0,98,103,1,0,35,239,1,0,35,255,5,0, -3,30,24,0,127,0,128,7,33,0,224,49,162,13,34,6,36,71,133,0, -102,23,5,0,129,58,185,5,129,255,104,249,64,6,63,0,38,87,1,0, -127,0,127,0,128,7,33,0,48,6,255,255,255,31,240,57,211,5,129,255, -90,239,0,82,213,5,7,48,195,50,129,255,94,249,64,6,63,0,3,30, -220,255,99,255,17,0,99,231,5,0,99,223,9,0,99,215,13,0,6,224, -99,239,1,0,7,208,8,232,181,29,2,216,29,16,224,17,146,21,224,17, -250,5,8,50,129,255,40,249,10,16,224,17,146,13,27,87,0,0,66,87, -0,0,59,87,5,0,98,87,5,0,60,135,1,0,72,234,72,130,124,135, -1,0,58,127,1,0,60,23,1,0,239,17,154,229,29,80,35,215,13,0, -35,223,9,0,35,231,5,0,35,239,1,0,35,255,17,0,3,30,36,0, -127,0,128,7,128,7,38,87,130,7,128,7,130,7,130,7,225,0,6,232, -7,224,224,233,178,53,34,6,68,71,133,0,125,23,5,0,61,23,33,0, -2,6,240,255,201,13,2,6,240,255,201,5,61,23,13,0,181,5,61,22, -12,0,2,48,129,255,124,248,15,130,125,135,33,0,197,5,61,23,13,0, -181,5,61,22,12,0,125,7,29,0,67,7,3,0,35,86,3,0,10,119, -0,0,66,119,0,0,129,226,34,6,36,71,133,0,125,23,5,0,201,5, -29,48,129,255,66,248,66,6,255,0,38,135,33,0,16,6,240,255,201,5, -38,23,13,0,181,5,38,22,12,0,2,80,127,0,128,7,33,0,129,255, -74,247,64,6,63,0,130,7,225,0,6,232,7,224,224,233,178,53,34,6, -68,71,133,0,125,23,5,0,61,23,33,0,2,6,240,255,201,13,2,6, -240,255,201,5,61,23,13,0,181,5,61,22,12,0,2,48,129,255,228,247, -15,130,125,135,33,0,197,5,61,23,13,0,181,5,61,22,12,0,125,7, -29,0,67,7,3,0,35,86,3,0,10,119,0,0,66,119,0,0,129,226, -34,6,36,71,133,0,125,23,5,0,201,5,29,48,129,255,170,247,66,6, -255,0,128,7,33,0,129,255,202,246,64,6,63,0,176,7,225,241,61,6, -12,72,133,0,6,216,123,7,5,0,123,7,9,0,123,7,13,0,7,224, -224,225,202,5,0,82,128,7,66,10,48,6,255,255,255,31,240,225,187,5, -128,7,6,10,42,6,64,133,132,0,131,127,5,0,67,127,5,0,15,114, -99,119,93,0,197,5,35,23,73,0,181,5,35,22,72,0,99,7,89,0, -67,7,6,0,35,94,6,0,11,103,0,0,66,103,0,0,10,16,65,18, -2,95,255,255,224,89,202,253,10,200,2,222,255,255,170,217,35,230,68,0, -60,23,25,0,0,82,2,6,240,255,201,5,60,95,5,0,181,5,60,94, -4,0,249,89,251,13,2,6,240,255,201,5,60,95,5,0,181,5,60,94, -4,0,60,135,21,0,203,129,240,201,169,5,1,82,138,0,224,81,186,5, -128,7,160,3,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -162,201,60,23,21,0,249,17,201,5,28,48,129,255,208,244,60,87,21,0, -10,16,185,17,226,217,169,5,27,16,64,214,134,0,58,215,153,132,2,216, -217,217,251,81,201,5,28,48,129,255,172,244,60,23,21,0,187,17,250,17, -169,5,2,208,224,209,186,5,128,7,154,1,60,87,25,0,10,6,240,255, -201,5,60,103,5,0,181,5,60,102,4,0,27,88,204,89,10,6,240,255, -201,5,60,87,5,0,181,5,60,86,4,0,202,217,26,80,219,81,186,17, -162,37,11,96,10,88,2,104,203,105,12,80,171,81,13,128,171,129,240,81, -139,21,2,120,204,121,15,102,255,255,13,94,255,255,95,90,11,119,1,0, -95,98,76,119,1,0,95,18,154,253,149,13,65,90,11,111,255,255,65,98, -76,111,255,255,95,18,154,253,60,223,21,0,186,217,126,218,195,5,28,48, -129,255,254,242,60,95,25,0,251,89,153,93,60,199,21,0,155,214,15,0, -126,210,163,5,27,208,26,54,1,0,129,255,2,246,10,184,224,193,146,21, -60,87,25,0,23,88,10,6,240,255,201,5,60,23,5,0,181,5,60,22, -4,0,11,48,2,56,24,64,191,255,200,217,60,23,25,0,2,6,240,255, -201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48, -129,255,156,245,15,130,124,135,25,0,197,5,60,23,5,0,181,5,60,22, -4,0,124,7,21,0,67,7,9,0,35,86,9,0,10,119,0,0,66,119, -0,0,26,6,240,255,124,191,5,0,124,215,25,0,185,5,23,16,181,5, -60,22,4,0,124,199,21,0,67,7,8,0,194,193,35,22,8,0,2,95, -0,0,88,95,0,0,245,21,224,217,218,21,60,87,25,0,124,7,21,0, -10,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,67,7,7,0, -35,86,7,0,10,135,0,0,66,135,0,0,224,217,226,21,60,111,25,0, -13,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,124,223,21,0, -67,7,10,0,194,217,35,22,10,0,2,95,0,0,91,95,0,0,60,95, -21,0,25,72,233,89,169,5,11,72,224,73,186,5,128,7,250,2,60,23, -25,0,2,6,240,255,201,5,60,87,5,0,181,5,60,86,4,0,10,96, -2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,9,80,194,81, -11,16,169,17,146,37,10,88,2,104,203,105,12,80,171,81,13,128,171,129, -240,81,139,21,2,120,204,121,15,102,255,255,13,94,255,255,95,90,11,119, -1,0,95,98,76,119,1,0,95,18,154,253,149,13,65,90,11,111,255,255, -65,98,76,111,255,255,95,18,154,253,60,223,21,0,169,217,126,218,195,5, -28,48,129,255,88,241,60,95,25,0,251,89,153,93,60,207,21,0,155,214, -15,0,126,210,163,5,27,208,26,54,1,0,129,255,92,244,10,192,224,201, -146,21,60,87,25,0,24,88,10,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,11,48,2,56,25,64,191,255,34,216,60,23,25,0,2,6, -240,255,201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -2,48,129,255,246,243,15,130,124,135,25,0,197,5,60,23,5,0,181,5, -60,22,4,0,124,7,21,0,67,7,13,0,35,86,13,0,10,119,0,0, -66,119,0,0,26,6,240,255,124,199,5,0,124,215,25,0,185,5,24,16, -181,5,60,22,4,0,124,207,21,0,67,7,12,0,194,201,35,22,12,0, -2,95,0,0,89,95,0,0,245,21,224,217,218,21,60,87,25,0,124,7, -21,0,10,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,67,7, -11,0,35,86,11,0,10,135,0,0,66,135,0,0,224,217,186,5,128,7, -142,1,60,111,25,0,13,6,240,255,201,5,60,23,5,0,181,5,60,22, -4,0,124,223,21,0,67,7,14,0,194,217,35,22,14,0,2,95,0,0, -91,95,0,0,128,7,96,1,126,218,195,5,28,48,129,255,52,240,60,23, -25,0,251,17,217,69,155,214,15,0,126,210,163,5,27,208,26,54,1,0, -129,255,60,243,60,23,25,0,10,192,2,6,240,255,201,13,2,6,240,255, -201,5,60,23,5,0,181,5,60,22,4,0,2,48,129,255,250,242,15,82, -124,87,25,0,197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0, -67,7,17,0,35,86,17,0,10,127,0,0,66,127,0,0,26,6,240,255, -124,199,5,0,124,215,25,0,185,5,24,80,181,5,60,86,4,0,124,7, -21,0,10,16,67,7,16,0,35,86,16,0,10,103,0,0,66,103,0,0, -197,61,27,6,240,255,177,37,2,6,240,255,201,13,2,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,2,48,129,255,132,242,15,90,124,95, -25,0,197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7, -18,0,35,86,18,0,10,135,0,0,66,135,0,0,245,21,224,217,218,21, -60,127,25,0,124,7,21,0,15,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,67,7,15,0,35,86,15,0,10,119,0,0,66,119,0,0, -224,217,210,37,60,95,25,0,11,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,2,48,25,56,27,64,191,255,26,214,60,87,25,0,10,6, -240,255,201,5,60,23,5,0,181,5,60,22,4,0,124,223,21,0,67,7, -19,0,194,217,35,22,19,0,2,127,0,0,91,127,0,0,37,22,72,128, -99,23,33,0,35,214,68,0,61,22,56,255,99,23,37,0,15,106,154,119, -1,0,67,119,3,0,99,111,65,0,197,5,35,23,45,0,181,5,35,22, -44,0,99,7,61,0,67,7,20,0,35,86,20,0,10,95,0,0,66,95, -0,0,64,94,134,0,43,95,153,132,58,231,21,0,11,16,252,17,169,5, -2,224,35,86,40,0,250,81,178,5,128,7,200,1,35,135,61,0,11,216, -252,129,217,5,35,54,40,0,129,255,132,239,35,23,61,0,188,17,251,17, -169,5,2,216,224,217,186,5,128,7,22,3,35,87,65,0,10,6,240,255, -201,5,35,103,45,0,181,5,35,102,44,0,28,88,204,89,10,6,240,255, -201,5,35,87,45,0,181,5,35,86,44,0,202,225,27,80,220,81,187,17, -162,37,11,112,10,88,2,80,203,81,14,104,171,105,10,96,171,97,236,105, -139,21,2,88,206,89,11,118,255,255,10,94,255,255,95,90,11,87,1,0, -95,114,78,87,1,0,95,18,154,253,149,13,65,90,11,135,255,255,65,114, -78,135,255,255,95,18,154,253,35,231,61,0,187,225,126,226,211,5,35,54, -40,0,129,255,212,237,35,119,65,0,252,113,137,93,35,215,61,0,156,222, -15,0,126,218,163,5,28,216,27,54,1,0,129,255,216,240,10,200,224,209, -130,21,35,111,65,0,13,6,240,255,201,5,35,23,45,0,181,5,35,22, -44,0,10,48,2,56,26,64,191,255,160,212,35,23,65,0,2,6,240,255, -201,13,2,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,2,48, -129,255,116,240,15,98,99,103,65,0,197,5,35,23,45,0,181,5,35,22, -44,0,99,7,61,0,67,7,23,0,35,86,23,0,10,87,0,0,66,87, -0,0,27,6,240,255,99,207,45,0,99,223,65,0,185,5,25,16,181,5, -35,22,44,0,99,215,61,0,67,7,22,0,194,209,35,22,22,0,2,119, -0,0,90,119,0,0,245,21,224,225,218,21,35,111,65,0,99,7,61,0, -13,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,67,7,21,0, -35,86,21,0,10,103,0,0,66,103,0,0,224,225,186,5,128,7,166,1, -35,135,65,0,16,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0, -99,231,61,0,67,7,24,0,194,225,35,22,24,0,2,119,0,0,92,119, -0,0,128,7,120,1,126,226,211,5,35,54,40,0,129,255,176,236,35,23, -65,0,252,17,217,69,156,222,15,0,126,218,163,5,28,216,27,54,1,0, -129,255,184,239,35,23,65,0,10,200,2,6,240,255,201,13,2,6,240,255, -201,5,35,23,45,0,181,5,35,22,44,0,2,48,129,255,118,239,15,106, -99,111,65,0,197,5,35,23,45,0,181,5,35,22,44,0,99,7,61,0, -67,7,27,0,35,86,27,0,10,95,0,0,66,95,0,0,27,6,240,255, -99,207,45,0,99,223,65,0,185,5,25,80,181,5,35,86,44,0,99,7, -61,0,10,16,67,7,26,0,35,86,26,0,10,127,0,0,66,127,0,0, -197,61,28,6,240,255,177,37,2,6,240,255,201,13,2,6,240,255,201,5, -35,23,45,0,181,5,35,22,44,0,2,48,129,255,0,239,15,114,99,119, -65,0,197,5,35,23,45,0,181,5,35,22,44,0,99,7,61,0,67,7, -28,0,35,86,28,0,10,103,0,0,66,103,0,0,245,21,224,225,218,21, -35,95,65,0,99,7,61,0,11,6,240,255,201,5,35,23,45,0,181,5, -35,22,44,0,67,7,25,0,35,86,25,0,10,87,0,0,66,87,0,0, -224,225,130,53,35,119,65,0,14,6,240,255,201,5,35,23,45,0,181,5, -35,22,44,0,58,111,25,0,2,80,13,6,240,255,201,5,58,23,5,0, -181,5,58,22,4,0,10,48,2,56,28,64,191,255,128,210,35,103,65,0, -12,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,99,231,61,0, -67,7,29,0,194,225,35,22,29,0,2,87,0,0,92,87,0,0,61,22, -88,255,99,23,37,0,64,134,134,0,48,135,221,131,35,230,32,0,224,129, -242,5,28,48,16,120,63,6,90,46,128,0,111,0,60,23,5,0,63,6, -118,46,128,0,2,22,24,0,34,87,0,0,34,119,5,0,220,81,10,48, -110,0,28,48,129,255,48,237,61,22,56,255,99,23,37,0,35,23,65,0, -2,6,240,255,201,13,2,6,240,255,201,5,35,23,45,0,181,5,35,22, -44,0,2,48,129,255,220,237,15,106,99,111,65,0,197,5,35,23,45,0, -181,5,35,22,44,0,99,7,61,0,67,7,30,0,35,86,30,0,10,95, -0,0,66,95,0,0,61,22,24,255,99,23,37,0,35,23,93,0,2,6, -240,255,201,13,2,6,240,255,201,5,35,23,73,0,181,5,35,22,72,0, -2,48,129,255,142,237,15,82,99,87,93,0,197,5,35,23,73,0,181,5, -35,22,72,0,99,7,89,0,67,7,31,0,35,86,31,0,10,127,0,0, -66,127,0,0,245,21,46,6,255,255,255,31,238,225,211,5,129,255,104,227, -0,18,229,5,28,48,195,50,129,255,108,237,10,16,123,23,5,0,123,23, -9,0,195,226,194,225,123,231,13,0,1,82,112,6,255,241,190,7,225,241, -3,30,24,255,41,87,1,0,35,22,28,1,98,87,1,0,7,184,41,87, -5,0,8,216,98,87,5,0,6,224,60,23,5,0,61,6,12,72,133,0, -224,17,186,5,0,82,213,5,60,87,13,0,162,81,163,82,10,208,224,217, -186,5,128,7,64,14,224,17,186,5,0,82,213,5,60,87,9,0,162,81, -163,82,44,6,255,255,255,31,170,97,251,97,177,5,128,7,254,9,43,6, -84,133,132,0,131,87,9,0,67,87,9,0,15,130,99,135,97,1,197,5, -35,23,77,1,181,5,35,22,76,1,99,7,93,1,67,7,10,0,35,86, -10,0,10,119,0,0,66,119,0,0,11,16,65,18,2,111,255,255,224,105, -202,253,11,200,0,82,2,222,255,255,35,230,72,1,60,23,25,0,171,217, -2,6,240,255,201,5,60,95,5,0,181,5,60,94,4,0,249,89,251,13, -2,6,240,255,201,5,60,103,5,0,181,5,60,102,4,0,60,95,21,0, -204,89,235,201,169,5,1,82,138,0,224,81,186,5,128,7,152,3,2,6, -240,255,201,5,60,23,5,0,181,5,60,22,4,0,162,201,60,23,21,0, -249,17,201,5,28,48,129,255,54,234,60,87,21,0,10,16,185,17,226,217, -169,5,27,16,64,214,134,0,58,215,153,132,2,216,217,217,251,81,201,5, -28,48,129,255,18,234,60,23,21,0,187,17,250,17,169,5,2,208,224,209, -186,5,128,7,150,1,60,87,25,0,10,6,240,255,201,5,60,103,5,0, -181,5,60,102,4,0,27,88,204,89,10,6,240,255,201,5,60,87,5,0, -181,5,60,86,4,0,202,217,26,80,219,81,186,17,146,37,11,104,2,112, -202,113,13,96,170,97,14,88,170,89,235,97,139,21,2,80,205,81,10,110, -255,255,14,86,255,255,95,82,10,135,1,0,95,106,77,135,1,0,95,18, -154,253,149,13,65,82,10,127,255,255,65,106,77,127,255,255,95,18,154,253, -60,223,21,0,186,217,126,218,195,5,28,48,129,255,102,232,60,111,25,0, -251,105,137,93,60,199,21,0,155,214,15,0,126,210,163,5,27,208,26,54, -1,0,129,255,106,235,10,184,224,193,130,21,60,103,25,0,12,6,240,255, -201,5,60,23,5,0,181,5,60,22,4,0,10,48,2,56,24,64,191,255, -50,207,60,23,25,0,2,6,240,255,201,13,2,6,240,255,201,5,60,23, -5,0,181,5,60,22,4,0,2,48,129,255,6,235,15,90,124,95,25,0, -197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7,13,0, -35,86,13,0,10,135,0,0,66,135,0,0,26,6,240,255,124,191,5,0, -124,215,25,0,185,5,23,16,181,5,60,22,4,0,124,199,21,0,67,7, -12,0,194,193,35,22,12,0,2,111,0,0,88,111,0,0,245,21,224,217, -218,21,60,103,25,0,124,7,21,0,12,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,67,7,11,0,35,86,11,0,10,95,0,0,66,95, -0,0,224,217,226,21,60,127,25,0,15,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,124,223,21,0,67,7,14,0,194,217,35,22,14,0, -2,111,0,0,91,111,0,0,60,95,21,0,25,112,238,89,169,5,11,112, -224,113,186,5,128,7,246,2,60,23,25,0,2,6,240,255,201,5,60,87, -5,0,181,5,60,86,4,0,10,96,2,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,14,80,194,81,11,16,174,17,130,37,2,120,202,121, -12,104,170,97,15,88,170,89,235,97,139,21,2,80,205,81,10,110,255,255, -15,86,255,255,95,82,10,135,1,0,95,106,77,135,1,0,95,18,154,253, -149,13,65,82,10,127,255,255,65,106,77,127,255,255,95,18,154,253,60,223, -21,0,174,217,126,218,195,5,28,48,129,255,196,230,60,111,25,0,251,105, -137,93,60,207,21,0,155,214,15,0,126,210,163,5,27,208,26,54,1,0, -129,255,200,233,10,192,224,201,130,21,60,103,25,0,12,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,10,48,2,56,25,64,191,255,144,205, -60,23,25,0,2,6,240,255,201,13,2,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,2,48,129,255,100,233,15,90,124,95,25,0,197,5, -60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7,17,0,35,86, -17,0,10,135,0,0,66,135,0,0,26,6,240,255,124,199,5,0,124,215, -25,0,185,5,24,16,181,5,60,22,4,0,124,207,21,0,67,7,16,0, -194,201,35,22,16,0,2,111,0,0,89,111,0,0,245,21,224,217,218,21, -60,103,25,0,124,7,21,0,12,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,67,7,15,0,35,86,15,0,10,95,0,0,66,95,0,0, -224,217,186,5,128,7,142,1,60,127,25,0,15,6,240,255,201,5,60,23, -5,0,181,5,60,22,4,0,124,223,21,0,67,7,18,0,194,217,35,22, -18,0,2,111,0,0,91,111,0,0,128,7,96,1,126,218,195,5,28,48, -129,255,162,229,60,23,25,0,251,17,217,69,155,214,15,0,126,210,163,5, -27,208,26,54,1,0,129,255,170,232,60,23,25,0,10,192,2,6,240,255, -201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48, -129,255,104,232,15,98,124,103,25,0,197,5,60,23,5,0,181,5,60,22, -4,0,124,7,21,0,67,7,21,0,35,86,21,0,10,87,0,0,66,87, -0,0,26,6,240,255,124,199,5,0,124,215,25,0,185,5,24,80,181,5, -60,86,4,0,124,7,21,0,10,16,67,7,20,0,35,86,20,0,10,119, -0,0,66,119,0,0,197,61,27,6,240,255,177,37,2,6,240,255,201,13, -2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48,129,255, -242,231,15,106,124,111,25,0,197,5,60,23,5,0,181,5,60,22,4,0, -124,7,21,0,67,7,22,0,35,86,22,0,10,95,0,0,66,95,0,0, -245,21,224,217,218,21,60,87,25,0,124,7,21,0,10,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,67,7,19,0,35,86,19,0,10,135, -0,0,66,135,0,0,224,217,210,37,60,111,25,0,13,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,2,48,25,56,27,64,191,255,136,203, -60,103,25,0,12,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -124,223,21,0,67,7,23,0,194,217,35,22,23,0,2,87,0,0,91,87, -0,0,37,22,80,128,99,23,37,1,35,214,72,1,61,22,56,255,99,23, -41,1,15,122,154,135,1,0,67,135,7,0,99,127,69,1,197,5,35,23, -49,1,181,5,35,22,48,1,99,7,65,1,67,7,24,0,35,86,24,0, -10,111,0,0,66,111,0,0,64,86,134,0,42,87,153,132,58,231,21,0, -10,16,252,17,169,5,2,224,35,102,44,1,250,97,178,5,128,7,198,1, -35,95,65,1,10,216,252,89,217,5,35,54,44,1,129,255,242,228,35,23, -65,1,188,17,251,17,169,5,2,216,224,217,186,5,128,7,20,3,35,87, -69,1,10,6,240,255,201,5,35,103,49,1,181,5,35,102,48,1,28,88, -204,89,10,6,240,255,201,5,35,87,49,1,181,5,35,86,48,1,202,225, -27,80,220,81,187,17,146,37,11,128,16,120,2,88,202,89,170,121,11,112, -170,113,238,121,139,21,2,104,208,105,13,134,255,255,11,86,255,255,95,82, -10,103,1,0,95,130,80,103,1,0,95,18,154,253,149,13,65,82,10,95, -255,255,65,130,80,95,255,255,95,18,154,253,35,231,65,1,187,225,126,226, -211,5,35,54,44,1,129,255,68,227,35,135,69,1,252,129,137,93,35,215, -65,1,156,222,15,0,126,218,163,5,28,216,27,54,1,0,129,255,72,230, -10,200,224,209,130,21,35,127,69,1,15,6,240,255,201,5,35,23,49,1, -181,5,35,22,48,1,10,48,2,56,26,64,191,255,16,202,35,23,69,1, -2,6,240,255,201,13,2,6,240,255,201,5,35,23,49,1,181,5,35,22, -48,1,2,48,129,255,228,229,15,114,99,119,69,1,197,5,35,23,49,1, -181,5,35,22,48,1,99,7,65,1,67,7,27,0,35,86,27,0,10,103, -0,0,66,103,0,0,27,6,240,255,99,207,49,1,99,223,69,1,185,5, -25,16,181,5,35,22,48,1,99,215,65,1,67,7,26,0,194,209,35,22, -26,0,2,135,0,0,90,135,0,0,245,21,224,225,218,21,35,127,69,1, -99,7,65,1,15,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1, -67,7,25,0,35,86,25,0,10,119,0,0,66,119,0,0,224,225,186,5, -128,7,166,1,35,95,69,1,11,6,240,255,201,5,35,23,49,1,181,5, -35,22,48,1,99,231,65,1,67,7,28,0,194,225,35,22,28,0,2,135, -0,0,92,135,0,0,128,7,120,1,126,226,211,5,35,54,44,1,129,255, -32,226,35,23,69,1,252,17,217,69,156,222,15,0,126,218,163,5,28,216, -27,54,1,0,129,255,40,229,35,23,69,1,10,200,2,6,240,255,201,13, -2,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1,2,48,129,255, -230,228,15,122,99,127,69,1,197,5,35,23,49,1,181,5,35,22,48,1, -99,7,65,1,67,7,31,0,35,86,31,0,10,111,0,0,66,111,0,0, -27,6,240,255,99,207,49,1,99,223,69,1,185,5,25,80,181,5,35,86, -48,1,99,7,65,1,10,16,67,7,30,0,35,86,30,0,10,87,0,0, -66,87,0,0,197,61,28,6,240,255,177,37,2,6,240,255,201,13,2,6, -240,255,201,5,35,23,49,1,181,5,35,22,48,1,2,48,129,255,112,228, -15,130,99,135,69,1,197,5,35,23,49,1,181,5,35,22,48,1,99,7, -65,1,67,7,32,0,35,86,32,0,10,119,0,0,66,119,0,0,245,21, -224,225,218,21,35,111,69,1,99,7,65,1,13,6,240,255,201,5,35,23, -49,1,181,5,35,22,48,1,67,7,29,0,35,86,29,0,10,103,0,0, -66,103,0,0,224,225,130,53,35,135,69,1,16,6,240,255,201,5,35,23, -49,1,181,5,35,22,48,1,58,127,25,0,2,80,15,6,240,255,201,5, -58,23,5,0,181,5,58,22,4,0,10,48,2,56,28,64,191,255,240,199, -35,119,69,1,14,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1, -99,231,65,1,67,7,33,0,194,225,35,22,33,0,2,103,0,0,92,103, -0,0,61,22,88,255,99,23,41,1,64,94,134,0,43,95,221,131,35,230, -36,1,224,89,242,5,28,48,11,80,63,6,234,56,128,0,106,0,60,23, -5,0,63,6,6,57,128,0,2,22,24,0,34,87,0,0,34,135,5,0, -220,81,10,48,112,0,28,48,129,255,160,226,61,22,56,255,99,23,41,1, -35,23,69,1,2,6,240,255,201,13,2,6,240,255,201,5,35,23,49,1, -181,5,35,22,48,1,2,48,129,255,76,227,15,122,99,127,69,1,197,5, -35,23,49,1,181,5,35,22,48,1,99,7,65,1,67,7,34,0,35,86, -34,0,10,111,0,0,66,111,0,0,61,22,24,255,99,23,41,1,35,23, -97,1,2,6,240,255,201,13,2,6,240,255,201,5,35,23,77,1,181,5, -35,22,76,1,2,48,129,255,254,226,15,98,99,103,97,1,197,5,35,23, -77,1,181,5,35,22,76,1,99,7,93,1,67,7,35,0,35,86,35,0, -10,87,0,0,66,87,0,0,128,7,38,4,224,17,186,5,0,82,213,5, -60,87,9,0,162,81,163,82,27,112,202,113,238,209,177,5,128,7,132,1, -26,80,129,82,45,6,255,255,255,31,170,105,250,105,185,5,0,82,165,5, -218,81,10,208,224,17,186,5,0,82,213,5,60,87,9,0,162,81,163,82, -27,128,202,129,240,209,185,13,224,17,186,5,0,82,213,5,60,87,9,0, -162,81,163,82,27,208,202,209,28,48,26,56,0,66,191,255,18,233,60,23, -5,0,35,206,48,0,99,23,49,0,99,207,89,0,55,111,1,0,35,198, -52,0,99,111,53,0,99,199,85,0,57,103,1,0,10,232,99,103,81,0, -56,95,1,0,99,239,65,0,99,95,77,0,35,22,80,0,34,87,1,0, -29,64,99,87,69,0,35,94,76,0,43,135,1,0,99,95,61,0,99,135, -73,0,99,23,57,0,28,72,131,23,37,0,67,23,0,0,35,54,68,0, -35,62,72,0,191,255,198,232,28,48,10,56,27,64,35,78,28,1,128,255, -72,3,55,127,1,0,99,199,125,0,99,127,53,0,35,94,112,0,60,23, -9,0,99,95,97,0,99,23,49,0,99,207,121,0,56,119,1,0,35,22, -116,0,99,119,117,0,99,87,101,0,57,111,1,0,10,64,99,111,113,0, -28,72,34,103,1,0,99,23,93,0,99,103,105,0,35,54,104,0,43,95, -1,0,163,23,37,0,67,23,0,0,99,95,109,0,35,62,108,0,191,255, -84,232,60,87,5,0,224,81,186,5,0,18,213,5,60,23,9,0,170,17, -163,18,194,217,60,23,5,0,224,17,242,13,60,87,9,0,99,23,41,0, -99,87,45,0,165,5,72,18,234,17,234,253,60,55,5,0,129,255,80,225, -195,210,221,209,124,215,13,0,195,218,221,217,124,223,9,0,124,239,5,0, -128,7,138,2,60,23,9,0,35,86,128,0,99,23,129,0,23,232,42,127, -1,0,61,23,1,0,28,72,162,121,163,122,251,121,177,5,128,7,56,1, -99,23,133,0,35,86,132,0,60,23,9,0,27,200,99,23,137,0,195,202, -42,95,1,0,61,71,1,0,99,87,173,0,99,95,165,0,35,22,136,0, -35,94,164,0,99,95,141,0,34,87,1,0,217,65,99,87,161,0,99,23, -169,0,43,135,1,0,35,22,160,0,99,135,153,0,99,71,149,0,34,127, -1,0,99,23,145,0,99,127,157,0,131,23,39,0,67,23,0,0,35,54, -152,0,35,62,156,0,191,255,112,231,60,215,9,0,35,22,188,0,99,215, -189,0,99,215,193,0,61,103,1,0,34,111,1,0,27,232,172,105,163,106, -173,233,229,21,26,16,224,17,146,21,224,17,250,5,8,50,129,255,148,224, -10,16,224,17,146,13,3,87,28,1,66,87,0,0,35,87,33,1,98,87, -5,0,95,234,72,210,224,233,170,237,60,87,9,0,217,81,124,87,9,0, -55,135,1,0,35,126,132,0,99,135,133,0,99,127,185,0,60,23,9,0, -195,218,99,23,137,0,35,94,176,0,35,22,136,0,34,103,1,0,99,95, -181,0,187,97,99,103,177,0,165,21,35,86,28,1,42,95,1,0,98,95, -1,0,42,87,5,0,98,87,5,0,35,23,185,0,34,87,1,0,72,82, -98,87,1,0,35,23,185,0,35,119,181,0,34,23,1,0,46,119,1,0, -238,17,234,229,128,7,50,1,60,87,9,0,27,104,99,87,25,1,99,87, -201,0,195,106,10,16,173,17,99,23,197,0,35,214,196,0,58,95,1,0, -60,71,9,0,99,215,237,0,99,95,229,0,35,206,200,0,57,87,1,0, -99,87,225,0,99,207,233,0,35,22,228,0,34,135,1,0,35,86,224,0, -99,135,217,0,99,87,209,0,42,127,1,0,99,71,213,0,99,23,205,0, -99,127,221,0,163,23,39,0,67,23,0,0,35,54,216,0,35,62,220,0, -191,255,54,230,124,87,9,0,35,95,25,1,61,119,1,0,27,104,99,119, -241,0,99,95,245,0,195,106,11,16,173,17,99,23,197,0,35,86,240,0, -42,135,1,0,99,215,9,1,99,135,1,1,99,87,13,1,58,127,1,0, -35,230,244,0,99,127,253,0,99,231,5,1,60,119,1,0,25,48,99,119, -249,0,163,23,39,0,67,23,0,0,35,62,0,1,35,70,252,0,35,78, -248,0,191,255,28,229,61,111,1,0,99,231,21,1,99,111,245,0,195,218, -61,87,1,0,99,215,17,1,202,217,99,223,197,0,165,21,35,86,28,1, -42,95,1,0,98,95,1,0,42,87,5,0,98,87,5,0,35,23,21,1, -34,135,1,0,72,130,98,135,1,0,35,23,21,1,35,111,17,1,34,23, -1,0,45,111,1,0,237,17,234,229,3,30,232,0,126,6,255,241,130,7, -225,112,9,200,7,216,99,223,1,0,27,232,8,208,26,224,229,21,29,16, -224,17,146,21,224,17,250,5,8,50,129,255,166,222,10,16,224,17,146,13, -25,87,0,0,66,87,0,0,57,87,5,0,98,87,5,0,95,226,72,234, -224,225,170,237,26,80,195,82,219,81,66,6,255,112,33,6,46,6,0,0, -97,0,33,6,48,17,0,0,97,0,33,6,194,26,0,0,97,0,33,6, -138,27,0,0,97,0,33,6,232,35,0,0,97,0,33,6,242,35,0,0, -97,0,33,6,120,38,0,0,97,0,33,6,80,43,0,0,97,0,33,6, -228,76,0,0,97,0,33,6,170,98,0,0,97,0,33,6,234,193,1,0, -97,0,33,6,146,105,0,0,97,0,33,6,92,74,1,0,97,0,33,6, -234,85,1,0,97,0,33,6,202,55,1,0,97,0,33,6,106,93,1,0, -97,0,33,6,248,54,1,0,97,0,33,6,154,108,1,0,97,0,33,6, -186,92,1,0,97,0,33,6,244,108,1,0,97,0,33,6,238,54,1,0, -97,0,33,6,180,5,1,0,97,0,33,6,12,107,0,0,97,0,33,6, -10,137,1,0,97,0,33,6,234,61,1,0,97,0,33,6,12,43,1,0, -97,0,33,6,164,42,1,0,97,0,33,6,244,147,1,0,97,0,128,7, -33,0,224,49,210,5,129,58,185,5,129,255,110,221,64,6,63,0,128,7, -33,0,224,49,210,5,129,58,185,5,129,255,90,221,64,6,63,0,128,7, -33,0,50,6,176,215,255,255,114,7,1,0,38,6,24,72,133,0,129,255, -252,225,50,6,208,215,255,255,114,7,1,0,38,6,36,72,133,0,129,255, -232,225,64,6,63,0,128,7,33,0,38,23,105,0,63,6,122,63,128,0, -2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6, -63,0,128,7,33,0,38,23,105,0,63,6,156,63,128,0,72,18,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0, -38,23,105,0,63,6,192,63,128,0,2,22,16,0,34,87,0,0,34,135, -5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0, -63,6,228,63,128,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,1,82,127,0,0,82,127,0,32,86,34,1, -127,0,0,82,127,0,128,7,225,0,6,232,7,224,224,233,226,13,49,6, -96,75,133,0,125,143,105,0,0,58,128,255,36,3,129,226,201,5,29,48, -129,255,96,220,64,6,255,0,0,82,127,0,128,7,225,0,6,232,7,224, -224,233,226,13,48,6,96,75,133,0,125,135,105,0,0,58,128,255,246,2, -129,226,201,5,29,48,129,255,50,220,64,6,255,0,128,7,225,0,6,232, -7,224,224,233,226,13,48,6,96,75,133,0,125,135,105,0,0,58,128,255, -204,2,129,226,201,5,29,48,129,255,8,220,64,6,255,0,1,82,127,0, -128,7,225,0,6,232,29,231,7,0,28,6,225,255,250,29,29,135,0,0, -224,129,154,21,61,23,105,0,63,6,180,64,128,0,2,22,80,0,34,87, -0,0,34,127,5,0,221,81,10,48,111,0,224,81,178,13,61,119,117,0, -139,114,203,114,125,119,121,0,14,118,0,248,125,119,117,0,29,48,128,255, -96,2,10,16,28,6,225,255,186,5,221,7,2,0,221,199,2,0,242,5, -61,127,117,0,15,126,0,8,125,127,121,0,2,80,64,6,255,0,128,7, -97,0,6,232,29,143,7,0,123,138,234,5,38,6,172,137,132,0,129,255, -82,225,29,63,1,0,61,71,108,0,38,6,184,137,132,0,129,255,64,225, -61,63,117,0,61,71,113,0,38,6,148,137,132,0,129,255,46,225,64,6, -127,0,130,7,97,0,6,232,3,48,128,255,232,1,195,199,0,0,178,5, -195,63,0,0,35,127,0,0,125,127,0,0,35,119,2,0,125,119,2,0, -29,80,66,6,127,0,128,7,97,0,6,232,29,143,7,0,123,138,234,5, -38,6,200,137,132,0,129,255,230,224,29,63,1,0,61,71,108,0,38,6, -212,137,132,0,129,255,212,224,61,63,117,0,61,71,113,0,38,6,228,137, -132,0,129,255,194,224,29,48,128,255,126,1,228,87,76,2,10,104,191,106, -150,106,10,56,205,57,170,58,38,6,252,137,132,0,129,255,162,224,64,6, -127,0,128,7,97,0,6,232,29,143,7,0,123,138,234,5,38,6,12,138, -132,0,129,255,134,224,29,63,1,0,61,71,108,0,38,6,24,138,132,0, -129,255,116,224,61,63,117,0,61,71,113,0,38,6,40,138,132,0,129,255, -98,224,29,48,128,255,30,1,228,87,76,2,10,104,191,106,150,106,10,56, -205,57,170,58,38,6,64,138,132,0,129,255,66,224,64,6,127,0,128,7, -33,0,38,23,105,0,63,6,66,66,128,0,2,22,16,0,34,87,0,0, -34,135,5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23, -105,0,63,6,100,66,128,0,72,18,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0,63,6,136,66, -128,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0, -64,6,63,0,1,82,127,0,0,82,127,0,32,86,34,1,127,0,0,82, -127,0,0,82,127,0,0,82,127,0,0,82,127,0,198,143,2,0,0,82, -127,0,103,7,1,0,198,207,2,0,226,87,0,0,127,0,1,82,127,0, -32,86,34,1,127,0,32,86,34,1,127,0,0,82,127,0,32,86,34,1, -127,0,32,86,35,1,127,0,32,86,35,1,127,0,31,82,127,0,127,0, -128,7,33,0,38,23,105,0,63,6,12,67,128,0,2,22,200,0,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,32,86,255,127, -127,0,32,86,255,127,127,0,127,0,33,6,114,131,0,0,97,0,33,6, -154,134,0,0,97,0,33,6,158,137,0,0,97,0,33,6,244,142,0,0, -97,0,128,7,33,0,0,66,128,255,22,0,64,6,63,0,128,7,33,0, -1,66,128,255,8,0,64,6,63,0,152,7,225,243,6,232,99,71,5,0, -7,208,58,207,13,0,58,199,9,0,249,1,130,29,61,231,14,0,24,48, -28,72,28,64,191,74,25,56,130,255,222,15,28,64,28,72,191,74,10,176, -22,48,11,184,23,56,130,255,52,13,99,87,9,0,99,95,13,0,229,13, -0,186,61,23,14,0,24,176,226,183,194,2,22,96,226,103,34,2,99,103, -9,0,99,7,13,0,35,71,9,0,58,223,1,0,58,231,18,0,168,193, -28,112,61,103,14,0,216,113,236,113,179,13,191,255,80,201,43,6,148,204, -1,0,106,95,5,0,106,223,9,0,10,216,58,207,5,0,58,87,16,0, -58,135,25,0,99,87,36,0,99,135,45,0,35,111,13,0,35,103,9,0, -24,112,204,113,225,135,0,0,205,129,99,207,25,0,99,119,29,0,99,135, -33,0,250,127,23,0,99,127,42,0,0,210,61,119,14,0,195,151,42,0, -184,113,252,113,252,119,60,99,99,103,38,0,229,87,64,0,224,7,96,1, -61,151,89,0,61,159,93,0,10,248,99,151,9,0,99,159,13,0,255,47, -32,0,35,143,13,0,241,185,171,13,209,5,35,143,9,0,241,177,217,5, -99,223,21,0,1,18,181,29,22,64,61,55,81,0,23,72,99,7,1,0, -128,255,70,12,10,192,191,255,162,200,106,223,9,0,43,6,126,66,1,0, -106,199,33,0,1,130,106,95,5,0,99,87,21,0,106,135,0,0,0,18, -35,151,5,0,224,145,218,29,61,94,16,0,61,118,16,0,2,80,194,82, -10,104,205,113,46,23,1,0,203,81,34,23,105,0,42,55,1,0,72,18, -34,103,0,0,35,62,20,0,204,49,34,95,5,0,63,6,226,68,128,0, -107,0,229,29,61,134,16,0,2,80,194,82,10,120,207,129,48,23,1,0, -61,94,16,0,34,23,105,0,203,81,2,22,16,0,34,95,0,0,42,55, -1,0,11,96,204,49,35,62,20,0,34,111,5,0,63,6,30,69,128,0, -109,0,35,23,38,0,65,210,162,225,252,0,224,225,242,45,35,111,33,0, -35,103,29,0,2,80,10,112,191,18,204,113,225,135,0,0,208,17,205,17, -99,23,33,0,99,119,29,0,57,23,17,0,35,95,36,0,137,18,171,17, -245,5,25,206,20,0,57,23,17,0,0,90,137,18,162,81,156,253,203,17, -194,81,99,87,36,0,61,87,14,0,99,207,25,0,252,81,252,87,60,131, -99,135,38,0,191,7,180,254,97,210,231,21,229,87,64,0,224,7,96,1, -59,255,0,0,10,232,218,249,123,255,0,0,253,47,32,0,224,249,138,13, -27,48,59,127,5,0,63,6,182,69,128,0,111,0,88,6,255,243,128,7, -97,0,6,232,61,143,17,0,63,6,226,69,128,0,49,23,105,0,17,88, -2,22,88,0,34,87,0,0,34,135,5,0,203,81,10,48,112,0,10,16, -224,17,186,21,61,127,21,0,63,6,10,70,128,0,47,23,105,0,15,88, -2,22,88,0,34,87,0,0,34,119,5,0,203,81,10,48,110,0,10,16, -2,80,64,6,127,0,130,7,225,16,6,224,60,143,17,0,7,216,49,23, -105,0,17,88,2,22,64,1,34,87,0,0,3,56,203,81,10,48,34,135, -5,0,63,6,62,70,128,0,112,0,35,127,1,0,10,232,97,122,250,21, -60,119,21,0,3,56,46,23,105,0,14,88,2,22,64,1,34,87,0,0, -34,111,5,0,203,81,10,48,63,6,108,70,128,0,109,0,10,16,97,234, -170,5,2,232,35,103,1,0,123,103,1,0,29,80,66,6,255,16,128,7, -97,0,6,232,61,63,14,0,38,6,64,145,132,0,7,128,191,130,159,130, -208,57,161,58,129,255,192,219,29,48,128,255,0,10,64,6,127,0,128,7, -33,0,6,143,7,0,127,138,186,21,38,135,21,0,63,6,216,70,128,0, -48,23,105,0,16,88,2,22,176,0,34,87,0,0,34,127,5,0,203,81, -10,48,111,0,181,5,128,255,208,9,64,6,63,0,128,7,33,0,6,143, -7,0,127,138,186,21,38,135,21,0,63,6,16,71,128,0,48,23,105,0, -16,88,2,22,184,0,34,87,0,0,34,127,5,0,203,81,10,48,111,0, -181,5,128,255,136,9,64,6,63,0,134,7,225,240,7,224,60,95,13,0, -60,87,9,0,6,232,99,87,5,0,99,95,9,0,8,200,61,135,21,0, -25,56,48,23,105,0,16,88,2,22,240,0,34,87,0,0,35,70,4,0, -203,81,10,48,9,192,3,72,34,127,5,0,63,6,96,71,128,0,111,0, -224,81,202,5,32,86,34,1,229,53,35,223,9,0,35,215,5,0,61,63, -93,0,61,71,14,0,61,55,89,0,8,72,191,74,130,255,68,9,235,217, -225,103,0,0,235,217,226,111,0,0,234,209,225,87,0,0,77,81,12,81, -194,82,61,110,16,0,202,105,45,23,1,0,61,94,16,0,34,23,105,0, -203,81,2,22,248,0,34,95,0,0,42,55,1,0,11,96,204,49,28,56, -25,64,24,72,34,87,5,0,63,6,212,71,128,0,106,0,70,6,255,240, -134,7,225,112,7,224,60,95,13,0,60,87,9,0,6,232,99,87,5,0, -99,95,9,0,8,200,61,135,21,0,25,56,48,23,105,0,16,88,2,22, -240,0,34,87,0,0,35,70,4,0,203,81,10,48,3,72,34,127,5,0, -63,6,28,72,128,0,111,0,224,81,202,5,32,86,34,1,213,53,35,223, -9,0,35,215,5,0,61,63,93,0,61,71,14,0,61,55,89,0,8,72, -191,74,130,255,136,8,235,217,225,103,0,0,235,217,226,111,0,0,234,209, -225,87,0,0,77,81,12,81,194,82,61,110,16,0,202,105,45,23,1,0, -61,94,16,0,34,23,105,0,203,81,2,22,0,1,34,95,0,0,42,55, -1,0,11,96,204,49,28,56,25,64,34,87,5,0,63,6,142,72,128,0, -106,0,70,6,255,112,130,7,225,112,7,232,61,215,9,0,61,223,13,0, -6,224,26,48,8,200,60,71,14,0,27,56,8,72,191,74,130,255,22,8, -125,95,13,0,125,87,9,0,26,64,60,55,81,0,27,72,99,207,1,0, -128,255,250,7,60,135,17,0,29,56,48,23,105,0,10,200,72,18,34,87, -0,0,16,88,203,81,10,48,34,127,5,0,63,6,240,72,128,0,111,0, -125,215,9,0,125,223,13,0,25,80,66,6,255,112,128,7,225,48,7,232, -61,215,9,0,61,223,13,0,6,224,26,48,60,71,14,0,27,56,8,72, -191,74,130,255,172,7,125,87,9,0,125,95,13,0,29,56,60,135,21,0, -63,6,74,73,128,0,48,23,105,0,16,88,2,22,16,0,34,87,0,0, -34,127,5,0,203,81,10,48,111,0,125,215,9,0,125,223,13,0,0,82, -64,6,255,48,136,7,225,243,8,176,7,232,61,23,18,0,61,215,9,0, -2,200,99,79,13,0,6,224,60,95,101,0,61,223,13,0,60,87,97,0, -235,217,225,5,187,5,234,209,177,5,0,82,165,125,60,127,8,0,239,17, -182,5,0,82,197,117,60,119,17,0,22,64,46,23,105,0,14,88,2,22, -136,0,34,87,0,0,35,54,4,0,203,81,10,56,34,111,5,0,63,6, -190,73,128,0,109,0,195,199,4,0,186,5,0,82,181,93,35,151,13,0, -60,55,81,0,26,64,99,151,1,0,27,72,128,255,234,6,60,199,17,0, -99,87,9,0,56,199,14,0,25,184,248,191,192,2,25,88,248,95,192,98, -125,103,18,0,26,48,60,71,14,0,27,56,8,72,191,74,130,255,194,6, -10,48,11,56,24,64,24,72,191,74,130,255,76,9,11,104,10,96,23,120, -191,122,23,112,204,113,225,135,0,0,125,119,9,0,208,121,205,121,125,127, -13,0,12,82,60,135,17,0,125,87,25,0,48,23,105,0,29,56,2,22, -32,1,34,87,0,0,16,88,203,81,10,48,22,64,35,79,13,0,34,127, -5,0,63,6,98,74,128,0,111,0,10,48,224,49,178,5,128,255,114,6, -125,223,13,0,125,215,9,0,125,207,18,0,35,87,9,0,72,6,255,243, -130,7,225,243,8,176,7,232,61,23,18,0,61,215,9,0,2,200,6,224, -60,95,101,0,61,223,13,0,60,87,97,0,235,217,241,5,187,5,234,209, -193,5,32,86,34,1,229,101,60,127,8,0,239,17,198,5,32,86,34,1, -245,93,60,119,17,0,22,64,46,23,105,0,14,88,2,22,136,0,34,87, -0,0,3,48,203,81,10,56,34,111,5,0,63,6,228,74,128,0,109,0, -195,199,0,0,202,5,32,86,34,1,229,69,60,199,17,0,25,184,56,199, -14,0,25,88,248,191,192,2,248,95,192,98,125,103,18,0,26,48,60,71, -14,0,27,56,8,72,191,74,130,255,178,5,10,48,11,56,24,64,24,72, -191,74,130,255,60,8,23,120,191,122,23,112,10,96,204,113,125,119,9,0, -11,104,225,135,0,0,208,121,205,121,125,127,13,0,12,82,60,135,17,0, -125,87,25,0,48,23,105,0,16,88,2,22,40,1,34,87,0,0,29,56, -203,81,10,48,22,64,34,127,5,0,63,6,110,75,128,0,111,0,125,215, -9,0,125,223,13,0,125,207,18,0,66,6,255,243,134,7,225,243,6,232, -7,224,28,23,0,0,99,79,9,0,98,18,162,13,2,56,38,6,84,145, -132,0,129,255,194,214,0,82,128,7,62,1,60,95,13,0,60,103,9,0, -0,112,204,113,225,135,0,0,208,89,125,95,93,0,125,119,89,0,2,82, -28,119,1,0,35,151,9,0,93,71,0,0,93,119,6,0,125,87,4,0, -28,111,5,0,0,194,93,111,7,0,93,151,1,0,0,210,28,95,19,0, -1,186,93,95,2,0,165,69,26,200,194,202,61,182,16,0,217,177,23,216, -244,223,64,2,220,217,187,55,1,0,128,255,172,4,118,87,1,0,61,94, -16,0,217,89,43,135,1,0,224,129,178,45,61,118,16,0,25,104,205,113, -46,95,1,0,29,103,0,0,43,23,105,0,27,56,2,22,112,0,34,87, -0,0,65,98,203,81,10,48,35,79,9,0,35,127,49,0,12,64,47,127, -1,0,35,134,4,0,99,135,1,0,99,127,5,0,218,73,34,127,5,0, -63,6,104,76,128,0,111,0,10,192,216,185,224,193,226,5,65,210,61,119, -4,0,238,209,198,189,61,111,21,0,125,7,10,0,61,95,17,0,45,111, -14,0,43,23,105,0,13,96,125,7,12,0,125,103,14,0,125,111,8,0, -2,22,24,0,34,55,0,0,34,87,5,0,203,49,63,6,178,76,128,0, -106,0,10,48,61,71,14,0,11,56,8,72,191,74,130,255,160,6,125,87, -97,0,125,95,101,0,235,1,138,13,234,1,234,5,1,82,125,87,97,0, -125,7,101,0,24,80,70,6,255,243,128,7,97,48,6,232,8,208,9,216, -128,255,206,3,61,135,21,0,26,64,48,23,105,0,16,88,2,22,232,0, -34,87,0,0,27,72,203,81,10,48,34,127,5,0,63,6,22,77,128,0, -111,0,64,6,127,48,128,7,225,112,6,232,7,224,188,0,8,208,9,200, -0,218,28,6,17,0,202,45,61,127,17,0,28,112,47,23,105,0,15,88, -2,22,152,0,34,87,0,0,14,56,203,81,10,48,34,111,5,0,63,6, -86,77,128,0,109,0,10,216,224,217,202,53,61,95,21,0,28,80,43,23, -105,0,10,56,2,22,152,0,34,55,0,0,26,64,203,49,25,72,34,135, -5,0,63,6,130,77,128,0,112,0,10,216,245,29,127,226,218,29,29,119, -7,0,14,6,81,0,138,29,61,87,89,0,61,111,101,0,61,95,93,0, -61,103,97,0,237,89,225,13,187,5,236,81,177,13,61,55,85,0,93,231, -7,0,224,49,210,5,129,255,232,61,125,7,85,0,27,80,64,6,255,112, -128,7,225,0,6,232,61,135,17,0,63,6,240,77,128,0,48,23,105,0, -16,88,2,22,96,1,34,87,0,0,34,127,5,0,203,81,10,48,111,0, -10,224,224,225,178,21,61,111,21,0,63,6,24,78,128,0,45,23,105,0, -13,88,2,22,96,1,34,87,0,0,34,103,5,0,203,81,10,48,108,0, -10,224,61,87,89,0,61,111,101,0,61,95,93,0,61,103,97,0,237,89, -203,13,177,5,236,81,153,13,29,95,7,0,127,90,210,5,32,86,175,255, -93,87,7,0,224,225,194,21,61,127,81,0,224,121,138,21,29,48,128,255, -120,2,125,87,81,0,224,81,154,13,38,6,148,145,132,0,129,255,248,211, -93,7,7,0,0,226,28,80,64,6,255,0,128,7,225,16,8,216,187,0, -6,232,61,55,85,0,7,224,188,0,224,225,186,13,29,127,7,0,239,217, -250,5,224,49,210,5,125,7,85,0,129,255,8,61,97,226,186,45,29,103, -7,0,236,217,250,37,61,95,85,0,224,89,234,5,0,50,129,255,140,75, -125,87,85,0,61,55,85,0,224,49,162,29,29,56,129,255,112,32,224,81, -210,21,61,87,85,0,224,81,242,13,42,23,241,11,3,58,72,18,34,95, -0,0,63,6,242,78,128,0,202,89,34,87,5,0,11,48,106,0,125,7, -85,0,64,6,255,16,128,7,225,0,6,232,7,224,224,233,194,53,49,6, -200,88,133,0,61,63,81,0,125,143,105,0,224,57,194,5,29,48,128,255, -184,1,61,55,85,0,224,49,178,5,129,255,124,60,61,23,105,0,63,6, -70,79,128,0,2,22,104,1,34,87,0,0,34,135,5,0,221,81,10,48, -112,0,29,63,0,0,29,71,1,0,38,6,180,145,132,0,129,255,8,211, -45,6,48,72,133,0,125,111,105,0,129,226,201,5,29,48,129,255,20,205, -64,6,255,0,128,7,33,0,38,23,105,0,63,6,144,79,128,0,2,22, -16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0, -128,7,33,0,38,23,105,0,63,6,178,79,128,0,72,18,34,87,0,0, -34,135,5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23, -105,0,63,6,214,79,128,0,2,22,16,0,34,87,0,0,34,135,5,0, -198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0,63,6, -250,79,128,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48, -112,0,64,6,63,0,1,82,127,0,0,82,127,0,128,7,33,0,38,23, -105,0,63,6,38,80,128,0,2,22,208,0,34,87,0,0,34,135,5,0, -198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,135,17,0,63,6, -80,80,128,0,48,23,105,0,16,88,2,22,24,0,34,87,0,0,34,127, -5,0,203,81,10,48,111,0,64,6,63,0,0,82,127,0,0,82,127,0, -0,82,127,0,128,7,33,0,38,135,21,0,63,6,134,80,128,0,48,23, -105,0,16,88,2,22,144,0,34,87,0,0,34,127,5,0,203,81,10,48, -111,0,64,6,63,0,0,82,127,0,31,82,127,0,0,82,127,0,0,82, -127,0,33,6,34,112,0,0,97,0,33,6,40,113,0,0,97,0,33,6, -48,116,0,0,97,0,33,6,118,125,0,0,97,0,33,6,10,131,0,0, -97,0,33,6,242,109,1,0,97,0,33,6,76,109,1,0,97,0,33,6, -162,109,1,0,97,0,33,6,142,110,1,0,97,0,128,7,225,0,6,232, -7,224,224,233,138,13,32,54,108,0,129,255,170,203,10,232,224,233,194,21, -29,48,128,255,14,3,49,6,96,90,133,0,125,143,105,0,224,225,226,5, -125,231,17,0,1,130,125,135,4,0,32,126,64,0,93,127,6,0,29,80, -64,6,255,0,128,7,33,0,38,135,17,0,224,129,146,21,16,88,43,23, -105,0,63,6,82,81,128,0,2,22,24,0,34,87,0,0,34,127,5,0, -203,81,10,48,111,0,181,5,1,82,0,90,64,6,63,0,132,7,97,0, -6,232,39,143,17,0,99,7,0,0,224,137,210,29,17,88,43,23,105,0, -35,54,4,0,2,22,136,0,34,87,0,0,34,135,5,0,203,81,10,56, -63,6,144,81,128,0,112,0,35,127,5,0,99,127,1,0,195,199,0,0, -210,5,99,7,0,0,195,7,0,0,35,103,0,0,125,103,0,0,35,95, -2,0,125,95,2,0,29,80,68,6,127,0,128,7,33,0,38,143,17,0, -224,137,146,21,17,88,43,23,105,0,63,6,230,81,128,0,2,22,176,0, -34,87,0,0,34,135,5,0,203,81,10,48,112,0,165,5,1,82,64,6, -63,0,128,7,33,0,38,143,17,0,224,137,146,21,17,88,43,23,105,0, -63,6,24,82,128,0,2,22,184,0,34,87,0,0,34,135,5,0,203,81, -10,48,112,0,181,5,191,255,128,254,64,6,63,0,128,7,33,0,38,143, -17,0,224,137,146,21,17,88,43,23,105,0,63,6,76,82,128,0,2,22, -192,0,34,87,0,0,34,135,5,0,203,81,10,48,112,0,181,5,191,255, -84,254,64,6,63,0,128,7,33,0,39,55,1,0,32,134,40,1,102,135, -12,0,31,58,128,255,156,1,64,6,63,0,128,7,225,0,6,232,7,224, -224,233,178,37,49,6,96,90,133,0,17,86,104,1,42,23,0,0,125,143, -105,0,221,17,2,48,42,135,5,0,63,6,158,82,128,0,112,0,29,63, -0,0,38,6,220,145,132,0,129,255,180,207,46,6,48,72,133,0,125,119, -105,0,129,226,201,5,29,48,129,255,192,201,64,6,255,0,128,7,33,0, -38,23,105,0,63,6,228,82,128,0,2,22,16,0,34,87,0,0,34,135, -5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0, -63,6,6,83,128,0,72,18,34,87,0,0,34,135,5,0,198,81,10,48, -112,0,64,6,63,0,128,7,33,0,38,23,105,0,63,6,42,83,128,0, -2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6, -63,0,128,7,33,0,38,23,105,0,63,6,78,83,128,0,2,22,16,0, -34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,0,82, -127,0,32,86,34,1,127,0,0,82,127,0,0,82,127,0,128,7,33,0, -191,255,238,254,64,6,63,0,128,7,33,0,191,255,226,254,64,6,63,0, -0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0, -0,82,127,0,103,7,1,0,1,82,127,0,0,82,127,0,127,0,0,82, -127,0,32,86,33,1,127,0,32,86,35,1,127,0,32,86,35,1,127,0, -127,0,32,86,34,1,127,0,32,86,34,1,127,0,0,82,127,0,32,86, -34,1,127,0,127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82, -127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82, -127,0,0,82,127,0,32,86,35,1,127,0,0,82,127,0,33,6,220,62, -1,0,97,0,33,6,156,106,0,0,97,0,128,7,97,0,6,232,224,233, -138,13,32,54,96,2,129,255,122,200,10,232,224,233,210,13,125,7,45,0, -61,54,122,0,41,6,242,124,128,0,32,62,40,0,6,66,129,255,66,202, -29,80,64,6,127,0,128,7,97,0,6,232,29,62,0,6,128,255,210,35, -125,87,1,0,64,6,127,0,128,7,97,0,6,232,29,62,0,2,128,255, -188,35,125,87,1,0,64,6,127,0,128,7,97,0,6,232,29,62,0,6, -128,255,166,35,61,127,1,0,239,81,234,87,0,0,64,6,127,0,128,7, -97,0,6,232,29,62,0,2,128,255,138,35,61,127,1,0,239,81,234,87, -0,0,64,6,127,0,128,7,225,0,6,224,7,232,224,225,250,5,4,50, -129,255,224,199,10,224,224,225,242,21,124,239,1,0,0,234,1,138,60,119, -1,0,253,143,192,0,78,137,146,13,253,54,96,2,42,6,204,248,140,0, -202,49,128,255,56,11,65,234,29,6,240,255,230,237,28,80,64,6,255,0, -128,7,225,16,6,224,7,216,224,225,162,29,0,234,1,138,60,119,1,0, -253,143,192,0,78,137,146,13,253,54,96,2,42,6,204,248,140,0,202,49, -128,255,20,11,65,234,29,6,240,255,230,237,129,218,201,5,28,48,129,255, -74,199,64,6,255,16,128,7,225,0,6,232,7,224,224,233,242,13,61,63, -5,0,36,71,33,175,38,6,196,146,132,0,129,255,8,205,129,226,201,5, -29,48,129,255,30,199,64,6,255,0,128,7,225,0,6,232,7,224,224,233, -194,21,61,23,0,0,224,17,178,13,61,63,5,0,61,71,9,0,2,72, -38,6,232,146,132,0,129,255,210,204,129,226,201,5,29,48,129,255,232,198, -64,6,255,0,128,7,97,0,38,6,204,126,141,0,39,6,16,147,132,0, -129,255,34,175,224,81,162,13,38,6,36,147,132,0,32,62,28,2,0,66, -191,255,62,176,224,81,0,234,133,21,253,54,96,2,46,6,204,248,140,0, -206,49,29,56,29,80,36,71,89,139,204,82,202,65,128,255,40,0,65,234, -4,143,205,131,241,233,230,237,64,6,127,0,128,7,33,0,4,55,205,131, -195,50,191,255,20,181,100,87,89,139,64,6,63,0,128,7,225,16,6,232, -7,224,39,6,48,147,132,0,8,216,1,66,128,255,248,209,125,231,49,0, -125,223,57,0,31,138,125,143,61,0,125,143,65,0,93,7,68,0,125,7, -73,0,125,7,77,0,125,7,81,0,125,143,53,0,125,7,84,0,93,7, -93,2,93,7,94,2,93,7,95,2,125,7,89,0,2,114,93,119,92,2, -61,54,92,0,0,58,32,70,0,2,191,255,124,171,64,6,255,16,128,7, -225,0,6,232,29,143,93,2,109,138,150,13,38,6,68,147,132,0,32,62, -122,2,0,66,191,255,114,175,29,23,93,2,45,6,204,151,132,0,196,18, -205,17,34,55,8,0,34,95,10,0,221,49,224,89,206,5,34,23,13,0, -213,13,34,87,12,0,198,81,42,87,1,0,195,90,202,89,43,87,0,0, -43,23,5,0,202,49,2,224,63,6,212,86,128,0,124,0,93,87,93,2, -189,95,95,2,224,89,218,5,157,87,95,2,224,81,154,205,157,87,95,2, -64,6,255,0,128,7,97,0,6,232,61,127,49,0,1,58,239,63,192,0, -38,6,124,136,141,0,0,66,191,255,106,231,1,82,93,87,93,2,93,87, -95,2,93,87,94,2,64,6,127,0,70,7,94,2,70,7,95,2,0,82, -127,0,128,7,97,0,6,232,61,55,49,0,128,255,180,99,10,22,4,252, -125,23,61,0,29,48,128,255,164,27,125,87,65,0,125,7,84,0,61,54, -92,0,0,58,32,70,0,2,191,255,142,170,1,138,93,143,94,2,93,7, -95,2,2,82,64,6,127,0,152,7,225,48,6,232,61,23,57,0,7,208, -99,23,37,0,99,23,41,0,8,216,27,128,201,130,99,135,45,0,61,111, -49,0,1,226,237,231,192,0,191,255,144,181,10,48,102,7,9,0,44,6, -36,64,1,0,102,103,5,0,43,6,124,136,141,0,102,95,29,0,102,231, -33,0,32,86,244,1,102,87,21,0,125,55,89,0,1,58,191,255,64,252, -61,23,89,0,0,58,194,7,3,0,194,31,3,0,99,7,16,0,99,23, -1,0,35,134,28,0,99,135,5,0,99,223,18,0,12,122,99,127,25,0, -99,7,13,0,99,215,9,0,99,7,22,0,61,55,49,0,3,64,191,255, -18,181,1,114,93,119,95,2,88,6,255,48,128,7,33,0,38,63,61,0, -8,66,191,255,82,255,7,82,64,6,63,0,128,7,97,0,6,232,61,63, -49,0,61,71,65,0,38,6,80,147,132,0,129,255,36,202,29,48,61,63, -65,0,8,66,191,255,40,255,9,82,64,6,127,0,142,7,225,0,6,232, -61,127,49,0,1,226,239,231,192,0,191,255,198,180,106,7,9,0,46,6, -36,64,1,0,106,119,5,0,45,6,124,136,141,0,106,111,29,0,32,102, -244,1,106,231,33,0,10,48,125,87,89,0,106,103,21,0,1,58,191,255, -118,251,61,23,89,0,99,7,5,0,194,7,3,0,99,23,1,0,194,31, -3,0,99,7,16,0,8,82,99,87,18,0,61,95,65,0,99,7,25,0, -99,95,9,0,99,7,13,0,99,7,22,0,61,55,49,0,3,58,3,64, -191,255,72,180,1,130,93,135,95,2,8,82,78,6,255,0,128,7,33,0, -38,143,61,0,4,66,17,62,252,255,191,255,130,254,10,82,64,6,63,0, -128,7,97,0,6,232,61,63,49,0,38,6,124,147,132,0,0,66,129,255, -86,201,29,48,0,58,4,66,191,255,92,254,10,82,64,6,127,0,128,7, -225,0,6,232,61,55,89,0,38,231,12,0,102,7,0,0,93,7,95,2, -191,255,12,180,125,7,89,0,224,225,170,13,61,55,57,0,61,62,92,0, -32,70,0,2,128,255,248,35,10,224,224,225,242,29,61,63,49,0,28,64, -38,6,192,147,132,0,129,255,254,200,1,114,93,119,68,0,61,71,49,0, -28,72,32,54,66,0,39,6,172,147,132,0,191,255,60,173,11,18,28,6, -252,253,170,5,12,18,93,23,92,2,4,82,229,45,29,48,128,255,10,3, -93,87,92,2,10,16,162,0,224,17,186,5,5,82,181,37,97,18,170,29, -15,138,29,135,119,0,125,143,84,0,16,6,180,255,202,5,4,122,125,127, -65,0,29,23,118,0,127,18,125,23,53,0,194,5,2,6,240,255,199,13, -10,106,93,111,92,2,4,82,133,13,100,18,178,5,101,18,186,5,4,82, -165,5,3,82,64,6,255,0,128,7,225,0,6,232,61,55,89,0,38,231, -12,0,102,7,0,0,93,7,95,2,191,255,58,179,125,7,89,0,224,225, -170,13,61,55,57,0,61,62,92,0,32,70,0,2,128,255,38,35,10,224, -224,225,130,37,61,63,49,0,28,64,38,6,240,147,132,0,129,255,44,200, -11,18,28,6,252,253,170,5,12,18,93,23,92,2,29,48,128,255,162,24, -61,23,65,0,234,17,138,13,28,6,254,253,218,5,4,82,125,87,65,0, -181,45,12,82,149,45,29,48,128,255,54,2,93,87,92,2,10,16,162,0, -224,17,234,13,29,48,128,255,112,24,61,23,65,0,234,17,218,5,4,82, -125,87,65,0,213,21,5,82,181,21,97,18,138,21,15,130,29,23,118,0, -125,135,84,0,125,23,53,0,127,18,194,5,2,6,240,255,199,5,10,114, -93,119,92,2,11,82,64,6,255,0,128,7,225,0,6,232,61,55,89,0, -38,231,12,0,102,7,0,0,93,7,95,2,191,255,112,178,125,7,89,0, -224,225,170,13,61,55,57,0,61,62,92,0,32,70,0,2,128,255,92,34, -10,224,224,225,130,37,61,63,49,0,28,64,38,6,32,148,132,0,129,255, -98,199,11,18,28,6,252,253,170,5,12,18,93,23,92,2,29,48,128,255, -216,23,61,23,65,0,234,17,234,5,4,106,125,111,65,0,6,82,245,37, -93,7,92,2,12,82,181,37,61,94,20,2,37,102,184,128,4,106,65,90, -11,119,255,255,65,98,12,87,255,255,14,16,170,17,218,5,224,113,178,5, -95,106,202,245,224,17,202,13,3,130,93,135,92,2,4,122,125,127,65,0, -32,118,76,0,93,119,119,0,181,5,93,7,92,2,11,82,64,6,255,0, -128,7,225,0,6,232,61,55,89,0,38,231,12,0,102,7,0,0,93,7, -95,2,191,255,178,177,125,7,89,0,224,225,226,13,1,130,93,135,68,0, -61,71,49,0,28,72,32,54,67,0,39,6,80,148,132,0,191,255,8,171, -11,82,64,6,255,0,128,7,97,0,70,7,94,2,6,232,128,255,110,0, -29,48,128,255,110,4,11,82,64,6,127,0,128,7,97,0,6,232,29,143, -92,2,108,138,194,5,11,130,93,135,92,2,93,7,94,2,29,48,128,255, -68,0,29,48,128,255,68,4,0,82,64,6,127,0,128,7,97,0,6,232, -61,55,89,0,224,49,178,5,128,255,32,33,12,138,93,143,92,2,29,48, -128,255,26,0,29,48,128,255,26,4,93,7,93,2,93,7,95,2,93,7, -94,2,64,6,127,0,128,7,33,0,6,23,92,2,102,18,153,13,97,18, -179,37,99,18,193,37,210,29,101,18,209,21,245,21,105,18,217,5,103,18, -129,21,162,21,229,13,106,18,241,13,178,13,108,18,177,5,210,5,181,21, -32,22,236,0,149,21,32,22,238,0,229,13,32,22,221,0,181,13,32,22, -219,0,133,13,32,22,217,0,213,5,32,22,255,0,165,5,0,18,38,55, -49,0,2,56,0,66,128,255,212,95,64,6,63,0,128,7,97,0,42,6, -100,148,132,0,38,238,92,0,38,22,100,0,0,90,65,18,65,82,10,135, -255,255,2,143,255,255,240,137,178,5,0,82,197,21,65,90,104,90,198,245, -29,48,191,255,200,247,224,81,178,5,4,82,165,13,253,127,25,0,128,118, -2,144,238,121,178,5,5,82,165,5,1,82,64,6,127,0,130,7,225,0, -6,224,7,232,252,143,85,0,224,137,154,13,38,6,156,148,132,0,32,62, -203,4,0,66,191,255,246,168,28,48,2,58,3,64,128,255,192,1,10,16, -224,17,202,5,32,86,128,1,245,61,35,119,1,0,60,55,57,0,201,114, -206,49,29,56,2,64,201,66,128,255,12,32,10,16,224,17,154,53,61,135, -5,0,29,48,124,135,73,0,29,62,0,6,128,255,218,26,61,23,1,0, -226,81,242,5,6,114,92,119,92,2,32,86,130,1,229,29,61,111,5,0, -224,105,242,13,61,23,49,0,224,17,183,13,2,6,175,254,129,13,61,23, -25,3,224,17,199,5,2,6,175,254,185,13,60,63,49,0,38,6,112,148, -132,0,129,255,202,196,32,86,133,1,165,5,0,82,66,6,255,0,130,7, -225,0,6,232,7,224,253,143,85,0,224,137,154,13,38,6,168,148,132,0, -32,62,22,5,0,66,191,255,64,168,29,48,8,58,3,64,128,255,10,1, -10,16,224,17,202,5,32,86,128,1,149,61,35,119,1,0,61,55,57,0, -201,114,206,49,28,56,2,64,201,66,128,255,86,31,60,143,5,0,125,143, -77,0,28,48,191,255,126,246,224,81,242,5,8,130,93,135,92,2,32,86, -130,1,245,29,60,127,50,1,15,6,255,207,242,5,9,114,93,119,92,2, -32,86,129,1,197,21,60,111,52,1,224,105,210,5,60,103,5,0,224,97, -186,13,61,63,49,0,38,6,180,148,132,0,129,255,32,196,32,86,132,1, -165,5,0,82,66,6,255,0,130,7,225,0,6,224,7,232,252,143,85,0, -224,137,154,13,38,6,224,148,132,0,32,62,96,5,0,66,191,255,150,167, -28,48,4,58,3,64,128,255,96,0,10,16,224,17,202,5,32,86,128,1, -245,37,35,119,1,0,60,55,57,0,201,114,206,49,29,56,2,64,201,66, -128,255,172,30,10,16,224,17,154,29,29,48,29,62,0,2,128,255,130,25, -61,23,1,0,226,81,178,13,60,63,49,0,38,6,236,148,132,0,129,255, -162,195,32,86,131,1,229,5,61,127,5,0,0,82,124,127,81,0,66,6, -255,0,199,0,0,98,6,135,121,0,0,82,149,29,10,16,230,23,64,2, -38,94,122,0,194,89,235,119,1,0,231,113,234,13,38,102,122,0,194,97, -44,87,2,0,38,134,122,0,104,87,1,0,208,17,226,103,5,0,197,5, -65,82,240,81,246,229,12,80,127,0,130,7,225,0,199,0,8,224,6,232, -3,64,191,255,176,255,10,16,201,18,202,5,32,86,128,1,213,13,35,119, -1,0,125,7,84,0,61,55,57,0,201,114,206,49,28,56,2,64,191,255, -196,171,66,6,255,0,154,7,225,48,7,216,8,208,218,0,6,232,26,56, -3,64,191,255,116,255,10,224,224,225,186,5,0,82,133,93,125,215,84,0, -35,23,1,0,219,55,2,0,219,31,3,0,99,7,40,0,99,223,25,0, -99,7,9,0,99,7,5,0,2,120,61,103,57,0,201,122,204,121,35,102, -4,0,99,103,29,0,201,82,99,87,21,0,99,127,13,0,99,127,17,0, -99,231,42,0,61,111,61,0,2,82,205,17,99,23,33,0,99,7,37,0, -11,90,99,95,49,0,99,87,46,0,61,55,49,0,9,58,35,70,24,0, -191,255,64,173,99,7,40,0,99,223,25,0,35,110,4,0,99,111,29,0, -99,231,42,0,35,127,1,0,61,119,65,0,2,90,206,121,99,127,33,0, -99,7,37,0,11,98,99,103,49,0,99,95,46,0,61,55,49,0,9,58, -35,70,24,0,191,255,0,173,2,82,90,6,255,48,128,7,97,0,6,232, -29,48,31,58,128,255,8,29,224,81,186,253,64,6,127,0,128,7,33,0, -191,255,212,180,224,81,162,13,38,6,28,149,132,0,32,62,6,1,0,66, -191,255,178,165,224,81,64,6,63,0,132,7,225,112,6,200,0,218,7,224, -124,7,1,0,0,210,0,234,197,53,57,23,105,0,29,64,2,22,136,0, -34,87,0,0,35,54,4,0,217,81,10,56,34,143,5,0,63,6,140,96, -128,0,113,0,35,135,5,0,99,135,1,0,195,199,0,0,178,29,65,218, -253,54,96,2,44,6,204,248,140,0,35,63,2,0,204,49,128,255,124,22, -195,207,0,0,218,5,1,82,253,87,192,0,10,209,195,255,0,0,226,5, -60,135,1,0,65,130,124,135,1,0,65,234,4,127,205,131,239,233,166,205, -60,23,1,0,224,17,178,13,251,17,146,13,38,6,40,149,132,0,32,62, -128,6,0,66,191,255,14,165,26,80,68,6,255,112,0,90,0,18,224,49, -226,143,0,0,1,130,226,135,192,0,81,129,202,13,226,102,96,2,42,6, -204,248,140,0,202,97,44,87,73,0,235,81,163,5,10,88,65,18,2,6, -240,255,166,237,11,86,1,0,127,0,0,90,0,18,224,49,226,143,0,0, -1,130,226,135,192,0,81,129,202,13,226,102,96,2,42,6,204,248,140,0, -202,97,44,87,77,0,235,81,163,5,10,88,65,18,2,6,240,255,166,237, -11,86,1,0,127,0,0,90,0,18,224,49,226,143,0,0,1,130,226,135, -192,0,81,129,202,13,226,102,96,2,42,6,204,248,140,0,202,97,44,87, -81,0,235,81,163,5,10,88,65,18,2,6,240,255,166,237,11,86,1,0, -127,0,128,7,33,0,0,18,6,6,240,255,129,13,230,126,40,0,32,110, -160,180,205,121,47,23,17,0,2,48,128,255,8,0,64,6,63,0,132,7, -225,16,6,216,224,217,186,5,0,82,229,37,0,226,0,234,229,29,59,23, -105,0,29,64,2,22,136,0,34,87,0,0,35,54,4,0,219,81,10,56, -34,143,5,0,63,6,252,97,128,0,113,0,35,135,5,0,99,135,1,0, -195,199,0,0,210,5,1,122,253,127,192,0,15,225,65,234,4,111,205,131, -237,233,134,229,28,80,68,6,255,16,128,7,225,243,6,200,7,192,8,184, -9,176,0,226,25,216,0,210,245,61,219,142,1,0,162,61,250,238,96,2, -46,6,204,248,140,0,206,233,29,48,61,70,92,0,1,58,191,255,198,252, -10,224,224,225,250,45,29,48,24,64,2,58,191,255,182,252,10,224,224,225, -250,37,56,95,5,0,29,48,125,95,73,0,23,64,4,58,191,255,158,252, -10,224,224,81,186,29,55,143,5,0,29,48,125,143,81,0,22,64,8,58, -191,255,134,252,10,224,224,225,250,13,54,127,5,0,1,114,125,127,77,0, -93,119,92,2,29,48,191,255,132,249,65,210,129,218,224,217,154,197,224,225, -234,5,25,48,15,58,128,255,12,0,10,224,28,80,64,6,255,243,172,7, -225,243,7,208,218,0,0,218,6,224,28,176,191,255,76,170,106,7,9,0, -49,6,36,64,1,0,106,143,5,0,48,6,204,126,141,0,106,135,29,0, -32,126,244,1,106,231,33,0,10,232,106,127,21,0,0,202,149,21,220,118, -1,0,194,13,249,54,96,2,42,6,204,248,140,0,202,49,29,56,26,64, -191,255,50,252,202,217,65,202,129,226,224,225,250,237,29,48,27,56,191,255, -214,240,29,48,128,255,20,26,10,200,224,201,162,69,32,119,37,183,32,126, -176,179,239,113,202,61,35,54,8,0,0,58,32,70,80,0,191,255,146,158, -253,231,19,0,28,102,255,255,92,97,204,0,224,97,194,5,37,22,192,128, -181,5,37,22,200,128,99,23,5,0,0,194,32,22,61,0,35,190,8,0, -133,21,220,118,1,0,178,13,23,48,2,64,24,72,37,62,208,128,129,255, -108,201,202,185,32,22,44,0,129,226,65,194,224,225,138,245,35,71,5,0, -224,55,209,176,32,134,32,0,99,135,1,0,37,62,216,128,35,78,8,0, -128,255,8,155,125,7,0,0,29,48,191,255,118,169,22,56,26,64,27,72, -99,207,1,0,38,6,52,149,132,0,129,255,130,190,25,80,108,6,255,243, -128,7,33,0,0,18,6,6,240,255,129,13,230,126,40,0,32,110,160,180, -205,121,47,23,17,0,2,48,128,255,8,0,64,6,63,0,148,7,225,240, -6,216,128,255,42,25,10,224,99,231,33,0,61,6,156,149,132,0,99,239, -37,0,29,56,28,64,36,79,33,175,38,6,120,149,132,0,129,255,44,190, -99,7,20,0,99,239,25,0,99,231,29,0,224,217,250,13,35,54,20,0, -2,58,191,255,28,241,35,54,32,0,2,58,191,255,230,240,32,238,10,1, -128,7,246,1,27,48,3,56,191,255,242,251,10,200,25,56,35,54,4,0, -191,255,62,240,0,194,25,208,133,45,218,142,1,0,178,37,248,238,96,2, -46,6,204,248,140,0,206,233,29,48,128,255,14,12,99,87,20,0,234,0, -224,81,154,29,29,48,32,62,78,0,128,255,184,17,35,103,1,0,224,97, -154,13,29,48,128,255,150,13,99,87,20,0,234,0,224,81,138,13,29,48, -191,255,110,247,65,194,129,210,224,209,138,221,35,87,1,0,224,81,210,5, -35,143,20,0,224,137,194,21,35,239,20,0,35,54,4,0,2,58,191,255, -18,240,35,54,20,0,2,58,191,255,118,240,35,54,32,0,2,58,191,255, -64,240,128,7,84,1,58,6,168,149,132,0,32,54,0,6,129,255,144,183, -99,87,9,0,224,81,250,5,26,48,32,62,237,7,0,66,191,255,222,160, -35,55,9,0,0,58,32,70,0,6,191,255,184,156,28,6,240,255,145,13, -35,119,9,0,28,48,46,62,48,0,128,255,14,24,133,13,35,111,9,0, -27,48,45,62,48,0,128,255,46,16,35,23,9,0,32,70,88,1,34,62, -48,0,34,54,24,3,191,255,34,155,35,239,9,0,32,102,1,32,125,103, -8,0,1,90,125,95,5,0,32,86,21,0,125,87,10,0,32,142,88,1, -125,143,12,0,32,134,144,1,125,135,14,0,29,48,29,62,0,6,128,255, -140,18,125,87,1,0,32,54,0,6,129,255,246,182,99,87,13,0,32,54, -0,2,129,255,234,182,35,119,13,0,99,87,17,0,224,113,250,5,26,48, -32,62,8,8,0,66,191,255,52,160,35,111,17,0,224,105,250,5,26,48, -32,62,9,8,0,66,191,255,32,160,35,55,13,0,27,56,1,66,128,255, -162,17,28,48,0,58,128,255,10,224,28,48,35,63,17,0,1,66,128,255, -70,17,35,79,13,0,35,63,9,0,35,71,17,0,25,48,191,255,18,252, -99,87,20,0,10,232,35,55,17,0,253,0,129,255,92,182,35,55,13,0, -129,255,84,182,35,55,9,0,129,255,76,182,35,54,4,0,2,58,191,255, -190,238,35,54,20,0,2,58,191,255,34,239,35,54,32,0,2,58,191,255, -236,238,29,80,84,6,255,240,152,7,225,243,61,6,132,215,255,255,99,7, -36,0,7,176,64,22,133,0,34,62,180,149,99,63,41,0,6,208,99,215, -45,0,99,215,29,0,99,63,33,0,26,64,36,79,33,175,38,6,192,149, -132,0,129,255,206,187,1,138,67,143,2,0,29,48,31,58,128,255,148,22, -224,81,186,253,0,18,26,6,240,255,129,13,250,118,40,0,32,102,160,180, -204,113,46,23,17,0,59,6,184,146,132,0,2,192,224,193,186,37,32,230, -10,1,99,231,36,0,131,87,3,0,224,81,226,13,67,7,2,0,29,48, -191,255,48,174,224,81,242,5,27,48,32,62,6,1,0,66,191,255,18,159, -35,54,28,0,2,58,191,255,68,238,35,54,36,0,2,58,191,255,102,238, -28,80,128,7,32,5,55,6,228,149,132,0,24,48,35,62,4,0,191,255, -64,249,10,200,25,56,35,54,8,0,191,255,140,237,32,54,0,6,129,255, -114,181,99,87,13,0,224,81,250,5,23,48,32,62,93,8,0,66,191,255, -192,158,35,55,13,0,0,58,32,70,0,6,191,255,154,154,35,135,13,0, -26,48,48,62,48,0,128,255,246,21,99,87,36,0,10,16,226,0,224,17, -146,45,35,55,13,0,2,224,129,255,12,181,35,54,8,0,2,58,191,255, -126,237,131,119,3,0,224,113,226,13,67,7,2,0,29,48,191,255,128,173, -224,81,242,5,27,48,32,62,6,1,0,66,191,255,98,158,35,54,28,0, -2,58,191,255,148,237,35,54,36,0,2,58,191,255,182,237,28,80,128,7, -112,4,35,111,13,0,24,48,45,62,24,3,128,255,188,13,35,231,13,0, -25,48,191,255,44,249,124,87,5,0,32,102,21,0,35,231,13,0,32,94, -88,1,124,103,10,0,124,95,12,0,32,86,144,1,124,87,14,0,28,48, -28,62,0,6,128,255,46,16,124,87,1,0,32,54,0,6,129,255,152,180, -99,87,17,0,224,81,250,5,23,48,32,62,111,8,0,66,191,255,230,157, -35,55,17,0,0,58,32,70,0,6,191,255,192,153,35,127,17,0,35,119, -13,0,47,54,48,0,46,62,24,3,32,70,88,1,191,255,74,152,35,111, -17,0,35,103,13,0,45,54,24,3,44,62,24,3,32,70,88,1,191,255, -50,152,35,95,13,0,35,231,17,0,43,95,5,0,32,142,21,0,65,90, -124,95,5,0,124,143,10,0,32,134,88,1,124,135,12,0,32,126,144,1, -124,127,14,0,28,48,28,62,0,6,128,255,156,15,124,87,1,0,32,54, -0,6,129,255,6,180,99,87,21,0,224,81,250,5,23,48,32,62,123,8, -0,66,191,255,84,157,25,48,191,255,130,248,35,55,21,0,24,56,10,64, -128,255,208,14,32,54,0,2,129,255,216,179,99,87,25,0,224,81,250,5, -23,48,32,62,128,8,0,66,191,255,38,157,25,48,191,255,140,248,10,70, -255,255,35,63,25,0,26,48,128,255,88,14,131,95,3,0,224,89,226,13, -67,7,2,0,29,48,191,255,14,172,224,81,242,5,27,48,32,62,6,1, -0,66,191,255,240,156,35,87,5,0,0,18,224,81,242,5,54,48,89,49, -128,255,232,6,10,16,162,0,67,23,3,0,0,186,22,224,149,29,220,126, -1,0,194,21,247,214,96,2,44,6,204,248,140,0,204,209,26,48,128,255, -86,7,99,87,36,0,234,0,224,81,170,13,3,63,3,0,26,48,128,255, -0,13,65,186,161,226,224,225,250,229,35,143,5,0,224,137,210,5,35,135, -36,0,224,129,226,53,35,55,25,0,35,231,36,0,129,255,254,178,35,55, -21,0,129,255,246,178,35,55,17,0,129,255,238,178,35,55,13,0,129,255, -230,178,35,54,8,0,2,58,191,255,88,235,131,127,3,0,224,121,226,13, -67,7,2,0,29,48,191,255,90,171,224,81,242,5,27,48,32,62,6,1, -0,66,191,255,60,156,35,54,28,0,2,58,191,255,110,235,35,54,36,0, -2,58,191,255,144,235,28,80,128,7,74,2,35,79,21,0,35,63,17,0, -35,71,25,0,22,48,191,255,52,248,99,87,36,0,10,16,226,0,224,17, -210,53,35,55,25,0,2,224,129,255,120,178,35,55,21,0,129,255,112,178, -35,55,17,0,129,255,104,178,35,55,13,0,129,255,96,178,35,54,8,0, -2,58,191,255,210,234,131,111,3,0,224,105,226,13,67,7,2,0,29,48, -191,255,212,170,224,81,242,5,27,48,32,62,6,1,0,66,191,255,182,155, -35,54,28,0,2,58,191,255,232,234,35,54,36,0,2,58,191,255,10,235, -28,80,128,7,196,1,54,224,89,225,0,186,28,208,213,29,218,94,1,0, -130,29,247,206,96,2,48,6,204,248,140,0,208,201,25,48,35,71,13,0, -2,58,191,255,140,244,99,87,36,0,234,0,224,81,186,13,35,111,13,0, -45,111,5,0,121,111,73,0,65,186,129,210,224,209,186,229,35,103,36,0, -224,97,250,5,28,48,2,58,191,255,18,248,99,87,36,0,35,23,36,0, -224,17,194,53,35,55,25,0,2,224,129,255,174,177,35,55,21,0,129,255, -166,177,35,55,17,0,129,255,158,177,35,55,13,0,129,255,150,177,35,54, -8,0,2,58,191,255,8,234,131,87,3,0,224,81,226,13,67,7,2,0, -29,48,191,255,10,170,224,81,242,5,27,48,32,62,6,1,0,66,191,255, -236,154,35,54,28,0,2,58,191,255,30,234,35,54,36,0,2,58,191,255, -64,234,28,80,213,125,35,79,21,0,35,63,17,0,35,71,25,0,28,48, -191,255,230,246,99,87,36,0,10,16,226,0,224,17,194,53,35,55,25,0, -2,224,129,255,42,177,35,55,21,0,129,255,34,177,35,55,17,0,129,255, -26,177,35,55,13,0,129,255,18,177,35,54,8,0,2,58,191,255,132,233, -131,135,3,0,224,129,226,13,67,7,2,0,29,48,191,255,134,169,224,81, -242,5,27,48,32,62,6,1,0,66,191,255,104,154,35,54,28,0,2,58, -191,255,154,233,35,54,36,0,2,58,191,255,188,233,28,80,181,61,35,127, -17,0,24,48,47,62,48,0,128,255,156,17,35,55,25,0,35,231,36,0, -129,255,180,176,35,55,21,0,129,255,172,176,35,55,17,0,129,255,164,176, -35,55,13,0,129,255,156,176,35,54,8,0,2,58,191,255,14,233,131,119, -3,0,224,113,226,13,67,7,2,0,29,48,191,255,16,169,224,81,242,5, -27,48,32,62,6,1,0,66,191,255,242,153,35,54,28,0,2,58,191,255, -36,233,35,54,36,0,2,58,191,255,70,233,28,80,88,6,255,243,146,7, -225,112,60,6,132,215,255,255,99,7,24,0,7,200,64,22,133,0,34,62, -20,150,99,63,29,0,6,232,99,239,33,0,99,239,17,0,99,63,21,0, -29,64,36,79,33,175,38,6,240,149,132,0,129,255,252,181,1,138,67,143, -3,0,28,48,31,58,128,255,194,16,224,81,186,253,0,18,29,6,240,255, -129,13,253,118,40,0,32,102,160,180,204,113,46,23,17,0,58,6,184,146, -132,0,2,216,224,217,186,37,32,238,10,1,99,239,24,0,163,87,3,0, -224,81,226,13,67,7,3,0,28,48,191,255,94,168,224,81,242,5,26,48, -32,62,6,1,0,66,191,255,64,153,35,54,16,0,2,58,191,255,114,232, -35,54,24,0,2,58,191,255,148,232,29,80,128,7,86,1,27,48,35,62, -4,0,191,255,116,243,25,232,35,143,5,0,74,233,224,137,154,37,35,239, -24,0,163,135,3,0,224,129,226,13,67,7,3,0,28,48,191,255,8,168, -224,81,242,5,26,48,32,62,6,1,0,66,191,255,234,152,35,54,16,0, -2,58,191,255,28,232,35,54,24,0,2,58,191,255,62,232,29,80,128,7, -0,1,29,56,35,54,8,0,191,255,118,231,32,54,0,6,129,255,92,175, -99,87,13,0,224,81,154,13,38,6,36,150,132,0,32,62,26,9,0,66, -191,255,166,152,29,48,191,255,212,243,35,55,13,0,27,56,10,64,128,255, -34,10,163,119,3,0,224,113,226,13,67,7,3,0,28,48,191,255,144,167, -224,81,242,5,26,48,32,62,6,1,0,66,191,255,114,152,0,202,29,216, -165,29,219,110,1,0,210,21,249,54,96,2,35,71,13,0,42,6,204,248, -140,0,40,143,5,0,202,49,102,143,77,0,8,58,191,255,96,241,99,87, -24,0,234,0,224,81,218,5,65,202,129,218,224,217,234,229,35,127,24,0, -224,121,250,5,29,48,8,58,191,255,242,244,99,87,24,0,35,55,13,0, -35,239,24,0,129,255,148,174,35,54,8,0,2,58,191,255,6,231,163,119, -3,0,224,113,226,13,67,7,3,0,28,48,191,255,8,167,224,81,242,5, -26,48,32,62,6,1,0,66,191,255,234,151,35,54,16,0,2,58,191,255, -28,231,35,54,24,0,2,58,191,255,62,231,29,80,82,6,255,112,146,7, -225,112,59,6,132,215,255,255,99,7,24,0,64,22,133,0,34,62,48,150, -99,63,29,0,6,232,99,239,33,0,99,239,17,0,99,63,21,0,29,64, -36,79,33,175,38,6,64,150,132,0,129,255,246,179,1,138,67,143,3,0, -27,48,31,58,128,255,188,14,224,81,186,253,0,18,29,6,240,255,129,13, -253,118,40,0,32,102,160,180,204,113,46,23,17,0,57,6,184,146,132,0, -2,48,224,49,186,37,32,238,10,1,99,239,24,0,163,87,3,0,224,81, -226,13,67,7,3,0,27,48,191,255,88,166,224,81,242,5,25,48,32,62, -6,1,0,66,191,255,58,151,35,54,16,0,2,58,191,255,108,230,35,54, -24,0,2,58,191,255,142,230,29,80,128,7,38,1,35,62,4,0,191,255, -112,241,35,143,5,0,10,224,224,137,138,37,35,239,24,0,163,135,3,0, -224,129,226,13,67,7,3,0,27,48,191,255,6,166,224,81,242,5,25,48, -32,62,6,1,0,66,191,255,232,150,35,54,16,0,2,58,191,255,26,230, -35,54,24,0,2,58,191,255,60,230,29,80,165,109,28,56,35,54,8,0, -191,255,118,229,32,54,0,2,129,255,92,173,99,87,13,0,224,81,154,13, -38,6,100,150,132,0,32,62,96,9,0,66,191,255,166,150,28,48,191,255, -12,242,29,48,35,63,13,0,10,64,128,255,218,7,0,210,28,232,229,21, -221,118,1,0,146,21,250,54,96,2,42,6,204,248,140,0,202,49,35,71, -13,0,4,58,191,255,138,239,99,87,24,0,234,0,224,81,218,5,65,210, -161,234,224,233,170,237,35,135,24,0,224,129,250,5,28,48,4,58,191,255, -28,243,99,87,24,0,35,55,13,0,35,239,24,0,129,255,190,172,35,54, -8,0,2,58,191,255,48,229,163,127,3,0,224,121,226,13,67,7,3,0, -27,48,191,255,50,165,224,81,242,5,25,48,32,62,6,1,0,66,191,255, -20,150,35,54,16,0,2,58,191,255,70,229,35,54,24,0,2,58,191,255, -104,229,29,80,82,6,255,112,0,18,0,82,245,13,198,142,1,0,162,13, -234,126,96,2,45,6,204,248,140,0,205,121,15,23,119,0,213,5,65,82, -129,50,224,49,154,245,2,6,180,255,226,5,2,6,178,255,178,5,32,22, -78,0,2,80,127,0,128,7,225,0,6,232,29,143,0,0,7,224,224,137, -146,13,38,6,112,150,132,0,32,62,181,9,0,66,191,255,160,149,28,48, -191,255,62,241,10,48,191,255,158,255,29,55,3,0,10,224,128,255,116,74, -10,16,28,6,180,255,234,5,2,126,0,248,32,118,0,4,197,5,2,126, -0,184,0,112,125,119,9,0,125,127,13,0,64,6,255,0,128,7,225,48, -6,232,191,255,124,239,29,23,92,2,97,18,242,13,99,18,145,37,226,5, -101,18,147,29,105,18,131,13,181,29,61,231,61,0,0,210,92,226,4,218, -165,29,29,143,119,0,17,6,180,255,226,5,29,48,191,255,94,239,0,226, -197,37,4,210,61,231,61,0,8,218,181,13,4,210,61,231,61,0,8,218, -229,5,29,48,191,255,64,239,0,226,213,21,61,63,49,0,27,64,38,6, -124,150,132,0,129,255,84,177,29,48,26,56,28,64,27,72,128,255,22,0, -10,224,93,7,92,2,29,48,191,255,20,239,28,80,64,6,255,48,152,7, -225,112,6,232,7,208,8,200,9,224,104,226,147,13,38,6,172,150,132,0, -32,62,30,10,0,66,191,255,184,148,29,48,128,255,0,7,10,16,224,17, -178,5,2,224,197,117,61,119,49,0,1,218,238,223,192,0,191,255,192,155, -106,7,9,0,45,6,36,64,1,0,106,111,5,0,44,6,204,126,141,0, -106,103,29,0,32,94,244,1,106,223,33,0,28,120,106,95,21,0,125,87, -89,0,202,55,2,0,202,31,3,0,99,7,1,0,99,7,5,0,201,122, -61,87,57,0,61,55,89,0,99,127,17,0,99,87,9,0,99,87,13,0, -2,58,191,255,74,226,99,7,36,0,99,31,25,0,99,231,38,0,61,103, -89,0,2,90,99,215,29,0,99,103,21,0,99,7,33,0,11,98,99,103, -45,0,99,95,42,0,61,55,49,0,9,58,35,70,20,0,191,255,36,155, -61,87,89,0,99,7,36,0,99,87,21,0,99,31,25,0,99,231,38,0, -2,122,99,207,29,0,99,7,33,0,11,130,99,135,45,0,99,127,42,0, -61,55,49,0,9,58,35,70,20,0,191,255,238,154,61,55,89,0,128,255, -26,11,61,55,89,0,102,7,0,0,10,224,191,255,0,155,28,80,88,6, -255,112,128,7,225,0,6,232,191,255,210,237,93,7,92,2,29,48,128,255, -246,5,10,224,224,225,210,5,29,48,191,255,210,237,213,61,61,127,49,0, -1,226,239,231,192,0,191,255,178,154,106,7,9,0,46,6,36,64,1,0, -106,119,5,0,45,6,204,126,141,0,106,111,29,0,32,102,244,1,106,231, -33,0,29,48,125,87,89,0,106,103,21,0,10,56,15,66,191,255,170,236, -61,55,89,0,10,56,191,255,86,225,61,55,89,0,128,255,146,10,61,55, -89,0,102,7,0,0,10,224,191,255,120,154,61,63,49,0,29,71,119,0, -38,6,184,150,132,0,129,255,134,175,29,48,191,255,88,237,28,80,64,6, -255,0,128,7,33,0,38,55,49,0,128,255,250,71,10,86,4,216,64,6, -63,0,128,7,33,0,224,49,202,5,32,86,10,1,229,5,191,255,190,238, -10,48,128,255,8,0,64,6,63,0,138,7,225,243,60,6,28,151,132,0, -31,218,99,223,13,0,61,6,236,150,132,0,99,239,17,0,29,56,31,66, -6,176,36,79,33,175,38,6,248,150,132,0,129,255,28,175,99,7,0,0, -99,239,5,0,99,223,9,0,32,54,0,6,129,255,72,169,10,232,32,54, -0,2,129,255,62,169,10,200,32,54,0,6,129,255,52,169,10,216,224,233, -250,5,28,48,32,62,197,10,0,66,191,255,132,146,224,201,250,5,28,48, -32,62,198,10,0,66,191,255,116,146,224,217,138,13,28,48,32,62,199,10, -0,66,191,255,100,146,224,81,0,210,22,192,128,7,146,1,216,134,1,0, -186,5,128,7,132,1,250,230,96,2,45,6,204,248,140,0,205,225,28,48, -191,255,220,252,99,87,0,0,234,0,224,81,178,5,128,7,112,1,28,48, -0,58,128,255,82,3,28,48,32,62,78,0,128,255,122,2,28,48,60,70, -92,0,1,58,191,255,42,235,99,87,0,0,234,0,224,81,178,5,128,7, -68,1,29,48,0,58,32,70,0,6,191,255,224,141,61,190,48,0,61,62, -56,0,26,48,128,255,160,74,36,143,33,175,55,126,8,0,218,137,119,143, -5,0,175,81,119,87,1,0,61,54,24,3,61,62,48,0,32,70,88,1, -191,255,80,140,32,118,1,32,125,119,8,0,1,106,125,111,5,0,32,102, -21,0,125,103,10,0,32,94,88,1,125,95,12,0,32,86,144,1,125,87, -14,0,29,48,29,62,0,6,128,255,190,3,125,87,1,0,28,48,29,64, -2,58,191,255,160,234,99,87,0,0,234,0,224,81,234,93,61,127,5,0, -25,56,124,127,73,0,31,50,1,66,128,255,178,2,28,48,25,64,4,58, -191,255,122,234,99,87,0,0,234,0,224,81,186,77,57,111,5,0,27,48, -124,111,81,0,0,58,32,70,0,6,191,255,44,141,1,98,123,103,52,1, -32,94,253,15,123,95,48,1,32,86,20,0,123,87,54,1,32,142,1,48, -123,143,50,1,123,103,5,0,12,122,59,190,56,1,87,127,1,0,32,118, -31,0,87,119,5,0,87,215,3,0,26,48,128,255,240,69,10,22,0,184, -119,23,13,0,27,48,191,255,68,223,28,48,27,64,8,58,191,255,6,234, -99,87,0,0,234,0,224,81,154,21,59,103,5,0,1,90,124,103,77,0, -92,95,92,2,28,48,191,255,0,231,65,210,161,194,224,193,178,5,191,7, -110,254,35,87,0,0,224,81,250,5,22,48,15,58,191,255,128,237,99,87, -0,0,29,48,129,255,40,167,25,48,129,255,34,167,27,48,129,255,28,167, -35,239,0,0,3,48,2,58,191,255,250,223,35,54,12,0,2,58,191,255, -196,223,29,80,74,6,255,243,134,7,225,48,6,208,7,224,28,48,0,58, -32,70,88,1,191,255,86,140,224,209,186,5,0,82,229,93,1,138,67,143, -3,0,38,6,132,215,255,255,31,58,128,255,134,7,224,81,154,253,60,238, -8,0,0,218,245,29,58,23,105,0,27,64,2,22,136,0,34,87,0,0, -35,54,8,0,218,81,10,56,34,135,5,0,63,6,220,117,128,0,112,0, -35,127,9,0,99,127,5,0,195,199,4,0,226,5,27,48,29,56,128,255, -198,72,10,232,65,218,4,119,205,131,238,217,246,221,36,111,33,175,60,94, -8,0,124,111,5,0,171,233,124,239,1,0,29,6,176,254,150,13,38,6, -40,151,132,0,32,62,61,11,0,66,191,255,220,143,60,239,1,0,163,143, -3,0,224,137,162,21,67,7,3,0,38,6,132,215,255,255,191,255,208,158, -224,81,146,13,38,6,184,146,132,0,32,62,6,1,0,66,191,255,174,143, -29,80,70,6,255,48,128,7,225,0,7,224,188,0,6,232,61,54,92,0, -0,58,32,70,0,2,191,255,120,139,29,48,191,255,114,252,125,87,65,0, -224,225,178,85,61,86,100,0,34,6,52,151,132,0,2,94,9,0,2,103, -0,0,74,103,0,0,65,18,65,82,226,89,154,253,1,130,125,135,113,0, -61,119,53,0,128,126,2,144,125,127,116,0,93,119,118,0,32,110,40,0, -93,111,120,0,8,74,93,79,121,0,28,6,180,255,202,13,4,90,32,86, -76,0,93,87,119,0,125,95,65,0,42,6,64,92,133,0,197,29,32,134, -78,0,93,135,119,0,42,6,16,92,133,0,197,21,9,16,230,23,64,2, -61,142,122,0,194,137,202,17,34,135,0,0,113,135,0,0,34,127,2,0, -113,127,2,0,34,119,4,0,113,119,4,0,9,104,95,74,224,105,170,237, -61,54,92,0,191,255,64,221,64,6,255,0,128,7,33,0,7,136,177,0, -102,143,53,0,70,63,118,0,38,54,92,0,191,255,36,221,64,6,63,0, -128,7,225,16,6,224,7,232,8,216,29,48,0,58,32,70,0,2,191,255, -144,138,28,6,240,255,129,13,28,48,61,62,12,0,32,70,244,1,128,255, -178,206,32,134,3,64,125,135,8,0,125,223,5,0,29,48,29,62,0,2, -128,255,166,0,125,87,1,0,64,6,255,16,128,7,225,16,6,232,7,224, -0,58,8,216,32,70,0,6,191,255,74,138,60,23,105,0,61,62,56,1, -2,22,184,0,34,87,0,0,34,143,5,0,220,81,10,48,63,6,192,119, -128,0,113,0,60,23,105,0,63,6,220,119,128,0,2,22,176,0,34,87, -0,0,34,135,5,0,220,81,10,48,112,0,125,87,52,1,234,0,10,6, -205,255,151,13,38,6,64,151,132,0,32,62,224,11,0,66,191,255,10,142, -28,48,128,255,62,5,10,48,128,255,96,5,125,87,48,1,32,118,20,0, -125,119,54,1,32,110,1,48,125,111,50,1,125,223,5,0,29,48,191,255, -44,220,64,6,255,16,0,114,0,122,6,22,4,0,68,18,34,87,253,255, -15,72,206,81,10,112,225,111,0,0,13,120,201,121,231,17,209,245,15,80, -206,81,127,0,152,7,225,0,6,232,61,23,57,0,32,134,0,16,99,23, -41,0,99,23,37,0,99,135,45,0,61,119,49,0,1,226,238,231,192,0, -191,255,180,148,106,7,9,0,45,6,36,64,1,0,106,111,5,0,44,6, -204,126,141,0,106,103,29,0,10,48,106,231,33,0,32,94,232,3,125,87, -89,0,106,95,21,0,1,58,191,255,100,219,61,23,89,0,99,7,16,0, -99,23,1,0,35,86,28,0,99,87,5,0,99,7,9,0,99,7,13,0, -8,130,99,135,18,0,32,126,17,0,99,127,25,0,99,7,22,0,12,50, -12,58,3,64,191,255,60,148,61,55,89,0,125,7,84,0,128,255,100,4, -61,55,89,0,102,7,0,0,10,224,191,255,74,148,28,80,88,6,255,0, -132,7,225,112,6,232,0,18,29,6,240,255,129,13,253,126,40,0,32,110, -160,180,205,121,47,23,17,0,2,48,224,49,202,5,32,86,10,1,245,101, -3,56,191,255,48,231,35,103,1,0,10,216,224,97,186,5,0,82,213,93, -32,54,0,2,129,255,96,163,99,87,5,0,224,81,154,13,38,6,136,151, -132,0,32,62,222,12,0,66,191,255,170,140,0,202,31,210,0,226,165,29, -219,86,1,0,210,21,252,54,96,2,46,6,204,248,140,0,35,63,5,0, -206,49,191,255,214,228,224,81,154,13,35,23,5,0,34,23,5,0,249,17, -183,5,2,200,28,208,65,226,161,218,224,217,234,229,127,210,218,13,29,56, -38,6,76,151,132,0,129,255,186,168,35,55,5,0,129,255,210,162,0,82, -133,37,250,54,96,2,48,6,204,248,140,0,35,63,5,0,208,49,191,255, -138,228,10,224,224,225,242,5,35,55,5,0,129,255,172,162,28,80,213,13, -35,119,5,0,29,48,46,62,12,0,128,255,26,204,35,55,5,0,129,255, -146,162,0,82,68,6,255,112,132,7,225,48,6,208,0,18,7,6,240,255, -129,13,231,126,40,0,32,110,160,180,205,121,47,23,17,0,2,48,224,49, -186,5,0,82,181,61,3,56,191,255,58,230,35,103,1,0,10,224,224,97, -186,5,0,82,149,53,28,56,35,54,4,0,191,255,122,218,0,218,0,234, -149,37,220,94,1,0,194,29,253,54,96,2,48,6,204,248,140,0,208,49, -134,127,69,0,224,121,162,21,230,23,85,0,111,18,146,13,29,56,2,64, -38,6,148,151,132,0,129,255,242,167,229,5,26,56,15,66,191,255,218,228, -202,217,65,234,161,226,224,225,250,221,35,54,4,0,2,58,191,255,112,218, -27,80,68,6,255,48,128,7,33,0,191,255,156,243,64,6,63,0,130,7, -33,0,0,18,6,6,240,255,129,13,230,126,40,0,32,110,160,180,205,121, -47,23,17,0,2,48,224,49,186,5,0,82,181,13,3,56,191,255,146,229, -35,95,1,0,224,89,234,103,0,0,12,80,138,0,66,6,63,0,130,7, -33,0,0,18,6,6,240,255,129,13,230,126,40,0,32,110,160,180,205,121, -47,23,17,0,2,48,224,49,186,5,0,82,213,13,3,56,191,255,86,229, -10,48,191,255,2,245,10,6,178,255,226,23,0,0,2,80,138,0,66,6, -63,0,128,7,225,0,15,138,61,6,16,92,133,0,125,143,0,0,128,230, -238,238,61,22,6,0,224,17,250,5,2,50,129,255,100,161,10,16,224,17, -194,5,1,130,98,135,0,0,61,22,12,0,224,17,250,5,2,50,129,255, -74,161,10,16,224,17,194,5,2,122,98,127,0,0,61,22,18,0,224,17, -250,5,2,50,129,255,48,161,10,16,224,17,194,5,4,114,98,119,0,0, -61,22,24,0,224,17,250,5,2,50,129,255,22,161,10,16,224,17,194,5, -8,106,98,111,0,0,61,22,30,0,224,17,250,5,2,50,129,255,252,160, -10,16,224,17,178,5,98,231,0,0,61,22,36,0,224,17,250,5,2,50, -129,255,228,160,10,16,224,17,178,5,98,231,0,0,61,22,42,0,224,17, -250,5,2,50,129,255,204,160,10,16,224,17,210,5,128,94,255,255,98,95, -0,0,15,82,61,6,64,92,133,0,125,87,0,0,61,22,6,0,224,17, -250,5,2,50,129,255,164,160,10,16,224,17,194,5,1,138,98,143,0,0, -61,22,12,0,224,17,250,5,2,50,129,255,138,160,10,16,224,17,194,5, -2,130,98,135,0,0,61,22,18,0,224,17,250,5,2,50,129,255,112,160, -10,16,224,17,194,5,4,122,98,127,0,0,61,22,24,0,224,17,250,5, -2,50,129,255,86,160,10,16,224,17,194,5,8,114,98,119,0,0,61,22, -30,0,224,17,250,5,2,50,129,255,60,160,10,16,224,17,178,5,98,231, -0,0,61,22,36,0,224,17,250,5,2,50,129,255,36,160,10,16,224,17, -178,5,98,231,0,0,61,22,42,0,224,17,250,5,2,50,129,255,12,160, -10,16,224,17,210,5,128,102,255,255,98,103,0,0,41,6,20,84,128,0, -38,6,204,248,140,0,32,62,16,0,32,70,96,2,129,255,204,161,38,6, -4,92,133,0,129,255,122,164,64,6,255,0,132,7,33,0,41,6,16,125, -128,0,99,7,1,0,99,7,5,0,38,6,204,248,140,0,32,62,16,0, -32,70,96,2,129,255,242,162,68,6,63,0,6,88,128,7,33,0,224,49, -250,5,6,50,129,255,160,159,10,48,224,49,178,5,102,7,0,0,6,80, -64,6,63,0,128,7,33,0,224,49,210,5,129,58,185,5,129,255,96,159, -64,6,63,0,128,7,128,7,33,6,150,62,1,0,97,0,33,6,226,197, -1,0,97,0,33,6,146,142,1,0,97,0,33,6,140,68,1,0,97,0, -33,6,98,63,1,0,97,0,33,6,2,147,1,0,97,0,33,6,96,142, -1,0,97,0,33,6,60,168,1,0,97,0,128,7,225,16,6,216,7,224, -224,217,146,61,60,87,1,0,10,16,65,18,2,143,255,255,224,137,202,253, -2,134,255,255,170,129,210,45,0,234,253,118,12,0,44,6,112,161,132,0, -204,113,60,63,1,0,46,55,1,0,129,255,244,195,224,81,154,21,27,48, -28,56,29,16,226,22,12,0,42,6,112,161,132,0,202,17,34,95,9,0, -63,6,200,125,128,0,107,0,229,13,65,234,29,6,235,255,246,221,38,6, -168,156,132,0,129,255,132,164,27,48,28,56,128,255,98,4,64,6,255,16, -132,7,33,0,9,138,99,143,1,0,1,130,99,135,5,0,38,6,220,156, -132,0,39,6,24,157,132,0,32,70,24,0,32,78,23,0,129,255,80,164, -39,6,224,70,133,0,38,6,44,157,132,0,129,255,64,164,68,6,63,0, -130,7,225,48,6,208,7,216,97,210,147,93,0,226,252,238,12,0,47,6, -108,162,132,0,207,233,61,63,1,0,59,55,5,0,129,255,80,195,224,81, -138,69,98,210,218,29,99,7,1,0,61,55,9,0,3,56,4,66,128,255, -90,194,10,16,224,17,242,5,2,56,38,6,168,157,132,0,129,255,236,163, -35,71,1,0,61,63,1,0,8,72,38,6,60,157,132,0,129,255,216,163, -133,77,59,55,9,0,3,64,37,62,88,129,129,255,110,176,97,82,146,13, -59,63,5,0,38,6,116,157,132,0,129,255,182,163,245,53,61,55,9,0, -3,56,4,66,128,255,158,194,10,16,224,17,226,45,2,56,38,6,168,157, -132,0,129,255,150,163,245,37,65,226,100,226,150,181,59,63,5,0,38,6, -200,157,132,0,129,255,128,163,38,6,76,157,132,0,129,255,118,163,0,234, -253,142,12,0,48,6,108,162,132,0,208,137,49,71,9,0,49,63,1,0, -40,71,5,0,49,79,5,0,38,6,224,157,132,0,129,255,78,163,65,234, -100,234,182,237,66,6,255,48,136,7,225,16,6,216,7,224,60,55,5,0, -37,62,91,129,35,70,4,0,129,255,210,175,10,232,60,55,9,0,37,62, -91,129,35,70,8,0,129,255,192,175,202,233,98,234,242,5,38,6,68,158, -132,0,129,255,10,163,181,77,35,54,12,0,0,58,4,66,191,255,134,130, -99,218,154,37,35,55,5,0,35,63,9,0,35,70,12,0,4,74,128,255, -120,193,10,232,224,233,242,5,29,56,38,6,156,158,132,0,129,255,212,162, -35,63,5,0,35,79,13,0,35,71,9,0,99,79,1,0,38,6,40,158, -132,0,129,255,186,162,181,29,60,55,13,0,35,70,12,0,37,62,91,129, -129,255,78,175,97,82,242,5,38,6,248,157,132,0,129,255,154,162,181,21, -35,55,5,0,35,63,9,0,35,70,12,0,4,74,128,255,226,193,10,232, -224,233,242,5,29,56,38,6,120,158,132,0,129,255,116,162,72,6,255,16, -128,7,225,0,229,87,64,0,224,7,96,1,36,239,206,131,229,87,64,0, -224,7,96,1,10,248,64,86,0,0,10,87,116,241,138,230,64,0,64,86, -0,0,74,231,116,241,255,47,32,0,229,87,64,0,224,7,96,1,10,248, -64,86,0,0,10,87,118,241,138,230,64,0,64,86,0,0,74,231,118,241, -255,47,32,0,229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87, -36,241,138,230,64,0,64,86,0,0,74,231,36,241,255,47,32,0,100,234, -215,37,229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87,38,241, -138,230,64,0,64,86,0,0,74,231,38,241,255,47,32,0,104,234,167,21, -229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87,40,241,138,230, -64,0,64,86,0,0,74,231,40,241,255,47,32,0,229,87,64,0,224,7, -96,1,10,248,64,86,0,0,10,87,34,241,138,230,64,0,64,86,0,0, -74,231,34,241,255,47,32,0,229,87,64,0,224,7,96,1,10,248,64,86, -0,0,10,87,32,241,138,230,64,0,64,86,0,0,74,231,32,241,255,47, -32,0,3,138,68,143,224,133,129,255,214,70,129,255,24,65,129,255,86,71, -229,87,64,0,224,7,96,1,10,224,64,86,0,0,10,87,116,241,10,248, -32,86,191,255,74,249,64,86,0,0,74,255,116,241,252,47,32,0,229,87, -64,0,224,7,96,1,10,224,64,86,0,0,10,87,118,241,10,248,32,86, -191,255,74,249,64,86,0,0,74,255,118,241,252,47,32,0,229,87,64,0, -224,7,96,1,10,224,64,86,0,0,10,87,36,241,10,248,32,86,191,255, -74,249,64,86,0,0,74,255,36,241,252,47,32,0,100,234,151,45,229,87, -64,0,224,7,96,1,10,224,64,86,0,0,10,87,38,241,10,248,32,86, -191,255,74,249,64,86,0,0,74,255,38,241,252,47,32,0,104,234,199,21, -229,87,64,0,224,7,96,1,10,232,64,86,0,0,10,87,40,241,10,248, -32,86,191,255,74,249,64,86,0,0,74,255,40,241,253,47,32,0,229,87, -64,0,224,7,96,1,10,232,64,86,0,0,10,87,34,241,10,248,32,86, -191,255,74,249,64,86,0,0,74,255,34,241,253,47,32,0,229,87,64,0, -224,7,96,1,10,232,64,86,0,0,10,87,32,241,10,248,32,86,191,255, -74,249,64,86,0,0,74,255,32,241,253,47,32,0,64,6,255,0,128,7, -33,0,128,255,226,3,64,6,63,0,128,7,33,0,128,54,255,255,129,255, -130,31,64,6,63,0,1,138,100,143,241,133,127,0,128,7,97,0,0,234, -253,134,12,0,47,6,112,161,132,0,207,129,48,63,1,0,48,71,5,0, -38,6,188,158,132,0,129,255,250,159,65,234,29,6,235,255,230,237,64,6, -127,0,144,7,225,0,7,232,98,50,249,5,38,6,252,158,132,0,129,255, -218,159,213,117,61,55,5,0,39,6,12,159,132,0,129,255,4,191,224,81, -218,5,39,6,238,238,34,34,149,77,61,55,5,0,39,6,24,159,132,0, -129,255,234,190,224,81,218,5,39,6,221,221,51,51,197,61,61,55,5,0, -39,6,204,158,132,0,129,255,208,190,224,81,218,5,39,6,187,187,85,85, -245,45,61,55,5,0,39,6,40,159,132,0,129,255,182,190,224,81,218,5, -39,6,170,170,102,102,165,37,61,55,5,0,39,6,52,159,132,0,129,255, -156,190,224,81,218,5,39,6,68,51,34,17,213,21,61,55,5,0,37,62, -96,129,129,255,132,190,224,81,218,5,39,6,153,153,119,119,149,13,61,55, -5,0,0,58,32,70,16,0,129,255,30,185,10,56,3,48,128,255,58,148, -3,48,128,255,172,152,10,224,224,225,210,13,3,48,128,255,176,149,61,63, -5,0,28,64,38,6,216,158,132,0,129,255,6,159,133,13,61,63,5,0, -38,6,64,159,132,0,129,255,246,158,1,50,128,255,52,139,80,6,255,0, -128,7,225,48,64,230,16,0,28,232,128,255,216,138,252,81,218,5,128,255, -136,138,74,238,16,0,61,135,13,0,61,231,25,0,16,134,208,255,130,130, -16,222,255,255,29,238,28,0,0,210,133,29,61,111,1,0,60,71,1,0, -237,65,130,21,28,56,38,6,4,160,132,0,129,255,160,158,29,56,61,71, -1,0,38,6,236,159,132,0,129,255,144,158,65,210,68,226,68,234,106,210, -222,5,27,96,95,218,224,97,202,229,64,6,255,48,128,7,97,0,7,232, -99,50,242,5,38,6,84,160,132,0,129,255,102,158,181,53,61,55,9,0, -0,58,32,70,16,0,129,255,68,184,61,23,5,0,2,23,0,0,2,6, -207,255,130,13,2,6,206,255,210,13,2,6,204,255,162,21,149,29,10,63, -0,0,38,6,36,160,132,0,129,255,44,158,229,21,42,63,0,0,38,6, -52,160,132,0,129,255,28,158,229,13,42,63,1,0,38,6,68,160,132,0, -129,255,12,158,229,5,38,6,116,160,132,0,129,255,0,158,64,6,127,0, -128,7,225,0,7,224,100,50,242,5,38,6,148,160,132,0,129,255,232,157, -197,45,60,55,9,0,0,58,32,70,16,0,129,255,198,183,10,232,60,55, -13,0,0,58,32,70,16,0,129,255,182,183,60,23,5,0,2,23,0,0, -2,6,207,255,130,13,2,6,206,255,130,13,2,6,204,255,130,13,165,13, -93,87,0,0,197,13,125,87,0,0,149,13,125,87,1,0,229,5,38,6, -132,160,132,0,129,255,144,157,64,6,255,0,144,7,225,0,39,55,1,0, -39,6,224,160,132,0,129,255,180,188,224,81,202,61,3,48,39,6,170,170, -102,102,128,255,124,146,3,48,128,255,12,151,224,81,210,29,32,230,0,32, -3,48,128,255,224,150,10,6,0,224,209,5,3,48,128,255,212,150,10,224, -28,48,129,255,70,151,10,232,29,56,28,64,3,48,0,74,128,255,74,150, -28,134,255,255,221,129,80,7,0,0,149,37,32,54,80,0,129,255,36,151, -10,232,29,96,45,6,188,160,132,0,13,94,34,0,13,87,0,0,76,87, -0,0,65,106,65,98,237,89,154,253,213,13,32,54,0,32,129,255,252,150, -10,232,29,48,32,62,0,32,129,255,44,46,93,7,255,31,60,6,236,160, -132,0,28,48,129,255,200,46,29,48,129,255,194,46,28,48,129,255,188,46, -29,48,129,255,178,150,80,6,255,0,128,7,225,16,6,216,7,224,60,55, -5,0,0,58,0,66,129,255,160,182,10,232,29,6,240,255,0,82,177,13, -253,22,40,0,32,118,160,180,206,17,34,111,17,0,224,105,162,5,2,80, -10,48,224,49,178,5,98,218,146,13,60,63,5,0,38,6,44,161,132,0, -129,255,124,156,213,13,128,255,38,0,10,16,224,17,130,13,2,56,29,64, -38,6,72,161,132,0,129,255,98,156,64,6,255,16,127,0,33,6,230,141, -1,0,97,0,33,6,48,133,1,0,97,0,128,7,225,0,6,232,7,224, -224,233,226,13,49,6,136,92,133,0,125,143,49,0,0,58,128,255,102,1, -129,226,201,5,29,48,129,255,70,150,64,6,255,0,128,7,97,0,6,232, -224,233,138,13,32,54,52,0,129,255,80,150,10,232,224,233,226,53,49,6, -112,92,133,0,125,143,49,0,125,7,1,0,125,7,29,0,125,7,33,0, -1,50,125,55,37,0,125,7,25,0,2,50,129,255,232,149,125,87,13,0, -0,18,149,13,2,96,61,143,13,0,193,98,209,97,108,7,0,0,65,18, -61,135,37,0,240,17,214,245,191,255,166,183,100,87,25,133,125,7,8,0, -32,54,0,2,129,255,180,149,125,87,17,0,32,54,0,2,129,255,168,149, -125,87,21,0,29,80,64,6,127,0,3,30,224,255,99,71,25,0,99,255, -13,0,99,223,9,0,99,231,5,0,7,216,99,239,1,0,9,224,6,232, -224,233,138,13,32,54,52,0,129,255,176,149,10,232,224,233,178,69,125,223, -1,0,125,7,33,0,125,7,29,0,125,231,5,0,60,55,5,0,49,6, -112,92,133,0,125,55,37,0,125,143,49,0,60,111,1,0,252,95,9,0, -125,95,44,0,125,111,41,0,252,143,11,0,125,143,46,0,227,135,25,0, -125,135,25,0,193,50,129,255,38,149,125,87,13,0,0,18,149,13,2,96, -61,143,13,0,193,98,209,97,108,7,0,0,65,18,61,135,37,0,240,17, -214,245,125,7,8,0,32,54,0,2,129,255,250,148,125,87,17,0,32,54, -0,2,129,255,238,148,125,87,21,0,29,80,35,223,9,0,35,231,5,0, -35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,112,6,232, -7,200,224,233,186,5,128,7,30,1,49,6,112,92,133,0,125,143,49,0, -60,6,72,163,132,0,61,63,29,0,28,48,129,255,164,154,61,63,29,0, -38,6,100,163,132,0,129,255,150,154,61,63,33,0,38,6,124,163,132,0, -129,255,136,154,61,63,29,0,28,48,129,255,126,154,61,135,8,0,224,129, -162,29,61,55,25,0,39,6,156,162,132,0,6,64,128,255,206,118,61,55, -25,0,61,71,8,0,39,6,148,163,132,0,128,255,188,118,61,63,8,0, -38,6,232,162,132,0,129,255,70,154,229,53,61,111,33,0,224,105,162,53, -38,6,212,162,132,0,129,255,50,154,61,55,25,0,37,62,112,129,128,255, -142,118,0,226,149,37,28,216,61,95,13,0,193,218,219,89,43,23,0,0, -224,17,242,21,28,214,1,0,61,55,25,0,26,64,2,72,39,6,16,163, -132,0,128,255,98,118,61,119,13,0,26,56,206,217,59,71,0,0,38,6, -36,163,132,0,129,255,228,153,65,226,61,103,37,0,236,225,214,221,61,95, -1,0,61,87,5,0,203,15,65,0,61,143,33,0,61,55,13,0,106,143, -5,0,129,255,166,147,61,55,17,0,129,255,214,147,61,55,21,0,129,255, -206,147,129,202,201,5,29,48,129,255,196,147,64,6,255,112,128,7,33,0, -38,6,168,163,132,0,129,255,146,153,32,86,33,48,64,6,63,0,128,7, -3,30,224,255,99,71,25,0,99,255,13,0,99,231,5,0,99,223,9,0, -7,224,99,239,1,0,9,216,6,232,224,233,138,13,32,54,52,0,129,255, -158,147,10,232,224,233,162,37,29,48,28,56,35,22,24,0,34,71,1,0, -27,72,191,255,176,253,49,6,160,92,133,0,125,143,49,0,38,6,204,163, -132,0,129,255,50,153,191,255,20,181,10,48,128,255,194,48,125,87,8,0, -234,0,224,81,218,5,61,55,17,0,128,255,210,41,29,80,35,223,9,0, -35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7, -225,0,6,232,7,224,224,233,226,13,49,6,160,92,133,0,125,143,49,0, -0,58,191,255,24,254,129,226,201,5,29,48,129,255,248,146,64,6,255,0, -134,7,225,48,6,232,61,143,8,0,99,7,9,0,224,137,234,45,0,218, -245,37,27,224,61,215,13,0,61,55,25,0,61,71,17,0,61,79,21,0, -35,126,8,0,99,127,1,0,193,226,36,119,25,133,220,209,99,119,5,0, -61,62,28,0,128,255,70,26,61,103,13,0,122,87,0,0,204,225,60,95, -0,0,224,89,226,5,61,87,33,0,65,82,125,87,33,0,65,218,61,143, -37,0,241,217,246,213,229,5,61,135,33,0,65,130,125,135,33,0,36,127, -29,133,15,62,1,0,100,63,29,133,38,6,244,163,132,0,129,255,72,152, -61,119,33,0,224,113,194,5,32,86,19,48,165,5,0,82,70,6,255,48, -128,7,3,30,224,255,99,71,25,0,99,255,13,0,99,231,5,0,99,223, -9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13,32,54,52,0, -129,255,72,146,10,232,224,233,130,29,29,48,28,56,35,22,24,0,34,71, -1,0,27,72,191,255,90,252,49,6,184,92,133,0,125,143,49,0,38,6, -8,164,132,0,129,255,220,151,61,55,17,0,128,255,144,40,29,80,35,223, -9,0,35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0, -128,7,225,0,6,232,7,224,224,233,226,13,49,6,184,92,133,0,125,143, -49,0,0,58,191,255,214,252,129,226,201,5,29,48,129,255,182,145,64,6, -255,0,130,7,225,48,6,232,61,143,8,0,224,137,170,45,0,218,181,37, -27,224,193,226,61,215,13,0,61,127,41,0,61,55,25,0,61,71,17,0, -61,79,21,0,220,209,99,127,1,0,61,62,28,0,128,255,200,25,61,111, -13,0,122,87,0,0,205,225,60,103,0,0,224,97,226,5,61,95,33,0, -65,90,125,95,33,0,65,218,61,87,37,0,234,217,182,221,229,5,61,143, -33,0,65,138,125,143,33,0,36,135,29,133,16,62,1,0,100,63,29,133, -38,6,48,164,132,0,129,255,18,151,61,127,33,0,224,121,194,5,32,86, -19,48,165,5,0,82,66,6,255,48,128,7,3,30,224,255,99,71,25,0, -99,255,13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216, -6,232,224,233,138,13,32,54,52,0,129,255,18,145,10,232,224,233,146,37, -29,48,28,56,35,22,24,0,34,71,1,0,27,72,191,255,36,251,49,6, -208,92,133,0,125,143,49,0,38,6,68,164,132,0,129,255,166,150,61,55, -17,0,128,255,90,39,61,63,17,0,0,50,32,70,0,2,191,255,62,127, -125,87,8,0,29,80,35,223,9,0,35,231,5,0,35,239,1,0,35,255, -13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233,226,13, -49,6,208,92,133,0,125,143,49,0,0,58,191,255,142,251,129,226,201,5, -29,48,129,255,110,144,64,6,255,0,130,7,225,48,6,232,61,143,8,0, -224,137,170,45,0,218,181,37,27,224,193,226,61,215,13,0,61,127,41,0, -61,55,25,0,61,71,17,0,61,79,21,0,220,209,99,127,1,0,61,62, -28,0,128,255,10,25,61,111,13,0,122,87,0,0,205,225,60,103,0,0, -224,97,226,5,61,95,33,0,65,90,125,95,33,0,65,218,61,87,37,0, -234,217,182,221,229,5,61,143,33,0,65,138,125,143,33,0,36,135,29,133, -16,62,1,0,100,63,29,133,38,6,108,164,132,0,129,255,202,149,61,127, -33,0,224,121,194,5,32,86,19,48,165,5,0,82,66,6,255,48,128,7, -3,30,220,255,99,71,29,0,99,255,17,0,99,231,9,0,99,223,13,0, -7,224,99,239,5,0,9,216,6,232,224,233,138,13,32,54,52,0,129,255, -202,143,10,232,224,233,242,37,29,48,28,56,35,22,28,0,34,71,1,0, -27,72,191,255,220,249,48,6,232,92,133,0,125,135,49,0,38,6,128,164, -132,0,129,255,94,149,61,55,17,0,128,255,18,38,0,58,61,55,41,0, -61,71,17,0,32,118,129,0,99,119,1,0,32,78,0,2,128,255,206,44, -125,87,8,0,29,80,35,223,13,0,35,231,9,0,35,239,5,0,35,255, -17,0,3,30,36,0,127,0,128,7,225,0,6,232,7,224,224,233,226,13, -49,6,232,92,133,0,125,143,49,0,0,58,191,255,58,250,129,226,201,5, -29,48,129,255,26,143,64,6,255,0,130,7,225,48,6,232,61,143,8,0, -224,137,170,45,0,218,181,37,27,224,193,226,61,215,13,0,61,127,41,0, -61,55,25,0,61,71,17,0,61,79,21,0,220,209,99,127,1,0,61,62, -28,0,128,255,52,24,61,111,13,0,122,87,0,0,205,225,60,103,0,0, -224,97,226,5,61,95,33,0,65,90,125,95,33,0,65,218,61,87,37,0, -234,217,182,221,229,5,61,143,33,0,65,138,125,143,33,0,36,135,29,133, -16,62,1,0,100,63,29,133,38,6,168,164,132,0,129,255,118,148,61,127, -33,0,224,121,194,5,32,86,19,48,165,5,0,82,66,6,255,48,128,7, -3,30,224,255,99,71,25,0,99,255,13,0,99,231,5,0,99,223,9,0, -7,224,99,239,1,0,9,216,6,232,224,233,138,13,32,54,52,0,129,255, -118,142,10,232,224,233,194,21,29,48,28,56,35,22,24,0,34,71,1,0, -27,72,191,255,136,248,49,6,0,93,133,0,125,143,49,0,38,6,188,164, -132,0,129,255,10,148,29,80,35,223,9,0,35,231,5,0,35,239,1,0, -35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233, -226,13,49,6,0,93,133,0,125,143,49,0,0,58,191,255,12,249,129,226, -201,5,29,48,129,255,236,141,64,6,255,0,128,7,225,48,6,232,61,143, -8,0,224,137,170,37,0,218,181,29,27,224,61,215,13,0,193,226,220,209, -61,55,25,0,61,62,28,0,128,255,128,23,61,119,13,0,122,87,0,0, -206,225,60,111,0,0,224,105,226,5,61,103,33,0,65,98,125,103,33,0, -65,218,61,95,37,0,235,217,182,229,229,5,61,87,33,0,65,82,125,87, -33,0,36,143,29,133,17,62,1,0,100,63,29,133,38,6,200,164,132,0, -129,255,88,147,61,135,33,0,224,129,194,5,32,86,19,48,165,5,0,82, -64,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255,13,0,99,231, -5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13, -32,54,52,0,129,255,88,141,10,232,224,233,178,29,29,48,28,56,35,22, -24,0,34,71,1,0,27,72,191,255,106,247,49,6,24,93,133,0,125,143, -49,0,38,6,220,164,132,0,129,255,236,146,253,63,45,0,38,6,12,165, -132,0,129,255,222,146,29,80,35,223,9,0,35,231,5,0,35,239,1,0, -35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233, -226,13,49,6,24,93,133,0,125,143,49,0,0,58,191,255,224,247,129,226, -201,5,29,48,129,255,192,140,64,6,255,0,132,7,225,48,6,232,61,143, -8,0,224,137,234,45,0,218,245,37,27,224,61,127,41,0,61,215,13,0, -61,55,25,0,61,71,17,0,61,79,21,0,193,226,99,127,1,0,220,209, -253,119,45,0,99,119,5,0,61,62,28,0,128,255,74,22,61,103,13,0, -122,87,0,0,204,225,60,95,0,0,224,89,226,5,61,87,33,0,65,82, -125,87,33,0,65,218,61,143,37,0,241,217,246,213,229,5,61,135,33,0, -65,130,125,135,33,0,36,127,29,133,15,62,1,0,100,63,29,133,38,6, -28,165,132,0,129,255,20,146,61,119,33,0,224,113,194,5,32,86,19,48, -165,5,0,82,68,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255, -13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232, -224,233,138,13,32,54,52,0,129,255,20,140,10,232,224,233,178,45,29,48, -28,56,35,22,24,0,34,71,1,0,27,72,191,255,38,246,49,6,48,93, -133,0,125,143,49,0,38,6,48,165,132,0,129,255,168,145,61,55,17,0, -128,255,92,34,32,22,0,1,61,135,17,0,32,118,238,0,194,129,80,119, -0,0,65,18,2,6,0,254,230,245,61,55,17,0,32,62,0,1,128,255, -28,41,29,80,35,223,9,0,35,231,5,0,35,239,1,0,35,255,13,0, -3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233,226,13,49,6, -48,93,133,0,125,143,49,0,0,58,191,255,124,246,129,226,201,5,29,48, -129,255,92,139,64,6,255,0,128,7,225,48,6,232,61,143,8,0,224,137, -234,37,0,218,245,29,27,224,61,215,13,0,193,226,220,209,61,55,25,0, -61,79,21,0,61,71,17,0,61,62,28,0,128,255,118,21,61,119,13,0, -122,87,0,0,206,225,60,111,0,0,224,105,226,5,61,103,33,0,65,98, -125,103,33,0,65,218,61,95,37,0,235,217,246,221,229,5,61,87,33,0, -65,82,125,87,33,0,36,143,29,133,17,62,1,0,100,63,29,133,38,6, -92,165,132,0,129,255,192,144,61,135,33,0,224,129,194,5,32,86,19,48, -165,5,0,82,64,6,255,48,128,7,3,30,220,255,99,71,29,0,99,255, -17,0,99,231,9,0,99,223,13,0,7,224,99,239,5,0,9,216,6,232, -224,233,138,13,32,54,72,0,129,255,192,138,10,232,224,233,146,53,29,48, -28,56,35,22,28,0,34,71,1,0,27,72,191,255,210,244,49,6,72,93, -133,0,125,143,49,0,38,6,112,165,132,0,129,255,84,144,64,22,128,0, -34,62,0,0,64,134,0,1,48,70,0,0,8,72,167,73,9,96,144,98, -125,103,65,0,125,63,69,0,125,79,61,0,125,71,57,0,125,63,53,0, -99,103,1,0,38,6,128,165,132,0,129,255,26,144,29,80,35,223,13,0, -35,231,9,0,35,239,5,0,35,255,17,0,3,30,36,0,127,0,128,7, -225,0,6,232,7,224,224,233,226,13,49,6,72,93,133,0,125,143,49,0, -0,58,191,255,28,245,129,226,201,5,29,48,129,255,252,137,64,6,255,0, -134,7,225,48,6,232,61,143,8,0,224,137,170,53,0,218,181,45,61,127, -61,0,61,79,57,0,61,71,53,0,61,55,25,0,61,215,13,0,99,127, -1,0,61,119,65,0,27,224,99,119,5,0,193,226,61,111,69,0,220,209, -99,111,9,0,61,62,28,0,128,255,176,20,61,95,13,0,122,87,0,0, -203,225,60,87,0,0,224,81,226,5,61,143,33,0,65,138,125,143,33,0, -65,218,61,135,37,0,240,217,182,213,229,5,61,127,33,0,65,122,125,127, -33,0,36,119,29,133,14,62,1,0,100,63,29,133,38,6,208,165,132,0, -129,255,72,143,61,111,33,0,224,105,194,5,32,86,19,48,165,5,0,82, -70,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255,13,0,99,231, -5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13, -32,54,52,0,129,255,72,137,10,232,224,233,178,29,29,48,28,56,35,22, -24,0,34,71,1,0,27,72,191,255,90,243,49,6,96,93,133,0,125,143, -49,0,38,6,228,165,132,0,129,255,220,142,253,63,45,0,38,6,16,166, -132,0,129,255,206,142,29,80,35,223,9,0,35,231,5,0,35,239,1,0, -35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233, -226,13,49,6,96,93,133,0,125,143,49,0,0,58,191,255,208,243,129,226, -201,5,29,48,129,255,176,136,64,6,255,0,130,7,225,48,6,232,61,143, -8,0,224,137,170,45,0,218,181,37,27,224,193,226,61,215,13,0,61,79, -21,0,61,55,25,0,61,71,17,0,220,209,253,127,45,0,99,127,1,0, -61,62,28,0,128,255,64,20,61,111,13,0,122,87,0,0,205,225,60,103, -0,0,224,97,226,5,61,95,33,0,65,90,125,95,33,0,65,218,61,87, -37,0,234,217,182,221,229,5,61,143,33,0,65,138,125,143,33,0,36,135, -29,133,16,62,1,0,100,63,29,133,38,6,32,166,132,0,129,255,12,142, -61,127,33,0,224,121,194,5,32,86,19,48,165,5,0,82,66,6,255,48, -128,7,97,0,6,232,224,233,138,13,32,54,52,0,129,255,38,136,10,232, -224,233,146,13,29,48,191,255,188,241,49,6,120,93,133,0,125,143,49,0, -29,80,64,6,127,0,3,30,224,255,99,71,25,0,99,255,13,0,99,231, -5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13, -32,54,52,0,129,255,224,135,10,232,224,233,194,21,29,48,28,56,35,22, -24,0,34,71,1,0,27,72,191,255,242,241,49,6,120,93,133,0,125,143, -49,0,38,6,52,166,132,0,129,255,116,141,29,80,35,223,9,0,35,231, -5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0, -6,232,7,224,224,233,226,13,49,6,120,93,133,0,125,143,49,0,0,58, -191,255,118,242,129,226,201,5,29,48,129,255,86,135,64,6,255,0,132,7, -225,48,6,232,61,143,8,0,224,137,218,45,0,218,229,37,27,224,61,215, -13,0,193,226,220,209,61,55,25,0,61,79,17,0,61,127,21,0,61,62, -28,0,99,127,1,0,31,114,99,119,5,0,36,70,24,133,128,255,68,19, -61,103,13,0,122,87,0,0,204,225,60,95,0,0,224,89,226,5,61,87, -33,0,65,82,125,87,33,0,65,218,61,143,37,0,241,217,134,221,229,5, -61,135,33,0,65,130,125,135,33,0,36,127,29,133,15,62,1,0,100,63, -29,133,38,6,76,166,132,0,129,255,172,140,61,119,33,0,224,113,194,5, -32,86,19,48,165,5,0,82,68,6,255,48,132,7,225,112,6,232,61,143, -8,0,7,200,224,137,202,45,0,218,213,37,27,224,61,215,13,0,193,226, -220,209,61,55,25,0,61,79,17,0,61,127,21,0,61,62,28,0,99,127, -1,0,99,207,5,0,36,70,24,133,128,255,170,18,61,111,13,0,122,87, -0,0,205,225,60,103,0,0,224,97,226,5,61,95,33,0,65,90,125,95, -33,0,65,218,61,87,37,0,234,217,150,221,229,5,61,143,33,0,65,138, -125,143,33,0,36,135,29,133,16,62,1,0,100,63,29,133,38,6,96,166, -132,0,129,255,18,140,61,127,33,0,224,121,194,5,32,86,19,48,165,5, -0,82,68,6,255,112,128,7,3,30,224,255,99,71,25,0,99,255,13,0, -99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233, -138,13,32,54,52,0,129,255,18,134,10,232,224,233,194,21,29,48,28,56, -35,22,24,0,34,71,1,0,27,72,191,255,36,240,49,6,144,93,133,0, -125,143,49,0,38,6,116,166,132,0,129,255,166,139,29,80,35,223,9,0, -35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7, -225,0,6,232,7,224,224,233,226,13,49,6,144,93,133,0,125,143,49,0, -0,58,191,255,168,240,129,226,201,5,29,48,129,255,136,133,64,6,255,0, -128,7,225,48,6,232,61,143,8,0,224,137,170,37,0,218,181,29,27,224, -61,215,13,0,193,226,220,209,61,55,25,0,61,62,28,0,128,255,128,19, -61,119,13,0,122,87,0,0,206,225,60,111,0,0,224,105,226,5,61,103, -33,0,65,98,125,103,33,0,65,218,61,95,37,0,235,217,182,229,229,5, -61,87,33,0,65,82,125,87,33,0,36,143,29,133,17,62,1,0,100,63, -29,133,38,6,156,166,132,0,129,255,244,138,61,135,33,0,224,129,194,5, -32,86,19,48,165,5,0,82,64,6,255,48,128,7,3,30,224,255,99,71, -25,0,99,255,13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0, -9,216,6,232,224,233,138,13,32,54,52,0,129,255,244,132,10,232,224,233, -178,29,29,48,28,56,35,22,24,0,34,71,1,0,27,72,191,255,6,239, -49,6,168,93,133,0,125,143,49,0,38,6,208,166,132,0,129,255,136,138, -253,63,45,0,38,6,176,166,132,0,129,255,122,138,29,80,35,223,9,0, -35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7, -225,0,6,232,7,224,224,233,226,13,49,6,168,93,133,0,125,143,49,0, -0,58,191,255,124,239,129,226,201,5,29,48,129,255,92,132,64,6,255,0, -130,7,225,48,6,232,61,143,8,0,224,137,170,45,0,218,181,37,27,224, -193,226,61,215,13,0,61,79,21,0,61,55,25,0,61,71,17,0,220,209, -253,127,45,0,99,127,1,0,61,62,28,0,128,255,82,18,61,111,13,0, -122,87,0,0,205,225,60,103,0,0,224,97,226,5,61,95,33,0,65,90, -125,95,33,0,65,218,61,87,37,0,234,217,182,221,229,5,61,143,33,0, -65,138,125,143,33,0,36,135,29,133,16,62,1,0,100,63,29,133,38,6, -240,166,132,0,129,255,184,137,61,127,33,0,224,121,194,5,32,86,19,48, -165,5,0,82,66,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255, -13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232, -224,233,138,13,32,54,52,0,129,255,184,131,10,232,224,233,178,29,29,48, -28,56,35,22,24,0,34,71,1,0,27,72,191,255,202,237,49,6,192,93, -133,0,125,143,49,0,38,6,4,167,132,0,129,255,76,137,253,63,45,0, -38,6,36,167,132,0,129,255,62,137,29,80,35,223,9,0,35,231,5,0, -35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232, -7,224,224,233,226,13,49,6,192,93,133,0,125,143,49,0,0,58,191,255, -64,238,129,226,201,5,29,48,129,255,32,131,64,6,255,0,130,7,225,48, -6,232,61,143,8,0,224,137,170,45,0,218,181,37,27,224,193,226,61,215, -13,0,61,79,21,0,61,55,25,0,61,71,17,0,220,209,253,127,45,0, -99,127,1,0,61,62,28,0,128,255,186,17,61,111,13,0,122,87,0,0, -205,225,60,103,0,0,224,97,226,5,61,95,33,0,65,90,125,95,33,0, -65,218,61,87,37,0,234,217,182,221,229,5,61,143,33,0,65,138,125,143, -33,0,36,135,29,133,16,62,1,0,100,63,29,133,38,6,52,167,132,0, -129,255,124,136,61,127,33,0,224,121,194,5,32,86,19,48,165,5,0,82, -66,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255,13,0,99,231, -5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13, -32,54,52,0,129,255,124,130,10,232,224,233,194,21,29,48,28,56,35,22, -24,0,34,71,1,0,27,72,191,255,142,236,49,6,216,93,133,0,125,143, -49,0,38,6,72,167,132,0,129,255,16,136,29,80,35,223,9,0,35,231, -5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0, -6,232,7,224,224,233,226,13,49,6,216,93,133,0,125,143,49,0,0,58, -191,255,18,237,129,226,201,5,29,48,129,255,242,129,64,6,255,0,128,7, -225,48,6,232,61,143,8,0,224,137,202,37,0,218,213,29,27,224,61,215, -13,0,193,226,220,209,61,55,25,0,61,71,5,0,61,62,28,0,128,255, -62,17,61,119,13,0,122,87,0,0,206,225,60,111,0,0,224,105,226,5, -61,103,33,0,65,98,125,103,33,0,65,218,61,95,37,0,235,217,150,229, -229,5,61,87,33,0,65,82,125,87,33,0,36,143,29,133,17,62,1,0, -100,63,29,133,38,6,104,167,132,0,129,255,90,135,61,135,33,0,224,129, -194,5,32,86,19,48,165,5,0,82,64,6,255,48,128,7,3,30,224,255, -99,71,25,0,99,255,13,0,99,231,5,0,99,223,9,0,7,224,99,239, -1,0,9,216,6,232,224,233,138,13,32,54,52,0,129,255,90,129,10,232, -224,233,194,77,29,48,28,56,35,22,24,0,34,71,1,0,27,72,191,255, -108,235,49,6,240,93,133,0,125,143,49,0,38,6,124,167,132,0,129,255, -238,134,253,63,45,0,38,6,144,167,132,0,129,255,224,134,61,55,21,0, -128,255,148,23,61,63,21,0,0,50,32,70,0,2,191,255,120,111,125,87, -8,0,234,0,224,81,170,37,61,55,17,0,32,62,255,0,128,255,90,23, -61,63,17,0,32,54,0,2,32,70,0,2,191,255,82,111,125,87,8,0, -234,0,224,81,250,13,253,63,45,0,32,54,0,2,32,70,0,80,32,78, -0,2,128,255,48,30,125,87,8,0,234,0,224,81,29,80,35,223,9,0, -35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7, -225,0,6,232,7,224,224,233,226,13,49,6,240,93,133,0,125,143,49,0, -0,58,191,255,128,235,129,226,201,5,29,48,129,255,96,128,64,6,255,0, -130,7,225,48,6,232,61,143,8,0,224,137,170,45,0,218,181,37,27,224, -193,226,61,215,13,0,61,79,21,0,61,55,25,0,61,71,17,0,220,209, -253,127,45,0,99,127,1,0,61,62,28,0,128,255,220,15,61,111,13,0, -122,87,0,0,205,225,60,103,0,0,224,97,226,5,61,95,33,0,65,90, -125,95,33,0,65,218,61,87,37,0,234,217,182,221,229,5,61,143,33,0, -65,138,125,143,33,0,36,135,29,133,16,62,1,0,100,63,29,133,38,6, -160,167,132,0,129,255,188,133,61,127,33,0,224,121,194,5,32,86,19,48, -165,5,0,82,66,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255, -13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232, -224,233,138,13,32,54,56,0,129,255,188,127,10,232,224,233,194,37,29,48, -28,56,35,22,24,0,34,71,1,0,27,72,191,255,206,233,49,6,8,94, -133,0,125,143,49,0,253,127,45,0,130,122,125,127,53,0,202,5,1,98, -125,103,53,0,38,6,180,167,132,0,129,255,62,133,61,63,53,0,38,6, -224,167,132,0,129,255,48,133,29,80,35,223,9,0,35,231,5,0,35,239, -1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224, -224,233,226,13,49,6,8,94,133,0,125,143,49,0,0,58,191,255,50,234, -129,226,201,5,29,48,129,255,18,127,64,6,255,0,128,7,225,48,6,232, -61,143,8,0,224,137,202,37,0,218,213,29,27,224,61,215,13,0,193,226, -220,209,61,55,25,0,61,71,53,0,61,62,28,0,128,255,84,15,61,119, -13,0,122,87,0,0,206,225,60,111,0,0,224,105,226,5,61,103,33,0, -65,98,125,103,33,0,65,218,61,95,37,0,235,217,150,229,229,5,61,87, -33,0,65,82,125,87,33,0,36,143,29,133,17,62,1,0,100,63,29,133, -38,6,20,168,132,0,129,255,122,132,61,135,33,0,224,129,194,5,32,86, -19,48,165,5,0,82,64,6,255,48,128,7,3,30,224,255,99,71,25,0, -99,255,13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216, -6,232,224,233,138,13,32,54,52,0,129,255,122,126,10,232,224,233,194,21, -29,48,28,56,35,22,24,0,34,71,1,0,27,72,191,255,140,232,49,6, -32,94,133,0,125,143,49,0,38,6,40,168,132,0,129,255,14,132,29,80, -35,223,9,0,35,231,5,0,35,239,1,0,35,255,13,0,3,30,32,0, -127,0,128,7,225,0,6,232,7,224,224,233,226,13,49,6,32,94,133,0, -125,143,49,0,0,58,191,255,16,233,129,226,201,5,29,48,129,255,240,125, -64,6,255,0,128,7,225,48,6,232,61,143,8,0,224,137,234,37,0,218, -245,29,27,224,61,215,13,0,193,226,220,209,61,55,25,0,61,79,41,0, -61,71,17,0,61,62,28,0,128,255,174,16,61,119,13,0,122,87,0,0, -206,225,60,111,0,0,224,105,226,5,61,103,33,0,65,98,125,103,33,0, -65,218,61,95,37,0,235,217,246,221,229,5,61,87,33,0,65,82,125,87, -33,0,36,143,29,133,17,62,1,0,100,63,29,133,38,6,64,168,132,0, -129,255,84,131,61,135,33,0,224,129,194,5,32,86,19,48,165,5,0,82, -64,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255,13,0,99,231, -5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233,138,13, -32,54,52,0,129,255,84,125,10,232,224,233,194,21,29,48,28,56,35,22, -24,0,34,71,1,0,27,72,191,255,102,231,49,6,56,94,133,0,125,143, -49,0,38,6,84,168,132,0,129,255,232,130,29,80,35,223,9,0,35,231, -5,0,35,239,1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0, -6,232,7,224,224,233,226,13,49,6,56,94,133,0,125,143,49,0,0,58, -191,255,234,231,129,226,201,5,29,48,129,255,202,124,64,6,255,0,128,7, -225,48,6,232,61,143,8,0,224,137,234,37,0,218,245,29,27,224,61,215, -13,0,193,226,220,209,61,55,25,0,61,79,41,0,61,71,17,0,61,62, -28,0,128,255,66,16,61,119,13,0,122,87,0,0,206,225,60,111,0,0, -224,105,226,5,61,103,33,0,65,98,125,103,33,0,65,218,61,95,37,0, -235,217,246,221,229,5,61,87,33,0,65,82,125,87,33,0,36,143,29,133, -17,62,1,0,100,63,29,133,38,6,108,168,132,0,129,255,46,130,61,135, -33,0,224,129,194,5,32,86,19,48,165,5,0,82,64,6,255,48,128,7, -3,30,224,255,99,71,25,0,99,255,13,0,99,231,5,0,99,223,9,0, -7,224,99,239,1,0,9,216,6,232,224,233,138,13,32,54,52,0,129,255, -46,124,10,232,224,233,194,21,29,48,28,56,35,22,24,0,34,71,1,0, -27,72,191,255,64,230,49,6,80,94,133,0,125,143,49,0,38,6,128,168, -132,0,129,255,194,129,29,80,35,223,9,0,35,231,5,0,35,239,1,0, -35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224,224,233, -226,13,49,6,80,94,133,0,125,143,49,0,0,58,191,255,196,230,129,226, -201,5,29,48,129,255,164,123,64,6,255,0,128,7,225,48,6,232,61,143, -8,0,224,137,234,37,0,218,245,29,27,224,61,215,13,0,193,226,220,209, -61,55,25,0,61,79,41,0,61,71,17,0,61,62,28,0,128,255,188,15, -61,119,13,0,122,87,0,0,206,225,60,111,0,0,224,105,226,5,61,103, -33,0,65,98,125,103,33,0,65,218,61,95,37,0,235,217,246,221,229,5, -61,87,33,0,65,82,125,87,33,0,36,143,29,133,17,62,1,0,100,63, -29,133,38,6,152,168,132,0,129,255,8,129,61,135,33,0,224,129,194,5, -32,86,19,48,165,5,0,82,64,6,255,48,128,7,3,30,224,255,99,71, -25,0,99,255,13,0,99,231,5,0,99,223,9,0,7,224,99,239,1,0, -9,216,6,232,224,233,138,13,32,54,52,0,129,255,8,123,10,232,224,233, -194,21,29,48,28,56,35,22,24,0,34,71,1,0,27,72,191,255,26,229, -49,6,104,94,133,0,125,143,49,0,38,6,172,168,132,0,129,255,156,128, -29,80,35,223,9,0,35,231,5,0,35,239,1,0,35,255,13,0,3,30, -32,0,127,0,128,7,225,0,6,232,7,224,224,233,226,13,49,6,104,94, -133,0,125,143,49,0,0,58,191,255,158,229,129,226,201,5,29,48,129,255, -126,122,64,6,255,0,128,7,225,48,6,232,61,143,8,0,224,137,234,37, -0,218,245,29,27,224,61,215,13,0,193,226,220,209,61,55,25,0,61,79, -41,0,61,71,17,0,61,62,28,0,128,255,100,15,61,119,13,0,122,87, -0,0,206,225,60,111,0,0,224,105,226,5,61,103,33,0,65,98,125,103, -33,0,65,218,61,95,37,0,235,217,246,221,229,5,61,87,33,0,65,82, -125,87,33,0,36,143,29,133,17,62,1,0,100,63,29,133,38,6,196,168, -132,0,129,255,226,127,61,135,33,0,224,129,194,5,32,86,19,48,165,5, -0,82,64,6,255,48,128,7,3,30,224,255,99,71,25,0,99,255,13,0, -99,231,5,0,99,223,9,0,7,224,99,239,1,0,9,216,6,232,224,233, -138,13,32,54,52,0,129,255,226,121,10,232,224,233,178,29,29,48,28,56, -35,22,24,0,34,71,1,0,27,72,191,255,244,227,49,6,128,94,133,0, -125,143,49,0,38,6,216,168,132,0,129,255,118,127,253,63,45,0,38,6, -244,168,132,0,129,255,104,127,29,80,35,223,9,0,35,231,5,0,35,239, -1,0,35,255,13,0,3,30,32,0,127,0,128,7,225,0,6,232,7,224, -224,233,226,13,49,6,128,94,133,0,125,143,49,0,0,58,191,255,106,228, -129,226,201,5,29,48,129,255,74,121,64,6,255,0,130,7,225,48,6,232, -61,143,8,0,224,137,170,45,0,218,181,37,27,224,193,226,61,215,13,0, -61,79,17,0,61,55,25,0,61,71,5,0,220,209,253,127,45,0,99,127, -1,0,61,62,28,0,128,255,210,14,61,111,13,0,122,87,0,0,205,225, -60,103,0,0,224,97,226,5,61,95,33,0,65,90,125,95,33,0,65,218, -61,87,37,0,234,217,182,221,229,5,61,143,33,0,65,138,125,143,33,0, -36,135,29,133,16,62,1,0,100,63,29,133,38,6,4,169,132,0,129,255, -166,126,61,127,33,0,224,121,194,5,32,86,19,48,165,5,0,82,66,6, -255,48,144,7,97,0,6,232,3,48,39,6,238,238,34,34,128,255,146,115, -3,48,128,255,34,120,224,81,210,13,3,48,128,255,10,117,38,6,24,169, -132,0,129,255,102,126,1,138,125,143,29,0,229,5,38,6,60,169,132,0, -129,255,84,126,0,82,80,6,127,0,128,7,225,112,6,200,7,216,35,239, -25,0,8,208,61,143,1,0,35,23,29,0,9,224,226,137,241,21,125,7, -1,0,191,255,16,154,10,48,128,255,190,21,224,81,226,13,61,6,140,169, -132,0,25,48,29,56,128,255,122,90,29,48,129,255,12,126,32,22,39,48, -149,53,28,48,32,62,238,0,128,255,162,14,61,55,1,0,28,56,32,70, -0,2,191,255,156,102,10,16,224,17,170,37,61,55,1,0,26,56,32,70, -0,2,191,255,136,102,10,16,224,17,138,29,61,55,1,0,28,56,32,70, -0,2,191,255,170,216,10,16,224,17,234,13,26,48,28,56,32,70,0,2, -128,255,248,14,61,103,1,0,10,16,12,102,0,2,125,103,1,0,59,95, -1,0,65,90,123,95,1,0,2,80,64,6,255,112,130,7,225,48,8,208, -35,231,25,0,9,232,29,48,7,216,32,62,238,0,128,255,36,14,28,48, -0,58,29,64,32,134,129,0,99,135,1,0,32,78,0,2,128,255,250,20, -10,16,224,17,202,37,28,48,0,58,26,64,32,118,129,0,99,119,1,0, -32,78,0,2,128,255,222,20,10,16,224,17,234,21,28,48,0,58,29,64, -32,102,36,0,99,103,1,0,32,78,0,2,128,255,194,20,10,16,224,17, -138,13,26,48,29,56,32,70,0,2,128,255,98,14,10,16,59,87,1,0, -65,82,123,87,1,0,2,80,66,6,255,48,130,7,225,48,8,208,35,231, -25,0,9,232,29,48,7,216,0,58,128,255,156,13,28,48,0,58,29,64, -32,134,129,0,99,135,1,0,32,78,0,2,128,255,114,20,10,16,224,17, -250,29,28,48,0,58,32,70,0,2,128,255,128,20,10,16,224,17,234,21, -28,48,0,58,29,64,32,110,36,0,99,111,1,0,32,78,0,2,128,255, -68,20,10,16,224,17,138,13,26,48,29,56,32,70,0,2,128,255,228,13, -10,16,59,95,1,0,65,90,123,95,1,0,2,80,66,6,255,48,128,7, -225,48,8,216,35,215,21,0,9,232,29,48,7,224,0,58,128,255,30,13, -29,56,0,50,32,70,0,2,191,255,26,101,10,16,224,17,170,29,26,48, -0,58,32,70,0,2,128,255,20,20,10,16,224,17,154,21,29,56,0,50, -32,70,0,2,191,255,44,215,10,16,224,17,138,13,27,48,29,56,32,70, -0,2,128,255,122,13,10,16,60,119,1,0,65,114,124,119,1,0,2,80, -64,6,255,48,39,143,1,0,0,82,65,138,103,143,1,0,127,0,130,7, -225,112,9,224,35,223,29,0,227,215,33,0,8,232,29,48,7,200,0,58, -128,255,162,12,27,48,29,56,28,64,32,134,0,80,99,135,1,0,26,72, -128,255,216,13,10,16,224,17,250,29,29,48,128,255,152,12,27,48,29,56, -28,64,32,110,0,80,99,111,1,0,26,72,128,255,184,13,10,16,224,17, -250,13,29,48,128,255,144,12,27,48,29,56,28,64,32,86,0,80,99,87, -1,0,26,72,128,255,152,13,10,16,57,143,1,0,65,138,121,143,1,0, -2,80,66,6,255,112,132,7,225,112,6,200,7,208,8,232,9,224,29,48, -128,255,64,12,32,22,0,1,32,134,238,0,2,136,221,137,81,135,0,0, -65,18,2,6,0,254,246,245,29,48,32,62,0,1,128,255,4,19,28,48, -32,62,238,0,128,255,254,11,28,48,32,62,0,1,128,255,216,18,29,48, -28,56,32,70,0,2,35,78,4,0,128,255,148,12,10,16,224,17,178,37, -25,48,35,23,5,0,59,6,164,169,132,0,2,112,221,113,142,79,1,0, -2,64,220,17,130,95,1,0,99,95,1,0,27,56,128,255,122,87,35,23, -5,0,27,48,2,80,221,81,138,71,1,0,2,56,220,17,130,79,1,0, -129,255,248,122,32,22,103,48,58,119,1,0,65,114,122,119,1,0,2,80, -68,6,255,112,134,7,225,243,35,223,57,0,7,176,27,232,27,192,35,207, -53,0,6,184,25,48,194,50,129,255,204,116,10,208,0,18,181,13,2,112, -194,114,61,95,1,0,218,113,110,95,1,0,93,238,1,0,65,18,249,17, -214,245,25,56,27,64,27,232,29,72,99,199,1,0,99,191,5,0,99,215, -9,0,0,50,128,255,206,14,10,224,224,225,250,45,25,56,27,64,29,72, -99,199,1,0,99,191,5,0,99,215,9,0,128,54,255,255,128,255,174,14, -10,224,224,225,250,29,25,56,27,64,29,72,99,199,1,0,99,191,5,0, -99,215,9,0,32,54,85,85,128,255,142,14,10,224,224,225,250,13,25,56, -27,64,29,72,99,199,1,0,99,191,5,0,99,215,9,0,128,54,170,170, -128,255,110,14,10,224,26,48,129,255,72,116,54,111,1,0,65,106,118,111, -1,0,28,80,70,6,255,243,128,7,225,48,7,208,8,232,9,224,227,223, -21,0,29,48,0,58,128,255,168,10,29,56,28,64,27,72,0,50,128,255, -140,12,10,16,224,17,250,21,29,48,128,255,166,10,29,56,28,64,27,72, -0,50,128,255,116,12,10,16,224,17,186,13,29,48,128,255,166,10,29,56, -28,64,27,72,0,50,128,255,92,12,10,16,58,103,1,0,65,98,122,103, -1,0,2,80,64,6,255,48,132,7,225,243,6,224,7,176,8,184,9,216, -35,215,45,0,35,199,49,0,128,255,22,17,119,87,1,0,224,81,57,6, -232,169,132,0,191,255,124,100,191,255,110,149,10,48,128,255,28,17,10,232, -224,233,226,13,191,255,96,100,28,48,25,56,128,255,216,85,25,48,129,255, -106,121,32,238,39,48,128,7,150,1,216,126,1,0,178,37,27,64,26,72, -99,231,1,0,32,54,85,0,32,62,170,0,128,255,76,14,10,232,224,233, -210,5,191,255,38,100,128,7,110,1,27,64,26,72,99,231,1,0,32,54, -170,0,32,62,85,0,128,255,42,14,10,232,224,233,210,5,191,255,4,100, -128,7,76,1,216,102,2,0,130,109,27,48,128,255,248,9,26,48,32,62, -238,0,128,255,168,9,27,56,0,50,32,70,0,2,191,255,164,97,224,81, -146,21,191,255,214,99,61,6,0,170,132,0,28,48,29,56,128,255,72,85, -29,48,129,255,218,120,32,238,39,48,128,7,6,1,26,56,0,50,32,70, -0,2,191,255,170,211,224,81,130,21,191,255,166,99,61,6,24,170,132,0, -28,48,29,56,128,255,24,85,29,48,129,255,170,120,32,238,39,48,181,109, -27,48,26,56,32,70,0,2,35,78,4,0,128,255,234,9,10,232,224,233, -226,37,191,255,114,99,28,48,35,23,5,0,61,6,48,170,132,0,2,128, -219,129,144,79,1,0,2,64,218,17,130,111,1,0,99,111,1,0,29,56, -128,255,204,84,35,23,5,0,29,48,2,96,219,97,140,71,1,0,2,56, -218,17,130,79,1,0,129,255,74,120,32,238,36,48,181,61,216,134,4,0, -210,13,27,48,55,63,1,0,28,64,128,255,64,14,10,232,224,233,194,5, -191,255,16,99,197,45,132,194,169,45,191,255,4,148,10,48,128,255,178,15, -224,81,178,13,28,48,25,56,128,255,116,84,25,48,129,255,6,120,32,238, -39,48,149,29,191,255,228,98,191,255,222,147,10,48,128,255,140,15,10,232, -224,233,178,13,28,48,25,56,128,255,76,84,25,48,129,255,222,119,32,238, -39,48,213,5,128,255,86,15,119,87,1,0,54,95,1,0,65,90,118,95, -1,0,29,80,68,6,255,243,39,143,1,0,0,82,65,138,103,143,1,0, -127,0,130,7,225,240,6,192,7,200,8,232,9,208,227,231,33,0,0,218, -229,21,27,48,128,255,108,16,224,81,138,21,61,6,128,170,132,0,24,48, -29,56,28,64,128,255,236,83,29,48,28,56,129,255,124,119,32,22,105,48, -213,45,65,218,252,217,166,237,29,48,0,58,128,255,14,8,29,56,26,64, -28,72,32,110,0,80,99,111,1,0,0,50,128,255,104,10,29,48,128,255, -10,8,29,56,26,64,28,72,32,94,0,80,99,95,1,0,0,50,128,255, -78,10,29,48,128,255,8,8,29,56,26,64,28,72,32,142,0,80,99,143, -1,0,0,50,128,255,52,10,10,16,57,135,1,0,65,130,121,135,1,0, -2,80,66,6,255,240,130,7,225,112,6,200,7,208,8,232,9,216,227,231, -29,0,28,48,128,255,204,15,224,81,138,21,61,6,184,170,132,0,25,48, -29,56,28,64,128,255,76,83,29,48,28,56,129,255,220,118,32,22,105,48, -133,53,29,48,0,58,128,255,116,7,29,56,27,64,28,72,32,110,0,80, -99,111,1,0,0,50,128,255,102,10,10,16,224,17,250,29,29,48,128,255, -106,7,29,56,27,64,28,72,32,86,0,80,99,87,1,0,0,50,128,255, -70,10,10,16,224,17,250,13,29,48,128,255,98,7,29,56,27,64,28,72, -32,126,0,80,99,127,1,0,0,50,128,255,38,10,10,16,58,119,1,0, -65,114,122,119,1,0,2,80,66,6,255,112,130,7,225,16,7,232,8,224, -99,7,2,0,35,54,2,0,128,255,30,112,10,216,227,63,3,0,38,6, -208,170,132,0,129,255,68,118,227,135,3,0,61,127,1,0,124,135,10,0, -65,122,125,127,1,0,27,80,66,6,255,16,132,7,225,112,6,200,7,208, -8,232,9,224,227,63,33,0,0,50,32,70,0,80,32,78,0,2,128,255, -208,13,10,16,224,17,202,69,29,56,0,50,32,70,0,2,191,255,224,208, -10,16,224,17,186,61,0,18,2,80,220,81,138,119,1,0,174,118,255,0, -74,119,0,0,65,18,2,6,0,254,214,245,29,48,28,56,32,70,0,2, -35,78,4,0,128,255,34,7,10,16,224,17,178,37,25,48,35,23,5,0, -59,6,232,170,132,0,2,88,220,89,139,79,1,0,2,64,221,17,130,135, -1,0,99,135,1,0,27,56,128,255,8,82,35,23,5,0,27,48,2,120, -220,121,143,71,1,0,2,56,221,17,130,79,1,0,129,255,134,117,32,22, -104,48,58,95,1,0,65,90,122,95,1,0,2,80,68,6,255,112,128,7, -225,241,6,216,7,184,8,192,0,226,0,234,128,255,42,13,10,248,97,194, -177,29,210,5,99,194,161,13,130,21,229,21,223,134,32,0,16,6,224,255, -210,21,1,234,181,21,223,102,96,0,12,6,160,255,226,13,1,234,197,13, -223,134,224,0,16,6,32,255,242,5,1,234,213,5,32,230,106,48,128,7, -32,2,224,233,242,13,61,6,152,171,132,0,27,48,29,56,128,255,116,81, -29,48,129,255,6,117,32,230,106,48,128,7,0,2,0,234,245,85,97,234, -209,5,242,5,98,234,130,13,149,13,32,214,32,0,229,5,32,214,64,0, -181,5,32,214,128,0,29,200,194,202,25,48,128,255,62,12,128,255,154,12, -26,88,74,89,146,21,60,6,212,171,132,0,27,48,28,56,29,64,128,255, -34,81,28,48,29,56,129,255,178,116,32,230,106,48,128,7,172,1,25,48, -128,255,22,12,128,255,106,12,26,136,74,137,250,137,146,21,60,6,16,172, -132,0,27,48,28,56,29,64,128,255,240,80,28,48,29,56,129,255,128,116, -32,230,106,48,128,7,122,1,97,234,209,5,146,13,98,234,194,13,245,13, -64,86,0,0,202,191,36,241,165,13,64,86,0,0,202,191,38,241,213,5, -64,86,0,0,202,191,40,241,65,234,248,233,150,173,1,50,128,255,22,12, -32,54,232,3,129,255,30,17,128,255,18,12,10,248,223,126,2,0,242,21, -64,86,0,0,202,191,32,241,64,86,0,0,202,191,34,241,61,6,80,172, -132,0,27,48,29,56,128,255,122,80,29,48,129,255,12,116,32,230,106,48, -128,7,6,1,223,94,4,0,0,50,100,90,130,29,128,255,200,11,64,86, -0,0,202,191,32,241,64,86,0,0,202,191,34,241,61,6,136,172,132,0, -27,48,29,56,128,255,64,80,29,48,129,255,210,115,32,230,106,48,229,101, -128,255,154,11,32,54,232,3,129,255,162,16,128,255,150,11,202,126,2,0, -98,122,162,21,64,86,0,0,202,191,32,241,61,6,40,171,132,0,27,48, -29,56,128,255,6,80,29,48,129,255,152,115,32,230,106,48,149,77,64,86, -0,0,202,191,32,241,64,86,0,0,202,191,34,241,128,255,96,11,32,54, -232,3,129,255,88,16,128,255,76,11,131,82,233,21,64,86,0,0,202,191, -32,241,64,86,0,0,202,191,34,241,61,6,196,172,132,0,27,48,29,56, -128,255,184,79,29,48,129,255,74,115,32,230,106,48,165,37,128,255,34,11, -32,54,232,3,129,255,26,16,128,255,14,11,10,248,64,86,0,0,202,191, -32,241,64,86,0,0,202,191,34,241,223,126,4,0,100,122,210,13,61,6, -96,171,132,0,27,48,29,56,128,255,116,79,29,48,129,255,6,115,32,230, -106,48,55,103,1,0,65,98,119,103,1,0,28,80,64,6,255,241,130,7, -225,240,9,192,24,48,7,200,0,58,8,232,32,134,36,0,99,135,1,0, -32,78,0,2,128,255,102,10,10,208,224,209,202,69,189,103,3,0,216,98, -157,135,3,0,208,130,204,129,189,103,1,0,200,98,208,97,157,223,1,0, -204,217,27,56,38,6,252,172,132,0,129,255,166,114,189,119,5,0,200,114, -157,111,5,0,206,105,13,224,220,0,224,225,226,37,28,6,255,254,185,5, -32,230,0,1,28,56,38,6,20,173,132,0,129,255,124,114,6,18,149,13, -2,120,221,121,65,218,187,119,255,255,79,119,0,0,65,18,28,102,6,0, -236,17,214,245,24,48,0,58,29,64,32,94,129,0,99,95,1,0,32,78, -0,2,128,255,220,9,10,208,57,87,1,0,65,82,121,87,1,0,26,80, -66,6,255,240,130,7,225,112,7,200,0,58,8,232,9,48,32,134,36,0, -99,135,1,0,32,78,0,2,128,255,174,9,10,208,224,209,138,61,189,103, -3,0,216,98,157,135,3,0,208,130,204,129,189,103,1,0,200,98,208,97, -157,223,1,0,204,217,27,56,38,6,92,173,132,0,129,255,238,113,189,119, -5,0,200,114,157,111,5,0,206,105,13,224,220,0,224,225,162,29,28,6, -255,254,185,5,32,230,0,1,28,56,38,6,56,173,132,0,129,255,196,113, -0,18,181,13,65,218,29,120,194,121,15,118,6,0,142,111,1,0,91,111, -255,255,65,18,252,17,214,245,57,95,1,0,65,90,121,95,1,0,26,80, -66,6,255,112,130,7,225,240,9,192,24,48,7,200,0,58,8,232,32,134, -36,0,99,135,1,0,32,78,0,2,128,255,12,9,10,208,224,209,234,77, -189,103,3,0,216,98,157,135,3,0,208,130,204,129,189,103,1,0,200,98, -208,97,157,223,1,0,204,217,27,56,38,6,120,173,132,0,129,255,76,113, -189,119,5,0,200,114,157,111,5,0,206,105,161,106,13,224,220,0,224,225, -242,45,28,6,127,255,185,5,32,230,128,0,28,56,38,6,144,173,132,0, -129,255,32,113,6,18,133,21,66,218,251,111,255,255,2,112,221,113,78,111, -0,0,29,80,194,81,10,134,1,0,168,106,80,111,0,0,66,18,28,104, -193,106,13,94,6,0,235,17,198,237,24,48,0,58,29,64,32,86,129,0, -99,87,1,0,32,78,0,2,128,255,110,8,10,208,57,135,1,0,65,130, -121,135,1,0,26,80,66,6,255,240,130,7,225,112,7,200,0,58,8,232, -9,48,32,134,36,0,99,135,1,0,32,78,0,2,128,255,64,8,10,208, -224,209,218,61,189,103,3,0,216,98,157,135,3,0,208,130,204,129,189,103, -1,0,200,98,208,97,157,223,1,0,204,217,27,56,38,6,216,173,132,0, -129,255,128,112,189,119,5,0,200,114,157,111,5,0,206,105,161,106,13,224, -220,0,224,225,226,29,28,6,127,255,185,5,32,230,128,0,28,56,38,6, -180,173,132,0,129,255,84,112,0,18,213,13,29,80,194,81,170,103,7,0, -200,98,138,95,7,0,204,89,66,218,123,95,254,255,66,18,28,128,193,130, -240,17,150,245,57,119,1,0,65,114,121,119,1,0,26,80,66,6,255,112, -128,7,225,112,7,216,8,200,9,232,227,63,25,0,29,208,0,50,128,255, -244,7,10,224,224,225,202,77,29,56,0,50,32,70,0,2,191,255,220,202, -10,224,224,225,186,69,38,6,24,174,132,0,129,255,232,111,250,119,177,0, -14,104,168,106,205,238,127,0,29,16,2,6,240,255,225,5,100,18,226,13, -104,18,138,45,181,13,2,6,240,255,242,13,2,6,224,255,178,21,2,6, -192,255,242,21,213,29,2,234,38,6,44,174,132,0,129,255,170,111,197,29, -4,234,38,6,56,174,132,0,129,255,156,111,213,21,5,234,38,6,0,174, -132,0,129,255,142,111,229,13,6,234,38,6,12,174,132,0,129,255,128,111, -245,5,0,234,38,6,244,173,132,0,129,255,114,111,121,239,10,0,59,103, -1,0,65,98,123,103,1,0,28,80,64,6,255,112,135,0,0,18,2,136, -198,137,81,63,0,0,65,18,2,6,0,254,150,253,127,0,0,18,2,136, -198,137,2,126,1,0,81,127,0,0,65,18,2,6,0,254,246,245,127,0, -0,18,32,134,165,0,2,136,198,137,81,135,0,0,65,18,2,6,0,254, -246,245,127,0,1,114,0,122,6,96,0,18,197,21,2,128,195,130,204,129, -112,127,5,0,14,72,193,122,159,74,112,119,1,0,9,121,193,114,239,1, -218,5,238,1,186,5,1,114,0,122,65,18,2,6,192,255,185,237,127,0, -131,58,195,58,198,57,103,71,1,0,103,79,5,0,127,0,131,58,195,58, -198,57,39,95,5,0,39,87,1,0,127,0,130,7,33,0,99,7,1,0, -3,72,128,255,8,0,66,6,63,0,0,18,133,21,2,136,198,137,145,135, -1,0,2,120,199,121,143,119,1,0,238,129,210,5,2,104,32,86,19,48, -229,5,65,18,232,17,134,245,31,106,0,82,105,111,1,0,127,0,128,7, -225,112,6,200,249,215,1,0,26,54,3,0,6,56,191,58,0,66,64,78, -1,0,129,255,204,156,10,224,11,232,26,54,2,0,6,56,191,58,0,66, -1,74,129,255,184,156,220,81,225,103,0,0,204,89,221,89,11,104,10,96, -26,16,208,18,66,86,1,0,10,120,191,122,202,97,225,119,0,0,206,121, -207,105,26,80,204,81,225,95,0,0,26,134,4,0,121,135,0,0,205,89, -64,6,255,112,130,7,225,112,9,216,219,0,35,207,29,0,6,232,8,224, -7,208,26,64,0,58,32,134,129,0,99,135,1,0,32,78,0,2,128,255, -128,5,10,16,224,17,202,61,29,48,27,56,25,64,32,78,0,2,128,255, -204,5,10,16,224,17,170,53,28,48,32,62,238,0,191,255,112,254,29,48, -0,58,28,64,32,102,129,0,99,103,1,0,32,78,0,2,128,255,70,5, -10,16,224,17,250,29,29,48,27,56,25,64,32,78,0,2,128,255,154,5, -10,16,224,17,218,21,29,48,0,58,28,64,32,126,36,0,99,127,1,0, -32,78,0,2,128,255,22,5,10,16,224,17,250,5,26,48,28,56,32,70, -0,2,191,255,182,254,66,6,255,112,128,7,225,48,8,224,9,216,219,0, -6,232,7,208,32,70,0,2,191,255,6,86,10,16,224,17,138,53,29,48, -27,56,32,70,0,2,128,255,72,5,10,16,224,17,250,37,28,48,32,62, -238,0,191,255,220,253,29,48,28,56,32,70,0,2,191,255,216,85,10,16, -224,17,154,29,29,48,27,56,32,70,0,2,128,255,34,5,10,16,224,17, -138,21,29,48,28,56,32,70,0,2,191,255,234,199,10,16,224,17,250,5, -26,48,28,56,32,70,0,2,191,255,56,254,64,6,255,48,128,7,225,240, -9,208,218,0,35,199,29,0,6,232,7,200,8,216,32,70,0,2,191,255, -132,85,10,16,224,17,186,61,29,48,26,56,24,64,32,78,0,2,128,255, -212,4,10,16,224,17,154,53,0,226,197,45,27,48,32,62,238,0,191,255, -84,253,29,48,27,56,32,70,0,2,191,255,80,85,10,16,224,17,154,37, -29,48,28,56,24,64,32,78,0,2,128,255,168,4,10,16,224,17,250,21, -29,48,27,56,32,70,0,2,191,255,96,199,10,16,224,17,234,13,25,48, -27,56,32,70,0,2,191,255,174,253,10,16,224,17,218,5,65,226,250,225, -198,213,0,82,64,6,255,240,128,7,225,112,9,216,219,0,35,207,25,0, -6,232,7,208,8,224,32,70,0,2,191,255,236,84,10,16,224,17,170,53, -29,48,27,56,25,64,32,78,0,2,128,255,212,3,10,16,224,17,138,45, -28,48,32,62,238,0,191,255,192,252,29,48,28,56,32,70,0,2,191,255, -188,84,10,16,224,17,170,29,29,48,27,56,25,64,32,78,0,2,128,255, -20,4,10,16,224,17,138,21,29,48,28,56,32,70,0,2,191,255,204,198, -10,16,224,17,250,5,26,48,28,56,32,70,0,2,191,255,26,253,64,6, -255,112,102,63,1,0,127,0,38,87,1,0,127,0,132,7,225,243,6,208, -7,184,99,71,5,0,9,224,35,239,45,0,35,183,49,0,0,202,0,218, -149,85,29,48,26,56,191,255,212,255,29,48,191,255,212,255,10,192,250,193, -210,21,22,48,60,6,132,174,132,0,28,56,29,64,26,72,99,199,1,0, -128,255,232,71,28,48,29,56,26,64,24,72,129,255,116,107,32,206,100,48, -213,53,27,128,35,151,53,0,194,130,210,129,48,111,1,0,0,18,125,111, -1,0,149,37,2,96,35,151,53,0,194,98,210,97,60,135,1,0,44,143, -1,0,241,129,178,21,22,48,29,64,28,72,39,6,192,174,132,0,128,255, -154,71,29,56,28,64,38,6,68,174,132,0,129,255,36,107,32,206,101,48, -213,13,92,230,1,0,65,18,247,17,246,221,35,231,5,0,93,238,1,0, -65,218,247,217,246,173,25,80,68,6,255,243,132,7,225,112,7,200,153,0, -9,216,35,215,33,0,8,232,6,224,29,48,156,0,28,56,191,255,138,251, -27,48,28,56,191,255,130,251,29,56,0,50,32,70,0,1,191,255,126,83, -224,81,226,13,61,6,4,175,132,0,26,48,29,56,128,255,38,71,29,48, -129,255,184,106,32,22,39,48,181,93,29,48,25,56,191,255,80,251,29,56, -32,54,0,2,32,70,0,1,191,255,74,83,224,81,226,13,61,6,4,175, -132,0,26,48,29,56,128,255,242,70,29,48,129,255,132,106,32,22,39,48, -149,69,29,56,0,50,8,66,191,255,88,197,224,81,226,13,61,6,28,175, -132,0,26,48,29,56,128,255,202,70,29,48,129,255,92,106,32,22,39,48, -213,45,29,48,27,56,8,66,35,78,4,0,191,255,158,251,10,16,224,17, -178,37,26,48,35,23,5,0,60,6,52,175,132,0,2,80,221,81,138,79, -1,0,2,64,219,17,130,127,1,0,99,127,1,0,28,56,128,255,132,70, -35,23,5,0,28,48,2,112,221,113,142,71,1,0,2,56,219,17,130,79, -1,0,129,255,2,106,32,22,37,48,2,80,68,6,255,112,136,7,142,7, -225,243,6,176,99,63,21,0,99,71,25,0,0,226,32,134,17,0,99,135, -18,0,32,238,0,1,245,37,22,48,0,58,191,255,118,250,35,54,18,0, -191,255,78,251,22,48,10,64,11,72,0,58,191,255,224,250,29,48,22,56, -32,70,0,1,191,255,94,82,10,224,224,225,242,13,61,6,52,176,132,0, -35,55,25,0,29,56,128,255,2,70,29,48,129,255,148,105,32,230,39,48, -133,125,193,234,35,143,21,0,241,233,241,213,32,118,17,0,99,119,18,0, -32,238,0,1,32,190,0,1,229,101,23,48,22,56,32,70,32,0,191,255, -74,196,10,224,224,225,242,13,61,6,76,176,132,0,35,55,25,0,29,56, -128,255,184,69,29,48,129,255,74,105,32,230,39,48,181,85,22,48,0,58, -191,255,112,250,10,208,11,216,253,185,186,45,35,54,18,0,191,255,178,250, -10,192,11,200,249,217,186,5,248,209,242,29,60,6,244,175,132,0,35,55, -25,0,28,56,29,64,99,199,1,0,99,207,5,0,99,215,9,0,99,223, -13,0,128,255,102,69,28,48,29,56,24,64,25,72,99,215,1,0,99,223, -5,0,129,255,234,104,32,230,38,48,181,37,193,234,181,29,251,1,186,5, -250,1,242,21,60,6,100,176,132,0,35,55,25,0,28,56,29,64,99,215, -1,0,99,223,5,0,128,255,38,69,28,48,29,56,26,64,27,72,129,255, -178,104,32,230,38,48,245,5,23,190,0,1,35,143,21,0,241,185,129,157, -28,80,78,6,255,243,33,6,254,29,0,0,97,0,33,6,48,30,0,0, -97,0,33,6,80,35,0,0,97,0,33,6,138,35,0,0,97,0,33,6, -90,69,1,0,97,0,33,6,208,72,1,0,97,0,33,6,62,92,1,0, -97,0,33,6,62,69,1,0,97,0,33,6,104,90,1,0,97,0,33,6, -108,88,1,0,97,0,33,6,246,88,1,0,97,0,33,6,216,90,1,0, -97,0,33,6,202,86,1,0,97,0,33,6,160,80,1,0,97,0,33,6, -144,86,1,0,97,0,33,6,172,80,1,0,97,0,33,6,2,92,1,0, -97,0,33,6,128,89,1,0,97,0,33,6,184,89,1,0,97,0,33,6, -240,89,1,0,97,0,33,6,44,90,1,0,97,0,33,6,16,91,1,0, -97,0,33,6,160,90,1,0,97,0,128,7,33,0,134,0,39,6,64,178, -132,0,0,82,10,16,195,18,47,6,224,177,132,0,207,17,130,95,1,0, -230,89,202,5,34,63,5,0,197,5,65,82,108,82,150,245,6,64,38,6, -80,178,132,0,129,255,168,103,64,6,63,0,128,7,33,0,38,6,252,126, -141,0,0,58,32,70,0,6,191,255,26,71,38,6,236,126,141,0,0,58, -32,70,16,0,191,255,10,71,100,7,92,139,64,6,63,0,230,134,96,0, -46,6,252,126,141,0,206,129,48,87,1,0,127,0,230,134,96,0,46,6, -252,126,141,0,206,129,16,87,20,0,127,0,230,134,96,0,46,6,252,126, -141,0,206,129,16,87,21,0,127,0,230,134,96,0,46,6,252,126,141,0, -206,129,80,63,21,0,127,0,47,6,236,126,141,0,207,49,6,119,0,0, -206,110,129,0,13,6,127,255,226,87,0,0,127,0,130,7,225,48,6,208, -31,218,229,87,64,0,224,7,96,1,10,224,0,234,0,18,29,6,240,255, -129,13,253,126,40,0,32,110,160,180,205,121,47,23,17,0,2,80,224,81, -226,21,42,23,105,0,26,64,2,22,136,0,34,95,0,0,3,48,202,89, -11,56,34,103,5,0,63,6,154,187,128,0,108,0,195,199,0,0,178,5, -29,216,213,5,65,234,29,6,240,255,166,221,252,47,32,0,27,80,66,6, -255,48,36,87,230,134,96,0,46,6,252,126,141,0,206,129,176,87,23,0, -127,0,230,134,96,0,46,6,252,126,141,0,206,129,80,63,23,0,127,0, -230,134,96,0,46,6,252,126,141,0,206,129,144,87,23,0,127,0,230,134, -96,0,46,6,252,126,141,0,206,129,240,87,19,0,127,0,230,134,96,0, -46,6,252,126,141,0,206,129,112,63,18,0,127,0,128,7,225,48,7,208, -8,216,6,224,191,255,240,254,10,232,28,48,191,255,214,254,29,136,193,138, -47,6,180,94,133,0,207,137,17,119,0,0,90,119,0,0,17,23,1,0, -234,17,91,23,0,0,183,5,91,7,0,0,28,48,191,255,226,254,224,81, -234,5,90,7,0,0,0,234,91,7,0,0,29,80,64,6,255,48,128,7, -225,112,6,200,7,232,157,0,8,224,156,0,229,87,64,0,224,7,96,1, -10,208,49,6,236,126,141,0,25,216,209,217,155,23,1,0,29,120,34,121, -136,122,201,29,29,120,136,122,36,103,92,139,217,13,12,118,1,0,100,119, -92,139,224,225,146,21,38,6,108,178,132,0,129,255,172,101,181,13,95,98, -100,103,92,139,224,225,226,5,38,6,92,178,132,0,129,255,150,101,91,239, -0,0,224,225,162,13,25,56,38,6,124,178,132,0,129,255,130,101,29,48, -191,255,158,253,250,47,32,0,64,6,255,112,128,7,225,16,6,216,7,224, -28,22,54,0,39,6,252,126,141,0,0,74,251,70,96,0,65,18,8,136, -199,137,49,134,24,0,201,129,2,111,255,255,16,118,1,0,78,111,0,0, -65,18,2,87,255,255,49,102,24,0,201,97,76,87,0,0,66,74,9,6, -216,255,246,229,81,7,64,0,28,22,20,0,0,82,8,72,199,73,41,142, -65,0,202,137,65,18,2,119,255,255,17,126,1,0,79,119,0,0,65,18, -2,95,255,255,41,110,65,0,202,105,77,95,0,0,66,82,10,6,236,255, -150,237,73,7,85,0,28,22,46,0,0,90,8,232,199,233,61,86,86,0, -203,81,65,18,2,127,255,255,10,134,1,0,80,127,0,0,65,18,2,103, -255,255,61,118,86,0,203,113,78,103,0,0,66,90,104,90,166,237,93,7, -94,0,27,48,128,255,212,3,252,95,121,0,252,23,123,0,208,18,11,17, -60,135,166,0,125,23,5,0,139,130,249,5,252,103,201,0,252,23,203,0, -208,18,12,17,125,23,1,0,27,48,128,255,136,3,224,81,194,5,27,48, -128,255,164,3,252,143,165,0,125,143,8,0,252,135,167,0,125,135,10,0, -252,127,169,0,125,127,12,0,60,119,166,0,0,18,138,114,185,5,252,23, -189,0,194,86,255,0,93,87,23,0,2,136,252,135,1,1,125,135,18,0, -136,138,252,127,153,0,125,127,14,0,93,143,22,0,60,119,176,0,32,78, -255,0,206,110,127,0,13,96,204,0,12,16,2,6,225,255,225,5,103,18, -226,13,111,18,218,45,181,13,2,6,225,255,162,21,2,6,193,255,146,29, -2,6,129,255,162,29,165,37,2,90,4,87,204,131,93,95,20,0,224,81, -242,29,32,78,254,0,197,29,4,138,4,135,204,131,93,143,20,0,224,129, -210,21,32,78,254,0,165,21,5,122,93,127,20,0,229,13,4,119,204,131, -6,18,224,113,162,5,5,18,93,23,20,0,213,5,93,7,20,0,32,78, -254,0,9,80,64,6,255,16,0,18,230,94,96,0,47,6,252,126,141,0, -207,89,43,102,24,0,0,82,65,98,12,119,255,255,65,82,46,17,162,0, -10,6,216,255,134,253,65,58,71,23,255,255,43,86,65,0,0,18,65,82, -10,111,255,255,65,58,71,111,255,255,65,18,2,6,236,255,246,245,7,80, -127,0,130,7,225,16,6,224,28,56,38,6,60,179,132,0,129,255,80,99, -28,232,248,239,68,2,47,6,252,132,141,0,207,233,29,23,52,0,2,6, -217,255,234,5,37,54,144,129,129,255,48,99,197,13,196,18,42,6,148,184, -132,0,202,17,34,63,5,0,37,54,148,129,129,255,24,99,48,6,236,126, -141,0,28,136,208,137,145,223,1,0,38,6,76,179,132,0,129,255,0,99, -27,48,191,255,28,251,29,119,52,0,14,6,217,255,178,5,128,7,112,1, -252,238,96,0,43,6,252,126,141,0,203,233,61,62,24,0,38,6,144,178, -132,0,129,255,210,98,61,62,65,0,38,6,160,178,132,0,129,255,196,98, -61,62,86,0,38,6,176,178,132,0,129,255,182,98,61,63,1,0,38,6, -92,179,132,0,7,64,129,255,166,98,61,22,8,0,61,135,8,0,34,103, -2,0,129,130,34,95,0,0,225,63,0,0,130,90,225,71,0,0,204,118, -0,4,234,79,0,0,138,98,225,95,0,0,99,95,1,0,38,6,28,180, -132,0,129,255,110,98,61,23,12,0,38,6,120,179,132,0,194,102,0,8, -234,63,0,0,194,134,64,0,234,71,0,0,133,18,225,79,0,0,129,255, -74,98,61,143,10,0,138,138,169,13,189,63,23,0,157,71,23,0,38,6, -224,178,132,0,129,255,48,98,61,95,8,0,130,90,153,53,253,231,19,0, -28,56,38,6,180,179,132,0,129,255,24,98,224,225,162,37,220,102,2,0, -194,5,37,62,136,129,197,5,39,6,220,179,132,0,220,134,4,0,194,5, -37,70,160,129,197,5,40,6,232,179,132,0,220,102,24,0,210,5,41,6, -244,179,132,0,181,5,37,78,156,129,38,6,208,179,132,0,129,255,212,97, -229,5,38,6,20,179,132,0,129,255,200,97,253,23,15,0,224,17,178,13, -245,17,146,13,137,18,225,63,0,0,38,6,192,178,132,0,129,255,172,97, -29,63,20,0,44,6,152,94,133,0,7,120,194,122,204,121,47,71,1,0, -38,6,4,180,132,0,129,255,142,97,253,63,17,0,38,6,208,178,132,0, -129,255,128,97,66,6,255,16,230,134,230,134,230,134,96,0,46,6,252,126, -141,0,206,129,48,111,8,0,205,86,8,0,127,0,0,82,230,22,96,0, -47,6,252,126,141,0,207,17,226,119,9,0,245,113,226,5,226,111,11,0, -245,105,162,5,1,82,127,0,230,134,96,0,46,6,252,126,141,0,206,129, -48,111,18,0,205,86,1,0,127,0,230,134,96,0,46,6,252,126,141,0, -206,129,48,111,18,0,205,86,2,0,127,0,230,134,96,0,46,6,252,126, -141,0,206,129,48,111,18,0,205,86,4,0,127,0,230,134,96,0,46,6, -252,126,141,0,206,129,48,103,1,0,45,6,255,255,255,15,237,97,235,87, -0,0,127,0,33,6,70,6,0,0,97,0,33,6,168,8,0,0,97,0, -128,7,33,0,38,6,124,136,141,0,39,6,136,182,132,0,129,255,46,67, -224,81,146,13,38,6,152,182,132,0,32,62,241,0,0,66,191,255,74,68, -1,50,191,255,88,73,100,87,117,139,0,18,42,6,252,132,141,0,229,5, -106,23,1,0,10,86,56,0,65,18,2,6,240,255,150,253,64,6,63,0, -128,7,97,0,6,232,93,7,52,0,1,138,93,143,6,0,93,7,7,0, -125,7,9,0,32,134,255,0,93,135,32,0,125,7,37,0,125,7,16,0, -132,127,39,133,4,119,204,131,93,127,45,0,224,113,210,5,4,111,37,133, -224,105,186,5,93,7,45,0,61,55,1,0,0,58,0,66,191,255,58,250, -4,87,36,133,29,103,45,0,97,82,230,95,0,0,76,89,139,0,224,89, -194,5,1,114,68,119,36,133,100,7,33,133,189,111,45,0,224,105,194,5, -32,22,16,0,181,5,4,23,36,133,100,23,97,139,100,7,105,139,36,103, -33,175,100,7,109,139,125,103,49,0,68,7,112,139,64,6,127,0,128,7, -225,16,6,232,29,143,52,0,17,6,216,255,150,13,38,6,172,182,132,0, -32,62,103,1,0,66,191,255,100,67,29,231,52,0,46,6,148,184,132,0, -28,16,196,18,206,17,34,55,8,0,34,95,10,0,221,49,224,89,206,5, -34,23,13,0,213,13,34,87,12,0,198,81,42,87,1,0,195,90,202,89, -43,87,0,0,43,23,5,0,202,49,2,216,63,6,228,194,128,0,123,0, -93,87,52,0,189,103,7,0,224,97,218,5,157,95,7,0,224,89,250,197, -93,231,53,0,157,87,7,0,64,6,255,16,128,7,97,0,6,232,61,55, -13,0,224,49,178,5,191,255,22,186,61,55,1,0,0,58,0,66,191,255, -72,249,93,7,6,0,93,7,7,0,61,143,1,0,32,54,96,2,241,55, -32,2,45,6,204,248,140,0,205,49,191,255,246,156,32,102,35,0,32,94, -4,2,125,95,16,0,93,103,52,0,64,6,127,0,128,7,33,0,38,135, -1,0,4,143,205,131,241,129,198,5,32,86,34,0,165,21,36,127,33,175, -102,7,41,0,102,127,9,0,42,6,204,248,140,0,32,54,96,2,240,55, -32,2,202,49,191,255,150,156,1,82,64,6,63,0,128,7,225,0,6,232, -189,143,45,0,224,137,242,93,36,135,105,139,224,129,234,29,36,127,109,139, -224,121,170,29,132,119,113,139,97,114,138,21,4,103,37,133,236,110,232,3, -10,90,13,224,75,224,28,48,129,255,138,49,36,135,33,133,220,129,100,135, -33,133,4,127,36,133,68,7,112,139,100,127,101,139,36,119,101,139,224,113, -199,21,14,110,255,255,100,111,101,139,61,87,1,0,1,98,36,143,105,139, -234,103,192,0,12,137,36,135,33,175,100,143,105,139,125,135,9,0,245,37, -61,119,1,0,1,226,238,231,192,0,191,255,10,73,106,7,9,0,45,6, -36,64,1,0,106,111,5,0,44,6,124,136,141,0,106,103,29,0,2,90, -106,231,33,0,0,58,10,224,106,95,21,0,28,48,191,255,190,143,124,7, -0,0,28,48,191,255,236,72,1,82,93,87,7,0,229,21,61,55,1,0, -128,255,86,19,61,55,1,0,128,255,70,19,36,143,33,175,4,135,204,131, -125,143,49,0,4,18,224,129,162,5,2,18,93,7,7,0,2,80,64,6, -255,0,128,7,97,0,6,232,128,255,102,17,224,81,194,5,32,86,35,0, -197,29,61,55,1,0,1,66,230,71,192,0,61,78,20,0,39,6,124,136, -141,0,191,255,48,122,125,87,13,0,202,47,2,0,202,55,2,0,61,55, -1,0,10,56,128,255,158,18,1,122,93,127,7,0,3,82,64,6,127,0, -128,7,225,16,6,232,61,55,13,0,38,135,12,0,125,135,16,0,102,7, -0,0,93,7,7,0,191,255,74,72,125,7,13,0,29,48,128,255,250,16, -224,81,210,5,32,86,35,0,128,7,4,1,61,127,16,0,224,121,194,5, -32,86,36,0,165,125,61,135,49,0,36,231,33,175,189,23,29,0,176,225, -2,6,129,255,154,45,61,55,1,0,28,6,215,255,153,21,1,90,230,95, -192,0,36,127,105,139,43,128,80,121,36,119,101,139,100,127,105,139,65,114, -100,119,101,139,4,218,165,93,0,58,128,255,100,18,2,218,61,95,1,0, -1,58,235,63,192,0,38,6,124,136,141,0,0,66,191,255,0,121,1,82, -93,87,7,0,245,69,194,118,238,0,14,6,192,255,226,87,0,0,28,6, -105,255,177,5,224,81,178,61,4,218,2,6,128,255,242,13,61,135,1,0, -1,82,36,127,109,139,240,87,192,0,10,121,36,119,33,175,100,127,109,139, -125,119,49,0,61,95,1,0,1,106,235,111,192,0,36,143,105,139,45,80, -74,137,100,143,105,139,234,29,36,135,109,139,224,129,170,29,4,119,37,133, -238,126,232,3,10,106,15,232,77,232,188,233,224,233,151,13,29,48,129,255, -100,47,36,143,33,133,221,137,100,143,33,133,36,135,33,133,220,129,100,135, -33,133,165,5,2,218,27,80,64,6,255,16,166,143,45,0,224,137,130,37, -38,119,1,0,1,130,36,103,109,139,238,135,192,0,76,129,242,21,4,23, -37,133,98,18,174,5,2,18,32,86,232,3,226,87,32,2,10,130,38,119, -49,0,36,127,33,175,80,80,174,121,234,121,215,5,100,7,109,139,68,7, -112,139,127,0,128,7,97,0,6,232,128,255,152,15,224,81,194,5,32,86, -35,0,133,37,32,54,20,5,128,255,206,248,61,55,1,0,1,66,230,71, -192,0,61,78,20,0,39,6,124,136,141,0,191,255,90,120,125,87,13,0, -202,47,2,0,202,55,2,0,61,55,1,0,10,56,128,255,200,16,1,122, -93,127,7,0,5,82,64,6,127,0,130,7,225,0,6,232,61,55,13,0, -38,135,12,0,125,135,16,0,102,7,0,0,93,7,7,0,191,255,116,70, -61,127,16,0,125,7,13,0,224,121,210,5,32,86,36,0,128,7,26,1, -189,23,29,0,2,112,174,0,29,98,76,113,14,224,61,143,37,0,156,0, -224,137,162,13,157,127,33,0,239,225,234,5,61,119,37,0,14,134,1,0, -149,37,4,111,205,133,129,106,169,29,36,63,33,175,61,71,1,0,2,72, -38,6,192,182,132,0,129,255,58,91,61,71,37,0,224,65,130,13,157,63, -33,0,38,6,232,182,132,0,129,255,36,91,37,54,192,129,129,255,28,91, -1,130,93,231,32,0,125,135,37,0,189,23,29,0,194,118,63,0,14,6, -193,255,202,5,32,86,35,0,181,77,224,17,186,29,61,23,37,0,101,18, -190,5,4,82,181,69,4,87,205,133,129,82,233,13,36,63,33,175,61,71, -1,0,157,79,33,0,99,23,1,0,38,6,8,183,132,0,129,255,204,90, -32,86,35,0,245,45,220,118,128,0,178,5,4,82,165,45,220,126,36,0, -178,5,1,82,213,37,220,94,88,0,104,90,130,13,11,6,176,255,210,29, -11,6,168,255,162,29,181,5,1,82,133,29,4,143,205,133,129,138,137,21, -36,63,33,175,61,71,1,0,61,111,37,0,157,79,33,0,99,111,1,0, -38,6,8,183,132,0,129,255,114,90,32,86,35,0,165,5,6,82,66,6, -255,0,128,7,225,0,6,232,128,255,246,13,224,81,194,5,32,86,36,0, -133,69,61,143,41,0,17,6,238,255,182,5,8,82,149,61,61,127,1,0, -1,226,239,231,192,0,191,255,254,68,106,7,9,0,46,6,36,64,1,0, -106,119,5,0,45,6,124,136,141,0,106,111,29,0,2,98,106,231,33,0, -10,48,106,103,21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58, -191,255,168,139,61,55,1,0,61,87,41,0,61,63,13,0,10,94,1,0, -125,95,41,0,48,6,60,183,132,0,208,81,138,71,1,0,128,255,254,14, -1,114,93,119,7,0,7,82,64,6,255,0,128,7,97,0,6,232,61,55, -13,0,38,135,12,0,125,135,16,0,102,7,0,0,93,7,7,0,191,255, -146,68,61,127,16,0,125,7,13,0,224,121,194,5,32,86,37,0,165,5, -6,82,64,6,127,0,128,7,225,16,6,232,32,54,0,2,129,255,144,83, -10,224,0,18,2,136,193,138,220,137,2,112,200,114,2,104,14,105,113,111, -0,0,65,18,2,6,0,255,198,245,59,6,204,248,140,0,61,103,1,0, -32,94,96,2,236,95,32,2,219,89,43,55,57,0,28,56,32,70,0,2, -191,255,250,65,28,48,129,255,102,83,61,135,1,0,1,226,240,231,192,0, -191,255,0,68,106,7,9,0,47,6,36,64,1,0,106,127,5,0,46,6, -124,136,141,0,106,119,29,0,32,110,208,7,106,231,33,0,10,48,106,111, -21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58,191,255,168,138, -61,55,1,0,32,94,96,2,230,95,32,2,219,89,61,63,13,0,43,71, -57,0,128,255,32,14,1,138,93,143,7,0,9,82,64,6,255,16,128,7, -225,0,6,232,61,55,13,0,38,135,12,0,125,135,16,0,102,7,0,0, -93,7,7,0,191,255,156,67,61,127,16,0,125,7,13,0,224,121,178,5, -11,82,133,61,61,111,1,0,1,226,237,231,192,0,191,255,102,67,10,48, -102,7,9,0,44,6,36,64,1,0,102,103,5,0,43,6,124,136,141,0, -102,95,29,0,32,86,208,7,102,231,33,0,1,58,102,87,21,0,125,55, -13,0,198,47,2,0,198,55,2,0,191,255,14,138,61,55,1,0,32,134, -96,2,230,135,32,2,46,6,204,248,140,0,206,129,61,63,13,0,48,71, -57,0,128,255,136,13,1,106,93,111,7,0,10,82,64,6,255,0,128,7, -225,16,6,232,61,55,13,0,38,135,12,0,125,135,16,0,102,7,0,0, -93,7,7,0,191,255,252,66,61,127,16,0,125,7,13,0,224,121,194,5, -32,86,37,0,133,77,32,54,0,2,129,255,6,82,10,216,224,217,154,13, -38,6,80,183,132,0,32,62,224,4,0,66,191,255,142,59,61,119,1,0, -32,110,96,2,238,111,32,2,43,6,204,248,140,0,203,105,45,55,57,0, -27,56,32,70,0,2,191,255,174,178,125,87,16,0,0,226,0,18,2,80, -193,82,219,81,234,127,1,0,2,112,200,114,2,96,14,97,47,97,12,225, -220,0,65,18,2,6,0,255,150,245,27,48,129,255,188,81,224,225,226,13, -36,63,33,175,61,71,1,0,28,72,38,6,100,183,132,0,129,255,132,87, -32,86,37,0,165,5,11,82,64,6,255,16,128,7,225,0,6,232,128,255, -8,11,224,81,194,5,32,86,35,0,133,61,61,135,1,0,1,226,240,231, -192,0,191,255,30,66,106,7,9,0,47,6,36,64,1,0,106,127,5,0, -46,6,124,136,141,0,106,119,29,0,32,110,208,7,106,231,33,0,10,48, -106,111,21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58,191,255, -198,136,61,55,1,0,32,94,96,2,230,95,32,2,49,6,204,248,140,0, -209,89,61,63,13,0,43,71,57,0,128,255,0,12,1,130,93,135,7,0, -12,82,64,6,255,0,128,7,225,0,6,232,61,55,13,0,38,135,12,0, -125,135,16,0,102,7,0,0,93,7,7,0,191,255,180,65,61,127,16,0, -125,7,13,0,224,121,194,5,32,86,36,0,181,101,32,54,0,2,129,255, -190,80,10,224,224,225,154,13,38,6,176,183,132,0,32,62,59,5,0,66, -191,255,70,58,61,119,1,0,32,110,96,2,238,111,32,2,43,6,204,248, -140,0,203,105,45,55,57,0,28,56,32,70,0,2,191,255,102,177,125,87, -16,0,234,0,224,81,226,5,28,48,129,255,90,80,11,82,149,61,60,143, -0,0,131,138,169,21,1,18,252,87,5,0,10,6,56,200,210,5,10,6, -116,140,162,5,0,18,93,23,44,0,28,48,129,255,48,80,13,82,197,37, -61,55,1,0,28,56,191,255,202,240,93,87,5,0,28,48,129,255,24,80, -189,87,5,0,10,6,2,255,202,5,32,86,38,0,165,21,61,55,1,0, -191,255,186,244,224,81,162,13,61,55,1,0,191,255,152,244,224,81,194,5, -32,86,16,0,181,5,32,86,18,0,64,6,255,0,134,7,225,16,6,232, -128,255,138,9,224,81,194,5,32,86,35,0,229,93,61,55,1,0,1,138, -230,143,192,0,36,111,109,139,49,112,78,105,100,111,109,139,191,255,106,238, -10,224,224,225,202,5,32,86,35,0,181,77,61,87,1,0,1,218,234,223, -192,0,191,255,122,64,106,7,9,0,49,6,36,64,1,0,106,143,5,0, -48,6,124,136,141,0,106,135,29,0,32,126,232,3,106,223,33,0,10,48, -106,127,21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58,191,255, -34,135,61,55,13,0,61,63,1,0,28,64,128,255,214,10,3,106,99,111, -0,0,28,102,64,0,61,55,1,0,99,103,2,0,99,7,5,0,67,7, -8,0,32,94,239,0,67,95,9,0,10,56,8,82,99,87,10,0,3,64, -0,74,128,255,132,10,93,231,4,0,1,138,93,143,7,0,32,86,19,0, -70,6,255,16,128,7,97,0,6,232,61,55,13,0,38,135,12,0,125,135, -16,0,102,7,0,0,93,7,7,0,191,255,234,63,61,127,16,0,125,7, -13,0,224,121,194,5,32,86,36,0,181,5,32,86,32,0,64,6,127,0, -134,7,225,0,6,232,128,255,128,8,224,81,194,5,32,86,35,0,149,69, -61,135,1,0,1,226,240,231,192,0,191,255,150,63,106,7,9,0,47,6, -36,64,1,0,106,127,5,0,46,6,124,136,141,0,106,119,29,0,32,110, -232,3,106,231,33,0,10,48,106,111,21,0,125,87,13,0,202,47,2,0, -202,55,2,0,1,58,191,255,62,134,61,63,13,0,2,98,99,103,0,0, -61,55,1,0,99,7,2,0,99,7,5,0,67,7,8,0,32,94,239,0, -67,95,9,0,8,82,99,87,10,0,3,64,0,74,128,255,176,9,1,138, -93,143,7,0,32,86,21,0,70,6,255,0,128,7,97,0,6,232,61,55, -13,0,38,135,12,0,125,135,16,0,102,7,0,0,93,7,7,0,191,255, -26,63,61,127,16,0,125,7,13,0,224,121,194,5,32,86,36,0,181,5, -32,86,22,0,64,6,127,0,134,7,225,0,6,232,128,255,176,7,224,81, -194,5,32,86,35,0,165,69,61,135,1,0,1,226,240,231,192,0,191,255, -198,62,106,7,9,0,47,6,36,64,1,0,106,127,5,0,46,6,124,136, -141,0,106,119,29,0,32,110,232,3,106,231,33,0,10,48,106,111,21,0, -125,87,13,0,202,47,2,0,202,55,2,0,1,58,191,255,110,133,61,63, -13,0,32,102,170,0,99,103,0,0,61,55,1,0,99,7,2,0,99,7, -5,0,67,7,8,0,32,94,239,0,67,95,9,0,8,82,99,87,10,0, -3,64,0,74,128,255,222,8,1,138,93,143,7,0,32,86,23,0,70,6, -255,0,128,7,97,0,6,232,61,55,13,0,38,135,12,0,125,135,16,0, -102,7,0,0,93,7,7,0,191,255,72,62,61,127,16,0,125,7,13,0, -224,121,194,5,32,86,36,0,181,5,32,86,24,0,64,6,127,0,134,7, -225,48,6,232,128,255,222,6,224,81,194,5,32,86,35,0,197,109,61,55, -1,0,191,255,178,236,61,55,1,0,10,216,191,255,132,236,10,208,61,135, -1,0,1,226,240,231,192,0,191,255,224,61,106,7,9,0,47,6,36,64, -1,0,106,127,5,0,46,6,124,136,141,0,106,119,29,0,32,110,232,3, -106,231,33,0,4,23,39,133,106,111,21,0,125,87,13,0,10,104,205,47, -2,0,205,55,2,0,97,18,209,5,242,5,99,18,130,13,149,13,32,230, -254,0,245,5,32,230,128,0,197,5,27,224,165,5,26,224,0,58,27,6, -128,255,198,37,250,225,162,37,61,55,1,0,32,102,66,0,99,103,0,0, -28,16,130,0,99,23,2,0,99,7,5,0,67,7,8,0,32,94,239,0, -67,95,9,0,8,82,99,87,10,0,13,56,3,64,0,74,128,255,206,7, -61,55,1,0,28,56,135,0,191,255,230,235,1,58,61,55,13,0,191,255, -22,132,1,122,93,127,7,0,32,86,25,0,70,6,255,48,128,7,97,0, -6,232,61,55,13,0,38,135,12,0,125,135,16,0,102,7,0,0,93,7, -7,0,191,255,34,61,61,127,16,0,125,7,13,0,224,121,194,5,32,86, -36,0,181,5,32,86,26,0,64,6,127,0,128,7,225,0,38,23,1,0, -226,134,96,0,46,6,252,126,141,0,206,129,112,7,16,0,6,232,128,255, -164,5,224,81,194,5,32,86,35,0,245,45,61,103,1,0,1,226,236,231, -192,0,191,255,186,60,10,48,102,7,9,0,43,6,36,64,1,0,102,95, -5,0,42,6,124,136,141,0,102,87,29,0,32,142,232,3,102,231,33,0, -1,58,102,143,21,0,125,55,13,0,198,47,2,0,198,55,2,0,191,255, -98,131,61,55,1,0,61,63,13,0,128,255,192,6,1,130,93,135,7,0, -32,86,27,0,64,6,255,0,128,7,97,0,6,232,61,55,13,0,38,135, -12,0,125,135,16,0,102,7,0,0,93,7,7,0,191,255,98,60,61,127, -16,0,125,7,13,0,224,121,146,13,38,6,196,183,132,0,129,255,108,81, -32,86,39,0,181,5,32,86,28,0,64,6,127,0,128,7,225,0,6,232, -128,255,238,4,224,81,194,5,32,86,35,0,149,61,61,135,1,0,1,226, -240,231,192,0,191,255,4,60,106,7,9,0,47,6,36,64,1,0,106,127, -5,0,46,6,124,136,141,0,106,119,29,0,32,110,208,7,106,231,33,0, -10,48,106,111,21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58, -191,255,172,130,61,55,1,0,32,94,96,2,230,95,32,2,49,6,204,248, -140,0,209,89,61,63,13,0,43,71,57,0,128,255,14,6,1,130,93,135, -7,0,32,86,29,0,64,6,255,0,130,7,225,0,6,232,61,55,13,0, -38,135,12,0,125,135,16,0,102,7,0,0,93,7,7,0,191,255,152,59, -61,127,16,0,125,7,13,0,224,121,146,13,38,6,216,183,132,0,129,255, -162,80,32,86,39,0,165,69,32,54,0,2,129,255,152,74,10,224,224,225, -154,13,38,6,244,183,132,0,32,62,111,7,0,66,191,255,32,52,61,119, -1,0,32,110,96,2,238,111,32,2,43,6,204,248,140,0,203,105,45,55, -57,0,28,56,32,70,0,2,191,255,64,171,125,87,16,0,28,48,234,0, -224,81,226,5,129,255,52,74,32,86,28,0,245,21,3,56,128,255,178,5, -224,81,218,13,61,87,1,0,35,23,1,0,234,134,96,0,46,6,252,126, -141,0,206,129,112,23,16,0,28,48,129,255,6,74,32,86,39,0,66,6, -255,0,128,7,225,0,6,232,128,255,166,3,224,81,194,5,32,86,35,0, -181,53,61,135,1,0,1,226,240,231,192,0,191,255,188,58,106,7,9,0, -47,6,36,64,1,0,106,127,5,0,46,6,124,136,141,0,106,119,29,0, -32,110,232,3,106,231,33,0,10,48,106,111,21,0,125,87,13,0,202,47, -2,0,202,55,2,0,1,58,191,255,100,129,61,55,1,0,61,63,13,0, -36,71,117,139,32,78,241,0,128,255,218,4,1,98,93,103,7,0,32,86, -31,0,64,6,255,0,128,7,97,0,6,232,61,55,13,0,38,135,12,0, -125,135,16,0,102,7,0,0,93,7,7,0,191,255,92,58,61,127,16,0, -125,7,13,0,224,121,194,5,32,86,18,0,165,5,11,82,64,6,127,0, -128,7,225,0,6,232,128,255,244,2,224,81,194,5,32,86,35,0,197,61, -61,55,1,0,191,255,56,238,224,81,202,5,32,86,20,0,181,53,61,135, -1,0,1,226,240,231,192,0,191,255,248,57,106,7,9,0,47,6,36,64, -1,0,106,127,5,0,46,6,124,136,141,0,106,119,29,0,32,110,232,3, -106,231,33,0,10,48,106,111,21,0,125,87,13,0,202,47,2,0,202,55, -2,0,1,58,191,255,160,128,61,55,1,0,61,63,13,0,36,71,117,139, -32,78,242,0,128,255,22,4,1,98,93,103,7,0,32,86,33,0,64,6, -255,0,128,7,97,0,6,232,61,55,13,0,38,135,12,0,125,135,16,0, -102,7,0,0,93,7,7,0,191,255,152,57,61,127,16,0,125,7,13,0, -224,121,194,5,32,86,36,0,181,5,32,86,20,0,64,6,127,0,128,7, -97,0,4,135,37,133,240,142,232,3,10,122,17,232,79,232,29,48,129,255, -124,33,224,81,146,13,38,6,8,184,132,0,32,62,37,8,0,66,191,255, -20,50,36,103,33,133,4,87,36,133,221,97,100,103,33,133,1,18,224,81, -162,5,10,16,100,23,97,139,13,82,64,6,127,0,134,7,225,0,6,232, -128,255,226,1,224,81,194,5,32,86,35,0,181,125,36,135,97,139,16,142, -255,255,100,143,97,139,224,129,186,5,15,82,149,117,61,119,1,0,1,226, -238,231,192,0,191,255,228,56,106,7,9,0,45,6,36,64,1,0,106,111, -5,0,44,6,124,136,141,0,106,103,29,0,32,94,208,7,106,231,33,0, -10,48,106,95,21,0,125,87,13,0,202,47,2,0,202,55,2,0,1,58, -191,255,140,127,36,63,33,175,61,71,1,0,38,6,40,184,132,0,129,255, -210,77,157,87,45,0,224,81,242,29,38,6,72,184,132,0,129,255,192,77, -61,63,13,0,7,138,99,143,0,0,61,55,1,0,99,7,2,0,99,7, -5,0,67,7,8,0,32,134,239,0,67,135,9,0,8,122,99,127,10,0, -3,64,0,74,128,255,218,2,213,13,38,6,28,184,132,0,129,255,132,77, -61,55,1,0,61,63,13,0,0,66,128,255,144,2,189,119,45,0,224,113, -242,13,61,95,1,0,1,106,235,111,192,0,36,143,109,139,45,80,74,137, -100,143,109,139,1,98,68,103,112,139,1,122,93,127,7,0,14,82,70,6, -255,0,128,7,97,0,6,232,61,55,13,0,38,135,12,0,125,135,16,0, -102,7,0,0,93,7,7,0,191,255,8,56,61,127,16,0,125,7,13,0, -224,121,194,5,32,86,36,0,165,5,4,82,64,6,127,0,128,7,97,0, -6,232,128,255,160,0,224,81,194,5,32,86,35,0,213,29,61,55,1,0, -1,66,230,71,192,0,61,78,20,0,39,6,124,136,141,0,191,255,106,105, -125,87,13,0,202,47,2,0,202,55,2,0,61,55,1,0,10,56,191,255, -156,104,1,122,93,127,7,0,32,86,17,0,64,6,127,0,128,7,97,0, -6,232,61,55,13,0,38,135,12,0,125,135,16,0,102,7,0,0,93,7, -7,0,191,255,130,55,61,23,16,0,125,7,13,0,2,6,246,253,202,5, -32,86,18,0,133,21,224,17,194,5,32,86,36,0,181,13,93,7,44,0, -253,111,23,0,244,105,178,5,13,82,181,5,32,86,18,0,64,6,127,0, -0,18,38,135,9,0,36,143,33,175,36,127,33,133,176,137,15,126,208,7, -239,137,235,87,0,0,127,0,128,7,97,0,6,232,61,55,1,0,0,58, -0,66,191,255,72,230,93,7,6,0,32,86,34,0,64,6,127,0,128,7, -97,0,36,111,105,139,6,232,61,55,1,0,1,138,230,143,192,0,49,112, -78,105,100,111,105,139,1,98,230,103,192,0,36,135,109,139,44,136,81,129, -100,135,109,139,0,58,0,66,191,255,6,230,93,7,6,0,61,127,1,0, -32,54,96,2,239,55,32,2,43,6,204,248,140,0,203,49,191,255,184,137, -32,86,35,0,64,6,127,0,128,7,33,0,0,58,128,255,50,0,32,86, -36,0,64,6,63,0,128,7,33,0,0,58,128,255,32,0,32,86,37,0, -64,6,63,0,128,7,33,0,32,62,254,0,128,255,12,0,32,86,38,0, -64,6,63,0,128,7,225,0,7,224,156,0,6,232,61,63,1,0,29,119, -53,0,61,71,16,0,196,114,44,6,148,184,132,0,204,113,46,79,5,0, -38,6,88,184,132,0,129,255,114,75,36,127,105,139,61,55,1,0,1,90, -230,95,192,0,43,128,80,121,100,127,105,139,1,114,230,119,192,0,36,87, -109,139,46,88,75,81,100,87,109,139,28,56,0,66,191,255,76,229,93,7, -6,0,61,135,1,0,32,54,96,2,240,55,32,2,44,6,204,248,140,0, -204,49,191,255,254,136,64,6,255,0,128,7,97,0,6,232,61,55,1,0, -189,63,5,0,0,66,191,255,24,229,93,7,6,0,32,86,39,0,64,6, -127,0,33,6,42,15,0,0,97,0,33,6,8,16,0,0,97,0,33,6, -234,16,0,0,97,0,33,6,94,17,0,0,97,0,33,6,152,19,0,0, -97,0,33,6,214,19,0,0,97,0,33,6,32,20,0,0,97,0,33,6, -188,20,0,0,97,0,33,6,8,21,0,0,97,0,33,6,82,21,0,0, -97,0,33,6,118,29,0,0,97,0,33,6,206,30,0,0,97,0,33,6, -62,34,0,0,97,0,33,6,42,62,1,0,97,0,33,6,154,157,1,0, -97,0,128,7,225,0,100,7,85,133,61,6,156,137,141,0,100,7,89,133, -128,255,96,0,128,255,194,0,4,135,205,131,16,230,255,255,28,48,191,255, -24,51,125,7,1,0,125,7,5,0,100,87,121,139,125,87,9,0,125,87, -13,0,201,226,125,231,17,0,4,95,84,139,14,58,224,89,242,5,38,6, -156,96,133,0,128,255,120,5,229,5,38,6,192,95,133,0,128,255,108,5, -4,87,80,139,99,82,178,5,100,7,149,140,64,6,255,0,128,7,97,0, -229,87,64,0,224,7,96,1,36,143,85,133,10,232,224,137,202,13,32,54, -21,0,128,255,12,36,32,54,80,0,128,255,188,35,1,130,100,135,85,133, -253,47,32,0,64,6,127,0,128,7,97,0,229,87,64,0,224,7,96,1, -36,143,85,133,10,232,224,137,178,13,32,54,235,255,128,255,216,35,32,54, -176,255,128,255,136,35,100,7,85,133,253,47,32,0,64,6,127,0,128,7, -97,0,229,87,64,0,224,7,96,1,36,143,89,133,10,232,224,137,202,13, -32,54,64,7,128,255,166,35,32,54,128,1,128,255,86,35,1,130,100,135, -89,133,253,47,32,0,64,6,127,0,128,7,97,0,229,87,64,0,224,7, -96,1,36,143,89,133,10,232,224,137,178,13,32,54,192,248,128,255,114,35, -32,54,128,254,128,255,34,35,100,7,89,133,253,47,32,0,64,6,127,0, -130,7,225,0,99,55,1,0,6,16,2,80,42,143,2,0,134,138,185,5, -1,82,229,5,42,87,9,0,224,81,250,245,0,82,10,232,224,233,154,37, -34,111,12,0,13,6,252,253,250,13,2,80,42,103,2,0,135,98,185,5, -1,82,229,5,42,87,9,0,224,81,250,245,0,82,10,232,229,13,2,80, -42,135,2,0,136,130,185,5,1,82,229,5,42,87,9,0,224,81,250,245, -0,82,10,232,226,103,19,0,224,97,154,13,38,6,88,189,132,0,32,62, -119,3,0,66,191,255,110,44,0,18,35,55,1,0,1,82,38,95,18,0, -226,87,192,0,75,81,202,0,224,81,218,5,65,18,2,6,240,255,166,245, -2,224,224,233,130,13,28,56,128,255,172,0,28,48,128,255,180,34,213,37, -38,111,12,0,13,6,252,253,138,13,198,23,2,0,1,50,252,55,192,0, -128,255,162,34,3,56,38,6,20,136,145,0,0,66,129,255,40,36,224,81, -146,13,38,6,104,189,132,0,32,62,59,3,0,66,191,255,0,44,32,54, -236,176,32,62,0,4,0,66,191,255,102,100,66,6,255,0,130,7,33,0, -99,55,1,0,38,135,12,0,0,66,16,6,237,239,138,13,3,56,38,6, -76,136,145,0,129,255,226,35,245,5,3,56,38,6,76,136,145,0,129,255, -202,45,224,81,146,13,38,6,124,189,132,0,32,62,105,3,0,66,191,255, -172,43,32,54,236,176,32,62,0,8,0,66,191,255,18,100,66,6,63,0, -128,7,225,0,7,224,6,232,61,55,12,0,29,56,128,255,114,4,61,55, -12,0,128,255,26,35,28,56,10,64,38,6,144,189,132,0,129,255,208,71, -29,48,128,255,2,4,29,48,128,255,250,4,32,54,60,0,128,255,240,214, -64,6,255,0,130,7,33,0,3,56,38,6,20,136,145,0,0,66,129,255, -54,38,106,82,162,29,191,255,190,253,35,55,1,0,128,255,108,0,35,55, -1,0,128,255,18,2,224,81,178,253,191,255,114,253,36,143,81,133,97,138, -234,5,100,7,81,133,1,50,129,255,106,26,1,82,165,5,0,82,66,6, -63,0,130,7,33,0,3,56,38,6,76,136,145,0,0,66,129,255,232,37, -106,82,146,21,191,255,214,253,35,55,1,0,128,255,30,0,35,55,1,0, -128,255,196,1,224,81,178,253,191,255,138,253,1,82,165,5,0,82,66,6, -63,0,130,7,225,112,6,232,61,143,14,0,17,6,237,239,226,5,61,135, -14,0,16,6,235,239,250,5,61,127,12,0,125,127,14,0,128,7,132,1, -0,218,61,215,12,0,29,224,60,119,14,0,251,113,178,5,60,223,14,0, -251,209,170,13,60,87,16,0,65,82,125,87,16,0,0,210,125,223,14,0, -213,5,60,231,9,0,224,225,202,237,99,7,1,0,29,16,34,135,2,0, -133,130,185,5,1,18,229,5,34,23,9,0,224,17,250,245,0,18,224,17, -130,53,29,224,181,5,60,231,9,0,60,103,9,0,224,97,186,253,60,207, -29,0,217,207,64,0,202,13,217,199,64,0,154,13,38,6,180,189,132,0, -32,62,115,4,0,66,191,255,40,42,28,48,128,255,122,32,10,16,217,207, -64,0,146,13,224,17,194,5,195,15,0,0,245,29,195,31,0,0,197,29, -224,17,194,5,195,23,0,0,245,21,195,39,0,0,197,21,29,16,34,95, -2,0,134,90,185,5,1,18,229,5,34,23,9,0,224,17,250,245,0,18, -224,17,194,5,32,214,17,16,181,5,195,7,0,0,224,209,194,85,0,18, -245,21,2,104,196,106,44,6,212,96,133,0,204,105,45,95,1,0,125,95, -16,0,45,143,4,0,241,209,138,13,45,135,9,0,35,87,1,0,74,129, -240,81,210,5,65,18,2,6,235,255,137,237,2,6,235,255,185,5,32,22, -20,0,61,103,12,0,125,103,14,0,61,95,9,0,224,89,194,5,61,231, -9,0,165,5,29,224,196,18,47,6,212,96,133,0,207,17,34,215,13,0, -26,119,0,0,224,113,234,5,61,55,12,0,128,255,244,32,10,208,37,54, -221,129,129,255,174,69,61,55,12,0,28,56,128,255,48,2,26,56,38,6, -168,189,132,0,129,255,152,69,224,217,242,5,27,56,38,6,200,189,132,0, -129,255,136,69,125,7,12,0,66,6,255,112,128,7,225,16,38,127,16,0, -60,6,156,136,141,0,15,112,193,114,220,113,14,23,0,0,42,6,28,198, -132,0,195,18,202,17,34,223,5,0,6,232,63,6,16,221,128,0,123,0, -61,135,16,0,10,16,224,17,234,5,16,102,1,0,125,103,16,0,197,61, -28,94,1,0,193,130,203,129,16,231,0,0,2,6,239,239,178,53,2,6, -240,239,130,53,2,6,237,239,210,45,28,6,131,255,234,29,61,87,16,0, -65,82,125,87,16,0,181,37,61,143,16,0,65,138,125,143,16,0,61,119, -16,0,193,114,194,113,14,103,0,0,12,6,129,255,170,13,61,71,16,0, -38,6,20,190,132,0,32,62,61,5,191,255,128,40,61,127,16,0,34,6, -156,136,141,0,193,122,194,121,15,111,0,0,237,225,250,221,0,18,2,80, -64,6,255,16,128,7,225,16,6,224,7,216,0,66,34,6,156,136,141,0, -0,50,133,77,6,136,194,138,220,137,49,79,1,0,9,119,0,0,14,6, -130,255,218,61,9,239,1,0,8,248,0,58,213,53,7,96,196,98,43,6, -212,96,133,0,203,97,12,143,6,0,241,233,170,45,31,134,1,0,108,135, -1,0,255,65,202,37,229,13,65,74,9,127,255,255,65,18,66,127,255,255, -65,74,9,119,255,255,65,18,66,119,255,255,65,66,9,111,0,0,13,6, -129,255,194,5,8,6,128,255,198,237,65,74,9,103,255,255,65,18,66,103, -255,255,65,74,9,95,255,255,65,18,66,95,255,255,65,66,65,58,7,6, -235,255,169,205,65,50,251,49,134,189,165,13,65,18,32,142,127,0,66,143, -255,255,65,66,65,18,66,143,255,255,8,6,128,255,214,245,0,234,197,21, -29,120,196,122,44,6,212,96,133,0,204,121,47,95,1,0,127,90,154,13, -29,64,38,6,40,190,132,0,32,62,157,5,191,255,122,39,65,234,29,6, -235,255,185,237,64,6,255,16,130,7,97,0,6,232,253,143,19,0,224,137, -154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,80,39,0,18, -61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121,218,5,65,18, -2,6,240,255,198,245,253,55,29,0,3,56,128,255,176,34,35,55,1,0, -0,58,128,255,8,1,0,82,66,6,127,0,128,7,33,0,230,0,7,64, -6,56,36,79,33,175,38,6,60,190,132,0,129,255,96,67,64,6,63,0, -128,7,225,0,6,232,253,55,31,0,128,255,142,34,10,224,61,55,14,0, -29,56,191,255,206,255,28,56,38,6,108,190,132,0,129,255,54,67,61,127, -14,0,15,6,233,253,218,37,253,119,19,0,224,113,154,13,38,6,88,189, -132,0,32,62,119,3,0,66,191,255,182,38,0,18,61,111,18,0,1,98, -226,103,192,0,77,97,204,0,224,97,218,5,65,18,2,6,240,255,198,245, -2,64,28,72,32,54,37,0,39,6,84,190,132,0,191,255,62,39,149,13, -28,64,32,54,57,0,39,6,140,190,132,0,191,255,44,39,0,82,64,6, -255,0,130,7,97,0,6,232,253,143,19,0,224,137,154,13,38,6,88,189, -132,0,32,62,119,3,0,66,191,255,82,38,0,18,61,135,18,0,1,122, -226,127,192,0,80,121,207,0,224,121,218,5,65,18,2,6,240,255,198,245, -253,55,31,0,3,56,128,255,178,33,35,55,1,0,1,58,128,255,10,0, -0,82,66,6,127,0,136,7,97,0,6,232,224,57,242,5,38,6,156,190, -132,0,129,255,102,66,229,5,38,6,216,190,132,0,129,255,90,66,189,63, -9,0,189,71,7,0,157,127,9,0,157,79,7,0,189,103,5,0,99,103, -1,0,157,95,5,0,99,95,5,0,253,87,3,0,99,87,9,0,15,65, -253,143,1,0,99,143,13,0,38,6,20,191,132,0,129,255,30,66,0,82, -72,6,127,0,128,7,225,16,6,232,61,143,9,0,224,137,226,85,221,207, -2,0,154,13,38,6,128,191,132,0,32,62,109,6,0,66,191,255,150,37, -253,135,19,0,224,129,154,13,38,6,88,189,132,0,32,62,119,3,0,66, -191,255,126,37,0,18,61,127,18,0,1,114,226,119,192,0,79,113,206,0, -224,113,218,5,65,18,2,6,240,255,198,245,61,55,14,0,61,63,9,0, -2,216,191,255,62,254,29,16,34,135,2,0,133,130,185,5,1,18,229,5, -34,23,9,0,224,17,250,245,0,18,27,56,224,17,146,13,32,230,19,16, -38,6,92,191,132,0,129,255,134,65,133,13,32,230,17,16,38,6,148,191, -132,0,129,255,118,65,61,63,14,0,29,48,128,255,118,27,125,231,14,0, -27,48,128,255,124,27,165,5,0,226,28,80,64,6,255,16,128,7,97,0, -6,232,61,55,14,0,29,56,191,255,212,253,38,6,180,191,132,0,129,255, -62,65,61,135,14,0,16,6,233,253,234,5,253,55,19,0,128,255,86,27, -165,13,61,119,14,0,14,6,234,253,218,5,125,7,14,0,125,7,12,0, -32,86,17,16,64,6,127,0,128,7,225,16,6,232,29,16,34,143,2,0, -133,138,185,5,1,18,229,5,34,23,9,0,224,17,250,245,0,18,224,17, -178,101,61,111,9,0,224,105,210,93,221,207,2,0,154,13,38,6,252,191, -132,0,32,62,232,6,0,66,191,255,114,36,253,103,19,0,224,97,154,13, -38,6,88,189,132,0,32,62,119,3,0,66,191,255,90,36,0,18,61,95, -18,0,1,82,226,87,192,0,75,81,202,0,224,81,218,5,65,18,2,6, -240,255,198,245,61,55,14,0,61,63,9,0,2,224,191,255,26,253,28,56, -38,6,224,191,132,0,129,255,130,64,32,222,16,16,61,63,14,0,29,48, -128,255,126,26,32,94,21,16,125,95,14,0,28,48,191,255,84,217,10,48, -1,58,252,63,192,0,128,255,140,26,224,81,194,5,28,48,128,255,138,26, -28,48,128,255,100,26,36,135,41,133,65,130,100,135,41,133,3,114,238,135, -128,122,224,121,186,13,1,98,100,103,81,133,245,5,0,218,213,5,29,48, -191,255,16,254,10,216,27,80,64,6,255,16,128,7,225,112,6,224,60,223, -14,0,60,215,2,0,0,234,222,210,159,210,226,37,252,143,19,0,224,137, -154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,144,35,0,202, -60,135,18,0,1,122,249,127,192,0,80,121,207,0,224,121,218,5,65,202, -25,6,240,255,198,245,60,55,14,0,60,63,9,0,191,255,82,252,25,56, -37,54,224,129,129,255,188,63,28,16,34,143,2,0,137,138,185,5,1,18, -229,5,34,23,9,0,224,17,250,245,0,18,224,17,226,5,27,6,252,253, -186,5,32,238,17,16,28,16,34,103,2,0,140,98,185,5,1,18,229,5, -34,23,9,0,224,17,250,245,0,18,224,17,162,13,27,6,254,253,210,5, -27,22,248,253,98,18,187,5,32,238,17,16,28,16,34,135,2,0,138,130, -185,5,1,18,229,5,34,23,9,0,224,17,250,245,0,18,224,17,130,21, -27,6,252,253,218,5,224,233,186,5,32,238,4,2,27,6,253,253,210,21, -224,233,186,21,32,238,19,16,133,21,28,48,128,255,114,0,224,81,186,13, -224,233,154,13,27,6,253,253,226,5,27,6,0,254,178,5,32,238,19,16, -224,209,242,37,224,233,178,13,29,6,252,253,194,21,29,6,239,239,178,13, -29,6,237,239,226,13,181,21,38,6,16,192,132,0,129,255,234,62,213,21, -38,6,56,192,132,0,129,255,222,62,245,13,38,6,32,192,132,0,129,255, -210,62,149,13,29,64,38,6,76,192,132,0,32,62,146,7,191,255,98,34, -29,80,64,6,255,112,0,82,6,16,34,143,2,0,138,138,185,5,1,18, -229,5,34,23,9,0,224,17,250,245,0,18,224,17,234,29,32,86,20,16, -6,16,34,111,2,0,133,106,185,5,1,18,229,5,34,23,9,0,224,17, -250,245,0,18,224,17,226,13,6,16,165,5,11,16,34,95,9,0,224,89, -202,253,34,143,29,0,209,207,64,0,162,5,0,82,127,0,128,7,225,0, -6,232,191,255,62,254,224,81,130,13,10,6,239,239,226,45,10,6,237,239, -242,37,213,45,29,48,128,255,128,24,10,224,253,143,19,0,224,137,154,13, -38,6,88,189,132,0,32,62,119,3,0,66,191,255,198,33,0,18,61,135, -18,0,1,122,226,127,192,0,80,121,207,0,224,121,218,5,65,18,2,6, -240,255,198,245,2,48,28,56,128,255,74,24,32,86,16,16,133,13,29,48, -128,255,174,16,197,5,29,48,191,255,216,251,64,6,255,0,128,7,225,240, -7,208,8,192,0,58,6,200,24,72,0,66,191,255,90,90,10,232,224,209, -162,13,26,216,10,138,241,223,194,2,125,223,21,0,36,135,33,175,208,217, -221,47,2,0,25,48,29,56,128,255,106,23,61,127,0,0,224,121,218,253, -61,231,12,0,29,48,1,58,191,255,68,111,184,87,9,0,202,118,128,0, -4,135,204,131,234,23,0,0,224,129,242,5,10,6,129,255,226,127,0,0, -15,17,130,0,224,225,186,13,224,17,146,13,224,209,242,5,36,87,33,175, -251,81,179,5,32,230,8,2,224,225,218,5,224,209,178,5,224,17,154,213, -28,6,252,253,242,13,25,48,29,56,128,255,4,23,61,119,0,0,224,113, -218,253,61,231,12,0,24,48,1,58,191,255,192,250,125,7,0,0,29,48, -191,255,12,40,28,80,64,6,255,240,134,7,225,0,6,232,221,207,2,0, -154,13,38,6,96,192,132,0,32,62,135,8,0,66,191,255,172,32,253,143, -19,0,224,137,154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255, -148,32,0,18,61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121, -218,5,65,18,2,6,240,255,198,245,36,87,206,131,2,224,234,225,182,5, -0,82,133,93,61,55,14,0,61,63,9,0,191,255,72,249,28,56,38,6, -116,192,132,0,129,255,176,60,28,48,128,255,124,22,28,48,32,62,184,11, -3,64,191,255,186,254,10,16,224,17,218,5,3,48,128,255,130,1,10,16, -2,6,0,254,154,21,28,48,128,255,86,22,28,48,32,62,232,3,3,64, -191,255,148,254,10,16,224,17,218,5,3,48,128,255,92,1,10,16,224,17, -146,29,61,63,9,0,2,48,191,255,232,248,28,56,38,6,144,192,132,0, -129,255,80,60,4,95,204,131,29,48,224,89,210,5,128,255,116,1,10,16, -165,21,128,255,40,0,10,16,229,13,4,87,204,131,224,81,162,13,61,143, -14,0,17,6,252,253,218,5,29,48,128,255,12,0,10,16,2,80,70,6, -255,0,134,7,225,16,6,224,220,207,2,0,154,13,38,6,196,192,132,0, -32,62,222,8,0,66,191,255,156,31,252,143,19,0,224,137,154,13,38,6, -88,189,132,0,32,62,119,3,0,66,191,255,132,31,0,18,60,135,18,0, -1,122,226,127,192,0,80,121,207,0,224,121,218,5,65,18,2,6,240,255, -198,245,36,87,206,131,2,232,234,233,182,5,0,82,149,85,60,55,14,0, -60,63,9,0,191,255,56,248,29,56,38,6,216,192,132,0,129,255,160,59, -29,48,191,255,236,240,32,222,40,35,29,48,191,255,126,212,10,48,1,58, -253,63,192,0,128,255,182,21,224,81,178,5,32,222,184,11,29,48,27,56, -3,64,191,255,142,253,10,216,224,217,154,29,3,48,128,255,86,0,10,216, -224,217,186,21,4,95,204,131,224,89,242,13,253,142,96,0,47,6,252,126, -141,0,207,137,241,119,17,0,224,113,210,5,28,48,128,255,214,3,10,216, -224,217,210,13,60,63,9,0,27,48,191,255,186,247,29,56,38,6,168,192, -132,0,129,255,34,59,197,5,28,48,128,255,204,4,27,80,70,6,255,16, -32,86,7,2,166,23,9,0,194,22,237,0,70,23,9,0,134,95,1,0, -2,6,192,255,218,5,97,90,170,21,0,82,133,21,129,18,233,13,101,90, -226,5,108,90,194,5,11,6,236,255,250,5,4,95,204,131,224,89,178,5, -32,86,0,2,127,0,134,7,225,16,4,143,204,131,6,232,224,137,186,5, -0,82,197,109,221,207,2,0,154,13,38,6,16,193,132,0,32,62,110,9, -0,66,191,255,76,30,253,135,19,0,224,129,154,13,38,6,88,189,132,0, -32,62,119,3,0,66,191,255,52,30,0,18,61,127,18,0,1,114,226,119, -192,0,79,113,206,0,224,113,218,5,65,18,2,6,240,255,198,245,36,143, -206,131,2,216,241,217,182,5,0,82,133,69,61,55,14,0,61,63,9,0, -191,255,232,246,27,56,38,6,244,192,132,0,129,255,80,58,27,48,1,58, -191,255,170,239,27,48,32,62,184,11,3,64,191,255,88,252,10,224,224,225, -218,21,3,48,191,255,32,255,10,224,224,225,250,13,251,102,96,0,42,6, -252,126,141,0,202,97,236,143,17,0,224,137,210,5,29,48,128,255,168,2, -10,224,224,225,210,13,61,63,9,0,28,48,191,255,140,246,27,56,38,6, -36,193,132,0,129,255,244,57,197,5,29,48,128,255,158,3,28,80,70,6, -255,16,134,7,225,16,6,232,221,207,2,0,154,13,38,6,96,193,132,0, -32,62,194,9,0,66,191,255,108,29,229,87,64,0,224,7,96,1,10,216, -253,143,19,0,224,137,154,13,38,6,88,189,132,0,32,62,119,3,0,66, -191,255,74,29,0,18,61,135,18,0,1,122,226,127,192,0,80,121,207,0, -224,121,218,5,65,18,2,6,240,255,198,245,61,55,14,0,61,63,9,0, -2,224,191,255,10,246,28,56,38,6,72,193,132,0,129,255,114,57,28,48, -128,255,78,19,28,48,128,255,184,19,229,87,64,0,224,135,96,1,28,48, -0,58,3,64,191,255,112,251,251,47,32,0,0,82,70,6,255,16,128,7, -225,48,6,232,221,207,2,0,154,13,38,6,144,193,132,0,32,62,245,9, -0,66,191,255,208,28,229,87,64,0,224,7,96,1,10,208,253,143,19,0, -224,137,154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,174,28, -0,18,61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121,218,5, -65,18,2,6,240,255,198,245,2,216,27,48,128,255,66,19,224,81,130,37, -29,16,34,87,2,0,135,82,185,5,1,18,229,5,34,23,9,0,224,17, -250,245,0,18,224,17,130,21,61,55,14,0,61,63,9,0,191,255,72,245, -27,56,38,6,164,193,132,0,129,255,176,56,32,230,4,2,149,21,0,226, -245,13,61,55,14,0,61,63,9,0,191,255,38,245,27,56,38,6,116,193, -132,0,129,255,142,56,32,230,17,16,250,47,32,0,28,6,239,239,210,21, -29,16,34,95,2,0,133,90,185,5,1,18,229,5,34,23,9,0,224,17, -250,245,0,18,224,17,242,5,27,64,9,50,37,62,232,129,191,255,176,28, -28,80,64,6,255,48,130,7,225,16,6,232,221,207,2,0,154,13,38,6, -204,193,132,0,32,62,68,10,0,66,191,255,216,27,4,143,204,131,224,137, -178,5,0,82,229,93,253,135,19,0,224,129,154,13,38,6,88,189,132,0, -32,62,119,3,0,66,191,255,180,27,0,18,61,127,18,0,1,114,226,119, -192,0,79,113,206,0,224,113,218,5,65,18,2,6,240,255,198,245,2,224, -28,48,35,62,2,0,35,70,3,0,191,255,156,209,61,55,14,0,61,63, -9,0,10,216,191,255,100,244,28,56,27,64,3,79,2,0,38,6,224,193, -132,0,129,255,198,55,3,23,2,0,224,17,202,5,32,230,0,2,197,37, -2,64,28,72,32,54,33,0,39,6,8,194,132,0,191,255,254,27,28,56, -3,71,2,0,0,50,191,255,4,237,10,232,221,47,2,0,28,48,3,71, -2,0,29,56,128,255,74,17,61,87,0,0,224,81,218,253,61,231,12,0, -29,48,125,7,0,0,191,255,82,34,28,80,66,6,255,16,160,7,225,16, -6,232,221,207,2,0,202,5,0,82,128,7,8,1,253,143,19,0,224,137, -154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,228,26,0,18, -61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121,218,5,65,18, -2,6,240,255,198,245,2,232,29,6,240,255,185,5,0,82,181,101,29,48, -191,255,196,207,10,224,224,225,186,5,0,82,181,93,99,7,17,0,99,7, -25,0,99,7,41,0,34,6,226,22,0,0,99,23,33,0,49,6,246,251, -128,0,99,143,45,0,35,134,32,0,48,119,1,0,35,126,48,0,111,119, -1,0,48,111,5,0,111,111,5,0,48,103,9,0,111,103,9,0,48,95, -13,0,111,95,13,0,35,86,48,0,42,135,1,0,35,142,16,0,113,135, -1,0,42,127,5,0,113,127,5,0,42,119,9,0,113,119,9,0,42,111, -13,0,35,102,24,0,113,111,13,0,35,22,16,0,34,71,1,0,34,79, -5,0,44,87,1,0,99,87,1,0,29,48,44,143,5,0,32,62,232,3, -99,7,13,0,99,143,5,0,99,231,9,0,128,255,36,13,10,216,224,217, -234,5,29,48,28,56,199,0,128,255,66,16,27,80,96,6,255,16,160,7, -225,16,6,232,0,218,221,207,2,0,154,13,38,6,28,194,132,0,32,62, -196,10,0,66,191,255,214,25,253,143,19,0,224,137,154,13,38,6,88,189, -132,0,32,62,119,3,0,66,191,255,190,25,0,18,61,135,18,0,1,122, -226,127,192,0,80,121,207,0,224,121,218,5,65,18,2,6,240,255,198,245, -61,55,14,0,61,63,9,0,2,224,191,255,126,242,28,48,191,255,176,212, -28,56,224,81,210,93,38,6,48,194,132,0,129,255,220,53,99,7,17,0, -99,7,25,0,99,7,41,0,34,6,110,20,0,0,99,23,33,0,49,6, -168,251,128,0,99,143,45,0,35,134,32,0,48,119,1,0,35,126,48,0, -111,119,1,0,48,111,5,0,111,111,5,0,48,103,9,0,111,103,9,0, -48,95,13,0,111,95,13,0,35,86,48,0,42,135,1,0,35,142,16,0, -113,135,1,0,42,127,5,0,113,127,5,0,42,119,9,0,113,119,9,0, -42,111,13,0,35,22,16,0,113,111,13,0,35,102,24,0,34,71,1,0, -34,79,5,0,44,87,1,0,99,87,1,0,44,143,5,0,99,143,5,0, -28,48,36,135,121,139,32,126,242,0,99,135,9,0,99,127,13,0,32,62, -136,19,128,255,238,11,10,216,229,5,38,6,72,194,132,0,129,255,36,53, -27,80,96,6,255,16,176,7,225,16,6,232,221,207,2,0,154,13,38,6, -132,194,132,0,32,62,247,10,0,66,191,255,164,24,253,143,19,0,224,137, -154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,140,24,0,18, -61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121,218,5,65,18, -2,6,240,255,198,245,2,224,28,6,240,255,201,5,0,82,128,7,214,1, -61,55,14,0,61,63,9,0,191,255,64,241,28,56,38,6,104,194,132,0, -129,255,168,52,32,54,4,2,129,255,224,46,10,16,224,17,226,5,47,6, -176,128,133,0,98,127,1,0,2,232,224,233,154,13,38,6,132,194,132,0, -32,62,9,11,0,66,191,255,28,24,99,7,49,0,99,7,57,0,99,7, -73,0,34,6,116,15,0,0,99,23,65,0,46,6,246,251,128,0,99,119, -77,0,35,110,64,0,45,95,1,0,35,102,80,0,108,95,1,0,45,87, -5,0,108,87,5,0,45,143,9,0,108,143,9,0,45,135,13,0,108,135, -13,0,35,126,80,0,47,111,1,0,35,118,48,0,110,111,1,0,47,103, -5,0,110,103,5,0,47,95,9,0,110,95,9,0,47,87,13,0,35,142, -56,0,110,87,13,0,35,22,48,0,34,71,1,0,34,79,5,0,49,127, -1,0,99,127,1,0,49,119,5,0,99,119,5,0,99,239,9,0,36,111, -121,139,28,48,99,111,13,0,32,62,232,3,128,255,172,9,10,216,224,217, -138,101,29,48,128,255,120,189,224,81,226,85,38,6,152,194,132,0,129,255, -186,51,99,7,25,0,34,6,22,23,0,0,99,23,17,0,43,6,204,251, -128,0,99,95,29,0,35,86,16,0,42,135,1,0,35,142,32,0,113,135, -1,0,42,127,5,0,113,127,5,0,42,119,9,0,113,119,9,0,42,111, -13,0,113,111,13,0,35,102,32,0,44,87,1,0,35,94,48,0,107,87, -1,0,44,143,5,0,107,143,5,0,44,135,9,0,107,135,9,0,44,127, -13,0,35,22,48,0,107,127,13,0,35,118,56,0,34,79,5,0,34,71, -1,0,46,103,1,0,28,48,99,103,1,0,7,82,46,95,5,0,32,62, -16,39,99,95,5,0,99,87,9,0,99,7,13,0,128,255,218,9,10,216, -197,13,37,54,240,129,129,255,18,51,245,5,27,56,38,6,168,194,132,0, -129,255,4,51,224,233,146,13,47,6,196,94,133,0,125,127,1,0,29,48, -129,255,16,45,27,80,112,6,255,16,182,7,225,243,6,216,61,6,220,94, -133,0,219,207,2,0,154,13,38,6,8,195,132,0,32,62,84,11,0,66, -191,255,106,22,251,143,19,0,224,137,154,13,38,6,88,189,132,0,32,62, -119,3,0,66,191,255,82,22,0,18,59,135,18,0,1,122,226,127,192,0, -80,121,207,0,224,121,218,5,65,18,2,6,240,255,198,245,2,224,28,6, -240,255,201,5,0,82,128,7,184,2,4,143,204,131,0,18,224,137,194,13, -252,126,96,0,45,6,252,126,141,0,205,121,239,103,17,0,224,97,162,5, -1,18,224,17,226,199,0,0,28,48,191,255,10,203,59,55,14,0,59,63, -9,0,10,184,191,255,216,238,27,16,34,87,2,0,133,82,185,5,1,18, -229,5,34,23,9,0,224,17,250,245,0,18,99,23,17,0,28,56,224,193, -242,5,38,6,28,195,132,0,129,255,32,50,229,5,38,6,216,194,132,0, -129,255,20,50,224,185,170,13,38,6,244,194,132,0,129,255,6,50,59,87, -14,0,128,7,48,2,99,7,93,0,99,7,101,0,224,193,178,69,99,7, -69,0,34,6,116,15,0,0,99,23,61,0,46,6,246,251,128,0,99,119, -73,0,35,110,60,0,45,95,1,0,35,102,76,0,108,95,1,0,45,87, -5,0,108,87,5,0,45,143,9,0,108,143,9,0,45,135,13,0,108,135, -13,0,35,126,76,0,47,111,1,0,35,118,92,0,110,111,1,0,47,103, -5,0,110,103,5,0,47,95,9,0,110,95,9,0,47,87,13,0,110,87, -13,0,32,54,4,2,129,255,194,43,10,16,224,17,226,5,49,6,176,128, -133,0,98,143,1,0,2,208,165,69,99,7,37,0,34,6,190,15,0,0, -99,23,29,0,48,6,246,251,128,0,99,135,41,0,35,126,28,0,47,111, -1,0,35,118,44,0,110,111,1,0,47,103,5,0,110,103,5,0,47,95, -9,0,110,95,9,0,47,87,13,0,110,87,13,0,35,142,44,0,49,127, -1,0,35,134,92,0,112,127,1,0,49,119,5,0,112,119,5,0,49,111, -9,0,112,111,9,0,49,103,13,0,112,103,13,0,32,54,4,2,129,255, -62,43,10,16,224,17,226,5,43,6,200,128,133,0,98,95,1,0,2,208, -224,209,154,13,38,6,8,195,132,0,32,62,155,11,0,66,191,255,122,20, -35,22,92,0,35,86,100,0,42,135,1,0,34,79,5,0,34,71,1,0, -99,135,1,0,42,127,5,0,99,127,5,0,99,215,9,0,36,119,121,139, -28,48,99,119,13,0,32,62,232,3,128,255,122,6,10,200,224,201,202,93, -0,178,26,48,224,193,242,13,128,255,250,185,10,192,23,56,24,64,38,6, -192,194,132,0,129,255,128,48,248,185,146,37,1,178,245,29,128,255,204,186, -10,184,23,64,252,198,96,0,42,6,252,126,141,0,202,193,248,63,17,0, -99,63,25,0,38,6,192,194,132,0,129,255,82,48,35,151,25,0,242,185, -130,13,35,159,17,0,1,178,224,153,178,5,120,191,16,0,224,177,162,45, -28,64,32,54,58,0,37,62,248,129,191,255,130,20,35,159,17,0,32,206, -5,2,224,153,146,29,28,48,191,255,6,201,10,224,28,48,128,255,114,10, -224,81,130,13,28,64,32,54,37,0,37,62,0,130,191,255,86,20,27,48, -191,255,144,248,10,16,224,17,242,5,2,200,213,5,128,54,255,255,128,255, -80,10,224,209,130,13,61,158,232,255,122,159,1,0,26,48,129,255,244,41, -25,80,118,6,255,243,144,7,225,243,6,224,220,207,2,0,154,13,38,6, -192,195,132,0,32,62,21,12,0,66,191,255,84,19,32,238,2,2,220,215, -3,0,178,5,128,7,174,1,252,135,19,0,224,129,154,13,38,6,88,189, -132,0,32,62,119,3,0,66,191,255,46,19,0,18,60,127,18,0,1,114, -226,119,192,0,79,113,206,0,224,113,218,5,65,18,2,6,240,255,198,245, -2,216,27,48,0,58,35,70,20,0,191,255,126,241,10,232,224,233,186,5, -35,215,25,0,27,48,191,255,88,206,224,81,146,21,27,48,128,255,34,9, -27,48,0,58,35,70,8,0,191,255,88,241,10,232,224,233,218,5,35,23, -13,0,216,18,2,209,224,233,178,5,128,7,48,1,28,16,34,103,2,0, -133,98,185,5,1,18,229,5,34,23,9,0,224,17,250,245,0,18,2,176, -224,177,242,13,28,16,181,5,34,23,9,0,34,127,9,0,224,121,186,253, -34,119,29,0,206,199,64,0,162,5,0,178,26,198,255,255,0,202,0,186, -3,146,99,151,1,0,99,7,5,0,181,93,60,55,14,0,60,63,9,0, -191,255,88,235,27,56,24,64,25,72,38,6,100,195,132,0,129,255,188,46, -27,48,24,56,22,72,40,6,156,137,141,0,128,255,30,9,10,232,10,6, -234,239,138,13,38,6,212,195,132,0,129,255,154,46,0,234,133,69,224,233, -242,21,29,6,247,254,162,29,29,6,222,254,178,13,29,6,217,254,138,37, -38,6,128,195,132,0,129,255,118,46,0,234,245,29,38,6,8,196,132,0, -129,255,104,46,149,29,37,54,8,130,129,255,94,46,65,186,181,21,35,151, -1,0,95,146,99,151,1,0,38,6,56,195,132,0,129,255,70,46,0,234, -245,5,29,56,38,6,156,195,132,0,129,255,54,46,65,194,225,95,0,0, -35,151,5,0,203,201,65,146,99,151,5,0,35,151,5,0,99,146,190,5, -224,233,146,165,224,185,226,13,35,143,1,0,241,185,170,13,27,64,26,72, -32,54,35,0,39,6,172,195,132,0,191,255,82,18,29,80,80,6,255,243, -128,7,225,240,6,232,191,255,222,236,10,200,224,201,186,77,253,231,19,0, -61,55,14,0,29,56,191,255,98,234,28,56,38,6,28,196,132,0,129,255, -202,45,0,194,0,234,1,218,253,223,192,0,27,112,92,113,130,37,29,48, -191,255,162,198,10,208,26,48,28,56,128,255,220,7,224,81,162,29,59,104, -77,225,26,48,29,56,128,255,20,8,224,81,186,13,29,48,128,255,18,8, -29,48,1,58,128,255,18,8,224,81,170,5,1,194,29,48,128,255,14,8, -65,234,29,6,240,255,134,221,224,193,146,21,26,48,31,58,191,255,54,119, -10,6,246,254,170,13,38,6,60,196,132,0,32,62,27,13,0,66,191,255, -244,16,224,81,25,80,64,6,255,240,128,7,225,0,6,232,191,255,44,235, -10,16,224,17,138,37,61,231,29,0,29,56,60,231,61,0,61,55,14,0, -156,231,35,0,191,255,176,233,28,56,38,6,80,196,132,0,129,255,24,45, -61,231,29,0,29,48,128,255,168,7,28,48,10,56,128,255,248,6,10,16, -224,17,186,5,32,22,16,16,2,80,64,6,255,0,128,7,225,48,6,224, -191,255,216,234,10,232,224,233,178,5,128,7,40,1,60,223,29,0,28,56, -59,215,61,0,60,55,14,0,154,215,35,0,191,255,88,233,26,56,38,6, -108,196,132,0,129,255,192,44,219,207,64,0,130,37,252,127,19,0,224,121, -154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255,68,16,0,18, -60,119,18,0,1,106,226,111,192,0,78,105,205,0,224,105,218,5,65,18, -2,6,240,255,198,245,2,48,128,255,34,7,10,232,229,5,26,48,1,58, -128,255,30,7,10,232,29,6,246,254,154,13,38,6,136,196,132,0,32,62, -139,13,0,66,191,255,254,15,224,233,218,61,219,207,64,0,242,5,38,6, -156,196,132,0,129,255,72,44,229,5,38,6,180,196,132,0,129,255,60,44, -28,48,128,255,208,6,27,48,10,56,128,255,32,6,10,232,219,207,64,0, -242,29,252,119,19,0,224,113,154,13,38,6,88,189,132,0,32,62,119,3, -0,66,191,255,176,15,0,18,60,111,18,0,1,98,226,103,192,0,77,97, -204,0,224,97,218,5,65,18,2,6,240,255,198,245,2,48,128,255,158,6, -181,21,26,48,0,58,128,255,140,6,229,13,38,6,208,196,132,0,129,255, -214,43,28,48,128,255,106,6,27,48,10,56,128,255,186,5,10,232,224,233, -186,5,32,238,16,16,29,80,64,6,255,48,128,7,97,0,6,232,253,143, -19,0,224,137,154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255, -60,15,0,18,61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121, -218,5,65,18,2,6,240,255,198,245,0,234,2,6,240,255,193,5,2,48, -128,255,170,5,29,80,64,6,127,0,128,7,225,0,6,232,0,226,253,143, -19,0,224,137,154,13,38,6,88,189,132,0,32,62,119,3,0,66,191,255, -236,14,0,18,61,135,18,0,1,122,226,127,192,0,80,121,207,0,224,121, -218,5,65,18,2,6,240,255,198,245,2,232,29,6,240,255,185,5,0,82, -197,37,29,48,191,255,10,196,10,48,1,58,253,63,192,0,128,255,66,5, -224,81,186,5,0,82,245,21,36,63,253,139,36,111,249,139,29,48,205,57, -10,90,235,63,194,2,128,255,172,5,224,81,159,13,32,230,4,2,29,56, -38,6,228,196,132,0,129,255,222,42,28,80,64,6,255,0,128,7,225,0, -6,232,191,255,186,232,10,16,224,17,202,77,61,63,14,0,29,48,128,255, -200,4,29,48,128,255,178,4,224,81,162,29,61,231,29,0,29,56,60,231, -61,0,61,55,14,0,156,231,35,0,191,255,42,231,28,56,38,6,0,197, -132,0,129,255,146,42,61,55,29,0,61,63,14,0,128,255,136,4,125,7, -12,0,29,48,128,255,62,5,224,81,178,29,61,231,29,0,29,56,60,231, -61,0,61,55,14,0,156,231,35,0,191,255,238,230,28,56,38,6,36,197, -132,0,129,255,86,42,28,64,32,54,37,0,37,62,12,130,191,255,160,14, -125,7,12,0,29,48,61,87,5,0,63,6,42,248,128,0,106,0,32,22, -17,16,2,80,64,6,255,0,3,30,200,255,99,79,53,0,99,71,49,0, -99,255,37,0,99,215,29,0,99,207,33,0,6,208,99,239,17,0,7,200, -99,223,25,0,35,239,65,0,35,223,69,0,99,231,21,0,32,22,7,16, -0,226,165,69,35,22,48,0,35,142,56,0,49,127,1,0,34,79,5,0, -34,71,1,0,99,127,1,0,26,48,49,119,5,0,25,56,99,223,9,0, -99,119,5,0,99,7,13,0,128,255,128,0,10,16,224,17,234,21,61,23, -1,0,63,6,190,248,128,0,2,22,16,0,34,87,0,0,34,95,5,0, -221,81,10,48,107,0,27,48,10,56,32,70,0,2,191,255,122,132,10,16, -224,17,250,13,61,23,1,0,63,6,234,248,128,0,72,18,34,87,0,0, -34,143,5,0,221,81,10,48,113,0,10,16,65,226,99,226,206,5,2,6, -249,239,178,189,35,207,33,0,35,255,37,0,35,239,17,0,35,231,21,0, -35,223,25,0,35,215,29,0,2,80,3,30,56,0,127,0,3,30,200,255, -99,79,53,0,99,71,49,0,99,255,37,0,99,199,25,0,99,231,9,0, -6,192,7,224,99,191,29,0,99,183,33,0,35,191,65,0,99,207,21,0, -99,223,13,0,99,215,17,0,99,239,5,0,35,183,69,0,36,207,33,175, -0,210,191,255,202,19,106,7,9,0,49,6,36,64,1,0,106,143,5,0, -28,128,106,7,29,0,10,122,106,7,33,0,239,135,194,2,106,135,21,0, -10,232,29,48,1,58,191,255,126,90,35,54,48,0,24,56,29,64,23,72, -221,47,2,0,99,183,1,0,35,119,61,0,63,6,168,249,128,0,110,0, -61,111,0,0,224,105,218,253,61,223,12,0,29,48,125,7,0,0,191,255, -130,19,27,6,0,254,242,5,27,6,253,253,194,5,27,6,248,253,250,13, -36,103,33,175,185,97,234,103,64,2,172,225,224,225,207,5,32,222,4,2, -197,5,65,210,99,210,134,189,27,80,35,183,33,0,35,191,29,0,35,199, -25,0,35,207,21,0,35,215,17,0,35,223,13,0,35,231,9,0,35,239, -5,0,35,255,37,0,3,30,56,0,127,0,128,7,97,0,229,87,64,0, -224,7,96,1,10,232,36,87,149,140,202,54,128,127,202,22,127,0,224,17, -186,5,224,49,210,29,224,17,226,13,224,49,194,13,196,199,44,133,178,5, -0,18,165,5,0,50,36,135,45,133,65,130,100,135,45,133,224,17,226,5, -1,122,96,127,169,179,100,23,1,140,224,49,178,5,128,255,188,2,253,47, -32,0,64,6,127,0,128,7,225,0,6,224,0,234,224,225,242,37,0,18, -149,21,129,255,134,65,10,136,191,138,209,142,31,0,10,112,209,113,32,110, -224,255,77,113,174,81,1,18,234,23,192,0,92,17,224,17,242,237,0,90, -245,13,11,80,234,86,12,0,48,6,204,198,132,0,208,81,42,127,1,0, -66,121,178,5,10,232,197,5,65,90,111,90,145,245,29,80,64,6,255,0, -130,7,225,0,6,232,7,224,97,234,131,61,60,55,5,0,37,62,24,130, -129,255,174,70,224,81,170,29,99,234,242,5,38,6,116,197,132,0,129,255, -98,39,165,85,60,55,9,0,0,58,32,70,16,0,129,255,64,65,10,224, -28,56,38,6,148,197,132,0,129,255,68,39,100,231,149,140,245,21,60,55, -5,0,37,62,20,130,129,255,108,70,224,81,154,13,38,6,192,197,132,0, -129,255,36,39,100,7,149,140,245,5,38,6,72,197,132,0,129,255,20,39, -181,45,97,234,234,5,38,6,220,197,132,0,129,255,4,39,0,234,133,37, -253,22,12,0,47,6,204,198,132,0,207,17,36,119,149,140,34,63,1,0, -71,113,210,5,40,6,92,197,132,0,197,5,40,6,104,197,132,0,34,95, -9,0,34,79,4,0,99,95,1,0,38,6,248,197,132,0,129,255,196,38, -65,234,111,234,129,229,66,6,255,0,199,0,128,7,33,0,6,120,7,48, -8,56,9,128,35,87,5,0,16,64,10,72,47,127,1,0,63,6,200,251, -128,0,111,0,64,6,63,0,128,7,33,0,6,96,7,48,8,56,9,120, -143,0,35,87,5,0,15,64,10,104,141,0,13,72,44,103,1,0,63,6, -242,251,128,0,108,0,64,6,63,0,128,7,33,0,6,120,7,48,8,56, -9,128,16,64,47,127,1,0,63,6,16,252,128,0,111,0,64,6,63,0, -32,86,33,6,86,16,0,0,97,0,33,6,226,22,0,0,97,0,33,6, -240,26,0,0,97,0,33,6,190,29,0,0,97,0,33,6,98,30,0,0, -97,0,33,6,130,30,0,0,97,0,33,6,118,32,0,0,97,0,33,6, -42,80,0,0,97,0,33,6,42,60,1,0,97,0,33,6,158,53,1,0, -97,0,33,6,18,63,1,0,97,0,33,6,158,55,1,0,97,0,33,6, -94,101,1,0,97,0,33,6,116,96,1,0,97,0,33,6,38,97,1,0, -97,0,33,6,218,137,1,0,97,0,33,6,50,100,1,0,97,0,33,6, -174,64,1,0,97,0,33,6,128,103,1,0,97,0,33,6,176,77,1,0, -97,0,33,6,248,94,1,0,97,0,33,6,164,138,1,0,97,0,33,6, -198,148,1,0,97,0,33,6,194,177,1,0,97,0,33,6,52,138,1,0, -97,0,33,6,158,99,1,0,97,0,33,6,212,143,1,0,97,0,33,6, -92,95,1,0,97,0,33,6,102,64,1,0,97,0,33,6,252,144,1,0, -97,0,33,6,224,145,1,0,97,0,33,6,110,145,1,0,97,0,33,6, -94,56,1,0,97,0,33,6,106,60,1,0,97,0,33,6,194,71,1,0, -97,0,136,7,97,0,230,0,61,6,36,98,133,0,0,18,165,37,61,71, -0,0,232,49,202,29,61,63,9,0,29,79,2,0,189,127,3,0,99,127, -1,0,157,119,5,0,99,119,5,0,29,111,5,0,99,111,9,0,29,103, -6,0,99,103,13,0,38,6,112,224,132,0,129,255,232,36,29,80,213,13, -76,234,65,18,2,6,36,255,217,221,6,56,38,6,76,224,132,0,129,255, -206,36,0,82,72,6,127,0,230,0,42,6,188,224,132,0,34,6,36,98, -133,0,2,94,80,10,34,135,0,0,240,49,202,5,34,87,9,0,197,5, -76,18,235,17,241,245,127,0,128,7,97,0,8,232,29,136,194,138,64,118, -142,0,206,137,49,71,177,137,231,0,128,255,32,0,29,96,194,98,64,142, -142,0,209,97,44,135,177,137,224,129,194,5,29,48,128,255,2,2,64,6, -127,0,128,7,225,112,8,224,9,200,6,232,7,208,250,0,26,48,191,255, -40,255,10,216,125,215,22,0,29,48,0,58,32,70,18,0,191,255,206,3, -224,217,194,29,29,127,25,0,24,146,27,111,6,0,187,135,5,0,93,111, -0,0,82,121,27,103,2,0,208,118,7,0,93,103,2,0,14,121,187,95, -3,0,93,95,12,0,93,127,25,0,155,87,5,0,93,87,13,0,61,54, -26,0,0,58,32,70,98,0,191,255,134,3,0,18,224,225,194,13,28,16, -2,143,0,0,65,18,224,137,202,253,2,134,255,255,188,129,16,22,1,0, -2,6,158,255,214,5,92,7,97,0,32,22,98,0,2,222,26,0,249,217, -167,5,25,216,61,54,26,0,28,56,2,64,191,255,232,1,224,225,202,5, -60,6,212,224,132,0,28,56,37,54,32,130,129,255,168,35,27,110,248,255, -93,111,7,0,64,6,255,112,3,30,204,255,99,79,49,0,99,255,33,0, -99,207,25,0,99,215,21,0,99,223,17,0,99,231,13,0,99,239,9,0, -99,199,29,0,6,248,7,192,99,71,45,0,229,87,64,0,224,7,96,1, -10,200,35,142,44,0,99,143,1,0,35,134,36,0,208,126,7,0,64,110, -142,0,31,216,194,218,27,208,205,209,58,239,177,137,99,127,5,0,58,214, -176,137,0,226,224,233,194,13,29,16,2,103,0,0,65,18,224,97,202,253, -2,230,255,255,189,225,220,233,133,21,32,54,98,0,129,255,30,29,10,232, -122,239,1,0,224,233,242,5,29,48,0,58,32,70,98,0,191,255,142,2, -224,233,226,53,28,6,158,255,190,53,32,54,196,0,129,255,246,28,10,208, -224,209,194,45,26,48,35,79,5,0,35,71,1,0,24,56,129,255,234,45, -32,86,98,0,188,81,226,21,29,16,26,88,11,135,0,0,66,135,0,0, -65,90,65,18,224,129,186,5,95,18,181,5,95,82,218,245,224,81,226,5, -66,7,0,0,65,18,95,82,202,253,64,110,142,0,205,217,59,239,177,137, -26,48,93,7,97,0,129,255,126,28,249,47,32,0,35,199,29,0,35,207, -25,0,35,215,21,0,35,223,17,0,35,231,13,0,35,239,9,0,35,255, -33,0,3,30,52,0,127,0,128,7,97,0,6,232,194,234,64,126,142,0, -207,233,61,55,177,137,129,255,66,28,125,7,177,137,64,6,127,0,132,7, -225,243,6,216,7,200,185,0,8,208,250,0,128,255,152,1,36,199,33,175, -10,224,124,199,5,0,92,207,8,0,92,223,9,0,27,48,128,255,184,1, -10,232,36,191,125,139,124,239,1,0,23,176,25,6,191,255,202,77,34,6, -0,0,32,0,226,135,5,0,124,135,12,0,0,82,226,127,1,0,124,127, -14,0,26,6,233,253,202,13,226,111,85,0,226,127,87,0,208,122,13,121, -1,82,32,214,22,2,0,234,229,13,26,6,234,253,170,13,226,135,81,0, -226,127,83,0,208,122,16,121,1,82,0,234,165,5,31,122,124,127,25,0, -224,81,146,37,224,233,250,29,61,6,160,152,141,0,61,95,12,0,224,89, -250,21,61,87,14,0,224,81,186,21,125,7,9,0,125,7,12,0,125,7, -14,0,125,7,16,0,125,7,2,0,27,6,240,255,125,7,18,0,214,5, -221,63,19,0,165,5,0,234,25,6,190,255,202,53,32,134,67,0,92,135, -8,0,27,48,3,56,128,255,242,0,227,23,5,0,124,23,24,0,27,48, -227,23,7,0,124,23,26,0,60,70,12,0,1,58,128,255,206,0,128,255, -162,0,32,126,68,0,10,224,92,127,8,0,124,199,5,0,92,223,9,0, -227,23,1,0,124,23,24,0,124,239,1,0,227,23,3,0,124,23,26,0, -36,183,125,139,27,48,60,70,12,0,0,58,128,255,148,0,124,215,10,0, -224,233,226,21,29,48,26,56,191,255,14,251,224,217,198,13,27,6,240,255, -158,13,1,106,251,111,192,0,253,95,19,0,13,89,125,95,18,0,125,191, -28,0,125,183,30,0,29,80,68,6,255,243,230,134,28,0,47,6,176,141, -141,0,207,129,48,118,12,0,103,119,1,0,0,82,127,0,230,134,28,0, -47,6,176,141,141,0,207,129,48,87,25,0,32,118,224,255,78,81,127,0, -36,143,125,139,65,138,100,143,125,139,17,6,156,255,186,5,100,7,125,139, -36,135,124,139,240,86,28,0,46,6,176,141,141,0,206,81,127,0,127,0, -33,6,208,31,0,0,97,0,33,6,150,32,0,0,97,0,33,6,30,104, -1,0,97,0,38,23,1,0,2,80,127,0,38,23,5,0,2,80,127,0, -38,23,13,0,2,80,127,0,34,6,0,192,23,0,2,80,127,0,128,7, -225,16,6,232,0,226,229,87,64,0,224,7,96,1,10,216,61,143,21,0, -128,134,170,170,113,135,0,0,61,127,25,0,32,118,85,85,111,119,0,0, -61,111,21,0,128,102,144,144,109,103,0,0,32,54,32,78,128,255,238,188, -61,95,1,0,235,87,1,0,10,136,208,138,61,135,29,0,240,127,1,0, -15,224,17,225,61,119,21,0,128,110,170,170,110,111,0,0,61,103,25,0, -32,94,85,85,108,95,0,0,61,87,21,0,128,142,240,240,106,143,0,0, -32,54,32,78,128,255,170,188,251,47,32,0,48,6,186,186,31,31,240,225, -186,5,0,18,181,5,32,22,192,1,2,80,64,6,255,16,190,7,225,241, -3,30,124,254,6,232,7,208,8,192,9,200,35,142,0,0,64,134,0,64, -17,216,16,217,61,127,1,0,239,209,161,13,25,112,218,113,61,111,5,0, -61,103,1,0,204,105,237,113,195,5,32,22,193,1,149,85,26,88,61,87, -1,0,11,136,170,137,17,16,61,135,9,0,240,23,194,2,2,184,165,69, -61,127,1,0,15,112,23,104,61,103,9,0,13,88,236,95,34,2,11,96, -12,224,206,225,29,48,28,56,27,64,128,255,226,0,0,74,28,16,165,21, -250,17,234,13,224,201,194,13,9,80,219,81,65,194,24,142,255,255,17,135, -0,0,74,135,0,0,95,202,65,210,65,18,65,74,61,119,9,0,14,120, -129,122,15,96,193,98,12,104,13,88,220,89,235,17,209,229,29,48,28,56, -27,64,128,255,44,0,29,48,28,56,27,64,128,255,184,0,10,16,224,17, -194,5,32,22,194,1,213,5,65,186,224,201,234,189,0,18,2,80,3,30, -132,1,126,6,255,241,128,7,225,16,6,248,7,232,8,224,229,87,64,0, -224,7,96,1,10,216,63,143,21,0,128,134,170,170,113,135,0,0,63,127, -25,0,32,118,85,85,111,119,0,0,63,111,21,0,128,102,160,160,109,103, -0,0,0,18,197,13,66,234,29,94,254,255,66,226,28,86,254,255,234,143, -1,0,107,143,0,0,65,18,63,127,9,0,15,128,129,130,240,17,129,245, -32,54,32,78,128,255,66,187,251,47,32,0,64,6,255,16,0,18,197,13, -66,66,8,142,254,255,66,58,7,134,254,255,240,127,1,0,113,127,0,0, -65,18,38,111,9,0,13,112,129,114,238,17,129,245,127,0,0,18,149,21, -66,66,8,142,254,255,241,135,1,0,66,58,7,126,254,255,239,119,1,0, -238,129,194,5,32,22,194,1,165,13,65,18,2,104,38,95,9,0,11,96, -129,98,236,105,161,237,0,18,2,80,127,0,128,7,38,23,1,0,2,80, -127,0,38,23,5,0,2,80,127,0,38,23,13,0,2,80,127,0,34,6, -0,192,23,0,2,80,127,0,128,7,225,16,6,232,0,226,229,87,64,0, -224,7,96,1,10,216,61,143,21,0,128,134,170,170,113,135,0,0,61,127, -25,0,32,118,85,85,111,119,0,0,61,111,21,0,128,102,144,144,109,103, -0,0,32,54,32,78,128,255,120,186,61,95,1,0,235,87,1,0,10,136, -208,138,61,135,29,0,240,127,1,0,15,224,17,225,61,119,21,0,128,110, -170,170,110,111,0,0,61,103,25,0,32,94,85,85,108,95,0,0,61,87, -21,0,128,142,240,240,106,143,0,0,32,54,32,78,128,255,52,186,251,47, -32,0,48,6,186,186,31,31,240,225,186,5,0,18,181,5,32,22,192,1, -2,80,64,6,255,16,190,7,225,241,3,30,124,254,6,232,7,224,8,216, -9,208,35,142,0,0,64,134,0,64,17,200,16,201,61,127,1,0,239,225, -161,13,26,112,220,113,61,111,5,0,61,103,1,0,204,105,237,113,195,5, -32,22,193,1,133,101,28,88,61,87,1,0,11,136,170,137,17,16,61,135, -9,0,240,23,194,2,2,184,149,85,61,127,1,0,15,112,23,104,61,103, -9,0,13,88,236,95,34,2,11,96,12,192,206,193,29,48,24,56,25,64, -128,255,32,1,0,18,24,72,149,37,252,73,218,29,224,209,178,29,2,80, -217,81,65,218,27,142,255,255,17,135,0,0,74,135,0,0,95,210,65,226, -224,209,226,13,2,126,1,0,15,112,217,113,65,218,27,110,255,255,13,103, -0,0,78,103,0,0,95,210,65,226,66,74,68,18,61,87,9,0,10,88, -129,90,11,128,193,130,16,136,17,120,216,121,239,73,225,213,29,48,24,56, -25,64,128,255,44,0,29,48,24,56,25,64,128,255,248,0,10,16,224,17, -194,5,32,22,194,1,213,5,65,186,224,209,250,173,0,18,2,80,3,30, -132,1,126,6,255,241,128,7,225,48,6,224,7,216,8,248,60,135,5,0, -16,136,129,138,17,232,59,233,229,87,64,0,224,7,96,1,10,208,60,127, -21,0,128,118,170,170,111,119,0,0,60,111,25,0,32,102,85,85,109,103, -0,0,60,95,21,0,128,86,160,160,107,87,0,0,0,18,229,21,66,218, -27,142,254,255,66,250,31,134,254,255,240,127,1,0,113,127,0,0,66,234, -29,118,254,255,66,250,31,110,254,255,237,103,1,0,110,103,0,0,65,18, -60,87,9,0,10,88,129,90,235,17,225,229,32,54,32,78,128,255,142,184, -250,47,32,0,64,6,255,48,38,135,5,0,16,136,129,138,17,16,39,17, -0,74,229,21,66,66,8,126,254,255,66,58,7,118,254,255,238,111,1,0, -111,111,0,0,66,66,8,102,254,255,66,18,2,94,254,255,235,87,1,0, -108,87,0,0,65,74,38,135,9,0,16,136,129,138,241,73,225,229,127,0, -38,135,5,0,16,136,129,138,17,16,39,17,0,74,133,37,66,66,8,126, -254,255,239,119,1,0,66,58,7,110,254,255,237,103,1,0,236,113,194,5, -32,22,194,1,149,29,66,66,8,94,254,255,235,87,1,0,66,18,2,142, -254,255,241,135,1,0,240,81,194,5,32,22,194,1,165,13,65,74,9,120, -38,111,9,0,13,112,129,114,238,121,177,221,0,18,2,80,127,0,128,7, -33,0,224,49,138,13,32,54,36,0,129,255,42,21,10,48,224,49,146,37, -48,6,180,109,133,0,102,135,17,0,32,118,0,64,102,119,13,0,44,6, -170,10,16,0,102,103,21,0,43,6,84,5,16,0,64,126,16,0,102,127, -29,0,102,127,5,0,102,127,1,0,102,95,25,0,47,6,2,0,16,0, -102,127,33,0,6,80,64,6,63,0,38,87,1,0,127,0,38,87,5,0, -127,0,38,87,13,0,127,0,34,6,240,224,132,0,34,135,5,0,34,87, -9,0,208,81,202,82,127,0,38,87,1,0,127,0,128,7,193,16,6,224, -229,87,64,0,224,7,96,1,60,23,21,0,32,142,170,0,98,143,0,0, -60,135,25,0,32,126,85,0,112,127,0,0,32,118,144,0,98,119,0,0, -60,103,1,0,10,216,44,103,0,0,60,239,33,0,204,94,255,0,208,90, -253,239,1,0,11,233,32,118,240,0,98,119,0,0,251,47,32,0,45,6, -91,34,1,0,237,233,186,5,0,82,229,13,44,6,186,34,1,0,236,233, -250,5,64,94,8,0,124,95,5,0,0,82,181,5,32,86,192,1,64,6, -223,16,130,7,225,243,8,216,9,232,6,184,55,23,1,0,7,224,226,225, -129,13,29,136,55,135,5,0,220,137,194,129,240,137,195,5,32,86,193,1, -133,109,64,54,1,0,129,255,198,19,10,192,99,199,1,0,224,193,202,5, -32,86,21,1,197,93,55,215,1,0,0,82,64,22,133,0,34,94,240,224, -165,13,43,23,1,0,202,18,218,17,226,225,241,5,2,208,68,90,65,82, -10,6,180,255,217,245,10,176,133,69,23,48,26,56,22,104,194,106,64,86, -133,0,202,105,45,207,241,224,24,64,202,202,25,72,128,255,18,1,28,80, -28,88,35,23,1,0,186,89,203,17,25,96,218,97,181,13,27,135,0,0, -95,234,65,218,65,226,66,135,0,0,65,82,65,18,65,90,236,81,185,5, -224,233,186,245,23,48,26,56,128,255,48,1,23,48,26,56,24,64,25,72, -128,255,52,0,23,48,26,56,24,64,25,72,128,255,232,0,224,81,242,5, -24,48,129,255,50,19,32,86,194,1,149,13,217,209,65,178,224,233,138,197, -24,48,129,255,30,19,0,82,66,6,255,243,128,7,193,240,6,216,7,232, -8,224,9,192,58,6,240,255,31,0,229,87,64,0,224,7,96,1,10,200, -0,18,149,53,253,143,1,0,252,135,1,0,240,137,202,5,66,234,66,226, -245,37,59,127,21,0,32,118,170,0,111,119,0,0,59,111,25,0,32,102, -85,0,109,103,0,0,59,95,21,0,32,86,160,0,107,87,0,0,66,234, -29,142,254,255,66,226,28,134,254,255,240,127,1,0,113,127,0,0,250,119, -1,0,206,110,64,0,250,103,1,0,204,94,64,0,235,105,250,245,65,18, -24,80,191,82,10,136,159,138,24,128,209,129,16,120,161,122,239,17,241,197, -249,47,32,0,64,6,223,240,0,18,133,13,231,143,1,0,104,143,0,0, -66,58,66,66,65,18,9,120,191,122,159,122,9,104,207,105,161,106,237,17, -161,245,127,0,0,18,213,13,232,143,1,0,66,66,231,135,1,0,66,58, -240,137,194,5,32,86,194,1,181,13,65,18,9,112,191,114,159,114,9,96, -206,97,161,98,236,17,214,237,0,82,127,0,34,6,240,255,31,0,38,143, -21,0,32,134,170,0,113,135,0,0,38,127,25,0,32,118,85,0,111,119, -0,0,38,111,21,0,32,102,128,0,109,103,0,0,38,95,21,0,32,86, -170,0,107,87,0,0,38,143,25,0,32,134,85,0,113,135,0,0,32,126, -48,0,103,127,0,0,226,119,1,0,206,110,64,0,226,103,1,0,204,94, -64,0,235,105,250,245,127,0,128,7,97,0,6,232,224,233,138,13,32,54, -36,0,129,255,214,17,10,232,224,233,194,37,29,48,191,255,148,252,49,6, -244,109,133,0,125,143,17,0,32,126,0,64,125,127,13,0,45,6,170,170, -16,0,125,111,21,0,43,6,84,85,16,0,64,134,16,0,125,135,29,0, -125,135,5,0,125,135,1,0,125,95,25,0,48,6,2,0,16,0,125,135, -33,0,29,80,64,6,127,0,128,7,225,0,6,248,229,87,64,0,224,7, -96,1,63,23,21,0,32,142,170,0,98,143,0,0,63,135,25,0,32,126, -85,0,112,127,0,0,32,118,144,0,98,119,0,0,63,103,1,0,10,224, -44,103,0,0,63,239,33,0,204,94,255,0,208,90,253,239,1,0,11,233, -31,48,128,255,30,0,252,47,32,0,46,6,91,0,32,0,238,233,186,5, -0,82,181,5,32,86,192,1,64,6,255,0,128,7,33,0,38,143,21,0, -32,134,240,0,113,135,0,0,12,50,128,255,168,179,64,6,63,0,38,135, -128,7,97,0,0,50,191,255,192,251,42,23,17,0,100,87,141,139,34,127, -16,0,10,112,15,48,206,49,34,111,21,0,63,6,200,11,129,0,109,0, -10,232,224,233,210,5,36,55,141,139,129,255,170,16,224,233,162,29,0,50, -191,255,220,254,42,23,17,0,100,87,141,139,34,135,16,0,10,120,16,48, -207,49,34,119,21,0,63,6,254,11,129,0,110,0,10,232,224,233,210,5, -36,55,141,139,129,255,116,16,224,233,186,5,128,255,10,0,29,80,64,6, -127,0,128,7,225,48,36,87,141,139,42,23,17,0,63,6,58,12,129,0, -34,135,24,0,34,127,29,0,16,48,202,49,111,0,10,232,36,87,141,139, -42,23,17,0,63,6,88,12,129,0,34,111,56,0,34,103,61,0,13,48, -202,49,108,0,234,233,234,85,36,95,141,139,43,23,17,0,63,6,124,12, -129,0,2,238,40,0,34,87,24,0,34,143,29,0,10,48,203,49,113,0, -10,216,61,127,0,0,36,55,141,139,15,112,206,49,61,111,5,0,63,6, -150,12,129,0,109,0,10,224,36,87,141,139,63,6,190,12,129,0,42,23, -17,0,219,225,34,95,24,0,2,222,48,0,11,48,202,49,34,87,29,0, -2,238,40,0,106,0,10,208,61,135,0,0,36,55,141,139,16,120,207,49, -61,119,5,0,63,6,216,12,129,0,110,0,10,232,218,233,59,103,0,0, -36,55,141,139,12,88,203,49,59,87,5,0,63,6,244,12,129,0,106,0, -28,48,221,81,10,62,8,0,128,255,226,5,100,87,145,139,181,5,100,239, -145,139,64,6,255,48,176,7,225,112,49,6,64,48,32,16,99,143,73,0, -48,6,68,51,34,17,99,135,77,0,35,54,72,0,128,255,90,9,10,200, -224,201,194,109,0,218,0,226,213,93,28,120,194,122,197,121,47,95,37,130, -99,95,77,0,35,54,72,0,128,255,56,9,10,232,224,233,226,77,249,233, -195,77,224,217,250,5,1,218,38,6,76,225,132,0,129,255,246,20,61,71, -5,0,61,23,13,0,61,63,1,0,29,72,99,23,1,0,99,23,5,0, -38,6,152,225,132,0,129,255,214,20,35,63,77,0,35,54,40,0,128,255, -220,9,35,54,40,0,128,255,76,14,10,232,29,48,129,255,190,14,10,208, -26,56,29,64,35,54,40,0,0,74,128,255,192,13,224,81,210,5,26,48, -129,255,192,14,133,29,35,54,40,0,128,255,48,11,35,63,77,0,35,54, -8,0,128,255,156,9,29,56,35,54,8,0,1,66,128,255,52,5,26,56, -29,64,35,54,8,0,0,74,128,255,220,12,65,226,98,226,177,165,224,217, -146,13,38,6,132,225,132,0,129,255,92,20,1,50,128,255,154,0,112,6, -255,112,128,7,33,0,36,87,141,139,42,23,17,0,63,6,46,14,129,0, -34,135,40,0,34,127,45,0,16,48,202,49,111,0,64,6,63,0,128,7, -33,0,36,87,141,139,42,23,17,0,63,6,82,14,129,0,34,135,48,0, -34,127,53,0,16,48,202,49,111,0,64,6,63,0,128,7,33,0,36,87, -141,139,42,23,17,0,63,6,118,14,129,0,34,135,56,0,34,127,61,0, -16,48,202,49,111,0,64,6,63,0,128,7,33,0,38,6,192,225,132,0, -129,255,216,19,0,50,128,255,22,0,224,81,194,5,1,50,128,255,12,0, -191,255,118,254,64,6,63,0,134,7,225,243,6,224,156,0,36,23,145,139, -0,194,224,17,202,13,224,225,226,5,38,6,196,226,132,0,129,255,160,19, -32,86,202,1,128,7,66,2,36,87,141,139,2,208,42,23,17,0,63,6, -230,14,129,0,34,127,24,0,34,119,29,0,15,48,202,49,110,0,10,184, -0,178,0,234,224,225,226,5,38,6,120,227,132,0,129,255,102,19,224,225, -226,5,38,6,224,225,132,0,129,255,88,19,26,216,59,23,13,0,251,95, -11,0,2,200,219,201,25,152,171,153,99,159,9,0,224,225,242,13,59,71, -5,0,59,63,1,0,27,72,99,23,1,0,99,23,5,0,38,6,244,226, -132,0,129,255,34,19,247,209,161,21,36,87,141,139,42,23,17,0,63,6, -94,15,129,0,34,135,32,0,34,127,37,0,16,48,202,49,111,0,215,81, -234,209,211,13,32,198,202,1,224,225,226,5,38,6,24,227,132,0,129,255, -234,18,65,234,128,7,108,1,59,23,1,0,45,6,64,48,32,16,237,17, -130,21,44,6,128,112,96,80,236,17,178,13,32,198,202,1,224,225,226,5, -38,6,48,227,132,0,129,255,186,18,65,234,251,23,9,0,98,18,177,5, -99,18,147,13,224,225,226,5,38,6,68,227,132,0,129,255,158,18,65,234, -35,159,9,0,211,126,3,0,146,13,224,225,226,5,38,6,132,226,132,0, -129,255,132,18,65,234,27,88,35,111,9,0,0,18,251,87,11,0,224,81, -178,13,11,23,0,0,13,103,0,0,65,90,65,106,172,17,186,5,95,82, -250,245,224,17,178,13,224,225,226,5,38,6,40,226,132,0,129,255,76,18, -32,198,202,1,65,234,218,86,3,0,146,13,224,225,226,5,38,6,24,226, -132,0,129,255,50,18,65,234,247,201,161,21,36,87,141,139,42,23,17,0, -63,6,80,16,129,0,34,127,32,0,34,119,37,0,15,48,202,49,110,0, -215,81,234,201,195,13,32,198,202,1,224,225,226,5,38,6,68,226,132,0, -129,255,248,17,65,234,213,61,224,225,210,5,37,54,44,130,129,255,232,17, -59,23,21,0,224,17,194,5,2,208,219,209,149,21,36,95,141,139,43,23, -17,0,63,6,162,16,129,0,34,87,32,0,34,143,37,0,10,48,203,49, -113,0,10,208,215,209,26,16,185,17,178,13,224,225,146,13,25,56,2,64, -2,72,38,6,88,226,132,0,129,255,160,17,65,178,105,178,167,13,224,225, -226,5,38,6,92,227,132,0,129,255,140,17,65,234,245,5,59,119,21,0, -224,113,178,5,191,7,40,254,224,225,130,13,22,56,29,64,38,6,152,226, -132,0,129,255,106,17,224,193,202,5,196,7,145,140,181,5,196,135,145,140, -24,80,70,6,255,243,134,7,225,16,36,87,141,139,0,226,42,23,17,0, -63,6,44,17,129,0,34,135,24,0,34,127,29,0,16,48,202,49,111,0, -10,216,38,6,128,228,132,0,129,255,40,17,36,23,145,139,224,17,154,13, -38,6,164,228,132,0,129,255,22,17,32,86,202,1,165,125,2,232,0,226, -38,6,52,229,132,0,129,255,2,17,38,6,212,227,132,0,129,255,248,16, -61,71,5,0,61,23,13,0,61,63,1,0,29,72,99,23,1,0,99,23, -5,0,38,6,196,228,132,0,129,255,216,16,29,48,128,255,188,0,224,81, -162,77,38,6,236,228,132,0,129,255,196,16,36,87,141,139,99,7,9,0, -42,23,17,0,63,6,188,17,129,0,34,111,32,0,34,103,37,0,13,48, -202,49,108,0,10,56,219,57,29,48,128,255,28,1,10,232,224,233,194,13, -224,233,242,13,38,6,52,228,132,0,129,255,134,16,188,233,99,239,9,0, -229,5,38,6,12,228,132,0,129,255,116,16,28,232,60,54,20,0,35,62, -8,0,4,66,128,255,74,4,28,48,128,255,18,10,42,54,20,0,35,62, -8,0,4,66,128,255,54,4,10,224,224,81,130,13,38,6,32,229,132,0, -129,255,64,16,28,80,133,21,29,224,29,48,128,255,246,9,60,143,21,0, -10,232,224,137,170,157,38,6,88,228,132,0,129,255,32,16,0,82,70,6, -255,16,128,7,97,0,6,232,61,23,1,0,49,6,64,48,32,16,241,17, -146,13,48,6,128,112,96,80,240,17,194,5,32,86,202,1,165,29,29,48, -128,255,164,9,253,95,11,0,29,96,0,18,224,89,178,13,12,23,0,0, -10,119,0,0,65,98,65,82,174,17,186,5,95,90,250,245,224,17,194,5, -32,86,202,1,165,5,0,82,64,6,127,0,128,7,225,48,7,216,8,208, -6,232,213,21,61,135,1,0,49,6,64,48,32,16,241,129,218,13,29,224, -28,48,191,255,136,255,224,81,250,5,60,127,5,0,239,209,186,5,28,80, -213,5,68,234,251,233,177,237,0,82,64,6,255,48,128,7,225,16,7,216, -6,232,149,21,61,135,1,0,49,6,64,48,32,16,241,129,154,13,29,224, -28,48,191,255,76,255,224,81,186,5,28,80,213,5,68,234,251,233,241,237, -0,82,64,6,255,16,154,7,225,112,36,143,145,139,136,0,6,232,61,135, -4,0,99,143,1,0,224,129,218,5,32,86,196,1,128,7,240,1,224,65, -178,5,7,112,197,13,7,6,0,253,193,5,32,118,0,4,229,5,7,112, -130,114,199,113,130,114,194,114,125,119,21,0,61,111,9,0,99,111,29,0, -61,63,13,0,99,63,33,0,61,95,17,0,99,95,37,0,3,48,61,87, -21,0,32,118,24,0,99,87,41,0,3,106,61,143,25,0,10,70,48,0, -99,143,45,0,99,71,41,0,99,119,38,0,99,111,36,0,99,7,49,0, -128,255,138,1,10,224,224,225,146,85,36,87,141,139,35,223,41,0,42,23, -17,0,220,217,34,95,24,0,2,214,32,0,11,48,202,49,34,87,29,0, -63,6,200,19,129,0,106,0,10,200,58,135,0,0,36,55,141,139,16,120, -207,49,58,119,5,0,63,6,226,19,129,0,110,0,217,81,234,217,147,13, -32,110,198,1,125,111,4,0,32,86,197,1,128,7,42,1,35,23,1,0, -224,17,146,21,252,17,185,13,34,87,21,0,224,81,178,37,34,95,13,0, -171,81,99,87,49,0,213,29,188,17,99,23,49,0,149,29,36,87,141,139, -42,23,17,0,63,6,60,20,129,0,34,135,48,0,34,127,53,0,16,48, -202,49,111,0,99,87,49,0,133,13,32,118,198,1,125,119,4,0,32,86, -195,1,133,109,227,223,39,0,28,48,35,62,28,0,27,64,128,255,230,1, -10,16,224,17,226,5,32,102,198,1,125,103,4,0,133,93,28,208,28,48, -128,255,156,7,10,48,35,62,28,0,27,64,128,255,194,1,10,16,224,17, -242,5,32,86,198,1,125,87,4,0,2,80,213,69,35,23,1,0,224,17, -226,53,252,17,201,53,34,127,1,0,99,127,5,0,34,119,5,0,99,119, -9,0,34,111,9,0,99,111,13,0,162,209,34,103,13,0,2,48,99,103, -17,0,35,62,4,0,34,95,17,0,27,64,99,95,21,0,99,215,25,0, -128,255,106,1,10,16,224,17,194,5,125,23,4,0,197,29,35,55,1,0, -128,255,36,7,10,48,35,62,4,0,27,64,128,255,74,1,10,16,224,17, -194,5,125,23,4,0,197,13,191,255,18,247,61,54,8,0,128,255,116,1, -125,87,1,0,125,7,4,0,0,82,90,6,255,112,140,7,225,112,6,224, -8,208,0,82,0,234,0,18,181,13,2,136,194,138,197,137,49,111,37,130, -231,105,186,5,1,82,197,5,65,18,98,18,209,245,224,81,178,45,36,87, -141,139,42,23,17,0,63,6,110,21,129,0,2,222,40,0,34,143,24,0, -34,135,29,0,17,48,202,49,112,0,10,200,59,119,0,0,36,55,141,139, -14,104,205,49,59,103,5,0,63,6,136,21,129,0,108,0,36,95,145,139, -124,95,1,0,10,16,36,143,145,139,217,17,162,137,250,137,163,77,2,80, -245,77,48,6,64,48,32,16,99,135,1,0,47,6,68,51,34,17,99,127, -5,0,3,48,128,255,204,0,124,87,1,0,224,81,250,53,29,80,197,61, -60,55,1,0,38,103,5,0,45,6,136,119,102,85,237,97,170,21,38,95, -21,0,224,89,226,5,128,255,60,6,124,87,1,0,149,13,38,239,13,0, -49,6,0,128,1,0,198,233,209,233,149,37,60,55,1,0,38,23,21,0, -38,127,13,0,2,128,175,129,250,129,227,5,128,255,0,6,10,238,24,0, -165,21,224,17,234,5,128,255,242,5,10,238,24,0,181,13,128,255,246,5, -124,87,1,0,60,55,1,0,191,255,18,252,224,81,242,197,29,80,76,6, -255,112,128,7,225,48,6,224,7,216,8,208,229,87,64,0,224,7,96,1, -10,232,36,87,141,139,28,56,42,23,17,0,27,64,34,135,8,0,26,72, -16,48,202,49,34,127,13,0,63,6,120,22,129,0,111,0,10,224,253,47, -32,0,28,80,64,6,255,48,128,7,225,240,36,239,145,139,224,233,29,208, -186,5,0,82,181,109,6,224,0,218,213,101,61,135,1,0,60,143,1,0, -241,129,250,5,61,119,5,0,60,127,5,0,239,113,178,93,61,111,21,0, -224,105,194,5,65,218,105,218,167,61,0,234,196,199,145,140,234,77,36,87, -141,139,42,23,17,0,34,95,24,0,11,48,202,49,34,87,29,0,63,6, -230,22,129,0,106,0,36,95,141,139,10,200,43,87,17,0,63,6,8,23, -129,0,42,127,29,0,42,135,24,0,10,238,32,0,16,48,203,49,111,0, -10,192,61,111,0,0,36,55,141,139,13,96,204,49,61,95,5,0,63,6, -34,23,129,0,107,0,10,56,216,57,60,71,5,0,25,48,191,255,116,251, -10,232,149,29,29,48,128,255,232,4,10,232,250,233,161,21,36,87,141,139, -42,23,17,0,63,6,92,23,129,0,34,143,32,0,34,135,37,0,17,48, -202,49,112,0,218,81,234,233,163,5,0,234,224,233,186,157,29,80,64,6, -255,240,128,7,225,0,6,232,7,224,224,233,138,13,32,54,32,0,129,255, -30,5,10,232,224,233,162,45,49,6,64,48,32,16,125,143,9,0,125,231, -13,0,61,54,8,0,191,255,234,254,125,87,1,0,10,56,224,57,194,21, -231,23,9,0,98,18,210,13,99,18,178,13,38,6,136,229,132,0,129,255, -162,10,32,118,201,1,125,119,4,0,165,13,125,7,4,0,245,5,125,7, -1,0,32,110,198,1,125,111,4,0,29,80,64,6,255,0,128,7,97,0, -6,232,61,135,1,0,48,135,13,0,208,134,3,0,146,13,38,6,180,229, -132,0,32,62,229,3,0,66,190,255,254,237,61,111,1,0,205,118,3,0, -146,13,38,6,180,229,132,0,32,62,230,3,0,66,190,255,228,237,61,23, -1,0,0,98,226,87,11,0,2,118,24,0,34,23,13,0,193,82,170,17, -130,18,194,18,206,17,0,106,46,87,1,0,68,114,202,97,225,127,0,0, -207,105,226,113,129,253,205,97,12,80,64,6,127,0,140,7,97,0,6,232, -61,23,1,0,224,17,202,5,32,86,198,1,213,69,34,127,1,0,99,127, -1,0,34,119,5,0,99,119,5,0,34,111,9,0,99,111,9,0,34,103, -13,0,99,103,13,0,34,95,17,0,99,95,17,0,34,87,21,0,205,22, -255,255,99,87,21,0,98,18,210,13,99,18,178,13,61,63,1,0,38,6, -196,229,132,0,129,255,172,9,32,86,201,1,213,29,29,48,191,255,36,255, -99,87,17,0,3,122,99,127,8,0,61,55,1,0,3,56,227,71,11,0, -191,255,110,253,224,81,186,13,61,55,1,0,128,255,48,3,10,48,3,56, -227,71,11,0,191,255,86,253,0,82,76,6,127,0,152,7,225,240,6,192, -56,239,1,0,229,87,64,0,224,7,96,1,10,216,196,199,145,140,250,13, -191,255,250,247,224,81,186,13,196,7,145,140,32,54,64,0,37,62,46,130, -190,255,144,237,191,255,242,242,29,48,191,255,86,253,10,232,224,233,250,5, -251,47,32,0,32,86,198,1,128,7,132,1,61,23,5,0,49,6,68,51, -34,17,241,17,242,5,36,87,145,139,42,135,5,0,240,17,154,53,61,111, -1,0,99,111,25,0,61,103,5,0,99,103,29,0,61,95,9,0,99,95, -33,0,61,87,13,0,99,87,37,0,61,143,17,0,31,122,99,143,41,0, -29,48,61,135,21,0,35,62,24,0,99,127,29,0,99,135,45,0,99,127, -25,0,253,71,11,0,191,255,160,252,10,208,191,255,114,242,32,102,198,1, -120,103,4,0,251,47,32,0,26,80,128,7,10,1,10,224,213,5,28,48, -128,255,90,2,10,224,28,48,128,255,82,2,253,81,138,253,60,143,1,0, -99,143,25,0,60,135,5,0,99,135,29,0,60,127,9,0,99,127,33,0, -60,119,13,0,99,119,37,0,60,111,17,0,99,111,41,0,60,103,21,0, -99,103,45,0,61,23,21,0,224,17,242,5,60,87,21,0,202,17,99,23, -45,0,181,5,99,7,45,0,227,207,35,0,28,48,35,62,24,0,25,64, -191,255,26,252,10,208,224,209,146,13,32,134,198,1,120,135,4,0,251,47, -32,0,26,80,165,69,28,48,128,255,204,1,10,48,35,62,24,0,25,64, -191,255,242,251,10,208,224,209,146,13,32,118,198,1,120,119,4,0,251,47, -32,0,26,80,229,45,61,95,1,0,99,95,1,0,61,87,5,0,99,87, -5,0,61,143,9,0,99,143,9,0,61,135,13,0,99,135,13,0,61,127, -17,0,31,106,99,127,17,0,29,48,61,119,21,0,3,56,99,119,21,0, -99,111,1,0,99,111,5,0,25,64,191,255,152,251,29,48,128,255,96,1, -10,48,3,56,25,64,191,255,136,251,251,47,32,0,0,82,88,6,255,240, -128,7,225,112,6,224,7,200,8,216,9,208,0,250,229,87,64,0,224,7, -96,1,10,232,196,199,145,140,218,13,191,255,36,246,224,81,154,13,196,7, -145,140,32,54,64,0,37,62,47,130,190,255,186,235,60,143,4,0,224,137, -242,13,28,48,27,56,0,66,191,255,6,248,60,135,4,0,224,129,226,5, -253,47,32,0,60,87,4,0,245,37,26,120,60,23,1,0,219,121,226,103, -11,0,34,87,13,0,193,98,172,81,234,121,227,5,253,47,32,0,32,86, -199,1,229,21,2,54,24,0,218,49,25,56,27,64,191,255,244,250,10,248, -224,249,210,5,253,47,32,0,31,80,133,13,28,48,191,255,244,252,10,248, -253,47,32,0,31,80,64,6,255,112,128,7,225,112,7,200,8,216,6,232, -61,23,4,0,9,208,224,17,178,5,2,80,213,45,26,120,61,231,1,0, -219,121,252,103,11,0,60,87,13,0,193,98,172,81,234,121,195,5,32,86, -199,1,229,29,29,48,191,255,54,252,60,23,17,0,234,17,194,13,61,135, -1,0,240,135,9,0,99,130,234,5,32,86,200,1,125,87,4,0,197,13, -61,119,1,0,26,56,14,118,24,0,206,57,25,48,27,64,190,255,172,228, -0,82,64,6,255,112,38,143,4,0,224,137,170,13,38,23,1,0,34,87, -13,0,226,119,11,0,193,114,174,81,165,5,0,82,127,0,38,135,4,0, -224,129,226,87,0,0,127,0,38,87,13,0,230,135,11,0,198,81,176,81, -127,0,38,87,21,0,198,81,127,0,140,7,225,48,0,226,6,208,122,7, -0,0,191,255,36,242,10,232,191,255,214,241,10,16,0,82,213,13,250,103, -1,0,29,135,0,0,65,226,208,126,255,0,207,97,122,103,0,0,65,234, -65,82,226,81,177,245,42,6,64,48,32,16,99,87,1,0,49,6,68,51, -34,17,99,143,5,0,3,48,191,255,16,250,10,216,224,217,170,13,38,6, -16,230,132,0,129,255,216,5,32,86,107,48,128,7,24,2,191,255,162,241, -202,233,253,217,146,21,38,6,52,230,132,0,129,255,188,5,29,56,27,64, -38,6,96,230,132,0,129,255,174,5,32,86,107,48,128,7,238,1,251,135, -11,0,16,6,232,255,178,21,38,6,140,230,132,0,129,255,146,5,251,71, -11,0,38,6,180,230,132,0,32,62,24,0,129,255,128,5,32,86,107,48, -128,7,192,1,0,18,213,13,250,143,1,0,29,111,0,0,65,226,205,102, -255,0,204,137,122,143,0,0,65,234,65,18,251,119,11,0,14,110,252,255, -237,17,241,237,68,234,59,103,13,0,68,226,12,22,208,255,0,98,213,13, -250,119,1,0,29,87,0,0,65,226,202,142,255,0,209,113,122,119,0,0, -65,234,65,98,226,97,177,245,0,18,213,13,250,127,1,0,29,95,0,0, -65,226,203,86,255,0,202,121,122,127,0,0,65,234,65,18,251,103,11,0, -12,94,252,255,235,17,241,237,59,239,21,0,68,226,219,233,42,6,128,112, -96,80,99,87,1,0,49,6,136,119,102,85,99,143,5,0,3,48,191,255, -2,249,10,216,224,217,170,13,38,6,240,229,132,0,129,255,202,4,32,86, -107,48,128,7,10,1,253,217,130,21,38,6,224,230,132,0,129,255,180,4, -29,56,27,64,38,6,96,230,132,0,129,255,166,4,32,86,107,48,181,117, -251,135,11,0,16,6,232,255,162,21,38,6,8,231,132,0,129,255,140,4, -251,71,11,0,38,6,180,230,132,0,32,62,24,0,129,255,122,4,32,86, -107,48,213,93,0,18,213,13,250,143,1,0,29,111,0,0,65,226,205,102, -255,0,204,137,122,143,0,0,65,234,65,18,251,119,11,0,14,110,252,255, -237,17,241,237,68,234,59,103,13,0,68,226,12,22,208,255,0,98,213,13, -250,119,1,0,29,87,0,0,65,226,202,142,255,0,209,113,122,119,0,0, -65,234,65,98,226,97,177,245,0,18,213,13,250,127,1,0,29,95,0,0, -65,226,203,86,255,0,202,121,122,127,0,0,65,234,65,18,251,103,11,0, -12,94,252,255,235,17,241,237,36,87,141,139,68,234,42,23,17,0,68,226, -34,143,32,0,34,135,37,0,17,48,202,49,63,6,136,30,129,0,112,0, -10,16,188,17,0,82,133,13,250,127,1,0,15,126,255,0,122,127,0,0, -65,82,226,81,129,253,0,82,76,6,255,48,6,96,0,90,245,21,12,80, -171,81,11,16,204,17,2,143,0,0,10,135,1,0,49,129,66,135,0,0, -10,111,1,0,48,105,74,111,1,0,2,87,0,0,65,90,45,81,66,87, -0,0,97,90,150,237,127,0,6,96,0,90,245,21,12,80,171,81,11,16, -204,17,2,143,0,0,10,135,3,0,49,129,66,135,0,0,10,111,3,0, -48,105,74,111,3,0,2,87,0,0,65,90,45,81,66,87,0,0,98,90, -150,237,127,0,6,96,0,90,245,21,12,80,171,81,11,16,204,17,2,143, -0,0,10,135,7,0,49,129,66,135,0,0,10,111,7,0,48,105,74,111, -7,0,2,87,0,0,65,90,45,81,66,87,0,0,100,90,150,237,127,0, -6,96,0,90,245,21,12,80,171,81,11,16,204,17,2,143,0,0,10,135, -3,0,49,129,66,135,0,0,10,111,3,0,48,105,74,111,3,0,2,87, -0,0,65,90,45,81,66,87,0,0,98,90,150,237,127,0,34,6,220,193, -142,0,8,138,98,143,1,0,32,134,20,0,98,135,5,0,47,6,64,118, -133,0,98,127,9,0,41,6,196,193,142,0,105,7,1,0,2,90,42,6, -208,193,142,0,32,118,28,0,106,119,1,0,12,106,106,111,5,0,44,6, -88,118,133,0,106,103,9,0,105,95,5,0,42,6,140,117,133,0,105,87, -9,0,127,0,0,82,127,0,0,82,127,0,192,25,0,82,127,0,128,7, -193,16,6,232,61,231,17,0,61,223,17,0,27,87,0,0,157,95,25,0, -1,18,235,23,192,0,2,232,10,233,92,239,0,0,64,6,223,16,128,7, -193,16,6,232,61,231,17,0,61,223,17,0,27,87,0,0,157,95,25,0, -1,18,235,23,192,0,34,16,2,232,74,233,92,239,0,0,64,6,223,16, -128,7,193,16,6,232,61,223,5,0,61,231,5,0,28,87,0,0,157,95, -13,0,1,18,235,23,192,0,2,224,10,225,91,231,0,0,60,6,64,13, -3,0,61,223,9,0,27,87,0,0,157,95,13,0,1,18,235,23,192,0, -74,17,224,17,202,5,95,226,224,225,170,245,64,6,223,16,128,7,225,0, -6,248,63,231,5,0,63,239,5,0,29,87,0,0,159,95,13,0,1,18, -235,23,192,0,34,16,2,232,74,233,92,239,0,0,31,48,191,255,58,255, -64,6,255,0,128,7,193,0,6,232,61,231,21,0,28,87,0,0,10,88, -157,103,25,0,1,18,236,23,192,0,75,17,224,17,239,23,0,0,130,0, -2,80,64,6,223,0,128,7,97,0,6,232,29,48,191,255,0,255,29,48, -191,255,76,255,2,50,128,255,68,158,29,48,191,255,22,255,2,50,128,255, -56,158,29,48,191,255,128,255,2,50,128,255,44,158,64,6,127,0,128,7, -97,0,6,232,29,48,191,255,244,254,29,48,191,255,24,255,2,50,128,255, -16,158,29,48,191,255,186,254,2,50,128,255,4,158,29,48,191,255,76,255, -2,50,128,255,248,157,64,6,127,0,128,7,225,241,6,232,7,216,8,208, -9,224,156,0,35,207,33,0,35,199,37,0,131,191,41,0,224,233,154,13, -32,54,28,0,128,255,44,251,10,16,2,232,224,233,226,37,49,6,188,117, -133,0,125,143,1,0,48,6,228,117,133,0,125,135,1,0,125,223,17,0, -125,215,21,0,93,231,24,0,125,207,5,0,125,199,9,0,93,191,12,0, -29,48,191,255,68,254,29,48,191,255,144,254,29,48,191,255,100,255,29,48, -191,255,94,255,29,48,191,255,88,255,29,16,2,80,64,6,255,241,128,7, -97,0,6,232,29,48,191,255,64,254,29,48,191,255,100,254,2,50,128,255, -92,157,29,48,191,255,164,254,2,50,128,255,80,157,64,6,127,0,128,7, -225,16,6,232,29,48,191,255,66,254,60,6,128,132,30,0,2,50,128,255, -52,157,29,48,191,255,172,254,10,216,213,5,29,48,191,255,162,254,10,216, -27,136,224,137,170,5,197,5,95,226,224,225,234,245,29,48,191,255,92,254, -27,128,16,16,130,0,2,80,64,6,255,16,128,7,225,16,6,216,0,234, -0,226,193,234,157,0,27,48,191,255,240,253,2,50,128,255,232,156,27,48, -191,255,96,254,10,16,2,233,157,0,27,48,191,255,36,254,2,50,128,255, -208,156,65,226,104,226,166,237,29,136,17,16,130,0,2,80,64,6,255,16, -128,7,225,16,6,224,7,216,155,0,32,238,128,0,27,136,29,128,81,129, -224,129,210,5,28,48,191,255,80,253,197,5,28,48,191,255,112,253,28,48, -191,255,148,253,2,50,128,255,140,156,28,48,191,255,212,253,2,50,128,255, -128,156,161,234,224,233,239,229,64,6,255,16,128,7,225,112,6,224,7,232, -157,0,9,216,8,200,193,234,157,0,157,238,1,0,28,48,191,255,2,254, -28,48,29,136,17,56,191,255,150,255,28,48,191,255,2,255,224,81,242,5, -28,48,191,255,28,254,32,22,64,2,245,29,0,234,197,13,29,208,217,209, -28,48,191,255,46,255,90,87,0,0,28,48,191,255,178,254,65,234,27,134, -255,255,240,233,166,245,27,22,255,255,2,232,217,233,28,48,191,255,12,255, -93,87,0,0,28,48,191,255,220,253,0,18,2,80,64,6,255,112,128,7, -225,48,6,232,7,224,156,0,8,216,155,0,9,208,193,226,156,0,29,48, -191,255,134,253,29,48,28,136,17,56,191,255,26,255,29,48,191,255,134,254, -224,81,242,5,29,48,191,255,160,253,32,22,64,2,245,45,29,48,27,128, -16,56,191,255,250,254,29,48,191,255,102,254,224,81,242,5,29,48,191,255, -128,253,32,22,65,2,245,29,156,230,1,0,29,48,191,255,60,253,29,48, -28,120,15,56,191,255,208,254,29,48,191,255,60,254,224,81,242,5,29,48, -191,255,86,253,32,22,65,2,165,13,29,48,191,255,112,254,90,87,0,0, -29,48,191,255,64,253,0,18,2,80,64,6,255,48,128,7,225,48,6,232, -7,224,156,0,8,216,155,0,9,208,154,0,193,226,156,0,29,48,191,255, -232,252,29,48,28,136,17,56,191,255,124,254,29,48,191,255,232,253,224,81, -242,5,29,48,191,255,2,253,32,22,64,2,213,37,29,48,27,128,16,56, -191,255,92,254,29,48,191,255,200,253,224,81,242,5,29,48,191,255,226,252, -32,22,65,2,213,21,29,48,26,120,15,56,191,255,60,254,29,48,191,255, -168,253,224,81,242,5,29,48,191,255,194,252,32,22,65,2,213,5,29,48, -191,255,182,252,0,18,2,80,64,6,255,48,128,7,225,48,6,216,7,232, -157,0,8,80,138,0,9,16,35,215,21,0,2,224,59,23,1,0,72,18, -34,135,0,0,16,136,219,137,17,48,29,120,15,56,10,112,14,64,28,72, -34,111,5,0,63,6,172,36,129,0,109,0,10,16,2,88,224,89,218,13, -27,48,29,96,12,56,28,94,1,0,11,64,26,86,255,255,10,72,191,255, -6,254,10,16,2,80,64,6,255,48,128,7,225,112,6,232,7,224,156,0, -8,208,154,0,35,223,25,0,9,200,193,226,156,0,29,48,191,255,250,251, -29,48,28,136,17,56,191,255,142,253,29,48,191,255,250,252,224,81,242,5, -29,48,191,255,20,252,32,22,64,2,197,61,29,48,26,128,16,56,191,255, -110,253,29,48,191,255,218,252,224,81,242,5,29,48,191,255,244,251,32,22, -65,2,197,45,0,226,213,21,29,48,28,120,217,121,143,119,1,0,14,56, -191,255,68,253,29,48,191,255,176,252,224,81,242,5,29,48,191,255,202,251, -32,22,64,2,245,21,65,226,27,110,255,255,237,225,150,237,29,48,27,102, -255,255,12,88,217,89,139,87,1,0,10,56,191,255,16,253,29,48,191,255, -124,252,29,48,191,255,154,251,0,18,2,80,64,6,255,112,128,7,33,0, -32,54,68,177,31,58,190,255,210,224,10,16,224,17,154,253,64,6,63,0, -128,7,33,0,32,54,68,177,190,255,136,231,10,16,224,17,162,13,38,6, -88,240,132,0,32,62,183,1,0,66,190,255,60,224,224,81,64,6,63,0, -130,7,225,48,6,232,7,224,156,0,8,216,155,0,9,208,29,48,191,255, -174,255,29,48,28,136,17,56,27,128,16,64,26,72,1,122,99,127,1,0, -128,255,74,1,10,224,29,48,191,255,168,255,28,16,2,80,66,6,255,48, -132,7,225,16,6,232,7,224,156,0,8,216,155,0,67,79,7,0,29,48, -191,255,112,255,29,48,28,136,17,56,27,128,16,64,99,7,1,0,35,78, -7,0,128,255,12,1,10,224,29,48,191,255,106,255,28,16,2,80,68,6, -255,16,128,7,225,240,6,208,7,224,156,0,8,216,155,0,9,16,35,199, -29,0,2,200,0,234,133,37,58,23,1,0,72,18,34,135,0,0,16,136, -218,137,17,48,28,120,15,56,27,112,29,104,206,105,13,96,140,0,12,88, -11,64,29,80,217,81,10,72,34,143,5,0,63,6,148,38,129,0,113,0, -10,16,2,88,224,89,202,5,65,234,248,233,134,229,2,80,64,6,255,240, -128,7,225,240,6,208,7,224,156,0,8,216,155,0,9,16,35,199,29,0, -2,200,0,234,181,37,58,23,1,0,2,22,16,0,34,135,0,0,16,136, -218,137,17,48,28,120,15,56,27,112,29,104,206,105,13,96,140,0,12,88, -11,64,29,80,217,81,138,143,1,0,17,72,34,135,5,0,63,6,252,38, -129,0,112,0,10,16,2,88,224,89,202,5,65,234,248,233,214,221,2,80, -64,6,255,240,128,7,33,0,32,54,236,176,64,62,4,0,0,66,191,255, -84,23,64,142,32,0,241,143,111,0,100,143,180,139,228,23,181,139,64,14, -32,0,97,23,110,0,64,6,63,0,132,7,225,112,7,224,156,0,8,216, -155,0,9,200,131,215,33,0,0,234,64,142,32,0,241,143,111,0,100,143, -180,139,197,85,196,255,181,139,194,5,32,22,65,2,165,85,27,128,16,120, -15,112,200,114,28,104,13,96,193,98,12,88,14,89,26,80,10,136,11,137, -17,128,208,0,16,16,64,14,32,0,97,23,108,0,26,120,224,121,138,13, -153,119,1,0,14,16,64,14,32,0,97,23,106,0,196,191,180,139,196,55, -180,139,196,47,180,139,228,23,181,139,64,14,32,0,97,23,110,0,35,78, -4,0,31,106,99,111,1,0,32,54,236,176,64,62,4,0,1,66,190,255, -90,229,196,215,180,139,178,5,65,234,197,21,196,207,180,139,194,5,32,22, -65,2,165,21,26,96,97,98,154,13,64,94,32,0,235,95,107,0,11,80, -138,0,89,87,0,0,0,18,213,5,99,234,198,173,32,22,65,2,2,80, -68,6,255,112,128,7,97,0,6,232,128,255,152,228,224,81,146,13,38,6, -196,240,132,0,32,62,81,0,0,66,190,255,208,221,1,138,100,239,197,139, -125,143,45,0,64,6,127,0,128,7,97,0,6,232,61,143,45,0,97,138, -138,45,61,63,5,0,29,64,38,6,208,240,132,0,128,255,2,250,29,48, -128,255,190,228,224,81,146,13,38,6,232,240,132,0,32,62,115,0,0,66, -190,255,138,221,61,71,17,0,61,63,5,0,29,48,128,255,48,228,224,81, -162,13,38,6,232,240,132,0,32,62,120,0,0,66,190,255,104,221,224,81, -64,6,127,0,128,7,225,0,36,239,197,139,6,224,224,233,210,21,61,143, -9,0,0,50,224,137,226,5,61,135,13,0,252,129,170,5,29,48,61,239, -37,0,224,49,178,5,191,255,118,255,36,127,197,139,239,233,218,237,64,6, -255,0,128,7,97,0,102,71,33,0,6,232,128,255,152,209,224,81,146,13, -38,6,244,240,132,0,32,62,201,0,0,66,190,255,6,221,1,138,100,239, -201,139,125,143,29,0,64,6,127,0,128,7,97,0,6,232,61,143,29,0, -97,138,138,45,61,63,5,0,29,64,38,6,0,241,132,0,128,255,56,249, -29,48,128,255,186,209,224,81,146,13,38,6,24,241,132,0,32,62,238,0, -0,66,190,255,192,220,61,71,33,0,61,63,5,0,29,48,128,255,48,209, -224,81,162,13,38,6,24,241,132,0,32,62,243,0,0,66,190,255,158,220, -224,81,64,6,127,0,128,7,97,0,36,239,201,139,224,233,178,21,61,135, -9,0,61,143,33,0,0,50,241,129,162,5,29,48,61,239,21,0,224,49, -178,5,191,255,124,255,36,127,201,139,239,233,250,237,64,6,127,0,128,7, -33,0,128,255,8,0,64,6,63,0,128,7,33,0,36,143,205,139,224,137, -218,13,128,255,244,0,34,6,52,60,2,0,234,23,32,2,32,86,232,3, -74,16,100,23,205,139,36,23,205,139,224,17,194,21,128,254,255,255,245,17, -231,5,64,86,0,0,106,255,98,245,229,5,2,248,64,86,0,0,106,255, -98,245,36,135,205,139,191,129,100,135,205,139,64,6,63,0,128,7,33,0, -48,6,52,60,2,0,230,135,32,2,32,110,232,3,77,128,100,135,205,139, -191,255,146,255,64,86,0,0,43,6,115,0,0,0,74,95,100,245,64,6, -63,0,134,7,97,0,32,143,13,177,6,232,224,137,242,29,224,233,194,53, -61,95,5,0,224,89,242,13,61,87,9,0,99,95,9,0,99,87,5,0, -11,16,165,5,72,18,234,17,234,253,11,48,128,255,28,242,125,7,5,0, -125,7,9,0,125,7,13,0,29,48,128,255,10,242,133,29,61,23,5,0, -96,239,13,177,99,23,1,0,2,255,0,0,100,23,209,139,197,250,64,86, -0,0,74,255,8,240,36,55,209,139,38,55,5,0,224,49,178,5,191,255, -94,255,70,6,127,0,136,7,65,0,36,143,209,139,32,23,13,177,17,134, -8,0,99,143,1,0,99,143,5,0,100,135,209,139,34,87,9,0,99,87, -9,0,234,129,250,5,34,23,5,0,100,23,209,139,99,23,13,0,36,23, -209,139,2,239,0,0,197,234,64,86,0,0,74,239,8,240,36,87,209,139, -42,87,5,0,72,6,95,0,127,0,132,7,68,55,172,133,127,0,128,7, -225,240,7,192,6,224,60,55,5,0,8,200,128,255,76,241,10,216,27,48, -60,71,5,0,0,58,190,255,196,214,58,6,36,144,145,0,36,63,213,139, -26,55,12,0,128,255,14,27,60,111,1,0,27,238,1,0,224,81,178,5, -13,110,128,0,93,111,255,255,25,64,60,95,5,0,65,234,94,90,93,95, -255,255,29,56,58,23,49,0,36,79,213,139,72,18,34,55,0,0,34,87, -5,0,218,49,63,6,120,43,129,0,106,0,224,81,234,5,27,48,128,255, -254,240,31,82,181,21,24,48,60,23,5,0,27,56,226,201,222,5,25,64, -190,255,244,212,197,5,2,64,190,255,236,212,27,48,128,255,218,240,60,87, -5,0,64,6,255,240,128,7,225,0,6,224,60,127,5,0,7,143,1,0, -15,134,254,255,240,137,178,5,0,82,197,69,7,119,0,0,206,110,192,0, -178,5,0,82,213,61,61,6,36,144,145,0,61,95,5,0,8,102,254,255, -235,97,190,5,0,82,165,53,61,23,49,0,7,86,2,0,2,22,16,0, -34,55,0,0,10,56,221,49,36,79,213,139,1,66,34,143,5,0,63,6, -18,44,129,0,113,0,10,16,224,17,199,29,0,18,36,63,213,139,61,134, -29,0,199,129,144,119,1,0,224,113,146,13,61,110,13,0,199,105,141,95, -1,0,224,89,170,5,1,18,130,0,224,17,210,5,29,55,12,0,128,255, -20,25,60,87,5,0,64,6,255,0,128,7,225,0,7,232,6,224,29,48, -60,71,5,0,0,58,190,255,132,213,60,135,1,0,65,234,208,134,127,0, -93,135,255,255,60,111,5,0,65,234,94,106,93,111,255,255,8,98,65,234, -93,103,255,255,60,87,5,0,64,6,255,0,38,87,5,0,127,0,130,7, -225,0,9,232,128,255,244,63,10,224,224,81,231,5,29,56,35,54,3,0, -190,255,112,226,28,80,66,6,255,0,132,7,225,48,7,216,8,208,9,224, -6,232,1,138,99,143,5,0,31,50,190,255,150,217,29,48,27,56,26,64, -28,72,128,255,186,63,10,232,224,233,191,13,35,135,5,0,224,129,210,5, -99,7,5,0,190,255,108,217,29,80,245,13,28,56,35,54,3,0,190,255, -90,224,35,127,5,0,224,121,210,5,99,7,5,0,190,255,78,217,29,80, -68,6,255,48,130,7,225,0,9,232,128,255,118,63,10,224,224,81,231,5, -29,56,35,54,3,0,128,255,94,112,28,80,66,6,255,0,130,7,225,0, -9,232,128,255,86,63,10,224,224,81,231,5,29,56,35,54,3,0,190,255, -224,225,28,80,66,6,255,0,128,7,225,0,6,232,61,23,1,0,253,143, -19,0,209,17,125,23,1,0,162,127,1,0,130,111,1,0,200,122,15,105, -125,111,13,0,130,95,3,0,144,106,93,95,16,0,153,29,162,143,5,0, -200,138,130,127,5,0,17,121,125,127,18,0,2,110,6,0,61,103,13,0, -125,111,5,0,204,102,255,63,125,103,13,0,2,94,3,0,125,95,9,0, -8,18,165,13,162,87,3,0,125,87,18,0,125,7,5,0,125,7,9,0, -4,18,61,135,1,0,253,127,19,0,194,129,125,135,1,0,39,111,1,0, -207,17,162,105,103,111,1,0,204,5,32,86,209,1,181,21,29,48,128,255, -38,0,10,224,224,225,194,13,61,63,13,0,157,71,17,0,253,79,19,0, -38,6,36,241,132,0,128,255,86,244,28,80,64,6,255,0,34,6,220,118, -133,0,181,53,230,143,13,0,130,127,3,0,47,112,81,113,34,87,0,0, -206,0,234,113,250,37,34,103,5,0,213,29,44,95,0,0,134,87,17,0, -235,81,234,21,2,127,2,0,38,135,13,0,2,87,3,0,80,121,143,0, -234,121,195,5,32,86,11,1,133,29,102,23,21,0,44,23,5,0,0,82, -102,23,25,0,133,21,72,98,34,135,9,0,240,97,145,229,32,86,12,1, -133,13,76,18,36,127,165,133,239,17,177,205,32,86,11,1,127,0,128,7, -225,16,6,232,61,23,9,0,224,17,146,13,2,143,0,0,209,134,3,0, -194,5,32,86,208,1,245,53,61,223,25,0,59,231,49,0,29,48,72,226, -128,255,238,0,60,23,0,0,61,63,1,0,219,17,2,48,253,111,19,0, -13,64,10,72,60,103,5,0,63,6,216,46,129,0,108,0,61,23,5,0, -224,17,162,29,65,18,66,87,255,255,136,82,66,87,0,0,61,95,9,0, -224,89,130,21,61,103,25,0,12,103,12,0,0,18,97,98,198,5,101,98, -174,5,1,18,130,0,224,17,178,5,203,63,0,0,0,82,64,6,255,16, -128,7,225,16,38,223,25,0,59,231,49,0,6,232,28,230,16,0,128,255, -120,0,60,23,0,0,61,63,1,0,219,17,2,48,253,143,19,0,17,64, -10,72,60,135,5,0,63,6,78,47,129,0,112,0,10,16,32,86,15,1, -253,127,19,0,239,17,170,5,0,82,10,224,224,17,186,5,32,230,210,1, -61,87,5,0,224,81,162,13,224,17,174,5,128,17,65,82,74,23,255,255, -168,18,74,23,0,0,224,225,194,13,61,63,13,0,157,71,17,0,253,79, -19,0,38,6,184,243,132,0,128,255,196,242,28,80,64,6,255,16,38,23, -29,0,224,17,158,13,38,135,21,0,38,23,13,0,16,135,2,0,80,17, -130,0,2,80,127,0,166,0,34,6,220,118,133,0,165,29,34,87,5,0, -165,21,42,95,5,0,11,135,12,0,240,49,186,13,43,126,13,0,199,121, -79,7,0,0,43,110,29,0,199,105,77,7,0,0,72,82,34,95,9,0, -235,81,193,237,76,18,36,87,165,133,234,17,193,229,127,0,128,7,97,0, -7,232,224,49,138,13,32,54,32,0,128,255,138,236,10,48,224,49,130,21, -102,7,1,0,102,7,9,0,102,7,18,0,102,7,21,0,49,6,104,138, -145,0,102,143,25,0,102,239,29,0,6,80,64,6,127,0,102,63,1,0, -102,71,18,0,127,0,128,7,33,0,38,143,1,0,230,87,19,0,10,16, -209,17,10,126,5,0,207,137,102,143,1,0,130,95,1,0,162,111,1,0, -200,106,13,89,102,95,13,0,130,143,3,0,70,143,16,0,162,119,3,0, -130,135,5,0,200,130,16,113,102,7,5,0,102,119,18,0,191,255,128,253, -64,6,63,0,38,135,1,0,199,129,102,135,1,0,127,0,128,7,225,112, -7,200,8,216,38,143,1,0,187,0,17,214,251,255,38,231,25,0,6,232, -191,255,230,254,28,127,12,0,0,18,239,217,154,13,60,110,29,0,205,81, -138,103,1,0,224,97,162,5,1,18,130,0,224,17,130,29,29,48,191,255, -192,254,10,16,60,142,29,0,194,137,0,82,145,127,1,0,224,121,146,13, -60,110,13,0,205,17,130,103,1,0,224,97,170,5,1,82,138,0,224,81, -178,5,0,82,213,13,25,48,26,56,253,143,19,0,17,70,5,0,190,255, -106,207,253,127,19,0,15,86,5,0,64,6,255,112,134,7,225,243,6,232, -67,63,3,0,99,71,9,0,0,202,0,194,60,6,220,118,133,0,128,7, -12,1,60,215,5,0,213,125,61,23,29,0,224,17,254,5,28,159,3,0, -0,218,99,159,5,0,229,109,2,216,99,23,5,0,165,109,58,79,5,0, -3,143,3,0,9,16,2,135,12,0,0,82,240,137,154,13,34,118,29,0, -219,113,142,103,1,0,224,97,162,5,1,82,138,0,224,81,194,85,27,80, -0,90,34,142,29,0,202,137,145,127,1,0,224,121,146,13,34,110,13,0, -205,81,138,103,1,0,224,97,170,5,1,90,139,0,224,89,130,69,125,231, -21,0,41,191,5,0,125,79,25,0,23,182,5,0,253,143,19,0,246,137, -190,13,61,63,13,0,157,71,17,0,38,6,232,243,132,0,128,255,120,240, -165,45,61,23,1,0,60,103,0,0,2,118,5,0,2,126,3,0,27,97, -125,127,5,0,125,119,1,0,125,103,13,0,66,103,0,0,61,143,13,0, -136,138,66,143,1,0,58,87,0,0,66,87,2,0,29,48,191,255,106,252, -61,127,1,0,253,111,19,0,215,121,125,127,1,0,182,105,125,111,18,0, -214,201,65,194,65,218,35,151,5,0,242,217,195,149,72,210,60,103,9,0, -236,209,145,133,76,226,36,95,165,133,235,225,185,5,191,7,240,254,35,151, -9,0,50,87,0,0,216,81,114,87,0,0,25,80,70,6,255,243,128,7, -225,0,6,232,61,135,1,0,253,143,19,0,209,129,125,135,1,0,176,127, -1,0,144,111,1,0,200,122,15,105,205,94,255,63,125,95,13,0,144,87, -3,0,93,87,16,0,125,7,5,0,67,130,125,135,9,0,224,81,138,53, -61,127,33,0,125,7,18,0,224,121,218,13,29,48,128,255,76,1,10,224, -61,63,13,0,38,6,28,244,132,0,128,255,142,239,229,5,15,118,8,0, -125,119,33,0,0,226,61,23,33,0,61,95,21,0,34,87,5,0,43,95, -9,0,125,87,25,0,2,110,8,0,34,87,0,0,235,105,93,87,16,0, -193,45,4,82,125,87,18,0,125,7,33,0,229,37,4,138,125,143,18,0, -125,7,33,0,39,127,1,0,209,134,255,255,176,121,103,127,1,0,204,5, -32,86,209,1,197,37,29,48,191,255,224,250,10,224,224,225,138,21,61,87, -25,0,10,87,12,0,0,18,97,82,198,5,101,82,174,5,1,18,130,0, -224,17,186,5,32,230,211,1,61,63,13,0,157,71,17,0,61,79,9,0, -38,6,80,244,132,0,137,79,1,0,128,255,238,238,28,80,64,6,255,0, -128,7,97,0,38,239,25,0,29,87,12,0,0,18,97,82,198,5,101,82, -174,5,1,18,130,0,224,17,186,5,0,82,149,53,38,23,9,0,130,23, -1,0,224,17,194,5,98,18,130,29,197,37,191,255,246,251,10,16,61,102, -13,0,194,97,140,87,1,0,224,81,210,29,61,142,13,0,194,137,81,7, -0,0,61,118,29,0,206,17,1,106,66,111,0,0,149,21,191,255,202,251, -61,102,13,0,202,97,76,7,0,0,61,142,29,0,209,81,74,7,0,0, -197,5,32,86,208,1,165,5,0,82,64,6,127,0,230,143,19,0,224,137, -234,87,0,0,127,0,34,6,220,118,133,0,213,21,230,143,13,0,130,127, -3,0,47,112,81,113,34,87,0,0,206,0,234,113,154,13,34,135,5,0, -102,23,21,0,102,135,33,0,0,82,133,13,76,18,36,127,165,133,239,17, -145,237,32,86,11,1,127,0,128,7,225,16,6,232,7,216,187,0,8,224, -224,233,138,13,32,54,56,0,128,255,64,232,10,232,224,233,146,61,49,6, -24,124,133,0,125,143,53,0,61,54,8,0,28,56,191,255,142,251,93,223, -40,0,32,54,208,7,128,255,222,231,10,224,224,225,154,13,38,6,132,244, -132,0,32,62,10,6,0,66,190,255,102,209,28,48,0,58,32,70,208,7, -190,255,66,205,125,231,1,0,28,62,8,0,125,63,5,0,61,54,8,0, -32,70,200,7,191,255,132,251,1,122,93,127,48,0,224,217,242,5,61,23, -1,0,32,86,34,34,98,87,0,0,29,80,64,6,255,16,128,7,225,16, -6,232,7,224,8,216,224,233,138,13,32,54,56,0,128,255,174,231,10,232, -224,233,130,29,49,6,24,124,133,0,125,143,53,0,61,54,8,0,27,56, -191,255,252,250,93,7,48,0,125,231,1,0,28,62,8,0,125,63,5,0, -61,54,8,0,0,66,191,255,30,251,29,80,64,6,255,16,128,7,225,0, -6,232,7,224,224,233,138,13,32,54,56,0,128,255,96,231,10,232,224,233, -210,21,49,6,24,124,133,0,125,143,53,0,125,7,1,0,125,7,5,0, -61,54,8,0,28,56,191,255,166,250,93,7,40,0,125,7,45,0,93,7, -48,0,29,80,64,6,255,0,128,7,225,0,6,232,7,224,224,233,178,21, -49,6,24,124,133,0,125,143,53,0,157,135,49,0,224,129,210,5,61,55, -1,0,128,255,174,230,129,226,201,5,29,48,128,255,220,230,64,6,255,0, -128,7,225,16,7,224,6,232,61,55,1,0,8,216,128,255,0,2,224,81, -138,13,28,48,27,64,0,58,190,255,34,204,1,82,245,13,61,87,1,0, -234,23,3,0,226,217,190,5,0,82,245,5,28,48,10,56,2,64,190,255, -166,202,1,82,64,6,255,16,128,7,225,0,6,232,61,63,45,0,38,6, -148,244,132,0,128,255,96,236,61,87,1,0,61,23,53,0,42,94,6,0, -2,22,24,0,34,87,0,0,61,63,5,0,221,81,10,48,11,64,34,143, -5,0,63,6,42,54,129,0,113,0,61,54,8,0,10,224,28,56,191,255, -102,250,61,23,1,0,29,63,40,0,2,70,6,0,226,87,5,0,220,81, -98,87,4,0,61,54,8,0,191,255,222,250,61,23,1,0,10,88,226,87, -5,0,203,81,98,87,4,0,72,82,98,87,2,0,61,23,53,0,63,6, -134,54,129,0,2,22,32,0,34,87,0,0,34,127,5,0,221,81,10,48, -111,0,10,224,224,225,146,13,61,63,45,0,38,6,212,244,132,0,128,255, -198,235,197,13,61,23,1,0,38,6,184,244,132,0,34,63,6,0,226,71, -5,0,128,255,174,235,28,80,64,6,255,0,128,7,225,240,7,192,6,224, -60,55,1,0,8,200,128,255,240,0,224,81,186,5,0,82,197,37,0,218, -60,239,1,0,0,210,61,239,6,0,181,21,60,54,8,0,191,255,102,249, -224,81,218,13,60,54,8,0,28,71,40,0,24,56,191,255,174,249,10,16, -224,17,178,5,194,217,65,210,29,120,95,234,224,121,186,237,57,119,0,0, -27,80,218,113,121,119,0,0,64,6,255,240,128,7,225,16,6,224,60,55, -1,0,128,255,144,0,224,81,210,45,1,138,60,23,1,0,68,143,172,133, -226,79,3,0,34,239,6,0,60,63,45,0,29,64,38,6,28,245,132,0, -128,255,16,235,29,216,229,13,60,54,8,0,191,255,242,248,224,81,138,13, -60,54,8,0,191,255,180,247,224,81,170,5,95,218,29,128,95,234,224,129, -138,245,224,217,242,5,27,56,38,6,88,245,132,0,128,255,218,234,64,6, -255,16,128,7,33,0,166,0,0,82,97,50,225,13,130,13,99,50,129,13, -210,5,6,22,251,255,97,18,235,5,1,82,197,5,7,48,191,255,242,66, -138,0,64,6,63,0,0,18,224,49,242,21,38,87,0,0,10,6,222,221, -170,21,38,87,6,0,224,81,231,13,230,95,5,0,230,111,3,0,11,102, -8,0,236,105,234,5,234,134,6,0,235,129,175,5,1,18,130,0,2,80, -138,0,127,0,128,7,225,0,6,232,7,224,188,0,224,233,138,13,32,54, -60,0,128,255,154,228,10,232,224,233,130,21,29,48,28,56,31,66,191,255, -54,252,48,6,64,124,133,0,125,135,53,0,125,7,57,0,29,48,128,255, -58,1,29,80,64,6,255,0,150,7,225,16,6,232,7,216,224,233,138,13, -32,54,60,0,128,255,92,228,10,232,224,233,194,117,29,48,31,58,191,255, -222,252,49,6,64,124,133,0,125,143,53,0,125,223,57,0,27,56,35,54, -12,0,191,255,8,223,35,54,12,0,191,255,150,227,224,81,226,93,35,62, -4,0,35,54,12,0,8,66,0,74,191,255,240,226,10,224,224,225,250,5, -35,54,4,0,191,255,38,255,224,81,170,29,27,56,38,6,216,245,132,0, -128,255,188,233,35,71,4,0,35,79,10,0,28,56,227,95,9,0,99,95, -1,0,38,6,140,245,132,0,128,255,160,233,35,54,12,0,191,255,50,224, -197,53,227,55,7,0,128,255,146,227,125,87,5,0,224,81,154,13,38,6, -200,245,132,0,32,62,64,7,0,66,190,255,24,205,227,71,7,0,61,63, -5,0,35,54,12,0,0,74,191,255,122,226,10,224,1,98,61,95,5,0, -93,103,48,0,125,95,1,0,11,62,8,0,125,63,5,0,61,54,8,0, -0,66,191,255,38,247,29,48,128,255,198,0,224,225,210,5,35,54,12,0, -191,255,202,223,29,80,86,6,255,16,128,7,225,0,6,232,7,224,224,233, -226,13,49,6,64,124,133,0,125,143,53,0,0,58,191,255,38,252,129,226, -201,5,29,48,128,255,36,227,64,6,255,0,6,23,40,0,100,18,233,5, -97,18,162,13,99,18,130,21,197,53,101,18,145,45,194,21,102,18,194,29, -229,45,49,6,255,255,17,17,102,143,57,0,37,134,224,130,165,45,49,6, -204,204,68,68,102,143,57,0,37,134,216,130,165,37,49,6,238,238,34,34, -102,143,57,0,64,102,133,0,44,134,28,246,133,29,49,6,187,187,85,85, -102,143,57,0,64,86,133,0,42,134,40,246,229,13,49,6,153,153,119,119, -102,143,57,0,48,6,56,246,132,0,213,5,64,126,133,0,47,134,72,246, -102,135,45,0,127,0,38,23,57,0,50,6,204,204,68,68,242,17,201,13, -50,6,255,255,17,17,242,17,242,21,50,6,238,238,34,34,242,17,162,29, -165,45,50,6,204,204,68,68,242,17,130,21,50,6,187,187,85,85,242,17, -210,21,50,6,153,153,119,119,242,17,226,21,165,29,1,138,37,134,240,130, -181,29,3,138,37,134,232,130,245,21,5,138,64,102,133,0,44,134,92,246, -149,21,6,138,64,86,133,0,42,134,104,246,181,13,4,138,48,6,120,246, -132,0,229,5,0,136,64,126,133,0,47,134,136,246,70,143,40,0,102,135, -45,0,127,0,158,7,225,0,7,232,38,63,57,0,8,224,3,48,191,255, -178,253,3,48,29,56,28,64,191,255,48,252,10,232,3,48,2,58,191,255, -164,254,29,80,94,6,255,0,144,7,97,0,6,232,61,63,57,0,3,48, -191,255,198,220,61,23,1,0,226,87,5,0,224,81,146,13,226,71,3,0, -2,56,3,48,0,74,191,255,6,224,213,5,3,48,191,255,44,222,0,82, -80,6,127,0,128,7,225,0,6,232,7,224,224,233,138,13,32,54,60,0, -128,255,184,225,10,232,224,233,130,21,29,48,28,64,2,58,191,255,84,249, -49,6,104,124,133,0,125,143,53,0,125,231,57,0,29,48,128,255,74,0, -29,80,64,6,255,0,128,7,225,16,6,232,7,224,8,216,224,233,138,13, -32,54,60,0,128,255,120,225,10,232,224,233,130,21,29,48,27,56,28,64, -191,255,168,249,49,6,104,124,133,0,125,143,53,0,125,231,57,0,29,48, -128,255,10,0,29,80,64,6,255,16,128,7,97,0,6,232,8,50,128,255, -6,225,125,87,45,0,10,48,61,71,57,0,39,6,156,246,132,0,128,255, -144,241,103,82,162,13,38,6,168,246,132,0,32,62,34,8,0,66,190,255, -124,202,224,81,64,6,127,0,128,7,225,0,6,232,7,224,224,233,178,21, -49,6,104,124,133,0,61,55,45,0,125,143,53,0,128,255,158,224,29,48, -0,58,191,255,198,249,129,226,201,5,29,48,128,255,196,224,64,6,255,0, -128,7,225,48,6,232,61,23,57,0,2,6,240,255,225,61,59,6,212,151, -145,0,194,18,219,17,34,55,1,0,128,255,102,224,61,215,1,0,26,48, -191,255,206,251,224,81,202,13,61,63,57,0,7,96,194,98,219,97,108,7, -1,0,2,50,191,255,190,243,181,37,61,231,57,0,250,55,3,0,194,226, -219,225,128,255,78,224,124,87,1,0,61,71,1,0,61,87,57,0,232,71, -3,0,194,82,219,81,42,63,1,0,29,48,191,255,120,249,224,81,170,13, -38,6,184,246,132,0,32,62,75,8,0,66,190,255,186,201,224,81,64,6, -255,48,128,7,97,0,6,232,191,255,108,255,61,143,57,0,17,6,240,255, -193,5,29,48,191,255,184,250,64,6,127,0,128,7,225,0,6,232,61,55, -1,0,7,224,28,64,0,58,190,255,106,197,61,23,57,0,2,6,240,255, -193,21,194,18,44,6,212,151,145,0,204,17,34,23,1,0,224,17,178,13, -226,87,3,0,234,225,246,5,61,55,1,0,2,56,10,64,190,255,220,195, -64,6,255,0,158,7,225,0,8,224,7,232,38,63,57,0,0,66,7,6, -240,255,145,13,7,128,194,130,45,6,212,151,145,0,205,129,48,71,1,0, -3,48,191,255,56,254,3,48,29,56,28,64,191,255,212,249,10,232,3,48, -2,58,191,255,158,254,29,80,94,6,255,0,128,7,97,0,6,232,191,255, -194,254,61,55,57,0,191,255,140,61,64,6,127,0,3,30,192,255,99,63, -53,0,99,255,45,0,99,231,41,0,99,239,37,0,8,224,230,143,9,0, -201,138,99,143,1,0,99,79,5,0,99,7,13,0,99,7,22,0,99,7, -25,0,47,6,104,138,145,0,99,127,29,0,31,114,99,119,33,0,0,234, -149,21,35,54,4,0,3,56,191,255,252,239,10,16,224,17,234,13,35,54, -4,0,191,255,36,241,10,16,224,17,250,5,65,234,252,95,7,0,235,233, -214,237,0,82,35,231,41,0,35,239,37,0,35,255,45,0,3,30,64,0, -127,0,3,30,76,255,99,63,169,0,99,255,161,0,99,191,157,0,99,207, -149,0,99,215,145,0,99,223,141,0,99,231,137,0,99,239,133,0,99,199, -153,0,8,184,6,192,248,143,9,0,201,138,99,143,21,0,132,23,169,133, -68,23,172,133,99,79,101,0,99,7,109,0,99,7,118,0,99,7,121,0, -47,6,104,138,145,0,99,127,125,0,31,114,99,119,129,0,35,110,2,0, -99,111,5,0,35,54,84,0,0,58,128,255,152,17,0,226,0,218,128,7, -0,2,35,54,100,0,35,62,20,0,191,255,70,239,10,224,224,225,178,5, -128,7,246,1,35,54,100,0,191,255,248,240,10,224,224,225,178,5,128,7, -228,1,35,239,125,0,35,54,100,0,191,255,108,241,0,18,61,142,29,0, -10,88,209,81,138,135,1,0,224,129,146,13,61,118,13,0,206,89,139,111, -1,0,224,105,170,5,1,18,130,0,224,17,186,5,128,7,158,1,29,239, -12,0,35,54,100,0,191,255,52,241,67,239,3,0,99,87,45,0,67,239, -68,0,99,87,73,0,35,22,68,0,34,95,1,0,35,86,76,0,106,95, -1,0,34,23,5,0,106,23,5,0,35,23,89,0,99,23,37,0,35,23, -93,0,99,23,33,0,165,29,3,103,76,0,2,80,10,95,0,0,0,18, -236,89,138,13,42,87,5,0,35,95,81,0,235,81,170,5,1,18,130,0, -224,17,234,13,35,22,36,0,34,135,1,0,72,130,98,135,1,0,35,127, -33,0,35,23,37,0,239,17,170,229,35,22,40,0,35,238,36,0,224,17, -250,5,4,50,128,255,164,221,10,16,224,17,210,5,61,119,1,0,98,119, -1,0,35,119,93,0,35,22,40,0,99,119,29,0,35,86,28,0,34,103, -1,0,42,111,1,0,237,97,234,109,35,23,89,0,224,17,186,5,0,82, -197,5,14,80,162,81,163,82,224,17,186,5,0,90,213,5,35,95,97,0, -162,89,163,90,235,81,185,37,14,232,99,239,65,0,29,208,1,202,229,21, -26,16,224,17,146,21,224,17,250,5,8,50,128,255,56,221,10,16,224,17, -146,13,3,87,76,0,66,87,0,0,35,87,81,0,98,87,5,0,95,202, -72,210,224,201,170,237,29,22,8,0,99,23,93,0,149,61,99,119,53,0, -35,134,52,0,99,135,61,0,224,17,186,5,0,82,197,5,14,80,162,81, -163,82,224,81,186,5,0,234,213,13,99,23,57,0,35,239,61,0,35,22, -56,0,34,103,1,0,61,239,1,0,172,233,163,234,35,95,61,0,35,54, -84,0,43,95,1,0,35,62,56,0,99,95,57,0,1,66,35,78,76,0, -128,255,20,26,35,23,89,0,99,23,57,0,35,86,56,0,42,135,1,0, -195,234,208,233,99,239,49,0,65,218,247,127,7,0,239,217,190,5,191,7, -252,253,24,103,64,0,32,150,191,255,224,225,234,119,0,0,82,97,206,94, -1,0,198,90,11,97,35,23,89,0,88,103,64,0,99,23,9,0,99,23, -25,0,133,21,2,55,0,0,34,63,5,0,128,255,26,5,10,16,224,225, -170,5,2,224,35,135,25,0,72,130,99,135,25,0,35,95,93,0,35,86, -8,0,99,95,9,0,35,23,25,0,42,127,1,0,239,17,225,229,35,23, -89,0,28,232,224,17,210,13,99,23,17,0,99,95,13,0,2,80,165,5, -72,82,235,81,234,253,2,48,128,255,240,219,29,80,35,191,157,0,35,199, -153,0,35,207,149,0,35,215,145,0,35,223,141,0,35,231,137,0,35,239, -133,0,35,255,161,0,3,30,180,0,127,0,128,7,33,0,8,16,38,71, -5,0,232,17,206,5,32,86,15,1,133,21,38,23,49,0,0,74,72,18, -34,87,0,0,34,143,5,0,198,81,10,48,63,6,232,64,129,0,113,0, -0,82,64,6,63,0,144,7,225,0,99,71,1,0,99,7,9,0,9,224, -67,63,16,0,99,231,18,0,99,7,21,0,99,55,13,0,49,6,104,138, -145,0,99,143,25,0,31,130,99,135,29,0,3,48,191,255,242,236,10,232, -224,233,186,21,3,48,191,255,96,237,10,232,224,233,218,13,35,71,25,0, -40,71,5,0,252,65,247,5,28,56,38,6,200,246,132,0,128,255,20,225, -29,80,80,6,255,0,128,7,97,0,6,232,8,16,61,71,5,0,232,17, -206,5,32,86,15,1,245,37,132,23,169,133,68,23,172,133,0,74,61,23, -49,0,63,6,142,65,129,0,2,22,16,0,34,87,0,0,34,143,5,0, -221,81,10,48,113,0,0,82,0,18,189,135,29,0,224,129,226,5,189,127, -13,0,224,121,170,5,1,18,130,0,224,17,226,5,29,55,12,0,0,58, -128,255,170,3,64,6,127,0,144,7,225,16,99,71,1,0,99,7,9,0, -67,63,16,0,99,79,18,0,99,7,21,0,198,222,15,0,99,55,13,0, -49,6,104,138,145,0,99,143,25,0,31,130,99,135,29,0,3,48,191,255, -38,236,10,232,224,233,202,53,35,23,25,0,34,23,5,0,227,119,19,0, -226,113,183,5,99,23,18,0,132,23,169,133,68,23,172,133,3,48,191,255, -6,237,10,232,224,233,138,37,35,231,25,0,3,48,191,255,128,237,0,106, -10,16,60,102,29,0,194,97,140,87,1,0,224,81,146,13,60,134,13,0, -208,17,130,127,1,0,224,121,170,5,1,106,141,0,224,105,242,5,28,55, -12,0,27,56,128,255,6,3,10,232,29,80,80,6,255,16,3,30,76,255, -99,63,169,0,99,255,161,0,99,199,157,0,99,207,153,0,99,215,149,0, -99,223,145,0,99,231,141,0,99,239,137,0,8,192,9,232,230,143,9,0, -201,138,99,143,17,0,248,63,7,0,38,6,240,246,132,0,128,255,192,223, -0,226,99,239,101,0,99,7,109,0,99,7,118,0,99,7,121,0,46,6, -104,138,145,0,99,119,125,0,31,106,99,111,129,0,99,7,133,0,35,102, -2,0,99,103,5,0,35,54,84,0,0,58,128,255,190,12,0,218,128,7, -238,1,35,54,100,0,35,62,16,0,191,255,140,239,10,224,224,225,178,5, -128,7,228,1,35,54,100,0,191,255,128,240,10,224,224,81,178,5,128,7, -210,1,35,54,100,0,191,255,244,240,224,81,162,5,65,218,35,239,125,0, -29,239,12,0,0,18,97,234,198,5,101,234,174,5,1,18,130,0,224,17, -186,5,128,7,154,1,35,54,100,0,191,255,108,236,67,239,3,0,99,87, -37,0,67,239,68,0,99,87,73,0,35,22,68,0,34,95,1,0,35,86, -76,0,106,95,1,0,34,23,5,0,106,23,5,0,35,23,89,0,99,23, -29,0,35,23,93,0,99,23,25,0,165,29,3,103,76,0,2,80,10,95, -0,0,0,18,236,89,138,13,42,87,5,0,35,95,81,0,235,81,170,5, -1,18,130,0,224,17,234,13,35,22,28,0,34,95,1,0,72,90,98,95, -1,0,35,87,25,0,35,23,29,0,234,17,170,229,35,22,32,0,35,238, -28,0,224,17,250,5,4,50,128,255,220,216,10,16,224,17,210,5,61,143, -1,0,98,143,1,0,35,111,93,0,35,22,32,0,99,111,21,0,35,86, -20,0,34,127,1,0,42,135,1,0,240,121,234,109,35,23,89,0,224,17, -186,5,0,82,197,5,13,80,162,81,163,82,224,17,186,5,0,90,213,5, -35,95,97,0,162,89,163,90,235,81,185,37,13,232,99,239,57,0,29,208, -1,202,229,21,26,16,224,17,146,21,224,17,250,5,8,50,128,255,112,216, -10,16,224,17,146,13,3,87,76,0,66,87,0,0,35,87,81,0,98,87, -5,0,95,202,72,210,224,201,170,237,29,22,8,0,99,23,93,0,149,61, -99,111,45,0,35,94,44,0,99,95,53,0,224,17,186,5,0,82,197,5, -13,80,162,81,163,82,224,81,186,5,0,234,213,13,99,23,49,0,35,239, -53,0,35,22,48,0,34,127,1,0,61,239,1,0,175,233,163,234,35,119, -53,0,35,54,84,0,46,119,1,0,35,62,48,0,99,119,49,0,1,66, -35,78,76,0,128,255,76,21,35,23,89,0,99,23,49,0,35,86,48,0, -42,95,1,0,195,234,203,233,99,239,41,0,248,87,7,0,234,217,190,5, -191,7,14,254,35,23,89,0,99,23,65,0,133,21,2,55,0,0,34,63, -5,0,128,255,116,0,10,16,224,225,170,5,2,224,35,135,65,0,72,130, -99,135,65,0,35,95,93,0,35,86,60,0,99,95,61,0,35,23,65,0, -42,127,1,0,239,17,225,229,35,23,89,0,28,232,224,17,210,13,99,23, -13,0,99,95,9,0,2,80,165,5,72,82,235,81,234,253,2,48,128,255, -74,215,29,80,35,199,157,0,35,207,153,0,35,215,149,0,35,223,145,0, -35,231,141,0,35,239,137,0,35,255,161,0,3,30,180,0,127,0,128,7, -225,0,166,0,97,50,145,21,210,5,98,50,146,13,102,50,235,13,6,56, -0,50,191,255,126,242,10,232,133,21,0,50,191,255,88,245,10,232,181,13, -0,82,229,29,38,6,20,247,132,0,32,62,132,9,0,66,190,255,106,192, -29,48,191,255,82,240,10,224,224,233,242,13,61,23,53,0,3,58,72,18, -34,87,0,0,34,135,5,0,221,81,10,48,63,6,192,69,129,0,112,0, -28,80,64,6,255,0,158,7,33,0,6,56,3,48,191,255,98,242,35,23, -53,0,3,88,2,22,16,0,34,87,0,0,34,135,5,0,203,81,10,48, -63,6,240,69,129,0,112,0,3,48,2,58,191,255,66,243,94,6,63,0, -158,7,33,0,7,64,6,56,3,48,191,255,12,245,3,48,191,255,66,246, -3,48,2,58,191,255,120,245,94,6,63,0,158,7,97,0,7,16,8,232, -6,56,2,64,3,48,191,255,232,244,29,56,3,48,191,255,58,246,3,48, -2,58,191,255,82,245,94,6,127,0,128,7,33,0,166,0,191,255,66,241, -138,0,64,6,63,0,130,7,225,16,61,6,20,152,145,0,60,6,148,140, -145,0,59,6,204,140,145,0,37,62,204,130,38,6,104,138,145,0,0,66, -0,74,128,255,246,34,36,62,92,139,38,6,4,145,145,0,2,66,0,74, -128,255,228,34,39,6,236,126,141,0,38,6,56,145,145,0,32,70,16,0, -0,74,128,255,206,34,36,62,36,133,1,66,99,71,1,0,38,6,112,146, -145,0,0,74,128,255,150,37,36,62,37,133,1,66,99,71,1,0,38,6, -168,146,145,0,0,74,128,255,128,37,36,62,39,133,1,66,99,71,1,0, -38,6,224,146,145,0,0,74,128,255,106,37,36,62,84,139,3,106,99,111, -1,0,38,6,132,143,145,0,1,66,0,74,128,255,82,37,38,6,92,144, -145,0,36,62,12,139,1,66,99,71,1,0,0,74,128,255,60,37,43,6, -152,123,133,0,49,6,140,144,145,0,113,95,1,0,36,62,205,131,38,6, -64,142,145,0,1,66,128,255,108,38,39,6,152,119,133,0,6,82,99,87, -1,0,38,6,92,140,145,0,32,70,0,4,0,74,128,255,0,37,28,48, -29,56,0,66,0,74,128,255,22,34,48,6,144,125,133,0,124,135,49,0, -124,239,53,0,27,48,29,56,0,66,0,74,128,255,252,33,47,6,176,125, -133,0,123,127,49,0,123,239,53,0,37,62,126,131,38,6,4,141,145,0, -2,66,0,74,128,255,220,33,36,62,128,140,1,114,99,119,1,0,38,6, -80,150,145,0,2,66,0,74,128,255,162,36,38,6,136,150,145,0,36,62, -204,133,1,66,128,255,134,37,38,6,148,144,145,0,36,62,20,139,1,66, -99,71,1,0,0,74,128,255,124,36,44,6,184,123,133,0,49,6,196,144, -145,0,113,103,1,0,36,62,204,131,38,6,120,142,145,0,1,66,0,74, -128,255,124,33,38,6,24,147,145,0,36,62,38,133,1,66,128,255,62,37, -36,62,92,133,99,7,1,0,38,6,156,151,145,0,8,66,1,74,128,255, -52,36,36,62,244,131,38,6,188,143,145,0,32,70,16,0,0,74,128,255, -66,33,39,6,64,242,132,0,38,6,56,141,145,0,32,70,16,0,0,74, -128,255,44,33,39,6,224,70,133,0,38,6,172,142,145,0,32,70,16,0, -0,74,128,255,22,33,36,62,8,132,38,6,240,143,145,0,8,66,0,74, -128,255,4,33,39,6,144,6,136,0,38,6,12,142,145,0,8,66,0,74, -128,255,240,32,39,6,20,184,145,0,38,6,224,142,145,0,8,66,0,74, -128,255,220,32,39,6,108,119,133,0,38,6,36,140,145,0,32,70,16,0, -128,255,246,36,39,6,128,119,133,0,38,6,236,139,145,0,32,70,20,0, -128,255,226,36,39,6,156,6,136,0,38,6,248,150,145,0,4,66,0,74, -128,255,160,32,37,62,196,130,38,6,52,138,145,0,4,66,0,74,128,255, -142,32,37,62,192,130,38,6,0,138,145,0,4,66,0,74,128,255,124,32, -37,62,200,130,38,6,204,137,145,0,4,66,0,74,128,255,106,32,38,6, -180,139,145,0,29,56,0,66,0,74,128,255,90,32,43,6,112,125,133,0, -49,6,228,139,145,0,113,95,1,0,32,62,194,180,49,6,232,139,145,0, -113,239,1,0,38,6,68,149,145,0,1,66,32,78,40,0,128,255,44,32, -38,6,124,139,145,0,29,56,0,66,0,74,128,255,28,32,42,6,80,125, -133,0,49,6,172,139,145,0,113,87,1,0,37,62,188,130,49,6,176,139, -145,0,113,239,1,0,38,6,108,141,145,0,1,66,0,74,128,255,240,31, -38,6,68,139,145,0,29,56,0,66,0,74,128,255,224,31,48,6,240,124, -133,0,49,6,116,139,145,0,113,135,1,0,37,62,208,130,49,6,120,139, -145,0,113,239,1,0,38,6,160,141,145,0,1,66,0,74,128,255,180,31, -38,6,12,139,145,0,29,56,0,66,0,74,128,255,164,31,47,6,16,125, -133,0,49,6,60,139,145,0,113,127,1,0,32,22,180,180,49,6,64,139, -145,0,113,239,1,0,2,56,38,6,120,149,145,0,8,66,32,78,40,0, -128,255,116,31,39,6,184,29,148,0,38,6,36,144,145,0,2,114,99,119, -1,0,1,66,32,78,120,4,128,255,54,34,32,62,195,180,45,6,216,123, -133,0,49,6,84,144,145,0,113,111,1,0,2,98,99,103,1,0,38,6, -224,149,145,0,1,66,32,78,40,0,128,255,12,34,32,62,196,180,2,90, -99,95,1,0,38,6,24,150,145,0,1,66,32,78,40,0,128,255,242,33, -60,6,252,126,141,0,28,56,38,6,108,145,145,0,4,66,32,78,96,0, -128,255,252,30,60,62,4,0,38,6,160,145,145,0,4,66,32,78,96,0, -128,255,232,30,60,62,65,0,38,6,8,146,145,0,32,70,20,0,32,78, -96,0,128,255,210,30,60,62,24,0,38,6,60,146,145,0,32,70,40,0, -32,78,96,0,128,255,188,30,60,62,86,0,38,6,212,145,145,0,8,66, -32,78,96,0,128,255,168,30,38,6,212,138,145,0,29,56,0,66,0,74, -128,255,152,30,42,6,48,125,133,0,49,6,4,139,145,0,113,87,1,0, -36,62,130,140,49,6,8,139,145,0,113,239,1,0,38,6,172,149,145,0, -2,66,0,74,128,255,108,30,38,6,156,138,145,0,29,56,0,66,0,74, -128,255,92,30,48,6,208,124,133,0,49,6,204,138,145,0,113,135,1,0, -38,6,204,144,145,0,49,6,208,138,145,0,113,239,1,0,36,62,168,133, -0,66,128,255,4,34,38,6,212,141,145,0,36,62,172,133,0,66,128,255, -244,33,38,6,44,151,145,0,36,62,21,133,4,66,128,255,228,33,38,6, -100,151,145,0,36,62,20,133,4,66,128,255,212,33,36,62,205,133,4,122, -99,127,1,0,38,6,192,150,145,0,1,66,0,74,128,255,200,32,36,62, -168,172,38,6,216,148,145,0,4,66,0,74,128,255,216,29,36,62,164,172, -99,7,1,0,38,6,12,149,145,0,4,66,0,74,128,255,160,32,37,62, -214,130,38,6,152,137,145,0,1,66,0,74,128,255,176,29,38,6,104,148, -145,0,36,62,7,140,1,66,99,71,1,0,0,74,128,255,120,32,38,6, -160,148,145,0,36,62,8,140,61,6,248,123,133,0,49,6,152,148,145,0, -113,239,1,0,1,66,99,71,1,0,0,74,128,255,82,32,36,62,4,140, -49,6,208,148,145,0,113,239,1,0,1,66,99,71,1,0,38,6,80,147, -145,0,0,74,128,255,50,32,36,62,5,140,1,66,99,71,1,0,38,6, -136,147,145,0,0,74,128,255,28,32,36,62,6,140,1,66,99,71,1,0, -38,6,192,147,145,0,0,74,128,255,6,32,37,62,212,130,38,6,100,137, -145,0,2,66,0,74,128,255,22,29,36,62,86,139,1,130,99,135,1,0, -38,6,76,143,145,0,2,66,0,74,128,255,220,31,39,6,188,228,140,0, -1,122,99,127,1,0,38,6,20,143,145,0,2,66,2,74,128,255,194,31, -39,6,24,17,148,0,38,6,248,147,145,0,1,114,99,119,1,0,4,66, -4,74,128,255,168,31,39,6,52,17,148,0,38,6,48,148,145,0,49,6, -40,148,145,0,113,239,1,0,1,106,99,111,1,0,4,66,4,74,128,255, -132,31,49,6,96,148,145,0,113,239,1,0,34,6,220,118,133,0,36,119, -133,133,36,127,137,133,36,103,117,133,98,127,57,0,36,111,129,133,98,103, -9,0,98,119,69,0,36,95,141,133,36,103,125,133,98,95,21,0,98,111, -81,0,36,87,145,133,36,95,121,133,98,87,33,0,98,103,93,0,36,135, -149,133,36,87,153,133,98,135,45,0,98,95,105,0,36,135,157,133,98,87, -117,0,36,127,161,133,98,135,129,0,98,127,141,0,66,6,255,16,3,30, -232,255,99,255,5,0,99,239,1,0,213,21,41,135,1,0,88,130,105,135, -1,0,40,127,1,0,88,122,104,127,1,0,41,23,1,0,47,87,1,0, -98,87,1,0,47,87,5,0,98,87,5,0,39,111,1,0,40,119,1,0, -238,105,250,229,6,16,9,232,224,17,250,5,4,50,128,255,18,207,10,16, -224,17,210,5,61,103,1,0,98,103,1,0,35,239,1,0,35,255,5,0, -3,30,24,0,127,0,128,7,33,0,224,49,162,13,34,6,112,118,133,0, -102,23,5,0,129,58,185,5,128,255,188,206,64,6,63,0,38,87,1,0, -127,0,127,0,128,7,33,0,48,6,255,255,255,31,240,57,211,5,128,255, -174,196,0,82,213,5,7,48,195,50,128,255,178,206,64,6,63,0,3,30, -220,255,99,255,17,0,99,231,5,0,99,223,9,0,99,215,13,0,6,224, -99,239,1,0,7,208,8,232,181,29,2,216,29,16,224,17,146,21,224,17, -250,5,8,50,128,255,124,206,10,16,224,17,146,13,27,87,0,0,66,87, -0,0,59,87,5,0,98,87,5,0,60,135,1,0,72,234,72,130,124,135, -1,0,58,127,1,0,60,23,1,0,239,17,154,229,29,80,35,215,13,0, -35,223,9,0,35,231,5,0,35,239,1,0,35,255,17,0,3,30,36,0, -127,0,128,7,128,7,38,87,130,7,128,7,130,7,130,7,225,0,6,232, -7,224,224,233,178,53,34,6,144,118,133,0,125,23,5,0,61,23,33,0, -2,6,240,255,201,13,2,6,240,255,201,5,61,23,13,0,181,5,61,22, -12,0,2,48,128,255,208,205,15,130,125,135,33,0,197,5,61,23,13,0, -181,5,61,22,12,0,125,7,29,0,67,7,3,0,35,86,3,0,10,119, -0,0,66,119,0,0,129,226,34,6,112,118,133,0,125,23,5,0,201,5, -29,48,128,255,150,205,66,6,255,0,38,135,33,0,16,6,240,255,201,5, -38,23,13,0,181,5,38,22,12,0,2,80,127,0,128,7,33,0,128,255, -158,204,64,6,63,0,130,7,225,0,6,232,7,224,224,233,178,53,34,6, -144,118,133,0,125,23,5,0,61,23,33,0,2,6,240,255,201,13,2,6, -240,255,201,5,61,23,13,0,181,5,61,22,12,0,2,48,128,255,56,205, -15,130,125,135,33,0,197,5,61,23,13,0,181,5,61,22,12,0,125,7, -29,0,67,7,3,0,35,86,3,0,10,119,0,0,66,119,0,0,129,226, -34,6,112,118,133,0,125,23,5,0,201,5,29,48,128,255,254,204,66,6, -255,0,128,7,33,0,128,255,30,204,64,6,63,0,176,7,225,241,61,6, -108,119,133,0,6,216,123,7,5,0,123,7,9,0,123,7,13,0,7,224, -224,225,202,5,0,82,128,7,66,10,48,6,255,255,255,31,240,225,187,5, -128,7,6,10,42,6,88,242,132,0,131,127,5,0,67,127,5,0,15,114, -99,119,93,0,197,5,35,23,73,0,181,5,35,22,72,0,99,7,89,0, -67,7,6,0,35,94,6,0,11,103,0,0,66,103,0,0,10,16,65,18, -2,95,255,255,224,89,202,253,10,200,2,222,255,255,170,217,35,230,68,0, -60,23,25,0,0,82,2,6,240,255,201,5,60,95,5,0,181,5,60,94, -4,0,249,89,251,13,2,6,240,255,201,5,60,95,5,0,181,5,60,94, -4,0,60,135,21,0,203,129,240,201,169,5,1,82,138,0,224,81,186,5, -128,7,160,3,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -162,201,60,23,21,0,249,17,201,5,28,48,128,255,36,202,60,87,21,0, -10,16,185,17,226,217,169,5,27,16,64,214,134,0,58,215,153,132,2,216, -217,217,251,81,201,5,28,48,128,255,0,202,60,23,21,0,187,17,250,17, -169,5,2,208,224,209,186,5,128,7,154,1,60,87,25,0,10,6,240,255, -201,5,60,103,5,0,181,5,60,102,4,0,27,88,204,89,10,6,240,255, -201,5,60,87,5,0,181,5,60,86,4,0,202,217,26,80,219,81,186,17, -162,37,11,96,10,88,2,104,203,105,12,80,171,81,13,128,171,129,240,81, -139,21,2,120,204,121,15,102,255,255,13,94,255,255,95,90,11,119,1,0, -95,98,76,119,1,0,95,18,154,253,149,13,65,90,11,111,255,255,65,98, -76,111,255,255,95,18,154,253,60,223,21,0,186,217,126,218,195,5,28,48, -128,255,82,200,60,95,25,0,251,89,153,93,60,199,21,0,155,214,15,0, -126,210,163,5,27,208,26,54,1,0,128,255,86,203,10,184,224,193,146,21, -60,87,25,0,23,88,10,6,240,255,201,5,60,23,5,0,181,5,60,22, -4,0,11,48,2,56,24,64,190,255,28,175,60,23,25,0,2,6,240,255, -201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48, -128,255,240,202,15,130,124,135,25,0,197,5,60,23,5,0,181,5,60,22, -4,0,124,7,21,0,67,7,9,0,35,86,9,0,10,119,0,0,66,119, -0,0,26,6,240,255,124,191,5,0,124,215,25,0,185,5,23,16,181,5, -60,22,4,0,124,199,21,0,67,7,8,0,194,193,35,22,8,0,2,95, -0,0,88,95,0,0,245,21,224,217,218,21,60,87,25,0,124,7,21,0, -10,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,67,7,7,0, -35,86,7,0,10,135,0,0,66,135,0,0,224,217,226,21,60,111,25,0, -13,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,124,223,21,0, -67,7,10,0,194,217,35,22,10,0,2,95,0,0,91,95,0,0,60,95, -21,0,25,72,233,89,169,5,11,72,224,73,186,5,128,7,250,2,60,23, -25,0,2,6,240,255,201,5,60,87,5,0,181,5,60,86,4,0,10,96, -2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,9,80,194,81, -11,16,169,17,146,37,10,88,2,104,203,105,12,80,171,81,13,128,171,129, -240,81,139,21,2,120,204,121,15,102,255,255,13,94,255,255,95,90,11,119, -1,0,95,98,76,119,1,0,95,18,154,253,149,13,65,90,11,111,255,255, -65,98,76,111,255,255,95,18,154,253,60,223,21,0,169,217,126,218,195,5, -28,48,128,255,172,198,60,95,25,0,251,89,153,93,60,207,21,0,155,214, -15,0,126,210,163,5,27,208,26,54,1,0,128,255,176,201,10,192,224,201, -146,21,60,87,25,0,24,88,10,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,11,48,2,56,25,64,190,255,118,173,60,23,25,0,2,6, -240,255,201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -2,48,128,255,74,201,15,130,124,135,25,0,197,5,60,23,5,0,181,5, -60,22,4,0,124,7,21,0,67,7,13,0,35,86,13,0,10,119,0,0, -66,119,0,0,26,6,240,255,124,199,5,0,124,215,25,0,185,5,24,16, -181,5,60,22,4,0,124,207,21,0,67,7,12,0,194,201,35,22,12,0, -2,95,0,0,89,95,0,0,245,21,224,217,218,21,60,87,25,0,124,7, -21,0,10,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,67,7, -11,0,35,86,11,0,10,135,0,0,66,135,0,0,224,217,186,5,128,7, -142,1,60,111,25,0,13,6,240,255,201,5,60,23,5,0,181,5,60,22, -4,0,124,223,21,0,67,7,14,0,194,217,35,22,14,0,2,95,0,0, -91,95,0,0,128,7,96,1,126,218,195,5,28,48,128,255,136,197,60,23, -25,0,251,17,217,69,155,214,15,0,126,210,163,5,27,208,26,54,1,0, -128,255,144,200,60,23,25,0,10,192,2,6,240,255,201,13,2,6,240,255, -201,5,60,23,5,0,181,5,60,22,4,0,2,48,128,255,78,200,15,82, -124,87,25,0,197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0, -67,7,17,0,35,86,17,0,10,127,0,0,66,127,0,0,26,6,240,255, -124,199,5,0,124,215,25,0,185,5,24,80,181,5,60,86,4,0,124,7, -21,0,10,16,67,7,16,0,35,86,16,0,10,103,0,0,66,103,0,0, -197,61,27,6,240,255,177,37,2,6,240,255,201,13,2,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,2,48,128,255,216,199,15,90,124,95, -25,0,197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7, -18,0,35,86,18,0,10,135,0,0,66,135,0,0,245,21,224,217,218,21, -60,127,25,0,124,7,21,0,15,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,67,7,15,0,35,86,15,0,10,119,0,0,66,119,0,0, -224,217,210,37,60,95,25,0,11,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,2,48,25,56,27,64,190,255,110,171,60,87,25,0,10,6, -240,255,201,5,60,23,5,0,181,5,60,22,4,0,124,223,21,0,67,7, -19,0,194,217,35,22,19,0,2,127,0,0,91,127,0,0,37,22,172,130, -99,23,33,0,35,214,68,0,61,22,36,255,99,23,37,0,15,106,154,119, -1,0,67,119,3,0,99,111,65,0,197,5,35,23,45,0,181,5,35,22, -44,0,99,7,61,0,67,7,20,0,35,86,20,0,10,95,0,0,66,95, -0,0,64,94,134,0,43,95,153,132,58,231,21,0,11,16,252,17,169,5, -2,224,35,86,40,0,250,81,178,5,128,7,200,1,35,135,61,0,11,216, -252,129,217,5,35,54,40,0,128,255,216,196,35,23,61,0,188,17,251,17, -169,5,2,216,224,217,186,5,128,7,22,3,35,87,65,0,10,6,240,255, -201,5,35,103,45,0,181,5,35,102,44,0,28,88,204,89,10,6,240,255, -201,5,35,87,45,0,181,5,35,86,44,0,202,225,27,80,220,81,187,17, -162,37,11,112,10,88,2,80,203,81,14,104,171,105,10,96,171,97,236,105, -139,21,2,88,206,89,11,118,255,255,10,94,255,255,95,90,11,87,1,0, -95,114,78,87,1,0,95,18,154,253,149,13,65,90,11,135,255,255,65,114, -78,135,255,255,95,18,154,253,35,231,61,0,187,225,126,226,211,5,35,54, -40,0,128,255,40,195,35,119,65,0,252,113,137,93,35,215,61,0,156,222, -15,0,126,218,163,5,28,216,27,54,1,0,128,255,44,198,10,200,224,209, -130,21,35,111,65,0,13,6,240,255,201,5,35,23,45,0,181,5,35,22, -44,0,10,48,2,56,26,64,190,255,244,169,35,23,65,0,2,6,240,255, -201,13,2,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,2,48, -128,255,200,197,15,98,99,103,65,0,197,5,35,23,45,0,181,5,35,22, -44,0,99,7,61,0,67,7,23,0,35,86,23,0,10,87,0,0,66,87, -0,0,27,6,240,255,99,207,45,0,99,223,65,0,185,5,25,16,181,5, -35,22,44,0,99,215,61,0,67,7,22,0,194,209,35,22,22,0,2,119, -0,0,90,119,0,0,245,21,224,225,218,21,35,111,65,0,99,7,61,0, -13,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,67,7,21,0, -35,86,21,0,10,103,0,0,66,103,0,0,224,225,186,5,128,7,166,1, -35,135,65,0,16,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0, -99,231,61,0,67,7,24,0,194,225,35,22,24,0,2,119,0,0,92,119, -0,0,128,7,120,1,126,226,211,5,35,54,40,0,128,255,4,194,35,23, -65,0,252,17,217,69,156,222,15,0,126,218,163,5,28,216,27,54,1,0, -128,255,12,197,35,23,65,0,10,200,2,6,240,255,201,13,2,6,240,255, -201,5,35,23,45,0,181,5,35,22,44,0,2,48,128,255,202,196,15,106, -99,111,65,0,197,5,35,23,45,0,181,5,35,22,44,0,99,7,61,0, -67,7,27,0,35,86,27,0,10,95,0,0,66,95,0,0,27,6,240,255, -99,207,45,0,99,223,65,0,185,5,25,80,181,5,35,86,44,0,99,7, -61,0,10,16,67,7,26,0,35,86,26,0,10,127,0,0,66,127,0,0, -197,61,28,6,240,255,177,37,2,6,240,255,201,13,2,6,240,255,201,5, -35,23,45,0,181,5,35,22,44,0,2,48,128,255,84,196,15,114,99,119, -65,0,197,5,35,23,45,0,181,5,35,22,44,0,99,7,61,0,67,7, -28,0,35,86,28,0,10,103,0,0,66,103,0,0,245,21,224,225,218,21, -35,95,65,0,99,7,61,0,11,6,240,255,201,5,35,23,45,0,181,5, -35,22,44,0,67,7,25,0,35,86,25,0,10,87,0,0,66,87,0,0, -224,225,130,53,35,119,65,0,14,6,240,255,201,5,35,23,45,0,181,5, -35,22,44,0,58,111,25,0,2,80,13,6,240,255,201,5,58,23,5,0, -181,5,58,22,4,0,10,48,2,56,28,64,190,255,212,167,35,103,65,0, -12,6,240,255,201,5,35,23,45,0,181,5,35,22,44,0,99,231,61,0, -67,7,29,0,194,225,35,22,29,0,2,87,0,0,92,87,0,0,61,22, -68,255,99,23,37,0,64,134,134,0,48,135,221,131,35,230,32,0,224,129, -242,5,28,48,16,120,63,6,6,89,129,0,111,0,60,23,5,0,63,6, -34,89,129,0,2,22,24,0,34,87,0,0,34,119,5,0,220,81,10,48, -110,0,28,48,128,255,132,194,61,22,36,255,99,23,37,0,35,23,65,0, -2,6,240,255,201,13,2,6,240,255,201,5,35,23,45,0,181,5,35,22, -44,0,2,48,128,255,48,195,15,106,99,111,65,0,197,5,35,23,45,0, -181,5,35,22,44,0,99,7,61,0,67,7,30,0,35,86,30,0,10,95, -0,0,66,95,0,0,61,22,4,255,99,23,37,0,35,23,93,0,2,6, -240,255,201,13,2,6,240,255,201,5,35,23,73,0,181,5,35,22,72,0, -2,48,128,255,226,194,15,82,99,87,93,0,197,5,35,23,73,0,181,5, -35,22,72,0,99,7,89,0,67,7,31,0,35,86,31,0,10,127,0,0, -66,127,0,0,245,21,46,6,255,255,255,31,238,225,211,5,128,255,188,184, -0,18,229,5,28,48,195,50,128,255,192,194,10,16,123,23,5,0,123,23, -9,0,195,226,194,225,123,231,13,0,1,82,112,6,255,241,190,7,225,241, -3,30,24,255,41,87,1,0,35,22,28,1,98,87,1,0,7,184,41,87, -5,0,8,216,98,87,5,0,6,224,60,23,5,0,61,6,108,119,133,0, -224,17,186,5,0,82,213,5,60,87,13,0,162,81,163,82,10,208,224,217, -186,5,128,7,46,14,224,17,186,5,0,82,213,5,60,87,9,0,162,81, -163,82,44,6,255,255,255,31,170,97,251,97,177,5,128,7,254,9,43,6, -108,242,132,0,131,87,9,0,67,87,9,0,15,130,99,135,97,1,197,5, -35,23,77,1,181,5,35,22,76,1,99,7,93,1,67,7,10,0,35,86, -10,0,10,119,0,0,66,119,0,0,11,16,65,18,2,111,255,255,224,105, -202,253,11,200,0,82,2,222,255,255,35,230,72,1,60,23,25,0,171,217, -2,6,240,255,201,5,60,95,5,0,181,5,60,94,4,0,249,89,251,13, -2,6,240,255,201,5,60,103,5,0,181,5,60,102,4,0,60,95,21,0, -204,89,235,201,169,5,1,82,138,0,224,81,186,5,128,7,152,3,2,6, -240,255,201,5,60,23,5,0,181,5,60,22,4,0,162,201,60,23,21,0, -249,17,201,5,28,48,128,255,138,191,60,87,21,0,10,16,185,17,226,217, -169,5,27,16,64,214,134,0,58,215,153,132,2,216,217,217,251,81,201,5, -28,48,128,255,102,191,60,23,21,0,187,17,250,17,169,5,2,208,224,209, -186,5,128,7,150,1,60,87,25,0,10,6,240,255,201,5,60,103,5,0, -181,5,60,102,4,0,27,88,204,89,10,6,240,255,201,5,60,87,5,0, -181,5,60,86,4,0,202,217,26,80,219,81,186,17,146,37,11,104,2,112, -202,113,13,96,170,97,14,88,170,89,235,97,139,21,2,80,205,81,10,110, -255,255,14,86,255,255,95,82,10,135,1,0,95,106,77,135,1,0,95,18, -154,253,149,13,65,82,10,127,255,255,65,106,77,127,255,255,95,18,154,253, -60,223,21,0,186,217,126,218,195,5,28,48,128,255,186,189,60,111,25,0, -251,105,137,93,60,199,21,0,155,214,15,0,126,210,163,5,27,208,26,54, -1,0,128,255,190,192,10,184,224,193,130,21,60,103,25,0,12,6,240,255, -201,5,60,23,5,0,181,5,60,22,4,0,10,48,2,56,24,64,190,255, -134,164,60,23,25,0,2,6,240,255,201,13,2,6,240,255,201,5,60,23, -5,0,181,5,60,22,4,0,2,48,128,255,90,192,15,90,124,95,25,0, -197,5,60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7,13,0, -35,86,13,0,10,135,0,0,66,135,0,0,26,6,240,255,124,191,5,0, -124,215,25,0,185,5,23,16,181,5,60,22,4,0,124,199,21,0,67,7, -12,0,194,193,35,22,12,0,2,111,0,0,88,111,0,0,245,21,224,217, -218,21,60,103,25,0,124,7,21,0,12,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,67,7,11,0,35,86,11,0,10,95,0,0,66,95, -0,0,224,217,226,21,60,127,25,0,15,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,124,223,21,0,67,7,14,0,194,217,35,22,14,0, -2,111,0,0,91,111,0,0,60,95,21,0,25,112,238,89,169,5,11,112, -224,113,186,5,128,7,246,2,60,23,25,0,2,6,240,255,201,5,60,87, -5,0,181,5,60,86,4,0,10,96,2,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,14,80,194,81,11,16,174,17,130,37,2,120,202,121, -12,104,170,97,15,88,170,89,235,97,139,21,2,80,205,81,10,110,255,255, -15,86,255,255,95,82,10,135,1,0,95,106,77,135,1,0,95,18,154,253, -149,13,65,82,10,127,255,255,65,106,77,127,255,255,95,18,154,253,60,223, -21,0,174,217,126,218,195,5,28,48,128,255,24,188,60,111,25,0,251,105, -137,93,60,207,21,0,155,214,15,0,126,210,163,5,27,208,26,54,1,0, -128,255,28,191,10,192,224,201,130,21,60,103,25,0,12,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,10,48,2,56,25,64,190,255,228,162, -60,23,25,0,2,6,240,255,201,13,2,6,240,255,201,5,60,23,5,0, -181,5,60,22,4,0,2,48,128,255,184,190,15,90,124,95,25,0,197,5, -60,23,5,0,181,5,60,22,4,0,124,7,21,0,67,7,17,0,35,86, -17,0,10,135,0,0,66,135,0,0,26,6,240,255,124,199,5,0,124,215, -25,0,185,5,24,16,181,5,60,22,4,0,124,207,21,0,67,7,16,0, -194,201,35,22,16,0,2,111,0,0,89,111,0,0,245,21,224,217,218,21, -60,103,25,0,124,7,21,0,12,6,240,255,201,5,60,23,5,0,181,5, -60,22,4,0,67,7,15,0,35,86,15,0,10,95,0,0,66,95,0,0, -224,217,186,5,128,7,142,1,60,127,25,0,15,6,240,255,201,5,60,23, -5,0,181,5,60,22,4,0,124,223,21,0,67,7,18,0,194,217,35,22, -18,0,2,111,0,0,91,111,0,0,128,7,96,1,126,218,195,5,28,48, -128,255,246,186,60,23,25,0,251,17,217,69,155,214,15,0,126,210,163,5, -27,208,26,54,1,0,128,255,254,189,60,23,25,0,10,192,2,6,240,255, -201,13,2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48, -128,255,188,189,15,98,124,103,25,0,197,5,60,23,5,0,181,5,60,22, -4,0,124,7,21,0,67,7,21,0,35,86,21,0,10,87,0,0,66,87, -0,0,26,6,240,255,124,199,5,0,124,215,25,0,185,5,24,80,181,5, -60,86,4,0,124,7,21,0,10,16,67,7,20,0,35,86,20,0,10,119, -0,0,66,119,0,0,197,61,27,6,240,255,177,37,2,6,240,255,201,13, -2,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0,2,48,128,255, -70,189,15,106,124,111,25,0,197,5,60,23,5,0,181,5,60,22,4,0, -124,7,21,0,67,7,22,0,35,86,22,0,10,95,0,0,66,95,0,0, -245,21,224,217,218,21,60,87,25,0,124,7,21,0,10,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,67,7,19,0,35,86,19,0,10,135, -0,0,66,135,0,0,224,217,210,37,60,111,25,0,13,6,240,255,201,5, -60,23,5,0,181,5,60,22,4,0,2,48,25,56,27,64,190,255,220,160, -60,103,25,0,12,6,240,255,201,5,60,23,5,0,181,5,60,22,4,0, -124,223,21,0,67,7,23,0,194,217,35,22,23,0,2,87,0,0,91,87, -0,0,37,22,180,130,99,23,37,1,35,214,72,1,61,22,36,255,99,23, -41,1,15,122,154,135,1,0,67,135,7,0,99,127,69,1,197,5,35,23, -49,1,181,5,35,22,48,1,99,7,65,1,67,7,24,0,35,86,24,0, -10,111,0,0,66,111,0,0,64,86,134,0,42,87,153,132,58,231,21,0, -10,16,252,17,169,5,2,224,35,102,44,1,250,97,178,5,128,7,198,1, -35,95,65,1,10,216,252,89,217,5,35,54,44,1,128,255,70,186,35,23, -65,1,188,17,251,17,169,5,2,216,224,217,186,5,128,7,20,3,35,87, -69,1,10,6,240,255,201,5,35,103,49,1,181,5,35,102,48,1,28,88, -204,89,10,6,240,255,201,5,35,87,49,1,181,5,35,86,48,1,202,225, -27,80,220,81,187,17,146,37,11,128,16,120,2,88,202,89,170,121,11,112, -170,113,238,121,139,21,2,104,208,105,13,134,255,255,11,86,255,255,95,82, -10,103,1,0,95,130,80,103,1,0,95,18,154,253,149,13,65,82,10,95, -255,255,65,130,80,95,255,255,95,18,154,253,35,231,65,1,187,225,126,226, -211,5,35,54,44,1,128,255,152,184,35,135,69,1,252,129,137,93,35,215, -65,1,156,222,15,0,126,218,163,5,28,216,27,54,1,0,128,255,156,187, -10,200,224,209,130,21,35,127,69,1,15,6,240,255,201,5,35,23,49,1, -181,5,35,22,48,1,10,48,2,56,26,64,190,255,100,159,35,23,69,1, -2,6,240,255,201,13,2,6,240,255,201,5,35,23,49,1,181,5,35,22, -48,1,2,48,128,255,56,187,15,114,99,119,69,1,197,5,35,23,49,1, -181,5,35,22,48,1,99,7,65,1,67,7,27,0,35,86,27,0,10,103, -0,0,66,103,0,0,27,6,240,255,99,207,49,1,99,223,69,1,185,5, -25,16,181,5,35,22,48,1,99,215,65,1,67,7,26,0,194,209,35,22, -26,0,2,135,0,0,90,135,0,0,245,21,224,225,218,21,35,127,69,1, -99,7,65,1,15,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1, -67,7,25,0,35,86,25,0,10,119,0,0,66,119,0,0,224,225,186,5, -128,7,166,1,35,95,69,1,11,6,240,255,201,5,35,23,49,1,181,5, -35,22,48,1,99,231,65,1,67,7,28,0,194,225,35,22,28,0,2,135, -0,0,92,135,0,0,128,7,120,1,126,226,211,5,35,54,44,1,128,255, -116,183,35,23,69,1,252,17,217,69,156,222,15,0,126,218,163,5,28,216, -27,54,1,0,128,255,124,186,35,23,69,1,10,200,2,6,240,255,201,13, -2,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1,2,48,128,255, -58,186,15,122,99,127,69,1,197,5,35,23,49,1,181,5,35,22,48,1, -99,7,65,1,67,7,31,0,35,86,31,0,10,111,0,0,66,111,0,0, -27,6,240,255,99,207,49,1,99,223,69,1,185,5,25,80,181,5,35,86, -48,1,99,7,65,1,10,16,67,7,30,0,35,86,30,0,10,87,0,0, -66,87,0,0,197,61,28,6,240,255,177,37,2,6,240,255,201,13,2,6, -240,255,201,5,35,23,49,1,181,5,35,22,48,1,2,48,128,255,196,185, -15,130,99,135,69,1,197,5,35,23,49,1,181,5,35,22,48,1,99,7, -65,1,67,7,32,0,35,86,32,0,10,119,0,0,66,119,0,0,245,21, -224,225,218,21,35,111,69,1,99,7,65,1,13,6,240,255,201,5,35,23, -49,1,181,5,35,22,48,1,67,7,29,0,35,86,29,0,10,103,0,0, -66,103,0,0,224,225,130,53,35,135,69,1,16,6,240,255,201,5,35,23, -49,1,181,5,35,22,48,1,58,127,25,0,2,80,15,6,240,255,201,5, -58,23,5,0,181,5,58,22,4,0,10,48,2,56,28,64,190,255,68,157, -35,119,69,1,14,6,240,255,201,5,35,23,49,1,181,5,35,22,48,1, -99,231,65,1,67,7,33,0,194,225,35,22,33,0,2,103,0,0,92,103, -0,0,61,22,68,255,99,23,41,1,64,94,134,0,43,95,221,131,35,230, -36,1,224,89,242,5,28,48,11,80,63,6,150,99,129,0,106,0,60,23, -5,0,63,6,178,99,129,0,2,22,24,0,34,87,0,0,34,135,5,0, -220,81,10,48,112,0,28,48,128,255,244,183,61,22,36,255,99,23,41,1, -35,23,69,1,2,6,240,255,201,13,2,6,240,255,201,5,35,23,49,1, -181,5,35,22,48,1,2,48,128,255,160,184,15,122,99,127,69,1,197,5, -35,23,49,1,181,5,35,22,48,1,99,7,65,1,67,7,34,0,35,86, -34,0,10,111,0,0,66,111,0,0,61,22,4,255,99,23,41,1,35,23, -97,1,2,6,240,255,201,13,2,6,240,255,201,5,35,23,77,1,181,5, -35,22,76,1,2,48,128,255,82,184,15,98,99,103,97,1,197,5,35,23, -77,1,181,5,35,22,76,1,99,7,93,1,67,7,35,0,35,86,35,0, -10,87,0,0,66,87,0,0,128,7,20,4,224,17,186,5,0,82,213,5, -60,87,9,0,162,81,163,82,27,112,202,113,238,209,177,5,128,7,132,1, -26,80,129,82,45,6,255,255,255,31,170,105,250,105,185,5,0,82,165,5, -218,81,10,208,224,17,186,5,0,82,213,5,60,87,9,0,162,81,163,82, -27,128,202,129,240,209,185,13,224,17,186,5,0,82,213,5,60,87,9,0, -162,81,163,82,27,208,202,209,28,48,26,56,0,66,191,255,18,233,60,23, -5,0,35,206,48,0,99,23,49,0,99,207,89,0,55,111,1,0,35,198, -52,0,99,111,53,0,99,199,85,0,57,103,1,0,10,232,99,103,81,0, -56,95,1,0,99,239,65,0,99,95,77,0,35,22,80,0,34,87,1,0, -29,64,99,87,69,0,35,94,76,0,43,135,1,0,99,95,61,0,99,135, -73,0,99,23,57,0,28,72,131,23,37,0,67,23,0,0,35,54,68,0, -35,62,72,0,191,255,198,232,28,48,10,56,27,64,35,78,28,1,128,255, -54,3,55,127,1,0,99,199,125,0,99,127,53,0,35,94,112,0,60,23, -9,0,99,95,97,0,99,23,49,0,99,207,121,0,56,119,1,0,35,22, -116,0,99,119,117,0,99,87,101,0,57,111,1,0,10,64,99,111,113,0, -28,72,34,103,1,0,99,23,93,0,99,103,105,0,35,54,104,0,43,95, -1,0,163,23,37,0,67,23,0,0,99,95,109,0,35,62,108,0,191,255, -84,232,60,87,5,0,224,81,186,5,0,18,213,5,60,23,9,0,170,17, -163,18,194,217,60,23,5,0,224,17,242,13,60,87,9,0,99,23,41,0, -99,87,45,0,165,5,72,18,234,17,234,253,60,55,5,0,128,255,164,182, -195,210,221,209,124,215,13,0,195,218,221,217,124,223,9,0,124,239,5,0, -128,7,120,2,60,23,9,0,35,86,128,0,99,23,129,0,23,200,42,127, -1,0,57,23,1,0,28,72,162,121,163,122,251,121,177,5,128,7,46,1, -99,23,133,0,35,86,132,0,60,23,9,0,27,192,99,23,137,0,195,194, -42,95,1,0,57,71,1,0,99,87,173,0,99,95,165,0,35,22,136,0, -35,94,164,0,99,95,141,0,34,87,1,0,216,65,99,87,161,0,99,23, -169,0,43,135,1,0,35,22,160,0,99,135,153,0,99,71,149,0,34,127, -1,0,99,23,145,0,99,127,157,0,131,23,39,0,67,23,0,0,35,54, -152,0,35,62,156,0,191,255,112,231,60,215,9,0,35,22,188,0,99,215, -189,0,27,232,34,111,1,0,57,103,1,0,99,215,193,0,172,105,163,106, -173,233,229,21,26,16,224,17,146,21,224,17,250,5,8,50,128,255,232,181, -10,16,224,17,146,13,3,87,28,1,66,87,0,0,35,87,33,1,98,87, -5,0,95,234,72,210,224,233,170,237,60,87,9,0,216,81,124,87,9,0, -55,135,1,0,99,135,133,0,35,118,132,0,60,23,9,0,99,119,185,0, -99,23,137,0,35,126,176,0,35,22,136,0,34,111,1,0,195,218,187,105, -99,111,177,0,99,127,181,0,14,104,133,21,35,86,28,1,42,95,1,0, -98,95,1,0,42,87,5,0,98,87,5,0,45,103,1,0,72,98,109,103, -1,0,47,95,1,0,46,23,1,0,235,17,202,237,128,7,42,1,60,95, -9,0,27,80,99,95,25,1,99,95,201,0,195,82,11,16,170,17,99,23, -197,0,35,238,196,0,60,71,9,0,61,111,1,0,35,198,200,0,99,111, -229,0,35,22,228,0,56,103,1,0,99,103,225,0,99,239,237,0,34,95, -1,0,35,86,224,0,99,95,217,0,99,87,209,0,99,199,233,0,42,87, -1,0,99,71,213,0,99,23,205,0,99,87,221,0,163,23,39,0,67,23, -0,0,35,54,216,0,35,62,220,0,191,255,64,230,124,87,9,0,35,111, -25,1,57,135,1,0,27,120,99,135,241,0,99,111,245,0,195,122,13,16, -175,17,99,23,197,0,35,86,240,0,42,95,1,0,99,87,13,1,99,95, -1,1,99,239,9,1,61,87,1,0,35,230,244,0,99,87,253,0,99,231, -5,1,60,135,1,0,24,48,99,135,249,0,163,23,39,0,67,23,0,0, -35,62,0,1,35,70,252,0,35,78,248,0,191,255,38,229,57,127,1,0, -99,231,21,1,99,127,245,0,195,218,57,103,1,0,99,239,17,1,204,217, -99,223,197,0,28,104,28,96,133,21,35,86,28,1,42,95,1,0,98,95, -1,0,42,87,5,0,98,87,5,0,44,95,1,0,72,90,108,95,1,0, -61,87,1,0,45,23,1,0,234,17,202,237,3,30,232,0,126,6,255,241, -130,7,225,112,9,216,7,208,99,215,1,0,26,232,8,200,25,224,229,21, -29,16,224,17,146,21,224,17,250,5,8,50,128,255,12,180,10,16,224,17, -146,13,27,87,0,0,66,87,0,0,59,87,5,0,98,87,5,0,95,226, -72,234,224,225,170,237,25,80,195,82,218,81,66,6,255,112,38,87,5,0, -127,0,128,7,128,7,225,48,7,232,8,224,9,216,3,215,20,0,224,49, -138,13,32,54,52,0,128,255,194,179,10,48,224,49,162,29,49,6,144,124, -133,0,102,143,49,0,102,239,1,0,102,231,5,0,102,223,9,0,70,215, -12,0,0,18,38,86,13,0,74,7,16,0,74,7,0,0,65,18,65,82, -2,6,240,255,134,253,6,80,64,6,255,48,128,7,225,48,6,232,61,23, -49,0,8,216,2,22,24,0,34,87,0,0,7,208,221,81,10,48,9,224, -28,56,34,143,5,0,63,6,70,105,129,0,113,0,125,87,5,0,26,48, -251,81,251,87,60,67,61,135,9,0,61,63,1,0,240,231,32,2,220,57, -190,255,40,151,61,87,5,0,64,6,255,48,130,7,225,48,6,232,7,224, -8,216,9,208,224,233,138,13,32,54,52,0,128,255,28,179,10,232,224,233, -226,13,29,48,28,56,27,64,26,72,99,7,1,0,191,255,46,255,49,6, -176,124,133,0,125,143,49,0,29,80,66,6,255,48,130,7,225,112,38,215, -53,0,0,226,0,234,0,18,28,6,240,255,129,13,252,126,40,0,32,110, -160,180,205,121,47,23,17,0,2,216,224,217,194,53,59,23,105,0,30,234, -2,22,80,0,34,87,0,0,34,103,5,0,219,81,10,48,63,6,240,105, -129,0,108,0,224,81,162,5,31,234,59,23,105,0,31,202,2,22,136,0, -34,87,0,0,3,48,219,81,10,56,31,66,34,95,5,0,63,6,24,106, -129,0,107,0,195,199,0,0,162,5,29,202,89,233,189,0,31,18,155,143, -7,0,17,6,192,255,186,5,32,22,127,0,66,233,189,0,65,210,90,239, -255,255,65,226,28,6,240,255,134,189,32,86,16,0,66,6,255,112,128,7, -225,0,6,232,0,18,7,6,240,255,129,13,231,126,40,0,32,110,160,180, -205,121,47,23,17,0,2,80,224,81,186,5,0,82,133,29,42,23,105,0, -61,231,53,0,2,22,176,0,34,95,0,0,34,103,5,0,202,89,11,48, -63,6,148,106,129,0,108,0,92,87,0,0,61,95,53,0,2,82,75,7, -1,0,64,6,255,0,128,7,33,0,6,96,0,18,7,6,240,255,129,13, -231,126,40,0,32,110,160,180,205,121,47,23,17,0,2,80,224,81,186,5, -0,82,181,21,42,23,105,0,44,63,53,0,2,22,184,0,34,95,0,0, -34,103,5,0,202,89,11,48,63,6,236,106,129,0,108,0,244,87,64,2, -64,6,63,0,128,7,97,0,38,239,53,0,7,48,191,255,76,80,93,87, -0,0,1,82,64,6,127,0,130,7,225,16,6,224,60,143,53,0,0,18, -81,7,0,0,7,6,240,255,129,13,231,118,40,0,32,102,160,180,204,113, -46,23,17,0,2,232,224,233,162,69,61,23,105,0,30,218,2,22,80,0, -34,87,0,0,34,95,5,0,221,81,10,48,63,6,84,107,129,0,107,0, -224,81,162,5,31,218,60,87,53,0,3,48,74,223,0,0,31,66,61,23, -105,0,31,218,2,22,136,0,34,87,0,0,34,143,5,0,221,81,10,56, -63,6,132,107,129,0,113,0,195,199,0,0,162,5,29,218,60,127,53,0, -15,119,0,0,91,113,79,119,0,0,31,18,157,111,7,0,13,6,192,255, -186,5,32,22,127,0,60,95,53,0,11,87,0,0,66,81,75,87,0,0, -1,82,66,6,255,16,128,7,33,0,7,64,38,63,53,0,32,54,0,32, -190,255,124,155,64,6,63,0,144,7,97,0,6,232,3,48,39,6,170,170, -102,102,191,255,140,171,3,48,191,255,28,176,61,55,53,0,32,70,0,32, -224,81,242,5,6,56,3,48,0,74,191,255,116,175,197,21,0,58,190,255, -224,149,61,143,53,0,47,6,36,247,132,0,17,112,15,110,33,0,15,103, -0,0,78,103,0,0,65,122,65,114,239,105,154,253,32,86,0,32,80,6, -127,0,128,7,33,0,38,55,53,0,32,62,0,32,128,255,94,71,32,86, -0,32,64,6,63,0,130,7,225,112,7,224,8,216,9,208,3,207,28,0, -6,232,224,233,138,13,32,54,56,0,128,255,58,176,10,232,224,233,130,21, -29,48,28,56,27,64,26,72,99,207,1,0,191,255,76,252,48,6,208,125, -133,0,125,135,49,0,125,231,53,0,29,80,66,6,255,112,128,7,225,0, -6,232,61,87,53,0,9,224,224,81,186,5,0,82,197,77,61,23,5,0, -226,65,194,5,2,80,128,81,213,69,0,106,61,143,9,0,28,16,241,23, -32,2,202,17,0,82,149,21,7,119,0,0,2,127,0,0,238,121,130,13, -2,48,11,64,170,65,190,255,178,147,1,106,133,13,65,18,65,58,65,82, -61,95,5,0,235,81,214,237,29,103,12,0,224,97,162,29,132,95,173,133, -224,89,226,21,224,105,138,13,61,142,13,0,220,137,145,127,1,0,224,121, -210,21,61,118,29,0,220,113,1,98,78,103,0,0,61,86,13,0,202,225, -92,7,0,0,149,13,224,105,242,5,61,126,13,0,207,225,1,114,92,119, -0,0,61,87,5,0,64,6,255,0,130,7,225,16,6,232,7,216,8,224, -188,0,224,233,138,13,32,54,56,0,128,255,74,175,10,232,224,233,226,13, -29,48,27,56,99,231,1,0,1,66,0,74,191,255,226,254,48,6,240,125, -133,0,125,135,49,0,29,80,66,6,255,16,130,7,33,0,7,143,0,0, -224,137,234,23,0,0,67,23,3,0,35,62,3,0,191,255,254,254,66,6, -63,0,130,7,225,16,6,232,7,224,8,216,224,233,138,13,32,54,56,0, -128,255,240,174,10,232,224,233,242,13,29,48,28,56,27,64,5,138,99,143, -1,0,0,74,191,255,134,254,48,6,16,126,133,0,125,135,49,0,29,80, -66,6,255,16,128,7,97,0,6,232,191,255,178,254,10,16,224,17,215,5, -61,86,52,0,106,7,1,0,2,80,64,6,127,0,0,82,127,0,38,87, -5,0,127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0, -0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0,0,82,127,0, -128,7,33,0,32,150,44,177,114,7,1,0,38,6,60,126,133,0,128,255, -4,179,64,6,63,0,128,7,33,0,224,49,210,5,129,58,185,5,128,255, -50,174,64,6,63,0,128,7,33,0,32,150,96,177,114,7,1,0,38,6, -84,126,133,0,128,255,214,178,64,6,63,0,128,7,33,0,224,49,210,5, -129,58,185,5,128,255,4,174,64,6,63,0,128,7,128,7,225,0,6,232, -224,233,138,13,32,54,244,11,128,255,12,174,10,232,224,233,194,77,49,6, -96,126,133,0,125,143,241,11,61,54,228,1,0,58,8,66,190,255,58,147, -61,54,236,1,32,62,254,0,32,70,0,10,190,255,42,147,1,130,93,135, -71,1,125,7,241,0,93,7,72,1,32,126,223,255,93,7,73,1,93,127, -4,1,93,7,70,1,0,226,28,48,252,55,72,2,221,49,0,58,32,70, -92,0,190,255,248,146,65,226,98,226,214,245,10,90,125,95,21,1,61,54, -40,1,0,58,32,70,30,0,190,255,222,146,36,87,185,133,32,142,45,0, -10,86,65,0,93,87,40,1,93,143,41,1,64,22,133,0,34,62,8,251, -61,54,42,1,128,255,136,210,29,80,64,6,255,0,140,7,225,0,6,232, -7,224,229,87,64,0,224,7,96,1,36,143,185,133,10,248,65,138,209,142, -15,0,100,143,185,133,255,47,32,0,29,127,73,1,224,121,218,5,29,119, -72,1,224,113,194,5,32,86,112,1,197,93,125,231,241,0,60,23,8,0, -32,110,128,0,226,111,192,2,125,111,33,1,224,105,207,5,1,82,125,87, -33,1,61,143,33,1,32,134,0,2,125,143,29,1,226,135,192,2,125,135, -37,1,104,130,199,5,8,106,125,111,37,1,61,78,228,1,61,54,184,0, -61,62,40,1,8,98,99,103,1,0,1,66,128,255,180,140,224,81,202,37, -61,54,76,1,61,62,40,1,40,6,42,112,129,0,29,72,1,90,93,95, -73,1,61,86,236,1,99,87,1,0,32,142,0,10,99,143,5,0,5,130, -99,135,9,0,99,135,13,0,99,95,21,0,99,7,17,0,128,255,224,129, -224,81,202,5,1,106,93,111,72,1,29,103,73,1,97,98,250,5,29,95, -72,1,97,90,186,5,0,82,181,5,32,86,112,1,76,6,255,0,128,7, -33,0,6,88,43,23,241,11,63,6,76,112,129,0,2,22,16,0,34,87, -0,0,34,143,5,0,203,81,10,48,113,0,64,6,63,0,166,7,225,48, -6,232,245,21,32,54,200,0,128,255,246,132,229,87,64,0,224,7,96,1, -36,23,189,133,10,248,99,18,142,13,2,134,1,0,100,135,189,133,1,122, -93,127,70,1,255,47,32,0,29,119,70,1,224,113,242,229,38,6,132,215, -255,255,31,58,191,255,156,12,224,81,154,253,61,55,241,0,191,255,152,12, -10,224,28,56,61,70,40,1,38,6,36,251,132,0,128,255,170,177,61,95, -241,0,43,23,105,0,63,6,214,112,129,0,2,22,192,0,34,87,0,0, -34,111,5,0,203,81,10,48,109,0,61,23,241,0,2,23,7,0,123,18, -130,29,119,18,242,13,2,6,33,0,210,5,2,6,81,0,130,29,229,29, -28,64,11,50,37,62,8,131,190,255,184,149,245,21,28,64,12,50,37,62, -8,131,190,255,170,149,133,21,28,64,32,54,41,0,37,62,8,131,190,255, -154,149,133,13,28,64,32,54,51,0,37,62,8,131,190,255,138,149,38,6, -132,215,255,255,190,255,216,163,224,81,146,13,38,6,60,251,132,0,32,62, -6,1,0,66,190,255,182,148,29,48,128,255,116,24,61,55,241,0,99,7, -64,0,99,7,70,0,99,7,53,0,38,103,8,0,99,7,49,0,99,103, -66,0,35,62,36,0,128,255,36,45,99,95,61,0,99,87,57,0,61,55, -241,0,190,255,156,209,10,120,191,82,157,82,202,121,163,122,125,127,237,11, -35,95,41,0,35,87,37,0,235,1,234,13,234,1,202,13,0,18,6,90, -2,112,252,119,72,2,221,113,78,95,4,0,65,18,98,18,246,245,35,95, -61,0,35,87,57,0,28,6,240,255,125,7,25,1,125,87,253,0,125,87, -245,0,125,7,17,1,125,95,1,1,125,95,249,0,0,82,177,13,252,22, -40,0,32,118,160,180,206,17,34,111,17,0,224,105,162,5,2,80,42,103, -29,0,125,7,9,1,125,103,13,1,58,6,20,251,132,0,61,54,184,0, -35,62,4,0,31,66,128,255,218,142,35,95,5,0,98,90,241,5,26,48, -32,62,197,1,0,66,190,255,216,147,35,87,5,0,61,23,241,11,252,87, -72,2,221,81,10,231,4,0,2,22,24,0,34,87,0,0,28,120,221,81, -10,48,15,56,132,119,5,140,14,64,35,78,8,0,34,111,5,0,63,6, -98,114,129,0,109,0,97,82,154,13,61,54,184,0,35,62,4,0,31,66, -128,255,162,139,245,197,97,226,138,21,3,87,70,0,35,95,9,0,29,138, -224,89,226,23,0,0,81,81,194,134,1,0,193,130,16,81,67,87,70,0, -61,95,1,1,61,87,253,0,29,48,99,87,29,0,99,95,33,0,35,71, -5,0,61,95,249,0,61,87,245,0,35,126,20,0,99,95,25,0,99,87, -21,0,99,127,1,0,35,62,48,0,35,78,28,0,128,255,164,18,10,224, -35,95,33,0,35,87,29,0,125,87,253,0,125,95,1,1,35,87,21,0, -35,95,25,0,103,226,125,87,245,0,125,95,249,0,250,93,61,23,241,11, -35,231,5,0,2,22,56,0,34,87,0,0,28,110,1,0,221,81,10,48, -205,222,1,0,27,56,34,103,5,0,63,6,34,115,129,0,108,0,224,81, -242,21,27,16,252,23,72,2,221,17,34,87,21,0,34,95,25,0,28,16, -252,23,72,2,221,17,34,111,25,0,34,103,21,0,237,89,219,5,177,5, -236,81,169,5,27,224,61,23,241,11,28,56,2,22,64,0,34,87,0,0, -34,95,5,0,221,81,10,48,63,6,112,115,129,0,107,0,10,224,61,55, -241,0,35,62,12,0,128,255,28,43,125,95,1,1,125,87,253,0,125,87, -245,0,125,95,249,0,1,82,125,87,29,1,103,226,250,13,29,48,128,255, -8,24,61,54,76,1,128,255,54,132,26,48,32,62,18,2,0,66,190,255, -80,146,224,81,102,226,178,5,191,7,74,254,35,119,5,0,65,114,206,22, -1,0,252,23,72,2,221,17,2,95,4,0,102,90,178,5,191,7,46,254, -61,55,241,0,191,255,92,9,61,23,241,0,2,23,7,0,10,64,123,18, -226,21,119,18,226,13,2,6,33,0,210,5,2,6,81,0,210,21,165,29, -5,50,37,62,8,131,190,255,174,146,197,21,7,50,37,62,8,131,190,255, -162,146,229,13,32,54,43,0,37,62,8,131,190,255,148,146,245,5,32,54, -53,0,37,62,8,131,190,255,134,146,31,82,93,87,4,1,29,48,128,255, -104,23,61,54,76,1,128,255,150,131,26,48,32,62,69,2,0,66,190,255, -176,145,224,81,186,5,191,7,172,253,191,7,168,253,130,7,225,112,7,216, -187,0,8,208,154,0,9,200,6,232,61,143,9,1,0,226,97,138,218,45, -97,218,234,37,61,54,184,0,3,56,32,70,100,0,128,255,102,140,224,81, -170,29,61,54,184,0,3,56,31,66,128,255,124,137,35,127,1,0,252,127, -72,2,221,121,15,111,4,0,97,106,194,5,1,82,128,7,112,1,250,102, -50,0,136,98,12,54,20,0,128,255,150,128,125,7,9,1,229,5,121,7, -1,0,0,82,128,7,82,1,97,218,178,5,128,7,72,1,61,55,241,0, -191,255,92,8,10,16,2,6,240,255,0,82,177,13,226,22,40,0,32,110, -160,180,205,17,34,103,17,0,224,97,162,5,2,80,42,23,29,0,61,143, -29,1,61,135,33,1,17,96,240,143,192,2,61,127,25,1,61,95,13,1, -209,121,125,127,25,1,2,104,171,105,224,105,186,13,12,118,255,255,125,119, -29,1,16,80,234,113,222,13,125,87,29,1,165,13,65,98,61,87,37,1, -125,103,29,1,234,97,183,5,125,87,29,1,61,87,25,1,100,82,230,77, -125,23,13,1,125,7,25,1,61,23,21,1,224,105,170,37,224,17,231,5, -61,135,21,1,95,130,125,135,21,1,51,6,5,0,32,0,211,231,0,0, -170,21,36,127,193,133,65,122,100,127,193,133,98,122,167,53,36,119,189,133, -129,114,14,54,1,0,128,255,188,127,100,7,193,133,133,45,100,7,193,133, -213,37,195,210,26,86,200,0,234,105,185,21,224,17,247,5,61,135,21,1, -95,130,125,135,21,1,133,29,1,226,125,231,9,1,61,111,33,1,125,231, -21,1,125,111,29,1,229,13,2,88,191,90,158,90,203,17,162,18,2,6, -236,255,238,5,61,135,21,1,65,130,125,135,21,1,61,127,17,1,65,122, -125,127,17,1,106,122,183,5,125,7,17,1,61,23,21,1,61,143,17,1, -2,96,191,98,158,98,204,17,162,18,226,137,239,119,0,0,121,119,1,0, -28,80,66,6,255,112,170,7,225,112,8,200,25,232,252,239,72,2,6,208, -218,233,58,54,184,0,7,224,25,56,128,255,116,40,124,87,1,0,32,118, -17,0,125,87,13,0,124,119,25,0,0,218,213,29,60,55,18,0,27,56, -194,58,61,142,60,0,209,57,0,66,128,255,12,40,224,81,138,21,26,48, -25,56,128,255,228,19,99,207,1,0,58,54,184,0,3,56,31,66,128,255, -148,135,32,86,112,1,245,69,65,218,61,135,17,0,240,217,150,229,35,126, -4,0,124,127,5,0,0,218,245,29,27,112,194,114,61,94,60,0,203,113, -46,55,1,0,60,79,18,0,0,58,35,70,4,0,190,255,102,150,100,82, -151,13,38,6,72,251,132,0,32,62,134,3,0,66,190,255,52,143,28,64, -12,50,12,58,190,255,64,150,65,218,61,23,17,0,226,217,246,221,60,239, -1,0,2,224,229,87,64,0,224,7,96,1,61,255,0,0,220,249,125,255, -0,0,10,224,252,47,32,0,224,249,138,13,29,48,61,143,5,0,63,6, -18,119,129,0,113,0,0,82,106,6,255,112,168,7,225,243,8,224,252,231, -72,2,6,176,214,225,7,232,125,31,5,0,54,54,184,0,8,56,128,255, -124,39,125,87,1,0,0,186,124,87,13,0,0,202,61,215,9,0,61,223, -13,0,245,45,38,6,88,251,132,0,32,62,202,3,0,66,190,255,166,142, -54,95,241,0,60,86,28,0,43,23,105,0,202,193,2,22,8,1,34,87, -0,0,29,56,203,81,10,48,1,66,34,127,5,0,63,6,134,119,129,0, -111,0,120,87,1,0,65,186,61,103,9,0,61,111,13,0,12,86,1,0, -125,87,9,0,225,135,0,0,205,129,125,135,13,0,65,202,60,119,17,0, -238,201,174,21,25,192,194,194,60,94,60,0,216,89,43,55,1,0,61,71, -5,0,61,79,18,0,0,58,190,255,84,149,100,82,255,189,229,197,125,215, -9,0,125,223,13,0,61,239,1,0,229,87,64,0,224,7,96,1,61,255, -0,0,10,224,215,249,125,255,0,0,252,47,32,0,224,249,138,13,29,48, -61,111,5,0,63,6,8,120,129,0,109,0,104,6,255,243,168,7,225,241, -8,224,252,231,72,2,6,184,215,225,7,232,125,31,5,0,55,54,184,0, -8,56,128,255,136,38,125,87,1,0,0,194,124,87,13,0,0,202,61,215, -9,0,61,223,13,0,181,61,25,96,194,98,60,134,60,0,208,97,44,55, -1,0,61,71,5,0,61,79,18,0,0,58,190,255,196,148,100,82,151,13, -38,6,104,251,132,0,32,62,20,4,0,66,190,255,146,141,55,95,241,0, -29,56,43,23,105,0,63,6,146,120,129,0,2,22,16,1,34,87,0,0, -34,119,5,0,203,81,10,48,110,0,224,81,170,5,65,194,61,103,9,0, -61,111,13,0,12,86,1,0,125,87,9,0,225,135,0,0,205,129,125,135, -13,0,65,202,60,103,17,0,236,201,182,197,125,215,9,0,125,223,13,0, -61,239,1,0,229,87,64,0,224,7,96,1,61,255,0,0,10,224,216,249, -125,255,0,0,252,47,32,0,224,249,138,13,29,48,61,95,5,0,63,6, -242,120,129,0,107,0,104,6,255,241,252,63,72,2,198,57,39,87,13,0, -0,18,224,81,178,5,42,23,12,0,2,80,127,0,130,7,97,0,6,232, -61,23,241,11,3,64,2,22,72,0,34,87,0,0,34,143,5,0,221,81, -10,48,63,6,50,121,129,0,113,0,10,16,103,18,234,21,0,50,1,122, -35,103,1,0,230,127,192,0,76,121,162,13,32,94,239,255,93,95,4,1, -0,58,191,255,148,131,7,82,229,5,65,50,6,6,240,255,214,237,2,80, -66,6,127,0,180,7,225,243,6,232,7,208,26,224,252,231,72,2,221,225, -28,23,4,0,99,71,53,0,103,18,194,5,2,80,128,7,108,5,99,7, -28,0,99,7,30,0,0,202,99,7,32,0,99,7,34,0,99,7,44,0, -29,48,128,255,130,17,99,7,98,0,61,111,241,0,99,7,92,0,99,7, -77,0,45,111,8,0,99,7,81,0,99,111,94,0,60,151,17,0,60,191, -25,0,60,183,21,0,99,151,37,0,60,95,13,0,125,151,29,1,235,95, -19,0,99,95,6,0,99,95,58,0,35,143,53,0,11,144,113,151,1,0, -26,56,61,23,241,11,63,6,12,122,129,0,2,22,56,0,34,55,0,0, -34,87,5,0,221,49,106,0,99,87,56,0,0,218,29,48,27,56,128,255, -60,16,65,218,98,218,166,253,35,135,56,0,224,129,194,21,61,62,40,1, -36,71,33,175,16,72,38,6,160,251,132,0,128,255,36,168,60,79,25,0, -60,71,21,0,38,6,120,251,132,0,128,255,18,168,61,55,241,0,0,194, -191,255,228,2,10,216,27,6,240,255,153,13,38,6,144,251,132,0,32,62, -229,4,0,66,190,255,146,139,31,146,99,151,61,0,0,18,227,143,59,0, -99,143,46,0,1,98,226,103,192,0,81,97,204,0,224,97,194,5,99,23, -61,0,213,5,65,18,2,6,240,255,246,237,35,23,56,0,2,6,0,254, -161,13,224,17,210,21,2,6,143,254,186,5,128,7,34,1,128,7,148,1, -2,6,0,254,146,21,2,6,254,253,210,61,2,6,252,253,186,5,128,7, -84,1,128,7,122,1,29,48,128,255,238,14,0,82,128,7,24,4,227,119, -31,0,14,150,1,0,99,151,30,0,100,114,179,13,35,71,61,0,10,50, -37,62,16,131,190,255,188,139,1,194,128,7,106,1,99,7,57,0,35,143, -57,0,1,106,241,111,192,0,35,143,46,0,81,105,205,0,224,105,242,5, -29,48,35,71,57,0,26,56,128,255,210,3,35,151,57,0,65,146,99,151, -57,0,18,6,240,255,134,237,128,7,48,1,32,54,220,5,128,255,18,122, -25,120,65,202,217,0,98,122,195,13,35,71,61,0,32,54,38,0,37,62, -24,131,190,255,90,139,1,194,128,7,8,1,97,202,187,5,128,7,0,1, -99,7,57,0,35,143,57,0,1,106,241,111,192,0,35,143,46,0,81,105, -205,0,224,105,226,29,99,7,41,0,213,21,29,48,35,63,57,0,18,64, -8,72,191,74,214,65,225,111,0,0,205,73,215,73,128,255,110,4,224,81, -202,13,35,151,41,0,65,146,99,151,41,0,35,151,41,0,35,143,37,0, -241,145,246,229,35,151,57,0,65,146,99,151,57,0,18,6,240,255,150,213, -197,77,227,103,35,0,12,150,1,0,99,151,34,0,98,98,179,5,1,194, -165,69,99,7,57,0,181,21,29,48,18,64,8,72,191,74,214,65,225,135, -0,0,208,73,215,73,128,255,236,6,224,81,170,53,35,151,57,0,65,146, -99,151,57,0,35,151,57,0,35,143,37,0,241,145,150,237,229,37,227,127, -33,0,15,150,1,0,99,151,32,0,98,122,147,13,35,71,61,0,9,50, -37,62,16,131,190,255,124,138,1,194,32,54,220,5,128,255,16,121,149,21, -227,119,45,0,14,150,1,0,99,151,44,0,100,114,147,13,35,71,61,0, -10,50,37,62,16,131,190,255,82,138,1,194,97,194,178,5,128,7,2,1, -38,6,132,215,255,255,31,58,191,255,184,0,224,81,154,253,61,23,241,0, -2,23,7,0,123,18,146,85,119,18,130,77,2,6,33,0,210,5,2,6, -81,0,146,85,245,85,0,226,61,95,241,0,28,64,43,23,105,0,35,54, -16,0,2,22,136,0,34,87,0,0,34,111,5,0,203,81,10,56,63,6, -198,124,129,0,109,0,35,103,17,0,99,103,13,0,195,199,12,0,178,29, -195,215,12,0,130,29,35,135,53,0,1,18,48,135,1,0,252,23,192,0, -226,129,242,13,35,143,53,0,27,64,113,23,1,0,32,54,45,0,35,79, -61,0,39,6,200,251,132,0,190,255,176,137,65,226,28,6,240,255,150,205, -27,64,4,50,37,62,32,131,190,255,156,137,245,21,27,64,14,50,37,62, -32,131,190,255,142,137,133,21,27,64,32,54,42,0,37,62,32,131,190,255, -126,137,133,13,27,64,32,54,52,0,37,62,32,131,190,255,110,137,38,6, -132,215,255,255,190,255,188,151,224,81,146,13,38,6,220,251,132,0,32,62, -6,1,0,66,190,255,154,136,7,82,128,7,136,1,32,54,144,1,128,255, -224,119,38,6,132,215,255,255,31,58,190,255,178,255,224,81,154,253,0,218, -1,122,35,143,46,0,251,127,192,0,81,121,207,0,224,121,162,13,227,87, -29,0,224,81,226,5,61,55,241,0,27,56,128,255,222,32,65,218,27,6, -240,255,182,237,38,6,132,215,255,255,190,255,82,151,224,81,146,13,38,6, -220,251,132,0,32,62,6,1,0,66,190,255,48,136,35,151,37,0,1,130, -124,151,17,0,124,135,9,0,99,215,9,0,92,7,4,0,26,126,1,0, -207,22,1,0,252,23,72,2,221,17,66,7,4,0,61,54,184,0,35,62, -8,0,31,66,128,255,14,128,61,54,184,0,35,62,8,0,31,66,128,255, -218,130,35,95,9,0,235,209,146,13,38,6,144,251,132,0,32,62,199,5, -0,66,190,255,212,135,99,183,65,0,99,191,69,0,29,48,35,71,9,0, -35,86,64,0,99,87,1,0,35,62,76,0,35,78,64,0,128,255,38,7, -10,216,102,218,178,5,101,218,202,69,61,54,184,0,35,62,8,0,0,66, -128,255,136,130,38,6,132,215,255,255,31,58,190,255,192,254,224,81,154,253, -0,226,61,95,241,0,28,64,43,23,105,0,35,54,20,0,2,22,136,0, -34,87,0,0,34,119,5,0,203,81,10,56,63,6,160,126,129,0,110,0, -195,199,20,0,226,5,61,55,241,0,28,56,128,255,226,31,65,226,28,6, -240,255,166,229,38,6,132,215,255,255,190,255,78,150,224,81,146,13,38,6, -220,251,132,0,32,62,6,1,0,66,190,255,44,135,29,48,128,255,234,10, -27,80,165,13,103,218,186,149,227,151,29,0,65,146,99,151,28,0,191,7, -178,250,116,6,255,243,138,7,225,240,6,208,8,216,27,48,7,192,35,62, -2,0,35,70,3,0,191,255,8,61,3,23,2,0,0,202,224,17,162,125, -4,135,204,131,224,129,234,117,60,6,132,215,255,255,27,56,10,64,2,72, -38,6,232,251,132,0,128,255,42,163,28,48,31,58,190,255,246,253,224,81, -186,253,24,232,252,239,72,2,218,233,58,54,184,0,24,56,128,255,94,31, -125,87,13,0,1,90,106,95,0,0,10,48,3,71,2,0,27,56,191,255, -96,88,3,130,1,138,106,143,0,0,3,23,2,0,99,135,8,0,2,126, -64,0,99,127,10,0,99,7,13,0,67,7,16,0,32,118,239,0,67,119, -17,0,8,106,99,111,18,0,27,48,10,56,35,70,8,0,0,74,191,255, -4,88,28,48,190,255,100,149,224,81,146,13,38,6,20,252,132,0,32,62, -6,1,0,66,190,255,66,134,58,54,184,0,35,62,4,0,31,66,128,255, -34,129,28,48,31,58,190,255,94,253,224,81,186,253,61,55,13,0,38,207, -12,0,102,7,0,0,190,255,86,141,125,7,13,0,28,48,190,255,28,149, -224,81,162,13,38,6,20,252,132,0,32,62,6,1,0,66,190,255,250,133, -224,81,25,80,74,6,255,240,190,7,225,243,0,226,99,63,13,0,99,7, -112,0,99,7,118,0,99,7,97,0,35,134,16,0,99,79,109,0,99,71, -105,0,6,232,61,151,241,0,99,135,101,0,99,151,5,0,29,216,50,151, -8,0,0,210,99,151,5,0,55,6,132,215,255,255,54,6,48,252,132,0, -0,194,128,7,118,2,29,48,0,58,128,255,240,9,26,6,254,253,218,5, -32,54,232,3,128,255,226,116,23,48,31,58,190,255,184,252,224,81,186,253, -28,200,194,202,59,62,60,0,217,57,1,50,31,66,128,255,224,29,59,94, -60,0,217,89,43,55,1,0,0,58,35,70,16,0,1,74,190,255,120,140, -61,54,184,0,28,56,128,255,0,30,99,87,97,0,10,128,123,135,13,0, -16,120,1,114,111,119,0,0,59,150,28,0,61,95,241,0,99,199,114,0, -43,23,105,0,217,145,2,22,32,1,34,87,0,0,99,151,9,0,203,81, -10,48,35,71,13,0,35,62,96,0,1,74,34,111,5,0,63,6,252,128, -129,0,109,0,35,143,9,0,59,94,28,0,113,87,1,0,203,201,57,87, -1,0,23,48,224,81,186,21,59,135,13,0,112,7,0,0,190,255,240,147, -224,81,186,5,128,7,184,1,22,48,32,62,6,1,0,66,190,255,206,132, -128,7,168,1,190,255,212,147,224,81,242,5,22,48,32,62,6,1,0,66, -190,255,182,132,61,54,184,0,3,56,31,66,128,255,152,127,35,127,1,0, -239,225,146,13,38,6,32,252,132,0,32,62,202,6,0,66,190,255,146,132, -61,23,241,11,28,56,2,22,56,0,34,87,0,0,34,119,5,0,221,81, -10,48,63,6,142,129,129,0,110,0,10,208,224,209,186,5,128,7,58,1, -26,6,254,253,178,5,128,7,62,1,61,55,241,0,190,255,146,251,234,86, -40,0,32,126,160,180,207,81,138,119,37,0,224,113,186,5,128,7,18,1, -23,48,31,58,190,255,108,251,224,81,186,253,59,55,13,0,102,7,0,0, -190,255,104,139,61,54,184,0,28,56,128,255,208,28,10,104,13,96,1,90, -108,95,0,0,99,87,97,0,61,95,241,0,123,111,13,0,43,23,105,0, -35,71,13,0,2,22,40,1,34,55,0,0,35,62,96,0,203,49,34,87, -5,0,63,6,26,130,129,0,106,0,23,48,10,208,224,209,130,21,59,127, -13,0,111,7,0,0,190,255,226,146,224,81,242,69,22,48,32,62,6,1, -0,66,190,255,196,131,133,69,190,255,204,146,224,81,242,5,22,48,32,62, -6,1,0,66,190,255,174,131,35,63,13,0,24,64,38,6,60,252,132,0, -128,255,252,159,35,71,13,0,32,54,44,0,39,6,100,252,132,0,190,255, -66,132,61,54,184,0,3,56,31,66,128,255,110,126,35,119,1,0,238,225, -146,13,38,6,32,252,132,0,32,62,9,7,0,66,190,255,104,131,61,23, -241,11,28,56,2,22,56,0,34,87,0,0,34,111,5,0,221,81,10,48, -63,6,184,130,129,0,109,0,10,208,224,209,138,21,29,48,28,56,128,255, -144,7,32,54,232,3,128,255,136,114,65,194,35,143,5,0,241,193,190,5, -191,7,134,253,29,48,28,56,128,255,114,7,26,80,126,6,255,243,184,7, -225,115,6,232,61,223,241,0,29,224,59,223,8,0,8,176,99,183,93,0, -9,184,99,191,97,0,99,7,100,0,99,7,106,0,99,7,85,0,35,134, -4,0,99,135,89,0,99,223,102,0,132,127,7,140,224,121,210,5,32,86, -113,1,128,7,68,2,58,6,132,215,255,255,0,58,128,255,28,7,26,48, -31,58,190,255,242,249,224,81,186,253,57,6,128,252,132,0,27,48,60,62, -60,0,31,66,128,255,26,27,60,55,61,0,27,72,0,58,35,70,4,0, -190,255,184,137,60,55,61,0,190,255,220,135,224,81,194,21,26,48,190,255, -150,145,224,81,242,5,25,48,32,62,6,1,0,66,190,255,120,130,29,48, -0,58,128,255,196,6,32,86,113,1,128,7,216,1,61,54,184,0,0,58, -128,255,14,27,99,87,85,0,10,112,14,104,61,95,241,0,1,98,43,23, -105,0,109,103,0,0,2,22,8,1,34,87,0,0,124,119,13,0,203,81, -10,48,35,62,84,0,1,66,34,95,5,0,63,6,220,131,129,0,107,0, -124,87,29,0,26,48,224,81,186,21,60,135,13,0,112,7,0,0,190,255, -30,145,224,81,242,5,25,48,32,62,6,1,0,66,190,255,0,130,32,222, -34,1,128,7,94,1,190,255,2,145,224,81,242,5,25,48,32,62,6,1, -0,66,190,255,228,129,61,54,184,0,3,56,31,66,128,255,198,124,35,127, -1,0,224,121,146,13,38,6,112,252,132,0,32,62,158,7,0,66,190,255, -192,129,61,23,241,11,0,58,2,22,56,0,34,87,0,0,34,119,5,0, -221,81,10,48,63,6,96,132,129,0,110,0,10,216,224,217,178,5,128,7, -254,0,26,48,31,58,190,255,194,248,224,81,186,253,60,55,13,0,102,7, -0,0,190,255,190,136,61,54,184,0,0,58,128,255,38,26,99,87,85,0, -10,96,61,95,241,0,1,82,43,23,105,0,108,87,0,0,2,22,16,1, -34,87,0,0,124,103,13,0,203,81,10,48,35,62,84,0,34,135,5,0, -63,6,192,132,129,0,112,0,26,48,10,216,224,217,146,21,60,119,13,0, -110,7,0,0,190,255,60,144,224,81,242,69,25,48,32,62,6,1,0,66, -190,255,30,129,224,81,245,61,190,255,36,144,224,81,242,5,25,48,32,62, -6,1,0,66,190,255,6,129,22,64,23,72,38,6,140,252,132,0,128,255, -86,157,61,55,241,0,190,255,42,248,10,64,32,54,54,0,37,62,40,131, -190,255,152,129,61,54,184,0,3,56,31,66,128,255,196,123,35,111,1,0, -224,105,146,13,38,6,112,252,132,0,32,62,214,7,0,66,190,255,190,128, -61,23,241,11,0,58,2,22,56,0,34,87,0,0,34,103,5,0,221,81, -10,48,63,6,98,133,129,0,108,0,10,216,29,48,0,58,128,255,234,4, -27,80,120,6,255,115,140,7,225,243,99,71,13,0,9,184,35,207,61,0, -99,71,1,0,7,208,8,56,7,224,252,231,72,2,6,232,61,23,241,11, -221,225,2,22,56,0,34,87,0,0,28,223,4,0,221,81,10,48,34,119, -5,0,63,6,178,133,129,0,110,0,224,81,226,5,7,82,92,87,4,0, -128,7,2,4,101,218,186,5,1,218,197,5,101,218,174,5,65,218,92,223, -4,0,54,6,132,215,255,255,22,48,32,62,50,0,190,255,82,247,224,81, -226,5,7,82,92,87,4,0,128,7,210,3,60,23,13,0,224,17,226,5, -98,7,0,0,2,48,190,255,62,135,124,7,13,0,97,218,178,5,128,7, -26,1,61,199,29,1,104,194,167,5,8,194,61,55,241,0,35,62,16,0, -128,255,118,24,57,63,5,0,35,119,17,0,7,88,55,79,5,0,57,55, -1,0,55,71,1,0,6,96,168,97,225,135,0,0,176,89,169,89,172,113, -99,119,17,0,35,127,21,0,225,111,0,0,173,121,171,121,99,127,21,0, -170,37,238,1,138,37,1,122,35,95,1,0,6,218,65,90,203,22,1,0, -99,23,5,0,92,223,4,0,252,23,72,2,221,17,2,119,4,0,98,127, -9,0,98,114,178,5,128,7,22,3,61,54,184,0,35,62,4,0,31,66, -128,255,122,119,128,7,4,3,35,87,17,0,35,95,21,0,24,104,191,106, -235,105,209,5,187,5,234,193,163,5,10,192,124,55,21,0,124,63,25,0, -124,199,17,0,61,23,241,11,26,56,2,22,32,0,34,87,0,0,35,71, -1,0,221,81,10,48,34,111,5,0,63,6,230,134,129,0,109,0,224,81, -202,21,60,103,17,0,57,119,1,0,12,88,191,90,206,97,121,103,1,0, -57,127,5,0,225,135,0,0,208,89,207,89,121,95,5,0,128,7,148,2, -95,218,1,50,125,55,29,1,92,223,4,0,128,255,54,110,128,7,128,2, -99,218,242,5,98,218,218,37,60,119,9,0,224,113,151,37,60,95,25,0, -60,87,21,0,3,106,122,95,13,0,122,87,9,0,26,56,61,23,241,11, -124,7,9,0,2,22,40,0,34,87,0,0,92,111,4,0,221,81,10,48, -35,71,1,0,34,103,5,0,63,6,112,135,129,0,108,0,128,7,48,2, -100,218,138,61,60,95,25,0,60,87,21,0,26,56,122,95,13,0,122,87, -9,0,35,71,1,0,61,23,241,11,63,6,170,135,129,0,2,22,48,0, -34,87,0,0,34,95,5,0,221,81,10,48,107,0,35,87,1,0,65,82, -202,22,1,0,99,23,5,0,252,23,72,2,221,17,34,119,9,0,2,111, -4,0,65,114,98,119,9,0,98,106,178,5,128,7,208,1,61,54,184,0, -35,62,4,0,31,66,128,255,52,118,128,7,190,1,101,218,178,5,128,7, -182,1,60,199,21,0,55,95,5,0,60,207,25,0,55,87,1,0,235,201, -186,5,234,193,146,53,22,48,190,255,4,141,224,81,146,13,38,6,180,252, -132,0,32,62,6,1,0,66,190,255,226,125,61,54,184,0,35,62,4,0, -31,66,128,255,194,120,35,103,5,0,1,82,252,103,72,2,221,97,108,87, -9,0,61,54,184,0,35,62,4,0,31,66,128,255,202,117,95,218,92,223, -4,0,61,54,184,0,3,56,31,66,128,255,184,117,27,80,170,0,128,7, -92,1,61,55,241,0,35,62,16,0,128,255,40,22,235,201,138,29,234,193, -234,21,61,95,241,0,60,135,17,0,43,23,105,0,16,72,2,22,232,0, -34,55,0,0,191,74,203,49,16,80,10,64,34,127,5,0,63,6,164,136, -129,0,111,0,35,63,1,0,29,48,128,255,168,1,61,55,241,0,35,62, -16,0,128,255,224,21,119,95,5,0,119,87,1,0,35,95,21,0,35,87, -17,0,235,1,250,5,234,1,218,5,6,218,92,223,4,0,197,101,22,48, -190,255,48,140,224,81,146,13,38,6,180,252,132,0,32,62,6,1,0,66, -190,255,14,125,35,151,13,0,18,110,1,0,205,22,1,0,99,23,5,0, -252,23,72,2,2,88,221,89,11,87,4,0,224,81,226,21,221,17,2,127, -4,0,102,122,146,21,61,54,184,0,35,62,4,0,10,66,128,255,196,119, -224,81,138,13,61,54,184,0,35,62,4,0,31,66,128,255,216,116,61,54, -184,0,3,56,31,66,128,255,204,116,61,119,17,1,97,114,223,37,35,151, -13,0,224,145,154,37,61,55,241,0,190,255,192,185,10,64,61,111,237,11, -131,66,237,65,242,21,36,103,177,133,65,98,100,103,177,133,204,94,15,0, -111,90,218,5,34,6,192,252,132,0,181,5,37,22,48,131,125,71,237,11, -29,63,40,1,2,48,128,255,198,152,27,80,170,0,133,21,22,48,190,255, -106,139,224,81,146,13,38,6,180,252,132,0,32,62,6,1,0,66,190,255, -72,124,27,80,170,0,76,6,255,243,130,7,97,0,6,232,0,74,9,16, -252,23,72,2,2,120,221,121,79,7,4,0,2,128,221,129,112,79,1,0, -2,112,221,113,110,7,9,0,2,104,221,105,2,96,221,97,108,7,13,0, -109,7,17,0,0,98,12,88,194,90,2,80,221,81,42,142,60,0,203,137, -113,7,1,0,2,120,221,121,47,110,28,0,205,89,107,7,1,0,65,98, -104,98,230,237,65,74,98,74,182,213,1,98,125,103,9,0,99,7,1,0, -61,54,184,0,3,56,31,66,128,255,218,115,1,90,99,95,1,0,61,54, -184,0,3,56,31,66,128,255,200,115,66,6,127,0,132,7,225,48,6,208, -7,232,252,239,72,2,218,233,61,127,13,0,224,121,178,13,197,5,2,50, -128,255,230,106,61,111,13,0,45,111,0,0,224,105,138,253,58,54,76,1, -0,58,3,64,128,255,202,107,224,81,146,13,38,6,204,252,132,0,32,62, -205,9,0,66,190,255,102,123,61,23,13,0,125,7,17,0,224,17,130,13, -98,7,0,0,2,48,190,255,142,130,125,7,13,0,0,218,27,224,194,226, -61,94,60,0,220,89,43,143,1,0,224,137,226,13,61,134,60,0,220,129, -48,55,1,0,1,58,128,255,144,19,61,118,60,0,220,113,110,7,1,0, -61,102,28,0,220,97,44,87,1,0,224,81,210,13,61,142,28,0,220,137, -49,55,1,0,190,255,222,197,61,118,28,0,206,225,124,7,1,0,65,218, -104,218,214,213,35,63,1,0,58,54,76,1,35,70,4,0,128,255,50,107, -68,6,255,48,132,7,225,0,6,224,0,234,0,18,2,136,252,143,72,2, -220,137,17,87,4,0,224,81,242,5,98,82,210,5,102,82,178,5,103,82, -170,5,65,234,65,18,98,18,246,237,98,234,190,29,60,54,184,0,35,62, -4,0,31,66,128,255,140,117,35,95,5,0,98,90,145,13,38,6,220,252, -132,0,32,62,44,10,0,66,190,255,134,122,35,87,5,0,252,87,72,2, -220,81,74,7,4,0,98,234,246,205,60,54,184,0,3,56,0,66,128,255, -86,117,224,81,146,253,68,6,255,0,136,7,225,48,6,232,58,6,132,215, -255,255,26,48,31,58,190,255,126,241,224,81,186,253,29,143,72,1,97,138, -170,101,29,135,71,1,97,130,234,93,60,6,236,252,132,0,32,223,37,183, -93,7,71,1,27,48,0,58,3,64,128,255,112,106,224,81,242,5,28,48, -32,62,116,10,0,66,190,255,16,122,61,126,76,1,239,217,210,13,61,54, -76,1,128,255,218,107,224,81,242,5,28,48,32,62,122,10,0,66,190,255, -240,121,26,48,190,255,248,136,224,81,146,13,38,6,252,252,132,0,32,62, -6,1,0,66,190,255,214,121,99,239,9,0,1,18,67,23,12,0,35,62, -8,0,38,6,188,136,145,0,31,66,128,255,208,113,224,81,242,5,28,48, -32,62,140,10,0,66,190,255,172,121,32,54,236,176,32,62,32,0,0,66, -190,255,18,178,224,81,242,5,28,48,32,62,144,10,0,66,190,255,142,121, -35,63,1,0,27,48,35,70,4,0,128,255,208,105,245,13,26,48,190,255, -134,136,224,81,162,13,38,6,252,252,132,0,32,62,6,1,0,66,190,255, -100,121,224,81,72,6,255,48,128,7,225,16,6,232,29,223,72,1,61,55, -241,0,93,7,72,1,224,49,130,61,190,255,126,240,10,224,29,63,4,1, -28,48,31,66,128,255,222,17,61,23,241,0,2,23,7,0,123,18,162,29, -119,18,130,21,2,6,33,0,210,5,2,6,81,0,162,29,133,37,28,64, -32,54,59,0,37,62,56,131,190,255,192,121,133,29,28,64,32,54,60,0, -37,62,56,131,190,255,176,121,133,21,28,64,32,54,61,0,37,62,56,131, -190,255,160,121,133,13,28,64,32,54,62,0,37,62,56,131,190,255,144,121, -0,226,29,48,28,56,191,255,36,253,65,226,98,226,166,253,29,135,73,1, -60,6,8,253,132,0,97,130,250,13,61,54,184,0,128,255,234,111,224,81, -242,5,28,48,32,62,238,10,0,66,190,255,164,120,93,7,73,1,97,218, -170,29,61,54,76,1,128,255,110,106,224,81,242,5,28,48,32,62,246,10, -0,66,190,255,132,120,61,54,76,1,128,255,78,104,224,81,130,13,28,48, -32,62,249,10,0,66,190,255,108,120,224,81,64,6,255,16,128,7,225,0, -6,232,7,224,224,233,178,45,49,6,96,126,133,0,125,143,241,11,191,255, -242,254,229,87,64,0,224,7,96,1,29,135,70,1,10,248,97,130,138,13, -93,7,70,1,36,127,189,133,95,122,100,127,189,133,255,47,32,0,61,55, -241,0,190,255,90,239,10,56,61,70,40,1,38,6,24,253,132,0,128,255, -110,148,129,226,201,5,29,48,128,255,132,142,64,6,255,0,100,7,189,133, -32,142,200,0,100,7,185,133,68,143,4,140,68,143,5,140,100,7,13,140, -100,7,17,140,2,122,68,127,7,140,68,127,8,140,0,82,32,126,60,0, -49,6,128,81,1,0,7,98,10,88,236,95,128,106,237,143,32,2,79,136, -45,6,24,17,148,0,10,16,194,18,2,112,205,113,110,143,0,0,44,6, -52,17,148,0,204,17,98,143,0,0,32,94,160,5,110,95,2,0,98,95, -2,0,65,82,103,82,214,221,127,0,136,7,225,112,36,143,197,133,224,137, -178,5,128,7,62,2,38,6,132,215,255,255,31,58,190,255,166,238,224,81, -154,253,99,7,4,0,0,234,0,18,29,6,240,255,129,13,253,118,40,0, -32,102,160,180,204,113,46,23,17,0,2,216,224,217,130,37,0,226,59,23, -105,0,28,64,2,22,136,0,34,87,0,0,35,54,8,0,219,81,10,56, -34,95,5,0,63,6,216,142,129,0,107,0,35,87,9,0,35,135,4,0, -99,87,13,0,10,129,99,135,4,0,65,226,28,6,240,255,182,229,65,234, -29,6,240,255,134,213,38,6,132,215,255,255,190,255,12,134,224,81,146,13, -38,6,48,253,132,0,32,62,6,1,0,66,190,255,234,118,3,239,4,0, -4,23,7,140,29,224,29,216,220,234,159,234,221,218,159,218,28,208,219,226, -159,226,218,210,159,210,224,17,130,109,224,233,218,5,224,217,186,5,224,209, -162,101,98,18,146,13,38,6,24,17,148,0,7,58,128,255,182,1,224,81, -162,53,224,225,194,13,0,226,28,48,0,58,27,66,128,255,56,15,65,226, -28,6,240,255,134,253,0,226,1,106,100,111,13,140,0,202,224,209,178,13, -25,48,1,58,32,70,175,255,128,255,22,15,36,103,189,133,224,97,191,61, -224,217,242,5,25,48,1,58,32,70,223,255,128,255,254,14,224,233,226,5, -25,48,1,58,23,66,128,255,240,14,65,202,25,6,240,255,166,229,245,37, -36,95,189,133,224,89,151,37,36,87,13,140,97,82,218,29,0,202,224,217, -242,5,25,48,0,58,32,70,223,255,128,255,196,14,224,209,242,5,25,48, -0,58,32,70,175,255,128,255,180,14,224,233,226,5,25,48,0,58,23,66, -128,255,166,14,65,202,25,6,240,255,230,229,100,7,13,140,4,23,8,140, -224,17,242,85,98,18,146,13,38,6,52,17,148,0,7,58,128,255,236,0, -224,81,242,53,1,122,100,127,17,140,224,225,194,13,0,234,29,48,1,58, -27,66,128,255,104,14,65,234,29,6,240,255,134,253,213,61,35,54,3,0, -35,62,12,0,128,255,142,47,36,119,189,133,224,113,186,53,4,111,180,133, -3,23,3,0,226,105,210,45,68,23,180,133,0,234,253,86,40,0,32,134, -160,180,208,81,170,127,35,0,224,121,226,5,29,48,27,58,31,66,128,255, -36,14,65,234,29,6,240,255,246,237,245,21,224,225,210,21,36,119,189,133, -224,113,247,13,36,111,17,140,97,106,186,13,0,234,29,48,0,58,27,66, -128,255,242,13,65,234,29,6,240,255,134,253,100,7,17,140,72,6,255,112, -128,7,33,0,196,239,144,140,226,29,196,231,144,140,178,29,4,23,7,140, -98,18,146,13,97,18,242,5,4,23,8,140,98,18,178,5,97,18,250,13, -36,111,173,172,224,105,202,5,1,50,128,255,170,46,32,54,236,176,128,62, -0,128,0,66,190,255,114,173,64,6,63,0,132,7,225,0,6,232,7,224, -35,54,3,0,35,62,4,0,128,255,194,46,10,16,32,142,60,0,241,23, -194,2,0,90,213,29,61,111,2,0,61,87,0,0,13,120,202,121,32,118, -96,39,238,127,194,98,68,234,224,105,242,13,236,81,251,5,234,17,179,13, -236,17,153,13,1,82,181,13,234,17,185,5,236,17,185,5,1,82,213,5, -65,90,252,89,182,229,0,82,68,6,255,0,128,7,33,0,229,87,64,0, -224,7,96,1,10,248,1,138,36,135,201,133,100,143,197,133,65,130,100,135, -201,133,255,47,32,0,128,255,52,0,64,6,63,0,128,7,65,0,229,87, -64,0,224,7,96,1,36,143,201,133,10,232,95,138,100,143,201,133,224,137, -223,5,100,7,201,133,100,7,197,133,253,47,32,0,64,6,95,0,128,7, -97,0,0,234,29,48,128,255,236,12,65,234,29,6,240,255,166,253,64,6, -127,0,128,7,97,0,6,232,224,233,138,13,32,54,244,11,128,255,180,138, -10,232,224,233,178,29,29,48,191,255,142,220,49,6,176,126,133,0,125,143, -241,11,64,22,133,0,36,135,185,133,34,62,60,253,16,134,65,0,93,135, -40,1,32,126,45,0,93,127,41,1,61,54,42,1,128,255,146,175,29,80, -64,6,127,0,130,7,225,240,6,216,7,192,8,208,0,202,26,232,252,239, -72,2,219,233,0,226,213,21,56,55,18,0,28,56,194,58,61,94,60,0, -203,57,0,66,128,255,26,12,224,81,138,13,27,48,26,56,191,255,242,247, -32,206,112,1,229,5,65,226,61,87,17,0,234,225,150,237,99,215,1,0, -59,54,184,0,3,56,31,66,128,255,146,107,25,80,66,6,255,240,128,7, -97,0,6,232,224,233,138,13,32,54,244,11,128,255,4,138,10,232,224,233, -178,29,29,48,191,255,222,219,49,6,0,127,133,0,125,143,241,11,64,22, -133,0,36,135,185,133,34,62,76,253,16,134,65,0,93,135,40,1,32,126, -45,0,93,127,41,1,61,54,42,1,128,255,226,174,29,80,64,6,127,0, -128,7,225,0,167,0,136,0,6,232,7,224,191,255,118,225,10,16,101,226, -186,13,61,119,241,0,14,119,7,0,119,114,218,5,61,111,37,1,125,111, -29,1,2,80,64,6,255,0,128,7,97,0,6,232,224,233,138,13,32,54, -244,11,128,255,130,137,10,232,224,233,146,29,29,48,191,255,92,219,49,6, -80,127,133,0,125,143,241,11,36,135,185,133,37,62,64,131,16,134,65,0, -93,135,40,1,32,126,45,0,93,127,41,1,61,54,42,1,128,255,100,174, -29,80,64,6,127,0,130,7,33,0,38,54,184,0,99,71,1,0,3,56, -31,66,128,255,168,106,66,6,63,0,180,7,225,243,8,224,252,231,72,2, -6,176,214,225,54,54,184,0,7,232,8,56,128,255,38,11,125,87,1,0, -61,151,18,0,124,87,13,0,99,151,17,0,61,199,9,0,61,207,13,0, -54,223,241,0,99,151,21,0,59,223,14,0,11,106,125,223,18,0,125,111, -25,0,242,223,192,2,27,48,194,50,244,55,66,2,128,255,154,136,10,208, -125,215,5,0,61,63,13,0,61,71,18,0,61,55,9,0,8,72,191,74, -128,255,230,188,125,87,9,0,125,95,13,0,99,7,1,0,224,209,226,109, -0,186,197,101,23,96,194,98,60,134,60,0,208,97,44,55,1,0,35,79, -21,0,0,58,35,70,24,0,190,255,12,121,99,87,5,0,100,82,151,13, -38,6,92,253,132,0,32,62,78,14,0,66,190,255,214,113,99,215,9,0, -99,7,13,0,149,29,35,55,9,0,35,71,5,0,35,62,24,0,244,71, -66,2,190,255,66,108,35,95,5,0,35,151,9,0,244,95,64,2,203,145, -99,151,9,0,35,151,13,0,65,146,99,151,13,0,35,151,13,0,251,145, -214,229,54,95,241,0,29,56,43,23,105,0,63,6,144,148,129,0,2,22, -16,0,34,87,0,0,34,127,5,0,203,81,10,48,111,0,61,87,18,0, -61,103,9,0,10,120,191,122,204,81,125,87,9,0,61,111,13,0,225,135, -0,0,208,121,205,121,125,127,13,0,35,151,1,0,65,186,65,146,99,151, -1,0,60,119,17,0,238,185,166,157,26,48,128,255,124,135,245,5,61,111, -1,0,32,102,112,1,109,103,12,0,61,231,1,0,229,87,64,0,224,7, -96,1,35,143,1,0,60,255,0,0,10,216,209,249,124,255,0,0,251,47, -32,0,224,249,138,13,28,48,60,95,5,0,63,6,12,149,129,0,107,0, -35,151,17,0,125,207,13,0,125,151,18,0,125,199,9,0,116,6,255,243, -128,7,97,0,6,232,224,233,138,13,32,54,244,11,128,255,110,135,10,232, -224,233,178,29,29,48,191,255,72,217,49,6,160,127,133,0,125,143,241,11, -64,22,133,0,36,135,185,133,34,62,108,253,16,134,65,0,93,135,40,1, -32,126,45,0,93,127,41,1,61,54,42,1,128,255,76,172,29,80,64,6, -127,0,168,7,225,243,8,224,252,231,72,2,6,176,214,225,7,232,125,31, -5,0,54,54,184,0,8,56,128,255,34,9,125,87,1,0,12,98,124,87, -13,0,125,103,25,0,61,223,13,0,61,215,9,0,0,186,0,202,245,61, -25,192,194,194,60,86,60,0,216,81,42,55,1,0,61,71,5,0,61,79, -18,0,0,58,190,255,88,119,100,82,151,13,38,6,120,253,132,0,32,62, -202,14,0,66,190,255,38,112,54,95,241,0,60,86,28,0,43,23,105,0, -202,193,2,22,24,1,34,87,0,0,29,56,203,81,10,48,1,66,34,119, -5,0,63,6,6,150,129,0,110,0,120,87,1,0,65,186,61,103,9,0, -61,111,13,0,12,86,1,0,125,87,9,0,225,135,0,0,205,129,125,135, -13,0,65,202,60,111,17,0,237,201,246,189,125,215,9,0,125,223,13,0, -61,239,1,0,229,87,64,0,224,7,96,1,61,255,0,0,10,224,215,249, -125,255,0,0,252,47,32,0,224,249,138,13,29,48,61,103,5,0,63,6, -102,150,129,0,108,0,104,6,255,243,168,7,225,48,6,216,8,208,26,224, -252,231,72,2,219,225,7,232,125,31,5,0,190,255,164,118,106,7,9,0, -32,118,232,3,106,119,21,0,45,6,228,60,1,0,106,111,5,0,106,215, -33,0,59,102,184,0,106,103,29,0,0,218,125,87,1,0,0,210,124,87, -13,0,133,45,27,80,194,82,60,126,60,0,207,81,42,55,1,0,61,71, -5,0,61,79,18,0,0,58,190,255,80,118,100,82,151,13,38,6,136,253, -132,0,32,62,13,15,0,66,190,255,30,111,32,110,16,0,125,111,25,0, -221,7,22,0,29,64,12,50,12,58,190,255,30,118,65,210,221,135,22,0, -65,218,60,103,17,0,236,217,230,213,61,239,1,0,229,87,64,0,224,7, -96,1,61,255,0,0,10,224,218,249,125,255,0,0,252,47,32,0,224,249, -138,13,29,48,61,95,5,0,63,6,56,151,129,0,107,0,104,6,255,48, -128,7,225,16,6,232,61,23,241,11,7,224,2,22,56,0,34,87,0,0, -34,143,5,0,221,81,10,48,63,6,96,151,129,0,113,0,10,216,29,48, -28,56,191,255,168,225,10,224,103,226,250,21,27,6,143,254,202,21,23,114, -93,119,4,1,38,6,152,253,132,0,128,255,218,138,61,55,241,0,190,255, -174,229,10,64,32,54,42,0,37,62,72,131,190,255,28,111,28,80,64,6, -255,16,128,7,225,16,167,0,38,231,9,1,6,232,164,71,5,140,191,255, -172,220,10,216,97,226,234,13,61,127,9,1,224,121,170,13,164,111,5,140, -237,118,50,0,136,114,14,54,1,0,128,255,128,93,27,80,64,6,255,16, -128,7,97,0,6,232,224,233,138,13,32,54,244,11,128,255,178,132,10,232, -224,233,178,29,29,48,191,255,140,214,49,6,240,127,133,0,125,143,241,11, -64,22,133,0,36,135,185,133,34,62,176,253,16,134,65,0,93,135,40,1, -32,126,45,0,93,127,41,1,61,54,42,1,128,255,144,169,29,80,64,6, -127,0,130,7,33,0,38,54,184,0,99,71,1,0,3,56,31,66,128,255, -212,101,0,82,66,6,63,0,130,7,33,0,38,54,184,0,99,71,1,0, -3,56,31,66,128,255,186,101,66,6,63,0,128,7,225,241,8,224,252,231, -72,2,6,200,217,225,57,54,184,0,7,232,8,56,128,255,56,6,57,71, -241,0,125,87,1,0,40,71,14,0,124,87,13,0,125,71,18,0,61,215, -9,0,0,194,61,223,13,0,26,48,27,56,8,72,191,74,128,255,38,184, -125,87,9,0,125,95,13,0,0,186,149,29,57,55,241,0,29,56,128,255, -192,5,61,87,18,0,61,103,9,0,10,120,191,122,204,81,125,87,9,0, -61,111,13,0,225,135,0,0,208,121,205,121,125,127,13,0,65,194,65,186, -60,103,17,0,236,185,214,229,61,231,1,0,229,87,64,0,224,7,96,1, -60,255,0,0,10,200,216,249,124,255,0,0,249,47,32,0,224,249,138,13, -28,48,60,95,5,0,63,6,22,153,129,0,107,0,125,223,13,0,125,215, -9,0,64,6,255,241,128,7,225,16,167,0,38,231,9,1,6,232,164,71, -5,140,191,255,44,219,10,216,97,226,234,13,61,127,9,1,224,121,170,13, -164,111,5,140,237,118,50,0,136,114,14,54,1,0,128,255,0,92,27,80, -64,6,255,16,132,7,225,16,6,232,61,23,241,11,7,224,2,22,56,0, -34,87,0,0,34,135,5,0,221,81,10,48,63,6,128,153,129,0,112,0, -10,216,29,48,28,56,191,255,136,223,10,224,103,226,234,85,27,6,254,253, -250,37,61,95,241,0,1,66,43,23,105,0,0,74,2,22,232,0,34,87, -0,0,34,111,5,0,203,81,10,48,63,6,186,153,129,0,109,0,61,55, -241,0,3,56,128,255,214,4,35,95,5,0,35,87,1,0,235,1,218,5, -234,1,186,5,6,226,165,53,29,48,191,255,232,239,0,226,213,45,38,6, -132,215,255,255,31,58,190,255,70,227,224,81,154,253,61,95,241,0,4,58, -43,23,105,0,27,66,2,22,56,1,34,87,0,0,34,103,5,0,203,81, -10,48,63,6,22,154,129,0,108,0,38,6,132,215,255,255,190,255,240,122, -224,81,146,13,38,6,188,253,132,0,32,62,6,1,0,66,190,255,206,107, -31,90,93,95,4,1,28,80,68,6,255,16,128,7,97,0,6,232,224,233, -138,13,32,54,244,11,128,255,78,130,10,232,224,233,178,29,29,48,191,255, -40,212,49,6,64,128,133,0,125,143,241,11,64,22,133,0,36,135,185,133, -34,62,200,253,16,134,65,0,93,135,40,1,32,126,45,0,93,127,41,1, -61,54,42,1,128,255,44,167,29,80,64,6,127,0,130,7,225,0,6,224, -8,232,29,16,252,23,72,2,220,17,97,234,138,13,6,122,66,127,4,0, -98,7,17,0,0,82,213,29,1,114,39,55,18,0,98,119,17,0,34,62, -60,0,0,66,128,255,170,3,224,81,138,13,28,48,29,56,191,255,130,239, -32,86,112,1,165,13,99,239,1,0,60,54,184,0,3,56,31,66,128,255, -44,99,0,82,66,6,255,0,128,7,225,48,8,232,252,239,72,2,6,216, -219,233,59,54,184,0,7,224,8,56,128,255,168,3,124,87,1,0,59,215, -241,0,125,87,13,0,58,215,14,0,12,114,124,119,25,0,32,54,0,5, -128,255,60,129,124,87,5,0,10,64,224,65,210,37,61,55,61,0,26,72, -0,58,190,255,226,113,60,111,1,0,59,95,241,0,1,98,43,23,105,0, -109,103,0,0,2,22,8,1,34,87,0,0,28,56,203,81,10,48,1,66, -34,95,5,0,63,6,108,155,129,0,107,0,125,87,29,0,60,55,5,0, -128,255,208,128,245,5,60,87,1,0,32,142,112,1,106,143,12,0,1,130, -125,135,9,0,64,6,255,48,128,7,225,48,8,224,252,231,72,2,6,216, -219,225,59,54,184,0,7,232,8,56,128,255,8,3,125,87,1,0,59,215, -241,0,124,87,13,0,58,215,14,0,11,114,125,119,25,0,32,54,0,5, -128,255,156,128,125,87,5,0,10,64,224,65,162,37,60,55,61,0,26,72, -0,58,190,255,66,113,61,111,1,0,59,95,241,0,1,98,43,23,105,0, -109,103,0,0,2,22,16,1,34,87,0,0,29,56,203,81,10,48,34,95, -5,0,63,6,10,156,129,0,107,0,61,55,5,0,128,255,54,128,245,5, -61,87,1,0,32,142,112,1,106,143,12,0,64,6,255,48,130,7,225,0, -6,224,60,23,241,11,3,64,2,22,72,0,34,87,0,0,34,143,5,0, -220,81,10,48,63,6,72,156,129,0,113,0,10,16,103,18,154,29,0,234, -1,122,35,103,1,0,253,127,192,0,76,121,146,13,29,48,0,58,191,255, -132,96,224,81,178,5,7,82,165,13,65,234,29,6,240,255,230,237,28,48, -191,255,74,237,0,18,2,80,66,6,255,0,134,7,225,48,6,232,7,208, -224,233,178,125,49,6,64,128,133,0,125,143,241,11,191,255,10,240,61,54, -76,1,10,58,3,64,128,255,168,89,224,81,146,13,38,6,212,253,132,0, -32,62,246,17,0,66,190,255,68,105,31,50,190,255,160,105,61,54,76,1, -0,58,35,70,4,0,128,255,128,89,61,87,241,0,10,135,7,0,127,130, -250,61,42,23,105,0,63,6,250,156,129,0,2,22,176,0,34,95,0,0, -34,127,5,0,202,89,11,48,111,0,10,48,244,55,66,2,128,255,96,127, -10,224,224,225,162,37,61,95,241,0,28,56,43,23,105,0,63,6,42,157, -129,0,2,22,184,0,34,55,0,0,34,87,5,0,203,49,106,0,28,48, -128,255,82,1,10,216,28,48,128,255,16,127,224,217,146,13,61,55,241,0, -190,255,248,223,10,48,27,56,128,255,118,1,32,54,236,176,32,62,64,0, -0,66,190,255,28,161,125,7,241,0,190,255,250,104,35,63,1,0,61,54, -76,1,35,70,8,0,128,255,224,88,29,48,0,58,191,255,38,240,129,210, -201,5,29,48,128,255,252,126,70,6,255,48,128,7,33,0,191,255,52,243, -64,6,63,0,128,7,225,0,6,232,7,224,224,233,226,13,48,6,176,126, -133,0,125,135,241,11,0,58,191,255,240,239,129,226,201,5,29,48,128,255, -198,126,64,6,255,0,128,7,225,0,6,232,7,224,224,233,226,13,48,6, -0,127,133,0,125,135,241,11,0,58,191,255,198,239,129,226,201,5,29,48, -128,255,156,126,64,6,255,0,128,7,225,0,6,232,7,224,224,233,226,13, -48,6,80,127,133,0,125,135,241,11,0,58,191,255,156,239,129,226,201,5, -29,48,128,255,114,126,64,6,255,0,128,7,225,0,6,232,7,224,224,233, -226,13,48,6,160,127,133,0,125,135,241,11,0,58,191,255,114,239,129,226, -201,5,29,48,128,255,72,126,64,6,255,0,128,7,225,0,6,232,7,224, -224,233,226,13,48,6,240,127,133,0,125,135,241,11,0,58,191,255,72,239, -129,226,201,5,29,48,128,255,30,126,64,6,255,0,33,6,182,42,0,0, -97,0,33,6,182,40,0,0,97,0,33,6,244,107,0,0,97,0,33,6, -108,109,0,0,97,0,33,6,134,115,0,0,97,0,33,6,176,115,0,0, -97,0,33,6,182,130,0,0,97,0,33,6,16,172,1,0,97,0,33,6, -92,146,1,0,97,0,33,6,180,61,1,0,97,0,33,6,170,172,1,0, -97,0,33,6,82,140,1,0,97,0,128,7,225,16,37,54,81,131,128,255, -142,131,128,54,255,255,128,255,100,1,4,143,80,139,99,138,226,63,0,0, -128,54,255,255,128,255,22,5,10,232,128,255,148,12,0,218,190,255,48,110, -106,7,9,0,47,6,36,64,1,0,106,127,5,0,46,6,124,136,141,0, -106,119,29,0,32,110,32,3,106,239,33,0,0,226,106,111,21,0,10,232, -221,7,3,0,221,31,3,0,28,48,190,255,210,217,28,48,128,255,102,0, -29,48,28,56,190,255,188,218,202,217,65,226,28,6,240,255,166,245,29,48, -27,56,190,255,186,180,29,48,190,255,248,221,10,224,125,7,0,0,29,48, -190,255,224,109,224,225,242,5,28,56,38,6,64,254,132,0,128,255,240,130, -224,217,194,13,27,136,191,138,159,138,27,56,209,57,161,58,38,6,116,254, -132,0,128,255,214,130,190,255,122,230,128,255,48,4,64,6,255,16,132,7, -225,48,6,224,0,18,28,6,240,255,129,13,252,126,40,0,32,110,160,180, -205,121,47,23,17,0,2,208,224,209,130,69,0,234,165,61,58,23,105,0, -29,64,2,22,136,0,34,87,0,0,35,54,4,0,218,81,10,56,34,103, -5,0,63,6,222,159,129,0,108,0,35,95,5,0,99,95,1,0,195,199, -0,0,146,37,253,222,20,0,48,6,80,17,148,0,208,217,155,127,17,0, -224,121,242,21,28,56,29,64,38,6,188,254,132,0,128,255,82,130,28,48, -0,58,190,255,70,198,91,7,16,0,28,64,29,72,32,54,252,0,39,6, -168,254,132,0,190,255,140,102,65,234,4,119,205,131,238,233,198,197,68,6, -255,48,130,7,225,243,198,206,255,255,196,223,144,140,130,13,38,6,0,255, -132,0,128,255,14,130,128,7,94,1,38,6,48,255,132,0,128,255,0,130, -54,6,252,132,141,0,0,234,1,138,253,143,192,0,89,137,162,13,29,48, -248,55,68,2,214,49,191,255,102,33,29,48,128,255,210,2,65,234,29,6, -240,255,246,237,36,95,33,175,25,232,100,95,21,140,25,192,128,190,255,255, -55,80,74,233,0,226,1,218,252,223,192,0,27,128,89,129,178,85,28,208, -248,215,68,2,214,209,26,48,191,255,88,37,27,104,87,105,146,77,27,96, -88,97,194,29,26,48,191,255,180,33,224,81,178,5,27,233,245,61,26,87, -52,0,10,6,217,255,170,61,32,54,96,2,252,55,32,2,50,6,204,248, -140,0,210,49,190,255,0,182,224,81,226,45,27,233,59,193,181,45,32,214, -96,2,252,215,32,2,50,6,204,248,140,0,210,209,26,48,190,255,98,181, -224,81,178,5,27,233,197,29,252,22,20,0,47,6,80,17,148,0,207,17, -2,119,0,0,101,114,162,21,26,87,92,2,97,82,177,5,226,5,149,13, -1,106,66,111,0,0,133,13,3,106,66,111,0,0,197,5,2,90,66,95, -0,0,65,226,28,6,240,255,214,165,1,50,128,255,246,83,224,233,226,5, -128,255,144,1,10,184,224,185,138,157,0,226,181,29,221,86,1,0,210,21, -216,142,1,0,130,13,28,48,248,55,68,2,214,49,191,255,126,33,181,13, -32,54,96,2,252,55,32,2,50,6,204,248,140,0,210,49,190,255,94,186, -129,234,129,194,65,226,224,233,218,229,25,48,128,255,8,0,66,6,255,243, -128,7,225,0,6,224,0,234,1,138,253,143,192,0,92,137,194,5,29,48, -191,255,54,29,65,234,29,6,240,255,214,245,64,6,255,0,128,7,225,48, -6,224,0,234,1,138,253,143,192,0,92,137,146,29,29,48,191,255,94,25, -10,6,240,255,185,21,29,48,191,255,56,25,224,81,226,13,253,22,20,0, -44,6,80,17,148,0,204,17,2,95,0,0,101,90,202,5,3,82,66,87, -0,0,65,234,29,6,224,255,134,229,220,54,255,255,0,58,128,255,214,1, -10,208,0,218,190,255,244,106,106,7,9,0,48,6,36,64,1,0,106,135, -5,0,47,6,124,136,141,0,106,127,29,0,32,118,32,3,106,215,33,0, -10,224,106,119,21,0,0,234,220,7,3,0,220,31,3,0,133,37,218,110, -1,0,178,29,29,48,190,255,142,214,29,48,128,255,22,9,29,48,31,58, -190,255,174,201,29,48,191,255,20,253,28,48,29,56,190,255,106,215,202,217, -38,6,92,255,132,0,128,255,198,127,29,48,128,255,222,8,65,234,129,210, -224,209,138,229,28,48,27,56,190,255,88,177,28,48,190,255,150,218,10,232, -124,7,0,0,28,48,190,255,126,106,224,233,242,5,29,56,38,6,156,255, -132,0,128,255,142,127,224,217,194,13,27,136,191,138,159,138,27,56,209,57, -161,58,38,6,108,255,132,0,128,255,116,127,128,255,210,0,64,6,255,48, -132,7,33,0,36,135,21,140,36,143,33,175,36,127,33,133,176,137,15,22, -84,11,177,17,188,5,0,82,181,21,99,23,1,0,38,6,124,136,141,0, -128,62,255,255,1,66,35,78,4,0,190,255,6,106,224,81,178,5,0,82, -181,5,35,87,5,0,68,6,63,0,128,7,97,0,0,234,29,48,128,255, -16,0,65,234,29,6,240,255,166,253,64,6,127,0,49,6,208,255,132,0, -49,127,1,0,3,30,236,255,99,127,1,0,49,119,5,0,99,119,5,0, -49,111,9,0,99,111,9,0,49,103,13,0,99,103,13,0,47,6,80,17, -148,0,49,95,17,0,230,110,20,0,99,95,17,0,35,103,1,0,207,105, -109,103,1,0,35,95,5,0,109,95,5,0,35,87,9,0,109,87,9,0, -35,143,13,0,109,143,13,0,35,127,17,0,109,127,17,0,3,30,20,0, -127,0,128,7,225,0,61,6,80,17,148,0,0,226,61,23,13,0,224,17, -226,5,2,48,128,255,168,120,125,7,13,0,61,23,9,0,224,17,226,5, -2,48,128,255,150,120,125,7,9,0,65,226,29,238,20,0,28,6,240,255, -150,237,64,6,255,0,168,7,225,243,67,63,43,0,0,210,54,6,80,17, -148,0,22,232,6,192,38,6,252,255,132,0,128,255,68,126,0,226,128,7, -68,1,1,218,252,223,192,0,24,120,91,121,186,5,128,7,46,1,4,119, -205,133,130,114,169,21,29,23,0,0,224,17,226,13,38,6,44,0,133,0, -194,18,50,6,144,128,133,0,210,17,34,71,1,0,28,56,128,255,4,126, -29,23,0,0,97,18,250,45,15,114,67,119,61,0,32,110,31,0,67,111, -65,0,67,7,60,0,67,7,64,0,67,7,62,0,67,231,63,0,99,7, -69,0,28,48,191,255,96,22,99,87,73,0,31,18,132,103,205,133,224,97, -130,13,163,63,43,0,35,54,60,0,128,255,208,6,10,16,127,18,130,13, -5,82,93,87,0,0,1,138,226,143,192,0,17,209,59,120,79,193,245,77, -99,18,178,5,103,18,186,77,32,54,0,6,128,255,208,119,125,87,13,0, -224,81,154,13,38,6,108,0,133,0,32,62,224,2,0,66,190,255,26,97, -32,54,0,6,128,255,176,119,125,87,9,0,224,81,154,13,38,6,108,0, -133,0,32,62,226,2,0,66,190,255,250,96,32,222,96,2,252,223,32,2, -47,6,204,248,140,0,207,217,61,63,9,0,27,48,190,255,206,183,10,200, -61,63,13,0,27,48,190,255,120,184,10,16,224,201,186,5,224,17,194,13, -2,98,93,103,0,0,28,48,32,62,221,0,0,66,191,255,32,23,95,226, -133,13,59,95,53,0,3,82,125,95,5,0,93,87,0,0,65,226,29,238, -20,0,4,143,205,131,241,225,190,5,191,7,184,254,38,6,124,0,133,0, -128,255,232,124,22,232,0,218,128,7,216,1,1,130,251,135,192,0,24,112, -80,113,186,5,128,7,194,1,29,23,0,0,99,18,162,29,4,103,205,133, -131,98,177,5,128,7,174,1,224,17,186,5,128,7,166,1,38,6,44,0, -133,0,194,18,50,6,144,128,133,0,210,17,34,71,1,0,27,56,128,255, -154,124,128,7,136,1,27,48,24,56,128,255,140,2,10,16,224,17,194,5, -34,230,48,0,133,13,251,102,20,0,214,97,44,87,9,0,42,230,48,0, -27,48,128,255,124,1,10,200,25,48,35,62,44,0,128,255,196,1,25,143, -57,1,31,50,108,138,234,191,0,0,146,13,57,54,56,1,28,56,163,71, -43,0,128,255,124,5,10,48,127,50,138,117,224,185,178,101,35,63,45,0, -38,6,164,0,133,0,128,255,46,124,0,18,245,13,1,106,35,95,45,0, -226,111,192,0,77,89,242,5,226,142,20,0,7,122,214,137,81,127,0,0, -65,18,4,119,205,131,238,17,246,237,57,63,52,1,38,6,60,0,133,0, -128,255,248,123,57,230,56,1,0,186,133,61,28,87,2,0,28,79,1,0, -28,71,0,0,99,87,1,0,28,143,3,0,99,143,5,0,28,135,4,0, -99,135,9,0,28,127,5,0,99,127,13,0,60,119,6,0,209,114,177,114, -99,119,17,0,60,111,9,0,99,111,21,0,60,103,13,0,99,103,25,0, -60,23,16,0,99,23,29,0,28,23,18,0,99,23,33,0,28,23,19,0, -23,56,99,23,37,0,38,6,212,0,133,0,128,255,136,123,65,186,28,230, -20,0,57,95,52,1,235,185,230,197,245,29,4,87,205,133,131,82,185,29, -27,56,38,6,228,255,132,0,128,255,100,123,197,21,1,122,230,127,192,0, -15,209,249,63,49,1,128,255,144,4,224,81,162,13,38,6,108,0,133,0, -32,62,86,3,0,66,190,255,224,94,224,81,4,95,205,133,131,90,169,21, -29,23,0,0,224,17,226,13,38,6,44,0,133,0,194,18,50,6,144,128, -133,0,210,17,34,71,1,0,27,56,128,255,18,123,65,218,29,238,20,0, -4,103,205,131,236,217,190,5,191,7,36,254,128,255,66,4,26,81,104,6, -255,243,128,7,97,0,0,234,0,90,6,16,197,21,226,86,20,0,47,6, -80,17,148,0,207,81,10,119,0,0,100,114,154,13,42,103,13,0,44,87, -5,0,234,89,185,5,10,88,12,232,65,18,4,103,205,131,236,17,166,237, -224,89,154,13,38,6,100,1,133,0,32,62,140,3,0,66,190,255,74,94, -29,80,64,6,127,0,128,7,65,0,103,7,1,0,38,239,52,1,0,74, -38,22,56,1,0,82,197,13,2,143,0,0,224,137,218,5,31,130,66,135, -3,0,65,74,65,82,2,22,20,0,253,81,198,245,49,6,80,17,148,0, -0,66,149,45,17,127,0,0,100,122,170,37,0,82,38,22,56,1,149,21, -2,119,0,0,224,113,170,13,49,103,5,0,2,111,4,0,236,105,202,5, -66,71,3,0,95,74,65,82,2,22,20,0,253,81,246,237,5,90,81,95, -0,0,1,82,39,135,1,0,232,87,192,0,10,129,103,135,1,0,65,66, -17,142,20,0,4,127,205,131,239,65,214,213,224,73,226,87,0,0,64,6, -95,0,140,7,225,112,7,200,6,232,253,222,20,0,58,6,80,17,148,0, -27,16,218,17,34,87,9,0,0,226,42,78,48,0,41,135,1,0,42,70, -24,3,224,129,170,13,29,56,38,6,116,1,133,0,128,255,206,121,0,82, -128,7,216,2,29,56,128,7,4,1,2,127,0,0,99,122,170,125,1,114, -231,119,192,0,25,96,78,97,194,117,34,87,9,0,41,119,1,0,42,54, -48,0,38,95,1,0,42,254,24,3,235,113,250,29,41,143,5,0,38,87, -5,0,234,137,154,29,41,102,8,0,38,110,8,0,14,88,0,82,224,89, -194,13,65,98,12,135,255,255,65,106,13,127,255,255,16,80,175,81,186,5, -95,90,234,245,224,81,202,5,4,114,66,119,0,0,63,111,1,0,40,87, -1,0,237,81,234,29,40,95,5,0,63,103,5,0,236,89,138,29,40,102, -8,0,63,110,8,0,10,88,224,89,0,82,178,13,65,98,65,106,13,143, -255,255,12,87,255,255,177,81,186,5,95,90,250,245,224,81,202,5,4,130, -66,135,0,0,2,127,0,0,100,122,186,37,224,225,154,37,38,119,1,0, -63,87,1,0,234,113,234,21,38,118,8,0,63,126,8,0,10,88,224,89, -0,82,194,13,65,114,14,111,255,255,65,122,15,103,255,255,13,80,172,81, -186,5,95,90,234,245,224,81,226,5,34,231,9,0,1,90,66,95,16,0, -2,22,20,0,65,58,4,87,205,131,234,54,20,0,26,88,6,136,203,137, -241,17,185,5,191,7,238,254,224,225,130,109,29,56,60,70,24,3,60,78, -48,0,27,16,203,17,197,93,2,135,0,0,99,130,218,85,1,122,231,127, -192,0,25,104,79,105,242,77,34,103,9,0,40,119,1,0,44,102,24,3, -44,95,1,0,235,113,234,29,40,143,5,0,44,87,5,0,234,137,138,29, -40,110,8,0,72,98,14,88,0,82,224,89,194,13,65,106,13,135,255,255, -65,98,12,127,255,255,16,80,175,81,186,5,95,90,234,245,224,81,202,5, -4,114,66,119,0,0,34,111,9,0,41,119,1,0,45,110,48,0,45,103, -1,0,236,113,234,29,41,87,5,0,45,95,5,0,235,81,138,29,41,102, -8,0,72,106,14,88,0,82,224,89,194,13,65,98,12,143,255,255,65,106, -13,135,255,255,17,80,176,81,186,5,95,90,234,245,224,81,202,5,4,122, -66,127,0,0,2,22,20,0,65,58,6,112,218,113,238,17,161,165,0,18, -31,90,35,110,8,0,194,105,77,95,0,0,65,18,2,6,240,255,246,245, -181,101,253,222,20,0,26,200,217,217,27,135,0,0,100,130,170,93,4,127, -205,133,131,122,201,13,29,56,50,6,160,128,133,0,50,71,1,0,38,6, -160,1,133,0,128,255,148,119,155,103,17,0,224,97,242,5,29,56,38,6, -176,1,133,0,128,255,128,119,59,23,5,0,35,94,8,0,203,17,2,95, -0,0,127,90,202,5,66,239,0,0,213,53,32,134,96,2,253,135,32,2, -11,16,43,6,204,248,140,0,203,129,32,102,96,2,226,103,32,2,203,97, -44,95,73,0,48,87,73,0,235,81,233,5,29,56,10,120,2,72,11,80, -197,5,29,72,2,56,11,120,231,134,20,0,6,114,217,129,4,111,205,133, -80,119,0,0,131,106,249,13,50,6,168,128,133,0,50,71,1,0,99,127, -1,0,99,87,5,0,38,6,220,1,133,0,128,255,0,119,65,234,4,87, -205,131,234,233,182,157,28,80,76,6,255,112,6,88,33,6,240,138,1,0, -97,0,33,6,204,140,1,0,97,0,33,6,104,168,1,0,97,0,33,6, -248,166,1,0,97,0,33,6,142,139,1,0,97,0,33,6,180,167,1,0, -97,0,33,6,202,168,1,0,97,0,0,18,7,88,0,82,65,90,171,143, -255,255,209,17,130,0,65,82,10,6,0,254,134,253,2,80,127,0,230,143, -181,0,17,128,168,130,208,22,127,0,2,6,240,255,225,5,100,18,226,13, -104,18,202,21,181,13,2,6,240,255,162,13,2,6,224,255,146,13,2,6, -192,255,130,13,149,13,2,18,133,13,4,18,229,5,5,18,197,5,6,18, -165,5,0,18,2,80,127,0,38,143,4,0,0,18,131,138,201,13,1,18, -230,87,9,0,10,6,56,200,210,5,10,6,116,140,162,5,0,18,130,0, -2,80,138,0,127,0,128,7,225,0,6,232,61,143,2,2,0,226,209,134, -255,0,16,6,91,255,250,21,61,23,1,0,63,6,100,172,129,0,2,22, -16,0,34,87,0,0,34,111,5,0,221,81,10,48,109,0,29,48,10,56, -191,255,66,255,224,81,178,5,32,230,7,16,28,80,64,6,255,0,128,7, -225,0,6,232,61,23,1,0,0,226,2,22,16,0,34,87,0,0,34,143, -5,0,221,81,10,48,63,6,158,172,129,0,113,0,29,48,10,56,191,255, -8,255,224,81,178,5,32,230,7,16,28,80,64,6,255,0,128,7,33,0, -12,58,128,255,8,0,64,6,63,0,0,18,38,86,6,0,0,90,138,135, -1,0,231,129,138,13,170,127,5,0,138,23,7,0,200,18,207,17,229,5, -76,82,65,90,11,6,226,255,150,245,2,80,127,0,38,86,4,0,127,0, -38,86,4,0,127,0,128,7,33,0,38,6,16,2,133,0,128,255,68,7, -133,5,128,7,97,0,36,239,33,140,128,255,188,0,36,54,208,133,128,255, -152,7,100,7,241,133,68,7,224,133,128,255,58,12,213,21,64,86,0,0, -10,87,174,241,136,82,185,253,64,86,0,0,10,87,38,250,68,87,48,140, -64,86,0,0,202,191,174,241,4,55,48,140,128,255,104,7,36,135,241,133, -224,129,146,237,1,122,68,127,224,133,29,48,128,255,78,7,128,255,248,11, -128,255,122,28,64,6,127,0,128,7,225,0,7,224,6,56,4,23,224,133, -8,232,224,17,234,13,28,64,29,72,38,6,1,0,4,0,128,255,114,169, -28,48,29,56,128,255,130,6,29,16,213,21,99,18,186,5,0,18,149,21, -98,18,186,5,0,18,213,13,28,64,29,72,38,6,1,0,4,0,128,255, -72,169,28,48,29,56,128,255,102,1,10,16,2,80,64,6,255,0,128,7, -65,0,64,86,0,0,10,87,32,250,32,94,111,255,202,238,111,0,64,86, -0,0,74,239,32,250,0,18,65,18,2,6,156,255,214,253,64,86,0,0, -43,6,144,0,0,0,74,95,32,250,64,86,0,0,43,6,162,0,0,0, -106,95,34,250,64,86,0,0,43,6,242,0,0,0,74,95,32,250,64,6, -95,0,184,7,33,0,4,23,80,139,97,18,162,29,100,18,130,29,36,23, -157,172,36,126,156,140,226,121,171,21,36,118,156,140,14,86,0,32,234,17, -201,13,36,95,161,172,36,110,156,140,235,105,235,5,234,89,201,5,66,7, -0,0,181,101,36,102,156,140,100,103,157,172,38,6,96,2,133,0,128,255, -218,5,35,54,80,0,39,6,170,170,102,102,191,255,242,104,35,54,80,0, -191,255,128,109,224,81,242,29,36,62,156,140,35,54,80,0,32,70,0,32, -0,74,191,255,216,108,224,81,202,21,36,86,156,140,10,86,255,31,229,5, -36,143,157,172,65,138,100,143,157,172,36,23,157,172,2,135,0,0,224,129, -178,13,234,17,193,245,133,13,36,54,156,140,0,58,32,70,0,32,190,255, -20,83,36,71,157,172,36,118,156,140,100,71,161,172,3,48,174,65,39,6, -136,2,133,0,128,255,18,126,3,16,36,110,156,140,13,110,0,32,149,21, -36,103,157,172,65,98,100,103,157,172,76,87,255,255,36,95,157,172,237,89, -209,5,36,86,156,140,100,87,157,172,65,18,2,87,0,0,224,81,218,237, -120,6,63,0,128,7,225,240,6,224,7,232,29,216,36,142,156,140,17,198, -0,32,165,69,36,207,33,175,229,87,64,0,224,7,96,1,10,208,24,96, -10,106,13,138,36,87,157,172,10,22,1,0,236,17,177,5,36,22,156,140, -36,135,161,172,240,17,178,29,28,95,0,0,106,90,138,21,74,143,0,0, -66,111,0,0,65,18,236,17,177,5,36,22,156,140,36,119,161,172,238,17, -162,13,65,218,181,5,74,95,0,0,100,23,157,172,65,226,95,234,186,221, -250,47,32,0,128,255,90,0,134,210,225,13,36,95,33,175,185,89,11,6, -190,255,233,5,36,87,157,172,100,87,161,172,181,5,224,233,234,189,36,143, -157,172,27,80,81,7,0,0,189,81,64,6,255,240,128,7,33,0,64,86, -0,0,202,191,146,241,36,23,233,133,36,143,157,172,100,23,161,172,68,7, -236,133,241,17,178,5,128,255,8,0,64,6,63,0,128,7,33,0,132,143, -237,133,224,137,250,101,63,6,64,13,3,0,64,86,0,0,10,87,36,250, -136,82,185,5,95,250,154,253,224,249,162,93,36,134,156,140,36,127,161,172, -16,94,0,32,235,121,209,5,36,118,156,140,100,119,161,172,36,87,161,172, -36,23,157,172,234,17,169,37,36,110,156,140,100,111,233,133,11,16,170,17, -97,18,218,29,36,103,161,172,65,98,100,103,161,172,12,55,255,255,128,255, -18,3,64,86,0,0,10,87,36,250,136,82,177,253,36,23,157,172,36,86, -156,140,100,23,233,133,100,87,161,172,170,17,197,5,100,23,233,133,170,17, -97,18,250,21,36,87,161,172,65,82,100,87,161,172,10,55,255,255,128,255, -214,2,36,126,156,140,36,119,161,172,15,134,0,32,240,113,145,21,36,110, -156,140,100,111,161,172,197,13,224,17,162,13,1,98,68,103,236,133,36,55, -161,172,2,56,199,0,128,255,254,8,64,6,63,0,128,7,33,0,31,250, -229,87,64,0,134,82,129,13,132,143,237,133,224,137,162,29,95,250,186,253, -245,21,132,135,237,133,224,129,178,21,64,86,0,0,10,87,224,240,136,82, -177,5,95,250,154,253,36,127,233,133,68,7,236,133,100,127,161,172,64,86, -0,0,202,191,146,241,63,6,64,13,3,0,64,86,0,0,10,87,36,250, -136,82,185,5,95,250,154,253,36,119,157,172,36,23,161,172,226,113,233,13, -2,48,36,102,156,140,172,17,32,62,0,32,162,57,128,255,204,2,36,142, -156,140,100,143,161,172,36,135,157,172,80,7,0,0,36,55,161,172,128,255, -226,2,36,127,157,172,63,6,64,13,3,0,100,127,161,172,100,127,233,133, -64,86,0,0,10,87,36,250,136,82,185,5,95,250,154,253,64,6,63,0, -128,7,225,16,4,143,84,139,224,137,194,5,100,7,229,133,245,85,224,49, -186,21,36,135,229,133,65,130,100,135,229,133,97,130,202,5,0,50,128,255, -156,0,36,127,229,133,224,121,250,69,1,114,100,119,229,133,181,69,32,238, -232,3,230,239,32,2,10,82,74,232,224,233,170,5,1,234,36,143,229,133, -224,137,222,5,1,130,100,135,229,133,133,13,17,126,1,0,100,127,229,133, -15,6,0,255,191,45,59,6,184,2,133,0,60,6,56,24,148,0,28,48, -128,255,106,71,224,81,242,5,27,48,32,62,199,2,0,66,190,255,230,83, -28,48,29,56,0,66,128,255,16,72,224,81,242,5,27,48,32,62,200,2, -0,66,190,255,204,83,28,48,128,255,20,71,224,81,130,13,27,48,32,62, -201,2,0,66,190,255,182,83,224,81,64,6,255,16,144,7,225,0,36,143, -229,133,224,137,214,5,4,135,84,139,224,129,194,5,100,7,229,133,213,101, -60,6,244,2,133,0,36,63,33,175,38,6,200,2,133,0,128,255,224,111, -32,54,0,32,128,255,220,105,10,232,224,233,250,5,28,48,32,62,241,2, -0,66,190,255,104,83,29,48,32,62,0,32,128,255,252,0,3,48,39,6, -170,170,102,102,191,255,194,100,3,48,32,62,0,32,1,66,191,255,90,96, -29,56,3,48,32,70,0,32,0,74,191,255,2,104,36,63,33,175,38,6, -232,2,133,0,128,255,136,111,29,48,128,255,106,105,31,122,100,127,229,133, -61,6,56,24,148,0,29,48,128,255,134,70,224,81,242,5,28,48,32,62, -255,2,0,66,190,255,2,83,29,48,32,62,112,23,0,66,128,255,42,71, -224,81,242,5,28,48,32,62,0,3,0,66,190,255,230,82,29,48,128,255, -46,70,224,81,130,13,28,48,32,62,1,3,0,66,190,255,208,82,224,81, -80,6,255,0,128,7,33,0,64,86,0,0,10,87,38,250,68,87,48,140, -64,86,0,0,202,191,174,241,4,143,224,133,224,137,234,5,4,55,48,140, -128,255,92,1,133,13,32,54,236,176,32,62,0,2,0,66,190,255,6,139, -64,6,63,0,128,7,65,0,6,232,4,143,224,133,189,0,99,138,178,13, -64,86,0,0,10,87,36,250,136,82,177,253,64,86,0,0,74,239,40,250, -64,6,95,0,130,7,193,0,6,224,7,232,29,6,255,223,185,5,32,238, -0,32,229,87,64,0,224,7,96,1,36,23,157,172,99,87,1,0,189,17, -36,126,156,140,239,17,217,13,2,22,0,32,165,13,65,18,36,110,156,140, -13,118,0,32,238,17,177,5,36,22,156,140,2,103,0,0,224,97,194,245, -36,94,156,140,11,94,0,32,181,13,2,87,0,0,92,87,0,0,65,18, -65,226,235,17,177,5,36,22,156,140,29,136,95,234,224,137,186,245,35,239, -1,0,253,47,32,0,66,6,223,0,128,7,225,16,7,216,0,226,6,232, -229,13,29,143,0,0,106,138,202,5,13,50,191,255,68,255,29,55,0,0, -191,255,60,255,65,234,65,226,251,225,166,245,64,6,255,16,128,7,97,0, -6,232,181,13,106,18,202,5,13,50,191,255,30,255,29,55,0,0,65,234, -191,255,20,255,29,23,0,0,224,17,186,245,64,6,127,0,128,7,33,0, -0,82,34,6,144,18,148,0,133,143,109,131,66,143,0,0,65,82,2,22, -128,0,106,82,134,253,37,54,100,131,128,255,32,0,100,7,41,140,100,7, -37,140,64,14,148,0,65,7,144,23,100,7,25,140,100,7,29,140,64,6, -63,0,100,55,33,140,127,0,128,7,33,0,166,0,6,6,229,255,218,5, -1,130,100,135,41,140,245,93,6,6,177,255,194,5,6,6,165,255,154,13, -36,111,41,140,97,106,218,5,2,98,100,103,41,140,149,85,36,95,41,140, -98,90,186,45,6,16,2,6,188,255,145,13,2,6,191,255,153,37,242,13, -2,6,189,255,249,13,149,21,2,6,188,255,146,21,2,6,184,255,146,21, -2,6,181,255,146,21,165,21,128,255,30,2,245,13,128,255,108,2,197,13, -128,255,214,2,149,13,128,255,176,2,229,5,128,255,84,3,181,5,128,255, -112,3,100,7,41,140,181,37,6,16,109,18,233,5,104,18,210,13,105,18, -226,13,149,29,109,18,226,13,2,6,238,255,226,13,2,6,129,255,226,13, -133,21,128,255,116,3,245,13,128,255,190,2,197,13,128,255,26,0,149,13, -128,255,232,3,229,5,128,255,128,3,181,5,128,255,248,0,64,6,63,0, -128,7,225,0,61,6,144,23,148,0,29,224,28,48,37,62,109,131,128,255, -248,139,224,81,130,29,36,55,29,140,44,6,144,18,148,0,6,142,1,0, -100,143,29,140,199,50,204,49,28,56,128,255,246,139,36,95,29,140,10,82, -234,95,194,90,100,95,29,140,100,95,25,140,37,54,110,131,191,255,112,254, -29,48,128,255,38,0,36,55,45,140,39,6,16,24,148,0,128,255,132,0, -165,143,109,131,93,143,0,0,100,7,37,140,128,255,100,3,64,6,255,0, -132,7,225,0,37,127,117,131,99,127,1,0,5,119,120,131,64,230,148,0, -67,119,4,0,3,56,100,7,45,140,128,255,30,140,124,87,17,24,60,230, -16,24,245,21,36,239,45,140,3,56,65,234,100,239,45,140,0,50,194,234, -220,233,128,255,254,139,36,23,45,140,125,87,1,0,105,18,234,5,2,110, -1,0,100,111,45,140,149,13,36,87,45,140,194,82,220,81,42,135,1,0, -224,129,186,229,68,6,255,0,128,7,33,0,190,255,244,198,64,6,63,0, -128,7,225,48,6,224,188,0,28,134,224,255,16,6,161,255,209,85,28,102, -191,255,12,6,230,255,233,119,0,0,197,114,206,225,188,0,58,6,144,23, -148,0,26,16,2,143,0,0,65,18,224,137,202,253,2,134,255,255,186,129, -16,6,130,255,217,5,7,50,191,255,180,252,149,61,36,127,37,140,218,121, -15,119,0,0,224,113,154,21,28,48,191,255,158,252,36,95,37,140,11,102, -1,0,100,103,37,140,218,89,75,231,0,0,218,97,76,7,0,0,165,37, -36,239,37,140,28,216,29,134,1,0,100,135,37,140,29,224,218,225,27,16, -28,223,0,0,29,112,218,113,78,23,0,0,65,226,65,234,224,17,146,13, -2,48,191,255,86,252,165,245,36,55,217,133,191,255,32,253,36,95,37,140, -95,234,235,233,139,253,64,6,255,48,128,7,225,0,36,239,25,140,224,233, -194,5,29,134,255,255,165,5,9,130,100,135,25,140,60,6,144,18,148,0, -16,48,199,50,220,49,37,62,124,131,128,255,52,138,224,81,202,5,100,239, -25,140,229,13,36,63,25,140,38,6,144,23,148,0,199,58,220,57,128,255, -54,138,128,255,222,1,128,255,36,1,64,6,255,0,128,7,225,0,36,239, -25,140,10,122,29,54,1,0,239,55,194,50,100,55,25,140,60,6,144,18, -148,0,199,50,220,49,37,62,125,131,128,255,228,137,224,81,202,5,100,239, -25,140,229,13,36,63,25,140,38,6,144,23,148,0,199,58,220,57,128,255, -230,137,128,255,142,1,128,255,212,0,64,6,255,0,128,7,33,0,36,143, -37,140,224,137,146,13,17,134,255,255,36,55,217,133,100,135,37,140,191,255, -82,252,64,6,63,0,128,7,33,0,36,143,37,140,64,134,148,0,208,137, -17,127,144,23,224,121,162,13,36,119,37,140,36,55,213,133,65,114,100,119, -37,140,191,255,38,252,64,6,63,0,128,7,97,0,61,6,144,23,148,0, -165,13,36,143,37,140,36,55,213,133,65,138,100,143,37,140,191,255,4,252, -36,135,37,140,221,129,16,23,0,0,2,6,224,255,210,13,224,17,234,237, -165,13,36,111,37,140,36,55,213,133,65,106,100,111,37,140,191,255,220,251, -36,103,37,140,64,94,148,0,203,97,12,87,144,23,10,6,224,255,226,237, -64,6,127,0,128,7,33,0,149,13,16,142,255,255,36,55,217,133,100,143, -37,140,191,255,174,251,36,135,37,140,224,129,218,245,64,6,63,0,128,7, -97,0,61,6,144,23,148,0,165,13,36,143,37,140,36,55,213,133,65,138, -100,143,37,140,191,255,132,251,36,135,37,140,221,129,16,127,0,0,224,121, -154,245,64,6,127,0,128,7,33,0,36,143,37,140,224,137,178,13,17,134, -255,255,36,55,217,133,100,135,37,140,191,255,86,251,128,255,8,0,64,6, -63,0,128,7,225,16,36,87,37,140,34,6,144,23,148,0,10,136,194,137, -17,135,0,0,224,129,178,37,10,232,65,18,29,224,194,225,2,222,255,255, -28,23,0,0,29,112,219,113,78,23,0,0,65,226,65,234,224,17,210,5, -2,48,191,255,58,250,181,245,32,54,32,0,191,255,48,250,229,5,36,55, -217,133,95,234,191,255,248,250,36,95,37,140,235,233,139,253,64,6,255,16, -128,7,225,0,36,55,221,133,191,255,224,250,36,55,33,140,191,255,216,250, -32,54,62,0,191,255,252,249,64,22,148,0,34,230,144,23,28,48,191,255, -194,250,13,50,191,255,232,249,36,55,33,140,191,255,180,250,32,54,62,0, -191,255,216,249,0,234,229,13,28,143,0,0,224,137,202,5,100,239,37,140, -181,13,36,55,213,133,191,255,146,250,65,226,65,234,36,135,37,140,240,233, -138,245,64,6,255,0,36,87,33,6,16,105,0,0,97,0,128,7,33,0, -224,49,210,5,129,58,185,5,128,255,156,98,64,6,63,0,128,7,33,0, -38,6,100,24,148,0,39,6,4,3,133,0,0,66,191,255,26,110,64,6, -63,0,128,7,33,0,64,14,148,0,97,7,145,24,38,6,236,128,133,0, -128,255,38,103,64,6,63,0,128,7,225,16,6,232,7,224,188,0,8,216, -224,233,138,13,32,54,136,0,128,255,108,98,10,232,224,233,226,13,93,231, -2,0,125,7,0,0,125,223,5,0,61,54,8,0,0,58,32,70,128,0, -190,255,150,71,29,80,64,6,255,16,130,7,97,0,6,232,61,87,5,0, -157,127,3,0,42,23,1,0,15,112,34,135,24,0,14,56,16,48,202,49, -61,78,8,0,32,110,128,0,99,111,1,0,0,66,34,103,29,0,63,6, -146,186,129,0,108,0,125,87,0,0,10,16,226,0,224,17,178,5,234,0, -245,5,29,48,128,255,54,0,125,87,0,0,234,0,66,6,127,0,166,143, -11,0,134,135,13,0,209,129,166,119,13,0,208,113,38,103,0,0,14,22, -4,0,224,97,178,5,0,82,197,5,1,82,226,87,192,0,127,0,128,7, -225,0,6,232,0,226,0,18,61,94,8,0,0,82,139,143,1,0,209,17, -130,0,65,90,65,82,10,6,193,255,134,253,189,119,71,0,238,17,146,13, -2,56,38,6,28,3,133,0,128,255,80,103,32,230,66,2,157,23,9,0, -2,6,128,255,145,13,2,56,38,6,32,4,133,0,128,255,54,103,32,230, -66,2,157,23,11,0,100,18,178,13,2,56,38,6,208,4,133,0,128,255, -30,103,32,86,67,2,128,7,50,2,189,23,11,0,194,134,240,0,178,13, -2,56,38,6,172,3,133,0,128,255,0,103,32,86,67,2,128,7,20,2, -157,23,13,0,104,18,225,5,108,18,203,5,194,126,240,0,146,13,2,56, -38,6,244,4,133,0,128,255,218,102,32,230,66,2,189,23,13,0,98,18, -187,5,224,17,186,13,2,56,38,6,48,5,133,0,128,255,190,102,32,86, -67,2,128,7,210,1,253,23,15,0,2,6,192,255,226,13,2,6,184,255, -178,13,2,56,38,6,68,4,133,0,128,255,154,102,32,86,67,2,128,7, -174,1,2,6,184,255,250,5,2,56,38,6,60,3,133,0,128,255,128,102, -157,23,17,0,97,18,178,13,2,56,38,6,80,5,133,0,128,255,108,102, -32,86,67,2,128,7,128,1,189,23,17,0,2,6,95,255,153,13,2,56, -38,6,216,3,133,0,128,255,78,102,32,230,66,2,189,23,19,0,98,18, -177,13,2,56,38,6,100,4,133,0,128,255,54,102,32,86,67,2,128,7, -74,1,157,23,21,0,194,86,128,0,186,13,2,56,38,6,120,5,133,0, -128,255,24,102,32,86,67,2,128,7,44,1,189,23,23,0,100,18,179,13, -2,56,38,6,52,6,133,0,128,255,252,101,32,86,67,2,128,7,16,1, -157,23,25,0,194,142,128,0,170,13,2,56,38,6,156,5,133,0,128,255, -222,101,32,86,67,2,149,125,189,23,25,0,100,18,162,13,2,56,38,6, -252,3,133,0,128,255,196,101,32,86,67,2,197,109,157,23,27,0,194,126, -7,0,170,13,2,56,38,6,116,3,133,0,128,255,168,101,32,86,67,2, -229,93,189,23,27,0,194,86,1,0,170,13,2,56,38,6,192,5,133,0, -128,255,140,101,32,86,67,2,133,85,157,23,29,0,194,110,1,0,170,13, -2,56,38,6,224,5,133,0,128,255,112,101,32,86,67,2,165,69,189,23, -29,0,194,134,98,0,162,13,2,56,38,6,144,4,133,0,128,255,84,101, -32,86,67,2,197,53,189,23,35,0,224,17,154,13,2,56,38,6,184,4, -133,0,128,255,58,101,32,230,66,2,189,23,35,0,2,6,225,255,153,13, -2,56,38,6,148,3,133,0,128,255,32,101,32,230,66,2,189,23,37,0, -224,17,154,13,2,56,38,6,0,6,133,0,128,255,8,101,32,230,66,2, -189,23,37,0,2,6,214,255,153,13,2,56,38,6,24,6,133,0,128,255, -238,100,32,230,66,2,28,80,64,6,255,0,166,87,11,0,127,0,134,87, -13,0,127,0,6,143,20,0,209,134,127,0,16,120,143,0,15,16,99,18, -217,5,97,18,145,13,178,13,213,13,100,18,225,13,130,21,101,18,146,21, -197,21,32,86,9,61,165,21,32,86,60,15,245,13,32,86,120,30,197,13, -32,86,68,122,149,13,128,86,36,244,229,5,42,6,72,232,1,0,165,5, -0,82,127,0,166,87,35,0,127,0,166,87,37,0,127,0,128,7,33,0, -34,6,0,191,151,0,166,17,2,6,0,255,128,255,44,1,190,255,170,87, -4,135,80,139,97,130,202,5,0,50,128,255,90,60,64,6,63,0,128,7, -33,0,50,6,156,29,148,0,114,7,1,0,38,6,4,129,133,0,128,255, -24,99,48,6,244,174,148,0,47,6,244,158,148,0,175,129,100,135,101,140, -47,6,196,223,255,255,48,6,196,231,255,255,175,129,100,135,89,140,45,6, -244,206,148,0,44,6,244,190,148,0,172,105,44,6,244,158,148,0,43,6, -244,142,148,0,171,97,100,103,81,140,48,6,244,254,148,0,47,6,244,238, -148,0,175,129,100,111,97,140,46,6,244,190,148,0,45,6,244,174,148,0, -173,113,100,119,85,140,100,135,73,140,46,6,244,14,149,0,45,6,244,254, -148,0,173,113,100,119,69,140,34,6,16,129,133,0,98,103,117,0,98,135, -213,0,42,6,244,222,148,0,49,6,244,206,148,0,177,81,100,87,93,140, -36,95,89,140,36,103,93,140,98,95,21,0,42,6,244,238,148,0,49,6, -244,222,148,0,177,81,100,87,77,140,98,87,69,0,98,119,5,1,36,87, -85,140,36,95,97,140,98,87,165,0,98,103,53,1,36,87,101,140,98,95, -101,1,98,87,149,1,64,6,63,0,128,7,33,0,224,49,210,5,129,58, -185,5,128,255,102,93,64,6,63,0,128,7,33,6,214,111,1,0,97,0, -36,143,141,140,224,137,250,5,100,7,165,172,100,7,169,172,100,7,173,172, -127,0,128,7,225,16,6,232,128,222,26,183,29,6,155,255,233,5,32,230, -213,1,29,238,156,255,229,13,48,6,140,134,71,0,253,135,34,2,45,6, -64,66,15,0,237,135,194,2,16,230,1,0,0,234,251,225,163,13,128,54, -26,183,128,255,160,0,50,6,230,72,255,255,210,225,213,5,28,48,128,255, -144,0,0,226,224,225,138,245,224,233,154,221,64,6,255,16,128,7,33,0, -224,49,202,5,32,22,184,11,197,5,36,23,245,133,198,17,100,23,245,133, -2,6,71,244,249,13,196,239,144,140,162,13,32,54,49,0,37,62,144,131, -190,255,236,70,1,130,100,135,173,172,100,7,245,133,64,6,63,0,36,23, -165,172,32,126,44,1,239,23,194,2,236,23,102,2,2,112,43,6,128,81, -1,0,2,96,235,103,194,2,7,130,240,103,194,82,70,87,0,0,235,119, -194,122,2,80,103,127,1,0,127,0,64,86,0,0,42,87,80,245,202,0, -127,0,128,7,225,0,6,232,191,255,238,255,10,224,220,233,128,126,27,183, -239,239,192,234,252,233,231,5,191,255,218,255,253,81,214,253,181,13,191,255, -208,255,181,5,191,255,202,255,10,16,252,17,207,253,253,17,166,253,64,6, -255,0,128,7,97,0,6,232,224,233,138,13,32,54,68,2,128,255,56,92, -10,232,224,233,226,13,128,142,173,222,125,143,0,0,125,7,2,0,61,54, -4,0,0,58,32,70,64,2,190,255,98,65,29,80,64,6,127,0,128,7, -33,0,38,23,2,0,224,17,242,5,230,135,1,0,128,126,237,172,239,129, -178,5,0,82,197,13,108,18,151,13,12,106,102,111,2,0,38,6,232,16, -133,0,128,255,162,97,1,82,64,6,63,0,128,7,225,0,7,224,128,142, -237,172,6,232,61,135,2,0,125,143,0,0,108,130,246,5,0,58,128,255, -74,0,11,122,125,127,2,0,61,23,2,0,61,102,4,0,226,110,48,0, -2,118,1,0,125,119,2,0,60,95,5,0,204,105,109,95,1,0,45,54, -4,0,60,62,8,0,32,70,42,0,190,255,118,63,61,63,2,0,38,6, -44,17,133,0,128,255,60,97,64,6,255,0,38,23,2,0,226,57,238,53, -167,17,2,94,255,255,240,95,70,2,224,89,162,45,240,63,68,2,38,22, -4,0,199,17,38,86,4,0,202,57,7,86,48,0,11,96,202,97,2,136, -170,137,12,128,170,129,240,137,139,21,11,120,194,121,15,22,255,255,12,86, -255,255,95,82,10,119,1,0,95,18,66,119,1,0,95,90,154,253,149,13, -65,82,10,111,255,255,65,18,66,111,255,255,95,90,154,253,38,103,2,0, -95,98,102,103,2,0,127,0,0,82,229,37,10,16,240,23,68,2,38,134, -4,0,194,129,48,111,1,0,39,119,5,0,238,105,154,29,38,94,4,0, -203,17,34,94,4,0,39,102,8,0,32,110,42,0,65,90,11,119,255,255, -65,98,12,127,255,255,14,16,175,17,218,5,224,113,178,5,95,106,202,245, -224,17,226,5,65,82,38,127,2,0,239,81,134,221,127,0,32,102,32,0, -236,47,32,0,45,6,32,183,255,255,109,31,1,0,44,6,0,191,150,0, -45,6,192,29,133,0,109,103,1,0,127,0,224,7,32,0,0,0,224,15, -32,0,0,0,224,23,32,0,0,0,224,31,32,0,0,0,224,135,32,0, -0,0,224,143,32,0,0,0,224,151,32,0,0,0,224,159,32,0,0,0, -0,0,128,7,190,8,64,30,148,0,35,30,228,115,128,255,198,28,128,255, -112,25,181,45,128,7,92,8,124,255,125,0,128,255,230,0,64,14,130,0, -33,14,118,194,97,0,64,14,148,0,33,14,228,115,225,25,223,5,1,14, -112,254,225,25,239,5,64,14,148,0,33,14,228,115,1,24,228,55,64,0, -229,15,64,0,193,14,128,0,162,5,144,50,198,54,255,255,60,62,128,0, -128,255,164,25,0,81,196,5,128,255,20,27,0,0,128,255,116,1,60,255, -125,0,60,231,113,0,0,0,224,7,64,1,0,0,128,7,20,8,124,255, -125,0,128,255,108,2,64,14,130,0,33,14,228,194,97,0,64,14,148,0, -33,14,228,115,225,25,223,5,1,14,112,254,225,25,239,5,64,14,148,0, -33,14,228,115,1,24,32,54,96,0,60,62,128,0,128,255,70,25,0,81, -196,21,128,255,96,27,0,0,224,7,96,1,0,50,128,255,252,38,0,0, -0,0,64,248,0,0,0,0,0,0,1,50,128,255,234,38,0,0,0,0, -128,255,250,2,60,255,125,0,60,231,113,0,0,0,224,7,70,1,0,0, -0,0,124,7,1,0,124,15,5,0,124,23,9,0,124,31,13,0,124,39, -17,0,124,47,21,0,124,55,25,0,124,63,29,0,124,71,33,0,124,79, -37,0,124,87,41,0,124,95,45,0,124,103,49,0,124,111,53,0,124,119, -57,0,124,127,61,0,124,135,65,0,124,143,69,0,124,151,73,0,124,159, -77,0,124,167,81,0,124,175,85,0,124,183,89,0,124,191,93,0,124,199, -97,0,124,207,101,0,124,215,105,0,124,223,109,0,124,239,117,0,124,247, -121,0,224,55,64,0,0,0,225,63,64,0,0,0,226,71,64,0,0,0, -227,79,64,0,0,0,124,55,133,0,124,63,137,0,124,71,141,0,124,79, -145,0,240,95,64,0,0,0,241,103,64,0,0,0,244,111,64,0,0,0, -124,95,197,0,124,103,201,0,124,111,213,0,229,15,64,0,193,14,128,0, -186,5,6,64,7,72,124,71,129,0,124,79,153,0,228,15,64,0,124,15, -149,0,127,0,0,0,60,55,129,0,60,63,153,0,229,15,64,0,193,14, -128,0,170,37,60,71,141,0,60,79,145,0,230,7,32,0,0,0,231,15, -32,0,0,0,232,23,32,0,0,0,233,31,32,0,0,0,60,95,197,0, -60,103,201,0,60,111,213,0,235,135,32,0,0,0,236,143,32,0,0,0, -237,167,32,0,0,0,0,0,165,37,60,71,133,0,60,79,137,0,232,7, -32,0,0,0,233,15,32,0,0,0,230,23,32,0,0,0,231,31,32,0, -0,0,60,95,197,0,60,103,201,0,60,111,213,0,235,135,32,0,0,0, -236,143,32,0,0,0,237,167,32,0,0,0,0,0,149,5,60,7,1,0, -60,15,5,0,60,23,9,0,60,31,13,0,60,39,17,0,60,47,21,0, -60,55,25,0,60,63,29,0,60,71,33,0,60,79,37,0,60,87,41,0, -60,95,45,0,60,103,49,0,60,111,53,0,60,119,57,0,60,127,61,0, -60,135,65,0,60,143,69,0,60,151,73,0,60,159,77,0,60,167,81,0, -60,175,85,0,60,183,89,0,60,191,93,0,60,199,97,0,60,207,101,0, -60,215,105,0,60,223,109,0,60,239,117,0,60,247,121,0,0,0,127,0, -0,0,124,7,1,0,124,15,5,0,124,23,9,0,124,31,13,0,124,39, -17,0,124,47,21,0,124,55,25,0,124,63,29,0,124,71,33,0,124,79, -37,0,124,87,41,0,124,95,45,0,124,103,49,0,124,111,53,0,124,119, -57,0,124,127,61,0,124,135,65,0,124,143,69,0,124,151,73,0,124,159, -77,0,124,167,81,0,124,175,85,0,124,183,89,0,124,191,93,0,124,199, -97,0,124,207,101,0,124,215,105,0,124,223,109,0,124,239,117,0,124,247, -121,0,224,55,64,0,0,0,225,63,64,0,0,0,226,71,64,0,0,0, -227,79,64,0,0,0,124,55,133,0,124,63,137,0,124,71,141,0,124,79, -145,0,240,95,64,0,0,0,241,103,64,0,0,0,242,111,64,0,0,0, -243,119,64,0,0,0,245,127,64,0,0,0,244,135,64,0,0,0,124,95, -197,0,124,103,201,0,124,111,205,0,124,119,209,0,124,127,217,0,124,135, -213,0,124,111,129,0,124,119,153,0,228,15,64,0,124,15,149,0,127,0, -0,0,60,55,129,0,60,63,209,0,60,127,217,0,230,151,32,0,0,0, -231,159,32,0,0,0,239,175,32,0,60,55,133,0,60,63,137,0,60,71, -141,0,60,79,145,0,230,7,32,0,0,0,231,15,32,0,0,0,232,23, -32,0,0,0,233,31,32,0,0,0,60,95,197,0,60,103,201,0,60,135, -213,0,235,135,32,0,0,0,236,143,32,0,0,0,240,167,32,0,0,0, -60,7,1,0,60,15,5,0,60,23,9,0,60,31,13,0,60,39,17,0, -60,47,21,0,60,55,25,0,60,63,29,0,60,71,33,0,60,79,37,0, -60,87,41,0,60,95,45,0,60,103,49,0,60,111,53,0,60,119,57,0, -60,127,61,0,60,135,65,0,60,143,69,0,60,151,73,0,60,159,77,0, -60,167,81,0,60,175,85,0,60,183,89,0,60,191,93,0,60,199,97,0, -60,207,101,0,60,215,105,0,60,223,109,0,60,239,117,0,60,247,121,0, -0,0,127,0,0,0,224,87,64,0,127,0,0,0,225,87,64,0,127,0, -0,0,226,87,64,0,127,0,0,0,227,87,64,0,127,0,0,0,229,87, -64,0,127,0,0,0,228,87,64,0,127,0,0,0,240,87,64,0,127,0, -0,0,241,87,64,0,127,0,0,0,242,87,64,0,127,0,0,0,243,87, -64,0,127,0,0,0,244,87,64,0,127,0,0,0,245,87,64,0,127,0, -0,0,230,7,32,0,127,0,0,0,230,15,32,0,127,0,0,0,230,23, -32,0,127,0,0,0,230,31,32,0,127,0,0,0,230,47,32,0,127,0, -0,0,230,39,32,0,127,0,0,0,230,135,32,0,127,0,0,0,230,143, -32,0,127,0,0,0,230,151,32,0,127,0,0,0,230,159,32,0,127,0, -0,0,230,167,32,0,127,0,0,0,230,175,32,0,127,0,0,0,64,14, -133,0,33,14,140,21,97,231,113,0,1,224,124,7,1,0,124,15,5,0, -124,23,9,0,124,31,13,0,124,39,17,0,124,47,21,0,124,55,25,0, -124,63,29,0,124,71,33,0,124,79,37,0,124,87,41,0,124,95,45,0, -124,103,49,0,124,111,53,0,124,119,57,0,124,127,61,0,124,135,65,0, -124,143,69,0,124,151,73,0,124,159,77,0,124,167,81,0,124,175,85,0, -124,183,89,0,124,191,93,0,124,199,97,0,124,207,101,0,124,215,105,0, -124,223,109,0,124,239,117,0,124,247,121,0,127,0,64,230,133,0,60,230, -140,21,60,7,1,0,60,15,5,0,60,23,9,0,60,31,13,0,60,39, -17,0,60,47,21,0,60,55,25,0,60,63,29,0,60,71,33,0,60,79, -37,0,60,87,41,0,60,95,45,0,60,103,49,0,60,111,53,0,60,119, -57,0,60,127,61,0,60,135,65,0,60,143,69,0,60,151,73,0,60,159, -77,0,60,167,81,0,60,175,85,0,60,183,89,0,60,191,93,0,60,199, -97,0,60,207,101,0,60,215,105,0,60,223,109,0,60,239,117,0,60,247, -121,0,127,0,64,254,133,0,63,254,164,22,127,7,1,0,127,15,5,0, -127,23,9,0,127,31,13,0,127,39,17,0,127,47,21,0,127,55,25,0, -127,63,29,0,127,71,33,0,127,79,37,0,127,87,41,0,127,95,45,0, -127,103,49,0,127,111,53,0,127,119,57,0,127,127,61,0,127,135,65,0, -127,143,69,0,127,151,73,0,127,159,77,0,127,167,81,0,127,175,85,0, -127,183,89,0,127,191,93,0,127,199,97,0,127,207,101,0,127,215,105,0, -127,223,109,0,127,231,113,0,127,239,117,0,127,247,121,0,224,55,64,0, -0,0,225,63,64,0,0,0,226,71,64,0,0,0,227,79,64,0,0,0, -127,55,133,0,127,63,137,0,127,71,141,0,127,79,145,0,240,95,64,0, -0,0,241,103,64,0,0,0,242,111,64,0,0,0,243,119,64,0,0,0, -245,127,64,0,0,0,244,135,64,0,0,0,127,95,197,0,127,103,201,0, -127,111,205,0,127,119,209,0,127,127,217,0,127,135,213,0,127,111,129,0, -127,119,153,0,228,15,64,0,127,15,149,0,64,30,150,0,35,30,244,190, -64,254,130,0,63,254,10,173,127,0,64,14,133,0,33,14,164,22,1,224, -60,55,133,0,60,63,137,0,60,71,141,0,60,79,145,0,230,7,32,0, -0,0,231,15,32,0,0,0,232,23,32,0,0,0,233,31,32,0,0,0, -60,95,197,0,60,103,201,0,60,135,213,0,235,135,32,0,0,0,236,143, -32,0,0,0,240,167,32,0,0,0,60,7,1,0,60,15,5,0,60,23, -9,0,60,31,13,0,60,39,17,0,60,47,21,0,60,55,25,0,60,63, -29,0,60,71,33,0,60,79,37,0,60,87,41,0,60,95,45,0,60,103, -49,0,60,111,53,0,60,119,57,0,60,127,61,0,60,135,65,0,60,143, -69,0,60,151,73,0,60,159,77,0,60,167,81,0,60,175,85,0,60,183, -89,0,60,191,93,0,60,199,97,0,60,207,101,0,60,215,105,0,60,223, -109,0,60,239,117,0,60,247,121,0,60,231,113,0,35,255,233,255,0,0, -224,7,64,1,35,15,1,0,68,26,92,26,99,255,1,0,64,254,148,0, -63,254,56,112,127,231,113,0,31,224,35,255,1,0,68,26,191,7,136,247, -0,0,35,15,1,0,68,26,92,26,99,255,1,0,64,254,148,0,63,254, -56,112,127,231,113,0,31,224,35,255,1,0,68,26,191,7,208,247,0,0, -64,230,148,0,60,230,56,112,124,231,113,0,124,255,125,0,191,255,54,248, -191,7,50,247,0,0,0,0,42,6,72,194,129,0,106,0,128,7,225,16, -61,6,136,120,148,0,64,14,148,0,97,7,45,117,59,6,244,116,148,0, -64,14,148,0,97,7,161,120,64,142,148,0,17,143,112,118,0,226,224,137, -186,5,128,7,234,1,64,134,148,0,48,135,49,117,224,129,186,5,128,7, -226,1,64,14,148,0,65,7,112,118,128,7,206,1,0,50,128,255,130,2, -64,62,148,0,39,63,133,120,7,16,2,6,206,255,209,37,2,6,226,255, -185,5,128,7,164,1,66,0,82,0,87,0,93,0,104,0,111,0,111,0, -141,0,147,0,154,0,159,0,37,0,207,0,173,0,37,0,188,0,43,0, -75,0,207,0,165,0,207,0,207,0,194,0,177,0,207,0,194,0,207,0, -99,0,62,0,53,0,68,0,2,6,206,255,186,5,128,7,74,1,128,7, -88,1,32,54,32,0,128,255,88,4,128,7,86,1,128,255,220,29,7,18, -27,240,17,21,64,118,148,0,46,119,97,118,23,117,0,50,128,255,58,4, -64,14,148,0,97,7,81,117,128,7,48,1,61,55,1,0,128,255,166,7, -128,7,36,1,29,240,96,48,97,56,128,255,214,7,128,7,22,1,29,240, -100,56,0,53,128,255,6,8,128,7,8,1,157,55,1,0,128,255,72,26, -229,125,29,240,96,48,2,61,128,255,106,26,133,125,29,240,4,61,0,53, -128,255,50,8,165,117,61,55,1,0,128,255,78,8,213,109,29,240,4,69, -2,61,0,53,128,255,132,8,229,101,128,255,6,27,61,23,1,0,97,18, -178,13,64,134,148,0,48,135,73,118,64,110,148,0,194,130,205,129,112,23, -225,123,64,102,148,0,44,103,133,120,100,98,186,45,128,255,44,21,1,18, -64,14,148,0,97,23,161,120,181,37,29,240,100,56,0,53,128,255,114,8, -165,69,29,240,104,64,2,61,0,53,128,255,228,8,181,61,61,55,1,0, -128,255,114,10,213,5,61,55,1,0,128,255,254,10,10,48,181,133,128,255, -162,9,1,18,64,14,148,0,65,23,113,118,133,45,128,255,12,13,1,226, -197,37,29,240,2,21,0,53,194,62,1,0,194,70,2,0,128,255,68,0, -10,224,149,29,7,18,91,23,0,0,4,50,191,7,206,254,38,6,212,17, -133,0,213,13,29,87,0,0,64,14,148,0,97,87,201,123,0,50,191,7, -180,254,38,6,172,17,133,0,128,255,228,12,224,225,186,5,191,7,50,254, -64,6,255,16,128,7,97,0,8,232,128,255,254,28,224,233,146,13,1,18, -64,14,148,0,65,23,244,116,4,50,128,255,216,2,224,233,226,87,0,0, -64,6,127,0,128,7,33,0,128,255,8,20,64,14,148,0,97,7,57,117, -64,14,148,0,97,7,53,117,31,18,64,14,148,0,97,23,65,117,128,255, -158,17,64,14,148,0,65,7,112,118,64,14,148,0,65,7,114,118,128,255, -46,9,64,14,148,0,97,7,161,120,64,14,148,0,97,7,77,117,64,14, -148,0,97,7,201,123,64,14,148,0,65,7,113,118,64,6,63,0,64,14, -148,0,33,247,121,120,96,136,70,143,0,0,97,128,70,135,1,0,98,120, -70,127,2,0,99,112,70,119,3,0,68,242,97,247,121,120,127,0,128,7, -225,16,64,230,148,0,61,6,136,120,148,0,6,56,59,6,115,118,148,0, -27,48,128,255,122,17,27,134,1,0,124,135,121,120,64,14,148,0,155,127, -1,0,97,127,133,120,64,118,148,0,14,119,114,118,60,230,120,120,224,113, -194,5,66,130,124,135,1,0,64,22,148,0,34,23,133,120,97,18,225,45, -242,53,99,18,129,69,242,77,102,18,145,77,130,109,103,18,162,117,105,18, -195,69,2,6,240,255,210,85,2,6,238,255,186,5,128,7,254,0,2,6, -236,255,210,117,2,6,234,255,186,5,128,7,18,1,2,6,230,255,146,53, -2,6,229,255,226,45,2,6,227,255,186,5,128,7,14,1,2,6,206,255, -186,5,128,7,36,1,128,7,48,1,28,240,0,85,65,82,1,85,170,143, -255,255,93,143,0,0,128,7,28,1,28,240,0,125,65,122,1,125,61,54, -4,0,175,119,255,255,93,119,0,0,229,13,29,48,191,255,0,255,28,240, -0,101,65,98,1,101,172,95,255,255,125,95,9,0,229,117,29,48,191,255, -232,254,165,117,29,48,191,255,224,254,61,54,4,0,191,255,216,254,28,240, -0,141,65,138,1,141,177,135,255,255,125,135,9,0,165,101,29,48,191,255, -192,254,28,240,0,117,65,114,1,117,174,111,255,255,93,111,4,0,229,85, -29,48,191,255,168,254,28,240,0,93,65,90,1,93,171,87,255,255,93,87, -4,0,165,77,29,48,191,255,144,254,61,54,4,0,191,255,136,254,28,240, -0,133,65,130,1,133,176,127,255,255,93,127,8,0,165,61,38,6,4,18, -133,0,128,255,4,9,197,53,28,240,0,109,65,106,1,109,13,134,1,0, -173,103,255,255,200,98,125,103,0,0,1,133,141,127,1,0,207,97,125,103, -0,0,165,37,28,240,0,85,65,82,1,85,170,143,255,255,125,143,5,0, -197,165,28,240,0,125,65,122,1,125,15,102,1,0,175,119,255,255,93,119, -0,0,1,101,143,95,1,0,93,95,1,0,149,13,28,240,0,141,65,138, -1,141,177,135,255,255,93,135,0,0,64,6,255,16,7,240,96,136,70,143, -0,0,97,128,70,135,1,0,98,120,70,127,2,0,99,112,66,50,6,86, -2,0,70,119,1,0,127,0,197,5,70,23,0,0,65,50,7,23,0,0, -65,58,224,17,154,253,6,80,127,0,128,7,225,0,6,232,39,6,248,18, -133,0,191,255,222,255,10,224,128,255,208,31,28,48,10,56,191,255,208,255, -10,48,39,6,16,19,133,0,191,255,196,255,189,81,64,6,255,0,132,7, -225,0,49,6,116,119,148,0,17,134,1,0,99,135,1,0,81,55,0,0, -64,126,148,0,15,127,114,118,61,6,244,116,148,0,224,121,210,21,3,240, -0,117,65,114,1,117,64,142,148,0,49,111,148,120,205,110,0,255,168,106, -78,111,255,255,0,85,65,82,1,85,49,143,148,120,74,143,255,255,60,6, -80,117,148,0,97,50,209,37,186,5,128,7,10,3,99,50,185,5,128,7, -246,2,186,5,128,7,252,2,100,50,186,5,128,7,246,1,103,50,185,5, -128,7,202,2,186,5,128,7,230,2,6,6,224,255,178,5,128,7,208,2, -35,55,1,0,191,255,62,255,3,240,0,21,202,17,1,21,128,7,200,2, -64,22,148,0,34,23,133,120,97,18,185,5,128,7,88,1,186,5,128,7, -178,2,99,18,185,5,128,7,74,1,186,5,128,7,164,2,90,18,97,18, -187,5,128,7,154,2,105,18,162,29,106,18,178,85,108,18,146,109,2,6, -236,255,177,5,128,7,132,2,186,5,128,7,30,1,2,6,234,255,177,5, -128,7,20,1,242,109,2,6,233,255,186,5,128,7,16,1,128,7,100,2, -3,240,0,125,29,119,0,0,65,122,1,125,79,119,255,255,0,53,61,62, -4,0,191,255,124,254,99,87,1,0,10,48,61,62,8,0,191,255,110,254, -99,87,1,0,10,48,61,62,12,0,191,255,96,254,99,87,1,0,10,48, -61,62,32,0,191,255,82,254,99,87,1,0,10,48,61,62,36,0,191,255, -68,254,99,87,1,0,10,48,61,62,40,0,191,255,54,254,99,87,1,0, -10,48,61,62,44,0,191,255,40,254,99,87,1,0,128,7,238,1,29,240, -0,109,100,16,3,240,0,93,2,80,65,90,1,93,133,13,3,240,0,93, -65,90,1,93,13,87,0,0,65,106,75,87,255,255,2,136,95,18,224,137, -202,245,128,7,190,1,3,240,0,133,61,127,0,0,65,130,1,133,207,126, -0,255,168,122,80,127,255,255,0,101,65,98,1,101,61,95,0,0,76,95, -255,255,128,7,150,1,35,55,1,0,28,56,191,255,190,253,0,234,181,13, -10,48,29,56,194,58,46,6,84,117,148,0,206,57,191,255,168,253,65,234, -60,111,1,0,99,87,1,0,237,233,150,245,128,7,100,1,35,55,1,0, -29,56,165,181,3,240,0,101,65,98,1,101,157,95,1,0,76,95,255,255, -61,143,2,0,0,85,209,142,0,255,65,82,1,85,168,138,74,143,255,255, -0,117,65,114,1,117,61,111,2,0,0,18,78,111,255,255,213,13,3,240, -0,93,61,87,5,0,65,90,1,93,194,81,10,135,0,0,65,18,75,135, -255,255,61,127,2,0,239,17,150,245,128,7,2,1,3,240,0,117,65,114, -1,117,29,240,0,107,78,111,255,255,0,19,98,18,209,21,226,29,99,18, -162,13,102,18,129,117,178,21,104,18,209,13,178,37,105,18,210,69,149,109, -35,55,1,0,61,62,4,0,191,255,250,252,99,87,1,0,3,48,128,255, -246,19,213,93,35,55,1,0,61,62,4,0,191,7,186,254,35,55,1,0, -61,62,4,0,191,255,214,252,99,87,1,0,10,48,61,62,8,0,191,7, -160,254,61,22,4,0,61,239,5,0,176,234,97,234,174,5,1,234,29,6, -193,255,185,5,32,238,62,0,35,55,1,0,2,56,191,255,164,252,1,226, -197,13,28,48,128,255,108,23,3,240,3,85,0,53,35,62,4,0,191,255, -140,252,65,226,99,87,1,0,253,225,166,245,229,37,35,55,1,0,28,56, -191,7,78,254,3,240,0,85,65,82,1,85,64,22,148,0,34,246,124,120, -0,133,65,130,1,133,176,127,255,255,74,127,255,255,64,22,148,0,34,246, -128,120,0,109,13,118,255,255,1,117,224,105,138,237,245,5,6,56,38,6, -48,18,133,0,128,255,128,6,35,95,1,0,38,6,115,119,148,0,166,89, -95,90,70,95,0,0,128,255,54,13,68,6,255,0,128,7,33,0,34,6, -76,117,148,0,64,14,148,0,97,7,81,117,2,240,1,53,0,141,224,137, -242,5,64,134,148,0,48,135,97,118,98,135,1,0,34,127,1,0,64,14, -148,0,97,127,245,116,0,50,191,255,74,252,64,6,63,0,128,7,97,0, -0,18,61,6,244,116,148,0,125,7,2,0,224,49,154,13,7,48,61,62, -2,0,61,70,4,0,128,255,214,23,229,5,97,50,218,5,7,48,128,255, -208,23,10,16,93,23,0,0,0,50,191,255,12,252,64,6,127,0,128,7, -225,0,6,224,64,14,148,0,97,231,245,116,199,238,255,0,64,14,148,0, -97,239,249,116,197,13,29,48,220,49,1,58,128,255,70,4,64,134,148,0, -48,135,41,117,224,129,218,5,29,120,95,234,224,121,170,245,64,110,148,0, -45,111,41,117,224,105,234,55,0,0,191,255,188,251,64,6,255,0,128,7, -33,0,128,255,20,4,64,14,148,0,97,87,245,116,64,134,148,0,48,135, -41,117,224,129,234,55,0,0,191,255,150,251,64,6,63,0,128,7,225,0, -6,224,28,232,133,13,64,142,148,0,49,143,41,117,224,137,138,13,65,234, -29,48,1,58,128,255,214,3,224,81,202,245,188,233,64,14,148,0,97,239, -245,116,64,118,148,0,46,119,41,117,224,113,234,55,0,0,191,255,82,251, -64,6,255,0,128,7,225,0,6,232,8,224,128,255,246,3,64,142,148,0, -49,143,41,117,224,137,218,5,29,48,28,56,128,255,4,7,64,118,148,0, -46,119,41,117,224,113,234,55,0,0,191,255,28,251,64,6,255,0,128,7, -225,240,6,192,7,216,155,0,61,6,40,117,148,0,24,224,27,208,149,37, -64,22,148,0,34,246,120,120,0,133,28,48,65,130,1,133,1,66,176,207, -255,255,25,56,128,255,154,3,61,119,1,0,224,113,186,21,28,48,1,58, -128,255,58,3,249,81,194,5,1,18,125,23,1,0,61,111,1,0,224,105, -234,5,65,226,26,96,95,210,224,97,218,221,61,95,1,0,224,89,218,5, -24,48,27,56,128,255,128,6,61,127,1,0,224,121,234,55,0,0,191,255, -156,250,64,6,255,240,128,7,225,241,6,192,7,184,8,216,155,0,57,6, -40,117,148,0,1,226,24,232,23,208,23,16,184,17,97,18,186,13,29,48, -27,56,1,66,128,255,34,3,57,231,1,0,224,225,146,77,213,77,98,18, -250,29,29,48,27,56,1,66,128,255,10,3,57,231,1,0,224,225,170,69, -29,54,1,0,27,56,1,66,128,255,246,2,57,231,1,0,224,225,178,53, -245,53,29,48,27,56,1,66,128,255,226,2,57,231,1,0,65,234,224,225, -218,45,221,102,3,0,226,13,250,233,161,245,181,13,95,210,26,48,27,56, -1,66,128,255,192,2,57,231,1,0,224,225,218,29,218,86,3,0,178,5, -250,233,161,245,253,209,146,21,27,56,200,58,27,57,200,58,27,57,200,58, -27,57,29,48,26,64,189,65,128,255,146,2,57,231,1,0,224,225,234,5, -24,48,23,56,184,57,128,255,162,5,224,225,234,55,0,0,191,255,194,249, -64,6,255,241,128,7,33,0,191,255,236,246,128,255,176,5,64,22,148,0, -34,23,136,120,64,14,148,0,224,17,234,143,0,0,65,143,114,118,32,86, -100,0,127,18,162,5,2,80,64,14,148,0,97,87,148,120,64,54,148,0, -64,14,148,0,97,87,244,116,64,62,148,0,39,63,109,118,134,55,77,118, -128,255,230,15,64,6,63,0,0,18,2,136,195,138,64,118,148,0,206,137, -113,7,165,120,65,18,2,6,156,255,230,245,64,14,148,0,97,7,197,123, -127,0,128,7,225,16,7,216,64,62,148,0,39,63,85,118,6,232,7,22, -255,255,97,18,179,5,99,18,234,13,29,48,128,255,138,1,10,224,29,48, -64,70,148,0,40,71,85,118,27,56,128,255,200,1,245,5,38,6,104,18, -133,0,128,255,52,1,31,226,28,80,64,6,255,16,128,7,225,0,6,224, -42,6,196,123,148,0,31,234,0,18,0,90,165,21,2,136,195,138,64,118, -148,0,206,137,49,103,165,120,252,97,226,53,224,97,218,5,127,234,202,5, -2,232,165,5,65,90,65,18,2,6,156,255,222,5,42,111,1,0,237,89, -150,237,127,234,170,5,2,232,10,240,0,101,65,98,1,101,12,6,156,255, -215,5,95,98,1,101,3,82,165,29,195,234,64,134,148,0,208,233,125,231, -165,120,64,62,148,0,61,238,164,120,39,63,81,118,28,48,191,255,62,255, -125,87,5,0,64,62,148,0,39,63,85,118,28,48,128,255,70,4,0,82, -64,6,255,0,128,7,225,48,6,216,0,226,0,210,229,53,28,232,195,234, -64,126,148,0,207,233,61,55,165,120,224,49,61,238,164,120,162,45,224,217, -210,5,230,217,178,5,65,210,197,37,61,63,5,0,191,255,240,254,64,22, -148,0,34,23,81,118,226,81,130,13,61,63,1,0,38,6,136,18,133,0, -128,255,252,1,61,55,1,0,4,58,128,255,230,3,64,22,148,0,34,246, -196,123,0,109,125,7,1,0,95,106,1,109,224,217,178,5,0,82,229,13, -65,226,28,6,156,255,254,5,64,102,148,0,44,103,197,123,236,209,182,197, -224,217,178,245,7,82,64,6,255,48,128,7,33,0,34,6,247,115,148,0, -6,143,0,0,66,143,0,0,65,50,145,0,65,18,224,137,138,253,2,82, -38,6,244,115,148,0,166,17,6,240,128,19,129,83,93,18,130,19,128,255, -82,8,64,6,63,0,128,7,225,16,1,18,64,14,148,0,97,23,45,117, -0,234,7,216,6,224,28,56,27,64,0,50,128,255,64,23,224,81,226,23, -0,0,64,14,148,0,97,23,41,117,64,22,148,0,34,23,41,117,224,17, -234,5,28,48,27,56,128,255,174,21,10,232,64,14,148,0,97,7,45,117, -29,80,64,6,255,16,128,7,33,0,1,18,64,14,148,0,97,23,41,117, -224,65,64,14,148,0,97,23,45,117,242,5,64,14,148,0,97,7,41,117, -128,255,210,21,64,14,148,0,97,7,45,117,64,6,63,0,0,82,181,13, -65,82,104,82,250,5,32,22,48,0,7,240,128,19,129,3,165,29,196,50, -64,126,0,240,6,128,79,129,162,245,245,13,6,16,156,18,106,18,206,5, -2,22,48,0,181,5,2,22,87,0,71,23,0,0,196,50,65,58,65,82, -104,82,150,245,71,7,0,0,127,0,8,16,245,5,38,143,1,0,103,143, -1,0,68,50,68,58,2,128,95,18,224,129,250,245,127,0,4,18,42,6, -68,114,148,0,43,6,228,115,148,0,165,13,44,6,240,240,240,240,107,103, -1,0,106,103,1,0,68,90,68,82,2,136,95,18,224,137,202,245,127,0, -128,7,33,0,4,18,42,6,68,114,148,0,43,6,228,115,148,0,42,135, -1,0,49,6,240,240,240,240,68,82,241,129,154,13,43,119,1,0,47,6, -240,240,240,240,68,90,239,113,146,13,38,6,192,18,133,0,191,255,126,254, -191,255,152,255,181,5,95,18,250,229,64,6,63,0,128,7,33,0,0,50, -191,255,212,253,1,18,64,14,148,0,65,23,112,118,0,50,191,255,42,246, -128,255,28,5,64,6,63,0,190,7,33,0,3,30,180,255,7,16,3,56, -213,5,71,135,0,0,65,50,65,58,6,135,0,0,224,129,154,253,2,48, -191,255,228,254,3,48,191,255,36,254,3,30,76,0,126,6,63,0,128,7, -225,16,0,218,0,226,0,50,128,255,76,16,10,232,1,50,128,255,68,16, -10,16,98,234,146,21,99,234,242,53,108,234,177,93,146,21,110,234,225,21, -162,77,29,6,240,255,201,53,210,45,29,6,236,255,130,69,245,77,2,48, -128,255,240,0,1,82,181,117,64,14,148,0,33,246,64,117,0,229,1,21, -133,101,64,86,148,0,42,87,97,118,31,226,224,81,146,93,64,14,148,0, -97,7,57,117,64,14,148,0,97,7,61,117,64,14,148,0,33,246,52,117, -0,229,224,17,1,21,146,77,64,14,148,0,97,87,57,117,197,69,29,48, -2,56,128,255,24,16,10,224,229,61,2,54,255,255,0,58,1,66,191,255, -0,254,64,134,148,0,48,135,41,117,224,129,234,223,0,0,27,224,128,225, -229,45,0,218,0,226,181,45,64,230,148,0,64,126,148,0,47,127,97,118, -60,231,69,117,224,121,154,37,61,6,14,0,1,0,64,110,224,255,29,112, -77,113,1,218,210,5,4,50,191,255,6,245,197,173,64,94,255,255,29,96, -75,97,242,13,8,18,64,14,148,0,65,23,244,116,64,14,148,0,97,239, -249,116,4,50,191,255,226,244,27,80,213,13,28,48,64,70,148,0,40,71, -161,120,27,56,191,255,220,241,64,86,148,0,42,87,161,120,64,6,255,16, -128,7,33,0,64,14,148,0,97,7,57,117,64,14,148,0,97,7,53,117, -31,18,64,14,148,0,97,23,65,117,64,14,148,0,97,7,77,117,6,18, -64,14,148,0,65,23,244,116,64,14,148,0,97,55,249,116,4,50,191,255, -132,244,128,255,148,16,64,6,63,0,128,7,33,0,1,18,64,14,148,0, -97,23,37,117,128,255,88,0,128,255,62,18,31,18,64,14,148,0,97,23, -109,118,128,255,42,17,64,142,148,0,49,143,97,118,224,137,234,5,31,18, -64,14,148,0,97,23,69,117,191,255,116,241,191,255,132,253,64,14,148,0, -97,7,153,120,64,6,63,0,128,7,225,0,6,232,7,224,128,255,114,17, -29,48,28,56,128,255,224,19,64,6,255,0,128,7,33,0,128,255,208,19, -128,255,210,19,64,6,63,0,128,7,33,0,128,255,194,19,128,255,196,19, -64,6,63,0,128,7,225,16,7,216,6,224,128,255,224,16,10,232,224,233, -170,5,8,234,41,6,36,117,148,0,221,142,2,0,178,109,64,134,148,0, -34,6,72,117,148,0,2,240,0,125,48,135,97,118,65,122,1,125,239,129, -203,13,64,14,148,0,97,7,73,117,64,22,148,0,34,246,68,117,0,117, -65,114,1,117,64,22,148,0,34,111,57,117,224,105,34,22,56,117,210,37, -2,240,0,101,45,6,52,117,148,0,95,98,1,101,186,13,13,240,64,86, -148,0,42,87,105,118,0,93,170,89,1,93,98,135,1,0,13,240,64,134, -148,0,48,135,101,118,0,141,176,137,1,141,172,13,1,82,64,14,148,0, -97,87,61,117,98,7,1,0,109,7,1,0,64,126,148,0,47,127,77,117, -224,121,146,37,41,119,1,0,224,113,218,29,64,22,148,0,34,111,81,117, -13,6,196,255,34,22,80,117,209,13,13,102,1,0,194,106,98,103,1,0, -64,126,148,0,59,119,1,0,207,105,109,119,85,117,34,111,1,0,13,6, -196,255,186,5,157,238,16,0,221,102,25,0,186,5,31,82,197,61,41,95, -1,0,224,89,130,45,64,86,148,0,42,87,45,117,224,81,226,13,28,48, -128,255,148,13,224,81,146,13,1,18,64,14,148,0,97,23,41,117,32,86, -156,255,213,37,129,234,249,5,1,18,64,14,148,0,97,23,49,117,133,229, -59,55,1,0,28,56,128,255,18,12,128,255,192,14,191,255,166,254,191,255, -122,228,133,5,64,14,148,0,97,7,49,117,1,18,105,23,1,0,64,14, -148,0,97,239,153,120,0,82,64,14,148,0,97,231,157,120,64,6,255,16, -128,7,97,0,128,255,56,13,64,22,148,0,34,23,73,118,61,6,224,123, -148,0,194,18,221,17,34,119,1,0,47,6,198,194,129,0,239,113,250,5, -64,110,148,0,45,111,93,118,98,111,1,0,191,255,188,251,64,102,148,0, -44,103,161,120,224,97,178,5,128,255,214,7,64,86,148,0,42,87,153,120, -202,94,17,0,194,13,9,18,129,82,169,5,7,18,64,14,148,0,65,23, -244,116,4,50,191,255,18,242,64,14,148,0,193,223,152,120,146,13,64,54, -148,0,38,55,157,120,128,255,86,9,224,81,178,5,191,255,222,236,64,134, -148,0,48,135,73,118,194,130,221,129,48,111,1,0,64,14,148,0,97,111, -93,118,128,255,216,12,64,6,127,0,128,7,97,0,128,255,18,13,64,22, -148,0,34,23,73,118,61,6,224,123,148,0,194,18,221,17,34,119,1,0, -47,6,68,195,129,0,239,113,250,5,64,110,148,0,45,111,93,118,98,111, -1,0,191,255,18,251,64,102,148,0,44,103,161,120,224,97,178,5,128,255, -44,7,64,86,148,0,42,87,153,120,202,94,17,0,194,13,9,18,129,82, -169,5,7,18,64,14,148,0,65,23,244,116,4,50,191,255,104,241,64,14, -148,0,193,223,152,120,146,13,64,54,148,0,38,55,157,120,128,255,172,8, -224,81,178,5,191,255,52,236,64,134,148,0,48,135,73,118,194,130,221,129, -48,111,1,0,64,14,148,0,97,111,93,118,128,255,188,12,64,6,127,0, -128,7,33,0,128,255,80,13,64,14,148,0,97,7,69,117,64,14,148,0, -97,7,49,117,64,6,63,0,64,22,148,0,34,246,208,123,2,82,128,83, -130,3,32,86,20,0,129,83,131,83,64,14,148,0,97,7,213,123,64,14, -148,0,97,7,205,123,64,14,148,0,97,7,49,117,127,0,128,7,225,16, -6,224,7,216,0,82,224,225,194,13,0,232,245,5,220,81,10,55,0,0, -128,255,130,12,65,234,29,80,251,233,134,253,64,6,255,16,128,7,225,243, -6,224,7,176,58,6,48,117,148,0,28,192,128,255,140,12,10,16,224,17, -222,5,58,143,1,0,224,137,130,253,58,135,1,0,224,129,162,5,0,18, -2,232,157,0,29,216,0,202,149,13,128,255,102,12,10,16,88,23,0,0, -194,201,65,194,153,0,224,17,230,5,27,104,95,218,155,0,224,105,170,245, -224,17,166,13,58,103,1,0,224,97,234,5,128,255,60,12,10,16,2,184, -151,0,56,6,212,123,148,0,224,17,142,29,106,234,178,5,109,234,218,61, -65,218,253,217,242,5,156,23,1,0,106,18,178,5,109,18,202,53,28,48, -191,255,242,239,28,48,10,56,191,255,64,255,120,7,1,0,197,181,249,185, -250,5,224,233,138,29,197,5,128,255,240,11,10,16,224,17,206,253,224,177, -178,13,58,143,1,0,224,137,242,5,14,18,92,23,0,0,122,7,1,0, -245,21,128,255,54,0,122,7,1,0,149,157,156,135,1,0,16,6,236,255, -218,13,56,119,1,0,188,127,1,0,239,113,207,5,128,255,74,0,181,141, -128,255,16,0,133,141,120,7,1,0,29,80,64,6,255,243,128,7,33,0, -38,6,208,123,148,0,64,22,148,0,34,23,213,123,6,240,130,19,2,142, -20,0,131,139,4,58,191,255,182,254,64,22,148,0,34,246,212,123,0,133, -65,130,1,133,64,6,63,0,128,7,33,0,64,22,148,0,34,246,212,123, -0,141,64,22,148,0,65,138,1,141,34,54,115,119,162,63,115,119,66,58, -191,255,128,254,64,6,63,0,128,7,225,0,6,232,64,142,148,0,49,143, -213,123,157,231,1,0,224,137,226,29,64,22,148,0,34,246,204,123,0,125, -65,122,1,125,15,6,235,255,185,13,64,14,148,0,97,7,205,123,38,6, -202,19,133,0,191,255,70,247,133,5,189,119,1,0,98,114,226,5,38,6, -222,19,133,0,191,255,50,247,0,18,29,86,1,0,229,5,138,111,1,0, -205,17,130,0,65,82,28,88,221,89,65,90,235,81,241,245,74,23,0,0, -28,62,2,0,29,48,191,255,2,254,189,119,1,0,98,114,130,13,64,22, -148,0,34,246,212,123,0,109,65,106,1,109,64,6,255,0,32,142,3,14, -64,14,148,0,97,143,69,118,3,130,64,14,148,0,97,135,77,118,32,126, -32,0,64,14,148,0,97,127,73,118,128,118,64,248,64,14,148,0,97,119, -81,118,2,106,64,14,148,0,97,111,85,118,32,102,0,16,64,14,148,0, -97,103,89,118,64,14,148,0,97,7,234,125,127,0,128,7,225,112,2,210, -64,142,148,0,49,143,73,118,17,128,194,130,16,136,46,6,224,123,148,0, -17,120,206,121,47,239,1,0,29,48,2,58,191,255,174,246,202,0,10,16, -2,104,13,96,167,98,204,94,15,0,11,80,138,0,10,200,2,136,17,128, -165,130,208,126,63,0,15,112,142,0,14,216,25,104,107,106,211,13,2,208, -208,210,29,102,2,0,12,48,2,58,191,255,116,246,10,224,26,225,4,210, -165,5,2,224,64,14,148,0,97,7,234,125,25,88,107,90,250,69,1,82, -64,14,148,0,97,87,234,125,29,142,2,0,64,14,148,0,97,143,245,125, -64,54,148,0,38,55,245,125,2,58,191,255,56,246,202,0,64,14,148,0, -97,87,236,125,64,54,148,0,38,55,245,125,64,70,148,0,40,71,85,118, -128,62,64,248,191,255,102,246,64,54,148,0,38,55,245,125,64,134,148,0, -48,135,85,118,16,56,191,255,114,249,28,120,131,122,207,118,14,0,28,104, -135,106,205,102,240,1,12,216,14,217,27,88,136,90,11,80,128,81,32,134, -0,254,10,136,80,137,27,16,17,17,2,120,207,233,128,7,204,2,27,112, -98,114,170,45,28,104,139,106,205,102,31,0,224,97,138,37,26,88,11,80, -221,81,220,142,31,0,17,120,194,122,15,128,45,6,224,123,148,0,16,112, -205,113,46,95,1,0,11,96,193,98,12,216,202,217,27,80,193,82,10,48, -2,58,191,255,140,245,10,16,2,136,218,137,209,233,128,7,124,2,26,128, -208,233,128,7,116,2,27,120,99,122,186,29,28,112,139,114,206,110,31,0, -224,105,154,21,220,102,31,0,12,80,194,82,10,88,48,6,224,123,148,0, -11,136,208,137,49,239,1,0,30,122,79,233,128,7,66,2,26,112,206,233, -128,7,58,2,27,104,13,6,240,255,210,5,27,96,12,6,239,255,170,45, -28,88,139,90,203,86,31,0,224,81,138,37,48,6,224,123,148,0,16,142, -212,0,220,126,63,0,15,112,193,114,49,111,1,0,14,216,205,217,27,48, -2,58,191,255,0,245,202,0,10,16,43,6,224,123,148,0,11,102,212,0, -2,80,44,143,1,0,10,232,209,233,128,7,224,1,26,128,208,233,128,7, -216,1,27,120,15,6,207,255,234,13,28,112,155,114,206,110,31,0,224,105, -202,5,70,234,128,7,190,1,26,96,204,233,128,7,182,1,27,88,11,6, -206,255,242,5,27,80,10,6,205,255,178,5,128,7,8,1,28,136,155,138, -209,134,31,0,224,129,170,125,220,126,31,0,224,121,226,117,220,118,31,0, -14,6,236,255,201,101,220,222,224,255,219,110,0,15,27,96,136,98,204,94, -240,0,11,80,13,81,27,136,133,138,209,134,1,0,16,120,10,121,27,112, -132,114,206,110,12,0,13,96,15,97,28,88,144,90,203,86,1,0,10,136, -193,138,17,128,12,129,16,120,207,0,15,80,220,118,31,0,14,110,236,255, -32,102,0,8,12,16,237,23,160,0,10,88,2,80,75,81,224,81,130,45, -48,6,224,123,148,0,16,142,12,0,28,120,144,122,15,112,193,114,206,110, -124,0,49,95,1,0,13,96,203,97,2,80,10,128,194,130,16,136,17,126, -252,255,15,216,204,217,27,48,2,58,191,255,244,243,10,232,27,118,2,0, -14,48,2,58,191,255,230,243,10,16,2,104,208,106,13,233,181,109,220,102, -31,0,12,80,194,82,10,88,48,6,224,123,148,0,11,136,208,137,49,239, -1,0,229,93,220,126,31,0,15,104,194,106,13,112,43,6,224,123,148,0, -14,96,203,97,44,239,1,0,149,85,26,80,202,233,229,77,27,136,17,6, -196,255,210,5,27,128,16,6,195,255,250,53,220,126,1,0,224,121,186,21, -46,6,254,255,63,0,28,216,78,217,27,104,149,106,13,96,128,97,64,86, -192,255,12,88,74,89,27,16,11,17,2,136,209,233,133,53,28,128,155,130, -208,126,31,0,224,121,202,13,220,118,31,0,107,114,226,5,220,110,31,0, -13,6,237,255,186,5,70,234,245,29,28,96,155,98,0,90,224,89,130,13, -220,86,31,0,10,6,229,255,186,5,72,234,181,21,26,136,209,233,133,21, -48,6,68,1,224,7,240,225,154,13,46,6,224,123,148,0,14,126,196,0, -47,239,1,0,181,5,26,104,205,233,64,14,148,0,97,239,241,125,29,48, -2,58,191,255,248,242,202,0,64,14,148,0,97,87,232,125,29,48,64,70, -148,0,40,71,85,118,128,62,64,248,191,255,44,243,29,48,64,102,148,0, -44,103,85,118,12,56,191,255,62,246,64,6,255,112,128,7,33,0,64,54, -148,0,38,55,241,125,64,142,148,0,241,143,233,125,17,56,64,70,148,0, -40,71,85,118,191,255,246,242,64,54,148,0,38,55,241,125,64,134,148,0, -48,135,85,118,16,56,191,255,2,246,64,126,148,0,239,127,235,125,224,121, -178,29,64,54,148,0,38,55,245,125,64,118,148,0,238,119,237,125,14,56, -64,70,148,0,40,71,85,118,191,255,182,242,64,54,148,0,38,55,245,125, -64,110,148,0,45,111,85,118,13,56,191,255,194,245,43,6,224,123,148,0, -11,102,204,0,12,80,42,143,1,0,94,138,106,143,1,0,64,14,148,0, -97,7,236,125,64,14,148,0,97,7,232,125,64,14,148,0,97,7,234,125, -64,6,63,0,128,7,33,0,6,16,130,0,2,128,194,130,16,136,46,6, -224,123,148,0,17,120,206,121,47,111,1,0,64,14,148,0,97,111,245,116, -0,50,191,255,144,233,64,6,63,0,128,7,33,0,6,16,130,0,2,128, -194,130,16,136,46,6,224,123,148,0,17,120,206,121,111,63,1,0,0,50, -191,255,106,233,64,6,63,0,0,66,38,79,1,0,0,18,2,128,194,130, -16,136,46,6,228,124,148,0,17,120,206,121,2,96,194,98,12,104,42,6, -224,123,148,0,13,88,202,89,43,143,1,0,47,135,1,0,241,129,178,5, -65,66,168,0,65,18,162,0,2,120,15,6,191,255,182,229,65,74,9,118, -255,255,8,104,141,0,78,111,0,0,0,18,2,88,194,90,11,96,49,6, -228,124,148,0,12,80,209,81,2,120,194,122,15,128,45,6,224,123,148,0, -16,112,205,113,46,103,1,0,42,95,1,0,236,89,130,13,65,74,9,86, -255,255,2,136,145,0,74,143,0,0,65,18,162,0,2,128,16,6,191,255, -230,221,102,79,1,0,127,0,128,7,33,0,38,6,224,123,148,0,39,6, -228,124,148,0,32,70,65,0,191,255,222,241,64,6,63,0,128,7,225,0, -6,224,28,16,32,150,68,0,242,17,242,5,32,150,96,0,242,17,146,29, -128,7,162,1,64,142,148,0,49,143,73,118,17,128,194,130,16,136,46,6, -224,123,148,0,17,120,206,121,47,111,1,0,92,106,111,111,1,0,191,255, -124,242,10,16,128,7,144,1,64,102,148,0,44,103,73,118,12,88,194,90, -11,96,49,6,224,123,148,0,12,80,209,81,42,135,1,0,94,130,106,135, -1,0,64,126,148,0,47,127,161,120,224,121,226,77,64,118,148,0,46,119, -73,118,14,104,194,106,13,112,43,6,224,123,148,0,14,96,203,97,44,55, -1,0,2,58,191,255,118,240,10,232,208,234,64,142,148,0,49,143,73,118, -17,128,194,130,16,136,46,6,224,123,148,0,17,120,206,121,47,87,1,0, -66,82,10,48,2,58,191,255,76,240,10,233,29,104,135,106,205,102,15,0, -12,88,139,0,11,16,49,6,1,0,224,7,29,80,81,81,64,134,224,7, -240,81,154,21,2,120,103,122,225,13,2,112,111,114,187,13,3,106,64,14, -148,0,65,111,244,116,64,14,148,0,97,231,249,116,213,101,1,98,64,14, -148,0,65,103,244,116,245,93,64,94,148,0,43,95,73,118,11,80,194,82, -10,88,48,6,224,123,148,0,11,136,208,137,49,55,1,0,2,58,191,255, -220,239,128,22,64,248,226,81,234,5,64,14,148,0,65,7,244,116,213,69, -64,126,148,0,47,127,73,118,15,112,194,114,14,120,44,6,224,123,148,0, -15,104,204,105,45,55,1,0,2,58,191,255,168,239,128,22,64,216,226,81, -218,29,7,90,64,14,148,0,65,95,244,116,64,86,148,0,42,87,73,118, -10,136,194,138,17,80,47,6,224,123,148,0,10,128,207,129,48,55,1,0, -64,118,148,0,238,119,5,126,14,56,2,66,191,255,186,239,197,21,3,106, -64,14,148,0,65,111,244,116,64,14,148,0,97,231,249,116,165,13,3,98, -64,14,148,0,65,103,244,116,64,14,148,0,97,231,249,116,4,50,191,255, -216,230,1,18,2,80,64,6,255,0,92,26,99,7,2,0,1,138,67,143, -2,0,35,135,2,0,97,130,186,5,0,18,149,13,35,127,2,0,15,6, -0,255,186,5,1,18,165,5,1,18,2,80,68,26,127,0,128,7,33,0, -6,16,2,138,64,14,148,0,65,143,244,116,64,14,148,0,97,23,249,116, -64,14,148,0,97,63,253,116,4,50,191,255,124,230,64,6,63,0,128,7, -33,0,191,255,164,255,170,0,64,14,148,0,65,87,244,116,32,142,3,14, -64,14,148,0,97,143,249,116,32,134,32,0,64,14,148,0,97,135,253,116, -3,122,64,14,148,0,97,127,1,117,31,114,64,14,148,0,97,119,25,117, -4,106,64,14,148,0,97,111,29,117,64,6,63,0,224,49,154,21,64,142, -133,0,49,143,69,36,64,14,148,0,97,143,217,123,48,6,44,195,129,0, -64,14,133,0,97,135,69,36,149,13,64,126,148,0,47,127,217,123,64,14, -133,0,97,127,69,36,127,0,128,7,32,22,224,57,162,13,48,6,224,123, -148,0,16,142,152,0,17,120,207,31,0,0,149,13,45,6,224,123,148,0, -13,118,152,0,14,96,204,159,0,0,42,6,224,123,148,0,10,94,40,0, -107,55,1,0,64,142,148,0,49,143,73,118,17,128,194,130,16,136,46,6, -224,123,148,0,17,120,206,121,47,111,1,0,68,106,111,111,1,0,127,0, -128,7,33,0,6,16,100,18,238,13,48,6,224,123,148,0,16,142,24,0, -2,112,194,114,14,120,15,104,209,105,45,23,1,0,165,21,43,6,224,123, -148,0,11,102,12,0,2,136,194,138,17,80,44,127,1,0,10,128,207,129, -16,48,4,58,191,255,186,237,10,16,2,80,64,6,63,0,0,18,2,80, -127,0,31,18,2,80,127,0,128,7,33,0,191,255,42,220,202,22,128,0, -224,17,202,13,38,6,56,112,148,0,39,6,224,123,148,0,32,70,65,0, -191,255,78,238,181,13,38,6,64,113,148,0,39,6,224,123,148,0,32,70, -65,0,191,255,56,238,64,6,63,0,128,7,33,0,191,255,236,219,202,22, -128,0,224,17,202,13,38,6,224,123,148,0,39,6,56,112,148,0,32,70, -65,0,191,255,16,238,181,13,38,6,224,123,148,0,39,6,64,113,148,0, -32,70,65,0,191,255,250,237,64,14,148,0,97,7,37,117,64,6,63,0, -128,7,33,0,38,6,56,112,148,0,39,6,224,123,148,0,32,70,65,0, -191,255,214,237,92,26,99,103,1,0,229,103,64,0,0,0,236,159,32,0, -64,102,130,0,44,102,196,235,236,151,32,0,224,7,70,1,0,0,0,0, -0,0,35,103,1,0,68,26,64,6,63,0,128,7,33,0,38,6,224,123, -148,0,39,6,56,112,148,0,32,70,65,0,191,255,142,237,64,14,148,0, -97,7,37,117,64,6,63,0,0,18,2,80,127,0,0,18,2,80,127,0, -34,6,166,0,64,22,1,0,245,13,0,143,47,250,209,142,31,0,162,13, -64,55,40,250,32,22,32,0,2,128,95,18,224,129,218,253,181,5,95,18, -154,245,127,0,64,22,1,0,245,13,0,143,46,250,209,142,31,0,162,13, -128,87,39,250,32,22,32,0,2,128,95,18,224,129,218,253,197,5,95,18, -154,245,31,82,127,0,64,22,1,0,133,13,0,143,47,250,209,142,31,0, -17,6,240,255,177,5,95,18,138,253,127,0,32,22,64,0,64,23,174,241, -127,0,192,191,32,250,7,18,64,23,68,244,6,18,64,23,100,244,192,63, -32,250,192,39,32,250,0,143,32,250,209,142,243,0,64,143,32,250,32,22, -162,0,192,15,32,250,192,135,32,250,96,23,34,250,192,63,42,250,192,7, -42,250,192,191,43,250,0,127,45,250,207,126,240,0,64,127,45,250,0,111, -44,250,205,110,240,0,64,111,44,250,192,55,32,250,192,47,32,250,64,7, -174,241,127,0,128,7,33,0,191,255,150,255,64,6,63,0,128,7,33,0, -191,255,128,255,191,255,236,255,64,14,148,0,97,7,97,118,64,14,148,0, -97,7,101,118,64,14,148,0,97,7,105,118,64,6,63,0,128,7,33,0, -191,255,212,255,32,22,0,252,64,14,148,0,97,23,109,118,64,7,10,248, -128,143,11,248,224,137,218,253,64,6,63,0,128,7,33,0,6,6,240,255, -178,13,6,6,160,255,178,37,6,6,64,252,226,29,6,6,144,250,194,5, -197,29,1,82,181,29,64,142,148,0,49,143,37,117,224,137,170,21,0,135, -46,250,208,134,31,0,210,13,128,63,39,250,224,57,130,245,244,57,226,237, -38,6,12,20,133,0,191,255,162,236,133,237,2,82,165,5,0,82,64,6, -63,0,32,143,112,240,209,134,3,0,202,253,64,7,113,240,224,111,113,240, -141,110,3,0,96,111,112,240,32,95,112,240,203,86,3,0,202,253,127,0, -224,143,43,6,92,26,99,15,6,240,1,93,7,16,43,6,1,0,64,14, -3,93,226,0,162,57,144,58,64,94,33,14,11,57,5,61,194,0,64,126, -97,0,15,17,7,21,127,0,43,6,92,26,99,15,6,240,1,93,7,16, -43,6,1,0,64,14,3,93,226,0,162,57,144,58,64,94,33,15,11,57, -5,61,194,22,254,255,47,6,1,0,97,0,15,17,7,21,127,0,128,7, -33,0,3,18,64,23,10,248,64,142,130,0,49,62,96,194,32,54,96,5, -191,255,138,255,64,134,130,0,48,62,96,194,32,54,112,5,191,255,122,255, -64,126,130,0,47,62,96,194,32,54,128,5,191,255,106,255,64,118,130,0, -46,62,96,194,32,54,144,5,191,255,90,255,32,54,96,0,64,110,133,0, -45,62,68,36,191,255,120,255,0,50,32,62,48,6,191,255,158,237,44,6, -206,194,129,0,64,14,133,0,97,103,69,36,64,6,63,0,31,18,64,142, -240,15,6,80,81,81,154,13,128,95,11,248,64,7,10,248,128,135,11,248, -224,129,218,253,97,58,226,5,98,58,242,5,100,58,130,13,165,13,134,23, -1,0,197,13,230,23,1,0,149,13,38,23,1,0,229,5,1,98,64,14, -148,0,97,103,41,117,224,81,250,5,64,95,10,248,128,127,11,248,235,121, -218,253,2,80,127,0,130,7,225,243,6,232,7,216,8,208,4,18,100,210, -169,5,26,16,56,6,40,117,148,0,2,224,64,126,240,15,29,128,79,129, -250,85,2,18,97,226,146,13,98,226,242,5,100,226,210,5,1,18,120,23, -1,0,245,101,64,94,1,0,29,200,75,201,154,13,191,255,4,216,10,176, -150,54,224,0,191,255,90,216,1,18,0,111,10,248,28,86,255,255,97,82, -211,5,99,82,154,37,27,184,245,29,64,7,10,248,128,143,11,248,224,137, -218,253,28,122,29,128,79,129,48,119,1,0,97,226,99,119,1,0,250,5, -221,102,3,0,195,97,76,223,0,0,133,13,221,142,2,0,129,138,193,138, -195,137,113,223,0,0,35,191,1,0,2,88,13,16,11,17,64,23,10,248, -128,143,11,248,226,137,218,253,28,122,29,128,79,129,112,191,1,0,224,201, -64,111,10,248,138,29,22,48,191,255,222,215,197,21,97,226,226,5,98,226, -242,5,100,226,130,13,165,13,93,223,0,0,165,13,125,223,0,0,245,5, -125,223,1,0,197,5,1,18,120,23,1,0,56,119,1,0,68,234,224,113, -202,5,92,210,224,209,191,141,66,6,255,243,42,6,252,19,133,0,127,0, -127,0,127,0,1,82,127,0,127,0,127,0,127,0,127,0,127,0,192,25, -1,50,127,0,128,7,97,0,61,6,240,240,240,240,36,135,253,133,49,6, -241,240,240,240,241,129,242,5,100,239,253,133,191,255,196,209,128,255,64,33, -36,55,5,134,100,239,253,133,191,255,164,205,100,7,253,133,128,255,44,0, -64,6,127,0,128,7,33,0,49,6,240,240,240,240,100,143,253,133,191,255, -150,209,128,255,18,33,48,6,241,240,240,240,100,135,253,133,64,6,63,0, -33,6,176,215,1,0,97,0,140,7,97,0,100,7,9,134,100,7,13,134, -100,7,21,134,61,6,120,135,133,0,29,48,0,58,32,70,128,0,190,255, -76,17,100,239,17,134,29,142,128,0,100,143,25,134,34,6,244,14,149,0, -100,23,33,134,48,6,244,30,149,0,100,239,29,134,162,129,100,135,37,134, -100,7,41,134,40,6,22,243,129,0,99,23,1,0,38,6,176,134,133,0, -36,111,37,134,39,6,52,20,133,0,99,7,21,0,99,7,17,0,99,7, -13,0,99,7,9,0,99,111,5,0,41,6,77,73,84,65,128,255,228,0, -100,7,45,134,100,7,49,134,76,6,127,0,128,7,33,0,96,7,37,183, -96,7,41,183,96,7,53,183,96,7,57,183,32,142,32,0,96,143,61,183, -64,7,64,183,32,134,64,183,16,102,1,0,1,90,11,80,0,18,197,5, -129,82,65,18,130,0,202,126,1,0,178,253,76,23,0,0,65,90,65,98, -11,6,0,255,153,245,32,54,64,184,0,58,32,70,128,0,190,255,134,16, -96,7,45,183,96,7,49,183,96,7,193,184,64,6,63,0,128,7,97,0, -6,232,229,87,64,0,224,7,96,1,61,143,49,0,10,248,99,138,154,21, -32,135,193,184,65,130,96,135,193,184,255,47,32,0,29,48,128,255,52,0, -224,81,178,5,128,255,52,0,0,18,133,21,61,127,53,0,224,121,130,13, -125,7,53,0,255,47,32,0,32,22,25,0,213,5,255,47,32,0,32,22, -18,0,2,80,64,6,127,0,33,6,20,190,1,0,97,0,33,6,212,200, -1,0,97,0,128,7,225,243,9,184,35,183,45,0,35,215,53,0,35,223, -37,0,6,232,27,48,35,231,41,0,8,192,28,64,7,200,32,62,239,0, -190,255,226,15,29,48,0,58,32,70,152,0,190,255,214,15,125,207,41,0, -125,199,69,0,125,191,73,0,125,223,13,0,125,231,21,0,28,142,255,255, -219,137,125,143,17,0,35,159,49,0,214,22,31,0,125,23,45,0,211,126, -31,0,125,127,61,0,125,215,25,0,125,215,29,0,3,114,125,119,49,0, -45,6,10,245,129,0,125,111,85,0,125,239,89,0,1,98,226,103,192,0, -125,103,65,0,29,48,39,6,180,17,130,0,128,255,80,30,229,87,64,0, -224,7,96,1,10,224,42,6,68,82,72,84,32,23,45,183,125,87,1,0, -224,17,194,13,34,87,145,0,98,239,145,0,106,239,141,0,125,23,141,0, -125,87,145,0,245,5,96,239,45,183,125,239,141,0,125,239,145,0,32,143, -49,183,32,135,193,184,65,138,96,143,49,183,65,130,37,127,197,131,96,135, -193,184,224,121,210,5,61,54,136,0,190,255,42,13,252,47,32,0,35,159, -57,0,224,153,146,13,29,48,191,255,232,254,224,81,130,21,191,255,232,254, -213,13,229,87,64,0,224,7,96,1,32,119,193,184,10,224,95,114,96,119, -193,184,252,47,32,0,0,82,64,6,255,243,128,7,132,7,225,240,49,6, -77,73,84,65,241,49,178,5,128,7,74,1,99,7,5,0,1,202,3,194, -229,87,64,0,224,7,96,1,10,224,36,87,17,134,42,23,1,0,224,17, -99,23,1,0,178,5,98,31,25,0,36,127,17,134,106,7,1,0,68,122, -36,119,25,134,100,127,17,134,238,121,218,5,36,111,29,134,100,111,17,134, -100,7,21,134,252,47,32,0,229,87,64,0,224,7,96,1,149,93,34,87, -17,0,2,232,234,233,202,5,99,7,1,0,149,21,34,103,21,0,106,103, -21,0,34,95,21,0,34,87,17,0,107,87,17,0,34,143,17,0,99,143, -1,0,113,31,25,0,61,119,1,0,14,6,223,255,185,13,14,110,224,255, -125,111,1,0,0,218,35,142,4,0,125,239,17,0,149,21,61,223,9,0, -61,95,5,0,61,215,13,0,125,95,1,0,224,89,226,5,35,142,4,0, -125,239,17,0,165,5,0,136,125,143,25,0,252,47,32,0,224,217,226,5, -26,48,63,6,2,244,129,0,123,0,229,87,64,0,224,7,96,1,10,224, -61,127,25,0,35,134,4,0,240,121,234,5,125,7,25,0,29,48,128,255, -92,0,252,47,32,0,229,87,64,0,224,7,96,1,35,23,1,0,10,224, -224,17,202,165,36,119,21,134,224,113,202,21,32,23,37,183,32,111,193,184, -98,199,49,0,98,207,57,0,65,106,96,111,193,184,252,47,32,0,32,55, -37,183,128,255,20,0,191,7,206,254,252,47,32,0,191,7,198,254,68,6, -255,240,33,6,92,201,1,0,97,0,128,7,193,0,6,232,229,87,64,0, -224,7,96,1,61,23,1,0,10,224,224,17,130,61,61,143,25,0,224,137, -202,53,2,6,223,255,201,5,32,22,31,0,165,5,95,18,194,18,36,119, -17,134,36,87,25,134,206,17,234,17,129,13,170,17,162,18,2,136,36,23, -29,134,194,138,209,17,34,87,1,0,224,81,162,21,125,87,17,0,34,127, -1,0,47,127,21,0,125,127,21,0,111,239,17,0,34,111,1,0,125,23, -25,0,109,239,21,0,149,13,125,239,21,0,125,239,17,0,125,23,25,0, -98,239,1,0,252,47,32,0,0,82,64,6,223,0,128,7,225,0,6,232, -229,87,64,0,224,7,96,1,61,143,49,0,10,248,100,138,202,13,32,135, -193,184,65,130,96,135,193,184,255,47,32,0,29,48,191,255,158,252,197,13, -61,231,105,0,255,47,32,0,224,225,226,5,29,48,63,6,78,245,129,0, -124,0,64,6,255,0,128,7,97,0,32,23,37,183,6,232,224,17,162,13, -49,6,176,134,133,0,241,17,210,5,36,135,253,133,224,129,194,5,32,86, -19,0,181,45,224,233,186,5,0,82,245,37,229,87,64,0,224,7,96,1, -10,248,32,23,37,183,4,122,98,127,49,0,1,114,98,119,57,0,32,111, -193,184,98,7,133,0,65,106,96,111,193,184,255,47,32,0,32,23,37,183, -98,239,77,0,34,54,76,0,191,255,194,254,32,55,37,183,191,255,178,254, -32,87,37,183,42,87,133,0,64,6,127,0,128,7,225,16,6,232,61,23, -49,0,0,218,97,18,178,5,98,18,154,53,229,87,64,0,224,7,96,1, -37,143,201,131,10,224,224,137,210,5,61,54,136,0,190,255,6,10,61,23, -141,0,125,7,1,0,226,233,202,5,96,7,45,183,181,21,61,135,145,0, -98,135,145,0,32,111,45,183,61,119,141,0,61,127,145,0,253,105,111,119, -141,0,218,5,61,103,141,0,96,103,45,183,32,95,49,183,95,90,96,95, -49,183,252,47,32,0,181,5,32,222,17,0,27,80,64,6,255,16,128,7, -225,16,6,248,7,232,8,216,229,87,64,0,224,7,96,1,63,143,45,0, -123,143,1,0,63,135,49,0,10,224,224,129,226,13,127,239,45,0,127,239, -61,0,1,122,253,127,192,0,127,127,65,0,252,47,32,0,128,7,74,1, -63,103,33,0,63,23,45,0,255,97,194,37,194,18,34,87,65,184,255,81, -34,22,64,184,186,13,98,103,1,0,63,135,65,0,32,127,57,183,48,136, -81,121,96,127,57,183,63,111,37,0,63,119,33,0,1,82,110,111,37,0, -253,87,192,0,63,103,37,0,63,95,33,0,127,87,65,0,108,95,33,0, -213,77,194,18,98,7,65,184,63,103,65,0,32,23,53,183,44,88,75,17, -32,87,57,183,96,23,53,183,75,81,96,87,57,183,1,138,253,143,192,0, -127,143,65,0,194,126,255,0,130,13,194,110,255,0,141,111,65,183,96,111, -61,183,229,45,194,134,0,255,178,13,136,18,194,110,255,0,141,143,65,183, -17,110,8,0,96,111,61,183,149,37,64,118,255,0,2,120,78,121,178,13, -144,18,194,94,255,0,139,127,65,183,15,110,16,0,96,111,61,183,165,21, -64,102,0,255,2,104,76,105,146,13,152,18,130,111,65,183,13,110,24,0, -96,111,61,183,213,5,32,110,32,0,96,111,61,183,32,87,41,183,234,249, -234,13,32,23,61,183,2,6,224,255,242,5,194,18,34,111,65,184,96,111, -41,183,181,5,96,7,41,183,127,239,45,0,127,239,61,0,3,98,32,95, -193,184,127,103,49,0,65,90,96,95,193,184,252,47,32,0,31,48,191,255, -26,250,32,143,37,183,32,87,41,183,234,137,242,5,36,135,253,133,224,129, -186,5,191,255,10,250,0,82,64,6,255,16,128,7,225,0,6,232,61,54, -76,0,128,255,114,0,229,87,64,0,224,7,96,1,61,23,49,0,10,248, -97,18,162,45,98,18,130,45,224,17,170,21,2,138,125,143,49,0,1,130, -32,127,193,184,125,135,57,0,65,122,96,127,193,184,255,47,32,0,29,48, -191,255,86,252,245,21,2,114,125,119,49,0,1,106,125,111,57,0,61,231, -105,0,255,47,32,0,224,225,226,5,29,48,63,6,68,248,129,0,124,0, -125,7,57,0,181,5,255,47,32,0,0,82,64,6,255,0,128,7,193,0, -6,232,229,87,64,0,224,7,96,1,61,23,25,0,10,224,224,17,130,45, -61,87,17,0,234,233,170,13,34,143,1,0,253,137,186,5,98,7,1,0, -125,7,25,0,181,29,61,135,21,0,106,135,21,0,61,127,21,0,61,119, -17,0,61,23,25,0,111,119,17,0,34,111,1,0,253,105,154,13,61,103, -17,0,108,23,25,0,61,95,25,0,107,103,1,0,125,7,25,0,252,47, -32,0,0,82,64,6,223,0,128,7,225,0,35,231,21,0,35,23,13,0, -35,87,17,0,6,248,127,63,5,0,127,23,9,0,127,87,13,0,127,71, -17,0,127,79,21,0,127,7,33,0,229,87,64,0,224,7,96,1,10,232, -49,6,77,73,84,65,36,23,45,134,127,143,1,0,224,17,194,13,34,87, -41,0,98,255,41,0,106,255,37,0,127,23,37,0,127,87,41,0,245,5, -100,255,45,134,127,255,37,0,127,255,41,0,36,135,49,134,65,130,100,135, -49,134,253,47,32,0,224,225,210,5,63,54,8,0,191,255,56,251,0,82, -64,6,255,0,128,7,33,0,38,143,33,0,224,137,218,5,38,135,9,0, -224,129,202,5,32,86,23,0,213,5,72,50,191,255,18,251,0,82,64,6, -63,0,128,7,193,0,38,238,8,0,229,87,64,0,224,7,96,1,10,224, -36,103,29,134,61,87,25,0,236,81,161,37,36,23,25,134,226,81,233,29, -36,95,17,134,235,81,209,5,171,81,162,82,10,16,133,13,61,119,25,0, -171,17,172,113,162,114,162,18,206,17,61,87,1,0,65,18,10,6,223,255, -249,5,10,86,224,255,202,17,125,23,1,0,181,5,125,23,1,0,61,23, -25,0,224,17,130,45,61,87,17,0,234,233,170,13,34,135,1,0,253,129, -186,5,98,7,1,0,125,7,25,0,181,29,61,127,21,0,106,127,21,0, -61,119,21,0,61,111,17,0,61,23,25,0,110,111,17,0,34,103,1,0, -253,97,154,13,61,95,17,0,107,23,25,0,61,87,25,0,106,95,1,0, -125,7,25,0,252,47,32,0,0,82,64,6,223,0,128,7,193,48,6,232, -7,216,8,208,229,87,64,0,224,7,96,1,61,143,33,0,10,224,224,137, -218,5,125,223,9,0,125,215,13,0,252,47,32,0,0,82,64,6,223,48, -128,7,193,0,6,224,229,87,64,0,224,7,96,1,10,232,100,231,33,175, -253,47,32,0,64,6,223,0,128,7,193,0,6,232,125,63,5,0,125,71, -9,0,125,7,13,0,125,7,17,0,229,87,64,0,224,7,96,1,10,224, -49,6,65,77,69,83,36,23,53,134,125,143,1,0,224,17,194,13,34,87, -25,0,98,239,25,0,106,239,21,0,125,23,21,0,125,87,25,0,245,5, -100,239,53,134,125,239,21,0,125,239,25,0,36,135,57,134,65,130,100,135, -57,134,252,47,32,0,0,82,64,6,223,0,128,7,225,16,6,224,229,87, -64,0,224,7,96,1,36,143,57,134,10,248,95,138,100,143,57,134,60,23, -21,0,124,7,1,0,226,225,202,5,100,7,53,134,181,21,60,135,25,0, -98,135,25,0,36,111,53,134,60,119,21,0,60,127,25,0,252,105,111,119, -21,0,218,5,60,103,21,0,100,103,53,134,32,95,193,184,65,90,96,95, -193,184,255,47,32,0,60,239,13,0,1,218,133,37,229,87,64,0,224,7, -96,1,10,248,255,47,32,0,32,87,193,184,125,7,105,0,65,82,96,87, -193,184,61,54,76,0,191,255,234,252,125,223,133,0,61,239,113,0,61,55, -117,0,191,255,86,246,60,143,17,0,95,138,124,143,17,0,60,135,17,0, -224,129,234,221,229,87,64,0,224,7,96,1,32,127,193,184,10,248,95,122, -96,127,193,184,255,47,32,0,32,111,37,183,32,119,41,183,238,105,178,5, -191,255,36,246,0,82,64,6,255,16,128,7,225,0,6,232,61,231,109,0, -229,87,64,0,224,7,96,1,61,143,105,0,10,248,224,137,162,77,224,225, -130,77,60,127,1,0,48,6,65,77,69,83,240,121,154,69,61,23,113,0, -125,7,105,0,226,233,202,5,124,7,13,0,245,13,124,23,13,0,61,119, -113,0,61,111,117,0,110,111,117,0,61,103,117,0,61,95,113,0,108,95, -113,0,60,87,17,0,95,82,124,87,17,0,61,143,49,0,102,138,186,21, -13,130,32,127,193,184,125,135,133,0,65,122,96,127,193,184,255,47,32,0, -29,48,191,255,142,245,224,81,226,5,191,255,142,245,181,5,255,47,32,0, -61,119,101,0,224,113,226,5,61,54,76,0,191,255,244,251,229,5,125,7, -77,0,181,5,255,47,32,0,64,6,255,0,128,7,193,0,35,23,9,0, -6,232,125,63,5,0,125,7,41,0,125,7,45,0,125,71,9,0,97,66, -202,5,130,18,2,80,229,21,98,66,218,5,131,18,2,80,193,82,133,21, -100,66,218,5,132,18,2,80,194,82,165,13,104,66,218,5,133,18,2,80, -195,82,197,5,134,18,2,80,196,82,125,79,25,0,194,82,201,81,125,87, -29,0,125,79,33,0,125,79,37,0,125,7,17,0,125,23,21,0,125,23, -13,0,229,87,64,0,224,7,96,1,10,224,42,6,85,69,85,81,36,23, -61,134,125,87,1,0,224,17,194,13,34,87,53,0,98,239,53,0,106,239, -49,0,125,23,49,0,125,87,53,0,245,5,100,239,61,134,125,239,49,0, -125,239,53,0,36,143,65,134,65,138,100,143,65,134,252,47,32,0,0,82, -64,6,223,0,128,7,225,16,6,224,229,87,64,0,224,7,96,1,36,143, -65,134,10,248,95,138,100,143,65,134,60,23,49,0,124,7,1,0,226,225, -202,5,100,7,61,134,181,21,60,135,53,0,98,135,53,0,36,111,61,134, -60,119,49,0,60,127,53,0,252,105,111,119,49,0,218,5,60,103,49,0, -100,103,61,134,32,95,193,184,65,90,96,95,193,184,255,47,32,0,60,239, -41,0,1,218,165,37,229,87,64,0,224,7,96,1,10,248,255,47,32,0, -32,87,193,184,125,7,105,0,65,82,96,87,193,184,61,54,76,0,191,255, -154,250,125,223,133,0,125,7,77,0,61,239,113,0,61,55,117,0,191,255, -2,244,60,143,45,0,95,138,124,143,45,0,60,135,45,0,224,129,202,221, -229,87,64,0,224,7,96,1,32,127,193,184,10,248,95,122,96,127,193,184, -255,47,32,0,32,111,37,183,32,119,41,183,238,105,178,5,191,255,208,243, -0,82,64,6,255,16,128,7,225,48,6,248,7,216,8,208,229,87,64,0, -224,7,96,1,63,143,21,0,10,224,224,137,186,5,128,7,30,2,63,23, -41,0,224,17,250,117,63,135,21,0,63,127,17,0,95,130,127,135,21,0, -65,122,127,127,17,0,27,16,63,87,9,0,63,79,37,0,97,82,242,77, -98,82,242,69,100,82,178,61,104,82,210,37,34,119,1,0,105,119,1,0, -34,111,5,0,105,111,5,0,34,103,9,0,105,103,9,0,34,95,13,0, -105,95,13,0,34,87,17,0,105,87,17,0,34,143,21,0,105,143,21,0, -34,135,25,0,105,135,25,0,34,127,29,0,105,127,29,0,2,22,32,0, -9,78,32,0,34,119,1,0,105,119,1,0,34,111,5,0,105,111,5,0, -34,103,9,0,105,103,9,0,34,95,13,0,105,95,13,0,2,22,16,0, -9,78,16,0,34,87,1,0,105,87,1,0,34,143,5,0,105,143,5,0, -72,18,72,74,34,135,1,0,105,135,1,0,68,18,68,74,34,127,1,0, -105,127,1,0,63,103,37,0,63,119,9,0,63,95,29,0,194,114,206,97, -127,103,37,0,235,97,209,5,63,143,25,0,127,143,37,0,0,250,128,7, -192,1,2,232,61,23,113,0,226,233,202,5,127,7,41,0,245,13,127,23, -41,0,61,135,113,0,61,127,117,0,112,127,117,0,61,119,117,0,61,111, -113,0,110,111,113,0,63,103,45,0,32,95,193,184,95,98,127,103,45,0, -125,7,105,0,65,90,96,95,193,184,252,47,32,0,27,16,63,87,9,0, -61,79,125,0,97,82,242,77,98,82,242,69,100,82,178,61,104,82,210,37, -34,87,1,0,105,87,1,0,34,143,5,0,105,143,5,0,34,135,9,0, -105,135,9,0,34,127,13,0,105,127,13,0,34,119,17,0,105,119,17,0, -34,111,21,0,105,111,21,0,34,103,25,0,105,103,25,0,34,95,29,0, -105,95,29,0,2,22,32,0,9,78,32,0,34,87,1,0,105,87,1,0, -34,143,5,0,105,143,5,0,34,135,9,0,105,135,9,0,34,127,13,0, -105,127,13,0,2,22,16,0,9,78,16,0,34,119,1,0,105,119,1,0, -34,111,5,0,105,111,5,0,72,18,72,74,34,103,1,0,105,103,1,0, -68,18,68,74,34,95,1,0,61,87,101,0,105,95,1,0,224,81,226,5, -61,54,76,0,191,255,40,248,181,5,125,7,77,0,125,7,133,0,29,48, -191,255,148,241,224,81,178,5,191,255,148,241,0,82,245,77,224,209,146,77, -32,239,37,183,125,223,125,0,125,255,109,0,49,6,12,4,130,0,63,23, -41,0,125,143,105,0,224,17,194,21,125,23,113,0,63,127,41,0,47,127, -117,0,125,127,117,0,63,111,41,0,45,111,117,0,109,239,113,0,63,103, -41,0,108,239,117,0,245,5,127,239,41,0,125,239,117,0,125,239,113,0, -63,95,45,0,5,82,65,90,127,95,45,0,1,138,125,87,49,0,32,135, -193,184,125,143,57,0,65,130,96,135,193,184,125,215,77,0,252,47,32,0, -127,210,210,5,61,54,76,0,191,255,170,243,29,48,191,255,156,243,61,87, -133,0,213,5,11,250,252,47,32,0,31,80,64,6,255,48,128,7,225,48, -6,248,7,208,8,216,229,87,64,0,224,7,96,1,63,143,17,0,10,224, -224,137,186,5,128,7,100,2,63,23,33,0,63,87,9,0,26,72,97,82, -242,77,98,82,242,69,100,82,178,61,104,82,210,37,34,135,1,0,105,135, -1,0,34,127,5,0,105,127,5,0,34,119,9,0,105,119,9,0,34,111, -13,0,105,111,13,0,34,103,17,0,105,103,17,0,34,95,21,0,105,95, -21,0,34,87,25,0,105,87,25,0,34,143,29,0,105,143,29,0,2,22, -32,0,9,78,32,0,34,135,1,0,105,135,1,0,34,127,5,0,105,127, -5,0,34,119,9,0,105,119,9,0,34,111,13,0,105,111,13,0,2,22, -16,0,9,78,16,0,34,103,1,0,105,103,1,0,34,95,5,0,105,95, -5,0,72,18,72,74,34,87,1,0,105,87,1,0,68,18,68,74,34,143, -1,0,105,143,1,0,63,119,33,0,63,135,9,0,63,111,29,0,194,130, -208,113,127,119,33,0,237,113,209,5,63,95,25,0,127,95,33,0,63,87, -41,0,0,234,224,81,218,13,63,143,21,0,63,135,17,0,65,138,127,143, -21,0,95,130,127,135,17,0,128,7,6,2,32,127,193,184,65,122,96,127, -193,184,252,47,32,0,229,87,64,0,224,7,96,1,63,239,41,0,32,119, -193,184,61,23,125,0,95,114,96,119,193,184,10,224,63,87,9,0,63,79, -37,0,97,82,242,77,98,82,242,69,100,82,178,61,104,82,210,37,34,111, -1,0,105,111,1,0,34,103,5,0,105,103,5,0,34,95,9,0,105,95, -9,0,34,87,13,0,105,87,13,0,34,143,17,0,105,143,17,0,34,135, -21,0,105,135,21,0,34,127,25,0,105,127,25,0,34,119,29,0,105,119, -29,0,2,22,32,0,9,78,32,0,34,111,1,0,105,111,1,0,34,103, -5,0,105,103,5,0,34,95,9,0,105,95,9,0,34,87,13,0,105,87, -13,0,2,22,16,0,9,78,16,0,34,143,1,0,105,143,1,0,34,135, -5,0,105,135,5,0,72,18,72,74,34,127,1,0,105,127,1,0,68,18, -68,74,34,119,1,0,105,119,1,0,63,95,37,0,63,111,9,0,63,87, -29,0,194,106,205,89,127,95,37,0,234,89,209,5,63,135,25,0,127,135, -37,0,61,23,113,0,226,233,202,5,127,7,41,0,245,13,127,23,41,0, -61,127,113,0,61,119,117,0,111,119,117,0,61,111,117,0,61,103,113,0, -109,103,113,0,63,95,45,0,32,87,193,184,95,90,127,95,45,0,125,7, -105,0,65,82,96,87,193,184,252,47,32,0,61,143,101,0,224,137,226,5, -61,54,76,0,191,255,8,245,181,5,125,7,77,0,125,7,133,0,29,48, -191,255,116,238,224,81,178,5,191,255,116,238,0,82,245,77,224,217,146,77, -32,239,37,183,125,215,125,0,125,255,109,0,48,6,12,4,130,0,63,23, -41,0,125,135,105,0,224,17,194,21,125,23,113,0,63,119,41,0,46,119, -117,0,125,119,117,0,63,103,41,0,44,103,117,0,108,239,113,0,63,95, -41,0,107,239,117,0,245,5,127,239,41,0,125,239,117,0,125,239,113,0, -63,87,45,0,5,138,65,82,127,87,45,0,1,130,125,143,49,0,32,127, -193,184,125,135,57,0,65,122,96,127,193,184,125,223,77,0,252,47,32,0, -127,218,210,5,61,54,76,0,191,255,138,240,29,48,191,255,124,240,61,87, -133,0,213,5,10,234,252,47,32,0,29,80,64,6,255,48,128,7,225,0, -6,232,61,255,109,0,229,87,64,0,224,7,96,1,61,143,105,0,10,224, -224,137,130,85,224,249,226,77,63,127,1,0,48,6,85,69,85,81,240,121, -250,69,61,23,113,0,125,7,105,0,226,233,202,5,127,7,41,0,245,13, -127,23,41,0,61,119,113,0,61,111,117,0,110,111,117,0,61,103,117,0, -61,95,113,0,108,95,113,0,63,87,45,0,95,82,127,87,45,0,61,143, -49,0,101,138,154,29,63,135,17,0,224,129,178,5,11,114,165,5,10,114, -32,111,193,184,125,119,133,0,65,106,96,111,193,184,252,47,32,0,29,48, -191,255,52,237,224,81,226,5,191,255,52,237,181,5,252,47,32,0,61,103, -101,0,224,97,226,5,61,54,76,0,191,255,154,243,229,5,125,7,77,0, -181,5,252,47,32,0,64,6,255,0,128,7,193,0,6,232,125,63,5,0, -125,7,9,0,125,7,17,0,125,7,21,0,125,7,13,0,229,87,64,0, -224,7,96,1,10,224,49,6,78,68,86,68,36,23,185,139,125,143,1,0, -224,17,194,13,34,87,29,0,98,239,29,0,106,239,25,0,125,23,25,0, -125,87,29,0,245,5,100,239,185,139,125,239,25,0,125,239,29,0,36,135, -189,139,65,130,100,135,189,139,252,47,32,0,0,82,64,6,223,0,128,7, -225,0,6,232,61,231,109,0,229,87,64,0,224,7,96,1,61,143,105,0, -10,248,224,137,162,77,224,225,130,77,60,127,1,0,48,6,78,68,86,68, -240,121,154,69,61,23,113,0,125,7,105,0,226,233,202,5,124,7,17,0, -245,13,124,23,17,0,61,119,113,0,61,111,117,0,110,111,117,0,61,103, -117,0,61,95,113,0,108,95,113,0,60,87,21,0,95,82,124,87,21,0, -61,143,49,0,103,138,186,21,7,130,32,127,193,184,125,135,133,0,65,122, -96,127,193,184,255,47,32,0,29,48,191,255,18,236,224,81,226,5,191,255, -18,236,181,5,255,47,32,0,61,119,101,0,224,113,226,5,61,54,76,0, -191,255,120,242,229,5,125,7,77,0,181,5,255,47,32,0,64,6,255,0, -128,7,193,0,35,103,9,0,6,232,125,63,5,0,125,7,33,0,125,7, -37,0,125,79,21,0,67,66,130,66,194,66,125,71,29,0,0,90,130,98, -194,98,125,103,25,0,9,80,201,97,8,110,4,0,213,5,106,23,1,0, -65,90,2,80,13,16,202,17,236,17,147,253,8,102,4,0,172,81,106,7, -1,0,125,95,9,0,125,95,13,0,224,89,194,5,125,79,17,0,181,5, -125,7,17,0,229,87,64,0,224,7,96,1,10,224,43,6,67,79,76,66, -36,23,69,134,125,95,1,0,224,17,194,13,34,87,45,0,98,239,45,0, -106,239,41,0,125,23,41,0,125,87,45,0,245,5,100,239,69,134,125,239, -41,0,125,239,45,0,36,87,73,134,65,82,100,87,73,134,252,47,32,0, -0,82,64,6,223,0,128,7,225,0,6,232,61,231,109,0,229,87,64,0, -224,7,96,1,61,143,105,0,10,248,224,137,178,77,224,225,146,77,60,127, -1,0,48,6,67,79,76,66,240,121,170,69,61,23,113,0,125,7,105,0, -226,233,202,5,124,7,33,0,245,13,124,23,33,0,61,119,113,0,61,111, -117,0,110,111,117,0,61,103,117,0,61,95,113,0,108,95,113,0,60,87, -37,0,95,82,124,87,37,0,61,143,49,0,104,138,202,21,32,134,16,0, -32,127,193,184,125,135,133,0,65,122,96,127,193,184,255,47,32,0,29,48, -191,255,160,234,224,81,226,5,191,255,160,234,181,5,255,47,32,0,61,119, -101,0,224,113,226,5,61,54,76,0,191,255,6,241,229,5,125,7,77,0, -181,5,255,47,32,0,64,6,255,0,128,7,33,0,38,6,216,136,133,0, -31,58,190,255,194,117,64,6,63,0,128,7,33,0,38,6,216,136,133,0, -190,255,140,13,64,6,63,0,128,7,33,0,191,255,196,232,38,6,216,136, -133,0,39,6,72,20,133,0,1,66,128,255,20,5,64,6,63,0,128,7, -33,0,31,58,190,255,132,117,64,6,63,0,128,7,33,0,190,255,84,13, -64,6,63,0,49,6,216,136,133,0,102,143,1,0,127,0,38,95,17,0, -38,23,13,0,11,136,162,137,17,86,1,0,133,13,2,135,0,0,16,6, -17,0,250,5,95,82,65,18,235,17,131,253,38,87,21,0,127,0,36,143, -42,6,248,135,133,0,127,0,127,0,31,82,127,0,127,0,160,7,225,48, -6,248,7,208,8,216,0,234,229,87,64,0,224,7,96,1,63,143,21,0, -10,224,224,137,250,117,224,217,210,117,63,135,25,0,63,87,9,0,63,127, -37,0,194,82,240,121,218,5,63,135,29,0,170,129,181,5,15,128,170,129, -63,127,21,0,127,135,37,0,65,122,63,119,17,0,127,127,21,0,95,114, -127,119,17,0,16,16,3,72,63,87,9,0,1,234,97,82,242,77,98,82, -242,69,100,82,178,61,104,82,210,37,34,111,1,0,105,111,1,0,34,103, -5,0,105,103,5,0,34,95,9,0,105,95,9,0,34,87,13,0,105,87, -13,0,34,143,17,0,105,143,17,0,34,135,21,0,105,135,21,0,34,127, -25,0,105,127,25,0,34,119,29,0,105,119,29,0,2,22,32,0,9,78, -32,0,34,111,1,0,105,111,1,0,34,103,5,0,105,103,5,0,34,95, -9,0,105,95,9,0,34,87,13,0,105,87,13,0,2,22,16,0,9,78, -16,0,34,143,1,0,105,143,1,0,34,135,5,0,105,135,5,0,72,18, -72,74,34,127,1,0,105,127,1,0,68,18,68,74,34,119,1,0,105,119, -1,0,63,111,21,0,224,105,186,5,128,7,188,2,63,23,41,0,224,17, -178,5,128,7,138,1,63,103,25,0,63,119,9,0,63,95,33,0,194,114, -236,89,218,5,63,103,29,0,174,97,181,5,11,96,174,97,63,95,21,0, -127,103,33,0,95,90,63,87,17,0,127,95,21,0,65,82,127,87,17,0, -26,16,63,87,9,0,12,72,97,82,242,77,98,82,242,69,100,82,178,61, -104,82,210,37,34,143,1,0,105,143,1,0,34,135,5,0,105,135,5,0, -34,127,9,0,105,127,9,0,34,119,13,0,105,119,13,0,34,111,17,0, -105,111,17,0,34,103,21,0,105,103,21,0,34,95,25,0,105,95,25,0, -34,87,29,0,105,87,29,0,2,22,32,0,9,78,32,0,34,143,1,0, -105,143,1,0,34,135,5,0,105,135,5,0,34,127,9,0,105,127,9,0, -34,119,13,0,105,119,13,0,2,22,16,0,9,78,16,0,34,111,1,0, -105,111,1,0,34,103,5,0,105,103,5,0,72,18,72,74,34,95,1,0, -105,95,1,0,68,18,68,74,34,87,1,0,224,233,105,87,1,0,162,77, -32,239,37,183,125,31,125,0,125,255,109,0,49,6,12,4,130,0,63,23, -41,0,125,143,105,0,224,17,194,21,125,23,113,0,63,119,41,0,46,119, -117,0,125,119,117,0,63,103,41,0,44,103,117,0,108,239,113,0,63,95, -41,0,107,239,117,0,213,5,125,239,113,0,125,239,117,0,63,87,45,0, -127,239,41,0,65,82,127,87,45,0,5,138,125,143,49,0,1,130,32,127, -193,184,125,135,57,0,65,122,96,127,193,184,125,223,77,0,252,47,32,0, -127,218,210,5,61,54,76,0,191,255,230,233,29,48,191,255,216,233,61,87, -133,0,128,7,60,1,252,47,32,0,0,18,128,7,48,1,2,232,61,23, -113,0,226,233,202,5,127,7,41,0,245,13,127,23,41,0,61,119,113,0, -61,111,117,0,110,111,117,0,61,103,117,0,61,95,113,0,108,95,113,0, -63,87,45,0,32,143,193,184,95,82,127,87,45,0,125,7,105,0,65,138, -96,143,193,184,252,47,32,0,26,16,63,87,9,0,61,79,125,0,97,82, -242,77,98,82,242,69,100,82,178,61,104,82,210,37,34,135,1,0,105,135, -1,0,34,127,5,0,105,127,5,0,34,119,9,0,105,119,9,0,34,111, -13,0,105,111,13,0,34,103,17,0,105,103,17,0,34,95,21,0,105,95, -21,0,34,87,25,0,105,87,25,0,34,143,29,0,105,143,29,0,2,22, -32,0,9,78,32,0,34,135,1,0,105,135,1,0,34,127,5,0,105,127, -5,0,34,119,9,0,105,119,9,0,34,111,13,0,105,111,13,0,2,22, -16,0,9,78,16,0,34,103,1,0,105,103,1,0,34,95,5,0,105,95, -5,0,72,18,72,74,34,87,1,0,105,87,1,0,68,18,68,74,34,143, -1,0,61,135,101,0,105,143,1,0,224,129,226,5,61,54,76,0,191,255, -158,236,181,5,125,7,77,0,125,7,133,0,29,48,191,255,10,230,224,81, -178,5,191,255,10,230,0,82,213,5,252,47,32,0,11,18,2,80,96,6, -255,48,128,7,193,243,6,232,7,216,8,208,9,200,35,199,33,0,35,191, -37,0,35,183,41,0,229,87,64,0,224,7,96,1,61,135,17,0,61,143, -5,0,122,135,1,0,10,224,61,127,21,0,61,119,41,0,121,127,1,0, -123,143,1,0,61,111,45,0,120,119,1,0,61,103,49,0,119,111,1,0, -118,103,1,0,252,47,32,0,0,82,64,6,223,243,128,7,225,243,6,232, -7,216,8,208,9,200,35,199,37,0,35,191,41,0,35,183,45,0,35,255, -49,0,229,87,64,0,224,7,96,1,61,135,49,0,122,135,1,0,61,127, -5,0,61,143,41,0,121,127,1,0,61,95,141,0,61,119,45,0,123,143, -1,0,120,119,1,0,127,95,1,0,61,111,61,0,10,224,119,111,1,0, -61,87,113,0,61,103,25,0,35,151,53,0,118,103,1,0,114,87,1,0, -252,47,32,0,0,82,64,6,255,243,128,7,193,0,6,232,125,63,5,0, -125,7,9,0,125,71,17,0,125,7,29,0,125,7,33,0,229,87,64,0, -224,7,96,1,10,224,49,6,69,84,85,77,36,23,77,134,125,143,1,0, -224,17,194,13,34,87,41,0,98,239,41,0,106,239,37,0,125,23,37,0, -125,87,41,0,245,5,100,239,77,134,125,239,37,0,125,239,41,0,36,135, -81,134,65,130,100,135,81,134,252,47,32,0,0,82,64,6,223,0,128,7, -225,16,6,224,229,87,64,0,224,7,96,1,36,143,81,134,10,248,95,138, -100,143,81,134,60,23,37,0,124,7,1,0,226,225,202,5,100,7,77,134, -181,21,60,135,41,0,98,135,41,0,36,111,77,134,60,119,37,0,60,127, -41,0,252,105,111,119,37,0,218,5,60,103,37,0,100,103,77,134,32,95, -193,184,65,90,96,95,193,184,255,47,32,0,60,239,29,0,1,218,133,37, -229,87,64,0,224,7,96,1,10,248,255,47,32,0,32,87,193,184,125,7, -105,0,65,82,96,87,193,184,61,54,76,0,191,255,176,234,125,223,133,0, -61,239,113,0,61,55,117,0,191,255,28,228,60,143,33,0,95,138,124,143, -33,0,60,135,33,0,224,129,234,221,229,87,64,0,224,7,96,1,32,127, -193,184,10,248,95,122,96,127,193,184,255,47,32,0,32,111,37,183,32,119, -41,183,238,105,178,5,191,255,234,227,0,82,64,6,255,16,128,7,193,0, -6,232,229,87,64,0,224,7,96,1,61,23,33,0,10,224,98,18,234,13, -61,87,29,0,42,23,113,0,42,143,45,0,34,135,45,0,241,129,185,61, -125,23,29,0,133,61,98,18,227,53,61,95,29,0,11,80,11,128,48,23, -113,0,34,119,45,0,48,127,45,0,239,113,169,5,2,128,34,23,113,0, -234,17,234,245,235,129,178,37,48,103,117,0,48,111,113,0,109,103,117,0, -48,95,117,0,48,87,113,0,107,87,113,0,61,143,29,0,112,143,113,0, -61,127,29,0,47,127,117,0,112,127,117,0,61,111,29,0,45,111,117,0, -109,135,113,0,61,103,29,0,108,135,117,0,125,135,29,0,252,47,32,0, -0,82,64,6,223,0,128,7,225,16,6,248,7,232,8,216,229,87,64,0, -224,7,96,1,63,143,49,0,10,224,224,137,226,13,127,239,45,0,127,223, -61,0,1,130,253,135,192,0,127,135,65,0,252,47,32,0,128,7,50,1, -63,87,33,0,63,23,45,0,255,81,194,37,194,18,34,95,65,184,255,89, -34,22,64,184,186,13,98,87,1,0,63,143,65,0,32,135,57,183,49,80, -74,129,96,135,57,183,63,119,37,0,63,127,33,0,1,90,111,119,37,0, -253,95,192,0,63,111,37,0,63,103,33,0,127,95,65,0,109,103,33,0, -213,77,194,18,98,7,65,184,63,111,65,0,32,23,53,183,45,80,74,17, -32,95,57,183,96,23,53,183,74,89,96,95,57,183,1,82,253,87,192,0, -127,87,65,0,194,134,255,0,130,13,194,118,255,0,142,119,65,183,96,119, -61,183,229,45,194,142,0,255,178,13,136,18,194,118,255,0,142,87,65,183, -10,118,8,0,96,119,61,183,149,37,64,126,255,0,2,128,79,129,178,13, -144,18,194,102,255,0,140,135,65,183,16,118,16,0,96,119,61,183,165,21, -64,110,0,255,2,112,77,113,146,13,152,18,130,119,65,183,14,118,24,0, -96,119,61,183,213,5,32,118,32,0,96,119,61,183,32,95,41,183,235,249, -234,13,32,23,61,183,2,6,224,255,242,5,194,18,34,119,65,184,96,119, -41,183,181,5,96,7,41,183,127,239,45,0,127,239,61,0,3,106,32,103, -193,184,127,111,49,0,65,98,96,103,193,184,252,47,32,0,31,48,191,255, -206,225,64,6,255,16,128,7,225,0,6,232,61,231,109,0,229,87,64,0, -224,7,96,1,61,143,105,0,10,248,224,137,178,77,224,225,146,77,60,127, -1,0,48,6,69,84,85,77,240,121,170,69,61,23,113,0,125,7,105,0, -226,233,202,5,124,7,29,0,245,13,124,23,29,0,61,119,113,0,61,111, -117,0,110,111,117,0,61,103,117,0,61,95,113,0,108,95,113,0,60,87, -33,0,95,82,124,87,33,0,61,143,49,0,109,138,202,21,32,134,29,0, -32,127,193,184,125,135,133,0,65,122,96,127,193,184,255,47,32,0,29,48, -191,255,64,225,224,81,226,5,191,255,64,225,181,5,255,47,32,0,61,119, -101,0,224,113,226,5,61,54,76,0,191,255,166,231,229,5,125,7,77,0, -181,5,255,47,32,0,64,6,255,0,0,0,38,103,17,0,28,106,77,97, -12,102,116,255,1,106,108,111,1,0,0,106,108,111,5,0,108,111,9,0, -108,47,13,0,108,111,17,0,108,111,21,0,108,111,25,0,108,111,29,0, -108,111,33,0,108,111,37,0,108,111,41,0,108,111,45,0,108,111,49,0, -108,111,53,0,108,111,57,0,108,111,61,0,108,111,65,0,108,111,69,0, -108,167,73,0,108,175,77,0,108,111,81,0,108,111,85,0,108,111,89,0, -108,111,93,0,108,111,97,0,108,111,101,0,108,111,105,0,108,239,109,0, -108,247,113,0,108,111,117,0,244,111,64,0,108,111,121,0,241,111,64,0, -108,111,125,0,240,111,64,0,108,111,129,0,0,106,108,111,133,0,108,63, -137,0,102,103,9,0,127,0,128,7,33,0,191,255,148,223,191,255,0,223, -100,7,53,134,100,7,57,134,100,7,61,134,100,7,65,134,100,7,185,139, -100,7,189,139,100,7,69,134,100,7,73,134,100,7,85,134,100,7,89,134, -100,7,77,134,100,7,81,134,64,6,63,0,128,7,33,0,32,23,37,183, -34,55,73,0,34,135,69,0,63,6,204,17,130,0,112,0,229,87,64,0, -224,7,96,1,10,248,32,23,37,183,1,122,98,127,49,0,32,111,193,184, -98,127,57,0,65,106,96,111,193,184,255,47,32,0,32,55,37,183,191,255, -124,226,64,6,63,0,88,26,99,255,5,0,99,231,1,0,224,49,3,224, -178,13,68,102,0,0,44,102,196,235,102,103,5,0,129,58,185,5,128,255, -94,10,35,255,5,0,35,231,1,0,72,26,127,0,88,26,99,255,5,0, -99,231,1,0,72,26,38,87,1,0,127,0,88,26,99,255,5,0,99,231, -1,0,224,49,3,224,178,13,68,94,0,0,43,94,196,235,102,95,5,0, -129,58,185,5,128,255,28,10,35,255,5,0,35,231,1,0,72,26,127,0, -88,26,99,255,5,0,99,231,1,0,3,224,128,255,44,9,35,255,5,0, -35,231,1,0,72,26,127,0,84,26,99,255,9,0,99,239,1,0,99,231, -5,0,68,238,15,0,61,238,76,230,68,102,15,0,44,103,85,230,3,230, -4,0,224,97,234,29,1,50,68,14,15,0,97,55,85,230,68,86,0,0, -68,54,0,0,68,94,0,0,43,94,196,235,125,95,5,0,38,54,16,236, -125,55,1,0,42,86,228,235,125,87,5,0,68,54,0,0,38,54,4,236, -128,255,82,14,29,48,128,255,186,8,35,239,1,0,35,255,9,0,35,231, -5,0,76,26,127,0,192,25,127,0,88,26,99,255,5,0,99,231,1,0, -224,49,3,224,178,13,68,102,0,0,44,102,36,236,102,103,5,0,129,58, -185,5,128,255,86,9,35,255,5,0,35,231,1,0,72,26,127,0,88,26, -99,255,5,0,99,231,1,0,72,26,38,87,1,0,127,0,3,30,228,255, -99,255,25,0,99,231,21,0,99,215,13,0,3,230,20,0,99,239,5,0, -99,223,9,0,8,208,99,207,17,0,6,216,7,200,99,79,1,0,25,48, -128,255,28,2,250,81,201,5,27,48,128,255,18,7,25,48,128,255,12,2, -10,232,35,119,1,0,186,233,253,113,169,5,14,232,27,48,29,56,249,217, -186,13,218,57,31,66,128,255,72,1,27,48,26,64,0,58,128,255,62,1, -149,29,1,66,128,255,50,2,224,81,194,21,27,48,128,255,100,3,99,87, -1,0,25,48,128,255,134,3,26,56,202,57,35,55,1,0,29,64,189,255, -178,236,27,48,29,56,128,255,196,1,27,80,35,207,17,0,35,215,13,0, -35,223,9,0,35,239,5,0,35,255,25,0,35,231,21,0,3,30,28,0, -127,0,3,30,236,255,99,255,17,0,99,231,13,0,99,215,9,0,3,230, -12,0,99,239,1,0,8,208,99,223,5,0,6,232,7,216,128,255,162,2, -29,48,224,81,242,29,128,255,244,2,170,217,29,48,128,255,90,1,251,81, -201,5,29,48,128,255,80,6,29,48,128,255,74,1,10,56,187,57,231,209, -169,5,26,56,29,48,219,57,31,66,128,255,144,0,29,48,27,64,0,58, -128,255,134,0,181,21,26,56,1,66,128,255,120,1,224,81,210,13,29,48, -128,255,170,2,10,48,27,56,26,64,189,255,6,236,29,48,26,56,128,255, -24,1,29,80,35,215,9,0,35,223,5,0,35,239,1,0,35,255,17,0, -35,231,13,0,3,30,20,0,127,0,80,26,99,255,13,0,99,231,9,0, -99,223,5,0,3,230,8,0,99,239,1,0,6,216,7,232,29,48,128,255, -4,45,27,48,29,56,10,64,191,255,50,255,35,223,5,0,35,239,1,0, -35,255,13,0,35,231,9,0,3,30,16,0,127,0,3,30,232,255,99,255, -21,0,99,223,5,0,99,231,17,0,8,216,3,230,16,0,99,207,13,0, -99,239,1,0,99,215,9,0,6,232,61,103,21,0,7,208,250,97,185,5, -128,255,120,5,61,55,21,0,186,49,251,49,169,5,6,216,224,217,178,37, -29,48,128,255,244,1,26,200,202,201,29,48,128,255,234,1,61,79,21,0, -26,48,9,64,186,65,187,65,202,49,27,56,198,57,25,48,128,255,254,43, -61,215,21,0,29,48,187,209,26,56,0,66,128,255,134,0,224,81,210,5, -29,48,26,56,128,255,54,0,29,80,35,207,13,0,35,215,9,0,35,223, -5,0,35,239,1,0,35,255,21,0,35,231,17,0,3,30,24,0,127,0, -88,26,99,255,5,0,99,231,1,0,72,26,38,87,21,0,127,0,3,30, -236,255,99,255,17,0,99,231,13,0,99,239,5,0,3,230,12,0,99,223, -9,0,7,232,6,216,128,255,100,1,123,239,21,0,67,7,3,0,202,233, -93,7,0,0,35,231,13,0,35,255,17,0,35,239,5,0,35,223,9,0, -3,30,20,0,127,0,3,30,224,255,99,255,29,0,99,239,9,0,99,207, -21,0,99,215,17,0,6,232,8,208,99,231,25,0,154,0,99,223,13,0, -3,230,24,0,7,216,126,218,179,5,128,255,104,3,61,103,25,0,26,80, -251,97,217,45,224,81,178,5,0,50,181,5,61,55,21,0,6,200,155,214, -15,0,126,210,163,5,27,208,26,54,1,0,128,255,96,6,99,87,5,0, -224,201,162,13,29,48,128,255,216,0,35,55,5,0,10,56,25,64,189,255, -50,234,29,48,1,58,128,255,28,1,35,119,5,0,125,215,25,0,125,119, -5,0,29,48,25,56,191,255,48,255,229,21,224,81,146,13,27,6,240,255, -225,5,29,48,1,58,128,255,244,0,197,13,224,217,170,13,125,7,21,0, -29,48,128,255,140,0,67,7,3,0,74,7,0,0,35,207,21,0,35,231, -25,0,35,255,29,0,35,239,9,0,224,217,35,223,13,0,35,215,17,0, -234,87,0,0,3,30,32,0,127,0,3,30,236,255,99,255,17,0,99,231, -13,0,99,215,9,0,3,230,12,0,99,239,1,0,7,208,99,223,5,0, -0,234,6,216,128,255,58,0,250,81,171,13,27,48,128,255,48,0,59,55, -21,0,202,49,230,209,169,5,1,234,35,215,9,0,35,231,13,0,35,255, -17,0,157,0,29,80,35,239,1,0,35,223,5,0,138,0,3,30,20,0, -127,0,88,26,99,255,5,0,99,231,1,0,38,103,25,0,3,224,12,6, -240,255,201,5,38,55,5,0,165,5,68,50,35,255,5,0,35,231,1,0, -6,80,72,26,127,0,88,26,99,255,5,0,99,231,1,0,38,103,25,0, -3,224,12,6,240,255,201,5,38,55,5,0,165,5,68,50,35,255,5,0, -35,231,1,0,6,80,72,26,127,0,3,30,236,255,99,255,17,0,99,239, -5,0,99,223,9,0,99,231,13,0,6,232,3,230,12,0,135,0,224,57, -130,21,61,55,25,0,6,6,240,255,185,13,6,6,240,255,201,5,61,55, -5,0,181,5,61,54,4,0,128,255,200,4,15,50,125,55,25,0,125,7, -21,0,29,48,191,255,94,255,67,7,3,0,74,7,0,0,35,231,13,0, -35,255,17,0,35,239,5,0,35,223,9,0,3,30,20,0,127,0,80,26, -99,255,13,0,99,223,5,0,99,231,9,0,7,216,99,239,1,0,3,230, -8,0,6,232,224,233,242,21,68,102,0,0,44,102,68,236,125,103,5,0, -61,54,8,0,1,58,191,255,100,255,68,94,0,0,43,94,36,236,125,95, -5,0,129,218,201,5,29,48,128,255,80,4,35,223,5,0,35,239,1,0, -35,255,13,0,35,231,9,0,3,30,16,0,127,0,88,26,99,255,5,0, -99,231,1,0,72,50,3,224,191,255,250,254,35,231,1,0,35,255,5,0, -72,26,127,0,88,26,99,255,5,0,99,231,1,0,3,224,128,255,56,3, -35,255,5,0,35,231,1,0,72,26,127,0,80,26,99,255,13,0,99,223, -5,0,99,231,9,0,7,216,99,239,1,0,3,230,8,0,6,232,224,233, -242,21,68,94,0,0,43,94,68,236,125,95,5,0,61,54,8,0,1,58, -191,255,202,254,68,86,0,0,42,86,36,236,125,87,5,0,129,218,201,5, -29,48,128,255,182,3,35,223,5,0,35,239,1,0,35,255,13,0,35,231, -9,0,3,30,16,0,127,0,88,26,99,255,5,0,99,231,1,0,3,224, -128,255,188,2,35,255,5,0,35,231,1,0,72,26,127,0,80,26,99,255, -13,0,99,223,5,0,99,231,9,0,7,216,99,239,1,0,3,230,8,0, -6,232,224,233,242,21,68,94,0,0,43,94,68,236,125,95,5,0,61,54, -8,0,1,58,191,255,78,254,68,86,0,0,42,86,36,236,125,87,5,0, -129,218,201,5,29,48,128,255,58,3,35,223,5,0,35,239,1,0,35,255, -13,0,35,231,9,0,3,30,16,0,127,0,88,26,99,255,5,0,99,231, -1,0,3,224,128,255,64,2,35,255,5,0,35,231,1,0,72,26,127,0, -68,0,3,30,164,255,99,255,89,0,99,231,85,0,99,207,81,0,3,230, -84,0,99,215,77,0,99,239,69,0,99,223,73,0,128,239,4,0,68,222, -0,0,131,55,3,0,67,55,1,0,59,222,172,236,35,54,4,0,0,58, -191,255,198,253,35,54,4,0,27,56,191,255,236,250,35,222,4,0,68,206, -0,0,57,206,36,236,68,214,0,0,68,54,0,0,38,54,164,236,99,55, -33,0,58,214,68,236,131,55,5,0,67,55,3,0,99,215,37,0,35,54, -40,0,0,58,191,255,134,253,35,54,40,0,27,56,0,66,31,74,191,255, -70,249,68,54,0,0,38,54,100,236,99,55,37,0,68,102,0,0,44,103, -33,236,35,222,32,0,224,97,130,13,27,48,12,88,93,254,0,0,63,254, -146,0,107,0,59,63,5,0,93,254,0,0,39,71,29,0,39,79,24,0, -63,254,176,0,7,62,24,0,9,48,219,49,104,0,27,48,128,255,88,1, -99,215,37,0,35,54,40,0,1,58,191,255,28,253,99,207,37,0,35,54, -4,0,1,58,191,255,14,253,35,207,81,0,35,215,77,0,35,223,73,0, -35,239,69,0,35,255,89,0,35,231,85,0,3,30,92,0,127,0,68,0, -3,30,164,255,99,255,89,0,99,231,85,0,99,207,81,0,3,230,84,0, -99,215,77,0,99,239,69,0,99,223,73,0,128,239,4,0,68,222,0,0, -131,55,3,0,67,55,1,0,59,222,196,236,35,54,4,0,0,58,191,255, -176,252,35,54,4,0,27,56,191,255,214,249,35,222,4,0,68,206,0,0, -57,206,36,236,68,214,0,0,68,54,0,0,38,54,188,236,99,55,33,0, -58,214,68,236,131,55,5,0,67,55,3,0,99,215,37,0,35,54,40,0, -0,58,191,255,112,252,35,54,40,0,27,56,0,66,31,74,191,255,48,248, -68,54,0,0,38,54,132,236,99,55,37,0,68,102,0,0,44,103,33,236, -35,222,32,0,224,97,130,13,27,48,12,88,93,254,0,0,63,254,146,0, -107,0,59,63,5,0,93,254,0,0,39,71,29,0,39,79,24,0,63,254, -176,0,7,62,24,0,9,48,219,49,104,0,27,48,128,255,66,0,99,215, -37,0,35,54,40,0,1,58,191,255,6,252,99,207,37,0,35,54,4,0, -1,58,191,255,248,251,35,207,81,0,35,215,77,0,35,223,73,0,35,239, -69,0,35,255,89,0,35,231,85,0,3,30,92,0,127,0,192,25,127,0, -3,30,236,255,99,255,17,0,99,231,13,0,99,215,9,0,3,230,12,0, -99,239,1,0,99,223,5,0,128,239,4,0,6,64,40,63,5,0,93,254, -0,0,39,87,21,0,39,95,16,0,63,254,32,0,7,62,16,0,11,48, -200,49,106,0,10,208,64,222,0,0,59,222,104,241,196,217,27,56,68,54, -0,0,38,54,236,236,128,255,48,34,224,209,178,5,26,48,213,5,68,54, -0,0,38,54,224,236,27,56,128,255,26,34,27,56,68,54,0,0,38,54, -232,236,128,255,12,34,128,255,236,26,35,215,9,0,35,223,5,0,35,239, -1,0,35,255,17,0,35,231,13,0,3,30,20,0,127,0,88,26,99,255, -5,0,99,231,1,0,3,224,128,255,44,0,35,255,5,0,35,231,1,0, -72,26,127,0,88,26,99,255,5,0,99,231,1,0,3,224,128,255,48,0, -35,255,5,0,35,231,1,0,72,26,127,0,88,26,99,255,5,0,99,231, -1,0,224,49,3,224,178,5,128,255,84,30,35,255,5,0,35,231,1,0, -72,26,127,0,3,30,236,255,99,255,17,0,99,231,13,0,99,215,9,0, -3,230,12,0,99,239,1,0,99,223,5,0,128,239,4,0,6,208,224,209, -186,29,1,210,149,29,68,54,0,0,38,55,1,237,224,49,218,5,93,54, -0,0,38,54,116,3,6,216,93,254,0,0,63,254,42,0,123,0,93,102, -0,0,44,102,116,3,236,217,186,5,0,48,245,5,26,48,128,255,178,29, -10,48,224,49,178,229,35,215,9,0,35,231,13,0,35,255,17,0,35,239, -1,0,35,223,5,0,6,80,3,30,20,0,127,0,88,26,99,255,5,0, -99,231,1,0,6,50,3,224,128,255,214,4,35,231,1,0,35,255,5,0, -72,26,127,0,36,0,3,30,196,255,99,255,57,0,99,231,53,0,99,207, -49,0,3,230,52,0,99,215,45,0,99,239,37,0,99,223,41,0,128,239, -4,0,99,63,29,0,99,71,25,0,9,208,35,87,81,0,6,216,224,217, -178,5,224,81,178,53,35,111,25,0,35,207,29,0,224,217,237,207,34,2, -234,29,68,54,0,0,38,55,249,236,35,119,69,0,217,49,224,113,202,5, -191,255,196,254,245,5,93,254,0,0,63,254,76,0,14,104,109,0,10,48, -224,49,226,5,68,62,0,0,39,63,249,236,199,49,6,216,224,217,226,77, -68,78,0,0,41,79,249,236,27,48,169,49,35,111,29,0,102,207,1,0, -45,64,102,71,5,0,35,119,61,0,224,113,210,61,0,202,99,223,33,0, -213,53,35,55,33,0,224,209,154,29,35,119,61,0,0,58,99,119,21,0, -99,7,1,0,99,7,5,0,99,7,9,0,99,7,13,0,99,7,17,0, -0,66,0,74,93,254,0,0,63,254,194,0,14,104,109,0,197,13,35,119, -61,0,26,56,99,119,21,0,93,254,0,0,63,254,218,0,14,104,109,0, -224,209,194,5,35,111,25,0,205,209,35,119,33,0,35,111,25,0,65,202, -205,113,99,119,33,0,35,111,29,0,237,201,150,205,27,80,35,207,49,0, -35,215,45,0,35,223,41,0,35,239,37,0,35,255,57,0,35,231,53,0, -3,30,60,0,127,0,3,30,3,30,3,30,224,255,99,255,29,0,99,231, -25,0,99,79,1,0,3,230,24,0,0,74,99,7,5,0,99,7,9,0, -99,7,13,0,99,7,17,0,99,7,21,0,191,255,146,254,35,255,29,0, -35,231,25,0,3,30,32,0,127,0,16,0,3,30,216,255,99,255,37,0, -99,231,33,0,99,207,29,0,3,230,32,0,99,215,25,0,99,239,17,0, -99,223,21,0,128,239,4,0,7,208,99,71,13,0,99,79,9,0,99,7, -5,0,6,200,224,201,178,101,127,210,186,29,68,102,0,0,44,103,249,236, -25,48,172,49,38,87,5,0,38,223,1,0,35,55,13,0,42,88,235,55, -34,2,230,217,178,5,128,255,238,0,99,223,5,0,35,111,13,0,27,208, -237,215,194,2,35,119,9,0,224,113,130,37,99,7,1,0,35,111,13,0, -26,222,255,255,237,223,34,2,217,217,165,21,27,48,2,58,93,254,0,0, -35,111,9,0,63,254,122,0,109,0,35,119,1,0,35,111,13,0,65,114, -99,119,1,0,173,217,35,119,1,0,250,113,198,237,35,119,41,0,224,113, -130,37,35,79,49,0,35,63,5,0,68,70,0,0,40,71,249,236,35,223, -45,0,200,57,25,48,168,49,224,217,202,5,191,255,168,252,229,13,224,73, -242,5,93,254,0,0,63,254,204,0,123,0,229,5,93,254,0,0,63,254, -216,0,123,0,35,207,29,0,35,215,25,0,35,223,21,0,35,239,17,0, -35,255,37,0,35,231,33,0,3,30,40,0,127,0,3,30,236,255,99,255, -17,0,99,231,13,0,35,87,21,0,3,230,12,0,99,87,1,0,99,7, -5,0,99,7,9,0,191,255,198,254,35,255,17,0,35,231,13,0,3,30, -20,0,127,0,88,26,99,255,5,0,99,231,1,0,9,50,3,224,128,255, -232,1,35,231,1,0,35,255,5,0,72,26,127,0,3,30,12,0,3,30, -192,25,127,0,3,30,236,255,99,255,17,0,99,231,13,0,99,215,9,0, -3,230,12,0,99,239,1,0,99,223,5,0,128,239,4,0,68,102,0,0, -44,103,253,236,0,218,224,97,218,37,1,50,68,14,0,0,97,55,253,236, -93,54,0,0,38,54,112,0,128,255,24,23,133,21,27,48,65,218,194,50, -68,62,255,255,39,62,156,124,199,49,38,215,1,0,93,254,0,0,63,254, -68,0,122,0,27,88,194,90,68,70,255,255,200,89,43,63,157,124,224,57, -154,237,35,215,9,0,35,223,5,0,35,239,1,0,35,255,17,0,35,231, -13,0,3,30,20,0,127,0,80,26,99,255,13,0,99,231,9,0,99,239, -1,0,3,230,8,0,99,223,5,0,128,239,4,0,213,29,39,103,1,0, -68,14,15,0,97,103,89,230,7,48,38,63,5,0,224,57,178,13,38,223, -9,0,93,254,0,0,7,48,2,58,63,254,42,0,123,0,133,13,38,223, -9,0,93,254,0,0,63,254,58,0,123,0,68,62,15,0,39,63,89,230, -224,57,250,221,35,223,5,0,35,239,1,0,35,255,13,0,35,231,9,0, -3,30,16,0,127,0,88,26,99,255,5,0,99,231,1,0,38,103,1,0, -3,224,224,97,218,13,68,62,15,0,39,63,89,230,231,49,242,5,102,63, -1,0,68,14,15,0,97,55,89,230,35,255,5,0,35,231,1,0,72,26, -127,0,88,26,99,255,5,0,99,231,1,0,6,56,3,224,0,50,95,58, -104,58,251,53,71,0,9,0,14,0,19,0,24,0,29,0,34,0,39,0, -44,0,49,0,68,54,0,0,38,54,4,237,133,45,68,54,0,0,38,54, -80,237,181,37,68,54,0,0,38,54,136,237,229,29,68,54,0,0,38,54, -52,238,149,29,68,54,0,0,38,54,188,237,197,21,68,54,0,0,38,54, -220,237,245,13,68,54,0,0,38,54,0,238,165,13,68,54,0,0,38,54, -24,238,213,5,68,54,0,0,38,54,24,237,35,255,5,0,35,231,1,0, -6,80,72,26,127,0,80,26,99,255,13,0,99,231,9,0,99,239,1,0, -3,230,8,0,99,223,5,0,6,232,1,50,191,255,86,255,10,216,29,48, -191,255,78,255,64,54,0,0,38,54,104,241,196,49,27,64,10,72,68,62, -0,0,39,62,120,238,128,255,136,11,128,255,208,20,35,231,9,0,35,255, -13,0,35,239,1,0,35,223,5,0,3,30,16,0,127,0,3,30,224,255, -99,79,29,0,99,71,25,0,99,255,13,0,99,231,9,0,35,102,20,0, -3,230,8,0,99,103,1,0,6,64,64,54,0,0,38,54,88,241,99,63, -21,0,196,49,35,94,16,0,203,94,7,0,99,95,5,0,8,56,35,79, -5,0,12,64,128,255,20,0,35,231,9,0,35,255,13,0,3,30,32,0, -127,0,4,2,3,30,212,253,99,79,41,2,99,71,37,2,99,255,25,2, -99,231,21,2,99,207,17,2,3,230,20,2,99,215,13,2,99,239,5,2, -99,223,9,2,128,239,4,0,7,200,6,216,128,255,124,28,27,215,15,0, -220,210,159,210,219,247,15,0,218,5,9,50,128,255,114,52,133,61,59,103, -5,0,224,97,154,21,35,94,4,0,123,95,5,0,35,86,4,0,123,87, -1,0,32,54,0,2,123,55,9,0,219,175,15,0,219,151,15,0,27,48, -93,62,0,0,35,103,41,2,39,62,38,29,99,103,1,0,35,79,37,2, -25,64,128,255,38,2,10,200,59,87,5,0,35,94,4,0,235,81,170,13, -27,48,128,255,54,26,123,7,5,0,123,7,1,0,123,7,9,0,224,209, -218,5,219,223,15,0,162,5,31,202,27,48,128,255,26,28,25,80,35,207, -17,2,35,215,13,2,35,223,9,2,35,239,5,2,35,255,25,2,35,231, -21,2,3,30,44,2,127,0,88,26,99,255,5,0,99,231,1,0,3,224, -197,13,6,88,10,82,234,95,194,98,12,102,48,0,71,103,255,255,234,55, -194,2,95,58,224,49,202,245,224,65,146,13,229,5,32,54,48,0,71,55, -255,255,95,58,231,65,161,253,35,255,5,0,35,231,1,0,7,80,72,26, -127,0,24,0,3,30,208,255,99,255,45,0,99,231,41,0,99,207,37,0, -3,230,40,0,99,215,33,0,99,239,25,0,99,223,29,0,128,239,4,0, -99,55,21,0,38,119,9,0,99,119,17,0,7,216,38,207,13,0,224,217, -99,223,1,0,250,5,68,222,0,0,59,222,128,238,99,223,1,0,27,48, -128,255,158,29,35,111,21,0,10,48,13,71,21,0,45,63,5,0,224,65, -194,5,230,57,169,5,7,48,6,112,219,113,99,119,9,0,35,119,21,0, -46,119,1,0,230,113,99,119,5,0,190,5,99,55,5,0,35,79,21,0, -35,215,5,0,9,79,16,0,166,209,224,73,130,37,224,65,186,29,27,71, -0,0,8,6,211,255,242,5,8,6,213,255,194,5,8,6,224,255,170,5, -65,218,27,95,0,0,11,6,208,255,170,13,27,55,1,0,6,6,136,255, -194,5,6,6,168,255,170,5,66,218,32,118,48,0,181,5,32,118,32,0, -99,119,13,0,229,13,14,71,0,0,35,63,17,0,8,48,65,114,99,119, -1,0,93,254,0,0,63,254,212,0,121,0,35,119,1,0,251,113,129,245, -35,63,21,0,7,63,17,0,224,57,194,13,149,29,35,55,13,0,35,63, -17,0,93,254,0,0,63,254,252,0,121,0,95,210,224,209,223,245,197,13, -27,103,0,0,35,63,17,0,12,48,65,218,93,254,0,0,63,254,26,1, -121,0,35,111,9,0,237,217,161,245,181,13,35,63,17,0,32,54,32,0, -93,254,0,0,63,254,54,1,121,0,95,210,224,209,223,245,35,207,37,0, -35,215,33,0,35,223,29,0,35,239,25,0,35,255,45,0,35,231,41,0, -35,87,5,0,3,30,48,0,127,0,108,1,3,30,108,254,99,79,145,1, -99,255,129,1,99,231,125,1,99,207,121,1,3,230,124,1,99,215,117,1, -99,239,109,1,99,223,113,1,128,239,4,0,99,55,21,0,99,63,25,0, -0,210,8,216,224,217,218,5,68,222,0,0,59,222,128,238,35,111,21,0, -99,111,89,1,35,111,25,0,99,111,93,1,128,7,30,7,6,6,219,255, -226,13,35,63,21,0,93,254,0,0,35,103,25,0,63,254,68,0,108,0, -65,218,65,210,128,7,254,6,65,218,31,50,99,55,85,1,99,55,81,1, -0,202,35,54,96,1,197,5,70,7,0,0,65,50,35,78,105,1,233,49, -163,253,27,255,0,0,31,6,211,255,218,5,1,50,67,55,97,1,197,29, -31,6,213,255,218,5,1,50,67,55,98,1,213,21,31,6,208,255,218,5, -1,50,67,55,96,1,229,13,31,6,224,255,218,5,1,50,67,55,99,1, -245,5,31,6,221,255,234,5,1,50,67,55,100,1,65,218,181,221,31,6, -208,255,198,29,31,6,199,255,159,29,99,7,81,1,213,13,27,95,0,0, -35,63,81,1,65,218,234,63,64,2,199,89,11,94,208,255,99,95,81,1, -27,55,0,0,6,6,208,255,214,29,6,6,199,255,215,237,149,29,31,6, -214,255,234,21,35,95,145,1,28,66,67,90,72,89,68,90,43,55,253,255, -99,95,145,1,99,55,81,1,224,49,254,5,128,49,99,55,81,1,1,50, -67,55,97,1,65,218,27,79,0,0,9,6,210,255,234,61,27,55,1,0, -1,202,65,218,6,6,208,255,198,29,6,6,199,255,159,29,99,7,85,1, -213,13,27,87,0,0,35,55,85,1,65,218,234,55,64,2,198,81,10,86, -208,255,99,87,85,1,27,55,0,0,6,6,208,255,134,37,6,6,199,255, -215,237,197,29,27,95,0,0,11,6,214,255,186,21,35,87,145,1,28,58, -67,82,71,81,68,82,99,87,145,1,42,87,253,255,99,87,85,1,224,81, -142,13,31,50,99,55,85,1,197,5,99,7,85,1,165,5,65,218,27,55, -0,0,6,6,224,255,178,253,6,6,148,255,250,13,27,55,1,0,1,58, -65,218,6,6,148,255,218,5,65,218,67,63,103,1,181,21,67,63,102,1, -133,21,6,6,180,255,234,5,65,218,1,50,67,55,103,1,133,13,6,6, -152,255,218,5,65,218,1,50,67,55,104,1,27,63,0,0,65,218,67,63, -105,1,7,6,187,255,186,5,128,7,78,4,7,6,185,255,186,5,128,7, -68,4,7,6,176,255,186,5,128,7,8,2,7,6,168,255,186,5,128,7, -32,2,7,6,157,255,177,5,128,7,202,4,186,5,128,7,202,4,7,6, -156,255,162,45,7,6,152,255,177,5,128,7,16,4,7,6,151,255,162,37, -7,6,146,255,177,5,128,7,164,4,186,5,128,7,28,4,7,6,144,255, -177,5,128,7,224,1,186,5,128,7,184,1,7,6,141,255,186,5,128,7, -102,4,7,6,139,255,186,5,128,7,198,1,7,6,136,255,186,5,128,7, -188,1,128,7,108,4,224,201,178,5,67,7,96,1,3,63,103,1,224,57, -35,63,145,1,242,21,7,94,255,255,35,79,149,1,203,86,4,0,234,73, -226,55,0,0,194,50,199,49,67,50,28,82,74,49,72,50,99,55,145,1, -38,71,249,255,38,79,253,255,181,13,67,58,28,82,74,57,68,58,39,71, -253,255,99,63,145,1,8,72,191,74,3,55,104,1,224,49,194,5,232,0, -8,72,191,74,67,7,3,0,67,7,79,1,3,206,79,1,9,48,224,49, -190,29,1,106,67,111,3,0,193,50,250,13,224,65,218,13,32,54,56,0, -89,55,255,255,42,6,204,204,204,204,95,202,43,6,204,204,204,12,213,5, -8,48,9,56,128,255,232,38,10,64,11,72,9,48,99,55,17,0,25,80, -8,48,32,78,34,0,39,6,0,40,107,238,133,61,0,90,0,202,213,37, -9,6,225,255,254,5,40,6,0,202,154,59,233,71,192,0,165,5,25,88, -35,103,17,0,193,202,236,57,203,21,230,65,139,13,35,111,17,0,65,202, -167,105,99,111,17,0,165,13,35,103,17,0,236,57,249,5,65,202,167,97, -95,98,99,103,17,0,168,49,129,58,95,74,224,73,190,221,99,95,17,0, -0,66,25,56,11,57,178,5,10,70,247,255,10,56,191,255,90,250,25,48, -3,58,4,74,35,111,17,0,0,66,224,105,218,197,10,56,191,255,68,250, -35,63,85,1,10,200,224,57,174,5,1,58,35,54,79,1,167,49,229,5, -32,62,48,0,89,63,255,255,95,202,230,201,171,253,3,79,3,0,224,73, -194,5,32,54,45,0,133,21,3,71,98,1,224,65,194,5,32,54,43,0, -149,13,3,63,99,1,224,57,186,5,128,7,22,1,32,54,32,0,89,55, -255,255,95,202,128,7,8,1,3,55,105,1,35,95,145,1,72,50,67,55, -105,1,67,90,28,66,72,89,68,90,99,95,145,1,43,87,253,255,0,90, -213,117,224,201,178,5,67,7,96,1,3,79,103,1,35,71,145,1,224,73, -146,29,8,72,9,62,255,255,35,95,149,1,199,54,4,0,230,89,226,71, -0,0,194,66,201,65,8,62,3,0,28,50,70,57,72,58,99,63,145,1, -39,87,249,255,39,95,253,255,165,13,67,66,28,90,75,65,68,66,99,71, -145,1,40,87,253,255,0,90,3,63,104,1,224,57,178,5,202,0,0,90, -3,79,105,1,9,6,139,255,250,61,3,206,235,0,67,7,235,0,181,29, -35,63,33,0,35,55,29,0,10,66,0,74,128,255,48,42,10,48,11,56, -32,70,48,0,0,74,128,255,48,37,89,87,255,255,10,66,35,55,29,0, -35,63,33,0,95,202,0,74,128,255,234,40,99,87,29,0,99,95,33,0, -11,72,10,64,0,50,0,58,128,255,196,36,97,82,178,221,35,63,85,1, -224,57,174,5,1,58,35,54,235,0,167,49,229,5,32,62,48,0,89,63, -255,255,95,202,230,201,171,253,25,56,128,7,22,2,99,87,29,0,3,71, -105,1,3,206,135,0,8,6,168,255,226,111,0,0,99,95,33,0,196,106, -68,94,0,0,43,94,136,238,203,105,99,111,9,0,67,7,135,0,35,79, -33,0,10,64,0,50,0,58,128,255,34,36,97,82,186,5,67,7,100,1, -3,87,105,1,10,6,145,255,138,13,3,106,99,111,13,0,7,106,99,111, -17,0,165,45,4,106,99,111,13,0,15,106,149,253,35,71,17,0,35,55, -29,0,8,72,35,63,33,0,191,74,128,255,216,35,35,55,9,0,0,74, -0,56,10,64,128,255,86,36,10,55,0,0,35,71,13,0,89,55,255,255, -8,72,95,202,35,55,29,0,35,63,33,0,191,74,128,255,132,39,99,87, -29,0,99,95,33,0,35,79,33,0,35,71,29,0,0,50,0,58,128,255, -222,35,97,82,178,213,35,111,13,0,99,106,170,13,3,79,100,1,224,73, -226,5,32,54,48,0,89,55,255,255,95,202,35,71,85,1,224,65,174,5, -1,66,35,54,135,0,168,49,229,5,32,62,48,0,89,63,255,255,95,202, -230,201,171,253,35,111,13,0,100,106,178,5,191,7,248,254,3,95,100,1, -224,89,186,5,191,7,236,254,3,87,105,1,32,54,48,0,89,87,255,255, -89,55,254,255,94,202,191,7,214,254,68,206,0,0,57,206,168,238,25,56, -35,54,80,1,191,255,244,247,202,209,32,54,41,0,89,55,15,0,89,7, -16,0,165,109,67,7,96,1,3,79,104,1,35,95,145,1,224,73,210,13, -11,70,3,0,28,90,75,65,68,66,99,71,145,1,40,71,253,255,104,215, -0,0,229,85,3,63,103,1,28,66,224,57,130,21,11,54,3,0,72,49, -68,50,99,55,145,1,26,72,38,55,253,255,191,74,102,215,1,0,102,79, -5,0,165,69,67,90,72,89,68,90,99,95,145,1,43,95,253,255,107,215, -1,0,133,61,1,50,35,71,145,1,67,55,101,1,67,66,28,90,75,65, -8,78,4,0,99,79,145,1,40,63,1,0,197,37,67,63,4,0,213,13, -35,71,145,1,28,90,67,66,75,65,68,66,99,71,145,1,40,71,253,255, -67,71,4,0,3,63,4,0,67,7,5,0,224,57,218,13,35,63,21,0, -0,50,93,254,0,0,35,103,25,0,63,254,52,7,108,0,191,7,18,249, -35,62,4,0,35,54,80,1,191,255,20,247,202,209,27,55,0,0,224,49, -178,5,191,7,222,248,26,80,35,207,121,1,35,215,117,1,35,223,113,1, -35,239,109,1,35,255,129,1,35,231,125,1,3,30,148,1,127,0,3,30, -224,255,99,79,29,0,99,255,13,0,35,94,16,0,203,94,7,0,99,95, -5,0,99,231,9,0,99,71,25,0,35,79,5,0,35,70,24,0,99,71, -1,0,3,230,8,0,128,255,60,0,35,255,13,0,35,231,9,0,3,30, -32,0,127,0,88,26,99,255,5,0,99,231,1,0,39,103,1,0,65,98, -103,103,1,0,76,55,255,255,6,80,35,255,5,0,35,231,1,0,138,0, -72,26,127,0,8,0,3,30,220,255,99,79,33,0,99,71,29,0,99,255, -17,0,99,231,13,0,99,239,9,0,3,230,12,0,128,239,4,0,99,55, -5,0,7,64,35,54,4,0,35,103,33,0,93,62,0,0,99,103,1,0, -35,79,29,0,39,62,182,255,191,255,188,247,35,95,5,0,75,7,0,0, -35,231,13,0,35,255,17,0,35,239,9,0,3,30,36,0,127,0,3,30, -224,255,99,79,29,0,99,255,13,0,35,94,16,0,203,94,7,0,99,95, -5,0,99,231,9,0,99,71,25,0,35,79,5,0,35,70,24,0,99,71, -1,0,3,230,8,0,191,255,190,244,35,255,13,0,35,231,9,0,3,30, -32,0,127,0,84,26,99,255,9,0,99,231,5,0,99,239,1,0,3,230, -4,0,128,239,4,0,6,56,39,103,5,0,39,55,1,0,65,98,103,103, -5,0,39,95,9,0,93,254,0,0,63,254,30,0,107,0,35,239,1,0, -35,255,9,0,35,231,5,0,76,26,127,0,84,26,99,255,9,0,99,231, -5,0,99,239,1,0,3,230,4,0,128,239,4,0,7,64,127,50,242,13, -40,103,5,0,40,63,1,0,95,98,104,103,5,0,40,95,13,0,93,254, -0,0,63,254,34,0,107,0,35,239,1,0,35,255,9,0,35,231,5,0, -76,26,127,0,88,26,99,255,5,0,99,231,1,0,6,56,3,224,7,6, -208,255,238,103,0,0,7,6,199,255,231,95,0,0,44,89,202,5,7,86, -208,255,197,29,7,6,191,255,238,79,0,0,7,6,186,255,231,71,0,0, -41,65,202,5,7,86,201,255,245,13,7,6,159,255,238,55,0,0,7,6, -154,255,231,103,0,0,38,97,202,5,7,86,169,255,165,5,31,82,35,255, -5,0,35,231,1,0,72,26,127,0,3,30,3,30,3,30,224,255,99,79, -29,0,99,255,13,0,35,94,16,0,203,94,7,0,99,95,5,0,99,231, -9,0,99,71,25,0,35,79,5,0,35,70,24,0,99,71,1,0,3,230, -8,0,128,255,116,0,35,255,13,0,35,231,9,0,3,30,32,0,127,0, -88,26,99,255,5,0,99,231,1,0,6,56,39,55,1,0,6,55,0,0, -3,224,224,49,242,5,39,95,1,0,65,90,103,95,1,0,165,5,31,50, -35,255,5,0,35,231,1,0,6,80,72,26,127,0,88,26,99,255,5,0, -99,231,1,0,224,49,3,224,130,13,127,50,226,5,39,103,1,0,95,98, -103,103,1,0,35,255,5,0,35,231,1,0,72,26,127,0,20,0,3,30, -208,255,99,79,45,0,99,71,41,0,99,255,29,0,99,231,25,0,99,239, -21,0,3,230,24,0,128,239,4,0,99,31,5,0,99,55,1,0,93,94, -0,0,43,94,126,255,99,95,13,0,93,86,0,0,42,86,180,255,99,87, -17,0,35,71,41,0,35,79,45,0,35,54,4,0,128,255,24,0,35,239, -21,0,35,255,29,0,35,231,25,0,3,30,48,0,127,0,16,0,3,30, -160,254,99,79,93,1,99,71,89,1,99,255,77,1,99,231,73,1,99,63, -5,0,3,230,72,1,99,7,21,0,99,207,69,1,99,223,61,1,99,215, -65,1,99,239,57,1,99,7,13,0,102,7,5,0,6,208,133,77,35,79, -5,0,9,79,0,0,1,58,9,64,8,48,6,6,224,255,210,5,87,50, -100,50,163,5,0,58,224,57,178,45,229,5,35,79,5,0,65,74,99,79, -5,0,35,55,5,0,6,55,0,0,1,58,6,6,224,255,210,5,87,50, -100,50,163,5,0,58,224,57,234,237,213,5,26,48,191,255,118,253,10,216, -127,218,186,5,128,7,38,6,1,58,27,6,224,255,226,5,27,54,247,255, -100,50,163,5,0,58,224,57,234,237,128,7,12,6,9,6,219,255,130,21, -251,65,178,5,128,7,18,6,35,87,5,0,65,82,99,87,5,0,26,48, -191,255,52,253,10,216,128,7,232,5,0,202,35,79,5,0,99,7,9,0, -65,74,99,79,5,0,1,106,9,71,0,0,99,111,17,0,8,6,219,255, -250,5,32,238,37,0,65,74,99,79,5,0,213,69,35,55,5,0,65,50, -99,55,5,0,6,239,255,255,29,94,208,255,105,90,251,5,234,207,64,2, -217,233,29,206,208,255,133,245,29,6,180,255,218,5,35,111,9,0,66,106, -229,13,29,6,148,255,218,5,35,111,9,0,65,106,245,5,29,6,152,255, -250,5,35,111,9,0,95,106,99,111,9,0,149,221,29,6,162,255,202,13, -35,63,89,1,28,82,67,58,74,57,68,58,99,63,89,1,39,207,253,255, -181,205,29,6,214,255,202,5,99,7,17,0,213,197,29,6,219,255,234,5, -31,106,99,111,13,0,128,7,98,5,29,6,219,255,194,29,29,6,157,255, -146,29,29,6,165,255,226,21,29,6,146,255,178,21,213,5,26,48,191,255, -90,252,10,216,127,218,194,13,1,50,27,6,224,255,226,5,27,62,247,255, -100,58,163,5,0,50,224,49,138,245,224,201,207,5,57,6,64,66,15,0, -0,50,29,6,219,255,226,45,29,6,176,255,162,101,29,6,168,255,146,101, -29,6,165,255,186,5,128,7,198,2,29,6,157,255,242,37,29,6,156,255, -242,85,29,6,151,255,226,85,29,6,146,255,177,5,128,7,140,4,186,5, -128,7,234,3,29,6,144,255,169,77,210,69,29,6,141,255,186,5,128,7, -146,2,29,6,139,255,130,69,29,6,136,255,194,61,128,7,100,4,27,6, -219,255,178,5,128,7,150,4,191,7,142,254,38,6,64,66,15,0,230,201, -170,5,1,202,35,111,17,0,224,105,242,29,35,95,89,1,28,66,67,90, -72,89,68,90,43,111,253,255,99,95,89,1,99,111,33,0,165,21,35,111, -17,0,224,105,162,13,35,103,33,0,76,223,0,0,35,111,33,0,65,106, -99,111,33,0,26,48,191,255,118,251,10,216,95,202,188,5,128,7,72,3, -127,218,170,237,128,7,64,3,32,54,224,255,70,50,66,50,72,50,35,111, -17,0,224,105,202,5,99,7,25,0,229,13,35,95,89,1,28,66,67,90, -72,89,68,90,43,111,253,255,99,95,89,1,99,111,25,0,224,49,99,7, -41,0,99,7,45,0,99,7,29,0,27,232,6,216,224,217,238,5,1,106, -99,111,45,0,32,222,16,0,29,6,211,255,194,5,29,6,213,255,250,13, -25,88,95,202,97,90,183,13,29,6,211,255,226,111,0,0,99,111,41,0, -26,48,191,255,238,250,10,232,29,6,208,255,154,45,224,217,194,5,27,6, -240,255,202,37,25,80,95,202,224,81,135,37,26,48,191,255,206,250,10,232, -29,6,136,255,194,5,29,6,168,255,234,13,25,72,95,202,224,73,167,13, -99,239,29,0,26,48,191,255,174,250,10,232,32,222,16,0,197,13,32,110, -48,0,99,111,29,0,224,217,234,5,8,218,197,5,224,217,170,5,10,218, -99,7,49,0,99,7,53,0,29,48,191,255,14,251,99,87,37,0,224,201, -146,13,224,81,238,71,0,0,251,81,230,63,0,0,231,65,162,21,35,111, -29,0,13,6,208,255,226,53,224,105,130,13,29,48,26,56,191,255,152,250, -35,239,29,0,213,45,29,50,189,49,197,117,27,48,27,56,35,71,49,0, -35,79,53,0,191,58,128,255,244,28,10,48,35,71,37,0,11,56,8,72, -191,74,128,255,172,27,99,87,49,0,11,56,99,63,53,0,26,48,191,255, -22,250,10,232,29,48,191,255,154,250,99,87,37,0,95,202,146,13,224,81, -238,95,0,0,251,81,230,87,0,0,234,89,130,221,35,111,41,0,224,105, -226,21,35,63,53,0,35,55,49,0,0,66,64,78,0,128,128,255,32,27, -97,82,186,13,35,55,49,0,35,63,53,0,128,255,100,27,99,87,49,0, -99,95,53,0,35,111,25,0,224,105,210,45,35,111,45,0,224,105,130,13, -35,103,25,0,35,79,49,0,108,79,1,0,165,37,35,111,9,0,224,105, -142,13,35,103,25,0,35,71,49,0,108,71,0,0,245,21,97,106,199,13, -35,103,25,0,35,55,49,0,35,63,53,0,108,63,5,0,108,55,1,0, -165,13,35,103,25,0,35,63,49,0,108,63,1,0,35,111,9,0,97,106, -29,48,6,216,127,218,190,5,128,7,12,2,128,7,238,1,68,94,0,0, -43,94,227,238,99,95,1,0,29,6,141,255,202,5,99,31,37,0,213,5, -35,110,4,0,99,111,37,0,35,111,17,0,99,7,45,0,224,105,210,13, -35,87,89,1,28,58,67,82,71,81,68,82,42,111,253,255,99,87,89,1, -99,111,45,0,35,239,37,0,99,207,41,0,99,223,29,0,61,239,1,0, -29,87,0,0,31,218,10,6,162,255,234,207,0,0,170,5,65,234,35,54, -56,0,224,201,226,79,0,0,9,56,32,70,0,1,189,255,184,204,29,71, -0,0,8,6,163,255,218,37,65,234,67,207,149,0,149,37,10,64,8,6, -211,255,250,21,127,218,210,21,29,63,1,0,224,57,146,21,7,6,163,255, -226,13,65,234,229,5,27,72,65,218,195,73,73,207,56,0,29,63,0,0, -231,217,135,253,31,218,229,5,8,216,27,48,195,49,70,207,56,0,65,234, -29,87,0,0,10,6,163,255,202,221,35,103,37,0,65,234,108,239,1,0, -35,239,45,0,213,13,224,233,226,5,35,111,29,0,93,111,0,0,65,234, -26,48,191,255,90,248,99,87,29,0,35,111,29,0,127,106,226,13,195,105, -13,55,56,0,224,49,146,13,35,95,41,0,11,110,255,255,99,111,41,0, -224,89,207,229,224,233,178,5,93,7,0,0,35,223,29,0,35,111,21,0, -65,106,99,111,21,0,35,103,17,0,35,111,13,0,204,105,99,111,13,0, -181,101,35,111,17,0,224,105,242,93,35,111,9,0,35,63,89,1,224,105, -142,21,7,86,3,0,28,58,71,81,68,82,99,87,89,1,58,71,5,0, -42,87,253,255,95,66,106,71,0,0,165,77,97,106,183,21,67,58,28,82, -74,57,68,58,99,63,89,1,58,95,5,0,39,63,253,255,95,90,103,95, -1,0,11,72,191,74,103,79,5,0,229,53,35,111,9,0,224,105,135,21, -7,86,3,0,28,58,71,81,68,82,99,87,89,1,58,71,5,0,42,87, -253,255,95,66,106,71,1,0,181,37,67,58,28,82,74,57,68,58,99,63, -89,1,58,95,5,0,39,63,253,255,95,90,103,95,1,0,213,21,35,111, -21,0,191,7,236,250,35,111,13,0,35,103,17,0,204,105,99,111,13,0, -35,111,21,0,65,106,99,111,21,0,197,5,29,50,134,217,181,13,127,218, -146,13,35,71,5,0,8,71,0,0,224,65,178,5,191,7,116,249,27,48, -26,56,191,255,114,247,127,218,138,13,35,111,21,0,224,105,202,5,31,106, -99,111,13,0,35,207,69,1,35,215,65,1,35,223,61,1,35,239,57,1, -35,255,77,1,35,231,73,1,35,87,13,0,3,30,96,1,127,0,88,26, -99,255,5,0,99,231,1,0,6,50,3,224,128,255,110,34,35,231,1,0, -35,255,5,0,72,26,127,0,8,2,191,255,48,208,32,230,35,0,28,48, -194,50,68,86,15,0,202,49,38,63,93,230,224,57,38,54,92,230,162,13, -7,216,0,58,102,7,1,0,93,254,0,0,63,254,48,0,123,0,95,226, -188,237,68,230,0,0,60,79,137,242,224,73,60,230,136,242,146,13,9,216, -93,254,0,0,63,254,80,0,123,0,124,7,1,0,191,255,240,207,30,2, -8,2,6,216,68,230,15,0,191,255,206,207,60,103,237,230,224,97,60,230, -236,230,170,13,93,94,0,0,43,94,162,255,124,95,1,0,28,48,128,255, -146,32,0,74,9,48,194,50,68,70,15,0,200,49,38,63,93,230,224,57, -38,54,92,230,250,5,102,223,1,0,191,255,164,207,0,82,133,13,65,74, -9,6,220,255,198,237,191,255,148,207,31,82,30,2,80,26,80,26,99,255, -13,0,99,239,1,0,99,223,5,0,6,232,99,231,9,0,68,222,15,0, -59,222,244,230,59,103,33,0,3,230,8,0,224,97,218,5,32,54,0,8, -123,55,33,0,59,55,33,0,29,56,95,50,6,72,221,73,72,74,38,232, -73,233,180,5,231,233,185,5,0,216,149,61,29,48,128,255,104,32,10,48, -127,50,146,253,198,70,7,0,178,5,8,58,135,65,59,95,29,0,230,89, -138,13,29,56,198,57,123,63,29,0,8,216,198,217,181,29,59,63,25,0, -224,57,178,5,231,49,185,5,123,55,25,0,59,63,29,0,224,57,210,5, -29,72,198,73,233,57,217,5,29,56,198,57,123,63,29,0,8,56,198,57, -7,222,8,0,72,66,168,233,71,234,24,82,74,233,123,239,253,255,27,48, -128,255,76,1,27,80,35,223,5,0,35,239,1,0,35,255,13,0,35,231, -9,0,3,30,16,0,127,0,3,30,228,255,99,255,25,0,99,207,17,0, -99,215,13,0,99,231,21,0,99,239,5,0,99,223,9,0,3,230,20,0, -6,222,11,0,24,90,75,217,230,217,185,5,0,72,149,117,27,6,240,255, -177,5,32,222,16,0,68,214,15,0,58,214,244,230,58,239,5,0,224,233, -186,13,26,238,16,0,122,239,5,0,122,239,17,0,122,239,21,0,122,7, -13,0,29,56,61,239,1,0,61,79,253,255,251,73,193,45,61,87,1,0, -9,48,122,63,5,0,187,49,6,6,120,255,241,5,103,87,1,0,29,72, -106,63,5,0,197,69,58,71,29,0,221,73,232,73,218,5,29,64,219,233, -1,90,197,5,6,64,221,65,0,90,104,223,253,255,8,72,125,55,253,255, -224,89,146,53,103,239,1,0,125,63,5,0,125,87,1,0,106,239,5,0, -133,45,58,55,5,0,230,233,186,205,99,55,1,0,27,200,25,48,0,58, -191,255,88,254,224,81,234,21,29,56,7,64,40,63,1,0,231,65,217,5, -58,54,16,0,230,57,138,253,40,103,253,255,25,48,172,49,1,58,191,255, -50,254,224,81,186,5,0,74,229,5,35,119,1,0,122,119,5,0,133,173, -35,207,17,0,35,231,21,0,35,255,25,0,35,239,5,0,35,223,9,0, -35,215,13,0,9,80,3,30,28,0,127,0,84,26,99,255,9,0,99,239, -1,0,99,231,5,0,68,70,15,0,38,79,253,255,40,71,249,230,3,230, -4,0,232,49,169,13,8,56,7,64,40,63,5,0,231,49,185,13,232,57, -161,253,133,13,8,56,39,71,1,0,232,57,185,5,230,65,163,253,68,14, -15,0,97,63,249,230,0,250,39,87,253,255,0,234,10,96,199,97,230,97, -138,13,7,48,38,63,5,0,202,73,102,79,253,255,1,250,9,88,198,89, -232,89,170,21,40,95,1,0,40,87,253,255,103,55,1,0,202,73,102,63, -5,0,11,64,102,71,1,0,102,79,253,255,104,55,5,0,1,234,224,249, -186,13,224,233,154,13,103,55,1,0,102,63,5,0,102,71,1,0,104,55, -5,0,35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0,84,26, -99,255,9,0,99,231,5,0,99,239,1,0,3,230,4,0,6,232,191,255, -164,204,29,48,191,255,252,253,10,232,191,255,172,204,29,80,35,239,1,0, -35,255,9,0,35,231,5,0,76,26,127,0,84,26,99,255,9,0,99,231, -5,0,99,239,1,0,3,230,4,0,6,232,191,255,110,204,224,233,194,5, -29,48,191,255,242,254,191,255,116,204,35,239,1,0,35,255,9,0,35,231, -5,0,76,26,127,0,3,30,10,2,128,238,0,128,32,62,240,120,6,248, -63,79,5,0,32,70,168,58,233,71,32,2,63,103,1,0,32,94,168,58, -236,95,32,2,44,6,39,70,15,0,204,89,11,72,176,90,203,65,8,48, -71,48,230,63,32,2,167,65,127,71,5,0,201,0,128,70,121,224,230,71, -32,2,168,73,127,79,1,0,63,55,1,0,224,49,142,21,6,72,128,49, -176,50,65,50,6,80,208,82,202,73,63,71,5,0,127,79,1,0,166,65, -127,71,5,0,133,21,64,62,1,0,231,49,198,13,63,103,1,0,63,95, -5,0,204,0,127,103,1,0,176,50,198,89,127,95,5,0,63,55,5,0, -1,90,224,49,222,13,6,86,240,120,127,87,5,0,63,71,1,0,128,78, -121,224,201,65,127,71,1,0,181,21,6,6,16,135,247,13,63,55,1,0, -128,62,121,224,167,49,63,103,5,0,127,55,1,0,12,102,16,135,127,103, -5,0,165,5,0,90,224,89,170,189,63,87,5,0,63,79,1,0,208,82, -202,73,164,74,253,79,192,50,6,80,32,2,10,2,68,102,15,0,44,103, -25,231,224,97,170,13,1,50,68,14,15,0,97,55,25,231,68,14,15,0, -97,55,29,231,191,255,54,203,68,54,15,0,38,54,28,231,191,255,224,254, -10,232,191,255,56,203,29,80,32,2,68,62,8,0,17,2,7,216,8,232, -0,226,0,202,99,7,1,0,6,248,99,255,5,0,165,5,65,250,31,55, -0,0,6,6,224,255,178,253,104,50,182,5,109,50,247,245,31,208,6,6, -211,255,218,5,1,114,99,119,1,0,197,5,6,6,213,255,170,5,65,250, -224,233,154,29,31,71,0,0,8,6,208,255,218,13,31,63,1,0,7,6, -136,255,194,5,7,6,168,255,218,5,66,250,32,238,16,0,197,37,8,6, -208,255,186,5,8,234,245,29,10,234,213,29,97,234,199,5,29,6,220,255, -247,5,224,217,178,5,123,255,1,0,0,224,245,85,31,87,0,0,10,6, -208,255,218,13,31,55,1,0,6,6,136,255,194,5,6,6,168,255,218,5, -29,6,240,255,170,5,66,250,31,63,0,0,65,250,7,6,208,255,246,5, -7,6,199,255,207,5,7,62,208,255,213,21,7,6,159,255,246,5,7,6, -134,255,207,5,7,62,169,255,197,13,7,6,191,255,246,5,7,6,166,255, -207,5,7,62,201,255,181,5,32,62,37,0,253,57,222,13,39,48,253,55, -194,2,230,225,163,5,1,202,29,72,252,79,34,2,7,224,201,225,181,213, -65,210,250,249,202,5,35,255,5,0,65,250,224,217,194,5,95,250,123,255, -1,0,35,119,1,0,224,113,162,5,128,225,224,201,226,5,31,226,32,54, -34,0,128,255,236,25,28,80,39,2,8,0,9,2,0,226,6,232,128,255, -210,1,224,233,194,69,61,55,5,0,224,49,130,69,221,247,15,0,234,5, -9,50,128,255,196,25,31,226,133,61,221,239,15,0,218,53,61,103,1,0, -230,97,163,37,221,255,13,0,146,13,61,95,12,0,0,58,203,54,255,63, -2,66,128,255,140,24,61,87,12,0,61,79,1,0,61,63,5,0,202,54, -255,63,167,73,9,64,191,255,142,111,61,63,5,0,61,55,1,0,167,49, -230,81,206,5,221,31,15,0,31,226,61,95,5,0,221,183,13,0,125,95, -1,0,224,89,202,5,125,7,9,0,213,5,32,54,0,2,125,55,9,0, -29,48,128,255,108,1,28,80,31,2,0,2,128,255,162,0,22,2,8,2, -6,224,7,232,29,48,128,255,42,1,61,103,5,0,224,97,186,61,28,48, -128,255,134,3,10,216,224,217,130,13,28,55,0,0,29,56,128,255,122,5, -127,82,130,21,95,218,224,217,247,45,61,87,12,0,28,78,1,0,202,54, -255,63,9,56,27,64,191,255,2,111,251,81,190,37,221,31,15,0,31,226, -133,37,61,71,9,0,95,66,125,71,9,0,140,13,28,55,0,0,29,56, -128,255,58,5,10,48,181,13,61,95,1,0,65,90,125,95,1,0,28,55, -0,0,75,55,255,255,134,0,65,226,127,50,210,229,28,79,0,0,224,73, -186,229,0,226,29,48,128,255,200,0,28,80,30,2,9,2,6,232,128,255, -146,0,61,103,9,0,95,98,125,103,9,0,236,5,29,48,128,255,44,4, -10,224,133,13,61,95,1,0,65,90,125,95,1,0,171,231,255,255,29,48, -128,255,146,0,28,80,31,2,0,2,68,94,0,0,43,94,72,241,171,49, -164,50,6,6,236,255,193,13,6,72,194,74,68,62,0,0,39,62,140,242, -9,64,199,65,8,48,191,255,154,200,22,2,10,2,68,94,0,0,43,94, -72,241,171,49,164,50,6,6,236,255,129,21,6,232,194,234,68,70,0,0, -200,233,61,55,141,242,224,49,61,238,140,242,210,5,191,255,176,200,125,7, -1,0,32,2,0,2,68,94,0,0,43,94,72,241,171,49,164,50,6,6, -236,255,177,13,194,50,68,62,0,0,199,49,38,55,141,242,224,49,178,5, -191,255,34,200,22,2,0,2,68,94,0,0,43,94,72,241,171,49,164,50, -6,6,236,255,177,13,194,50,68,62,0,0,199,49,38,55,141,242,224,49, -178,5,191,255,6,200,22,2,0,2,9,2,68,54,0,0,38,54,72,241, -198,47,15,0,6,238,16,0,198,55,31,0,6,230,32,0,38,103,28,0, -32,110,0,192,77,97,140,102,1,0,38,87,44,0,102,103,28,0,77,81, -138,86,2,0,102,87,44,0,198,55,47,0,191,255,12,255,29,48,191,255, -6,255,28,48,191,255,0,255,31,2,0,2,39,103,9,0,95,98,103,103, -9,0,220,5,128,255,186,3,10,48,149,13,39,95,1,0,65,90,103,95, -1,0,75,55,255,255,134,0,6,80,22,2,3,30,232,255,99,255,21,0, -99,231,17,0,99,207,13,0,3,230,16,0,99,215,9,0,99,239,1,0, -99,223,5,0,128,239,4,0,6,208,31,202,7,216,224,217,218,5,9,50, -128,255,10,23,165,101,27,48,191,255,248,254,219,239,15,0,242,245,219,183, -15,0,219,191,13,0,127,210,226,85,59,103,5,0,224,97,234,37,32,54, -0,2,191,255,32,250,123,87,5,0,10,56,224,57,146,77,123,63,1,0, -93,94,0,0,43,94,4,2,68,14,0,0,97,95,137,242,68,54,15,0, -38,87,37,231,224,81,38,54,36,231,154,13,93,78,0,0,41,78,220,246, -102,79,1,0,128,255,124,23,219,39,15,0,59,71,1,0,59,63,5,0, -231,65,234,21,59,55,9,0,6,6,0,254,174,37,198,57,213,5,135,55, -1,0,71,55,1,0,95,58,59,103,5,0,236,57,137,253,59,95,1,0, -65,90,123,95,1,0,59,87,1,0,95,82,123,87,1,0,74,215,0,0, -26,200,219,55,13,0,59,79,9,0,219,151,15,0,65,74,123,79,9,0, -27,48,191,255,96,254,25,80,35,207,13,0,35,215,9,0,35,223,5,0, -35,239,1,0,35,255,21,0,35,231,17,0,3,30,24,0,127,0,0,2, -8,80,6,248,224,81,226,29,199,65,6,96,167,97,8,88,167,89,235,97, -235,13,202,49,95,50,8,62,255,255,7,79,0,0,70,79,0,0,95,58, -95,50,95,82,154,253,149,13,7,71,0,0,70,71,0,0,65,58,65,50, -95,82,154,253,31,48,6,80,22,2,7,64,6,56,7,79,0,0,8,87, -0,0,65,58,65,66,9,48,170,49,186,5,224,73,234,245,6,80,127,0, -6,64,7,103,0,0,70,103,0,0,65,58,65,50,224,97,154,253,8,80, -127,0,6,56,6,103,0,0,65,50,224,97,202,253,6,86,255,255,167,81, -127,0,8,2,6,232,7,224,8,216,224,233,186,5,59,239,1,0,224,233, -186,5,0,232,197,37,29,48,28,56,128,255,244,2,10,48,6,96,221,97, -12,95,0,0,224,89,194,245,198,233,29,48,28,56,128,255,174,2,10,48, -221,81,10,79,0,0,224,73,234,5,68,70,15,0,40,62,44,231,197,5, -6,56,221,57,65,58,123,63,1,0,221,49,70,7,0,0,29,80,30,2, -9,2,6,232,7,224,191,255,178,197,29,48,28,56,42,70,180,0,191,255, -140,255,31,2,10,2,0,234,181,13,29,48,196,50,68,78,0,0,41,78, -72,241,201,49,128,255,20,0,65,234,68,70,0,0,232,71,237,238,232,233, -150,245,32,2,8,2,6,224,0,218,191,255,220,196,224,225,242,13,220,247, -15,0,226,5,28,48,191,255,242,250,10,216,229,13,220,239,15,0,186,13, -220,255,15,0,138,13,9,50,128,255,190,20,191,255,198,196,31,218,133,45, -60,103,12,0,204,54,255,63,128,255,118,19,127,82,170,5,31,218,68,94, -0,0,43,95,221,242,224,89,130,13,28,48,11,80,93,254,0,0,63,254, -98,0,106,0,28,48,0,58,32,70,16,0,189,255,250,190,60,79,12,0, -137,78,255,63,124,79,12,0,28,48,191,255,46,252,191,255,116,196,27,80, -30,2,4,0,21,2,6,232,68,54,0,0,38,54,72,241,230,233,129,85, -68,86,0,0,234,87,237,238,196,82,198,81,234,233,137,77,29,71,15,0, -200,70,3,0,99,66,162,69,221,239,15,0,202,5,221,31,15,0,197,61, -221,183,15,0,61,63,5,0,221,191,13,0,224,57,234,13,221,183,13,0, -61,103,12,0,35,62,3,0,204,54,255,63,1,66,128,255,30,18,10,48, -181,21,61,95,12,0,32,70,0,2,203,54,255,63,128,255,10,18,10,48, -61,87,5,0,138,79,1,0,67,79,3,0,65,82,125,87,1,0,224,49, -223,21,224,49,154,13,221,23,15,0,221,255,15,0,226,5,221,55,15,0, -181,5,221,31,15,0,61,63,5,0,125,7,9,0,125,63,1,0,31,82, -229,5,95,50,125,55,9,0,163,87,3,0,43,2,4,0,4,0,20,2, -6,224,7,232,68,54,0,0,38,54,72,241,230,233,193,69,68,86,0,0, -234,87,237,238,196,82,198,81,234,233,201,61,221,247,15,0,146,61,29,71, -15,0,200,70,3,0,99,66,178,53,221,215,15,0,130,13,221,239,15,0, -210,5,61,63,5,0,125,63,1,0,221,151,15,0,61,55,5,0,221,175, -15,0,224,49,202,29,67,231,3,0,221,255,13,0,146,13,61,103,12,0, -0,58,204,54,255,63,2,66,128,255,30,18,61,95,12,0,35,62,3,0, -203,54,255,63,1,66,191,255,38,105,97,82,254,13,221,31,15,0,229,5, -29,48,191,255,42,249,224,81,178,5,31,82,245,5,28,48,29,56,128,255, -12,0,28,80,138,0,42,2,4,0,0,2,128,255,6,0,22,2,9,2, -6,224,7,232,29,48,191,255,214,250,61,103,9,0,95,98,125,103,9,0, -252,5,28,48,29,56,191,255,48,255,10,224,149,13,61,95,1,0,65,90, -125,95,1,0,75,231,255,255,156,0,29,48,191,255,210,250,28,80,31,2, -10,2,7,232,6,248,213,13,29,56,165,5,65,58,7,79,0,0,224,73, -178,5,232,73,170,253,232,73,226,5,65,50,6,71,0,0,224,65,154,245, -6,80,191,81,32,2,10,2,7,232,6,248,213,13,29,56,165,5,65,58, -7,71,0,0,224,65,178,5,233,65,170,253,224,65,226,5,65,50,6,79, -0,0,224,73,154,245,6,80,191,81,32,2,3,30,204,255,99,255,49,0, -99,239,33,0,99,63,29,0,7,232,29,88,193,90,6,56,159,58,11,57, -149,58,99,63,17,0,99,55,25,0,99,231,37,0,99,7,21,0,6,224, -29,48,99,223,41,0,203,50,28,216,149,218,99,215,45,0,6,217,28,208, -203,210,231,1,210,5,64,62,0,128,7,217,229,5,1,106,99,111,17,0, -99,7,21,0,99,231,9,0,99,239,13,0,32,70,63,0,99,71,1,0, -99,7,5,0,29,56,28,48,0,72,128,255,70,12,99,95,13,0,35,79, -21,0,35,71,17,0,32,230,255,3,188,65,99,87,9,0,99,71,17,0, -225,87,0,0,170,73,35,55,1,0,99,79,21,0,168,49,6,6,192,255, -198,5,0,82,0,90,133,29,224,49,206,5,31,82,31,90,181,21,6,72, -191,74,6,64,26,48,27,56,128,255,250,12,35,55,9,0,35,63,13,0, -38,81,39,89,166,81,225,71,0,0,168,89,167,89,35,215,45,0,35,223, -41,0,35,231,37,0,35,239,33,0,35,255,49,0,3,30,52,0,127,0, -3,30,3,30,64,134,3,30,204,255,99,255,49,0,99,223,37,0,99,207, -45,0,99,239,29,0,99,231,33,0,8,200,7,224,99,215,41,0,193,58, -6,208,9,248,31,48,193,50,230,57,209,5,230,57,170,13,249,209,137,13, -28,64,26,48,31,224,25,208,8,248,6,200,7,48,224,49,186,5,128,7, -244,2,28,72,193,74,149,74,26,232,28,80,202,82,29,88,150,90,10,89, -202,234,224,73,242,5,193,90,129,90,64,70,0,64,8,89,165,5,1,74, -31,64,193,66,149,66,25,216,31,48,202,50,27,56,150,58,6,57,202,218, -224,65,242,5,193,58,129,58,64,86,0,64,10,57,165,5,1,66,9,6, -1,248,186,5,128,7,158,2,8,6,1,248,186,5,128,7,162,2,9,48, -168,49,0,66,99,7,1,0,28,208,159,210,223,210,9,206,2,252,27,80, -7,81,6,6,224,255,209,21,7,104,230,111,128,0,99,111,1,0,27,64, -230,71,128,0,32,78,31,0,166,73,193,58,233,63,192,0,7,65,27,80, -193,82,233,87,192,0,149,21,6,6,192,255,225,13,6,54,224,255,7,64, -230,71,128,0,27,80,193,58,32,78,31,0,166,73,233,63,192,0,7,81, -224,81,178,5,136,70,1,0,60,249,191,250,178,5,128,7,6,1,221,65, -253,65,35,103,1,0,225,55,0,0,204,49,198,89,11,80,159,82,170,54, -1,0,8,56,230,71,192,0,8,72,230,95,192,0,159,58,70,57,7,89, -11,64,26,248,166,201,25,62,254,3,7,6,2,248,142,93,9,48,8,49, -170,5,0,58,11,50,224,57,190,21,167,49,0,58,6,6,191,255,201,5, -1,50,0,74,0,66,6,6,192,255,138,13,32,54,63,0,8,80,129,82, -200,70,1,0,10,65,0,90,6,6,224,255,233,5,9,88,8,72,0,66, -6,54,224,255,32,238,32,0,166,233,11,224,253,231,192,0,230,95,128,0, -9,80,253,87,192,0,11,81,224,225,234,95,0,0,11,81,230,79,128,0, -8,88,253,95,192,0,11,73,230,71,128,0,212,58,199,65,10,48,159,50, -198,73,230,73,225,63,0,0,199,65,64,94,0,128,235,81,226,55,0,0, -38,80,74,73,8,56,148,58,186,5,0,74,0,66,191,250,223,250,31,65, -99,71,17,0,99,79,13,0,133,13,64,70,240,127,8,249,99,255,17,0, -99,7,13,0,35,95,17,0,35,87,13,0,128,7,52,1,232,233,225,63, -0,0,168,233,29,224,35,103,1,0,25,232,204,57,167,89,11,216,224,217, -218,5,28,216,0,226,29,238,224,255,27,48,128,255,178,19,170,233,234,223, -192,0,28,64,129,66,32,78,31,0,170,73,233,71,128,0,27,65,234,231, -192,0,28,72,26,248,29,62,254,3,7,6,2,248,142,93,9,48,8,49, -170,5,0,58,11,50,224,57,190,21,167,49,0,58,6,6,191,255,201,5, -1,50,0,74,0,66,6,6,192,255,138,13,32,54,63,0,8,80,129,82, -200,70,1,0,10,65,0,90,6,6,224,255,233,5,9,88,8,72,0,66, -6,54,224,255,32,238,32,0,166,233,11,224,253,231,192,0,230,95,128,0, -9,80,253,87,192,0,11,81,224,225,234,95,0,0,11,81,230,79,128,0, -8,88,253,95,192,0,11,73,230,71,128,0,212,58,199,65,10,48,159,50, -198,73,230,73,225,63,0,0,199,65,64,94,0,128,235,81,226,55,0,0, -38,80,74,73,8,56,148,58,186,5,0,74,0,66,191,250,223,250,31,65, -99,71,9,0,99,79,5,0,133,13,64,70,240,127,8,249,99,255,9,0, -99,7,5,0,35,95,9,0,35,87,5,0,229,13,99,231,25,0,99,215, -21,0,28,88,26,80,245,5,99,255,25,0,99,207,21,0,31,88,25,80, -35,207,45,0,35,215,41,0,35,223,37,0,35,231,33,0,35,239,29,0, -35,255,49,0,3,30,52,0,127,0,3,30,224,255,99,255,29,0,99,207, -25,0,99,231,13,0,8,200,99,223,17,0,25,80,9,216,99,215,21,0, -64,254,0,128,6,208,99,239,9,0,26,88,7,232,29,48,193,50,6,89, -210,5,27,64,193,66,8,81,218,5,0,90,0,82,128,7,144,1,27,224, -61,225,159,226,223,226,6,80,149,82,26,72,203,234,9,56,149,58,29,57, -203,74,224,81,178,5,31,57,165,5,1,82,149,66,25,232,203,218,29,48, -149,50,27,49,203,234,224,65,178,5,31,49,165,5,1,66,202,65,8,206, -3,248,9,216,253,223,34,2,29,64,233,71,34,82,9,64,230,71,34,2, -200,81,232,81,225,215,0,0,7,64,253,71,34,2,200,81,232,81,225,95, -0,0,203,209,10,217,7,88,230,95,34,2,218,89,250,89,225,215,0,0, -6,64,233,71,34,82,202,89,234,89,225,79,0,0,201,209,231,239,34,82, -202,89,234,89,225,71,0,0,200,209,231,55,34,82,218,81,224,217,234,63, -0,0,7,89,10,48,159,50,166,54,1,0,166,201,230,87,192,0,11,72, -159,74,70,73,9,81,230,95,192,0,28,232,25,78,254,3,9,6,2,248, -238,85,11,64,10,65,170,5,0,74,11,66,224,73,190,21,169,65,0,74, -8,6,191,255,201,5,1,66,0,90,0,82,8,6,192,255,138,13,32,70, -63,0,10,48,129,50,202,86,1,0,6,81,0,58,8,6,224,255,233,5, -11,56,10,88,0,82,8,70,224,255,32,230,32,0,168,225,7,216,252,223, -192,0,232,63,128,0,11,48,252,55,192,0,7,49,224,217,234,63,0,0, -7,49,232,95,128,0,10,56,252,63,192,0,7,89,232,87,128,0,212,74, -201,81,6,56,159,58,199,89,231,89,225,79,0,0,201,81,255,49,226,71, -0,0,40,56,71,89,10,72,148,74,186,5,0,90,0,82,191,234,223,234, -29,81,99,87,5,0,99,95,1,0,133,13,64,94,240,127,11,233,99,239, -5,0,99,7,1,0,35,95,5,0,35,87,1,0,35,207,25,0,35,215, -21,0,35,223,17,0,35,231,13,0,35,239,9,0,35,255,29,0,3,30, -32,0,127,0,3,30,196,255,99,255,57,0,99,215,49,0,99,239,37,0, -99,231,41,0,6,88,7,48,193,50,6,232,99,223,45,0,99,71,1,0, -9,80,10,216,39,217,159,218,99,207,53,0,223,218,10,200,193,202,25,65, -186,5,128,7,138,2,11,64,29,65,218,5,0,90,0,82,128,7,152,2, -6,232,149,234,11,208,203,58,26,224,149,226,7,225,203,210,224,233,210,5, -64,94,0,128,11,225,165,5,1,234,25,248,149,250,35,207,1,0,203,82, -25,72,149,74,10,73,203,202,224,249,210,5,64,70,0,128,8,73,165,5, -1,250,9,56,129,58,64,54,0,192,167,49,6,88,132,90,171,49,6,80, -136,82,202,49,193,50,9,56,230,63,34,82,42,56,230,63,34,82,10,48, -193,50,9,56,230,63,34,82,42,56,230,63,34,82,10,48,193,50,9,56, -230,63,34,82,42,56,230,63,34,82,10,88,193,90,25,48,224,55,34,82, -11,48,249,55,34,2,198,81,230,81,225,55,0,0,11,64,233,71,34,2, -198,65,230,65,225,111,0,0,9,48,224,55,34,82,202,65,234,65,225,63, -0,0,199,105,235,207,34,82,202,65,234,65,225,55,0,0,198,105,99,111, -1,0,40,64,8,48,235,79,34,82,205,81,42,200,224,55,34,82,11,48, -232,55,34,2,198,81,230,81,225,63,0,0,11,48,249,55,34,2,199,49, -231,49,225,63,0,0,25,72,224,79,34,82,202,49,234,49,225,79,0,0, -201,57,235,71,34,82,202,49,234,49,235,207,34,82,225,71,0,0,200,57, -202,57,99,63,25,0,99,63,33,0,99,55,21,0,99,55,29,0,26,88, -230,95,34,2,6,64,250,55,34,82,26,48,231,55,34,2,198,81,230,81, -225,79,0,0,28,48,232,55,34,2,198,81,230,81,225,55,0,0,10,89, -198,73,28,48,231,55,34,2,201,49,233,49,225,207,0,0,7,72,250,79, -34,82,202,49,234,49,225,87,0,0,202,201,252,71,34,82,202,49,234,49, -225,79,0,0,201,201,252,63,34,82,217,81,224,89,234,71,0,0,8,49, -191,233,193,82,6,72,159,74,10,73,193,50,9,88,159,90,171,62,1,0, -167,233,231,79,192,0,6,64,159,66,71,65,8,73,231,55,192,0,27,80, -29,70,254,3,8,6,2,248,142,85,6,56,9,57,170,5,0,66,11,58, -224,65,190,21,168,57,0,66,7,6,191,255,201,5,1,58,0,50,0,74, -7,6,192,255,138,13,32,62,63,0,9,88,129,90,201,78,1,0,11,73, -0,90,7,6,224,255,233,5,6,88,9,48,0,74,7,62,224,255,32,238, -32,0,167,233,11,216,253,223,192,0,231,95,128,0,6,224,253,231,192,0, -11,225,224,217,234,95,0,0,28,89,231,55,128,0,9,224,253,231,192,0, -28,49,231,79,128,0,212,66,200,73,159,90,203,49,235,49,225,71,0,0, -200,73,9,64,148,66,186,5,0,50,0,74,191,82,223,82,10,73,99,79, -17,0,99,55,13,0,133,13,64,54,240,127,6,81,99,87,17,0,99,7, -13,0,35,95,17,0,35,87,13,0,245,13,64,94,240,127,27,56,11,57, -224,233,186,5,135,62,128,0,99,63,9,0,99,7,5,0,7,88,0,80, -35,207,53,0,35,215,49,0,35,223,45,0,35,231,41,0,35,239,37,0, -35,255,57,0,3,30,60,0,127,0,0,58,229,5,6,56,191,58,39,49, -167,49,223,58,32,70,29,4,32,14,31,0,6,96,12,88,144,90,234,95, -0,0,196,90,171,9,235,103,128,0,12,88,136,90,234,95,0,0,195,90, -171,9,235,103,128,0,12,88,132,90,234,95,0,0,194,90,171,9,235,103, -128,0,12,88,130,90,234,95,0,0,193,90,171,9,235,103,128,0,12,88, -129,90,171,9,235,103,128,0,225,55,192,0,161,65,212,66,88,26,6,72, -7,80,9,56,7,48,224,73,210,5,139,50,213,58,200,49,10,49,6,88, -7,80,72,26,127,0,192,25,71,73,70,65,8,80,9,88,127,0,80,26, -99,231,5,0,99,215,13,0,6,224,99,239,1,0,8,208,99,223,9,0, -7,232,9,216,251,233,0,74,202,5,250,225,170,5,1,74,35,215,13,0, -35,239,1,0,35,231,5,0,35,223,9,0,9,80,3,30,16,0,127,0, -80,26,99,231,5,0,99,215,13,0,6,224,99,239,1,0,8,208,99,223, -9,0,7,232,9,216,251,233,1,74,202,5,250,225,170,5,0,74,35,215, -13,0,35,239,1,0,35,231,5,0,35,223,9,0,9,80,3,30,16,0, -127,0,80,26,80,26,192,25,8,80,198,81,230,81,225,95,0,0,201,89, -199,89,127,0,0,2,6,64,7,72,0,50,0,58,128,255,28,5,22,2, -8,0,18,2,7,216,99,79,5,0,27,88,11,72,64,254,0,128,95,73, -99,71,1,0,6,208,26,64,95,65,232,73,250,29,224,89,178,5,127,90, -186,29,35,55,5,0,35,103,1,0,6,80,95,81,95,97,236,81,170,21, -224,49,178,5,127,50,234,13,0,58,35,103,1,0,26,48,236,55,192,2, -6,64,95,65,162,5,31,58,6,64,7,72,133,93,224,89,246,13,35,63, -5,0,224,57,182,13,26,48,7,72,35,71,1,0,27,56,128,255,58,3, -10,64,11,72,133,77,224,89,246,21,35,55,1,0,0,64,166,65,26,48, -35,63,5,0,225,79,0,0,128,73,167,73,27,56,128,255,20,3,0,64, -170,65,225,87,0,0,0,72,170,73,171,73,133,53,35,63,5,0,224,57, -230,21,35,71,1,0,0,48,186,49,225,79,0,0,0,56,169,57,35,79, -5,0,187,57,128,255,226,2,0,64,170,65,225,87,0,0,0,72,170,73, -171,73,245,21,0,72,0,224,186,225,225,95,0,0,0,232,171,233,187,233, -35,215,1,0,0,64,186,65,225,55,0,0,166,73,28,48,167,73,29,56, -128,255,170,2,10,64,11,72,8,80,9,88,40,2,8,0,80,0,18,2, -8,208,218,254,255,255,144,210,6,224,220,70,255,255,8,48,250,55,34,2, -99,55,21,0,9,216,27,48,198,222,255,255,8,72,255,79,34,2,99,79, -17,0,144,50,8,72,230,71,34,2,251,79,34,2,99,79,25,0,99,71, -29,0,144,226,28,72,255,79,34,2,99,79,33,0,7,232,28,56,250,63, -34,2,99,63,37,0,99,7,45,0,221,54,255,255,6,56,255,63,34,2, -99,63,49,0,250,55,34,2,99,55,53,0,99,7,57,0,99,7,61,0, -99,7,69,0,99,7,73,0,251,231,34,2,99,231,41,0,99,7,77,0, -144,234,255,239,34,2,99,239,65,0,0,226,0,234,29,248,194,250,31,72, -195,73,105,231,1,0,0,218,0,226,245,21,27,56,194,58,29,80,187,81, -199,81,194,82,195,81,42,55,17,0,31,72,6,88,144,90,203,225,195,73, -41,63,1,0,198,86,255,255,202,57,105,63,1,0,65,218,253,217,151,237, -195,249,63,87,1,0,65,234,10,88,202,0,127,87,1,0,144,90,203,225, -100,234,198,213,35,63,13,0,35,95,9,0,208,58,7,89,35,87,5,0, -35,55,1,0,208,82,6,81,40,2,80,0,7,2,6,208,7,216,8,88, -9,48,224,49,159,21,127,50,246,13,11,6,193,255,207,13,11,6,63,0, -150,13,224,49,186,5,224,89,214,5,127,50,234,5,224,89,198,5,0,82, -0,90,133,45,224,89,202,5,26,80,27,88,181,37,224,89,158,13,26,48, -27,56,128,89,11,64,0,74,128,255,182,2,149,29,11,6,224,255,166,13, -27,232,191,234,11,54,224,255,230,223,160,0,27,80,29,88,213,13,32,62, -32,0,171,57,27,80,231,87,192,0,235,223,160,0,235,215,128,0,26,81, -27,88,29,2,9,2,6,224,7,232,9,48,224,49,159,21,127,50,246,13, -8,6,193,255,207,13,8,6,63,0,150,13,224,49,186,5,224,65,214,5, -127,50,234,5,224,65,198,5,0,82,0,90,229,37,224,65,202,5,28,80, -29,88,149,37,224,65,142,13,28,48,29,56,128,65,0,74,128,255,54,0, -133,29,28,72,8,6,224,255,134,13,8,70,224,255,232,79,192,0,0,80, -9,88,213,13,32,86,32,0,168,81,234,231,128,0,232,239,192,0,29,225, -28,88,232,79,192,0,9,80,31,2,7,2,6,224,7,232,9,48,8,72, -224,49,159,21,127,50,246,13,9,6,193,255,207,13,9,6,63,0,150,13, -224,49,186,5,224,73,214,5,127,50,234,5,224,73,198,5,0,82,0,90, -245,37,224,73,202,5,28,80,29,88,165,37,224,73,158,13,28,48,29,56, -128,73,9,64,0,74,191,255,54,255,133,29,9,6,224,255,134,13,29,80, -9,62,224,255,231,87,128,0,0,88,229,13,32,86,32,0,169,81,29,64, -234,71,192,0,233,239,128,0,233,231,128,0,28,65,8,80,29,88,29,2, -24,0,17,2,99,55,17,0,8,208,99,63,21,0,99,63,9,0,9,216, -191,58,35,255,9,0,99,63,13,0,224,249,154,13,224,217,250,5,35,87, -17,0,0,88,250,87,194,2,133,125,64,70,0,128,224,249,178,13,32,238, -63,0,31,88,72,89,138,21,129,66,95,234,224,65,170,253,181,13,32,238, -31,0,35,103,17,0,72,97,218,5,129,66,95,234,224,65,154,253,27,48, -64,70,0,128,224,49,178,13,32,78,63,0,6,56,72,57,250,13,129,66, -95,74,224,65,170,253,165,13,32,78,31,0,26,48,72,49,218,5,129,66, -95,74,224,65,170,253,0,202,0,226,233,233,166,69,35,103,9,0,99,103, -1,0,35,103,17,0,169,233,99,103,5,0,162,13,29,64,0,72,26,48, -27,56,191,255,74,254,10,64,11,72,181,5,26,64,27,72,9,56,8,48, -133,45,28,64,193,226,159,66,193,202,35,111,1,0,8,201,231,105,251,5, -231,105,250,21,35,111,5,0,230,105,177,21,35,111,5,0,230,105,225,71, -0,0,35,111,1,0,199,65,168,105,99,111,1,0,35,111,5,0,156,230, -1,0,166,105,99,111,5,0,7,64,223,66,129,58,129,50,8,49,95,234, -224,233,142,221,28,80,25,88,39,2,24,0,7,2,6,224,7,232,8,208, -9,216,224,233,138,13,224,217,234,5,250,231,194,90,11,80,0,88,213,21, -28,48,29,56,26,64,27,72,191,255,186,254,10,48,11,56,26,64,27,72, -191,255,22,252,28,64,10,224,8,80,188,81,225,63,0,0,167,233,157,89, -29,2,9,2,135,73,232,49,225,63,0,0,167,73,168,49,6,80,9,88, -31,2,9,2,6,224,7,232,9,48,224,49,159,21,127,50,246,13,8,6, -193,255,207,13,8,6,63,0,150,13,224,49,186,5,224,65,214,5,127,50, -234,5,224,65,198,5,0,82,0,90,229,37,224,65,202,5,28,80,29,88, -149,37,224,65,142,13,28,48,29,56,128,65,0,74,191,255,182,252,133,29, -28,72,8,6,224,255,134,13,8,70,224,255,232,79,192,0,0,80,9,88, -213,13,32,86,32,0,168,81,234,231,128,0,232,239,192,0,29,225,28,88, -232,79,192,0,9,80,31,2,88,26,99,255,5,0,99,231,1,0,8,80, -3,224,7,72,9,64,10,72,6,56,38,6,1,0,4,0,128,255,142,1, -35,231,1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0,99,231, -1,0,8,80,3,224,7,72,9,64,10,72,6,56,64,54,4,0,128,255, -100,1,35,231,1,0,35,255,5,0,72,26,127,0,3,30,224,255,99,79, -29,0,99,255,13,0,99,231,9,0,7,72,3,230,8,0,201,102,0,1, -99,71,25,0,6,56,9,64,194,21,35,86,16,0,202,86,7,0,99,87, -5,0,35,94,27,0,28,98,76,89,68,90,99,95,1,0,43,79,253,255, -38,6,4,0,4,0,197,5,38,6,4,0,3,0,128,255,4,1,35,255, -13,0,35,231,9,0,3,30,32,0,127,0,88,26,99,255,5,0,99,231, -1,0,7,64,3,224,6,56,38,6,6,0,3,0,128,255,220,0,35,231, -1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0,99,231,1,0, -6,56,3,224,38,6,5,0,2,0,128,255,184,0,35,231,1,0,35,255, -5,0,72,26,127,0,88,26,99,255,5,0,99,231,1,0,8,80,3,224, -7,72,9,64,10,72,6,56,38,6,7,0,4,0,128,255,140,0,35,231, -1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0,99,231,1,0, -6,56,3,224,38,6,8,0,2,0,128,255,104,0,35,231,1,0,35,255, -5,0,72,26,127,0,88,26,99,255,5,0,99,231,1,0,8,80,3,224, -7,72,9,64,10,72,6,56,38,6,18,0,4,0,128,255,60,0,35,231, -1,0,35,255,5,0,72,26,127,0,88,26,99,255,5,0,99,231,1,0, -8,80,3,224,7,72,9,64,10,72,6,56,38,6,19,0,4,0,128,255, -16,0,35,231,1,0,35,255,5,0,72,26,127,0,92,26,99,255,1,0, -97,2,0,82,130,255,124,189,217,5,10,48,128,255,86,0,31,82,35,255, -1,0,68,26,127,0,84,26,99,255,9,0,99,231,5,0,99,239,1,0, -3,230,4,0,128,239,4,0,93,102,0,0,44,102,192,176,224,97,234,5, -68,86,0,0,42,86,224,242,245,5,191,255,170,176,10,48,224,49,170,5, -0,80,35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0,84,26, -99,255,9,0,99,231,5,0,99,239,1,0,3,230,4,0,6,232,191,255, -164,255,10,48,224,49,178,5,102,239,1,0,35,239,1,0,35,255,9,0, -35,231,5,0,76,26,127,0,88,26,88,26,4,0,3,30,228,255,99,255, -25,0,99,231,21,0,99,207,17,0,3,230,20,0,99,215,13,0,99,239, -5,0,99,223,9,0,128,239,4,0,99,55,1,0,0,202,191,255,150,175, -68,222,15,0,59,223,49,231,165,13,59,215,1,0,93,254,0,0,63,254, -34,0,122,0,59,223,5,0,224,217,234,245,68,102,0,0,44,103,241,238, -224,97,242,5,191,255,252,175,42,54,220,0,189,255,252,167,35,63,1,0, -2,50,191,255,244,254,25,88,171,0,2,82,75,80,202,54,1,0,98,50, -145,253,191,255,84,175,35,207,17,0,35,215,13,0,35,223,9,0,35,239, -5,0,35,255,25,0,35,231,21,0,3,30,28,0,127,0,84,26,99,255, -9,0,99,231,5,0,99,239,1,0,3,230,4,0,6,232,191,255,10,175, -68,102,15,0,44,103,49,231,125,103,5,0,68,14,15,0,97,239,49,231, -191,255,6,175,35,239,1,0,35,255,9,0,35,231,5,0,76,26,127,0, -88,26,99,255,5,0,99,231,1,0,1,50,3,224,191,255,16,255,35,231, -1,0,35,255,5,0,72,26,127,0,80,26,99,255,13,0,99,231,9,0, -99,223,5,0,3,230,8,0,99,239,1,0,6,216,68,238,15,0,191,255, -164,174,61,103,53,231,224,97,61,238,52,231,250,5,68,94,18,0,43,94, -68,39,125,95,1,0,61,55,1,0,68,78,18,0,219,49,41,78,68,39, -230,73,203,13,68,70,122,0,40,70,68,104,232,49,235,5,125,55,1,0, -6,232,187,233,213,5,31,234,12,50,191,255,100,254,191,255,108,174,29,80, -35,223,5,0,35,239,1,0,35,255,13,0,35,231,9,0,3,30,16,0, -127,0,88,26,99,255,5,0,99,231,1,0,6,248,3,224,224,249,202,5, -191,255,192,174,10,248,1,74,9,80,194,82,223,81,106,7,1,0,65,74, -9,6,224,255,135,253,32,78,18,0,1,50,9,96,194,98,223,97,108,55, -1,0,65,74,9,6,232,255,247,245,32,78,29,0,1,50,9,56,194,58, -223,57,103,55,1,0,65,74,9,6,224,255,247,245,35,255,5,0,35,231, -1,0,72,26,127,0,3,30,236,255,99,255,17,0,99,231,13,0,99,215, -9,0,3,230,12,0,99,239,1,0,99,223,5,0,128,239,4,0,6,216, -224,217,199,5,27,6,224,255,183,5,31,82,165,37,191,255,58,174,10,56, -27,48,194,50,6,72,199,73,41,215,1,0,105,218,178,5,224,209,218,5, -27,48,191,255,170,254,133,21,97,210,226,13,68,58,7,70,252,255,199,49, -102,7,253,255,0,58,27,48,93,254,0,0,63,254,80,0,122,0,0,82, -35,215,9,0,35,223,5,0,35,239,1,0,35,255,17,0,35,231,13,0, -3,30,20,0,127,0,88,0,96,0,106,0,116,0,132,0,142,0,152,0, -162,0,172,0,182,0,192,0,240,0,208,0,218,0,228,0,0,1,246,0, -10,1,20,1,30,1,40,1,50,1,84,1,98,1,114,1,130,1,148,1, -164,1,180,1,196,1,212,1,228,1,244,1,74,1,88,1,104,1,120,1, -138,1,154,1,170,1,186,1,202,1,218,1,234,1,128,7,33,0,224,7, -68,1,128,7,33,0,128,7,193,255,165,13,128,7,33,0,128,7,193,247, -213,5,128,7,33,0,128,7,193,243,240,239,64,0,224,7,68,1,128,7, -33,0,128,7,193,241,229,29,128,7,33,0,128,7,193,240,149,29,128,7, -33,0,128,7,193,112,197,21,128,7,33,0,128,7,193,48,245,13,128,7, -33,0,128,7,193,16,165,13,128,7,33,0,128,7,193,0,213,5,128,7, -33,0,128,7,65,0,240,239,64,0,224,7,68,1,128,7,33,0,128,7, -193,255,165,13,128,7,33,0,128,7,193,247,213,5,128,7,33,0,128,7, -193,243,128,7,78,0,128,7,33,0,213,37,128,7,33,0,128,7,193,240, -229,29,128,7,33,0,128,7,193,241,149,29,128,7,33,0,128,7,193,112, -197,21,128,7,33,0,128,7,193,48,245,13,128,7,33,0,128,7,193,16, -165,13,128,7,33,0,128,7,193,0,213,5,128,7,33,0,128,7,65,0, -240,239,64,0,240,87,64,0,234,95,253,255,171,25,106,0,240,255,64,0, -255,103,1,0,204,25,64,6,63,0,240,103,64,0,236,103,1,0,204,25, -64,6,192,255,133,21,240,103,64,0,236,103,1,0,204,25,64,6,192,247, -133,13,240,103,64,0,236,103,1,0,204,25,64,6,192,243,64,6,63,0, -240,103,64,0,236,103,1,0,204,25,64,6,192,241,133,53,240,103,64,0, -236,103,1,0,204,25,64,6,192,240,133,45,240,103,64,0,236,103,1,0, -204,25,64,6,192,112,133,37,240,103,64,0,236,103,1,0,204,25,64,6, -192,48,133,29,240,103,64,0,236,103,1,0,204,25,64,6,192,16,133,21, -240,103,64,0,236,103,1,0,204,25,64,6,192,0,133,13,240,103,64,0, -236,103,1,0,204,25,64,6,64,0,64,6,63,0,192,25,6,56,32,70, -32,0,7,96,144,98,234,55,0,0,196,50,230,63,128,0,166,65,7,88, -136,90,234,55,0,0,195,50,230,63,128,0,166,65,7,80,132,82,234,55, -0,0,194,50,230,63,128,0,166,65,7,72,130,74,234,55,0,0,193,50, -230,63,128,0,166,65,7,48,129,50,230,63,128,0,166,65,167,65,8,80, -127,0,0,0,115,116,114,105,110,103,32,110,111,116,32,102,111,117,110,100, -0,0,0,0,0,0,0,0,248,12,128,0,0,0,0,0,0,0,0,0, -152,175,138,0,26,11,128,0,0,0,0,0,240,20,128,0,0,0,0,0, -0,0,0,0,140,228,140,0,172,20,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,254,34,128,0,0,0,0,0,28,35,128,0,0,0,0,0, -34,35,128,0,0,0,0,0,0,0,0,0,0,0,0,0,206,35,128,0, -0,0,0,0,66,36,128,0,0,0,0,0,90,36,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,102,36,128,0,0,0,0,0,66,36,128,0, -0,0,0,0,218,36,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,64,2,0,0,2,0,0,0,66,2,0,0,3,0,0,0, -198,1,0,0,4,0,0,0,67,2,0,0,5,0,0,0,19,48,0,0, -6,0,0,0,192,1,0,0,7,0,0,0,0,0,0,0,10,0,0,0, -0,0,0,0,20,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0, -40,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,60,0,0,0, -0,0,0,0,70,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0, -90,0,0,0,0,0,0,0,42,63,128,0,0,0,0,0,0,0,0,0, -132,215,255,255,2,63,128,0,0,0,0,0,180,215,255,255,22,63,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,30,29,130,0,0,0,0,0,90,63,128,0,0,0,0,0, -126,63,128,0,0,0,0,0,160,63,128,0,0,0,0,0,196,63,128,0, -0,0,0,0,232,63,128,0,0,0,0,0,84,108,0,0,0,0,0,0, -176,108,0,0,0,0,0,0,12,109,0,0,0,0,0,0,26,127,0,0, -0,0,0,0,62,110,0,0,0,0,0,0,154,110,0,0,0,0,0,0, -10,111,0,0,0,0,0,0,56,107,0,0,0,0,0,0,176,128,0,0, -0,0,0,0,218,115,0,0,0,0,0,0,186,124,0,0,0,0,0,0, -48,116,0,0,0,0,0,0,34,112,0,0,0,0,0,0,40,113,0,0, -0,0,0,0,136,116,0,0,0,0,0,0,146,117,0,0,0,0,0,0, -80,106,0,0,0,0,0,0,182,118,0,0,0,0,0,0,10,131,0,0, -0,0,0,0,140,129,0,0,0,0,0,0,14,120,0,0,0,0,0,0, -200,120,0,0,0,0,0,0,236,63,128,0,0,0,0,0,240,63,128,0, -0,0,0,0,246,63,128,0,0,0,0,0,126,121,0,0,0,0,0,0, -42,122,0,0,0,0,0,0,212,122,0,0,0,0,0,0,60,123,0,0, -0,0,0,0,178,123,0,0,0,0,0,0,38,124,0,0,0,0,0,0, -50,106,0,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,28,128,0,0,0,0,0,0,86,130,0,0,0,0,0,0, -246,129,0,0,0,0,0,0,30,129,0,0,0,0,0,0,238,116,0,0, -0,0,0,0,116,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -148,132,0,0,0,0,0,0,236,132,0,0,0,0,0,0,230,133,0,0, -0,0,0,0,246,133,0,0,0,0,0,0,86,134,0,0,0,0,0,0, -34,66,128,0,0,0,0,0,70,66,128,0,0,0,0,0,104,66,128,0, -0,0,0,0,70,133,0,0,0,0,0,0,140,66,128,0,0,0,0,0, -162,66,128,0,0,0,0,0,166,66,128,0,0,0,0,0,118,134,0,0, -0,0,0,0,4,138,0,0,0,0,0,0,170,66,128,0,0,0,0,0, -178,66,128,0,0,0,0,0,154,134,0,0,0,0,0,0,138,133,0,0, -0,0,0,0,254,138,0,0,0,0,0,0,234,66,128,0,0,0,0,0, -196,133,0,0,0,0,0,0,192,66,128,0,0,0,0,0,224,134,0,0, -0,0,0,0,112,135,0,0,0,0,0,0,208,135,0,0,0,0,0,0, -218,66,128,0,0,0,0,0,202,139,0,0,0,0,0,0,224,66,128,0, -0,0,0,0,10,131,0,0,0,0,0,0,160,139,0,0,0,0,0,0, -196,66,128,0,0,0,0,0,202,66,128,0,0,0,0,0,144,66,128,0, -0,0,0,0,148,66,128,0,0,0,0,0,154,66,128,0,0,0,0,0, -208,66,128,0,0,0,0,0,212,66,128,0,0,0,0,0,86,137,0,0, -0,0,0,0,250,135,0,0,0,0,0,0,94,137,0,0,0,0,0,0, -102,137,0,0,0,0,0,0,244,142,0,0,0,0,0,0,230,66,128,0, -0,0,0,0,158,137,0,0,0,0,0,0,28,67,128,0,0,0,0,0, -16,67,128,0,0,0,0,0,22,67,128,0,0,0,0,0,136,139,0,0, -0,0,0,0,236,66,128,0,0,0,0,0,158,66,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,148,132,0,0,0,0,0,0,236,132,0,0, -0,0,0,0,230,133,0,0,0,0,0,0,246,133,0,0,0,0,0,0, -86,134,0,0,0,0,0,0,34,66,128,0,0,0,0,0,70,66,128,0, -0,0,0,0,104,66,128,0,0,0,0,0,70,133,0,0,0,0,0,0, -36,64,128,0,0,0,0,0,162,66,128,0,0,0,0,0,166,66,128,0, -0,0,0,0,118,134,0,0,0,0,0,0,4,138,0,0,0,0,0,0, -170,66,128,0,0,0,0,0,178,66,128,0,0,0,0,0,54,65,128,0, -0,0,0,0,138,133,0,0,0,0,0,0,254,138,0,0,0,0,0,0, -234,66,128,0,0,0,0,0,196,133,0,0,0,0,0,0,192,66,128,0, -0,0,0,0,224,134,0,0,0,0,0,0,246,64,128,0,0,0,0,0, -208,135,0,0,0,0,0,0,218,66,128,0,0,0,0,0,202,139,0,0, -0,0,0,0,224,66,128,0,0,0,0,0,10,131,0,0,0,0,0,0, -160,139,0,0,0,0,0,0,196,66,128,0,0,0,0,0,202,66,128,0, -0,0,0,0,144,66,128,0,0,0,0,0,148,66,128,0,0,0,0,0, -154,66,128,0,0,0,0,0,208,66,128,0,0,0,0,0,212,66,128,0, -0,0,0,0,86,137,0,0,0,0,0,0,250,135,0,0,0,0,0,0, -94,137,0,0,0,0,0,0,102,137,0,0,0,0,0,0,250,63,128,0, -0,0,0,0,230,66,128,0,0,0,0,0,128,64,128,0,0,0,0,0, -28,67,128,0,0,0,0,0,16,67,128,0,0,0,0,0,22,67,128,0, -0,0,0,0,136,139,0,0,0,0,0,0,236,66,128,0,0,0,0,0, -158,66,128,0,0,0,0,0,0,0,0,0,0,0,0,0,148,132,0,0, -0,0,0,0,236,132,0,0,0,0,0,0,230,133,0,0,0,0,0,0, -246,133,0,0,0,0,0,0,86,134,0,0,0,0,0,0,34,66,128,0, -0,0,0,0,70,66,128,0,0,0,0,0,104,66,128,0,0,0,0,0, -70,133,0,0,0,0,0,0,124,64,128,0,0,0,0,0,162,66,128,0, -0,0,0,0,166,66,128,0,0,0,0,0,118,134,0,0,0,0,0,0, -4,138,0,0,0,0,0,0,170,66,128,0,0,0,0,0,178,66,128,0, -0,0,0,0,54,65,128,0,0,0,0,0,138,133,0,0,0,0,0,0, -254,138,0,0,0,0,0,0,234,66,128,0,0,0,0,0,196,133,0,0, -0,0,0,0,192,66,128,0,0,0,0,0,224,134,0,0,0,0,0,0, -194,65,128,0,0,0,0,0,208,135,0,0,0,0,0,0,218,66,128,0, -0,0,0,0,202,139,0,0,0,0,0,0,224,66,128,0,0,0,0,0, -10,131,0,0,0,0,0,0,160,139,0,0,0,0,0,0,196,66,128,0, -0,0,0,0,202,66,128,0,0,0,0,0,144,66,128,0,0,0,0,0, -148,66,128,0,0,0,0,0,154,66,128,0,0,0,0,0,208,66,128,0, -0,0,0,0,212,66,128,0,0,0,0,0,86,137,0,0,0,0,0,0, -250,135,0,0,0,0,0,0,94,137,0,0,0,0,0,0,102,137,0,0, -0,0,0,0,82,64,128,0,0,0,0,0,230,66,128,0,0,0,0,0, -128,64,128,0,0,0,0,0,28,67,128,0,0,0,0,0,16,67,128,0, -0,0,0,0,22,67,128,0,0,0,0,0,136,139,0,0,0,0,0,0, -236,66,128,0,0,0,0,0,158,66,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,148,132,0,0,0,0,0,0,236,132,0,0,0,0,0,0, -230,133,0,0,0,0,0,0,246,133,0,0,0,0,0,0,86,134,0,0, -0,0,0,0,34,66,128,0,0,0,0,0,70,66,128,0,0,0,0,0, -104,66,128,0,0,0,0,0,70,133,0,0,0,0,0,0,36,64,128,0, -0,0,0,0,162,66,128,0,0,0,0,0,166,66,128,0,0,0,0,0, -118,134,0,0,0,0,0,0,4,138,0,0,0,0,0,0,170,66,128,0, -0,0,0,0,178,66,128,0,0,0,0,0,54,65,128,0,0,0,0,0, -138,133,0,0,0,0,0,0,254,138,0,0,0,0,0,0,234,66,128,0, -0,0,0,0,196,133,0,0,0,0,0,0,192,66,128,0,0,0,0,0, -224,134,0,0,0,0,0,0,98,65,128,0,0,0,0,0,208,135,0,0, -0,0,0,0,218,66,128,0,0,0,0,0,202,139,0,0,0,0,0,0, -224,66,128,0,0,0,0,0,10,131,0,0,0,0,0,0,160,139,0,0, -0,0,0,0,196,66,128,0,0,0,0,0,202,66,128,0,0,0,0,0, -144,66,128,0,0,0,0,0,148,66,128,0,0,0,0,0,154,66,128,0, -0,0,0,0,208,66,128,0,0,0,0,0,212,66,128,0,0,0,0,0, -86,137,0,0,0,0,0,0,250,135,0,0,0,0,0,0,94,137,0,0, -0,0,0,0,102,137,0,0,0,0,0,0,40,64,128,0,0,0,0,0, -230,66,128,0,0,0,0,0,128,64,128,0,0,0,0,0,28,67,128,0, -0,0,0,0,16,67,128,0,0,0,0,0,22,67,128,0,0,0,0,0, -136,139,0,0,0,0,0,0,236,66,128,0,0,0,0,0,158,66,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,92,143,0,0,0,0,0,0, -106,143,0,0,0,0,0,0,96,144,0,0,0,0,0,0,186,159,0,0, -0,0,0,0,190,159,0,0,0,0,0,0,120,143,0,0,0,0,0,0, -62,159,0,0,0,0,0,0,96,159,0,0,0,0,0,0,132,159,0,0, -0,0,0,0,168,159,0,0,0,0,0,0,84,108,0,0,0,0,0,0, -176,108,0,0,0,0,0,0,12,109,0,0,0,0,0,0,74,145,0,0, -0,0,0,0,62,110,0,0,0,0,0,0,154,110,0,0,0,0,0,0, -10,111,0,0,0,0,0,0,56,107,0,0,0,0,0,0,76,154,0,0, -0,0,0,0,218,115,0,0,0,0,0,0,186,124,0,0,0,0,0,0, -48,116,0,0,0,0,0,0,10,145,0,0,0,0,0,0,34,145,0,0, -0,0,0,0,136,116,0,0,0,0,0,0,250,156,0,0,0,0,0,0, -198,159,0,0,0,0,0,0,182,118,0,0,0,0,0,0,10,131,0,0, -0,0,0,0,22,147,0,0,0,0,0,0,14,120,0,0,0,0,0,0, -200,120,0,0,0,0,0,0,172,159,0,0,0,0,0,0,176,159,0,0, -0,0,0,0,182,159,0,0,0,0,0,0,126,121,0,0,0,0,0,0, -42,122,0,0,0,0,0,0,212,122,0,0,0,0,0,0,146,155,0,0, -0,0,0,0,178,123,0,0,0,0,0,0,134,157,0,0,0,0,0,0, -214,158,0,0,0,0,0,0,194,159,0,0,0,0,0,0,0,155,0,0, -0,0,0,0,28,128,0,0,0,0,0,0,250,146,0,0,0,0,0,0, -188,146,0,0,0,0,0,0,30,129,0,0,0,0,0,0,238,116,0,0, -0,0,0,0,104,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -234,159,0,0,0,0,0,0,42,160,0,0,0,0,0,0,144,162,0,0, -0,0,0,0,56,183,0,0,0,0,0,0,60,183,0,0,0,0,0,0, -130,182,0,0,0,0,0,0,166,182,0,0,0,0,0,0,200,182,0,0, -0,0,0,0,236,182,0,0,0,0,0,0,16,183,0,0,0,0,0,0, -64,183,0,0,0,0,0,0,176,108,0,0,0,0,0,0,8,163,0,0, -0,0,0,0,56,174,0,0,0,0,0,0,218,163,0,0,0,0,0,0, -20,164,0,0,0,0,0,0,10,111,0,0,0,0,0,0,56,107,0,0, -0,0,0,0,86,175,0,0,0,0,0,0,218,115,0,0,0,0,0,0, -186,124,0,0,0,0,0,0,48,116,0,0,0,0,0,0,34,112,0,0, -0,0,0,0,40,113,0,0,0,0,0,0,136,116,0,0,0,0,0,0, -146,117,0,0,0,0,0,0,20,183,0,0,0,0,0,0,182,118,0,0, -0,0,0,0,10,131,0,0,0,0,0,0,140,129,0,0,0,0,0,0, -40,164,0,0,0,0,0,0,118,165,0,0,0,0,0,0,190,166,0,0, -0,0,0,0,178,167,0,0,0,0,0,0,152,168,0,0,0,0,0,0, -200,169,0,0,0,0,0,0,188,170,0,0,0,0,0,0,212,122,0,0, -0,0,0,0,226,171,0,0,0,0,0,0,200,173,0,0,0,0,0,0, -240,173,0,0,0,0,0,0,12,182,0,0,0,0,0,0,78,183,0,0, -0,0,0,0,118,177,0,0,0,0,0,0,28,128,0,0,0,0,0,0, -86,130,0,0,0,0,0,0,246,129,0,0,0,0,0,0,232,176,0,0, -0,0,0,0,238,116,0,0,0,0,0,0,232,181,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,7,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,15,0,0,0,14,0,0,0,0,0,0,0, -15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,183,0,0, -0,0,0,0,194,183,0,0,0,0,0,0,66,186,0,0,0,0,0,0, -160,244,0,0,0,0,0,0,164,244,0,0,0,0,0,0,2,184,0,0, -0,0,0,0,14,244,0,0,0,0,0,0,48,244,0,0,0,0,0,0, -84,244,0,0,0,0,0,0,120,244,0,0,0,0,0,0,168,244,0,0, -0,0,0,0,172,244,0,0,0,0,0,0,222,186,0,0,0,0,0,0, -8,199,0,0,0,0,0,0,176,187,0,0,0,0,0,0,234,187,0,0, -0,0,0,0,10,111,0,0,0,0,0,0,56,107,0,0,0,0,0,0, -78,200,0,0,0,0,0,0,94,202,0,0,0,0,0,0,186,124,0,0, -0,0,0,0,48,116,0,0,0,0,0,0,34,112,0,0,0,0,0,0, -254,187,0,0,0,0,0,0,136,116,0,0,0,0,0,0,146,117,0,0, -0,0,0,0,124,244,0,0,0,0,0,0,182,118,0,0,0,0,0,0, -10,131,0,0,0,0,0,0,106,202,0,0,0,0,0,0,38,188,0,0, -0,0,0,0,146,190,0,0,0,0,0,0,176,191,0,0,0,0,0,0, -222,192,0,0,0,0,0,0,182,193,0,0,0,0,0,0,174,194,0,0, -0,0,0,0,136,195,0,0,0,0,0,0,212,122,0,0,0,0,0,0, -140,196,0,0,0,0,0,0,146,198,0,0,0,0,0,0,186,198,0,0, -0,0,0,0,150,243,0,0,0,0,0,0,176,244,0,0,0,0,0,0, -74,203,0,0,0,0,0,0,28,128,0,0,0,0,0,0,182,244,0,0, -0,0,0,0,188,244,0,0,0,0,0,0,214,201,0,0,0,0,0,0, -238,116,0,0,0,0,0,0,118,208,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,12,245,0,0,0,0,0,0,42,245,0,0,0,0,0,0, -230,133,0,0,0,0,0,0,234,247,0,0,0,0,0,0,6,246,0,0, -0,0,0,0,158,252,0,0,0,0,0,0,28,245,0,0,0,0,0,0, -194,252,0,0,0,0,0,0,70,133,0,0,0,0,0,0,116,253,0,0, -0,0,0,0,248,252,0,0,0,0,0,0,252,252,0,0,0,0,0,0, -118,134,0,0,0,0,0,0,140,251,0,0,0,0,0,0,0,253,0,0, -0,0,0,0,8,253,0,0,0,0,0,0,72,250,0,0,0,0,0,0, -138,133,0,0,0,0,0,0,18,252,0,0,0,0,0,0,64,253,0,0, -0,0,0,0,196,133,0,0,0,0,0,0,22,253,0,0,0,0,0,0, -224,134,0,0,0,0,0,0,30,250,0,0,0,0,0,0,208,135,0,0, -0,0,0,0,48,253,0,0,0,0,0,0,202,139,0,0,0,0,0,0, -54,253,0,0,0,0,0,0,10,131,0,0,0,0,0,0,102,252,0,0, -0,0,0,0,26,253,0,0,0,0,0,0,32,253,0,0,0,0,0,0, -230,252,0,0,0,0,0,0,234,252,0,0,0,0,0,0,240,252,0,0, -0,0,0,0,38,253,0,0,0,0,0,0,42,253,0,0,0,0,0,0, -86,137,0,0,0,0,0,0,250,135,0,0,0,0,0,0,94,137,0,0, -0,0,0,0,102,137,0,0,0,0,0,0,226,244,0,0,0,0,0,0, -60,253,0,0,0,0,0,0,160,251,0,0,0,0,0,0,114,253,0,0, -0,0,0,0,102,253,0,0,0,0,0,0,108,253,0,0,0,0,0,0, -136,139,0,0,0,0,0,0,66,253,0,0,0,0,0,0,244,252,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,2,254,0,0,0,0,0,0, -42,160,0,0,0,0,0,0,144,162,0,0,0,0,0,0,140,1,1,0, -0,0,0,0,144,1,1,0,0,0,0,0,214,0,1,0,0,0,0,0, -250,0,1,0,0,0,0,0,28,1,1,0,0,0,0,0,64,1,1,0, -0,0,0,0,100,1,1,0,0,0,0,0,148,1,1,0,0,0,0,0, -176,108,0,0,0,0,0,0,8,163,0,0,0,0,0,0,64,0,1,0, -0,0,0,0,218,163,0,0,0,0,0,0,20,164,0,0,0,0,0,0, -10,111,0,0,0,0,0,0,56,107,0,0,0,0,0,0,86,175,0,0, -0,0,0,0,218,115,0,0,0,0,0,0,186,124,0,0,0,0,0,0, -48,116,0,0,0,0,0,0,34,112,0,0,0,0,0,0,40,113,0,0, -0,0,0,0,136,116,0,0,0,0,0,0,146,117,0,0,0,0,0,0, -104,1,1,0,0,0,0,0,182,118,0,0,0,0,0,0,10,131,0,0, -0,0,0,0,140,129,0,0,0,0,0,0,40,164,0,0,0,0,0,0, -118,165,0,0,0,0,0,0,190,166,0,0,0,0,0,0,178,167,0,0, -0,0,0,0,152,168,0,0,0,0,0,0,200,169,0,0,0,0,0,0, -188,170,0,0,0,0,0,0,212,122,0,0,0,0,0,0,226,171,0,0, -0,0,0,0,200,173,0,0,0,0,0,0,240,173,0,0,0,0,0,0, -120,253,0,0,0,0,0,0,162,1,1,0,0,0,0,0,194,255,0,0, -0,0,0,0,28,128,0,0,0,0,0,0,86,130,0,0,0,0,0,0, -246,129,0,0,0,0,0,0,232,255,0,0,0,0,0,0,238,116,0,0, -0,0,0,0,232,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -62,67,128,0,0,0,0,0,76,67,128,0,0,0,0,0,42,80,128,0, -0,0,0,0,84,80,128,0,0,0,0,0,88,80,128,0,0,0,0,0, -112,79,128,0,0,0,0,0,148,79,128,0,0,0,0,0,182,79,128,0, -0,0,0,0,218,79,128,0,0,0,0,0,254,79,128,0,0,0,0,0, -186,69,128,0,0,0,0,0,92,80,128,0,0,0,0,0,12,109,0,0, -0,0,0,0,126,75,128,0,0,0,0,0,62,110,0,0,0,0,0,0, -154,110,0,0,0,0,0,0,10,111,0,0,0,0,0,0,96,80,128,0, -0,0,0,0,26,77,128,0,0,0,0,0,218,115,0,0,0,0,0,0, -186,124,0,0,0,0,0,0,170,70,128,0,0,0,0,0,226,70,128,0, -0,0,0,0,130,70,128,0,0,0,0,0,136,116,0,0,0,0,0,0, -146,117,0,0,0,0,0,0,6,80,128,0,0,0,0,0,182,118,0,0, -0,0,0,0,226,76,128,0,0,0,0,0,150,80,128,0,0,0,0,0, -26,71,128,0,0,0,0,0,216,71,128,0,0,0,0,0,146,72,128,0, -0,0,0,0,254,72,128,0,0,0,0,0,2,80,128,0,0,0,0,0, -88,73,128,0,0,0,0,0,128,74,128,0,0,0,0,0,212,122,0,0, -0,0,0,0,116,78,128,0,0,0,0,0,18,70,128,0,0,0,0,0, -138,80,128,0,0,0,0,0,250,78,128,0,0,0,0,0,142,80,128,0, -0,0,0,0,200,77,128,0,0,0,0,0,28,128,0,0,0,0,0,0, -86,130,0,0,0,0,0,0,246,129,0,0,0,0,0,0,30,129,0,0, -0,0,0,0,238,116,0,0,0,0,0,0,146,80,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,100,83,128,0,0,0,0,0,112,83,128,0, -0,0,0,0,40,81,128,0,0,0,0,0,124,83,128,0,0,0,0,0, -128,83,128,0,0,0,0,0,196,82,128,0,0,0,0,0,232,82,128,0, -0,0,0,0,10,83,128,0,0,0,0,0,46,83,128,0,0,0,0,0, -132,83,128,0,0,0,0,0,136,83,128,0,0,0,0,0,140,83,128,0, -0,0,0,0,12,109,0,0,0,0,0,0,226,83,128,0,0,0,0,0, -144,83,128,0,0,0,0,0,148,83,128,0,0,0,0,0,92,81,128,0, -0,0,0,0,156,83,128,0,0,0,0,0,238,83,128,0,0,0,0,0, -160,83,128,0,0,0,0,0,162,83,128,0,0,0,0,0,188,81,128,0, -0,0,0,0,238,81,128,0,0,0,0,0,34,82,128,0,0,0,0,0, -166,83,128,0,0,0,0,0,172,83,128,0,0,0,0,0,250,83,128,0, -0,0,0,0,178,83,128,0,0,0,0,0,184,83,128,0,0,0,0,0, -246,83,128,0,0,0,0,0,186,83,128,0,0,0,0,0,192,83,128,0, -0,0,0,0,82,83,128,0,0,0,0,0,86,83,128,0,0,0,0,0, -92,83,128,0,0,0,0,0,198,83,128,0,0,0,0,0,202,83,128,0, -0,0,0,0,212,122,0,0,0,0,0,0,208,83,128,0,0,0,0,0, -210,83,128,0,0,0,0,0,214,83,128,0,0,0,0,0,112,82,128,0, -0,0,0,0,218,83,128,0,0,0,0,0,222,83,128,0,0,0,0,0, -28,128,0,0,0,0,0,0,230,83,128,0,0,0,0,0,234,83,128,0, -0,0,0,0,242,83,128,0,0,0,0,0,0,84,128,0,0,0,0,0, -96,83,128,0,0,0,0,0,26,123,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,200,124,128,0,0,0,0,0,8,0,0,0,0,0,1,0, -0,0,1,0,3,0,0,0,4,0,1,0,0,0,5,0,3,0,0,0, -252,223,4,32,0,0,16,0,236,3,0,0,252,223,0,36,0,0,0,0, -8,0,0,0,0,0,1,0,0,0,1,0,3,0,0,0,4,0,1,0, -0,0,5,0,3,0,0,0,252,255,4,0,0,0,16,0,236,3,0,0, -252,255,0,4,0,0,0,0,0,0,0,0,0,0,0,0,146,135,128,0, -0,0,0,0,192,136,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -20,134,128,0,0,0,0,0,206,163,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,98,137,128,0,0,0,0,0,140,137,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,164,138,128,0,0,0,0,0,206,138,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,236,139,128,0,0,0,0,0, -22,140,128,0,0,0,0,0,0,0,0,0,0,0,0,0,64,141,128,0, -0,0,0,0,106,141,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -110,142,128,0,0,0,0,0,152,142,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,154,143,128,0,0,0,0,0,196,143,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,254,144,128,0,0,0,0,0,40,145,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,94,146,128,0,0,0,0,0, -136,146,128,0,0,0,0,0,0,0,0,0,0,0,0,0,170,147,128,0, -0,0,0,0,212,147,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,149,128,0,0,0,0,0,46,149,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,210,150,128,0,0,0,0,0,252,150,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,254,151,128,0,0,0,0,0,40,152,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,58,153,128,0,0,0,0,0, -100,153,128,0,0,0,0,0,0,0,0,0,0,0,0,0,104,154,128,0, -0,0,0,0,146,154,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -250,155,128,0,0,0,0,0,36,156,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,72,157,128,0,0,0,0,0,114,157,128,0,0,0,0,0, -0,0,0,0,0,0,0,0,106,158,128,0,0,0,0,0,148,158,128,0, -0,0,0,0,0,0,0,0,0,0,0,0,144,159,128,0,0,0,0,0, -186,159,128,0,0,0,0,0,0,0,0,0,0,0,0,0,182,160,128,0, -0,0,0,0,224,160,128,0,0,0,0,0,0,0,0,0,0,0,0,0, -220,161,128,0,0,0,0,0,6,162,128,0,0,0,0,0,0,0,0,0, -0,0,0,0,16,163,128,0,0,0,0,0,58,163,128,0,0,177,132,0, -0,177,132,0,52,25,133,0,52,25,133,0,60,25,133,0,200,177,132,0, -212,177,132,0,0,0,0,2,0,4,2,4,2,5,4,6,4,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,126,76,11,125,14,0,20,0,9,0,3,125,0,125,127,127, -126,77,11,125,14,4,20,4,9,4,3,17,17,4,2,0,4,0,1,0, -0,125,127,127,126,64,11,125,12,125,3,125,3,125,5,4,3,125,3,125, -5,4,3,125,3,125,4,0,1,0,0,125,127,127,0,0,126,65,8,4, -3,125,8,4,3,125,8,4,4,0,1,0,0,125,127,127,126,66,19,125, -11,125,10,0,2,125,0,125,127,127,0,0,126,67,19,125,11,125,10,4, -2,0,10,4,2,0,4,0,1,0,0,125,127,127,0,0,126,68,11,125, -3,125,3,125,3,125,3,125,3,125,3,125,4,0,1,0,0,125,127,127, -126,69,19,125,11,125,7,0,12,125,8,0,9,0,3,125,0,125,127,127, -126,70,19,125,11,125,7,4,21,4,12,125,8,4,9,4,3,17,17,4, -2,0,4,0,1,0,0,125,127,127,0,0,126,71,8,4,3,125,8,4, -3,125,4,0,1,0,0,125,127,127,0,0,236,28,133,0,244,28,133,0, -252,28,133,0,4,29,133,0,220,94,133,0,236,94,133,0,4,95,133,0, -36,95,133,0,56,95,133,0,72,95,133,0,96,95,133,0,120,95,133,0, -140,95,133,0,172,95,133,0,126,64,11,125,12,125,3,125,5,4,3,125, -2,0,4,0,1,0,0,125,127,127,0,0,126,65,8,4,2,0,4,0, -1,0,0,125,127,127,0,0,126,66,19,125,11,125,10,0,2,125,0,125, -127,127,0,0,126,67,19,125,11,125,10,4,2,0,4,0,1,0,0,125, -127,127,0,0,126,68,11,125,3,125,3,125,3,125,3,125,3,125,3,125, -4,0,1,0,0,125,127,127,126,69,19,125,11,125,7,0,8,0,9,0, -3,125,0,125,127,127,0,0,126,70,19,125,11,125,7,4,21,4,8,4, -9,4,3,17,17,4,2,0,4,0,1,0,0,125,127,127,126,71,8,4, -2,0,4,0,1,0,0,125,127,127,0,0,236,28,133,0,244,28,133,0, -252,28,133,0,4,29,133,0,220,94,133,0,236,94,133,0,248,95,133,0, -16,96,133,0,32,96,133,0,48,96,133,0,68,96,133,0,92,96,133,0, -112,96,133,0,140,96,133,0,255,255,255,255,0,2,64,0,255,255,255,255, -20,187,132,0,255,255,255,255,1,2,65,0,255,255,255,255,68,187,132,0, -255,255,255,255,2,2,66,0,1,0,0,0,12,188,132,0,255,255,255,255, -2,2,66,0,6,0,0,0,112,187,132,0,255,255,255,255,2,2,67,0, -24,0,0,0,36,188,132,0,255,255,255,255,3,2,68,0,255,255,255,255, -60,188,132,0,255,255,255,255,4,2,69,0,1,0,0,0,80,188,132,0, -255,255,255,255,4,2,70,0,30,0,0,0,100,188,132,0,255,255,255,255, -8,2,71,0,255,255,255,255,36,187,132,0,255,255,255,255,10,2,76,0, -1,0,0,0,136,187,132,0,255,255,255,255,10,2,77,0,30,0,0,0, -160,187,132,0,255,255,255,255,9,2,71,0,255,255,255,255,120,188,132,0, -255,255,255,255,16,2,65,0,255,255,255,255,140,188,132,0,255,255,255,255, -17,2,71,0,255,255,255,255,52,187,132,0,255,255,255,255,18,2,71,0, -255,255,255,255,160,188,132,0,255,255,255,255,19,2,71,0,255,255,255,255, -184,187,132,0,255,255,255,255,20,2,71,0,255,255,255,255,88,187,132,0, -255,255,255,255,22,2,75,0,255,255,255,255,180,188,132,0,255,255,255,255, -23,2,75,0,255,255,255,255,200,188,132,0,255,255,255,255,19,16,72,0, -255,255,255,255,200,187,132,0,255,255,255,255,17,16,73,0,255,255,255,255, -152,25,133,0,0,1,5,38,0,1,112,0,56,210,132,0,1,1,5,32, -0,1,112,0,88,210,132,0,2,1,5,38,0,1,112,0,128,199,132,0, -3,1,5,38,0,1,112,0,160,199,132,0,4,1,5,38,0,1,112,0, -112,210,132,0,5,1,5,36,0,1,112,0,44,204,132,0,6,1,5,36, -0,1,112,0,144,210,132,0,7,1,5,36,0,1,112,0,164,210,132,0, -8,1,5,36,0,1,112,0,76,204,132,0,9,1,5,33,0,1,112,0, -188,210,132,0,10,1,5,37,0,1,112,0,208,210,132,0,11,1,5,38, -0,1,112,0,236,210,132,0,12,1,5,38,0,1,112,0,12,211,132,0, -13,1,5,36,0,1,112,0,44,211,132,0,14,1,5,36,0,1,112,0, -68,211,132,0,15,1,5,38,0,1,112,0,104,211,132,0,16,1,11,85, -1,1,112,0,136,211,132,0,17,1,11,85,3,1,112,0,164,211,132,0, -18,1,11,85,3,1,112,0,192,211,132,0,19,1,11,85,1,1,112,0, -92,204,132,0,20,1,11,85,1,1,112,0,124,204,132,0,21,1,11,85, -1,1,112,0,8,202,132,0,32,1,11,105,1,1,112,0,216,211,132,0, -33,1,11,103,5,1,112,0,232,211,132,0,34,1,11,109,0,1,112,0, -140,204,132,0,35,1,11,108,0,1,112,0,252,211,132,0,36,1,11,108, -0,1,112,0,20,212,132,0,37,1,5,255,255,1,112,0,56,212,132,0, -38,1,11,255,255,1,112,0,84,212,132,0,39,1,11,109,0,1,112,0, -140,204,132,0,40,1,5,4,0,1,112,0,192,199,132,0,41,1,11,255, -0,1,112,0,20,202,132,0,48,1,11,255,255,1,112,0,160,204,132,0, -49,1,11,255,255,1,112,0,100,212,132,0,50,1,11,255,255,1,112,0, -128,212,132,0,51,1,11,255,255,1,112,0,156,212,132,0,64,1,11,255, -255,1,112,0,184,212,132,0,80,1,5,33,1,1,112,0,200,212,132,0, -81,1,5,33,1,1,112,0,232,212,132,0,82,1,5,33,1,1,112,0, -8,213,132,0,83,1,5,33,1,1,112,0,40,213,132,0,96,1,5,38, -0,1,112,0,72,213,132,0,97,1,5,38,0,1,112,0,100,213,132,0, -98,1,5,38,0,1,112,0,128,213,132,0,112,1,11,255,255,1,112,0, -156,213,132,0,113,1,11,255,255,1,112,0,184,204,132,0,128,1,11,255, -255,1,112,0,196,213,132,0,129,1,11,255,255,1,112,0,48,202,132,0, -130,1,11,255,255,1,112,0,244,213,132,0,131,1,11,255,255,2,112,0, -20,214,132,0,132,1,11,255,255,1,112,0,208,199,132,0,133,1,11,255, -255,1,112,0,216,204,132,0,160,1,11,255,255,1,112,0,60,214,132,0, -192,1,4,0,0,1,112,0,16,205,132,0,193,1,4,0,0,1,112,0, -84,202,132,0,194,1,4,0,0,1,112,0,84,214,132,0,195,1,4,0, -0,1,112,0,104,202,132,0,196,1,4,0,0,1,112,0,104,214,132,0, -197,1,4,0,0,1,112,0,132,214,132,0,198,1,4,0,0,1,112,0, -156,214,132,0,199,1,4,0,0,1,112,0,40,205,132,0,200,1,4,0, -0,1,112,0,0,200,132,0,201,1,4,0,0,1,112,0,180,214,132,0, -202,1,4,0,0,1,112,0,212,214,132,0,208,1,5,38,0,1,112,0, -24,200,132,0,209,1,5,26,0,1,112,0,132,202,132,0,210,1,5,38, -0,1,112,0,248,214,132,0,211,1,5,38,0,1,112,0,28,215,132,0, -0,2,4,8,3,1,112,0,60,215,132,0,1,2,4,71,1,1,112,0, -76,215,132,0,2,2,3,17,0,1,112,0,96,215,132,0,3,2,4,74, -0,1,112,0,64,205,132,0,4,2,4,8,1,1,112,0,112,215,132,0, -5,2,4,41,0,1,112,0,128,215,132,0,6,2,4,71,1,1,112,0, -84,205,132,0,7,2,4,70,0,1,112,0,104,205,132,0,8,2,4,8, -0,1,112,0,56,200,132,0,9,2,4,8,0,1,112,0,72,200,132,0, -10,2,4,32,0,1,112,0,124,205,132,0,16,2,4,71,1,1,112,0, -76,215,132,0,17,2,4,75,0,1,112,0,96,200,132,0,18,2,4,75, -0,1,112,0,152,215,132,0,19,2,4,255,255,1,112,0,172,215,132,0, -20,2,4,255,255,1,112,0,160,202,132,0,21,2,4,255,255,1,112,0, -192,215,132,0,22,2,4,255,255,2,112,0,228,215,132,0,23,2,4,255, -255,1,112,0,252,215,132,0,48,2,5,32,0,1,112,0,148,205,132,0, -49,2,0,0,0,3,112,0,20,216,132,0,50,2,5,38,0,1,112,0, -48,216,132,0,51,2,5,38,0,1,112,0,192,205,132,0,52,2,5,38, -0,1,112,0,224,205,132,0,53,2,5,38,0,1,112,0,88,216,132,0, -64,2,4,0,0,3,112,0,120,216,132,0,65,2,4,0,0,3,112,0, -112,200,132,0,66,2,1,64,0,3,112,0,144,216,132,0,67,2,4,64, -0,3,112,0,188,202,132,0,72,2,4,0,0,3,112,0,0,206,132,0, -73,2,4,0,0,3,112,0,196,216,132,0,80,2,5,38,0,1,112,0, -224,216,132,0,81,2,5,38,0,1,112,0,12,217,132,0,82,2,5,38, -0,1,112,0,68,217,132,0,83,2,5,38,0,1,112,0,28,206,132,0, -84,2,5,38,0,1,112,0,108,217,132,0,85,2,5,38,0,1,112,0, -164,217,132,0,86,2,5,38,0,1,112,0,220,217,132,0,87,2,5,38, -0,1,112,0,208,202,132,0,88,2,5,38,0,1,112,0,88,206,132,0, -89,2,5,38,0,1,112,0,28,218,132,0,90,2,5,38,0,1,112,0, -64,218,132,0,91,2,5,38,0,1,112,0,136,206,132,0,92,2,5,38, -0,1,112,0,192,206,132,0,93,2,5,38,0,1,112,0,124,218,132,0, -96,2,4,93,0,2,112,0,152,218,132,0,0,16,0,0,0,3,127,0, -216,25,133,0,1,16,0,0,0,3,127,0,216,25,133,0,2,16,0,0, -0,3,127,0,216,25,133,0,3,16,0,0,0,3,127,0,4,203,132,0, -4,16,0,0,0,3,127,0,136,200,132,0,5,16,0,0,0,3,127,0, -136,200,132,0,6,16,0,0,0,3,127,0,216,25,133,0,7,16,0,0, -0,3,127,0,216,25,133,0,7,16,0,0,0,3,127,0,188,218,132,0, -8,16,0,0,0,3,127,0,212,218,132,0,16,16,0,0,0,3,127,0, -236,218,132,0,17,16,0,0,0,3,127,0,160,200,132,0,18,16,0,0, -0,3,127,0,184,200,132,0,19,16,0,0,0,3,127,0,24,203,132,0, -20,16,0,0,0,3,127,0,208,200,132,0,21,16,0,0,0,3,127,0, -8,219,132,0,22,16,0,0,0,3,127,0,224,200,132,0,19,48,0,0, -0,1,127,0,0,201,132,0,20,48,0,0,0,1,127,0,44,203,132,0, -30,48,0,0,0,1,127,0,24,219,132,0,33,48,0,0,0,1,127,0, -80,203,132,0,36,48,0,0,0,1,127,0,60,219,132,0,37,48,0,0, -0,1,127,0,116,203,132,0,38,48,0,0,0,1,127,0,252,206,132,0, -39,48,0,0,0,1,127,0,144,203,132,0,71,48,0,0,0,1,127,0, -92,219,132,0,98,48,0,0,0,1,127,0,28,207,132,0,99,48,0,0, -0,1,127,0,120,219,132,0,100,48,0,0,0,1,127,0,160,219,132,0, -101,48,0,0,0,1,127,0,60,207,132,0,102,48,0,0,0,1,127,0, -88,207,132,0,103,48,0,0,0,1,127,0,116,207,132,0,104,48,0,0, -0,1,127,0,140,207,132,0,105,48,0,0,0,1,127,0,180,219,132,0, -106,48,0,0,0,1,127,0,216,219,132,0,107,48,0,0,0,1,127,0, -240,219,132,0,0,0,0,0,0,4,113,0,40,201,132,0,1,0,6,41, -0,3,113,0,152,207,132,0,2,0,4,107,2,1,113,0,16,220,132,0, -3,0,4,0,0,1,113,0,40,220,132,0,4,0,4,107,2,1,113,0, -180,207,132,0,5,0,0,107,1,3,113,0,56,201,132,0,6,0,0,107, -2,2,113,0,68,220,132,0,7,0,0,0,0,3,113,0,96,220,132,0, -8,0,0,0,0,2,113,0,208,207,132,0,9,0,4,0,0,1,113,0, -124,220,132,0,10,0,4,0,0,1,113,0,148,220,132,0,11,0,0,0, -0,3,113,0,80,201,132,0,12,0,0,0,0,3,113,0,236,207,132,0, -13,0,0,0,0,3,113,0,96,201,132,0,14,0,4,107,2,1,113,0, -172,220,132,0,15,0,0,93,0,2,113,0,152,218,132,0,16,0,0,0, -0,1,113,0,204,220,132,0,17,0,0,0,0,1,113,0,12,208,132,0, -18,0,0,0,0,1,113,0,164,203,132,0,19,0,0,0,0,1,113,0, -244,220,132,0,20,0,0,0,0,1,113,0,52,208,132,0,21,0,0,0, -0,1,113,0,24,221,132,0,22,0,0,0,0,1,113,0,88,208,132,0, -23,0,0,0,0,1,113,0,56,221,132,0,24,0,0,0,0,1,113,0, -128,208,132,0,25,0,0,0,0,1,113,0,84,221,132,0,26,0,0,0, -0,1,113,0,156,208,132,0,27,0,0,0,0,1,113,0,128,201,132,0, -28,0,0,0,0,1,113,0,160,201,132,0,29,0,0,0,0,1,113,0, -192,201,132,0,32,0,0,0,0,1,113,0,116,221,132,0,33,0,0,0, -0,2,113,0,152,221,132,0,34,0,0,0,0,2,113,0,188,208,132,0, -35,0,1,17,0,2,113,0,216,201,132,0,36,0,4,64,0,1,113,0, -240,201,132,0,37,0,4,0,0,1,113,0,188,221,132,0,38,0,3,17, -0,1,113,0,224,208,132,0,39,0,4,0,0,1,113,0,232,221,132,0, -40,0,4,0,0,1,113,0,0,222,132,0,41,0,0,0,0,3,113,0, -0,209,132,0,42,0,4,107,2,1,113,0,28,222,132,0,43,0,0,0, -0,3,113,0,56,222,132,0,44,0,1,17,0,1,113,0,28,209,132,0, -45,0,4,107,2,1,113,0,80,222,132,0,46,0,0,0,0,2,113,0, -124,222,132,0,47,0,0,0,0,2,113,0,68,209,132,0,48,0,4,0, -0,1,113,0,120,209,132,0,49,0,0,0,0,4,113,0,176,222,132,0, -50,0,0,0,0,2,113,0,200,203,132,0,51,0,0,0,0,3,113,0, -212,222,132,0,52,0,4,107,2,1,113,0,244,203,132,0,53,0,0,0, -0,3,113,0,144,209,132,0,54,0,0,0,0,2,113,0,244,222,132,0, -55,0,4,64,0,1,113,0,36,223,132,0,56,0,4,64,0,1,113,0, -60,223,132,0,57,0,1,64,0,2,113,0,84,223,132,0,58,0,4,41, -0,1,113,0,172,209,132,0,59,0,0,0,0,3,113,0,204,209,132,0, -60,0,0,0,0,3,113,0,112,223,132,0,61,0,0,0,0,3,113,0, -144,223,132,0,62,0,0,0,0,3,113,0,16,204,132,0,63,0,4,64, -0,2,113,0,212,214,132,0,64,0,0,0,0,3,113,0,172,223,132,0, -65,0,4,64,0,2,113,0,232,209,132,0,66,0,4,64,0,2,113,0, -200,223,132,0,67,0,4,64,0,2,113,0,236,223,132,0,252,0,0,0, -0,4,113,0,16,224,132,0,253,0,0,0,0,4,113,0,60,224,132,0, -254,0,0,0,0,4,113,0,12,210,132,0,255,0,0,0,0,4,113,0, -36,210,132,0,0,0,0,0,0,0,0,0,0,0,0,0,30,29,130,0, -0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,30,29,130,0,0,0,0,0,0,0,0,0,0,0,0,0, -180,2,129,0,0,0,0,0,22,2,129,0,0,0,0,0,244,1,129,0, -0,0,0,0,252,1,129,0,0,0,0,0,4,2,129,0,0,0,0,0, -30,29,130,0,0,0,0,0,12,2,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0, -0,0,0,0,0,0,0,0,42,5,129,0,0,0,0,0,140,4,129,0, -0,0,0,0,106,4,129,0,0,0,0,0,114,4,129,0,0,0,0,0, -122,4,129,0,0,0,0,0,30,29,130,0,0,0,0,0,130,4,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,0,0,0,0,0,0,0,0,110,8,129,0, -0,0,0,0,238,7,129,0,0,0,0,0,194,7,129,0,0,0,0,0, -200,7,129,0,0,0,0,0,206,7,129,0,0,0,0,0,212,7,129,0, -0,0,0,0,232,7,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -110,8,129,0,0,0,0,0,28,11,129,0,0,0,0,0,194,7,129,0, -0,0,0,0,200,7,129,0,0,0,0,0,206,7,129,0,0,0,0,0, -212,7,129,0,0,0,0,0,232,7,129,0,2,0,0,0,14,36,0,0, -0,0,0,0,82,101,97,100,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,3,0,0,0,5,36,0,0,0,0,0,0,87,114,105,116, -101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, -2,36,0,0,0,0,0,0,82,101,97,100,86,101,114,105,102,121,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,15,1,0, -78,111,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,228,15,1,0,73,110,105,116,67,111,110,110, -101,99,116,0,0,0,0,0,0,0,0,0,5,0,0,0,0,4,0,0, -96,31,1,0,86,101,114,105,102,121,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,0,0,0,0,0,0,0,132,18,1,0,80,111,114,116, -83,99,97,110,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, -0,0,0,0,54,19,1,0,73,109,112,111,114,116,85,110,105,116,0,0, -0,0,0,0,0,0,0,0,8,0,0,0,0,4,0,0,12,32,1,0, -90,101,114,111,85,110,105,116,0,0,0,0,0,0,0,0,0,0,0,0, -9,0,0,0,0,4,0,0,176,32,1,0,82,101,112,108,97,99,101,68, -114,105,118,101,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0, -110,34,1,0,72,111,116,83,119,97,112,0,0,0,0,0,0,0,0,0, -0,0,0,0,11,0,0,0,0,0,0,0,238,35,1,0,83,101,108,102, -84,101,115,116,115,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0, -32,0,0,0,96,66,129,0,83,121,110,99,80,97,114,97,109,0,0,0, -0,0,0,0,0,0,0,0,13,0,0,0,32,0,0,0,226,39,1,0, -82,101,111,114,100,101,114,85,110,105,116,115,0,0,0,0,0,0,0,0, -14,0,0,0,0,4,0,0,202,19,1,0,70,108,117,115,104,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0, -168,43,1,0,82,101,115,101,114,118,101,100,54,0,0,0,0,0,0,0, -0,0,0,0,16,0,0,0,0,0,0,0,168,43,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0, -0,8,0,0,242,29,1,0,65,84,65,80,97,115,115,84,104,114,117,0, -0,0,0,0,0,0,0,0,18,0,0,0,96,0,0,0,14,61,129,0, -71,101,116,80,97,114,97,109,0,0,0,0,0,0,0,0,0,0,0,0, -19,0,0,0,32,0,0,0,142,61,129,0,83,101,116,80,97,114,97,109, -0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,32,2,0,0, -74,21,1,0,67,114,101,97,116,101,85,110,105,116,0,0,0,0,0,0, -0,0,0,0,21,0,0,0,0,4,0,0,0,20,1,0,68,101,108,101, -116,101,85,110,105,116,0,0,0,0,0,0,0,0,0,0,22,0,0,0, -32,0,0,0,84,28,1,0,68,111,119,110,108,111,97,100,70,87,0,0, -0,0,0,0,0,0,0,0,23,0,0,0,0,4,0,0,8,33,1,0, -82,101,98,117,105,108,100,85,110,105,116,0,0,0,0,0,0,0,0,0, -24,0,0,0,0,0,0,0,208,41,1,0,80,119,114,77,97,110,97,103, -101,109,101,110,116,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0, -168,43,1,0,82,101,97,100,67,102,103,0,0,0,0,0,0,0,0,0, -0,0,0,0,26,0,0,0,0,0,0,0,168,43,1,0,87,114,105,116, -101,67,102,103,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0, -32,0,0,0,172,41,1,0,82,101,109,111,116,101,80,114,105,110,116,0, -0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,150,33,1,0, -82,101,115,101,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -29,0,0,0,0,0,0,0,168,43,1,0,82,101,115,101,114,118,101,100, -55,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0, -168,43,1,0,82,101,115,101,114,118,101,100,56,0,0,0,0,0,0,0, -0,0,0,0,31,0,0,0,0,0,0,0,174,36,1,0,68,105,97,103, -110,111,115,116,105,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,168,43,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,168,43,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -40,0,0,0,14,37,0,0,0,0,0,0,82,101,97,100,49,48,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,5,37,0,0, -0,0,0,0,87,114,105,116,101,49,48,0,0,0,0,0,0,0,0,0, -0,0,0,0,136,0,0,0,14,37,0,0,0,0,0,0,82,101,97,100, -49,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0, -5,37,0,0,0,0,0,0,87,114,105,116,101,49,54,0,0,0,0,0, -0,0,0,0,0,0,0,0,168,0,0,0,14,37,0,0,0,0,0,0, -82,101,97,100,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -170,0,0,0,5,37,0,0,0,0,0,0,87,114,105,116,101,49,50,0, -0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,14,37,0,0, -0,0,0,0,82,101,97,100,54,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,10,0,0,0,5,37,0,0,0,0,0,0,87,114,105,116, -101,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0, -2,37,0,0,0,0,0,0,86,101,114,105,102,121,49,48,0,0,0,0, -0,0,0,0,0,0,0,0,143,0,0,0,2,37,0,0,0,0,0,0, -86,101,114,105,102,121,49,54,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,21,0,0,232,31,129,0,84,101,115,116,85,110,105,116, -82,101,97,100,121,0,0,0,0,0,0,0,3,0,0,0,64,1,0,0, -232,44,1,0,82,101,113,117,101,115,116,83,101,110,115,101,0,0,0,0, -0,0,0,0,18,0,0,0,64,21,0,0,60,45,1,0,73,110,113,117, -105,114,121,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0, -64,1,0,0,180,46,1,0,77,111,100,101,83,101,110,115,101,54,0,0, -0,0,0,0,0,0,0,0,27,0,0,0,0,21,0,0,134,48,1,0, -83,116,97,114,116,83,116,111,112,0,0,0,0,0,0,0,0,0,0,0, -37,0,0,0,64,21,0,0,252,45,1,0,82,101,97,100,67,97,112,97, -99,105,116,121,0,0,0,0,0,0,0,0,21,0,0,0,32,21,0,0, -202,47,1,0,77,111,100,101,83,101,108,101,99,116,54,0,0,0,0,0, -0,0,0,0,59,0,0,0,0,1,0,0,132,50,1,0,87,114,105,116, -101,66,117,102,102,101,114,0,0,0,0,0,0,0,0,0,60,0,0,0, -0,1,0,0,132,50,1,0,82,101,97,100,66,117,102,102,101,114,0,0, -0,0,0,0,0,0,0,0,85,0,0,0,32,21,0,0,32,48,1,0, -77,111,100,101,83,101,108,101,99,116,49,48,0,0,0,0,0,0,0,0, -90,0,0,0,64,21,0,0,62,47,1,0,77,111,100,101,83,101,110,115, -101,49,48,0,0,0,0,0,0,0,0,0,53,0,0,0,0,21,0,0, -180,50,1,0,83,121,110,99,67,97,99,104,101,49,48,0,0,0,0,0, -0,0,0,0,145,0,0,0,0,21,0,0,180,50,1,0,83,121,110,99, -67,97,99,104,101,49,48,0,0,0,0,0,0,0,0,0,158,0,0,0, -64,21,0,0,238,50,1,0,83,101,114,118,105,99,101,65,99,116,105,111, -110,73,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,0,0,0,0, -0,0,0,0,224,31,129,0,0,0,0,0,228,31,129,0,220,193,142,0, -208,193,142,0,196,193,142,0,0,0,0,0,136,31,129,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,30,29,130,0,0,0,0,0, -30,29,130,0,0,0,0,0,30,29,130,0,0,0,0,0,30,29,130,0, -0,0,0,0,0,0,0,0,0,0,0,0,74,35,129,0,0,0,0,0, -230,35,129,0,0,0,0,0,112,36,129,0,0,0,0,0,210,36,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,204,37,129,0,0,0,0,0, -8,38,129,0,0,0,0,0,70,38,129,0,0,0,0,0,168,38,129,0, -0,0,0,0,252,42,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,43,129,0,0,0,0,0,174,43,129,0,0,0,0,0, -0,0,0,0,0,0,0,0,82,44,129,0,0,0,0,0,144,44,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,170,77,129,0,0,0,0,0, -200,77,129,0,0,0,0,0,206,77,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,122,78,129,0,0,0,0,0,238,78,129,0,0,0,0,0, -6,79,129,0,0,0,0,0,0,0,0,0,0,0,0,0,18,79,129,0, -0,0,0,0,238,78,129,0,0,0,0,0,134,79,129,0,0,0,0,0, -82,70,129,0,0,0,0,0,2,0,0,0,84,241,132,0,0,0,0,0, -3,0,0,0,156,241,132,0,0,0,0,0,4,0,0,0,172,241,132,0, -0,0,0,0,5,0,0,0,188,241,132,0,0,0,0,0,0,2,15,16, -100,241,132,0,0,0,0,0,0,3,15,16,104,243,132,0,0,0,0,0, -1,4,0,0,96,26,133,0,0,0,0,0,2,4,0,0,8,243,132,0, -0,0,0,0,3,4,0,0,128,242,132,0,0,0,0,0,10,4,0,0, -212,241,132,0,0,0,0,0,12,4,0,0,228,241,132,0,0,0,0,0, -16,4,7,6,36,242,132,0,0,0,0,0,71,101,114,111,110,105,109,111, -47,65,112,97,99,104,101,32,0,0,0,0,51,119,97,114,101,32,73,110, -116,101,114,110,97,108,32,85,115,101,32,32,0,0,0,0,78,111,32,70, -97,99,116,111,114,121,32,68,97,116,97,32,104,97,115,32,98,101,101,110, -32,119,114,105,116,116,101,110,46,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0, -150,44,129,0,0,0,0,0,188,104,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,28,105,129,0,0,0,0,0,52,45,129,0,0,0,0,0, -188,104,129,0,0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0, -0,0,0,0,182,44,129,0,0,0,0,0,188,104,129,0,0,0,0,0, -0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0,20,45,129,0, -0,0,0,0,188,104,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -116,53,129,0,0,0,0,0,28,55,129,0,0,0,0,0,184,54,129,0, -0,0,0,0,30,29,130,0,0,0,0,0,0,0,0,0,0,0,0,0, -54,57,129,0,0,0,0,0,28,55,129,0,0,0,0,0,112,58,129,0, -0,0,0,0,156,58,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -140,59,129,0,0,0,0,0,78,60,129,0,0,0,0,0,180,60,129,0, -0,0,0,0,248,60,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -28,105,129,0,0,0,0,0,246,109,129,0,0,0,0,0,250,109,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0, -32,110,129,0,0,0,0,0,250,109,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,28,105,129,0,0,0,0,0,4,110,129,0,0,0,0,0, -170,105,129,0,0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0, -0,0,0,0,16,110,129,0,0,0,0,0,78,106,129,0,0,0,0,0, -0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0,20,110,129,0, -0,0,0,0,166,106,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -28,105,129,0,0,0,0,0,24,110,129,0,0,0,0,0,244,106,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0, -28,110,129,0,0,0,0,0,12,107,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,28,105,129,0,0,0,0,0,0,110,129,0,0,0,0,0, -190,107,129,0,0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0, -0,0,0,0,12,110,129,0,0,0,0,0,212,107,129,0,0,0,0,0, -0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0,8,110,129,0, -0,0,0,0,50,108,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -28,105,129,0,0,0,0,0,144,108,129,0,0,0,0,0,250,109,129,0, -0,0,0,0,0,0,0,0,0,0,0,0,28,105,129,0,0,0,0,0, -124,109,129,0,0,0,0,0,250,109,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,28,105,129,0,0,0,0,0,216,109,129,0,0,0,0,0, -250,109,129,0,0,0,0,0,36,110,129,0,0,0,0,0,0,0,0,0, -16,177,255,255,62,110,129,0,0,0,0,0,82,110,129,0,0,0,0,0, -0,0,0,0,68,177,255,255,108,110,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,156,141,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -94,116,129,0,0,0,0,0,34,118,129,0,0,0,0,0,24,119,129,0, -0,0,0,0,12,120,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -14,121,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,148,157,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -94,116,129,0,0,0,0,0,44,146,129,0,0,0,0,0,24,119,129,0, -0,0,0,0,12,120,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -14,121,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,190,157,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -220,146,129,0,0,0,0,0,34,118,129,0,0,0,0,0,24,119,129,0, -0,0,0,0,12,120,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -14,121,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,232,157,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -94,116,129,0,0,0,0,0,34,118,129,0,0,0,0,0,90,147,129,0, -0,0,0,0,114,147,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -14,121,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,18,158,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -162,151,129,0,0,0,0,0,34,118,129,0,0,0,0,0,114,149,129,0, -0,0,0,0,106,150,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -60,151,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,60,158,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -34,153,129,0,0,0,0,0,46,152,129,0,0,0,0,0,72,152,129,0, -0,0,0,0,96,152,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -92,153,129,0,0,0,0,0,104,121,129,0,0,0,0,0,0,0,0,0, -0,0,0,0,132,156,129,0,0,0,0,0,80,112,129,0,0,0,0,0, -94,116,129,0,0,0,0,0,146,154,129,0,0,0,0,0,240,154,129,0, -0,0,0,0,144,155,129,0,0,0,0,0,246,120,129,0,0,0,0,0, -36,156,129,0,0,0,0,0,104,121,129,0,12,27,133,0,240,253,132,0, -36,254,132,0,0,254,132,0,12,254,132,0,24,254,132,0,228,253,132,0, -52,254,132,0,0,0,0,0,0,0,0,0,0,0,0,0,50,172,129,0, -0,0,0,0,238,172,129,0,0,0,0,0,0,0,0,0,0,0,0,0, -122,172,129,0,0,0,0,0,244,172,129,0,0,0,0,0,2,186,129,0, -0,0,0,0,0,0,0,0,100,24,148,0,212,185,129,0,0,0,0,0, -14,190,129,0,0,0,0,0,0,0,0,0,128,29,148,0,10,191,129,0, -176,179,255,255,60,7,133,0,104,121,1,0,0,0,0,0,196,223,255,255, -0,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0, -24,122,1,0,10,0,0,0,184,27,148,0,144,6,133,0,18,125,1,0, -0,0,0,0,244,222,148,0,0,0,0,0,6,0,0,0,6,0,0,0, -0,0,0,0,1,0,0,0,182,126,1,0,0,0,0,0,192,24,148,0, -160,6,133,0,32,123,1,0,0,0,0,0,244,142,148,0,0,0,0,0, -6,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,6,125,1,0, -0,0,0,0,240,25,148,0,76,7,133,0,50,122,1,0,0,0,0,0, -244,174,148,0,0,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0, -1,0,0,0,0,123,1,0,0,0,0,0,80,28,148,0,176,6,133,0, -232,127,1,0,0,0,0,0,244,238,148,0,0,0,0,0,6,0,0,0, -6,0,0,0,0,0,0,0,1,0,0,0,20,129,1,0,2,0,0,0, -232,28,148,0,96,7,133,0,104,120,1,0,0,0,0,0,244,254,148,0, -0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0, -158,120,1,0,3,0,0,0,32,27,148,0,116,7,133,0,22,121,1,0, -0,0,0,0,244,206,148,0,0,0,0,0,3,0,0,0,3,0,0,0, -0,0,0,0,1,0,0,0,92,121,1,0,3,0,0,0,136,26,148,0, -192,6,133,0,188,120,1,0,0,0,0,0,244,190,148,0,0,0,0,0, -2,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,10,121,1,0, -3,0,0,0,88,25,148,0,144,7,133,0,230,119,1,0,0,0,0,0, -244,158,148,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0, -1,0,0,0,44,120,1,0,3,0,0,0,232,3,0,0,67,111,112,121, -114,105,103,104,116,32,40,99,41,32,49,57,57,54,45,50,48,48,50,32, -69,120,112,114,101,115,115,32,76,111,103,105,99,32,73,110,99,46,32,42, -32,84,104,114,101,97,100,88,32,78,69,67,32,86,56,53,48,69,47,71, -114,101,101,110,32,72,105,108,108,115,32,86,101,114,115,105,111,110,32,71, -52,46,48,97,46,52,46,48,97,32,42,0,71,45,71,66,45,71,76,45, -77,45,68,45,68,76,45,75,77,76,45,67,77,82,45,72,77,82,45,77, -76,50,45,71,90,45,75,72,50,45,67,77,45,82,80,45,84,67,45,78, -72,45,84,68,45,65,80,45,72,65,45,71,70,45,68,68,45,65,84,45, -77,70,45,77,83,45,68,87,45,85,83,65,45,67,65,45,83,68,45,83, -68,83,85,0,0,0,0,0,0,0,0,0,0,0,0,0,254,17,130,0, -0,0,0,0,46,18,130,0,0,0,0,0,2,19,130,0,0,0,0,0, -0,0,0,0,0,0,0,0,64,18,130,0,0,0,0,0,46,18,130,0, -0,0,0,0,112,18,130,0,0,0,0,0,8,126,148,0,64,18,130,0, -98,97,100,32,97,108,108,111,99,97,116,105,111,110,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,6,19,130,0,0,0,0,0, -54,19,130,0,0,0,0,0,164,27,130,0,0,0,0,0,0,0,0,0, -0,0,0,0,230,23,130,0,0,0,0,0,70,24,130,0,0,0,0,0, -100,24,130,0,0,0,0,0,0,0,0,0,0,0,0,0,128,24,130,0, -0,0,0,0,70,24,130,0,0,0,0,0,224,24,130,0,0,0,0,0, -0,0,0,0,0,0,0,0,252,24,130,0,0,0,0,0,70,24,130,0, -0,0,0,0,92,25,130,0,117,110,107,110,111,119,110,0,115,116,114,105, -110,103,32,116,111,111,32,108,111,110,103,0,117,110,107,110,111,119,110,0, -105,110,118,97,108,105,100,32,115,116,114,105,110,103,32,112,111,115,105,116, -105,111,110,0,255,255,255,255,117,110,107,110,111,119,110,0,10,0,0,0, -101,120,99,101,112,116,105,111,110,58,32,0,8,0,0,0,0,0,0,0, -0,0,0,0,67,43,43,32,114,117,110,116,105,109,101,32,97,98,111,114, -116,0,0,0,102,114,101,101,105,110,103,32,97,114,114,97,121,32,110,111, -116,32,97,108,108,111,99,97,116,101,100,32,98,121,32,97,110,32,97,114, -114,97,121,32,110,101,119,32,111,112,101,114,97,116,105,111,110,0,0,0, -116,101,114,109,105,110,97,116,101,40,41,32,99,97,108,108,101,100,32,98, -121,32,116,104,101,32,101,120,99,101,112,116,105,111,110,32,104,97,110,100, -108,105,110,103,32,109,101,99,104,97,110,105,115,109,0,0,114,101,116,117, -114,110,101,100,32,102,114,111,109,32,97,32,117,115,101,114,45,100,101,102, -105,110,101,100,32,116,101,114,109,105,110,97,116,101,40,41,32,114,111,117, -116,105,110,101,0,0,0,0,109,97,105,110,40,41,32,99,97,108,108,101, -100,32,109,111,114,101,32,116,104,97,110,32,111,110,99,101,0,0,0,0, -97,32,112,117,114,101,32,118,105,114,116,117,97,108,32,102,117,110,99,116, -105,111,110,32,119,97,115,32,99,97,108,108,101,100,0,0,105,110,118,97, -108,105,100,32,100,121,110,97,109,105,99,32,99,97,115,116,0,0,0,0, -105,110,118,97,108,105,100,32,116,121,112,101,105,100,32,111,112,101,114,97, -116,105,111,110,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114, -111,114,58,32,115,116,97,116,105,99,32,111,98,106,101,99,116,32,109,97, -114,107,101,100,32,102,111,114,32,100,101,115,116,114,117,99,116,105,111,110, -32,109,111,114,101,32,116,104,97,110,32,111,110,99,101,0,37,115,58,32, -37,115,10,0,40,110,117,108,108,41,0,0,48,49,50,51,52,53,54,55, -56,57,97,98,99,100,101,102,48,49,50,51,52,53,54,55,56,57,65,66, -67,68,69,70,40,70,108,111,97,116,105,110,103,32,112,111,105,110,116,32, -111,117,116,112,117,116,32,117,110,115,117,112,112,111,114,116,101,100,32,119, -47,45,110,111,102,108,111,97,116,105,111,32,111,114,32,45,102,110,111,110, -101,41,0,94,32,9,10,13,11,12,93,0,20,0,0,0,0,0,0,0, -0,255,0,0,128,0,0,4,0,1,0,4,0,2,0,4,179,82,179,82, -179,82,179,82,179,34,179,18,179,18,0,0,0,0,0,0,19,0,0,0, -115,116,114,105,110,103,32,110,111,116,32,102,111,117,110,100,0,0,0,0, -82,101,118,32,48,48,48,32,0,0,0,0,91,24,133,0,94,24,133,0, -0,0,255,255,94,180,0,0,0,0,255,255,54,180,0,0,0,0,255,255, -154,180,0,0,0,0,255,255,46,181,0,0,0,0,255,255,238,180,0,0, -0,0,255,255,160,181,0,0,0,0,255,255,230,224,0,0,0,0,255,255, -26,207,0,0,0,0,255,255,174,206,0,0,0,0,255,255,246,206,0,0, -0,0,255,255,210,206,0,0,0,0,255,255,246,206,0,0,0,0,255,255, -250,207,0,0,0,0,255,255,98,207,0,0,0,0,255,255,62,207,0,0, -0,0,255,255,82,208,0,0,0,0,255,255,134,207,0,0,0,0,255,255, -218,212,0,0,0,0,255,255,134,217,0,0,0,0,255,255,90,225,0,0, -0,0,255,255,28,214,0,0,0,0,255,255,60,217,0,0,0,0,255,255, -54,231,0,0,0,0,255,255,156,242,0,0,0,0,255,255,222,213,0,0, -0,0,255,255,134,215,0,0,0,0,255,255,106,223,0,0,0,0,255,255, -58,224,0,0,0,0,255,255,128,224,0,0,0,0,255,255,132,242,0,0, -0,0,255,255,68,242,0,0,0,0,0,0,0,0,8,0,0,0,0,0, -0,0,0,0,1,2,0,0,1,0,0,0,0,0,0,0,126,74,13,125, -127,127,0,0,126,73,0,125,127,127,0,0,126,72,1,125,127,127,0,0, -126,75,13,125,15,125,127,127,0,0,0,0,0,0,0,0,0,0,0,0, -0,242,5,42,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,100,241,132,0,8,243,132,0,104,243,132,0,104,26,133,0, -184,243,132,0,156,241,132,0,172,241,132,0,188,241,132,0,212,241,132,0, -228,241,132,0,36,242,132,0,60,242,132,0,108,119,133,0,1,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,78,77,73,0, -16,27,133,0,20,27,133,0,24,27,133,0,1,0,0,0,0,0,0,0, -88,36,133,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -240,240,240,240,16,0,0,0,16,0,0,0,0,1,0,0,0,2,0,0, -7,0,0,0,136,7,130,0,182,63,130,0,0,0,0,0,38,89,130,0, -10,0,0,0,36,86,69,82,86,69,82,36,37,100,37,115,10,0,0,0, -75,66,0,77,66,0,0,0,82,67,68,61,37,117,10,0,117,110,107,110, -111,119,110,0,117,110,107,110,111,119,110,0,37,48,51,100,32,0,0,0, -112,111,114,116,61,37,100,0,10,0,10,0,36,86,69,82,86,69,82,36, -32,77,73,82,82,79,82,0,32,68,69,65,68,0,0,0,32,40,37,120, -41,0,0,0,32,82,65,73,68,48,0,0,32,82,65,73,68,53,0,0, -37,115,0,43,62,0,32,32,0,0,0,0,73,110,105,116,105,97,108,0, -73,100,108,101,0,0,0,0,84,87,77,72,0,0,0,0,112,111,114,116, -115,0,0,0,112,111,114,116,0,0,0,0,37,99,37,105,0,0,0,0, -37,115,37,115,37,99,0,0,8,0,0,0,8,0,0,0,99,104,101,99, -107,102,119,0,99,109,100,104,105,115,116,0,109,101,109,114,101,97,100,0, -109,111,110,0,118,97,114,0,118,101,114,0,35,0,104,0,112,97,114,97, -109,0,0,0,117,110,105,116,115,0,0,0,47,47,0,0,99,109,100,108, -111,103,0,0,100,101,108,101,116,101,0,0,100,114,105,118,101,115,0,0, -103,111,0,0,115,105,109,101,114,114,0,0,115,116,97,116,117,115,0,0, -117,110,108,111,99,107,0,0,37,105,0,37,105,0,0,0,108,111,99,97, -108,0,0,0,21,0,0,0,4,0,0,0,67,111,100,101,115,58,10,0, -85,68,77,65,45,51,51,0,85,68,77,65,45,54,54,0,69,78,65,66, -76,69,68,0,10,0,0,0,32,37,115,44,32,0,0,0,41,0,0,0, -76,79,67,75,69,68,0,0,73,110,105,116,105,97,108,0,78,111,68,114, -105,118,101,0,78,111,80,111,114,116,0,0,10,0,0,0,116,105,109,101, -111,117,116,0,104,97,110,100,108,101,114,0,116,111,107,101,110,0,0,0, -0,10,0,0,80,61,37,88,32,58,32,0,112,111,114,116,61,37,100,0, -97,99,116,105,118,101,10,0,112,111,114,116,61,37,100,0,117,110,105,116, -61,37,100,0,79,75,10,0,117,110,105,116,61,37,100,0,111,102,102,0, -111,110,0,0,0,0,0,0,37,115,10,0,238,238,34,34,187,187,85,85, -10,0,0,0,117,110,105,116,61,37,105,0,111,102,102,0,114,101,108,0, -99,108,101,97,114,0,0,0,110,111,114,101,108,0,0,0,111,110,0,0, -115,104,111,119,0,0,0,0,37,48,52,120,32,32,0,0,10,0,0,0, -117,110,105,116,61,37,100,0,121,101,115,0,110,111,0,0,68,111,110,101, -46,10,10,0,32,37,105,60,45,37,105,0,10,0,0,0,117,112,10,0, -100,111,119,110,10,0,0,0,49,46,48,48,0,0,0,0,10,0,0,0, -2,0,0,0,180,139,145,0,117,110,107,110,111,119,110,0,117,110,107,110, -111,119,110,0,1,0,0,0,5,0,0,0,24,0,0,0,23,0,0,0, -0,0,0,0,20,0,0,0,3,0,7,0,69,65,82,76,89,0,0,0, -85,83,69,82,0,0,0,0,69,65,82,76,89,0,0,0,85,83,69,82, -0,0,0,0,83,101,109,80,98,117,102,0,48,120,37,48,50,88,10,0, -117,110,105,116,61,37,100,0,112,111,114,116,61,37,100,0,100,105,115,107, -61,37,100,0,117,110,105,116,61,37,100,0,117,110,105,116,61,37,100,0, -91,37,99,58,37,120,93,0,117,110,105,116,61,37,100,0,90,101,114,111, -101,114,0,0,117,110,105,116,61,37,100,0,0,10,0,0,27,91,67,0, -27,91,68,0,27,91,50,75,13,0,0,0,68,69,66,85,71,0,0,0, -0,0,13,10,0,0,0,0,32,44,9,10,0,0,0,0,0,0,0,32, -46,0,0,0,79,75,10,0,0,0,0,0,9,0,0,0,0,0,0,0, -79,70,70,0,79,78,0,10,0,0,0,0,37,52,100,0,10,0,0,0, -37,52,104,88,0,0,0,0,91,37,50,100,93,0,0,0,10,0,0,0, -37,52,104,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,36,0,129,0,40,0,1,2,4,2,136,0,4,18,68,0,130,0, -130,2,72,0,2,2,2,18,8,2,8,18,8,0,0,2,68,18,4,19, -72,18,0,0,99,255,233,255,63,6,250,172,129,0,127,0,0,0,0,0, -99,255,233,255,63,6,220,200,129,0,127,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,99,255,233,255,63,6,250,172,129,0,127,0, -0,0,0,0,99,255,233,255,63,6,250,172,129,0,127,0,0,0,0,0, -99,255,233,255,63,6,32,211,1,0,127,0,0,0,0,0,99,255,233,255, -63,6,54,211,1,0,127,0,0,0,0,0,99,255,233,255,63,6,76,211, -1,0,127,0,0,0,0,0,99,255,233,255,63,6,76,211,1,0,127,0, -0,0,0,0,99,255,233,255,63,6,76,211,1,0,127,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,233,255, -63,6,250,172,129,0,127,0,0,0,0,0,99,255,233,255,63,6,160,214, -1,0,127,0,0,0,0,0,99,255,233,255,63,6,142,211,1,0,127,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,255,233,255, -63,6,250,172,129,0,127,0,0,0,0,0,99,255,233,255,63,6,98,211, -1,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -99,255,233,255,63,6,250,172,129,0,127,0,0,0,0,0,99,255,233,255, -63,6,120,211,1,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,99,255,233,255,63,6,250,172, -129,0,127,0,0,0,128,7,97,0,0,234,29,48,128,255,16,0,65,234, -29,6,240,255,166,253,64,6,127,0,6,6,240,255,185,5,128,7,90,2, -6,120,198,122,36,134,104,134,16,22,20,0,194,121,8,98,111,103,0,0, -6,128,36,102,104,134,6,120,198,122,198,130,194,129,6,88,198,90,194,89, -12,22,12,0,75,7,2,0,194,121,6,88,198,90,32,110,231,255,80,111, -3,0,194,89,8,130,107,135,0,0,32,102,224,255,79,103,2,0,6,88, -36,126,104,134,198,90,194,89,15,22,16,0,6,112,198,114,32,134,64,0, -75,135,3,0,194,113,8,90,110,95,0,0,6,80,6,112,198,114,198,82, -194,81,74,103,2,0,194,113,78,135,3,0,6,104,6,128,6,80,198,82, -36,126,104,134,207,81,9,114,106,119,0,0,198,106,36,86,104,134,202,105, -77,103,2,0,198,130,36,110,104,134,205,129,32,102,200,255,80,103,3,0, -36,94,104,134,11,22,4,0,6,80,198,82,194,81,106,119,0,0,32,94, -224,255,6,112,198,114,194,113,78,95,2,0,6,80,36,118,104,134,198,82, -194,81,14,22,8,0,6,104,198,106,74,103,3,0,194,105,9,82,109,87, -0,0,6,136,198,138,194,137,81,95,2,0,6,104,36,142,104,134,198,106, -194,105,17,22,24,0,6,128,198,130,36,118,104,134,6,120,77,103,3,0, -194,129,11,106,112,111,0,0,6,96,198,98,194,97,76,95,2,0,198,122, -36,102,104,134,6,128,198,130,194,129,12,22,28,0,194,121,6,88,36,86, -104,134,10,86,32,0,6,136,198,138,198,90,32,110,202,255,80,111,3,0, -194,89,11,130,107,135,0,0,32,102,224,255,79,103,2,0,6,88,198,90, -194,89,75,111,3,0,14,118,32,0,6,104,198,106,206,105,109,135,0,0, -6,120,36,134,104,134,16,134,32,0,198,122,208,121,79,103,2,0,6,88, -36,102,104,134,12,102,36,0,198,90,204,89,32,118,202,255,202,137,81,119, -3,0,11,130,107,135,0,0,6,120,36,134,104,134,16,134,36,0,198,122, -208,121,32,86,224,255,36,118,104,134,14,118,36,0,6,104,198,106,206,105, -77,87,2,0,32,102,202,255,79,103,3,0,6,88,36,102,104,134,12,102, -40,0,198,90,204,89,36,86,104,134,10,86,40,0,6,136,198,138,202,137, -11,114,113,119,0,0,32,134,224,255,75,135,2,0,6,120,36,134,104,134, -16,134,44,0,36,118,104,134,14,118,40,0,6,104,198,106,206,105,32,86, -202,255,77,87,3,0,6,136,36,86,104,134,10,86,44,0,198,138,202,137, -11,98,198,122,208,121,111,103,0,0,32,118,224,255,81,119,2,0,36,102, -104,134,12,102,44,0,198,50,204,49,32,134,202,255,70,135,3,0,127,0, -6,6,240,255,185,5,128,7,108,2,6,120,198,122,36,134,104,134,16,22, -20,0,194,121,8,98,111,103,0,0,6,128,36,102,104,134,6,120,198,122, -198,130,194,129,6,88,198,90,194,89,12,22,12,0,75,7,2,0,194,121, -6,88,198,90,32,110,231,255,80,111,3,0,194,89,32,134,8,1,107,135, -0,0,32,102,64,0,79,103,2,0,6,88,36,126,104,134,198,90,194,89, -15,22,16,0,6,112,198,114,32,134,66,0,75,135,3,0,194,113,32,94, -8,1,110,95,0,0,6,80,6,112,198,114,198,82,194,81,74,103,2,0, -194,113,78,135,3,0,6,104,6,128,6,80,198,82,36,126,104,134,207,81, -32,118,9,1,106,119,0,0,198,106,36,86,104,134,202,105,77,103,2,0, -198,130,36,110,104,134,205,129,32,102,37,0,80,103,3,0,36,94,104,134, -11,22,4,0,6,80,198,82,194,81,106,119,0,0,32,94,64,0,6,112, -198,114,194,113,78,95,2,0,6,80,36,118,104,134,198,82,194,81,14,22, -8,0,6,104,198,106,74,103,3,0,194,105,32,86,9,1,109,87,0,0, -6,136,198,138,194,137,81,95,2,0,6,104,36,142,104,134,198,106,194,105, -17,22,24,0,6,128,198,130,36,118,104,134,6,120,77,103,3,0,194,129, -32,110,11,1,112,111,0,0,6,96,198,98,194,97,76,95,2,0,198,122, -36,102,104,134,6,128,198,130,194,129,12,22,28,0,194,121,6,88,36,86, -104,134,10,86,32,0,6,136,198,138,198,90,32,110,53,0,80,111,3,0, -194,89,32,134,11,1,107,135,0,0,32,102,64,0,79,103,2,0,6,88, -198,90,194,89,75,111,3,0,14,118,32,0,6,104,198,106,206,105,109,135, -0,0,6,120,36,134,104,134,16,134,32,0,198,122,208,121,79,103,2,0, -6,88,36,102,104,134,12,102,36,0,198,90,204,89,32,118,53,0,202,137, -81,119,3,0,32,134,11,1,107,135,0,0,6,120,36,134,104,134,16,134, -36,0,198,122,208,121,32,86,64,0,36,118,104,134,14,118,36,0,6,104, -198,106,206,105,77,87,2,0,32,102,53,0,79,103,3,0,6,88,36,102, -104,134,12,102,40,0,198,90,204,89,36,86,104,134,10,86,40,0,6,136, -198,138,202,137,32,118,11,1,113,119,0,0,32,134,64,0,75,135,2,0, -6,120,36,134,104,134,16,134,44,0,36,118,104,134,14,118,40,0,6,104, -198,106,206,105,32,86,53,0,77,87,3,0,6,136,36,86,104,134,10,86, -44,0,198,138,202,137,32,102,11,1,198,122,208,121,111,103,0,0,32,118, -64,0,81,119,2,0,36,102,104,134,12,102,44,0,198,50,204,49,32,134, -53,0,70,135,3,0,127,0,128,7,33,0,128,255,14,0,10,48,129,255, -70,86,64,6,63,0,128,7,225,112,6,200,7,208,8,224,60,223,1,0, -128,255,252,15,10,232,125,7,32,0,125,207,26,0,125,239,9,0,1,130, -125,135,24,0,125,7,13,0,125,7,17,0,125,7,21,0,3,138,60,127, -22,0,125,223,1,0,207,126,3,0,125,127,32,0,93,143,34,0,29,216, -220,231,22,0,210,5,36,103,105,138,125,103,21,0,108,210,242,13,26,48, -28,56,27,64,128,255,92,2,28,48,27,56,128,255,194,2,26,48,27,56, -128,255,36,0,213,13,28,48,27,56,128,255,176,2,61,23,9,0,34,95, -26,0,139,94,0,128,98,95,26,0,27,80,64,6,255,112,142,7,97,0, -7,232,98,50,227,5,104,50,211,13,107,50,163,21,149,45,61,23,9,0, -34,135,26,0,144,134,0,128,98,135,26,0,197,53,61,23,5,0,34,118, -18,0,206,47,0,0,213,45,99,7,9,0,99,7,13,0,99,7,18,0, -61,111,1,0,99,7,22,0,99,111,1,0,29,64,5,50,3,56,128,255, -214,1,61,23,9,0,34,102,18,0,204,47,0,0,213,21,108,50,170,13, -61,23,9,0,34,95,26,0,139,94,0,128,98,95,26,0,165,13,6,64, -38,6,156,125,132,0,32,62,158,2,128,255,112,14,224,81,78,6,127,0, -140,7,225,243,67,55,3,0,9,176,54,191,18,0,7,200,54,223,16,0, -201,186,201,218,54,199,5,0,181,5,57,207,13,0,185,23,5,0,162,65, -188,253,8,232,128,233,201,234,8,224,194,225,57,23,1,0,201,226,194,225, -99,7,5,0,54,215,1,0,128,255,160,14,106,7,32,0,3,106,74,111, -34,0,12,98,106,103,26,0,106,87,9,0,1,90,106,95,24,0,106,7, -13,0,106,7,17,0,106,215,1,0,106,7,21,0,10,208,253,185,174,5, -23,232,189,185,99,7,9,0,54,151,1,0,99,151,21,0,58,151,9,0, -99,151,17,0,128,255,84,14,10,16,2,82,35,151,21,0,66,87,34,0, -98,151,1,0,35,143,17,0,27,120,113,23,5,0,191,122,122,23,9,0, -56,103,1,0,27,112,204,113,225,135,0,0,56,111,5,0,208,121,205,121, -98,119,9,0,98,127,13,0,32,102,0,176,54,119,25,0,3,87,3,0, -193,114,204,113,46,95,0,0,224,81,98,95,26,0,154,13,98,231,17,0, -56,127,9,0,219,121,98,127,21,0,133,13,56,103,9,0,98,231,21,0, -219,97,98,103,17,0,56,87,17,0,187,81,253,81,199,5,221,217,29,80, -197,5,24,198,20,0,0,218,10,120,169,122,35,151,9,0,98,127,24,0, -65,146,99,151,9,0,202,225,170,233,224,233,207,165,35,151,5,0,224,145, -202,5,99,215,5,0,213,5,35,143,13,0,113,215,13,0,58,23,9,0, -34,111,26,0,141,110,0,128,98,111,26,0,35,143,9,0,58,95,24,0, -122,7,13,0,209,89,122,95,24,0,57,207,13,0,99,215,13,0,224,201, -226,5,57,231,1,0,185,239,5,0,201,234,224,185,183,5,191,7,180,254, -35,87,5,0,76,6,255,243,128,7,225,112,6,232,7,216,59,207,1,0, -8,224,60,215,9,0,128,255,58,13,1,130,74,135,34,0,122,87,5,0, -60,127,24,0,65,122,124,127,24,0,124,87,9,0,106,207,1,0,106,7, -5,0,59,103,9,0,106,103,13,0,59,119,18,0,106,119,10,0,106,7, -8,0,60,23,26,0,36,126,104,134,196,18,194,233,194,234,207,233,61,119, -2,0,106,119,16,0,61,111,0,0,106,111,18,0,64,6,255,112,130,7, -225,243,7,200,6,224,60,239,5,0,60,223,18,0,60,23,25,0,201,218, -224,17,162,93,193,18,32,102,0,176,204,17,60,215,16,0,34,183,0,0, -201,210,0,194,57,191,9,0,60,151,1,0,99,151,1,0,128,255,164,12, -10,16,119,23,5,0,2,82,35,151,1,0,66,87,34,0,98,151,1,0, -65,194,61,103,1,0,26,112,204,113,61,111,5,0,225,135,0,0,205,129, -98,135,13,0,98,119,9,0,61,135,9,0,218,129,98,135,17,0,61,119, -13,0,218,113,98,119,21,0,98,183,26,0,61,87,17,0,2,184,186,81, -251,81,163,5,27,80,10,88,137,90,98,95,24,0,170,217,210,5,29,238, -20,0,0,210,229,197,220,215,22,0,146,13,60,87,20,0,60,135,1,0, -98,87,28,0,208,7,2,0,57,119,24,0,121,191,9,0,216,113,121,119, -24,0,66,6,255,243,128,7,225,16,6,232,7,224,8,216,128,255,4,12, -106,7,32,0,3,138,74,143,34,0,106,231,1,0,106,87,9,0,1,130, -106,135,24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0, -10,232,29,48,27,56,128,255,226,7,29,48,129,255,0,82,64,6,255,16, -128,7,225,16,6,232,7,224,8,216,128,255,186,11,106,7,32,0,3,138, -74,143,34,0,106,231,1,0,106,87,9,0,1,130,106,135,24,0,106,7, -13,0,106,7,17,0,106,239,26,0,106,7,21,0,10,232,29,48,27,56, -128,255,152,7,29,48,129,255,16,83,64,6,255,16,128,7,225,16,6,232, -7,224,8,216,128,255,112,11,106,7,32,0,3,138,74,143,34,0,106,231, -1,0,106,87,9,0,1,130,106,135,24,0,106,7,13,0,106,7,17,0, -106,239,26,0,106,7,21,0,10,232,29,48,27,56,128,255,12,8,29,48, -129,255,198,82,64,6,255,16,128,7,225,0,6,232,7,224,128,255,40,11, -106,7,32,0,3,138,74,143,34,0,106,231,1,0,106,87,9,0,1,130, -106,135,24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0, -10,232,29,48,128,255,218,5,42,126,18,0,207,47,0,0,29,48,129,255, -30,81,64,6,255,0,128,7,225,0,6,232,7,224,128,255,218,10,106,7, -32,0,3,138,74,143,34,0,106,231,1,0,106,87,9,0,1,130,106,135, -24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0,10,232, -29,48,128,255,140,5,42,126,18,0,207,47,0,0,29,48,129,255,42,82, -64,6,255,0,134,7,33,0,32,142,218,0,99,143,0,0,99,7,2,0, -99,7,5,0,32,134,79,0,67,135,5,0,32,126,194,0,67,127,6,0, -32,118,160,0,67,119,8,0,32,110,176,0,67,111,9,0,8,98,99,103, -10,0,3,64,1,74,128,255,112,4,70,6,63,0,134,7,33,0,32,142, -216,0,99,143,0,0,99,7,2,0,99,7,5,0,32,134,79,0,67,135, -5,0,32,126,194,0,67,127,6,0,32,118,160,0,67,119,8,0,32,110, -176,0,67,111,9,0,8,98,99,103,10,0,3,64,0,74,128,255,42,4, -70,6,63,0,134,7,33,0,99,7,0,0,99,7,2,0,99,7,5,0, -67,7,8,0,32,142,229,0,67,143,9,0,8,130,99,135,10,0,3,64, -1,74,128,255,252,3,70,6,63,0,134,7,33,0,99,7,0,0,99,7, -2,0,99,71,5,0,32,142,64,0,67,143,8,0,32,134,112,0,67,135, -9,0,8,122,99,127,10,0,3,64,0,74,128,255,202,3,70,6,63,0, -142,7,225,16,6,216,99,7,9,0,99,7,13,0,99,7,18,0,7,224, -99,231,1,0,128,255,144,9,3,130,10,232,93,135,34,0,125,231,1,0, -125,223,26,0,125,239,9,0,1,122,125,127,24,0,125,7,13,0,125,7, -17,0,125,7,32,0,125,7,21,0,221,15,32,0,29,64,5,50,3,56, -191,255,12,252,61,23,9,0,29,48,34,118,18,0,206,47,0,0,129,255, -122,79,78,6,255,16,134,7,33,0,99,7,0,0,99,7,2,0,99,7, -5,0,32,142,64,0,67,143,8,0,32,134,224,0,67,135,9,0,8,122, -99,127,10,0,3,64,0,74,128,255,46,3,70,6,63,0,128,7,225,48, -6,208,9,224,35,239,21,0,168,0,8,16,111,18,203,109,66,0,16,0, -28,0,82,0,42,0,94,0,21,0,88,0,35,0,49,0,62,0,106,0, -75,0,100,0,55,0,106,0,68,0,125,7,25,0,124,7,10,0,133,101, -9,130,125,135,25,0,5,122,124,127,10,0,149,93,9,114,125,119,25,0, -1,106,124,111,10,0,165,85,8,98,125,103,25,0,7,90,124,95,10,0, -181,77,8,82,125,87,25,0,3,138,124,143,10,0,197,69,125,7,25,0, -8,130,124,135,10,0,229,61,9,122,125,127,25,0,13,114,124,119,10,0, -245,53,9,106,125,111,25,0,124,111,10,0,149,53,8,90,125,95,25,0, -15,82,124,87,10,0,165,45,8,138,125,143,25,0,11,130,124,135,10,0, -181,37,125,7,25,0,2,122,124,127,10,0,213,29,125,7,25,0,6,114, -124,119,10,0,245,21,125,7,25,0,4,106,124,111,10,0,149,21,125,7, -25,0,12,98,124,103,10,0,181,13,61,55,1,0,32,86,13,1,102,87, -12,0,31,58,129,255,184,43,229,53,97,58,218,5,60,142,10,0,209,7, -1,0,61,223,1,0,128,255,254,7,106,7,32,0,3,130,74,135,34,0, -106,215,26,0,106,87,9,0,1,122,106,127,24,0,106,7,13,0,106,7, -17,0,106,223,1,0,106,7,21,0,10,216,27,48,28,56,128,255,6,3, -61,119,25,0,224,113,210,5,29,48,27,56,191,255,222,250,27,48,128,255, -152,2,42,110,18,0,205,47,0,0,27,48,129,255,220,77,64,6,255,48, -134,7,33,0,32,142,255,0,99,143,0,0,136,0,40,16,67,23,4,0, -67,23,5,0,67,7,7,0,67,7,9,0,99,71,2,0,67,7,8,0, -67,71,6,0,12,122,99,127,10,0,3,64,0,74,128,255,132,1,70,6, -63,0,128,7,225,16,6,232,7,224,8,216,128,255,88,7,106,7,32,0, -3,138,74,143,34,0,106,231,1,0,106,87,9,0,1,130,106,135,24,0, -106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0,10,232,29,48, -27,56,128,255,244,3,29,48,129,255,84,77,64,6,255,16,128,7,225,48, -6,232,7,224,8,216,9,208,128,255,12,7,106,7,32,0,3,138,74,143, -34,0,106,231,1,0,106,87,9,0,1,130,106,135,24,0,106,7,13,0, -106,7,17,0,106,239,26,0,106,7,21,0,10,232,29,48,27,56,26,64, -128,255,120,4,29,48,129,255,6,77,64,6,255,48,128,7,225,48,6,232, -7,224,8,216,9,208,128,255,190,6,106,7,32,0,3,138,74,143,34,0, -106,231,1,0,106,87,9,0,1,130,106,135,24,0,106,7,13,0,106,7, -17,0,106,239,26,0,106,7,21,0,10,232,29,48,27,56,26,64,128,255, -42,4,29,48,129,255,18,78,64,6,255,48,128,7,225,16,6,232,7,224, -8,216,128,255,114,6,106,7,32,0,3,138,74,143,34,0,106,231,1,0, -106,87,9,0,1,130,106,135,24,0,106,7,13,0,106,7,17,0,106,239, -26,0,106,7,21,0,10,232,29,48,27,56,0,66,128,255,210,4,29,48, -129,255,108,76,64,6,255,16,128,7,225,16,6,232,7,224,8,216,128,255, -38,6,106,7,32,0,3,138,74,143,34,0,106,231,1,0,106,87,9,0, -1,66,106,71,24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7, -21,0,10,232,29,48,27,56,128,255,136,4,29,48,129,255,34,76,64,6, -255,16,128,7,225,48,6,232,7,216,8,208,9,224,188,0,128,255,216,5, -106,7,32,0,3,138,74,143,34,0,106,223,1,0,106,87,9,0,1,130, -106,135,24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0, -10,232,29,48,26,56,128,255,224,0,10,16,97,226,218,5,29,48,128,255, -124,0,10,16,34,118,18,0,206,47,0,0,29,48,129,255,190,75,64,6, -255,48,128,7,225,48,6,232,7,216,8,208,9,224,188,0,128,255,116,5, -106,7,32,0,3,138,74,143,34,0,106,223,1,0,106,87,9,0,1,130, -106,135,24,0,106,7,13,0,106,7,17,0,106,239,26,0,106,7,21,0, -10,232,29,48,26,56,128,255,124,0,10,16,97,226,218,5,29,48,128,255, -24,0,10,16,34,118,18,0,206,47,0,0,29,48,129,255,180,76,64,6, -255,48,128,7,225,16,6,232,61,223,1,0,61,231,9,0,128,255,16,5, -1,138,124,87,5,0,74,143,34,0,61,135,24,0,65,130,125,135,24,0, -125,87,9,0,2,122,106,7,13,0,106,7,8,0,74,7,15,0,106,127, -18,0,106,7,10,0,74,7,16,0,74,7,17,0,106,223,1,0,221,15, -32,0,221,7,32,0,64,6,255,16,128,7,225,48,7,224,6,232,61,215, -1,0,61,223,9,0,128,255,182,4,10,16,1,138,123,23,5,0,66,143, -34,0,61,135,24,0,65,130,125,135,24,0,125,23,9,0,252,127,1,0, -98,127,8,0,252,119,3,0,98,119,10,0,60,111,5,0,98,111,13,0, -188,103,9,0,66,103,17,0,156,95,9,0,66,95,16,0,252,87,11,0, -98,87,18,0,98,215,1,0,221,15,32,0,2,80,221,7,32,0,64,6, -255,48,134,7,33,0,3,138,99,143,0,0,8,134,64,0,99,135,2,0, -99,7,5,0,67,7,8,0,32,126,239,0,67,127,9,0,8,114,99,119, -10,0,3,64,0,74,191,255,168,254,70,6,63,0,134,7,33,0,99,7, -5,0,67,7,8,0,136,0,99,71,0,0,32,142,239,0,67,143,9,0, -8,130,99,135,10,0,137,0,99,79,2,0,3,64,0,74,191,255,118,254, -70,6,63,0,152,7,225,16,7,224,6,232,61,223,1,0,128,255,228,3, -1,130,74,135,34,0,106,223,1,0,61,127,24,0,10,216,65,122,125,127, -24,0,125,223,9,0,125,87,5,0,32,110,236,255,106,135,10,0,106,7, -13,0,106,7,8,0,74,7,15,0,74,111,17,0,13,98,106,103,18,0, -74,7,16,0,32,94,0,2,99,7,33,0,99,7,29,0,99,231,37,0, -99,231,41,0,61,87,1,0,99,95,45,0,99,87,1,0,35,134,28,0, -99,135,5,0,99,7,9,0,99,7,13,0,1,122,99,127,18,0,12,114, -99,119,25,0,99,7,16,0,99,7,20,0,99,7,22,0,29,56,3,48, -191,255,118,246,61,23,9,0,34,111,26,0,141,110,0,128,98,111,26,0, -27,80,221,15,32,0,221,7,32,0,88,6,255,16,152,7,225,48,7,216, -6,224,60,215,1,0,128,255,38,3,10,232,1,130,93,135,34,0,124,239, -5,0,60,127,24,0,124,239,9,0,65,122,124,127,24,0,32,118,208,0, -13,122,125,127,18,0,125,119,8,0,93,7,12,0,32,102,79,0,93,103, -13,0,32,94,194,255,93,95,14,0,32,86,160,255,125,135,10,0,93,87, -16,0,32,134,176,255,93,135,17,0,125,215,1,0,99,223,37,0,99,223, -41,0,99,7,33,0,99,7,29,0,32,118,0,2,60,111,1,0,99,119, -45,0,99,111,1,0,35,102,28,0,99,103,5,0,99,7,9,0,99,7, -13,0,1,90,99,95,18,0,12,82,99,87,25,0,99,7,16,0,99,7, -20,0,99,7,22,0,28,56,3,48,191,255,164,245,60,23,9,0,34,135, -26,0,144,134,0,128,98,135,26,0,29,80,220,15,32,0,220,7,32,0, -88,6,255,48,152,7,225,240,6,224,7,200,25,48,39,6,156,123,132,0, -8,216,32,70,0,2,129,255,200,43,60,215,1,0,128,255,66,2,10,232, -1,130,93,135,34,0,29,192,60,127,24,0,65,122,124,127,24,0,124,239, -5,0,124,199,9,0,125,215,1,0,125,7,8,0,125,7,13,0,125,135, -10,0,93,7,15,0,93,7,16,0,27,208,154,0,27,6,15,255,130,13, -27,6,14,255,130,21,27,6,10,255,210,13,197,5,220,7,33,0,149,13, -27,64,38,6,172,125,132,0,32,62,37,9,128,255,98,1,15,106,125,111, -18,0,93,215,17,0,32,102,0,2,99,7,33,0,99,7,29,0,99,207, -41,0,99,207,37,0,60,95,1,0,99,103,45,0,99,95,1,0,35,86, -28,0,99,87,5,0,99,7,9,0,99,7,13,0,1,130,99,135,18,0, -11,122,99,127,25,0,99,7,16,0,99,7,20,0,99,7,22,0,28,56, -3,48,191,255,168,244,61,118,18,0,206,47,0,0,220,15,32,0,220,7, -32,0,24,80,88,6,255,240,152,7,225,112,7,200,8,216,187,0,6,224, -60,215,1,0,128,255,92,1,10,232,125,215,1,0,1,130,93,135,34,0, -124,239,5,0,60,127,24,0,29,208,65,122,124,127,24,0,124,215,9,0, -32,110,0,2,93,7,16,0,125,7,8,0,125,7,13,0,125,135,10,0, -93,7,15,0,35,94,28,0,99,7,33,0,99,7,29,0,99,207,37,0, -99,207,41,0,60,103,1,0,99,111,45,0,99,103,1,0,99,95,5,0, -99,7,9,0,99,7,13,0,99,135,18,0,99,7,16,0,99,7,20,0, -99,7,22,0,97,218,138,13,32,94,228,255,13,82,12,106,99,111,25,0, -149,21,224,217,146,13,38,6,188,125,132,0,32,62,148,9,0,66,128,255, -68,0,32,94,232,255,15,82,11,130,99,135,25,0,93,95,17,0,125,87, -18,0,28,56,3,48,191,255,200,243,60,23,9,0,34,127,26,0,143,126, -0,128,98,127,26,0,26,80,220,15,32,0,220,7,32,0,88,6,255,112, -32,86,0,1,127,0,33,6,254,5,128,0,97,0,96,7,53,176,34,6, -144,162,133,0,96,23,49,176,32,142,0,17,96,143,57,176,0,82,2,134, -36,0,98,135,5,0,65,82,2,22,36,0,10,6,1,239,246,245,127,0, -128,7,193,0,6,224,229,87,64,0,224,7,96,1,32,23,57,176,10,232, -188,17,224,17,231,5,2,6,0,239,191,5,96,23,57,176,253,47,32,0, -64,6,223,0,128,7,225,0,0,226,38,239,13,0,129,255,32,176,29,48, -65,226,224,233,154,253,28,80,64,6,255,0,128,7,193,0,229,87,64,0, -224,7,96,1,32,143,53,176,10,232,32,135,57,176,17,22,1,0,240,137, -238,13,96,23,53,176,32,231,49,176,60,127,5,0,96,127,49,176,253,47, -32,0,28,80,64,6,223,0,229,87,64,0,224,135,96,1,32,119,57,176, -32,111,53,176,238,105,190,253,253,47,32,0,165,221,128,7,225,241,68,55, -204,131,224,49,226,5,38,6,216,126,132,0,128,255,148,7,0,226,0,186, -0,210,56,6,144,6,136,0,26,136,194,138,36,118,208,131,206,137,49,223, -1,0,59,239,8,0,59,207,8,0,216,234,156,234,217,206,15,0,98,202, -202,69,99,234,170,69,23,104,65,186,224,105,154,29,24,48,32,62,32,0, -9,66,128,255,70,7,88,7,8,0,29,102,48,0,88,103,0,0,32,94, -46,0,88,95,1,0,25,86,48,0,88,87,2,0,32,142,48,0,88,143, -3,0,26,56,29,64,25,72,38,6,228,126,132,0,128,255,26,7,0,106, -28,96,194,98,27,16,36,86,172,138,204,81,36,94,108,138,204,89,68,98, -106,23,1,0,107,223,1,0,68,82,68,90,65,226,2,22,32,0,65,106, -100,106,198,245,26,48,128,255,30,6,26,48,128,255,248,0,65,210,99,210, -166,173,97,186,177,77,162,53,99,186,145,29,250,69,64,86,0,0,202,191, -40,241,229,87,64,0,224,7,96,1,10,232,64,86,0,0,10,87,40,241, -10,248,32,86,191,255,74,249,64,86,0,0,74,255,40,241,253,47,32,0, -64,86,0,0,202,191,38,241,229,87,64,0,224,7,96,1,10,232,64,86, -0,0,10,87,38,241,10,248,32,86,191,255,74,249,64,86,0,0,74,255, -38,241,253,47,32,0,64,86,0,0,202,191,36,241,229,87,64,0,224,7, -96,1,10,232,64,86,0,0,10,87,36,241,10,248,32,86,191,255,74,249, -64,86,0,0,74,255,36,241,253,47,32,0,245,13,23,56,38,6,248,126, -132,0,128,255,54,6,23,64,38,6,12,127,132,0,32,62,179,0,191,255, -176,253,32,22,16,0,28,6,240,255,190,5,28,16,226,0,100,23,206,131, -4,87,205,131,226,0,226,81,227,13,224,81,135,13,10,56,2,64,38,6, -24,127,132,0,128,255,248,5,36,135,206,131,68,135,205,131,64,6,255,241, -194,50,36,118,208,131,206,49,38,23,1,0,32,110,0,80,98,111,8,0, -127,0,194,50,36,118,208,131,206,49,38,23,1,0,128,110,0,160,98,111, -8,0,127,0,128,7,128,7,97,0,6,232,29,136,194,138,36,118,172,138, -206,137,49,23,1,0,29,104,193,106,36,86,236,138,202,105,237,143,1,0, -145,142,0,1,98,143,0,0,32,54,100,0,226,23,1,0,128,255,144,5, -29,48,128,255,212,0,32,54,184,11,128,255,130,5,64,6,127,0,128,7, -97,0,194,50,36,118,172,138,206,49,38,239,1,0,6,106,125,111,16,0, -4,98,125,103,22,0,10,50,253,23,1,0,128,255,88,5,6,90,125,95, -16,0,125,7,22,0,32,54,136,19,253,23,1,0,128,255,66,5,64,6, -127,0,128,7,33,0,6,136,194,138,36,118,172,138,206,137,49,23,1,0, -193,50,36,86,236,138,202,49,230,143,1,0,145,142,0,64,98,143,0,0, -32,54,232,3,128,255,16,5,64,6,63,0,128,7,33,0,6,136,194,138, -36,118,172,138,206,137,49,23,1,0,193,50,36,86,236,138,202,49,230,143, -1,0,145,142,0,128,98,143,0,0,32,54,232,3,128,255,222,4,64,6, -63,0,194,50,36,118,172,138,206,49,38,23,1,0,6,106,98,111,16,0, -32,102,128,0,98,103,22,0,226,23,1,0,127,0,128,7,225,0,6,232, -29,136,194,138,36,118,172,138,206,137,49,231,1,0,29,104,193,106,36,86, -236,138,202,105,237,143,1,0,145,142,224,0,124,143,0,0,10,50,252,23, -1,0,128,255,134,4,193,234,36,102,236,138,204,233,253,95,1,0,124,95, -0,0,252,23,1,0,64,6,255,0,128,7,33,0,6,136,194,138,36,118, -172,138,206,137,49,23,1,0,6,104,193,106,36,86,236,138,202,105,237,143, -1,0,145,142,0,16,98,143,0,0,128,255,2,4,64,6,63,0,194,50, -36,118,172,138,206,49,38,79,1,0,39,87,18,0,32,110,223,255,10,16, -77,17,234,17,178,5,130,22,160,0,194,102,0,1,130,0,170,37,7,95, -8,0,200,90,11,17,105,23,16,0,7,119,12,0,39,103,10,0,200,114, -140,0,14,97,105,103,18,0,7,143,14,0,167,127,13,0,200,138,17,121, -105,127,20,0,167,87,15,0,7,103,17,0,135,119,17,0,200,98,12,81, -10,113,165,53,7,103,9,0,200,98,140,102,12,0,105,103,16,0,7,143, -15,0,39,127,10,0,200,138,168,122,17,121,105,127,18,0,105,7,20,0, -105,7,22,0,7,103,8,0,200,98,12,17,105,23,16,0,7,127,12,0, -39,111,10,0,200,122,141,0,15,105,105,111,18,0,7,87,14,0,167,135, -13,0,200,82,10,129,105,135,20,0,7,111,17,0,135,119,17,0,200,106, -13,113,105,119,22,0,127,0,194,50,36,118,172,138,206,49,38,79,1,0, -167,0,224,57,218,37,169,103,25,0,104,103,0,0,137,95,25,0,104,95, -10,0,41,23,26,0,2,80,138,0,168,18,72,23,4,0,104,87,2,0, -41,23,28,0,72,23,5,0,168,18,72,23,6,0,41,23,30,0,194,126, -240,0,2,104,205,94,15,0,11,80,72,127,8,0,168,106,165,37,169,95, -17,0,104,95,0,0,137,87,17,0,104,87,10,0,41,23,18,0,2,136, -145,0,168,18,104,143,2,0,72,23,4,0,41,23,20,0,41,111,22,0, -72,23,5,0,205,118,240,0,168,18,72,23,6,0,72,119,8,0,205,86, -15,0,168,106,72,87,7,0,72,111,9,0,127,0,194,50,36,118,172,138, -206,49,199,0,193,58,36,86,220,131,202,57,39,143,0,0,38,23,1,0, -98,143,4,0,127,0,194,50,36,134,172,138,198,129,48,23,1,0,226,87, -1,0,103,87,0,0,36,110,108,138,226,23,7,0,103,23,2,0,205,49, -38,23,1,0,226,87,9,0,103,87,4,0,226,23,11,0,103,23,6,0, -127,0,128,7,225,112,0,234,36,222,172,138,32,230,104,177,36,214,236,138, -165,61,59,87,1,0,10,200,249,23,1,0,194,142,224,0,242,29,29,48, -129,255,200,62,224,81,226,5,29,48,2,58,129,255,250,62,181,37,25,48, -128,255,112,0,29,48,10,64,32,62,66,0,128,255,44,2,10,200,29,48, -2,58,129,255,220,62,224,201,178,21,25,48,128,255,32,2,245,13,194,126, -1,64,15,6,255,191,170,13,250,119,1,0,142,118,0,128,106,119,0,0, -28,48,129,255,108,175,68,218,28,230,32,0,66,210,65,234,36,103,206,131, -236,233,198,197,64,86,0,0,202,191,36,241,64,86,0,0,202,191,38,241, -64,86,0,0,202,191,40,241,64,6,255,112,38,143,0,0,32,86,9,2, -209,134,192,0,194,5,32,86,1,2,149,93,38,111,0,0,134,106,217,85, -134,23,25,0,194,134,1,0,226,45,131,18,153,45,166,23,25,0,2,6, -240,255,161,13,97,18,242,29,100,18,162,29,101,18,146,21,108,18,154,69, -229,13,2,6,240,255,210,21,2,6,236,255,130,13,2,6,192,255,242,13, -2,6,124,255,226,5,181,53,4,143,204,131,224,137,242,45,32,86,0,2, -197,45,32,86,10,2,149,45,32,86,2,2,229,37,32,86,8,2,181,37, -194,126,112,0,226,21,194,94,112,0,11,6,192,255,178,13,11,6,176,255, -210,5,11,6,144,255,130,13,197,21,32,86,8,2,149,21,32,86,3,2, -229,13,32,86,6,2,181,13,194,134,128,0,194,5,32,86,4,2,213,5, -132,18,185,5,32,86,8,2,127,0,128,7,225,0,6,232,4,143,204,131, -7,224,224,137,194,13,128,255,126,0,29,48,128,255,164,0,224,225,210,5, -32,54,136,19,128,255,216,0,64,6,255,0,128,7,225,48,6,232,191,255, -240,250,194,234,0,218,32,214,36,17,29,48,128,255,80,0,29,128,194,130, -36,110,172,138,205,129,48,231,1,0,29,96,193,98,36,142,236,138,209,97, -236,135,1,0,144,134,224,128,124,135,0,0,10,50,124,215,2,0,128,255, -142,0,29,112,193,114,36,94,236,138,203,113,238,87,1,0,124,87,0,0, -65,234,65,218,100,218,166,221,64,6,255,48,4,143,204,131,224,137,162,21, -6,128,194,130,36,110,172,138,205,129,193,50,36,142,236,138,209,49,102,7, -0,0,48,23,1,0,98,7,0,0,226,23,1,0,127,0,4,143,204,131, -224,137,194,21,6,128,193,50,36,142,236,138,194,130,36,110,172,138,205,129, -48,23,1,0,209,49,32,134,0,2,102,135,0,0,98,135,0,0,226,23, -1,0,127,0,33,6,230,1,128,0,97,0,33,6,92,34,130,0,97,0, -33,6,62,191,129,0,97,0,33,6,14,0,129,0,97,0,33,6,20,217, -128,0,97,0,128,7,33,0,36,55,77,139,128,255,170,7,4,135,144,140, -23,146,224,81,226,23,0,0,82,129,194,126,1,0,195,122,15,129,68,135, -144,140,10,112,231,119,66,2,131,114,64,14,136,0,97,119,157,6,64,6, -63,0,128,7,33,0,38,6,4,128,132,0,191,255,156,255,64,54,136,0, -38,55,157,6,128,255,16,0,64,86,136,0,42,87,157,6,64,6,63,0, -128,7,33,0,64,142,16,0,241,49,158,13,6,120,191,122,150,122,207,49, -170,50,37,70,56,128,133,13,6,96,191,98,140,98,204,49,180,50,37,70, -59,128,6,56,37,54,48,128,191,255,80,255,64,6,63,0,64,86,136,0, -42,87,157,6,127,0,128,7,97,0,61,6,156,6,136,0,191,255,84,255, -191,255,138,255,125,7,5,0,61,143,1,0,125,143,9,0,125,7,13,0, -125,7,17,0,125,7,21,0,125,7,25,0,125,7,29,0,125,7,33,0, -125,7,37,0,125,7,41,0,61,23,1,0,224,17,210,29,139,18,64,126, -1,0,239,17,177,5,64,22,1,0,2,6,255,253,177,5,32,22,0,2, -61,111,9,0,61,103,5,0,125,23,49,0,172,105,137,106,162,105,125,111, -45,0,31,130,125,135,245,0,221,135,248,0,64,6,127,0,130,7,225,0, -61,6,20,128,132,0,60,6,156,6,136,0,60,143,29,0,41,6,152,7, -136,0,244,143,66,2,99,143,1,0,38,6,196,184,255,255,39,6,36,128, -132,0,32,70,16,0,128,255,100,6,224,81,242,5,29,48,32,62,195,1, -0,66,191,255,4,246,60,119,37,0,41,6,152,135,138,0,244,119,66,2, -99,119,1,0,38,6,36,185,255,255,39,6,56,128,132,0,32,70,16,0, -128,255,46,6,224,81,242,5,29,48,32,62,207,1,0,66,191,255,206,245, -60,95,33,0,41,6,152,71,137,0,244,95,66,2,99,95,1,0,38,6, -244,184,255,255,39,6,80,128,132,0,32,70,16,0,128,255,248,5,224,81, -242,5,29,48,32,62,219,1,0,66,191,255,152,245,60,135,41,0,41,6, -152,155,138,0,244,135,66,2,99,135,1,0,38,6,84,185,255,255,39,6, -100,128,132,0,32,70,16,0,128,255,194,5,224,81,130,13,29,48,32,62, -231,1,0,66,191,255,98,245,224,81,66,6,255,0,130,7,225,16,6,216, -196,223,144,140,194,5,31,82,128,7,4,1,61,6,156,6,136,0,61,231, -245,0,65,226,28,6,240,255,198,5,32,86,18,1,213,117,221,199,248,0, -178,53,27,6,128,255,199,5,32,86,17,1,197,109,31,66,27,6,240,255, -223,21,3,56,38,6,196,184,255,255,129,255,154,158,224,81,194,5,32,86, -16,1,213,93,28,16,236,23,64,2,61,86,52,0,202,17,32,86,16,0, -165,61,3,56,38,6,244,184,255,255,129,255,114,158,224,81,194,5,32,86, -16,1,149,77,28,16,236,23,64,2,61,86,52,0,202,17,32,86,128,0, -229,37,61,127,45,0,61,135,49,0,207,129,16,118,0,252,238,217,195,5, -32,86,20,1,197,53,61,111,5,0,61,135,9,0,99,111,1,0,27,96, -201,98,204,105,125,111,5,0,173,129,61,103,49,0,137,130,172,129,125,135, -45,0,28,16,236,23,64,2,61,86,52,0,202,17,27,80,66,87,5,0, -35,95,1,0,28,16,236,23,64,2,61,86,52,0,194,81,106,95,1,0, -61,142,52,0,61,86,52,0,194,81,209,17,1,130,98,135,8,0,74,223, -4,0,125,231,245,0,11,80,66,6,255,16,128,7,33,0,128,255,16,0, -128,255,78,1,191,255,240,253,64,6,63,0,128,7,97,0,61,6,156,6, -136,0,61,23,9,0,61,127,5,0,2,112,175,113,61,103,49,0,137,114, -172,113,125,119,45,0,32,94,0,1,12,80,191,82,155,82,12,128,202,129, -165,130,16,6,0,255,254,5,12,112,191,114,155,114,12,88,206,89,165,90, -125,95,37,0,11,96,61,111,49,0,196,90,171,105,125,111,49,0,205,98, -172,17,125,23,21,0,32,94,0,1,13,112,191,114,153,114,13,96,206,97, -167,98,12,6,0,255,254,5,13,80,191,82,153,82,13,88,202,89,167,90, -125,95,41,0,61,103,45,0,208,90,171,17,125,23,25,0,32,86,0,16, -12,104,191,106,155,106,12,88,205,89,165,90,11,6,0,240,254,5,12,136, -191,138,155,138,12,80,209,81,165,82,125,87,29,0,10,120,61,95,45,0, -196,82,170,89,125,95,45,0,205,122,175,17,125,23,13,0,32,86,0,16, -11,136,191,138,153,138,11,120,209,121,167,122,15,6,0,240,254,5,11,104, -191,106,153,106,11,80,205,81,167,82,125,87,33,0,208,82,170,17,125,23, -5,0,125,23,17,0,38,6,140,128,132,0,191,255,160,251,61,143,41,0, -61,55,37,0,199,138,196,50,209,49,201,50,191,255,12,252,38,6,124,128, -132,0,191,255,130,251,61,87,33,0,61,55,29,0,199,82,196,50,202,49, -201,50,191,255,238,251,221,7,248,0,64,6,127,0,130,7,97,0,61,6, -156,6,136,0,61,63,13,0,61,71,29,0,38,6,156,7,136,0,99,7, -1,0,32,78,16,0,128,255,98,1,61,63,17,0,61,71,29,0,38,6, -156,71,137,0,99,7,1,0,32,78,128,0,128,255,72,1,38,6,156,135, -138,0,61,63,21,0,61,71,37,0,1,114,99,119,1,0,32,78,16,0, -128,255,44,1,38,6,156,155,138,0,61,63,25,0,61,71,41,0,1,98, -99,103,1,0,32,78,128,0,128,255,16,1,66,6,127,0,134,7,225,16, -6,232,38,6,20,129,132,0,7,224,29,56,8,216,0,66,35,78,8,0, -128,255,250,1,10,48,29,56,35,71,9,0,28,72,31,138,99,143,5,0, -99,223,1,0,128,255,22,1,70,6,255,16,134,7,225,16,6,232,38,6, -192,128,132,0,7,224,29,56,8,216,0,66,35,78,8,0,128,255,194,1, -10,48,29,56,35,71,9,0,28,72,99,223,1,0,99,7,5,0,128,255, -224,0,70,6,255,16,136,7,225,16,6,232,38,6,192,128,132,0,7,224, -29,56,8,216,1,66,35,78,8,0,128,255,140,1,10,48,29,56,35,71, -9,0,28,72,35,142,12,0,99,143,1,0,99,223,5,0,128,255,166,0, -72,6,255,16,0,90,224,73,199,45,181,5,38,55,13,0,134,103,5,0, -172,57,188,253,7,80,128,81,7,16,204,17,38,103,1,0,201,18,204,17, -170,73,172,5,201,81,104,23,13,0,10,128,201,130,104,135,17,0,104,7, -5,0,104,7,1,0,104,23,9,0,38,55,13,0,8,70,20,0,65,90, -224,49,210,5,38,23,1,0,134,87,5,0,224,73,223,229,11,80,127,0, -35,103,1,0,6,80,0,90,133,29,10,16,98,63,1,0,66,79,4,0, -66,7,5,0,98,7,9,0,98,7,13,0,97,98,186,5,194,7,6,0, -194,15,6,0,10,86,20,0,9,136,201,138,209,57,65,90,232,89,134,237, -127,0,130,7,225,243,9,224,35,191,41,0,35,183,45,0,0,234,7,200, -25,216,6,192,56,215,5,0,97,66,186,21,56,55,1,0,22,64,3,56, -129,255,148,154,224,81,218,61,35,143,1,0,26,232,119,143,1,0,81,207, -5,0,124,143,1,0,181,53,124,7,1,0,0,202,56,55,1,0,22,64, -3,56,129,255,106,154,60,127,1,0,224,81,194,13,15,16,224,17,210,5, -2,48,1,58,128,255,194,0,124,7,1,0,0,234,181,29,35,23,1,0, -218,233,224,121,186,5,124,23,1,0,119,23,1,0,251,209,98,7,13,0, -98,207,9,0,251,215,60,83,66,87,5,0,224,201,178,5,121,23,13,0, -2,200,186,217,224,217,175,213,224,233,242,13,60,23,1,0,162,23,5,0, -224,17,154,13,29,64,38,6,160,128,132,0,32,62,188,4,191,255,106,240, -29,80,66,6,255,243,7,6,240,255,135,13,6,54,28,0,7,6,128,255, -183,5,6,54,28,0,97,66,202,5,38,103,5,0,181,5,38,103,1,0, -0,18,2,136,194,138,38,118,8,0,206,137,49,95,1,0,43,111,5,0, -7,86,255,255,237,87,192,2,10,110,1,0,43,87,1,0,42,87,9,0, -234,105,195,5,65,18,236,17,150,237,105,111,1,0,11,80,127,0,128,7, -225,16,7,224,188,0,6,232,61,223,13,0,29,23,6,0,125,7,13,0, -29,146,82,17,220,86,1,0,193,82,10,17,93,23,6,0,29,48,129,255, -76,154,224,81,146,13,29,64,38,6,176,128,132,0,32,62,79,5,191,255, -200,239,27,232,224,233,186,229,64,6,255,16,34,6,33,6,178,186,129,0, -97,0,33,6,240,5,130,0,97,0,128,7,97,0,6,232,38,6,220,129, -132,0,191,255,18,248,29,63,2,0,38,6,208,129,132,0,221,58,159,58, -191,255,0,248,29,135,2,0,37,54,64,128,208,62,1,0,191,255,240,247, -61,54,40,4,129,255,236,145,64,6,127,0,128,7,33,0,5,138,68,143, -12,139,32,134,244,1,100,135,17,139,68,7,20,139,128,255,130,30,128,255, -120,12,129,255,164,145,128,255,150,10,128,255,56,214,64,6,63,0,130,7, -97,0,31,82,6,232,125,87,9,0,125,87,13,0,125,7,17,0,93,7, -20,0,93,7,21,0,93,7,22,0,93,7,23,0,32,134,1,3,93,7, -4,0,125,135,0,0,221,199,3,0,234,5,32,126,1,3,125,127,2,0, -213,5,35,54,3,0,128,255,236,11,61,54,24,0,128,255,4,12,61,54, -48,4,0,58,128,255,248,215,61,54,100,4,129,255,234,63,66,6,127,0, -128,7,33,0,38,55,41,4,224,49,178,5,129,255,94,136,64,6,63,0, -128,7,225,0,7,224,60,71,1,0,60,79,5,0,8,112,143,114,9,16, -209,18,14,17,32,142,104,176,113,23,1,0,49,142,220,255,113,71,1,0, -113,79,5,0,1,114,32,142,76,176,60,111,5,0,60,103,1,0,252,135, -9,0,16,80,204,81,225,127,0,0,205,121,174,81,225,63,0,0,167,121, -113,87,1,0,113,127,5,0,72,138,113,135,0,0,6,232,61,95,13,0, -61,87,9,0,235,73,218,5,234,65,186,5,192,39,128,176,32,142,76,176, -49,103,1,0,49,111,5,0,12,86,1,0,125,87,9,0,225,135,0,0, -205,129,125,135,13,0,88,138,49,23,1,0,252,111,9,0,194,118,127,0, -2,120,135,122,96,127,133,176,13,102,255,255,204,113,135,114,207,113,32,142, -136,176,113,119,1,0,221,215,2,0,162,13,29,48,28,56,128,255,214,6, -224,81,194,5,0,82,128,7,172,1,221,199,2,0,202,5,220,223,11,0, -194,5,1,82,128,7,154,1,29,23,20,0,224,17,250,61,0,18,60,87, -1,0,61,111,13,0,60,95,5,0,61,103,9,0,237,89,170,21,236,81, -138,21,189,111,23,0,65,106,93,111,23,0,205,102,255,0,106,98,227,5, -3,90,93,95,20,0,93,7,23,0,1,18,224,17,154,29,32,142,104,176, -49,135,1,0,61,87,17,0,234,129,154,21,157,127,23,0,65,122,93,127, -22,0,207,118,255,0,99,114,131,13,1,106,93,111,20,0,93,7,22,0, -93,7,21,0,32,142,104,176,49,103,1,0,125,103,17,0,128,7,16,1, -97,18,170,53,32,142,104,176,61,87,17,0,49,23,1,0,234,17,234,5, -29,48,28,56,128,255,254,0,133,125,125,23,17,0,32,142,104,176,49,63, -1,0,61,54,24,0,128,255,126,10,224,81,130,13,29,48,28,56,128,255, -220,0,93,7,21,0,213,101,2,130,93,135,20,0,189,127,21,0,65,122, -93,127,21,0,207,118,255,0,106,114,147,93,93,7,20,0,93,7,22,0, -197,85,98,18,170,85,32,142,104,176,61,103,17,0,49,63,1,0,236,57, -234,29,157,95,23,0,65,90,93,95,22,0,203,86,255,0,99,82,147,13, -1,18,93,23,20,0,93,7,22,0,93,7,21,0,165,5,0,18,224,17, -226,53,61,54,24,0,128,255,76,10,29,48,28,56,128,255,104,0,213,45, -61,54,24,0,128,255,244,9,224,81,178,13,29,48,28,56,128,255,82,0, -93,7,21,0,1,122,93,127,20,0,213,29,189,119,21,0,65,114,93,119, -21,0,206,110,255,0,106,106,243,5,93,7,20,0,93,7,22,0,1,18, -165,5,0,18,224,17,210,5,61,54,24,0,128,255,246,9,32,142,104,176, -49,103,1,0,125,103,17,0,220,7,66,0,1,82,64,6,255,0,128,7, -225,0,6,232,7,224,61,54,24,0,128,255,84,15,224,81,178,5,1,82, -229,37,61,54,24,0,28,56,128,255,230,9,224,81,162,29,61,54,24,0, -32,150,108,176,50,63,1,0,0,66,128,255,186,10,29,48,28,56,32,150, -124,176,242,143,1,0,224,137,202,5,128,255,216,1,165,13,128,255,24,0, -220,39,66,0,213,5,29,48,28,56,128,255,196,1,0,82,64,6,255,0, -136,7,225,48,6,208,32,142,112,176,49,231,1,0,7,232,60,231,1,0, -0,18,76,138,241,135,1,0,98,130,186,13,32,142,116,176,49,23,1,0, -34,23,1,0,2,23,42,0,194,22,1,0,2,216,229,87,64,0,224,7, -96,1,10,248,220,199,42,0,178,5,128,7,92,1,224,217,178,5,128,7, -84,1,255,47,32,0,28,48,253,63,9,0,35,70,8,0,35,78,12,0, -128,255,0,27,35,23,9,0,192,7,128,176,224,17,182,21,35,111,13,0, -224,105,255,13,221,63,65,0,125,231,21,0,253,103,9,0,125,103,24,0, -125,23,26,0,125,7,36,0,128,7,34,1,221,55,65,0,224,17,198,13, -253,95,9,0,35,135,13,0,125,231,21,0,176,89,125,95,24,0,125,23, -26,0,224,17,246,5,32,142,124,176,241,127,1,0,98,122,154,45,32,142, -124,176,241,119,1,0,98,114,138,21,32,142,116,176,49,231,1,0,253,63, -9,0,60,231,1,0,35,70,8,0,28,48,35,78,12,0,128,255,120,26, -125,231,45,0,253,103,9,0,35,87,13,0,12,88,170,89,125,95,48,0, -125,7,50,0,203,0,171,97,253,111,25,0,173,97,99,103,13,0,35,95, -13,0,224,89,202,5,125,7,36,0,165,77,61,231,57,0,129,255,202,15, -10,16,98,231,9,0,32,86,16,0,98,87,2,0,48,6,132,67,1,0, -98,135,5,0,1,122,98,127,0,0,96,23,157,176,98,239,29,0,35,119, -13,0,61,111,5,0,253,71,25,0,61,103,1,0,221,39,66,0,204,65, -225,79,0,0,32,142,108,176,49,63,1,0,205,73,99,119,1,0,76,138, -49,111,1,0,99,111,5,0,58,54,24,0,128,255,156,15,35,103,13,0, -125,87,33,0,202,7,42,0,125,103,36,0,125,7,38,0,181,13,255,47, -32,0,38,6,240,129,132,0,32,62,49,3,1,66,191,255,44,234,72,6, -255,48,134,7,225,16,6,224,7,232,61,223,57,0,129,255,44,15,106,223, -9,0,32,134,16,0,106,135,2,0,47,6,132,67,1,0,106,127,5,0, -1,114,106,119,0,0,96,87,157,176,106,239,29,0,99,7,9,0,221,39, -66,0,32,150,128,176,210,207,0,0,194,13,35,54,8,0,128,255,186,18, -35,63,9,0,60,54,24,0,128,255,202,6,213,21,32,142,108,176,49,111, -1,0,128,103,127,176,99,111,9,0,224,97,186,13,45,54,12,0,32,62, -60,176,128,255,176,6,32,142,120,176,113,87,1,0,35,87,9,0,224,81, -154,13,38,6,0,130,132,0,32,62,108,3,0,66,191,255,140,233,32,142, -68,176,49,79,5,0,49,71,1,0,253,135,9,0,99,135,1,0,49,142, -52,0,49,127,1,0,35,63,9,0,99,127,5,0,60,54,24,0,128,255, -166,14,125,87,33,0,202,7,42,0,0,82,70,6,255,16,128,7,97,0, -6,232,221,199,2,0,138,21,61,54,24,0,128,255,254,6,224,81,162,13, -61,54,24,0,32,150,108,176,50,63,1,0,1,66,128,255,210,7,64,6, -127,0,128,7,225,16,7,232,61,71,1,0,61,79,5,0,8,112,143,114, -9,16,209,18,14,17,32,142,104,176,113,23,1,0,6,224,49,142,220,255, -113,79,5,0,113,71,1,0,1,114,61,111,5,0,253,63,9,0,61,103, -1,0,7,80,204,81,225,127,0,0,205,121,174,81,225,55,0,0,166,121, -32,142,76,176,113,87,1,0,113,127,5,0,72,138,113,63,0,0,0,130, -60,95,13,0,60,87,9,0,235,73,234,5,234,65,202,5,192,39,128,176, -1,130,32,142,76,176,49,103,1,0,49,111,5,0,12,86,1,0,124,87, -9,0,225,79,0,0,9,16,205,17,124,23,13,0,88,138,49,23,1,0, -253,111,9,0,194,118,127,0,2,120,135,122,96,127,133,176,13,102,255,255, -204,113,135,114,207,113,32,142,136,176,113,119,1,0,16,216,28,48,29,56, -191,255,12,255,28,48,29,56,220,215,2,0,154,13,128,255,208,0,221,39, -66,0,221,31,11,0,0,82,245,93,128,255,20,1,224,81,178,5,0,82, -149,93,221,7,66,0,29,56,221,223,11,0,130,13,28,48,128,255,166,0, -221,39,66,0,0,82,197,77,60,55,41,4,27,64,129,255,104,131,224,81, -170,69,28,48,29,56,128,255,136,0,60,54,24,0,29,56,128,255,56,12, -224,81,210,53,220,239,3,0,242,21,60,54,48,4,128,255,210,210,60,119, -117,4,29,48,238,81,131,13,128,255,198,35,61,55,61,0,1,58,129,255, -94,80,60,54,48,4,29,56,128,255,2,209,197,21,60,111,117,4,60,23, -108,4,29,48,237,17,131,13,128,255,158,35,61,55,61,0,1,58,129,255, -54,80,60,54,100,4,29,56,129,255,184,56,61,23,57,0,44,6,46,57, -1,0,98,103,5,0,181,5,0,82,197,5,221,39,66,0,1,82,64,6, -255,16,128,7,225,0,32,142,68,176,7,232,49,63,5,0,49,55,1,0, -253,71,9,0,128,255,60,23,10,224,224,225,250,21,29,48,128,255,70,35, -61,55,61,0,1,58,129,255,222,79,197,13,32,142,68,176,49,63,5,0, -49,55,1,0,253,71,9,0,128,255,16,23,10,224,224,225,194,245,125,231, -33,0,64,6,255,0,128,7,225,0,6,232,61,54,24,0,7,224,128,255, -100,10,224,81,138,13,61,55,41,4,28,56,129,255,206,130,224,81,242,5, -32,142,144,176,209,39,0,0,1,82,165,5,0,82,64,6,255,0,128,7, -97,0,6,232,167,0,221,215,2,0,146,45,97,58,129,37,178,29,99,58, -177,5,242,5,165,37,61,55,41,4,129,255,214,135,213,29,61,55,41,4, -129,255,204,135,36,119,17,139,61,111,113,4,36,103,33,175,205,113,238,97, -131,21,29,48,128,255,32,0,197,13,29,48,128,255,24,0,133,13,61,55, -41,4,129,255,162,135,29,48,128,255,8,0,64,6,127,0,132,7,225,243, -6,224,60,54,24,0,128,255,6,2,10,208,224,209,162,253,1,130,99,135, -1,0,31,50,128,255,214,46,36,151,33,175,0,186,99,151,5,0,0,218, -220,239,3,0,234,199,0,0,224,193,178,13,224,217,178,5,27,232,197,21, -60,54,48,4,128,255,184,208,10,232,229,13,60,119,108,4,224,113,146,13, -60,239,101,4,60,54,100,4,29,56,129,255,176,55,165,5,0,234,224,233, -186,5,128,7,74,1,221,215,66,0,130,29,61,255,33,0,63,255,40,0, -128,249,229,87,64,0,224,7,96,1,36,103,53,139,10,200,223,97,100,103, -53,139,249,47,32,0,60,54,24,0,29,56,128,255,154,9,165,205,1,186, -224,193,226,69,0,202,60,54,48,4,128,255,78,208,10,216,224,217,194,61, -219,215,66,0,146,29,61,255,33,0,63,255,40,0,1,202,128,249,229,87, -64,0,224,7,96,1,36,135,53,139,10,176,223,129,100,135,53,139,246,47, -32,0,60,54,24,0,27,56,128,255,78,9,149,37,61,103,1,0,61,111, -5,0,253,87,9,0,204,81,225,135,0,0,205,129,59,111,5,0,59,103, -1,0,240,105,154,21,234,97,250,13,60,54,24,0,29,56,27,64,128,255, -180,12,253,127,9,0,15,6,0,240,233,207,0,0,169,5,0,218,224,201, -202,189,26,48,29,56,128,255,56,1,129,255,108,10,10,16,98,7,9,0, -32,102,232,3,98,103,21,0,1,90,98,95,0,0,32,86,16,0,98,87, -2,0,48,6,252,66,1,0,98,135,5,0,98,239,29,0,98,215,25,0, -61,183,33,0,54,255,40,0,125,23,57,0,128,249,229,87,64,0,224,7, -96,1,36,119,53,139,10,200,223,113,100,119,53,139,249,47,32,0,253,87, -37,0,10,16,54,103,26,0,226,0,226,97,186,253,29,48,61,63,57,0, -0,66,0,74,128,255,50,27,191,7,132,254,26,48,224,185,130,13,35,151, -5,0,124,151,113,4,128,255,62,1,181,5,128,255,130,0,35,135,1,0, -224,129,210,5,99,7,1,0,128,255,2,45,68,6,255,243,0,18,226,134, -24,0,42,6,188,175,138,0,202,129,10,118,24,0,2,104,248,111,64,2, -206,105,112,111,5,0,65,18,2,6,209,255,246,237,106,7,109,4,100,87, -25,139,127,0,128,7,225,16,6,216,229,87,64,0,224,7,96,1,36,239, -25,139,10,224,224,233,210,13,61,54,8,0,129,255,114,53,125,223,1,0, -61,143,5,0,125,7,22,0,100,143,25,139,252,47,32,0,29,80,64,6, -255,16,128,7,193,0,6,224,229,87,64,0,224,7,96,1,36,143,25,139, -10,232,124,143,5,0,100,231,25,139,253,47,32,0,64,6,223,0,128,7, -225,0,6,232,7,248,229,87,64,0,224,7,96,1,10,224,61,54,8,0, -31,56,129,255,38,53,61,143,20,0,65,138,125,143,20,0,252,47,32,0, -64,6,255,0,128,7,97,0,6,248,229,87,64,0,224,7,96,1,63,143, -20,0,95,138,127,143,20,0,10,232,241,0,224,137,138,13,63,127,22,0, -224,121,194,5,31,48,128,255,12,0,253,47,32,0,64,6,127,0,130,7, -33,0,99,55,1,0,3,56,32,54,104,180,0,66,128,255,188,0,224,81, -162,13,38,6,16,130,132,0,32,62,166,6,0,66,191,255,156,227,224,81, -66,6,63,0,128,7,97,0,6,248,229,87,64,0,224,7,96,1,10,232, -1,138,63,135,20,0,127,143,22,0,224,129,202,5,31,48,191,255,178,255, -253,47,32,0,64,6,127,0,128,7,225,0,6,232,61,143,20,0,224,137, -226,13,38,6,32,130,132,0,32,62,232,6,0,66,191,255,76,227,213,5, -61,55,1,0,128,255,230,6,61,135,16,0,224,129,146,13,61,231,9,0, -61,54,8,0,28,56,129,255,168,52,165,5,0,226,28,56,224,57,218,237, -29,48,191,255,212,254,64,6,255,0,128,7,134,135,166,135,128,7,33,6, -84,13,128,0,97,0,33,6,102,15,128,0,97,0,33,6,200,18,128,0, -97,0,33,6,18,254,129,0,97,0,102,7,1,0,102,7,5,0,8,138, -102,143,10,0,102,7,8,0,127,0,128,7,33,0,50,6,200,6,136,0, -50,143,1,0,100,7,49,139,100,143,57,139,100,7,53,139,128,255,62,11, -128,255,66,13,128,255,172,17,64,6,63,0,128,7,225,16,6,224,60,143, -8,0,7,216,224,137,146,29,60,239,1,0,61,135,1,0,240,217,186,5, -1,82,165,21,61,239,17,0,224,233,154,13,38,6,80,130,132,0,32,62, -209,0,0,66,191,255,122,226,60,127,5,0,239,233,186,237,0,82,64,6, -255,16,130,7,97,0,6,232,99,7,1,0,149,13,29,48,3,56,128,255, -62,17,35,55,1,0,128,255,232,11,61,143,8,0,224,137,218,245,66,6, -127,0,128,7,97,0,192,15,128,176,32,142,108,176,113,7,1,0,49,142, -16,0,113,7,0,0,32,142,120,176,113,7,1,0,88,138,113,7,1,0, -32,142,116,176,113,7,1,0,38,135,8,0,64,7,126,176,224,129,226,85, -199,199,66,0,186,85,38,239,1,0,32,142,104,176,49,119,1,0,61,127, -1,0,239,113,186,69,253,111,25,0,224,105,154,13,38,6,96,130,132,0, -32,62,47,1,0,66,191,255,216,225,192,143,128,176,32,142,108,176,113,239, -1,0,61,23,13,0,49,142,224,255,34,23,1,0,49,87,1,0,34,111, -13,0,49,95,5,0,34,103,9,0,237,89,241,29,187,5,236,81,193,29, -32,142,68,176,49,87,1,0,61,111,9,0,49,95,5,0,61,103,5,0, -237,89,139,21,177,5,236,81,219,13,61,54,12,0,32,62,60,176,128,255, -162,16,224,81,178,5,1,82,197,13,0,82,165,13,0,82,133,13,38,103, -1,0,61,239,17,0,236,233,154,181,0,82,64,6,127,0,132,7,225,243, -6,184,7,176,32,142,112,176,136,0,8,128,49,71,1,0,224,129,242,5, -32,78,124,176,128,255,38,4,128,7,30,4,32,142,68,176,40,23,1,0, -49,87,1,0,34,111,13,0,49,95,5,0,34,103,9,0,237,89,171,53, -177,5,236,81,249,45,32,142,116,176,49,23,1,0,224,17,170,5,8,16, -32,142,76,176,49,55,1,0,34,23,1,0,49,63,5,0,34,111,13,0, -34,87,24,0,34,103,9,0,10,120,191,122,204,81,225,135,0,0,208,121, -205,121,1,114,174,81,225,135,0,0,176,121,239,57,193,13,187,5,234,49, -147,13,23,48,22,56,32,78,124,176,128,255,168,3,128,7,160,3,32,142, -124,176,241,127,1,0,97,122,186,5,128,7,144,3,58,6,64,130,132,0, -0,218,0,194,128,7,80,1,32,142,112,176,49,239,1,0,224,233,154,13, -38,6,48,130,132,0,32,62,147,3,0,66,191,255,126,224,99,7,1,0, -61,23,9,0,0,74,253,17,130,117,2,200,61,23,1,0,99,207,1,0, -194,199,42,0,138,109,57,135,1,0,208,199,42,0,186,101,34,111,13,0, -34,87,24,0,34,103,9,0,10,120,191,122,204,81,225,71,0,0,200,121, -205,121,48,111,13,0,48,103,9,0,237,121,138,85,236,81,234,77,224,233, -250,5,26,48,32,62,201,4,0,66,191,255,28,224,61,239,1,0,57,231, -1,0,61,151,37,0,224,233,99,151,5,0,250,5,26,48,32,62,207,4, -0,66,191,255,252,223,35,151,5,0,224,145,250,5,26,48,32,62,208,4, -0,66,191,255,232,223,61,111,24,0,60,119,24,0,60,135,29,0,206,105, -61,87,33,0,125,111,24,0,106,135,13,0,60,103,26,0,61,119,33,0, -60,127,29,0,61,95,26,0,111,119,9,0,204,89,60,111,33,0,125,95, -26,0,125,111,33,0,29,48,128,255,204,16,220,143,42,0,124,7,37,0, -35,55,5,0,25,56,128,255,70,6,1,74,137,0,224,73,226,21,32,142, -124,176,241,87,1,0,95,82,113,87,0,0,88,138,49,135,1,0,35,127, -1,0,240,121,170,21,1,194,1,218,32,142,116,176,113,7,1,0,181,13, -35,111,1,0,32,142,116,176,49,119,1,0,1,194,238,105,170,5,1,218, -224,193,186,5,191,7,176,254,32,142,116,176,49,239,1,0,128,7,30,1, -61,239,5,0,224,233,154,13,38,6,48,130,132,0,32,62,147,3,0,66, -191,255,34,223,99,7,1,0,61,23,9,0,0,74,253,17,178,109,2,200, -61,23,1,0,99,207,1,0,194,199,42,0,186,101,57,135,1,0,208,199, -42,0,234,93,34,111,13,0,34,87,24,0,34,103,9,0,10,120,191,122, -204,81,225,71,0,0,200,121,205,121,48,111,13,0,48,103,9,0,237,121, -186,77,236,81,154,77,224,233,250,5,26,48,32,62,201,4,0,66,191,255, -192,222,61,231,1,0,57,223,1,0,60,199,37,0,224,225,250,5,26,48, -32,62,207,4,0,66,191,255,164,222,224,193,250,5,26,48,32,62,208,4, -0,66,191,255,148,222,60,87,24,0,59,95,24,0,59,111,29,0,203,81, -60,119,33,0,124,87,24,0,110,111,13,0,59,135,26,0,60,95,33,0, -59,103,29,0,60,127,26,0,108,95,9,0,208,121,59,87,33,0,124,127, -26,0,124,87,33,0,28,48,128,255,120,15,219,143,42,0,123,7,37,0, -24,48,25,56,128,255,244,4,1,74,137,0,224,73,210,13,32,142,124,176, -241,119,1,0,95,114,113,119,0,0,1,218,88,138,113,239,1,0,165,5, -1,218,224,217,186,5,191,7,226,254,32,142,124,176,241,231,1,0,84,138, -49,239,1,0,165,85,61,23,1,0,61,223,9,0,34,87,9,0,32,142, -68,176,49,111,5,0,34,95,13,0,49,103,1,0,235,105,139,69,177,5, -234,97,217,61,32,142,76,176,49,71,1,0,10,96,34,87,24,0,49,79, -5,0,10,120,191,122,204,81,225,135,0,0,208,121,203,121,1,114,174,81, -225,135,0,0,176,121,239,73,225,37,187,5,234,65,179,37,23,48,22,56, -29,64,128,255,16,4,32,142,124,176,241,103,1,0,95,98,113,103,0,0, -84,138,49,95,1,0,235,233,138,13,32,142,116,176,49,87,1,0,92,138, -113,87,1,0,32,142,116,176,49,239,1,0,224,233,210,5,32,142,116,176, -113,7,1,0,95,226,27,232,224,225,234,173,32,142,112,176,49,135,1,0, -224,129,250,13,32,142,116,176,49,127,1,0,224,121,154,13,38,6,112,130, -132,0,32,62,43,2,0,66,191,255,58,221,32,142,124,176,241,119,1,0, -224,113,170,13,38,6,112,130,132,0,32,62,48,2,0,66,191,255,30,221, -224,81,68,6,255,243,128,7,225,48,6,216,7,208,9,232,213,13,40,231, -9,0,27,48,26,56,128,255,108,3,253,143,1,0,95,138,125,143,0,0, -28,64,253,135,1,0,224,129,154,245,64,6,255,48,32,142,76,176,49,103, -1,0,49,111,5,0,143,98,13,80,209,82,10,97,143,106,49,142,28,0, -49,119,1,0,234,87,0,0,238,97,234,23,0,0,2,81,127,0,128,7, -225,48,6,208,32,231,133,176,7,216,219,199,66,0,186,37,28,136,32,134, -1,1,240,143,194,234,245,21,32,150,140,176,114,239,1,0,29,48,194,50, -58,102,12,0,204,49,27,56,128,255,118,9,224,81,178,5,1,82,229,13, -65,226,65,234,29,6,255,254,170,5,0,234,32,150,136,176,50,95,1,0, -235,225,211,229,0,82,64,6,255,48,128,7,225,240,6,192,7,208,218,215, -66,0,154,13,38,6,128,130,132,0,32,62,200,2,0,66,191,255,66,220, -58,239,33,0,1,58,253,135,43,0,208,134,244,255,125,135,42,0,29,48, -128,255,198,12,29,48,128,255,218,12,58,23,1,0,250,127,9,0,194,230, -127,0,15,118,255,255,206,225,135,226,2,232,135,234,221,225,29,104,32,102, -1,1,236,111,194,218,229,87,64,0,224,7,96,1,10,200,245,13,27,48, -194,50,56,126,12,0,207,49,26,56,128,255,26,8,65,234,65,218,27,6, -255,254,170,5,0,218,252,233,147,245,249,47,32,0,26,48,129,255,224,45, -64,6,255,240,128,7,225,48,7,232,61,231,33,0,6,208,60,231,40,0, -229,87,64,0,224,7,96,1,36,143,53,139,10,248,220,137,100,143,53,139, -255,47,32,0,36,127,49,139,36,135,57,139,36,87,53,139,175,129,16,104, -191,106,159,106,205,129,161,130,240,81,151,13,29,48,128,255,104,23,61,55, -61,0,1,58,129,255,0,68,29,48,0,58,128,255,66,6,133,13,29,48, -128,255,78,23,29,48,0,58,128,255,50,6,10,16,224,17,242,245,2,248, -229,87,64,0,224,7,96,1,32,150,140,176,50,55,1,0,10,224,194,50, -58,110,12,0,205,49,31,56,128,255,4,7,252,47,32,0,32,231,133,176, -213,45,28,88,32,86,1,1,234,95,194,98,32,150,140,176,114,103,1,0, -29,48,0,58,128,255,230,5,133,13,29,48,128,255,242,22,29,48,0,58, -128,255,214,5,10,16,224,17,242,245,2,248,229,87,64,0,224,7,96,1, -32,150,140,176,50,55,1,0,10,216,194,50,58,110,12,0,205,49,31,56, -128,255,168,6,251,47,32,0,65,226,32,150,136,176,50,103,1,0,236,225, -241,205,1,82,64,6,255,48,128,7,225,48,35,215,25,0,7,224,9,56, -6,216,35,23,21,0,8,48,2,64,128,255,122,10,10,232,224,233,146,13, -125,231,37,0,27,48,28,56,29,64,26,72,128,255,10,0,29,80,64,6, -255,48,128,7,225,112,9,200,8,48,38,79,13,0,38,231,24,0,38,71, -9,0,28,232,191,234,200,225,225,111,0,0,205,233,201,233,7,216,1,58, -167,225,225,87,0,0,170,233,128,255,84,9,10,208,224,201,186,29,59,135, -13,0,224,129,250,21,251,127,25,0,224,121,146,13,38,6,144,130,132,0, -32,62,1,4,0,66,191,255,48,218,123,231,5,0,123,239,9,0,59,54, -12,0,26,56,128,255,44,9,197,21,59,95,9,0,59,87,5,0,235,233, -129,13,187,5,234,225,211,5,123,231,5,0,123,239,9,0,59,54,12,0, -26,56,25,64,128,255,252,8,251,119,25,0,65,114,251,111,27,0,65,106, -123,111,26,0,123,119,24,0,64,6,255,112,128,7,225,0,6,224,60,239, -37,0,253,143,25,0,224,137,154,13,38,6,160,130,132,0,32,62,53,4, -0,66,191,255,188,217,61,54,12,0,28,56,128,255,208,8,10,56,253,135, -25,0,29,48,97,130,195,5,128,255,208,3,181,5,128,255,52,3,64,6, -255,0,128,7,225,16,6,224,7,232,8,216,253,143,25,0,224,137,154,13, -38,6,176,130,132,0,32,62,92,4,0,66,191,255,118,217,253,135,25,0, -97,130,227,5,29,48,27,56,128,255,148,3,133,13,28,48,29,56,128,255, -74,8,29,48,128,255,238,2,64,6,255,16,128,7,225,0,6,232,7,224, -224,225,178,5,224,233,154,13,38,6,192,130,132,0,32,62,136,4,0,66, -191,255,50,217,61,54,12,0,28,56,128,255,62,8,253,135,25,0,97,130, -234,5,125,7,5,0,125,7,9,0,133,37,61,87,13,0,0,18,224,81, -178,5,42,23,5,0,34,23,1,0,1,114,34,103,9,0,34,87,24,0, -34,111,13,0,10,120,191,122,204,81,225,135,0,0,208,121,205,121,174,81, -125,87,5,0,225,135,0,0,176,121,125,127,9,0,253,127,25,0,95,122, -125,127,24,0,64,6,255,0,128,7,128,7,225,243,6,176,8,232,253,135, -9,0,7,200,249,119,9,0,208,113,121,119,8,0,57,255,33,0,61,231, -33,0,229,87,64,0,224,7,96,1,10,216,60,87,24,0,63,103,17,0, -10,120,63,111,21,0,191,122,10,112,204,113,225,79,0,0,201,121,205,121, -63,103,24,0,127,127,21,0,202,97,127,119,17,0,127,103,24,0,60,111, -29,0,60,95,26,0,63,119,33,0,63,87,26,0,110,111,13,0,203,81, -127,87,26,0,60,103,29,0,60,135,40,0,63,95,33,0,63,127,40,0, -108,95,9,0,208,121,60,87,33,0,127,127,40,0,127,87,33,0,251,47, -32,0,253,135,37,0,249,119,37,0,208,113,61,231,33,0,121,119,36,0, -28,48,252,111,43,0,205,110,244,255,124,111,42,0,0,58,128,255,166,8, -28,48,128,255,186,8,61,63,5,0,61,55,1,0,1,66,6,192,168,193, -225,87,0,0,135,194,198,222,127,0,253,127,9,0,15,118,255,255,206,217, -135,218,6,224,135,226,220,217,28,104,32,102,1,1,236,111,194,210,229,87, -64,0,224,7,96,1,10,184,133,29,26,48,194,50,29,56,248,225,131,13, -54,126,12,0,207,49,25,64,128,255,16,4,229,5,54,94,12,0,203,49, -128,255,216,3,65,226,65,210,26,6,255,254,170,5,0,210,251,225,131,237, -247,47,32,0,29,48,129,255,158,41,64,6,255,243,32,134,128,0,100,135, -37,139,100,7,41,139,43,6,60,20,139,0,11,16,100,23,45,139,0,82, -181,29,31,122,98,127,1,0,98,7,5,0,98,7,9,0,98,7,13,0, -98,7,24,0,98,7,26,0,66,87,28,0,10,6,129,255,130,13,2,22, -32,0,107,7,21,0,107,23,17,0,2,88,65,82,10,6,128,255,198,229, -107,7,17,0,107,7,21,0,127,0,128,7,97,0,6,232,229,87,64,0, -224,7,96,1,10,248,149,13,229,87,64,0,224,135,96,1,229,87,64,0, -224,7,96,1,36,127,41,139,36,135,37,139,240,121,178,245,36,23,45,139, -125,23,1,0,15,110,1,0,34,119,17,0,100,111,41,139,100,119,45,139, -255,47,32,0,36,63,41,139,97,58,231,13,38,6,224,130,132,0,191,255, -62,223,38,6,208,130,132,0,32,62,174,5,1,66,191,255,184,214,61,95, -1,0,235,95,25,0,224,89,146,13,38,6,208,130,132,0,32,62,178,5, -0,66,191,255,156,214,32,142,104,176,49,87,1,0,61,23,1,0,98,87, -1,0,34,86,12,0,106,7,1,0,98,7,24,0,98,7,9,0,98,7, -5,0,98,7,26,0,36,87,41,139,64,6,127,0,128,7,225,0,6,232, -60,6,40,131,132,0,253,143,27,0,224,137,242,5,28,48,32,62,216,5, -0,66,191,255,76,214,253,135,25,0,97,130,217,13,28,48,32,62,219,5, -0,66,191,255,56,214,229,5,61,63,13,0,29,48,128,255,90,0,253,23, -25,0,224,17,138,253,224,17,242,5,28,48,32,62,232,5,0,66,191,255, -20,214,229,87,64,0,224,7,96,1,36,111,45,139,10,248,125,111,17,0, -36,103,41,139,100,239,45,139,95,98,100,103,41,139,255,47,32,0,36,95, -41,139,224,89,142,13,28,48,32,62,247,5,0,66,191,255,220,213,224,81, -64,6,255,0,128,7,225,48,6,216,7,208,251,143,25,0,224,137,154,13, -38,6,56,131,132,0,32,62,17,6,0,66,191,255,182,213,58,239,1,0, -61,255,26,0,128,249,229,87,64,0,224,7,96,1,36,127,49,139,10,224, -223,121,100,127,49,139,252,47,32,0,29,48,1,58,128,255,40,6,221,143, -42,0,27,48,26,56,191,255,50,252,64,6,255,48,49,6,60,36,139,0, -100,143,65,139,100,7,61,139,0,18,226,126,12,0,44,6,60,36,139,0, -204,121,12,118,12,0,2,104,236,111,64,2,206,105,111,111,9,0,111,7, -5,0,111,7,1,0,65,18,2,6,1,248,182,237,226,86,12,0,204,81, -106,7,9,0,106,7,5,0,106,7,1,0,127,0,128,7,193,16,6,216, -7,224,229,87,64,0,224,7,96,1,10,232,133,21,224,225,162,13,229,87, -64,0,224,135,96,1,229,87,64,0,224,7,96,1,213,5,253,47,32,0, -0,82,213,21,36,143,65,139,224,137,226,237,36,231,65,139,36,127,61,139, -60,135,9,0,65,122,100,135,65,139,100,127,61,139,253,47,32,0,124,223, -1,0,28,80,64,6,223,16,128,7,97,0,6,232,224,233,154,13,38,6, -120,131,132,0,32,62,103,7,0,66,191,255,180,212,229,87,64,0,224,7, -96,1,36,23,65,139,10,248,125,23,9,0,36,143,61,139,100,239,65,139, -95,138,100,143,61,139,255,47,32,0,64,6,127,0,128,7,225,16,6,216, -7,232,8,224,224,233,154,13,38,6,152,131,132,0,32,62,148,7,0,66, -191,255,110,212,59,23,1,0,224,17,178,21,224,225,194,5,60,23,9,0, -213,5,34,231,5,0,123,239,1,0,125,231,5,0,124,239,9,0,125,23, -9,0,98,239,5,0,245,5,125,239,9,0,125,239,5,0,123,239,1,0, -64,6,255,16,128,7,225,0,7,224,60,63,1,0,6,232,128,255,172,0, -29,48,28,56,10,64,191,255,144,255,64,6,255,0,128,7,97,0,38,143, -1,0,1,234,241,57,186,13,39,23,9,0,226,57,218,5,102,7,1,0, -0,234,181,5,102,23,1,0,39,23,5,0,39,87,9,0,106,23,5,0, -39,87,5,0,39,23,9,0,106,23,9,0,7,48,191,255,10,255,29,80, -64,6,127,0,128,7,225,0,6,224,128,255,148,0,10,232,224,233,154,13, -38,6,184,131,132,0,32,62,35,8,0,66,191,255,174,211,28,48,29,56, -191,255,150,255,64,6,255,0,128,7,225,0,8,224,128,255,104,0,10,232, -224,233,154,13,38,6,200,131,132,0,32,62,69,8,0,66,191,255,130,211, -125,231,1,0,64,6,255,0,38,87,1,0,224,81,10,16,210,29,34,135, -1,0,39,127,5,0,48,103,1,0,48,111,5,0,39,119,1,0,239,105, -177,13,187,5,238,97,131,13,234,17,186,5,0,82,181,13,34,87,5,0, -133,13,34,23,9,0,234,17,250,229,34,23,5,0,2,80,127,0,38,87, -1,0,224,81,10,16,162,13,34,143,1,0,231,137,226,5,34,23,9,0, -234,17,154,253,0,18,2,80,127,0,130,7,225,241,6,224,7,232,0,218, -229,87,64,0,224,7,96,1,10,184,60,135,1,0,99,7,1,0,224,129, -186,5,128,7,198,1,28,48,29,56,191,255,114,255,10,248,221,199,64,0, -224,249,234,5,60,23,1,0,195,15,0,0,149,13,60,127,1,0,63,23, -9,0,239,17,186,5,195,23,0,0,61,87,1,0,61,95,5,0,253,71, -9,0,202,65,225,79,0,0,203,73,195,207,0,0,178,13,133,77,60,119, -1,0,238,249,202,5,195,15,0,0,133,13,63,255,5,0,63,135,1,0, -208,215,66,0,186,245,195,207,0,0,250,53,61,87,1,0,48,199,1,0, -48,207,5,0,240,103,9,0,216,97,225,111,0,0,61,95,5,0,217,105, -237,89,219,37,177,5,236,81,169,37,29,119,64,0,206,118,1,0,194,21, -249,89,171,21,177,5,248,81,251,13,233,105,219,13,177,5,232,97,171,13, -208,23,66,0,60,135,1,0,240,249,250,13,195,15,0,0,197,13,224,113, -218,5,65,218,219,0,195,15,0,0,195,7,0,0,181,5,195,15,0,0, -195,215,0,0,218,85,34,127,1,0,207,215,66,0,178,21,213,5,60,119, -1,0,238,17,130,13,34,23,9,0,34,111,1,0,205,215,66,0,234,245, -60,103,1,0,236,17,186,5,195,23,0,0,195,215,0,0,186,61,34,119, -1,0,46,95,5,0,46,87,1,0,235,73,145,53,187,5,234,65,227,45, -29,215,64,0,218,214,1,0,146,37,61,111,5,0,61,103,1,0,235,105, -187,29,177,5,234,97,139,29,10,96,238,87,9,0,204,81,225,127,0,0, -203,121,239,73,241,13,187,5,234,65,193,13,206,23,66,0,34,111,9,0, -60,119,1,0,238,105,234,13,195,23,0,0,181,13,224,209,202,5,224,217, -65,218,219,0,195,7,0,0,181,5,195,23,0,0,221,199,64,0,242,13, -195,199,0,0,170,29,195,207,0,0,186,5,191,7,170,254,195,215,0,0, -186,5,191,7,160,254,245,13,34,23,9,0,195,207,0,0,194,5,195,215, -0,0,250,5,60,95,1,0,235,17,178,5,191,7,130,254,247,47,32,0, -3,87,0,0,202,86,1,0,66,6,255,241,33,6,200,15,128,0,97,0, -33,6,90,16,128,0,97,0,33,6,26,17,128,0,97,0,33,6,106,17, -128,0,97,0,33,6,10,18,128,0,97,0,33,6,100,18,128,0,97,0, -33,6,130,18,128,0,97,0,33,6,14,19,128,0,97,0,33,6,46,19, -128,0,97,0,32,142,0,7,42,6,60,132,139,0,106,7,17,0,43,6, -84,132,139,0,11,16,106,23,13,0,106,23,9,0,106,23,5,0,106,143, -21,0,0,98,106,23,1,0,149,13,107,23,1,0,65,98,11,16,11,94, -44,0,98,95,5,0,42,111,21,0,237,97,214,245,42,103,1,0,98,103, -5,0,42,95,1,0,107,23,1,0,127,0,128,7,225,0,9,224,38,119, -9,0,32,142,68,176,49,103,1,0,8,232,174,97,125,103,1,0,38,119, -26,0,204,57,174,57,124,63,1,0,61,103,1,0,224,97,142,21,224,57, -151,13,38,6,248,131,132,0,32,62,133,0,0,66,191,255,60,208,61,135, -1,0,128,129,124,135,1,0,64,6,255,0,132,7,225,240,6,192,7,200, -8,208,60,6,60,132,139,0,229,87,64,0,224,7,96,1,60,127,17,0, -60,135,21,0,10,216,240,121,218,5,251,47,32,0,0,18,245,37,60,239, -9,0,61,119,42,0,206,110,9,0,146,13,38,6,232,131,132,0,32,62, -76,1,0,66,191,255,226,207,61,87,37,0,221,15,42,0,224,81,194,5, -29,48,191,255,246,245,61,135,5,0,60,127,17,0,124,135,9,0,124,239, -5,0,65,122,124,127,17,0,251,47,32,0,29,16,2,232,224,233,146,37, -26,48,3,56,35,70,4,0,191,255,104,221,10,16,224,17,199,21,125,207, -13,0,125,199,9,0,125,215,24,0,35,111,1,0,125,7,26,0,35,103, -5,0,125,111,29,0,125,103,33,0,125,23,40,0,213,5,29,48,128,255, -38,0,0,234,29,80,68,6,255,240,128,7,33,0,102,7,37,0,224,57, -226,5,38,55,29,0,1,58,191,255,78,223,64,6,63,0,128,7,225,0, -6,232,229,87,64,0,224,7,96,1,10,224,29,48,221,199,42,0,194,21, -128,255,88,0,253,143,43,0,209,142,246,255,125,143,42,0,221,215,42,0, -186,13,61,135,37,0,240,127,27,0,95,122,112,127,26,0,181,5,128,255, -182,0,34,6,60,132,139,0,34,239,17,0,95,234,98,239,17,0,252,47, -32,0,224,233,158,13,38,6,8,132,132,0,32,62,22,1,0,66,191,255, -228,206,29,80,64,6,255,0,34,6,60,132,139,0,34,143,13,0,241,49, -178,61,34,135,1,0,240,49,234,5,38,127,5,0,98,127,1,0,133,53, -34,119,9,0,238,49,234,5,38,111,5,0,98,111,9,0,149,13,34,103, -5,0,236,49,218,5,38,95,1,0,98,95,5,0,38,143,1,0,38,87, -5,0,106,143,1,0,38,135,1,0,38,127,5,0,112,127,5,0,34,87, -1,0,42,87,1,0,234,49,42,95,5,0,178,13,235,49,146,13,102,87, -1,0,106,55,5,0,102,95,5,0,107,55,1,0,98,55,13,0,127,0, -128,7,225,0,60,6,60,132,139,0,60,143,9,0,6,232,241,233,194,53, -221,223,42,0,146,13,38,6,24,132,132,0,32,62,8,2,0,66,191,255, -48,206,60,135,13,0,240,233,218,5,61,127,1,0,124,127,13,0,61,111, -1,0,61,119,5,0,110,111,1,0,61,103,1,0,61,95,5,0,108,95, -5,0,60,23,9,0,34,23,1,0,226,233,34,87,5,0,178,13,234,233, -146,13,125,23,1,0,98,239,5,0,125,87,5,0,106,239,1,0,124,239, -9,0,64,6,255,0,127,0,34,6,132,185,255,255,0,82,98,7,5,0, -98,7,17,0,98,7,9,0,98,7,13,0,98,7,1,0,65,82,2,22, -20,0,10,6,128,254,150,245,34,6,132,185,255,255,96,23,165,176,2,134, -236,29,96,135,177,176,96,7,181,176,96,7,185,176,127,0,150,7,225,48, -48,6,84,204,140,0,99,135,5,0,35,54,4,0,0,66,0,74,128,255, -92,230,224,81,226,5,10,6,250,239,210,5,128,7,216,2,0,120,181,5, -1,122,149,5,96,127,181,176,229,87,64,0,224,7,96,1,32,111,185,176, -99,87,1,0,13,118,1,0,96,119,185,176,224,105,202,13,32,103,13,177, -224,97,138,13,64,86,0,0,43,6,32,0,0,0,74,95,8,240,35,255, -1,0,255,47,32,0,133,13,128,255,14,9,43,6,84,204,140,0,99,95, -5,0,229,87,64,0,224,7,96,1,32,23,173,179,99,87,9,0,224,17, -234,5,10,248,255,47,32,0,0,18,181,13,34,87,73,0,2,232,96,87, -173,179,35,255,9,0,255,47,32,0,29,16,2,232,29,48,224,233,210,221, -35,63,5,0,32,70,156,176,128,255,62,184,32,135,217,176,32,127,213,176, -96,135,153,176,96,127,149,176,10,224,28,6,0,240,178,5,128,7,242,1, -96,7,144,176,125,7,21,0,253,87,9,0,125,7,29,0,125,7,33,0, -125,7,45,0,125,7,53,0,29,56,221,207,64,0,162,45,61,22,24,0, -98,7,1,0,61,55,61,0,61,22,36,0,98,87,1,0,38,55,13,0, -61,22,48,0,98,7,1,0,0,226,191,255,170,221,224,81,162,21,221,255, -65,0,226,5,96,7,157,176,99,7,13,0,149,61,61,55,61,0,29,56, -129,255,104,29,1,90,99,95,13,0,133,53,32,230,0,16,213,45,61,22, -24,0,98,7,1,0,61,55,61,0,61,22,36,0,98,87,1,0,38,55, -13,0,61,22,48,0,98,7,1,0,0,226,191,255,250,226,224,81,226,5, -99,7,13,0,96,7,157,176,245,13,192,231,144,176,194,5,32,230,0,16, -149,13,1,130,99,135,13,0,61,55,61,0,29,56,129,255,10,29,61,23, -61,0,98,7,32,0,28,6,0,240,186,85,29,48,128,255,200,7,61,55, -61,0,0,58,129,255,96,52,61,223,61,0,59,223,17,0,99,7,34,0, -99,7,25,0,99,7,29,0,128,255,206,240,106,7,9,0,45,6,36,64, -1,0,106,111,5,0,106,7,29,0,32,102,232,3,106,7,33,0,0,210, -106,103,21,0,99,87,17,0,99,7,38,0,59,23,105,0,35,62,16,0, -2,22,144,0,34,87,0,0,34,95,5,0,219,81,10,48,63,6,76,79, -0,0,107,0,35,55,17,0,10,56,128,255,138,239,224,209,250,5,35,23, -17,0,34,87,0,0,224,81,218,253,65,210,98,210,150,229,35,55,17,0, -128,255,38,239,224,135,145,176,208,134,239,255,96,135,144,176,28,6,0,240, -186,5,191,7,130,254,224,225,234,69,253,87,9,0,61,23,61,0,32,79, -149,176,34,103,29,0,32,63,157,176,202,97,98,103,29,0,32,71,153,176, -29,48,128,255,88,1,61,223,57,0,35,215,13,0,229,87,64,0,224,7, -96,1,59,255,0,0,218,249,123,255,0,0,10,208,250,47,32,0,224,249, -138,13,27,48,59,95,5,0,63,6,228,79,0,0,107,0,192,247,144,176, -130,29,61,55,61,0,2,58,129,255,88,51,165,21,224,225,138,21,61,223, -57,0,1,122,123,127,0,0,29,48,128,255,170,7,123,87,12,0,61,55, -57,0,31,58,128,255,200,238,224,225,210,5,29,48,28,56,128,255,172,5, -0,82,86,6,255,48,134,7,225,48,7,208,6,216,59,231,57,0,0,234, -28,48,128,255,240,235,224,81,146,77,48,6,112,216,140,0,99,135,9,0, -60,79,37,0,60,71,33,0,35,54,8,0,128,255,66,227,10,232,224,233, -146,13,29,64,38,6,160,132,132,0,32,62,153,1,191,255,76,202,35,23, -9,0,2,111,0,0,205,110,31,0,13,6,240,255,186,13,162,103,5,0, -34,94,8,0,203,97,226,87,7,0,99,87,5,0,213,29,130,87,1,0, -216,82,157,82,67,87,3,0,8,90,10,112,194,114,194,113,132,111,153,140, -97,106,170,5,12,90,11,104,0,90,224,81,242,5,162,95,1,0,170,89, -130,106,237,95,194,2,99,95,5,0,14,96,12,64,224,233,234,21,27,48, -35,79,5,0,26,56,128,255,40,0,10,232,224,233,146,13,29,64,38,6, -160,132,132,0,32,62,166,1,191,255,198,201,26,48,1,58,128,255,224,237, -29,80,70,6,255,48,148,7,225,243,6,232,7,208,8,216,9,192,57,6, -132,215,255,255,1,130,67,135,3,0,25,48,31,58,129,255,192,116,224,81, -186,253,61,127,65,0,99,127,5,0,0,226,195,215,4,0,242,5,29,48, -27,56,24,64,128,255,152,7,10,224,35,150,1,0,210,239,4,0,210,37, -32,119,181,176,224,113,242,29,96,7,181,176,32,142,24,177,49,111,1,0, -224,105,146,13,38,6,172,132,132,0,32,62,69,1,0,66,191,255,70,201, -32,54,16,177,129,255,198,110,224,81,146,13,38,6,184,132,132,0,32,62, -183,1,0,66,191,255,42,201,221,175,65,0,35,103,5,0,43,6,5,0, -16,0,75,97,235,97,234,101,224,225,202,101,0,18,221,199,67,0,234,199, -0,0,1,218,27,224,236,231,64,2,61,118,20,0,220,113,46,103,1,0, -224,97,226,77,224,17,202,77,61,86,20,0,220,81,234,191,5,0,27,120, -194,122,32,102,164,176,204,121,47,183,1,0,99,199,9,0,32,54,16,177, -31,58,129,255,134,109,224,81,170,253,35,151,9,0,32,22,4,2,224,145, -178,5,32,22,4,19,22,48,23,56,2,64,200,0,128,255,244,247,32,142, -24,177,49,135,1,0,10,184,224,129,146,13,38,6,76,132,132,0,32,62, -69,1,0,66,191,255,138,200,32,54,16,177,129,255,10,110,224,81,146,13, -38,6,100,132,132,0,32,62,183,1,0,66,191,255,110,200,23,16,224,17, -158,13,61,110,20,0,205,225,60,23,1,0,194,7,43,0,0,18,65,218, -99,218,246,165,2,224,221,151,64,0,224,225,130,29,28,232,163,95,3,0, -224,89,130,21,67,7,3,0,25,48,129,255,142,116,224,81,146,13,38,6, -112,132,132,0,32,62,6,1,0,66,191,255,32,200,29,80,128,7,40,3, -224,209,186,5,128,7,4,2,61,55,61,0,61,102,32,0,38,55,17,0, -195,207,4,0,162,93,61,95,5,0,61,87,1,0,44,23,4,0,195,215, -4,0,178,61,32,142,168,176,49,71,1,0,10,112,11,120,2,72,195,231, -6,0,154,13,99,119,21,0,99,127,25,0,9,130,99,135,37,0,229,13, -253,87,25,0,206,81,99,87,21,0,225,23,0,0,207,17,99,23,25,0, -10,122,99,127,37,0,99,7,28,0,99,79,30,0,99,7,34,0,38,23, -105,0,99,215,13,0,72,18,34,87,0,0,99,71,17,0,198,81,10,48, -35,62,12,0,34,119,5,0,63,6,64,83,0,0,110,0,128,7,108,1, -99,7,28,0,99,215,13,0,99,7,17,0,99,87,21,0,99,95,25,0, -99,23,30,0,99,7,37,0,99,7,34,0,35,62,12,0,128,255,140,24, -128,7,64,1,221,223,11,0,0,18,162,5,8,18,2,128,195,231,6,0, -178,85,43,6,132,185,255,255,236,111,5,0,236,127,7,0,44,87,1,0, -15,16,42,87,29,0,133,13,170,119,5,0,174,17,196,5,42,87,13,0, -2,120,224,17,143,253,133,37,15,112,42,23,1,0,201,114,194,113,170,23, -5,0,175,17,226,105,195,5,162,105,201,18,197,5,13,16,201,18,162,105, -107,7,1,0,107,7,5,0,107,119,13,0,107,23,17,0,107,119,9,0, -42,87,13,0,11,94,20,0,0,122,224,105,143,229,44,111,1,0,0,226, -205,7,42,0,44,23,4,0,61,95,5,0,61,87,1,0,44,6,132,185, -255,255,99,103,17,0,99,87,21,0,99,95,25,0,99,23,30,0,11,90, -99,95,37,0,229,21,32,142,168,176,49,111,1,0,61,95,5,0,61,87, -1,0,44,23,4,0,99,111,17,0,99,95,25,0,99,87,21,0,99,23, -30,0,8,82,99,87,37,0,99,7,28,0,99,215,13,0,99,135,34,0, -35,150,1,0,210,199,6,0,194,21,38,23,105,0,61,71,69,0,2,22, -48,0,34,87,0,0,35,62,12,0,198,81,10,48,34,135,5,0,63,6, -138,84,0,0,112,0,149,21,38,23,105,0,35,62,12,0,2,22,16,0, -34,87,0,0,34,127,5,0,198,81,10,48,63,6,172,84,0,0,111,0, -35,119,5,0,206,118,6,0,102,114,202,117,35,150,1,0,210,247,4,0, -234,5,35,150,1,0,210,255,4,0,162,109,61,223,24,0,224,217,151,53, -32,215,165,176,32,54,16,177,31,58,129,255,154,106,224,81,170,253,26,48, -27,56,32,70,136,0,128,255,24,245,32,142,24,177,49,95,1,0,10,216, -224,89,146,13,38,6,64,132,132,0,32,62,69,1,0,66,191,255,174,197, -32,54,16,177,129,255,46,107,224,81,146,13,38,6,88,132,132,0,32,62, -183,1,0,66,191,255,146,197,27,16,224,17,174,5,0,18,61,239,48,0, -224,233,167,53,224,17,138,53,32,142,172,176,49,223,1,0,32,54,16,177, -31,58,129,255,42,106,224,81,170,253,27,48,29,56,32,70,136,0,128,255, -168,244,32,142,24,177,49,111,1,0,10,232,224,105,146,13,38,6,64,132, -132,0,32,62,69,1,0,66,191,255,62,197,32,54,16,177,129,255,190,106, -224,81,146,13,38,6,88,132,132,0,32,62,183,1,0,66,191,255,34,197, -224,233,28,232,163,95,3,0,224,89,130,21,67,7,3,0,25,48,129,255, -102,113,224,81,146,13,38,6,112,132,132,0,32,62,6,1,0,66,191,255, -248,196,29,80,84,6,255,243,130,7,225,0,6,232,7,224,32,143,181,176, -252,0,224,137,210,29,32,150,24,177,50,135,1,0,224,129,146,13,38,6, -196,132,132,0,32,62,69,1,0,66,191,255,196,196,32,54,16,177,129,255, -68,106,224,81,146,13,38,6,208,132,132,0,32,62,183,1,0,66,191,255, -168,196,29,48,28,56,128,255,132,223,29,48,129,255,176,22,61,55,57,0, -224,49,178,5,128,255,216,225,224,231,209,176,149,21,229,87,64,0,32,22, -159,255,10,232,29,248,66,249,255,47,32,0,29,248,255,47,32,0,4,119, -80,139,224,113,250,37,51,6,5,0,32,0,211,255,0,0,186,237,229,87, -64,0,224,7,96,1,32,111,185,176,99,87,1,0,95,106,96,111,185,176, -202,13,32,103,13,177,224,97,138,13,64,86,0,0,43,6,96,0,0,0, -74,95,8,240,35,255,1,0,255,47,32,0,50,6,54,0,32,0,114,231, -0,0,66,6,255,0,130,7,225,0,32,143,181,176,6,224,224,137,210,85, -96,7,181,176,61,6,84,204,140,0,29,48,32,62,0,1,128,255,150,238, -32,150,24,177,50,135,1,0,224,129,146,13,38,6,220,132,132,0,32,62, -69,1,0,66,191,255,218,195,32,54,16,177,129,255,90,105,224,81,146,13, -38,6,232,132,132,0,32,62,183,1,0,66,191,255,190,195,224,225,210,45, -29,127,0,0,207,126,31,0,15,6,240,255,154,13,189,87,5,0,61,110, -8,0,205,81,253,23,7,0,165,29,157,103,1,0,216,98,157,98,67,103, -3,0,8,18,12,80,194,82,221,81,132,135,153,140,97,130,170,5,12,18, -2,88,0,18,224,97,242,5,189,23,1,0,172,17,130,90,235,23,194,2, -96,23,149,176,96,87,153,176,66,6,255,0,130,7,225,112,8,232,9,200, -7,224,0,218,197,29,61,63,5,0,61,55,1,0,61,215,17,0,28,64, -26,72,224,201,130,13,32,134,36,0,99,135,1,0,128,255,70,241,245,5, -32,126,129,0,99,127,1,0,128,255,56,241,218,225,29,238,20,0,65,218, -32,111,149,176,237,217,166,229,66,6,255,112,128,7,225,48,6,232,58,6, -84,184,140,0,128,255,248,11,61,55,57,0,128,255,106,226,0,218,221,239, -64,0,250,5,221,247,64,0,202,5,221,223,65,0,194,13,125,7,36,0, -29,48,32,63,153,176,32,71,149,176,26,72,128,255,250,8,10,216,32,143, -181,176,224,137,210,29,32,150,24,177,50,135,1,0,224,129,146,13,38,6, -244,132,132,0,32,62,69,1,0,66,191,255,168,194,32,54,16,177,129,255, -40,104,224,81,146,13,38,6,0,133,132,0,32,62,183,1,0,66,191,255, -140,194,224,217,202,77,0,226,125,7,8,0,221,239,64,0,202,5,221,247, -64,0,194,29,0,18,26,80,0,90,245,5,42,119,17,0,65,90,10,86, -20,0,206,17,32,111,149,176,237,89,246,245,2,96,169,98,125,103,8,0, -2,48,128,255,36,10,10,224,224,225,202,5,32,222,21,1,133,45,221,239, -64,0,242,5,29,48,28,56,26,64,1,74,191,255,212,254,221,223,65,0, -178,5,26,16,165,5,28,16,29,48,2,56,128,255,104,179,10,216,221,247, -64,0,242,5,29,48,28,56,26,64,0,74,191,255,172,254,221,207,65,0, -178,5,128,255,36,179,224,225,194,5,28,48,128,255,210,9,31,50,128,255, -204,10,27,80,64,6,255,48,160,7,225,243,6,232,7,16,132,135,153,140, -224,129,162,13,34,111,5,0,34,103,1,0,34,126,8,0,47,87,1,0, -149,13,34,87,1,0,0,106,10,96,34,86,4,0,42,87,1,0,32,127, -205,176,32,119,201,176,239,105,129,13,187,5,238,97,211,5,96,103,201,176, -96,111,205,176,46,6,132,185,255,255,253,199,37,0,253,95,9,0,221,199, -67,0,186,5,128,7,212,3,12,208,99,23,21,0,99,87,13,0,14,200, -137,82,99,87,17,0,13,216,253,111,49,0,216,105,235,105,130,45,224,55, -209,176,221,207,64,0,162,13,221,215,64,0,194,5,32,22,82,0,197,13, -32,22,86,0,149,13,221,199,64,0,194,5,32,22,87,0,181,5,32,22, -88,0,39,6,124,132,132,0,26,64,35,151,13,0,99,23,5,0,99,151, -1,0,27,72,128,255,6,9,32,22,3,1,128,7,98,3,253,151,25,0, -99,151,57,0,61,150,32,0,99,151,25,0,1,146,99,151,49,0,35,135, -25,0,48,135,1,0,224,129,138,13,35,151,25,0,76,146,99,151,25,0, -128,7,30,3,35,127,49,0,32,102,164,176,15,88,194,122,204,121,111,207, -1,0,236,95,64,2,61,126,20,0,207,89,43,231,9,0,35,143,25,0, -99,231,61,0,241,95,7,0,49,183,1,0,11,80,10,16,54,183,29,0, -229,5,172,17,196,5,54,183,13,0,2,80,182,103,5,0,224,17,143,253, -10,144,54,23,1,0,201,146,194,145,99,151,29,0,170,97,35,199,57,0, -99,103,33,0,248,95,192,90,60,23,17,0,171,193,137,18,224,89,247,21, -229,5,28,230,20,0,60,23,17,0,137,18,162,89,172,253,11,80,128,81, -234,193,234,199,50,147,99,151,37,0,11,184,194,185,60,111,13,0,201,186, -205,185,133,13,226,193,226,199,50,147,99,151,37,0,60,191,13,0,35,151, -25,0,242,151,5,0,99,151,53,0,32,87,177,176,99,7,42,0,234,201, -227,5,32,150,97,1,99,151,42,0,245,29,251,1,186,5,250,1,210,5, -35,151,13,0,224,145,234,5,32,150,0,1,99,151,42,0,165,21,218,86, -3,0,226,5,32,150,2,1,99,151,42,0,165,13,35,151,13,0,210,118, -255,1,210,5,32,150,4,1,99,151,42,0,35,111,42,0,224,105,194,37, -224,55,209,176,221,207,64,0,162,13,221,215,64,0,194,5,32,22,82,0, -197,13,32,22,86,0,149,13,221,199,64,0,194,5,32,22,87,0,181,5, -32,22,88,0,39,6,124,132,132,0,26,64,35,151,13,0,99,23,5,0, -99,151,1,0,27,72,128,255,116,7,35,23,42,0,224,17,178,5,128,7, -204,1,35,151,33,0,35,143,17,0,241,145,241,151,50,139,35,151,37,0, -241,145,241,151,50,147,99,151,9,0,35,151,29,0,121,215,1,0,121,151, -9,0,121,223,5,0,35,151,53,0,35,143,9,0,121,191,13,0,177,145, -99,151,53,0,224,145,239,29,224,145,146,13,38,6,52,132,132,0,32,62, -153,7,0,66,191,255,42,191,35,135,9,0,35,151,25,0,201,130,76,146, -121,135,17,0,99,151,25,0,50,119,1,0,25,206,20,0,224,113,186,5, -128,7,62,1,229,5,201,138,121,143,17,0,25,206,20,0,35,143,9,0, -17,144,201,146,99,151,41,0,35,151,17,0,177,145,99,151,17,0,154,45, -132,135,153,140,224,129,146,21,35,151,21,0,76,146,99,151,21,0,50,223, -5,0,50,215,1,0,50,126,8,0,47,151,1,0,99,151,13,0,245,13, -35,151,21,0,72,146,99,151,21,0,50,215,1,0,50,22,4,0,34,151, -1,0,0,218,99,151,13,0,35,151,13,0,137,146,99,151,17,0,245,13, -35,143,41,0,35,151,13,0,17,72,191,74,209,209,225,103,0,0,204,73, -201,217,177,145,99,151,13,0,35,151,53,0,224,145,167,85,35,151,33,0, -35,143,9,0,177,145,99,151,33,0,234,21,54,183,13,0,224,177,154,13, -38,6,52,132,132,0,32,62,222,7,0,66,191,255,70,190,182,151,5,0, -99,151,33,0,54,151,1,0,99,151,29,0,133,13,35,151,29,0,35,143, -41,0,209,145,99,151,29,0,35,143,9,0,177,193,154,21,35,231,61,0, -35,199,57,0,60,111,17,0,60,191,13,0,137,106,237,193,237,199,50,147, -99,151,37,0,191,7,214,253,35,151,37,0,177,145,99,151,37,0,250,13, -28,230,20,0,60,87,17,0,60,191,13,0,137,82,234,193,234,199,50,147, -99,151,37,0,191,7,174,253,35,143,41,0,209,185,191,7,164,253,35,151, -49,0,65,146,99,151,49,0,99,146,190,5,191,7,190,252,0,18,2,80, -128,7,218,3,221,231,66,0,186,5,128,7,110,2,12,208,13,216,10,224, -2,176,14,184,253,127,25,0,207,193,253,103,49,0,216,97,235,97,226,37, -224,55,209,176,221,207,64,0,162,13,221,215,64,0,194,5,32,22,82,0, -197,13,32,22,86,0,149,13,221,199,64,0,194,5,32,22,87,0,181,5, -32,22,88,0,39,6,124,132,132,0,26,64,27,72,99,23,5,0,99,231, -1,0,128,255,52,5,32,22,3,1,128,7,4,2,61,150,20,0,99,151, -53,0,99,7,61,0,35,135,53,0,48,135,1,0,224,129,186,5,128,7, -202,1,35,151,61,0,224,145,247,5,194,146,32,102,164,176,204,145,114,191, -1,0,35,143,53,0,49,207,1,0,241,95,7,0,11,16,57,207,29,0, -229,5,170,17,196,5,57,207,13,0,2,88,185,87,5,0,224,17,143,253, -35,151,53,0,242,151,5,0,99,151,49,0,57,23,1,0,11,144,201,146, -194,145,99,151,41,0,35,151,49,0,171,81,234,145,234,151,60,195,201,194, -128,7,88,1,32,87,177,176,99,7,58,0,234,185,227,5,32,150,97,1, -99,151,58,0,181,29,251,1,186,5,250,1,178,5,224,225,234,5,32,150, -0,1,99,151,58,0,133,21,218,86,3,0,226,5,32,150,2,1,99,151, -58,0,133,13,220,118,255,1,210,5,32,150,4,1,99,151,58,0,35,111, -58,0,224,105,162,37,224,55,209,176,221,207,64,0,162,13,221,215,64,0, -194,5,32,22,82,0,197,13,32,22,86,0,149,13,221,199,64,0,194,5, -32,22,87,0,181,5,32,22,88,0,39,6,124,132,132,0,26,64,27,72, -99,23,5,0,99,231,1,0,128,255,22,4,35,23,58,0,224,17,170,117, -252,193,252,199,50,19,2,80,35,151,49,0,137,82,170,145,99,151,49,0, -119,215,1,0,35,151,41,0,119,23,17,0,119,151,13,0,119,151,9,0, -119,223,5,0,23,190,20,0,252,17,154,29,132,135,153,140,224,129,178,13, -76,178,54,223,5,0,54,215,1,0,54,126,8,0,47,231,1,0,133,21, -72,178,54,87,1,0,0,218,10,208,54,86,4,0,42,231,1,0,229,5, -194,209,225,103,0,0,204,217,162,225,248,17,234,29,35,151,49,0,224,145, -135,37,57,207,13,0,224,201,154,13,38,6,40,132,132,0,32,62,201,6, -0,66,191,255,148,187,57,151,1,0,99,151,41,0,35,151,49,0,185,23, -5,0,226,145,226,151,60,195,201,194,245,5,35,151,41,0,162,193,194,145, -99,151,41,0,35,151,49,0,224,145,183,5,191,7,164,254,35,151,53,0, -76,146,99,151,53,0,35,151,61,0,65,146,99,151,61,0,99,146,190,5, -191,7,18,254,0,18,2,80,128,7,102,1,12,208,13,216,10,224,2,184, -99,71,61,0,14,200,235,193,231,37,224,55,209,176,221,207,64,0,162,13, -221,215,64,0,194,5,32,22,82,0,197,13,32,22,86,0,149,13,221,199, -64,0,194,5,32,22,87,0,181,5,32,22,88,0,39,6,124,132,132,0, -26,64,27,72,99,23,5,0,99,231,1,0,128,255,210,2,32,22,3,1, -128,7,8,1,224,193,202,5,56,6,255,255,255,127,32,142,168,176,113,207, -1,0,165,117,32,135,177,176,0,178,240,201,195,5,32,182,97,1,213,21, -251,1,186,5,250,1,178,5,224,225,202,5,32,182,0,1,197,13,218,86, -3,0,194,5,32,182,2,1,229,5,220,110,255,1,178,5,32,182,4,1, -224,177,162,37,224,55,209,176,221,207,64,0,162,13,221,215,64,0,194,5, -32,22,82,0,197,13,32,22,86,0,149,13,221,199,64,0,194,5,32,22, -87,0,181,5,32,22,88,0,39,6,124,132,132,0,26,64,27,72,99,23, -5,0,99,231,1,0,128,255,56,2,22,16,224,17,250,53,28,128,137,130, -176,193,204,5,24,224,201,226,128,225,35,151,61,0,121,7,9,0,95,146, -121,7,13,0,121,231,17,0,121,223,5,0,121,215,1,0,99,151,61,0, -25,206,20,0,132,111,153,140,224,105,178,13,76,186,55,223,5,0,55,215, -1,0,55,102,8,0,44,231,1,0,165,13,72,186,55,23,1,0,0,218, -2,208,55,22,4,0,34,231,1,0,35,151,61,0,224,145,183,5,224,193, -175,141,0,18,2,80,96,6,255,243,134,7,225,243,6,184,7,16,132,135, -153,140,224,129,162,13,34,95,5,0,34,87,1,0,34,126,8,0,47,103, -1,0,133,13,34,87,1,0,0,90,34,102,4,0,44,103,1,0,10,208, -11,216,12,232,2,200,99,71,9,0,9,224,247,199,37,0,247,119,9,0, -238,193,231,37,224,55,209,176,215,207,64,0,162,13,215,215,64,0,194,5, -32,22,82,0,197,13,32,22,86,0,149,13,215,199,64,0,194,5,32,22, -87,0,181,5,32,22,88,0,26,64,27,72,99,239,1,0,99,23,5,0, -39,6,124,132,132,0,128,255,52,1,32,22,3,1,128,7,8,1,224,193, -202,5,56,6,255,255,255,127,32,142,168,176,113,231,1,0,165,117,32,103, -177,176,0,178,236,225,195,5,32,182,97,1,213,21,251,1,186,5,250,1, -178,5,224,233,202,5,32,182,0,1,197,13,218,86,3,0,194,5,32,182, -2,1,229,5,221,134,255,1,178,5,32,182,4,1,224,177,162,37,224,55, -209,176,215,207,64,0,162,13,215,215,64,0,194,5,32,22,82,0,197,13, -32,22,86,0,149,13,215,199,64,0,194,5,32,22,87,0,181,5,32,22, -88,0,26,64,27,72,99,239,1,0,99,23,5,0,39,6,124,132,132,0, -128,255,154,0,22,16,224,17,250,53,29,96,137,98,172,193,204,5,24,232, -201,234,128,233,35,151,9,0,124,7,9,0,95,146,124,7,13,0,124,239, -17,0,124,223,5,0,124,215,1,0,99,151,9,0,28,230,20,0,132,135, -153,140,224,129,178,13,76,202,57,223,5,0,57,215,1,0,57,126,8,0, -47,239,1,0,165,13,72,202,57,23,1,0,0,218,2,208,57,22,4,0, -34,239,1,0,35,151,9,0,224,145,183,5,224,193,175,141,0,18,2,80, -70,6,255,243,128,7,130,7,128,7,142,7,128,7,140,7,130,7,33,6, -96,28,130,0,97,0,33,6,68,28,130,0,97,0,33,6,196,254,128,0, -97,0,128,7,33,0,38,6,140,228,140,0,39,6,24,133,132,0,0,66, -128,255,18,1,64,6,63,0,128,7,33,0,32,135,37,183,32,142,176,179, -241,129,234,21,32,150,24,177,50,127,1,0,97,122,146,13,38,6,40,133, -132,0,32,62,98,0,0,66,191,255,206,183,128,255,196,0,224,81,194,5, -31,50,128,255,160,0,64,6,63,0,128,7,33,0,32,23,37,183,32,142, -176,179,241,17,178,5,128,255,162,0,64,6,63,0,132,7,225,112,6,200, -0,210,32,239,37,183,32,142,176,179,241,233,194,53,60,6,52,133,132,0, -29,48,0,58,3,64,128,255,156,0,224,81,242,5,28,48,32,62,194,0, -0,66,191,255,112,183,32,54,72,180,2,58,0,66,129,255,148,94,10,216, -224,217,242,5,28,48,32,62,201,0,0,66,191,255,82,183,25,48,128,255, -44,0,10,208,35,63,1,0,29,48,35,70,4,0,128,255,88,0,224,217, -130,13,28,48,32,62,210,0,0,66,191,255,44,183,224,81,26,80,68,6, -255,112,128,7,33,0,6,56,38,6,140,228,140,0,129,255,60,98,224,81, -226,87,0,0,64,6,63,0,128,7,33,0,38,6,140,228,140,0,128,255, -8,0,64,6,63,0,33,6,192,20,128,0,97,0,33,6,20,40,129,0, -97,0,33,6,78,246,129,0,97,0,128,7,97,0,128,255,72,6,229,87, -64,0,224,7,96,1,10,248,64,86,0,0,10,87,116,241,138,238,64,0, -64,86,0,0,74,239,116,241,255,47,32,0,64,86,0,0,202,191,116,241, -229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87,118,241,138,238, -64,0,64,86,0,0,74,239,118,241,255,47,32,0,64,86,0,0,202,191, -118,241,229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87,146,241, -138,238,64,0,64,86,0,0,74,239,146,241,255,47,32,0,64,86,0,0, -202,191,146,241,229,87,64,0,224,7,96,1,10,248,64,86,0,0,10,87, -32,241,138,238,64,0,64,86,0,0,74,239,32,241,255,47,32,0,64,86, -0,0,202,191,32,241,229,87,64,0,224,7,96,1,10,248,64,86,0,0, -10,87,34,241,138,238,64,0,64,86,0,0,74,239,34,241,255,47,32,0, -64,86,0,0,202,191,34,241,229,87,64,0,224,7,96,1,10,248,64,86, -0,0,10,87,36,241,138,238,64,0,64,86,0,0,74,239,36,241,255,47, -32,0,64,86,0,0,202,191,36,241,229,87,64,0,224,7,96,1,10,248, -64,86,0,0,10,87,38,241,138,238,64,0,64,86,0,0,74,239,38,241, -255,47,32,0,64,86,0,0,202,191,38,241,229,87,64,0,224,7,96,1, -10,248,64,86,0,0,10,87,40,241,138,238,64,0,64,86,0,0,74,239, -40,241,255,47,32,0,64,86,0,0,202,191,40,241,229,87,64,0,224,7, -96,1,10,248,64,86,0,0,10,87,174,241,138,238,64,0,64,86,0,0, -74,239,174,241,255,47,32,0,64,86,0,0,202,191,174,241,64,86,0,0, -0,90,74,95,14,244,64,86,0,0,43,6,32,0,0,0,74,95,10,244, -64,86,0,0,43,6,28,0,0,0,74,95,14,244,64,86,0,0,43,6, -40,0,0,0,74,95,10,244,128,255,8,0,64,6,127,0,128,7,65,0, -4,23,80,139,4,87,81,139,99,18,178,5,224,81,210,13,2,232,224,7, -96,1,29,48,0,58,0,66,64,254,128,0,63,254,0,0,127,0,197,13, -2,232,224,7,96,1,29,56,0,66,0,74,64,254,16,0,63,254,2,0, -127,0,64,6,95,0,128,7,33,0,128,255,8,0,64,6,63,0,128,7, -65,0,229,87,64,0,224,7,96,1,10,232,64,86,0,0,42,87,112,240, -224,81,186,253,64,86,0,0,3,90,106,95,112,240,64,86,0,0,42,87, -112,240,224,81,186,253,253,47,32,0,64,6,95,0,128,7,193,16,128,230, -27,183,64,86,0,0,4,90,74,95,106,240,64,86,0,0,43,6,48,0, -0,0,106,95,144,244,64,86,0,0,0,90,106,95,146,244,64,86,0,0, -43,6,119,34,0,0,106,95,132,244,64,86,0,0,43,6,119,119,0,0, -106,95,134,244,128,238,163,255,64,86,0,0,106,239,136,244,128,238,175,255, -64,86,0,0,106,239,138,244,64,86,0,0,43,6,224,0,0,0,74,95, -76,244,64,86,0,0,0,90,74,95,108,244,64,86,0,0,0,90,74,95, -44,252,64,86,0,0,43,6,224,0,0,0,74,95,12,252,64,86,0,0, -0,90,74,95,78,244,64,86,0,0,43,6,227,0,0,0,74,95,46,244, -64,86,0,0,43,6,28,0,0,0,74,95,14,244,64,86,0,0,43,6, -22,0,0,0,74,95,74,244,64,86,0,0,43,6,215,0,0,0,74,95, -42,244,64,86,0,0,0,90,74,95,106,244,64,86,0,0,0,90,74,95, -42,252,64,86,0,0,7,90,74,95,10,252,64,86,0,0,43,6,40,0, -0,0,74,95,10,244,64,86,0,0,43,6,16,0,0,0,74,95,0,242, -64,86,0,0,2,90,74,95,1,242,64,86,0,0,43,6,199,0,0,0, -74,95,68,244,64,86,0,0,43,6,199,0,0,0,74,95,100,244,64,86, -0,0,43,6,249,0,0,0,74,95,36,244,64,86,0,0,43,6,144,0, -0,0,74,95,32,250,64,86,0,0,43,6,162,0,0,0,106,95,34,250, -64,86,0,0,43,6,242,0,0,0,74,95,32,250,64,86,0,0,43,6, -62,0,0,0,74,95,16,248,64,86,0,0,43,6,32,0,0,0,106,95, -208,240,64,86,0,0,43,6,255,15,0,0,106,95,134,240,128,238,40,250, -64,86,0,0,106,239,132,240,229,87,64,0,224,7,96,1,10,216,64,86, -0,0,10,87,146,241,10,232,32,86,191,255,74,233,64,86,0,0,74,239, -146,241,251,47,32,0,229,87,64,0,224,7,96,1,10,216,64,86,0,0, -10,87,174,241,10,232,32,86,191,255,74,233,64,86,0,0,74,239,174,241, -251,47,32,0,64,86,0,0,1,90,74,95,84,245,64,86,0,0,106,231, -82,245,229,87,64,0,224,7,96,1,10,224,64,86,0,0,10,87,116,241, -10,232,32,86,191,255,74,233,64,86,0,0,74,239,116,241,252,47,32,0, -64,86,0,0,43,6,35,0,0,0,74,95,84,245,64,86,0,0,1,90, -74,95,100,245,229,87,64,0,224,7,96,1,10,224,64,86,0,0,10,87, -118,241,10,232,32,86,191,255,74,233,64,86,0,0,74,239,118,241,252,47, -32,0,64,86,0,0,43,6,113,0,0,0,74,95,100,245,64,86,0,0, -0,90,74,95,40,240,64,86,0,0,43,6,159,0,0,0,74,95,72,240, -64,86,0,0,43,6,32,0,0,0,74,95,8,240,64,86,0,0,1,90, -74,95,2,244,64,86,0,0,43,6,240,0,0,0,74,95,34,244,64,86, -0,0,2,90,74,95,98,244,64,86,0,0,43,6,56,0,0,0,74,95, -1,253,64,86,0,0,43,6,144,0,0,0,74,95,0,253,64,86,0,0, -8,90,74,95,9,253,64,86,0,0,14,90,74,95,66,244,64,6,223,16, -128,7,193,48,6,224,7,232,221,0,224,233,146,61,28,215,0,0,95,234, -65,226,221,0,224,233,178,5,95,234,221,0,64,86,0,0,10,87,16,248, -32,94,127,255,202,222,127,0,64,86,0,0,74,223,16,248,28,16,144,18, -194,222,255,15,64,86,0,0,106,223,130,240,64,86,0,0,106,231,128,240, -64,86,0,0,106,239,192,240,64,86,0,0,10,87,224,240,64,86,0,0, -10,87,224,240,138,238,1,0,64,86,0,0,74,239,224,240,26,232,64,86, -0,0,74,239,40,250,64,6,223,48,128,7,193,48,6,208,154,0,26,232, -64,86,0,0,74,239,2,242,0,226,0,218,64,86,0,0,10,87,0,242, -138,238,128,0,64,86,0,0,74,239,0,242,61,6,64,13,3,0,64,86, -0,0,10,87,0,242,135,82,177,5,95,234,154,253,61,6,64,13,3,0, -64,86,0,0,10,87,0,242,135,82,185,5,95,234,154,253,64,86,0,0, -10,87,0,242,32,94,127,255,202,238,127,0,64,86,0,0,74,239,0,242, -26,16,193,18,2,238,16,242,61,87,1,0,202,225,65,218,100,218,182,205, -28,128,191,130,158,130,208,225,130,226,220,0,28,80,202,0,64,6,223,48, -127,0,33,6,214,176,129,0,97,0,128,7,33,0,224,49,162,13,49,6, -48,72,133,0,102,143,105,0,129,58,185,5,128,255,28,26,64,6,63,0, -128,7,33,0,38,23,105,0,63,6,112,106,0,0,2,22,208,0,34,87, -0,0,34,143,5,0,198,81,10,48,113,0,64,6,63,0,0,82,127,0, -128,7,193,48,6,208,229,87,64,0,224,7,96,1,10,216,58,239,93,0, -58,231,89,0,251,47,32,0,29,88,28,80,64,6,223,48,128,7,33,0, -224,49,138,13,32,54,108,0,128,255,204,25,10,48,224,49,178,45,48,6, -48,72,133,0,102,135,105,0,102,7,85,0,102,7,81,0,102,7,4,0, -70,7,1,0,70,7,0,0,70,7,7,0,102,7,89,0,102,7,93,0, -0,18,1,82,102,87,97,0,102,7,101,0,102,87,8,0,102,87,14,0, -2,104,194,106,38,86,16,0,202,105,109,7,1,0,65,18,2,6,240,255, -230,245,6,80,64,6,63,0,128,7,33,0,38,6,132,215,255,255,39,6, -204,135,132,0,0,66,191,255,176,248,38,6,180,215,255,255,39,6,220,135, -132,0,1,66,128,255,60,25,64,6,63,0,128,7,225,240,6,232,7,208, -58,199,1,0,128,255,138,212,49,6,148,204,1,0,106,143,5,0,0,202, -106,199,9,0,0,226,122,87,1,0,213,61,28,216,194,218,61,126,16,0, -219,121,47,111,1,0,224,105,178,53,29,103,7,0,12,6,17,0,154,21, -61,23,105,0,63,6,152,107,0,0,2,22,88,1,34,87,0,0,34,95, -5,0,221,81,10,48,107,0,252,81,226,29,61,86,16,0,27,136,209,81, -42,23,1,0,26,56,34,23,105,0,61,86,16,0,219,81,2,22,144,0, -34,95,0,0,42,55,1,0,11,96,204,49,34,127,5,0,63,6,208,107, -0,0,111,0,224,81,162,5,65,202,65,226,61,119,4,0,238,225,150,197, -58,55,1,0,25,56,128,255,246,210,122,199,1,0,1,82,64,6,255,240, -138,7,225,16,99,7,1,0,99,7,5,0,99,7,9,0,39,231,5,0, -99,7,13,0,39,127,16,0,39,111,18,0,15,128,208,105,201,106,99,111, -17,0,3,96,39,223,25,0,38,23,105,0,103,103,5,0,72,18,34,87, -0,0,103,7,25,0,198,81,10,48,7,232,34,95,5,0,63,6,72,108, -0,0,107,0,125,223,25,0,125,231,5,0,74,6,255,16,128,7,225,0, -6,224,0,234,181,37,29,16,194,18,60,134,16,0,194,129,48,119,1,0, -224,113,146,29,60,110,16,0,2,96,204,105,45,95,1,0,43,23,105,0, -2,22,88,0,34,87,0,0,63,6,152,108,0,0,203,81,34,95,5,0, -10,48,107,0,97,82,186,5,1,82,245,5,65,234,60,87,4,0,234,233, -182,221,0,82,64,6,255,0,128,7,225,0,6,224,0,234,181,37,29,16, -194,18,60,134,16,0,194,129,48,119,1,0,224,113,146,29,60,110,16,0, -2,96,204,105,45,95,1,0,43,23,105,0,2,22,96,0,34,87,0,0, -63,6,244,108,0,0,203,81,34,95,5,0,10,48,107,0,97,82,186,5, -1,82,245,5,65,234,60,87,4,0,234,233,182,221,0,82,64,6,255,0, -128,7,225,16,6,224,7,216,0,234,197,37,29,16,194,18,60,134,16,0, -194,129,48,119,1,0,224,113,162,29,60,110,16,0,2,96,204,105,45,95, -1,0,43,23,105,0,27,56,2,22,104,0,34,87,0,0,63,6,84,109, -0,0,203,81,34,95,5,0,10,48,107,0,224,81,186,5,0,82,245,5, -65,234,60,87,4,0,234,233,166,221,1,82,64,6,255,16,132,7,225,0, -6,224,188,55,1,0,128,255,0,16,10,232,224,233,210,93,61,23,105,0, -99,7,5,0,2,22,112,0,34,87,0,0,28,56,221,81,10,48,0,66, -35,126,4,0,99,127,1,0,32,78,128,0,34,119,5,0,63,6,176,109, -0,0,110,0,10,224,224,225,183,29,61,23,105,0,63,6,210,109,0,0, -2,22,96,1,34,87,0,0,34,111,5,0,221,81,10,48,109,0,224,81, -186,13,29,56,0,50,128,255,162,22,10,232,38,6,240,135,132,0,191,255, -74,181,224,225,234,37,38,6,4,136,132,0,191,255,60,181,61,23,105,0, -63,6,20,110,0,0,2,22,192,0,34,87,0,0,34,103,5,0,221,81, -10,48,108,0,224,233,130,21,61,23,105,0,3,58,2,22,80,1,34,87, -0,0,34,95,5,0,221,81,10,48,63,6,54,110,0,0,107,0,0,234, -29,80,68,6,255,0,128,7,225,16,6,224,1,218,0,234,165,37,29,16, -194,18,60,134,16,0,194,129,48,119,1,0,224,113,130,29,60,110,16,0, -2,96,204,105,45,95,1,0,43,23,105,0,2,22,120,0,34,87,0,0, -63,6,132,110,0,0,203,81,34,95,5,0,10,48,107,0,224,81,170,5, -0,218,65,234,60,87,4,0,234,233,198,221,27,80,64,6,255,16,128,7, -225,48,1,218,7,208,122,7,1,0,6,224,220,207,2,0,178,5,0,82, -181,45,0,234,197,37,29,16,194,18,60,134,16,0,194,129,48,119,1,0, -224,113,162,29,60,110,16,0,2,96,204,105,45,95,1,0,43,23,105,0, -26,56,2,22,128,0,34,87,0,0,63,6,242,110,0,0,203,81,34,95, -5,0,10,48,107,0,224,81,186,5,0,218,229,5,65,234,60,87,4,0, -234,233,166,221,27,80,64,6,255,48,134,7,225,48,6,216,7,232,8,208, -99,7,0,0,0,226,213,117,28,16,194,18,61,134,16,0,194,129,48,119, -1,0,224,113,178,109,61,110,16,0,2,96,204,105,45,95,1,0,26,64, -43,23,105,0,35,54,8,0,2,22,136,0,34,87,0,0,63,6,92,111, -0,0,203,81,34,95,5,0,10,56,107,0,35,87,9,0,99,87,5,0, -10,16,226,0,224,17,194,77,35,127,0,0,2,128,16,121,35,119,6,0, -99,127,0,0,29,23,7,0,99,119,2,0,2,6,17,0,129,13,2,6, -33,0,242,29,2,6,81,0,210,53,229,53,123,18,242,45,119,18,162,45, -2,6,17,0,250,45,61,23,105,0,63,6,194,111,0,0,2,22,88,1, -34,87,0,0,34,111,5,0,221,81,10,48,109,0,252,81,250,29,195,15, -0,0,197,29,61,23,105,0,63,6,232,111,0,0,2,22,88,1,34,87, -0,0,34,103,5,0,221,81,10,48,108,0,252,81,202,13,195,23,0,0, -149,13,195,31,0,0,229,5,195,39,0,0,181,5,195,47,0,0,65,226, -61,95,4,0,235,225,150,141,35,135,0,0,123,135,0,0,35,127,2,0, -123,127,2,0,27,80,70,6,255,48,128,7,225,48,7,224,6,232,157,135, -7,0,92,135,1,0,61,119,4,0,29,127,7,0,61,23,105,0,92,127, -5,0,92,119,0,0,2,22,88,1,29,111,1,0,34,87,0,0,92,111, -4,0,221,81,10,48,34,103,5,0,63,6,102,112,0,0,108,0,61,95, -10,0,92,87,3,0,92,95,2,0,61,87,89,0,124,87,9,0,61,111, -93,0,124,111,13,0,29,48,128,255,238,18,60,23,6,0,32,142,0,128, -81,17,202,86,255,127,10,17,124,23,6,0,61,87,85,0,28,135,7,0, -32,142,127,255,224,81,234,23,0,0,81,129,194,126,1,0,199,122,15,129, -92,135,7,0,124,7,16,0,29,119,2,0,1,218,92,7,18,0,92,119, -19,0,0,210,213,37,26,16,194,18,61,102,16,0,194,97,44,87,1,0, -224,81,178,29,61,134,16,0,2,120,207,129,48,95,1,0,251,118,20,0, -43,23,105,0,14,56,2,22,184,0,34,87,0,0,220,57,203,81,10,48, -34,103,5,0,63,6,20,113,0,0,108,0,202,217,251,0,65,210,61,95, -4,0,235,209,150,221,27,80,64,6,255,48,128,7,225,48,6,232,29,23, -7,0,2,6,17,0,209,13,224,17,242,61,2,6,81,0,226,53,2,6, -65,0,210,45,2,6,33,0,194,37,181,61,127,18,146,13,123,18,210,13, -119,18,146,21,2,6,17,0,194,21,149,53,38,6,40,136,132,0,191,255, -198,177,133,53,38,6,52,136,132,0,191,255,186,177,165,45,38,6,64,136, -132,0,191,255,174,177,197,37,38,6,76,136,132,0,191,255,162,177,229,29, -38,6,88,136,132,0,191,255,150,177,133,29,38,6,100,136,132,0,191,255, -138,177,165,21,38,6,112,136,132,0,191,255,126,177,197,13,38,6,124,136, -132,0,191,255,114,177,229,5,38,6,136,136,132,0,191,255,102,177,157,23, -7,0,101,18,249,5,97,18,225,13,242,21,98,18,162,29,165,45,101,18, -210,13,2,6,224,255,162,29,2,6,192,255,210,29,149,37,37,54,140,128, -191,255,56,177,149,37,37,54,148,128,191,255,46,177,197,29,37,54,116,128, -191,255,36,177,245,21,38,6,148,136,132,0,191,255,24,177,149,21,38,6, -176,136,132,0,191,255,12,177,181,13,37,54,124,128,191,255,2,177,229,5, -38,6,28,136,132,0,191,255,246,176,29,63,1,0,37,54,132,128,135,0, -191,255,232,176,61,23,105,0,63,6,104,114,0,0,2,22,24,0,34,87, -0,0,34,119,5,0,221,81,10,48,110,0,10,64,11,72,38,6,188,136, -132,0,32,62,32,0,191,255,186,176,29,48,128,255,246,16,228,87,76,2, -10,96,191,98,150,98,10,56,204,57,170,58,38,6,160,136,132,0,191,255, -154,176,29,63,2,0,38,6,200,136,132,0,222,58,159,58,191,255,136,176, -0,226,165,85,28,216,194,218,61,126,16,0,219,121,47,111,1,0,224,105, -130,77,0,210,133,13,36,63,25,132,37,54,156,128,191,255,98,176,65,210, -29,103,0,0,236,209,231,245,61,23,105,0,36,215,25,132,2,22,88,1, -34,87,0,0,34,95,5,0,221,81,10,48,63,6,252,114,0,0,107,0, -234,225,186,13,29,23,7,0,2,6,17,0,194,5,2,6,33,0,186,5, -36,215,21,132,26,56,37,54,156,128,191,255,22,176,61,86,16,0,27,128, -208,81,42,23,1,0,63,6,80,115,0,0,34,23,105,0,61,86,16,0, -219,81,2,22,192,0,34,95,0,0,42,55,1,0,11,96,34,119,5,0, -204,49,110,0,65,226,61,111,4,0,237,225,198,173,64,6,255,48,130,7, -33,0,38,23,105,0,167,0,2,22,152,0,34,87,0,0,3,72,198,81, -10,48,34,135,5,0,63,6,130,115,0,0,112,0,66,6,63,0,130,7, -33,0,38,23,105,0,7,64,2,22,128,1,34,87,0,0,0,58,198,81, -10,48,3,72,34,143,5,0,63,6,172,115,0,0,113,0,66,6,63,0, -130,7,33,0,38,23,105,0,7,64,2,22,128,1,34,87,0,0,1,58, -198,81,10,48,3,72,34,143,5,0,63,6,214,115,0,0,113,0,66,6, -63,0,128,7,225,16,6,224,7,216,0,234,133,37,29,16,194,18,60,134, -16,0,194,129,48,119,1,0,224,113,226,21,60,110,16,0,2,96,204,105, -45,95,1,0,43,23,105,0,27,56,2,22,160,0,34,87,0,0,63,6, -34,116,0,0,203,81,34,95,5,0,10,48,107,0,65,234,60,87,4,0, -234,233,230,221,64,6,255,16,128,7,225,16,6,216,1,226,0,234,133,37, -29,16,194,18,59,134,16,0,194,129,48,119,1,0,224,113,226,21,59,110, -16,0,2,96,204,105,45,95,1,0,43,23,105,0,2,22,176,0,34,87, -0,0,63,6,118,116,0,0,203,81,34,95,5,0,10,48,107,0,202,225, -65,234,59,87,4,0,234,233,230,221,28,80,64,6,255,16,132,7,225,0, -6,232,61,23,105,0,7,224,2,22,136,0,34,87,0,0,28,64,221,81, -10,56,35,54,4,0,34,143,5,0,63,6,178,116,0,0,113,0,35,135, -5,0,99,135,1,0,195,199,0,0,194,5,195,207,0,0,202,5,32,86, -33,1,133,21,61,23,105,0,28,56,2,22,136,1,34,87,0,0,34,127, -5,0,221,81,10,48,63,6,234,116,0,0,111,0,68,6,255,0,132,7, -225,112,6,224,7,200,0,210,0,218,213,69,27,232,194,234,60,134,16,0, -221,129,48,119,1,0,224,113,178,61,60,110,16,0,29,96,204,105,45,95, -1,0,25,64,43,23,105,0,35,54,4,0,2,22,136,0,34,87,0,0, -63,6,60,117,0,0,203,81,34,95,5,0,10,56,107,0,35,87,5,0, -99,87,1,0,195,199,0,0,210,29,60,142,16,0,29,128,208,137,49,23, -1,0,60,86,16,0,34,23,105,0,221,81,2,22,136,1,34,95,0,0, -42,55,1,0,11,96,204,49,25,56,34,119,5,0,63,6,126,117,0,0, -110,0,10,208,229,5,65,218,60,111,4,0,237,217,150,189,26,80,68,6, -255,112,132,7,225,243,6,232,7,184,8,176,31,210,31,218,0,226,197,37, -28,16,194,18,61,126,16,0,194,121,47,111,1,0,224,105,162,29,61,102, -16,0,194,97,44,95,1,0,43,23,105,0,63,6,218,117,0,0,2,22, -24,0,34,55,0,0,34,87,5,0,203,49,106,0,251,89,235,5,177,5, -250,81,185,5,10,208,11,216,65,226,61,135,4,0,240,225,166,221,32,198, -35,1,0,226,133,93,28,200,194,202,61,118,16,0,217,113,46,103,1,0, -224,97,226,77,29,95,7,0,11,6,17,0,154,77,61,23,105,0,63,6, -48,118,0,0,2,22,88,1,34,55,0,0,34,87,5,0,221,49,106,0, -234,225,170,61,61,134,16,0,25,120,207,129,48,23,1,0,61,86,16,0, -34,23,105,0,217,81,2,22,216,0,34,95,0,0,42,55,1,0,11,96, -204,49,23,56,99,223,5,0,99,215,1,0,22,64,34,111,5,0,63,6, -114,118,0,0,109,0,10,200,224,201,202,21,61,23,105,0,32,94,223,255, -2,22,96,1,34,55,0,0,93,95,7,0,221,49,34,87,5,0,63,6, -154,118,0,0,106,0,25,192,165,13,25,6,221,254,162,5,25,192,65,226, -61,127,4,0,239,225,230,165,24,80,68,6,255,243,134,7,225,48,6,232, -61,23,105,0,7,216,2,22,64,1,34,87,0,0,3,56,221,81,10,48, -34,135,5,0,63,6,220,118,0,0,112,0,35,127,1,0,224,121,202,5, -32,86,35,1,197,93,31,82,123,87,1,0,123,87,5,0,0,210,133,85, -26,224,194,226,61,110,16,0,220,105,45,95,1,0,224,89,226,69,61,86, -16,0,28,128,208,81,42,95,1,0,35,62,4,0,43,23,105,0,63,6, -54,119,0,0,2,22,224,0,34,87,0,0,34,127,5,0,203,81,10,48, -111,0,224,81,210,29,61,86,16,0,61,118,16,0,28,104,205,113,46,23, -1,0,220,81,34,23,105,0,42,55,1,0,2,22,24,0,34,103,0,0, -34,95,5,0,204,49,63,6,106,119,0,0,107,0,99,87,5,0,99,95, -9,0,35,87,5,0,59,111,5,0,35,95,9,0,59,103,1,0,237,89, -139,13,177,5,236,81,217,5,123,87,1,0,123,95,5,0,65,210,61,87, -4,0,234,209,230,173,0,82,70,6,255,48,128,7,225,16,6,232,61,23, -105,0,7,224,2,22,112,1,34,87,0,0,8,216,221,81,10,48,34,143, -5,0,63,6,202,119,0,0,113,0,124,87,1,0,10,6,1,128,218,5, -32,126,0,2,124,127,1,0,61,23,105,0,63,6,248,119,0,0,2,22, -120,1,34,87,0,0,34,119,5,0,221,81,10,48,110,0,123,87,1,0, -10,6,1,128,218,5,32,102,0,2,123,103,1,0,64,6,255,16,132,7, -225,241,6,224,8,192,7,200,57,143,18,0,9,184,97,138,194,5,32,86, -37,1,245,77,32,214,34,1,0,218,229,69,27,232,194,234,60,126,16,0, -221,121,47,111,1,0,224,105,194,61,60,102,16,0,221,97,44,95,1,0, -24,64,43,23,105,0,35,54,4,0,2,22,136,0,34,63,0,0,34,87, -5,0,203,57,63,6,108,120,0,0,106,0,35,143,5,0,99,143,1,0, -195,199,0,0,130,37,60,134,16,0,29,120,207,129,48,23,1,0,60,86, -16,0,34,23,105,0,221,81,2,22,248,0,34,95,0,0,42,55,1,0, -11,96,204,49,25,56,24,64,23,72,34,111,5,0,63,6,178,120,0,0, -109,0,10,208,224,209,234,5,65,218,60,95,4,0,235,217,134,189,26,80, -68,6,255,241,132,7,225,240,6,224,8,192,7,200,57,143,18,0,32,214, -34,1,97,138,194,5,32,86,34,1,197,77,0,218,213,69,27,232,194,234, -60,126,16,0,221,121,47,111,1,0,224,105,178,61,60,102,16,0,221,97, -44,95,1,0,24,64,43,23,105,0,35,54,4,0,2,22,136,0,34,63, -0,0,34,87,5,0,203,57,63,6,36,121,0,0,106,0,35,143,5,0, -99,143,1,0,195,199,0,0,242,29,60,134,16,0,29,120,207,129,48,23, -1,0,60,86,16,0,34,23,105,0,221,81,2,22,0,1,34,95,0,0, -42,55,1,0,11,96,204,49,25,56,24,64,34,111,5,0,63,6,104,121, -0,0,109,0,10,208,224,209,226,5,65,218,60,95,4,0,235,217,150,189, -26,80,68,6,255,240,132,7,225,241,6,224,7,192,8,200,9,184,0,210, -0,218,245,69,27,232,194,234,60,134,16,0,221,129,48,119,1,0,224,113, -210,61,60,110,16,0,29,96,204,105,45,95,1,0,25,64,43,23,105,0, -35,54,4,0,2,22,136,0,34,87,0,0,63,6,208,121,0,0,203,81, -34,95,5,0,10,56,107,0,35,87,5,0,99,87,1,0,195,199,0,0, -242,29,60,142,16,0,29,128,208,137,49,23,1,0,60,86,16,0,34,23, -105,0,221,81,2,22,32,1,34,95,0,0,42,55,1,0,11,96,204,49, -24,56,25,64,23,72,34,119,5,0,63,6,22,122,0,0,110,0,10,208, -229,5,65,218,60,111,4,0,237,217,246,181,26,80,68,6,255,241,132,7, -225,240,6,224,7,192,8,200,32,214,34,1,0,218,229,69,27,232,194,234, -60,134,16,0,221,129,48,119,1,0,224,113,194,61,60,110,16,0,29,96, -204,105,45,95,1,0,25,64,43,23,105,0,35,54,4,0,2,22,136,0, -34,87,0,0,63,6,124,122,0,0,203,81,34,95,5,0,10,56,107,0, -35,87,5,0,99,87,1,0,195,199,0,0,226,29,60,142,16,0,29,128, -208,137,49,23,1,0,60,86,16,0,34,23,105,0,221,81,2,22,40,1, -34,95,0,0,42,55,1,0,11,96,204,49,24,56,25,64,34,119,5,0, -63,6,192,122,0,0,110,0,10,208,229,5,65,218,60,111,4,0,237,217, -134,189,26,80,68,6,255,240,128,7,225,16,6,224,7,216,252,217,186,5, -1,82,181,45,0,234,197,37,29,16,194,18,60,134,16,0,194,129,48,119, -1,0,224,113,162,29,60,110,16,0,2,96,204,105,45,95,1,0,43,23, -105,0,27,56,2,22,48,1,34,87,0,0,63,6,36,123,0,0,203,81, -34,95,5,0,10,48,107,0,97,82,186,5,1,82,245,5,65,234,60,87, -4,0,234,233,166,221,0,82,64,6,255,16,128,7,225,48,6,216,7,208, -186,0,8,232,189,0,123,234,146,13,119,234,242,5,29,6,33,0,194,5, -29,6,81,0,154,45,0,226,181,37,28,16,194,18,59,102,16,0,194,97, -44,87,1,0,224,81,146,29,59,142,16,0,2,128,208,137,49,95,1,0, -26,120,43,23,105,0,15,56,2,22,56,1,34,87,0,0,29,112,203,81, -10,48,14,64,34,111,5,0,63,6,164,123,0,0,109,0,65,226,59,103, -4,0,236,225,182,221,64,6,255,48,130,7,225,112,6,216,7,200,1,226, -1,210,0,234,165,45,29,16,194,18,59,134,16,0,194,129,48,119,1,0, -224,113,130,37,59,110,16,0,2,96,204,105,45,95,1,0,43,23,105,0, -3,56,2,22,64,1,34,87,0,0,63,6,254,123,0,0,203,81,34,95, -5,0,10,48,107,0,224,81,170,5,0,226,35,87,1,0,224,81,202,5, -0,210,0,226,229,5,65,234,59,143,4,0,241,233,198,213,121,215,1,0, -28,80,66,6,255,112,128,7,225,48,7,208,6,232,157,135,7,0,61,127, -4,0,61,23,105,0,90,135,1,0,2,22,24,0,34,87,0,0,90,127, -0,0,221,81,10,48,34,119,5,0,63,6,90,124,0,0,110,0,122,87, -9,0,1,226,0,218,213,37,27,16,194,18,61,102,16,0,194,97,44,87, -1,0,224,81,178,29,61,134,16,0,2,120,207,129,48,95,1,0,252,118, -12,0,43,23,105,0,14,56,2,22,72,1,34,87,0,0,218,57,203,81, -10,48,34,103,5,0,63,6,166,124,0,0,108,0,202,225,252,0,65,218, -61,95,4,0,235,217,150,221,28,80,64,6,255,48,128,7,225,240,6,232, -7,208,58,199,1,0,128,255,8,195,49,6,148,204,1,0,106,143,5,0, -0,202,106,199,9,0,0,226,122,87,1,0,213,61,28,216,194,218,61,126, -16,0,219,121,47,111,1,0,224,105,178,53,29,103,7,0,12,6,17,0, -154,21,61,23,105,0,63,6,26,125,0,0,2,22,88,1,34,87,0,0, -34,95,5,0,221,81,10,48,107,0,252,81,226,29,61,86,16,0,27,136, -209,81,42,23,1,0,26,56,34,23,105,0,61,86,16,0,219,81,2,22, -168,0,34,95,0,0,42,55,1,0,11,96,204,49,34,127,5,0,63,6, -82,125,0,0,111,0,224,81,162,5,65,202,65,226,61,119,4,0,238,225, -150,197,58,55,1,0,25,56,128,255,116,193,122,199,1,0,1,82,64,6, -255,240,128,7,225,16,134,0,60,6,200,73,133,0,59,6,96,75,133,0, -6,16,107,18,153,13,97,18,241,13,242,29,98,18,226,45,101,18,130,53, -229,125,108,18,193,77,194,93,109,18,130,109,111,18,146,61,229,117,32,54, -112,0,128,255,194,6,10,232,224,233,146,13,29,48,191,255,222,236,49,6, -40,80,133,0,125,143,105,0,29,80,197,109,32,54,140,0,128,255,160,6, -10,232,224,233,146,13,29,48,191,255,188,236,48,6,192,81,133,0,125,135, -105,0,29,80,181,93,0,50,128,255,174,127,245,85,32,54,140,0,128,255, -118,6,10,232,224,233,146,13,29,48,191,255,146,236,47,6,0,84,133,0, -125,127,105,0,29,80,229,69,32,54,124,0,128,255,84,6,10,232,224,233, -226,5,29,48,191,255,112,236,125,231,105,0,29,80,133,61,32,54,124,0, -128,255,56,6,10,232,224,233,146,13,29,48,191,255,84,236,46,6,248,76, -133,0,125,119,105,0,29,80,245,37,32,54,124,0,128,255,22,6,10,232, -224,233,226,5,29,48,191,255,50,236,125,223,105,0,29,80,149,29,32,54, -124,0,128,255,250,5,10,232,224,233,146,13,29,48,191,255,22,236,45,6, -144,78,133,0,125,111,105,0,29,80,133,13,6,56,38,6,216,136,132,0, -191,255,144,164,0,82,64,6,255,16,132,7,225,48,6,224,7,208,31,218, -0,234,181,45,29,16,194,18,60,134,16,0,194,129,48,119,1,0,224,113, -146,37,60,110,16,0,2,96,204,105,45,95,1,0,26,64,43,23,105,0, -35,54,4,0,2,22,136,0,34,87,0,0,63,6,248,126,0,0,203,81, -34,95,5,0,10,56,107,0,35,87,5,0,99,87,1,0,195,199,0,0, -178,5,29,216,229,5,65,234,60,143,4,0,241,233,182,213,27,80,68,6, -255,48,132,7,225,243,7,200,25,143,1,0,6,232,93,143,6,0,93,71, -0,0,25,135,5,0,93,135,7,0,25,23,0,0,99,79,5,0,93,79, -1,0,2,6,240,255,25,119,19,0,125,23,4,0,93,119,2,0,183,13, -2,56,38,6,4,137,132,0,191,255,212,163,125,7,4,0,0,82,149,93, -1,194,1,226,0,218,229,61,27,208,194,210,61,182,16,0,252,190,20,0, -218,177,217,185,183,55,1,0,191,255,242,253,118,87,1,0,61,126,16,0, -218,121,47,111,1,0,224,105,226,37,61,102,16,0,218,97,44,95,1,0, -29,87,0,0,43,23,105,0,23,56,2,22,112,0,34,55,0,0,65,82, -203,49,35,79,5,0,35,159,45,0,10,64,99,159,1,0,219,73,34,127, -5,0,63,6,214,127,0,0,111,0,234,0,202,225,252,0,224,81,218,5, -0,194,181,5,0,194,229,5,65,218,61,103,4,0,236,217,134,197,224,193, -226,13,61,23,105,0,63,6,16,128,0,0,2,22,96,1,34,55,0,0, -34,87,5,0,221,49,106,0,224,193,170,5,0,226,28,80,68,6,255,243, -128,7,225,16,6,224,0,218,133,69,27,232,194,234,60,134,16,0,221,129, -48,119,1,0,224,113,226,53,60,110,16,0,29,96,204,105,45,95,1,0, -43,23,105,0,2,22,104,1,34,87,0,0,63,6,96,128,0,0,203,81, -34,95,5,0,10,48,107,0,60,86,16,0,221,81,42,135,1,0,224,129, -226,21,60,126,16,0,29,112,206,121,47,95,1,0,3,58,43,23,105,0, -63,6,152,128,0,0,2,22,80,1,34,87,0,0,34,111,5,0,203,81, -10,48,109,0,60,94,16,0,203,233,125,7,1,0,65,218,60,87,4,0, -234,217,230,189,64,6,255,16,128,7,225,112,6,224,7,216,187,0,8,200, -9,208,0,82,0,234,133,45,29,16,194,18,60,134,16,0,194,129,48,119, -1,0,224,113,226,29,60,110,16,0,2,96,204,105,45,95,1,0,25,64, -43,23,105,0,26,72,2,22,152,0,34,55,0,0,34,87,5,0,203,49, -27,88,11,56,63,6,4,129,0,0,106,0,10,6,224,254,202,5,122,239, -1,0,229,5,65,234,60,135,4,0,240,233,230,213,64,6,255,112,128,7, -225,112,6,224,7,216,187,0,8,200,9,208,0,82,0,234,133,45,29,16, -194,18,60,134,16,0,194,129,48,119,1,0,224,113,226,29,60,110,16,0, -2,96,204,105,45,95,1,0,25,64,43,23,105,0,26,72,2,22,128,1, -34,55,0,0,34,87,5,0,203,49,27,88,11,56,63,6,114,129,0,0, -106,0,10,6,224,254,202,5,122,239,1,0,229,5,65,234,60,135,4,0, -240,233,230,213,64,6,255,112,128,7,225,112,6,224,7,208,8,200,9,216, -0,234,245,37,29,16,194,18,60,134,16,0,194,129,48,119,1,0,224,113, -210,29,60,110,16,0,2,96,204,105,45,95,1,0,26,56,43,23,105,0, -25,64,2,22,240,0,34,87,0,0,27,72,203,81,10,48,34,95,5,0, -63,6,220,129,0,0,107,0,123,239,1,0,10,88,224,81,234,5,65,234, -60,143,4,0,241,233,246,213,11,80,64,6,255,112,128,7,225,16,6,216, -32,230,255,127,0,234,181,37,29,16,194,18,59,134,16,0,194,129,48,119, -1,0,224,113,146,29,59,110,16,0,2,96,204,105,45,95,1,0,43,23, -105,0,2,22,120,1,34,87,0,0,63,6,62,130,0,0,203,81,34,95, -5,0,10,48,107,0,10,16,226,225,167,5,2,224,65,234,59,87,4,0, -234,233,182,221,28,80,64,6,255,16,128,7,225,16,6,216,32,230,255,127, -0,234,181,37,29,16,194,18,59,134,16,0,194,129,48,119,1,0,224,113, -146,29,59,110,16,0,2,96,204,105,45,95,1,0,43,23,105,0,2,22, -112,1,34,87,0,0,63,6,158,130,0,0,203,81,34,95,5,0,10,48, -107,0,10,16,226,225,167,5,2,224,65,234,59,87,4,0,234,233,182,221, -28,80,64,6,255,16,128,7,225,0,7,224,6,232,191,255,186,231,10,64, -29,23,7,0,11,72,123,18,226,13,119,18,194,13,2,6,33,0,146,13, -2,6,81,0,226,5,124,7,1,0,124,7,5,0,229,13,61,103,97,0, -61,111,101,0,168,97,124,103,1,0,225,135,0,0,176,105,169,105,124,111, -5,0,8,80,9,88,64,6,255,0,128,7,193,48,6,232,8,208,9,216, -229,87,64,0,224,7,96,1,29,23,7,0,10,224,123,18,146,13,119,18, -242,5,2,6,33,0,194,5,2,6,81,0,186,29,61,103,89,0,61,111, -93,0,204,209,125,215,89,0,225,135,0,0,208,217,205,217,125,223,93,0, -61,95,101,0,61,87,97,0,235,217,129,13,187,5,234,209,209,5,125,87, -89,0,125,95,93,0,252,47,32,0,64,6,223,48,128,7,33,0,38,79, -101,0,38,71,97,0,233,1,218,5,232,1,186,5,0,82,229,21,38,95, -93,0,38,55,89,0,202,90,6,56,150,58,11,57,202,50,233,1,250,5, -231,1,218,5,6,16,232,23,194,2,197,5,128,255,216,0,10,16,2,80, -64,6,63,0,134,7,225,112,7,216,0,226,6,200,129,255,208,10,10,208, -127,210,162,77,0,234,25,56,28,64,3,48,191,255,54,235,3,143,0,0, -209,142,1,0,195,207,0,0,226,135,0,0,81,129,129,130,217,5,1,98, -252,103,192,0,12,233,65,226,28,6,240,255,150,237,99,239,10,0,99,239, -8,0,35,22,8,0,34,55,1,0,35,62,4,0,129,255,2,24,35,135, -5,0,10,224,48,136,81,233,242,5,26,48,29,56,128,255,102,0,0,226, -149,29,224,217,242,21,229,87,64,0,224,7,96,1,32,126,41,1,123,127, -12,0,10,248,35,111,5,0,251,119,19,0,13,113,123,119,18,0,255,47, -32,0,27,48,31,58,128,255,130,186,28,80,70,6,255,112,33,6,124,28, -130,0,97,0,33,6,218,40,129,0,97,0,33,6,156,28,130,0,97,0, -33,6,226,80,128,0,97,0,33,6,94,83,130,0,97,0,33,6,42,108, -128,0,97,0,128,7,225,0,6,16,7,232,61,135,25,0,0,82,224,129, -170,5,3,82,34,119,110,0,61,127,18,0,34,63,108,0,238,121,207,21, -34,23,113,0,61,231,9,0,125,7,13,0,220,17,125,23,9,0,7,48, -10,56,29,64,191,255,76,134,125,231,9,0,125,7,13,0,229,5,2,48, -10,64,29,72,128,255,200,7,64,6,255,0,128,7,225,0,6,16,7,232, -221,151,22,0,9,82,221,223,22,0,170,5,6,82,34,127,110,0,61,135, -18,0,34,63,108,0,239,129,207,21,34,23,113,0,61,231,9,0,125,7, -13,0,220,17,125,23,9,0,7,48,10,56,29,64,191,255,242,133,125,231, -9,0,125,7,13,0,229,5,2,48,10,64,29,72,128,255,110,7,64,6, -255,0,128,7,225,0,7,232,221,151,22,0,9,82,221,223,22,0,170,5, -6,82,38,23,113,0,61,231,9,0,125,7,13,0,220,17,125,23,9,0, -10,56,38,55,108,0,29,64,191,255,186,133,125,231,9,0,125,7,13,0, -10,48,128,255,68,221,64,6,255,0,128,7,225,0,7,224,6,232,61,87, -108,0,0,18,10,6,240,255,145,21,10,48,128,255,162,226,61,55,108,0, -60,63,1,0,220,223,22,0,194,5,191,255,222,139,181,5,191,255,80,138, -1,18,2,80,64,6,255,0,128,7,33,0,38,87,108,0,0,18,10,6, -240,255,241,5,39,63,1,0,10,48,191,255,32,140,1,18,2,80,64,6, -63,0,1,82,38,23,117,0,0,90,224,17,162,5,2,80,127,0,128,7, -225,112,39,223,25,0,13,138,39,207,16,0,39,215,5,0,103,7,16,0, -6,224,60,23,105,0,103,143,25,0,72,18,34,87,0,0,103,71,5,0, -220,81,10,48,7,232,34,135,5,0,63,6,50,134,0,0,112,0,125,215, -5,0,125,207,16,0,125,223,25,0,9,18,221,223,22,0,170,5,6,18, -28,48,2,56,29,64,128,255,128,7,64,6,255,112,128,7,33,0,9,18, -104,7,1,0,7,80,202,223,22,0,170,5,6,18,2,56,10,64,128,255, -96,7,64,6,63,0,0,18,1,138,226,143,192,0,71,137,242,5,38,119, -108,0,238,17,186,5,0,82,229,5,65,18,2,6,224,255,166,245,1,82, -127,0,92,26,39,143,108,0,99,7,0,0,232,137,170,21,7,135,1,0, -195,7,0,0,7,23,7,0,99,135,2,0,123,18,226,5,119,18,234,5, -195,31,0,0,181,5,195,39,0,0,35,111,0,0,102,111,0,0,35,103, -2,0,6,80,102,103,2,0,68,26,127,0,128,7,225,0,7,232,134,143, -7,0,93,143,1,0,6,135,7,0,93,135,5,0,93,7,0,0,6,127, -1,0,93,127,4,0,6,224,191,255,110,252,61,23,6,0,32,150,0,128, -82,17,202,86,255,127,10,17,125,23,6,0,60,119,85,0,29,111,7,0, -32,150,127,255,224,113,234,23,0,0,82,105,194,102,1,0,199,98,12,105, -93,111,7,0,7,90,60,143,113,0,60,87,108,0,125,143,9,0,93,87, -3,0,93,95,2,0,60,135,117,0,28,127,2,0,125,135,13,0,93,127, -19,0,125,7,16,0,93,7,18,0,1,82,64,6,255,0,128,7,97,0, -6,232,29,143,7,0,123,138,234,5,38,6,56,137,132,0,191,255,172,155, -29,63,1,0,61,71,108,0,38,6,68,137,132,0,191,255,154,155,61,63, -117,0,61,71,113,0,38,6,84,137,132,0,191,255,136,155,29,48,191,255, -196,251,228,87,76,2,10,104,191,106,150,106,10,56,205,57,170,58,38,6, -108,137,132,0,191,255,104,155,64,6,127,0,128,7,97,0,6,232,61,143, -108,0,231,137,202,13,61,55,85,0,224,49,210,5,128,255,86,7,125,7, -85,0,31,130,125,135,108,0,0,82,64,6,127,0,134,7,225,48,8,216, -187,0,6,232,61,215,85,0,7,224,188,0,100,226,234,53,29,23,7,0, -226,217,170,53,123,18,138,53,224,209,226,5,125,7,85,0,26,48,128,255, -22,7,29,48,35,62,4,0,191,255,134,250,61,23,105,0,35,79,9,0, -2,22,232,0,34,87,0,0,35,71,5,0,221,81,10,48,34,103,5,0, -63,6,88,136,0,0,108,0,61,23,105,0,31,58,2,22,152,0,34,87, -0,0,31,66,221,81,10,48,3,72,34,95,5,0,63,6,122,136,0,0, -107,0,224,225,218,5,29,127,7,0,239,217,178,5,99,226,138,61,61,111, -85,0,224,105,226,5,125,7,85,0,26,48,128,255,164,6,99,226,218,45, -125,7,89,0,125,7,93,0,224,209,242,37,29,95,7,0,123,90,234,5, -0,50,128,255,142,6,125,87,85,0,61,55,85,0,224,49,162,29,29,56, -128,255,132,6,224,81,210,21,61,87,85,0,224,81,242,13,42,23,241,11, -3,58,72,18,34,95,0,0,63,6,244,136,0,0,202,89,34,87,5,0, -11,48,106,0,125,7,85,0,97,226,202,45,29,23,7,0,226,217,138,45, -61,111,85,0,224,105,202,37,123,18,234,5,0,50,128,255,50,6,125,87, -85,0,61,55,85,0,224,49,146,29,29,56,128,255,40,6,224,81,194,21, -61,87,85,0,224,81,226,13,42,23,241,11,3,58,72,18,34,55,0,0, -34,95,5,0,202,49,63,6,78,137,0,0,107,0,125,7,85,0,70,6, -255,48,230,57,226,87,0,0,127,0,103,7,1,0,0,82,127,0,71,7, -0,0,38,135,108,0,134,143,7,0,71,135,2,0,71,143,1,0,38,119, -117,0,6,127,1,0,103,119,9,0,71,7,7,0,71,7,6,0,71,7, -5,0,71,7,4,0,71,127,3,0,1,82,127,0,128,7,97,0,6,232, -29,135,7,0,0,74,16,6,225,255,170,13,93,7,2,0,125,7,89,0, -125,7,93,0,31,122,93,127,7,0,29,119,7,0,224,113,202,5,31,106, -93,111,7,0,61,23,108,0,224,17,230,13,2,6,240,255,190,13,61,87, -117,0,224,81,242,5,2,48,191,255,204,144,10,120,1,74,213,5,32,126, -0,1,93,7,7,0,125,127,110,0,9,80,64,6,127,0,128,7,97,0, -35,23,9,0,6,232,93,71,0,0,34,111,1,0,7,135,1,0,1,122, -93,111,1,0,93,135,6,0,125,127,4,0,7,103,5,0,13,118,1,0, -93,103,7,0,98,119,1,0,7,95,2,0,125,239,17,0,125,95,10,0, -98,90,198,5,12,6,225,255,202,5,7,122,125,127,10,0,61,119,10,0, -1,106,238,111,192,0,125,111,14,0,39,127,9,0,125,111,8,0,125,127, -113,0,95,106,39,119,13,0,7,103,19,0,125,111,12,0,93,103,2,0, -125,119,117,0,7,95,3,0,125,119,121,0,39,55,6,0,125,95,108,0, -209,50,177,50,6,56,61,71,97,0,61,79,101,0,191,58,128,255,176,4, -10,48,11,56,32,70,0,4,0,74,191,255,210,249,125,87,89,0,61,23, -105,0,125,95,93,0,2,22,96,1,34,55,0,0,34,87,5,0,221,49, -63,6,216,138,0,0,106,0,61,87,14,0,61,23,117,0,125,7,101,0, -234,23,194,2,125,23,97,0,234,5,1,82,125,87,97,0,125,7,101,0, -1,82,64,6,127,0,128,7,225,0,6,232,167,0,0,226,127,58,242,5, -123,58,210,37,7,6,17,0,146,53,229,53,29,135,7,0,123,130,170,53, -61,87,89,0,61,111,101,0,61,95,93,0,61,103,97,0,237,89,129,45, -187,5,236,81,209,37,61,55,85,0,93,63,7,0,224,49,210,5,128,255, -246,3,125,7,85,0,125,7,89,0,125,7,93,0,229,21,29,127,7,0, -127,122,170,21,29,119,0,0,224,113,234,13,93,63,7,0,125,7,89,0, -125,7,93,0,245,5,61,111,108,0,232,105,186,5,32,230,32,1,28,80, -64,6,255,0,167,0,0,18,224,57,250,5,38,135,108,0,232,129,186,5, -32,22,32,1,2,80,127,0,38,135,108,0,0,18,240,57,250,13,38,111, -113,0,40,119,1,0,173,113,104,119,1,0,104,7,5,0,38,103,121,0, -236,113,169,5,2,18,2,80,127,0,128,7,225,48,8,16,35,223,25,0, -35,215,21,0,6,232,61,135,108,0,32,230,35,1,231,129,194,5,32,86, -35,1,245,93,2,127,0,0,2,87,1,0,224,121,138,93,2,119,3,0, -14,6,240,255,177,85,108,82,178,5,109,82,250,77,32,230,36,1,221,199, -2,0,242,5,26,118,0,8,225,127,0,0,219,121,181,5,26,112,27,120, -14,96,15,104,34,87,13,0,194,199,19,0,178,5,10,86,0,8,224,105, -251,53,177,5,234,97,203,53,34,135,9,0,12,112,125,135,113,0,125,119, -121,0,31,106,2,87,3,0,26,120,125,87,108,0,125,127,117,0,61,87, -14,0,93,111,7,0,234,127,194,2,125,127,97,0,125,7,101,0,125,7, -89,0,61,23,105,0,125,7,93,0,2,22,96,1,34,87,0,0,0,226, -221,81,10,48,34,103,5,0,63,6,152,140,0,0,108,0,97,82,226,5, -32,230,35,1,31,90,125,95,108,0,28,80,64,6,255,48,142,7,225,240, -41,135,5,0,6,208,58,23,113,0,41,87,9,0,41,127,16,0,202,17, -99,23,9,0,99,7,13,0,7,200,41,119,25,0,99,135,5,0,99,119, -25,0,99,127,16,0,8,192,233,111,23,0,99,111,22,0,0,218,41,239, -1,0,41,231,18,0,195,151,22,0,128,255,216,178,44,6,148,204,1,0, -106,103,5,0,106,239,9,0,99,87,1,0,58,23,110,0,226,225,182,5, -2,232,165,5,28,232,99,239,18,0,65,218,251,0,189,225,252,0,224,225, -234,21,229,87,64,0,224,7,96,1,35,111,1,0,45,103,0,0,10,248, -219,97,109,103,0,0,255,47,32,0,25,48,24,56,3,64,191,255,208,125, -78,6,255,240,25,48,24,56,3,64,191,255,194,125,35,23,5,0,34,127, -17,0,35,135,16,0,137,122,176,121,239,0,253,121,138,13,99,7,16,0, -2,22,20,0,99,23,5,0,245,21,253,121,142,21,29,80,175,81,2,22, -20,0,34,95,17,0,137,90,171,81,172,253,203,81,99,87,16,0,99,23, -5,0,229,5,35,103,16,0,221,97,99,103,16,0,35,103,9,0,29,120, -191,122,204,233,99,239,9,0,35,111,13,0,225,135,0,0,208,121,205,121, -99,127,13,0,133,165,142,7,225,240,6,224,60,127,110,0,8,232,61,135, -18,0,7,192,239,129,207,21,60,23,113,0,61,223,9,0,219,17,125,23, -9,0,125,7,13,0,60,55,108,0,191,255,52,125,10,200,125,223,9,0, -125,7,13,0,181,117,61,111,5,0,61,103,16,0,60,23,113,0,61,87, -9,0,99,111,5,0,99,7,13,0,202,17,99,23,9,0,99,103,16,0, -61,95,25,0,61,87,1,0,99,95,25,0,99,87,1,0,253,135,23,0, -99,135,22,0,0,210,195,151,22,0,61,223,18,0,60,127,110,0,60,55, -108,0,239,217,239,223,60,235,253,0,99,239,18,0,24,56,3,64,191,255, -200,124,10,16,224,209,194,5,122,23,13,0,165,5,2,200,2,208,189,217, -146,61,35,23,5,0,34,95,17,0,35,87,16,0,137,90,139,81,234,0, -253,81,138,13,99,7,16,0,2,22,20,0,99,23,5,0,245,21,253,81, -142,21,29,88,170,89,2,22,20,0,34,87,17,0,137,82,170,89,172,253, -202,89,99,95,16,0,99,23,5,0,229,5,35,111,16,0,221,105,99,111, -16,0,35,103,9,0,29,120,191,122,204,233,99,239,9,0,35,111,13,0, -225,135,0,0,208,121,205,121,99,127,13,0,149,181,25,80,78,6,255,240, -128,7,225,0,6,232,7,224,224,233,210,29,49,6,200,73,133,0,61,55, -85,0,125,143,105,0,224,49,178,5,128,255,42,0,61,63,108,0,38,6, -124,137,132,0,191,255,16,148,47,6,48,72,133,0,125,127,105,0,129,226, -201,5,29,48,191,255,48,245,64,6,255,0,33,6,162,139,129,0,97,0, -33,6,220,151,129,0,97,0,33,6,54,111,129,0,97,0,33,6,198,80, -130,0,97,0,128,7,33,0,0,66,128,255,84,4,64,6,63,0,128,7, -33,0,1,66,128,255,70,4,64,6,63,0,128,7,225,243,8,192,6,224, -60,207,8,0,7,232,61,223,13,0,61,215,9,0,251,1,210,29,60,71, -14,0,26,48,8,72,191,74,27,56,191,255,230,244,10,48,11,56,25,64, -25,72,191,74,191,255,168,255,60,71,4,0,10,176,8,72,191,74,22,48, -11,184,23,56,191,255,148,255,10,96,11,104,229,13,0,186,60,111,14,0, -26,176,237,183,194,2,60,103,4,0,249,183,34,2,246,103,34,2,0,106, -26,80,172,81,10,16,249,87,194,2,10,112,249,119,34,2,174,17,234,45, -61,103,18,0,249,97,170,45,61,215,9,0,61,223,13,0,125,183,9,0, -125,191,13,0,60,134,16,0,194,82,10,96,208,81,42,23,1,0,29,56, -34,23,105,0,60,86,16,0,204,81,2,22,48,0,34,95,0,0,42,55, -1,0,11,96,204,49,24,64,34,119,5,0,63,6,72,144,0,0,110,0, -125,215,9,0,125,223,13,0,229,5,28,48,29,56,1,66,128,255,94,3, -64,6,255,243,128,7,225,48,6,208,31,226,31,234,0,218,197,37,27,16, -194,18,58,126,16,0,194,121,47,111,1,0,224,105,162,29,58,102,16,0, -194,97,44,95,1,0,43,23,105,0,63,6,164,144,0,0,2,22,24,0, -34,55,0,0,34,87,5,0,203,49,106,0,253,89,235,5,177,5,252,81, -185,5,10,224,11,232,65,218,58,23,4,0,226,217,166,221,31,82,253,81, -234,5,252,81,202,5,0,82,0,90,229,29,2,64,2,72,191,74,28,48, -29,56,191,255,126,254,10,48,58,239,14,0,11,56,224,233,247,13,29,64, -29,72,191,74,191,255,152,243,10,48,11,56,29,64,29,72,191,74,191,255, -90,254,10,48,11,56,6,80,7,88,64,6,255,48,128,7,225,0,6,232, -7,224,191,255,16,223,61,143,108,0,92,143,2,0,64,6,255,0,128,7, -97,0,6,232,61,63,8,0,38,6,80,138,132,0,7,128,191,130,159,130, -208,57,161,58,191,255,244,145,29,48,191,255,230,223,64,6,127,0,130,7, -225,0,35,255,17,0,6,232,7,23,0,0,7,127,1,0,125,23,4,0, -93,127,6,0,2,6,240,255,191,5,224,17,170,13,2,56,38,6,100,138, -132,0,191,255,186,145,0,82,128,7,60,1,39,103,9,0,0,112,204,113, -39,95,13,0,225,135,0,0,208,89,125,119,89,0,125,95,93,0,1,122, -7,95,2,0,61,135,4,0,235,127,192,0,125,95,10,0,125,95,108,0, -125,127,8,0,15,110,255,255,239,128,125,111,12,0,125,135,14,0,11,16, -100,18,190,5,224,17,186,5,105,18,151,13,2,56,38,6,160,138,132,0, -191,255,88,145,0,82,213,109,99,255,1,0,29,48,191,255,52,237,10,224, -224,225,146,85,0,122,149,53,15,80,194,82,61,118,16,0,206,81,42,23, -1,0,1,130,34,23,14,0,0,98,1,106,236,111,192,0,226,105,186,5, -0,130,213,5,65,98,12,6,224,255,233,245,61,95,10,0,224,89,178,5, -97,130,202,21,97,130,202,5,0,96,0,80,181,5,2,86,255,255,125,103, -10,0,61,119,4,0,125,87,12,0,226,112,125,23,8,0,125,119,14,0, -229,5,65,122,61,103,4,0,236,121,214,205,61,23,105,0,63,6,120,146, -0,0,2,22,24,0,34,87,0,0,34,95,5,0,221,81,10,48,107,0, -10,48,61,71,14,0,11,56,8,72,191,74,191,255,0,242,125,87,97,0, -125,95,101,0,61,95,101,0,61,87,97,0,235,1,234,13,234,1,202,13, -38,6,224,138,132,0,191,255,138,144,0,226,1,82,125,87,97,0,125,7, -101,0,28,80,66,6,255,0,128,7,97,0,6,232,191,255,52,239,61,119, -8,0,10,16,2,6,1,128,130,13,238,17,130,21,61,135,4,0,240,23, -32,2,181,13,32,110,128,0,14,6,128,255,61,95,4,0,237,119,46,19, -235,23,32,2,2,80,64,6,127,0,128,7,97,0,6,232,191,255,86,239, -10,16,2,6,1,128,186,5,61,23,8,0,2,80,64,6,127,0,130,7, -225,243,6,232,8,200,9,224,191,255,108,238,10,192,224,193,194,69,61,71, -8,0,57,215,1,0,8,72,99,71,2,0,191,74,57,223,5,0,26,48, -27,56,191,255,66,241,10,176,11,184,61,95,101,0,61,87,97,0,235,185, -209,5,187,5,234,177,161,5,0,194,61,71,14,0,22,48,8,72,191,74, -23,56,191,255,234,251,35,71,2,0,60,231,1,0,8,72,232,231,32,2, -28,232,191,234,202,225,225,135,0,0,208,233,203,233,191,74,22,48,23,56, -191,255,196,251,170,209,225,119,0,0,174,217,171,217,220,209,121,215,1,0, -225,119,0,0,206,217,221,217,121,223,5,0,24,80,66,6,255,243,150,7, -225,240,8,192,7,224,60,215,9,0,6,232,60,223,13,0,61,207,8,0, -251,1,210,29,61,71,14,0,26,48,8,72,191,74,27,56,191,255,168,240, -10,48,11,56,25,64,25,72,191,74,191,255,106,251,99,95,33,0,99,87, -29,0,10,48,61,71,4,0,11,56,8,72,191,74,191,255,82,251,149,21, -61,111,14,0,26,112,237,119,194,2,249,119,34,2,99,7,33,0,99,119, -29,0,61,87,4,0,0,90,238,87,34,2,26,112,170,113,61,23,12,0, -14,80,224,17,146,13,61,127,10,0,239,119,128,0,99,119,37,0,74,17, -165,13,10,88,249,95,194,2,99,95,37,0,10,16,249,95,34,2,171,17, -60,223,18,0,99,23,41,0,27,96,194,97,249,97,187,5,128,7,52,2, -61,87,14,0,234,217,135,21,61,135,12,0,224,129,194,13,29,48,28,56, -24,72,35,70,28,0,128,255,192,2,97,82,186,5,128,7,180,2,60,215, -5,0,60,111,25,0,60,119,16,0,99,111,25,0,35,87,41,0,35,103, -29,0,35,111,33,0,204,81,225,135,0,0,205,129,99,215,5,0,99,119, -16,0,99,87,9,0,99,135,13,0,252,103,23,0,99,103,22,0,195,151, -22,0,60,231,1,0,128,255,248,170,43,6,148,204,1,0,106,95,5,0, -106,231,9,0,99,87,1,0,35,127,41,0,61,87,8,0,35,23,37,0, -175,81,99,87,18,0,224,193,202,29,2,80,194,82,61,110,16,0,202,105, -45,23,1,0,61,94,16,0,34,23,105,0,203,81,72,18,34,95,0,0, -42,55,1,0,11,96,204,49,3,56,34,87,5,0,63,6,54,149,0,0, -106,0,197,29,61,94,16,0,61,126,16,0,2,80,194,82,10,112,206,121, -47,23,1,0,203,81,34,23,105,0,42,55,1,0,2,22,16,0,34,95, -0,0,3,56,203,49,34,103,5,0,63,6,110,149,0,0,108,0,35,87, -29,0,35,95,33,0,99,87,9,0,99,95,13,0,1,226,128,7,12,1, -2,80,58,23,17,0,35,95,16,0,137,18,171,17,245,5,26,214,20,0, -58,23,17,0,0,90,137,18,162,81,156,253,203,17,194,81,99,87,16,0, -99,215,5,0,61,23,8,0,65,226,226,217,175,21,99,223,18,0,229,87, -64,0,224,7,96,1,35,95,1,0,10,248,43,87,0,0,220,81,107,87, -0,0,255,47,32,0,181,5,99,23,18,0,35,135,37,0,61,127,4,0, -65,130,99,135,37,0,239,129,202,21,99,7,37,0,61,87,8,0,35,103, -9,0,10,120,191,122,204,81,99,87,9,0,35,111,13,0,225,135,0,0, -208,121,205,121,99,127,13,0,35,23,37,0,224,193,202,29,2,80,194,82, -61,102,16,0,202,97,44,23,1,0,61,94,16,0,34,23,105,0,203,81, -72,18,34,95,0,0,42,55,1,0,11,96,204,49,3,56,34,135,5,0, -63,6,84,150,0,0,112,0,197,29,61,94,16,0,61,118,16,0,2,80, -194,82,10,104,205,113,46,23,1,0,203,81,34,23,105,0,42,55,1,0, -2,22,16,0,34,103,0,0,3,56,204,49,34,95,5,0,63,6,140,150, -0,0,107,0,35,23,18,0,162,217,224,217,183,5,191,7,238,254,197,85, -60,215,9,0,35,111,33,0,60,223,13,0,35,103,29,0,2,80,10,112, -204,113,124,119,9,0,225,135,0,0,16,120,205,121,124,127,13,0,0,90, -35,23,37,0,28,56,224,193,202,29,61,134,16,0,2,80,194,82,10,120, -207,129,48,23,1,0,61,94,16,0,34,23,105,0,203,81,72,18,34,95, -0,0,42,55,1,0,11,96,204,49,34,111,5,0,63,6,2,151,0,0, -109,0,197,29,61,94,16,0,2,96,194,98,12,80,202,89,43,23,1,0, -63,6,58,151,0,0,34,23,105,0,61,94,16,0,203,97,2,22,16,0, -34,95,0,0,44,103,1,0,11,48,34,127,5,0,204,49,111,0,124,215, -9,0,124,223,13,0,86,6,255,240,148,7,225,243,8,200,6,232,99,79, -9,0,38,6,180,215,255,255,7,216,0,58,129,255,28,40,224,81,194,5, -0,82,128,7,226,2,61,135,4,0,98,130,206,5,0,82,128,7,212,2, -47,6,204,228,140,0,59,119,25,0,99,7,28,0,99,119,37,0,99,127, -17,0,251,111,23,0,99,111,34,0,59,231,1,0,195,151,34,0,128,255, -48,168,44,6,148,204,1,0,106,103,5,0,106,231,9,0,99,87,13,0, -10,88,61,87,4,0,107,87,0,0,57,111,5,0,57,87,13,0,57,103, -1,0,10,112,204,113,225,79,0,0,205,73,99,79,25,0,99,119,21,0, -99,7,1,0,59,215,5,0,61,231,8,0,57,207,9,0,59,191,18,0, -170,225,59,223,16,0,128,7,34,2,99,7,30,0,27,192,99,215,5,0, -40,6,204,228,140,0,0,178,23,248,188,185,224,185,167,21,58,23,17,0, -28,80,137,18,187,17,245,5,26,214,20,0,58,23,17,0,0,218,137,18, -162,81,156,253,219,17,10,216,194,217,35,79,5,0,61,87,4,0,24,56, -61,127,10,0,10,54,255,255,239,55,192,0,220,49,35,111,30,0,166,249, -220,105,99,111,30,0,181,77,41,23,17,0,137,18,224,57,199,37,41,103, -1,0,167,17,201,58,7,120,191,122,7,112,204,113,225,135,0,0,41,111, -5,0,208,121,205,121,104,127,5,0,104,119,1,0,41,127,9,0,199,121, -104,127,9,0,41,103,13,0,199,97,104,103,13,0,41,127,17,0,167,121, -104,127,17,0,0,58,213,21,41,87,1,0,104,87,1,0,41,87,5,0, -104,87,5,0,41,111,9,0,104,111,9,0,41,103,13,0,104,103,13,0, -41,95,17,0,104,95,17,0,162,225,140,13,28,80,40,135,17,0,201,82, -202,129,104,135,17,0,9,78,20,0,8,70,20,0,65,178,224,225,223,181, -224,249,183,29,61,127,8,0,24,56,35,79,5,0,239,249,41,23,17,0, -239,255,60,227,137,18,167,17,245,5,9,78,20,0,41,23,17,0,0,58, -137,18,162,49,156,253,199,17,6,192,194,193,99,79,5,0,224,249,207,133, -35,151,9,0,224,145,218,29,61,94,16,0,61,126,16,0,25,80,194,82, -10,112,206,121,47,23,1,0,203,81,34,23,105,0,42,55,1,0,72,18, -34,95,0,0,35,62,12,0,203,49,34,103,5,0,63,6,110,153,0,0, -108,0,213,29,25,128,194,130,61,86,16,0,208,81,42,23,1,0,35,62, -12,0,34,23,105,0,61,86,16,0,208,81,2,22,16,0,34,95,0,0, -42,55,1,0,11,96,204,49,34,119,5,0,63,6,168,153,0,0,110,0, -61,135,8,0,61,119,12,0,16,224,35,103,21,0,35,111,25,0,76,113, -174,97,225,79,0,0,169,105,99,111,25,0,99,103,21,0,0,120,61,111, -4,0,65,202,237,201,134,21,0,202,16,120,191,122,16,112,204,113,99,119, -21,0,35,111,25,0,225,135,0,0,208,121,205,121,99,127,25,0,22,6, -0,255,166,13,38,6,28,139,132,0,32,62,89,4,0,66,191,255,178,128, -224,81,35,151,1,0,65,146,99,151,1,0,35,151,1,0,61,103,4,0, -236,145,190,5,191,7,214,253,38,6,180,215,255,255,129,255,20,38,224,81, -146,13,38,6,48,139,132,0,32,62,183,1,0,66,191,255,120,128,1,82, -84,6,255,243,130,7,225,112,7,224,188,0,8,208,9,200,0,218,6,232, -3,56,191,255,84,225,35,135,1,0,224,129,202,45,127,226,194,5,123,226, -226,29,245,37,29,127,7,0,123,122,186,37,61,87,89,0,61,111,101,0, -61,95,93,0,61,103,97,0,237,89,145,29,187,5,236,81,225,21,61,55, -85,0,93,231,7,0,224,49,130,21,191,255,154,244,125,7,85,0,181,13, -29,119,7,0,127,114,250,5,93,231,7,0,125,7,89,0,125,7,93,0, -35,23,1,0,97,18,210,5,224,17,170,13,123,226,130,13,29,48,28,56, -26,64,25,72,191,255,216,229,10,216,61,23,105,0,63,6,250,154,0,0, -2,22,96,1,34,87,0,0,34,95,5,0,221,81,10,48,107,0,27,80, -66,6,255,112,128,7,225,16,6,232,29,135,7,0,1,226,16,6,225,255, -170,13,93,7,2,0,125,7,89,0,125,7,93,0,31,122,93,127,7,0, -0,218,229,37,27,16,194,18,61,110,16,0,194,105,45,95,1,0,224,89, -186,5,0,226,245,29,61,134,16,0,208,17,34,95,1,0,43,23,105,0, -63,6,100,155,0,0,2,22,96,1,34,87,0,0,34,127,5,0,203,81, -10,48,111,0,224,81,218,5,93,7,7,0,0,226,229,5,65,218,61,119, -4,0,238,217,134,221,29,23,7,0,127,18,226,5,123,18,194,5,93,7, -7,0,0,226,28,80,64,6,255,16,134,7,225,48,8,216,187,0,6,232, -61,215,85,0,7,224,188,0,100,226,234,53,29,23,7,0,226,217,170,53, -123,18,138,53,224,209,226,5,125,7,85,0,26,48,191,255,126,243,29,48, -35,62,4,0,191,255,238,230,61,23,105,0,35,79,9,0,2,22,232,0, -34,87,0,0,35,71,5,0,221,81,10,48,34,103,5,0,63,6,240,155, -0,0,108,0,61,23,105,0,31,58,2,22,152,0,34,87,0,0,31,66, -221,81,10,48,3,72,34,95,5,0,63,6,18,156,0,0,107,0,224,225, -218,5,29,127,7,0,239,217,178,5,99,226,138,61,61,111,85,0,224,105, -226,5,125,7,85,0,26,48,191,255,12,243,99,226,218,45,125,7,89,0, -125,7,93,0,224,209,242,37,29,95,7,0,123,90,234,5,0,50,191,255, -246,242,125,87,85,0,61,55,85,0,224,49,162,29,29,56,191,255,236,242, -224,81,210,21,61,87,85,0,224,81,242,13,42,23,241,11,3,58,72,18, -34,95,0,0,63,6,140,156,0,0,202,89,34,87,5,0,11,48,106,0, -125,7,85,0,97,226,218,45,29,23,7,0,226,217,154,45,61,111,85,0, -224,105,170,45,123,18,234,5,0,50,191,255,154,242,125,87,85,0,61,55, -85,0,224,49,242,29,29,56,191,255,144,242,224,81,162,29,61,87,85,0, -224,81,226,13,42,23,241,11,3,58,72,18,34,55,0,0,34,95,5,0, -202,49,63,6,230,156,0,0,107,0,125,7,85,0,229,5,29,48,28,56, -27,64,191,255,74,222,70,6,255,48,128,7,225,112,6,232,7,208,8,200, -0,226,149,61,28,16,194,18,61,134,16,0,194,129,48,119,1,0,32,222, -35,1,224,113,210,45,61,110,16,0,2,96,204,105,45,95,1,0,26,56, -43,23,105,0,25,64,2,22,208,0,34,87,0,0,63,6,74,157,0,0, -203,81,34,95,5,0,10,48,107,0,10,216,10,16,224,81,138,21,61,23, -105,0,63,6,110,157,0,0,2,22,96,1,34,87,0,0,34,143,5,0, -221,81,10,48,113,0,149,13,2,6,220,254,226,5,65,226,61,127,4,0, -239,225,214,197,27,80,64,6,255,112,128,7,225,16,6,224,60,23,17,0, -7,232,130,23,7,0,106,18,210,5,108,18,178,5,111,18,250,5,28,48, -29,56,191,255,128,222,10,216,245,61,28,48,76,234,29,56,191,255,114,222, -10,216,29,48,0,58,12,66,191,255,104,133,32,134,255,0,93,135,0,0, -93,7,1,0,0,18,133,21,2,120,194,122,60,102,16,0,204,121,47,135, -1,0,61,94,2,0,16,135,7,0,194,89,75,135,0,0,65,18,60,127, -4,0,239,17,230,237,6,114,84,234,93,119,1,0,60,23,105,0,15,104, -2,22,24,0,34,87,0,0,93,111,0,0,220,81,10,48,34,103,5,0, -63,6,36,158,0,0,108,0,125,87,9,0,66,218,60,23,105,0,60,95, -10,0,2,22,144,1,34,55,0,0,93,95,2,0,220,49,34,87,5,0, -63,6,76,158,0,0,106,0,93,7,5,0,93,87,3,0,93,7,6,0, -168,82,93,87,4,0,93,7,7,0,27,80,64,6,255,16,128,7,225,112, -6,208,0,226,0,202,0,218,149,45,58,134,16,0,27,232,194,234,29,120, -207,129,48,23,1,0,58,86,16,0,34,23,105,0,221,81,2,22,144,1, -34,95,0,0,42,55,1,0,11,96,204,49,34,111,5,0,63,6,172,158, -0,0,109,0,249,87,192,0,10,225,58,86,16,0,202,233,61,143,1,0, -49,143,4,0,220,0,209,201,65,218,58,135,4,0,240,217,214,213,28,80, -202,0,64,6,255,112,128,7,225,0,6,232,7,224,224,233,210,45,49,6, -40,80,133,0,61,55,85,0,125,143,105,0,224,49,178,5,191,255,72,240, -61,23,105,0,63,6,20,159,0,0,2,22,104,1,34,87,0,0,34,135, -5,0,221,81,10,48,112,0,29,63,0,0,29,71,1,0,38,6,60,139, -132,0,191,255,14,132,45,6,48,72,133,0,125,111,105,0,129,226,201,5, -29,48,191,255,46,229,64,6,255,0,128,7,33,0,38,23,105,0,63,6, -92,159,0,0,72,18,34,87,0,0,34,135,5,0,198,81,10,48,112,0, -64,6,63,0,128,7,33,0,38,23,105,0,63,6,128,159,0,0,2,22, -16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0, -128,7,33,0,38,23,105,0,63,6,164,159,0,0,2,22,16,0,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,1,82,127,0, -0,82,127,0,32,86,34,1,127,0,0,82,127,0,0,82,127,0,0,82, -127,0,31,82,127,0,128,7,33,0,38,23,105,0,63,6,230,159,0,0, -2,22,208,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6, -63,0,128,7,97,0,6,16,34,55,124,0,34,95,126,0,194,49,224,89, -206,5,34,23,129,0,213,13,34,87,128,0,198,81,42,87,1,0,195,90, -202,89,43,87,0,0,43,23,5,0,202,49,2,232,63,6,38,160,0,0, -125,0,64,6,127,0,146,7,225,243,6,232,61,71,10,0,7,224,8,72, -60,199,9,0,191,74,60,207,13,0,24,48,25,56,128,255,28,23,10,176, -60,87,25,0,61,215,14,0,61,119,12,0,60,103,5,0,60,223,18,0, -11,184,60,95,16,0,99,103,13,0,99,207,21,0,99,199,17,0,99,95, -24,0,60,135,22,0,99,87,33,0,99,135,30,0,60,231,1,0,88,113, -174,209,250,217,255,5,27,16,99,231,9,0,0,218,0,226,245,13,128,255, -52,159,46,6,148,204,1,0,106,119,5,0,10,200,106,231,9,0,26,16, -99,207,9,0,2,224,99,23,26,0,22,64,61,55,81,0,23,72,99,7, -1,0,128,255,44,205,10,208,35,199,9,0,128,255,254,158,106,199,9,0, -106,215,33,0,45,6,126,66,1,0,61,23,134,0,61,55,132,0,99,87, -9,0,106,111,5,0,221,49,224,17,206,5,61,23,137,0,213,13,61,87, -136,0,198,81,42,87,1,0,195,18,202,17,34,87,0,0,34,23,5,0, -202,49,2,208,35,62,8,0,63,6,36,161,0,0,122,0,10,192,35,215, -9,0,229,87,64,0,224,7,96,1,58,255,0,0,216,249,122,255,0,0, -10,192,248,47,32,0,224,249,138,13,26,48,58,95,5,0,63,6,84,161, -0,0,107,0,1,146,99,151,5,0,128,7,40,1,35,135,13,0,35,79, -24,0,48,23,17,0,35,103,17,0,137,18,169,17,28,120,191,122,28,112, -204,113,99,119,17,0,35,111,21,0,225,71,0,0,200,121,205,121,99,127, -21,0,245,5,16,134,20,0,48,23,17,0,0,74,137,18,162,225,156,253, -35,151,5,0,99,135,13,0,201,17,194,225,99,231,24,0,65,146,61,23, -14,0,99,151,5,0,226,217,183,5,2,224,133,21,229,87,64,0,224,7, -96,1,10,248,35,143,5,0,57,87,0,0,209,81,121,87,0,0,255,47, -32,0,27,224,99,231,26,0,65,178,22,64,225,95,0,0,203,185,61,55, -81,0,23,72,99,7,1,0,128,255,250,203,10,208,128,255,208,157,106,207, -9,0,106,215,33,0,45,6,126,66,1,0,61,23,134,0,61,55,132,0, -99,87,9,0,106,111,5,0,221,49,224,17,206,5,61,23,137,0,213,13, -61,87,136,0,198,81,42,87,1,0,195,18,202,17,34,87,0,0,34,23, -5,0,202,49,2,208,35,62,8,0,63,6,82,162,0,0,122,0,10,192, -35,215,9,0,229,87,64,0,224,7,96,1,58,255,0,0,216,249,122,255, -0,0,10,192,248,47,32,0,224,249,138,13,26,48,58,95,5,0,63,6, -130,162,0,0,107,0,188,217,224,217,183,5,191,7,214,254,82,6,255,243, -128,7,97,48,1,82,6,232,61,135,17,0,0,90,224,129,130,21,16,88, -43,23,105,0,63,6,192,162,0,0,2,22,24,0,34,87,0,0,34,127, -5,0,203,81,10,48,111,0,10,208,1,82,11,216,61,119,21,0,0,90, -224,113,130,21,14,88,43,23,105,0,63,6,238,162,0,0,2,22,24,0, -34,87,0,0,34,111,5,0,203,81,10,48,109,0,10,96,11,104,235,217, -235,5,177,5,234,209,185,5,26,96,27,104,12,80,13,88,64,6,127,48, -132,7,225,240,6,224,7,192,191,255,252,201,97,82,186,5,1,82,229,93, -28,23,7,0,0,234,2,6,17,0,194,5,2,6,33,0,170,21,60,23, -105,0,63,6,74,163,0,0,2,22,88,1,34,87,0,0,34,127,5,0, -220,81,10,48,111,0,1,234,234,239,192,0,224,233,234,207,0,0,0,218, -1,114,251,119,192,0,88,113,194,53,0,210,229,45,26,136,194,138,60,86, -16,0,209,81,42,23,1,0,27,64,34,23,105,0,60,86,16,0,209,81, -2,22,136,0,34,95,0,0,42,63,1,0,11,96,204,57,35,54,4,0, -34,127,5,0,63,6,160,163,0,0,111,0,35,119,5,0,99,119,1,0, -195,199,0,0,146,13,1,18,250,23,192,0,2,96,93,97,186,5,2,233, -65,202,65,210,60,95,4,0,235,209,134,213,65,218,27,6,224,255,214,197, -97,202,231,87,0,0,68,6,255,240,128,7,97,0,6,232,191,255,94,202, -224,81,202,21,221,143,2,0,61,23,105,0,1,138,2,22,96,1,34,87, -0,0,125,143,117,0,221,81,10,48,34,135,5,0,63,6,14,164,0,0, -112,0,1,82,64,6,127,0,128,7,97,0,7,232,191,255,128,202,1,138, -125,143,1,0,64,6,127,0,134,7,225,241,6,232,7,224,8,200,191,255, -220,211,10,16,2,6,222,254,178,5,128,7,52,1,60,223,13,0,60,215, -9,0,25,56,99,223,9,0,99,215,5,0,35,70,4,0,61,23,105,0, -3,72,2,22,240,0,34,87,0,0,34,127,5,0,221,81,10,48,63,6, -118,164,0,0,111,0,224,81,202,5,32,86,9,1,165,125,35,119,1,0, -61,71,10,0,224,113,226,191,0,0,8,72,35,199,5,0,191,74,35,207, -9,0,24,48,25,56,128,255,196,18,10,64,29,23,7,0,11,72,2,6, -17,0,210,13,2,6,33,0,218,13,61,95,93,0,61,87,89,0,233,89, -251,5,177,5,232,81,203,5,32,86,34,1,181,85,61,111,101,0,61,103, -97,0,1,114,174,97,225,135,0,0,176,105,237,73,154,29,236,65,250,21, -61,23,105,0,63,6,4,165,0,0,2,22,24,0,34,87,0,0,34,95, -5,0,221,81,10,48,107,0,235,201,241,5,187,5,234,193,193,5,32,86, -34,1,133,53,60,207,25,0,12,82,124,87,25,0,61,126,16,0,35,87, -5,0,35,95,9,0,28,56,124,87,9,0,124,95,13,0,23,80,61,94, -16,0,194,82,10,112,206,121,47,23,1,0,203,81,34,23,105,0,42,55, -1,0,2,22,56,0,34,95,0,0,34,103,5,0,203,49,63,6,100,165, -0,0,108,0,124,207,25,0,124,215,9,0,124,223,13,0,0,82,70,6, -255,241,134,7,225,240,6,232,7,224,8,200,191,255,72,211,10,16,2,6, -222,254,178,5,128,7,46,1,60,223,13,0,60,215,9,0,25,56,99,223, -9,0,99,215,5,0,35,70,4,0,61,23,105,0,3,72,2,22,240,0, -34,87,0,0,34,127,5,0,221,81,10,48,63,6,196,165,0,0,111,0, -224,81,202,5,32,86,9,1,245,117,61,71,10,0,35,199,5,0,8,72, -191,74,35,207,9,0,24,48,25,56,128,255,128,17,10,64,29,23,7,0, -11,72,2,6,17,0,210,13,2,6,33,0,218,13,61,95,93,0,61,87, -89,0,233,89,251,5,177,5,232,81,203,5,32,86,34,1,213,85,61,111, -101,0,61,103,97,0,1,114,174,97,225,135,0,0,176,105,237,73,154,29, -236,65,250,21,61,23,105,0,63,6,72,166,0,0,2,22,24,0,34,87, -0,0,34,103,5,0,221,81,10,48,108,0,235,201,241,5,187,5,234,193, -193,5,32,86,34,1,165,53,60,207,25,0,11,90,124,95,25,0,61,134, -16,0,35,87,5,0,35,95,9,0,28,56,124,87,9,0,124,95,13,0, -35,87,1,0,61,94,16,0,194,82,10,120,207,129,48,23,1,0,203,81, -34,23,105,0,42,55,1,0,2,22,72,0,34,95,0,0,34,111,5,0, -11,96,204,49,63,6,172,166,0,0,109,0,124,207,25,0,124,215,9,0, -124,223,13,0,0,82,70,6,255,240,130,7,225,241,7,232,6,224,28,23, -7,0,8,96,2,6,33,0,242,5,119,18,210,5,123,18,178,5,0,82, -149,109,61,215,9,0,60,95,101,0,61,223,13,0,60,87,97,0,235,217, -225,5,187,5,234,209,177,5,0,82,165,93,60,111,14,0,61,207,18,0, -237,201,178,5,0,82,165,85,60,55,81,0,26,64,99,103,1,0,27,72, -128,255,218,198,60,71,10,0,10,192,8,72,191,74,26,48,27,56,128,255, -64,16,10,64,11,72,60,111,101,0,60,103,97,0,1,114,174,97,225,135, -0,0,176,105,237,217,250,5,236,209,218,5,60,103,121,0,125,103,18,0, -61,191,25,0,12,90,125,95,25,0,125,79,13,0,125,71,9,0,60,94, -16,0,60,135,108,0,60,126,16,0,194,130,16,112,206,121,47,23,1,0, -203,129,34,23,105,0,48,55,1,0,72,18,34,95,0,0,29,56,203,49, -34,103,5,0,63,6,156,167,0,0,108,0,125,191,25,0,125,207,18,0, -125,215,9,0,125,223,13,0,24,80,66,6,255,241,128,7,225,241,6,224, -28,23,7,0,7,232,2,6,33,0,130,13,119,18,226,5,123,18,194,5, -32,86,34,1,165,101,61,215,9,0,60,207,101,0,61,223,13,0,60,199, -97,0,249,217,241,5,187,5,248,209,193,5,32,86,34,1,165,85,60,111, -14,0,61,191,18,0,237,185,194,5,32,86,34,1,149,77,60,71,10,0, -26,48,8,72,191,74,27,56,128,255,90,15,11,56,10,48,1,66,168,193, -225,87,0,0,170,201,249,217,250,5,248,209,218,5,60,135,121,0,125,135, -18,0,61,207,25,0,125,63,13,0,125,55,9,0,11,114,60,127,108,0, -125,119,25,0,224,121,226,87,0,0,194,82,60,102,16,0,202,97,44,23, -1,0,60,94,16,0,34,23,105,0,203,81,2,22,16,0,34,95,0,0, -42,55,1,0,11,96,204,49,29,56,34,135,5,0,63,6,130,168,0,0, -112,0,125,207,25,0,125,191,18,0,125,215,9,0,125,223,13,0,0,82, -64,6,255,241,132,7,225,243,7,232,6,224,28,135,7,0,8,16,123,130, -194,5,0,82,128,7,24,1,61,215,9,0,60,95,101,0,61,223,13,0, -60,87,97,0,235,217,225,5,187,5,234,209,177,5,0,82,197,125,60,127, -14,0,61,199,18,0,239,193,178,5,0,82,197,117,60,55,81,0,26,64, -99,23,1,0,27,72,128,255,8,197,60,71,10,0,10,176,8,72,191,74, -26,48,27,56,128,255,110,14,10,64,11,72,60,111,101,0,60,103,97,0, -1,114,174,97,225,135,0,0,176,105,237,217,250,5,236,209,218,5,60,119, -121,0,125,119,18,0,125,71,9,0,61,151,25,0,125,79,13,0,99,151, -5,0,61,191,1,0,128,255,148,150,45,6,148,204,1,0,106,111,5,0, -10,88,106,191,9,0,13,98,125,87,1,0,125,103,25,0,60,87,4,0, -61,23,1,0,107,87,0,0,0,202,194,15,3,0,197,29,60,94,16,0, -60,126,16,0,25,80,194,82,10,112,206,121,47,23,1,0,203,81,34,23, -105,0,42,55,1,0,72,18,34,95,0,0,29,56,203,49,34,103,5,0, -63,6,160,169,0,0,108,0,65,202,60,95,4,0,235,201,166,229,35,151, -5,0,125,191,1,0,125,151,25,0,125,199,18,0,125,215,9,0,125,223, -13,0,22,80,68,6,255,243,130,7,225,241,7,232,9,184,6,224,8,56, -191,255,214,212,10,192,224,193,190,5,0,82,197,109,61,215,9,0,61,207, -18,0,60,95,101,0,61,223,13,0,60,87,97,0,235,217,225,5,187,5, -234,209,177,5,0,82,181,93,60,135,8,0,240,201,182,5,0,82,213,85, -1,66,168,81,225,111,0,0,173,89,235,217,154,13,234,209,250,5,60,95, -121,0,235,201,177,5,0,82,229,69,26,64,60,55,81,0,27,72,99,191, -1,0,128,255,184,195,60,71,10,0,10,184,8,72,191,74,26,48,27,56, -128,255,30,13,25,120,191,122,25,112,202,113,225,135,0,0,208,121,203,121, -125,119,9,0,125,127,13,0,1,82,125,87,18,0,60,118,16,0,24,80, -194,82,10,104,205,113,46,23,1,0,12,130,34,23,105,0,60,94,16,0, -2,22,56,0,34,103,0,0,203,81,42,55,1,0,125,135,25,0,204,49, -29,56,34,95,5,0,63,6,170,170,0,0,107,0,125,215,9,0,125,223, -13,0,125,207,18,0,23,80,66,6,255,241,130,7,225,240,6,232,61,23, -105,0,8,216,2,22,64,1,34,87,0,0,7,224,221,81,10,48,3,56, -34,135,5,0,63,6,228,170,0,0,112,0,224,81,194,5,32,86,34,1, -149,125,29,48,27,56,191,255,184,211,10,192,224,193,206,5,32,86,34,1, -245,109,61,127,108,0,239,193,194,5,32,86,34,1,133,109,60,215,9,0, -60,207,18,0,61,95,101,0,60,223,13,0,61,87,97,0,235,217,241,5, -187,5,234,209,193,5,32,86,34,1,229,85,61,119,8,0,238,201,198,5, -32,86,34,1,245,77,11,120,1,66,168,81,225,95,0,0,171,121,239,217, -170,13,234,209,138,13,61,135,121,0,240,201,193,5,32,86,34,1,229,61, -61,71,10,0,26,48,8,72,191,74,27,56,128,255,250,11,25,120,191,122, -25,112,202,113,124,119,9,0,11,104,11,114,124,119,25,0,225,135,0,0, -208,121,205,121,124,127,13,0,24,80,1,122,124,127,18,0,194,82,61,102, -16,0,202,97,44,23,1,0,61,94,16,0,34,23,105,0,203,81,2,22, -64,0,34,95,0,0,42,55,1,0,11,96,204,49,28,56,34,135,5,0, -63,6,208,171,0,0,112,0,124,215,9,0,124,223,13,0,124,207,18,0, -0,82,66,6,255,240,134,7,225,48,8,216,187,0,6,232,61,215,85,0, -7,224,188,0,100,226,234,53,29,23,7,0,226,217,170,53,123,18,138,53, -224,209,226,5,125,7,85,0,26,48,191,255,46,227,29,48,35,62,4,0, -191,255,158,214,61,23,105,0,35,79,9,0,2,22,232,0,34,87,0,0, -35,71,5,0,221,81,10,48,34,103,5,0,63,6,64,172,0,0,108,0, -61,23,105,0,31,58,2,22,152,0,34,87,0,0,31,66,221,81,10,48, -3,72,34,95,5,0,63,6,98,172,0,0,107,0,224,225,218,5,29,127, -7,0,239,217,178,5,99,226,170,69,61,111,85,0,224,105,226,5,125,7, -85,0,26,48,191,255,188,226,99,226,250,53,125,7,89,0,125,7,93,0, -224,209,146,53,29,23,7,0,123,18,194,13,119,18,194,5,2,6,33,0, -202,13,0,50,128,255,202,10,125,87,85,0,229,5,0,50,128,255,198,10, -125,87,85,0,61,55,85,0,224,49,146,29,29,56,191,255,134,226,224,81, -194,21,61,87,85,0,224,81,226,13,42,23,241,11,3,58,72,18,34,55, -0,0,34,95,5,0,202,49,63,6,240,172,0,0,107,0,125,7,85,0, -97,226,178,5,98,226,138,101,29,23,7,0,226,217,202,93,61,119,85,0, -224,113,218,93,123,18,194,13,119,18,194,5,2,6,33,0,186,53,0,50, -128,255,86,10,125,87,85,0,213,45,221,255,2,0,218,37,29,111,1,0, -32,54,47,0,205,70,127,0,39,6,100,139,132,0,128,255,28,10,61,23, -105,0,23,58,2,22,152,0,34,87,0,0,31,66,221,81,10,48,3,72, -34,95,5,0,63,6,100,173,0,0,107,0,224,81,202,13,0,50,128,255, -8,10,125,87,85,0,229,5,0,50,128,255,4,10,125,87,85,0,61,55, -85,0,224,49,130,37,29,56,191,255,196,225,224,81,178,29,61,87,85,0, -224,81,242,13,42,23,241,11,3,58,72,18,34,95,0,0,63,6,180,173, -0,0,202,89,34,87,5,0,11,48,106,0,125,7,85,0,229,5,29,48, -28,56,27,64,191,255,124,205,70,6,255,48,130,7,33,0,1,138,6,23, -7,0,103,143,1,0,2,6,33,0,194,5,2,6,17,0,218,5,3,56, -191,255,206,205,165,5,1,82,66,6,63,0,128,7,225,16,6,224,7,232, -191,255,46,206,60,23,105,0,10,216,2,22,144,1,34,87,0,0,93,7, -2,0,220,81,10,48,34,143,5,0,63,6,30,174,0,0,113,0,93,7, -4,0,93,7,5,0,93,7,6,0,93,87,3,0,93,7,7,0,27,80, -64,6,255,16,130,7,225,48,35,255,25,0,6,232,125,7,113,0,7,135, -0,0,125,7,117,0,98,130,162,13,61,63,4,0,38,6,120,139,132,0, -191,255,212,116,0,82,133,125,7,119,3,0,39,95,13,0,224,113,226,23, -0,0,39,103,9,0,0,112,204,113,225,135,0,0,208,89,125,95,93,0, -7,106,32,94,128,0,125,95,14,0,125,95,8,0,125,111,10,0,32,94, -127,0,125,95,12,0,125,119,89,0,125,23,108,0,99,255,1,0,191,255, -112,208,10,224,224,225,146,53,61,23,105,0,63,6,208,174,0,0,2,22, -24,0,34,87,0,0,34,111,5,0,221,81,10,48,109,0,61,71,14,0, -10,208,8,72,191,74,26,48,11,56,191,255,166,213,125,87,97,0,61,103, -12,0,125,95,101,0,12,104,191,106,90,97,125,103,121,0,162,13,65,82, -125,87,97,0,225,135,0,0,203,129,125,135,101,0,213,5,61,119,14,0, -125,119,121,0,61,95,101,0,61,87,97,0,235,1,154,13,234,1,250,5, -0,226,1,82,125,87,97,0,125,7,101,0,221,207,2,0,226,13,125,7, -89,0,29,23,7,0,125,7,93,0,127,18,178,5,123,18,202,5,23,90, -93,95,7,0,28,80,66,6,255,48,130,7,225,112,167,0,6,232,7,224, -8,200,9,208,191,255,76,209,10,216,28,16,119,18,153,13,2,6,17,0, -194,93,2,6,33,0,210,125,128,7,74,1,127,18,242,5,123,18,178,53, -119,18,194,61,128,7,58,1,29,23,7,0,123,18,130,13,119,18,226,5, -2,6,33,0,178,5,128,7,36,1,61,87,89,0,61,111,101,0,61,95, -93,0,61,103,97,0,237,89,185,5,128,7,12,1,219,5,236,81,185,5, -128,7,2,1,119,18,194,5,2,6,33,0,186,5,221,63,2,0,61,55, -85,0,93,231,7,0,224,49,178,117,191,255,90,223,125,7,85,0,229,109, -29,87,7,0,127,82,170,109,125,7,89,0,125,7,93,0,93,231,7,0, -181,101,29,23,7,0,127,18,178,5,123,18,218,93,125,7,89,0,125,7, -93,0,61,55,85,0,93,231,7,0,224,49,178,85,191,255,26,223,125,7, -85,0,229,77,27,6,224,254,186,77,29,23,7,0,2,6,17,0,194,5, -2,6,33,0,250,5,58,87,1,0,61,95,108,0,235,81,210,61,58,135, -1,0,61,55,85,0,224,129,226,23,0,0,125,23,108,0,93,231,7,0, -224,49,210,5,191,255,212,222,125,7,85,0,0,218,165,45,29,127,7,0, -15,6,17,0,218,37,1,98,0,18,229,13,2,112,194,114,61,94,16,0, -203,113,46,87,1,0,10,87,7,0,224,81,170,5,0,98,65,18,61,135, -4,0,240,17,134,245,97,98,250,13,29,56,25,64,3,48,191,255,90,190, -195,207,0,0,242,5,93,231,7,0,125,7,89,0,125,7,93,0,61,23, -105,0,63,6,226,176,0,0,2,22,96,1,34,87,0,0,34,127,5,0, -221,81,10,48,111,0,27,80,66,6,255,112,130,7,225,112,167,0,6,232, -7,224,8,208,9,200,191,255,40,208,10,216,27,6,224,254,138,37,224,225, -234,29,29,23,7,0,127,18,210,5,119,18,178,5,123,18,234,45,57,95, -1,0,224,89,226,23,0,0,125,23,108,0,36,22,28,132,34,95,1,0, -61,86,124,0,106,95,1,0,34,23,5,0,0,218,106,23,5,0,149,29, -97,226,250,21,29,56,26,64,3,48,191,255,192,189,195,199,0,0,242,13, -61,23,105,0,63,6,112,177,0,0,2,22,96,1,34,87,0,0,34,143, -5,0,221,81,10,48,113,0,27,80,66,6,255,112,128,7,225,112,6,232, -29,135,7,0,1,226,16,6,225,255,170,13,93,7,2,0,125,7,89,0, -125,7,93,0,31,122,93,127,7,0,0,210,31,218,0,202,213,37,25,16, -194,18,61,110,16,0,194,105,45,95,1,0,224,89,202,5,65,210,25,216, -133,29,61,134,16,0,208,17,34,95,1,0,43,23,105,0,63,6,224,177, -0,0,2,22,96,1,34,87,0,0,34,127,5,0,203,81,10,48,111,0, -224,81,186,5,65,210,25,216,65,202,61,119,4,0,238,201,150,221,97,210, -135,13,26,56,38,6,180,139,132,0,191,255,50,113,0,226,97,226,138,77, -224,209,231,69,29,23,7,0,119,18,137,13,2,6,17,0,130,53,2,6, -33,0,210,21,133,61,127,18,210,5,123,18,178,5,119,18,170,53,32,102, -239,255,93,103,7,0,224,217,226,23,0,0,125,23,108,0,1,90,125,95, -113,0,165,45,61,87,108,0,234,217,154,13,27,56,38,6,100,140,132,0, -191,255,216,112,0,226,165,13,32,134,239,255,93,135,7,0,224,217,226,23, -0,0,125,23,108,0,125,7,113,0,165,21,61,127,108,0,239,217,234,13, -27,56,38,6,180,140,132,0,191,255,168,112,0,226,229,5,125,7,113,0, -181,5,125,7,113,0,97,226,178,5,128,7,100,1,29,63,7,0,0,218, -7,16,119,18,153,13,2,6,17,0,162,77,2,6,33,0,178,117,128,7, -24,1,127,18,242,5,123,18,146,13,119,18,178,37,128,7,8,1,125,7, -89,0,125,7,93,0,36,22,36,132,34,95,1,0,61,86,124,0,106,95, -1,0,34,23,5,0,106,23,5,0,36,22,44,132,34,95,1,0,61,86, -132,0,106,95,1,0,34,23,5,0,106,23,5,0,1,218,125,7,108,0, -149,109,125,7,108,0,36,22,28,132,34,95,1,0,61,86,124,0,106,95, -1,0,34,23,5,0,106,23,5,0,36,22,44,132,34,95,1,0,61,86, -132,0,106,95,1,0,34,23,5,0,1,218,106,23,5,0,213,77,36,22, -28,132,34,95,1,0,61,86,124,0,106,95,1,0,34,23,5,0,106,23, -5,0,61,111,113,0,224,105,194,13,36,22,52,132,34,95,1,0,61,86, -132,0,106,95,1,0,34,23,5,0,181,13,36,22,60,132,34,95,1,0, -61,86,132,0,106,95,1,0,34,23,5,0,106,23,5,0,125,7,93,0, -125,7,89,0,149,37,36,22,28,132,34,95,1,0,61,86,124,0,106,95, -1,0,34,23,5,0,106,23,5,0,36,22,44,132,34,95,1,0,61,86, -132,0,106,95,1,0,34,23,5,0,1,218,106,23,5,0,245,5,38,6, -244,139,132,0,191,255,88,111,0,226,97,218,154,21,61,103,117,0,97,98, -218,13,36,22,68,132,34,95,1,0,61,86,132,0,106,95,1,0,34,23, -5,0,106,23,5,0,97,226,170,21,61,87,81,0,224,81,234,13,29,48, -128,255,60,185,125,87,81,0,224,81,250,5,38,6,52,140,132,0,191,255, -14,111,0,226,224,225,186,5,93,7,7,0,28,80,64,6,255,112,128,7, -33,0,38,143,17,0,63,6,90,180,0,0,49,23,105,0,17,88,72,18, -34,87,0,0,34,135,5,0,203,81,10,48,112,0,64,6,63,0,128,7, -33,0,38,94,16,0,38,135,108,0,38,126,16,0,194,130,16,112,206,121, -47,23,1,0,203,129,34,23,105,0,48,55,1,0,72,18,34,95,0,0, -34,103,5,0,203,49,63,6,150,180,0,0,108,0,64,6,63,0,128,7, -225,0,6,232,61,143,17,0,7,224,49,23,105,0,17,88,2,22,16,0, -34,87,0,0,34,135,5,0,203,81,10,48,63,6,196,180,0,0,112,0, -61,127,21,0,28,56,47,23,105,0,15,88,2,22,16,0,34,87,0,0, -34,119,5,0,203,81,10,48,63,6,232,180,0,0,110,0,2,82,64,6, -255,0,128,7,33,0,38,94,16,0,38,135,108,0,38,126,16,0,194,130, -16,112,206,121,47,23,1,0,203,129,34,23,105,0,48,55,1,0,2,22, -16,0,34,95,0,0,34,103,5,0,203,49,63,6,40,181,0,0,108,0, -1,82,64,6,63,0,128,7,225,0,7,224,60,63,1,0,6,232,191,255, -126,206,224,81,218,45,61,23,105,0,125,7,113,0,2,22,96,1,34,87, -0,0,34,143,5,0,221,81,10,48,63,6,98,181,0,0,113,0,61,94, -16,0,61,127,108,0,61,118,16,0,194,122,15,104,205,113,46,23,1,0, -203,121,34,23,105,0,47,55,1,0,2,22,16,0,34,103,0,0,28,56, -204,49,34,95,5,0,63,6,154,181,0,0,107,0,1,82,64,6,255,0, -128,7,225,0,198,15,2,0,7,224,60,63,1,0,6,232,191,255,8,206, -224,81,234,21,61,23,105,0,125,7,117,0,2,22,96,1,34,87,0,0, -34,143,5,0,221,81,10,48,63,6,216,181,0,0,113,0,29,48,28,56, -191,255,190,254,165,5,1,82,64,6,255,0,6,87,7,0,0,18,10,6, -17,0,194,5,10,6,33,0,250,5,38,127,108,0,1,18,224,121,170,5, -2,18,2,80,202,0,127,0,128,7,225,0,6,232,7,224,224,233,194,53, -49,6,192,81,133,0,61,63,81,0,125,143,105,0,224,57,194,5,29,48, -128,255,118,183,61,55,85,0,224,49,178,5,191,255,4,217,61,23,105,0, -63,6,88,182,0,0,2,22,104,1,34,87,0,0,34,135,5,0,221,81, -10,48,112,0,29,63,0,0,29,71,1,0,38,6,0,141,132,0,191,255, -202,108,45,6,48,72,133,0,125,111,105,0,129,226,201,5,29,48,191,255, -234,205,64,6,255,0,128,7,33,0,38,23,105,0,63,6,162,182,0,0, -2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6, -63,0,128,7,33,0,38,23,105,0,63,6,196,182,0,0,72,18,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0, -38,23,105,0,63,6,232,182,0,0,2,22,16,0,34,87,0,0,34,135, -5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0, -63,6,12,183,0,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,1,82,127,0,128,7,33,0,38,23,105,0, -63,6,52,183,0,0,2,22,208,0,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,0,82,127,0,0,82,127,0,6,135,7,0, -16,6,17,0,234,87,0,0,127,0,38,135,108,0,224,129,226,87,0,0, -127,0,33,6,180,6,128,0,97,0,33,6,218,82,130,0,97,0,33,6, -92,82,130,0,97,0,33,6,218,145,129,0,97,0,33,6,32,149,129,0, -97,0,128,7,97,0,6,16,34,55,124,0,34,95,126,0,194,49,224,89, -206,5,34,23,129,0,213,13,34,87,128,0,198,81,42,87,1,0,195,90, -202,89,43,87,0,0,43,23,5,0,202,49,2,232,63,6,190,183,0,0, -125,0,64,6,127,0,128,7,97,0,6,16,34,55,132,0,34,95,134,0, -194,49,224,89,206,5,34,23,137,0,213,13,34,87,136,0,198,81,42,87, -1,0,195,90,202,89,43,87,0,0,43,23,5,0,202,49,2,232,63,6, -254,183,0,0,125,0,64,6,127,0,160,7,225,241,6,232,7,224,99,231, -41,0,8,184,60,223,13,0,60,215,9,0,251,1,226,45,61,71,14,0, -26,48,8,72,191,74,27,56,191,255,92,204,61,71,4,0,10,192,8,72, -191,74,24,48,11,200,25,56,128,255,142,60,99,87,56,0,24,48,61,71, -10,0,25,56,8,72,191,74,191,255,26,255,99,87,49,0,99,95,53,0, -10,48,61,23,4,0,11,56,2,70,255,255,8,72,191,74,191,255,232,214, -26,16,170,17,229,29,61,87,14,0,26,192,234,199,194,2,61,111,4,0, -24,128,237,135,194,122,99,127,56,0,61,87,10,0,24,16,234,23,192,0, -99,23,49,0,99,7,53,0,61,87,4,0,0,202,95,82,226,87,34,2, -26,16,170,17,99,7,60,0,224,17,178,5,128,7,78,1,61,135,14,0, -60,87,18,0,240,81,178,5,128,7,62,1,61,127,117,0,224,121,178,5, -128,7,50,1,61,119,121,0,224,113,178,5,128,7,38,1,35,111,56,0, -24,64,224,105,226,23,0,0,99,23,58,0,61,55,81,0,3,98,99,103, -1,0,25,72,128,255,242,180,10,216,60,215,1,0,128,255,196,134,106,215, -9,0,106,223,33,0,43,6,126,66,1,0,106,95,5,0,124,87,1,0, -36,22,76,132,34,95,1,0,35,86,4,0,106,95,1,0,34,23,5,0, -106,23,5,0,29,48,35,22,4,0,34,79,5,0,34,71,1,0,35,62, -40,0,128,255,230,25,10,216,29,87,7,0,10,6,17,0,186,21,61,23, -105,0,35,207,56,0,2,22,88,1,34,87,0,0,34,135,5,0,221,81, -10,48,63,6,126,185,0,0,112,0,234,201,178,61,99,7,28,0,99,191, -17,0,60,111,22,0,11,114,99,111,34,0,99,119,37,0,61,103,8,0, -35,95,53,0,99,103,30,0,60,127,1,0,35,87,49,0,99,95,25,0, -99,87,21,0,61,134,16,0,35,87,56,0,99,127,13,0,194,82,10,120, -207,129,48,23,1,0,61,94,16,0,34,23,105,0,203,81,2,22,16,0, -34,95,0,0,42,55,1,0,11,96,204,49,35,62,12,0,34,111,5,0, -63,6,244,185,0,0,109,0,65,218,60,55,1,0,27,56,128,255,224,132, -124,215,1,0,213,29,61,55,132,0,61,23,134,0,221,49,224,17,206,5, -61,23,137,0,213,13,61,87,136,0,198,81,42,87,1,0,195,18,202,17, -34,87,0,0,34,23,5,0,202,49,2,232,28,56,63,6,62,186,0,0, -125,0,96,6,255,241,128,7,225,48,6,208,31,226,31,234,0,218,197,37, -27,16,194,18,58,126,16,0,194,121,47,111,1,0,224,105,162,29,58,102, -16,0,194,97,44,95,1,0,43,23,105,0,63,6,134,186,0,0,2,22, -24,0,34,55,0,0,34,87,5,0,203,49,106,0,253,89,235,5,177,5, -252,81,185,5,10,224,11,232,65,218,58,23,4,0,226,217,166,221,2,70, -255,255,8,72,191,74,28,48,29,56,191,255,170,212,10,48,58,239,14,0, -11,56,224,233,247,13,29,64,29,72,191,74,191,255,196,201,10,48,11,56, -29,64,29,72,191,74,191,255,134,212,10,48,11,56,6,80,7,88,64,6, -255,48,132,7,225,240,6,224,7,192,191,255,38,178,97,82,186,5,1,82, -229,93,28,23,7,0,0,234,2,6,17,0,194,5,2,6,33,0,170,21, -60,23,105,0,63,6,32,187,0,0,2,22,88,1,34,87,0,0,34,127, -5,0,220,81,10,48,111,0,1,234,234,239,192,0,224,233,234,207,0,0, -0,218,1,114,251,119,192,0,88,113,194,53,0,210,229,45,26,136,194,138, -60,86,16,0,209,81,42,23,1,0,27,64,34,23,105,0,60,86,16,0, -209,81,2,22,136,0,34,95,0,0,42,63,1,0,11,96,204,57,35,54, -4,0,34,127,5,0,63,6,118,187,0,0,111,0,35,119,5,0,99,119, -1,0,195,199,0,0,146,13,1,18,250,23,192,0,2,96,93,97,186,5, -2,233,65,202,65,210,60,95,4,0,235,209,134,213,65,218,27,6,224,255, -214,197,97,202,231,87,0,0,68,6,255,240,128,7,97,0,6,232,191,255, -136,178,224,81,202,21,221,143,2,0,61,23,105,0,1,138,2,22,96,1, -34,87,0,0,125,143,121,0,221,81,10,48,34,135,5,0,63,6,228,187, -0,0,112,0,1,82,64,6,127,0,128,7,97,0,7,232,191,255,170,178, -1,138,125,143,1,0,64,6,127,0,128,7,97,0,6,232,61,63,8,0, -38,6,44,141,132,0,7,128,191,130,159,130,208,57,161,58,191,255,24,103, -29,48,191,255,10,181,64,6,127,0,168,7,225,112,6,232,7,224,8,216, -9,200,191,255,220,187,10,16,2,6,222,254,178,5,128,7,80,2,60,127, -18,0,99,127,70,0,60,119,16,0,27,56,99,7,74,0,99,119,68,0, -195,15,74,0,60,95,13,0,60,87,9,0,35,70,40,0,99,87,41,0, -99,95,45,0,3,72,61,23,105,0,63,6,142,188,0,0,2,22,240,0, -34,87,0,0,34,111,5,0,221,81,10,48,109,0,224,81,218,5,32,86, -9,1,128,7,248,1,35,63,45,0,61,71,14,0,35,55,41,0,8,72, -191,74,191,255,218,199,10,208,29,23,7,0,11,216,2,6,17,0,210,13, -2,6,33,0,234,13,61,95,93,0,61,87,89,0,251,89,139,13,177,5, -250,81,219,5,32,86,34,1,128,7,182,1,224,201,210,13,61,55,81,0, -26,64,27,72,128,255,2,178,224,81,210,5,32,86,39,1,128,7,154,1, -61,87,4,0,60,111,18,0,95,82,60,135,5,0,234,111,32,2,48,135, -17,0,201,106,240,105,211,5,32,86,34,1,128,7,118,1,61,71,8,0, -26,48,8,72,191,74,27,56,191,255,44,210,10,96,61,87,12,0,35,119, -41,0,10,64,10,72,78,81,11,104,35,127,45,0,191,74,9,88,79,89, -204,81,225,135,0,0,208,89,205,89,99,87,61,0,99,95,65,0,60,23, -5,0,34,23,9,0,99,7,37,0,99,23,25,0,99,7,33,0,35,23, -70,0,67,7,30,0,67,23,29,0,67,23,28,0,60,223,1,0,128,255, -76,130,106,223,9,0,106,7,29,0,47,6,174,65,1,0,106,7,33,0, -0,218,106,7,37,0,1,18,99,87,53,0,61,111,4,0,106,127,5,0, -60,95,5,0,95,106,106,111,0,0,99,95,57,0,213,101,35,87,1,0, -234,217,130,101,224,17,234,61,35,79,70,0,35,87,25,0,9,16,201,18, -194,81,99,87,25,0,35,54,24,0,0,58,35,70,4,0,191,255,12,107, -97,82,146,13,38,6,64,141,132,0,32,62,81,2,0,66,191,255,194,92, -60,127,5,0,15,114,99,127,57,0,99,119,77,0,0,50,35,62,24,0, -0,66,35,78,52,0,191,255,62,78,35,95,53,0,43,23,33,0,224,17, -218,5,107,87,33,0,133,13,11,16,34,95,13,0,224,89,202,253,98,87, -13,0,35,110,4,0,99,111,57,0,12,98,27,128,194,130,61,86,16,0, -208,81,42,23,1,0,99,103,77,0,61,86,16,0,34,23,105,0,208,81, -2,22,56,0,34,95,0,0,42,55,1,0,11,96,204,49,35,62,52,0, -34,119,5,0,63,6,128,190,0,0,110,0,0,18,65,218,61,111,4,0, -237,217,150,157,0,82,104,6,255,112,134,7,225,241,6,232,7,224,8,200, -191,255,44,186,10,16,2,6,222,254,178,5,128,7,4,1,60,223,13,0, -60,215,9,0,25,56,99,223,9,0,99,215,5,0,35,70,4,0,61,23, -105,0,3,72,2,22,240,0,34,87,0,0,34,127,5,0,221,81,10,48, -63,6,224,190,0,0,111,0,224,81,202,5,32,86,9,1,165,101,61,71, -14,0,35,199,5,0,8,72,191,74,35,207,9,0,24,48,25,56,191,255, -134,197,10,48,29,23,7,0,11,56,2,6,17,0,210,13,2,6,33,0, -218,13,61,95,93,0,61,87,89,0,231,89,251,5,177,5,230,81,203,5, -32,86,34,1,133,69,60,191,25,0,11,98,61,71,8,0,124,103,25,0, -8,72,191,74,191,255,20,208,10,96,61,87,12,0,11,104,10,120,88,81, -191,122,89,121,204,81,225,135,0,0,208,121,205,121,35,135,1,0,124,127, -13,0,124,87,9,0,194,130,61,86,16,0,208,81,42,23,1,0,28,56, -34,23,105,0,61,86,16,0,208,81,2,22,72,0,34,95,0,0,42,55, -1,0,11,96,204,49,34,119,5,0,63,6,158,191,0,0,110,0,124,191, -25,0,124,215,9,0,124,223,13,0,0,82,70,6,255,241,132,7,225,243, -8,200,7,232,61,215,9,0,6,224,60,95,101,0,61,223,13,0,60,87, -97,0,235,217,241,5,187,5,234,209,193,5,0,82,128,7,4,1,60,127, -8,0,61,135,18,0,239,129,178,5,0,82,149,125,28,23,7,0,2,6, -33,0,202,5,60,199,108,0,149,21,119,18,178,5,123,18,186,13,60,71, -4,0,26,48,8,72,191,74,27,56,128,255,188,52,10,192,181,5,0,82, -149,101,26,64,60,55,81,0,27,72,99,207,1,0,128,255,204,173,60,71, -8,0,10,176,8,72,191,74,26,48,27,56,191,255,28,207,125,87,9,0, -61,151,25,0,125,95,13,0,99,151,5,0,61,191,1,0,128,255,126,127, -43,6,148,204,1,0,106,95,5,0,106,191,9,0,125,87,1,0,0,202, -61,23,1,0,13,82,194,15,3,0,60,127,4,0,125,87,25,0,95,122, -98,127,0,0,229,29,248,201,178,29,25,80,194,82,60,102,16,0,202,97, -44,23,1,0,60,94,16,0,34,23,105,0,203,81,72,18,34,95,0,0, -42,55,1,0,11,96,204,49,29,56,34,135,5,0,63,6,186,192,0,0, -112,0,65,202,60,127,4,0,239,201,134,229,35,151,5,0,125,191,1,0, -125,151,25,0,125,215,9,0,125,223,13,0,22,80,68,6,255,243,128,7, -225,240,7,232,61,215,9,0,6,224,60,95,101,0,61,223,13,0,60,87, -97,0,235,217,241,5,187,5,234,209,193,5,32,86,34,1,245,85,60,127, -8,0,61,135,18,0,239,129,194,5,32,86,34,1,229,77,28,23,7,0, -2,6,33,0,202,5,60,207,108,0,165,21,119,18,178,5,123,18,186,13, -60,71,4,0,26,48,8,72,191,74,27,56,128,255,142,51,10,200,197,5, -32,86,34,1,213,53,60,71,8,0,26,48,8,72,191,74,27,56,191,255, -254,205,125,95,13,0,61,199,25,0,11,90,125,95,25,0,125,87,9,0, -60,134,16,0,25,80,194,82,10,120,207,129,48,23,1,0,60,94,16,0, -34,23,105,0,203,81,2,22,16,0,34,95,0,0,42,55,1,0,11,96, -204,49,29,56,34,111,5,0,63,6,164,193,0,0,109,0,125,199,25,0, -125,215,9,0,125,223,13,0,0,82,64,6,255,240,130,7,225,243,8,16, -7,232,61,215,9,0,6,224,60,95,101,0,61,223,13,0,60,87,97,0, -235,217,225,5,187,5,234,209,177,5,0,82,245,101,60,127,8,0,61,135, -18,0,239,129,178,5,0,82,245,93,28,119,7,0,123,114,178,5,0,82, -149,93,60,55,81,0,26,64,99,23,1,0,27,72,128,255,236,171,60,71, -8,0,10,184,8,72,191,74,26,48,27,56,191,255,60,205,125,87,9,0, -125,95,13,0,61,199,1,0,61,183,25,0,128,255,162,125,45,6,148,204, -1,0,106,111,5,0,13,98,106,199,9,0,10,88,202,15,3,0,125,87, -1,0,125,103,25,0,60,87,4,0,0,202,107,87,0,0,197,29,60,94, -16,0,60,126,16,0,25,80,194,82,10,112,206,121,47,23,1,0,203,81, -34,23,105,0,42,55,1,0,72,18,34,95,0,0,29,56,203,49,34,103, -5,0,63,6,142,194,0,0,108,0,65,202,60,95,4,0,235,201,166,229, -125,183,25,0,125,199,1,0,125,215,9,0,125,223,13,0,23,80,66,6, -255,243,130,7,225,241,7,232,9,184,6,224,8,56,191,255,240,187,10,200, -224,201,190,5,0,82,245,93,61,23,18,0,61,215,9,0,2,192,60,95, -101,0,61,223,13,0,60,87,97,0,235,217,225,5,187,5,234,209,177,5, -0,82,213,77,60,127,8,0,239,17,182,5,0,82,245,69,26,64,60,55, -81,0,27,72,99,191,1,0,128,255,238,170,60,71,8,0,10,184,8,72, -191,74,26,48,27,56,191,255,62,204,24,120,191,122,24,112,202,113,125,119, -9,0,12,106,125,111,25,0,1,114,225,135,0,0,208,121,203,121,125,127, -13,0,60,94,16,0,25,96,194,98,12,80,202,89,43,23,1,0,125,119, -18,0,60,94,16,0,34,23,105,0,203,97,2,22,56,0,34,95,0,0, -44,103,1,0,11,48,204,49,29,56,34,127,5,0,63,6,118,195,0,0, -111,0,125,215,9,0,125,223,13,0,125,199,18,0,23,80,66,6,255,241, -130,7,225,240,6,224,60,23,105,0,8,216,2,22,64,1,34,87,0,0, -7,232,220,81,10,48,3,56,34,135,5,0,63,6,176,195,0,0,112,0, -224,81,194,5,32,86,34,1,133,109,28,48,27,56,191,255,236,186,10,200, -224,201,206,5,32,86,34,1,229,93,60,127,108,0,239,201,202,5,32,86, -34,1,245,85,61,23,18,0,61,215,9,0,2,192,60,95,101,0,61,223, -13,0,60,87,97,0,235,217,241,5,187,5,234,209,193,5,32,86,34,1, -197,69,60,87,8,0,234,17,198,5,32,86,34,1,213,61,10,64,10,72, -191,74,26,48,27,56,191,255,58,203,24,120,191,122,24,112,202,113,125,119, -9,0,225,135,0,0,208,121,60,134,16,0,203,121,125,127,13,0,1,98, -11,90,125,95,25,0,125,103,18,0,25,80,194,82,10,120,207,129,48,23, -1,0,60,94,16,0,34,23,105,0,203,81,2,22,64,0,34,95,0,0, -42,55,1,0,11,96,204,49,29,56,34,111,5,0,63,6,122,196,0,0, -109,0,125,215,9,0,125,223,13,0,125,199,18,0,0,82,66,6,255,240, -134,7,225,48,8,216,187,0,6,232,61,215,85,0,7,224,188,0,100,226, -234,53,29,23,7,0,226,217,170,53,123,18,138,53,224,209,226,5,125,7, -85,0,26,48,191,255,132,202,29,48,35,62,4,0,191,255,244,189,61,23, -105,0,35,79,9,0,2,22,232,0,34,87,0,0,35,71,5,0,221,81, -10,48,34,103,5,0,63,6,234,196,0,0,108,0,61,23,105,0,31,58, -2,22,152,0,34,87,0,0,31,66,221,81,10,48,3,72,34,95,5,0, -63,6,12,197,0,0,107,0,224,225,218,5,29,127,7,0,239,217,178,5, -99,226,170,69,61,111,85,0,224,105,226,5,125,7,85,0,26,48,191,255, -18,202,99,226,250,53,125,7,89,0,125,7,93,0,224,209,146,53,29,23, -7,0,123,18,194,13,119,18,194,5,2,6,33,0,202,13,0,50,128,255, -128,47,125,87,85,0,229,5,0,50,191,255,28,242,125,87,85,0,61,55, -85,0,224,49,146,29,29,56,191,255,220,201,224,81,194,21,61,87,85,0, -224,81,226,13,42,23,241,11,3,58,72,18,34,55,0,0,34,95,5,0, -202,49,63,6,154,197,0,0,107,0,125,7,85,0,97,226,178,5,98,226, -138,117,29,23,7,0,226,217,202,109,61,119,85,0,224,113,218,109,123,18, -210,29,119,18,210,5,2,6,33,0,162,21,165,69,98,226,250,13,61,95, -93,0,61,87,89,0,224,89,154,13,224,81,250,5,0,50,128,255,254,46, -125,87,85,0,165,53,0,50,128,255,234,46,125,87,85,0,197,45,221,255, -2,0,202,37,29,103,1,0,32,54,47,0,204,70,127,0,39,6,84,141, -132,0,191,255,80,241,61,23,105,0,23,58,2,22,152,0,34,55,0,0, -31,66,221,49,3,72,34,87,5,0,63,6,46,198,0,0,106,0,224,81, -202,13,0,50,128,255,158,46,125,87,85,0,229,5,0,50,191,255,58,241, -125,87,85,0,61,55,85,0,224,49,130,37,29,56,191,255,250,200,224,81, -178,29,61,87,85,0,224,81,242,13,42,23,241,11,3,58,72,18,34,95, -0,0,34,135,5,0,202,89,11,48,63,6,126,198,0,0,112,0,125,7, -85,0,229,5,29,48,28,56,27,64,191,255,178,180,70,6,255,48,130,7, -33,0,1,138,6,23,7,0,103,143,1,0,2,6,33,0,194,5,2,6, -17,0,218,5,3,56,191,255,4,181,165,5,1,82,66,6,63,0,128,7, -225,16,6,224,7,232,191,255,100,181,60,143,10,0,60,23,105,0,10,216, -2,22,144,1,34,87,0,0,93,143,2,0,220,81,10,48,34,135,5,0, -63,6,236,198,0,0,112,0,93,7,5,0,93,87,3,0,93,7,6,0, -168,82,93,87,4,0,93,7,7,0,27,80,64,6,255,16,130,7,225,0, -35,255,17,0,6,232,125,7,117,0,7,23,0,0,125,7,121,0,125,23, -4,0,2,6,240,255,191,5,99,18,174,13,2,56,38,6,104,141,132,0, -191,255,252,91,0,82,128,7,16,1,7,103,3,0,125,103,108,0,0,112, -39,103,9,0,39,95,13,0,204,113,225,135,0,0,208,89,125,119,89,0, -125,95,93,0,7,95,2,0,125,95,10,0,11,16,100,18,182,5,105,18, -151,13,2,56,38,6,164,141,132,0,191,255,182,91,0,82,213,101,1,106, -226,111,192,0,61,95,4,0,125,111,8,0,95,90,237,95,32,2,95,106, -125,95,14,0,125,111,12,0,235,0,11,80,191,82,159,82,202,89,61,119, -8,0,161,90,203,113,93,7,112,0,125,119,110,0,99,255,1,0,29,48, -191,255,90,183,10,224,224,225,178,29,61,23,105,0,63,6,230,199,0,0, -2,22,24,0,34,87,0,0,34,103,5,0,221,81,10,48,108,0,10,48, -61,71,14,0,11,56,8,72,191,74,191,255,146,188,125,87,97,0,125,95, -101,0,61,95,101,0,61,87,97,0,235,1,234,13,234,1,202,13,38,6, -228,141,132,0,191,255,28,91,0,226,1,82,125,87,97,0,125,7,101,0, -221,207,2,0,130,21,125,7,89,0,29,95,7,0,125,7,93,0,127,90, -138,13,23,18,221,255,2,0,162,5,27,18,93,23,7,0,28,80,66,6, -255,0,130,7,225,112,167,0,6,232,7,224,8,200,9,208,191,255,84,184, -10,216,28,16,119,18,153,13,2,6,17,0,162,93,2,6,33,0,130,125, -128,7,64,1,127,18,242,5,123,18,146,53,119,18,162,61,128,7,48,1, -29,23,7,0,123,18,130,13,119,18,226,5,2,6,33,0,178,5,128,7, -26,1,61,87,89,0,61,111,101,0,61,95,93,0,61,103,97,0,237,89, -185,5,128,7,2,1,187,5,236,81,209,125,119,18,194,5,2,6,33,0, -186,5,221,63,2,0,61,55,85,0,93,231,7,0,224,49,130,117,191,255, -102,198,125,7,85,0,181,109,29,87,7,0,127,82,250,101,125,7,89,0, -125,7,93,0,93,231,7,0,133,101,29,23,7,0,127,18,178,5,123,18, -170,93,125,7,89,0,125,7,93,0,61,55,85,0,93,231,7,0,224,49, -130,85,191,255,38,198,125,7,85,0,181,77,27,6,224,254,138,77,29,23, -7,0,2,6,17,0,194,5,2,6,33,0,250,5,58,87,1,0,61,95, -108,0,235,81,170,61,58,135,1,0,61,55,85,0,125,135,108,0,93,231, -7,0,224,49,210,5,191,255,230,197,125,7,85,0,0,218,165,45,29,127, -7,0,15,6,17,0,218,37,1,98,0,18,229,13,2,112,194,114,61,94, -16,0,203,113,46,87,1,0,10,87,7,0,224,81,170,5,0,98,65,18, -61,135,4,0,240,17,134,245,97,98,250,13,29,56,25,64,3,48,191,255, -108,165,195,207,0,0,242,5,93,231,7,0,125,7,89,0,125,7,93,0, -61,23,105,0,63,6,208,201,0,0,2,22,96,1,34,87,0,0,34,127, -5,0,221,81,10,48,111,0,27,80,66,6,255,112,130,7,225,112,167,0, -6,232,7,224,8,208,9,200,191,255,58,183,10,216,27,6,224,254,218,29, -224,225,186,29,29,23,7,0,127,18,210,5,119,18,178,5,123,18,186,45, -57,95,1,0,125,95,108,0,36,22,84,132,34,95,1,0,61,86,124,0, -106,95,1,0,34,23,5,0,0,218,106,23,5,0,149,29,97,226,250,21, -29,56,26,64,3,48,191,255,216,164,195,199,0,0,242,13,61,23,105,0, -63,6,88,202,0,0,2,22,96,1,34,87,0,0,34,143,5,0,221,81, -10,48,113,0,27,80,66,6,255,112,97,58,226,23,0,0,70,23,112,0, -127,0,130,7,225,243,6,232,8,216,9,224,191,255,24,183,98,82,178,5, -0,82,197,101,61,71,8,0,59,183,1,0,8,72,99,71,2,0,191,74, -59,191,5,0,22,48,23,56,191,255,236,185,61,71,4,0,10,192,8,72, -191,74,24,48,11,200,25,56,128,255,30,42,10,16,61,95,101,0,61,87, -97,0,235,201,225,5,187,5,234,193,177,5,0,82,133,69,60,231,1,0, -252,17,226,37,0,210,252,17,174,5,1,210,61,71,14,0,24,48,8,72, -191,74,25,56,191,255,112,196,35,143,2,0,186,225,241,231,32,2,28,120, -191,122,202,225,225,135,0,0,208,121,61,87,12,0,207,89,86,81,220,81, -123,87,1,0,225,135,0,0,203,129,123,135,5,0,2,18,229,21,61,71, -14,0,24,48,8,72,191,74,25,56,191,255,46,196,10,96,61,87,12,0, -1,18,86,81,204,81,123,87,1,0,225,135,0,0,203,129,123,135,5,0, -2,80,66,6,255,243,136,7,225,112,6,232,29,135,7,0,1,226,16,6, -225,255,250,13,93,7,2,0,125,7,89,0,125,7,93,0,23,218,128,255, -32,40,97,82,170,5,31,218,93,223,7,0,0,210,31,218,0,202,213,37, -25,16,194,18,61,118,16,0,194,113,46,103,1,0,224,97,202,5,65,210, -25,216,133,29,61,86,16,0,202,17,34,95,1,0,43,23,105,0,63,6, -190,203,0,0,2,22,96,1,34,87,0,0,34,135,5,0,203,81,10,48, -112,0,224,81,186,5,65,210,25,216,65,202,61,127,4,0,239,201,150,221, -97,210,135,13,26,56,38,6,32,142,132,0,191,255,84,87,0,226,97,226, -170,69,224,209,135,69,29,23,7,0,119,18,137,13,2,6,17,0,162,45, -2,6,33,0,162,21,165,53,127,18,210,5,123,18,178,5,119,18,202,45, -32,110,239,255,93,111,7,0,125,223,108,0,1,98,125,103,117,0,245,37, -61,95,108,0,235,217,146,13,27,56,38,6,236,142,132,0,191,255,0,87, -0,226,245,5,32,86,239,255,93,87,7,0,125,223,108,0,125,7,117,0, -165,21,61,135,108,0,240,217,226,13,27,56,38,6,60,143,132,0,191,255, -214,86,0,226,229,5,125,7,117,0,181,5,125,7,117,0,97,226,178,5, -128,7,10,2,132,119,21,133,224,113,210,13,29,111,7,0,119,106,154,13, -31,98,93,103,7,0,38,6,160,142,132,0,191,255,160,86,29,63,7,0, -0,218,7,16,119,18,217,13,2,6,17,0,186,5,128,7,24,1,2,6, -33,0,186,5,128,7,102,1,128,7,150,1,127,18,242,5,123,18,146,13, -119,18,226,61,128,7,134,1,125,7,89,0,125,7,93,0,36,22,92,132, -34,95,1,0,61,86,124,0,106,95,1,0,34,23,5,0,106,23,5,0, -29,48,128,255,160,38,97,82,202,13,36,22,100,132,34,95,1,0,35,86, -8,0,106,95,1,0,34,23,5,0,181,13,36,22,108,132,34,95,1,0, -35,86,8,0,106,95,1,0,34,23,5,0,106,23,5,0,35,22,8,0, -34,95,1,0,61,86,132,0,106,95,1,0,34,23,5,0,1,218,106,23, -5,0,128,7,28,1,36,22,92,132,34,95,1,0,61,86,124,0,106,95, -1,0,34,23,5,0,106,23,5,0,221,255,2,0,202,13,36,22,116,132, -34,95,1,0,61,86,132,0,106,95,1,0,34,23,5,0,181,37,29,48, -128,255,22,38,97,82,186,13,36,22,100,132,34,95,1,0,3,80,106,95, -1,0,34,23,5,0,165,13,36,22,108,132,34,95,1,0,3,80,106,95, -1,0,34,23,5,0,106,23,5,0,35,95,1,0,61,86,132,0,106,95, -1,0,35,23,5,0,106,23,5,0,1,218,213,77,36,22,84,132,34,95, -1,0,61,86,124,0,106,95,1,0,34,23,5,0,106,23,5,0,61,95, -117,0,224,89,194,13,36,22,124,132,34,95,1,0,61,86,132,0,106,95, -1,0,34,23,5,0,181,13,36,22,132,132,34,95,1,0,61,86,132,0, -106,95,1,0,34,23,5,0,106,23,5,0,125,7,93,0,125,7,89,0, -149,37,36,22,140,132,34,95,1,0,61,86,124,0,106,95,1,0,34,23, -5,0,106,23,5,0,36,22,148,132,34,95,1,0,61,86,132,0,106,95, -1,0,34,23,5,0,1,218,106,23,5,0,245,5,38,6,96,142,132,0, -191,255,224,84,0,226,97,218,154,21,61,87,121,0,97,82,218,13,36,22, -156,132,34,95,1,0,61,86,132,0,106,95,1,0,34,23,5,0,106,23, -5,0,97,226,170,21,61,127,81,0,224,121,234,13,29,48,128,255,196,158, -125,87,81,0,224,81,250,5,38,6,188,142,132,0,191,255,150,84,0,226, -224,225,186,5,93,7,7,0,28,80,72,6,255,112,132,7,33,0,36,22, -164,132,34,71,1,0,99,71,1,0,34,23,5,0,99,23,5,0,35,79, -5,0,128,255,208,1,68,6,63,0,132,7,33,0,36,22,172,132,34,71, -1,0,99,71,1,0,34,23,5,0,99,23,5,0,35,79,5,0,128,255, -172,1,68,6,63,0,132,7,33,0,36,22,180,132,34,71,1,0,99,71, -1,0,34,23,5,0,99,23,5,0,35,79,5,0,128,255,136,1,68,6, -63,0,132,7,33,0,36,22,188,132,34,71,1,0,99,71,1,0,34,23, -5,0,99,23,5,0,35,79,5,0,128,255,100,1,68,6,63,0,132,7, -33,0,36,22,196,132,34,71,1,0,99,71,1,0,34,23,5,0,99,23, -5,0,35,79,5,0,128,255,64,1,68,6,63,0,132,7,33,0,36,22, -204,132,34,71,1,0,99,71,1,0,34,23,5,0,99,23,5,0,35,79, -5,0,128,255,28,1,68,6,63,0,128,7,225,0,198,15,2,0,7,224, -60,63,1,0,6,232,191,255,34,180,224,81,218,45,61,23,105,0,125,7, -121,0,2,22,96,1,34,87,0,0,34,143,5,0,221,81,10,48,63,6, -190,207,0,0,113,0,61,55,132,0,61,23,134,0,221,49,224,17,206,5, -61,23,137,0,213,13,61,87,136,0,198,81,42,87,1,0,195,18,202,17, -34,87,0,0,34,23,5,0,202,49,2,232,28,56,63,6,246,207,0,0, -125,0,64,6,255,0,132,7,225,0,7,224,60,63,1,0,6,232,191,255, -178,179,224,81,154,37,61,23,105,0,125,7,117,0,2,22,96,1,34,87, -0,0,34,143,5,0,221,81,10,48,63,6,46,208,0,0,113,0,36,22, -204,132,34,71,1,0,99,71,1,0,34,23,5,0,99,23,5,0,29,48, -35,79,5,0,28,56,128,255,80,0,68,6,255,0,132,7,33,0,36,22, -212,132,34,71,1,0,99,71,1,0,34,23,5,0,99,23,5,0,35,79, -5,0,128,255,44,0,68,6,63,0,6,87,7,0,0,18,10,6,17,0, -194,5,10,6,33,0,250,5,38,127,108,0,1,18,239,23,192,0,194,0, -2,80,202,0,127,0,3,30,152,255,99,79,101,0,99,71,97,0,99,255, -85,0,99,183,81,0,99,191,77,0,99,199,73,0,99,207,69,0,99,215, -65,0,99,223,61,0,99,231,57,0,99,239,53,0,7,216,59,103,22,0, -35,134,24,0,99,103,46,0,59,127,5,0,99,135,1,0,59,119,16,0, -99,127,29,0,59,111,25,0,99,119,40,0,99,111,49,0,6,232,59,207, -13,0,59,199,9,0,249,1,162,53,61,71,14,0,24,48,8,72,191,74, -25,56,191,255,118,179,99,95,37,0,99,87,33,0,10,176,61,71,4,0, -22,48,8,72,191,74,11,184,23,56,128,255,160,35,99,87,16,0,22,48, -61,71,10,0,23,56,8,72,191,74,191,255,44,230,99,87,9,0,99,95, -13,0,10,48,61,23,4,0,11,56,2,70,255,255,8,72,191,74,191,255, -250,189,24,16,170,17,133,37,61,87,14,0,24,16,234,23,194,2,99,7, -37,0,99,23,33,0,61,103,4,0,2,104,236,111,194,114,99,119,16,0, -61,87,10,0,234,23,192,0,99,23,9,0,99,7,13,0,61,87,4,0, -95,82,226,87,34,2,24,16,170,17,61,135,12,0,66,129,99,135,20,0, -2,80,61,119,10,0,35,111,16,0,238,87,128,0,237,81,166,5,65,82, -99,87,18,0,59,215,18,0,61,231,14,0,59,223,1,0,162,225,250,225, -230,5,99,223,25,0,99,215,42,0,149,21,128,255,238,109,10,16,42,6, -148,204,1,0,98,87,5,0,99,231,42,0,98,223,9,0,195,151,46,0, -99,23,25,0,1,218,35,55,96,0,35,23,98,0,221,49,224,17,206,5, -35,23,101,0,213,13,35,87,100,0,198,81,42,87,1,0,195,18,202,17, -34,87,0,0,34,23,5,0,202,49,2,200,3,56,63,6,58,210,0,0, -121,0,188,209,224,209,231,101,35,111,37,0,35,103,33,0,65,218,12,86, -1,0,225,135,0,0,205,129,99,87,33,0,99,135,37,0,35,103,9,0, -61,87,8,0,35,111,13,0,10,120,191,122,204,81,225,135,0,0,208,121, -205,121,99,87,9,0,99,127,13,0,99,7,20,0,61,119,4,0,35,127, -16,0,14,110,255,255,237,121,246,5,99,7,16,0,1,98,99,103,18,0, -245,5,15,94,1,0,99,95,16,0,99,7,18,0,35,87,29,0,42,23, -17,0,35,95,40,0,137,18,171,17,245,5,10,86,20,0,42,23,17,0, -0,90,137,18,162,225,156,253,203,17,194,225,99,231,40,0,61,231,14,0, -99,87,29,0,250,225,166,21,229,87,64,0,224,7,96,1,35,95,25,0, -10,248,43,87,0,0,219,81,107,87,0,0,255,47,32,0,99,215,42,0, -149,133,99,231,42,0,191,7,252,254,35,183,81,0,35,191,77,0,35,199, -73,0,35,207,69,0,35,215,65,0,35,223,61,0,35,231,57,0,35,239, -53,0,35,255,85,0,3,30,104,0,127,0,3,30,180,255,99,79,73,0, -99,71,69,0,99,255,57,0,99,191,53,0,99,199,49,0,99,207,45,0, -99,215,41,0,99,223,37,0,99,239,29,0,99,231,33,0,7,232,61,23, -1,0,6,200,34,135,25,0,34,127,16,0,99,135,25,0,99,127,16,0, -34,119,5,0,61,135,20,0,34,111,1,0,99,119,5,0,99,111,1,0, -16,120,61,87,9,0,191,122,208,81,61,111,13,0,225,79,0,0,201,105, -207,105,99,87,9,0,99,111,13,0,8,48,61,223,18,0,34,215,18,0, -34,103,22,0,230,0,99,103,22,0,35,23,70,0,195,151,22,0,57,95, -8,0,217,49,176,89,99,95,18,0,224,17,206,5,35,23,73,0,213,13, -35,87,72,0,198,81,42,87,1,0,195,18,202,17,34,87,0,0,34,23, -5,0,202,49,2,224,27,56,29,72,3,64,63,6,4,212,0,0,124,0, -61,231,1,0,10,192,61,87,9,0,61,95,13,0,60,231,5,0,99,95, -13,0,99,87,9,0,213,69,2,80,60,23,17,0,35,95,16,0,137,18, -171,17,245,5,28,230,20,0,60,23,17,0,0,90,137,18,162,81,156,253, -203,17,194,81,99,87,16,0,57,23,8,0,99,231,5,0,226,209,207,5, -99,215,18,0,181,5,99,23,18,0,61,119,16,0,65,218,238,217,170,5, -65,218,35,55,68,0,35,23,70,0,217,49,224,17,206,5,35,23,73,0, -213,13,35,87,72,0,198,81,42,87,1,0,195,18,202,17,34,87,0,0, -34,23,5,0,202,49,2,184,27,56,29,72,3,64,63,6,166,212,0,0, -119,0,202,193,35,23,18,0,162,209,224,209,143,189,24,80,35,191,53,0, -35,199,49,0,35,207,45,0,35,215,41,0,35,223,37,0,35,231,33,0, -35,239,29,0,35,255,57,0,3,30,76,0,127,0,132,7,225,112,6,224, -7,232,61,23,1,0,61,95,20,0,34,87,18,0,60,127,8,0,203,81, -239,81,247,61,34,215,1,0,128,255,210,106,46,6,148,204,1,0,106,119, -5,0,61,111,1,0,106,215,9,0,109,87,1,0,36,22,220,132,34,71, -1,0,99,71,1,0,34,23,5,0,99,23,5,0,28,48,35,79,5,0, -29,56,191,255,2,254,61,255,1,0,10,216,63,255,1,0,229,87,64,0, -224,7,96,1,63,231,0,0,219,225,127,231,0,0,10,216,251,47,32,0, -224,225,138,13,63,95,5,0,31,48,63,6,106,213,0,0,107,0,61,87, -1,0,106,215,1,0,197,53,34,223,13,0,11,112,61,87,9,0,191,90, -206,81,61,111,13,0,225,135,0,0,208,105,203,105,34,215,9,0,98,111, -13,0,98,87,9,0,2,200,61,127,18,0,60,118,16,0,194,122,15,104, -205,113,46,23,1,0,60,94,16,0,34,23,105,0,203,121,72,18,34,103, -0,0,47,55,1,0,25,56,204,49,34,95,5,0,63,6,210,213,0,0, -107,0,121,215,9,0,121,223,13,0,68,6,255,112,128,7,33,0,38,134, -16,0,194,58,7,120,207,129,48,23,1,0,38,94,16,0,34,23,105,0, -203,57,72,18,34,95,0,0,39,55,1,0,11,96,204,49,8,56,34,111, -5,0,63,6,22,214,0,0,109,0,1,82,64,6,63,0,132,7,225,112, -6,224,60,103,108,0,7,232,61,23,18,0,61,119,16,0,236,17,191,5, -236,113,250,5,28,48,29,56,191,255,158,254,128,7,66,1,61,135,1,0, -60,143,8,0,48,71,18,0,61,127,20,0,8,88,17,104,13,80,175,81, -229,5,65,18,238,17,170,5,65,18,17,80,170,89,224,89,159,253,28,48, -29,56,236,17,222,5,191,255,100,254,128,7,8,1,48,207,1,0,8,136, -207,137,237,137,183,61,13,64,128,255,148,28,224,81,138,125,61,223,1,0, -28,48,29,56,0,66,128,255,74,1,123,87,1,0,36,22,228,132,34,71, -1,0,99,71,1,0,34,23,5,0,99,23,5,0,28,48,35,79,5,0, -29,56,191,255,114,252,61,255,1,0,10,222,1,0,63,255,1,0,229,87, -64,0,224,7,96,1,63,231,0,0,219,225,127,231,0,0,10,216,251,47, -32,0,224,225,250,69,63,127,5,0,31,48,63,6,252,214,0,0,111,0, -245,61,128,255,34,28,224,81,250,61,61,223,1,0,28,48,29,56,1,66, -128,255,216,0,123,87,1,0,59,215,25,0,10,224,224,209,130,29,26,112, -195,114,43,6,88,83,133,0,203,113,46,87,1,0,61,63,5,0,123,87, -25,0,27,72,0,50,0,66,191,255,20,53,124,87,33,0,61,143,1,0, -113,215,25,0,229,87,64,0,224,7,96,1,60,255,0,0,10,216,65,250, -124,255,0,0,251,47,32,0,224,249,138,13,28,48,60,135,5,0,63,6, -122,215,0,0,112,0,61,127,1,0,111,207,1,0,68,6,255,112,128,7, -225,16,38,143,108,0,8,232,241,57,226,5,0,74,191,255,72,254,1,82, -197,37,41,135,18,0,0,18,240,57,186,5,41,23,20,0,61,231,25,0, -2,64,224,225,242,21,28,120,195,122,44,6,88,83,133,0,204,121,47,95, -1,0,41,63,5,0,125,95,25,0,61,223,1,0,29,72,0,50,191,255, -126,52,123,87,33,0,125,231,25,0,0,82,64,6,255,16,184,7,225,240, -7,232,61,23,1,0,8,208,34,79,13,0,34,71,9,0,6,224,60,55, -81,0,3,130,99,135,1,0,186,0,128,255,232,149,61,223,1,0,10,192, -59,223,1,0,61,207,5,0,128,255,178,103,106,223,9,0,106,207,29,0, -106,7,33,0,106,7,37,0,46,6,174,65,1,0,106,119,5,0,10,216, -202,15,3,0,128,255,142,103,106,223,9,0,45,6,126,66,1,0,106,199, -33,0,35,134,32,0,60,103,4,0,106,111,5,0,95,98,106,103,0,0, -99,87,5,0,202,15,3,0,13,82,99,135,9,0,99,7,20,0,99,7, -26,0,99,87,29,0,224,209,61,103,9,0,61,111,13,0,170,13,99,111, -17,0,99,103,13,0,60,119,8,0,99,119,22,0,197,21,61,87,20,0, -10,120,191,122,204,81,225,135,0,0,208,121,205,121,99,127,17,0,99,87, -13,0,61,103,1,0,44,103,18,0,99,103,22,0,61,55,5,0,35,79, -22,0,0,58,35,70,32,0,191,255,32,80,10,64,100,66,151,13,38,6, -136,143,132,0,32,62,130,12,191,255,214,65,224,81,0,234,149,37,60,87, -108,0,234,233,194,29,60,94,16,0,60,126,16,0,29,80,194,82,10,112, -206,121,47,23,1,0,203,81,34,23,105,0,42,55,1,0,72,18,34,95, -0,0,35,62,4,0,203,49,34,103,5,0,63,6,44,217,0,0,108,0, -65,234,60,95,4,0,235,233,214,221,27,80,120,6,255,240,128,7,225,48, -6,248,7,216,229,87,64,0,224,7,96,1,10,208,63,239,93,0,63,231, -89,0,250,47,32,0,59,23,1,0,34,95,13,0,34,87,9,0,253,89, -155,13,177,5,252,81,233,5,31,48,27,56,191,255,102,251,213,5,31,48, -27,56,191,255,158,252,64,6,255,48,130,7,225,0,7,224,60,23,1,0, -6,232,34,71,9,0,34,79,13,0,61,55,81,0,3,130,99,135,1,0, -128,255,78,148,29,48,28,56,10,64,128,255,8,0,66,6,255,0,134,7, -225,112,6,224,7,232,61,23,1,0,60,135,14,0,34,23,18,0,8,216, -240,17,218,5,128,255,56,3,128,7,54,1,60,119,110,0,28,111,112,0, -238,17,238,127,0,0,47,105,130,21,28,87,7,0,10,6,17,0,178,13, -10,6,33,0,130,13,28,48,29,56,27,64,128,255,162,7,128,7,6,1, -28,48,29,56,61,87,20,0,60,71,8,0,202,17,232,17,231,117,128,255, -6,25,224,81,210,5,27,48,128,255,106,148,149,117,61,215,1,0,58,215, -1,0,128,255,156,101,106,215,9,0,47,6,126,66,1,0,106,223,33,0, -1,114,106,127,5,0,10,216,123,119,0,0,61,207,5,0,128,255,122,101, -106,223,9,0,45,6,174,65,1,0,106,207,29,0,10,216,106,7,33,0, -28,48,106,7,37,0,29,56,106,111,5,0,61,103,1,0,202,15,3,0, -108,223,1,0,3,64,128,255,154,3,123,87,33,0,28,48,29,56,128,255, -58,4,36,22,236,132,34,95,1,0,35,86,4,0,106,95,1,0,34,23, -5,0,106,23,5,0,28,48,35,22,4,0,34,71,1,0,34,79,5,0, -29,56,191,255,118,248,35,23,1,0,202,17,99,23,1,0,2,230,1,0, -229,87,64,0,224,7,96,1,59,255,0,0,220,249,123,255,0,0,10,224, -252,47,32,0,224,249,138,13,27,48,59,95,5,0,63,6,250,218,0,0, -107,0,61,87,1,0,106,215,1,0,197,5,27,64,128,255,8,0,70,6, -255,112,182,7,225,240,8,224,7,232,61,71,1,0,40,71,18,0,6,216, -128,255,0,24,224,81,226,5,28,48,128,255,100,147,128,7,214,1,61,215, -1,0,58,215,1,0,128,255,148,100,106,215,9,0,45,6,126,66,1,0, -106,231,33,0,1,98,106,111,5,0,10,224,124,103,0,0,61,207,5,0, -128,255,114,100,106,231,9,0,106,207,29,0,106,7,33,0,43,6,174,65, -1,0,106,7,37,0,10,224,106,95,5,0,61,23,1,0,202,15,3,0, -34,135,22,0,98,231,1,0,99,135,102,0,11,82,34,79,18,0,99,87, -105,0,99,79,98,0,99,231,81,0,61,87,20,0,61,111,13,0,61,103, -9,0,10,120,191,122,204,81,225,135,0,0,208,121,205,121,99,127,93,0, -99,87,89,0,0,58,61,55,5,0,3,64,191,255,36,77,10,64,100,66, -135,13,38,6,156,143,132,0,32,62,251,13,191,255,218,62,99,7,96,0, -99,31,85,0,61,87,16,0,59,134,16,0,194,82,10,120,207,129,48,23, -1,0,59,94,16,0,34,23,105,0,203,81,2,22,32,0,34,95,0,0, -42,55,1,0,11,96,204,49,35,62,80,0,3,64,34,111,5,0,63,6, -42,220,0,0,109,0,61,23,1,0,10,192,34,95,25,0,34,103,5,0, -99,95,105,0,34,87,16,0,99,103,85,0,99,87,96,0,59,94,16,0, -61,127,18,0,59,118,16,0,194,122,15,104,205,113,46,23,1,0,203,121, -34,23,105,0,47,55,1,0,2,22,32,0,34,103,0,0,35,62,80,0, -204,49,3,64,34,95,5,0,63,6,132,220,0,0,107,0,10,216,124,223, -33,0,61,79,1,0,46,6,92,83,133,0,41,207,25,0,61,63,5,0, -25,80,195,82,206,81,42,111,1,0,1,50,105,111,25,0,0,66,191,255, -166,47,10,48,128,255,202,134,10,16,61,87,1,0,106,215,1,0,106,207, -25,0,165,5,10,216,59,87,13,0,224,81,202,253,123,199,13,0,2,238, -2,0,229,87,64,0,224,7,96,1,60,255,0,0,221,249,124,255,0,0, -10,232,253,47,32,0,224,249,138,13,28,48,60,103,5,0,63,6,4,221, -0,0,108,0,118,6,255,240,138,7,225,112,8,224,6,216,59,71,8,0, -7,232,128,255,10,22,224,81,210,5,28,48,128,255,110,145,197,125,61,215, -1,0,58,215,1,0,128,255,160,98,106,215,9,0,47,6,126,66,1,0, -106,231,33,0,1,114,106,127,5,0,10,224,124,119,0,0,61,207,5,0, -128,255,126,98,106,231,9,0,106,207,29,0,45,6,174,65,1,0,106,7, -33,0,106,7,37,0,10,224,61,103,1,0,106,111,5,0,108,231,1,0, -36,22,244,132,202,15,3,0,34,95,1,0,35,86,12,0,106,95,1,0, -34,23,5,0,106,23,5,0,27,48,35,22,12,0,34,79,5,0,34,71, -1,0,29,56,191,255,144,245,10,200,27,48,29,56,3,64,128,255,112,0, -35,95,1,0,124,87,33,0,203,201,36,22,252,132,34,95,1,0,35,86, -4,0,106,95,1,0,34,23,5,0,106,23,5,0,27,48,35,22,4,0, -34,79,5,0,34,71,1,0,29,56,191,255,78,245,61,87,1,0,106,215, -1,0,229,87,64,0,224,7,96,1,60,255,0,0,10,232,217,249,124,255, -0,0,253,47,32,0,224,249,138,13,28,48,60,143,5,0,63,6,28,222, -0,0,113,0,74,6,255,112,182,7,225,16,7,232,6,224,61,55,5,0, -60,79,8,0,0,58,8,216,35,70,28,0,191,255,184,74,10,64,100,66, -135,13,38,6,176,143,132,0,32,62,211,14,191,255,110,60,11,122,99,127, -25,0,35,118,28,0,61,23,1,0,99,7,16,0,99,119,5,0,34,111, -22,0,34,103,1,0,99,111,22,0,99,103,1,0,60,126,16,0,61,87, -9,0,61,95,13,0,27,64,99,95,13,0,99,87,9,0,60,95,8,0, -3,56,99,95,18,0,61,135,16,0,60,94,16,0,194,130,16,112,206,121, -47,23,1,0,203,129,34,23,105,0,48,55,1,0,2,22,40,0,34,95, -0,0,34,103,5,0,203,49,63,6,200,222,0,0,108,0,118,6,255,16, -182,7,225,0,13,130,99,135,105,0,99,31,85,0,7,232,61,111,1,0, -99,7,96,0,45,111,1,0,99,7,102,0,99,111,81,0,6,224,61,55, -5,0,60,79,8,0,0,58,3,64,191,255,242,73,10,64,100,66,135,13, -38,6,196,143,132,0,32,62,26,15,191,255,168,59,61,95,13,0,61,87, -9,0,60,126,16,0,99,95,93,0,99,87,89,0,35,62,80,0,61,135, -16,0,60,95,8,0,194,130,99,95,98,0,16,112,60,94,16,0,206,121, -47,23,1,0,203,129,34,23,105,0,48,55,1,0,72,18,34,95,0,0, -34,103,5,0,203,49,63,6,102,223,0,0,108,0,118,6,255,0,168,7, -225,112,6,208,8,232,0,18,9,224,60,143,18,0,7,200,241,201,186,5, -60,23,20,0,2,216,60,55,5,0,27,56,61,79,18,0,3,64,191,255, -94,73,10,64,100,66,135,13,38,6,216,143,132,0,32,62,76,15,191,255, -20,59,58,94,16,0,58,118,16,0,25,80,194,82,10,104,205,113,46,23, -1,0,203,81,34,23,105,0,42,55,1,0,2,22,32,0,34,103,0,0, -29,56,204,49,3,64,34,95,5,0,63,6,226,223,0,0,107,0,61,207, -25,0,10,208,25,80,195,82,47,6,92,83,133,0,207,81,42,119,1,0, -60,63,5,0,125,119,25,0,27,64,29,72,1,50,191,255,78,44,10,48, -128,255,114,131,61,95,1,0,125,207,25,0,43,23,33,0,224,17,218,5, -107,215,33,0,133,13,11,16,34,95,13,0,224,89,202,253,98,215,13,0, -65,82,104,6,255,112,128,7,225,0,8,232,61,231,25,0,46,6,92,83, -133,0,28,136,195,138,206,137,49,111,1,0,41,103,18,0,125,111,25,0, -0,66,236,57,186,5,41,71,20,0,41,63,5,0,1,50,29,72,191,255, -230,43,10,48,128,255,10,131,125,231,25,0,64,6,255,0,130,7,97,0, -38,134,16,0,194,58,7,120,207,129,48,23,1,0,38,94,16,0,34,23, -105,0,203,57,2,22,40,0,34,95,0,0,39,55,1,0,11,96,204,49, -8,232,29,56,3,64,34,111,5,0,63,6,190,224,0,0,109,0,61,95, -1,0,43,23,33,0,224,17,218,5,107,87,33,0,133,13,11,16,34,95, -13,0,224,89,202,253,98,87,13,0,35,87,1,0,66,6,127,0,128,7, -225,16,7,224,6,232,29,143,7,0,8,216,17,6,17,0,186,21,61,23, -105,0,63,6,22,225,0,0,2,22,88,1,34,87,0,0,34,135,5,0, -221,81,10,48,112,0,234,225,186,5,0,82,213,29,61,94,16,0,61,118, -16,0,28,80,194,82,10,104,205,113,46,23,1,0,203,81,34,23,105,0, -42,55,1,0,2,22,16,0,34,103,0,0,27,56,204,49,34,95,5,0, -63,6,84,225,0,0,107,0,1,82,64,6,255,16,130,7,225,0,7,224, -60,23,1,0,6,232,34,71,9,0,34,79,13,0,61,55,81,0,3,130, -99,135,1,0,128,255,122,140,29,127,112,0,10,64,224,121,194,5,221,255, -2,0,234,5,29,48,28,56,128,255,18,0,213,5,29,48,28,56,191,255, -28,248,66,6,255,0,138,7,225,112,8,216,6,224,39,87,1,0,38,127, -14,0,42,87,18,0,7,232,239,81,218,5,191,255,76,251,128,7,72,1, -61,23,20,0,60,71,8,0,202,17,232,17,191,5,128,7,48,1,128,255, -74,17,224,81,226,5,27,48,128,255,174,140,128,7,36,1,61,215,1,0, -58,215,1,0,128,255,222,93,106,215,9,0,44,6,126,66,1,0,106,223, -33,0,1,90,106,103,5,0,10,216,123,95,0,0,61,207,5,0,128,255, -188,93,10,16,98,223,9,0,42,6,174,65,1,0,98,207,29,0,98,7, -33,0,28,48,98,7,37,0,2,216,61,143,1,0,98,87,5,0,113,223, -1,0,29,56,194,15,3,0,3,64,191,255,218,251,123,87,33,0,28,48, -29,56,128,255,248,2,35,23,1,0,202,17,99,23,1,0,36,22,244,132, -34,95,1,0,35,86,12,0,106,95,1,0,34,23,5,0,106,23,5,0, -28,48,35,22,12,0,34,79,5,0,34,71,1,0,29,56,191,255,172,240, -35,23,1,0,202,17,99,23,1,0,36,22,252,132,34,95,1,0,35,86, -4,0,106,95,1,0,34,23,5,0,106,23,5,0,28,48,35,22,4,0, -34,79,5,0,34,71,1,0,29,56,191,255,118,240,35,23,1,0,61,135, -1,0,202,17,99,23,1,0,112,215,1,0,2,232,229,87,64,0,224,7, -96,1,59,255,0,0,221,249,123,255,0,0,10,232,253,47,32,0,224,249, -202,13,27,48,59,127,5,0,63,6,0,227,0,0,111,0,197,5,27,64, -128,255,8,0,74,6,255,112,184,7,225,243,8,224,7,232,61,71,1,0, -40,71,18,0,6,216,128,255,2,16,224,81,226,5,28,48,128,255,102,139, -128,7,26,2,61,207,1,0,57,207,1,0,128,255,150,92,106,207,9,0, -45,6,126,66,1,0,106,231,33,0,1,98,106,111,5,0,10,224,124,103, -0,0,61,215,5,0,128,255,116,92,106,231,9,0,106,215,29,0,43,6, -174,65,1,0,106,7,33,0,10,224,106,7,37,0,0,58,106,95,5,0, -61,23,1,0,202,15,3,0,98,231,1,0,34,79,18,0,61,55,5,0, -35,70,4,0,191,255,92,69,10,64,100,66,135,13,38,6,236,143,132,0, -32,62,33,17,191,255,18,55,11,130,35,126,4,0,61,119,1,0,99,7, -100,0,99,127,89,0,46,111,22,0,99,231,85,0,99,111,106,0,99,135, -109,0,61,87,20,0,61,103,9,0,10,72,191,74,204,81,225,127,0,0, -9,16,61,111,13,0,207,17,205,17,99,87,93,0,99,23,97,0,59,126, -16,0,46,95,18,0,35,62,84,0,99,95,102,0,3,64,61,135,16,0, -59,94,16,0,194,130,16,112,206,121,47,23,1,0,203,129,34,23,105,0, -48,55,1,0,2,22,40,0,34,95,0,0,34,103,5,0,203,49,63,6, -54,228,0,0,108,0,124,87,33,0,13,90,61,199,18,0,99,95,109,0, -0,210,133,45,61,87,16,0,234,209,178,37,248,209,146,37,59,94,16,0, -59,126,16,0,26,80,194,82,10,112,206,121,47,23,1,0,203,81,34,23, -105,0,42,55,1,0,72,18,34,95,0,0,35,62,84,0,203,49,34,103, -5,0,63,6,138,228,0,0,108,0,35,95,1,0,65,90,99,95,1,0, -65,210,59,87,4,0,234,209,230,213,61,79,1,0,45,6,92,83,133,0, -41,215,25,0,61,63,5,0,26,128,195,130,205,129,48,103,1,0,1,50, -105,103,25,0,0,66,191,255,146,39,10,48,128,255,182,126,35,23,1,0, -61,71,1,0,202,17,104,215,25,0,99,23,1,0,35,95,97,0,35,87, -93,0,40,183,9,0,40,191,13,0,104,87,9,0,104,95,13,0,27,48, -24,56,29,72,191,255,132,251,35,23,1,0,202,17,61,87,1,0,99,23, -1,0,106,207,1,0,106,191,13,0,106,183,9,0,2,232,229,87,64,0, -224,7,96,1,60,255,0,0,221,249,124,255,0,0,10,232,253,47,32,0, -224,249,138,13,28,48,60,87,5,0,63,6,70,229,0,0,106,0,120,6, -255,243,182,7,225,241,13,130,99,135,105,0,99,31,85,0,7,224,60,111, -1,0,99,7,96,0,45,111,1,0,99,7,102,0,99,111,81,0,6,232, -60,55,5,0,61,79,8,0,0,58,3,64,191,255,116,67,10,64,100,66, -135,13,38,6,0,144,132,0,32,62,159,17,191,255,42,53,60,87,9,0, -60,95,13,0,0,202,99,87,89,0,99,95,93,0,0,210,60,191,18,0, -60,199,16,0,61,95,8,0,0,218,99,95,98,0,128,7,106,1,248,209, -186,5,128,7,96,1,247,209,170,53,60,23,20,0,224,17,183,37,61,94, -16,0,99,23,98,0,61,126,16,0,26,80,194,82,10,112,206,121,47,23, -1,0,203,81,34,23,105,0,42,55,1,0,72,18,34,95,0,0,35,62, -80,0,203,49,34,103,5,0,63,6,12,230,0,0,108,0,61,95,8,0, -65,202,99,95,98,0,60,135,1,0,60,223,20,0,48,135,18,0,61,111, -8,0,208,217,173,217,197,37,224,217,250,29,61,94,16,0,26,96,194,98, -12,80,202,89,43,23,1,0,35,62,80,0,34,23,105,0,61,94,16,0, -203,97,72,18,34,95,0,0,44,103,1,0,11,48,204,49,34,127,5,0, -63,6,104,230,0,0,111,0,65,202,197,5,61,119,8,0,174,217,224,217, -254,85,27,96,128,97,99,103,98,0,35,79,85,0,60,111,13,0,41,71, -17,0,61,23,8,0,60,103,9,0,219,17,2,120,191,122,2,112,204,113, -99,119,89,0,225,135,0,0,208,121,205,121,99,127,93,0,213,5,9,78, -20,0,41,71,17,0,137,66,168,17,172,253,2,128,200,129,61,118,16,0, -26,80,194,82,10,104,205,113,46,23,1,0,99,135,96,0,34,23,105,0, -99,79,85,0,72,18,34,103,0,0,61,94,16,0,203,81,42,55,1,0, -0,218,204,49,35,62,80,0,34,95,5,0,63,6,0,231,0,0,107,0, -60,87,9,0,60,95,13,0,65,202,99,95,93,0,99,87,89,0,99,7, -96,0,61,87,8,0,99,31,85,0,99,87,98,0,65,210,61,127,4,0, -239,209,190,5,191,7,146,254,25,80,118,6,255,241,130,7,225,0,7,224, -60,23,1,0,6,232,34,71,9,0,34,79,13,0,61,55,81,0,3,130, -99,135,1,0,128,255,158,134,29,48,28,56,10,64,128,255,8,0,66,6, -255,0,132,7,33,0,39,135,18,0,38,87,108,0,39,127,16,0,16,72, -234,121,202,5,128,255,226,9,197,53,234,73,199,5,191,255,48,242,245,45, -39,23,1,0,38,119,8,0,34,23,18,0,39,111,20,0,2,88,14,136, -17,96,173,97,229,5,65,74,239,73,170,5,65,74,14,96,172,89,224,89, -159,253,234,73,206,5,191,255,252,241,213,21,0,122,14,96,234,73,170,5, -203,97,234,129,170,5,13,120,205,17,241,17,135,13,99,103,5,0,99,127, -1,0,128,255,208,1,181,5,128,255,8,0,68,6,63,0,182,7,225,241, -13,130,39,119,1,0,99,7,16,0,35,126,28,0,46,111,22,0,99,127, -5,0,99,111,22,0,99,135,25,0,39,87,20,0,39,103,9,0,10,72, -191,74,204,81,225,127,0,0,9,16,39,111,13,0,207,17,205,17,99,23, -13,0,99,87,9,0,8,208,46,71,18,0,6,216,99,71,18,0,7,232, -128,255,224,10,224,81,226,5,26,48,128,255,68,134,128,7,92,1,61,231, -1,0,60,231,1,0,128,255,116,87,106,231,9,0,47,6,126,66,1,0, -106,215,33,0,10,224,106,127,5,0,1,114,124,119,0,0,61,215,5,0, -128,255,82,87,106,231,9,0,106,215,29,0,106,7,33,0,45,6,174,65, -1,0,106,7,37,0,0,58,106,111,5,0,99,87,1,0,202,15,3,0, -35,79,18,0,61,55,5,0,35,70,28,0,191,255,64,64,10,64,100,66, -135,13,38,6,20,144,132,0,32,62,42,19,191,255,246,49,59,95,4,0, -61,207,16,0,11,214,254,255,0,226,165,37,249,225,242,29,59,87,108,0, -234,225,178,29,59,94,16,0,59,126,16,0,28,80,194,82,10,112,206,121, -47,23,1,0,203,81,34,23,105,0,42,55,1,0,72,18,34,95,0,0, -3,56,203,49,34,103,5,0,63,6,24,233,0,0,108,0,65,226,59,95, -4,0,235,225,198,221,61,231,1,0,35,87,1,0,60,199,25,0,60,191, -1,0,24,128,195,130,45,6,92,83,133,0,205,129,48,103,1,0,124,87, -1,0,124,103,25,0,61,63,5,0,28,72,1,50,0,66,191,255,0,35, -10,48,128,255,36,122,202,209,124,191,1,0,124,199,25,0,11,90,99,95, -25,0,27,48,25,56,29,72,3,64,191,255,10,247,202,209,35,239,1,0, -229,87,64,0,224,7,96,1,61,255,0,0,10,224,218,249,125,255,0,0, -252,47,32,0,224,249,138,13,29,48,61,87,5,0,63,6,170,233,0,0, -106,0,118,6,255,241,190,7,225,243,80,26,99,79,13,0,35,207,177,0, -35,199,181,0,8,208,6,224,60,71,8,0,7,232,128,255,86,9,224,81, -226,5,26,48,128,255,186,132,128,7,126,7,61,223,1,0,54,6,40,144, -132,0,59,223,1,0,128,255,228,85,106,223,9,0,46,6,126,66,1,0, -106,215,33,0,10,216,106,119,5,0,1,106,123,111,0,0,61,215,5,0, -128,255,194,85,106,223,9,0,106,215,29,0,106,7,33,0,13,90,106,7, -37,0,44,6,174,65,1,0,106,103,5,0,61,127,1,0,202,15,3,0, -99,7,48,0,99,87,33,0,47,127,22,0,35,86,60,0,99,127,54,0, -99,87,37,0,99,95,57,0,25,120,61,111,13,0,61,103,9,0,191,122, -25,112,204,113,225,135,0,0,208,121,205,121,99,119,41,0,99,127,45,0, -24,72,61,55,5,0,185,73,99,79,50,0,25,56,233,0,35,70,60,0, -191,255,108,62,100,82,247,5,22,48,32,62,254,19,0,66,191,255,38,48, -0,218,35,151,13,0,61,191,16,0,18,214,1,0,149,37,247,209,226,29, -60,94,16,0,26,96,194,98,12,80,202,89,43,23,1,0,35,62,32,0, -34,23,105,0,60,94,16,0,203,97,72,18,34,95,0,0,44,103,1,0, -11,48,204,49,34,127,5,0,63,6,228,234,0,0,111,0,65,218,65,210, -60,119,4,0,238,209,214,221,0,210,133,37,247,209,210,29,26,80,194,82, -60,102,16,0,202,97,44,23,1,0,60,94,16,0,34,23,105,0,203,81, -72,18,34,95,0,0,42,55,1,0,11,96,204,49,35,62,32,0,34,135, -5,0,63,6,46,235,0,0,112,0,65,218,65,210,61,127,18,0,239,209, -234,221,61,111,1,0,60,103,8,0,45,111,18,0,236,105,239,151,0,0, -99,151,13,0,199,109,61,127,13,0,61,119,9,0,224,201,202,21,24,56, -7,104,191,106,7,96,206,97,225,135,0,0,208,105,207,105,99,111,45,0, -99,103,41,0,60,95,8,0,167,89,99,95,50,0,133,13,0,58,99,119, -41,0,99,127,45,0,99,207,50,0,35,23,50,0,224,17,199,45,61,55, -5,0,2,72,35,70,60,0,191,255,76,61,100,82,247,5,22,48,32,62, -75,20,0,66,191,255,6,47,23,80,194,82,60,110,16,0,202,105,45,23, -1,0,60,94,16,0,34,23,105,0,203,81,72,18,34,95,0,0,42,55, -1,0,11,96,204,49,35,62,32,0,34,87,5,0,63,6,238,235,0,0, -106,0,65,218,61,95,13,0,61,87,9,0,99,95,45,0,99,87,41,0, -60,79,8,0,0,58,99,79,50,0,61,55,5,0,35,70,60,0,191,255, -222,60,100,82,135,13,22,48,32,62,89,20,0,66,191,255,152,46,224,81, -11,114,99,119,57,0,194,186,60,102,16,0,215,97,44,23,1,0,60,86, -16,0,34,23,105,0,215,81,2,22,40,0,34,95,0,0,42,55,1,0, -11,96,204,49,35,62,32,0,3,64,34,135,5,0,63,6,102,236,0,0, -112,0,35,127,33,0,99,87,5,0,111,87,33,0,181,5,99,23,5,0, -35,23,5,0,34,23,13,0,224,17,154,253,13,114,99,119,57,0,35,111, -1,0,60,103,108,0,61,215,18,0,205,217,236,209,186,5,128,7,150,1, -61,95,20,0,235,193,235,199,60,19,99,23,50,0,226,0,224,17,215,53, -61,55,5,0,2,72,0,58,35,70,60,0,191,255,48,60,100,82,247,5, -22,48,32,62,188,20,0,66,191,255,234,45,61,95,13,0,61,87,9,0, -60,110,16,0,99,87,41,0,99,95,45,0,26,80,194,82,202,105,45,23, -1,0,60,94,16,0,34,23,105,0,203,81,72,18,34,95,0,0,42,55, -1,0,11,96,204,49,35,62,32,0,34,87,5,0,63,6,26,237,0,0, -106,0,65,218,60,23,8,0,226,193,186,5,128,7,14,1,61,87,20,0, -248,81,239,21,184,17,99,23,50,0,24,56,61,103,9,0,61,111,13,0, -7,120,191,122,7,112,204,113,99,119,41,0,225,135,0,0,208,121,205,121, -99,127,45,0,229,21,170,17,99,23,50,0,61,103,9,0,61,63,20,0, -61,111,13,0,7,120,191,122,7,112,204,113,99,119,41,0,225,135,0,0, -208,121,205,121,99,127,45,0,61,55,5,0,35,79,50,0,35,70,60,0, -191,255,96,59,100,82,247,5,22,48,32,62,221,20,0,66,191,255,26,45, -26,80,194,82,60,102,16,0,202,97,44,23,1,0,60,94,16,0,34,23, -105,0,203,81,72,18,34,95,0,0,42,55,1,0,11,96,204,49,35,62, -32,0,34,135,5,0,63,6,218,237,0,0,112,0,35,151,13,0,65,218, -224,145,138,45,60,118,16,0,23,104,205,113,46,23,1,0,11,122,34,23, -105,0,60,86,16,0,2,22,32,0,34,103,0,0,215,81,42,55,1,0, -99,127,57,0,204,49,35,62,32,0,35,70,60,0,34,95,5,0,63,6, -34,238,0,0,107,0,35,143,5,0,113,87,13,0,65,218,13,82,99,87, -57,0,61,151,1,0,61,23,20,0,99,151,9,0,60,87,8,0,50,151, -18,0,162,81,99,151,9,0,229,93,61,119,16,0,65,210,238,209,170,5, -65,210,35,151,9,0,60,111,8,0,237,145,135,85,61,127,13,0,61,119, -9,0,224,201,202,21,24,56,7,104,191,106,7,96,206,97,225,135,0,0, -208,105,207,105,99,111,45,0,99,103,41,0,60,103,8,0,167,97,99,103, -50,0,133,13,0,58,99,119,41,0,99,127,45,0,99,207,50,0,35,23, -50,0,224,17,199,45,61,55,5,0,2,72,35,70,60,0,191,255,56,58, -100,82,247,5,22,48,32,62,25,21,0,66,191,255,242,43,60,94,16,0, -60,118,16,0,26,80,194,82,10,104,205,113,46,23,1,0,203,81,34,23, -105,0,42,55,1,0,72,18,34,103,0,0,35,62,32,0,204,49,34,95, -5,0,63,6,2,239,0,0,107,0,65,218,60,87,8,0,35,151,9,0, -170,145,99,151,9,0,224,145,223,157,128,145,60,135,108,0,99,151,9,0, -240,209,186,5,128,7,144,1,60,199,8,0,178,193,224,201,231,101,248,201, -248,207,60,75,99,79,50,0,61,87,9,0,61,95,13,0,0,58,99,95, -45,0,99,87,41,0,233,0,61,55,5,0,35,70,60,0,191,255,152,57, -100,82,247,5,22,48,32,62,121,21,0,66,191,255,82,43,60,94,16,0, -26,96,194,98,12,80,202,89,43,23,1,0,35,62,32,0,34,23,105,0, -60,94,16,0,203,97,72,18,34,95,0,0,44,103,1,0,11,48,204,49, -34,127,5,0,63,6,164,239,0,0,111,0,35,151,13,0,65,218,224,145, -138,45,60,110,16,0,215,105,45,23,1,0,11,114,34,23,105,0,99,119, -57,0,2,22,32,0,34,95,0,0,60,86,16,0,215,81,42,55,1,0, -11,96,204,49,35,62,32,0,35,70,60,0,34,87,5,0,63,6,236,239, -0,0,106,0,35,143,5,0,13,130,113,87,13,0,65,218,99,135,57,0, -60,23,8,0,226,193,146,93,249,193,246,21,35,151,9,0,24,120,99,151, -50,0,191,122,61,103,9,0,61,111,13,0,24,112,204,113,99,119,41,0, -225,135,0,0,208,121,205,121,99,127,45,0,24,56,213,21,185,17,99,23, -50,0,25,120,61,103,9,0,61,111,13,0,191,122,25,112,204,113,99,119, -41,0,225,135,0,0,208,121,205,121,99,127,45,0,25,56,61,55,5,0, -35,79,50,0,35,70,60,0,191,255,136,56,100,82,247,5,22,48,32,62, -163,21,0,66,191,255,66,42,26,80,194,82,60,102,16,0,202,97,44,23, -1,0,60,94,16,0,34,23,105,0,203,81,72,18,34,95,0,0,42,55, -1,0,11,96,204,49,35,62,32,0,34,135,5,0,63,6,178,240,0,0, -112,0,65,218,61,23,1,0,35,127,33,0,34,215,1,0,98,127,1,0, -36,22,244,132,34,95,1,0,35,86,24,0,106,95,1,0,34,23,5,0, -106,23,5,0,28,48,35,22,24,0,34,79,5,0,34,71,1,0,29,56, -191,255,72,226,202,217,36,22,4,133,34,95,1,0,35,86,16,0,106,95, -1,0,34,23,5,0,106,23,5,0,28,48,35,22,16,0,34,71,1,0, -34,79,5,0,29,56,191,255,26,226,202,217,35,231,33,0,229,87,64,0, -224,7,96,1,60,255,0,0,219,249,124,255,0,0,10,216,251,47,32,0, -224,249,138,13,28,48,60,119,5,0,63,6,78,241,0,0,110,0,61,111, -1,0,109,215,1,0,3,30,16,0,126,6,255,243,132,7,225,240,6,224, -7,232,61,223,1,0,8,208,59,223,1,0,128,255,94,78,106,223,9,0, -47,6,126,66,1,0,106,215,33,0,28,48,61,23,1,0,106,127,5,0, -98,87,1,0,34,119,18,0,61,87,20,0,60,103,8,0,202,113,236,113, -167,21,36,22,12,133,34,71,1,0,99,71,1,0,34,23,5,0,99,23, -5,0,35,79,5,0,29,56,191,255,120,225,10,208,165,37,34,207,13,0, -61,103,9,0,10,120,191,122,204,81,225,135,0,0,208,121,61,111,13,0, -34,199,9,0,205,121,98,127,13,0,98,87,9,0,61,63,18,0,61,71, -1,0,29,72,128,255,80,0,61,23,1,0,10,208,98,199,9,0,98,207, -13,0,61,255,1,0,63,255,1,0,229,87,64,0,224,7,96,1,63,231, -0,0,218,225,127,231,0,0,10,208,250,47,32,0,224,225,138,13,63,135, -5,0,31,48,63,6,56,242,0,0,112,0,61,127,1,0,111,223,1,0, -68,6,255,240,128,7,33,0,38,134,16,0,194,58,7,120,207,129,48,23, -1,0,38,94,16,0,34,23,105,0,203,57,2,22,16,0,34,95,0,0, -39,55,1,0,11,96,204,49,8,56,34,111,5,0,63,6,126,242,0,0, -109,0,1,82,64,6,63,0,128,7,33,0,38,143,108,0,241,57,194,5, -191,255,240,237,165,5,0,82,64,6,63,0,130,7,225,112,7,224,60,23, -1,0,6,232,34,71,9,0,34,79,13,0,61,55,81,0,3,130,99,135, -1,0,128,255,56,123,10,200,229,87,64,0,224,7,96,1,10,248,61,223, -93,0,61,215,89,0,255,47,32,0,60,23,1,0,34,95,13,0,34,87, -9,0,251,89,251,21,177,5,250,81,201,21,29,48,128,255,156,0,97,82, -29,23,112,0,226,87,0,0,42,17,29,48,28,56,25,64,194,5,191,255, -156,238,149,13,191,255,170,230,229,5,29,48,28,56,25,64,191,255,78,244, -66,6,255,112,130,7,225,0,7,232,61,62,4,0,8,48,3,64,191,255, -26,53,61,55,5,0,0,82,6,16,194,207,6,0,178,5,1,82,213,5, -34,23,13,0,224,17,138,253,0,226,224,81,162,29,128,255,112,1,10,224, -224,225,210,21,61,55,5,0,1,58,191,255,84,55,61,55,1,0,38,55, -1,0,32,62,160,1,128,255,160,75,61,55,1,0,38,55,1,0,31,58, -128,255,92,75,28,80,66,6,255,0,38,143,4,0,100,138,231,87,0,0, -127,0,128,7,225,0,6,232,7,224,224,233,194,53,49,6,0,84,133,0, -61,63,81,0,125,143,105,0,224,57,194,5,29,48,128,255,236,121,61,55, -85,0,224,49,178,5,191,255,122,155,61,23,105,0,63,6,226,243,0,0, -2,22,104,1,34,87,0,0,34,135,5,0,221,81,10,48,112,0,29,63, -0,0,29,71,1,0,38,6,60,144,132,0,191,255,64,47,45,6,48,72, -133,0,125,111,105,0,129,226,201,5,29,48,191,255,96,144,64,6,255,0, -128,7,128,7,33,0,38,23,105,0,63,6,44,244,0,0,72,18,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0, -38,23,105,0,63,6,80,244,0,0,2,22,16,0,34,87,0,0,34,135, -5,0,198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0, -63,6,116,244,0,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,1,82,127,0,128,7,33,0,38,23,105,0, -63,6,156,244,0,0,2,22,208,0,34,87,0,0,34,135,5,0,198,81, -10,48,112,0,64,6,63,0,0,82,127,0,0,82,127,0,1,82,127,0, -1,82,127,0,38,87,108,0,127,0,38,87,8,0,127,0,38,87,14,0, -127,0,33,6,72,11,128,0,97,0,33,6,128,84,130,0,97,0,33,6, -138,146,129,0,97,0,33,6,12,147,129,0,97,0,128,7,225,0,6,232, -7,224,224,233,226,13,47,6,96,75,133,0,125,127,105,0,0,58,191,255, -250,153,129,226,201,5,29,48,191,255,96,143,64,6,255,0,128,7,33,0, -38,71,125,0,128,255,100,5,64,6,63,0,128,7,33,0,2,66,128,255, -86,5,64,6,63,0,130,7,225,48,7,232,6,216,38,6,100,144,132,0, -191,255,248,45,61,95,13,0,61,87,9,0,61,103,18,0,202,22,31,0, -202,29,204,134,31,0,154,29,221,223,22,0,178,5,10,58,165,5,7,58, -59,55,108,0,59,23,113,0,10,224,220,17,125,23,9,0,125,7,13,0, -29,64,191,255,166,21,125,231,9,0,125,7,13,0,133,69,61,215,1,0, -128,255,70,74,106,215,9,0,10,224,106,7,29,0,47,6,174,65,1,0, -106,7,33,0,29,56,106,7,37,0,3,64,59,23,105,0,106,127,5,0, -2,22,40,0,34,87,0,0,125,231,1,0,219,81,10,48,34,119,5,0, -63,6,204,245,0,0,110,0,124,87,33,0,125,215,1,0,35,239,1,0, -229,87,64,0,224,7,96,1,60,255,0,0,221,249,124,255,0,0,10,232, -253,47,32,0,224,249,138,13,28,48,60,111,5,0,63,6,2,246,0,0, -109,0,66,6,255,48,156,7,225,243,7,224,6,216,99,71,5,0,38,6, -136,144,132,0,191,255,24,45,60,87,18,0,60,23,9,0,10,120,194,121, -15,94,255,255,194,206,31,0,202,13,202,118,31,0,154,13,27,48,35,71, -5,0,28,56,191,255,22,144,128,7,162,1,133,18,11,80,133,82,10,104, -162,105,13,214,1,0,197,210,59,191,113,0,197,18,23,192,194,193,11,118, -1,0,206,118,31,0,35,238,8,0,125,7,13,0,125,7,1,0,125,7, -5,0,32,182,32,0,99,239,33,0,197,82,202,185,12,82,60,95,1,0, -99,87,53,0,99,95,29,0,174,177,220,151,22,0,252,135,23,0,99,135, -50,0,32,54,64,0,3,56,31,66,191,255,12,50,35,55,1,0,29,64, -0,58,32,78,64,0,191,255,54,50,97,82,146,13,38,6,120,144,132,0, -32,62,15,1,0,66,191,255,236,35,0,234,32,126,32,0,99,127,46,0, -224,201,135,21,99,7,41,0,99,199,37,0,99,7,44,0,59,55,108,0, -59,63,125,0,35,70,28,0,191,255,36,20,1,234,224,177,167,21,32,110, -32,0,99,7,41,0,99,191,37,0,99,111,44,0,59,55,108,0,59,63, -125,0,35,70,28,0,191,255,254,19,65,234,35,143,5,0,113,239,1,0, -35,151,29,0,99,151,5,0,59,191,108,0,191,255,0,36,10,232,125,7, -32,0,35,151,5,0,3,90,125,151,1,0,125,191,26,0,125,239,9,0, -1,82,125,87,24,0,125,7,13,0,35,135,1,0,125,7,21,0,125,135, -17,0,93,95,34,0,11,122,99,215,46,0,99,7,41,0,99,199,37,0, -99,127,53,0,220,223,22,0,178,5,10,50,165,5,7,50,29,64,35,62, -28,0,191,255,90,22,224,201,167,13,99,7,44,0,99,207,46,0,29,56, -35,54,28,0,191,255,178,22,28,48,29,56,191,255,170,22,60,119,18,0, -217,113,174,209,99,215,46,0,250,0,224,209,183,13,32,86,64,0,182,81, -99,87,44,0,29,56,35,54,28,0,191,255,132,22,59,55,125,0,29,56, -191,255,228,19,29,80,92,6,255,243,158,7,225,243,7,224,6,192,99,71, -9,0,38,6,204,144,132,0,191,255,52,43,60,95,9,0,60,23,18,0, -203,206,31,0,203,17,95,18,133,18,11,80,133,82,170,17,2,222,1,0, -197,218,56,183,113,0,197,82,202,177,35,214,40,0,32,54,32,0,3,56, -31,66,191,255,132,48,35,55,1,0,26,64,0,58,32,78,32,0,191,255, -174,48,97,82,146,13,38,6,164,144,132,0,32,62,223,1,0,66,191,255, -100,34,99,223,30,0,99,183,21,0,99,7,25,0,12,82,122,7,1,0, -122,7,5,0,122,7,13,0,99,215,17,0,99,7,28,0,99,87,37,0, -220,151,22,0,252,135,23,0,99,135,34,0,56,151,108,0,60,191,1,0, -99,151,5,0,99,191,13,0,191,255,156,34,106,7,32,0,3,114,74,119, -34,0,106,191,1,0,35,151,5,0,106,7,21,0,106,151,26,0,106,87, -9,0,1,106,106,111,24,0,106,7,13,0,106,7,17,0,10,232,56,55, -125,0,29,64,35,62,12,0,191,255,20,21,224,201,135,13,99,207,30,0, -29,56,35,54,12,0,191,255,112,21,13,98,60,95,18,0,35,151,9,0, -99,95,30,0,99,103,37,0,60,87,16,0,99,151,17,0,99,87,28,0, -29,56,35,54,12,0,191,255,72,21,99,215,17,0,12,130,60,127,18,0, -99,135,37,0,217,121,27,96,175,97,99,103,30,0,99,127,28,0,236,0, -224,97,231,5,29,56,35,54,12,0,191,255,28,21,56,55,125,0,29,56, -191,255,124,18,29,48,128,255,30,104,38,6,180,144,132,0,191,255,216,41, -56,151,108,0,99,151,5,0,35,191,13,0,191,255,208,33,10,232,35,127, -1,0,125,7,32,0,125,127,17,0,3,82,35,151,5,0,93,87,34,0, -125,151,26,0,125,239,9,0,1,130,125,135,24,0,125,7,13,0,125,7, -21,0,125,191,1,0,99,223,30,0,99,7,25,0,99,183,21,0,220,223, -22,0,178,5,10,50,165,5,7,50,29,64,35,62,12,0,191,255,48,20, -224,201,215,13,99,207,30,0,11,114,99,119,37,0,99,7,28,0,29,56, -35,54,12,0,191,255,130,20,28,48,29,56,191,255,122,20,99,215,17,0, -11,106,60,103,18,0,99,111,37,0,217,97,172,217,99,223,30,0,99,103, -28,0,251,0,224,217,231,5,29,56,35,54,12,0,191,255,80,20,56,55, -125,0,29,56,191,255,176,17,29,80,94,6,255,243,128,7,97,0,6,232, -29,63,1,0,61,71,108,0,38,6,236,144,132,0,191,255,254,40,61,63, -117,0,38,6,252,144,132,0,191,255,240,40,64,6,127,0,130,7,97,0, -6,232,3,48,191,255,74,140,195,199,0,0,210,5,195,63,0,0,195,55, -0,0,35,127,0,0,125,127,0,0,35,119,2,0,125,119,2,0,29,80, -66,6,127,0,152,7,225,241,7,216,8,184,6,192,38,6,8,145,132,0, -191,255,168,40,59,95,9,0,59,23,18,0,11,80,203,17,95,18,133,18, -133,82,170,17,2,238,1,0,56,23,113,0,197,82,202,17,12,82,99,87, -45,0,3,224,99,7,33,0,99,7,36,0,197,234,99,239,38,0,99,23, -29,0,99,231,25,0,219,151,22,0,251,135,23,0,99,135,42,0,203,206, -31,0,59,215,1,0,56,199,108,0,99,215,21,0,191,255,82,32,106,7, -32,0,3,114,74,119,34,0,106,199,26,0,106,87,9,0,1,106,106,111, -24,0,106,7,13,0,106,7,17,0,106,7,21,0,106,215,1,0,23,48, -10,208,26,64,35,62,20,0,191,255,208,18,124,7,9,0,124,7,13,0, -124,7,1,0,124,7,5,0,25,96,201,98,124,103,17,0,224,201,130,13, -99,207,38,0,26,56,35,54,20,0,191,255,20,19,27,48,26,56,191,255, -12,19,59,95,18,0,217,89,171,233,99,239,38,0,99,95,36,0,253,0, -29,104,201,106,124,111,17,0,224,233,231,5,26,56,35,54,20,0,191,255, -228,18,23,48,26,56,191,255,70,16,26,48,128,255,232,101,88,6,255,241, -130,7,33,0,35,23,9,0,99,23,1,0,191,255,108,142,66,6,63,0, -128,7,225,0,6,232,29,143,7,0,0,226,17,6,225,255,202,5,31,130, -93,135,7,0,61,23,108,0,224,17,198,5,2,6,240,255,134,13,93,7, -7,0,31,106,125,111,117,0,0,82,229,29,29,71,7,0,127,66,194,5, -119,66,226,5,165,13,1,226,125,231,125,0,165,21,2,90,125,95,125,0, -1,226,213,13,38,6,28,145,132,0,32,62,153,3,191,255,188,30,93,7, -7,0,31,82,125,87,117,0,28,80,64,6,255,0,128,7,225,16,167,0, -6,232,7,224,191,255,226,142,10,216,224,217,234,29,127,226,202,29,29,119, -7,0,119,114,138,29,61,87,89,0,61,111,101,0,61,95,93,0,61,103, -97,0,237,89,225,13,187,5,236,81,177,13,61,55,85,0,93,231,7,0, -224,49,210,5,191,255,228,146,125,7,85,0,27,80,64,6,255,16,38,135, -108,0,8,16,240,57,234,21,38,111,113,0,34,119,1,0,32,94,33,0, -173,113,14,80,235,87,194,2,170,113,98,119,1,0,0,72,225,127,0,0, -175,73,98,79,5,0,2,82,165,5,0,82,127,0,128,7,33,0,38,23, -105,0,63,6,190,252,0,0,2,22,16,0,34,87,0,0,34,135,5,0, -198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0,63,6, -226,252,0,0,2,22,16,0,34,87,0,0,34,135,5,0,198,81,10,48, -112,0,64,6,63,0,0,82,127,0,32,86,34,1,127,0,0,82,127,0, -0,82,127,0,0,82,127,0,0,82,127,0,198,143,2,0,0,82,127,0, -103,7,1,0,198,207,2,0,226,87,0,0,127,0,1,82,127,0,32,86, -34,1,127,0,32,86,34,1,127,0,0,82,127,0,32,86,34,1,127,0, -32,86,35,1,127,0,32,86,35,1,127,0,31,82,127,0,127,0,128,7, -33,0,38,23,105,0,63,6,98,253,0,0,2,22,200,0,34,87,0,0, -34,135,5,0,198,81,10,48,112,0,64,6,63,0,32,86,255,127,127,0, -32,86,255,127,127,0,127,0,1,82,127,0,128,7,225,0,6,232,7,224, -224,233,226,13,49,6,48,87,133,0,125,143,105,0,0,58,191,255,124,184, -129,226,201,5,29,48,191,255,202,134,64,6,255,0,128,7,97,0,6,232, -224,233,138,13,32,54,160,8,191,255,196,134,10,232,224,233,162,37,29,48, -191,255,224,108,48,6,48,87,133,0,125,135,105,0,0,82,61,22,140,0, -98,7,0,0,98,7,6,0,98,7,2,0,65,82,72,18,10,6,0,255, -230,245,125,7,141,8,29,48,125,7,145,8,32,62,176,4,32,70,0,3, -128,255,106,1,29,80,64,6,127,0,130,7,225,241,6,232,61,135,157,8, -7,216,224,129,218,5,191,255,216,161,128,7,72,1,59,63,13,0,59,55, -9,0,61,71,149,8,0,74,191,255,44,145,10,48,61,71,153,8,11,56, -8,72,191,74,191,255,42,185,10,200,25,6,0,255,150,13,38,6,44,145, -132,0,32,62,132,0,0,66,191,255,106,28,25,248,195,250,61,22,140,0, -223,17,34,87,0,0,61,22,140,0,223,17,34,111,2,0,34,95,4,0, -34,103,6,0,61,23,141,8,61,119,145,8,173,81,174,17,224,17,186,5, -12,224,245,5,224,17,206,5,128,17,0,226,165,5,1,226,11,104,193,106, -237,17,222,13,224,81,178,13,224,97,218,5,235,81,239,231,0,0,213,5, -128,81,235,81,231,231,0,0,59,199,18,0,229,87,64,0,224,7,96,1, -10,184,28,208,194,210,61,22,140,8,218,17,34,87,1,0,216,81,98,87, -1,0,28,16,61,86,140,0,223,81,193,18,2,88,202,89,43,87,0,0, -216,81,10,6,1,128,206,13,61,94,140,0,223,89,203,17,98,87,0,0, -61,22,140,0,194,249,127,231,6,0,247,47,32,0,59,191,1,0,29,56, -23,48,25,64,28,72,99,199,1,0,128,255,70,63,61,110,16,0,218,105, -45,23,1,0,1,114,34,23,105,0,10,120,111,119,0,0,72,18,123,87, -1,0,34,95,0,0,61,86,16,0,218,81,42,55,1,0,11,96,204,49, -27,56,34,87,5,0,63,6,90,255,0,0,106,0,123,191,1,0,66,6, -255,241,199,0,200,0,7,16,232,23,32,2,2,120,191,122,150,122,207,17, -170,18,7,112,162,113,195,114,14,136,191,138,152,138,209,113,168,114,7,80, -195,82,0,90,38,102,140,0,10,104,191,106,157,106,10,16,205,17,163,18, -2,6,212,254,190,5,32,22,44,1,2,6,72,244,183,5,32,22,184,11, -108,23,4,0,174,81,72,98,65,90,11,6,0,255,150,237,127,0,128,7, -97,0,6,232,191,255,174,177,29,23,7,0,127,18,178,5,123,18,218,5, -1,138,125,143,157,8,181,5,125,7,157,8,64,6,127,0,130,7,225,48, -167,0,6,232,7,224,8,216,9,208,191,255,40,129,10,6,224,254,202,13, -224,225,170,13,29,23,7,0,127,18,178,5,123,18,154,21,125,7,157,8, -229,13,97,226,202,13,29,56,27,64,3,48,191,255,234,110,195,199,0,0, -194,5,1,90,125,95,157,8,29,48,28,56,27,64,26,72,191,255,176,176, -66,6,255,48,130,7,225,240,35,23,33,0,99,23,1,0,6,200,191,255, -234,173,10,192,224,193,210,61,57,23,105,0,2,226,2,22,24,0,34,87, -0,0,0,234,217,81,10,48,34,135,5,0,63,6,120,0,1,0,112,0, -10,208,11,216,1,18,251,233,193,5,203,13,250,225,171,13,193,234,28,88, -159,90,11,233,193,226,65,18,2,6,192,255,182,245,69,18,2,6,200,255, -182,5,32,22,55,0,121,23,153,8,2,70,8,0,8,72,191,74,1,50, -0,58,191,255,180,182,10,48,11,56,26,70,0,4,225,79,0,0,219,73, -191,255,188,131,121,87,149,8,24,80,66,6,255,240,128,7,33,0,38,23, -105,0,63,6,246,0,1,0,2,22,16,0,34,87,0,0,34,135,5,0, -198,81,10,48,112,0,64,6,63,0,128,7,33,0,38,23,105,0,63,6, -24,1,1,0,72,18,34,87,0,0,34,135,5,0,198,81,10,48,112,0, -64,6,63,0,128,7,33,0,38,23,105,0,63,6,60,1,1,0,2,22, -16,0,34,87,0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0, -128,7,33,0,38,23,105,0,63,6,96,1,1,0,2,22,16,0,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,1,82,127,0, -128,7,33,0,38,23,105,0,63,6,136,1,1,0,2,22,208,0,34,87, -0,0,34,135,5,0,198,81,10,48,112,0,64,6,63,0,0,82,127,0, -0,82,127,0,6,135,7,0,16,6,17,0,234,87,0,0,127,0,38,135, -108,0,224,129,226,87,0,0,127,0,128,7,33,0,64,22,141,0,34,54, -204,30,100,55,165,139,0,58,32,70,0,96,191,255,100,33,36,23,165,139, -0,82,2,88,2,22,16,0,107,23,5,0,65,82,10,6,0,250,134,253, -107,7,5,0,64,6,63,0,102,7,9,0,102,7,13,0,127,0,128,7, -193,16,6,224,7,216,229,87,64,0,224,7,96,1,36,143,165,139,10,232, -123,143,5,0,60,135,13,0,100,223,165,139,95,130,124,135,13,0,253,47, -32,0,64,6,223,16,128,7,225,48,6,216,59,23,5,0,224,17,202,5, -59,63,1,0,165,5,2,56,224,57,186,5,128,7,132,1,7,16,165,5, -10,16,34,87,13,0,224,81,202,253,34,111,9,0,59,135,1,0,2,56, -240,57,154,21,13,80,123,87,1,0,224,81,162,37,106,7,5,0,59,87, -1,0,165,5,11,80,42,95,13,0,224,89,202,253,245,21,34,119,5,0, -110,111,13,0,34,87,9,0,34,95,5,0,224,81,194,13,106,95,5,0, -34,87,9,0,165,5,11,80,42,95,13,0,224,89,202,253,165,5,11,80, -123,87,5,0,34,87,1,0,123,87,9,0,34,23,1,0,34,135,33,0, -27,48,208,255,42,0,194,125,34,87,1,0,34,95,5,0,226,231,9,0, -202,225,225,239,0,0,203,233,191,255,26,255,59,23,5,0,165,5,10,16, -34,87,13,0,224,81,202,253,2,208,165,93,59,127,1,0,58,23,9,0, -239,209,186,21,123,23,1,0,224,17,210,13,98,7,5,0,59,23,1,0, -165,5,10,16,34,87,13,0,224,81,202,253,2,88,133,29,2,88,229,21, -58,111,5,0,109,23,13,0,58,23,9,0,58,95,5,0,224,17,194,13, -98,95,5,0,58,23,9,0,165,5,10,16,34,87,13,0,224,81,202,253, -2,88,58,55,1,0,123,95,5,0,230,87,9,0,38,103,1,0,38,95, -5,0,204,81,225,135,0,0,208,89,188,81,225,135,0,0,176,89,189,89, -186,5,234,1,130,13,59,135,9,0,240,127,9,0,207,81,112,87,8,0, -128,255,76,105,27,48,26,56,191,255,102,254,59,23,5,0,165,5,10,16, -34,87,13,0,224,81,202,253,2,208,58,23,1,0,34,95,5,0,34,87, -1,0,253,89,129,165,187,5,252,81,209,157,229,5,191,255,56,254,181,5, -123,7,9,0,59,87,9,0,64,6,255,48,128,7,97,0,102,63,49,0, -102,7,45,0,102,7,37,0,102,7,41,0,6,232,191,255,6,254,29,54, -16,0,191,255,254,253,125,7,33,0,64,6,127,0,128,7,193,48,38,23, -41,0,7,208,2,232,196,234,38,119,49,0,198,233,224,113,178,21,38,111, -45,0,36,95,33,175,237,89,211,13,65,18,194,238,1,0,102,239,41,0, -38,87,49,0,196,234,198,233,203,81,102,87,45,0,229,87,64,0,224,7, -96,1,10,216,149,13,229,87,64,0,224,135,96,1,229,87,64,0,224,7, -96,1,36,135,165,139,224,129,210,245,36,231,165,139,61,103,13,0,36,119, -165,139,65,98,46,119,5,0,125,103,13,0,124,7,13,0,124,7,9,0, -100,119,165,139,251,47,32,0,28,16,61,87,1,0,124,215,1,0,224,81, -138,13,124,7,5,0,125,23,5,0,125,23,1,0,133,69,34,95,1,0, -43,111,5,0,43,103,1,0,42,95,1,0,43,127,5,0,43,119,1,0, -239,105,203,5,241,13,238,97,209,13,42,95,9,0,224,89,178,5,11,80, -165,21,98,87,5,0,106,23,9,0,0,82,197,13,42,95,13,0,224,89, -178,5,11,80,229,5,98,87,5,0,106,23,13,0,0,82,224,81,250,213, -34,103,1,0,61,119,5,0,44,95,5,0,46,119,1,0,44,87,1,0, -46,111,5,0,46,103,1,0,237,89,193,5,219,5,236,81,185,5,125,23, -5,0,36,87,165,139,224,81,226,87,0,0,64,6,223,48,128,7,97,0, -6,232,61,143,33,0,224,137,138,29,29,86,16,0,61,119,13,0,42,127, -13,0,239,113,231,23,0,0,125,23,37,0,196,18,2,80,221,81,42,103, -13,0,224,97,186,5,0,82,197,37,221,17,125,23,33,0,61,55,33,0, -191,255,190,252,10,88,224,89,154,29,61,87,37,0,65,82,202,22,1,0, -125,23,37,0,196,18,2,80,221,81,42,127,13,0,224,121,146,13,221,17, -125,23,33,0,2,48,191,255,144,252,10,88,181,5,125,7,33,0,11,80, -64,6,127,0,6,22,16,0,38,143,13,0,34,87,13,0,209,81,127,0, -96,7,208,176,0,82,34,6,228,152,141,0,2,134,76,0,98,23,145,0, -98,135,73,0,65,82,2,22,76,0,10,6,25,252,214,245,47,6,148,40, -1,0,34,6,228,152,141,0,2,80,207,81,34,119,73,0,64,7,221,176, -64,7,220,176,100,119,161,139,100,23,157,139,100,7,153,139,98,87,69,0, -106,23,73,0,96,7,201,176,96,7,205,176,96,7,193,176,96,7,197,176, -36,111,141,140,224,105,186,5,68,7,152,140,127,0,132,7,225,241,7,224, -8,248,36,135,33,175,6,232,125,135,13,0,64,86,0,0,42,87,80,245, -125,87,16,0,156,23,1,0,194,22,31,0,2,6,240,255,178,5,128,7, -86,2,156,199,9,0,252,103,3,0,188,119,1,0,14,16,0,122,2,6, -240,255,177,13,226,22,40,0,32,94,160,180,203,17,34,87,17,0,224,81, -162,5,2,120,125,127,61,0,14,128,208,130,12,112,208,113,96,119,209,176, -0,218,12,80,10,6,0,255,246,5,32,102,6,1,100,103,192,139,0,18, -133,37,234,22,40,0,48,6,232,193,142,0,208,17,34,95,24,0,203,126, -0,128,242,5,32,118,7,1,100,119,192,139,0,18,245,13,139,110,0,128, -98,111,24,0,98,239,29,0,36,111,177,139,36,103,173,139,98,111,37,0, -98,103,33,0,127,23,1,0,224,17,125,23,57,0,170,13,36,223,192,139, -10,48,10,64,39,6,68,231,132,0,191,255,164,91,27,200,224,201,178,5, -128,7,154,1,252,127,7,0,96,127,213,176,188,87,5,0,60,134,8,0, -208,81,96,87,217,176,216,22,15,0,104,18,202,5,32,22,14,37,133,13, -106,18,202,5,32,22,5,37,181,5,32,22,2,37,125,23,65,0,24,16, -2,6,209,255,193,13,104,18,130,101,106,18,226,93,2,6,216,255,242,29, -2,6,214,255,218,101,181,29,2,6,113,255,177,13,2,6,209,255,210,21, -2,6,120,255,226,37,2,6,118,255,178,37,245,85,2,6,113,255,242,29, -2,6,88,255,162,53,2,6,86,255,242,45,2,6,81,255,194,45,165,77, -60,22,8,0,162,119,1,0,93,119,11,0,34,54,2,0,130,95,9,0, -162,111,7,0,200,106,11,224,205,225,128,255,242,203,10,208,0,218,229,109, -60,198,8,0,184,87,1,0,93,87,11,0,56,54,10,0,128,255,216,203, -10,224,56,54,2,0,128,255,206,203,10,216,56,54,6,0,128,255,196,203, -10,208,133,93,60,222,8,0,187,127,1,0,93,127,11,0,59,54,6,0, -128,255,172,203,10,224,59,54,2,0,128,255,162,203,10,208,0,218,229,69, -60,54,8,0,134,231,5,0,128,255,144,203,34,6,255,255,31,0,66,81, -10,208,0,218,149,61,28,16,0,82,43,6,200,152,141,0,68,18,34,119, -253,255,107,119,1,0,65,82,68,90,103,82,134,253,0,210,0,218,0,226, -32,206,1,1,34,6,116,114,133,0,0,82,36,95,149,139,133,21,130,111, -1,0,237,193,154,13,34,103,5,0,34,95,9,0,125,103,65,0,0,202, -245,5,2,22,32,0,65,82,10,6,232,255,249,237,100,95,149,139,224,201, -146,13,224,55,209,176,24,64,39,6,44,231,132,0,191,255,16,90,125,215, -1,0,125,223,5,0,125,231,8,0,25,224,128,7,226,1,2,208,28,23, -3,0,0,106,194,22,15,0,2,80,10,6,240,255,177,13,234,86,40,0, -32,102,160,180,204,81,42,95,17,0,224,89,162,5,10,104,125,111,61,0, -208,18,156,95,3,0,11,120,194,121,96,127,209,176,0,218,11,6,0,255, -246,5,32,110,6,1,100,111,192,139,0,18,133,37,235,22,40,0,42,6, -232,193,142,0,202,17,34,87,24,0,202,134,0,128,242,5,32,126,7,1, -100,127,192,139,0,18,245,13,138,118,0,128,98,119,24,0,98,239,29,0, -36,111,177,139,36,103,173,139,98,111,37,0,98,103,33,0,127,23,1,0, -224,17,125,23,57,0,170,13,36,223,192,139,11,48,11,64,39,6,84,231, -132,0,191,255,84,89,224,217,194,5,27,16,128,7,44,1,252,191,7,0, -156,95,1,0,216,90,157,90,67,95,7,0,8,18,11,80,194,82,220,81, -132,127,153,140,97,122,170,5,12,18,2,104,0,18,224,89,242,5,188,23, -1,0,171,17,130,106,237,23,194,2,96,23,213,176,96,87,217,176,224,89, -162,13,97,90,210,5,32,111,213,176,224,105,207,5,32,22,3,1,181,109, -98,210,225,37,210,5,100,210,177,13,162,29,149,37,0,202,60,199,9,0, -32,94,14,36,125,95,65,0,213,85,220,199,5,0,194,5,221,31,11,0, -181,5,221,159,11,0,32,86,5,36,125,87,65,0,0,202,60,199,9,0, -213,69,0,202,60,199,9,0,32,118,2,36,125,119,65,0,213,61,0,194, -0,202,188,111,5,0,93,111,11,0,28,80,34,6,200,152,141,0,2,102, -28,0,245,5,68,82,42,95,253,255,68,18,98,95,253,255,236,17,145,253, -32,222,1,1,34,6,52,110,133,0,0,90,36,103,149,139,133,21,130,87, -1,0,234,209,154,13,34,135,5,0,34,103,9,0,125,135,65,0,0,218, -245,5,2,22,32,0,65,90,11,6,224,255,249,237,100,103,149,139,224,217, -146,13,224,55,209,176,26,64,39,6,56,231,132,0,191,255,48,88,125,199, -1,0,125,207,5,0,125,191,8,0,27,16,2,224,224,225,178,5,128,7, -68,1,32,71,213,176,8,6,0,255,199,13,224,55,209,176,39,6,100,231, -132,0,191,255,0,88,32,230,98,1,128,7,36,1,221,215,65,0,186,5, -128,7,26,1,61,23,61,0,224,17,194,125,221,207,64,0,202,5,221,199, -64,0,194,85,61,87,1,0,32,111,197,176,61,95,5,0,32,103,193,176, -237,89,129,13,187,5,236,81,211,5,96,87,193,176,96,95,197,176,2,128, -10,96,253,87,9,0,202,97,225,79,0,0,203,73,48,95,25,0,48,87, -21,0,235,73,161,53,187,5,234,97,243,45,48,95,17,0,43,23,105,0, -63,6,46,11,1,0,2,22,80,0,34,55,0,0,34,87,5,0,203,49, -106,0,224,55,209,176,224,81,146,21,61,79,5,0,61,71,1,0,253,127, -9,0,99,127,1,0,39,6,116,231,132,0,191,255,86,87,32,230,9,1, -213,61,32,142,210,176,241,71,1,0,37,62,48,130,191,255,64,87,32,230, -40,1,165,53,32,230,0,16,245,45,221,231,65,0,194,45,34,95,17,0, -43,23,105,0,63,6,152,11,1,0,2,22,80,0,34,87,0,0,34,103, -5,0,203,81,10,48,108,0,224,81,170,29,224,55,209,176,32,142,210,176, -241,71,1,0,37,62,48,130,191,255,246,86,32,230,40,1,213,13,224,55, -209,176,32,142,210,176,241,71,1,0,37,62,48,130,191,255,220,86,32,230, -10,1,128,119,221,176,224,113,194,5,29,48,128,255,98,0,28,80,68,6, -255,241,130,7,33,0,40,6,200,152,141,0,36,63,177,139,36,55,173,139, -32,134,129,0,99,135,1,0,32,78,28,0,128,255,208,60,66,6,63,0, -128,7,33,0,7,80,0,18,198,199,65,0,162,5,2,18,32,63,209,176, -2,64,194,66,46,6,200,152,141,0,206,65,10,72,36,111,149,139,63,6, -54,12,1,0,109,0,64,6,63,0,128,7,33,0,36,127,157,139,6,16, -47,127,73,0,36,119,153,139,100,127,157,139,14,6,24,252,138,13,36,103, -161,139,44,103,73,0,100,103,161,139,213,5,14,94,1,0,100,95,153,139, -36,55,157,139,2,56,32,70,68,0,128,255,12,3,64,6,63,0,128,7, -225,240,6,224,7,216,97,226,187,5,128,7,118,1,58,6,228,231,132,0, -59,55,5,0,37,62,80,130,128,255,238,2,224,81,218,13,98,226,226,5, -26,48,191,255,134,22,128,7,152,1,1,130,64,135,220,176,128,7,72,1, -59,55,5,0,37,62,56,130,128,255,198,2,224,81,202,13,98,226,226,5, -26,48,191,255,94,22,128,7,112,1,64,7,220,176,128,7,34,1,59,55, -5,0,37,62,64,130,128,255,160,2,224,81,234,13,100,7,153,139,34,6, -228,152,141,0,34,127,73,0,100,23,157,139,100,127,161,139,128,7,62,1, -59,55,5,0,37,62,60,130,128,255,118,2,224,81,234,5,1,114,64,119, -221,176,128,7,36,1,59,55,5,0,37,62,72,130,128,255,92,2,224,81, -218,5,64,7,221,176,128,7,12,1,59,55,5,0,37,62,84,130,128,255, -68,2,224,81,170,93,36,239,161,139,98,226,218,5,0,226,36,223,153,139, -229,45,100,226,138,45,59,55,9,0,0,58,32,70,16,0,128,255,38,2, -10,224,59,55,13,0,0,58,32,70,16,0,128,255,22,2,10,222,1,0, -252,217,246,5,36,23,153,139,226,217,191,5,226,225,247,5,38,6,4,232, -132,0,191,255,150,21,197,85,0,18,197,5,61,239,73,0,65,18,252,17, -198,253,213,5,26,48,191,255,126,21,133,77,38,6,164,231,132,0,191,255, -114,21,0,194,0,202,160,111,221,176,224,105,242,21,61,55,13,0,253,63, -17,0,128,255,34,1,10,192,11,200,229,13,28,56,37,54,92,130,191,255, -74,21,29,48,24,64,25,72,128,255,90,0,61,239,73,0,65,226,251,225, -166,245,197,37,38,6,20,232,132,0,191,255,42,21,128,95,221,176,224,89, -242,5,38,6,40,232,132,0,191,255,24,21,229,5,38,6,216,231,132,0, -191,255,12,21,160,87,221,176,224,81,242,5,38,6,52,232,132,0,191,255, -250,20,229,5,38,6,140,231,132,0,191,255,238,20,64,6,255,240,132,7, -225,48,6,232,8,208,9,216,221,207,64,0,162,13,221,215,64,0,194,5, -32,22,82,0,197,13,32,22,86,0,149,13,221,199,64,0,194,5,32,22, -87,0,181,5,32,22,88,0,61,55,13,0,2,224,253,63,17,0,128,255, -114,0,10,64,11,72,160,127,221,176,224,121,162,13,233,1,186,5,232,1, -226,5,186,65,225,103,0,0,172,73,187,73,61,87,61,0,99,231,1,0, -138,87,35,0,99,87,5,0,38,6,76,232,132,0,191,255,114,20,28,6, -168,255,178,21,61,79,5,0,61,71,1,0,253,127,9,0,99,127,1,0, -38,6,100,232,132,0,191,255,82,20,37,54,100,130,191,255,74,20,213,5, -37,54,100,130,191,255,64,20,68,6,255,48,128,7,97,48,7,232,221,0, -128,255,154,0,10,208,11,216,29,48,128,255,144,0,0,64,41,6,96,227, -230,64,10,48,11,56,128,255,136,0,10,64,11,72,26,48,27,56,128,255, -132,0,0,64,64,78,36,64,10,48,11,56,128,255,126,0,0,64,41,6, -0,64,143,64,10,48,11,56,128,255,110,0,10,48,11,56,128,255,110,0, -64,6,127,48,128,7,225,0,32,63,197,176,32,71,193,176,38,6,116,232, -132,0,191,255,202,19,32,63,205,176,32,71,201,176,38,6,148,232,132,0, -191,255,184,19,64,6,255,0,130,7,33,6,136,0,128,0,97,0,33,6, -150,65,130,0,97,0,33,6,74,60,130,0,97,0,33,6,122,78,130,0, -97,0,33,6,124,75,130,0,97,0,33,6,26,70,130,0,97,0,33,6, -142,73,130,0,97,0,33,6,28,69,130,0,97,0,3,30,236,255,99,63, -9,0,99,255,1,0,38,6,180,232,132,0,191,255,92,19,35,255,1,0, -0,82,3,30,20,0,127,0,3,30,212,255,99,63,33,0,99,255,25,0, -99,207,17,0,99,215,13,0,99,223,9,0,99,231,5,0,99,239,1,0, -99,199,21,0,8,224,252,239,7,0,29,56,6,192,38,6,156,233,132,0, -191,255,24,19,29,6,0,255,215,5,32,86,13,1,128,7,60,2,97,234, -151,69,196,239,144,140,154,45,128,54,255,255,128,255,142,132,0,234,29,48, -128,255,236,134,224,81,250,5,29,64,8,50,37,62,104,130,191,255,10,167, -29,48,128,255,204,133,224,81,218,5,29,48,31,58,191,255,42,116,29,48, -128,255,240,120,97,82,242,5,29,64,6,50,37,62,104,130,191,255,226,166, -65,234,29,6,240,255,230,221,32,54,255,127,128,255,162,132,128,255,76,27, -196,47,144,140,0,50,128,255,42,28,32,54,236,176,32,62,64,0,0,66, -128,255,70,177,128,255,62,135,165,13,128,255,34,27,128,255,162,131,5,50, -128,255,114,132,128,255,2,135,188,143,1,0,98,138,187,5,128,7,142,1, -60,238,8,0,61,135,1,0,28,122,16,56,79,129,210,13,227,55,33,0, -7,64,39,6,68,233,132,0,191,255,186,81,32,86,13,1,128,7,114,1, -38,6,84,233,132,0,191,255,54,18,221,207,0,0,186,5,128,7,44,1, -188,23,1,0,102,18,217,13,227,55,33,0,2,64,39,6,116,233,132,0, -191,255,134,81,32,86,13,1,128,7,62,1,61,71,13,0,224,65,194,13, -227,55,33,0,39,6,56,233,132,0,191,255,104,81,32,86,13,1,128,7, -32,1,253,223,7,0,61,215,8,0,61,207,10,0,253,231,5,0,28,6, -232,255,231,87,0,0,1,18,223,5,28,6,232,255,162,5,0,18,2,72, -0,18,101,218,218,5,28,6,232,255,166,5,1,18,0,98,224,17,226,5, -97,210,186,5,105,202,167,5,1,98,32,142,24,0,125,143,4,0,1,122, -125,127,8,0,194,110,1,0,5,130,125,135,6,0,194,106,201,134,1,0, -9,114,125,119,10,0,193,130,29,119,12,0,30,146,82,113,202,94,1,0, -11,113,29,146,82,113,16,113,27,146,82,113,13,113,23,146,82,113,204,86, -1,0,195,82,10,113,93,119,12,0,38,6,128,233,132,0,191,255,80,17, -28,56,38,6,200,232,132,0,32,70,24,0,191,255,64,17,27,56,38,6, -224,232,132,0,5,66,191,255,50,17,26,56,38,6,248,232,132,0,1,66, -191,255,36,17,25,56,38,6,16,233,132,0,9,66,191,255,22,17,61,63, -13,0,38,6,40,233,132,0,191,255,8,17,216,15,65,0,221,199,0,0, -130,13,38,6,184,233,132,0,191,255,244,16,1,138,245,5,38,6,204,233, -132,0,191,255,230,16,0,136,68,143,152,140,229,5,38,6,224,233,132,0, -191,255,212,16,0,82,35,199,21,0,35,207,17,0,35,215,13,0,35,223, -9,0,35,231,5,0,35,239,1,0,35,255,25,0,3,30,44,0,127,0, -3,30,220,255,99,63,25,0,99,255,17,0,99,239,9,0,99,231,13,0, -40,63,9,0,6,232,99,63,1,0,38,6,244,233,132,0,191,255,136,16, -61,23,57,0,0,234,99,23,5,0,1,226,35,23,1,0,253,231,192,0, -92,17,242,21,4,135,205,131,240,233,134,13,35,23,1,0,60,80,74,17, -99,23,1,0,197,13,29,48,128,255,212,25,127,82,242,5,35,23,1,0, -60,80,74,17,99,23,1,0,65,234,29,6,224,255,134,229,35,87,5,0, -3,56,42,23,0,0,38,6,244,136,145,0,65,18,106,23,0,0,31,66, -191,255,182,36,32,54,236,176,64,62,1,0,0,66,128,255,204,174,35,231, -13,0,35,255,17,0,35,239,9,0,0,82,3,30,36,0,127,0,3,30, -224,255,99,63,21,0,99,255,13,0,99,223,9,0,99,231,5,0,99,239, -1,0,40,239,9,0,38,6,24,234,132,0,29,56,191,255,214,15,0,226, -1,218,252,223,192,0,29,128,91,129,194,21,4,127,205,131,239,225,198,5, -59,112,78,233,213,13,28,48,128,255,52,25,127,82,234,5,28,48,128,255, -58,24,224,81,186,5,59,104,77,233,65,226,28,6,224,255,198,229,224,233, -178,13,29,48,128,255,40,25,32,54,236,176,32,62,64,0,0,66,128,255, -60,174,35,223,9,0,35,255,13,0,35,239,1,0,35,231,5,0,0,82, -3,30,32,0,127,0,3,30,232,255,99,63,13,0,99,255,5,0,99,239, -1,0,227,63,15,0,6,232,38,6,64,234,132,0,191,255,74,15,61,55, -61,0,128,255,22,110,35,255,5,0,35,239,1,0,3,30,24,0,127,0, -3,30,180,255,99,63,65,0,99,255,57,0,99,239,41,0,99,231,45,0, -99,215,53,0,6,232,99,223,49,0,8,208,227,223,67,0,128,255,172,23, -35,142,28,0,99,143,1,0,35,134,32,0,99,135,5,0,35,126,36,0, -99,127,9,0,38,6,188,136,145,0,35,62,16,0,35,70,20,0,35,78, -24,0,128,255,126,24,224,81,154,13,35,119,21,0,224,113,210,5,1,50, -128,255,100,23,133,229,27,48,35,62,12,0,128,255,244,132,61,55,61,0, -128,255,140,109,0,226,0,234,29,48,128,255,46,24,251,81,218,5,1,106, -253,111,192,0,13,225,65,234,29,6,240,255,198,245,35,87,13,0,0,234, -42,88,75,225,250,143,7,0,17,6,0,128,170,5,1,234,224,233,194,5, -37,70,112,130,181,5,37,70,116,130,27,56,38,6,88,234,132,0,191,255, -106,14,224,233,250,5,35,119,13,0,224,113,186,5,128,255,126,127,27,48, -128,255,32,122,10,216,224,233,226,5,224,217,202,5,28,48,128,255,12,23, -128,255,232,22,27,80,35,215,53,0,35,223,49,0,35,231,45,0,35,239, -41,0,35,255,57,0,3,30,76,0,127,0,128,7,97,0,12,138,6,232, -93,143,1,0,32,134,31,0,93,135,5,0,93,7,0,0,93,7,4,0, -93,7,2,0,93,63,3,0,125,7,9,0,7,48,128,255,166,22,10,22, -0,184,125,23,13,0,64,6,127,0,3,30,84,255,99,63,161,0,99,255, -153,0,99,223,129,0,99,183,149,0,9,216,99,191,145,0,99,199,141,0, -99,207,137,0,99,215,133,0,99,231,125,0,99,239,121,0,8,224,31,130, -92,135,3,0,6,200,153,127,11,0,98,122,186,5,0,234,181,5,28,239, -8,0,29,56,188,71,9,0,38,6,164,234,132,0,191,255,146,13,97,234, -234,13,32,62,20,0,252,215,7,0,71,208,26,64,38,6,124,234,132,0, -191,255,120,13,0,234,229,61,32,86,87,2,128,7,102,6,29,16,244,23, -64,2,219,17,2,111,2,0,2,79,1,0,2,71,0,0,99,111,1,0, -2,103,3,0,99,103,5,0,2,95,4,0,99,95,9,0,2,87,5,0, -99,87,13,0,34,135,6,0,209,130,177,130,99,135,17,0,34,127,9,0, -99,127,21,0,34,87,13,0,99,87,25,0,34,87,16,0,99,87,29,0, -2,87,18,0,99,87,33,0,2,23,19,0,29,56,99,23,37,0,38,6, -72,235,132,0,191,255,252,12,65,234,250,233,230,197,252,23,7,0,32,110, -20,0,2,96,237,103,128,114,224,113,234,5,224,17,194,5,2,6,4,252, -215,5,32,86,80,2,128,7,204,5,249,127,9,0,201,122,239,17,215,5, -32,86,81,2,128,7,186,5,0,234,35,206,104,0,221,201,89,7,0,0, -29,48,128,255,62,21,224,81,210,13,1,194,29,48,128,255,34,22,127,82, -210,5,220,207,9,0,170,5,0,194,89,199,0,0,65,234,29,6,240,255, -246,229,27,23,1,0,111,18,154,13,132,103,205,133,224,97,218,5,32,86, -93,2,128,7,108,5,31,194,0,202,0,98,220,239,9,0,138,13,108,18, -226,5,109,18,194,5,111,18,162,5,1,98,67,103,43,0,27,232,128,7, -10,3,4,87,205,131,29,111,0,0,234,105,211,5,32,86,82,2,128,7, -52,5,224,105,186,5,128,7,30,1,29,23,1,0,101,18,233,5,224,17, -146,45,98,18,163,85,213,77,101,18,130,13,2,6,224,255,146,69,2,6, -192,255,226,61,197,69,1,98,133,29,12,16,244,23,64,2,221,17,2,95, -0,0,224,89,210,5,32,86,88,2,128,7,236,4,2,23,1,0,106,18, -242,5,108,18,210,5,32,86,88,2,128,7,216,4,65,98,237,97,135,237, -197,45,29,135,20,0,224,129,138,45,29,119,21,0,1,18,229,21,2,120, -244,127,64,2,221,121,15,87,1,0,238,81,210,5,32,86,88,2,128,7, -168,4,106,82,242,5,108,82,210,5,32,86,88,2,128,7,152,4,65,18, -237,17,167,237,197,13,220,199,9,0,154,13,32,86,90,2,128,7,130,4, -32,86,90,2,128,7,122,4,29,87,2,0,105,82,215,5,32,86,92,2, -128,7,106,4,220,199,9,0,178,5,128,7,30,2,29,135,3,0,224,129, -143,37,29,127,4,0,224,121,202,29,29,119,5,0,224,113,138,29,61,111, -6,0,205,110,255,127,186,21,61,103,13,0,224,97,250,13,61,95,9,0, -224,89,186,13,61,87,16,0,224,81,250,5,29,135,18,0,224,129,186,5, -128,7,216,1,32,86,82,2,128,7,18,4,29,23,1,0,86,18,99,18, -211,13,101,18,250,5,251,233,146,13,32,86,90,2,128,7,248,3,32,86, -90,2,128,7,240,3,29,23,3,0,234,17,137,13,35,118,104,0,206,17, -130,103,1,0,224,97,218,5,32,86,14,1,128,7,210,3,29,95,2,0, -224,89,170,21,29,87,5,0,224,81,234,13,61,135,6,0,208,134,255,127, -154,13,61,127,16,0,224,121,218,5,29,119,18,0,224,113,210,5,32,86, -82,2,128,7,160,3,220,199,9,0,218,13,29,111,4,0,224,105,218,5, -29,103,19,0,224,97,210,5,32,86,82,2,128,7,130,3,66,7,0,0, -220,215,9,0,186,5,125,7,9,0,29,55,3,0,128,255,34,19,0,58, -1,114,0,122,10,48,6,104,151,106,6,96,201,98,163,87,43,0,224,81, -194,13,36,95,97,133,36,87,93,133,224,89,230,5,191,5,224,81,179,5, -10,112,11,120,14,176,15,184,42,6,0,130,53,122,106,106,143,21,182,5, -234,97,217,13,42,6,0,202,154,59,224,185,134,13,191,5,234,177,211,5, -54,6,0,202,154,59,0,186,247,105,198,29,191,5,246,97,145,29,12,48, -13,56,22,64,23,72,128,255,170,19,10,48,11,56,22,64,23,72,191,255, -26,118,0,74,10,54,255,1,225,63,0,0,203,57,32,70,0,2,128,255, -138,19,10,48,11,56,61,23,9,0,29,87,1,0,162,49,225,119,0,0, -174,57,106,82,161,45,226,5,109,82,131,37,111,82,146,45,197,37,32,94, -33,0,235,23,194,106,224,105,210,5,32,86,91,2,128,7,164,2,32,70, -0,72,0,74,168,49,225,127,0,0,175,57,32,70,33,0,128,255,60,19, -197,90,10,56,155,58,11,57,10,48,197,50,197,13,32,70,0,72,168,49, -225,103,0,0,172,57,213,5,32,86,90,2,128,7,106,2,61,23,13,0, -224,17,130,13,231,1,239,5,182,5,230,17,185,5,2,48,0,58,249,57, -239,5,182,5,248,49,185,5,6,192,7,200,29,238,20,0,26,80,244,87, -64,2,219,81,234,233,185,5,191,7,238,252,224,201,159,13,198,5,24,6, -0,246,209,5,32,86,83,2,128,7,30,2,27,16,133,29,32,134,31,0, -2,127,0,0,66,135,5,0,224,121,234,13,34,119,13,0,249,1,134,13, -191,5,248,113,211,5,32,86,83,2,128,7,244,1,98,199,13,0,2,22, -20,0,234,17,129,237,31,98,74,103,1,0,38,6,220,234,132,0,191,255, -222,8,0,234,197,21,29,16,244,23,64,2,219,17,2,135,0,0,224,129, -186,13,29,56,2,71,3,0,34,79,13,0,38,6,248,234,132,0,191,255, -182,8,65,234,250,233,198,237,27,48,0,58,128,255,104,112,10,232,127,234, -218,5,32,86,84,2,128,7,148,1,0,18,29,6,240,255,129,13,253,102, -40,0,32,86,160,180,202,97,44,23,17,0,2,216,224,217,154,13,38,6, -52,235,132,0,32,62,88,4,0,66,190,255,248,255,59,23,105,0,63,6, -226,26,1,0,2,22,176,0,34,87,0,0,34,135,5,0,219,81,10,48, -112,0,29,48,250,81,242,5,128,255,20,116,32,86,89,2,128,7,58,1, -35,62,44,0,128,255,108,126,10,208,224,209,242,5,29,48,128,255,248,115, -26,80,128,7,32,1,220,231,9,0,218,13,29,48,128,255,218,16,10,208, -224,209,242,5,29,48,128,255,218,115,26,80,128,7,2,1,92,239,3,0, -220,223,9,0,250,101,1,50,35,62,48,0,35,70,52,0,191,255,64,13, -35,55,49,0,191,255,122,217,224,81,170,93,35,55,49,0,0,58,35,70, -84,0,1,74,191,255,148,13,97,82,146,13,38,6,52,235,132,0,32,62, -143,4,0,66,190,255,74,255,128,255,90,36,106,7,9,0,44,6,36,64, -1,0,106,103,5,0,32,94,232,3,106,7,29,0,10,224,106,7,33,0, -28,48,106,95,21,0,1,58,128,255,64,35,99,231,57,0,99,7,72,0, -35,86,84,0,99,87,61,0,1,130,99,135,74,0,99,7,65,0,99,7, -69,0,99,7,78,0,59,23,105,0,11,122,2,22,16,0,34,87,0,0, -99,127,81,0,219,81,10,48,35,62,56,0,34,119,5,0,63,6,232,27, -1,0,110,0,28,48,128,255,120,35,124,7,0,0,28,48,128,255,198,178, -35,55,49,0,1,58,191,255,184,14,29,56,38,6,32,235,132,0,191,255, -38,7,29,48,128,255,188,112,196,239,144,140,130,13,32,54,236,176,32,62, -64,0,0,66,128,255,198,165,0,82,35,183,149,0,35,191,145,0,35,199, -141,0,35,207,137,0,35,215,133,0,35,223,129,0,35,231,125,0,35,239, -121,0,35,255,153,0,3,30,172,0,127,0,3,30,220,255,99,63,25,0, -99,255,17,0,99,215,13,0,99,239,1,0,99,223,9,0,99,231,5,0, -9,208,230,223,9,0,201,218,36,63,105,133,38,6,232,235,132,0,191,255, -174,6,36,135,105,133,224,129,210,61,16,126,1,0,36,239,109,133,100,127, -105,133,29,48,128,255,152,12,10,224,224,225,138,85,36,111,105,133,26,56, -65,106,100,111,105,133,36,23,101,133,27,96,194,97,36,55,109,133,61,95, -5,0,194,49,235,97,201,13,27,64,191,255,184,242,36,127,101,133,32,230, -49,2,219,121,100,127,101,133,197,53,11,86,0,2,27,104,194,105,234,105, -175,13,27,64,191,255,150,242,36,143,101,133,219,137,100,143,101,133,213,37, -10,64,162,65,191,255,130,242,133,37,26,232,29,48,128,255,42,12,10,224, -224,225,154,29,61,23,5,0,226,217,217,21,36,95,105,133,65,90,100,95, -105,133,2,54,0,2,191,255,104,69,100,87,109,133,10,48,29,56,27,64, -191,255,74,242,100,223,101,133,32,230,49,2,224,225,138,61,61,231,9,0, -61,63,5,0,125,7,9,0,29,48,130,58,128,255,180,11,252,81,170,45, -253,231,3,0,221,225,38,6,20,236,132,0,191,255,196,5,191,255,186,76, -191,255,110,72,229,87,64,0,224,7,96,1,10,232,63,6,138,29,1,0, -124,0,10,224,253,47,32,0,191,255,82,72,224,225,130,13,28,56,38,6, -216,235,132,0,191,255,144,5,149,13,38,6,56,236,132,0,191,255,132,5, -181,5,32,230,52,2,28,6,207,253,226,13,36,23,109,133,224,17,194,5, -2,48,191,255,158,102,100,7,105,133,100,7,101,133,100,7,109,133,28,80, -35,215,13,0,35,223,9,0,35,231,5,0,35,239,1,0,35,255,17,0, -3,30,36,0,127,0,3,30,172,255,99,63,73,0,99,255,65,0,99,215, -57,0,99,239,45,0,6,208,8,16,99,223,53,0,99,207,61,0,99,231, -49,0,34,238,8,0,4,143,205,131,227,223,75,0,241,217,214,5,32,230, -13,1,128,7,22,1,2,207,6,0,253,135,1,0,99,135,32,0,26,231, -11,0,253,127,3,0,99,127,34,0,222,226,61,119,4,0,61,95,6,0, -206,110,255,0,203,86,255,0,200,82,61,119,8,0,13,81,206,110,255,0, -208,106,10,105,99,111,37,0,159,226,224,225,162,13,61,143,4,0,209,134, -0,255,208,130,16,105,99,111,37,0,149,13,29,103,10,0,204,94,15,0, -216,90,11,105,99,111,37,0,29,127,10,0,99,7,20,0,207,118,240,0, -67,119,40,0,227,95,35,0,189,103,11,0,67,103,41,0,99,95,22,0, -99,7,26,0,27,48,0,58,99,79,9,0,0,66,35,78,32,0,128,255, -36,31,99,87,5,0,27,48,28,56,25,64,202,47,2,0,35,142,4,0, -99,143,1,0,35,78,32,0,190,255,72,243,35,23,5,0,2,80,42,135, -0,0,224,129,218,253,34,231,12,0,98,7,0,0,2,48,128,255,186,175, -218,15,65,0,227,127,33,0,125,127,0,0,131,111,37,0,227,119,35,0, -125,119,2,0,125,111,4,0,163,103,37,0,125,103,6,0,131,95,39,0, -163,87,39,0,93,87,10,0,125,95,8,0,163,143,41,0,93,143,11,0, -28,80,35,207,61,0,35,215,57,0,35,223,53,0,35,231,49,0,35,239, -45,0,35,255,65,0,3,30,84,0,127,0,3,30,220,255,99,63,25,0, -99,255,17,0,99,223,13,0,99,239,5,0,8,216,99,231,9,0,227,63, -27,0,6,224,38,6,80,236,132,0,191,255,170,3,60,231,61,0,0,234, -156,231,35,0,251,135,7,0,99,135,2,0,35,158,1,0,211,255,2,0, -242,13,28,48,4,58,27,66,128,255,100,140,10,232,224,233,234,21,28,48, -31,58,191,255,210,100,10,232,133,21,35,158,1,0,211,199,2,0,178,13, -28,48,27,58,31,66,128,255,138,114,10,232,224,233,186,5,128,255,4,13, -3,23,2,0,224,233,250,5,28,48,2,56,27,66,128,255,10,2,10,232, -29,80,35,223,13,0,35,231,9,0,35,239,5,0,35,255,17,0,3,30, -36,0,127,0,3,30,224,255,99,63,21,0,99,255,13,0,99,239,5,0, -227,63,23,0,99,231,9,0,8,232,6,224,38,6,104,236,132,0,191,255, -2,3,253,135,7,0,99,135,2,0,0,234,224,129,138,21,32,238,13,1, -196,239,144,140,170,45,60,55,61,0,2,58,134,55,35,0,23,66,128,255, -186,139,10,232,133,37,35,158,1,0,211,199,2,0,226,13,60,55,61,0, -23,58,134,55,35,0,31,66,128,255,232,113,10,232,224,233,186,5,128,255, -98,12,3,23,2,0,224,233,170,13,60,55,61,0,2,56,134,55,35,0, -23,66,128,255,98,1,10,232,29,80,35,231,9,0,35,239,5,0,35,255, -13,0,3,30,32,0,127,0,3,30,224,255,99,63,21,0,99,255,13,0, -99,231,9,0,99,239,5,0,6,224,8,135,3,0,232,143,7,0,99,143, -2,0,208,62,15,0,209,238,255,0,29,64,38,6,128,236,132,0,191,255, -78,2,60,55,61,0,29,56,134,55,35,0,31,66,128,255,188,141,35,255, -13,0,35,239,5,0,35,231,9,0,3,30,32,0,127,0,3,30,220,255, -99,63,25,0,99,255,17,0,99,231,9,0,99,239,5,0,8,224,0,234, -99,223,13,0,227,63,27,0,6,216,38,6,176,236,132,0,191,255,0,2, -252,135,7,0,99,135,2,0,208,230,63,0,216,130,158,130,98,130,138,21, -59,55,61,0,163,71,3,0,134,55,35,0,32,62,223,255,128,255,4,113, -10,232,224,233,186,5,128,255,126,11,224,233,186,13,59,55,61,0,28,56, -134,55,35,0,32,70,223,255,128,255,128,0,10,232,29,80,35,223,13,0, -35,231,9,0,35,239,5,0,35,255,17,0,3,30,36,0,127,0,3,30, -232,255,99,63,13,0,99,255,5,0,99,239,1,0,38,6,200,236,132,0, -191,255,132,1,128,255,32,10,128,255,64,114,10,16,224,17,250,21,61,6, -0,0,32,0,149,5,221,239,5,0,226,253,128,255,136,114,227,23,13,0, -125,23,54,0,221,239,5,0,226,253,4,50,128,255,208,9,191,255,250,65, -0,82,35,239,1,0,35,255,5,0,3,30,24,0,127,0,128,7,225,16, -167,0,8,232,189,0,0,218,7,16,100,18,233,5,224,17,226,45,98,18, -242,29,149,45,101,18,145,21,194,5,102,18,130,13,181,37,29,64,1,58, -128,255,236,137,10,216,245,29,29,64,0,58,128,255,224,137,10,216,149,29, -0,226,28,48,29,64,1,58,128,255,208,137,65,226,28,6,240,255,134,253, -229,13,0,226,28,48,29,64,0,58,128,255,186,137,65,226,28,6,240,255, -134,253,181,5,32,222,13,1,27,80,64,6,255,16,3,30,192,255,99,63, -53,0,99,255,45,0,99,223,41,0,99,231,37,0,99,239,33,0,232,143, -7,0,99,143,2,0,38,6,16,237,132,0,163,239,3,0,29,56,191,255, -150,0,4,127,205,131,239,233,209,5,32,86,14,1,128,7,46,1,0,226, -131,223,3,0,27,56,224,57,130,13,99,58,209,29,186,5,128,7,0,1, -128,7,8,1,29,48,0,58,128,255,8,109,10,224,224,225,218,5,29,48, -128,255,22,139,10,224,224,225,194,5,28,6,246,254,138,125,29,48,0,58, -1,66,128,255,250,8,0,226,149,117,29,48,128,255,200,8,224,81,194,5, -32,86,14,1,165,109,1,18,253,23,192,0,99,23,25,0,1,226,128,255, -188,28,10,16,98,7,9,0,42,6,36,64,1,0,98,87,5,0,32,142, -232,3,98,7,29,0,35,62,24,0,98,7,33,0,38,6,244,136,145,0, -98,143,21,0,99,23,29,0,98,231,0,0,31,66,191,255,124,20,32,54, -236,176,64,62,1,0,0,66,128,255,146,158,35,23,29,0,34,135,0,0, -224,129,210,5,5,50,128,255,94,8,245,245,98,7,0,0,2,48,128,255, -68,171,29,48,128,255,68,8,224,81,194,29,29,56,35,54,4,0,191,255, -134,241,98,218,202,5,13,114,67,119,5,0,35,54,4,0,0,58,128,255, -82,103,10,48,128,255,76,8,10,224,32,54,236,176,32,62,64,0,0,66, -128,255,54,158,245,13,32,230,14,1,197,13,38,6,44,237,132,0,190,255, -106,255,229,5,38,6,224,236,132,0,190,255,94,255,28,80,35,223,41,0, -35,231,37,0,35,239,33,0,35,255,45,0,3,30,64,0,127,0,3,30, -228,255,99,63,17,0,99,255,9,0,99,239,5,0,35,158,1,0,232,143, -7,0,99,143,0,0,40,239,9,0,211,255,0,0,234,5,224,137,202,5, -3,122,99,127,0,0,227,95,1,0,99,95,2,0,0,82,195,191,3,0, -0,18,227,103,3,0,1,106,226,111,192,0,76,105,205,0,224,105,162,5, -65,82,65,18,2,6,240,255,182,245,32,22,13,1,203,126,3,0,236,121, -194,5,32,86,13,1,181,37,35,158,1,0,211,255,0,0,146,29,97,82, -194,5,32,86,13,1,149,29,195,199,0,0,146,13,29,48,128,255,148,6, -10,16,2,6,255,239,170,5,0,18,195,207,0,0,162,13,29,48,128,255, -22,6,10,16,213,5,11,48,128,255,32,7,0,18,2,80,35,239,5,0, -35,255,9,0,3,30,28,0,127,0,3,30,224,255,99,63,21,0,99,255, -13,0,99,231,5,0,99,223,9,0,99,239,1,0,8,224,6,232,38,6, -132,237,132,0,190,255,96,254,252,223,7,0,27,56,38,6,148,237,132,0, -190,255,80,254,60,254,8,0,229,87,64,0,224,7,96,1,10,224,27,16, -2,6,237,255,209,21,66,0,34,0,46,0,58,0,70,0,82,0,94,0, -106,0,118,0,130,0,142,0,154,0,166,0,178,0,189,0,200,0,211,0, -222,0,233,0,244,0,2,6,236,255,177,5,128,7,210,1,186,5,128,7, -226,1,2,6,102,255,186,5,128,7,238,1,128,7,10,2,29,56,35,22, -20,0,34,71,1,0,31,72,0,50,128,255,186,6,10,232,128,7,8,2, -29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255,170,6,10,232, -128,7,240,1,29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255, -154,6,10,232,128,7,216,1,29,56,35,22,20,0,34,71,1,0,31,72, -0,50,128,255,138,6,10,232,128,7,192,1,29,56,35,22,20,0,34,71, -1,0,31,72,0,50,128,255,122,6,10,232,128,7,168,1,29,56,35,22, -20,0,34,71,1,0,31,72,0,50,128,255,106,6,10,232,128,7,144,1, -29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255,90,6,10,232, -128,7,120,1,29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255, -74,6,10,232,128,7,96,1,29,56,35,22,20,0,34,71,1,0,31,72, -0,50,128,255,58,6,10,232,128,7,72,1,29,56,35,22,20,0,34,71, -1,0,31,72,0,50,128,255,42,6,10,232,128,7,48,1,29,56,35,22, -20,0,34,71,1,0,31,72,0,50,128,255,26,6,10,232,128,7,24,1, -29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255,10,6,10,232, -128,7,0,1,29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255, -250,5,10,232,197,117,29,56,35,22,20,0,34,71,1,0,31,72,0,50, -128,255,236,5,10,232,149,109,29,56,35,22,20,0,34,71,1,0,31,72, -0,50,128,255,222,5,10,232,229,93,29,56,35,22,20,0,34,71,1,0, -31,72,0,50,128,255,208,5,10,232,181,85,29,56,35,22,20,0,34,71, -1,0,31,72,0,50,128,255,194,5,10,232,133,77,29,56,35,22,20,0, -34,71,1,0,31,72,0,50,128,255,180,5,10,232,213,61,29,56,35,22, -20,0,34,71,1,0,31,72,0,50,128,255,166,5,10,232,165,53,29,56, -35,22,20,0,34,71,1,0,31,72,0,50,128,255,152,5,10,232,245,37, -29,56,35,22,20,0,34,71,1,0,31,72,0,50,128,255,138,5,10,232, -197,29,32,54,52,0,191,255,74,93,10,232,224,233,210,21,29,48,128,255, -202,4,48,6,136,92,133,0,125,135,49,0,197,13,252,47,32,0,27,56, -38,6,96,237,132,0,190,255,222,251,32,86,20,48,149,61,38,6,160,134, -1,0,190,255,214,251,61,23,49,0,63,6,130,39,1,0,2,22,16,0, -34,87,0,0,34,127,5,0,221,81,10,48,111,0,10,216,224,217,250,5, -38,6,204,237,132,0,190,255,162,251,229,5,38,6,168,237,132,0,190,255, -150,251,224,233,242,13,61,23,49,0,3,58,72,18,34,87,0,0,34,111, -5,0,221,81,10,48,63,6,190,39,1,0,109,0,252,47,32,0,37,54, -120,130,190,255,106,251,27,80,35,223,9,0,35,231,5,0,35,239,1,0, -35,255,13,0,3,30,32,0,127,0,3,30,208,255,99,63,37,0,99,255, -29,0,99,191,25,0,99,199,21,0,99,207,17,0,99,215,13,0,99,223, -9,0,99,231,5,0,99,239,1,0,36,143,130,140,232,223,7,0,241,217, -194,5,32,86,13,1,229,101,9,192,27,56,38,6,232,237,132,0,190,255, -10,251,0,210,0,226,165,45,28,128,216,129,16,239,0,0,28,56,29,64, -37,54,128,130,190,255,240,250,1,122,253,127,192,0,90,121,234,13,0,18, -29,6,240,255,129,13,253,86,40,0,32,134,160,180,208,81,42,23,17,0, -224,17,154,13,38,6,16,238,132,0,190,255,194,250,32,86,10,1,133,61, -1,122,253,127,192,0,15,209,65,226,251,225,230,213,37,54,136,130,190,255, -166,250,0,226,1,50,128,255,250,130,31,186,0,234,197,29,29,104,216,105, -13,215,0,0,23,56,26,48,128,255,138,126,10,184,26,48,31,58,191,255, -218,91,10,200,224,201,178,13,25,56,26,64,38,6,32,238,132,0,190,255, -106,250,224,225,170,5,25,224,65,234,251,233,198,229,0,50,128,255,180,130, -37,54,136,130,190,255,80,250,28,80,35,191,25,0,35,199,21,0,35,207, -17,0,35,215,13,0,35,223,9,0,35,231,5,0,35,239,1,0,35,255, -29,0,3,30,48,0,127,0,0,98,0,106,0,18,197,13,12,112,2,128, -194,130,198,129,48,103,1,0,206,97,225,87,0,0,202,105,65,18,231,17, -193,245,205,97,12,80,127,0,49,6,88,238,132,0,49,127,1,0,80,26, -99,127,1,0,49,119,5,0,99,119,5,0,49,111,9,0,99,111,9,0, -49,103,12,0,99,103,12,0,6,96,12,16,213,29,2,104,3,112,14,122, -65,106,13,135,255,255,65,114,14,87,255,255,16,88,170,89,218,5,224,129, -178,5,95,122,202,245,224,89,170,13,38,135,13,0,101,130,194,5,32,86, -50,2,165,13,0,82,133,13,65,18,12,126,2,16,239,17,145,229,32,86, -51,2,3,30,16,0,127,0,3,30,236,255,99,63,9,0,99,255,1,0, -9,56,38,6,104,238,132,0,190,255,112,249,35,255,1,0,0,82,3,30, -20,0,127,0,3,30,216,255,99,63,29,0,99,255,21,0,99,231,13,0, -99,239,9,0,99,223,17,0,0,226,232,239,7,0,6,216,38,6,128,238, -132,0,190,255,58,249,97,234,177,5,130,37,245,61,37,54,144,130,190,255, -42,249,128,255,74,106,0,234,253,22,40,0,32,126,160,180,207,17,34,87, -17,0,224,81,162,13,0,50,29,6,240,255,193,5,224,81,162,5,2,48, -128,255,42,89,65,234,29,6,240,255,182,237,133,45,37,54,140,130,190,255, -238,248,128,86,255,255,99,87,1,0,59,23,57,0,3,56,34,87,0,0, -99,23,5,0,65,82,98,87,0,0,38,6,244,136,145,0,31,66,191,255, -92,13,32,54,236,176,64,62,1,0,0,66,128,255,114,151,133,13,32,230, -13,1,38,6,160,238,132,0,190,255,168,248,28,80,35,223,17,0,35,231, -13,0,35,239,9,0,35,255,21,0,3,30,40,0,127,0,134,7,225,0, -6,224,128,255,22,1,224,81,202,5,32,86,14,1,149,45,28,48,0,58, -0,66,3,72,128,255,42,19,1,138,10,232,125,143,0,0,28,48,29,56, -190,255,212,229,61,135,0,0,224,129,218,253,61,231,12,0,29,48,125,7, -0,0,128,255,212,163,224,225,218,13,163,119,5,0,14,6,12,255,138,13, -131,111,7,0,13,6,212,255,186,5,32,230,96,2,28,80,70,6,255,0, -138,7,225,0,6,224,128,255,174,0,224,81,202,5,32,86,14,1,149,69, -28,48,35,62,2,0,35,70,3,0,128,255,142,1,3,143,3,0,32,22, -1,16,224,137,218,5,4,135,204,131,224,129,242,45,1,234,252,239,192,0, -4,119,204,131,99,239,14,0,224,113,178,5,0,18,213,13,99,239,12,0, -35,22,12,0,34,55,1,0,35,62,4,0,128,255,172,112,10,16,226,0, -224,17,234,21,99,239,18,0,99,239,16,0,35,22,16,0,34,55,1,0, -35,62,8,0,128,255,152,110,10,16,224,81,250,5,4,143,204,131,224,137, -178,5,32,22,1,16,2,80,74,6,255,0,6,88,192,25,192,25,32,86, -1,1,127,0,33,6,64,21,128,0,97,0,33,6,244,23,128,0,97,0, -33,6,48,187,128,0,97,0,33,6,82,245,129,0,97,0,33,6,108,145, -129,0,97,0,33,6,150,145,129,0,97,0,33,6,232,186,128,0,97,0, -33,6,102,188,128,0,97,0,33,6,228,99,128,0,97,0,33,6,22,115, -128,0,97,0,33,6,62,134,128,0,97,0,33,6,216,136,128,0,97,0, -33,6,46,138,128,0,97,0,33,6,100,139,128,0,97,0,33,6,172,140, -128,0,97,0,33,6,0,142,128,0,97,0,33,6,30,143,128,0,97,0, -33,6,98,144,128,0,97,0,33,6,182,145,128,0,97,0,33,6,46,147, -128,0,97,0,33,6,150,148,128,0,97,0,33,6,100,150,128,0,97,0, -33,6,130,151,128,0,97,0,33,6,190,152,128,0,97,0,33,6,250,153, -128,0,97,0,33,6,28,155,128,0,97,0,33,6,186,156,128,0,97,0, -33,6,252,157,128,0,97,0,33,6,34,159,128,0,97,0,33,6,72,160, -128,0,97,0,33,6,110,161,128,0,97,0,33,6,148,162,128,0,97,0, -33,6,74,187,128,0,97,0,33,6,18,188,128,0,97,0,33,6,156,191, -129,0,97,0,33,6,216,161,129,0,97,0,33,6,226,11,130,0,97,0, -33,6,178,79,130,0,97,0,33,6,192,144,129,0,97,0,3,30,100,255, -99,63,145,0,99,255,137,0,99,231,133,0,99,239,129,0,9,224,28,48, -136,239,5,0,29,64,0,58,190,255,32,246,3,48,128,255,92,6,28,48, -35,62,4,0,32,118,124,0,29,6,132,255,238,239,34,67,191,255,94,226, -35,231,133,0,35,255,137,0,35,239,129,0,0,82,3,30,156,0,127,0, -3,30,224,255,99,63,21,0,99,255,13,0,99,223,9,0,99,239,1,0, -6,216,9,232,99,231,5,0,29,48,136,231,5,0,28,64,0,58,190,255, -198,245,29,135,0,0,208,134,224,0,93,135,0,0,28,6,224,255,201,5, -32,22,31,0,181,5,28,16,130,0,93,23,4,0,93,7,2,0,221,15, -7,0,61,54,8,0,39,6,200,238,132,0,8,66,191,255,232,225,61,54, -16,0,39,6,212,238,132,0,32,70,16,0,191,255,214,225,59,23,61,0, -10,82,130,23,35,0,2,88,74,88,11,94,48,0,61,102,30,0,76,95, -255,255,234,23,128,130,16,134,48,0,76,135,0,0,61,54,32,0,37,62, -152,130,4,66,191,255,162,225,35,223,9,0,35,255,13,0,35,239,1,0, -35,231,5,0,0,82,3,30,32,0,127,0,3,30,228,255,99,63,17,0, -99,255,9,0,99,231,5,0,99,239,1,0,6,224,9,232,0,58,200,207, -1,0,202,37,29,48,8,66,190,255,8,245,60,23,61,0,1,114,34,87, -21,0,34,95,25,0,174,81,225,135,0,0,176,89,186,5,127,82,177,5, -31,18,165,5,10,16,125,23,1,0,29,48,128,255,62,5,32,22,0,2, -125,23,5,0,61,54,4,0,128,255,46,5,133,37,29,48,32,70,16,0, -190,255,192,244,60,23,61,0,1,114,34,103,21,0,34,111,25,0,174,97, -125,103,1,0,225,135,0,0,176,105,125,111,5,0,29,48,128,255,246,4, -32,134,0,2,125,135,9,0,61,54,8,0,128,255,238,4,35,231,5,0, -35,255,9,0,35,239,1,0,0,82,3,30,28,0,127,0,3,30,220,255, -99,63,25,0,99,255,17,0,99,223,13,0,99,239,5,0,99,231,9,0, -9,216,38,23,61,0,4,138,130,23,35,0,100,23,213,139,8,232,29,23, -2,0,99,143,1,0,216,18,158,18,100,23,217,139,9,224,157,23,5,0, -224,17,186,5,0,82,245,21,28,48,2,64,0,58,190,255,38,244,28,48, -157,119,5,0,29,111,2,0,14,64,205,78,63,0,3,56,128,255,244,2, -35,103,1,0,12,94,255,255,91,95,0,0,35,223,13,0,35,231,9,0, -35,239,5,0,35,255,17,0,3,30,36,0,127,0,3,30,220,255,99,63, -25,0,99,255,17,0,99,239,9,0,99,231,13,0,38,23,61,0,8,224, -130,23,35,0,100,23,213,139,9,232,28,23,2,0,6,138,216,18,158,18, -100,23,217,139,99,143,1,0,252,23,5,0,99,23,5,0,35,54,4,0, -128,255,250,3,125,7,4,0,93,7,2,0,28,23,2,0,93,7,3,0, -194,78,63,0,29,48,35,71,5,0,3,56,128,255,108,2,35,135,1,0, -10,224,94,130,125,135,0,0,29,48,128,255,192,3,28,80,35,231,13,0, -35,239,9,0,35,255,17,0,3,30,36,0,127,0,3,30,228,255,99,63, -17,0,99,255,9,0,99,239,1,0,99,231,5,0,38,23,61,0,9,224, -130,23,35,0,100,23,213,139,8,232,221,199,1,0,234,55,0,0,128,255, -156,3,188,135,3,0,16,54,4,0,157,63,5,0,166,57,220,49,128,255, -134,1,35,231,5,0,35,239,1,0,35,255,9,0,3,30,28,0,127,0, -3,30,228,255,99,63,17,0,99,255,9,0,99,239,1,0,99,231,5,0, -38,23,61,0,9,224,130,23,35,0,100,23,213,139,8,232,221,199,1,0, -234,55,0,0,128,255,70,3,60,54,4,0,128,255,30,3,61,54,4,0, -128,255,22,3,252,143,5,0,17,54,6,0,253,63,5,0,166,57,220,49, -128,255,32,1,35,231,5,0,35,239,1,0,35,255,9,0,3,30,28,0, -127,0,3,30,208,255,99,63,37,0,99,255,29,0,99,239,17,0,99,231, -21,0,99,223,25,0,6,224,60,63,61,0,8,239,1,0,135,63,35,0, -221,238,1,0,200,199,4,0,242,85,38,6,4,239,132,0,190,255,116,242, -224,233,226,5,38,6,248,238,132,0,190,255,102,242,37,54,160,130,190,255, -94,242,0,218,0,234,213,37,60,95,61,0,29,64,43,95,17,0,35,54, -4,0,43,23,105,0,63,6,6,49,1,0,2,22,136,0,34,87,0,0, -34,143,5,0,203,81,10,56,113,0,35,135,5,0,99,135,1,0,195,199, -0,0,130,13,195,207,0,0,218,5,1,122,253,127,192,0,15,217,65,234, -4,111,205,131,237,233,150,221,60,23,57,0,99,223,9,0,34,87,0,0, -99,23,13,0,65,82,98,87,0,0,35,62,8,0,38,6,244,136,145,0, -31,66,191,255,120,6,32,54,236,176,64,62,1,0,0,66,128,255,142,144, -197,13,38,6,232,238,132,0,190,255,200,241,128,255,232,98,60,55,61,0, -128,255,230,81,35,223,25,0,35,255,29,0,35,239,17,0,35,231,21,0, -0,82,3,30,48,0,127,0,128,7,225,48,6,224,7,216,213,53,28,143, -0,0,0,234,209,214,63,0,29,128,194,130,45,6,164,117,133,0,205,129, -48,87,1,0,42,103,1,0,1,18,250,97,210,5,26,6,193,255,162,5, -0,18,130,0,224,17,146,29,42,23,9,0,28,56,2,22,16,0,34,95, -0,0,27,64,202,89,11,48,34,143,5,0,63,6,236,49,1,0,113,0, -10,16,224,17,207,5,32,86,209,1,149,13,162,217,194,225,65,234,99,234, -166,213,224,217,186,205,0,82,64,6,255,48,128,7,225,112,6,208,7,224, -8,200,9,216,32,94,13,1,0,234,1,18,60,103,1,0,29,136,194,138, -46,6,164,117,133,0,206,137,49,87,1,0,25,64,42,111,1,0,172,65, -251,105,210,5,27,6,193,255,162,5,0,18,130,0,224,17,226,21,42,23, -9,0,12,56,72,18,34,95,0,0,218,57,202,89,11,48,34,143,5,0, -63,6,108,50,1,0,113,0,60,135,1,0,0,90,202,129,124,135,1,0, -65,234,99,234,150,213,11,80,64,6,255,112,3,30,236,255,99,63,9,0, -99,255,1,0,8,56,38,71,61,0,135,63,1,0,136,71,35,0,38,6, -24,239,132,0,190,255,140,240,35,255,1,0,0,82,3,30,20,0,127,0, -3,30,232,255,99,63,13,0,99,255,5,0,99,239,1,0,200,207,1,0, -38,55,61,0,0,234,210,5,0,58,128,255,118,80,197,5,128,255,44,79, -10,232,29,80,35,239,1,0,35,255,5,0,3,30,24,0,127,0,3,30, -228,255,99,63,17,0,99,255,9,0,99,231,5,0,99,239,1,0,6,224, -9,232,168,135,1,0,16,6,240,255,194,5,32,86,1,1,165,37,29,48, -0,58,32,70,32,0,190,255,10,240,60,23,61,0,1,114,34,103,21,0, -34,111,25,0,174,97,125,103,1,0,225,135,0,0,176,105,125,111,5,0, -29,48,128,255,64,0,32,126,0,2,125,127,9,0,61,54,8,0,128,255, -56,0,0,82,35,231,5,0,35,239,1,0,35,255,9,0,3,30,28,0, -127,0,33,6,0,8,128,0,97,0,33,6,168,30,129,0,97,0,33,6, -224,30,129,0,97,0,33,6,24,31,129,0,97,0,33,6,80,31,129,0, -97,0,33,6,0,43,129,0,97,0,132,7,225,243,6,184,8,208,9,216, -1,194,32,54,16,177,31,58,128,255,204,139,224,81,170,253,61,6,0,0, -32,0,251,1,186,5,250,1,178,5,0,194,149,21,253,135,59,0,253,215, -61,0,253,223,63,0,253,87,65,0,208,82,208,210,208,209,100,215,173,139, -202,217,100,223,177,139,218,86,3,0,194,5,32,22,80,1,197,21,0,226, -149,13,2,48,65,226,28,64,39,6,72,239,132,0,191,255,88,131,26,48, -27,56,32,70,36,0,128,255,84,30,10,16,224,17,138,245,54,6,136,239, -132,0,2,224,224,225,178,5,128,7,16,1,29,135,0,1,208,134,31,0, -16,6,240,255,170,21,189,127,5,1,15,22,8,0,132,119,153,140,253,127, -7,1,224,113,210,5,236,127,64,2,207,17,245,5,195,122,207,17,197,5, -189,23,1,1,194,18,2,200,25,6,228,243,199,5,32,230,96,1,213,101, -25,6,0,255,183,61,0,194,55,55,1,0,32,62,0,1,128,255,222,16, -32,142,24,177,49,103,1,0,224,97,146,13,38,6,84,239,132,0,32,62, -69,1,0,66,190,255,34,230,32,54,16,177,128,255,162,139,224,81,242,5, -22,48,32,62,183,1,0,66,190,255,10,230,26,54,0,1,225,63,0,0, -55,71,1,0,219,57,8,70,0,1,32,126,36,0,99,127,1,0,25,78, -0,255,128,255,254,19,10,224,224,225,210,45,32,110,0,8,125,111,20,0, -165,93,224,193,226,5,61,102,0,1,119,103,1,0,149,37,55,55,1,0, -25,56,128,255,96,16,32,142,24,177,49,95,1,0,224,89,146,13,38,6, -84,239,132,0,32,62,69,1,0,66,190,255,164,229,32,54,16,177,128,255, -36,139,224,81,130,13,22,48,32,62,183,1,0,66,190,255,140,229,224,81, -224,225,210,45,0,194,28,56,26,64,27,72,38,6,96,239,132,0,190,255, -234,237,38,6,148,239,132,0,190,255,224,237,32,142,24,177,49,127,1,0, -224,121,146,13,38,6,84,239,132,0,32,62,69,1,0,66,190,255,78,229, -32,54,16,177,128,255,206,138,224,81,242,5,22,48,32,62,183,1,0,66, -190,255,54,229,32,118,0,8,125,119,20,0,224,193,178,5,32,230,6,16, -28,80,68,6,255,243,138,7,225,243,7,184,6,208,58,23,57,0,247,0, -224,17,194,13,34,207,37,0,34,135,24,0,34,199,33,0,208,150,255,127, -99,151,5,0,149,13,36,207,177,139,36,199,173,139,224,151,209,176,99,151, -5,0,4,66,24,224,168,225,28,48,25,232,225,111,0,0,173,233,29,56, -35,70,8,0,32,102,36,0,99,103,1,0,12,74,128,255,218,18,2,18, -67,23,16,0,131,223,9,0,219,94,3,0,202,5,27,6,224,255,225,5, -0,218,3,18,67,23,16,0,213,5,32,86,18,0,67,87,11,0,28,48, -29,56,35,70,8,0,32,134,129,0,99,135,1,0,12,74,128,255,156,18, -58,23,61,0,224,17,194,5,130,183,35,0,213,5,32,142,210,176,241,183, -1,0,22,56,38,6,188,239,132,0,190,255,218,236,32,54,124,0,191,255, -22,78,10,208,224,209,154,13,38,6,208,239,132,0,32,62,96,1,0,66, -190,255,70,228,26,48,0,58,32,70,124,0,190,255,168,236,26,48,23,56, -35,71,5,0,27,72,128,255,98,0,187,193,225,95,0,0,171,201,224,217, -194,21,27,78,252,255,24,48,25,56,27,22,225,255,58,134,26,0,208,17, -66,7,0,0,32,126,129,0,99,127,1,0,26,64,128,255,18,18,149,21, -22,56,23,64,38,6,16,240,132,0,190,255,98,236,131,63,9,0,28,64, -29,72,38,6,232,239,132,0,190,255,80,236,26,48,191,255,126,77,74,6, -255,243,127,0,33,6,192,253,128,0,97,0,0,18,226,126,40,0,46,6, -232,193,142,0,206,121,111,23,24,0,111,7,9,0,32,110,16,0,111,111, -2,0,111,7,33,0,111,7,12,0,111,7,37,0,111,7,14,0,44,6, -20,205,1,0,111,7,0,0,65,18,111,7,18,0,2,6,0,255,111,103, -5,0,230,221,43,6,232,233,142,0,96,95,233,176,32,86,192,16,96,7, -225,176,0,18,96,87,229,176,2,88,232,95,68,2,11,80,44,6,232,233, -142,0,204,81,12,126,40,0,207,89,106,95,25,0,106,7,9,0,106,7, -2,0,106,7,12,0,106,7,14,0,45,6,148,204,1,0,106,7,0,0, -65,18,106,7,18,0,2,6,64,239,106,111,5,0,246,221,127,0,128,7, -193,0,6,224,229,87,64,0,224,7,96,1,32,23,229,176,10,232,188,17, -224,17,231,5,2,6,64,239,191,5,96,23,229,176,253,47,32,0,64,6, -223,0,128,7,193,0,0,234,229,87,64,0,224,7,96,1,10,224,0,18, -226,134,40,0,46,6,232,193,142,0,206,129,48,111,24,0,144,106,169,5, -65,234,65,18,2,6,0,255,166,245,252,47,32,0,29,80,64,6,223,0, -128,7,33,0,38,23,24,0,194,142,0,128,17,6,0,128,194,5,32,22, -8,1,245,29,32,126,16,0,194,134,255,127,102,135,24,0,38,22,12,0, -98,7,1,0,102,127,2,0,68,18,98,7,1,0,38,55,24,0,43,6, -176,137,141,0,6,112,194,114,203,113,46,87,1,0,224,81,178,5,128,255, -164,11,0,18,2,80,64,6,63,0,128,7,225,16,6,248,7,216,61,6, -255,255,255,127,229,87,64,0,224,7,96,1,10,224,31,48,191,255,56,244, -10,120,239,134,40,0,32,118,160,180,206,129,48,111,17,0,224,105,146,61, -0,90,235,22,40,0,42,6,232,193,142,0,202,17,34,143,24,0,144,138, -169,45,34,119,29,0,46,119,61,0,224,113,194,37,34,103,29,0,44,103, -61,0,140,103,35,0,239,97,202,29,34,87,29,0,42,87,13,0,27,16, -202,17,36,87,33,175,48,6,255,255,255,15,240,81,190,13,46,6,1,0, -0,240,238,81,231,5,45,6,255,255,255,63,205,17,205,81,170,17,253,17, -174,5,2,232,65,90,11,6,0,255,166,205,252,47,32,0,29,80,64,6, -255,16,134,7,97,0,6,248,229,87,64,0,224,7,96,1,10,232,255,55, -35,0,0,58,3,64,190,255,174,230,253,47,32,0,70,6,127,0,130,7, -225,48,6,232,61,143,12,0,224,137,138,125,229,87,64,0,224,7,96,1, -61,223,29,0,48,6,20,205,1,0,125,135,5,0,10,224,61,23,24,0, -59,215,33,0,194,126,0,128,15,6,0,128,234,29,32,110,16,0,194,118, -255,127,125,119,24,0,61,22,12,0,98,7,1,0,125,111,2,0,68,18, -98,7,1,0,61,55,24,0,49,6,176,137,141,0,6,96,194,98,209,97, -44,135,1,0,224,129,178,5,128,255,90,10,58,119,26,0,59,23,36,0, -194,113,122,119,26,0,221,199,2,0,170,61,61,223,24,0,149,21,229,87, -64,0,32,22,159,255,10,232,29,248,66,249,255,47,32,0,29,248,255,47, -32,0,4,111,80,139,224,105,250,37,51,6,5,0,32,0,211,255,0,0, -186,237,229,87,64,0,224,7,96,1,32,103,185,176,99,87,1,0,95,98, -96,103,185,176,202,13,32,95,13,177,224,89,138,13,64,86,0,0,43,6, -96,0,0,0,74,95,8,240,35,255,1,0,255,47,32,0,50,6,54,0, -32,0,114,223,0,0,252,47,32,0,66,6,255,48,49,6,66,58,1,0, -102,143,5,0,32,134,32,0,102,135,2,0,127,0,130,7,225,16,6,232, -61,143,12,0,224,137,170,85,229,87,64,0,224,7,96,1,61,55,29,0, -32,134,16,0,125,135,2,0,47,6,20,205,1,0,125,127,5,0,10,224, -128,255,96,50,29,48,191,255,142,253,61,223,24,0,149,21,229,87,64,0, -32,22,159,255,10,232,29,248,66,249,255,47,32,0,29,248,255,47,32,0, -4,119,80,139,224,113,250,37,51,6,5,0,32,0,211,255,0,0,186,237, -229,87,64,0,224,7,96,1,32,111,185,176,99,87,1,0,95,106,96,111, -185,176,202,13,32,103,13,177,224,97,138,13,64,86,0,0,43,6,96,0, -0,0,74,95,8,240,35,255,1,0,255,47,32,0,50,6,54,0,32,0, -114,223,0,0,252,47,32,0,181,5,128,255,252,8,66,6,255,16,130,7, -225,48,6,232,61,143,12,0,224,137,178,5,128,7,30,1,229,87,64,0, -224,7,96,1,48,6,20,205,1,0,125,135,5,0,61,23,24,0,10,216, -194,126,0,128,15,6,0,128,234,29,32,110,16,0,194,118,255,127,125,119, -24,0,61,22,12,0,98,7,1,0,125,111,2,0,68,18,98,7,1,0, -61,55,24,0,49,6,176,137,141,0,6,96,194,98,209,97,44,135,1,0, -224,129,178,5,128,255,146,8,61,231,29,0,1,18,2,80,236,87,64,2, -60,118,20,0,202,113,46,103,1,0,224,97,242,13,60,94,20,0,203,81, -42,95,1,0,224,89,130,13,43,143,26,0,42,87,4,0,202,137,107,143, -26,0,65,18,99,18,230,229,221,199,2,0,170,61,61,215,24,0,149,21, -229,87,64,0,32,22,159,255,10,232,29,248,66,249,255,47,32,0,29,248, -255,47,32,0,4,135,80,139,224,129,250,37,51,6,5,0,32,0,211,255, -0,0,186,237,229,87,64,0,224,7,96,1,32,127,185,176,99,87,1,0, -95,122,96,127,185,176,202,13,32,119,13,177,224,113,138,13,64,86,0,0, -43,6,96,0,0,0,74,95,8,240,35,255,1,0,255,47,32,0,50,6, -54,0,32,0,114,215,0,0,28,48,128,255,178,48,251,47,32,0,66,6, -255,48,38,135,5,0,49,6,20,205,1,0,241,129,226,21,38,119,5,0, -47,6,46,57,1,0,239,113,242,13,38,103,5,0,45,6,250,58,1,0, -237,97,130,13,38,87,5,0,43,6,66,58,1,0,235,81,186,5,1,82, -165,5,0,82,127,0,38,135,5,0,49,6,252,66,1,0,241,129,130,13, -38,119,5,0,47,6,60,67,1,0,239,113,186,5,1,82,165,5,0,82, -127,0,38,135,5,0,49,6,10,57,1,0,241,129,186,5,1,82,165,5, -0,82,127,0,130,7,97,0,6,248,63,143,33,0,99,143,1,0,229,87, -64,0,224,135,96,1,10,232,63,55,29,0,3,56,0,66,190,255,2,251, -224,81,146,13,38,6,100,240,132,0,32,62,80,4,0,66,190,255,226,221, -253,47,32,0,66,6,127,0,130,7,97,0,6,248,63,143,12,0,34,6, -0,0,32,0,224,137,138,13,194,215,4,0,210,5,32,126,113,1,127,127, -12,0,4,114,98,119,16,0,98,119,18,0,63,103,33,0,99,103,1,0, -229,87,64,0,224,135,96,1,10,232,63,55,29,0,3,56,0,66,190,255, -156,250,224,81,146,13,38,6,116,240,132,0,32,62,148,4,0,66,190,255, -124,221,253,47,32,0,66,6,127,0,128,7,97,0,6,232,61,143,12,0, -224,137,61,55,29,0,218,5,0,58,190,255,88,237,197,5,1,58,190,255, -80,237,125,7,0,0,29,48,128,255,74,145,64,6,127,0,128,7,225,16, -6,232,61,143,12,0,224,137,250,13,61,231,24,0,61,223,26,0,28,48, -27,56,199,0,190,255,226,226,28,48,27,56,167,0,128,255,72,6,61,103, -9,0,224,97,194,5,29,48,128,255,232,142,64,6,255,16,128,7,225,0, -6,232,7,224,128,255,18,2,106,7,9,0,32,142,232,3,106,143,21,0, -48,6,164,60,1,0,106,135,5,0,106,231,33,0,106,239,29,0,202,7, -3,0,202,39,3,0,64,6,255,0,128,7,225,48,6,232,7,224,8,216, -9,208,128,255,216,1,106,7,9,0,32,142,44,1,106,143,21,0,1,130, -106,135,0,0,47,6,114,65,1,0,106,127,5,0,106,239,24,0,106,231, -29,0,106,223,33,0,106,215,37,0,64,6,255,48,128,7,225,16,6,232, -7,224,8,216,128,255,154,1,106,239,9,0,1,138,106,143,0,0,48,6, -120,61,1,0,106,135,5,0,106,231,24,0,106,223,26,0,32,126,44,1, -106,127,21,0,64,6,255,16,128,7,225,112,6,232,7,224,8,216,9,208, -35,207,25,0,128,255,94,1,106,239,9,0,106,231,29,0,106,223,33,0, -106,215,24,0,106,207,37,0,49,6,150,66,1,0,106,143,5,0,64,6, -255,112,128,7,97,0,6,248,63,143,9,0,224,137,194,5,32,86,64,1, -133,29,229,87,64,0,224,7,96,1,63,135,0,0,10,232,224,129,242,5, -47,6,212,67,1,0,127,127,5,0,229,5,127,7,0,0,31,48,128,255, -236,143,253,47,32,0,0,82,64,6,127,0,128,7,225,16,6,224,7,216, -229,87,64,0,224,7,96,1,60,239,0,0,219,233,124,239,0,0,10,216, -251,47,32,0,224,233,138,13,28,48,60,143,5,0,63,6,14,63,1,0, -113,0,64,6,255,16,128,7,193,16,6,216,7,232,253,0,229,87,64,0, -224,7,96,1,59,143,12,0,10,224,224,137,186,5,123,239,12,0,252,47, -32,0,64,6,223,16,128,7,97,0,6,232,128,255,142,0,106,7,9,0, -32,142,232,3,106,143,21,0,48,6,74,61,1,0,106,135,5,0,106,239, -29,0,64,6,127,0,132,7,225,0,6,232,61,143,29,0,224,137,130,45, -61,119,29,0,46,119,1,0,47,6,78,68,86,68,239,113,250,29,229,87, -64,0,224,135,96,1,61,55,29,0,10,224,61,63,33,0,31,106,99,111, -1,0,3,66,35,78,4,0,128,255,70,129,224,81,146,13,38,6,132,240, -132,0,32,62,101,6,0,66,190,255,6,219,252,47,32,0,213,5,61,103, -0,0,224,97,218,253,61,87,12,0,68,6,255,0,128,7,193,0,229,87, -64,0,224,7,96,1,32,143,225,176,10,232,32,135,229,176,17,22,1,0, -240,137,142,21,96,23,225,176,32,231,233,176,32,119,233,176,46,119,25,0, -96,119,233,176,253,47,32,0,28,80,64,6,223,0,229,87,64,0,224,135, -96,1,32,111,229,176,32,103,225,176,237,97,190,253,253,47,32,0,133,221, -128,7,97,0,6,248,63,143,29,0,224,137,146,29,229,87,64,0,224,135, -96,1,63,55,29,0,10,232,63,63,33,0,0,66,128,255,164,129,224,81, -146,13,38,6,164,240,132,0,32,62,24,7,0,66,190,255,96,218,253,47, -32,0,64,6,127,0,128,7,97,0,6,232,191,255,98,255,10,16,98,239, -9,0,32,142,232,3,98,143,21,0,1,130,125,135,0,0,253,127,19,0, -98,127,18,0,98,135,28,0,45,6,58,65,1,0,98,111,5,0,61,103, -14,0,12,6,252,253,186,5,194,23,2,0,2,80,64,6,127,0,128,7, -225,0,6,224,60,239,9,0,61,135,5,0,49,6,26,65,1,0,241,129, -186,13,253,127,29,0,65,122,125,127,28,0,1,114,125,119,0,0,29,80, -245,29,191,255,244,254,10,16,98,239,9,0,32,110,232,3,98,111,21,0, -1,98,98,103,0,0,252,95,19,0,98,95,18,0,220,215,2,0,178,5, -194,23,2,0,1,82,98,87,28,0,49,6,26,65,1,0,98,143,5,0, -2,80,64,6,255,0,128,7,97,0,6,232,61,143,12,0,224,137,218,5, -253,55,19,0,128,255,250,31,29,48,128,255,20,0,64,6,127,0,128,7, -33,0,128,255,8,0,64,6,63,0,128,7,97,0,6,232,221,215,2,0, -210,5,253,55,19,0,128,255,118,31,61,135,12,0,47,6,148,204,1,0, -125,127,5,0,29,48,128,255,42,139,64,6,127,0,128,7,225,0,6,232, -61,55,24,0,61,71,37,0,0,58,190,255,78,222,61,135,29,0,224,129, -242,13,229,87,64,0,224,135,96,1,61,55,29,0,10,224,61,63,33,0, -0,66,128,255,72,128,252,47,32,0,64,6,255,0,130,7,225,48,6,232, -0,218,229,87,64,0,224,7,96,1,61,55,33,0,10,208,61,231,37,0, -224,49,146,29,125,7,33,0,61,143,12,0,224,137,154,13,221,143,3,0, -221,167,3,0,128,255,158,33,10,216,181,21,190,255,52,217,224,225,242,13, -28,48,190,255,42,217,125,7,37,0,149,13,224,225,242,5,125,7,37,0, -28,48,128,255,120,33,10,216,61,135,0,0,219,129,125,135,0,0,61,127, -0,0,224,121,218,45,229,87,64,0,224,135,96,1,61,119,29,0,224,113, -99,119,1,0,130,37,11,18,206,199,6,0,146,13,3,56,38,6,216,215, -255,255,0,66,190,255,130,245,10,16,224,17,162,21,107,18,250,5,35,55, -1,0,1,58,190,255,94,232,165,13,38,6,180,240,132,0,32,62,189,8, -0,66,190,255,80,216,224,81,29,48,128,255,34,138,250,47,32,0,66,6, -255,48,128,7,97,0,6,232,61,55,33,0,128,255,6,44,29,48,128,255, -6,138,64,6,127,0,128,7,225,48,38,215,33,0,38,231,24,0,38,223, -37,0,38,239,29,0,128,255,234,137,229,87,64,0,224,7,96,1,28,16, -194,18,10,248,61,86,140,8,202,17,34,87,1,0,28,88,187,81,98,87, -1,0,193,90,61,22,140,0,26,80,195,82,202,17,11,96,194,97,44,23, -0,0,187,17,172,5,0,18,61,102,140,0,204,81,202,89,107,23,0,0, -255,47,32,0,64,6,255,48,128,7,225,16,6,232,61,143,12,0,224,137, -234,21,61,223,29,0,229,87,64,0,224,7,96,1,61,55,25,0,10,224, -190,255,168,243,219,23,66,0,252,47,32,0,125,7,0,0,29,48,128,255, -140,139,181,5,128,255,186,0,64,6,255,16,128,7,225,16,6,248,63,143, -12,0,224,137,170,29,63,239,29,0,61,231,33,0,229,87,64,0,224,7, -96,1,252,135,43,0,208,134,244,255,124,135,42,0,10,216,125,7,65,0, -251,47,32,0,127,7,0,0,31,48,128,255,68,139,181,5,128,255,114,0, -64,6,255,16,128,7,225,16,6,232,61,143,12,0,224,137,218,29,61,23, -29,0,34,255,33,0,226,223,37,0,27,16,63,127,26,0,226,0,194,121, -127,127,26,0,229,87,64,0,224,7,96,1,36,119,49,139,10,224,219,113, -100,119,49,139,252,47,32,0,31,48,191,255,170,7,29,48,128,255,200,136, -64,6,255,16,128,7,33,0,102,7,0,0,128,255,222,138,64,6,63,0, -128,7,33,6,30,187,128,0,97,0,33,6,20,218,128,0,97,0,33,6, -240,255,128,0,97,0,128,7,33,0,32,142,0,8,50,6,18,0,32,0, -114,143,0,0,38,6,124,247,132,0,128,255,46,6,31,50,32,62,17,0, -0,66,190,255,30,223,4,23,80,139,224,17,186,21,3,50,191,255,128,231, -196,255,144,140,178,13,164,127,21,133,224,121,242,5,38,6,88,247,132,0, -128,255,252,5,181,5,128,255,234,51,64,6,63,0,128,7,33,0,2,50, -191,255,84,231,38,6,144,247,132,0,190,255,202,222,36,63,33,175,38,6, -164,247,132,0,190,255,188,222,31,50,32,62,18,0,0,66,190,255,192,222, -191,255,90,31,64,6,63,0,130,7,33,0,7,16,8,80,198,134,255,0, -194,5,32,86,82,1,165,13,0,56,2,64,32,126,40,0,99,127,1,0, -10,72,128,255,34,4,66,6,63,0,130,7,33,0,7,80,8,16,198,134, -255,0,194,5,32,86,82,1,133,21,194,126,255,0,194,5,32,86,83,1, -165,13,0,56,10,64,32,118,1,2,99,119,1,0,2,72,128,255,236,3, -66,6,63,0,34,6,0,0,32,0,98,63,28,0,144,58,98,63,30,0, -134,54,0,32,98,55,26,0,226,111,27,0,224,105,226,119,0,0,142,114, -161,253,127,0,34,6,0,0,32,0,134,54,0,64,98,55,26,0,226,135, -27,0,224,129,226,143,0,0,143,138,161,253,226,119,29,0,226,87,31,0, -208,82,14,81,127,0,128,7,33,0,6,16,7,64,38,6,0,1,32,0, -2,56,191,255,52,202,191,255,214,36,64,6,63,0,128,7,33,0,7,64, -39,6,0,1,32,0,191,255,28,202,64,6,63,0,128,7,225,112,6,200, -7,232,8,216,9,208,218,0,32,54,36,0,191,255,244,62,10,224,29,6, -20,255,186,5,13,18,165,37,29,6,24,255,186,5,15,18,213,29,29,6, -28,255,186,5,13,18,133,29,29,6,208,255,186,5,15,18,181,21,29,6, -224,255,186,5,13,18,229,13,29,6,54,255,186,5,11,18,149,13,29,6, -56,255,186,5,9,18,197,5,32,86,99,48,197,45,92,7,8,0,137,210, -130,142,32,0,124,143,18,0,124,215,10,0,64,142,255,0,27,128,81,129, -144,130,92,223,12,0,92,135,14,0,64,118,0,15,219,102,0,255,78,217, -152,218,92,223,15,0,136,98,92,103,13,0,92,239,17,0,32,102,224,255, -92,103,16,0,25,48,28,56,190,255,226,216,28,48,191,255,66,62,0,82, -64,6,255,112,128,7,225,112,59,6,0,0,32,0,128,255,186,11,32,142, -0,64,123,143,24,0,251,231,255,0,28,208,224,209,170,53,38,6,180,247, -132,0,32,62,142,1,0,66,190,255,98,212,149,45,0,234,28,16,181,5, -161,18,65,234,194,126,1,0,194,253,28,112,1,106,253,111,192,0,45,224, -78,225,220,0,29,6,240,255,158,29,29,48,128,255,56,25,224,81,170,21, -29,48,32,62,65,0,32,70,16,2,190,255,170,220,10,200,29,48,2,58, -128,255,90,25,224,201,194,5,25,48,190,255,158,220,224,225,250,213,32,126, -0,64,123,127,24,0,251,111,255,0,237,209,146,13,38,6,180,247,132,0, -32,62,177,1,0,66,190,255,236,211,32,102,16,0,123,103,18,0,128,255, -248,10,64,6,255,112,128,7,225,0,128,255,10,11,0,234,29,48,128,255, -48,33,224,81,242,21,29,48,128,255,196,24,224,81,170,21,29,48,32,62, -65,0,32,70,17,2,190,255,54,220,10,224,29,48,2,58,128,255,230,24, -224,225,194,5,28,48,190,255,42,220,65,234,29,6,240,255,166,229,160,143, -53,177,224,137,210,5,32,134,17,2,96,135,54,177,128,255,126,10,32,126, -0,2,50,6,18,0,32,0,114,127,0,0,128,255,134,10,64,6,255,0, -128,7,225,0,128,255,152,10,0,234,29,48,128,255,190,32,224,81,242,21, -29,48,128,255,82,24,224,81,170,21,29,48,32,62,65,0,32,70,18,2, -190,255,196,219,10,224,29,48,2,58,128,255,116,24,224,225,194,5,28,48, -190,255,184,219,65,234,29,6,240,255,166,229,160,143,53,177,224,137,210,5, -32,134,18,2,96,135,54,177,32,126,0,2,50,6,18,0,32,0,114,127, -0,0,128,255,24,10,64,6,255,0,130,7,225,16,6,224,0,234,213,5, -28,48,128,255,126,2,10,232,224,233,178,253,61,63,9,0,38,6,192,247, -132,0,190,255,78,219,61,223,4,0,27,6,239,253,194,61,27,6,235,253, -201,61,226,5,27,6,233,253,249,5,162,45,229,53,1,130,64,135,52,177, -165,101,128,255,74,2,32,103,65,177,202,126,31,0,195,122,207,97,96,103, -65,177,10,16,191,18,194,22,63,0,202,17,32,94,192,255,75,17,162,81, -10,64,10,72,191,74,1,50,0,58,191,255,48,111,11,72,32,55,65,177, -1,90,99,95,1,0,10,64,128,255,214,6,229,61,32,55,65,177,1,82, -99,87,1,0,3,66,0,74,128,255,194,6,197,53,128,255,208,7,149,53, -128,255,132,9,0,234,29,48,128,255,170,31,10,16,224,17,194,29,34,55, -9,0,191,255,12,244,224,81,234,21,29,48,128,255,48,23,224,81,154,21, -29,48,27,64,32,62,65,0,190,255,164,218,10,224,29,48,2,58,128,255, -84,23,224,225,194,5,28,48,190,255,152,218,65,234,29,6,240,255,198,221, -160,127,53,177,224,121,178,5,96,223,54,177,128,255,10,9,66,6,255,16, -138,7,225,243,6,176,7,184,8,232,9,224,32,54,16,177,31,58,128,255, -150,118,224,81,170,253,29,208,0,202,99,231,1,0,35,151,56,0,0,218, -129,146,35,127,56,0,233,151,0,0,207,94,32,0,99,151,5,0,207,0, -226,151,0,0,99,151,9,0,15,6,127,255,234,151,0,0,99,151,13,0, -35,119,1,0,32,142,0,1,185,113,14,6,0,255,35,151,5,0,241,119, -60,235,224,145,170,45,29,6,0,255,174,29,35,151,13,0,32,198,40,0, -224,145,202,13,32,198,36,0,149,13,28,48,65,218,27,64,39,6,224,247, -132,0,191,255,252,109,22,48,23,56,24,64,128,255,250,8,10,224,224,225, -154,245,26,48,29,56,191,255,200,251,149,13,28,48,65,218,27,64,39,6, -224,247,132,0,191,255,210,109,22,48,23,56,227,71,57,0,128,255,206,8, -10,224,224,225,138,245,35,151,9,0,224,145,218,5,26,48,29,56,191,255, -176,251,221,201,29,72,191,74,221,177,225,103,0,0,204,73,201,185,35,143, -1,0,221,209,241,201,214,173,32,142,24,177,49,87,1,0,224,81,146,13, -38,6,212,247,132,0,32,62,69,1,0,66,190,255,218,208,32,54,16,177, -128,255,90,118,224,81,146,13,38,6,236,247,132,0,32,62,183,1,0,66, -190,255,190,208,28,80,74,6,255,243,128,7,225,112,6,208,7,200,8,216, -219,0,0,234,0,226,165,13,2,224,28,48,65,234,29,64,39,6,248,247, -132,0,191,255,52,109,26,48,25,56,27,64,128,255,222,9,10,16,224,17, -138,245,0,80,188,81,234,0,64,6,255,112,33,6,72,180,129,0,97,0, -33,6,118,250,128,0,97,0,33,6,12,60,130,0,97,0,128,7,225,48, -61,6,0,0,32,0,32,54,16,177,37,62,248,130,1,66,191,255,252,57, -32,54,68,177,39,6,52,248,132,0,1,66,191,255,236,57,32,134,195,4, -125,135,12,0,128,255,242,2,128,118,0,192,125,119,12,0,32,110,48,42, -4,103,204,131,125,111,18,0,224,97,242,5,36,95,206,131,100,90,239,23, -0,0,197,13,1,18,132,87,83,139,224,81,226,5,36,127,206,131,104,122, -175,5,0,18,130,0,128,86,0,128,224,17,178,5,32,86,0,64,125,87, -20,0,8,106,125,111,20,0,32,102,51,0,125,103,48,0,61,126,32,6, -125,7,48,0,96,127,61,177,96,7,193,223,61,86,0,6,96,87,57,177, -0,18,61,86,0,4,1,90,106,7,30,0,11,112,32,103,193,223,226,119, -192,0,46,104,77,97,96,103,193,223,10,86,32,0,65,18,2,6,238,255, -134,245,100,7,224,139,68,7,232,139,64,7,52,177,96,7,54,177,64,7, -53,177,61,231,2,0,38,6,204,248,132,0,208,226,61,223,2,0,156,226, -28,56,212,218,156,218,27,64,190,255,216,215,58,6,20,184,145,0,26,48, -32,62,32,0,9,66,190,255,190,215,90,7,8,0,28,94,48,0,90,95, -0,0,32,86,46,0,90,87,1,0,27,134,48,0,90,135,2,0,32,126, -48,0,90,127,3,0,181,5,61,23,64,0,221,231,5,0,194,253,11,50, -39,6,193,19,2,16,191,255,70,249,15,50,191,255,104,249,202,0,64,118, -9,0,14,81,10,56,15,50,191,255,48,249,7,50,191,255,82,249,16,18, -66,81,32,110,16,4,125,111,14,0,15,98,125,103,74,0,100,87,229,139, -125,103,74,0,32,54,150,0,190,255,84,215,32,86,0,4,125,87,76,0, -10,130,125,135,74,0,15,122,125,127,74,0,32,118,41,0,125,119,74,0, -32,110,25,0,125,111,74,0,125,119,74,0,32,86,39,0,125,111,74,0, -8,130,125,87,76,0,36,55,77,139,125,135,74,0,128,255,92,16,10,16, -224,17,226,5,2,6,236,255,225,23,0,0,165,5,1,18,36,55,77,139, -125,23,76,0,128,255,70,16,10,224,224,225,154,13,28,56,38,6,64,248, -132,0,190,255,218,214,3,226,213,13,10,90,75,224,220,0,99,226,131,13, -28,56,38,6,64,248,132,0,190,255,192,214,3,226,198,226,36,55,77,139, -220,0,128,255,20,16,10,16,104,18,153,13,2,56,38,6,92,248,132,0, -190,255,160,214,0,18,213,13,108,18,147,13,2,56,38,6,92,248,132,0, -190,255,140,214,4,18,181,5,88,18,194,0,200,18,2,225,220,230,208,111, -156,230,47,144,36,55,77,139,125,231,74,0,128,255,214,15,10,22,244,255, -206,18,36,55,77,139,100,23,226,139,128,255,204,15,10,16,10,82,234,23, -194,2,228,87,227,139,2,81,138,110,0,144,100,111,226,139,125,111,78,0, -38,6,224,248,132,0,190,255,54,214,253,63,77,0,38,6,132,248,132,0, -190,255,40,214,253,63,75,0,38,6,156,248,132,0,190,255,26,214,253,63, -79,0,38,6,180,248,132,0,190,255,12,214,32,126,28,0,125,127,72,0, -0,50,0,58,32,70,40,0,128,255,42,5,32,118,15,16,125,119,14,0, -64,86,0,0,202,191,32,241,229,87,64,0,224,7,96,1,10,232,64,86, -0,0,10,87,32,241,10,248,32,86,191,255,74,249,64,86,0,0,74,255, -32,241,253,47,32,0,64,86,0,0,202,191,34,241,64,6,255,48,128,7, -97,0,0,234,29,48,128,255,42,0,65,234,29,6,238,255,166,253,34,6, -0,0,32,0,128,142,206,208,98,143,16,0,98,143,18,0,32,126,16,0, -98,127,18,0,64,6,127,0,47,6,0,4,32,0,197,50,6,128,207,129, -32,118,0,64,112,119,30,0,44,6,0,4,32,0,204,49,102,7,30,0, -127,0,34,6,0,0,32,0,36,142,226,139,209,47,1,0,228,135,227,139, -98,135,78,0,32,126,30,0,98,127,72,0,32,118,128,0,98,119,14,0, -64,86,0,0,43,6,48,0,0,0,74,95,144,244,127,0,34,6,0,0, -32,0,228,143,227,139,209,142,255,223,98,143,78,0,100,143,226,139,98,7, -72,0,32,126,128,0,98,127,12,0,64,86,0,0,43,6,48,0,0,0, -74,95,144,244,127,0,128,7,225,16,61,6,0,0,32,0,128,255,172,3, -61,143,72,0,143,138,185,37,61,111,84,0,205,230,31,0,28,6,240,255, -206,21,28,48,32,62,65,0,32,70,23,2,190,255,216,212,10,216,224,217, -162,21,28,48,128,255,72,17,224,81,218,13,27,48,190,255,202,212,149,13, -160,87,53,177,224,81,210,5,32,142,23,2,96,143,54,177,221,255,73,0, -178,37,61,87,80,0,202,230,31,0,28,6,240,255,206,21,28,48,32,62, -65,0,32,70,22,2,190,255,142,212,10,216,224,217,162,21,28,48,128,255, -254,16,224,81,218,13,27,48,190,255,128,212,149,13,160,127,53,177,224,121, -210,5,32,118,22,2,96,119,54,177,32,110,30,0,125,111,72,0,128,255, -236,2,64,6,255,16,128,7,33,0,38,6,244,248,132,0,190,255,56,212, -32,54,19,0,191,255,20,246,202,62,3,0,37,54,0,131,190,255,36,212, -32,142,0,32,50,6,18,0,32,0,114,143,0,0,64,6,63,0,132,7, -225,243,6,224,8,208,9,216,35,199,45,0,32,54,16,177,31,58,128,255, -66,112,224,81,170,253,229,87,64,0,224,7,96,1,10,200,61,6,0,0, -32,0,0,18,61,86,0,4,202,239,31,0,234,253,10,86,32,0,65,18, -2,6,238,255,134,253,191,255,162,254,224,193,130,21,36,134,226,139,208,47, -1,0,228,127,227,139,125,127,78,0,64,86,0,0,43,6,48,0,0,0, -74,95,144,244,0,184,32,110,0,255,28,176,77,177,22,48,0,56,32,70, -40,0,128,255,196,2,61,238,0,1,220,22,248,0,131,18,195,18,194,233, -61,79,5,0,61,71,1,0,28,56,99,215,1,0,99,223,5,0,38,6, -12,249,132,0,190,255,104,211,61,103,1,0,26,80,44,81,125,87,1,0, -61,111,5,0,27,88,45,89,125,95,5,0,22,48,0,56,32,70,1,2, -128,255,118,2,191,255,226,253,249,47,32,0,32,142,24,177,49,127,1,0, -224,121,146,13,38,6,64,249,132,0,32,62,69,1,0,66,190,255,170,202, -32,54,16,177,128,255,42,112,224,81,162,13,38,6,76,249,132,0,32,62, -183,1,0,66,190,255,142,202,224,81,68,6,255,243,128,7,97,0,32,239, -61,177,221,239,31,0,146,13,38,6,88,249,132,0,32,62,220,2,0,66, -190,255,106,202,128,142,1,128,50,6,24,0,32,0,114,143,0,0,50,6, -254,0,32,0,50,135,0,0,208,126,3,0,178,5,128,255,202,1,64,102, -0,128,125,103,13,0,32,94,36,2,125,95,18,0,32,86,0,1,125,87, -20,0,31,138,125,143,5,0,64,134,255,255,125,135,1,0,64,6,127,0, -50,6,30,4,32,0,114,55,0,0,127,0,34,6,20,0,32,0,34,135, -0,0,132,130,177,5,8,106,165,5,4,106,98,111,0,0,127,0,128,7, -225,16,59,6,0,0,32,0,251,239,1,0,0,18,221,134,0,16,178,5, -59,23,33,0,2,224,0,18,131,234,217,5,251,143,37,0,17,16,194,0, -2,225,181,61,221,118,0,4,242,13,32,94,0,4,123,95,18,0,36,87, -224,139,224,81,202,5,191,255,76,243,197,5,1,138,68,143,232,139,221,126, -0,8,178,5,191,255,226,242,221,94,0,1,210,5,32,134,0,1,123,135, -18,0,221,118,16,0,178,5,191,255,248,244,221,86,8,0,178,5,128,255, -60,11,221,118,0,2,178,5,191,255,12,246,221,86,2,0,178,5,191,255, -144,245,221,118,128,0,178,5,191,255,222,252,142,234,185,5,191,255,138,253, -251,239,1,0,221,118,154,47,170,197,224,225,210,21,0,234,1,218,213,13, -27,16,253,23,192,0,2,88,92,89,226,5,34,80,74,225,29,48,128,255, -120,126,65,234,29,6,238,255,190,5,224,225,138,245,64,86,0,0,43,6, -48,0,0,0,74,95,144,244,64,86,0,0,202,191,34,241,64,6,255,16, -128,142,0,192,50,6,16,0,32,0,114,143,0,0,50,6,18,0,32,0, -114,143,0,0,127,0,32,142,32,0,50,6,14,0,32,0,114,143,0,0, -32,134,16,0,50,6,14,0,32,0,114,135,0,0,127,0,128,7,33,0, -32,142,16,0,50,6,12,0,32,0,114,143,0,0,64,86,0,0,43,6, -48,0,0,0,74,95,144,244,5,50,190,255,38,209,32,134,32,0,50,6, -12,0,32,0,114,135,0,0,64,86,0,0,43,6,48,0,0,0,74,95, -144,244,5,50,190,255,4,209,64,6,63,0,128,7,33,0,191,255,176,255, -2,138,50,6,16,0,32,0,114,143,0,0,50,6,18,0,32,0,114,143, -0,0,191,255,120,255,64,6,63,0,128,7,225,112,6,208,7,216,8,224, -220,0,26,48,27,56,3,66,0,74,128,255,52,10,10,80,11,88,10,48, -11,56,0,66,0,74,128,255,44,10,10,16,97,18,210,5,32,22,80,1, -128,7,14,1,96,7,54,177,1,130,64,135,53,177,32,127,57,177,207,239, -31,0,218,5,32,239,57,177,1,202,197,5,32,239,61,177,2,202,221,239, -31,0,178,13,38,6,108,249,132,0,32,62,135,5,0,66,190,255,238,199, -10,16,224,17,128,118,1,128,49,6,24,0,32,0,113,119,0,0,49,6, -254,0,32,0,241,103,1,0,204,110,3,0,224,105,178,5,191,255,72,255, -220,94,8,1,224,89,194,5,26,80,125,87,9,0,220,134,0,2,224,129, -194,5,26,120,125,127,13,0,220,118,8,3,224,113,218,13,64,110,0,128, -125,111,13,0,28,96,140,94,0,2,11,80,234,0,125,87,18,0,213,5, -28,128,240,0,125,135,18,0,32,126,0,1,125,127,20,0,0,106,27,112, -14,96,12,104,125,111,5,0,26,96,125,103,1,0,213,5,32,95,54,177, -224,89,250,13,49,6,4,3,32,0,49,87,0,0,25,128,16,120,74,121, -224,121,186,245,128,119,53,177,224,113,250,237,64,7,53,177,29,238,32,0, -32,111,61,177,237,233,178,5,32,239,57,177,220,102,4,0,224,97,194,5, -29,48,128,255,38,2,32,23,54,177,2,80,64,6,255,112,200,0,34,6, -0,0,32,0,213,37,38,127,1,0,36,135,33,175,175,129,97,130,163,29, -32,118,1,16,98,119,24,0,34,111,254,0,205,102,0,12,218,13,128,142, -1,128,98,143,24,0,34,135,254,0,208,126,3,0,194,5,32,86,21,2, -165,21,36,103,33,175,102,103,1,0,32,95,54,177,224,89,138,13,39,87, -30,0,8,136,74,137,209,0,224,137,234,213,32,87,54,177,127,0,130,7, -225,243,6,216,36,143,33,175,7,192,99,143,1,0,32,239,57,177,128,134, -1,128,50,6,24,0,32,0,114,135,0,0,8,200,50,6,254,0,32,0, -50,127,0,0,217,0,207,118,3,0,162,13,32,54,16,0,191,255,104,249, -191,255,240,253,221,239,31,0,234,253,96,7,54,177,1,90,64,95,53,177, -217,190,0,2,217,182,8,0,32,230,0,1,59,215,17,0,26,96,169,98, -172,193,224,193,207,29,24,88,201,90,203,209,133,29,61,87,30,0,28,136, -74,137,209,0,224,137,242,13,32,55,61,177,128,255,44,1,29,56,28,64, -3,48,191,255,10,255,10,16,224,17,210,5,128,7,16,1,129,226,220,0, -221,223,31,0,250,229,125,207,18,0,224,185,194,45,224,177,194,13,59,135, -9,0,125,135,9,0,59,127,13,0,125,127,13,0,125,215,25,0,165,29, -25,6,252,236,218,5,59,111,9,0,125,111,9,0,59,103,13,0,132,95, -153,140,125,103,13,0,224,89,125,215,21,0,210,5,59,23,5,0,125,23, -5,0,59,23,1,0,125,23,1,0,59,87,13,0,96,87,65,177,181,21, -59,143,9,0,132,135,153,140,125,143,9,0,224,129,125,215,21,0,210,5, -59,23,5,0,125,23,5,0,59,23,1,0,125,23,1,0,27,222,20,0, -28,6,0,248,178,5,193,226,220,0,36,111,33,175,224,193,99,111,1,0, -239,141,32,102,0,2,125,103,18,0,64,94,0,128,125,95,13,0,32,86, -0,1,125,87,25,0,29,216,32,239,61,177,32,230,0,16,245,21,59,143, -30,0,28,128,81,129,208,0,224,129,226,13,29,48,128,255,58,0,27,56, -28,64,3,48,191,255,24,254,10,16,224,81,210,5,2,80,229,13,129,226, -220,0,219,239,31,0,138,237,128,127,53,177,224,121,202,229,29,48,128,255, -14,0,0,82,64,7,53,177,66,6,255,243,64,134,0,128,102,135,9,0, -32,126,0,247,102,127,12,0,32,118,0,1,102,119,20,0,32,110,128,1, -102,111,18,0,36,87,173,139,102,87,1,0,127,0,128,7,225,48,6,232, -7,224,8,208,59,6,32,6,32,0,224,209,138,13,32,54,16,177,31,58, -128,255,116,105,224,81,170,253,61,23,17,0,2,136,169,138,177,225,204,5, -28,128,201,130,208,17,219,223,31,0,234,253,32,126,0,2,61,119,13,0, -123,127,18,0,29,238,20,0,123,119,13,0,224,225,123,23,25,0,255,229, -50,6,4,3,32,0,50,111,0,0,130,106,161,253,224,209,218,29,32,150, -24,177,50,95,1,0,224,89,146,13,38,6,128,249,132,0,32,62,69,1, -0,66,190,255,80,196,32,54,16,177,128,255,208,105,224,81,146,13,38,6, -140,249,132,0,32,62,183,1,0,66,190,255,52,196,0,82,64,6,255,48, -128,7,193,0,64,86,0,0,10,87,74,244,10,232,29,16,32,86,159,255, -194,230,159,0,64,86,0,0,74,231,74,244,64,86,0,0,10,87,10,244, -10,224,64,86,0,0,74,239,74,244,28,80,138,0,64,6,223,0,128,7, -193,0,64,86,0,0,10,87,76,244,10,232,29,16,32,86,31,255,194,230, -31,0,64,86,0,0,74,231,76,244,64,86,0,0,10,87,12,244,10,224, -64,86,0,0,74,239,76,244,28,80,138,0,64,6,223,0,130,7,225,241, -6,224,7,216,8,208,218,0,9,200,217,0,35,199,37,0,35,191,41,0, -0,234,229,21,28,48,27,56,25,72,99,199,1,0,32,70,0,1,128,255, -48,0,10,16,224,17,170,21,28,230,0,1,27,222,0,1,32,54,16,39, -190,255,244,203,65,234,26,112,136,114,238,233,134,237,29,48,23,56,128,255, -156,0,66,6,255,241,128,7,225,240,6,192,7,200,8,216,219,0,9,224, -35,215,29,0,220,0,26,232,197,234,47,6,0,4,32,0,207,233,221,239, -31,0,130,37,26,56,38,6,180,249,132,0,190,255,164,203,38,6,160,134, -1,0,190,255,162,203,221,239,31,0,162,21,26,56,38,6,152,249,132,0, -190,255,136,203,38,6,64,66,15,0,190,255,134,203,221,239,31,0,194,5, -32,86,30,48,245,21,156,230,0,128,220,110,8,3,250,5,64,86,0,128, -125,87,13,0,156,230,0,2,125,207,9,0,125,207,13,0,125,231,18,0, -125,223,21,0,0,82,125,199,1,0,64,6,255,240,128,7,97,0,61,6, -0,0,32,0,0,18,229,5,253,143,37,0,224,137,210,253,65,18,231,17, -166,253,0,18,229,5,61,135,33,0,224,129,210,253,65,18,230,17,166,253, -253,127,1,0,224,121,130,37,0,58,165,5,65,58,253,119,37,0,224,113, -202,253,224,57,226,5,38,6,212,249,132,0,190,255,240,202,0,58,165,5, -65,58,61,111,33,0,224,105,202,253,224,57,226,5,38,6,240,249,132,0, -190,255,212,202,32,86,98,48,165,5,0,82,64,6,127,0,128,7,225,48, -7,208,8,224,220,0,6,216,32,54,20,0,191,255,248,43,10,232,125,223, -1,0,125,7,5,0,125,215,9,0,125,7,13,0,125,231,17,0,32,54, -16,177,31,58,128,255,220,102,224,81,170,253,29,48,1,58,32,70,136,0, -191,255,90,241,32,150,24,177,50,143,1,0,10,224,224,137,146,13,38,6, -4,248,132,0,32,62,69,1,0,66,190,255,240,193,32,54,16,177,128,255, -112,103,224,81,146,13,38,6,28,248,132,0,32,62,183,1,0,66,190,255, -212,193,29,48,191,255,120,43,28,80,64,6,255,48,128,7,225,48,7,208, -8,224,220,0,6,216,32,54,20,0,191,255,110,43,10,232,125,223,1,0, -125,7,5,0,125,215,9,0,125,7,13,0,125,231,17,0,32,54,16,177, -31,58,128,255,82,102,224,81,170,253,29,48,1,58,32,70,4,2,191,255, -208,240,32,150,24,177,50,143,1,0,10,224,224,137,146,13,38,6,16,248, -132,0,32,62,69,1,0,66,190,255,102,193,32,54,16,177,128,255,230,102, -224,81,146,13,38,6,40,248,132,0,32,62,183,1,0,66,190,255,74,193, -29,48,191,255,238,42,28,80,64,6,255,48,132,7,225,16,6,216,7,224, -201,0,28,48,9,232,32,62,202,0,191,255,220,235,10,16,224,17,218,13, -27,48,29,64,99,231,1,0,1,114,99,119,5,0,0,58,32,78,68,0, -191,255,84,253,68,6,255,16,132,7,225,16,6,216,7,224,201,0,28,48, -9,232,32,62,200,0,191,255,164,235,10,16,224,17,218,13,27,48,29,64, -99,231,1,0,1,114,99,119,5,0,0,58,32,78,130,0,191,255,28,253, -68,6,255,16,132,7,225,16,6,216,7,224,8,232,221,0,28,48,29,72, -32,62,232,0,0,66,191,255,104,235,10,16,224,17,218,13,27,56,29,64, -99,231,1,0,1,114,99,119,5,0,0,50,32,78,72,0,191,255,224,252, -68,6,255,16,132,7,225,16,6,216,7,224,8,232,221,0,28,48,29,72, -32,62,228,0,0,66,191,255,44,235,10,16,224,17,218,13,27,56,29,64, -99,231,1,0,1,114,99,119,5,0,0,50,32,78,2,2,191,255,164,252, -68,6,255,16,132,7,225,16,6,216,7,224,201,0,28,48,9,232,32,62, -48,0,191,255,244,234,10,16,224,17,218,13,27,56,29,64,99,231,1,0, -1,114,99,119,5,0,0,50,32,78,72,0,191,255,108,252,68,6,255,16, -132,7,225,16,6,216,7,224,201,0,28,48,9,232,32,62,32,0,191,255, -188,234,10,16,224,17,218,13,27,56,29,64,99,231,1,0,1,114,99,119, -5,0,0,50,32,78,2,2,191,255,52,252,68,6,255,16,132,7,225,16, -6,216,7,224,201,0,28,48,9,232,32,62,32,0,191,255,132,234,10,16, -224,17,218,13,27,56,29,64,99,231,1,0,1,114,99,119,5,0,0,50, -32,78,2,18,191,255,252,251,68,6,255,16,130,7,225,241,6,192,7,232, -8,184,9,200,217,0,0,106,29,224,29,216,0,210,197,13,26,48,23,64, -25,72,32,62,48,0,191,255,60,234,10,104,224,105,170,101,65,210,253,209, -198,245,0,210,229,13,24,56,25,64,99,215,1,0,0,50,32,78,72,0, -191,255,10,252,10,104,224,105,154,85,65,210,253,209,166,245,58,6,0,0, -32,0,250,103,37,0,1,18,0,82,165,13,2,136,76,137,209,0,224,137, -162,5,95,226,193,18,194,0,65,82,253,81,230,245,224,225,250,237,149,5, -58,103,33,0,1,18,204,0,0,90,165,13,2,80,76,81,202,0,224,81, -162,5,95,218,193,18,194,0,65,90,253,89,230,245,224,217,234,237,250,135, -1,0,224,129,130,37,0,58,165,5,65,58,250,127,37,0,224,121,202,253, -224,57,226,5,38,6,16,250,132,0,190,255,90,199,0,58,165,5,65,58, -58,119,33,0,224,113,202,253,224,57,226,5,38,6,44,250,132,0,190,255, -62,199,32,86,98,48,165,5,13,80,66,6,255,241,132,7,225,0,6,224, -7,232,29,48,32,62,236,0,0,66,32,78,0,2,191,255,88,233,10,16, -224,17,234,13,28,56,99,239,1,0,1,130,99,135,5,0,0,50,32,70, -0,2,32,78,2,2,191,255,206,250,68,6,255,0,138,7,225,16,0,234, -64,222,1,0,165,21,99,239,9,0,99,239,13,0,99,223,17,0,3,48, -32,62,128,0,0,66,191,255,140,249,10,224,224,225,250,5,93,238,1,0, -190,255,124,199,234,233,198,237,28,80,74,6,255,16,33,6,16,39,129,0, -97,0,33,6,216,189,129,0,97,0,33,6,222,189,129,0,97,0,33,6, -130,189,129,0,97,0,33,6,124,189,129,0,97,0,33,6,136,189,129,0, -97,0,33,6,2,79,130,0,97,0,33,6,14,79,130,0,97,0,128,7, -97,0,32,142,48,117,32,134,56,74,32,126,136,19,100,127,253,139,100,135, -249,139,100,143,245,139,128,255,196,11,0,234,29,16,197,18,32,102,104,177, -204,17,98,7,20,0,66,239,22,0,36,127,249,139,98,7,1,0,10,114, -98,7,5,0,253,86,40,0,98,7,9,0,48,6,64,216,255,255,66,7, -23,0,208,81,98,87,13,0,1,98,34,95,13,0,45,6,174,107,1,0, -107,111,5,0,253,103,192,0,107,103,18,0,2,82,107,87,2,0,238,127, -194,2,107,127,21,0,253,54,52,0,47,6,112,249,145,0,207,49,98,55, -17,0,32,62,20,0,128,255,100,12,65,234,29,6,238,255,166,197,100,7, -241,139,96,7,169,179,100,7,1,140,64,6,127,0,0,82,0,18,2,136, -197,138,32,118,104,177,206,137,49,95,20,0,65,18,203,81,2,6,238,255, -214,245,127,0,197,50,32,118,104,177,206,49,38,87,20,0,127,0,128,7, -225,16,32,238,104,177,0,226,181,61,229,87,64,0,224,7,96,1,29,143, -23,0,10,216,224,137,218,45,61,23,20,0,224,17,242,37,29,48,128,255, -100,0,224,81,194,37,28,48,128,255,244,1,224,81,250,29,28,48,32,62, -66,0,32,70,4,2,190,255,102,197,61,135,13,0,240,81,146,13,38,6, -76,250,132,0,32,62,241,0,0,66,190,255,200,188,28,48,3,58,128,255, -0,2,61,55,13,0,190,255,70,197,181,5,251,47,32,0,251,47,32,0, -65,226,29,238,32,0,4,127,205,131,239,225,182,197,64,6,255,16,128,7, -225,241,36,199,33,175,6,200,57,231,13,0,60,231,25,0,24,184,188,185, -23,6,216,255,177,5,0,82,165,93,0,18,45,6,255,255,255,15,237,193, -158,13,43,6,1,0,0,240,235,193,199,5,34,6,255,255,255,63,2,216, -57,215,13,0,165,5,2,208,58,23,9,0,224,17,202,253,26,48,191,255, -184,221,10,16,224,17,162,13,58,231,29,0,57,239,13,0,60,231,13,0, -61,239,21,0,181,5,58,239,21,0,57,87,5,0,25,127,23,0,220,233, -224,121,218,37,224,81,178,37,202,255,32,0,138,37,32,230,90,0,224,17, -234,5,26,48,191,255,182,221,224,81,178,5,32,230,190,0,252,185,179,21, -25,55,22,0,36,63,249,139,10,90,235,63,194,2,191,255,140,217,10,16, -216,17,27,136,194,137,27,128,221,129,240,137,169,5,2,232,27,120,216,121, -221,217,251,121,235,87,0,0,64,6,255,241,128,7,225,16,6,232,224,233, -198,5,29,6,240,255,183,5,0,82,245,37,29,248,197,250,32,126,104,177, -207,249,229,87,64,0,224,7,96,1,10,224,63,23,20,0,0,218,224,17, -210,21,31,119,23,0,99,114,186,5,1,218,245,13,31,111,23,0,100,106, -186,13,95,7,23,0,1,50,253,55,192,0,128,255,222,1,29,48,128,255, -184,112,252,47,32,0,27,80,64,6,255,16,128,7,225,0,6,248,224,249, -166,45,31,6,240,255,255,37,229,87,64,0,224,7,96,1,10,224,31,232, -197,234,32,126,104,177,207,233,93,7,23,0,1,50,255,55,192,0,128,255, -156,1,61,103,5,0,224,97,210,13,61,23,13,0,61,87,5,0,42,87, -1,0,98,87,9,0,36,143,33,175,98,143,25,0,29,48,128,255,2,113, -252,47,32,0,64,6,255,0,128,7,225,0,6,232,0,226,224,233,198,5, -29,6,240,255,183,5,0,82,181,21,29,48,191,255,180,253,224,81,210,13, -197,234,32,118,104,177,206,233,61,23,5,0,224,17,210,5,194,247,32,0, -234,231,0,0,28,80,64,6,255,0,128,7,225,0,6,232,7,248,191,0, -224,233,198,5,29,6,240,255,183,5,0,82,133,53,229,87,64,0,224,7, -96,1,29,16,197,18,32,126,104,177,207,17,34,119,5,0,10,224,224,113, -242,5,34,111,5,0,66,255,23,0,205,55,32,0,29,48,190,255,70,190, -29,96,194,98,36,142,172,138,209,97,44,23,1,0,29,128,193,130,36,110, -236,138,205,129,240,103,1,0,140,102,0,128,98,103,0,0,29,48,191,255, -74,237,252,47,32,0,1,82,64,6,255,0,128,7,193,0,6,224,229,87, -64,0,224,7,96,1,10,232,0,18,1,138,226,143,192,0,92,137,242,21, -36,143,253,139,2,112,197,114,32,94,104,177,203,113,46,87,13,0,10,130, -42,127,21,0,240,143,194,2,209,121,106,127,21,0,234,119,33,0,65,114, -106,119,32,0,65,18,2,6,240,255,166,229,253,47,32,0,64,6,223,0, -128,7,193,0,6,224,229,87,64,0,224,7,96,1,10,232,0,18,1,138, -226,143,192,0,92,137,130,29,2,112,197,114,32,94,104,177,203,113,46,95, -13,0,235,87,33,0,95,82,107,87,32,0,235,143,33,0,224,137,138,13, -36,127,249,139,10,114,238,127,194,2,107,127,21,0,65,18,2,6,240,255, -150,229,253,47,32,0,64,6,223,0,128,7,193,0,6,224,229,87,64,0, -224,7,96,1,10,232,0,18,1,138,226,143,192,0,92,137,226,13,2,112, -197,114,32,94,104,177,203,113,46,87,13,0,106,7,12,0,106,7,14,0, -106,7,16,0,65,18,2,6,240,255,182,237,253,47,32,0,64,6,223,0, -128,7,225,16,6,248,63,239,26,0,32,118,104,177,197,234,206,233,229,87, -64,0,224,7,96,1,29,111,23,0,10,216,102,106,170,13,29,55,22,0, -31,56,32,70,19,16,128,255,110,3,128,7,32,1,61,23,20,0,224,17, -61,143,20,0,170,61,17,94,1,0,125,95,20,0,63,87,9,0,125,87, -1,0,125,255,5,0,63,143,5,0,125,143,9,0,61,23,13,0,61,127, -5,0,47,127,1,0,98,127,9,0,36,119,33,175,98,119,25,0,223,199, -33,0,226,5,36,111,224,139,65,106,100,111,224,139,63,95,5,0,29,55, -22,0,11,95,34,0,61,63,9,0,97,90,138,13,29,55,22,0,61,63, -9,0,128,255,126,105,181,5,128,255,26,109,29,48,128,255,152,110,133,85, -65,138,125,143,20,0,31,23,32,0,29,87,22,0,222,18,159,18,250,5, -107,82,223,5,61,135,20,0,99,130,174,37,61,127,5,0,224,121,170,21, -125,255,5,0,125,255,9,0,61,23,13,0,61,111,5,0,45,111,1,0, -98,111,9,0,36,103,33,175,98,103,25,0,213,5,61,95,1,0,107,255, -5,0,63,87,9,0,125,87,1,0,29,48,128,255,54,110,245,29,61,55, -17,0,31,56,128,255,84,7,224,81,130,29,61,55,17,0,128,255,150,8, -10,224,224,225,154,13,38,6,100,250,132,0,32,62,24,4,0,66,190,255, -16,184,61,143,1,0,113,231,5,0,60,135,9,0,125,135,1,0,251,47, -32,0,64,6,255,16,128,7,225,0,6,248,63,239,26,0,32,118,104,177, -197,234,206,233,229,87,64,0,224,7,96,1,93,7,23,0,10,224,61,23, -20,0,63,103,9,0,224,17,202,5,125,103,1,0,213,5,61,95,5,0, -108,95,5,0,125,255,5,0,63,87,5,0,125,87,9,0,61,23,13,0, -61,135,5,0,48,135,1,0,223,7,32,0,98,135,9,0,223,47,32,0, -36,127,33,175,223,63,32,0,98,127,25,0,223,199,33,0,226,5,36,119, -224,139,65,114,100,119,224,139,61,103,9,0,29,55,22,0,12,103,34,0, -61,63,9,0,97,98,138,13,29,55,22,0,61,63,9,0,128,255,48,104, -181,5,128,255,204,107,61,87,20,0,65,82,125,87,20,0,29,48,128,255, -64,109,252,47,32,0,64,6,255,0,128,7,225,0,0,234,38,231,13,0, -198,15,32,0,191,255,224,253,28,48,65,234,224,225,250,245,29,80,64,6, -255,0,128,7,225,112,6,208,26,232,197,234,32,126,104,177,207,233,229,87, -64,0,224,7,96,1,10,200,6,114,93,119,23,0,26,48,128,255,130,4, -61,231,20,0,224,225,135,53,26,48,191,255,238,251,61,223,5,0,224,81, -242,13,59,23,9,0,95,226,34,223,5,0,242,5,1,98,125,103,20,0, -125,23,1,0,181,29,0,218,149,29,125,7,20,0,125,7,5,0,61,95, -1,0,26,48,125,95,9,0,6,58,191,255,240,251,197,13,27,56,39,223, -9,0,26,48,59,223,5,0,32,70,19,16,128,255,232,0,95,226,224,225, -202,245,249,47,32,0,64,6,255,112,128,7,225,48,6,248,31,232,197,234, -32,126,104,177,207,233,229,87,64,0,224,7,96,1,29,119,23,0,10,216, -224,113,242,85,31,48,128,255,236,3,61,215,5,0,61,231,13,0,181,5, -60,231,9,0,60,111,9,0,224,105,186,253,197,69,58,135,9,0,61,103, -1,0,16,120,236,121,146,69,47,63,5,0,39,87,1,0,10,16,181,5, -34,23,9,0,34,95,9,0,224,89,186,253,10,88,43,87,2,0,141,82, -185,5,1,82,229,5,43,95,9,0,224,89,250,245,0,82,224,81,162,37, -34,119,14,0,224,113,234,29,61,111,1,0,39,87,9,0,237,81,202,5, -125,135,1,0,213,5,42,103,5,0,111,103,5,0,32,86,19,16,226,225, -170,5,0,82,29,55,22,0,10,64,128,255,34,0,61,143,20,0,95,138, -125,143,20,0,165,5,7,208,61,135,20,0,97,130,175,189,251,47,32,0, -64,6,255,48,128,7,225,0,232,0,7,224,60,239,1,0,224,49,198,13, -6,6,240,255,158,13,1,138,230,143,192,0,253,127,19,0,17,121,125,127, -18,0,29,48,8,56,191,255,224,217,61,23,0,0,95,18,226,0,125,23, -0,0,224,17,138,13,29,48,61,103,5,0,63,6,84,101,1,0,108,0, -28,48,128,255,240,101,64,6,255,0,128,7,225,48,6,232,197,234,32,126, -104,177,207,233,61,231,5,0,224,225,210,45,229,87,64,0,224,7,96,1, -93,7,23,0,60,119,9,0,125,119,9,0,10,216,220,255,32,0,226,215, -0,0,220,199,33,0,194,21,36,23,224,139,95,18,226,0,100,23,224,139, -224,17,202,13,132,103,233,139,224,97,130,13,38,6,124,250,132,0,190,255, -122,189,191,255,156,222,29,48,28,56,26,64,128,255,12,0,251,47,32,0, -64,6,255,48,128,7,225,16,7,216,6,232,61,143,20,0,59,23,9,0, -95,138,125,143,20,0,61,135,1,0,240,17,186,5,0,120,181,5,34,127, -5,0,125,127,5,0,27,231,32,0,218,226,159,226,130,13,29,119,23,0, -224,113,202,5,5,106,93,111,23,0,61,55,13,0,8,56,128,255,36,104, -224,225,154,13,61,23,20,0,224,17,146,21,29,48,128,255,136,106,213,13, -61,23,13,0,61,95,5,0,43,95,1,0,98,95,9,0,36,87,33,175, -98,87,25,0,27,48,128,255,252,100,64,6,255,16,128,7,225,112,7,208, -6,200,25,231,22,0,0,234,107,226,183,5,128,7,22,1,36,55,1,140, -224,209,178,5,198,54,16,0,191,255,216,227,10,216,224,217,242,125,57,127, -5,0,47,127,5,0,47,127,18,0,59,239,4,0,207,22,15,0,107,18, -202,5,29,6,254,253,178,5,98,18,170,5,0,234,224,233,242,5,28,48, -191,255,20,249,224,81,162,5,0,234,224,233,178,101,59,63,9,0,28,64, -38,6,188,250,132,0,190,255,110,188,59,135,1,0,36,127,1,140,48,136, -81,121,100,127,1,140,224,209,178,5,121,215,9,0,29,6,252,253,162,29, -28,48,29,64,32,62,66,0,190,255,84,188,10,216,224,217,154,13,38,6, -216,250,132,0,32,62,48,7,0,66,190,255,184,179,28,48,2,58,191,255, -240,248,27,48,190,255,56,188,197,29,224,209,170,29,28,48,29,64,32,62, -66,0,190,255,30,188,10,232,224,233,154,13,38,6,216,250,132,0,32,62, -62,7,0,66,190,255,130,179,28,48,3,58,191,255,186,248,29,48,190,255, -2,188,0,234,1,122,28,88,197,90,48,6,0,4,32,0,208,89,107,7, -30,0,252,127,192,0,32,103,193,223,47,104,77,97,36,95,1,140,96,103, -193,223,224,89,186,5,96,7,169,179,29,80,64,6,255,112,128,7,225,16, -7,216,6,232,197,234,32,126,104,177,207,233,229,87,64,0,224,7,96,1, -61,119,5,0,10,224,224,113,154,13,38,6,240,250,132,0,32,62,156,7, -0,66,190,255,12,179,61,111,5,0,61,103,5,0,93,7,23,0,109,223, -1,0,61,95,13,0,204,183,32,0,107,7,12,0,61,143,5,0,49,143, -5,0,125,143,9,0,61,23,13,0,61,127,5,0,47,127,1,0,98,127, -9,0,36,119,33,175,98,119,25,0,61,103,9,0,29,55,22,0,12,103, -34,0,61,63,9,0,97,98,202,5,128,255,134,99,181,5,128,255,34,103, -29,48,128,255,160,104,252,47,32,0,64,6,255,16,0,82,224,49,246,13, -6,6,240,255,206,13,6,16,197,18,32,126,104,177,207,17,34,119,20,0, -224,113,178,5,34,87,13,0,127,0,128,7,225,48,0,226,6,208,26,232, -197,234,32,126,104,177,207,233,229,87,64,0,224,7,96,1,61,119,20,0, -10,216,224,113,226,21,250,54,52,0,42,6,112,249,145,0,202,49,128,255, -184,2,10,16,224,17,178,13,61,143,1,0,113,23,5,0,34,135,9,0, -65,226,125,135,1,0,197,237,251,47,32,0,28,80,64,6,255,48,128,7, -33,0,64,22,146,0,34,54,32,184,100,55,237,139,0,58,32,70,128,62, -190,255,120,186,36,23,237,139,0,82,2,88,2,22,16,0,107,23,5,0, -65,82,10,6,24,252,134,253,107,7,5,0,64,6,63,0,102,7,9,0, -102,7,13,0,127,0,128,7,193,16,6,224,7,216,229,87,64,0,224,7, -96,1,36,143,237,139,10,232,123,143,5,0,60,135,13,0,100,223,237,139, -95,130,124,135,13,0,253,47,32,0,64,6,223,16,128,7,97,0,6,232, -61,23,5,0,224,17,202,5,61,63,1,0,165,5,2,56,224,57,130,69, -7,16,165,5,10,16,34,87,13,0,224,81,202,253,34,119,9,0,61,143, -1,0,2,56,241,57,154,21,14,80,125,87,1,0,224,81,178,37,106,7, -5,0,61,87,1,0,165,5,11,80,42,95,13,0,224,89,202,253,133,29, -34,127,5,0,111,119,13,0,34,87,9,0,34,103,5,0,224,81,210,13, -106,103,5,0,34,95,9,0,165,5,10,88,43,87,13,0,224,81,202,253, -11,80,165,5,12,80,34,95,1,0,125,87,5,0,125,95,9,0,29,48, -191,255,62,255,181,5,125,7,9,0,61,87,9,0,64,6,127,0,128,7, -97,0,102,63,49,0,102,7,45,0,102,7,37,0,102,7,41,0,6,232, -191,255,12,255,29,54,16,0,191,255,4,255,125,7,33,0,64,6,127,0, -128,7,193,48,38,23,41,0,7,208,2,232,196,234,38,127,49,0,198,233, -224,121,178,45,38,119,45,0,36,87,33,175,238,81,227,13,65,18,194,22, -1,0,102,23,41,0,2,232,196,234,38,95,49,0,198,233,202,89,102,95, -45,0,61,95,9,0,0,82,224,89,194,13,43,135,5,0,58,127,5,0, -48,135,13,0,47,127,13,0,240,121,169,5,1,82,224,81,226,5,65,18, -194,238,1,0,196,234,198,233,229,87,64,0,224,7,96,1,10,216,149,13, -229,87,64,0,224,135,96,1,229,87,64,0,224,7,96,1,36,103,237,139, -224,97,210,245,36,231,237,139,61,135,13,0,36,87,237,139,65,130,42,87, -5,0,125,135,13,0,124,7,13,0,124,7,9,0,100,87,237,139,251,47, -32,0,28,16,61,87,1,0,124,215,1,0,224,81,138,13,124,7,5,0, -125,23,5,0,125,23,1,0,133,61,10,96,44,95,1,0,34,87,1,0, -43,95,5,0,42,87,5,0,43,95,13,0,42,87,13,0,235,81,177,13, -44,87,9,0,224,81,138,21,98,103,5,0,0,82,108,23,9,0,165,13, -44,87,13,0,224,81,234,5,98,103,5,0,0,82,108,23,13,0,10,96, -224,97,218,221,61,111,5,0,34,103,1,0,45,111,1,0,44,103,5,0, -45,111,5,0,44,103,13,0,45,111,13,0,237,97,185,5,125,23,5,0, -36,87,237,139,224,81,226,87,0,0,64,6,223,48,128,7,97,0,6,232, -61,143,33,0,224,137,138,29,29,86,16,0,61,119,13,0,42,127,13,0, -239,113,231,23,0,0,125,23,37,0,196,18,2,80,221,81,42,103,13,0, -224,97,186,5,0,82,197,37,221,17,125,23,33,0,61,55,33,0,191,255, -164,253,10,88,224,89,154,29,61,87,37,0,65,82,202,22,1,0,125,23, -37,0,196,18,2,80,221,81,42,127,13,0,224,121,146,13,221,17,125,23, -33,0,2,48,191,255,118,253,10,88,181,5,125,7,33,0,11,80,64,6, -127,0,199,0,198,223,128,7,33,0,0,58,128,255,136,98,64,6,63,0, -127,0,38,87,6,16,128,7,128,7,102,7,1,0,102,7,5,0,102,7, -8,0,127,0,128,7,193,16,6,224,7,232,229,87,64,0,224,7,96,1, -60,143,8,0,10,216,224,137,170,13,124,239,5,0,124,239,1,0,125,239, -73,0,125,239,69,0,181,21,60,23,5,0,226,233,34,87,73,0,178,13, -125,23,69,0,60,119,5,0,110,239,73,0,125,87,73,0,106,239,69,0, -124,239,5,0,60,111,8,0,65,106,124,111,8,0,251,47,32,0,64,6, -223,16,128,7,193,16,6,224,7,232,229,87,64,0,224,7,96,1,60,23, -8,0,10,216,95,18,226,0,124,23,8,0,224,17,226,29,60,135,1,0, -240,233,234,5,61,127,73,0,124,127,1,0,149,13,60,119,5,0,238,233, -218,5,61,111,69,0,124,111,5,0,61,95,73,0,61,103,69,0,108,95, -73,0,61,87,73,0,61,143,69,0,106,143,69,0,251,47,32,0,64,6, -223,16,0,82,34,6,24,253,145,0,2,142,76,0,98,143,73,0,65,82, -2,22,76,0,10,6,1,249,246,245,47,6,180,19,2,0,34,6,24,253, -145,0,2,128,207,129,112,7,73,0,96,23,173,179,127,0,128,7,193,0, -6,224,229,87,64,0,224,7,96,1,32,143,173,179,10,232,124,143,73,0, -96,231,173,179,253,47,32,0,64,6,223,0,0,18,42,6,16,219,255,255, -1,90,106,95,56,0,106,23,58,0,65,18,10,86,60,0,2,6,236,255, -246,245,127,0,128,7,225,112,0,210,57,6,16,219,255,255,0,226,25,216, -27,232,181,5,128,255,102,1,61,55,1,0,224,49,186,253,68,218,65,226, -109,226,214,245,25,206,60,0,65,210,26,6,236,255,214,237,64,6,255,112, -128,7,193,16,6,224,0,234,229,87,64,0,224,7,96,1,10,216,0,82, -64,22,0,0,34,94,16,219,11,16,34,143,56,0,97,138,234,13,98,7, -56,0,2,232,98,231,53,0,0,82,98,7,1,0,65,82,68,18,109,82, -182,253,245,5,11,94,60,0,65,82,10,6,236,255,150,237,251,47,32,0, -29,80,64,6,223,16,39,143,53,0,230,137,194,5,32,86,51,1,149,37, -39,135,58,0,16,6,236,255,198,5,32,86,48,1,149,29,39,127,56,0, -224,121,194,5,32,86,49,1,165,21,0,18,7,80,42,119,1,0,224,113, -194,5,32,86,50,1,149,13,68,82,65,18,109,18,230,245,1,106,103,111, -56,0,0,82,127,0,154,7,225,48,6,232,8,208,35,231,73,0,9,216, -99,231,1,0,128,255,8,1,10,16,224,17,234,61,32,55,37,183,35,134, -32,0,99,135,1,0,35,126,36,0,99,127,5,0,35,118,40,0,99,119, -9,0,35,110,44,0,99,111,13,0,35,102,48,0,99,103,17,0,35,62, -20,0,35,70,24,0,35,78,28,0,128,255,136,1,224,81,146,13,38,6, -124,6,133,0,32,62,58,1,0,66,190,255,96,172,29,48,26,64,27,72, -99,231,1,0,128,255,164,0,10,16,224,17,202,13,35,95,33,0,106,90, -210,5,1,50,191,255,76,189,245,237,128,255,142,80,197,237,2,80,90,6, -255,48,128,7,97,0,6,248,229,87,64,0,224,7,96,1,10,232,63,87, -9,0,224,81,63,23,13,0,202,21,31,143,18,0,47,6,16,219,255,255, -241,134,60,0,31,103,19,0,207,129,194,98,208,97,108,23,1,0,224,17, -162,13,98,7,9,0,245,5,106,23,13,0,224,17,178,5,98,87,9,0, -253,47,32,0,31,48,128,255,72,86,64,6,127,0,130,7,33,0,3,130, -99,135,1,0,128,255,24,0,10,48,224,49,186,5,1,82,197,5,191,255, -140,255,0,82,66,6,63,0,130,7,225,240,6,200,8,224,9,232,35,215, -33,0,59,6,16,216,255,255,27,48,3,56,31,66,128,255,34,85,224,81, -170,253,35,255,1,0,28,128,127,7,13,0,13,114,238,135,194,194,229,87, -64,0,224,7,96,1,10,216,24,104,194,106,13,96,217,97,44,23,1,0, -99,210,226,103,0,0,181,29,34,95,5,0,34,87,1,0,253,89,138,21, -252,81,234,13,34,95,16,0,235,209,186,5,224,97,130,13,251,47,32,0, -31,48,128,255,172,85,0,82,165,37,34,87,13,0,224,81,194,5,10,16, -224,17,218,229,224,17,234,5,217,105,109,255,1,0,0,16,181,5,98,255, -13,0,127,23,9,0,127,231,1,0,127,215,16,0,127,239,5,0,57,135, -58,0,95,135,18,0,95,199,19,0,251,47,32,0,31,80,66,6,255,240, -230,86,33,6,62,12,130,0,97,0,140,7,225,48,6,224,59,6,20,8, -133,0,0,234,181,61,29,72,193,74,47,6,164,29,148,0,207,73,2,114, -253,102,48,0,43,6,16,129,133,0,203,97,44,87,17,0,44,71,9,0, -44,63,5,0,44,55,1,0,73,119,1,0,73,7,0,0,99,87,1,0, -44,143,21,0,99,143,5,0,44,135,25,0,99,135,9,0,44,127,29,0, -99,127,13,0,44,119,33,0,99,119,17,0,44,111,37,0,99,111,21,0, -128,255,112,17,224,81,242,5,27,48,32,62,165,1,0,66,190,255,102,170, -65,234,105,234,209,197,0,234,229,21,29,88,195,90,49,6,52,10,133,0, -209,89,43,55,1,0,43,63,5,0,128,255,246,16,224,81,242,5,27,48, -32,62,177,1,0,66,190,255,52,170,65,234,98,234,161,237,0,234,229,37, -253,118,28,0,45,6,68,10,133,0,205,113,46,103,17,0,46,79,13,0, -46,71,9,0,46,63,5,0,46,55,1,0,99,103,1,0,46,95,21,0, -99,95,5,0,46,87,25,0,99,87,9,0,128,255,44,17,224,81,242,5, -27,48,32,62,194,1,0,66,190,255,226,169,65,234,99,234,161,221,0,210, -133,37,26,232,196,234,46,6,152,10,133,0,206,233,61,111,13,0,61,71, -9,0,61,63,5,0,61,55,1,0,99,111,1,0,28,72,128,255,164,16, -61,103,13,0,204,225,224,81,242,5,27,48,32,62,227,1,0,66,190,255, -156,169,65,210,103,210,129,229,0,210,133,37,26,232,196,234,48,6,8,11, -133,0,208,233,61,127,13,0,61,71,9,0,61,63,5,0,61,55,1,0, -99,127,1,0,28,72,190,255,188,185,61,119,13,0,206,225,224,81,242,5, -27,48,32,62,4,2,0,66,190,255,86,169,65,210,97,210,129,229,38,6, -128,29,148,0,39,6,36,8,133,0,0,66,191,255,240,18,100,7,117,140, -76,6,255,48,132,7,97,0,36,143,169,172,65,138,100,143,169,172,191,255, -0,236,36,239,169,172,128,255,112,38,224,81,242,5,32,54,72,180,4,58, -0,66,128,255,60,80,29,120,5,114,238,127,194,130,224,129,186,37,229,87, -64,0,224,7,96,1,36,23,165,172,10,248,70,18,43,6,128,58,9,0, -235,23,194,106,100,111,165,172,255,47,32,0,6,50,128,255,228,34,97,82, -218,13,2,18,99,23,5,0,99,7,1,0,3,56,38,6,44,137,145,0, -0,66,190,255,200,197,32,134,255,0,240,239,194,82,224,81,138,29,196,239, -144,140,178,21,196,231,144,140,130,21,36,127,173,172,224,121,130,13,32,54, -236,176,128,62,16,128,0,66,128,255,190,79,32,54,0,1,191,255,140,186, -128,255,92,15,68,6,127,0,128,7,225,0,36,143,117,140,128,134,216,214, -74,138,100,143,117,140,240,137,195,5,8,122,68,127,113,140,36,103,117,140, -32,94,232,3,235,103,194,114,224,113,218,5,37,54,128,131,190,255,192,176, -4,23,113,140,60,6,16,129,133,0,99,18,233,5,97,18,193,29,194,53, -128,7,136,1,102,18,169,13,100,18,185,5,128,7,182,1,186,5,128,7, -220,1,128,7,246,1,103,18,185,5,128,7,196,2,186,5,128,7,214,2, -104,18,186,5,128,7,212,2,128,7,228,2,36,63,33,175,38,6,156,8, -133,0,190,255,106,176,38,6,48,8,133,0,190,255,96,176,100,7,105,140, -100,7,109,140,1,82,68,87,113,140,32,142,32,78,100,143,121,140,128,7, -178,2,36,135,105,140,105,130,150,13,38,6,112,8,133,0,32,62,241,2, -0,66,190,255,184,167,36,55,105,140,128,255,150,2,224,81,194,5,1,114, -100,119,109,140,36,23,105,140,43,6,164,29,148,0,2,232,193,234,203,233, -29,87,1,0,97,82,209,5,178,61,98,82,226,45,213,93,226,22,48,0, -220,17,34,63,5,0,194,199,44,0,170,29,38,6,80,8,133,0,190,255, -226,175,36,127,104,140,1,98,239,118,48,0,93,103,0,0,14,104,220,105, -45,231,41,0,1,90,93,95,1,0,29,48,63,6,120,115,1,0,124,0, -149,69,38,6,172,8,133,0,190,255,176,175,36,87,105,140,65,82,100,87, -105,140,229,53,38,6,200,8,133,0,190,255,154,175,36,143,105,140,65,138, -100,143,105,140,181,45,36,127,117,140,36,135,121,140,240,121,211,37,245,21, -2,48,1,58,128,255,168,2,36,111,105,140,13,22,1,0,100,23,105,140, -105,18,190,13,226,94,48,0,220,89,43,63,5,0,38,6,128,8,133,0, -190,255,84,175,36,23,105,140,105,18,246,229,1,138,100,143,109,140,229,5, -36,135,105,140,65,130,100,135,105,140,36,127,105,140,105,122,178,5,128,7, -154,1,2,114,68,119,113,140,128,7,144,1,36,111,117,140,36,103,109,140, -13,110,48,117,100,111,121,140,224,97,242,5,191,255,240,248,128,255,124,13, -64,7,52,177,0,234,29,48,1,58,128,255,12,3,65,234,105,234,166,253, -3,82,68,87,113,140,128,7,86,1,191,255,32,233,224,81,234,5,4,138, -68,143,113,140,128,7,68,1,36,127,117,140,36,135,121,140,240,121,187,5, -128,7,52,1,8,114,68,119,113,140,128,7,42,1,0,234,29,48,2,58, -128,255,198,2,65,234,105,234,166,253,5,98,68,103,113,140,100,7,105,140, -128,7,12,1,36,95,105,140,105,90,150,13,38,6,112,8,133,0,32,62, -159,3,0,66,190,255,18,166,36,23,105,140,48,6,164,29,148,0,2,232, -226,22,48,0,193,234,220,17,34,111,45,0,208,233,205,110,3,0,242,61, -29,87,1,0,97,82,209,5,162,45,98,82,210,29,149,53,34,63,5,0, -38,6,80,8,133,0,190,255,74,174,36,103,104,140,1,138,236,94,48,0, -93,143,0,0,11,80,220,81,42,231,41,0,1,130,93,135,1,0,29,48, -63,6,16,117,1,0,124,0,149,37,38,6,200,8,133,0,190,255,24,174, -36,127,105,140,65,122,100,127,105,140,229,21,36,111,117,140,36,119,121,140, -238,105,131,21,8,98,68,103,113,140,197,13,36,95,105,140,65,90,100,95, -105,140,229,5,36,87,105,140,65,82,100,87,105,140,36,143,105,140,105,138, -170,37,4,135,113,140,104,130,226,29,7,122,68,127,113,140,165,29,191,255, -0,232,224,81,218,5,7,114,68,119,113,140,165,21,8,106,68,111,113,140, -229,13,190,255,92,238,181,13,38,6,96,8,133,0,190,255,162,173,0,50, -128,255,192,11,190,255,70,238,64,6,255,0,128,7,225,0,0,226,230,134, -48,0,46,6,16,129,133,0,206,129,48,239,1,0,61,103,109,0,45,6, -128,29,148,0,237,97,218,69,61,63,41,0,38,6,212,8,133,0,190,255, -98,173,29,48,128,255,232,11,224,81,146,13,38,6,240,8,133,0,32,62, -60,4,0,66,190,255,210,164,29,48,128,255,214,11,224,81,146,13,38,6, -240,8,133,0,32,62,63,4,0,66,190,255,184,164,38,6,0,9,133,0, -190,255,36,173,1,226,29,48,128,255,136,11,0,18,226,86,48,0,48,6, -16,129,133,0,208,81,42,127,1,0,239,233,218,13,2,90,2,112,193,114, -44,6,164,29,148,0,204,113,78,95,0,0,3,82,78,87,1,0,65,18, -105,18,134,237,61,239,141,0,49,6,176,134,133,0,241,233,250,173,28,80, -64,6,255,0,128,7,225,112,6,232,7,208,59,6,12,9,133,0,104,234, -186,45,253,134,48,0,46,6,16,129,133,0,206,129,48,231,1,0,60,231, -141,0,57,6,176,134,133,0,249,225,162,29,28,48,128,255,10,11,28,48, -128,255,36,11,224,81,242,5,27,48,32,62,135,4,0,66,190,255,18,164, -28,48,128,255,22,11,224,81,242,5,27,48,32,62,138,4,0,66,190,255, -252,163,249,225,250,221,253,230,48,0,43,6,16,129,133,0,203,225,60,143, -45,0,81,209,234,45,38,6,28,9,133,0,190,255,80,172,60,55,1,0, -128,255,180,10,60,55,1,0,128,255,204,10,224,81,242,5,27,48,32,62, -156,4,0,66,190,255,186,163,60,55,1,0,128,255,188,10,224,81,242,5, -27,48,32,62,159,4,0,66,190,255,162,163,2,106,193,234,46,6,164,29, -148,0,206,233,93,111,0,0,3,98,93,103,1,0,229,5,38,6,40,9, -133,0,190,255,246,171,64,6,255,112,140,7,225,16,230,238,48,0,47,6, -16,129,133,0,207,233,61,111,45,0,77,57,210,69,6,224,193,226,42,6, -164,29,148,0,202,225,28,216,27,143,1,0,224,137,162,61,61,63,5,0, -38,6,68,9,133,0,190,255,182,171,61,135,17,0,61,71,9,0,61,63, -5,0,61,55,1,0,91,7,1,0,91,7,0,0,99,135,1,0,61,127, -21,0,99,127,5,0,61,119,25,0,99,119,9,0,61,111,29,0,99,111, -13,0,61,103,33,0,1,90,99,95,21,0,99,103,17,0,28,72,128,255, -242,9,224,81,146,13,38,6,52,9,133,0,32,62,231,4,0,66,190,255, -228,162,37,54,132,131,190,255,82,171,76,6,255,16,132,7,97,0,6,232, -93,7,1,0,213,21,35,78,4,0,31,138,99,143,1,0,32,54,236,176, -32,62,8,2,1,66,128,255,224,72,35,127,5,0,138,122,217,5,4,55, -48,140,128,255,214,9,29,111,0,0,224,105,146,237,2,98,93,103,1,0, -68,6,127,0,128,7,33,0,128,255,10,9,64,6,63,0,128,7,33,0, -68,7,113,140,100,7,117,140,38,6,148,24,148,0,128,255,154,9,224,81, -162,13,38,6,88,9,133,0,32,62,63,5,0,66,190,255,92,162,224,81, -64,6,63,0,130,7,97,0,6,232,93,7,1,0,213,13,3,56,32,54, -104,180,31,66,128,255,8,9,35,55,1,0,224,49,178,5,190,255,204,190, -29,143,0,0,224,137,146,245,2,130,93,135,1,0,66,6,127,0,130,7, -97,0,99,7,1,0,3,56,6,232,32,54,104,180,0,66,190,255,22,191, -29,87,1,0,66,6,127,0,132,7,97,0,6,232,93,7,1,0,149,29, -35,78,4,0,31,138,99,143,1,0,32,54,236,176,32,62,8,4,1,66, -128,255,10,72,35,127,5,0,139,122,153,13,32,54,60,0,128,255,104,8, -128,255,140,8,224,81,218,253,29,119,0,0,224,113,210,229,2,106,93,111, -1,0,68,6,127,0,128,7,33,0,128,255,44,8,64,6,63,0,132,7, -97,0,6,232,93,7,1,0,213,21,35,78,4,0,31,138,99,143,1,0, -32,54,236,176,32,62,8,8,1,66,128,255,176,71,35,127,5,0,140,122, -217,5,128,255,74,8,224,81,218,253,29,119,0,0,224,113,146,237,2,106, -93,111,1,0,68,6,127,0,128,7,33,0,128,255,218,7,64,6,63,0, -136,7,225,0,6,232,93,7,1,0,31,50,190,255,38,234,32,143,13,177, -224,137,138,53,64,86,0,0,43,6,96,0,0,0,74,95,8,240,133,45, -35,78,4,0,99,7,1,0,32,54,72,180,14,58,1,66,128,255,70,71, -224,81,218,13,35,127,5,0,130,122,185,5,190,255,20,233,35,111,5,0, -131,106,185,5,128,255,108,26,4,103,80,139,224,97,202,13,51,6,1,0, -32,0,211,247,0,0,194,5,190,255,84,211,181,5,128,255,54,69,29,95, -0,0,224,89,226,213,190,255,206,233,128,255,10,26,128,54,255,255,128,255, -212,26,2,226,99,231,13,0,99,7,9,0,35,62,8,0,38,6,44,137, -145,0,0,66,190,255,186,189,93,231,1,0,72,6,255,0,128,7,97,0, -6,232,32,54,72,180,8,58,0,66,128,255,196,71,29,87,1,0,64,6, -127,0,154,7,225,16,99,7,20,0,99,7,26,0,32,134,17,0,99,135, -29,0,35,126,32,0,99,127,9,0,99,7,17,0,99,7,13,0,6,216, -91,7,1,0,149,77,3,56,38,6,216,215,255,255,31,66,128,255,28,7, -35,55,1,0,224,49,226,61,191,255,198,196,99,87,5,0,35,239,1,0, -0,226,157,79,5,0,99,79,22,0,29,48,0,58,35,70,32,0,190,255, -94,174,97,82,146,13,38,6,104,9,133,0,32,62,14,7,0,66,190,255, -20,160,12,50,12,58,35,70,4,0,190,255,106,144,61,239,13,0,65,226, -224,233,170,229,35,239,5,0,229,87,64,0,224,7,96,1,61,255,0,0, -220,249,125,255,0,0,10,224,252,47,32,0,224,249,138,13,29,48,61,111, -5,0,63,6,238,122,1,0,109,0,27,103,0,0,224,97,210,181,2,90, -91,95,1,0,90,6,255,16,130,7,97,0,99,7,1,0,3,56,6,232, -38,6,216,215,255,255,0,66,190,255,178,188,29,87,1,0,66,6,127,0, -136,7,225,0,6,224,4,239,80,139,128,255,58,6,10,16,224,17,178,29, -2,6,192,253,138,13,32,54,56,0,37,62,136,131,191,255,24,60,149,21, -2,6,237,207,138,13,32,54,36,0,37,62,136,131,191,255,4,60,245,5, -32,54,55,0,37,62,136,131,191,255,246,59,128,255,244,5,196,223,144,140, -234,13,97,234,170,13,38,6,156,9,133,0,190,255,180,167,32,54,200,0, -191,255,68,176,128,255,76,6,0,50,191,255,34,176,36,111,101,134,224,105, -130,13,32,102,0,16,50,6,20,0,32,0,114,103,0,0,36,158,145,140, -211,199,0,0,250,5,32,54,63,0,37,62,136,131,191,255,160,59,99,234, -154,13,36,71,141,140,1,50,39,6,120,9,133,0,191,255,140,59,0,234, -165,29,253,22,48,0,48,6,16,129,133,0,208,17,34,127,37,0,224,121, -250,13,34,55,1,0,128,255,14,6,224,81,146,13,38,6,140,9,133,0, -32,62,187,7,0,66,190,255,184,158,65,234,105,234,225,229,92,7,1,0, -165,117,35,78,4,0,31,106,99,111,1,0,32,54,236,176,39,6,56,128, -3,0,1,66,128,255,190,68,35,95,5,0,134,90,233,45,35,62,8,0, -38,6,188,136,145,0,0,66,128,255,68,5,10,232,224,233,154,37,3,23, -12,0,97,18,202,21,35,87,9,0,224,81,146,29,42,23,241,11,3,58, -72,18,34,95,0,0,63,6,118,124,1,0,202,89,34,87,5,0,11,48, -106,0,165,13,38,6,140,9,133,0,32,62,244,7,0,66,190,255,54,158, -224,81,224,233,194,213,35,135,5,0,133,130,201,5,0,50,191,255,32,175, -35,119,5,0,144,114,185,5,128,255,40,5,35,103,5,0,145,98,217,29, -35,62,8,0,38,6,244,136,145,0,0,66,128,255,200,4,224,81,186,21, -35,55,9,0,128,255,20,5,35,55,13,0,224,49,194,5,31,58,191,255, -6,194,32,54,236,176,64,62,1,0,0,66,128,255,6,69,35,143,5,0, -146,138,185,5,128,255,110,22,28,127,0,0,224,121,194,141,2,114,92,119, -1,0,72,6,255,0,128,7,33,0,128,255,48,4,64,6,63,0,140,7, -225,240,6,208,90,7,1,0,128,7,128,1,35,78,4,0,31,138,99,143, -1,0,32,54,236,176,32,62,72,0,1,66,128,255,178,67,35,23,5,0, -194,134,64,0,186,5,128,7,90,1,132,18,185,5,128,7,82,1,99,7, -9,0,0,234,35,78,8,0,32,118,100,0,99,119,1,0,32,54,236,176, -32,62,72,0,0,66,128,255,124,67,224,81,210,5,65,234,29,6,196,255, -230,237,35,103,9,0,204,110,72,0,178,5,128,7,24,1,0,234,38,6, -132,215,255,255,31,58,128,255,80,72,224,81,154,253,0,18,29,6,240,255, -129,13,253,142,40,0,32,126,160,180,207,137,49,23,17,0,99,7,13,0, -0,194,2,216,224,217,226,45,59,23,105,0,35,62,12,0,2,22,64,1, -34,87,0,0,34,119,5,0,219,81,10,48,63,6,220,125,1,0,110,0, -10,192,31,202,0,226,59,23,105,0,28,64,2,22,136,0,34,87,0,0, -35,54,16,0,219,81,10,56,34,111,5,0,63,6,4,126,1,0,109,0, -195,207,16,0,178,5,28,200,213,5,65,226,28,6,240,255,246,229,38,6, -132,215,255,255,128,255,248,72,224,81,146,13,38,6,196,9,133,0,32,62, -6,1,0,66,190,255,138,156,224,193,186,45,35,103,13,0,97,98,250,37, -29,48,35,62,20,0,128,255,2,29,224,81,154,29,29,48,25,56,128,255, -140,46,10,224,28,6,218,254,226,13,28,6,220,254,178,13,28,6,221,254, -130,13,32,54,236,176,32,62,64,0,0,66,128,255,118,67,224,225,242,13, -133,13,32,54,236,176,32,62,64,0,0,66,128,255,98,67,65,234,29,6, -240,255,190,5,191,7,246,254,128,255,42,0,26,127,0,0,224,121,186,5, -191,7,124,254,191,255,40,173,2,114,90,119,1,0,76,6,255,240,128,7, -33,0,128,255,128,2,64,6,63,0,132,7,225,243,38,6,132,215,255,255, -31,58,128,255,20,71,224,81,154,253,0,234,0,18,29,6,240,255,129,13, -253,118,40,0,32,102,160,180,204,113,46,23,17,0,2,80,224,81,210,101, -138,95,7,0,109,90,154,101,42,23,105,0,2,22,24,0,34,95,0,0, -63,6,24,127,1,0,202,89,34,87,5,0,11,48,106,0,10,176,11,184, -0,226,0,18,28,6,240,255,129,13,252,118,40,0,32,102,160,180,204,113, -46,23,17,0,2,208,224,209,226,61,22,192,23,200,28,48,128,255,52,2, -224,81,202,21,0,202,0,218,27,48,191,255,98,173,253,81,186,5,27,200, -213,5,65,218,27,6,240,255,230,245,25,48,191,255,124,172,10,198,0,248, -0,202,58,23,105,0,3,56,2,22,224,0,34,87,0,0,34,95,5,0, -218,81,10,48,63,6,140,127,1,0,107,0,224,81,186,21,35,95,5,0, -35,87,1,0,235,201,219,13,177,5,234,193,169,13,29,64,28,72,32,54, -50,0,39,6,208,9,133,0,191,255,170,55,65,226,28,6,240,255,166,181, -65,234,29,6,240,255,182,141,38,6,132,215,255,255,128,255,74,71,224,81, -162,13,38,6,236,9,133,0,32,62,6,1,0,66,190,255,220,154,224,81, -68,6,255,243,136,7,225,48,6,208,90,7,1,0,128,7,12,1,99,7, -9,0,35,62,8,0,38,6,44,137,145,0,31,66,128,255,126,1,35,23, -13,0,97,18,242,117,196,239,144,140,210,109,0,234,29,48,128,255,96,21, -224,81,178,101,29,48,3,56,128,255,200,29,10,224,28,6,251,253,162,37, -35,135,1,0,224,129,226,29,32,54,100,0,191,255,136,171,29,48,35,62, -4,0,128,255,254,26,10,224,28,6,254,239,242,5,35,87,5,0,35,23, -1,0,234,17,242,5,29,48,128,255,218,20,32,230,2,16,213,5,234,17, -186,5,32,230,5,2,28,6,251,253,234,37,35,63,1,0,29,48,128,255, -88,9,224,81,218,5,29,48,128,255,178,20,181,29,0,226,0,218,1,106, -35,95,1,0,251,111,192,0,77,89,194,13,27,48,1,58,128,255,44,15, -10,224,27,56,38,6,8,10,133,0,190,255,122,162,224,225,218,5,65,218, -27,6,240,255,150,237,224,225,138,21,29,48,128,255,86,21,224,81,186,13, -29,56,38,6,248,9,133,0,190,255,84,162,29,48,31,58,191,255,168,3, -65,234,29,6,240,255,230,149,35,55,9,0,224,49,194,5,31,58,191,255, -226,189,26,127,0,0,224,121,186,5,191,7,240,254,2,114,90,119,1,0, -72,6,255,48,132,7,97,0,1,18,99,23,5,0,99,7,1,0,3,56, -6,232,38,6,44,137,145,0,0,66,190,255,152,182,29,87,1,0,68,6, -127,0,128,7,97,0,6,232,32,54,236,176,8,58,0,66,128,255,162,64, -29,87,1,0,64,6,127,0,33,6,144,177,129,0,97,0,33,6,120,9, -128,0,97,0,33,6,116,12,128,0,97,0,33,6,206,4,130,0,97,0, -33,6,218,122,128,0,97,0,33,6,168,218,128,0,97,0,33,6,236,0, -130,0,97,0,33,6,246,218,128,0,97,0,33,6,24,250,128,0,97,0, -33,6,160,40,129,0,97,0,33,6,106,41,129,0,97,0,33,6,116,252, -129,0,97,0,33,6,224,241,129,0,97,0,33,6,216,247,129,0,97,0, -33,6,208,245,129,0,97,0,33,6,114,142,129,0,97,0,33,6,198,158, -129,0,97,0,33,6,58,160,129,0,97,0,33,6,76,249,129,0,97,0, -33,6,184,180,129,0,97,0,33,6,196,248,129,0,97,0,33,6,116,241, -129,0,97,0,144,7,225,112,0,234,6,200,0,58,128,255,58,1,59,6, -132,215,255,255,58,6,24,11,133,0,0,226,128,7,22,1,1,130,67,135, -3,0,27,48,31,58,128,255,180,67,224,81,186,253,57,127,17,0,224,121, -218,21,32,238,10,1,163,119,3,0,224,113,210,125,67,7,3,0,27,48, -128,255,196,68,224,81,226,117,26,48,32,62,6,1,0,66,190,255,90,152, -245,109,99,7,13,0,99,7,17,0,99,7,22,0,191,255,92,189,106,7, -9,0,45,6,36,64,1,0,106,111,5,0,32,102,232,3,106,7,29,0, -8,18,106,7,33,0,224,225,99,87,5,0,106,103,21,0,170,5,0,18, -99,23,26,0,57,95,17,0,43,23,105,0,35,62,4,0,2,22,144,0, -34,87,0,0,63,6,200,130,1,0,203,81,34,95,5,0,10,48,107,0, -10,232,163,87,3,0,224,81,226,13,67,7,3,0,27,48,128,255,60,68, -224,81,242,5,26,48,32,62,6,1,0,66,190,255,210,151,35,55,5,0, -29,56,191,255,234,187,35,23,5,0,2,80,42,135,0,0,224,129,218,253, -34,239,12,0,98,7,0,0,2,48,128,255,172,75,163,127,3,0,224,121, -226,13,67,7,3,0,27,48,128,255,244,67,224,81,242,5,26,48,32,62, -6,1,0,66,190,255,138,151,65,226,98,226,222,5,224,233,186,5,191,7, -230,254,29,80,80,6,255,112,128,7,33,0,38,55,13,0,167,0,190,255, -116,176,64,6,63,0,142,7,225,16,6,216,61,6,132,215,255,255,29,48, -31,58,128,255,120,66,224,81,186,253,59,143,17,0,32,230,10,1,224,137, -146,77,191,255,80,188,106,7,9,0,48,6,36,64,1,0,106,135,5,0, -32,126,232,3,106,7,29,0,3,56,106,7,33,0,63,6,202,131,1,0, -59,95,17,0,106,127,21,0,43,23,105,0,202,47,2,0,99,87,1,0, -2,22,168,0,34,87,0,0,34,119,5,0,203,81,10,48,110,0,10,224, -29,48,128,255,70,67,224,81,146,13,38,6,36,11,133,0,32,62,6,1, -0,66,190,255,216,150,35,55,1,0,28,56,191,255,240,186,35,23,1,0, -2,80,42,111,0,0,224,105,218,253,34,231,12,0,98,7,0,0,2,48, -128,255,178,74,229,13,29,48,128,255,4,67,224,81,146,13,38,6,36,11, -133,0,32,62,6,1,0,66,190,255,150,150,28,80,78,6,255,16,132,7, -225,48,6,224,61,6,132,215,255,255,1,138,67,143,1,0,29,48,31,58, -128,255,158,65,224,81,186,253,60,87,17,0,59,6,24,11,133,0,224,81, -218,21,163,135,1,0,224,129,226,13,67,7,1,0,29,48,128,255,172,66, -224,81,242,5,27,48,32,62,6,1,0,66,190,255,66,150,32,86,10,1, -229,85,42,23,105,0,63,6,158,132,1,0,2,22,80,0,34,95,0,0, -34,127,5,0,202,89,11,48,111,0,10,208,163,119,1,0,224,113,226,13, -67,7,1,0,29,48,128,255,102,66,224,81,242,5,27,48,32,62,6,1, -0,66,190,255,252,149,224,209,210,29,28,56,35,54,2,0,128,255,72,1, -227,55,3,0,35,62,4,0,32,70,241,0,128,255,108,19,28,56,35,54, -2,0,128,255,10,2,227,55,3,0,35,62,4,0,32,70,246,0,128,255, -82,19,10,16,213,5,28,48,128,255,48,0,10,16,2,224,163,95,1,0, -224,89,226,13,67,7,1,0,29,48,128,255,254,65,224,81,242,5,27,48, -32,62,6,1,0,66,190,255,148,149,28,80,68,6,255,48,132,7,225,0, -32,238,10,1,6,224,28,56,35,54,2,0,128,255,36,0,60,143,17,0, -224,137,162,13,227,55,3,0,35,62,4,0,32,70,246,0,128,255,240,18, -10,232,29,80,68,6,255,0,134,7,225,16,6,224,7,216,1,138,67,143, -3,0,38,6,132,215,255,255,31,58,128,255,104,64,224,81,154,253,59,135, -17,0,99,7,6,0,224,129,194,37,0,234,59,95,17,0,29,64,43,23, -105,0,35,54,8,0,2,22,136,0,34,87,0,0,34,127,5,0,203,81, -10,56,63,6,182,133,1,0,111,0,195,199,8,0,146,13,1,114,253,119, -192,0,227,103,7,0,14,97,99,103,6,0,65,234,29,6,240,255,246,221, -227,95,7,0,99,95,4,0,163,87,3,0,224,81,162,21,67,7,3,0, -38,6,132,215,255,255,128,255,38,65,224,81,146,13,38,6,24,11,133,0, -32,62,6,1,0,66,190,255,184,148,227,143,5,0,124,143,0,0,28,80, -70,6,255,16,136,7,225,16,6,216,7,224,1,138,67,143,3,0,38,6, -132,215,255,255,31,58,128,255,184,63,224,81,154,253,60,135,17,0,99,7, -6,0,224,129,162,61,0,234,60,95,17,0,29,64,43,23,105,0,35,54, -8,0,2,22,136,0,34,87,0,0,34,127,5,0,203,81,10,56,63,6, -102,134,1,0,111,0,195,199,8,0,242,29,60,95,17,0,29,64,43,23, -105,0,35,54,12,0,2,22,136,0,34,87,0,0,34,119,5,0,203,81, -10,56,63,6,146,134,1,0,110,0,195,207,12,0,154,13,1,106,253,111, -192,0,227,95,7,0,13,89,99,95,6,0,65,234,29,6,240,255,150,205, -227,87,7,0,99,87,4,0,163,143,3,0,224,137,162,21,67,7,3,0, -38,6,132,215,255,255,128,255,74,64,224,81,146,13,38,6,24,11,133,0, -32,62,6,1,0,66,190,255,220,147,227,135,5,0,123,135,0,0,27,80, -72,6,255,16,136,7,225,16,6,216,7,224,1,138,67,143,3,0,38,6, -132,215,255,255,31,58,128,255,220,62,224,81,154,253,60,135,17,0,99,7, -6,0,224,129,162,61,0,234,60,95,17,0,29,64,43,23,105,0,35,54, -8,0,2,22,136,0,34,87,0,0,34,127,5,0,203,81,10,56,63,6, -66,135,1,0,111,0,195,199,8,0,242,29,60,95,17,0,29,64,43,23, -105,0,35,54,12,0,2,22,136,0,34,87,0,0,34,119,5,0,203,81, -10,56,63,6,110,135,1,0,110,0,195,207,12,0,146,13,1,106,253,111, -192,0,227,95,7,0,13,89,99,95,6,0,65,234,29,6,240,255,150,205, -227,87,7,0,99,87,4,0,163,143,3,0,224,137,162,21,67,7,3,0, -38,6,132,215,255,255,128,255,110,63,224,81,146,13,38,6,24,11,133,0, -32,62,6,1,0,66,190,255,0,147,227,135,5,0,123,135,0,0,27,80, -72,6,255,16,134,7,225,16,6,216,59,143,17,0,224,137,186,5,31,82, -197,69,0,226,1,130,67,135,3,0,38,6,132,215,255,255,31,58,128,255, -244,61,224,81,154,253,0,234,59,95,17,0,29,64,43,23,105,0,35,54, -8,0,2,22,136,0,34,87,0,0,34,127,5,0,203,81,10,56,63,6, -30,136,1,0,111,0,35,119,9,0,99,119,5,0,195,199,4,0,162,5, -65,226,65,234,29,6,240,255,166,229,28,232,163,111,3,0,224,105,162,21, -67,7,3,0,38,6,132,215,255,255,128,255,202,62,224,81,146,13,38,6, -24,11,133,0,32,62,6,1,0,66,190,255,92,146,29,80,70,6,255,16, -132,7,225,48,7,232,189,0,6,216,59,143,17,0,8,208,224,137,202,5, -32,238,10,1,213,29,32,231,37,183,0,58,28,48,3,64,190,255,74,219, -59,55,17,0,29,56,26,64,190,255,198,234,10,232,28,48,35,63,1,0, -35,70,4,0,190,255,46,219,32,54,236,176,64,62,2,0,0,66,128,255, -52,57,29,80,68,6,255,48,128,7,225,0,102,7,29,0,102,7,17,0, -102,7,21,0,102,7,25,0,7,224,70,231,34,0,70,7,35,0,70,7, -36,0,30,130,102,135,32,0,6,232,191,255,220,226,0,18,28,6,240,255, -241,5,252,22,120,4,44,6,184,29,148,0,204,17,125,23,13,0,64,6, -255,0,128,7,97,0,128,255,108,26,0,234,253,54,40,0,32,118,160,180, -206,49,29,56,191,255,160,255,253,54,120,4,42,6,184,29,148,0,202,49, -29,56,190,255,76,162,65,234,29,6,240,255,198,237,100,7,130,140,32,142, -40,0,100,143,128,140,1,50,190,255,22,156,100,87,133,140,64,6,127,0, -130,7,225,0,6,232,1,226,38,6,132,215,255,255,31,58,128,255,122,60, -224,81,154,253,0,18,29,6,240,255,129,13,253,126,40,0,32,110,160,180, -205,121,47,23,17,0,2,80,224,81,210,21,42,23,105,0,3,48,2,22, -136,0,34,95,0,0,31,66,202,89,11,56,34,103,5,0,63,6,172,137, -1,0,108,0,195,199,0,0,162,5,0,226,38,6,132,215,255,255,128,255, -90,61,224,81,146,13,38,6,48,11,133,0,32,62,6,1,0,66,190,255, -236,144,28,80,66,6,255,0,128,7,128,7,225,48,6,232,7,208,1,226, -229,87,64,0,224,7,96,1,10,216,0,18,29,6,240,255,129,13,253,126, -40,0,32,110,160,180,205,121,47,23,17,0,2,80,224,81,146,21,42,23, -105,0,26,56,2,22,104,0,34,95,0,0,34,103,5,0,202,89,11,48, -63,6,40,138,1,0,108,0,10,224,251,47,32,0,28,80,64,6,255,48, -132,7,225,48,6,224,7,208,0,234,229,87,64,0,224,7,96,1,10,216, -0,18,28,6,240,255,129,13,252,126,40,0,32,110,160,180,205,121,47,23, -17,0,2,80,224,81,194,29,42,23,105,0,26,64,2,22,136,0,34,95, -0,0,35,54,4,0,202,89,11,56,34,103,5,0,63,6,134,138,1,0, -108,0,35,95,5,0,99,95,1,0,195,199,0,0,194,5,11,232,222,234, -159,234,251,47,32,0,29,80,68,6,255,48,128,7,193,16,6,224,0,234, -229,87,64,0,224,7,96,1,10,216,0,18,28,6,240,255,129,13,252,126, -40,0,32,110,160,180,205,121,47,23,17,0,224,17,194,13,252,94,40,0, -32,142,160,180,209,89,43,239,13,0,29,239,2,0,221,234,159,234,251,47, -32,0,29,80,64,6,223,16,128,7,225,48,6,232,7,208,154,0,38,6, -132,215,255,255,31,58,128,255,224,58,224,81,154,253,31,226,29,48,190,255, -94,226,10,232,224,233,250,5,38,6,72,11,133,0,190,255,18,152,149,29, -32,54,88,1,190,255,76,249,10,216,29,48,27,56,128,255,252,39,157,143, -7,0,111,138,186,5,123,7,5,0,29,48,27,56,26,64,128,255,90,21, -10,224,27,48,190,255,20,249,38,6,132,215,255,255,128,255,186,59,224,81, -146,13,38,6,128,11,133,0,32,62,6,1,0,66,190,255,76,143,224,233, -162,13,127,226,130,13,252,54,40,0,32,102,160,180,204,49,191,255,170,248, -28,80,64,6,255,48,128,7,225,112,6,224,7,208,8,200,153,0,38,6, -132,215,255,255,31,58,128,255,64,58,224,81,154,253,31,234,28,48,190,255, -190,225,10,224,224,225,250,5,38,6,140,11,133,0,190,255,114,151,181,45, -28,143,7,0,224,137,154,37,32,54,88,1,190,255,164,248,10,216,27,48, -26,56,32,70,88,1,191,255,164,131,32,134,21,0,123,135,1,0,26,232, -26,48,128,255,34,26,127,82,170,5,27,232,28,48,29,56,25,64,128,255, -164,20,10,232,27,48,190,255,94,248,245,5,28,48,26,56,25,64,128,255, -144,20,10,232,38,6,132,215,255,255,128,255,246,58,224,81,146,13,38,6, -200,11,133,0,32,62,6,1,0,66,190,255,136,142,224,225,162,13,127,234, -130,13,253,54,40,0,32,86,160,180,202,49,191,255,230,247,29,80,64,6, -255,112,128,7,225,0,6,6,240,255,201,5,32,86,10,1,197,53,230,238, -40,0,32,110,160,180,205,233,61,23,17,0,224,17,202,5,32,86,10,1, -133,45,2,224,39,23,105,0,125,63,17,0,2,22,24,0,34,87,0,0, -34,103,5,0,199,81,10,48,63,6,156,140,1,0,108,0,125,87,21,0, -125,95,25,0,224,225,130,21,60,23,105,0,3,58,2,22,80,1,34,87, -0,0,34,95,5,0,220,81,10,48,63,6,198,140,1,0,107,0,0,82, -64,6,255,0,130,7,225,112,6,224,58,6,132,215,255,255,1,130,67,135, -3,0,26,48,31,58,128,255,0,57,224,81,186,253,0,18,28,6,240,255, -129,13,252,110,40,0,32,94,160,180,203,105,45,23,17,0,2,216,224,217, -186,29,28,56,38,6,224,11,133,0,190,255,34,150,163,87,3,0,224,81, -210,101,67,7,3,0,26,48,128,255,244,57,224,81,226,93,38,6,24,11, -133,0,32,62,6,1,0,66,190,255,134,141,213,85,28,128,240,126,40,0, -32,118,160,180,15,232,206,233,61,95,17,0,43,23,105,0,63,6,104,141, -1,0,2,22,80,0,34,87,0,0,34,111,5,0,203,81,10,48,109,0, -224,81,194,5,37,22,152,131,181,5,37,22,148,131,2,200,61,79,25,0, -61,71,21,0,28,56,38,6,0,12,133,0,190,255,168,149,25,56,38,6, -212,11,133,0,190,255,156,149,59,23,105,0,63,6,180,141,1,0,2,22, -192,0,34,87,0,0,34,103,5,0,219,81,10,48,108,0,61,55,13,0, -190,255,90,157,163,95,3,0,224,89,130,21,67,7,3,0,26,48,128,255, -74,57,224,81,146,13,38,6,24,11,133,0,32,62,6,1,0,66,190,255, -220,140,66,6,255,112,130,7,97,0,1,138,67,143,3,0,38,6,132,215, -255,255,31,58,128,255,234,55,224,81,154,253,37,54,155,131,190,255,44,149, -0,234,253,126,40,0,32,110,160,180,205,121,47,23,17,0,224,17,130,13, -29,48,191,255,174,254,37,54,155,131,190,255,10,149,65,234,29,6,240,255, -214,237,163,103,3,0,224,97,162,21,67,7,3,0,38,6,132,215,255,255, -128,255,208,56,224,81,146,13,38,6,24,11,133,0,32,62,6,1,0,66, -190,255,98,140,66,6,127,0,128,7,225,0,7,224,128,255,44,0,10,232, -127,234,154,13,38,6,28,12,133,0,32,62,203,4,0,66,190,255,62,140, -29,48,128,255,104,22,29,48,28,56,128,255,208,21,64,6,255,0,128,7, -225,48,6,216,31,226,229,87,64,0,224,7,96,1,10,208,224,217,226,37, -0,234,253,134,40,0,32,118,160,180,206,129,48,87,17,0,234,217,186,5, -29,224,165,29,224,81,194,21,42,23,105,0,27,56,2,22,48,1,34,95, -0,0,34,111,5,0,202,89,11,48,63,6,226,142,1,0,109,0,97,82, -186,5,29,224,213,5,65,234,29,6,240,255,214,221,250,47,32,0,28,80, -64,6,255,48,130,7,225,16,6,232,1,138,67,143,3,0,38,6,132,215, -255,255,31,58,128,255,210,54,224,81,154,253,0,18,29,6,240,255,129,13, -253,118,40,0,32,102,160,180,204,113,46,23,17,0,2,224,224,225,146,61, -253,222,40,0,32,142,160,180,209,217,27,48,191,255,240,245,253,54,120,4, -45,6,184,29,148,0,205,49,29,56,190,255,44,156,27,48,29,56,191,255, -102,249,36,103,130,140,95,98,100,103,130,140,224,225,130,21,60,23,105,0, -3,58,2,22,80,1,34,87,0,0,34,95,5,0,220,81,10,48,63,6, -138,143,1,0,107,0,29,48,128,255,94,21,29,48,0,58,128,255,122,35, -29,56,38,6,44,12,133,0,190,255,144,147,163,87,3,0,224,81,162,21, -67,7,3,0,38,6,132,215,255,255,128,255,94,55,224,81,146,13,38,6, -24,11,133,0,32,62,6,1,0,66,190,255,240,138,0,82,66,6,255,16, -134,7,225,112,7,200,185,0,32,230,10,1,6,216,191,255,206,156,10,232, -127,234,186,5,128,7,10,1,58,6,132,215,255,255,1,138,67,143,3,0, -26,48,31,58,128,255,226,53,224,81,186,253,0,18,29,6,240,255,129,13, -253,118,40,0,32,102,160,180,204,113,46,23,17,0,2,80,224,81,210,45, -42,23,105,0,27,64,2,22,136,0,34,63,0,0,35,54,8,0,202,57, -34,95,5,0,63,6,68,144,1,0,107,0,35,87,9,0,253,54,40,0, -99,87,5,0,32,118,160,180,206,49,27,64,32,62,239,255,191,255,12,248, -10,224,195,207,4,0,186,13,224,225,154,13,29,64,27,72,2,50,39,6, -116,12,133,0,191,255,226,38,163,103,3,0,224,97,130,21,67,7,3,0, -26,48,128,255,138,54,224,81,146,13,38,6,24,11,133,0,32,62,6,1, -0,66,190,255,28,138,27,56,28,64,38,6,68,12,133,0,190,255,132,146, -224,225,250,13,32,54,236,176,32,62,64,0,0,66,128,255,44,49,224,201, -234,5,29,48,31,58,190,255,194,243,10,224,163,135,3,0,224,129,130,21, -67,7,3,0,26,48,128,255,54,54,224,81,146,13,38,6,24,11,133,0, -32,62,6,1,0,66,190,255,200,137,28,80,70,6,255,112,128,7,225,0, -6,224,191,255,174,155,10,232,127,234,202,5,32,86,10,1,213,45,38,6, -132,215,255,255,31,58,128,255,200,52,224,81,154,253,0,18,29,6,240,255, -129,13,253,126,40,0,32,110,160,180,205,121,47,23,17,0,2,48,32,238, -10,1,224,49,210,5,28,56,190,255,66,226,10,232,38,6,132,215,255,255, -128,255,196,53,224,81,146,13,38,6,136,12,133,0,32,62,6,1,0,66, -190,255,86,137,29,80,64,6,255,0,128,7,225,16,6,216,191,255,60,155, -10,232,127,234,202,5,32,86,10,1,213,45,38,6,132,215,255,255,31,58, -128,255,86,52,224,81,154,253,32,230,10,1,0,18,29,6,240,255,129,13, -253,126,40,0,32,110,160,180,205,121,47,23,17,0,2,48,224,49,210,5, -27,56,190,255,250,225,10,224,38,6,132,215,255,255,128,255,82,53,224,81, -146,13,38,6,148,12,133,0,32,62,6,1,0,66,190,255,228,136,28,80, -64,6,255,16,128,7,225,0,6,232,7,224,38,6,132,215,255,255,31,58, -128,255,242,51,224,81,154,253,0,18,29,6,240,255,129,13,253,126,40,0, -32,110,160,180,205,121,47,23,17,0,2,80,32,238,10,1,224,81,146,21, -42,23,105,0,28,56,2,22,160,0,34,95,0,0,34,103,5,0,202,89, -11,48,63,6,54,146,1,0,108,0,0,234,38,6,132,215,255,255,128,255, -214,52,224,81,146,13,38,6,160,12,133,0,32,62,6,1,0,66,190,255, -104,136,29,80,64,6,255,0,130,7,225,48,6,232,7,224,188,0,8,208, -29,6,240,255,201,5,32,86,10,1,229,69,59,6,132,215,255,255,1,130, -67,135,3,0,27,48,31,58,128,255,94,51,224,81,186,253,253,54,40,0, -32,102,160,180,204,49,28,56,26,64,191,255,206,245,10,224,163,87,3,0, -224,81,130,21,67,7,3,0,27,48,128,255,102,52,224,81,146,13,38,6, -24,11,133,0,32,62,6,1,0,66,190,255,248,135,224,225,234,5,29,48, -31,58,190,255,190,241,10,224,28,232,163,135,3,0,224,129,130,21,67,7, -3,0,27,48,128,255,48,52,224,81,146,13,38,6,24,11,133,0,32,62, -6,1,0,66,190,255,194,135,29,80,66,6,255,48,128,7,33,0,6,16, -0,82,2,6,240,255,129,13,226,126,40,0,32,110,160,180,205,121,47,87, -17,0,224,81,202,5,32,86,10,1,165,29,196,18,36,94,184,172,194,89, -43,71,5,0,36,142,184,172,103,71,1,0,194,137,49,127,9,0,39,54, -8,0,103,127,5,0,36,110,184,172,205,17,34,63,13,0,191,255,46,124, -0,82,64,6,63,0,132,7,97,0,1,138,99,143,5,0,31,50,190,255, -176,207,1,130,67,135,2,0,38,6,132,215,255,255,31,58,128,255,102,50, -224,81,154,253,0,234,253,118,40,0,32,110,160,180,205,113,46,103,17,0, -224,97,194,13,29,56,38,6,172,12,133,0,190,255,144,143,29,56,35,54, -3,0,190,255,4,164,65,234,29,6,240,255,150,237,131,95,3,0,224,89, -162,21,67,7,2,0,38,6,132,215,255,255,128,255,76,51,224,81,146,13, -38,6,24,11,133,0,32,62,6,1,0,66,190,255,222,134,35,87,5,0, -224,81,210,5,99,7,5,0,190,255,22,207,68,6,127,0,128,7,225,0, -0,226,0,234,253,54,40,0,32,126,160,180,207,49,38,119,17,0,224,113, -242,5,191,255,246,237,10,16,224,17,162,5,2,224,65,234,29,6,240,255, -230,237,28,80,64,6,255,0,128,7,97,0,0,234,253,54,40,0,32,126, -160,180,207,49,38,119,17,0,224,113,194,5,3,58,191,255,6,239,65,234, -29,6,240,255,150,245,0,82,64,6,127,0,132,7,33,0,191,255,156,255, -128,54,255,255,128,255,102,0,2,18,99,23,5,0,191,255,100,171,106,7, -9,0,49,6,36,64,1,0,106,143,5,0,32,134,232,3,106,7,29,0, -1,18,106,7,33,0,3,56,106,135,21,0,99,87,1,0,106,23,0,0, -38,6,44,137,145,0,31,66,190,255,38,163,197,5,10,50,191,255,32,151, -35,23,1,0,34,127,0,0,224,121,138,253,98,7,0,0,2,48,128,255, -252,57,68,6,63,0,128,7,193,16,6,216,0,234,229,87,64,0,224,7, -96,1,10,224,0,90,235,22,40,0,32,126,160,180,207,17,34,119,17,0, -224,113,242,21,34,87,32,0,224,81,134,21,219,81,98,87,32,0,228,111, -129,140,228,103,249,133,172,105,237,81,150,13,31,82,98,87,32,0,1,234, -197,5,127,82,170,5,1,234,65,90,11,6,240,255,230,221,252,47,32,0, -29,80,64,6,223,16,100,7,248,133,228,23,129,140,226,49,206,5,166,17, -100,23,248,133,127,0,128,7,193,0,6,232,229,87,64,0,224,7,96,1, -10,224,0,82,29,6,240,255,177,13,253,22,40,0,32,118,160,180,206,17, -34,111,17,0,224,105,162,5,2,80,10,16,224,17,178,5,98,7,32,0, -252,47,32,0,64,6,223,0,132,7,225,0,6,232,0,226,1,138,67,143, -3,0,38,6,132,215,255,255,31,58,128,255,80,48,224,81,154,253,0,18, -29,6,240,255,129,13,253,118,40,0,32,102,160,180,204,113,46,23,17,0, -2,80,224,81,226,29,42,23,105,0,35,62,4,0,2,22,128,0,34,55, -0,0,34,95,5,0,202,49,63,6,212,149,1,0,107,0,253,22,40,0, -32,134,160,180,35,127,5,0,208,17,224,121,226,5,34,119,32,0,127,114, -170,5,1,226,28,232,163,111,3,0,224,105,162,21,67,7,3,0,38,6, -132,215,255,255,128,255,16,49,224,81,146,13,38,6,24,11,133,0,32,62, -6,1,0,66,190,255,162,132,29,80,68,6,255,0,130,7,225,240,6,232, -56,6,132,215,255,255,1,138,67,143,3,0,24,48,31,58,128,255,170,47, -224,81,186,253,32,230,10,1,29,48,191,255,54,255,97,82,154,93,0,18, -29,6,240,255,129,13,253,118,40,0,32,102,160,180,204,113,46,23,17,0, -2,216,224,217,178,77,253,206,40,0,32,86,160,180,25,208,202,209,163,143, -3,0,224,137,130,21,67,7,3,0,24,48,128,255,144,48,224,81,146,13, -38,6,24,11,133,0,32,62,6,1,0,66,190,255,34,132,26,48,191,255, -102,235,10,224,224,225,202,45,163,127,3,0,224,121,170,13,1,114,67,119, -3,0,24,48,31,58,128,255,40,47,224,81,186,253,0,18,29,6,240,255, -225,5,32,94,160,180,203,201,57,23,17,0,226,217,170,21,59,23,105,0, -63,6,242,150,1,0,2,22,120,0,34,55,0,0,34,87,5,0,219,49, -106,0,30,138,122,143,32,0,181,5,32,230,10,1,28,232,163,135,3,0, -224,129,130,21,67,7,3,0,24,48,128,255,6,48,224,81,146,13,38,6, -24,11,133,0,32,62,6,1,0,66,190,255,152,131,29,80,66,6,255,240, -132,7,225,0,6,224,1,234,67,239,3,0,38,6,132,215,255,255,31,58, -128,255,162,46,224,81,154,253,0,18,28,6,240,255,129,13,252,118,40,0, -32,102,160,180,204,113,46,23,17,0,2,80,224,81,226,21,42,23,105,0, -35,62,4,0,2,22,128,0,34,55,0,0,34,95,5,0,202,49,63,6, -130,151,1,0,107,0,10,232,35,87,5,0,224,81,170,5,1,234,163,143, -3,0,224,137,162,21,67,7,3,0,38,6,132,215,255,255,128,255,116,47, -224,81,146,13,38,6,24,11,133,0,32,62,6,1,0,66,190,255,6,131, -29,80,68,6,255,0,128,7,97,0,0,234,253,54,40,0,32,126,160,180, -207,49,38,119,17,0,224,113,178,5,191,255,90,237,65,234,29,6,240,255, -166,245,64,6,127,0,128,7,97,0,0,234,253,54,40,0,32,126,160,180, -207,49,38,119,17,0,224,113,178,5,191,255,48,236,65,234,29,6,240,255, -166,245,64,6,127,0,0,106,0,18,226,86,40,0,32,126,160,180,207,81, -42,119,17,0,224,113,210,13,42,95,13,0,36,103,17,139,43,95,113,4, -36,87,33,175,203,97,236,81,163,5,65,106,65,18,2,6,240,255,134,237, -13,80,127,0,128,7,225,241,6,192,7,208,8,216,4,143,204,131,155,0, -224,137,202,5,0,82,128,7,2,1,191,255,108,167,106,7,9,0,48,6, -36,64,1,0,106,135,5,0,32,126,244,1,106,7,29,0,10,232,106,7, -33,0,0,186,106,127,21,0,0,226,122,7,1,0,221,47,2,0,221,55, -2,0,1,202,252,207,192,0,24,104,89,105,130,37,28,48,128,255,194,26, -224,81,226,21,28,48,128,255,192,26,224,81,210,5,27,6,15,255,218,5, -165,21,27,6,10,255,242,13,28,48,29,56,36,71,133,140,27,72,190,255, -82,123,65,186,229,5,58,143,1,0,25,137,122,143,1,0,65,226,28,6, -240,255,134,221,29,48,23,56,191,255,240,165,61,135,0,0,224,129,218,253, -61,231,12,0,58,119,1,0,253,127,19,0,15,113,122,119,1,0,125,7, -0,0,29,48,128,255,170,53,27,6,15,255,194,5,27,6,10,255,138,37, -58,87,1,0,0,234,42,88,75,193,1,18,253,23,192,0,24,128,66,129, -146,21,29,48,128,255,30,26,202,22,253,255,0,82,27,6,15,255,170,5, -2,82,10,17,194,0,29,48,2,56,128,255,12,26,65,234,29,6,240,255, -246,229,28,80,64,6,255,241,132,7,225,48,6,232,7,208,32,222,10,1, -38,6,132,215,255,255,31,58,128,255,106,44,224,81,154,253,0,18,29,6, -240,255,129,13,253,126,40,0,32,110,160,180,205,121,47,23,17,0,99,7, -6,0,2,224,224,225,146,37,0,234,60,23,105,0,29,64,2,22,136,0, -34,87,0,0,3,48,220,81,10,56,34,103,5,0,63,6,194,153,1,0, -108,0,195,199,0,0,146,13,1,90,253,95,192,0,227,143,7,0,11,137, -99,143,6,0,65,234,29,6,240,255,166,229,38,6,132,215,255,255,128,255, -46,45,224,81,146,13,38,6,212,12,133,0,32,62,6,1,0,66,190,255, -192,128,224,225,210,13,227,135,7,0,99,135,4,0,35,22,4,0,34,55, -1,0,26,56,128,255,12,0,10,216,27,80,68,6,255,48,3,30,196,255, -99,55,45,0,99,255,41,0,99,207,33,0,99,223,25,0,99,231,21,0, -99,215,29,0,99,239,17,0,99,199,37,0,7,208,0,194,191,255,134,165, -106,7,9,0,49,6,36,64,1,0,106,143,5,0,106,7,29,0,32,134, -232,3,106,7,33,0,10,224,106,135,21,0,0,234,122,7,1,0,1,202, -253,207,192,0,227,119,45,0,89,113,146,61,29,48,35,62,2,0,35,70, -3,0,191,255,46,146,3,23,3,0,224,17,170,5,10,16,2,216,187,0, -224,217,194,37,28,48,29,56,27,64,191,255,132,163,1,138,106,143,0,0, -3,130,99,135,4,0,27,126,64,0,99,127,6,0,99,7,9,0,67,7, -12,0,32,118,239,0,67,119,13,0,8,106,99,111,14,0,29,48,10,56, -35,70,4,0,0,74,190,255,116,122,65,194,229,5,58,103,1,0,25,97, -122,103,1,0,65,234,29,6,240,255,230,189,28,48,24,56,191,255,224,163, -60,95,0,0,224,89,218,253,60,239,12,0,58,143,1,0,252,87,19,0, -10,137,122,143,1,0,124,7,0,0,28,48,128,255,154,51,29,80,35,255, -41,0,35,239,17,0,35,231,21,0,35,223,25,0,35,215,29,0,35,207, -33,0,35,199,37,0,3,30,60,0,127,0,134,7,225,48,6,232,7,208, -32,222,10,1,38,6,132,215,255,255,31,58,128,255,134,42,224,81,154,253, -0,18,29,6,240,255,129,13,253,126,40,0,32,110,160,180,205,121,47,23, -17,0,99,7,10,0,2,224,224,225,146,45,0,234,60,23,105,0,29,64, -2,22,136,0,34,87,0,0,35,54,4,0,220,81,10,56,34,103,5,0, -63,6,168,155,1,0,108,0,35,95,5,0,99,95,1,0,195,199,0,0, -194,13,195,207,0,0,154,13,1,82,253,87,192,0,227,135,11,0,10,129, -99,135,10,0,65,234,29,6,240,255,166,221,38,6,132,215,255,255,128,255, -58,43,224,81,146,13,38,6,224,12,133,0,32,62,6,1,0,66,190,255, -204,126,224,225,210,13,227,127,11,0,99,127,8,0,35,22,8,0,34,55, -1,0,26,56,128,255,12,0,10,216,27,80,70,6,255,48,3,30,208,255, -99,55,33,0,99,255,29,0,99,207,25,0,99,215,21,0,99,223,17,0, -99,231,13,0,99,239,9,0,7,208,122,7,1,0,191,255,148,163,106,7, -9,0,49,6,36,64,1,0,106,143,5,0,32,134,244,1,106,7,29,0, -10,224,106,7,33,0,32,54,128,0,106,135,21,0,3,56,35,70,4,0, -190,255,224,139,0,202,0,234,1,122,35,111,32,0,253,127,192,0,79,105, -205,0,224,105,146,29,35,23,1,0,29,216,34,23,1,0,201,218,194,217, -29,6,128,255,150,13,38,6,236,12,133,0,32,62,53,10,0,66,190,255, -24,126,29,48,28,56,27,64,190,255,126,114,65,202,65,234,29,6,240,255, -198,221,28,48,25,56,191,255,30,162,60,135,0,0,224,129,218,253,60,223, -12,0,227,103,33,0,252,127,19,0,122,127,1,0,47,112,78,97,99,103, -32,0,124,7,0,0,28,48,128,255,210,49,32,54,0,2,190,255,162,197, -10,200,0,234,1,226,253,231,192,0,227,87,33,0,92,81,242,45,35,55, -1,0,29,16,38,55,1,0,201,18,194,49,25,56,32,70,0,2,191,255, -114,167,10,16,224,17,178,5,2,216,165,37,249,127,177,0,136,122,207,22, -127,0,138,29,4,111,204,131,224,105,178,13,253,94,96,0,49,6,252,126, -141,0,209,89,235,135,17,0,224,129,170,13,58,127,1,0,28,121,122,127, -1,0,224,217,186,5,32,222,2,16,65,234,29,6,240,255,134,205,25,48, -190,255,46,197,35,55,1,0,1,58,190,255,64,141,27,80,35,207,25,0, -35,215,21,0,35,223,17,0,35,231,13,0,35,239,9,0,35,255,29,0, -3,30,48,0,127,0,32,94,107,48,6,22,2,0,103,7,1,0,0,82, -130,143,1,0,108,138,186,13,162,135,5,0,130,127,7,0,200,122,208,121, -103,127,1,0,0,90,229,5,76,18,65,82,10,6,226,255,230,237,0,18, -0,82,134,103,1,0,204,17,130,0,65,50,65,82,10,6,0,254,134,253, -224,17,178,5,32,94,107,48,11,80,127,0,136,7,225,112,6,232,7,200, -32,230,10,1,38,6,132,215,255,255,31,58,128,255,222,39,224,81,154,253, -0,18,29,6,240,255,129,13,253,126,40,0,32,110,160,180,205,121,47,23, -17,0,99,7,14,0,1,210,2,216,224,217,194,53,0,234,253,94,96,0, -49,6,252,126,141,0,209,89,235,135,17,0,224,129,170,5,0,210,59,23, -105,0,29,64,2,22,136,0,34,87,0,0,35,54,4,0,219,81,10,56, -34,127,5,0,63,6,104,158,1,0,111,0,35,119,5,0,99,119,1,0, -195,199,0,0,194,13,195,207,0,0,154,13,1,106,253,111,192,0,227,95, -15,0,13,89,99,95,14,0,65,234,29,6,240,255,246,205,38,6,132,215, -255,255,128,255,122,40,224,81,146,13,38,6,252,12,133,0,32,62,6,1, -0,66,190,255,12,124,224,217,210,37,4,87,204,131,224,81,130,21,224,209, -226,13,227,143,15,0,99,143,8,0,35,22,8,0,34,55,1,0,25,56, -128,255,48,0,10,224,165,21,227,135,15,0,99,135,12,0,35,22,12,0, -34,55,1,0,25,56,191,255,38,253,10,224,28,6,254,239,186,5,32,230, -5,2,28,80,72,6,255,112,3,30,196,255,99,55,45,0,99,255,41,0, -99,191,37,0,99,199,33,0,99,207,29,0,99,215,25,0,99,223,21,0, -99,231,17,0,99,239,13,0,7,216,123,7,1,0,191,255,156,160,106,7, -9,0,49,6,36,64,1,0,106,143,5,0,32,134,244,1,106,7,29,0, -10,224,106,7,33,0,32,54,128,0,106,135,21,0,3,56,35,70,4,0, -190,255,232,136,0,202,0,234,227,191,45,0,1,122,253,127,192,0,23,104, -79,105,205,0,224,105,146,29,35,23,1,0,29,208,34,23,1,0,201,210, -194,209,29,6,128,255,150,13,38,6,8,13,133,0,32,62,116,11,0,66, -190,255,30,123,29,48,28,56,26,64,190,255,48,116,65,202,65,234,29,6, -240,255,182,221,28,48,25,56,191,255,36,159,60,135,0,0,224,129,218,253, -60,215,12,0,28,48,252,127,19,0,123,127,1,0,124,7,0,0,128,255, -228,46,32,54,0,2,190,255,180,194,10,200,0,234,1,226,253,231,192,0, -23,104,92,105,146,61,253,86,96,0,48,6,252,126,141,0,208,81,59,127, -1,0,234,199,17,0,92,121,162,13,224,193,250,45,59,111,1,0,60,112, -78,105,123,111,1,0,133,45,35,55,1,0,29,16,38,55,1,0,201,18, -194,49,25,56,32,70,0,2,191,255,92,164,10,16,224,17,178,5,2,208, -245,21,25,48,35,62,8,0,191,255,86,253,35,95,9,0,248,89,162,13, -59,87,1,0,28,81,123,87,1,0,224,209,186,5,32,214,5,2,65,234, -29,6,240,255,246,189,25,48,190,255,46,194,35,55,1,0,1,58,190,255, -64,138,26,80,35,191,37,0,35,199,33,0,35,207,29,0,35,215,25,0, -35,223,21,0,35,231,17,0,35,239,13,0,35,255,41,0,3,30,60,0, -127,0,130,7,225,48,8,208,154,0,6,232,7,216,128,255,158,1,224,81, -210,21,224,233,130,21,61,23,105,0,3,58,2,22,80,1,34,87,0,0, -34,135,5,0,221,81,10,48,63,6,216,160,1,0,112,0,31,82,128,7, -110,1,27,48,128,255,48,5,10,224,224,209,242,21,127,226,218,21,224,233, -130,21,61,23,105,0,3,58,2,22,80,1,34,87,0,0,34,119,5,0, -221,81,10,48,63,6,16,161,1,0,110,0,28,80,128,7,54,1,127,226, -186,37,0,50,128,255,96,5,10,224,127,226,154,29,38,6,24,13,133,0, -190,255,4,130,224,233,130,21,61,23,105,0,3,58,2,22,80,1,34,87, -0,0,34,111,5,0,221,81,10,48,63,6,82,161,1,0,109,0,28,80, -165,125,28,48,27,56,128,255,0,3,252,222,40,0,32,86,160,180,202,217, -59,23,17,0,224,17,194,29,253,17,130,29,28,56,38,6,92,13,133,0, -190,255,180,129,224,233,130,21,61,23,105,0,3,58,2,22,80,1,34,87, -0,0,34,135,5,0,221,81,10,48,63,6,162,161,1,0,112,0,31,82, -165,85,123,7,32,0,196,239,144,140,194,45,61,23,105,0,3,56,2,22, -128,0,34,87,0,0,34,127,5,0,221,81,10,48,63,6,206,161,1,0, -111,0,35,119,1,0,10,16,224,113,162,13,224,17,138,13,28,64,8,50, -39,6,80,13,133,0,191,255,116,21,61,23,105,0,63,6,6,162,1,0, -2,22,120,0,34,87,0,0,34,111,5,0,221,81,10,48,109,0,61,23, -105,0,91,7,35,0,2,22,24,0,34,87,0,0,91,7,36,0,221,81, -10,48,34,103,5,0,63,6,42,162,1,0,108,0,123,95,25,0,123,87, -21,0,36,95,130,140,123,239,17,0,65,90,100,95,130,140,28,48,128,255, -182,4,28,80,66,6,255,48,148,7,225,0,6,232,7,224,157,23,7,0, -97,18,226,5,98,18,194,5,0,82,128,7,20,1,61,23,105,0,99,7, -1,0,2,22,64,1,34,87,0,0,3,56,221,81,10,48,34,127,5,0, -63,6,136,162,1,0,111,0,224,81,178,5,0,82,197,117,35,54,8,0, -39,6,221,221,51,51,128,255,156,16,35,54,8,0,128,255,164,16,224,81, -186,5,0,82,213,101,0,50,128,255,206,16,99,87,5,0,224,81,154,13, -38,6,204,13,133,0,32,62,105,12,0,66,190,255,242,119,35,63,5,0, -35,54,8,0,32,70,68,2,0,74,128,255,116,16,35,63,5,0,39,63, -2,0,38,6,220,13,133,0,190,255,68,128,35,55,5,0,128,255,146,16, -224,81,130,53,35,55,5,0,28,56,128,255,156,16,35,23,5,0,34,103, -2,0,10,224,236,225,234,5,2,48,190,255,78,225,0,82,213,45,38,6, -160,13,133,0,190,255,12,128,29,48,128,255,252,15,224,81,250,13,35,55, -5,0,28,56,128,255,94,16,35,63,5,0,35,54,8,0,32,70,68,2, -0,74,128,255,44,16,35,55,5,0,190,255,18,225,1,82,245,13,38,6, -12,14,133,0,190,255,208,127,35,54,8,0,128,255,214,15,35,55,5,0, -190,255,244,224,0,82,84,6,255,0,128,7,33,0,0,18,36,143,141,140, -196,55,144,140,224,137,226,29,128,255,102,8,224,81,234,23,0,0,138,29, -36,86,176,172,43,6,168,14,133,0,8,98,65,82,10,111,255,255,65,90, -11,119,255,255,13,16,174,17,218,5,224,105,178,5,95,98,202,245,224,17, -234,23,0,0,194,69,224,17,194,13,38,6,68,14,133,0,190,255,96,127, -32,54,65,0,37,62,157,131,191,255,126,19,36,54,176,172,0,58,32,70, -112,2,190,255,62,127,36,54,176,172,39,6,168,14,133,0,8,66,191,255, -136,107,36,86,188,173,36,150,184,173,114,87,1,0,0,18,32,110,255,15, -2,136,196,138,36,118,184,172,206,137,113,111,0,0,65,18,2,6,240,255, -198,245,128,255,204,7,36,150,28,175,50,23,1,0,170,17,36,150,28,175, -114,23,1,0,38,6,180,14,133,0,196,183,144,140,190,255,234,126,229,5, -38,6,124,14,133,0,190,255,222,126,64,6,63,0,128,7,97,0,36,86, -184,172,6,16,196,18,36,134,184,172,39,239,1,0,194,129,112,239,5,0, -36,118,184,172,39,103,5,0,194,113,110,103,9,0,36,150,184,173,50,55, -1,0,202,17,98,55,13,0,72,58,29,64,191,255,238,106,36,150,184,173, -50,119,1,0,36,150,184,173,221,113,114,119,1,0,128,255,72,7,36,150, -28,175,50,23,1,0,170,17,36,150,28,175,114,23,1,0,36,102,188,173, -36,150,184,173,50,95,1,0,12,110,96,1,237,89,163,13,38,6,208,14, -133,0,32,62,222,12,0,66,190,255,218,117,224,81,64,6,127,0,128,7, -225,48,196,50,36,22,184,172,198,17,34,215,5,0,36,110,184,172,98,7, -5,0,198,105,109,7,9,0,36,134,184,172,198,129,48,223,13,0,26,224, -219,225,36,86,184,172,202,49,102,7,13,0,181,77,0,234,29,136,196,138, -36,118,184,172,206,137,49,111,13,0,252,105,210,5,65,234,29,6,240,255, -198,245,29,6,240,255,150,13,38,6,224,14,133,0,32,62,8,13,0,66, -190,255,106,117,196,234,36,94,184,172,221,89,36,134,184,172,208,233,43,143, -5,0,125,223,13,0,17,128,224,129,162,37,27,80,28,16,16,88,194,89, -10,120,162,121,11,112,162,113,238,121,139,21,16,104,202,105,13,86,255,255, -11,22,255,255,95,18,2,103,1,0,95,82,74,103,1,0,95,130,154,253, -149,13,65,18,2,95,255,255,65,82,74,95,255,255,95,130,154,253,209,225, -209,217,36,150,184,173,50,135,1,0,240,225,145,181,36,150,184,173,50,119, -1,0,36,150,184,173,186,113,114,119,1,0,128,255,30,6,36,150,28,175, -50,23,1,0,36,150,28,175,170,17,114,23,1,0,36,150,184,173,50,103, -1,0,36,110,188,173,237,97,169,13,38,6,224,14,133,0,32,62,18,13, -0,66,190,255,180,116,224,81,64,6,255,48,0,18,2,80,196,82,36,134, -184,172,202,129,48,119,13,0,224,113,242,37,36,118,184,172,202,113,46,103, -5,0,38,127,1,0,239,97,234,29,38,87,5,0,46,95,9,0,234,89, -138,29,46,103,13,0,38,110,8,0,0,82,15,88,224,89,194,13,65,98, -12,143,255,255,65,106,13,135,255,255,17,80,176,81,186,5,95,90,234,245, -224,81,186,5,2,80,229,5,65,18,2,6,240,255,230,205,31,82,127,0, -6,16,229,13,194,142,15,0,196,138,36,110,184,172,205,137,49,103,13,0, -224,97,186,5,2,80,245,5,65,18,6,94,16,0,235,17,129,245,31,82, -127,0,130,7,225,0,6,224,0,234,60,23,105,0,29,64,2,22,136,0, -34,87,0,0,3,48,220,81,10,56,34,143,5,0,63,6,206,166,1,0, -113,0,195,199,0,0,218,5,65,234,29,6,240,255,166,237,29,6,240,255, -150,13,38,6,240,14,133,0,32,62,114,13,0,66,190,255,204,115,29,80, -66,6,255,0,128,7,33,0,31,58,6,22,255,255,165,21,226,134,40,0, -32,118,160,180,206,129,48,111,17,0,224,105,130,13,196,18,36,142,184,172, -209,17,226,63,1,0,197,5,95,18,127,18,239,237,128,255,8,0,64,6, -63,0,128,7,225,16,6,232,253,134,40,0,32,118,160,180,206,129,48,87, -17,0,7,216,224,81,202,5,32,230,255,15,229,29,0,18,29,6,240,255, -161,5,10,16,2,224,224,225,154,13,38,6,0,15,133,0,32,62,170,13, -0,66,190,255,76,115,156,95,7,0,111,90,138,13,28,48,191,255,42,255, -10,230,1,0,198,226,181,5,27,230,1,0,196,234,36,126,184,172,207,233, -125,231,0,0,128,255,90,4,36,150,28,175,50,23,1,0,170,17,36,150, -28,175,114,23,1,0,28,80,64,6,255,16,128,7,225,0,6,6,240,255, -201,5,32,86,10,1,181,61,7,6,0,240,185,5,32,62,255,15,6,232, -196,234,36,126,184,172,221,121,111,63,0,0,0,18,6,6,240,255,129,13, -230,94,40,0,32,142,160,180,209,89,43,23,17,0,2,224,224,225,154,13, -38,6,16,15,133,0,32,62,218,13,0,66,190,255,182,114,156,135,7,0, -16,6,192,255,138,13,36,118,184,172,206,233,32,110,254,15,125,111,0,0, -128,255,210,3,36,150,28,175,50,23,1,0,170,17,36,150,28,175,114,23, -1,0,0,82,64,6,255,0,6,6,240,255,161,13,230,126,40,0,32,110, -160,180,205,121,47,103,17,0,224,97,202,5,32,86,255,15,245,5,196,50, -36,134,184,172,208,49,230,87,1,0,127,0,136,7,33,0,196,247,144,140, -186,45,0,106,13,16,197,29,2,78,255,255,180,29,13,80,9,136,195,137, -17,135,0,0,196,82,16,120,196,122,36,102,184,172,204,121,239,95,1,0, -36,126,184,172,207,81,234,119,1,0,238,89,243,5,195,17,66,135,0,0, -9,16,224,17,207,229,195,17,66,111,0,0,65,106,13,6,240,255,182,221, -3,48,128,255,142,0,72,6,63,0,128,7,225,16,0,218,38,6,132,215, -255,255,31,58,128,255,10,29,224,81,154,253,0,234,29,136,196,138,36,118, -184,172,206,137,49,111,13,0,224,105,146,29,253,230,40,0,32,86,160,180, -202,225,60,143,17,0,224,137,138,21,1,130,253,135,192,0,16,217,0,50, -0,58,190,255,106,219,36,119,130,140,124,87,17,0,65,114,100,119,130,140, -65,234,29,6,240,255,201,221,38,6,132,215,255,255,128,255,226,29,224,81, -146,13,38,6,32,15,133,0,32,62,6,1,0,66,190,255,116,113,27,80, -64,6,255,16,130,7,225,48,6,224,36,63,130,140,38,6,44,15,133,0, -190,255,208,121,38,6,116,15,133,0,190,255,198,121,0,234,29,128,220,129, -16,111,0,0,36,94,184,172,196,106,203,105,237,63,1,0,37,54,168,131, -190,255,168,121,65,234,29,6,240,255,246,237,38,6,92,15,133,0,190,255, -150,121,0,234,29,136,220,137,17,63,0,0,37,54,160,131,190,255,132,121, -65,234,29,6,240,255,214,245,38,6,104,15,133,0,190,255,114,121,0,234, -29,56,37,54,160,131,190,255,102,121,65,234,29,6,240,255,134,253,37,54, -164,131,190,255,86,121,0,218,0,234,29,120,220,121,15,119,0,0,14,6, -240,255,153,13,38,6,128,15,133,0,32,62,181,14,0,66,190,255,190,112, -29,104,220,105,13,103,0,0,1,90,236,95,192,0,11,217,65,234,29,6, -240,255,230,229,245,217,146,13,38,6,128,15,133,0,32,62,184,14,0,66, -190,255,146,112,1,138,67,143,3,0,38,6,132,215,255,255,31,58,128,255, -168,27,224,81,154,253,32,54,128,2,190,255,76,184,10,216,32,54,0,1, -190,255,66,184,10,208,0,74,9,128,232,135,68,2,219,129,16,112,9,104, -237,0,237,102,40,0,32,86,160,180,12,88,202,89,11,136,17,126,40,0, -49,111,1,0,112,111,1,0,68,138,68,130,241,121,154,253,9,16,196,18, -2,120,36,142,184,172,209,17,34,119,1,0,218,121,111,119,1,0,34,111, -5,0,111,111,5,0,34,103,9,0,111,103,9,0,65,74,34,143,13,0, -9,6,240,255,111,143,13,0,230,205,0,234,253,62,40,0,32,118,160,180, -29,104,220,105,13,95,0,0,206,57,235,102,40,0,7,128,12,80,219,81, -10,136,17,126,40,0,49,119,1,0,112,119,1,0,68,138,68,130,241,121, -154,253,71,239,34,0,0,18,29,6,240,255,241,5,253,22,120,4,42,6, -184,29,148,0,202,17,103,23,13,0,2,48,190,255,212,128,29,120,196,122, -29,104,220,105,13,87,0,0,36,118,184,172,196,82,218,81,42,111,1,0, -206,121,111,111,1,0,42,103,5,0,111,103,5,0,42,95,9,0,111,95, -9,0,65,234,42,87,13,0,29,6,240,255,111,87,13,0,134,189,27,48, -190,255,70,183,26,48,190,255,64,183,163,143,3,0,224,137,162,21,67,7, -3,0,38,6,132,215,255,255,128,255,164,27,224,81,146,13,38,6,24,11, -133,0,32,62,6,1,0,66,190,255,54,111,66,6,255,48,128,7,97,0, -134,0,224,49,194,21,38,6,144,15,133,0,190,255,148,119,0,234,29,56, -37,54,176,131,190,255,136,119,65,234,29,6,240,255,134,253,37,54,184,131, -190,255,120,119,38,6,156,15,133,0,190,255,110,119,0,234,29,128,196,130, -36,110,184,172,205,129,240,63,1,0,37,54,188,131,190,255,86,119,65,234, -29,6,240,255,166,245,37,54,184,131,190,255,70,119,64,6,127,0,0,82, -36,22,176,172,213,5,34,143,1,0,68,18,209,81,36,126,28,175,15,134, -4,0,240,17,241,245,127,0,130,7,225,16,6,232,7,224,188,0,8,216, -187,0,1,138,67,143,3,0,38,6,132,215,255,255,31,58,128,255,182,25, -224,81,154,253,0,18,29,6,240,255,129,13,253,118,40,0,32,102,160,180, -204,113,46,23,17,0,2,80,32,22,10,1,224,81,178,21,42,23,105,0, -28,88,2,22,56,1,34,55,0,0,11,56,202,49,27,80,10,64,34,143, -5,0,63,6,118,172,1,0,113,0,0,18,2,232,163,135,3,0,224,129, -162,21,67,7,3,0,38,6,132,215,255,255,128,255,136,26,224,81,146,13, -38,6,24,11,133,0,32,62,6,1,0,66,190,255,26,110,29,80,66,6, -255,16,128,7,97,0,6,232,0,58,32,70,223,255,191,255,90,255,29,48, -0,58,23,66,191,255,80,255,29,48,0,58,27,66,191,255,70,255,29,48, -0,58,32,70,175,255,191,255,58,255,64,6,127,0,138,7,225,112,6,208, -7,200,0,18,1,114,35,134,4,0,194,129,80,119,0,0,65,18,2,6, -240,255,246,245,26,56,38,6,168,15,133,0,190,255,44,118,32,230,38,1, -31,218,38,6,132,215,255,255,31,58,128,255,204,24,224,81,154,253,0,234, -35,22,4,0,221,17,2,103,0,0,97,98,202,45,0,82,29,6,240,255, -129,13,253,134,40,0,32,118,160,180,206,129,48,87,17,0,224,81,202,5, -66,7,0,0,197,29,138,111,7,0,109,106,194,5,66,7,0,0,213,21, -42,23,105,0,63,6,120,173,1,0,2,22,24,0,34,95,0,0,34,103, -5,0,202,89,11,48,108,0,127,90,219,5,177,5,127,82,169,5,29,216, -65,234,29,6,240,255,182,205,38,6,132,215,255,255,128,255,130,25,224,81, -146,13,38,6,216,15,133,0,32,62,6,1,0,66,190,255,20,109,127,218, -146,29,35,94,4,0,219,89,75,7,0,0,27,48,3,56,191,255,168,235, -10,224,224,225,250,5,26,48,27,56,25,64,128,255,226,0,10,224,28,6, -220,254,178,157,28,6,218,254,130,157,38,6,228,15,133,0,190,255,76,117, -28,80,74,6,255,112,128,7,225,16,6,216,32,238,10,1,38,6,132,215, -255,255,31,58,128,255,226,23,224,81,154,253,27,48,191,255,166,126,10,16, -127,18,146,53,2,6,240,255,0,82,129,13,226,126,40,0,32,110,160,180, -205,121,47,87,17,0,10,224,60,23,105,0,27,56,2,22,200,0,34,87, -0,0,34,103,5,0,220,81,10,48,63,6,74,174,1,0,108,0,27,56, -10,232,29,64,38,6,252,15,133,0,190,255,218,116,60,23,105,0,63,6, -116,174,1,0,2,22,192,0,34,55,0,0,34,87,5,0,220,49,106,0, -38,6,132,215,255,255,128,255,154,24,224,81,146,13,38,6,44,16,133,0, -32,62,6,1,0,66,190,255,44,108,224,233,170,13,1,50,251,55,192,0, -36,62,132,140,32,70,246,0,191,255,164,233,29,80,64,6,255,16,156,7, -225,243,6,224,7,184,99,71,21,0,56,6,132,215,255,255,1,138,67,143, -3,0,24,48,31,58,128,255,24,23,224,81,186,253,28,56,23,64,38,6, -104,16,133,0,190,255,84,116,0,18,28,6,240,255,129,13,252,118,40,0, -32,102,160,180,204,113,46,23,17,0,2,208,0,18,23,6,240,255,129,13, -247,142,40,0,32,126,160,180,207,137,49,23,17,0,2,216,224,209,178,5, -224,217,138,29,163,119,3,0,224,113,130,21,67,7,3,0,24,48,128,255, -238,23,224,81,146,13,38,6,24,11,133,0,32,62,6,1,0,66,190,255, -128,107,32,86,10,1,128,7,124,2,59,23,105,0,0,234,2,22,80,0, -34,87,0,0,34,111,5,0,219,81,10,48,63,6,100,175,1,0,109,0, -97,82,186,5,32,238,35,1,58,23,105,0,35,71,21,0,2,22,136,0, -34,87,0,0,35,54,4,0,218,81,10,56,34,103,5,0,63,6,144,175, -1,0,108,0,195,239,4,0,178,5,32,238,35,1,224,233,242,21,163,87, -3,0,224,81,130,21,67,7,3,0,24,48,128,255,104,23,224,81,146,13, -38,6,24,11,133,0,32,62,6,1,0,66,190,255,250,106,29,80,128,7, -248,1,59,23,105,0,63,6,230,175,1,0,2,22,176,0,34,87,0,0, -34,143,5,0,219,81,10,48,113,0,10,48,244,55,66,2,190,255,166,178, -59,23,105,0,10,200,2,22,184,0,34,87,0,0,25,56,219,81,10,48, -34,103,5,0,63,6,16,176,1,0,108,0,25,95,3,0,1,178,235,183, -192,0,25,48,28,56,128,255,0,3,0,218,154,23,7,0,97,18,178,5, -98,18,154,37,32,54,88,1,190,255,64,212,10,216,224,217,154,13,38,6, -156,16,133,0,32,62,115,16,0,66,190,255,112,106,28,48,27,56,191,255, -176,226,59,127,1,0,15,6,214,255,146,13,38,6,156,16,133,0,32,62, -117,16,0,66,190,255,78,106,58,23,105,0,35,63,21,0,2,22,208,0, -34,87,0,0,25,64,218,81,10,48,34,119,5,0,63,6,146,176,1,0, -110,0,10,232,25,48,190,255,4,178,163,111,3,0,224,105,130,21,67,7, -3,0,24,48,128,255,108,22,224,81,146,13,38,6,24,11,133,0,32,62, -6,1,0,66,190,255,254,105,224,233,202,5,23,48,191,255,54,222,224,233, -218,13,22,48,36,62,132,140,32,70,241,0,191,255,112,231,28,48,22,56, -128,255,54,2,10,232,224,233,186,77,224,217,146,77,35,54,24,0,39,6, -221,221,51,51,128,255,62,2,0,50,128,255,128,2,99,87,9,0,224,81, -154,13,38,6,156,16,133,0,32,62,165,16,0,66,190,255,164,105,35,54, -24,0,128,255,40,2,224,81,178,29,35,63,9,0,35,54,24,0,32,70, -68,2,0,74,128,255,26,2,35,55,9,0,128,255,74,2,224,81,202,13, -38,6,172,16,133,0,190,255,230,113,35,55,9,0,224,49,178,5,128,255, -40,2,35,55,9,0,27,56,128,255,46,2,35,63,9,0,35,54,24,0, -32,70,68,2,0,74,128,255,4,2,35,55,9,0,190,255,234,210,27,48, -190,255,228,210,28,48,191,255,70,219,29,56,38,6,56,16,133,0,190,255, -158,113,163,127,3,0,224,121,130,21,67,7,3,0,24,48,128,255,112,21, -224,81,146,13,38,6,24,11,133,0,32,62,6,1,0,66,190,255,2,105, -29,80,92,6,255,243,142,7,225,240,7,208,8,200,9,192,32,238,10,1, -6,216,191,255,222,122,10,16,127,18,186,5,128,7,34,1,2,6,240,255, -0,82,129,13,226,118,40,0,32,102,160,180,204,113,46,87,17,0,10,224, -1,90,99,95,18,0,99,215,9,0,99,7,13,0,99,207,5,0,99,7, -22,0,99,7,16,0,195,15,22,0,191,255,184,141,10,120,111,7,9,0, -42,6,36,64,1,0,111,87,5,0,32,134,244,1,111,7,29,0,111,7, -33,0,27,64,111,135,21,0,1,114,111,119,0,0,99,127,1,0,207,47, -2,0,60,23,105,0,24,72,2,22,248,0,34,87,0,0,3,56,220,81, -10,48,34,111,5,0,63,6,106,178,1,0,109,0,10,232,224,233,138,29, -36,23,33,175,35,55,1,0,38,95,0,0,224,89,202,5,38,239,12,0, -213,13,36,87,33,175,162,81,10,6,12,254,167,245,191,255,4,140,99,7, -1,0,32,238,22,16,224,233,234,37,35,119,1,0,1,106,60,23,105,0, -110,111,0,0,2,22,0,1,34,87,0,0,27,64,220,81,10,48,3,56, -34,103,5,0,63,6,204,178,1,0,108,0,10,232,224,233,234,13,35,23, -1,0,2,88,43,87,0,0,224,81,218,253,34,135,12,0,224,129,178,5, -32,238,22,16,35,23,1,0,224,17,226,5,98,7,0,0,2,48,128,255, -192,27,29,80,78,6,255,240,128,7,6,88,6,88,128,7,128,7,33,6, -252,69,129,0,97,0,33,6,88,102,128,0,97,0,33,6,66,112,128,0, -97,0,33,6,250,114,128,0,97,0,33,6,128,117,128,0,97,0,33,6, -110,23,129,0,97,0,33,6,246,24,129,0,97,0,33,6,4,28,129,0, -97,0,33,6,114,27,129,0,97,0,33,6,238,187,128,0,97,0,33,6, -0,188,128,0,97,0,33,6,32,193,128,0,97,0,33,6,54,193,128,0, -97,0,33,6,200,26,129,0,97,0,33,6,86,192,129,0,97,0,33,6, -142,192,129,0,97,0,33,6,196,192,129,0,97,0,33,6,40,193,129,0, -97,0,33,6,156,193,129,0,97,0,128,7,97,0,6,232,61,54,28,0, -0,58,32,70,144,0,190,255,114,111,61,142,28,0,93,7,23,0,125,143, -25,0,64,6,127,0,128,7,225,112,9,200,6,232,125,71,16,0,125,63, -18,0,221,135,20,0,0,226,61,223,16,0,224,201,162,29,61,126,28,0, -28,16,232,23,72,2,194,121,61,143,18,0,61,110,28,0,194,105,109,143, -24,0,209,217,61,142,28,0,61,135,16,0,209,17,98,135,26,0,111,7, -21,0,221,7,20,0,29,48,28,56,27,64,128,255,120,0,10,16,251,17, -226,5,29,48,128,255,60,0,0,82,197,13,194,209,224,201,210,5,29,48, -28,56,128,255,242,0,65,226,98,226,214,205,26,80,64,6,255,112,0,18, -2,136,232,143,72,2,38,118,28,0,206,137,113,63,61,0,65,18,98,18, -230,245,127,0,128,7,225,16,6,216,0,226,0,234,27,48,29,56,128,255, -104,0,29,136,232,143,72,2,59,118,28,0,206,137,113,7,61,0,202,225, -65,234,98,234,150,245,28,80,64,6,255,16,128,7,225,16,6,224,7,232, -8,216,0,50,0,58,190,255,234,149,10,16,224,17,210,21,60,118,28,0, -232,239,72,2,221,113,60,102,28,0,221,97,108,223,36,0,60,134,28,0, -208,233,125,7,38,0,110,23,33,0,34,87,24,0,165,5,0,82,64,6, -255,16,128,7,225,48,7,232,232,239,72,2,6,216,59,134,28,0,221,129, -48,231,33,0,0,210,224,225,162,13,60,215,24,0,28,48,1,58,190,255, -84,150,28,48,190,255,104,150,59,118,28,0,221,113,110,7,33,0,59,102, -28,0,221,97,108,7,36,0,59,142,28,0,209,233,125,7,38,0,26,80, -64,6,255,48,128,7,225,240,7,208,232,215,72,2,6,200,57,126,28,0, -218,121,47,223,33,0,57,87,16,0,59,223,29,0,57,239,18,0,27,16, -181,13,162,95,5,0,171,81,10,192,212,5,34,23,13,0,2,216,165,5, -203,193,224,81,223,245,216,233,1,82,149,13,162,95,5,0,171,233,224,233, -199,5,34,23,13,0,65,82,224,233,255,245,10,48,244,55,66,2,190,255, -4,173,10,224,57,126,28,0,218,121,111,231,69,0,57,239,18,0,165,45, -224,217,154,13,38,6,108,17,133,0,32,62,118,1,0,66,190,255,6,101, -24,80,59,23,1,0,201,82,194,81,187,23,5,0,184,17,226,233,195,5, -162,233,201,18,197,5,29,16,201,18,162,233,124,7,1,0,124,7,5,0, -124,87,13,0,124,23,17,0,124,87,9,0,59,223,13,0,28,230,20,0, -0,194,224,233,239,213,57,118,28,0,206,209,58,55,69,0,57,63,18,0, -0,66,191,255,224,159,64,6,255,240,128,7,33,0,38,119,25,0,46,23, -65,0,2,128,150,130,201,37,152,18,225,29,39,87,1,0,38,111,5,0, -39,95,5,0,38,103,1,0,237,89,234,5,236,81,202,5,128,255,94,3, -149,29,224,65,178,13,46,103,65,0,140,102,128,0,110,103,65,0,32,94, -144,176,203,55,0,0,0,82,181,13,224,65,186,5,0,82,245,5,224,65, -194,5,128,255,158,0,165,5,0,82,64,6,63,0,128,7,225,241,7,224, -60,223,5,0,60,215,1,0,252,191,9,0,6,192,56,238,28,0,0,202, -61,23,65,0,2,128,150,130,137,53,61,55,1,0,61,63,5,0,23,64, -218,65,225,103,0,0,219,97,231,97,209,37,187,5,230,65,163,37,56,95, -5,0,56,87,1,0,235,217,171,29,177,5,234,209,249,21,253,87,37,0, -198,81,225,127,0,0,199,121,239,217,155,21,177,5,234,209,233,13,152,18, -177,5,1,82,133,21,28,48,190,255,186,159,221,255,66,0,234,253,181,5, -0,82,245,5,29,238,72,0,65,202,98,202,134,205,0,82,64,6,255,241, -128,7,225,112,7,224,252,223,9,0,60,63,5,0,6,232,61,207,16,0, -60,55,1,0,25,64,25,72,191,74,191,255,160,61,10,208,186,201,187,201, -125,207,12,0,25,104,237,0,224,105,222,13,61,23,16,0,2,96,193,98, -186,97,236,217,199,5,0,82,128,7,74,2,2,216,186,217,61,127,25,0, -207,239,66,0,146,13,28,48,190,255,66,159,61,119,25,0,206,239,66,0, -202,253,60,103,1,0,60,111,5,0,252,87,9,0,204,81,1,98,125,103, -14,0,125,87,1,0,225,135,0,0,205,129,125,135,5,0,27,104,218,105, -125,111,10,0,61,23,25,0,60,87,1,0,60,95,5,0,98,87,1,0, -98,95,5,0,64,86,48,0,98,87,65,0,221,199,20,0,242,13,224,209, -218,13,61,135,25,0,61,63,18,0,208,7,67,0,48,55,69,0,32,71, -181,176,191,255,20,158,61,111,25,0,124,223,36,0,45,23,33,0,124,215, -38,0,45,95,69,0,124,23,33,0,124,95,41,0,205,199,67,0,178,13, -61,135,18,0,124,135,24,0,61,127,16,0,220,7,67,0,124,127,26,0, -61,119,25,0,110,215,38,0,110,223,36,0,46,95,33,0,107,7,26,0, -61,87,12,0,224,81,159,37,14,128,48,127,65,0,46,6,128,0,64,0, -14,121,112,127,65,0,32,110,144,176,205,55,0,0,29,103,23,0,65,98, -204,102,1,0,93,103,23,0,130,13,61,135,25,0,16,134,72,0,125,135, -25,0,213,5,61,126,28,0,125,127,25,0,61,119,12,0,224,113,182,5, -128,7,22,1,61,111,25,0,205,239,66,0,146,13,28,48,190,255,34,158, -61,103,25,0,204,239,66,0,202,253,60,111,5,0,61,79,25,0,60,103, -1,0,27,120,191,122,27,112,204,113,225,135,0,0,208,121,205,121,105,127, -5,0,105,119,1,0,64,134,48,0,252,95,9,0,105,135,65,0,139,217, -221,199,20,0,210,13,61,127,25,0,61,63,18,0,207,7,67,0,47,55, -69,0,32,71,181,176,191,255,12,157,61,103,25,0,124,223,48,0,44,23, -33,0,124,7,50,0,44,87,69,0,124,23,45,0,124,87,53,0,204,199, -67,0,178,13,61,127,18,0,124,127,24,0,61,119,16,0,220,7,67,0, -124,119,26,0,61,111,25,0,109,7,38,0,109,223,36,0,45,87,33,0, -106,7,26,0,61,23,16,0,187,17,125,23,12,0,125,223,10,0,226,0, -224,17,239,37,224,17,146,13,38,6,124,17,133,0,32,62,77,3,0,66, -190,255,106,97,61,103,25,0,42,6,128,0,64,0,44,95,65,0,29,135, -23,0,10,89,108,95,65,0,65,130,208,134,1,0,93,135,23,0,226,5, -12,110,72,0,125,111,25,0,213,5,61,102,28,0,125,103,25,0,60,23, -57,0,43,6,250,58,1,0,98,95,5,0,1,82,64,6,255,112,128,7, -225,16,7,224,6,232,61,87,12,0,252,223,9,0,10,16,226,217,167,13, -61,135,16,0,194,129,240,217,199,5,0,82,128,7,248,1,10,216,61,119, -25,0,61,87,10,0,46,23,33,0,124,223,36,0,46,103,69,0,124,23, -33,0,124,103,41,0,124,87,38,0,206,199,67,0,178,13,61,87,18,0, -124,87,24,0,61,135,16,0,220,7,67,0,124,135,26,0,61,103,1,0, -61,111,5,0,252,87,9,0,204,81,225,135,0,0,205,129,61,127,10,0, -125,135,5,0,219,121,1,114,125,87,1,0,125,127,10,0,125,119,14,0, -61,103,25,0,236,95,37,0,219,89,108,95,36,0,61,135,12,0,252,87, -9,0,170,129,125,135,12,0,240,0,224,129,183,5,128,7,90,1,12,112, -46,111,65,0,44,6,128,0,64,0,12,105,110,111,65,0,32,94,144,176, -203,55,0,0,29,87,23,0,65,82,202,86,1,0,93,87,23,0,226,5, -61,119,25,0,14,110,72,0,181,5,61,110,28,0,61,103,12,0,125,111, -25,0,224,97,182,5,128,7,18,1,205,239,66,0,146,13,28,48,190,255, -4,156,61,87,25,0,202,239,66,0,202,253,60,103,1,0,27,120,191,122, -27,112,204,113,225,135,0,0,208,121,60,111,5,0,61,79,25,0,205,121, -105,119,1,0,105,127,5,0,64,118,48,0,252,135,9,0,105,119,65,0, -144,217,221,199,20,0,210,13,61,111,25,0,61,63,18,0,205,7,67,0, -45,55,69,0,32,71,181,176,191,255,238,154,61,87,25,0,124,223,48,0, -42,23,33,0,124,7,50,0,42,127,69,0,124,23,45,0,124,127,53,0, -202,199,67,0,178,13,61,111,18,0,124,111,24,0,61,103,16,0,220,7, -67,0,124,103,26,0,61,95,25,0,107,7,38,0,107,223,36,0,43,127, -33,0,111,7,26,0,61,23,16,0,187,17,125,23,12,0,125,223,10,0, -226,0,224,17,239,37,224,17,146,13,38,6,140,17,133,0,32,62,215,3, -0,66,190,255,76,95,61,87,25,0,47,6,128,0,64,0,42,135,65,0, -29,119,23,0,15,129,106,135,65,0,65,114,206,118,1,0,93,119,23,0, -226,5,10,94,72,0,125,95,25,0,213,5,61,86,28,0,125,87,25,0, -60,23,57,0,48,6,250,58,1,0,98,135,5,0,1,82,64,6,255,16, -130,7,225,48,7,216,187,0,6,232,61,230,28,0,1,138,99,143,1,0, -31,50,190,255,72,167,0,210,60,23,65,0,224,217,162,13,98,218,154,21, -136,18,249,13,29,48,28,56,128,255,108,0,165,13,2,120,150,122,249,5, -152,18,209,5,29,48,28,56,128,255,88,0,28,230,72,0,65,210,98,210, -230,229,99,218,170,29,61,23,25,0,34,23,65,0,2,136,150,138,185,21, -152,18,145,21,61,111,14,0,224,105,210,5,125,7,14,0,0,18,165,5, -1,18,224,17,226,5,61,63,25,0,29,48,128,255,24,0,35,103,1,0, -224,97,210,5,99,7,1,0,190,255,178,166,66,6,255,48,128,7,225,0, -7,232,221,231,66,0,154,13,38,6,156,17,133,0,32,62,91,4,0,66, -190,255,74,94,61,231,33,0,224,225,154,13,38,6,156,17,133,0,32,62, -94,4,0,66,190,255,50,94,221,199,67,0,146,13,221,247,66,0,194,5, -220,199,43,0,178,5,221,135,67,0,61,143,65,0,48,6,1,0,128,0, -16,137,125,143,65,0,128,127,221,176,224,121,194,5,29,48,191,255,126,79, -221,191,64,0,191,255,10,131,106,7,9,0,32,118,232,3,106,119,21,0, -1,106,106,111,0,0,32,102,16,0,106,103,2,0,43,6,60,67,1,0, -106,95,5,0,106,239,29,0,125,87,57,0,60,143,26,0,61,23,36,0, -226,137,186,253,29,48,61,63,57,0,0,66,0,74,190,255,252,147,64,6, -255,0,128,7,97,0,0,234,253,54,176,0,46,6,56,101,148,0,206,49, -191,255,130,246,65,234,29,6,240,255,214,245,64,6,127,0,127,0,132,7, -225,112,6,224,7,216,8,208,9,200,0,234,0,18,226,86,176,0,47,6, -56,101,148,0,207,81,42,119,173,0,224,113,186,5,10,232,213,5,65,18, -2,6,240,255,150,245,224,233,138,13,60,23,1,0,224,17,194,5,32,86, -3,16,229,37,59,55,17,0,35,62,4,0,3,64,190,255,34,186,29,48, -35,63,5,0,35,71,1,0,26,72,191,255,56,246,121,87,1,0,224,81, -146,21,1,98,125,103,173,0,29,48,27,56,191,255,166,246,60,23,5,0, -124,239,1,0,65,18,124,23,5,0,0,82,181,5,32,86,18,1,68,6, -255,112,128,7,225,0,6,232,8,224,124,7,1,0,224,57,186,29,61,55, -1,0,224,49,242,21,191,255,138,246,60,23,1,0,61,55,1,0,202,17, -124,23,1,0,191,255,182,245,61,23,1,0,98,7,173,0,61,23,5,0, -125,7,1,0,95,18,125,23,5,0,0,82,64,6,255,0,128,7,127,0, -128,7,193,16,6,232,0,218,229,87,64,0,224,7,96,1,32,143,193,184, -10,224,95,138,96,143,193,184,61,135,57,0,61,127,49,0,224,129,178,13, -15,16,97,18,130,93,98,18,226,85,125,7,57,0,125,7,49,0,149,85, -224,121,242,77,61,119,53,0,224,113,242,5,125,7,53,0,3,106,125,111, -49,0,213,69,61,95,45,0,11,16,194,18,34,87,65,184,125,7,49,0, -224,81,34,22,64,184,194,13,42,23,37,0,98,239,33,0,106,239,37,0, -125,87,33,0,125,23,37,0,229,45,98,239,1,0,32,143,53,183,125,239, -33,0,61,135,65,0,125,239,37,0,16,137,32,23,41,183,96,143,53,183, -224,17,234,5,96,239,41,183,96,95,61,183,133,29,32,127,61,183,239,89, -201,21,34,87,61,0,96,95,61,183,234,89,233,13,34,119,45,0,238,81, -130,13,34,103,65,0,32,111,57,183,12,105,96,111,57,183,96,239,41,183, -252,47,32,0,32,87,37,183,32,95,41,183,235,81,226,5,36,143,253,133, -224,137,170,5,1,218,27,80,64,6,223,16,128,7,97,0,32,255,37,183, -229,87,64,0,224,7,96,1,10,232,63,23,33,0,63,127,45,0,255,17, -178,21,15,136,194,138,113,23,65,184,32,103,57,183,63,111,33,0,224,97, -96,111,41,183,242,5,63,87,65,0,42,88,75,97,96,103,57,183,32,23, -61,183,239,17,233,5,194,18,34,103,65,184,96,103,41,183,253,47,32,0, -32,95,41,183,255,89,178,5,128,255,100,9,64,6,127,0,128,7,225,16, -6,248,7,216,229,87,64,0,224,7,96,1,63,143,9,0,10,224,224,137, -242,5,17,134,255,255,127,135,9,0,0,250,165,77,224,217,242,69,32,239, -37,183,125,255,109,0,47,6,190,251,129,0,63,23,13,0,125,127,105,0, -224,17,194,21,125,23,113,0,63,111,13,0,45,111,117,0,125,111,117,0, -63,95,13,0,43,95,117,0,107,239,113,0,63,87,13,0,106,239,117,0, -245,5,127,239,13,0,125,239,117,0,125,239,113,0,63,143,17,0,6,130, -65,138,127,143,17,0,1,122,125,135,49,0,32,119,193,184,125,127,57,0, -65,114,96,119,193,184,125,223,77,0,252,47,32,0,127,218,210,5,61,54, -76,0,128,255,28,0,29,48,128,255,56,9,61,87,133,0,213,5,13,250, -252,47,32,0,31,80,64,6,255,16,33,6,122,244,129,0,97,0,128,7, -225,0,6,248,229,87,64,0,224,7,96,1,63,239,13,0,10,224,224,233, -146,61,61,23,113,0,226,233,202,5,127,7,13,0,245,13,127,23,13,0, -61,143,113,0,61,135,117,0,113,135,117,0,61,127,117,0,61,119,113,0, -111,119,113,0,63,111,17,0,32,103,193,184,95,106,127,111,17,0,125,7, -105,0,65,98,96,103,193,184,252,47,32,0,61,95,101,0,224,89,226,5, -61,54,76,0,128,255,50,0,181,5,125,7,77,0,125,7,133,0,29,48, -191,255,88,253,224,81,178,13,128,255,16,8,133,13,63,87,9,0,65,82, -127,87,9,0,252,47,32,0,0,82,64,6,255,0,33,6,84,248,129,0, -97,0,128,7,225,240,6,248,7,216,8,208,9,192,35,207,29,0,229,87, -64,0,224,7,96,1,10,224,63,119,9,0,218,142,2,0,91,113,224,137, -242,5,251,113,186,5,0,234,133,13,7,234,229,5,224,113,178,5,0,234, -165,5,7,234,224,233,234,13,63,103,9,0,129,210,120,103,1,0,249,85, -63,143,9,0,59,80,74,137,127,143,9,0,133,85,224,201,210,77,32,239, -37,183,48,6,58,5,130,0,125,135,105,0,125,255,109,0,125,199,125,0, -125,223,121,0,63,23,17,0,125,215,129,0,224,17,194,21,125,23,113,0, -63,119,17,0,46,119,117,0,125,119,117,0,63,103,17,0,44,103,117,0, -108,239,113,0,63,95,17,0,107,239,117,0,245,5,127,239,17,0,125,239, -117,0,125,239,113,0,63,87,21,0,7,138,65,82,127,87,21,0,1,130, -125,143,49,0,32,127,193,184,125,135,57,0,65,122,96,127,193,184,125,207, -77,0,252,47,32,0,127,202,210,5,61,54,76,0,191,255,108,254,29,48, -128,255,136,7,61,87,133,0,213,5,7,234,252,47,32,0,29,80,64,6, -255,240,128,7,225,243,6,248,7,232,8,216,229,87,64,0,224,7,96,1, -10,224,130,218,63,127,9,0,137,13,93,121,127,127,9,0,252,47,32,0, -128,7,50,2,29,121,127,127,9,0,63,23,17,0,63,95,21,0,224,17, -186,5,128,7,10,2,97,90,154,85,2,232,61,87,121,0,63,143,9,0, -221,207,128,0,130,13,74,137,234,137,186,5,0,18,133,13,7,18,229,5, -81,81,178,5,0,18,165,5,7,18,224,17,250,53,63,127,9,0,61,135, -125,0,112,127,1,0,221,199,128,0,146,13,61,103,121,0,63,95,9,0, -44,104,77,89,127,95,9,0,127,7,17,0,127,7,21,0,32,87,193,184, -125,7,105,0,65,82,96,87,193,184,252,47,32,0,61,143,101,0,224,137, -226,5,61,54,76,0,191,255,60,254,181,5,125,7,77,0,125,7,133,0, -29,48,191,255,98,251,224,81,186,5,128,7,136,1,128,255,22,6,128,7, -128,1,252,47,32,0,128,7,120,1,2,208,26,232,127,7,17,0,0,178, -0,186,63,207,21,0,32,135,193,184,63,223,9,0,65,130,96,135,193,184, -252,47,32,0,229,87,64,0,224,7,96,1,63,127,13,0,10,224,224,121, -178,13,127,7,13,0,63,207,21,0,63,119,9,0,26,232,14,217,224,233, -130,85,61,119,129,0,61,95,121,0,206,110,2,0,146,13,11,96,91,97, -235,97,186,5,0,18,133,13,7,18,229,5,91,89,178,5,0,18,165,5, -7,18,61,199,113,0,224,17,218,53,61,87,125,0,129,114,106,223,1,0, -153,13,61,127,121,0,63,119,9,0,47,128,80,113,127,119,9,0,61,23, -113,0,226,233,186,5,0,210,229,13,253,209,170,5,2,208,61,111,117,0, -98,111,117,0,61,103,117,0,61,95,113,0,108,95,113,0,63,87,21,0, -125,7,105,0,95,82,127,87,21,0,125,7,113,0,125,7,133,0,224,177, -202,5,29,176,29,184,197,5,119,239,113,0,29,184,24,232,95,202,218,157, -127,215,17,0,252,47,32,0,22,232,229,29,61,143,101,0,61,199,113,0, -224,137,226,5,61,54,76,0,191,255,14,253,181,5,125,7,77,0,229,87, -64,0,224,7,96,1,32,135,193,184,10,224,65,130,96,135,193,184,252,47, -32,0,29,48,191,255,32,250,24,232,224,233,170,229,229,87,64,0,224,7, -96,1,32,127,193,184,10,224,95,122,96,127,193,184,252,47,32,0,32,111, -37,183,32,119,41,183,238,105,146,21,36,103,253,133,224,97,218,13,128,255, -170,4,165,13,224,89,226,5,63,87,13,0,65,82,127,87,13,0,252,47, -32,0,0,82,64,6,255,243,128,7,225,48,6,248,7,208,8,216,229,87, -64,0,224,7,96,1,63,143,9,0,10,224,224,137,178,21,63,23,17,0, -17,134,255,255,2,126,4,0,122,127,1,0,34,119,1,0,127,119,17,0, -127,135,9,0,98,255,1,0,0,250,213,77,224,217,146,77,32,239,37,183, -125,215,125,0,125,255,109,0,45,6,170,6,130,0,63,23,33,0,125,111, -105,0,224,17,194,21,125,23,113,0,63,95,33,0,43,95,117,0,125,95, -117,0,63,143,33,0,49,143,117,0,113,239,113,0,63,135,33,0,112,239, -117,0,245,5,127,239,33,0,125,239,117,0,125,239,113,0,63,127,37,0, -8,114,65,122,127,127,37,0,1,106,125,119,49,0,32,103,193,184,125,111, -57,0,65,98,96,103,193,184,125,223,77,0,252,47,32,0,127,218,210,5, -61,54,76,0,191,255,46,251,29,48,128,255,74,4,61,87,133,0,229,5, -32,254,16,0,252,47,32,0,31,80,64,6,255,48,128,7,225,0,6,224, -229,87,64,0,224,7,96,1,60,23,253,255,10,248,34,239,33,0,28,86, -252,255,224,233,210,61,61,87,113,0,234,233,202,5,98,7,33,0,245,13, -98,87,33,0,61,143,113,0,61,135,117,0,113,135,117,0,61,127,117,0, -61,119,113,0,111,119,113,0,34,111,37,0,32,103,193,184,95,106,98,111, -37,0,125,7,105,0,65,98,96,103,193,184,255,47,32,0,61,95,125,0, -61,87,101,0,107,231,1,0,224,81,226,5,61,54,76,0,191,255,58,251, -181,5,125,7,77,0,125,7,133,0,29,48,191,255,96,248,224,81,146,21, -128,255,24,3,229,13,34,143,17,0,34,135,9,0,124,143,253,255,65,130, -98,87,17,0,98,135,9,0,255,47,32,0,0,82,64,6,255,0,128,7, -225,16,6,248,7,216,229,87,64,0,224,7,96,1,63,143,9,0,10,224, -224,137,138,29,1,130,32,23,37,183,127,135,9,0,63,127,17,0,127,23, -13,0,224,121,178,13,224,17,146,13,34,119,45,0,127,119,21,0,34,111, -61,0,127,111,25,0,0,250,213,109,63,103,13,0,32,23,37,183,226,97, -138,13,63,95,9,0,65,90,127,95,9,0,0,250,133,101,224,217,194,93, -2,232,125,255,109,0,42,6,10,16,130,0,63,23,29,0,125,87,105,0, -224,17,194,21,125,23,113,0,63,135,29,0,48,135,117,0,125,135,117,0, -63,119,29,0,46,119,117,0,110,239,113,0,63,111,29,0,109,239,117,0, -245,5,127,239,29,0,125,239,117,0,125,239,113,0,63,103,33,0,13,90, -65,98,127,103,33,0,1,82,125,95,49,0,32,143,193,184,125,87,57,0, -65,138,96,143,193,184,125,223,77,0,252,47,32,0,63,135,17,0,224,129, -178,21,63,55,13,0,224,49,242,13,32,23,37,183,224,17,178,13,38,127, -45,0,34,23,45,0,226,121,211,5,2,56,2,64,128,255,42,0,127,218, -210,5,61,54,76,0,191,255,76,249,29,48,128,255,104,2,61,87,133,0, -229,5,32,254,29,0,252,47,32,0,31,80,64,6,255,16,33,6,162,14, -130,0,97,0,128,7,225,112,6,232,229,87,64,0,224,7,96,1,61,143, -9,0,10,248,224,137,186,5,128,7,148,1,61,127,13,0,32,135,37,183, -240,121,178,5,128,7,132,1,61,119,9,0,95,114,125,119,9,0,226,5, -255,47,32,0,0,82,128,7,118,1,61,103,17,0,224,97,146,29,61,95, -29,0,224,89,210,21,32,87,193,184,65,82,96,87,193,184,255,47,32,0, -29,48,128,255,86,1,229,87,64,0,224,7,96,1,32,143,193,184,10,248, -95,138,96,143,193,184,61,23,29,0,224,17,234,53,32,135,193,184,65,130, -96,135,193,184,255,47,32,0,61,127,17,0,224,121,146,21,32,23,37,183, -224,17,210,13,34,119,45,0,61,63,21,0,231,113,242,5,61,71,25,0, -61,55,13,0,191,255,68,255,229,87,64,0,224,7,96,1,32,111,193,184, -10,248,95,106,96,111,193,184,255,47,32,0,32,95,37,183,32,103,41,183, -236,89,242,5,36,87,253,133,224,81,186,5,128,255,220,0,0,82,213,101, -61,143,17,0,2,224,224,137,242,13,61,215,21,0,60,135,45,0,125,135, -21,0,61,207,25,0,60,127,61,0,61,223,13,0,125,127,25,0,125,231, -13,0,1,114,60,23,113,0,125,119,9,0,226,225,202,5,125,7,29,0, -245,13,125,23,29,0,60,111,113,0,60,103,117,0,109,103,117,0,60,95, -117,0,60,87,113,0,107,87,113,0,61,143,33,0,32,135,193,184,95,138, -125,143,33,0,124,7,105,0,65,130,96,135,193,184,255,47,32,0,60,127, -101,0,224,121,226,5,60,54,76,0,191,255,92,248,181,5,124,7,77,0, -124,7,133,0,61,119,17,0,224,113,194,13,224,217,162,13,59,111,45,0, -250,105,226,5,27,48,26,56,25,64,191,255,98,254,28,48,191,255,100,245, -224,81,178,5,128,255,28,0,0,82,213,5,255,47,32,0,32,86,30,0, -64,6,255,112,33,6,248,13,130,0,97,0,229,103,64,0,3,30,196,255, -0,106,99,111,1,0,99,47,5,0,99,167,9,0,99,175,13,0,99,183, -17,0,99,191,21,0,99,199,25,0,99,207,29,0,99,215,33,0,99,223, -37,0,99,231,41,0,99,239,45,0,99,247,49,0,99,255,53,0,99,103, -57,0,44,6,36,183,255,255,44,55,1,0,45,6,196,29,133,0,45,119, -1,0,224,7,96,1,102,31,9,0,47,6,32,183,255,255,47,31,1,0, -224,113,186,5,128,7,16,0,38,127,29,0,109,7,1,0,102,127,25,0, -108,7,1,0,128,7,88,14,128,7,97,0,6,248,229,87,64,0,224,7, -96,1,32,143,193,184,10,232,95,138,63,135,57,0,96,143,193,184,224,129, -186,5,128,7,168,1,127,7,57,0,63,87,33,0,63,23,45,0,255,81, -146,53,63,127,37,0,106,127,37,0,63,119,37,0,63,111,33,0,110,111, -33,0,194,18,34,143,65,184,255,137,34,22,64,184,178,5,128,7,114,1, -63,135,33,0,32,127,57,183,98,135,1,0,224,121,242,5,63,111,65,0, -45,112,78,121,96,127,57,183,32,95,41,183,235,249,178,5,128,7,74,1, -32,135,61,183,194,130,48,111,65,184,96,111,41,183,128,7,56,1,194,18, -63,135,65,0,98,7,65,184,32,127,53,183,48,16,66,121,32,119,57,183, -96,127,53,183,224,113,194,5,66,113,96,119,57,183,32,23,53,183,194,102, -255,0,194,5,2,112,0,18,181,45,194,94,0,255,210,5,2,112,136,114, -8,18,197,37,64,142,255,0,2,80,81,81,226,5,2,112,144,114,32,22, -16,0,165,29,64,126,0,255,2,128,79,129,226,5,2,112,152,114,32,22, -24,0,133,21,32,118,32,0,96,119,61,183,96,7,41,183,253,47,32,0, -36,111,253,133,224,105,138,109,191,255,96,254,213,101,206,102,255,0,140,143, -65,183,194,137,32,127,41,183,96,143,61,183,239,249,202,77,194,138,49,143, -65,184,32,135,57,183,96,143,41,183,224,129,178,69,32,127,193,184,65,122, -96,127,193,184,253,47,32,0,229,87,64,0,224,7,96,1,32,23,57,183, -32,119,193,184,10,232,95,114,96,119,193,184,194,110,255,0,2,112,178,5, -0,18,165,21,194,102,0,255,194,5,136,114,8,18,197,13,64,86,255,0, -74,17,210,5,144,114,32,22,16,0,197,5,152,114,32,22,24,0,206,142, -255,0,145,119,65,183,206,17,194,18,34,23,65,184,32,135,61,183,34,143, -61,0,241,129,177,13,96,23,41,183,34,119,65,0,32,111,57,183,46,120, -79,105,96,111,57,183,253,47,32,0,32,95,37,183,32,103,41,183,236,89, -242,5,36,87,253,133,224,81,186,5,191,255,150,253,64,6,127,0,128,7, -225,0,6,232,229,87,64,0,224,7,96,1,61,23,17,0,10,224,224,17, -210,5,2,48,1,58,190,255,84,95,32,135,49,176,61,143,9,0,113,135, -5,0,96,239,49,176,61,127,24,0,32,119,53,176,175,113,96,119,53,176, -252,47,32,0,64,6,255,0,194,50,36,118,172,138,206,49,38,79,1,0, -39,87,18,0,32,110,223,255,10,16,77,17,234,17,178,5,130,22,160,0, -194,102,0,1,130,0,170,37,7,95,8,0,200,90,11,17,105,23,16,0, -7,119,12,0,39,103,10,0,200,114,140,0,14,97,105,103,18,0,7,143, -14,0,167,127,13,0,200,138,17,121,105,127,20,0,167,87,15,0,7,103, -17,0,135,119,17,0,200,98,12,81,10,113,165,53,7,103,9,0,200,98, -140,102,12,0,105,103,16,0,7,143,15,0,39,127,10,0,200,138,168,122, -17,121,105,127,18,0,105,7,20,0,105,7,22,0,7,103,8,0,200,98, -12,17,105,23,16,0,7,127,12,0,39,111,10,0,200,122,141,0,15,105, -105,111,18,0,7,87,14,0,167,135,13,0,200,82,10,129,105,135,20,0, -7,111,17,0,135,119,17,0,200,106,13,113,105,119,22,0,127,0,107,50, -183,5,1,82,245,21,194,50,36,118,172,138,206,49,38,23,1,0,194,255, -24,0,130,13,32,110,162,0,98,111,16,0,98,7,22,0,229,5,194,239, -0,0,186,5,1,82,165,5,0,82,127,0,128,7,225,16,6,248,63,239, -9,0,63,231,12,0,229,87,64,0,224,7,96,1,10,216,224,225,226,21, -61,135,12,0,224,129,186,13,63,127,16,0,125,127,16,0,63,119,14,0, -125,119,14,0,125,231,12,0,255,111,19,0,253,95,19,0,13,89,125,95, -18,0,63,231,2,0,31,48,128,255,218,1,61,143,2,0,28,137,125,143, -2,0,61,23,0,0,95,18,226,0,125,23,0,0,224,17,138,13,29,48, -61,127,5,0,63,6,12,205,1,0,111,0,251,47,32,0,64,6,255,16, -130,7,225,48,6,232,61,143,12,0,224,137,178,5,128,7,18,1,229,87, -64,0,224,7,96,1,61,231,29,0,10,208,220,199,64,0,178,21,220,231, -66,0,130,21,60,223,33,0,1,58,251,135,43,0,208,134,244,255,123,135, -42,0,27,48,190,255,2,126,27,48,190,255,22,126,60,55,61,0,28,56, -191,255,210,158,28,48,191,255,102,159,61,23,24,0,194,118,0,128,14,6, -0,128,234,29,32,102,16,0,194,110,255,127,125,111,24,0,61,22,12,0, -98,7,1,0,125,103,2,0,68,18,98,7,1,0,61,55,24,0,48,6, -176,137,141,0,6,88,194,90,208,89,43,127,1,0,224,121,178,5,191,255, -68,118,221,199,2,0,170,61,61,231,24,0,149,21,229,87,64,0,32,22, -159,255,10,232,29,248,66,249,255,47,32,0,29,248,255,47,32,0,4,119, -80,139,224,113,250,37,51,6,5,0,32,0,211,255,0,0,186,237,229,87, -64,0,224,7,96,1,32,111,185,176,99,87,1,0,95,106,96,111,185,176, -202,13,32,103,13,177,224,97,138,13,64,86,0,0,43,6,96,0,0,0, -74,95,8,240,35,255,1,0,255,47,32,0,50,6,54,0,32,0,114,231, -0,0,250,47,32,0,181,5,191,255,186,117,66,6,255,48,128,7,225,112, -6,224,60,239,9,0,7,200,60,223,12,0,229,87,64,0,224,7,96,1, -10,208,224,217,130,29,61,135,12,0,224,129,186,13,60,127,16,0,125,127, -16,0,60,119,14,0,125,119,14,0,125,223,12,0,252,111,19,0,253,95, -19,0,13,89,125,95,18,0,124,7,12,0,224,201,210,5,124,7,14,0, -124,7,16,0,61,23,0,0,95,18,226,0,125,23,0,0,224,17,138,13, -29,48,61,143,5,0,63,6,178,206,1,0,113,0,250,47,32,0,64,6, -255,112,128,7,225,0,6,232,60,6,232,233,142,0,252,233,153,13,29,64, -38,6,148,240,132,0,32,62,194,0,190,255,228,75,47,6,0,158,2,0, -207,225,252,233,145,13,29,64,38,6,148,240,132,0,32,62,195,0,190,255, -200,75,125,7,12,0,125,7,14,0,125,7,18,0,125,7,2,0,229,87, -64,0,224,7,96,1,32,111,233,176,125,111,25,0,96,239,233,176,32,103, -225,176,10,248,95,98,96,103,225,176,255,47,32,0,64,6,255,0,6,16, -197,18,47,6,0,4,32,0,207,17,39,127,26,0,207,118,8,1,210,5, -39,111,17,0,98,111,9,0,207,102,0,2,210,5,39,95,21,0,98,95, -13,0,207,86,8,3,250,5,64,142,0,128,98,143,13,0,143,126,0,2, -39,87,24,0,98,127,18,0,201,82,207,126,132,0,130,21,98,87,21,0, -132,119,153,140,224,113,210,5,39,87,13,0,98,87,5,0,39,87,9,0, -98,87,1,0,181,5,98,87,25,0,127,0,128,7,225,48,32,23,193,223, -224,17,146,37,50,6,0,3,32,0,50,231,1,0,66,225,162,29,0,234, -32,222,104,177,1,210,245,13,26,16,253,23,192,0,2,120,92,121,226,5, -34,112,78,225,27,48,128,255,220,0,27,222,32,0,65,234,29,6,238,255, -142,229,224,225,234,237,213,221,64,86,0,0,43,6,48,0,0,0,74,95, -144,244,64,86,0,0,202,191,32,241,64,6,255,48,128,7,225,0,6,232, -197,234,32,126,104,177,207,233,61,231,5,0,224,225,162,77,191,255,66,252, -224,81,226,69,32,119,169,179,224,113,242,5,29,48,0,58,191,255,34,150, -224,81,202,61,220,199,33,0,194,21,36,23,224,139,95,18,226,0,100,23, -224,139,224,17,202,13,132,103,233,139,224,97,130,13,38,6,144,250,132,0, -190,255,212,82,191,255,246,115,29,95,23,0,224,89,210,29,29,87,23,0, -98,82,210,13,29,143,23,0,99,138,146,13,38,6,164,250,132,0,32,62, -79,6,0,66,190,255,50,74,29,135,23,0,99,130,218,5,4,122,93,127, -23,0,165,13,29,119,23,0,98,114,226,5,29,48,28,56,0,66,191,255, -38,149,64,6,255,0,128,7,225,241,6,224,60,239,9,0,28,223,22,0, -58,6,0,4,32,0,28,143,23,0,0,202,224,137,146,21,1,106,27,128, -197,130,218,129,112,7,30,0,251,111,192,0,32,87,193,223,45,88,75,81, -96,87,193,223,128,7,46,2,0,194,128,7,170,1,29,184,61,239,5,0, -29,143,34,0,98,138,250,109,32,135,169,179,224,129,146,13,28,48,29,56, -191,255,66,149,224,81,178,5,128,7,2,2,27,16,197,18,2,112,218,113, -206,223,31,0,202,13,101,202,174,13,124,239,9,0,27,48,29,56,191,255, -248,253,65,202,128,7,96,1,101,202,134,21,218,17,4,98,98,103,30,0, -1,90,32,143,193,223,251,95,192,0,11,137,96,143,193,223,23,232,128,7, -74,1,2,128,218,129,208,231,31,0,154,61,60,127,1,0,239,233,242,29, -61,87,5,0,10,87,34,0,99,82,146,29,218,17,4,98,98,103,30,0, -1,90,32,143,193,223,251,95,192,0,11,137,96,143,193,223,98,82,154,13, -124,239,9,0,27,48,29,56,191,255,138,253,128,7,0,1,23,232,213,125, -224,193,234,13,1,114,218,17,98,7,30,0,251,119,192,0,32,95,193,223, -46,96,76,89,96,95,193,223,1,194,124,239,9,0,27,48,29,56,191,255, -88,253,245,101,23,232,213,101,17,16,97,18,234,45,27,136,194,138,36,118, -172,138,206,137,49,23,1,0,194,199,0,0,130,13,124,239,9,0,27,48, -29,56,191,255,138,249,181,77,27,104,197,106,218,105,109,7,30,0,1,82, -32,127,193,223,251,87,192,0,42,128,80,121,96,127,193,223,27,112,193,114, -36,94,236,138,203,113,238,87,1,0,138,86,0,64,98,87,0,0,1,194, -23,232,213,53,99,18,218,45,60,127,5,0,239,233,210,21,224,193,218,45, -224,201,183,45,1,82,27,104,197,106,218,105,109,7,30,0,251,87,192,0, -32,127,193,223,42,128,80,121,96,127,193,223,1,194,181,29,221,199,33,0, -226,5,36,119,224,139,65,114,100,119,224,139,60,23,13,0,60,103,5,0, -44,103,1,0,98,103,9,0,36,95,33,175,98,95,25,0,60,87,1,0, -234,233,178,5,191,7,82,254,60,143,1,0,241,233,234,53,60,55,17,0, -191,255,118,152,10,16,224,17,210,29,60,135,1,0,112,23,5,0,34,127, -9,0,124,127,1,0,60,119,5,0,224,113,202,229,124,23,5,0,2,232, -60,23,13,0,60,103,5,0,44,103,1,0,98,103,9,0,36,95,33,175, -98,95,25,0,197,213,224,193,154,21,224,201,247,13,1,114,27,136,197,138, -218,137,113,7,30,0,251,119,192,0,32,95,193,223,46,96,76,89,96,95, -193,223,64,6,255,241,0,0,3,30,116,255,128,255,160,0,63,6,228,212, -1,0,44,6,160,207,1,0,108,0,3,30,116,255,128,255,138,0,63,6, -228,212,1,0,44,6,198,80,1,0,108,0,3,30,116,255,128,255,116,0, -63,6,228,212,1,0,44,6,206,32,0,0,108,0,3,30,116,255,128,255, -94,0,63,6,228,212,1,0,44,6,210,175,129,0,108,0,3,30,116,255, -128,255,72,0,63,6,228,212,1,0,44,6,56,179,129,0,108,0,3,30, -116,255,128,255,50,0,63,6,228,212,1,0,44,6,158,41,129,0,108,0, -230,103,3,0,204,94,255,0,200,90,136,98,203,97,230,87,1,0,202,94, -0,255,216,82,200,90,203,81,204,81,127,0,99,95,37,0,99,103,41,0, -43,6,184,29,133,0,43,103,1,0,224,97,186,5,128,7,116,0,65,98, -107,103,1,0,99,15,5,0,99,23,9,0,99,47,13,0,99,55,17,0, -99,63,21,0,99,71,25,0,99,79,29,0,99,87,33,0,99,111,45,0, -99,119,49,0,99,127,53,0,99,135,57,0,99,143,61,0,99,151,65,0, -99,159,69,0,99,247,113,0,244,111,64,0,241,119,64,0,240,127,64,0, -225,135,64,0,224,143,64,0,99,111,121,0,99,119,125,0,99,127,129,0, -99,135,133,0,99,143,137,0,127,0,65,98,107,103,1,0,43,6,36,183, -255,255,43,103,1,0,224,97,186,5,128,7,124,0,99,15,5,0,99,23, -9,0,99,47,13,0,99,55,17,0,99,63,21,0,99,71,25,0,99,79, -29,0,99,87,33,0,99,111,45,0,99,119,49,0,99,127,53,0,99,135, -57,0,99,143,61,0,99,151,65,0,99,159,69,0,99,247,113,0,244,111, -64,0,241,119,64,0,240,127,64,0,225,135,64,0,224,143,64,0,99,111, -121,0,99,119,125,0,99,127,129,0,99,135,133,0,99,143,137,0,108,31, -9,0,43,6,32,183,255,255,43,31,1,0,127,0,3,30,140,0,127,0, -224,7,96,1,43,6,184,29,133,0,43,103,1,0,95,98,107,103,1,0, -224,97,186,5,128,7,128,0,35,103,121,0,35,111,125,0,35,119,129,0, -35,127,133,0,35,135,137,0,236,167,32,0,237,143,32,0,238,135,32,0, -239,15,32,0,240,7,32,0,35,15,5,0,35,23,9,0,35,47,13,0, -35,55,17,0,35,63,21,0,35,71,25,0,35,79,29,0,35,87,33,0, -35,95,37,0,35,103,41,0,35,111,45,0,35,119,49,0,35,127,53,0, -35,135,57,0,35,143,61,0,35,151,65,0,35,159,69,0,35,247,113,0, -35,255,117,0,3,30,140,0,224,7,64,1,43,6,36,183,255,255,43,103, -1,0,45,6,192,184,255,255,224,97,186,5,128,7,0,1,45,119,1,0, -47,6,40,183,255,255,224,113,178,5,128,7,16,0,47,135,1,0,240,97, -178,5,128,7,132,0,44,31,9,0,35,103,121,0,35,111,125,0,35,119, -129,0,35,127,133,0,35,135,137,0,236,167,32,0,237,143,32,0,238,135, -32,0,239,15,32,0,240,7,32,0,35,15,5,0,35,23,9,0,35,47, -13,0,35,55,17,0,35,63,21,0,35,71,25,0,35,79,29,0,35,87, -33,0,35,95,37,0,35,103,41,0,35,111,45,0,35,119,49,0,35,127, -53,0,35,135,57,0,35,143,61,0,35,151,65,0,35,159,69,0,35,247, -113,0,35,255,117,0,3,30,140,0,224,7,64,1,44,55,9,0,1,114, -102,119,1,0,102,167,73,0,102,175,77,0,102,183,81,0,102,191,85,0, -102,199,89,0,102,207,93,0,102,215,97,0,102,223,101,0,102,231,105,0, -102,239,109,0,47,6,196,29,133,0,47,135,1,0,224,129,186,5,128,7, -12,0,108,135,25,0,111,7,1,0,107,7,1,0,45,6,176,215,1,0, -237,7,32,0,224,7,64,1,45,6,176,215,1,0,237,7,32,0,224,7, -64,1,0,0,3,30,116,255,99,95,37,0,99,103,41,0,99,111,45,0, -99,119,49,0,99,127,53,0,43,6,220,70,133,0,43,103,1,0,65,98, -107,103,1,0,43,6,196,29,133,0,43,103,1,0,0,120,224,97,186,5, -128,7,30,0,95,98,107,103,1,0,224,97,178,5,128,7,16,0,43,6, -200,29,133,0,1,122,107,127,1,0,43,6,204,29,133,0,43,103,1,0, -44,111,1,0,224,105,186,5,128,7,20,0,43,6,208,29,133,0,1,122, -107,127,1,0,128,7,38,0,68,98,45,6,212,29,133,0,45,119,1,0, -236,113,178,5,128,7,14,0,45,6,216,29,133,0,45,103,1,0,107,103, -1,0,224,121,186,5,128,7,76,0,35,95,37,0,35,103,41,0,35,111, -45,0,35,119,49,0,35,127,53,0,191,255,106,252,43,6,208,29,133,0, -43,103,1,0,224,97,186,5,128,7,30,0,43,6,192,184,255,255,43,103, -1,0,65,98,107,103,1,0,38,6,176,134,133,0,191,255,142,230,191,7, -90,253,35,95,37,0,35,103,41,0,35,111,45,0,35,119,49,0,35,127, -53,0,35,255,117,0,3,30,140,0,224,7,64,1,0,0,224,135,96,1, -44,6,40,183,255,255,44,55,1,0,224,49,186,5,191,7,248,255,224,7, -96,1,44,6,36,183,255,255,108,55,1,0,38,111,5,0,38,119,25,0, -38,31,9,0,65,106,102,111,5,0,35,127,1,0,44,6,196,29,133,0, -108,119,1,0,224,121,178,5,128,7,70,0,35,47,5,0,35,167,9,0, -35,175,13,0,35,183,17,0,35,191,21,0,35,199,25,0,35,207,29,0, -35,215,33,0,35,223,37,0,35,231,41,0,35,239,45,0,35,247,49,0, -35,255,53,0,35,103,57,0,3,30,60,0,236,47,32,0,127,0,35,103, -121,0,35,111,125,0,35,119,129,0,35,127,133,0,35,135,137,0,236,167, -32,0,237,143,32,0,238,135,32,0,239,15,32,0,240,7,32,0,35,15, -5,0,35,23,9,0,35,47,13,0,35,55,17,0,35,63,21,0,35,71, -25,0,35,79,29,0,35,87,33,0,35,95,37,0,35,103,41,0,35,111, -45,0,35,119,49,0,35,127,53,0,35,135,57,0,35,143,61,0,35,151, -65,0,35,159,69,0,35,167,73,0,35,175,77,0,35,183,81,0,35,191, -85,0,35,199,89,0,35,207,93,0,35,215,97,0,35,223,101,0,35,231, -105,0,35,239,109,0,35,247,113,0,35,255,117,0,3,30,140,0,224,7, -64,1,0,0,65,115,115,101,114,116,58,37,100,32,102,114,111,109,32,37, -115,10,70,105,108,101,58,37,115,32,76,105,110,101,58,37,100,10,0,0, -83,101,110,100,32,65,69,78,32,40,99,111,100,101,44,32,116,105,109,101, -41,58,32,48,120,37,120,44,32,48,120,37,120,10,0,0,0,0,51,119, -97,114,101,85,115,101,114,80,97,115,115,119,111,114,100,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,97,111,112,67,111,109,112,105,108,101,114,46, -99,112,112,0,97,111,112,67,111,109,112,105,108,101,114,46,99,112,112,0, -97,111,112,67,111,109,112,105,108,101,114,46,99,112,112,0,10,42,42,42, -42,42,42,42,42,42,42,42,42,42,42,0,77,97,114,32,49,57,32,50, -48,48,52,0,10,66,117,105,108,100,32,116,97,114,103,101,116,32,58,32, -77,69,50,0,10,83,82,76,32,114,97,110,103,101,32,32,32,32,58,32, -48,120,37,48,52,88,45,48,120,37,48,52,88,0,0,0,10,66,114,97, -110,99,104,47,98,117,105,108,100,32,58,32,48,120,37,48,52,88,47,48, -120,37,48,52,88,0,0,0,10,10,65,112,97,99,104,101,32,82,65,73, -68,32,70,105,114,109,119,97,114,101,32,40,67,41,32,50,48,48,49,45, -50,48,48,52,32,51,119,97,114,101,44,32,73,110,99,10,0,0,0,0, -10,86,101,114,115,105,111,110,32,116,97,103,32,32,58,32,70,69,57,88, -32,50,46,48,50,46,48,48,46,48,48,56,0,0,0,0,10,67,111,109, -112,105,108,101,32,116,105,109,101,32,58,32,37,115,32,97,116,32,37,115, -0,0,0,0,49,50,58,50,57,58,53,55,0,0,0,0,10,83,116,97, -114,116,117,112,32,105,110,102,111,32,58,32,48,120,37,48,50,88,37,48, -50,88,0,0,45,45,32,83,65,84,65,32,45,45,10,0,65,99,104,105, -112,32,40,37,100,41,32,37,100,46,37,100,10,0,0,0,70,111,117,110, -100,32,37,100,32,97,99,104,105,112,115,33,10,0,0,0,97,99,104,105, -112,46,99,112,112,0,0,0,42,42,32,73,110,118,97,108,105,100,32,112, -111,114,116,32,99,111,117,110,116,32,115,101,116,116,105,110,103,32,40,37, -100,41,44,32,117,115,105,110,103,32,104,97,114,100,119,97,114,101,32,99, -111,117,110,116,32,40,37,100,41,46,32,42,42,10,0,0,98,105,111,115, -46,99,112,112,0,0,0,0,69,114,114,111,114,32,108,111,97,100,105,110, -103,32,66,73,79,83,58,32,48,120,37,48,52,120,44,32,37,115,10,0, -66,73,79,83,32,105,109,97,103,101,32,110,111,116,32,102,111,117,110,100, -10,0,0,0,10,83,98,117,102,32,102,97,105,108,117,114,101,32,100,101, -116,101,99,116,101,100,46,32,66,73,79,83,32,108,111,97,100,105,110,103, -32,115,107,105,112,112,101,100,10,0,0,0,66,73,79,83,32,97,108,114, -101,97,100,121,32,108,111,97,100,101,100,58,32,37,115,10,0,0,0,0, -66,73,79,83,32,105,109,97,103,101,32,108,111,97,100,101,100,58,32,37, -115,10,0,0,66,117,102,102,101,114,32,115,105,122,101,32,61,32,0,0, -98,117,102,102,101,114,77,103,114,46,99,112,112,0,0,0,83,109,97,108, -108,68,97,116,97,66,108,111,99,107,80,111,111,108,0,0,83,109,97,108, -108,80,97,114,105,116,121,66,108,111,99,107,80,111,111,108,0,0,0,0, -76,97,114,103,101,68,97,116,97,66,108,111,99,107,80,111,111,108,0,0, -76,97,114,103,101,80,97,114,105,116,121,66,108,111,99,107,80,111,111,108, -0,0,0,0,68,97,116,97,32,99,97,99,104,101,32,61,32,0,0,0, -80,97,114,105,116,121,32,98,117,102,102,101,114,32,61,32,0,0,0,0, -98,117,102,102,101,114,77,103,114,46,99,112,112,0,0,0,98,117,102,102, -101,114,77,103,114,46,99,112,112,0,0,0,3,0,0,0,2,0,0,0, -104,129,132,0,120,129,132,0,104,129,132,0,0,0,0,0,0,0,0,0, -3,0,0,0,1,0,0,0,120,129,132,0,104,129,132,0,120,129,132,0, -0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,120,129,132,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, -1,0,0,0,112,129,132,0,104,129,132,0,128,129,132,0,120,129,132,0, -128,129,132,0,3,0,0,0,1,0,0,0,128,129,132,0,120,129,132,0, -128,129,132,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0, -128,129,132,0,120,129,132,0,128,129,132,0,0,0,0,0,0,0,0,0, -196,184,255,255,16,0,0,0,36,185,255,255,16,0,0,0,244,184,255,255, -128,0,0,0,84,185,255,255,128,0,0,0,83,101,109,90,101,114,111,77, -83,101,103,115,0,0,0,0,98,117,102,102,101,114,85,116,105,108,115,46, -99,112,112,0,107,101,114,110,101,108,46,104,112,112,0,0,80,101,114,102, -111,114,109,105,110,103,32,83,98,117,102,32,116,101,115,116,115,46,46,46, -10,0,0,0,87,67,69,61,37,117,32,45,32,0,0,0,67,97,99,104, -101,32,83,101,116,116,105,110,103,115,58,32,0,0,0,0,99,97,99,104, -101,77,103,114,46,99,112,112,0,0,0,0,99,97,99,104,101,77,103,114, -46,99,112,112,0,0,0,0,99,97,99,104,101,77,103,114,46,99,112,112, -0,0,0,0,99,97,99,104,101,77,103,114,46,99,112,112,0,0,0,0, -99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104, -101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110, -77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46, -99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0, -99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104, -101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110, -77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46, -99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0, -99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0,78,117,109,98, -101,114,32,111,102,32,98,105,110,115,32,61,32,37,100,32,103,114,101,97, -116,101,114,32,116,104,97,110,32,49,32,105,115,32,110,111,116,32,115,117, -112,112,111,114,116,101,100,32,45,32,97,115,115,101,114,116,32,102,111,114, -32,110,111,119,46,0,0,0,99,97,99,104,101,66,105,110,77,103,114,46, -99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0, -99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104, -101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110, -77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46, -99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0, -99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104, -101,66,105,110,77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110, -77,103,114,46,99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46, -99,112,112,0,99,97,99,104,101,66,105,110,77,103,114,46,99,112,112,0, -99,97,99,104,101,83,101,103,77,103,114,46,99,112,112,0,99,97,99,104, -101,83,101,103,77,103,114,46,99,112,112,0,99,97,99,104,101,83,101,103, -77,103,114,46,99,112,112,0,99,97,99,104,101,83,101,103,77,103,114,46, -99,112,112,0,99,109,100,69,120,101,99,46,99,112,112,0,99,109,100,69, -120,101,99,46,99,112,112,0,112,99,104,105,112,46,104,112,112,0,0,0, -112,99,104,105,112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,107,101,114,110,101,108,46,104,112,112,0,0,107,101,114,110, -101,108,46,104,112,112,0,0,97,100,100,114,101,115,115,61,48,120,37,76, -88,44,32,108,101,110,103,116,104,61,48,120,37,88,44,32,99,109,100,61, -37,99,0,0,99,109,100,69,120,101,99,46,99,112,112,0,112,99,104,105, -112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -112,99,104,105,112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,112,99,104,105,112,46,104,112,112,0,0,0,107,101,114,110, -101,108,46,104,112,112,0,0,112,99,104,105,112,46,104,112,112,0,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,77,117,116,67,111,109,109,97,110,100,76,111,99,107,0,0, -99,109,100,84,97,115,107,46,99,112,112,0,99,109,100,84,97,115,107,46, -99,112,112,0,118,101,99,116,111,114,60,84,62,32,116,111,111,32,108,111, -110,103,0,0,118,101,99,116,111,114,60,84,62,32,116,111,111,32,108,111, -110,103,0,0,83,80,68,32,68,97,116,97,32,101,114,114,111,114,10,0, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,10,0,80,67,66,32,114,101,118,105,115,105,111,110,58,32,37,115, -10,0,0,0,83,80,68,32,68,101,118,105,99,101,32,110,111,116,32,102, -111,117,110,100,32,105,110,32,116,104,101,32,73,50,67,32,98,117,115,10, -0,0,0,0,83,111,102,116,32,82,101,115,101,116,115,32,61,32,37,100, -10,0,0,0,65,99,116,105,118,101,32,73,80,82,115,32,61,32,37,100, -10,0,0,0,76,111,99,107,101,100,32,73,80,82,115,32,61,32,37,100, -10,0,0,0,65,99,116,105,118,101,32,65,79,80,115,32,61,32,37,100, -10,0,0,0,65,99,116,105,118,101,32,68,79,80,115,32,61,32,37,100, -10,0,0,0,70,87,32,82,117,110,32,84,105,109,101,32,61,32,37,100, -115,10,0,0,83,66,117,102,32,115,116,101,112,32,35,37,100,58,32,0, -83,69,76,70,32,84,69,83,84,58,32,0,97,108,108,32,116,101,115,116, -115,32,99,111,109,112,108,101,116,101,100,46,10,0,0,0,112,111,114,116, -32,35,37,100,58,32,0,0,117,100,109,97,32,117,112,103,114,97,100,101, -32,100,105,115,97,98,108,101,100,59,32,0,117,100,109,97,32,117,112,103, -114,97,100,101,32,102,97,105,108,101,100,59,32,0,0,0,83,77,65,82, -84,32,111,112,99,111,100,101,32,102,97,105,108,101,100,59,32,0,0,0, -110,111,32,100,114,105,118,101,32,112,114,101,115,101,110,116,46,10,0,0, -109,111,100,101,61,37,100,44,32,112,111,114,116,61,37,100,0,0,0,0, -83,77,65,82,84,32,99,104,101,99,107,32,112,97,115,115,101,100,59,32, -0,0,0,0,83,77,65,82,84,32,99,104,101,99,107,32,100,105,115,97, -98,108,101,100,59,32,0,0,83,77,65,82,84,32,99,104,101,99,107,32, -98,121,112,97,115,115,101,100,58,32,100,114,105,118,101,32,105,110,32,115, -116,97,110,100,98,121,32,111,114,32,97,118,77,111,100,101,32,115,101,116, -59,32,0,0,112,114,101,112,97,114,97,116,105,111,110,59,32,0,0,0, -113,117,105,99,107,32,116,101,115,116,32,100,105,115,97,98,108,101,100,59, -32,0,0,0,113,117,105,99,107,32,116,101,115,116,59,32,0,0,0,0, -99,108,101,97,110,45,117,112,59,32,0,0,66,111,111,116,32,82,111,109, -32,118,101,114,115,105,111,110,58,32,37,115,10,0,0,0,77,117,116,68, -99,104,110,108,65,99,99,101,115,115,0,0,83,101,109,82,97,105,100,48, -67,111,97,108,101,115,99,101,0,0,0,0,42,42,32,68,101,97,100,32, -68,97,116,97,67,104,110,108,10,0,0,0,67,111,110,115,116,114,117,99, -116,68,99,104,110,108,32,69,114,114,111,114,10,0,0,0,32,67,111,110, -102,105,103,32,63,63,63,0,32,78,111,114,109,97,108,32,32,0,0,0, -32,86,101,114,105,102,121,32,32,0,0,0,32,73,110,105,116,32,32,32, -32,0,0,0,32,68,101,103,114,97,100,101,32,0,0,0,32,82,101,98, -117,105,108,100,32,0,0,0,32,69,120,112,97,110,100,32,32,0,0,0, -32,77,105,103,114,97,116,101,32,0,0,0,32,120,68,69,65,68,120,32, -32,0,0,0,32,77,111,100,101,32,63,63,63,0,0,0,32,84,87,73, -78,83,84,79,82,0,0,0,32,40,116,97,115,107,58,32,37,100,37,37, -41,0,0,0,32,77,73,71,82,65,84,73,79,78,0,0,32,99,97,112, -58,37,115,37,76,117,0,0,32,40,85,110,99,108,101,97,110,61,37,100, -41,10,0,0,42,42,32,67,97,110,110,111,116,32,99,114,101,97,116,101, -32,68,97,116,97,67,104,110,108,32,102,111,114,32,99,111,110,102,105,103, -32,48,120,37,88,10,0,0,42,42,32,67,97,110,110,111,116,32,99,111, -110,115,116,114,117,99,116,32,68,97,116,97,67,104,110,108,32,119,105,116, -104,32,37,105,32,115,117,98,45,99,104,97,110,110,101,108,115,10,0,0, -32,86,101,114,105,102,121,32,0,0,0,0,32,74,66,79,68,32,40,37, -100,41,91,37,100,93,0,0,32,99,97,112,58,32,37,117,32,40,108,98, -97,79,102,102,32,37,117,41,0,0,0,0,32,40,116,97,115,107,58,32, -37,100,37,37,41,10,0,0,68,101,108,101,116,101,32,74,47,73,47,67, -47,83,98,111,100,58,32,37,100,10,0,0,32,99,97,112,58,32,37,117, -32,40,108,98,97,79,102,102,32,37,117,41,10,0,0,0,32,86,101,114, -105,102,121,32,0,0,0,0,32,67,66,79,68,32,40,37,100,41,91,37, -100,93,0,0,32,86,101,114,105,102,121,32,0,0,0,0,32,83,66,79, -68,32,40,37,100,41,91,37,100,93,0,0,32,99,97,112,58,32,37,117, -32,40,108,98,97,79,102,102,32,37,117,41,0,0,0,0,32,40,116,97, -115,107,58,32,37,100,37,37,41,10,0,0,32,86,101,114,105,102,121,32, -0,0,0,0,32,73,66,79,68,32,40,37,100,41,91,37,100,93,0,0, -32,99,97,112,58,32,37,117,32,40,108,98,97,79,102,102,32,37,117,41, -0,0,0,0,32,40,116,97,115,107,58,32,37,100,37,37,41,10,0,0, -83,116,114,105,112,101,108,101,116,32,83,105,122,101,61,37,117,107,10,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32, -82,65,73,68,45,48,32,68,97,116,97,67,104,110,108,32,119,105,116,104, -32,37,105,32,115,117,98,45,99,104,97,110,110,101,108,115,10,0,0,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32, -82,65,73,68,45,48,32,68,97,116,97,67,104,110,108,32,119,105,116,104, -32,115,116,114,105,112,101,108,101,116,83,105,122,101,76,111,103,50,61,37, -105,10,0,0,42,42,32,67,97,110,110,111,116,32,99,111,110,115,116,114, -117,99,116,32,82,65,73,68,45,48,32,68,97,116,97,67,104,110,108,59, -32,116,111,116,97,108,32,115,116,114,105,112,101,115,32,97,114,101,32,48, -46,10,0,0,100,97,116,97,67,104,110,108,82,97,105,100,48,46,99,112, -112,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0,68,101,108,101, -116,101,32,82,97,105,100,48,32,40,108,101,118,101,108,44,32,76,111,103, -78,117,109,98,101,114,41,58,32,37,100,32,37,100,10,0,82,65,73,68, -49,32,115,117,98,117,110,105,116,61,37,100,0,0,0,0,42,42,32,67, -97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32,82,65,73,68, -45,49,32,68,97,116,97,67,104,110,108,32,119,105,116,104,32,37,105,32, -115,117,98,45,99,104,97,110,110,101,108,115,10,0,0,0,42,42,32,67, -97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32,82,65,73,68, -45,49,32,68,97,116,97,67,104,110,108,32,119,105,116,104,32,37,105,32, -98,97,100,32,115,117,98,45,99,104,97,110,110,101,108,115,10,0,0,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32, -82,65,73,68,45,49,32,68,97,116,97,67,104,110,108,32,119,105,116,104, -32,117,110,107,110,111,119,110,32,111,112,109,111,100,101,32,48,120,37,88, -10,0,0,0,42,42,32,67,111,117,108,100,32,110,111,116,32,97,108,108, -111,99,97,116,101,32,115,116,114,105,112,101,32,72,97,110,100,108,101,32, -105,110,32,82,65,73,68,45,49,10,0,0,42,42,32,67,97,110,110,111, -116,32,99,111,110,102,105,103,117,114,101,32,82,69,66,85,73,76,68,73, -78,71,32,82,65,73,68,45,49,32,68,97,116,97,67,104,110,108,32,100, -117,101,32,116,111,32,50,110,100,32,98,97,100,32,115,117,98,45,99,104, -97,110,110,101,108,32,37,105,10,0,0,0,42,42,32,67,97,110,110,111, -116,32,99,111,110,102,105,103,117,114,101,32,68,69,71,82,65,68,69,68, -32,82,65,73,68,45,49,32,68,97,116,97,67,104,110,108,32,100,117,101, -32,116,111,32,50,110,100,32,98,97,100,32,115,117,98,45,99,104,97,110, -110,101,108,32,37,105,10,0,68,101,108,101,116,101,32,77,105,114,114,111, -114,32,40,108,101,118,101,108,44,32,76,111,103,78,117,109,98,101,114,41, -58,32,37,100,32,37,100,10,0,0,0,0,83,116,114,105,112,101,108,101, -116,32,83,105,122,101,61,37,117,107,10,0,100,97,116,97,67,104,110,108, -82,97,105,100,53,46,99,112,112,0,0,0,82,65,73,68,53,32,115,117, -98,117,110,105,116,61,37,100,0,0,0,0,42,42,32,67,97,110,110,111, -116,32,99,111,110,115,116,114,117,99,116,32,82,65,73,68,45,53,32,68, -97,116,97,67,104,110,108,32,119,105,116,104,32,37,105,32,115,117,98,45, -99,104,97,110,110,101,108,115,10,0,0,0,42,42,32,67,97,110,110,111, -116,32,99,111,110,115,116,114,117,99,116,32,82,65,73,68,45,53,32,68, -97,116,97,67,104,110,108,32,119,105,116,104,32,115,116,114,105,112,101,108, -101,116,83,105,122,101,76,111,103,50,61,37,105,10,0,0,42,42,32,67, -97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32,82,65,73,68, -45,53,32,68,97,116,97,67,104,110,108,59,32,116,111,116,97,108,32,115, -116,114,105,112,101,115,32,97,114,101,32,48,46,10,0,0,42,42,32,67, -97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32,82,65,73,68, -45,53,32,68,97,116,97,67,104,110,108,32,119,105,116,104,32,37,105,32, -98,97,100,32,115,117,98,45,99,104,97,110,110,101,108,115,10,0,0,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32, -82,65,73,68,45,53,32,68,97,116,97,67,104,110,108,32,119,105,116,104, -32,117,110,107,110,111,119,110,32,111,112,109,111,100,101,32,48,120,37,88, -10,0,0,0,70,111,114,99,101,32,82,65,73,68,53,32,78,111,114,109, -97,108,32,109,111,100,101,10,0,0,0,0,42,42,32,67,111,117,108,100, -32,110,111,116,32,97,108,108,111,99,97,116,101,32,115,116,114,105,112,101, -32,72,97,110,100,108,101,32,105,110,32,82,65,73,68,45,53,10,0,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32, -82,69,66,85,73,76,68,73,78,71,32,82,65,73,68,45,53,32,68,97, -116,97,67,104,110,108,32,100,117,101,32,116,111,32,50,110,100,32,98,97, -100,32,115,117,98,45,99,104,97,110,110,101,108,32,37,105,10,0,0,0, -42,42,32,67,97,110,110,111,116,32,99,111,110,102,105,103,117,114,101,32, -68,69,71,82,65,68,69,68,32,82,65,73,68,45,53,32,68,97,116,97, -67,104,110,108,32,100,117,101,32,116,111,32,50,110,100,32,98,97,100,32, -115,117,98,45,99,104,97,110,110,101,108,32,37,105,10,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,100,97,116,97, -67,104,110,108,82,97,105,100,53,46,99,112,112,0,0,0,68,101,108,101, -116,101,32,82,97,105,100,53,32,40,108,101,118,101,108,44,32,76,111,103, -78,117,109,98,101,114,41,58,32,37,100,32,37,100,10,0,65,68,80,32, -78,111,114,109,97,108,32,87,114,105,116,101,10,0,0,0,100,97,116,97, -67,104,110,108,65,100,112,46,99,112,112,0,65,68,80,32,71,101,110,101, -114,97,116,101,32,83,121,110,99,32,87,114,105,116,101,10,0,0,0,0, -100,97,116,97,67,104,110,108,65,100,112,46,99,112,112,0,65,68,80,32, -71,101,110,101,114,97,116,101,32,83,121,110,99,87,114,105,116,101,10,0, -65,68,80,32,82,101,97,100,88,111,114,83,98,117,102,87,105,116,104,83, -121,110,99,87,114,105,116,101,10,0,0,0,32,65,68,80,32,40,37,100, -41,91,37,100,93,0,0,0,32,99,97,112,58,32,37,117,10,0,0,0, -65,68,80,32,78,111,114,109,97,108,32,82,101,97,100,10,0,0,0,0, -100,97,116,97,67,104,110,108,65,100,112,46,99,112,112,0,100,97,116,97, -67,104,110,108,84,119,105,110,46,99,112,112,0,0,0,0,83,116,114,105, -112,101,32,83,105,122,101,61,37,117,107,10,0,0,0,0,42,42,32,67, -97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32,109,105,103,114, -97,116,105,111,110,32,68,97,116,97,67,104,110,108,32,119,105,116,104,32, -37,105,32,115,117,98,45,99,104,97,110,110,101,108,115,10,0,0,0,0, -67,97,110,110,111,116,32,65,108,108,111,99,97,116,101,32,72,97,110,100, -108,101,32,105,110,32,77,105,103,10,0,0,68,101,108,101,116,101,32,77, -105,103,32,40,108,101,118,101,108,44,32,76,111,103,78,117,109,98,101,114, -41,58,32,37,100,32,37,100,10,0,0,0,68,101,108,101,116,101,32,79, -102,102,40,108,105,110,101,41,32,40,108,101,118,101,108,41,58,32,37,100, -10,0,0,0,73,115,115,117,101,82,101,97,100,66,97,99,107,117,112,0, -82,101,97,100,76,101,103,97,99,121,80,114,105,109,97,114,121,0,0,0, -80,114,111,99,101,115,115,66,97,99,107,117,112,0,0,0,80,114,111,99, -101,115,115,76,101,103,97,99,121,0,0,0,73,115,115,117,101,82,101,97, -100,80,114,105,109,97,114,121,0,0,0,0,73,115,115,117,101,83,110,105, -102,102,66,97,99,107,117,112,0,0,0,0,82,101,97,100,76,101,103,97, -99,121,66,97,99,107,117,112,0,0,0,0,80,114,111,99,101,115,115,80, -114,105,109,97,114,121,0,0,67,104,101,99,107,83,110,105,102,102,66,97, -99,107,117,112,0,0,0,0,67,111,109,112,108,101,116,101,0,0,0,0, -68,105,115,107,70,97,105,108,101,100,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,68,99,98,77,103,114,58,58,37,115,58,32,32,32,32,32, -32,32,32,32,40,102,105,110,105,115,104,32,37,100,41,10,0,0,0,0, -42,42,42,68,99,98,77,103,114,58,58,37,115,58,32,85,78,73,84,32, -37,50,100,32,45,32,69,114,114,111,114,32,37,35,88,10,0,0,0,0, -68,99,98,77,103,114,58,58,87,114,105,116,101,70,108,97,103,115,0,0, -100,99,98,77,103,114,46,99,112,112,0,0,68,99,98,77,103,114,58,58, -109,117,116,101,120,68,99,98,0,0,0,0,100,99,98,77,103,114,46,99, -112,112,0,0,68,99,98,77,103,114,58,58,73,115,115,117,101,82,101,97, -100,66,97,99,107,117,112,58,32,112,111,114,116,61,37,100,44,32,76,66, -65,61,48,120,37,88,10,0,68,99,98,77,103,114,58,58,82,101,97,100, -76,101,103,97,99,121,66,97,99,107,117,112,58,32,112,111,114,116,61,37, -100,44,32,76,66,65,61,48,120,37,88,10,0,0,0,0,112,111,114,116, -61,37,100,44,32,101,114,114,111,114,61,48,120,37,88,0,68,99,98,77, -103,114,58,58,80,114,111,99,101,115,115,80,114,105,109,97,114,121,58,32, -112,111,114,116,61,37,100,44,32,101,114,114,111,114,61,48,120,37,48,52, -88,10,0,0,68,99,98,77,103,114,58,58,80,114,111,99,101,115,115,66, -97,99,107,117,112,58,32,112,111,114,116,61,37,100,44,32,101,114,114,111, -114,32,61,32,48,120,37,48,52,88,10,0,68,99,98,77,103,114,58,58, -80,114,111,99,101,115,115,76,101,103,97,99,121,58,32,112,111,114,116,61, -37,100,44,32,101,114,114,111,114,32,61,32,48,120,37,48,52,88,10,0, -112,111,114,116,61,37,100,44,32,101,114,114,111,114,61,48,120,37,88,0, -51,87,97,114,101,68,67,66,0,0,0,0,68,99,98,77,103,114,58,58, -70,101,116,99,104,71,117,105,100,40,41,58,32,73,110,118,97,108,105,100, -32,71,85,73,68,44,32,112,111,114,116,32,37,100,10,0,100,99,98,77, -103,114,46,99,112,112,0,0,100,99,98,77,103,114,46,99,112,112,0,0, -68,99,98,77,103,114,58,58,70,101,116,99,104,71,117,105,100,40,41,58, -32,73,110,118,97,108,105,100,32,85,68,66,44,32,112,111,114,116,32,37, -100,10,0,0,100,99,98,77,103,114,46,99,112,112,0,0,42,42,32,73, -110,118,97,108,105,100,32,115,117,112,112,111,114,116,32,115,101,103,109,101, -110,116,32,40,105,103,110,111,114,101,100,41,58,32,112,111,114,116,32,37, -100,10,0,0,107,101,114,110,101,108,46,104,112,112,0,0,100,99,98,77, -103,114,46,99,112,112,0,0,68,99,98,77,103,114,58,58,87,114,105,116, -101,83,101,103,109,101,110,116,40,109,97,112,61,48,120,37,88,44,32,115, -101,103,73,68,61,48,120,37,88,44,32,101,118,101,110,116,115,61,37,105, -44,32,101,114,114,111,114,61,48,120,37,88,41,10,0,0,68,99,98,77, -103,114,58,58,37,115,58,32,85,78,73,84,32,37,50,100,32,40,116,105, -109,101,32,32,32,37,100,41,10,0,0,0,87,114,105,116,101,78,101,119, -0,0,0,0,100,99,98,77,103,114,46,99,112,112,0,0,85,112,100,97, -116,101,65,114,114,97,121,0,68,99,98,77,103,114,58,58,37,115,58,32, -85,78,73,84,32,37,50,100,32,40,116,105,109,101,32,32,32,37,100,41, -10,0,0,0,100,99,98,77,103,114,46,99,112,112,0,0,68,99,98,77, -103,114,58,58,37,115,58,32,85,78,73,84,32,37,50,100,32,40,116,105, -109,101,32,32,32,37,100,41,10,0,0,0,85,112,100,97,116,101,83,116, -97,116,117,115,0,0,0,0,100,99,98,77,103,114,46,99,112,112,0,0, -85,112,100,97,116,101,83,117,112,112,111,114,116,0,0,0,68,99,98,77, -103,114,58,58,37,115,58,32,85,78,73,84,32,37,50,100,32,40,116,105, -109,101,32,32,32,37,100,41,10,0,0,0,100,99,98,77,103,114,46,99, -112,112,0,0,100,99,98,77,103,114,46,99,112,112,0,0,68,99,98,77, -103,114,58,58,67,108,101,97,114,80,114,101,118,105,111,117,115,68,99,98, -58,32,112,111,114,116,32,37,50,100,44,32,115,101,99,116,111,114,115,32, -37,100,10,0,100,99,98,77,103,114,46,99,112,112,0,0,68,99,98,77, -103,114,58,58,69,114,97,115,101,68,99,98,66,97,115,101,58,32,112,111, -114,116,32,37,50,100,44,32,108,111,99,97,116,105,111,110,67,111,100,101, -32,39,37,99,39,10,0,0,77,97,107,101,67,98,111,100,115,0,0,0, -68,99,98,77,103,114,58,58,37,115,58,32,85,78,73,84,32,37,50,100, -32,40,116,105,109,101,32,32,32,37,100,41,10,0,0,0,100,99,98,77, -103,114,46,99,112,112,0,0,100,99,98,77,103,114,46,99,112,112,0,0, -51,87,97,114,101,68,67,66,0,0,0,0,100,99,98,77,103,114,46,99, -112,112,0,0,32,32,42,42,32,68,105,100,32,110,111,116,32,102,105,110, -100,32,97,110,121,32,118,97,108,105,100,32,115,117,112,112,111,114,116,32, -115,101,103,109,101,110,116,115,32,102,111,114,32,85,110,105,116,32,37,100, -10,0,0,0,100,99,98,77,103,114,46,99,112,112,0,0,68,99,98,77, -103,114,91,37,105,93,32,45,32,99,97,110,110,111,116,32,115,99,114,117, -98,32,68,67,66,44,32,99,117,114,114,101,110,116,32,83,98,117,102,32, -83,101,103,73,100,61,48,120,37,88,10,0,0,0,0,0,108,24,133,0, -0,0,255,255,30,87,128,0,1,0,0,0,100,24,133,0,0,0,255,255, -42,87,128,0,2,0,0,0,64,146,132,0,0,0,255,255,16,88,128,0, -3,0,0,0,84,146,132,0,0,0,255,255,78,88,128,0,4,0,0,0, -252,145,132,0,0,0,255,255,36,88,128,0,5,0,0,0,12,146,132,0, -0,0,255,255,220,88,128,0,6,0,0,0,104,146,132,0,0,0,255,255, -244,88,128,0,7,0,0,0,124,146,132,0,0,0,255,255,26,89,128,0, -8,0,0,0,140,146,132,0,0,0,255,255,116,91,128,0,9,0,0,0, -32,146,132,0,0,0,255,255,236,89,128,0,10,0,0,0,48,146,132,0, -0,0,255,255,182,90,128,0,11,0,0,0,160,146,132,0,0,0,255,255, -182,91,128,0,12,0,0,0,172,146,132,0,0,0,255,255,208,91,128,0, -69,110,116,101,114,115,32,116,104,101,32,109,111,110,105,116,111,114,32,109, -111,100,101,0,83,105,109,117,108,97,116,101,32,101,114,114,111,114,115,0, -68,105,115,112,108,97,121,32,102,105,114,109,119,97,114,101,32,115,116,97, -116,117,115,0,70,105,114,109,119,97,114,101,44,32,66,73,79,83,32,118, -101,114,115,105,111,110,115,0,105,102,32,110,111,110,45,122,101,114,111,44, -32,115,97,118,101,32,97,110,121,32,83,69,84,84,73,78,71,83,32,116, -104,97,116,32,103,101,116,32,99,104,97,110,103,101,100,0,80,114,105,110, -116,32,108,105,115,116,32,111,102,32,117,110,105,116,115,0,60,117,110,105, -116,35,62,32,45,32,117,110,108,111,99,107,32,97,108,108,32,100,114,105, -118,101,115,32,111,102,32,117,110,105,116,0,60,111,110,124,111,102,102,124, -99,108,101,97,114,124,115,104,111,119,124,114,101,108,124,110,111,114,101,108, -62,32,99,111,109,109,97,110,100,32,104,105,115,116,111,114,121,0,0,0, -67,111,110,116,105,110,117,101,115,32,102,114,111,109,32,97,110,32,78,77, -73,0,0,0,60,115,105,122,101,62,32,60,97,100,100,114,62,0,0,0, -60,115,105,122,101,62,32,60,97,100,100,114,62,32,60,118,97,108,117,101, -62,0,0,0,60,118,97,114,105,97,98,108,101,32,110,97,109,101,62,32, -91,60,118,97,108,117,101,62,93,0,0,0,115,107,105,112,114,101,115,101, -116,0,0,0,118,101,114,98,111,115,105,116,121,0,0,0,99,111,109,109, -101,110,116,32,108,105,110,101,32,45,32,110,111,32,97,99,116,105,111,110, -0,0,0,0,67,111,109,112,97,114,101,32,82,79,77,32,97,110,100,32, -82,65,77,32,105,109,97,103,101,115,0,0,68,105,115,112,108,97,121,32, -109,97,120,32,76,66,65,32,97,110,100,32,104,111,115,116,32,97,100,100, -114,101,115,115,0,0,0,0,80,114,105,110,116,32,108,105,115,116,32,111, -102,32,100,114,105,118,101,115,0,0,0,0,72,101,108,112,32,45,32,108, -105,115,116,32,99,111,109,109,97,110,100,115,0,0,0,0,109,101,109,119, -114,105,116,101,0,0,0,0,60,116,97,98,108,101,62,32,60,105,110,100, -101,120,62,32,91,60,110,101,119,32,118,97,108,117,101,93,32,71,101,116, -47,91,83,101,116,93,32,112,97,114,97,109,101,116,101,114,32,118,97,114, -0,0,0,0,112,114,105,110,116,98,117,102,0,0,0,0,68,105,115,112, -108,97,121,32,112,114,105,110,116,32,98,117,102,102,101,114,0,0,0,0, -112,114,105,110,116,108,111,103,0,0,0,0,68,105,115,112,108,97,121,32, -116,104,101,32,112,114,105,110,116,108,111,103,0,0,0,0,105,102,32,110, -111,110,45,122,101,114,111,32,45,32,105,103,110,111,114,101,115,32,115,111, -102,116,32,114,101,115,101,116,115,32,97,102,116,101,114,32,97,115,115,101, -114,116,0,0,115,107,105,112,105,110,105,116,0,0,0,0,105,102,32,110, -111,110,45,122,101,114,111,32,45,32,115,107,105,112,32,114,97,105,100,53, -32,122,101,114,111,47,105,110,105,116,32,111,110,32,99,114,101,97,116,105, -111,110,0,0,97,117,116,111,115,97,118,101,0,0,0,0,60,119,114,105, -116,101,111,110,99,101,124,101,120,99,108,117,100,101,100,117,110,105,116,115, -124,102,97,99,116,111,114,121,100,97,116,97,124,10,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,112,114,105,110,116,108,111,103, -124,102,105,114,109,119,97,114,101,124,108,111,99,97,108,62,32,102,108,97, -115,104,32,102,105,108,101,0,115,101,116,32,98,105,116,115,32,116,111,32, -101,110,97,98,108,101,32,114,111,108,108,99,97,108,108,32,112,114,105,110, -116,111,117,116,115,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,49,32,45,32,102,105,110, -100,32,100,114,105,118,101,115,32,112,104,97,115,101,10,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,50,32,45,32,99,104,101,99,107,32,68,67,66,115,32,112,104,97,115, -101,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,52,32,45,32,109,97,107,101,32,82,65,73, -68,32,117,110,105,116,115,32,112,104,97,115,101,0,0,0,68,101,98,117, -103,32,67,111,109,109,97,110,100,32,110,111,116,32,70,111,117,110,100,46, -32,65,118,97,105,108,97,98,108,101,32,99,111,109,109,97,110,100,115,32, -97,114,101,58,10,0,0,0,70,105,114,109,119,97,114,101,32,58,32,37, -115,44,32,83,82,76,58,32,37,100,44,32,83,82,76,95,77,73,78,58, -32,37,100,44,32,66,85,73,76,68,58,32,37,100,44,32,66,82,65,78, -67,72,58,32,37,100,10,0,70,69,57,88,32,50,46,48,50,46,48,48, -46,48,48,56,0,0,0,0,66,105,111,115,32,32,32,32,32,58,32,37, -115,10,0,0,37,115,32,61,32,37,117,32,40,48,120,37,88,41,10,0, -84,104,101,32,102,111,108,108,111,119,105,110,103,32,118,97,114,105,97,98, -108,101,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,58,10,0, -42,42,32,84,104,105,114,100,32,97,114,103,117,109,101,110,116,32,109,117, -115,116,32,98,101,32,110,117,109,101,114,105,99,59,32,99,97,110,110,111, -116,32,115,101,116,32,37,115,10,0,0,0,42,42,32,69,114,114,111,114, -32,48,120,37,88,32,102,114,111,109,32,71,101,116,80,97,114,97,109,10, -0,0,0,0,85,110,107,110,111,119,110,32,118,97,114,105,97,98,108,101, -58,32,37,115,46,32,0,0,37,49,50,115,32,40,37,105,32,98,121,116, -101,115,41,58,32,37,115,10,0,0,0,0,42,42,32,84,104,105,114,100, -32,97,114,103,117,109,101,110,116,32,109,117,115,116,32,98,101,32,110,117, -109,101,114,105,99,32,116,111,32,115,101,116,32,112,97,114,97,109,10,0, -116,97,98,108,101,32,48,120,37,120,91,37,117,93,32,61,32,37,100,32, -40,48,120,37,88,41,10,0,42,42,32,69,114,114,111,114,58,32,116,97, -98,108,101,32,110,117,109,98,101,114,32,97,110,100,32,105,110,100,101,120, -32,109,117,115,116,32,98,101,32,110,117,109,101,114,105,99,10,0,0,0, -42,42,32,69,114,114,111,114,32,48,120,37,88,32,102,114,111,109,32,71, -101,116,47,83,101,116,32,80,97,114,97,109,10,0,0,0,42,42,32,69, -114,114,111,114,32,48,120,37,88,32,102,114,111,109,32,71,101,116,80,97, -114,97,109,10,0,0,0,0,37,49,50,115,32,61,61,62,32,37,115,10, -0,0,0,0,102,97,99,116,111,114,121,100,97,116,97,0,70,108,97,115, -104,70,105,108,101,32,100,101,108,101,116,101,100,58,32,37,115,32,45,32, -48,120,37,88,32,98,121,116,101,115,10,0,68,101,108,101,116,101,32,119, -104,97,116,63,10,0,0,0,119,114,105,116,101,111,110,99,101,0,0,0, -101,120,99,108,117,100,101,100,117,110,105,116,115,0,0,0,112,114,105,110, -116,108,111,103,0,0,0,0,102,105,114,109,119,97,114,101,0,0,0,0, -70,108,97,115,104,70,105,108,101,32,110,111,116,32,112,114,101,115,101,110, -116,58,32,37,115,10,0,0,85,115,97,103,101,58,32,99,114,101,97,116, -101,32,60,115,105,103,110,97,116,117,114,101,62,32,60,115,105,122,101,32, -105,110,32,75,66,62,10,0,70,108,97,115,104,32,102,105,108,101,32,99, -114,101,97,116,105,111,110,32,101,114,111,114,10,0,0,0,70,108,97,115, -104,32,102,105,108,101,32,48,120,37,48,56,88,32,97,108,114,101,97,100, -121,32,112,114,101,115,101,110,116,44,32,115,105,122,101,32,61,32,37,35, -88,10,0,0,70,108,97,115,104,32,102,105,108,101,32,48,120,37,48,56, -88,32,99,114,101,97,116,101,100,10,0,0,32,33,61,32,40,38,48,120, -37,48,56,88,41,32,48,120,37,48,56,88,10,0,0,0,35,35,32,109, -105,115,99,111,109,112,97,114,101,32,40,38,48,120,37,48,56,88,41,32, -48,120,37,48,56,88,0,0,86,97,108,117,101,32,61,32,48,120,37,48, -50,88,10,0,86,97,108,117,101,32,61,32,48,120,37,48,52,88,10,0, -86,97,108,117,101,32,61,32,48,120,37,48,56,88,10,0,85,115,97,103, -101,58,32,109,101,109,114,101,97,100,32,60,115,105,122,101,62,32,60,97, -100,100,114,62,10,0,0,0,73,110,118,97,108,105,100,32,115,105,122,101, -10,0,0,0,73,110,118,97,108,105,100,32,115,105,122,101,10,0,0,0, -85,115,97,103,101,58,32,109,101,109,119,114,105,116,101,32,60,115,105,122, -101,62,32,60,97,100,100,114,62,32,60,118,97,108,117,101,62,10,0,0, -78,111,32,112,114,105,110,116,32,108,111,103,32,104,97,115,32,98,101,101, -110,32,115,97,118,101,100,32,121,101,116,46,10,0,0,0,112,114,105,110, -116,108,111,103,0,0,0,0,10,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,10,0,0,73,110,118,97,108,105,100,32, -117,110,105,116,32,110,117,109,98,101,114,58,32,37,115,10,0,0,0,0, -69,114,114,111,114,32,48,120,37,88,32,100,117,114,105,110,103,32,85,110, -108,111,99,107,32,111,102,32,117,110,105,116,32,37,100,10,0,0,0,0, -200,24,133,0,0,154,132,0,2,134,128,0,220,24,133,0,0,154,132,0, -2,134,128,0,164,24,133,0,28,154,132,0,116,131,128,0,172,24,133,0, -92,153,132,0,126,12,1,0,224,24,133,0,56,154,132,0,84,15,1,0, -232,24,133,0,144,155,132,0,114,130,128,0,240,24,133,0,92,154,132,0, -42,130,128,0,248,24,133,0,140,153,132,0,58,130,128,0,202,24,133,0, -116,154,132,0,66,130,128,0,180,24,133,0,164,153,132,0,230,131,128,0, -140,154,132,0,180,153,132,0,100,132,128,0,188,24,133,0,156,152,132,0, -240,127,128,0,204,24,133,0,152,154,132,0,28,127,128,0,208,154,132,0, -220,154,132,0,212,132,128,0,244,154,132,0,0,155,132,0,212,132,128,0, -252,24,133,0,180,152,132,0,212,250,128,0,4,25,133,0,196,152,132,0, -220,22,128,0,212,24,133,0,36,153,132,0,30,130,128,0,12,25,133,0, -56,153,132,0,154,133,128,0,192,24,133,0,204,153,132,0,36,126,128,0, -196,24,133,0,220,152,132,0,232,125,128,0,232,153,132,0,24,155,132,0, -44,151,145,0,72,155,132,0,84,155,132,0,100,151,145,0,244,153,132,0, -236,155,132,0,192,150,145,0,132,155,132,0,244,152,132,0,204,144,145,0, -67,111,117,108,100,110,39,116,32,105,110,105,116,105,97,108,105,122,101,32, -100,105,97,103,110,111,115,116,105,99,32,116,101,115,116,32,102,111,114,32, -114,101,113,32,73,68,32,61,32,37,48,52,88,46,10,0,100,101,116,97, -105,108,115,32,111,102,32,101,114,114,111,114,115,58,10,0,32,32,69,114, -114,111,114,32,105,110,32,105,110,105,116,105,97,108,105,122,105,110,103,32, -116,101,115,116,58,32,48,120,37,48,52,120,10,0,0,0,32,116,101,115, -116,37,105,32,69,114,114,61,37,48,52,120,10,0,0,0,32,32,32,32, -116,101,115,116,32,37,45,51,105,58,32,32,69,114,114,111,114,67,111,100, -101,32,61,32,37,48,52,120,10,0,0,0,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,0,0,0,0, -32,84,101,115,116,115,32,112,101,114,102,111,114,109,101,100,58,32,32,37, -105,10,0,0,32,32,32,32,32,35,32,111,102,32,101,114,114,111,114,115, -58,32,32,37,105,10,0,0,69,114,114,111,114,67,111,100,101,32,61,32, -37,48,52,88,46,10,0,0,32,32,84,104,105,115,32,115,104,111,117,108, -100,32,110,101,118,101,114,32,98,101,32,101,120,101,99,117,116,101,100,33, -10,0,0,0,117,80,32,60,45,62,32,83,98,117,102,32,100,97,116,97, -32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46,46,10, -0,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,117,80,32,60,45,62,32,104,111,115,116,32,100,97,116,97, -32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46,46,10, -0,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,83,98,117,102,32,116,111,32,104,111,115,116,32,100,97,116, -97,32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46,46, -10,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,72,111,115,116,32,116,111,32,83,98,117,102,32,100,97,116, -97,32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46,46, -10,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,78,117,108,108,32,116,101,115,116,46,10,0,84,101,115,116, -32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0,65,112,111,114, -116,32,60,45,62,32,104,111,115,116,32,60,45,62,32,117,80,32,100,97, -116,97,32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46, -46,10,0,0,65,112,111,114,116,35,32,61,32,37,105,10,0,0,0,0, -84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0, -117,80,32,60,45,62,32,80,99,104,105,112,32,80,98,117,102,32,100,97, -116,97,32,105,110,116,101,103,114,105,116,121,32,116,101,115,116,115,46,46, -46,10,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,117,80,32,82,65,77,32,116,101,115,116,46,46,46,10,0, -32,32,32,32,82,65,77,32,115,116,97,114,116,32,97,100,100,114,58,32, -48,120,37,120,32,32,101,110,100,32,97,100,100,114,58,32,48,120,37,120, -32,32,115,105,122,101,32,48,120,37,120,10,32,32,32,32,35,32,116,101, -115,116,32,108,111,99,97,116,105,111,110,115,58,32,37,105,10,0,0,0, -84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0, -65,112,111,114,116,45,100,114,105,118,101,110,32,83,98,117,102,32,60,45, -62,32,100,105,115,107,32,98,117,102,102,101,114,32,116,101,115,116,115,46, -46,46,10,0,65,112,111,114,116,35,32,61,32,37,105,10,0,0,0,0, -84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0, -83,98,117,102,32,109,101,109,111,114,121,32,116,101,115,116,46,46,46,10, -0,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,79,98,115,111,108,101,116,101,32,116,101,115,116,32,45,45, -32,110,111,32,116,101,115,116,115,32,112,101,114,102,111,114,109,101,100,46, -10,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,78,117,109,98,101,114,32,111,102,32,65,112,111,114,116,115, -32,116,111,32,116,101,115,116,58,32,37,105,10,0,0,0,77,117,108,116, -105,45,65,112,111,114,116,115,32,100,105,115,107,32,82,47,87,32,116,101, -115,116,46,46,46,10,0,0,84,101,115,116,32,67,111,117,110,116,32,61, -32,37,105,10,0,0,0,0,83,105,110,103,108,101,45,65,112,111,114,116, -32,100,105,115,107,32,82,47,87,32,116,101,115,116,46,46,46,10,0,0, -65,112,111,114,116,35,32,61,32,37,105,10,0,0,0,0,84,101,115,116, -32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0,67,104,101,99, -107,115,117,109,32,111,102,32,102,108,97,115,104,32,82,79,77,32,116,101, -115,116,46,46,46,10,0,0,84,101,115,116,32,67,111,117,110,116,32,61, -32,37,105,10,0,0,0,0,65,99,104,105,112,32,88,79,82,32,116,101, -115,116,46,46,46,10,0,0,65,112,111,114,116,35,32,61,32,37,105,10, -0,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,65,99,104,105,112,32,38,32,80,99,104,105,112,32,116,111, -32,117,80,32,105,110,116,101,114,114,117,112,116,32,108,105,110,101,32,116, -101,115,116,46,46,46,10,0,32,32,32,32,84,101,115,116,105,110,103,32, -102,111,114,32,37,105,32,65,99,104,105,112,32,105,110,116,115,32,97,110, -100,32,50,32,80,99,104,105,112,32,105,110,116,115,46,10,0,0,0,0, -84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0, -82,101,97,100,32,117,80,32,109,101,109,32,98,121,116,101,115,46,46,46, -10,0,0,0,84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10, -0,0,0,0,87,114,105,116,101,32,117,80,32,109,101,109,32,98,121,116, -101,115,46,46,46,10,0,0,84,101,115,116,32,67,111,117,110,116,32,61, -32,37,105,10,0,0,0,0,82,101,97,100,32,117,80,32,109,101,109,32, -119,111,114,100,115,46,46,46,10,0,0,0,84,101,115,116,32,67,111,117, -110,116,32,61,32,37,105,10,0,0,0,0,87,114,105,116,101,32,117,80, -32,109,101,109,32,119,111,114,100,115,46,46,46,10,0,0,84,101,115,116, -32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0,68,114,105,118, -101,32,85,68,77,65,32,109,111,100,101,32,116,101,115,116,46,46,46,10, -0,0,0,0,65,112,111,114,116,35,32,61,32,37,105,10,0,0,0,0, -84,101,115,116,32,67,111,117,110,116,32,61,32,37,105,10,0,0,0,0, -83,69,84,84,73,78,71,83,32,68,101,108,101,116,105,111,110,58,32,87, -82,73,84,69,32,79,78,67,69,32,116,121,112,101,10,0,83,69,84,84, -73,78,71,83,32,68,101,108,101,116,105,111,110,58,32,87,82,73,84,69, -32,79,78,67,69,32,116,121,112,101,44,32,110,111,32,102,108,97,115,104, -32,102,105,108,101,32,112,114,101,115,101,110,116,32,40,97,108,114,101,97, -100,121,32,100,101,108,101,116,101,100,41,10,0,0,0,0,67,111,117,108, -100,110,39,116,32,99,108,101,97,114,32,83,98,117,102,33,10,0,0,0, -80,98,117,102,32,101,114,114,111,114,33,32,32,32,32,80,98,117,102,32, -98,121,116,101,32,111,102,102,115,101,116,32,37,48,51,120,58,32,32,119, -114,111,116,101,32,37,48,50,120,32,44,32,32,114,101,97,100,32,37,48, -50,120,32,46,10,0,0,0,67,111,117,108,100,110,39,116,32,99,108,101, -97,114,32,83,98,117,102,33,10,0,0,0,67,111,117,108,100,110,39,116, -32,119,114,105,116,101,32,83,98,117,102,33,10,0,0,0,67,111,117,108, -100,110,39,116,32,114,101,97,100,32,83,98,117,102,33,10,0,0,0,0, -83,104,111,114,116,32,105,110,32,83,98,117,102,32,100,97,116,97,32,108, -105,110,101,33,32,32,32,32,83,98,117,102,32,98,121,116,101,32,111,102, -102,115,101,116,32,37,48,51,120,58,32,32,119,114,111,116,101,32,37,48, -50,120,32,44,32,32,114,101,97,100,32,37,48,50,120,32,46,10,0,0, -84,104,101,114,101,32,97,114,101,110,39,116,32,97,116,32,108,101,97,115, -116,32,37,105,32,65,112,111,114,116,115,32,119,105,116,104,32,100,114,105, -118,101,115,32,97,116,116,97,99,104,101,100,33,10,0,0,78,111,32,100, -114,105,118,101,32,111,110,32,65,112,111,114,116,32,37,105,33,10,0,0, -32,32,32,32,67,104,101,99,107,115,117,109,32,61,32,37,48,52,88,10, -0,0,0,0,88,79,82,32,101,114,114,111,114,33,32,32,32,32,83,98, -117,102,32,97,100,100,114,32,37,120,58,32,32,115,104,111,117,108,100,32, -98,101,32,37,48,50,120,32,44,32,32,98,117,116,32,114,101,97,100,32, -37,48,50,120,32,46,10,0,73,110,116,32,108,105,110,101,32,101,114,114, -111,114,33,32,32,32,32,80,99,104,105,112,32,65,32,105,110,116,32,119, -111,117,108,100,110,39,116,32,103,111,32,72,105,103,104,32,97,116,32,117, -80,46,10,0,73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32, -32,32,32,80,99,104,105,112,32,66,32,105,110,116,32,119,111,117,108,100, -110,39,116,32,103,111,32,72,105,103,104,32,97,116,32,117,80,46,10,0, -73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32,32,32,32,65, -108,108,32,65,99,104,105,112,32,105,110,116,32,108,105,110,101,115,32,119, -101,114,101,110,39,116,32,72,105,103,104,32,97,116,32,117,80,46,10,0, -73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32,32,32,32,65, -99,104,105,112,37,105,32,105,110,116,32,108,105,110,101,32,119,111,117,108, -100,110,39,116,32,103,111,32,76,111,119,32,97,116,32,117,80,46,10,0, -73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32,32,32,32,65, -99,104,105,112,37,105,32,105,110,116,32,108,105,110,101,32,119,111,117,108, -100,110,39,116,32,103,111,32,72,105,103,104,32,97,116,32,117,80,46,10, -0,0,0,0,73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32, -32,32,32,80,99,104,105,112,32,65,32,105,110,116,32,119,111,117,108,100, -110,39,116,32,103,111,32,76,111,119,32,97,116,32,117,80,46,10,0,0, -73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32,32,32,32,80, -99,104,105,112,32,65,32,105,110,116,32,105,115,32,115,104,111,114,116,101, -100,32,116,111,32,80,99,104,105,112,32,66,32,105,110,116,46,10,0,0, -73,110,116,32,108,105,110,101,32,101,114,114,111,114,33,32,32,32,32,80, -99,104,105,112,32,66,32,105,110,116,32,119,111,117,108,100,110,39,116,32, -103,111,32,76,111,119,32,97,116,32,117,80,46,10,0,0,32,32,32,32, -82,101,97,100,32,65,100,100,114,101,115,115,58,32,48,120,37,120,10,0, -32,32,32,32,78,117,109,98,101,114,32,111,102,32,66,121,116,101,115,32, -116,111,32,114,101,97,100,58,32,48,120,37,120,10,0,0,32,32,32,32, -78,117,109,98,101,114,32,111,102,32,66,121,116,101,115,32,116,111,32,119, -114,105,116,101,58,32,48,120,37,120,10,0,32,32,32,32,87,114,105,116, -101,32,65,100,100,114,101,115,115,58,32,48,120,37,120,10,0,0,0,0, -32,32,32,32,82,101,97,100,32,65,100,100,114,101,115,115,58,32,48,120, -37,120,10,0,32,32,32,32,78,117,109,98,101,114,32,111,102,32,119,111, -114,100,115,32,116,111,32,114,101,97,100,58,32,48,120,37,120,10,0,0, -32,32,32,32,78,117,109,98,101,114,32,111,102,32,119,111,114,100,115,32, -116,111,32,119,114,105,116,101,58,32,48,120,37,120,10,0,32,32,32,32, -87,114,105,116,101,32,65,100,100,114,101,115,115,58,32,48,120,37,120,10, -0,0,0,0,117,110,100,101,102,105,110,101,100,33,10,0,85,68,77,65, -45,49,48,48,10,0,0,0,85,68,77,65,45,49,51,51,10,0,0,0, -32,32,32,32,85,68,77,65,32,109,111,100,101,32,61,32,0,0,0,0, -85,68,77,65,45,51,51,10,0,0,0,0,85,68,77,65,45,54,54,10, -0,0,0,0,66,97,100,32,82,65,77,32,108,111,99,97,116,105,111,110, -33,32,32,32,32,87,114,111,116,101,32,116,111,32,65,100,100,114,32,37, -120,44,32,97,110,100,32,105,116,32,99,104,97,110,103,101,100,32,65,100, -100,114,32,37,120,46,10,0,66,97,100,32,82,65,77,32,108,111,99,97, -116,105,111,110,33,32,32,32,32,65,100,100,114,32,37,120,58,32,32,119, -114,111,116,101,32,37,120,32,44,32,114,101,97,100,32,98,97,99,107,32, -37,120,32,46,10,0,0,0,66,97,100,32,82,65,77,32,108,111,99,97, -116,105,111,110,33,32,32,32,32,87,114,111,116,101,32,116,111,32,65,100, -100,114,32,37,120,32,44,32,97,110,100,32,105,116,32,99,104,97,110,103, -101,100,32,65,100,100,114,32,37,120,32,46,10,0,0,0,67,111,117,108, -100,110,39,116,32,119,114,105,116,101,32,83,98,117,102,33,10,0,0,0, -67,111,117,108,100,110,39,116,32,114,101,97,100,32,83,98,117,102,33,10, -0,0,0,0,79,112,101,110,32,105,110,32,83,98,117,102,32,100,97,116, -97,32,108,105,110,101,33,32,32,32,32,83,98,117,102,32,98,121,116,101, -32,111,102,102,115,101,116,32,37,48,51,120,58,32,32,119,114,111,116,101, -32,37,48,50,120,32,44,32,32,114,101,97,100,32,37,48,50,120,32,46, -10,0,0,0,66,97,100,32,83,98,117,102,32,108,111,99,97,116,105,111, -110,33,32,32,32,32,83,98,117,102,32,97,100,100,114,32,37,120,58,32, -32,119,114,111,116,101,32,37,48,50,120,32,44,32,32,114,101,97,100,32, -37,48,50,120,32,46,10,0,67,111,117,108,100,110,39,116,32,119,114,105, -116,101,32,83,98,117,102,33,10,0,0,0,67,111,117,108,100,110,39,116, -32,114,101,97,100,32,83,98,117,102,33,10,0,0,0,0,66,97,100,32, -83,98,117,102,32,97,100,100,114,101,115,115,32,108,105,110,101,33,32,83, -98,117,102,32,97,100,100,114,32,37,120,58,32,32,119,114,111,116,101,32, -37,48,49,54,120,44,32,32,114,101,97,100,32,37,48,49,54,120,10,0, -67,111,117,108,100,110,39,116,32,119,114,105,116,101,32,83,98,117,102,33, -10,0,0,0,67,111,117,108,100,110,39,116,32,114,101,97,100,32,83,98, -117,102,33,10,0,0,0,0,66,97,100,32,83,98,117,102,32,97,100,100, -114,101,115,115,32,108,105,110,101,33,32,83,98,117,102,32,97,100,100,114, -32,37,120,58,32,32,115,104,111,117,108,100,32,98,101,32,48,44,32,98, -117,116,32,105,116,32,119,97,115,32,99,104,97,110,103,101,100,32,116,111, -32,37,48,49,54,120,10,0,68,82,86,95,78,79,84,95,80,82,69,83, -69,78,84,0,68,82,86,95,72,65,83,95,85,78,67,79,78,86,69,82, -84,69,68,95,68,67,66,0,68,82,86,95,72,65,83,95,85,78,83,85, -80,80,79,82,84,69,68,95,68,67,66,0,68,82,86,95,80,82,69,83, -69,78,84,0,85,78,83,85,80,80,79,82,84,69,68,0,68,82,86,95, -70,65,73,76,69,68,95,67,65,66,76,69,95,84,69,83,84,0,0,0, -68,82,86,95,70,65,73,76,69,68,95,67,79,78,70,73,71,95,79,80, -83,0,0,0,68,82,86,95,78,79,84,95,83,85,80,80,79,82,84,69, -68,0,0,0,68,82,86,95,82,69,77,79,86,69,68,95,74,66,79,68, -0,0,0,0,68,82,86,95,72,65,83,95,68,67,66,95,68,65,84,65, -95,67,72,69,67,75,0,0,68,82,86,95,72,65,83,95,68,67,66,95, -79,82,80,72,65,78,0,0,68,82,86,95,72,65,83,95,68,67,66,95, -82,69,65,68,95,70,65,73,76,85,82,69,0,0,0,0,68,82,86,95, -72,65,83,95,68,67,66,95,82,69,65,68,95,84,73,77,69,79,85,84, -0,0,0,0,85,68,77,65,45,49,48,48,0,0,0,0,85,68,77,65, -45,49,51,51,0,0,0,0,0,0,0,0,180,176,132,0,1,0,0,0, -80,177,132,0,217,0,0,0,196,176,132,0,219,0,0,0,220,176,132,0, -221,0,0,0,100,177,132,0,223,0,0,0,124,177,132,0,236,0,0,0, -144,177,132,0,238,0,0,0,172,177,132,0,0,0,0,0,12,177,132,0, -0,0,0,0,36,177,132,0,254,0,0,0,60,177,132,0,255,0,0,0, -244,176,132,0,85,78,75,78,79,87,78,32,83,84,65,84,85,83,0,0, -37,115,32,40,48,120,37,88,41,10,0,0,68,114,105,118,101,32,114,101, -109,111,118,101,100,44,32,0,68,114,105,118,101,32,97,100,100,101,100,44, -32,0,0,0,68,73,84,91,37,50,105,93,46,115,116,97,116,117,115,32, -61,32,0,0,32,32,32,77,111,100,101,108,32,35,58,32,37,115,10,0, -32,32,83,101,114,105,97,108,32,35,58,32,37,115,10,0,32,32,68,114, -118,32,70,87,32,35,58,32,37,115,10,0,32,32,83,65,84,65,32,78, -67,81,58,32,37,100,10,0,80,119,114,32,67,121,99,108,101,115,58,32, -37,100,10,0,32,32,65,99,111,117,115,116,105,99,58,32,48,120,37,88, -44,32,100,101,102,61,48,120,37,88,32,40,48,120,70,69,61,98,101,115, -116,32,112,101,114,102,111,114,109,97,110,99,101,41,10,0,40,115,101,99, -117,114,105,116,121,32,102,101,97,116,117,114,101,32,110,111,116,32,115,117, -112,112,111,114,116,101,100,32,33,33,32,93,10,0,0,0,45,45,80,111, -114,116,91,37,50,100,93,45,0,0,0,0,68,73,84,32,115,116,97,116, -117,115,58,32,0,0,0,0,32,32,67,97,112,97,99,105,116,121,58,32, -37,108,117,32,40,48,120,37,48,56,108,88,41,10,0,0,32,70,101,97, -116,46,32,69,120,116,58,32,84,105,109,101,76,105,109,105,116,101,100,32, -82,47,87,58,32,37,100,44,32,87,68,77,65,32,70,85,65,58,32,37, -100,44,32,83,116,114,101,97,109,58,32,37,100,10,0,0,32,32,83,101, -99,117,114,105,116,121,58,32,83,116,97,116,117,115,61,48,120,37,88,32, -0,0,0,0,40,37,115,44,32,37,115,37,115,10,0,0,100,105,115,97, -98,108,101,100,0,0,0,0,117,110,108,111,99,107,101,100,0,0,0,0, -44,32,43,32,109,111,114,101,46,46,46,41,0,0,0,0,32,85,100,109, -97,32,77,111,100,101,58,32,48,120,37,88,32,40,37,115,41,10,0,0, -32,32,70,101,97,116,117,114,101,115,58,32,83,77,65,82,84,58,32,37, -100,44,32,83,101,99,117,114,105,116,121,58,32,37,100,44,32,52,56,45, -98,105,116,32,97,100,100,114,58,32,37,100,44,32,65,99,111,117,115,116, -105,99,58,32,37,100,44,32,10,0,0,0,87,97,105,116,83,116,97,103, -103,101,114,84,105,109,101,0,80,114,111,99,101,115,115,67,104,101,99,107, -80,119,114,0,68,111,110,101,67,97,99,104,101,69,110,97,98,108,101,0, -83,101,116,65,99,111,117,115,116,105,99,77,111,100,101,0,68,111,110,101, -83,109,97,114,116,69,110,97,98,108,101,0,68,111,110,101,83,101,116,80, -97,115,115,119,111,114,100,0,83,97,116,97,87,97,105,116,79,79,66,0, -84,101,115,116,66,117,102,82,101,97,100,0,68,111,110,101,66,117,102,82, -101,97,100,0,73,115,115,117,101,83,112,105,110,117,112,0,73,115,115,117, -101,85,110,108,111,99,107,0,70,97,105,108,101,100,68,114,105,118,101,0, -70,97,105,108,101,100,67,97,98,108,101,0,70,105,110,100,68,114,105,118, -101,0,0,0,73,115,115,117,101,67,104,101,99,107,80,119,114,0,0,0, -83,101,116,85,100,109,97,84,105,109,105,110,103,0,0,0,68,111,110,101, -76,111,111,107,65,104,101,97,100,0,0,0,82,101,115,101,116,68,114,105, -118,101,0,0,83,97,116,97,67,104,101,99,107,79,79,66,0,0,0,0, -84,101,115,116,68,114,105,118,101,82,101,97,100,121,0,0,84,101,115,116, -84,102,82,101,103,115,0,0,68,111,110,101,84,102,82,101,103,115,0,0, -84,101,115,116,66,117,102,87,114,105,116,101,0,0,0,0,73,115,115,117, -101,73,100,101,110,116,0,0,80,114,111,99,101,115,115,73,100,101,110,116, -0,0,0,0,68,111,110,101,83,112,105,110,117,112,0,0,68,111,110,101, -85,100,109,97,84,105,109,105,110,103,0,0,83,101,116,67,97,99,104,101, -69,110,97,98,108,101,0,0,83,101,116,76,111,111,107,65,104,101,97,100, -0,0,0,0,68,111,110,101,65,99,111,117,115,116,105,99,77,111,100,101, -0,0,0,0,83,101,116,83,109,97,114,116,69,110,97,98,108,101,0,0, -73,115,115,117,101,83,109,97,114,116,65,116,116,114,0,0,80,114,111,99, -101,115,115,83,109,97,114,116,65,116,116,114,0,0,0,0,73,115,115,117, -101,83,101,116,80,97,115,115,119,111,114,100,0,0,0,0,68,111,110,101, -85,110,108,111,99,107,0,0,85,110,115,117,112,112,111,114,116,101,100,68, -114,105,118,101,0,0,0,0,67,111,109,112,108,101,116,101,0,0,0,0, -68,114,118,73,110,118,101,110,116,111,114,121,0,0,0,0,100,114,105,118, -101,73,110,118,101,110,116,111,114,121,46,99,112,112,0,0,100,114,105,118, -101,73,110,118,101,110,116,111,114,121,46,99,112,112,0,0,91,116,105,109, -101,32,37,53,100,93,32,80,111,114,116,32,37,50,100,32,84,70,95,83, -84,65,84,85,83,58,32,48,120,37,48,50,120,0,0,0,44,32,112,114, -101,118,105,111,117,115,58,32,48,120,37,48,50,120,32,40,37,100,32,116, -105,109,101,115,41,0,0,0,91,116,105,109,101,32,37,53,100,93,32,80, -111,114,116,32,37,50,100,32,84,70,95,83,84,65,84,85,83,58,32,48, -120,37,48,50,120,32,40,37,100,32,116,105,109,101,115,41,10,0,0,0, -1,2,4,8,16,32,64,128,0,255,254,253,251,231,239,223,191,127,0,0, -100,114,105,118,101,73,110,118,101,110,116,111,114,121,46,99,112,112,0,0, -91,116,105,109,101,32,37,53,100,93,32,80,111,114,116,32,37,50,100,32, -77,73,83,67,79,77,80,65,82,69,40,115,41,32,100,117,114,105,110,103, -32,98,117,102,102,101,114,32,82,47,87,32,116,101,115,116,46,32,40,66, -105,116,115,58,32,48,120,37,48,52,88,41,10,0,0,0,100,114,105,118, -101,73,110,118,101,110,116,111,114,121,46,99,112,112,0,0,10,70,97,105, -108,32,83,109,97,114,116,32,69,110,97,98,108,101,0,0,10,70,97,105, -108,32,82,101,97,100,32,83,109,97,114,116,32,65,116,116,114,105,98,117, -116,101,115,0,100,114,105,118,101,73,110,118,101,110,116,111,114,121,46,99, -112,112,0,0,100,114,105,118,101,73,110,118,101,110,116,111,114,121,46,99, -112,112,0,0,83,101,101,107,32,76,66,65,32,48,10,0,91,116,105,109, -101,32,37,53,100,93,32,83,112,105,110,117,112,32,100,114,105,118,101,32, -37,50,100,32,45,32,0,0,83,101,116,32,70,101,97,116,117,114,101,10, -0,0,0,0,42,42,80,111,114,116,32,37,53,100,32,70,65,73,76,69, -68,46,32,73,80,82,32,101,114,114,111,114,32,99,111,100,101,58,32,48, -120,37,48,50,120,44,32,102,114,111,109,32,115,116,97,116,101,32,37,115, -10,0,0,0,0,0,0,0,100,25,133,0,0,0,255,255,86,195,128,0, -1,0,0,0,84,181,132,0,0,0,255,255,146,195,128,0,2,0,0,0, -196,180,132,0,0,0,255,255,138,196,128,0,3,0,0,0,96,181,132,0, -0,0,255,255,216,196,128,0,4,0,0,0,24,181,132,0,0,0,255,255, -88,198,128,0,5,0,0,0,112,181,132,0,0,0,255,255,174,198,128,0, -6,0,0,0,128,181,132,0,0,0,255,255,250,199,128,0,7,0,0,0, -140,181,132,0,0,0,255,255,144,200,128,0,8,0,0,0,152,181,132,0, -0,0,255,255,198,200,128,0,9,0,0,0,208,180,132,0,0,0,255,255, -134,201,128,0,10,0,0,0,220,180,132,0,0,0,255,255,38,202,128,0, -11,0,0,0,168,181,132,0,0,0,255,255,232,202,128,0,12,0,0,0, -180,181,132,0,0,0,255,255,110,203,128,0,13,0,0,0,232,180,132,0, -0,0,255,255,14,212,128,0,14,0,0,0,196,181,132,0,0,0,255,255, -26,213,128,0,15,0,0,0,100,180,132,0,0,0,255,255,194,211,128,0, -16,0,0,0,36,181,132,0,0,0,255,255,80,213,128,0,17,0,0,0, -116,180,132,0,0,0,255,255,160,213,128,0,18,0,0,0,52,181,132,0, -0,0,255,255,102,204,128,0,19,0,0,0,208,181,132,0,0,0,255,255, -56,205,128,0,20,0,0,0,224,181,132,0,0,0,255,255,112,205,128,0, -21,0,0,0,132,180,132,0,0,0,255,255,8,206,128,0,22,0,0,0, -240,181,132,0,0,0,255,255,64,206,128,0,23,0,0,0,68,181,132,0, -0,0,255,255,218,206,128,0,24,0,0,0,148,180,132,0,0,0,255,255, -18,207,128,0,25,0,0,0,0,182,132,0,0,0,255,255,0,208,128,0, -26,0,0,0,20,182,132,0,0,0,255,255,56,208,128,0,27,0,0,0, -164,180,132,0,0,0,255,255,192,208,128,0,28,0,0,0,36,182,132,0, -0,0,255,255,2,209,128,0,29,0,0,0,52,182,132,0,0,0,255,255, -138,209,128,0,30,0,0,0,72,182,132,0,0,0,255,255,74,210,128,0, -31,0,0,0,180,180,132,0,0,0,255,255,198,210,128,0,32,0,0,0, -244,180,132,0,0,0,255,255,252,210,128,0,33,0,0,0,92,182,132,0, -0,0,255,255,138,211,128,0,34,0,0,0,116,25,133,0,0,0,255,255, -16,214,128,0,35,0,0,0,108,25,133,0,0,0,255,255,46,214,128,0, -36,0,0,0,0,181,132,0,0,0,255,255,136,214,128,0,37,0,0,0, -12,181,132,0,0,0,255,255,154,214,128,0,38,0,0,0,104,182,132,0, -0,0,255,255,172,214,128,0,39,0,0,0,124,182,132,0,0,0,255,255, -62,215,128,0,67,97,98,108,101,32,67,82,67,32,101,114,114,111,114,0, -78,111,116,32,114,101,97,100,121,32,101,114,114,111,114,0,80,67,73,32, -97,98,111,114,116,32,101,114,114,111,114,0,66,70,66,32,67,82,67,32, -119,114,105,116,101,32,101,114,114,111,114,0,84,111,107,101,110,32,101,114, -114,111,114,0,80,67,73,32,116,105,109,101,111,117,116,0,68,97,116,97, -32,69,67,67,32,101,114,114,111,114,32,40,104,111,115,116,41,0,0,0, -65,98,111,114,116,101,100,32,99,111,109,109,97,110,100,32,40,105,110,116, -41,0,0,0,65,98,111,114,116,101,100,32,99,111,109,109,97,110,100,32, -40,101,120,116,41,0,0,0,72,97,110,100,108,101,114,32,101,114,114,111, -114,0,0,0,67,111,109,109,97,110,100,32,114,101,116,114,121,0,0,0, -99,97,98,108,101,32,67,82,67,0,0,0,66,70,66,32,67,82,67,32, -119,114,105,116,101,0,0,0,110,111,116,32,114,101,97,100,121,0,0,0, -80,67,73,32,97,98,111,114,116,0,0,0,68,97,116,97,32,69,67,67, -32,101,114,114,111,114,32,40,105,110,116,41,0,0,0,0,68,97,116,97, -32,69,67,67,32,101,114,114,111,114,32,40,99,97,99,104,101,41,0,0, -84,70,82,32,114,101,97,100,98,97,99,107,32,101,114,114,111,114,0,0, -80,111,114,116,32,116,105,109,101,111,117,116,32,40,105,110,116,41,0,0, -80,111,114,116,32,116,105,109,101,111,117,116,32,40,101,120,116,41,0,0, -71,101,110,101,114,105,99,32,112,111,114,116,32,101,114,114,111,114,0,0, -66,70,66,32,67,82,67,32,114,101,97,100,32,101,114,114,111,114,0,0, -80,67,73,32,112,97,114,105,116,121,32,101,114,114,111,114,0,0,0,0, -67,111,114,114,101,99,116,101,100,32,83,66,85,70,32,69,67,67,0,0, -85,110,99,111,114,114,101,99,116,101,100,32,83,66,85,70,32,69,67,67, -0,0,0,0,100,97,116,97,32,69,67,67,0,0,0,0,84,70,82,32, -114,101,97,100,98,97,99,107,0,0,0,0,117,110,107,110,111,119,110,32, -100,105,115,107,0,0,0,0,66,70,66,32,67,82,67,32,114,101,97,100, -0,0,0,0,80,67,73,32,112,97,114,105,116,121,0,0,99,111,114,114, -101,99,116,97,98,108,101,32,83,66,85,70,32,69,67,67,0,0,0,0, -117,110,99,111,114,114,101,99,116,97,98,108,101,32,83,66,85,70,32,69, -67,67,0,0,105,112,114,77,97,110,97,103,101,114,46,104,112,112,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -80,61,37,88,32,58,32,37,115,44,32,110,111,32,114,101,116,114,105,101, -115,10,0,0,32,32,32,32,58,32,37,115,10,0,0,0,101,114,114,111, -114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,58,32,82,101,99,117,114,115,105,118,101, -32,114,101,99,111,118,101,114,121,44,32,112,114,101,118,105,111,117,115,32, -101,99,32,48,120,37,48,52,88,10,0,0,101,114,114,111,114,72,97,110, -100,108,101,114,46,99,112,112,0,0,0,0,101,114,114,111,114,72,97,110, -100,108,101,114,46,99,112,112,0,0,0,0,69,61,37,48,52,88,32,73, -61,37,48,56,88,32,84,61,37,48,56,88,32,0,0,0,112,111,114,116, -61,37,100,44,32,97,100,100,114,101,115,115,61,48,120,37,88,0,0,0, -32,32,32,32,58,32,66,117,102,102,101,114,32,97,100,100,114,101,115,115, -32,48,120,37,48,56,88,10,0,0,0,0,97,100,100,114,101,115,115,61, -48,120,37,88,0,0,0,0,32,32,32,32,32,32,32,32,32,97,116,97, -32,116,97,115,107,32,102,105,108,101,32,114,101,97,100,32,98,97,99,107, -32,58,32,115,116,32,100,104,32,99,104,32,99,108,32,115,110,32,115,99, -32,101,114,10,0,0,0,0,32,32,32,32,32,32,32,97,116,97,32,116, -97,115,107,32,102,105,108,101,32,119,114,105,116,116,101,110,32,111,117,116, -32,58,32,99,100,32,100,104,32,99,104,32,99,108,32,115,110,32,115,99, -32,102,116,10,0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,58,32,37,48,50,88,32,37,48,50,88,32,37,48,50,88,32,37,48, -50,88,32,37,48,50,88,32,37,48,50,88,32,37,48,50,88,10,0,0, -80,61,37,88,32,58,32,80,114,101,112,97,114,101,32,102,111,114,32,99, -111,109,109,97,110,100,32,114,101,116,114,121,10,0,0,0,101,114,114,111, -114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0,80,61,37,88, -32,58,32,67,111,109,112,108,101,116,101,32,73,80,82,115,32,105,110,32, -101,114,114,111,114,10,0,0,32,32,32,32,58,32,82,101,99,111,118,101, -114,121,32,99,111,109,112,108,101,116,101,32,119,105,116,104,111,117,116,32, -114,101,116,114,105,101,115,10,0,0,0,0,80,61,37,88,32,58,32,80, -114,101,112,97,114,101,32,102,111,114,32,100,101,103,114,97,100,101,10,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -82,101,116,114,121,105,110,103,32,99,104,97,105,110,10,0,80,111,114,116, -32,114,101,116,114,121,32,110,111,116,32,97,108,108,111,119,101,100,10,0, -82,101,116,114,121,32,110,111,116,32,97,108,108,111,119,101,100,10,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -80,61,37,88,32,58,32,83,111,102,116,32,114,101,115,101,116,32,100,114, -105,118,101,10,0,0,0,0,80,61,37,88,32,58,32,82,101,115,101,116, -32,102,97,105,108,101,100,10,0,0,0,0,80,61,37,88,32,58,32,72, -97,114,100,32,114,101,115,101,116,32,102,97,105,108,101,100,10,0,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -80,61,37,88,32,58,32,72,97,114,100,32,114,101,115,101,116,32,100,114, -105,118,101,10,0,0,0,0,80,61,37,88,32,58,32,83,97,116,97,32, -98,114,105,100,103,101,32,114,101,115,101,116,10,0,0,0,101,114,114,111, -114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0,80,61,37,88, -32,58,32,83,97,116,97,32,98,114,105,100,103,101,32,114,101,115,101,116, -32,102,97,105,108,101,100,10,0,0,0,0,80,61,37,88,32,58,32,82, -101,115,101,116,32,115,101,113,117,101,110,99,101,114,10,0,101,114,114,111, -114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0,80,61,37,88, -32,58,32,84,105,109,101,111,117,116,32,114,101,99,111,118,101,114,101,100, -10,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112, -0,0,0,0,80,61,37,88,32,58,32,84,105,109,101,111,117,116,32,114, -101,99,111,118,101,114,121,32,110,111,116,32,97,108,108,111,119,101,100,10, -0,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112, -0,0,0,0,80,61,37,88,32,58,32,68,111,119,110,103,114,97,100,105, -110,103,32,102,114,111,109,32,85,68,77,65,32,37,100,32,116,111,32,37, -100,10,0,0,109,111,100,101,61,37,100,44,32,112,111,114,116,61,37,100, -0,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112, -0,0,0,0,80,61,37,88,32,58,32,85,110,108,111,99,107,32,100,114, -105,118,101,10,0,0,0,0,80,61,37,88,32,58,32,83,101,99,117,114, -105,116,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,10,0,0, -80,61,37,88,32,58,32,67,104,101,99,107,32,112,111,119,101,114,32,109, -111,100,101,44,32,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114, -46,99,112,112,0,0,0,0,115,112,105,110,32,117,112,32,46,46,46,10, -0,0,0,0,105,100,101,110,116,105,102,121,32,101,114,114,111,114,32,48, -120,37,48,52,88,10,0,0,105,110,105,116,105,97,108,61,37,100,44,32, -99,117,114,114,101,110,116,61,37,100,10,0,80,61,37,88,32,58,32,67, -104,101,99,107,32,112,111,119,101,114,32,99,121,99,108,101,115,44,32,0, -85,68,77,65,32,105,115,32,100,105,115,97,98,108,101,100,10,0,0,0, -101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112,0,0,0,0, -80,61,37,88,32,58,32,67,104,101,99,107,32,85,68,77,65,32,109,111, -100,101,44,32,0,0,0,0,83,101,99,116,111,114,32,105,115,32,98,101, -121,111,110,100,32,117,115,101,114,32,100,97,116,97,32,97,114,101,97,32, -45,32,115,107,105,112,112,105,110,103,10,0,80,61,37,88,32,58,32,82, -101,112,97,105,114,32,76,66,65,32,48,120,37,88,46,46,46,0,0,0, -83,116,114,105,112,101,32,108,111,99,107,101,100,32,45,32,115,107,105,112, -112,105,110,103,10,0,0,0,69,114,114,111,114,32,48,120,37,48,52,88, -10,0,0,0,112,111,114,116,61,37,100,44,32,76,66,65,61,48,120,37, -88,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112, -0,0,0,0,82,101,112,97,105,114,32,116,105,109,101,100,45,111,117,116, -32,111,114,32,101,114,114,111,114,32,100,117,114,105,110,103,32,119,114,105, -116,101,32,45,32,115,107,105,112,112,105,110,103,10,0,0,82,101,99,111, -110,115,116,114,117,99,116,32,101,114,114,111,114,10,0,0,32,32,32,32, -58,32,68,101,103,114,97,100,101,32,112,111,114,116,109,97,112,32,48,120, -37,48,52,88,10,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114, -46,99,112,112,0,0,0,0,85,61,37,88,32,58,32,82,101,116,114,121, -105,110,103,32,99,111,109,109,97,110,100,10,0,0,0,0,85,61,37,88, -32,58,32,82,101,116,114,121,105,110,103,32,99,111,109,109,97,110,100,32, -0,0,0,0,101,114,114,111,114,72,97,110,100,108,101,114,46,99,112,112, -0,0,0,0,105,110,32,100,101,103,114,97,100,101,100,32,114,101,97,100, -32,109,111,100,101,10,0,0,105,110,32,97,108,116,101,114,110,97,116,101, -32,119,114,105,116,101,32,109,111,100,101,10,0,0,0,0,105,110,32,99, -117,114,114,101,110,116,32,109,111,100,101,10,0,0,0,0,80,61,37,88, -32,58,32,78,101,101,100,32,69,97,114,108,121,32,68,101,103,114,97,100, -101,10,0,0,85,61,37,88,32,58,32,82,101,116,117,114,110,32,101,114, -114,111,114,32,115,116,97,116,117,115,32,116,111,32,104,111,115,116,10,0, -85,61,37,88,32,58,32,70,97,105,108,101,100,32,116,111,32,119,114,105, -116,101,32,99,97,99,104,101,32,100,97,116,97,10,0,0,73,110,118,97, -108,105,100,32,97,114,103,117,109,101,110,116,10,0,0,0,101,110,97,98, -108,101,100,44,32,0,0,0,100,105,115,97,98,108,101,100,44,0,0,0, -73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,97,114, -103,117,109,101,110,116,115,10,0,0,0,0,69,114,114,111,114,32,115,105, -109,117,108,97,116,105,111,110,32,101,110,97,98,108,101,100,32,119,105,116, -104,32,109,97,115,107,32,48,120,37,48,52,88,10,0,0,69,114,114,111, -114,32,115,105,109,117,108,97,116,105,111,110,32,100,105,115,97,98,108,101, -100,10,0,0,69,114,114,111,114,32,115,105,109,117,108,97,116,105,111,110, -32,115,116,97,116,117,115,10,0,0,0,0,109,97,115,107,32,48,120,37, -48,52,88,32,37,115,32,101,99,32,48,120,37,48,52,88,32,37,115,32, -101,114,114,111,114,10,0,0,0,0,0,0,136,247,128,0,1,0,0,0, -22,245,128,0,2,0,0,0,106,245,128,0,3,0,0,0,0,228,128,0, -4,0,0,0,108,244,128,0,5,0,0,0,14,234,128,0,6,0,0,0, -122,232,128,0,7,0,0,0,22,233,128,0,8,0,0,0,58,229,128,0, -9,0,0,0,118,239,128,0,10,0,0,0,146,242,128,0,11,0,0,0, -148,222,128,0,12,0,0,0,146,223,128,0,13,0,0,0,4,223,128,0, -14,0,0,0,66,237,128,0,15,0,0,0,8,225,128,0,16,0,0,0, -68,226,128,0,17,0,0,0,166,227,128,0,18,0,0,0,142,231,128,0, -19,0,0,0,168,246,128,0,20,0,0,0,14,236,128,0,21,0,0,0, -246,246,128,0,1,0,0,0,0,2,0,0,216,187,132,0,2,0,0,0, -1,2,0,0,228,187,132,0,4,0,0,0,2,2,0,0,224,188,132,0, -8,0,0,0,3,2,0,0,236,188,132,0,16,0,0,0,4,2,0,0, -128,25,133,0,32,0,0,0,8,2,0,0,244,187,132,0,64,0,0,0, -9,2,0,0,252,188,132,0,128,0,0,0,16,2,0,0,12,189,132,0, -0,1,0,0,17,2,0,0,0,188,132,0,0,2,0,0,18,2,0,0, -28,189,132,0,0,4,0,0,19,2,0,0,136,25,133,0,0,8,0,0, -20,2,0,0,144,25,133,0,0,16,0,0,21,2,0,0,100,187,132,0, -0,32,0,0,22,2,0,0,40,189,132,0,0,64,0,0,23,2,0,0, -64,189,132,0,83,71,76,32,101,110,116,114,121,32,104,97,115,32,117,110, -97,108,105,103,110,101,100,32,97,100,100,114,101,115,115,0,83,71,76,32, -115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32, -99,111,109,109,97,110,100,0,85,110,105,116,32,105,115,32,111,102,102,108, -105,110,101,0,68,67,66,32,85,68,66,32,40,117,110,105,116,32,100,101, -115,99,114,105,112,116,111,114,32,98,108,111,99,107,41,32,115,101,103,109, -101,110,116,32,105,110,118,97,108,105,100,0,66,97,100,32,102,108,97,115, -104,32,102,105,108,101,32,99,104,101,99,107,115,117,109,0,73,110,118,97, -108,105,100,32,102,105,101,108,100,32,105,110,32,112,97,114,97,109,101,116, -101,114,32,108,105,115,116,0,68,114,105,118,101,32,110,111,116,32,114,101, -97,100,121,0,85,110,99,108,97,115,115,105,102,105,101,100,32,112,111,114, -116,32,101,114,114,111,114,0,80,67,73,32,97,98,111,114,116,32,101,114, -114,111,114,0,73,50,67,32,116,114,97,110,115,97,99,116,105,111,110,32, -97,98,111,114,116,101,100,0,69,114,114,111,114,32,100,117,114,105,110,103, -32,100,101,97,108,108,111,99,97,116,101,0,69,114,114,111,114,32,114,101, -99,111,118,101,114,121,32,99,111,109,112,108,101,116,101,0,78,111,32,76, -66,65,32,116,111,32,114,101,112,97,105,114,32,115,101,99,116,111,114,0, -68,111,32,101,114,114,111,114,32,97,99,116,105,111,110,0,83,101,99,116, -111,114,32,114,101,112,97,105,114,32,119,97,115,32,110,111,116,32,99,111, -109,112,108,101,116,101,100,0,68,97,116,97,32,105,110,116,101,103,114,105, -116,121,32,101,114,114,111,114,32,105,110,32,100,105,97,103,110,111,115,116, -105,99,32,116,101,115,116,0,65,69,78,32,113,117,101,117,101,32,101,109, -112,116,121,0,66,97,99,107,103,114,111,117,110,100,32,114,101,98,117,105, -108,100,32,100,111,110,101,0,82,101,98,117,105,108,100,32,115,116,97,114, -116,101,100,0,69,110,116,105,114,101,32,108,111,103,105,99,97,108,32,117, -110,105,116,32,119,97,115,32,100,101,108,101,116,101,100,0,68,114,105,118, -101,32,98,97,121,32,99,111,118,101,114,32,100,111,111,114,32,119,97,115, -32,111,112,101,110,101,100,0,68,114,105,118,101,32,98,97,121,32,99,111, -118,101,114,32,100,111,111,114,32,119,97,115,32,99,108,111,115,101,100,0, -80,114,111,100,117,99,116,32,99,97,115,101,32,119,97,115,32,111,112,101, -110,101,100,0,83,101,99,116,111,114,32,114,101,112,97,105,114,32,99,111, -109,112,108,101,116,101,100,0,83,98,117,102,32,109,101,109,111,114,121,32, -116,101,115,116,32,102,97,105,108,101,100,0,79,117,116,32,111,102,32,104, -101,97,112,0,67,97,110,110,111,116,32,117,112,100,97,116,101,32,115,116, -97,116,117,115,32,116,111,32,68,67,66,0,68,67,66,32,115,101,103,109, -101,110,116,32,104,97,115,32,117,110,115,117,112,112,111,114,116,101,100,32, -118,101,114,115,105,111,110,0,70,108,97,115,104,32,111,117,116,32,111,102, -32,98,111,117,110,100,115,0,70,108,97,115,104,32,102,105,108,101,32,111, -98,106,101,99,116,32,110,111,116,32,102,111,117,110,100,0,80,97,114,97, -109,101,116,101,114,32,108,105,115,116,32,108,101,110,103,116,104,32,101,114, -114,111,114,0,84,111,107,101,110,32,105,110,116,101,114,114,117,112,116,32, -99,111,117,110,116,32,101,114,114,111,114,0,83,79,45,68,73,77,77,32, -117,110,115,117,112,112,111,114,116,101,100,0,67,114,101,97,116,101,85,110, -105,116,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32, -116,104,105,115,32,100,101,115,99,114,105,112,116,111,114,32,118,101,114,115, -105,111,110,0,78,111,32,115,116,114,101,97,109,32,97,118,97,105,108,97, -98,108,101,0,82,101,116,114,121,32,114,101,99,111,118,101,114,121,32,115, -116,101,112,0,85,110,100,101,102,105,110,101,100,32,83,117,98,45,99,111, -109,109,97,110,100,32,102,111,114,32,100,105,97,103,32,116,101,115,116,0, -65,110,32,117,110,105,109,112,108,101,109,101,110,116,101,100,32,109,101,116, -104,111,100,32,119,97,115,32,105,110,118,111,107,101,100,0,68,97,116,97, -32,108,105,110,101,115,32,111,112,101,110,32,105,110,32,83,98,117,102,32, -82,65,77,0,83,98,117,102,32,82,65,77,32,117,110,114,101,97,100,97, -98,108,101,0,80,111,119,101,114,32,115,117,112,112,108,121,32,114,101,112, -111,114,116,101,100,32,97,32,109,97,108,102,117,110,99,116,105,111,110,0, -83,112,97,114,101,32,99,97,112,97,99,105,116,121,32,105,115,32,105,110, -97,100,101,113,117,97,116,101,32,102,111,114,32,115,111,109,101,32,117,110, -105,116,115,0,66,97,99,107,103,114,111,117,110,100,32,109,105,103,114,97, -116,105,111,110,32,102,97,105,108,101,100,0,66,97,99,107,103,114,111,117, -110,100,32,109,105,103,114,97,116,105,111,110,32,112,97,117,115,101,100,0, -67,111,109,109,97,110,100,32,112,97,99,107,101,116,32,105,115,32,110,111, -116,32,97,108,105,103,110,101,100,0,0,0,73,68,32,110,111,116,32,108, -111,99,107,101,100,0,0,0,73,110,118,97,108,105,100,32,97,100,100,114, -101,115,115,32,116,111,32,100,101,97,108,108,111,99,97,116,101,0,0,0, -79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,82,101,99,111, -110,115,116,114,117,99,116,32,101,114,114,111,114,0,0,0,73,110,118,97, -108,105,100,32,115,116,114,105,112,101,32,104,97,110,100,108,101,0,0,0, -86,101,114,105,102,121,32,101,114,114,111,114,32,40,100,97,116,97,32,33, -61,32,112,97,114,105,116,121,41,0,0,0,68,67,66,32,71,85,73,68, -32,40,103,108,111,98,97,108,108,121,32,117,110,105,113,117,101,32,105,100, -101,110,116,105,102,105,101,114,41,32,115,101,103,109,101,110,116,32,105,110, -118,97,108,105,100,0,0,0,70,108,97,115,104,32,105,100,101,110,116,105, -102,121,32,102,97,105,108,101,100,0,0,0,70,108,97,115,104,32,102,105, -108,101,32,115,105,122,101,32,101,114,114,111,114,0,0,0,65,68,80,32, -108,101,118,101,108,32,49,32,101,114,114,111,114,0,0,0,65,68,80,32, -108,101,118,101,108,32,50,32,101,114,114,111,114,0,0,0,83,111,102,116, -32,114,101,115,101,116,32,102,97,105,108,101,100,0,0,0,68,114,105,118, -101,32,97,98,111,114,116,101,100,32,99,111,109,109,97,110,100,0,0,0, -85,110,115,117,112,112,111,114,116,101,100,32,99,111,109,109,97,110,100,32, -100,117,114,105,110,103,32,102,108,97,115,104,32,114,101,99,111,118,101,114, -121,0,0,0,66,105,110,97,114,121,32,105,109,97,103,101,32,104,97,115, -32,110,111,32,115,105,103,110,97,116,117,114,101,0,0,0,66,105,110,97, -114,121,32,105,109,97,103,101,32,104,97,115,32,98,97,100,32,99,104,101, -99,107,115,117,109,0,0,0,83,80,73,32,116,114,97,110,115,102,101,114, -32,115,116,97,116,117,115,32,101,114,114,111,114,0,0,0,73,110,97,100, -101,113,117,97,116,101,32,100,105,115,107,32,115,112,97,99,101,32,116,111, -32,115,117,112,112,111,114,116,32,100,101,115,99,114,105,112,116,111,114,32, -105,110,32,67,114,101,97,116,101,85,110,105,116,0,0,0,73,110,118,97, -108,105,100,32,115,117,98,117,110,105,116,32,102,111,114,32,82,65,73,68, -32,48,32,111,114,32,53,32,105,110,32,67,114,101,97,116,101,85,110,105, -116,0,0,0,73,110,118,97,108,105,100,32,76,66,65,32,111,102,102,115, -101,116,32,115,112,101,99,105,102,105,101,100,32,105,110,32,67,114,101,97, -116,101,85,110,105,116,32,100,101,115,99,114,105,112,116,111,114,0,0,0, -73,110,118,97,108,105,100,32,115,116,114,105,112,101,108,101,116,32,115,105, -122,101,32,115,112,101,99,105,102,105,101,100,32,105,110,32,67,114,101,97, -116,101,85,110,105,116,32,100,101,115,99,114,105,112,116,111,114,0,0,0, -65,100,100,114,32,108,105,110,101,32,112,114,111,98,108,101,109,32,105,110, -32,83,98,117,102,32,82,65,77,0,0,0,105,72,97,110,100,108,101,114, -32,101,114,114,111,114,32,100,117,114,105,110,103,32,120,102,101,114,32,111, -112,0,0,0,66,97,100,32,83,104,97,100,111,119,101,100,32,82,65,77, -32,108,111,99,97,116,105,111,110,0,0,0,67,97,110,39,116,32,100,101, -116,101,114,109,105,110,101,32,83,98,117,102,32,115,105,122,101,0,0,0, -80,98,117,102,32,114,101,97,100,47,119,114,105,116,101,32,101,114,114,111, -114,0,0,0,88,79,82,32,101,114,114,111,114,0,0,0,67,111,110,116, -114,111,108,108,101,114,32,114,101,115,101,116,32,111,99,99,117,114,114,101, -100,0,0,0,66,97,99,107,103,114,111,117,110,100,32,114,101,98,117,105, -108,100,32,102,97,105,108,101,100,0,0,0,85,110,99,108,101,97,110,32, -115,104,117,116,100,111,119,110,32,100,101,116,101,99,116,101,100,0,0,0, -66,97,99,107,103,114,111,117,110,100,32,105,110,105,116,105,97,108,105,122, -101,32,115,116,97,114,116,101,100,0,0,0,80,111,119,101,114,32,115,117, -112,112,108,121,32,114,101,112,111,114,116,101,100,32,68,67,32,111,117,116, -32,111,102,32,114,97,110,103,101,0,0,0,66,97,116,116,101,114,121,32, -99,104,97,114,103,101,32,105,115,32,98,101,108,111,119,32,116,104,114,101, -115,104,111,108,100,0,0,0,84,101,109,112,101,114,97,116,117,114,101,32, -115,101,110,115,111,114,32,105,115,32,97,98,111,118,101,32,116,104,114,101, -115,104,111,108,100,0,0,0,80,111,119,101,114,32,115,117,112,112,108,121, -32,119,97,115,32,105,110,115,101,114,116,101,100,0,0,0,68,114,105,118, -101,32,119,97,115,32,105,110,115,101,114,116,101,100,32,105,110,116,111,32, -97,32,98,97,121,0,0,0,85,112,103,114,97,100,101,32,85,68,77,65, -32,109,111,100,101,32,116,111,32,104,105,103,104,101,114,32,115,112,101,101, -100,0,0,0,68,114,105,118,101,32,114,101,112,111,114,116,101,100,32,100, -97,116,97,32,69,67,67,32,101,114,114,111,114,0,0,0,66,97,99,107, -103,114,111,117,110,100,32,118,101,114,105,102,121,32,115,116,97,114,116,101, -100,0,0,0,66,97,100,32,115,101,99,116,111,114,32,111,118,101,114,119, -114,105,116,116,101,110,32,100,117,114,105,110,103,32,114,101,98,117,105,108, -100,0,0,0,86,101,114,105,102,121,32,102,97,105,108,101,100,32,98,101, -99,97,117,115,101,32,97,114,114,97,121,32,119,97,115,32,110,101,118,101, -114,32,105,110,105,116,105,97,108,105,122,101,100,0,0,0,85,110,115,117, -112,112,111,114,116,101,100,32,65,84,65,32,100,114,105,118,101,0,0,0, -66,97,99,107,103,114,111,117,110,100,32,109,105,103,114,97,116,105,111,110, -32,100,111,110,101,0,0,0,68,114,105,118,101,32,112,111,119,101,114,32, -111,110,32,114,101,115,101,116,32,100,101,116,101,99,116,101,100,0,0,0, -66,97,99,107,103,114,111,117,110,100,32,114,101,98,117,105,108,100,32,112, -97,117,115,101,100,0,0,0,85,110,105,116,32,110,117,109,98,101,114,32, -97,115,115,105,103,110,109,101,110,116,115,32,119,101,114,101,32,108,111,115, -116,0,0,0,82,101,116,114,121,105,110,103,32,80,67,73,32,116,114,97, -110,115,102,101,114,0,0,0,65,69,78,32,113,117,101,117,101,32,105,115, -32,102,117,108,108,0,0,0,83,71,76,32,101,110,116,114,121,32,99,111, -110,116,97,105,110,115,32,122,101,114,111,32,100,97,116,97,0,0,0,0, -73,110,118,97,108,105,100,32,99,111,109,109,97,110,100,32,111,112,99,111, -100,101,0,0,83,71,76,32,101,110,116,114,121,32,104,97,115,32,105,108, -108,101,103,97,108,32,108,101,110,103,116,104,0,0,0,0,73,110,118,97, -108,105,100,32,114,101,113,117,101,115,116,32,73,68,0,0,68,117,112,108, -105,99,97,116,101,32,114,101,113,117,101,115,116,32,73,68,0,0,0,0, -76,66,65,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0, -76,111,103,105,99,97,108,32,117,110,105,116,32,110,111,116,32,115,117,112, -112,111,114,116,101,100,0,0,80,97,114,97,109,101,116,101,114,32,116,97, -98,108,101,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,0,0, -80,97,114,97,109,101,116,101,114,32,105,110,100,101,120,32,100,111,101,115, -32,110,111,116,32,101,120,105,115,116,0,0,73,110,118,97,108,105,100,32, -102,105,101,108,100,32,105,110,32,67,68,66,0,0,0,0,83,112,101,99, -105,102,105,101,100,32,112,111,114,116,32,104,97,115,32,105,110,118,97,108, -105,100,32,100,114,105,118,101,0,0,0,0,80,97,114,97,109,101,116,101, -114,32,105,116,101,109,32,115,105,122,101,32,109,105,115,109,97,116,99,104, -0,0,0,0,70,97,105,108,101,100,32,109,101,109,111,114,121,32,97,108, -108,111,99,97,116,105,111,110,0,0,0,0,77,101,109,111,114,121,32,114, -101,113,117,101,115,116,32,116,111,111,32,108,97,114,103,101,0,0,0,0, -79,117,116,32,111,102,32,109,101,109,111,114,121,32,115,101,103,109,101,110, -116,115,0,0,68,111,117,98,108,101,32,100,101,103,114,97,100,101,0,0, -68,114,105,118,101,32,110,111,116,32,100,101,103,114,97,100,101,100,0,0, -82,101,112,108,97,99,101,32,110,111,116,32,97,99,99,101,112,116,101,100, -0,0,0,0,82,101,112,108,97,99,101,32,100,114,105,118,101,32,99,97, -112,97,99,105,116,121,32,116,111,111,32,115,109,97,108,108,0,0,0,0, -83,101,99,116,111,114,32,99,111,117,110,116,32,110,111,116,32,97,108,108, -111,119,101,100,0,0,0,0,78,111,32,115,112,97,114,101,115,32,108,101, -102,116,0,0,72,97,110,100,108,101,32,116,104,97,116,32,119,97,115,32, -110,111,116,32,108,111,99,107,101,100,0,0,72,97,110,100,108,101,32,116, -104,97,116,32,119,97,115,32,110,111,116,32,101,109,112,121,0,0,0,0, -72,97,110,100,108,101,32,104,97,115,32,100,105,102,102,101,114,101,110,116, -32,111,119,110,101,114,0,0,73,80,82,32,104,97,115,32,112,97,114,101, -110,116,0,0,73,108,108,101,103,97,108,32,80,98,117,102,32,97,100,100, -114,101,115,115,32,97,108,105,103,110,109,101,110,116,0,0,73,108,108,101, -103,97,108,32,80,98,117,102,32,116,114,97,110,115,102,101,114,32,108,101, -110,103,116,104,0,0,0,0,73,108,108,101,103,97,108,32,83,98,117,102, -32,97,100,100,114,101,115,115,32,97,108,105,103,110,109,101,110,116,0,0, -73,108,108,101,103,97,108,32,83,98,117,102,32,116,114,97,110,115,102,101, -114,32,108,101,110,103,116,104,0,0,0,0,67,111,109,109,97,110,100,32, -112,97,99,107,101,116,32,116,111,111,32,108,97,114,103,101,0,0,0,0, -83,71,76,32,101,120,99,101,101,100,115,32,109,97,120,105,109,117,109,32, -108,101,110,103,116,104,0,0,83,71,76,32,104,97,115,32,116,111,111,32, -109,97,110,121,32,101,110,116,114,105,101,115,0,0,0,0,73,110,115,117, -102,102,105,99,105,101,110,116,32,114,101,115,111,117,114,99,101,115,32,102, -111,114,32,114,101,98,117,105,108,100,101,114,0,0,0,0,82,101,113,117, -101,115,116,101,100,32,115,101,103,109,101,110,116,32,110,111,116,32,105,110, -32,100,105,114,101,99,116,111,114,121,32,111,102,32,116,104,105,115,32,68, -67,66,0,0,68,67,66,32,115,101,103,109,101,110,116,32,104,97,115,32, -99,104,101,99,107,115,117,109,32,101,114,114,111,114,0,0,68,67,66,32, -115,117,112,112,111,114,116,32,40,115,101,116,116,105,110,103,115,41,32,115, -101,103,109,101,110,116,32,105,110,118,97,108,105,100,0,0,67,111,117,108, -100,32,110,111,116,32,99,108,101,97,114,32,83,98,117,102,0,0,0,0, -70,108,97,115,104,32,118,101,114,105,102,121,32,101,114,114,111,114,0,0, -70,108,97,115,104,32,102,105,108,101,32,97,108,114,101,97,100,121,32,112, -114,101,115,101,110,116,0,0,70,108,97,115,104,32,102,105,108,101,32,115, -121,115,116,101,109,32,102,117,108,108,0,0,70,108,97,115,104,32,102,105, -108,101,32,110,111,116,32,112,114,101,115,101,110,116,0,0,85,110,115,117, -112,112,111,114,116,101,100,32,102,108,97,115,104,32,102,105,108,101,32,118, -101,114,115,105,111,110,0,0,67,111,114,114,117,112,116,32,102,108,97,115, -104,32,102,105,108,101,32,115,121,115,116,101,109,32,100,101,116,101,99,116, -101,100,0,0,80,97,114,97,109,101,116,101,114,32,105,116,101,109,32,105, -115,32,110,111,116,32,99,104,97,110,103,101,97,98,108,101,0,0,0,0, -80,97,114,97,109,101,116,101,114,32,105,116,101,109,32,105,115,32,110,111, -116,32,115,97,118,101,97,98,108,101,0,0,85,68,77,65,32,67,82,67, -32,101,114,114,111,114,0,0,73,110,116,101,114,110,97,108,32,67,82,67, -32,101,114,114,111,114,0,0,68,97,116,97,32,69,67,67,32,101,114,114, -111,114,0,0,80,111,114,116,32,116,105,109,101,111,117,116,0,0,0,0, -68,114,105,118,101,32,112,111,119,101,114,32,111,110,32,114,101,115,101,116, -0,0,0,0,80,67,73,32,112,97,114,105,116,121,32,101,114,114,111,114, -0,0,0,0,80,111,114,116,32,104,97,110,100,108,101,114,32,101,114,114, -111,114,0,0,84,105,109,101,111,117,116,32,119,97,105,116,105,110,103,32, -102,111,114,32,80,67,73,32,116,114,97,110,115,102,101,114,0,0,0,0, -67,111,114,114,101,99,116,101,100,32,98,117,102,102,101,114,32,69,67,67, -0,0,0,0,85,110,99,111,114,114,101,99,116,101,100,32,98,117,102,102, -101,114,32,69,67,67,0,0,78,101,120,116,32,105,109,97,103,101,32,98, -117,102,102,101,114,32,101,120,112,101,99,116,101,100,0,0,66,105,110,97, -114,121,32,105,109,97,103,101,32,97,114,99,104,105,116,101,99,116,117,114, -101,32,105,110,99,111,109,112,97,116,105,98,108,101,0,0,66,105,110,97, -114,121,32,105,109,97,103,101,32,111,118,101,114,102,108,111,119,101,100,32, -98,117,102,102,101,114,0,0,73,50,67,32,100,101,118,105,99,101,32,110, -111,116,32,102,111,117,110,100,0,0,0,0,83,79,45,68,73,77,77,32, -112,97,114,97,109,101,116,101,114,40,115,41,32,105,110,99,111,109,112,97, -116,105,98,108,101,32,117,115,105,110,103,32,100,101,102,97,117,108,116,115, -0,0,0,0,83,80,73,32,116,114,97,110,115,102,101,114,32,116,105,109, -101,111,117,116,32,101,114,114,111,114,0,0,73,110,118,97,108,105,100,32, -117,110,105,116,32,100,101,115,99,114,105,112,116,111,114,32,115,105,122,101, -32,105,110,32,67,114,101,97,116,101,85,110,105,116,0,0,85,110,105,116, -32,100,101,115,99,114,105,112,116,111,114,32,115,105,122,101,32,101,120,99, -101,101,100,115,32,100,97,116,97,32,98,117,102,102,101,114,32,105,110,32, -67,114,101,97,116,101,85,110,105,116,0,0,73,110,118,97,108,105,100,32, -118,97,108,117,101,32,105,110,32,67,114,101,97,116,101,85,110,105,116,32, -100,101,115,99,114,105,112,116,111,114,0,0,85,110,97,98,108,101,32,116, -111,32,99,114,101,97,116,101,32,100,97,116,97,32,99,104,97,110,110,101, -108,32,102,111,114,32,116,104,105,115,32,117,110,105,116,32,100,101,115,99, -114,105,112,116,111,114,0,0,67,114,101,97,116,101,85,110,105,116,32,100, -101,115,99,114,105,112,116,111,114,32,115,112,101,99,105,102,105,101,115,32, -97,32,100,114,105,118,101,32,97,108,114,101,97,100,121,32,105,110,32,117, -115,101,0,0,85,110,97,98,108,101,32,116,111,32,119,114,105,116,101,32, -99,111,110,102,105,103,117,114,97,116,105,111,110,32,116,111,32,97,108,108, -32,100,105,115,107,115,32,100,117,114,105,110,103,32,67,114,101,97,116,101, -85,110,105,116,0,0,0,0,84,111,111,32,109,97,110,121,32,100,101,115, -99,114,105,112,116,111,114,115,32,105,110,32,67,114,101,97,116,101,85,110, -105,116,0,0,73,110,118,97,108,105,100,32,99,111,110,102,105,103,117,114, -97,116,105,111,110,32,115,112,101,99,105,102,105,101,100,32,105,110,32,67, -114,101,97,116,101,85,110,105,116,32,100,101,115,99,114,105,112,116,111,114, -0,0,0,0,74,66,79,68,32,117,110,105,116,32,105,115,32,110,111,116, -32,97,108,108,111,119,101,100,0,0,0,0,83,77,65,82,84,32,97,116, -116,114,105,98,117,116,101,32,101,120,99,101,101,100,101,100,32,116,104,114, -101,115,104,111,108,100,0,0,68,114,105,118,101,32,104,97,115,32,98,101, -101,110,32,97,100,100,101,100,0,0,0,0,68,114,105,118,101,32,104,97, -115,32,98,101,101,110,32,114,101,109,111,118,101,100,0,0,69,114,114,111, -114,32,114,101,99,111,118,101,114,121,32,105,110,32,112,114,111,103,114,101, -115,115,0,0,68,101,103,114,97,100,101,32,117,110,105,116,0,0,0,0, -105,72,97,110,100,108,101,114,32,119,97,115,32,98,117,115,121,32,98,101, -102,111,114,101,32,100,105,97,103,32,116,101,115,116,0,0,68,97,116,97, -32,108,105,110,101,115,32,115,104,111,114,116,101,100,32,105,110,32,83,98, -117,102,32,82,65,77,0,0,67,97,110,39,116,32,102,105,108,108,32,83, -98,117,102,32,119,105,116,104,32,122,101,114,111,115,0,0,66,97,100,32, -100,105,115,107,32,115,101,113,117,101,110,99,101,114,32,99,109,100,32,105, -115,115,117,101,100,32,116,111,32,65,112,111,114,116,0,0,66,97,100,32, -82,65,77,32,108,111,99,97,116,105,111,110,0,0,0,0,78,111,32,100, -105,115,107,32,102,111,117,110,100,32,111,110,32,114,101,113,117,101,115,116, -101,100,32,65,112,111,114,116,0,0,0,0,73,110,116,101,114,114,117,112, -116,32,108,105,110,101,32,101,114,114,111,114,0,0,0,0,85,110,97,98, -108,101,32,116,111,32,99,97,108,99,117,108,97,116,101,32,99,104,101,99, -107,115,117,109,0,0,0,0,68,101,103,114,97,100,101,100,32,117,110,105, -116,32,100,101,116,101,99,116,101,100,0,0,67,111,110,116,114,111,108,108, -101,114,32,101,114,114,111,114,32,111,99,99,117,114,101,100,0,0,0,0, -73,110,99,111,109,112,108,101,116,101,32,117,110,105,116,32,100,101,116,101, -99,116,101,100,0,0,0,0,66,97,99,107,103,114,111,117,110,100,32,105, -110,105,116,105,97,108,105,122,101,32,100,111,110,101,0,0,68,114,105,118, -101,32,116,105,109,101,111,117,116,32,100,101,116,101,99,116,101,100,0,0, -68,114,105,118,101,32,101,114,114,111,114,32,100,101,116,101,99,116,101,100, -0,0,0,0,66,97,99,107,103,114,111,117,110,100,32,105,110,105,116,105, -97,108,105,122,101,32,102,97,105,108,101,100,0,0,0,0,80,111,119,101, -114,32,115,117,112,112,108,121,32,114,101,112,111,114,116,101,100,32,65,67, -32,117,110,100,101,114,32,114,97,110,103,101,0,0,0,0,80,111,119,101, -114,32,115,117,112,112,108,121,32,112,114,101,100,105,99,116,101,100,32,109, -97,108,102,117,110,99,116,105,111,110,0,0,70,97,110,32,115,112,101,101, -100,32,105,115,32,98,101,108,111,119,32,116,104,114,101,115,104,111,108,100, -0,0,0,0,80,111,119,101,114,32,115,117,112,112,108,121,32,119,97,115, -32,114,101,109,111,118,101,100,0,0,0,0,68,114,105,118,101,32,119,97, -115,32,114,101,109,111,118,101,100,32,102,114,111,109,32,97,32,98,97,121, -0,0,0,0,80,114,101,112,97,114,101,32,102,111,114,32,115,104,117,116, -100,111,119,110,32,40,112,111,119,101,114,45,111,102,102,41,0,0,0,0, -68,111,119,110,103,114,97,100,101,32,85,68,77,65,32,109,111,100,101,32, -116,111,32,108,111,119,101,114,32,115,112,101,101,100,0,0,69,114,114,111, -114,32,102,108,117,115,104,105,110,103,32,99,97,99,104,101,100,32,119,114, -105,116,101,32,100,97,116,97,32,116,111,32,100,105,115,107,0,0,0,0, -68,67,66,32,104,97,115,32,99,104,101,99,107,115,117,109,32,101,114,114, -111,114,0,0,68,67,66,32,118,101,114,115,105,111,110,32,105,115,32,117, -110,115,117,112,112,111,114,116,101,100,0,0,66,97,99,107,103,114,111,117, -110,100,32,118,101,114,105,102,121,32,102,97,105,108,101,100,0,0,0,0, -66,97,99,107,103,114,111,117,110,100,32,118,101,114,105,102,121,32,100,111, -110,101,0,0,66,97,99,107,103,114,111,117,110,100,32,114,101,98,117,105, -108,100,32,101,114,114,111,114,32,111,110,32,115,111,117,114,99,101,32,100, -114,105,118,101,0,0,0,0,82,101,112,108,97,99,101,32,102,97,105,108, -101,100,32,98,101,99,97,117,115,101,32,114,101,112,108,97,99,101,109,101, -110,116,32,100,114,105,118,101,32,116,111,111,32,115,109,97,108,108,0,0, -83,121,110,99,104,114,111,110,105,122,101,32,104,111,115,116,47,99,111,110, -116,114,111,108,108,101,114,32,116,105,109,101,0,0,0,0,66,97,99,107, -103,114,111,117,110,100,32,109,105,103,114,97,116,105,111,110,32,115,116,97, -114,116,101,100,0,0,0,0,86,101,114,105,102,121,32,100,101,116,101,99, -116,101,100,32,97,110,100,32,102,105,120,101,100,32,100,97,116,97,47,112, -97,114,105,116,121,32,109,105,115,109,97,116,99,104,0,0,83,79,45,68, -73,77,77,32,105,110,99,111,109,112,97,116,105,98,108,101,0,0,0,0, -83,79,45,68,73,77,77,32,110,111,116,32,100,101,116,101,99,116,101,100, -0,0,0,0,67,111,114,114,101,99,116,101,100,32,83,98,117,102,32,69, -67,67,32,101,114,114,111,114,0,0,0,0,66,97,99,107,103,114,111,117, -110,100,32,105,110,105,116,105,97,108,105,122,101,32,112,97,117,115,101,100, -0,0,0,0,66,97,99,107,103,114,111,117,110,100,32,118,101,114,105,102, -121,32,112,97,117,115,101,100,0,0,0,0,70,108,97,115,104,32,102,105, -108,101,32,115,121,115,116,101,109,32,114,101,112,97,105,114,101,100,0,0, -69,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,32,111,102, -32,112,114,105,109,97,114,121,32,68,67,66,0,0,0,0,76,97,116,101, -110,116,32,101,114,114,111,114,32,102,111,117,110,100,32,105,110,32,98,97, -99,107,117,112,32,68,67,66,0,0,0,0,82,101,99,111,118,101,114,101, -100,47,102,105,110,105,115,104,101,100,32,97,114,114,97,121,32,109,101,109, -98,101,114,115,104,105,112,32,117,112,100,97,116,101,0,0,72,97,110,100, -108,101,114,32,108,111,99,107,117,112,0,0,68,105,100,32,110,111,116,32, -102,105,110,100,32,101,114,114,111,114,32,99,111,100,101,58,32,48,120,37, -48,50,88,10,0,0,0,0,37,115,10,40,69,67,58,48,120,37,48,50, -120,44,32,83,75,61,48,120,37,48,50,120,44,32,65,83,67,61,48,120, -37,48,50,120,44,32,65,83,67,81,61,48,120,37,48,50,120,44,32,83, -69,86,61,37,48,50,120,44,32,84,121,112,101,61,48,120,37,48,50,120, -41,10,0,0,69,114,114,111,114,32,115,116,114,105,110,103,32,110,111,116, -32,102,111,117,110,100,0,0,78,111,32,97,100,100,105,116,105,111,110,97, -108,32,115,101,110,115,101,32,100,97,116,97,0,0,0,0,16,0,0,0, -8,0,0,0,8,0,0,0,32,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0, -64,0,0,0,64,0,0,0,64,0,0,0,102,108,97,115,104,70,105,108, -101,46,99,112,112,0,0,0,109,111,118,105,110,103,32,112,111,115,115,105, -98,108,101,32,115,112,101,99,105,97,108,32,102,105,108,101,115,32,116,111, -32,112,97,114,97,109,101,116,101,114,32,98,108,111,99,107,46,46,46,10, -10,0,0,0,77,111,118,101,32,99,111,109,112,108,101,116,101,100,46,10, -10,0,0,0,48,120,37,48,56,88,46,48,120,37,48,56,88,32,58,32, -32,48,120,37,48,56,120,32,32,37,54,100,32,40,61,37,35,120,41,10, -0,0,0,0,67,104,101,99,107,105,110,103,32,102,108,97,115,104,32,109, -101,109,111,114,121,32,102,105,108,101,115,10,0,0,0,0,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,32,58,32, -32,45,45,45,45,45,45,45,45,45,45,32,32,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,10,0,32,85,78,65,76,73,71,78, -69,68,32,70,73,76,69,0,32,72,69,65,68,69,82,32,47,32,70,79, -79,84,69,82,32,77,73,83,67,79,77,80,65,82,69,0,32,73,78,86, -65,76,73,68,32,70,73,76,69,32,83,73,90,69,10,0,32,32,32,32, -32,32,32,32,32,32,32,102,114,101,101,32,115,112,97,99,101,32,58,32, -32,48,120,37,56,120,32,32,37,54,100,32,40,61,37,35,120,41,10,0, -32,85,78,65,76,73,71,78,69,68,32,70,79,79,84,69,82,0,0,0, -32,32,102,105,108,101,115,32,102,111,117,110,100,58,32,37,100,44,32,32, -101,114,114,111,114,115,32,100,101,116,101,99,116,101,100,58,32,37,100,10, -10,0,0,0,10,32,42,42,32,32,78,111,32,70,108,97,115,104,32,109, -101,109,111,114,121,32,70,105,108,101,32,115,121,115,116,101,109,32,102,111, -117,110,100,32,42,42,10,10,0,0,0,0,48,120,37,48,56,88,46,48, -120,37,48,56,88,32,58,32,32,48,120,37,48,56,120,32,32,37,54,100, -32,40,37,35,120,41,0,0,32,73,78,86,65,76,73,68,32,70,73,76, -69,32,65,68,68,82,69,83,83,10,0,0,32,73,78,86,65,76,73,68, -32,83,73,71,78,65,84,85,82,69,0,0,32,85,78,83,85,80,80,79, -82,84,69,68,32,86,69,82,83,73,79,78,0,0,0,0,32,42,42,32, -84,79,79,32,77,65,78,89,32,39,70,73,76,69,83,39,32,42,42,10, -0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,70,32,76,32,65, -32,83,32,72,32,32,32,77,32,69,32,77,32,79,32,82,32,89,32,32, -32,77,32,65,32,80,10,115,105,103,110,97,116,117,114,101,49,46,115,105, -103,110,97,116,117,114,101,50,32,58,32,32,97,100,100,114,101,115,115,32, -32,32,32,32,116,111,116,97,108,32,115,105,122,101,10,0,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,32,58,32, -32,45,45,45,45,45,45,45,45,45,45,32,32,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,10,0,32,110,111,110,101,32,102,111, -117,110,100,10,109,97,114,107,105,110,103,32,108,97,115,116,32,118,97,108, -105,100,32,102,105,108,101,46,46,46,46,0,32,102,111,117,110,100,46,10, -76,105,110,107,105,110,103,32,118,97,108,105,100,32,102,105,108,101,115,46, -46,46,46,32,10,0,0,0,32,68,111,110,101,10,82,101,112,97,105,114, -32,99,111,109,112,108,101,116,101,100,32,115,117,99,99,101,115,115,102,117, -108,108,121,32,10,0,0,0,10,10,82,101,112,97,105,114,105,110,103,32, -116,104,101,32,102,108,97,115,104,32,102,105,108,101,32,115,121,115,116,101, -109,10,0,0,66,97,100,32,100,105,114,101,99,116,111,114,121,44,32,114, -101,112,97,105,114,32,97,98,111,114,116,101,100,10,0,0,48,120,37,48, -56,88,46,48,120,37,48,56,88,32,58,32,32,48,120,37,48,56,120,32, -32,37,54,100,32,40,61,37,35,120,41,10,0,0,0,0,118,97,108,105, -100,97,116,105,111,110,32,102,97,105,108,101,100,44,32,115,101,97,114,99, -104,105,110,103,32,102,111,114,32,118,97,108,105,100,32,102,105,108,101,115, -46,46,46,46,0,0,0,0,32,82,101,112,97,105,114,32,102,97,105,108, -101,100,32,10,0,0,0,0,86,97,108,105,100,97,116,105,110,103,32,102, -108,97,115,104,32,102,105,108,101,32,115,121,115,116,101,109,46,46,46,46, -46,10,115,105,103,110,97,116,117,114,101,49,46,115,105,103,110,97,116,117, -114,101,50,32,58,32,32,97,100,100,114,101,115,115,32,32,32,32,32,116, -111,116,97,108,32,115,105,122,101,10,0,0,85,110,115,117,112,112,111,114, -116,101,100,32,70,108,97,115,104,70,105,108,101,32,118,101,114,115,105,111, -110,32,40,97,100,100,114,61,48,120,37,88,41,10,0,0,102,108,97,115, -104,70,105,108,101,46,99,112,112,0,0,0,85,110,115,117,112,112,111,114, -116,101,100,32,70,108,97,115,104,70,105,108,101,32,118,101,114,115,105,111, -110,32,40,97,100,100,114,61,48,120,37,88,41,10,0,0,66,73,79,83, -32,105,109,97,103,101,32,110,111,116,32,102,111,117,110,100,32,105,110,32, -102,108,97,115,104,33,10,0,70,105,114,109,119,97,114,101,32,105,109,97, -103,101,32,110,111,116,32,102,111,117,110,100,32,105,110,32,102,108,97,115, -104,33,10,0,85,110,101,120,112,101,99,116,101,100,32,108,111,99,97,116, -105,111,110,32,111,102,32,70,105,114,109,119,97,114,101,32,105,110,32,102, -108,97,115,104,33,10,0,0,32,32,32,69,120,112,101,99,116,101,100,32, -97,100,100,114,58,32,37,120,32,32,32,32,65,99,116,117,97,108,32,97, -100,100,114,58,32,37,120,10,0,0,0,0,85,110,101,120,112,101,99,116, -101,100,32,115,105,122,101,32,111,102,32,70,105,114,109,119,97,114,101,32, -104,101,97,100,101,114,33,10,0,0,0,0,32,32,32,69,120,112,101,99, -116,101,100,32,115,105,122,101,58,32,37,120,32,32,32,32,65,99,116,117, -97,108,32,115,105,122,101,58,32,37,120,10,0,0,0,0,85,110,101,120, -112,101,99,116,101,100,32,108,111,99,97,116,105,111,110,32,111,102,32,66, -73,79,83,32,105,110,32,102,108,97,115,104,33,10,0,0,85,110,101,120, -112,101,99,116,101,100,32,115,105,122,101,32,111,102,32,66,73,79,83,32, -104,101,97,100,101,114,33,10,0,0,0,0,111,112,99,111,100,101,61,48, -120,37,88,0,111,112,99,111,100,101,61,48,120,37,88,0,82,101,113,117, -101,115,116,73,68,61,37,105,0,0,0,0,82,101,113,117,101,115,116,73, -68,61,37,105,0,0,0,0,101,110,116,114,105,101,115,61,48,120,37,88, -0,0,0,0,76,66,65,61,48,120,37,76,88,44,32,108,101,110,103,116, -104,61,48,120,37,88,0,0,82,101,108,97,116,105,118,101,32,116,105,109, -101,32,100,105,115,97,98,108,101,100,10,0,73,100,32,32,32,32,84,105, -109,101,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,109,100,32, -32,85,110,105,116,32,32,76,98,97,32,32,32,32,32,32,32,67,110,116, -10,0,0,0,100,105,115,97,98,108,101,100,10,0,0,0,73,110,118,97, -108,105,100,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101, -110,116,115,10,0,0,0,0,73,110,118,97,108,105,100,32,114,97,110,103, -101,10,0,0,67,111,109,109,97,110,100,32,104,105,115,116,111,114,121,32, -0,0,0,0,101,110,97,98,108,101,100,10,0,0,0,0,82,101,108,97, -116,105,118,101,32,116,105,109,101,32,101,110,97,98,108,101,100,10,0,0, -37,48,49,54,76,117,32,32,37,49,99,32,32,32,32,37,48,50,120,32, -32,32,32,0,37,48,56,76,120,32,32,37,48,52,120,32,32,0,0,0, -77,97,120,32,76,66,65,32,97,99,99,101,115,115,101,100,32,58,32,48, -120,37,48,56,88,95,37,48,56,88,10,0,77,97,120,32,104,111,115,116, -32,97,100,100,114,101,115,115,32,58,32,48,120,37,48,56,88,95,37,48, -56,88,10,0,78,111,112,32,101,120,101,99,117,116,101,100,32,79,75,10, -0,0,0,0,83,82,76,32,32,32,32,32,48,120,37,48,52,88,32,32, -48,120,37,48,52,88,10,0,65,114,99,104,73,100,32,32,48,120,37,48, -52,88,32,32,48,120,37,48,52,88,10,0,66,114,97,110,99,104,32,32, -48,120,37,48,52,88,32,32,48,120,37,48,52,88,10,0,66,117,105,108, -100,32,32,32,48,120,37,48,52,88,32,32,48,120,37,48,52,88,10,0, -82,101,115,117,108,116,32,32,48,120,37,48,56,88,10,0,114,101,115,117, -108,116,61,48,120,37,88,0,102,101,97,116,117,114,101,115,61,48,120,37, -88,0,0,0,73,110,105,116,67,111,110,110,101,99,116,32,102,101,97,116, -117,114,101,115,58,32,48,120,37,48,56,88,10,0,0,0,115,105,122,101, -61,48,120,37,88,0,0,0,32,32,32,32,32,32,32,32,68,114,105,118, -101,114,32,32,70,105,114,109,119,97,114,101,10,0,0,0,73,110,105,116, -67,111,110,110,101,99,116,32,99,114,101,100,105,116,115,58,32,37,100,10, -0,0,0,0,54,52,32,98,105,116,32,83,71,76,32,102,111,114,109,97, -116,10,0,0,51,50,32,98,105,116,32,83,71,76,32,102,111,114,109,97, -116,10,0,0,78,111,32,115,101,116,32,102,101,97,116,117,114,101,115,10, -0,0,0,0,80,111,114,116,83,99,97,110,32,99,111,109,109,97,110,100, -32,40,112,111,114,116,32,109,97,112,41,58,32,48,120,37,120,10,0,0, -73,109,112,111,114,116,85,110,105,116,32,99,111,109,109,97,110,100,32,40, -112,111,114,116,32,109,97,112,41,58,32,48,120,37,120,10,0,0,0,0, -70,108,117,115,104,32,99,111,109,109,97,110,100,44,32,117,110,105,116,61, -37,105,10,0,10,68,101,108,101,116,101,85,110,105,116,32,37,100,32,99, -111,109,109,97,110,100,44,32,100,101,115,116,114,111,121,61,37,115,10,0, -115,105,122,101,79,102,68,101,115,99,114,105,112,116,111,114,61,37,105,44, -32,110,117,109,68,101,115,99,114,105,112,116,111,114,115,61,37,105,10,0, -10,67,114,101,97,116,101,85,110,105,116,32,117,115,105,110,103,32,100,101, -115,99,114,105,112,116,111,114,32,118,101,114,115,105,111,110,32,37,100,44, -32,102,108,97,103,115,61,37,35,48,50,120,10,0,0,0,67,111,110,115, -116,114,117,99,116,105,111,110,32,99,97,112,97,99,105,116,105,101,115,58, -10,0,0,0,100,101,115,99,114,105,112,116,111,114,91,37,50,105,93,32, -32,112,111,114,116,61,37,50,117,44,32,99,97,112,61,37,35,48,56,120, -10,0,0,0,67,82,69,65,84,69,68,32,85,78,73,84,32,37,50,100, -10,0,0,0,104,111,115,116,76,101,103,97,99,121,67,109,100,115,46,99, -112,112,0,0,91,37,50,105,93,32,115,117,98,115,61,37,105,44,32,99, -102,103,61,37,35,104,120,44,32,115,116,114,105,112,76,111,103,50,61,37, -35,104,120,44,32,112,111,114,116,61,37,105,44,32,108,111,103,68,114,118, -61,37,105,44,32,109,111,100,101,61,37,35,104,120,44,32,114,98,108,100, -37,37,61,37,105,44,10,32,32,32,32,32,32,79,102,102,115,101,116,61, -37,35,48,56,120,44,32,99,97,112,61,37,35,48,56,120,44,32,114,115, -118,100,61,37,35,104,120,32,37,35,104,120,44,32,102,108,97,103,115,61, -37,35,104,120,10,0,0,0,70,108,97,115,104,32,101,114,114,111,114,32, -37,120,10,0,68,111,119,110,108,111,97,100,70,105,114,109,119,97,114,101, -32,99,111,109,109,97,110,100,44,32,98,117,102,102,101,114,32,110,117,109, -98,101,114,32,37,105,10,0,80,97,115,115,105,110,103,32,99,111,110,116, -114,111,108,32,116,111,32,70,108,97,115,104,32,85,112,100,97,116,101,114, -10,0,0,0,70,108,97,115,104,105,110,103,32,99,111,109,112,108,101,116, -101,100,32,79,75,10,0,0,86,101,114,105,102,121,85,110,105,116,32,37, -105,32,99,111,109,109,97,110,100,10,0,0,90,101,114,111,85,110,105,116, -32,37,105,32,99,111,109,109,97,110,100,10,0,0,0,0,82,101,112,108, -97,99,101,68,114,105,118,101,58,32,100,101,103,114,97,100,101,100,32,117, -110,105,116,32,37,100,44,32,115,112,97,114,101,32,117,110,105,116,32,37, -100,10,0,0,82,101,98,117,105,108,100,85,110,105,116,32,37,105,32,99, -111,109,109,97,110,100,10,0,10,60,60,32,67,111,109,109,97,110,100,101, -100,32,82,101,115,101,116,32,62,62,10,0,72,111,116,83,119,97,112,40, -117,110,107,110,111,119,110,32,97,99,116,105,111,110,32,48,120,37,88,41, -58,32,110,111,32,97,99,116,105,111,110,32,116,97,107,101,110,46,10,0, -72,111,116,83,119,97,112,32,99,111,109,109,97,110,100,44,32,112,111,114, -116,32,37,105,10,0,0,0,72,111,116,83,119,97,112,40,82,69,80,76, -65,67,69,95,74,66,79,68,41,32,117,110,115,117,112,112,111,114,116,101, -100,59,32,97,99,116,115,32,97,115,32,78,111,112,46,10,0,0,0,0, -32,32,69,114,114,111,114,58,32,117,110,100,101,102,105,110,101,100,32,116, -101,115,116,32,73,68,33,32,40,48,120,37,88,41,10,0,10,68,105,97, -103,110,111,115,116,105,99,58,10,0,0,0,32,32,32,32,84,101,115,116, -32,73,68,32,61,32,37,88,10,0,0,0,68,105,97,103,110,111,115,116, -105,99,32,102,105,110,105,115,104,101,100,32,119,105,116,104,32,101,114,114, -111,114,115,33,10,0,0,0,68,105,97,103,110,111,115,116,105,99,32,102, -105,110,105,115,104,101,100,32,79,75,46,10,0,0,0,0,10,82,101,111, -114,100,101,114,85,110,105,116,115,32,99,111,109,109,97,110,100,58,32,99, -111,117,110,116,61,37,105,44,32,109,97,112,0,0,0,0,32,73,110,118, -97,108,105,100,32,77,97,112,33,10,0,0,42,42,32,69,114,114,111,114, -32,48,120,37,88,32,117,112,100,97,116,105,110,103,32,68,67,66,32,105, -110,32,82,101,111,114,100,101,114,85,110,105,116,115,44,32,117,110,105,116, -61,37,105,10,0,0,0,0,70,108,97,115,104,32,85,112,100,97,116,101, -114,0,0,0,45,45,32,72,111,115,116,32,109,101,115,115,97,103,101,58, -32,37,115,10,0,0,0,0,80,111,119,101,114,77,97,110,97,103,101,109, -101,110,116,32,99,111,109,109,97,110,100,44,32,115,112,105,110,32,0,0, -105,110,118,97,108,105,100,32,112,97,114,97,109,10,0,0,112,99,104,105, -112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -51,119,97,114,101,32,32,32,0,0,0,0,76,111,103,105,99,97,108,32, -68,105,115,107,32,32,32,32,0,0,0,0,83,116,111,112,32,117,110,105, -116,32,48,120,37,120,10,0,105,109,109,101,100,105,97,116,101,0,0,0, -83,116,97,114,116,32,117,110,105,116,32,48,120,37,120,32,0,0,0,0, -85,110,104,97,110,100,108,101,100,32,99,111,109,109,97,110,100,32,99,111, -100,101,32,37,120,32,115,101,110,116,32,102,111,114,32,85,110,105,116,32, -45,32,37,120,10,0,0,0,114,101,116,114,105,101,115,61,37,100,0,0, -112,99,104,105,112,46,104,112,112,0,0,0,69,114,114,111,114,32,48,120, -37,88,32,102,101,116,99,104,105,110,103,32,99,111,109,109,97,110,100,32, -97,116,32,48,120,37,76,88,10,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,83,101,116,116,105,110,103,32,117,67,32,101,114,114,111,114, -32,105,110,32,115,116,97,116,117,115,32,114,101,103,105,115,116,101,114,10, -0,0,0,0,69,114,114,111,114,44,32,85,110,105,116,32,37,100,58,32, -0,0,0,0,104,111,115,116,73,110,116,101,114,102,97,99,101,80,99,105, -46,99,112,112,0,0,0,0,115,101,110,115,101,32,98,117,102,102,101,114, -58,32,108,101,110,61,37,35,120,44,32,97,100,100,114,101,115,115,61,37, -35,76,120,10,0,0,0,0,69,114,114,111,114,44,32,85,110,105,116,32, -37,100,58,32,48,120,37,88,32,79,86,69,82,82,73,68,68,69,78,32, -100,117,101,32,116,111,32,105,110,118,97,108,105,100,32,115,101,110,115,101, -32,98,117,102,102,101,114,32,100,101,115,99,114,105,112,116,111,114,10,0, -107,101,114,110,101,108,46,104,112,112,0,0,105,112,114,77,97,110,97,103, -101,114,46,99,112,112,0,0,105,112,114,77,97,110,97,103,101,114,46,99, -112,112,0,0,105,112,114,77,97,110,97,103,101,114,46,99,112,112,0,0, -105,112,114,77,97,110,97,103,101,114,46,99,112,112,0,0,105,112,114,77, -97,110,97,103,101,114,46,99,112,112,0,0,105,112,114,77,97,110,97,103, -101,114,46,99,112,112,0,0,107,101,114,110,101,108,46,99,112,112,0,0, -82,101,108,101,97,115,105,110,103,32,37,115,32,40,48,120,37,48,56,88, -41,10,0,0,107,101,114,110,101,108,46,99,112,112,0,0,107,101,114,110, -101,108,46,99,112,112,0,0,82,101,108,101,97,115,105,110,103,32,37,115, -32,40,48,120,37,48,56,88,41,10,0,0,107,101,114,110,101,108,46,99, -112,112,0,0,112,97,114,97,109,32,32,32,58,32,84,97,98,108,101,32, -48,120,37,48,52,88,44,32,112,97,114,97,109,32,48,120,37,48,50,88, -44,32,115,105,122,101,32,37,51,100,10,0,2,0,0,0,4,145,145,0, -3,0,0,0,56,145,145,0,2,0,0,0,108,145,145,0,13,0,0,0, -160,145,145,0,4,0,0,0,8,146,145,0,14,0,0,0,212,145,145,0, -3,0,0,0,60,146,145,0,11,0,0,0,212,138,145,0,12,0,0,0, -104,138,145,0,2,0,0,0,172,149,145,0,3,0,0,0,156,138,145,0, -2,0,0,0,212,141,145,0,3,0,0,0,204,144,145,0,2,0,0,0, -44,151,145,0,3,0,0,0,100,151,145,0,4,0,0,0,192,150,145,0, -2,0,0,0,216,148,145,0,3,0,0,0,12,149,145,0,2,0,0,0, -152,137,145,0,3,0,0,0,104,148,145,0,4,0,0,0,160,148,145,0, -5,0,0,0,80,147,145,0,6,0,0,0,136,147,145,0,7,0,0,0, -192,147,145,0,8,0,0,0,100,137,145,0,9,0,0,0,76,143,145,0, -2,0,0,0,20,143,145,0,3,0,0,0,248,147,145,0,4,0,0,0, -48,148,145,0,36,86,69,82,70,69,57,88,32,50,46,48,50,46,48,48, -46,48,48,56,0,86,69,82,36,0,0,0,118,101,99,116,111,114,60,84, -62,32,116,111,111,32,108,111,110,103,0,0,118,101,99,116,111,114,60,84, -62,32,116,111,111,32,108,111,110,103,0,0,3,0,0,0,64,142,145,0, -6,0,0,0,104,138,145,0,7,0,0,0,112,146,145,0,8,0,0,0, -168,146,145,0,9,0,0,0,224,146,145,0,10,0,0,0,132,143,145,0, -11,0,0,0,92,144,145,0,12,0,0,0,92,140,145,0,13,0,0,0, -148,140,145,0,14,0,0,0,204,140,145,0,15,0,0,0,4,141,145,0, -16,0,0,0,80,150,145,0,17,0,0,0,136,150,145,0,18,0,0,0, -148,144,145,0,19,0,0,0,120,142,145,0,20,0,0,0,24,147,145,0, -21,0,0,0,156,151,145,0,2,0,0,0,188,143,145,0,3,0,0,0, -56,141,145,0,4,0,0,0,172,142,145,0,5,0,0,0,240,143,145,0, -6,0,0,0,12,142,145,0,7,0,0,0,224,142,145,0,8,0,0,0, -36,140,145,0,9,0,0,0,236,139,145,0,10,0,0,0,248,150,145,0, -11,0,0,0,52,138,145,0,14,0,0,0,0,138,145,0,15,0,0,0, -204,137,145,0,2,0,0,0,68,149,145,0,3,0,0,0,124,139,145,0, -8,0,0,0,108,141,145,0,9,0,0,0,68,139,145,0,10,0,0,0, -160,141,145,0,11,0,0,0,12,139,145,0,12,0,0,0,120,149,145,0, -13,0,0,0,36,144,145,0,14,0,0,0,224,149,145,0,15,0,0,0, -24,150,145,0,112,97,114,97,109,32,32,32,58,32,84,97,98,108,101,32, -48,120,37,48,52,88,44,32,112,97,114,97,109,32,48,120,37,48,50,88, -44,32,115,105,122,101,32,37,51,100,10,0,83,69,84,84,73,78,71,83, -58,32,42,42,32,110,111,32,115,112,97,99,101,32,102,111,114,32,112,97, -114,97,109,101,116,101,114,32,48,120,37,48,52,88,44,37,88,32,42,42, -32,10,0,0,115,101,116,116,105,110,103,32,58,32,84,97,98,108,101,32, -48,120,37,48,52,88,44,32,97,108,108,32,112,97,114,97,109,101,116,101, -114,115,32,105,110,32,116,97,98,108,101,10,0,0,0,0,115,101,116,116, -105,110,103,32,58,32,84,97,98,108,101,32,48,120,37,48,52,88,44,32, -112,97,114,97,109,32,48,120,37,48,50,88,44,32,97,99,116,105,111,110, -32,37,100,10,0,0,0,0,112,97,114,97,109,84,97,98,108,101,46,99, -112,112,0,0,83,69,84,84,73,78,71,83,58,32,83,97,118,105,110,103, -32,37,115,32,112,97,114,97,109,101,116,101,114,115,32,46,46,46,32,0, -100,111,110,101,46,32,40,99,111,117,110,116,61,37,100,44,32,98,121,116, -101,115,61,37,100,41,10,0,10,83,69,84,84,73,78,71,83,58,32,42, -42,32,32,85,110,97,98,108,101,32,116,111,32,115,97,118,101,32,37,115, -32,112,97,114,97,109,101,116,101,114,115,32,40,100,105,115,107,32,111,114, -32,102,108,97,115,104,32,101,114,114,111,114,41,32,42,42,10,0,0,0, -83,69,84,84,73,78,71,83,58,32,68,105,115,116,114,105,98,117,116,105, -110,103,32,37,115,32,112,97,114,97,109,101,116,101,114,115,32,40,99,111, -117,110,116,61,37,100,44,32,98,121,116,101,115,61,37,100,41,10,0,0, -83,69,84,84,73,78,71,83,58,32,84,104,101,114,101,32,119,101,114,101, -32,37,100,32,117,110,114,101,115,116,111,114,97,98,108,101,32,112,97,114, -97,109,101,116,101,114,115,10,0,0,0,0,32,32,32,32,32,32,32,32, -58,32,101,114,114,111,114,61,37,35,120,44,32,118,101,114,61,37,35,120, -44,32,99,111,117,110,116,61,37,105,44,32,115,105,122,101,67,111,108,108, -101,99,116,101,100,61,37,117,10,0,0,0,112,97,114,97,109,84,97,98, -108,101,46,99,112,112,0,0,83,69,84,84,73,78,71,83,58,32,68,101, -108,101,116,105,110,103,32,101,109,112,116,121,32,111,114,32,105,110,118,97, -108,105,100,32,102,108,97,115,104,32,102,105,108,101,32,40,115,105,103,110, -97,116,117,114,101,32,37,48,56,120,41,10,0,0,0,0,87,82,73,84, -69,32,79,78,67,69,0,0,70,65,67,84,79,82,89,32,68,65,84,65, -0,0,0,0,70,73,82,77,87,65,82,69,32,76,79,67,65,76,0,0, -33,33,69,114,114,111,114,33,33,32,78,79,83,65,86,69,0,0,0,0, -87,82,73,84,69,32,79,78,67,69,0,0,70,65,67,84,79,82,89,32, -68,65,84,65,0,0,0,0,70,73,82,77,87,65,82,69,32,76,79,67, -65,76,0,0,33,33,69,114,114,111,114,33,33,32,78,79,83,65,86,69, -0,0,0,0,85,78,73,84,32,37,50,100,0,0,0,0,112,97,114,97, -109,84,97,98,108,101,46,99,112,112,0,0,112,97,114,97,109,84,97,98, -108,101,46,99,112,112,0,0,71,101,116,80,97,114,97,109,32,116,114,117, -110,99,97,116,101,100,32,116,111,32,37,105,32,111,102,32,37,105,32,98, -121,116,101,115,10,0,0,0,80,65,82,65,77,32,83,121,110,99,104,114, -111,110,105,122,101,32,37,100,32,100,101,115,99,114,105,112,116,111,114,115, -10,0,0,0,112,97,114,97,109,84,97,98,108,101,46,99,112,112,0,0, -78,111,32,112,114,105,110,116,32,108,111,103,32,104,97,115,32,98,101,101, -110,32,115,97,118,101,100,32,121,101,116,46,0,0,0,0,112,97,114,97, -109,86,97,114,46,99,112,112,0,0,0,0,70,105,114,109,119,97,114,101, -32,97,115,115,101,114,116,101,100,44,32,114,101,115,101,116,32,105,103,110, -111,114,101,100,33,13,10,0,60,60,32,83,111,102,116,32,82,101,115,101, -116,32,62,62,13,10,0,0,60,60,32,72,97,114,100,32,82,101,115,101, -116,32,62,62,10,0,0,0,84,105,109,101,32,32,58,32,32,37,48,56, -120,10,0,0,112,99,104,105,112,46,99,112,112,0,0,0,83,105,109,117, -108,97,116,101,32,37,115,32,101,114,114,111,114,10,0,0,112,99,104,105, -112,46,104,112,112,0,0,0,114,101,116,114,105,101,115,61,37,100,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,114,101,116,114,105,101,115,61, -37,100,0,0,112,99,104,105,112,46,104,112,112,0,0,0,112,99,104,105, -112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,83,101,109,80,99,104,105,112, -73,50,67,0,83,68,82,65,77,58,32,85,110,115,117,112,112,111,114,116, -101,100,32,116,114,99,100,32,37,100,10,0,83,68,82,65,77,58,32,85, -110,115,117,112,112,111,114,116,101,100,32,110,111,46,32,111,102,32,99,111, -108,117,109,110,115,32,37,100,10,0,0,0,32,32,99,111,110,102,105,103, -32,32,32,32,32,32,32,58,32,37,52,120,10,0,0,0,32,32,99,111, -110,116,114,111,108,32,32,32,32,32,32,58,32,37,52,120,10,0,0,0, -32,32,114,101,102,114,101,115,104,32,99,111,117,110,116,58,32,37,52,120, -10,0,0,0,80,99,104,105,112,32,32,32,32,32,37,100,46,37,100,10, -0,0,0,0,83,68,82,65,77,32,114,101,103,105,115,116,101,114,115,10, -0,0,0,0,80,111,119,101,114,32,115,116,97,116,101,32,105,110,116,101, -114,114,117,112,116,32,0,0,65,100,100,114,101,115,115,32,48,120,37,48, -56,120,44,32,100,97,116,97,32,48,120,37,48,49,54,76,120,44,32,109, -111,100,105,102,105,101,114,32,48,120,37,48,49,54,76,120,10,0,0,0, -112,99,104,105,112,46,104,112,112,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,112,99,104,105,112,71,101,114,111,110,105,109,111,46,99,112, -112,0,0,0,112,99,104,105,112,71,101,114,111,110,105,109,111,46,99,112, -112,0,0,0,112,99,104,105,112,46,104,112,112,0,0,0,107,101,114,110, -101,108,46,104,112,112,0,0,32,87,65,73,84,73,78,71,32,49,32,83, -69,67,32,45,45,32,65,112,111,114,116,32,37,88,10,0,32,87,65,73, -84,73,78,71,32,46,49,32,83,69,67,32,45,45,32,65,112,111,114,116, -32,37,88,10,0,0,0,0,84,104,101,114,101,32,119,101,114,101,32,37, -105,32,101,120,116,114,97,32,65,116,97,103,115,33,10,0,84,104,101,114, -101,32,119,101,114,101,32,37,105,32,101,120,116,114,97,32,100,97,116,97, -84,97,103,115,33,10,0,0,84,104,101,114,101,32,119,101,114,101,32,37, -105,32,101,120,116,114,97,32,65,116,97,103,115,33,10,0,84,104,101,114, -101,32,119,101,114,101,32,37,105,32,101,120,116,114,97,32,100,97,116,97, -84,97,103,115,33,10,0,0,112,111,114,116,81,117,101,117,101,77,97,110, -97,103,101,114,46,99,112,112,0,0,0,0,112,111,114,116,81,117,101,117, -101,77,97,110,97,103,101,114,46,99,112,112,0,0,0,0,68,101,102,101, -114,114,101,100,32,80,67,73,32,114,101,115,101,116,10,0,68,101,102,101, -114,114,101,100,32,80,67,73,32,114,101,115,101,116,10,0,112,111,114,116, -81,117,101,117,101,77,97,110,97,103,101,114,46,99,112,112,0,0,0,0, -83,105,109,117,108,97,116,101,32,37,115,32,101,114,114,111,114,44,32,112, -111,114,116,32,37,100,10,0,112,111,114,116,81,117,101,117,101,77,97,110, -97,103,101,114,46,99,112,112,0,0,0,0,112,111,114,116,81,117,101,117, -101,77,97,110,97,103,101,114,46,99,112,112,0,0,0,0,82,101,98,117, -105,108,100,101,114,0,0,0,114,101,98,117,105,108,100,101,114,46,99,112, -112,0,0,0,10,85,110,105,116,32,37,100,32,37,115,32,83,84,65,82, -84,69,68,10,0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -114,101,98,117,105,108,100,101,114,46,99,112,112,0,0,0,114,101,98,117, -105,108,100,101,114,46,99,112,112,0,0,0,114,101,98,117,105,108,100,101, -114,46,99,112,112,0,0,0,32,83,116,97,114,116,32,83,116,114,105,112, -101,32,35,58,32,37,48,56,76,120,10,0,114,101,98,117,105,108,100,101, -114,46,99,112,112,0,0,0,10,37,115,32,69,82,82,79,82,44,32,116, -105,109,101,58,32,37,120,32,40,69,114,114,111,114,67,111,100,101,41,58, -32,37,120,10,0,0,0,0,117,110,105,116,61,37,100,44,32,112,111,114, -116,61,37,100,0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -32,80,111,114,116,32,37,100,32,58,32,68,111,119,110,103,114,97,100,105, -110,103,32,102,114,111,109,32,85,68,77,65,32,37,100,32,116,111,32,37, -100,10,0,0,107,101,114,110,101,108,46,104,112,112,0,0,114,101,98,117, -105,108,100,101,114,46,99,112,112,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,83,101,99,116,111,114,32,79,118,101,114,119,114,105,116,101, -32,40,112,111,114,116,44,32,111,102,102,115,41,58,32,37,120,44,32,37, -100,10,0,0,112,111,114,116,61,37,100,0,0,0,0,0,114,101,98,117, -105,108,100,101,114,46,99,112,112,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,82,101,99,111,110,115,116,114,117,99,116,32,40,114,101,112, -97,105,114,41,32,115,116,114,105,112,101,108,101,116,58,32,37,48,56,76, -120,10,0,0,107,101,114,110,101,108,46,104,112,112,0,0,91,37,99,58, -37,120,93,10,0,0,0,0,114,101,98,117,105,108,100,101,114,46,99,112, -112,0,0,0,114,101,98,117,105,108,100,101,114,46,99,112,112,0,0,0, -114,101,98,117,105,108,100,101,114,46,99,112,112,0,0,0,107,101,114,110, -101,108,46,104,112,112,0,0,114,101,98,117,105,108,100,101,114,46,99,112, -112,0,0,0,10,85,110,105,116,32,37,100,32,37,115,32,83,84,79,80, -80,69,68,10,0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -82,101,98,117,105,108,100,101,114,82,97,105,100,49,0,0,82,101,98,117, -105,108,100,101,114,82,97,105,100,53,0,0,114,101,98,117,105,108,100,101, -114,46,99,112,112,0,0,0,86,101,114,105,102,105,101,114,0,0,0,0, -114,101,98,117,105,108,100,101,114,46,99,112,112,0,0,0,114,101,98,117, -105,108,100,101,114,46,99,112,112,0,0,0,86,69,82,73,70,89,32,40, -80,65,82,73,84,89,41,32,69,82,82,79,82,10,0,0,83,99,114,117, -98,98,101,114,0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -77,105,103,114,97,116,101,114,0,0,0,0,114,101,98,117,105,108,100,101, -114,46,99,112,112,0,0,0,32,32,68,117,112,108,105,99,97,116,101,0, -78,111,32,68,67,66,32,40,74,66,79,68,41,0,0,0,86,97,108,105, -100,32,68,67,66,0,0,0,32,32,77,97,116,99,104,101,100,0,0,0, -80,114,111,99,101,115,115,101,100,0,0,0,85,110,117,115,97,98,108,101, -32,68,67,66,0,0,0,0,79,114,112,104,97,110,32,68,67,66,0,0, -42,42,32,69,114,114,111,114,32,48,120,37,88,32,100,117,114,105,110,103, -32,68,67,66,32,114,101,45,119,114,105,116,101,32,40,114,111,108,108,99, -97,108,108,32,115,99,114,117,98,41,10,0,42,42,32,84,104,101,114,101, -32,119,101,114,101,32,37,105,32,68,67,66,32,114,101,45,119,114,105,116, -101,115,32,105,110,32,116,104,105,115,32,114,111,108,108,99,97,108,108,10, -0,0,0,0,117,110,105,116,61,37,100,44,32,112,111,114,116,61,37,100, -0,0,0,0,82,101,99,111,118,101,114,105,110,103,32,85,110,102,105,110, -105,115,104,101,100,32,65,114,114,97,121,32,85,112,100,97,116,101,44,32, -85,78,73,84,32,37,50,100,44,32,100,101,116,101,99,116,101,100,32,111, -110,32,112,111,114,116,32,37,105,10,0,0,42,42,32,83,98,117,102,32, -102,97,105,108,117,114,101,32,100,101,116,101,99,116,101,100,46,32,80,111, -114,116,32,115,99,97,110,32,115,107,105,112,112,101,100,46,10,0,0,0, -82,111,108,108,99,97,108,108,44,32,66,101,103,105,110,32,32,58,32,102, -105,110,100,32,100,114,105,118,101,115,44,32,114,101,97,100,32,68,67,66, -115,10,0,0,73,109,112,111,114,116,101,100,32,85,110,105,116,58,10,0, -84,104,101,114,101,32,119,101,114,101,32,37,105,32,68,67,66,32,114,101, -45,119,114,105,116,101,115,32,105,110,32,116,104,105,115,32,114,111,108,108, -99,97,108,108,10,0,0,0,69,114,114,111,114,32,48,120,37,88,32,100, -117,114,105,110,103,32,68,67,66,32,114,101,45,119,114,105,116,101,32,40, -114,111,108,108,99,97,108,108,32,115,99,114,117,98,41,10,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -112,111,114,116,32,37,50,100,58,32,67,98,111,100,32,79,102,102,108,105, -110,101,10,0,10,82,111,108,108,99,97,108,108,44,32,109,105,100,100,108, -101,32,58,32,99,104,101,99,107,32,68,67,66,115,44,32,101,120,112,111, -114,116,32,74,66,79,68,115,10,0,0,0,112,111,114,116,32,37,50,100, -58,32,37,115,10,0,0,0,82,111,108,108,99,97,108,108,32,100,101,115, -99,114,105,112,116,111,114,32,98,108,111,99,107,44,32,110,117,109,68,101, -115,99,114,105,112,116,111,114,115,61,37,105,10,0,0,0,114,111,108,108, -99,97,108,108,46,99,112,112,0,0,0,0,10,82,111,108,108,99,97,108, -108,44,32,102,105,110,105,115,104,32,58,32,109,97,107,101,32,82,65,73, -68,32,85,110,105,116,115,10,0,0,0,0,82,79,76,76,67,65,76,76, -58,32,67,114,101,97,116,101,85,110,105,116,32,102,97,105,108,101,100,44, -32,112,111,114,116,109,97,112,32,48,120,37,48,52,88,10,0,0,0,0, -91,37,50,105,93,32,115,117,98,115,61,37,105,44,32,99,102,103,61,37, -35,104,120,44,32,115,116,114,105,112,76,111,103,50,61,37,35,104,120,44, -32,112,111,114,116,61,37,105,44,32,108,111,103,68,114,118,61,37,105,44, -32,109,111,100,101,61,37,35,104,120,44,32,114,98,108,100,37,37,61,37, -105,44,10,32,32,32,32,32,32,79,102,102,115,101,116,61,37,35,48,56, -120,44,32,99,97,112,61,37,35,48,56,120,44,32,114,115,118,100,61,37, -35,104,120,32,37,35,104,120,44,32,102,108,97,103,115,61,37,35,104,120, -10,0,0,0,114,111,108,108,99,97,108,108,46,99,112,112,0,0,0,0, -82,111,108,108,99,97,108,108,32,101,114,114,111,114,58,32,90,101,114,111, -32,108,101,110,103,116,104,32,71,85,73,68,44,32,112,111,114,116,32,37, -50,100,10,0,112,111,114,116,32,37,50,100,58,32,37,115,10,0,0,0, -112,111,114,116,32,37,50,100,58,32,78,101,101,100,115,32,65,114,114,97, -121,32,85,112,100,97,116,101,32,99,111,109,112,108,101,116,105,111,110,46, -10,0,0,0,112,111,114,116,32,37,50,100,58,32,37,115,32,40,111,102, -32,112,111,114,116,61,37,100,41,46,32,85,112,100,97,116,101,32,99,111, -117,110,116,115,58,32,37,117,44,32,37,117,10,0,0,0,10,13,32,42, -32,42,32,42,32,85,110,101,120,112,101,99,116,101,100,32,73,110,116,101, -114,114,117,112,116,32,42,32,42,32,42,10,13,0,0,0,10,13,32,42, -32,42,32,42,32,69,120,99,101,112,116,105,111,110,32,73,110,116,101,114, -114,117,112,116,32,42,32,42,32,42,10,13,0,0,0,0,13,10,13,10, -32,62,62,62,32,105,110,105,116,105,97,108,105,122,105,110,103,32,112,114, -105,110,116,66,117,102,32,60,60,60,13,10,0,0,0,0,94,94,94,32, -37,105,32,99,104,97,114,115,32,114,101,116,97,105,110,101,100,32,102,114, -111,109,32,111,108,100,32,112,114,105,110,116,76,111,103,32,94,94,94,13, -10,0,0,0,115,101,114,105,97,108,73,79,46,99,112,112,0,0,0,0, -83,97,118,105,110,103,32,80,82,73,78,84,76,79,71,44,32,116,105,109, -101,61,37,105,32,46,46,46,32,0,0,0,37,105,32,68,111,110,101,46, -10,0,0,0,115,101,114,105,97,108,73,79,46,99,112,112,0,0,0,0, -77,117,116,83,112,105,78,86,82,97,109,0,107,101,114,110,101,108,46,104, -112,112,0,0,83,80,68,32,99,104,101,99,107,32,115,117,109,32,101,114, -114,111,114,58,48,120,37,120,32,98,121,116,101,115,10,0,87,101,32,117, -115,101,32,111,110,108,121,32,54,52,32,98,105,116,32,100,97,116,97,32, -119,105,100,116,104,46,32,116,104,101,32,100,101,118,105,99,101,32,104,97, -115,32,58,37,100,32,98,105,116,115,10,0,85,110,115,117,112,112,111,114, -116,101,100,32,67,65,83,32,108,97,116,101,110,99,121,32,58,48,120,37, -120,32,10,0,85,110,115,117,112,112,111,114,116,101,100,32,116,114,112,32, -58,48,120,37,120,32,10,0,77,111,100,117,108,101,32,104,97,115,32,110, -111,110,45,105,100,101,110,116,105,99,97,108,32,98,97,110,107,115,40,114, -111,119,115,41,58,48,120,37,120,32,10,0,85,110,115,117,112,112,111,114, -116,101,100,32,83,68,82,65,77,32,99,121,99,108,101,32,116,105,109,101, -58,48,120,37,120,32,10,0,85,110,115,117,112,112,111,114,116,101,100,32, -110,111,32,111,102,32,98,97,110,107,115,47,114,111,119,32,58,48,120,37, -120,32,10,0,73,110,115,117,102,102,105,99,105,101,110,116,32,83,80,68, -32,100,97,116,97,58,48,120,37,120,32,98,121,116,101,115,10,0,0,0, -85,110,115,117,112,112,111,114,116,101,100,32,100,97,116,97,32,119,105,100, -116,104,58,48,120,37,120,32,10,0,0,0,85,110,115,117,112,112,111,114, -116,101,100,32,101,114,114,111,114,32,100,101,116,101,99,116,105,111,110,32, -115,99,104,101,109,101,58,48,120,37,120,32,10,0,0,0,85,110,115,117, -112,112,111,114,116,101,100,32,77,111,100,117,108,101,32,97,116,116,114,105, -98,117,116,101,115,32,58,48,120,37,120,32,10,0,0,0,85,110,100,101, -102,105,110,101,100,32,116,114,112,32,58,48,120,37,120,32,10,0,0,0, -73,110,99,111,109,112,97,116,105,98,108,101,32,77,101,109,111,114,121,32, -116,121,112,101,32,58,48,120,37,120,32,10,0,0,0,0,77,111,100,117, -108,101,32,104,97,115,32,110,111,110,45,105,100,101,110,116,105,99,97,108, -47,117,110,115,117,112,112,111,114,116,101,100,32,98,97,110,107,115,40,99, -111,108,117,109,110,115,41,58,48,120,37,120,32,10,0,0,85,110,115,117, -112,112,111,114,116,101,100,32,77,111,100,117,108,101,32,82,111,119,115,58, -48,120,37,120,32,10,0,0,85,110,115,117,112,112,111,114,116,101,100,32, -118,111,108,116,97,103,101,32,105,110,116,101,114,102,97,99,101,58,48,120, -37,120,32,10,0,0,0,0,78,111,32,115,101,108,102,32,114,101,102,114, -101,115,104,32,102,111,114,32,68,73,77,77,32,58,48,120,37,120,32,10, -0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,98,117,114,115, -116,32,108,101,110,103,116,104,32,58,48,120,37,120,32,10,0,0,0,0, -85,110,115,117,112,112,111,114,116,101,100,32,67,83,32,108,97,116,101,110, -99,121,32,58,48,120,37,120,32,10,0,0,85,110,115,117,112,112,111,114, -116,101,100,32,87,69,32,108,97,116,101,110,99,121,32,58,48,120,37,120, -32,10,0,0,85,110,100,101,102,105,110,101,100,32,116,114,99,100,32,58, -48,120,37,120,32,10,0,0,85,110,115,117,112,112,111,114,116,101,100,32, -116,114,99,100,32,58,48,120,37,120,32,10,0,0,0,0,85,110,115,117, -112,112,111,114,116,101,100,32,99,108,111,99,107,32,100,101,108,97,121,32, -102,111,114,32,98,97,99,107,32,116,111,32,98,97,99,107,32,114,97,110, -100,111,109,32,99,111,108,117,109,110,32,97,100,100,114,101,115,115,58,48, -120,37,120,32,10,0,0,0,115,116,114,105,112,101,77,97,110,97,103,101, -114,46,99,112,112,0,0,0,65,117,116,111,32,83,112,97,114,101,32,84, -97,115,107,0,66,97,99,107,103,114,111,117,110,100,32,84,97,115,107,0, -65,117,116,111,32,67,108,101,97,110,32,84,97,115,107,0,80,111,114,116, -32,69,114,114,111,114,32,72,97,110,100,108,101,114,32,84,97,115,107,0, -81,117,101,117,101,66,117,102,102,101,114,90,101,114,111,0,83,101,99,111, -110,100,84,105,109,101,114,0,80,114,105,110,116,76,111,103,84,105,109,101, -114,0,0,0,81,117,101,117,101,80,111,114,116,73,112,114,69,114,114,111, -114,0,0,0,81,117,101,117,101,79,98,106,101,99,116,68,101,108,101,116, -101,0,0,0,81,117,101,117,101,80,111,114,116,83,99,97,110,0,0,0, -67,111,109,109,97,110,100,32,84,97,115,107,0,0,0,0,66,117,102,102, -101,114,32,90,101,114,111,32,84,97,115,107,0,0,0,0,70,108,117,115, -104,32,77,111,110,105,116,111,114,32,84,97,115,107,0,0,67,111,109,109, -97,110,100,32,69,114,114,111,114,32,72,97,110,100,108,101,114,32,84,97, -115,107,0,0,68,101,98,117,103,32,84,97,115,107,0,0,69,118,101,110, -116,70,108,97,103,115,83,108,111,119,0,0,69,118,101,110,116,70,108,97, -103,115,70,97,115,116,0,0,83,111,102,116,82,101,115,101,116,84,105,109, -101,114,0,0,81,117,101,117,101,67,109,100,73,112,114,69,114,114,111,114, -0,0,0,0,81,117,101,117,101,65,117,116,111,67,108,101,97,110,0,0, -81,117,101,117,101,70,108,117,115,104,67,111,109,112,108,101,116,101,0,0, -83,116,114,105,112,101,78,111,100,101,80,111,111,108,0,0,116,97,115,107, -69,110,116,114,121,46,99,112,112,0,0,0,115,101,109,65,115,115,101,114, -116,0,0,0,83,111,102,116,32,82,101,115,101,116,32,72,97,110,100,108, -101,114,32,83,116,97,114,116,101,100,32,46,46,46,10,0,83,116,111,112, -112,105,110,103,32,37,115,32,46,46,46,0,82,101,115,101,116,32,70,97, -105,108,101,100,33,33,10,0,116,97,115,107,69,110,116,114,121,46,99,112, -112,0,0,0,83,116,111,112,112,105,110,103,32,37,115,32,40,84,105,109, -101,111,117,116,41,32,46,46,46,0,0,0,84,105,109,101,32,32,58,32, -32,37,48,56,120,10,0,0,83,116,111,112,112,105,110,103,32,37,115,32, -46,46,46,32,83,107,105,112,112,101,100,10,0,0,0,0,32,72,97,108, -116,101,100,10,0,0,0,0,83,116,111,112,112,105,110,103,32,37,115,32, -40,65,115,115,101,114,116,41,32,46,46,46,32,0,0,0,116,97,115,107, -69,110,116,114,121,46,99,112,112,0,0,0,65,98,111,114,116,101,100,10, -0,0,0,0,116,97,115,107,69,110,116,114,121,46,99,112,112,0,0,0, -32,65,98,111,114,116,101,100,10,0,0,0,32,73,103,110,111,114,101,100, -10,0,0,0,116,97,115,107,69,110,116,114,121,46,99,112,112,0,0,0, -82,101,115,116,97,114,116,105,110,103,32,37,115,32,46,46,46,32,0,0, -116,97,115,107,69,110,116,114,121,46,99,112,112,0,0,0,116,97,115,107, -69,110,116,114,121,46,99,112,112,0,0,0,83,111,102,116,82,101,115,101, -116,67,111,117,110,116,61,37,100,0,0,0,116,97,115,107,69,110,116,114, -121,46,99,112,112,0,0,0,46,46,112,111,119,101,114,32,115,101,116,116, -108,101,32,40,112,114,101,45,114,111,108,108,99,97,108,108,41,32,112,97, -117,115,101,46,46,10,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -115,112,97,114,101,32,117,110,105,116,61,37,100,44,32,82,65,73,68,32, -117,110,105,116,61,37,100,0,107,101,114,110,101,108,46,104,112,112,0,0, -65,117,116,111,32,67,108,101,97,110,58,32,37,100,10,0,10,65,117,116, -111,67,108,101,97,110,32,100,101,116,101,99,116,101,100,32,112,111,114,116, -32,37,100,32,80,111,119,101,114,32,67,121,99,108,101,100,46,10,0,0, -236,176,255,255,156,7,133,0,72,180,255,255,172,7,133,0,232,135,145,0, -232,6,133,0,136,113,1,0,0,0,0,0,100,0,0,0,100,0,0,0, -1,0,0,0,148,24,148,0,188,7,133,0,64,114,1,0,0,0,0,0, -1,0,0,0,1,0,0,0,0,0,0,0,56,24,148,0,244,6,133,0, -82,178,129,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -20,136,145,0,4,7,133,0,1,0,0,0,152,0,0,0,76,136,145,0, -204,7,133,0,1,0,0,0,0,71,0,0,216,215,255,255,216,6,133,0, -1,0,0,0,64,0,0,0,188,136,145,0,24,7,133,0,2,0,0,0, -128,0,0,0,244,136,145,0,44,7,133,0,2,0,0,0,32,0,0,0, -44,137,145,0,224,7,133,0,2,0,0,0,8,0,0,0,104,180,255,255, -240,7,133,0,1,0,0,0,192,0,0,0,16,216,255,255,4,8,133,0, -20,0,0,0,128,112,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,107,101,114,110,101,108,46,104,112,112,0,0,32,42,32,42, -32,42,32,67,114,101,97,116,101,32,117,110,105,116,32,102,97,105,108,101, -100,58,32,68,97,116,97,32,99,104,97,110,110,101,108,32,110,111,116,32, -99,111,110,115,116,117,99,116,101,100,10,0,107,101,114,110,101,108,46,104, -112,112,0,0,32,42,32,42,32,42,32,67,114,101,97,116,101,32,117,110, -105,116,32,102,97,105,108,101,100,58,32,68,97,116,97,32,99,104,97,110, -110,101,108,32,110,111,116,32,99,111,110,115,116,114,117,99,116,101,100,10, -0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0,32,105,115,32, -37,115,108,105,110,101,10,0,85,78,73,84,58,32,37,50,100,32,45,32, -78,111,116,32,97,32,118,97,108,105,100,32,117,110,105,116,10,0,0,0, -85,78,73,84,58,32,37,50,100,44,32,99,97,112,97,99,105,116,121,58, -32,37,76,117,44,0,0,0,117,110,105,116,65,99,99,101,115,115,46,99, -112,112,0,0,85,78,73,84,58,32,37,50,100,32,32,100,101,108,101,116, -101,100,46,10,0,0,0,0,85,65,58,68,101,103,114,97,100,101,80,111, -114,116,32,40,112,111,114,116,78,117,109,98,101,114,44,32,101,114,114,111, -114,67,111,100,101,41,58,32,37,120,44,32,37,120,10,0,117,110,105,116, -61,37,100,44,32,112,111,114,116,61,37,100,0,0,0,0,107,101,114,110, -101,108,46,104,112,112,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,85,112,100,97,116,105,110,103, -32,99,97,99,104,101,32,115,101,116,116,105,110,103,115,32,102,111,114,32, -117,110,105,116,58,32,37,100,10,0,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,107,101,114,110,101,108,46,104,112,112,0,0,117,110,105,116, -65,99,99,101,115,115,46,99,112,112,0,0,107,101,114,110,101,108,46,104, -112,112,0,0,117,110,105,116,65,99,99,101,115,115,46,99,112,112,0,0, -32,42,32,42,32,42,32,67,114,101,97,116,101,32,117,110,105,116,32,102, -97,105,108,101,100,58,32,78,111,32,117,110,105,116,32,110,117,109,98,101, -114,32,97,118,97,105,108,97,98,108,101,10,0,0,0,0,85,110,105,116, -32,37,100,0,0,0,0,0,32,42,32,42,32,42,32,85,110,105,116,32, -37,50,100,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,44,32, -100,101,108,101,116,105,110,103,32,100,117,112,108,105,99,97,116,101,32,100, -97,116,97,32,99,104,97,110,110,101,108,40,115,41,10,0,85,65,58,32, -69,120,99,108,117,100,105,110,103,32,97,32,115,116,97,108,101,47,100,101, -103,114,97,100,101,100,32,82,97,105,100,49,32,100,114,105,118,101,10,0, -117,110,105,116,65,99,99,101,115,115,46,99,112,112,0,0,85,65,58,32, -67,104,101,99,107,105,110,103,32,82,97,105,100,49,32,69,120,99,108,117, -115,105,111,110,32,76,105,115,116,32,40,99,111,117,110,116,32,37,100,41, -46,10,0,0,85,65,58,32,68,101,108,101,116,105,110,103,32,105,110,118, -97,108,105,100,32,111,114,32,101,109,112,116,121,32,82,97,105,100,49,32, -69,120,99,108,117,115,105,111,110,32,76,105,115,116,46,10,0,0,0,0, -32,32,42,42,32,85,71,84,47,80,85,78,32,116,97,98,108,101,32,119, -97,115,32,99,111,114,114,117,112,116,101,100,59,32,114,101,45,105,110,105, -116,105,97,108,105,122,105,110,103,32,42,42,10,0,0,0,85,71,84,47, -80,85,78,32,84,97,98,108,101,32,114,101,116,97,105,110,101,100,32,97, -99,114,111,115,115,32,115,111,102,116,32,114,101,115,101,116,10,0,0,0, -51,87,97,114,101,68,67,66,0,0,0,0,85,71,84,47,80,85,78,32, -84,97,98,108,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0, -117,110,105,116,65,99,99,101,115,115,46,99,112,112,0,0,117,110,105,116, -65,99,99,101,115,115,46,99,112,112,0,0,117,110,105,116,65,99,99,101, -115,115,46,99,112,112,0,0,117,110,105,116,65,99,99,101,115,115,46,99, -112,112,0,0,117,110,105,116,65,99,99,101,115,115,46,99,112,112,0,0, -107,101,114,110,101,108,46,104,112,112,0,0,82,101,45,110,117,109,98,101, -114,105,110,103,32,117,110,105,116,115,58,32,40,116,104,101,114,101,32,97, -114,101,32,37,100,32,118,97,108,105,100,32,117,110,105,116,115,41,10,0, -10,111,108,100,32,117,110,105,116,35,58,0,10,110,101,119,32,117,110,105, -116,35,58,0,114,97,110,107,32,35,32,48,120,58,0,0,117,110,105,116, -65,99,99,101,115,115,46,99,112,112,0,0,32,32,32,91,117,110,105,116, -93,58,0,0,114,97,110,107,32,35,32,48,120,58,0,0,85,65,58,58, -83,112,97,114,101,85,110,105,116,40,37,105,41,32,99,104,101,99,107,105, -110,103,32,102,111,114,32,115,112,97,114,101,32,110,101,101,100,101,100,10, -0,0,0,0,107,101,114,110,101,108,46,104,112,112,0,0,85,65,58,58, -83,112,97,114,101,85,110,105,116,32,100,111,110,101,46,10,0,0,0,0, -85,65,58,82,101,109,111,118,101,80,111,114,116,32,40,112,111,114,116,78, -117,109,98,101,114,44,32,101,114,114,111,114,67,111,100,101,41,58,32,37, -120,44,32,37,120,10,0,0,107,101,114,110,101,108,46,104,112,112,0,0, -85,65,58,82,101,112,108,97,99,101,85,110,105,116,80,111,114,116,32,99, -111,109,112,108,101,116,101,32,40,101,114,114,111,114,67,111,100,101,41,58, -32,37,35,120,10,0,0,0,85,65,58,58,82,101,112,108,97,99,101,85, -110,105,116,80,111,114,116,32,40,112,97,114,101,110,116,44,32,114,101,112, -108,97,99,101,109,101,110,116,41,58,32,37,120,44,32,37,120,10,0,0, -117,110,105,116,65,99,99,101,115,115,46,99,112,112,0,0,70,111,117,110, -100,32,105,110,118,97,108,105,100,32,82,97,105,100,49,32,69,120,99,108, -117,115,105,111,110,32,76,105,115,116,59,32,119,105,108,108,32,98,101,32, -111,118,101,114,119,114,105,116,116,101,110,10,0,0,0,0,85,65,58,32, -69,110,100,32,111,102,32,82,97,105,100,49,32,69,120,99,108,117,115,105, -111,110,32,76,105,115,116,32,101,120,99,101,101,100,101,100,32,109,97,120, -105,109,117,109,44,32,110,111,119,32,99,111,114,114,101,99,116,101,100,10, -0,0,0,0,85,65,58,32,65,100,100,105,110,103,32,116,111,32,82,97, -105,100,49,32,69,120,99,108,117,115,105,111,110,32,76,105,115,116,59,32, -108,105,115,116,32,110,111,119,32,104,97,115,32,37,100,32,101,110,116,114, -105,101,115,46,10,0,0,0,120,83,116,114,101,97,109,77,103,114,46,99, -112,112,0,0,120,83,116,114,101,97,109,77,103,114,46,99,112,112,0,0, -120,83,116,114,101,97,109,77,103,114,46,99,112,112,0,0,120,83,116,114, -101,97,109,77,103,114,46,99,112,112,0,0,69,82,82,79,82,45,114,101, -99,101,105,118,101,100,32,117,110,107,110,111,119,110,32,100,101,98,117,103, -32,114,101,113,117,101,115,116,32,48,120,0,69,82,82,79,82,45,114,101, -99,101,105,118,101,100,32,105,110,97,112,112,114,111,112,114,105,97,116,101, -32,100,101,98,117,103,32,114,101,113,117,101,115,116,32,48,120,0,0,0, -69,82,82,79,82,45,114,101,99,101,105,118,101,100,32,77,111,110,82,101, -116,114,121,32,105,110,32,82,101,99,101,105,118,101,82,101,113,117,101,115, -116,0,0,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,45, -32,117,110,107,110,111,119,110,32,109,101,115,115,97,103,101,32,105,110,32, -83,101,110,100,82,101,115,112,111,110,115,101,58,32,48,120,0,0,0,0, -69,82,82,79,82,32,45,32,117,110,107,110,111,119,110,32,98,114,101,97, -107,112,111,105,110,116,32,115,105,122,101,0,69,82,82,79,82,32,45,32, -98,114,101,97,107,112,111,105,110,116,32,105,110,115,116,114,117,99,116,105, -111,110,32,97,108,114,101,97,100,121,32,114,101,109,111,118,101,100,32,97, -116,32,48,120,0,0,0,0,87,65,82,78,73,78,71,32,45,32,109,111, -110,105,116,111,114,32,115,116,97,99,107,32,98,111,117,110,100,97,114,105, -101,115,32,104,97,118,101,32,98,101,101,110,32,97,108,116,101,114,101,100, -0,0,0,0,13,10,77,85,76,84,73,32,77,111,110,105,116,111,114,32, -49,46,56,46,55,32,0,0,13,10,67,111,112,121,114,105,103,104,116,32, -40,67,41,32,49,57,57,49,44,49,57,57,50,44,49,57,57,51,44,49, -57,57,52,32,98,121,32,71,114,101,101,110,32,72,105,108,108,115,32,83, -111,102,116,119,97,114,101,44,32,73,110,99,46,13,10,65,108,108,32,114, -105,103,104,116,115,32,114,101,115,101,114,118,101,100,46,32,70,101,98,32, -48,53,32,49,57,57,57,32,50,48,58,49,56,58,51,56,32,13,10,82, -84,69,86,56,53,48,69,77,69,44,56,51,44,76,51,50,44,86,51,46, -48,51,46,48,44,78,111,118,32,49,54,32,50,48,48,50,44,32,67,111, -112,121,114,105,103,104,116,32,40,99,41,32,49,57,57,57,32,77,105,100, -97,115,32,108,97,98,44,73,110,99,46,10,13,0,103,111,111,100,98,121, -101,32,99,114,117,101,108,32,119,111,114,108,100,0,83,101,110,100,77,101, -115,115,97,103,101,32,112,114,111,116,111,99,111,108,32,118,105,111,108,97, -116,101,100,0,78,69,67,32,86,56,53,48,69,47,77,69,50,0,0,0, -69,114,114,111,114,58,32,101,120,112,101,99,116,101,100,32,104,97,108,116, -32,99,104,97,114,97,99,116,101,114,44,32,110,111,116,32,48,120,0,0, -83,121,115,116,101,109,32,84,105,109,101,114,32,84,104,114,101,97,100,0, -95,95,103,104,76,111,99,107,77,117,116,101,120,0,0,0,248,12,128,0, -240,20,128,0,42,63,128,0,26,123,128,0,136,31,129,0,252,42,129,0, -82,70,129,0,36,110,129,0,82,110,129,0,2,186,129,0,14,190,129,0, -0,0,0,0,0,0,0,0,127,0,0,0,192,29,133,0,0,0,0,0, -136,6,0,0,176,134,133,0,0,0,0,0,68,248,14,0,48,176,255,255, -0,0,0,0,148,8,0,0,196,184,255,255,0,0,0,0,252,38,0,0, -196,223,255,255,0,0,0,0,0,0,0,0,224,70,133,0,112,92,130,0, -208,63,0,0,136,27,133,0,64,156,130,0,52,2,0,0,188,23,133,0, -116,158,130,0,204,3,0,0,192,223,255,255,64,162,130,0,4,0,0,0, -0,176,255,255,68,162,130,0,44,0,0,0,196,184,255,255,112,162,130,0, -0,0,0,0,0,0,0,0,112,162,130,0,226,216,1,0,140,131,133,0, -148,131,133,0,156,131,133,0,172,131,133,0,180,131,133,0,188,131,133,0, -196,131,133,0,200,131,133,0,236,131,133,0,244,131,133,0,252,131,133,0, -12,132,133,0,20,132,133,0,28,132,133,0,44,132,133,0,52,132,133,0, -60,132,133,0,76,132,133,0,84,132,133,0,92,132,133,0,172,134,133,0, -49,49,49,49,49,49,51,49,49,49,49,49,49,49,49,49,49,49,49,49, -177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,64,48,32,16,68,51,34,17,3,0,24,0,240,23,5,0, -173,147,200,40,240,23,5,0,128,112,96,80,136,119,102,85,3,0,24,0, -64,192,0,0,184,31,233,31,0,0,0,0,85,170,96,233,84,16,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,0,28,0, -36,80,110,80,1,2,0,0,0,111,1,16,19,39,91,0,97,0,1,0, -0,68,83,0,90,0,0,0,0,0,83,16,0,0,0,0,0,80,78,80, -32,72,111,111,107,85,112,32,99,97,108,108,101,100,0,144,144,144,232,237, -14,203,203,51,119,97,114,101,0,51,119,97,114,101,32,83,116,111,114,97, -103,101,32,67,111,110,116,114,111,108,108,101,114,0,0,0,0,80,67,73, -82,193,19,2,16,0,0,24,0,0,0,0,16,96,0,1,0,0,128,0, -0,0,0,0,0,0,0,0,0,0,36,86,69,82,66,69,57,88,32,50, -46,48,50,46,48,49,46,48,51,55,0,86,69,82,36,233,160,15,0,0, -0,11,0,11,129,2,197,3,62,2,249,10,249,10,249,10,15,5,0,11, -249,10,249,10,0,11,0,11,249,10,249,10,0,11,0,11,0,11,0,11, -0,11,66,5,107,5,129,5,224,6,107,9,249,10,249,10,0,11,78,8, -249,10,1,102,85,102,86,30,15,160,80,83,140,216,139,222,232,194,13,137, -132,7,6,137,156,9,6,91,88,46,58,22,154,0,114,64,46,58,22,155, -0,119,57,87,81,191,83,16,46,15,182,14,156,0,131,199,13,87,46,128, -125,25,0,117,6,95,129,199,95,1,87,46,56,85,25,117,14,137,188,205, -6,95,131,239,13,137,188,203,6,235,5,131,199,26,226,218,89,95,235,41, -246,194,128,116,18,102,139,172,0,6,15,161,31,102,94,156,14,104,122,1, -102,85,203,15,161,31,102,94,205,64,102,93,202,2,0,180,1,249,233,175, -0,128,252,21,119,2,235,18,46,128,62,250,0,0,116,235,128,252,73,119, -230,128,252,65,114,225,137,132,15,6,156,88,137,132,21,6,250,137,164,11, -6,140,208,137,132,13,6,184,122,1,3,198,139,224,140,216,142,208,139,132, -21,6,80,157,139,132,15,6,128,252,21,119,18,86,139,240,129,230,0,255, -193,238,7,46,255,148,188,0,94,235,42,128,236,65,30,86,80,83,139,132, -7,6,139,156,9,6,142,216,139,243,91,88,87,139,248,129,231,0,255,193, -239,7,128,196,65,46,255,149,232,0,95,94,31,102,137,132,17,6,137,132, -15,6,156,88,137,132,21,6,250,139,132,11,6,139,224,139,132,13,6,142, -208,139,132,21,6,80,157,102,139,132,17,6,139,132,15,6,15,161,31,102, -94,102,93,202,2,0,102,15,200,80,102,15,200,83,82,81,87,232,129,12, -139,188,205,6,136,132,5,6,232,232,11,46,138,117,24,178,4,51,201,138, -140,5,6,179,3,232,2,8,114,6,138,132,5,6,235,2,176,0,232,145, -8,95,89,90,91,102,15,200,88,102,15,200,195,102,15,200,80,102,15,200, -30,86,6,87,102,83,102,81,102,82,30,86,232,54,12,199,132,177,6,0, -0,199,132,175,6,0,0,199,132,37,6,1,0,199,132,187,6,0,0,199, -132,185,6,0,0,94,31,232,7,9,115,27,128,252,0,117,3,248,235,1, -249,102,90,102,89,102,91,95,7,94,31,102,15,200,88,102,15,200,195,30, -86,232,241,11,131,188,189,6,2,116,33,87,139,188,205,6,136,132,5,6, -46,138,117,24,178,2,232,36,7,114,6,138,132,5,6,235,2,176,0,95, -94,31,235,179,131,196,4,136,132,6,6,136,132,4,6,102,80,102,83,102, -51,192,140,192,102,193,224,4,102,15,183,219,102,3,195,102,169,255,1,0, -0,102,91,102,88,117,5,232,94,0,235,131,87,81,82,83,83,6,30,138, -132,6,6,60,1,114,2,176,1,30,7,187,0,4,3,222,232,65,0,31, -7,91,114,45,156,81,86,252,139,251,129,198,0,4,15,182,200,193,225,8, -243,165,94,89,157,40,132,6,6,116,18,50,228,80,80,232,53,7,131,196, -2,88,193,224,9,3,216,235,183,138,132,4,6,42,132,6,6,91,90,89, -95,233,39,255,102,81,102,82,87,232,53,11,136,132,5,6,232,160,10,139, -188,205,6,46,138,117,24,178,2,51,201,138,140,5,6,232,0,6,114,6, -138,132,5,6,235,2,176,0,232,71,7,95,102,90,102,89,195,102,15,200, -80,102,15,200,30,86,6,87,102,83,102,81,102,82,30,86,232,242,10,199, -132,177,6,0,0,199,132,175,6,0,0,199,132,37,6,1,0,199,132,187, -6,0,0,199,132,185,6,0,0,94,31,232,195,7,115,27,128,252,0,117, -3,248,235,1,249,102,90,102,89,102,91,95,7,94,31,102,15,200,88,102, -15,200,195,30,86,232,173,10,131,188,189,6,2,116,33,87,139,188,205,6, -136,132,5,6,46,138,117,24,178,3,232,224,5,114,6,138,132,5,6,235, -2,176,0,95,94,31,235,179,131,196,4,136,132,6,6,136,132,4,6,102, -80,102,83,102,51,192,140,192,102,193,224,4,102,15,183,219,102,3,195,102, -169,255,1,0,0,102,91,102,88,117,5,232,100,0,235,131,87,81,82,83, -83,6,30,138,132,6,6,60,1,114,2,176,1,139,254,140,198,30,30,7, -142,222,139,243,129,199,0,4,87,156,81,252,15,182,200,193,225,8,243,165, -89,157,91,31,232,47,0,31,7,91,114,27,232,26,10,40,132,6,6,116, -18,50,228,80,80,232,235,5,131,196,2,88,193,224,9,3,216,235,177,138, -132,4,6,42,132,6,6,91,90,89,95,233,33,255,102,81,102,82,87,232, -235,9,136,132,5,6,232,86,9,139,188,205,6,46,138,117,24,178,3,51, -201,138,140,5,6,232,182,4,114,6,138,132,5,6,235,2,176,0,232,253, -5,95,102,90,102,89,195,87,232,186,9,139,188,205,6,46,139,21,138,234, -42,210,193,234,2,46,138,77,14,10,202,46,138,117,2,254,206,86,30,190, -64,0,142,222,190,117,0,138,20,31,94,51,192,232,198,5,95,195,86,87, -232,134,9,139,188,205,6,46,139,77,20,227,7,51,201,73,139,209,235,8, -46,139,77,18,46,139,85,16,50,228,232,161,5,180,3,248,95,94,195,129, -251,170,85,117,12,185,1,0,184,0,33,187,85,170,248,235,3,180,1,249, -195,102,15,200,80,102,15,200,30,86,6,87,102,83,102,81,102,82,30,86, -232,54,9,199,132,177,6,0,0,199,132,175,6,0,0,199,132,37,6,1, -0,199,132,187,6,0,0,199,132,185,6,0,0,94,31,30,7,139,254,232, -3,6,115,27,128,252,0,117,3,248,235,1,249,102,90,102,89,102,91,95, -7,94,31,102,15,200,88,102,15,200,195,30,86,30,7,139,254,232,233,8, -140,132,207,6,137,188,209,6,131,188,189,6,2,116,27,87,139,188,205,6, -46,138,117,24,178,2,232,24,4,95,94,31,115,177,38,199,69,2,0,0, -235,169,131,196,4,102,38,139,85,8,38,139,69,2,137,132,6,6,137,132, -4,6,38,139,93,4,80,38,139,69,6,142,192,88,102,80,102,83,102,51, -192,140,192,102,193,224,4,102,15,183,219,102,3,195,102,169,255,1,0,0, -102,91,102,88,117,6,232,88,0,233,99,255,83,6,30,184,1,0,30,7, -187,0,4,3,222,80,232,68,0,88,31,7,91,115,2,235,49,156,81,86, -252,139,251,129,198,0,4,139,200,193,225,8,243,165,94,89,157,41,132,6, -6,117,5,180,0,248,235,18,102,80,102,37,255,255,0,0,102,3,208,102, -88,232,244,4,235,182,138,132,4,6,42,132,6,6,233,14,255,102,81,102, -82,87,232,28,8,139,188,205,6,139,200,102,139,194,46,138,117,24,178,2, -232,239,2,115,18,6,87,142,132,207,6,139,188,209,6,38,199,69,2,0, -0,95,7,232,44,4,95,102,90,102,89,195,102,15,200,80,102,15,200,30, -86,6,87,102,83,102,81,102,82,30,86,232,215,7,199,132,177,6,0,0, -199,132,175,6,0,0,199,132,37,6,1,0,199,132,187,6,0,0,199,132, -185,6,0,0,94,31,30,7,139,254,232,164,4,115,27,128,252,0,117,3, -248,235,1,249,102,90,102,89,102,91,95,7,94,31,102,15,200,88,102,15, -200,195,30,86,30,7,139,254,232,138,7,140,132,207,6,137,188,209,6,131, -188,189,6,2,116,27,87,139,188,205,6,46,138,117,24,178,3,232,185,2, -95,94,31,115,177,38,199,69,2,0,0,235,169,131,196,4,102,38,139,85, -8,38,139,69,2,137,132,6,6,137,132,4,6,38,139,93,4,80,38,139, -69,6,142,192,88,102,80,102,83,102,51,192,140,192,102,193,224,4,102,15, -183,219,102,3,195,102,169,255,1,0,0,102,91,102,88,117,6,232,103,0, -233,99,255,83,6,30,139,132,6,6,131,248,1,114,3,184,1,0,139,254, -140,198,30,30,7,142,222,139,243,129,199,0,4,87,156,81,252,139,200,193, -225,8,243,165,89,157,91,31,80,232,51,0,88,31,7,91,115,2,235,32, -232,222,6,41,132,6,6,117,5,180,0,248,235,18,102,80,102,37,255,255, -0,0,102,3,208,102,88,232,134,3,235,167,138,132,4,6,42,132,6,6, -233,255,254,102,81,102,82,87,232,174,6,139,188,205,6,139,200,102,139,194, -46,138,117,24,178,3,232,129,1,115,18,6,87,142,132,207,6,139,188,209, -6,38,199,69,2,0,0,95,7,232,190,2,95,102,90,102,89,195,30,86, -6,87,83,102,82,81,102,80,30,86,232,112,6,139,188,205,6,102,46,139, -69,16,102,46,139,85,20,94,31,139,12,131,249,26,15,130,231,0,199,68, -2,0,0,199,68,4,0,0,199,68,6,0,0,199,68,8,0,0,199,68, -10,0,0,199,68,12,0,0,199,68,14,0,0,102,137,68,16,102,137,84, -20,199,68,24,0,2,131,60,30,15,130,164,0,102,199,68,26,255,255,255, -255,233,159,0,198,68,30,190,198,68,31,221,198,68,32,36,198,68,33,0, -199,68,34,0,0,198,68,36,80,198,68,37,67,198,68,38,73,199,68,40, -83,67,199,68,42,83,73,30,86,87,232,228,5,139,188,203,6,46,138,69, -2,46,138,93,3,46,138,77,4,95,94,31,136,68,48,136,92,49,136,76, -50,198,68,51,0,102,199,68,52,0,0,0,0,82,129,234,128,0,136,84, -56,90,198,68,57,0,199,68,58,0,0,102,199,68,60,0,0,0,0,198, -68,64,0,50,192,185,35,0,139,222,131,195,30,2,7,67,226,251,246,216, -136,68,65,102,88,180,0,89,102,90,91,95,7,94,31,248,195,199,4,26, -0,235,236,199,4,30,0,235,230,102,88,180,1,89,102,90,91,95,7,94, -31,249,195,102,15,200,80,102,15,200,6,83,82,81,87,86,30,7,139,254, -232,78,5,102,38,139,69,8,38,139,77,2,87,139,188,205,6,46,138,117, -24,178,4,179,3,232,210,0,95,115,6,38,199,69,2,0,0,232,98,1, -94,95,89,90,91,7,102,15,200,88,102,15,200,195,30,87,102,81,102,82, -102,83,191,0,2,3,254,128,202,96,136,21,198,69,1,5,198,69,2,0, -136,117,3,198,69,4,0,198,69,5,0,42,237,137,77,6,102,137,69,8, -102,51,192,140,192,102,193,224,4,102,15,183,219,102,3,195,102,137,69,12, -102,15,183,201,102,193,225,9,102,137,77,16,232,18,1,232,24,1,138,101, -4,10,228,116,3,180,32,249,102,91,102,90,102,89,95,31,195,30,87,102, -83,81,191,0,2,3,254,128,202,96,136,21,198,69,1,3,198,69,2,0, -136,117,3,198,69,4,0,198,69,5,0,139,140,183,6,137,77,6,102,139, -156,179,6,102,137,93,8,139,132,177,6,209,224,1,69,1,232,190,0,232, -196,0,138,101,4,10,228,116,3,180,32,249,89,102,91,95,31,195,30,87, -102,81,102,82,102,83,191,0,2,3,254,136,21,136,93,1,198,69,2,0, -136,117,3,198,69,4,0,198,69,5,0,137,77,6,102,137,69,8,232,128, -0,232,134,0,138,101,4,10,228,116,3,180,16,249,102,91,102,90,102,89, -95,31,195,85,139,236,80,139,70,4,131,248,0,116,6,232,6,0,72,235, -245,88,93,195,80,87,138,193,36,63,254,192,139,188,205,6,46,58,69,14, -118,31,176,1,254,198,46,58,117,2,114,21,50,246,138,229,193,225,2,129, -225,255,3,138,204,65,138,225,193,233,2,138,236,128,225,192,10,200,95,88, -195,180,1,232,8,0,249,195,51,192,232,1,0,195,30,86,190,64,0,142, -222,190,116,0,136,36,94,31,195,139,215,232,162,3,232,16,0,195,232,45, -0,102,37,0,64,0,0,117,245,232,67,0,195,87,139,188,203,6,46,131, -61,0,116,10,82,46,139,85,7,102,239,90,95,195,86,46,139,117,7,102, -100,137,4,94,95,195,87,139,188,203,6,46,131,61,0,116,10,82,46,139, -85,5,102,237,90,95,195,86,46,139,117,5,102,100,139,4,94,95,195,87, -139,188,203,6,46,131,61,0,116,10,82,46,139,85,9,102,237,90,95,195, -86,46,139,117,9,102,100,139,4,94,95,195,102,80,102,81,82,139,208,193, -226,9,102,51,192,102,51,201,139,195,139,203,3,194,102,59,193,127,14,139, -195,131,227,15,193,232,4,140,193,3,200,142,193,3,218,90,102,89,102,88, -195,30,86,87,6,232,5,3,131,188,185,6,0,116,32,128,188,196,6,21, -118,9,38,131,125,2,0,116,16,235,4,60,0,116,10,139,132,185,6,1, -132,187,6,235,70,235,86,137,132,195,6,137,156,197,6,137,140,199,6,137, -148,201,6,128,252,21,118,30,102,38,139,69,8,102,137,132,191,6,102,38, -15,183,85,2,80,38,139,93,4,38,139,69,6,142,192,88,235,57,232,26, -2,102,137,132,191,6,102,51,210,138,148,195,6,235,40,139,132,175,6,59, -132,37,6,117,30,51,192,138,132,187,6,180,0,139,156,197,6,139,140,199, -6,139,148,201,6,232,178,254,232,60,2,249,233,139,1,30,106,64,31,246, -6,123,0,32,31,117,33,199,132,177,6,1,0,137,148,185,6,139,148,201, -6,139,132,195,6,131,132,175,6,1,199,132,189,6,2,0,248,233,94,1, -247,132,124,1,1,0,117,17,102,193,226,9,232,84,1,114,2,235,6,180, -2,176,0,235,164,102,80,81,87,139,132,175,6,193,224,3,139,254,129,199, -39,6,3,248,199,132,177,6,0,0,102,139,5,102,169,255,1,0,0,117, -22,131,132,177,6,1,139,140,175,6,3,140,177,6,131,199,8,59,140,37, -6,114,223,95,89,102,88,131,188,177,6,0,15,132,136,0,6,87,86,81, -30,7,191,0,2,3,254,131,199,12,139,140,177,6,193,225,3,139,132,175, -6,193,224,3,129,198,39,6,3,240,243,164,89,94,95,7,81,102,82,51, -201,102,51,210,59,140,177,6,116,24,139,132,175,6,3,193,193,224,3,86, -129,198,39,6,3,240,102,3,84,4,94,65,235,226,102,193,234,9,137,148, -183,6,102,81,102,51,201,102,139,132,191,6,139,140,187,6,102,3,193,102, -137,132,179,6,102,89,139,132,177,6,1,132,175,6,137,148,185,6,139,194, -102,90,89,199,132,189,6,3,0,248,235,118,102,83,139,156,175,6,193,227, -3,86,129,198,39,6,3,243,102,139,92,4,102,193,235,9,94,128,188,196, -6,21,118,37,102,81,102,51,201,102,139,132,191,6,139,140,187,6,102,3, -193,102,38,137,69,8,102,89,38,137,93,2,137,156,185,6,102,91,7,235, -35,139,140,199,6,139,148,201,6,255,180,187,6,232,231,252,131,196,2,137, -156,185,6,102,91,139,132,195,6,138,132,185,6,131,196,2,199,132,189,6, -2,0,131,132,175,6,1,248,235,1,7,95,94,31,195,102,80,102,82,137, -148,23,6,102,193,234,16,137,148,25,6,137,156,27,6,199,132,29,6,0, -0,140,192,137,132,31,6,199,132,33,6,0,0,199,132,35,6,17,0,199, -132,37,6,0,0,6,87,30,7,139,254,129,199,23,6,51,210,184,5,129, -205,75,95,7,115,2,235,6,131,140,124,1,1,248,102,90,102,88,195,102, -81,102,82,86,87,139,188,205,6,82,81,102,51,192,46,138,69,2,46,138, -85,14,246,226,102,51,210,138,209,193,226,2,138,213,102,15,183,202,102,51, -210,102,247,225,89,90,102,80,42,228,138,198,46,138,85,14,246,226,102,15, -183,208,102,131,225,63,102,88,102,3,194,102,3,193,102,72,95,94,102,90, -102,89,195,6,80,82,87,247,132,124,1,1,0,116,22,140,216,142,192,139, -254,129,199,23,6,51,210,184,6,129,205,75,131,164,124,1,254,95,90,88, -7,195,0,0,102,51,192,140,216,102,193,224,4,102,15,183,210,102,3,194, -195,80,83,46,128,62,153,0,1,117,12,106,64,31,187,14,0,139,7,142, -216,235,7,46,139,54,149,0,142,222,46,139,54,151,0,91,88,195,0,30, -102,83,102,80,156,250,51,192,142,216,187,76,0,102,139,7,187,0,1,102, -137,7,157,102,88,102,91,31,195,102,86,30,102,193,224,2,51,246,142,222, -102,139,240,156,250,103,102,139,6,103,137,62,103,137,94,2,157,31,102,94, -195,30,86,80,190,64,0,142,222,190,117,0,46,138,69,12,0,4,88,94, -31,195,102,83,102,81,102,87,30,6,85,102,46,129,60,36,80,110,80,117, -11,139,254,46,139,125,30,185,1,0,235,9,191,83,16,46,15,182,14,157, -0,86,30,190,64,0,142,222,190,117,0,138,4,31,94,4,128,138,216,46, -2,93,12,254,203,46,136,30,155,0,81,46,15,182,77,12,80,87,131,199, -13,46,136,69,25,254,192,131,199,26,226,245,95,232,41,255,46,160,154,0, -10,192,88,89,117,32,46,162,154,0,60,128,117,3,232,58,255,87,191,251, -0,140,203,102,184,19,0,0,0,232,73,255,95,102,137,132,0,6,232,96, -255,129,199,95,1,226,150,184,32,1,93,7,31,102,95,102,89,102,91,195, -190,28,0,232,92,255,203,85,139,236,139,70,4,169,255,7,116,6,37,0, -248,5,0,8,93,195,131,248,0,116,24,80,83,81,139,200,73,51,219,51, -192,46,2,7,67,226,250,246,216,46,136,7,89,91,88,195,0,0,0,0, -0,0,0,0,0,0,0,0,86,185,32,0,46,198,68,9,0,50,192,46, -2,4,70,226,250,50,201,42,200,94,46,136,76,9,46,131,124,6,0,116, -9,86,46,139,116,6,232,215,255,94,195,199,6,126,21,87,40,195,80,176, -48,230,128,88,83,81,82,87,86,30,6,15,160,15,168,46,136,38,36,16, -46,162,37,16,80,38,139,5,46,163,61,0,38,139,69,2,46,163,63,0, -88,46,198,6,60,0,0,102,38,129,61,36,80,110,80,117,6,46,198,6, -60,0,1,80,176,49,230,128,88,184,64,0,232,233,78,15,130,42,1,142, -216,46,163,38,16,198,6,12,0,0,232,245,14,80,176,50,230,128,232,26, -91,88,232,142,255,232,104,92,232,161,91,232,195,89,198,6,253,18,0,198, -6,241,18,0,199,6,251,18,0,0,198,6,125,21,2,198,6,124,20,0, -80,176,51,230,128,232,235,90,88,232,244,1,232,44,92,128,234,4,232,23, -92,184,32,4,232,99,90,232,14,92,232,51,81,11,201,116,85,232,53,2, -139,54,195,20,80,176,52,230,128,88,137,54,197,20,232,28,77,80,176,53, -230,128,88,232,32,3,232,52,8,232,158,73,80,176,54,230,128,88,139,52, -131,254,255,117,221,191,106,170,232,54,14,232,104,14,80,176,55,230,128,88, -232,22,2,11,192,116,29,198,6,241,18,1,232,54,89,96,232,161,14,97, -235,14,232,221,88,102,185,91,0,0,0,232,227,88,115,251,38,198,6,49, -198,2,128,62,253,18,1,116,10,15,182,14,199,20,232,185,79,235,78,80, -176,56,230,128,88,232,179,91,232,226,90,232,160,71,80,176,57,230,128,88, -46,163,28,16,15,182,14,199,20,184,62,97,255,208,80,176,58,230,128,88, -46,129,62,28,16,0,1,116,28,46,128,62,60,0,1,116,13,51,246,184, -70,15,255,208,80,176,59,230,128,88,184,53,106,255,208,235,85,227,33,80, -176,60,230,128,88,87,191,208,111,184,121,31,255,208,81,185,5,0,184,120, -106,255,208,226,249,89,95,184,174,31,255,208,46,128,62,60,0,1,117,34, -86,190,28,0,46,199,68,6,0,0,46,199,68,22,0,0,184,40,16,255, -208,94,46,199,6,28,16,0,1,189,0,0,235,3,189,1,0,184,0,8, -235,79,80,176,61,230,128,88,46,129,62,28,16,0,1,117,12,87,191,208, -111,184,121,31,255,208,95,235,10,87,191,173,111,184,121,31,255,208,95,80, -176,62,230,128,88,184,174,31,255,208,189,0,0,46,128,62,60,0,1,116, -2,235,48,46,131,62,12,88,0,117,6,141,6,28,16,235,4,46,161,12, -88,80,176,63,230,128,88,80,187,235,15,255,211,131,196,2,193,232,9,46, -162,2,0,193,224,9,187,254,15,255,211,80,176,64,230,128,88,46,161,28, -16,15,169,15,161,7,31,94,95,90,89,91,203,0,0,0,80,81,86,87, -51,201,46,136,14,157,0,139,54,195,20,191,193,20,38,15,182,140,113,3, -227,12,137,53,139,254,131,199,2,46,254,6,157,0,139,52,131,254,255,117, -229,199,5,255,255,95,94,89,88,195,0,0,139,30,126,21,102,15,183,195, -131,227,31,116,5,131,192,32,43,195,140,219,15,186,227,0,115,3,131,192, -16,185,4,0,191,0,0,5,128,0,137,133,223,18,131,192,32,131,199,2, -226,241,102,51,219,140,219,102,193,227,4,102,3,216,102,247,195,255,1,0, -0,116,6,102,64,102,67,235,241,163,231,18,5,0,32,163,195,20,5,45, -8,163,126,21,195,96,232,218,89,50,210,232,198,89,191,89,124,232,37,12, -97,195,96,232,84,12,191,237,111,232,25,12,232,75,12,97,195,102,83,102, -81,232,214,86,102,185,91,0,0,0,128,62,124,20,0,116,6,102,185,35, -2,0,0,102,83,102,81,232,236,81,102,89,102,91,117,7,232,194,86,115, -238,235,52,232,227,81,61,0,48,117,7,198,6,253,18,0,235,37,61,27, -1,116,32,198,6,12,0,1,61,52,5,116,17,61,51,4,117,7,198,6, -12,0,0,235,5,61,0,122,117,189,184,1,0,235,3,184,0,0,102,89, -102,91,195,187,3,0,139,62,231,18,102,184,0,0,2,2,139,195,102,137, -5,102,184,0,0,3,16,139,195,102,137,69,6,232,35,0,195,187,2,0, -139,62,231,18,102,184,0,0,2,2,139,195,102,137,5,102,184,0,0,3, -16,139,195,102,137,69,6,232,1,0,195,139,62,223,18,102,184,82,4,1, -0,102,137,5,102,184,0,0,2,0,102,137,69,4,139,22,231,18,232,139, -250,102,137,69,8,102,187,0,2,0,0,102,137,93,12,232,196,79,232,253, -79,139,62,231,18,195,87,139,62,231,18,102,184,3,4,3,1,102,137,5, -131,199,5,102,184,3,4,17,1,102,137,5,131,199,5,102,184,3,4,7, -1,102,137,5,131,199,5,102,184,3,4,8,1,102,137,5,131,199,5,102, -184,3,4,18,1,102,137,5,131,199,5,102,184,3,4,19,1,102,137,5, -131,199,5,102,184,3,4,20,1,102,137,5,139,62,223,18,102,184,82,4, -2,0,102,137,5,102,184,0,0,7,0,102,137,69,4,139,22,231,18,232, -254,249,102,137,69,8,102,187,0,2,0,0,102,137,93,12,232,55,79,232, -112,79,139,62,231,18,138,69,4,136,68,21,138,69,9,136,68,22,138,69, -14,136,68,23,138,69,19,136,68,24,138,69,24,136,68,26,138,69,29,36, -1,136,68,25,10,192,116,10,138,69,34,36,1,208,224,8,68,25,95,195, -191,174,112,46,128,61,255,117,2,249,195,46,56,5,117,5,46,139,125,1, -195,131,199,3,235,233,85,86,139,62,231,18,129,199,0,2,87,102,184,0, -2,3,40,3,197,102,137,5,139,62,225,18,102,184,82,4,1,0,102,137, -5,102,184,0,0,1,0,102,137,69,4,139,22,231,18,129,194,0,2,232, -94,249,102,137,69,8,102,187,0,2,0,0,102,137,93,12,232,151,78,232, -208,78,95,176,0,136,69,44,6,140,216,142,192,131,199,4,139,247,80,81, -82,86,87,156,252,139,197,178,31,246,226,191,254,18,3,248,185,30,0,243, -164,50,192,170,157,95,94,90,89,88,7,94,93,195,96,51,237,15,182,76, -21,139,62,231,18,129,199,0,2,87,102,184,0,2,3,40,3,197,102,137, -5,139,62,225,18,102,184,82,4,1,0,102,137,5,102,184,0,0,1,0, -102,137,69,4,139,22,231,18,129,194,0,2,232,217,248,102,137,69,8,102, -187,0,2,0,0,102,137,93,12,232,18,78,232,75,78,95,176,0,136,69, -44,6,140,216,142,192,131,199,4,139,247,80,81,82,86,87,156,252,139,197, -178,31,246,226,191,254,18,3,248,185,30,0,243,164,50,192,170,157,95,94, -90,89,88,7,69,73,116,3,233,126,255,97,195,102,80,102,82,139,62,231, -18,87,102,184,2,4,2,16,102,137,5,102,184,2,4,3,16,102,137,69, -20,102,184,2,4,8,16,102,137,69,40,139,62,223,18,102,184,82,4,0, -0,102,137,5,102,184,0,0,3,0,102,137,69,4,139,22,231,18,232,71, -248,102,137,69,8,102,184,0,2,0,0,102,137,69,12,232,128,77,232,185, -77,95,102,90,102,88,195,102,80,102,82,139,62,231,18,87,102,184,2,4, -10,4,102,137,5,102,184,2,4,9,20,102,137,69,8,139,62,223,18,102, -184,82,4,0,0,102,137,5,102,184,0,0,2,0,102,137,69,4,139,22, -231,18,232,243,247,102,137,69,8,102,184,0,2,0,0,102,137,69,12,232, -44,77,232,101,77,95,102,90,102,88,195,102,80,102,82,139,62,231,18,87, -102,184,2,4,11,4,102,137,5,102,184,2,4,15,4,102,137,69,8,139, -62,223,18,102,184,82,4,0,0,102,137,5,102,184,0,0,2,0,102,137, -69,4,139,22,231,18,232,159,247,102,137,69,8,102,184,0,2,0,0,102, -137,69,12,232,216,76,232,17,77,95,102,90,102,88,195,96,139,62,231,18, -129,199,0,2,87,102,184,2,0,3,16,102,137,5,139,62,225,18,102,184, -82,4,1,0,102,137,5,102,184,0,0,1,0,102,137,69,4,139,22,231, -18,129,194,0,2,232,80,247,102,137,69,8,102,187,0,2,0,0,102,137, -93,12,232,137,76,232,194,76,95,97,195,85,139,62,231,18,129,199,0,2, -87,102,184,0,2,2,4,3,197,102,137,5,139,62,225,18,102,184,82,4, -1,0,102,137,5,102,184,0,0,1,0,102,137,69,4,139,22,231,18,129, -194,0,2,232,2,247,102,137,69,8,102,187,0,2,0,0,102,137,93,12, -232,59,76,232,116,76,95,93,195,139,62,231,18,129,199,0,2,87,102,80, -102,184,0,131,13,0,3,197,102,137,5,131,199,4,102,184,1,0,0,0, -102,137,5,131,199,5,102,184,0,131,15,0,3,197,102,137,5,131,199,4, -102,51,192,102,64,102,137,5,131,199,5,102,184,0,131,11,0,3,197,102, -137,5,131,199,4,102,88,102,137,5,131,199,4,3,248,139,62,225,18,102, -184,82,4,1,0,102,137,5,102,184,0,0,3,0,102,137,69,4,139,22, -231,18,129,194,0,2,232,115,246,102,137,69,8,102,187,0,2,0,0,102, -137,93,12,232,172,75,232,229,75,95,195,82,139,62,231,18,129,199,0,2, -87,102,184,0,131,10,0,3,197,102,137,5,102,184,1,0,0,0,131,199, -4,102,137,5,131,199,4,87,131,199,1,102,184,0,131,9,0,3,197,102, -137,5,102,184,2,0,0,0,131,199,4,102,137,5,131,199,4,87,131,199, -2,102,184,0,131,12,0,3,197,102,137,5,102,184,8,0,0,0,131,199, -4,102,137,5,131,199,4,87,139,62,225,18,102,184,82,4,1,0,102,137, -5,102,184,0,0,3,0,102,137,69,4,139,22,231,18,129,194,0,2,232, -218,245,102,137,69,8,102,187,0,2,0,0,102,137,93,12,232,19,75,232, -76,75,95,102,139,5,102,163,132,20,102,139,69,4,102,163,136,20,95,139, -5,95,138,21,246,226,102,15,183,192,95,90,195,139,62,231,18,129,199,0, -2,87,102,184,0,3,2,1,3,197,102,137,5,139,62,225,18,102,184,82, -4,1,0,102,137,5,102,184,0,0,1,0,102,137,69,4,139,22,231,18, -129,194,0,2,232,113,245,102,137,69,8,102,187,0,2,0,0,102,137,93, -12,232,170,74,232,227,74,95,195,96,6,102,80,30,7,51,192,185,131,7, -252,191,27,0,3,254,243,170,86,87,139,254,185,12,0,254,204,136,165,168, -1,136,165,216,5,136,68,27,198,68,29,3,136,100,31,136,100,35,131,198, -32,131,199,38,4,17,226,225,95,94,136,46,120,20,232,42,250,189,72,3, -3,238,137,172,164,1,139,77,4,11,201,15,132,78,2,131,199,10,51,237, -86,87,139,221,136,30,151,20,138,5,162,121,20,60,0,117,4,65,233,39, -2,80,232,138,254,232,249,253,138,69,8,192,232,2,131,199,9,138,101,8, -208,228,10,196,162,141,20,131,199,17,138,69,5,162,118,20,88,128,61,0, -117,111,128,125,1,6,117,29,138,69,1,136,132,156,1,102,139,69,12,102, -137,132,157,1,232,2,255,138,69,4,136,132,155,1,233,219,1,80,232,97, -4,131,198,27,198,68,4,255,138,69,1,136,68,2,160,141,20,136,68,7, -160,151,20,136,68,1,88,139,30,197,20,168,1,116,27,138,135,162,1,180, -3,246,228,254,135,162,1,129,195,111,3,3,216,137,55,198,71,2,2,233, -154,1,128,76,7,64,254,135,161,1,233,143,1,51,192,162,140,20,128,125, -1,0,117,69,87,131,199,20,176,20,138,21,246,226,139,208,138,69,1,138, -101,2,95,11,210,116,46,86,139,180,164,1,198,68,2,96,136,100,1,138, -37,136,36,131,198,3,137,54,116,20,94,131,194,20,60,5,116,6,198,69, -1,7,235,9,138,37,176,80,10,224,136,101,1,102,199,6,142,20,255,255, -255,255,102,199,6,146,20,255,255,255,255,198,6,150,20,0,199,6,234,18, -0,0,138,69,2,162,130,20,138,69,1,162,131,20,81,15,182,13,136,46, -119,20,131,199,20,246,6,121,20,128,117,5,128,14,141,20,128,128,61,0, -15,132,175,0,81,183,255,81,15,182,13,246,6,121,20,128,116,72,86,139, -54,116,20,138,93,5,136,28,136,124,3,94,128,227,252,128,251,236,117,11, -128,38,118,20,254,254,6,124,20,235,34,128,251,220,116,24,128,251,248,117, -7,128,38,118,20,247,235,22,128,251,244,117,17,128,38,118,20,251,235,10, -128,38,118,20,253,138,125,3,138,223,131,199,20,246,6,121,20,128,116,44, -86,139,54,116,20,15,182,69,3,60,255,116,4,15,171,68,1,10,255,117, -20,60,255,117,8,138,69,4,192,224,4,235,8,128,14,119,20,128,136,68, -3,94,254,207,232,10,1,226,200,131,6,116,20,4,208,46,119,20,89,73, -15,133,97,255,89,176,8,42,193,138,200,254,201,210,46,119,20,235,69,131, -239,20,138,93,5,183,255,128,227,252,128,251,236,117,6,254,6,124,20,235, -5,128,251,220,117,5,138,125,3,138,223,131,199,20,138,69,3,10,255,117, -20,60,255,116,7,12,16,162,119,20,235,9,138,195,128,203,32,136,30,119, -20,232,169,0,254,207,226,222,89,232,162,1,95,94,69,71,254,6,151,20, -73,15,133,183,253,51,237,139,221,15,182,76,21,86,83,232,113,251,102,139, -69,4,102,137,68,43,102,131,124,47,0,117,4,102,137,68,47,232,15,251, -91,131,199,4,3,253,138,5,60,0,116,66,254,195,168,1,116,81,254,199, -128,124,29,3,117,52,60,255,117,26,176,12,136,68,29,139,197,136,68,35, -198,68,28,114,86,139,54,197,20,254,132,161,1,94,235,22,136,68,29,139, -197,136,68,35,198,68,28,115,86,139,54,197,20,254,132,110,3,94,69,131, -198,32,226,146,94,136,92,4,136,124,5,232,60,2,102,88,7,97,195,136, -68,29,139,197,136,68,35,198,68,28,116,235,221,254,6,140,20,86,232,225, -1,198,68,28,113,115,108,160,120,20,136,68,31,198,68,29,1,15,182,69, -3,15,171,6,234,18,102,80,102,83,81,102,187,15,0,0,0,102,35,195, -138,14,150,20,138,233,128,249,32,114,3,128,233,32,128,249,0,116,6,102, -211,224,102,211,227,102,131,243,255,128,253,32,114,12,102,33,30,146,20,102, -9,6,146,20,235,10,102,33,30,142,20,102,9,6,142,20,128,6,150,20, -4,89,102,91,102,88,131,199,20,137,54,128,20,94,195,128,6,150,20,4, -235,240,96,183,255,81,15,182,13,138,93,5,136,28,136,124,3,128,227,252, -128,251,236,117,7,62,128,102,8,254,235,34,128,251,220,116,24,128,251,248, -117,7,62,128,102,8,247,235,22,128,251,244,117,17,62,128,102,8,251,235, -10,62,128,102,8,253,138,125,3,138,223,131,199,20,51,192,137,68,1,15, -182,69,3,60,255,116,4,15,171,68,1,10,255,117,20,60,255,117,8,138, -69,4,192,224,4,235,8,128,14,119,20,128,136,68,3,254,207,131,199,20, -226,213,131,198,4,89,226,131,97,195,83,86,160,120,20,179,38,246,227,139, -216,3,222,138,38,118,20,136,167,174,1,160,131,20,136,135,168,1,60,7, -124,25,10,228,116,62,139,132,164,1,137,135,180,1,131,232,38,137,132,164, -1,138,38,119,20,235,41,176,255,136,135,202,1,160,119,20,138,224,128,228, -240,128,252,16,116,14,128,252,32,117,21,50,228,192,224,4,12,15,235,4, -180,1,36,15,136,135,202,1,136,167,203,1,102,161,142,20,102,137,135,186, -1,102,161,146,20,102,137,135,190,1,160,151,20,136,135,166,1,160,120,20, -136,135,167,1,160,130,20,136,135,169,1,160,140,20,136,135,170,1,160,141, -20,136,135,178,1,102,161,132,20,102,137,135,182,1,102,161,136,20,102,137, -135,198,1,161,234,18,137,135,171,1,129,195,166,1,139,54,197,20,160,121, -20,168,128,116,26,138,132,162,1,254,132,162,1,180,3,246,228,129,198,111, -3,3,240,137,28,198,68,2,1,235,4,254,132,163,1,94,91,254,6,120, -20,195,138,69,3,60,255,117,6,139,54,128,20,248,195,80,180,32,246,228, -3,240,131,248,0,117,11,128,188,156,1,0,116,4,254,14,151,20,88,136, -68,35,138,69,4,136,68,36,102,139,69,8,102,137,68,51,102,139,69,12, -102,137,68,47,249,195,30,6,87,81,83,139,54,197,20,15,182,132,161,1, -136,132,198,7,138,132,162,1,136,132,223,7,138,132,110,3,136,132,248,7, -138,132,163,1,136,132,17,8,136,164,199,7,136,164,224,7,136,164,249,7, -136,164,18,8,140,217,142,193,185,128,1,86,139,254,129,199,86,4,131,198, -27,252,243,164,94,86,139,140,164,1,131,193,38,139,254,129,199,214,5,129, -198,166,1,43,206,243,164,94,139,254,129,199,150,3,51,192,185,192,0,243, -170,185,13,0,139,254,129,199,158,7,129,198,111,3,138,92,2,136,93,2, -128,251,1,116,9,128,251,2,116,12,139,28,235,14,139,28,129,195,48,4, -235,6,139,28,129,195,59,4,137,29,131,198,3,131,199,3,226,212,91,89, -95,7,31,195,83,80,30,235,5,83,80,30,14,31,180,14,138,5,10,192, -116,36,60,19,117,27,80,83,82,180,15,205,16,180,3,205,16,180,14,176, -32,205,16,254,194,128,250,79,114,243,90,91,88,205,16,71,235,212,31,88, -91,195,87,191,234,111,232,196,255,80,82,160,152,20,60,0,116,8,232,98, -77,2,208,232,78,77,90,88,95,195,83,51,201,11,192,116,9,15,188,216, -15,179,216,65,235,243,91,195,87,83,102,51,192,139,62,225,18,198,5,28, -136,69,3,198,69,1,2,136,69,2,102,137,69,4,232,13,68,232,70,68, -91,95,195,0,30,6,15,168,198,6,13,0,1,128,62,12,0,0,116,15, -180,15,205,16,80,184,18,0,205,16,198,6,13,0,0,139,54,195,20,137, -54,197,20,232,141,0,232,52,249,139,52,131,254,255,117,239,30,7,14,31, -14,15,169,38,139,54,195,20,38,137,54,197,20,38,138,14,199,20,128,249, -1,116,49,190,24,21,38,136,76,1,232,87,2,186,24,21,191,19,113,190, -201,112,51,237,232,44,69,60,9,117,5,232,167,21,235,47,60,8,117,12, -235,41,232,187,22,232,96,21,116,219,235,31,38,139,22,197,20,129,194,197, -7,191,137,117,190,42,119,51,237,232,255,68,60,7,116,193,60,9,117,3, -232,118,21,38,128,62,12,0,0,116,11,88,180,0,205,16,38,198,6,12, -0,0,15,169,7,31,195,81,86,51,192,136,132,41,8,136,132,42,8,136, -132,43,8,136,132,44,8,185,12,0,136,132,249,7,136,132,199,7,136,132, -224,7,136,132,150,3,136,132,151,3,136,132,153,3,136,132,198,3,136,132, -199,3,136,132,201,3,136,132,246,3,136,132,247,3,136,132,249,3,136,132, -38,4,136,132,39,4,136,132,41,4,131,198,4,226,203,94,86,199,132,200, -7,254,255,185,222,7,3,206,137,140,202,7,185,198,3,3,206,137,140,204, -7,199,132,206,7,115,80,199,132,208,7,188,79,199,132,210,7,172,82,199, -132,212,7,187,82,199,132,214,7,201,79,199,132,216,7,228,79,199,132,218, -7,251,80,199,132,220,7,111,82,185,197,7,3,206,137,140,225,7,185,16, -8,3,206,137,140,227,7,185,246,3,3,206,137,140,229,7,199,132,231,7, -115,80,199,132,233,7,188,79,199,132,235,7,172,82,199,132,237,7,187,82, -199,132,239,7,255,79,199,132,241,7,26,80,199,132,243,7,238,58,199,132, -245,7,111,82,185,222,7,3,206,137,140,19,8,185,247,7,3,206,137,140, -21,8,185,38,4,3,206,137,140,23,8,199,132,25,8,115,80,199,132,27, -8,188,79,199,132,29,8,172,82,199,132,31,8,187,82,199,132,33,8,202, -82,199,132,35,8,202,82,199,132,37,8,202,82,199,132,39,8,111,82,185, -16,8,3,206,137,140,250,7,199,132,252,7,255,255,185,150,3,3,206,137, -140,254,7,199,132,0,8,115,80,199,132,2,8,188,79,199,132,4,8,172, -82,199,132,6,8,187,82,199,132,8,8,202,82,199,132,10,8,202,82,199, -132,12,8,202,82,199,132,14,8,111,82,94,89,195,30,6,96,6,180,31, -232,36,75,51,210,187,79,29,176,2,180,31,232,46,75,140,200,142,232,142, -192,185,9,0,141,54,225,112,232,207,75,182,2,178,5,232,174,74,31,139, -54,195,20,191,200,20,179,23,232,35,0,138,68,10,136,5,136,117,1,131, -199,4,254,198,254,198,139,52,131,254,255,117,229,140,192,30,7,142,216,232, -127,0,97,7,31,195,232,123,74,6,86,140,200,142,192,190,24,172,232,157, -72,94,7,138,68,10,179,1,232,62,73,195,38,199,68,3,254,255,38,199, -68,5,255,255,185,200,20,38,137,76,7,38,199,68,9,115,80,38,199,68, -11,188,79,38,199,68,13,172,82,38,199,68,15,187,82,38,199,68,17,202, -82,38,199,68,19,202,82,38,199,68,21,202,82,38,199,68,23,202,82,195, -81,86,38,15,182,14,24,21,38,139,54,195,20,227,5,38,139,52,226,251, -38,137,54,197,20,249,94,89,195,38,128,62,241,18,1,117,68,38,198,6, -241,18,16,38,128,62,124,20,0,116,28,186,7,1,187,72,23,176,1,180, -71,185,27,0,141,54,105,113,232,201,70,232,59,66,232,232,70,235,26,186, -7,4,187,72,18,176,1,180,112,185,14,0,141,54,35,113,232,173,70,232, -31,66,232,204,70,195,0,0,96,160,241,18,60,1,124,56,186,17,11,187, -58,15,176,1,180,112,185,3,0,190,240,113,232,137,70,186,29,12,232,147, -73,139,69,151,232,84,72,139,69,150,232,78,72,186,44,12,232,129,73,138, -5,36,31,232,65,72,232,220,65,232,137,70,97,195,0,0,80,83,81,82, -86,176,1,177,30,232,239,69,232,82,0,185,22,0,190,59,115,6,14,7, -232,111,74,7,232,182,65,61,0,80,116,12,61,0,81,116,7,61,27,1, -116,38,235,236,232,46,0,185,24,0,190,169,115,6,14,7,232,75,74,7, -232,146,65,61,0,72,116,196,61,0,73,116,191,61,27,1,116,2,235,236, -176,1,177,30,232,204,69,94,90,89,91,88,195,185,73,22,186,6,2,183, -112,232,52,73,186,6,2,187,73,22,180,112,176,1,232,96,73,195,80,83, -81,82,86,186,7,2,187,72,19,176,1,180,112,185,10,0,190,33,116,232, -206,69,232,64,65,232,237,69,94,90,89,91,88,195,80,83,81,82,86,186, -5,4,187,74,17,176,1,180,112,185,11,0,190,83,116,232,170,69,232,28, -65,232,201,69,94,90,89,91,88,195,83,81,82,86,186,10,18,187,69,22, -176,1,180,112,185,1,0,190,203,116,232,135,69,232,92,17,116,10,30,6, -31,232,58,250,184,5,0,31,232,154,69,248,94,90,89,91,195,30,6,31, -139,54,197,20,86,232,0,18,115,28,139,54,195,20,137,54,197,20,232,71, -34,139,52,131,254,255,117,242,249,94,137,54,197,20,176,8,31,195,94,137, -54,197,20,248,31,195,176,9,249,195,38,160,199,20,60,1,116,4,176,7, -235,2,176,9,249,195,38,199,6,61,21,185,42,232,240,3,51,192,249,195, -96,38,139,54,197,20,30,6,31,232,178,240,31,30,6,15,168,6,180,31, -232,104,72,51,210,187,79,29,176,2,180,31,232,114,72,140,200,142,232,142, -192,185,7,0,141,54,65,114,232,19,73,7,38,128,62,199,20,1,6,14, -7,127,12,185,4,0,141,54,100,114,232,253,72,235,10,185,4,0,141,54, -120,114,232,241,72,7,50,246,178,52,232,207,71,38,139,54,197,20,38,138, -68,21,86,129,198,198,3,232,48,3,94,86,129,198,246,3,232,39,3,94, -38,138,68,10,232,134,70,182,2,178,5,232,166,71,38,139,54,197,20,38, -15,182,140,198,7,227,117,178,5,179,30,86,6,14,7,190,69,133,232,185, -69,254,198,7,94,51,237,38,139,188,204,7,129,198,86,4,38,138,92,2, -128,251,12,116,19,128,251,15,116,7,128,251,13,116,9,235,60,38,246,68, -7,64,116,53,179,31,69,176,128,178,5,232,193,12,232,98,71,38,246,69, -3,1,116,10,178,4,232,71,71,176,42,232,39,71,38,138,68,8,38,136, -5,38,136,117,1,38,136,117,2,131,199,4,254,198,73,227,5,131,198,32, -235,170,254,198,51,237,38,139,54,197,20,129,198,158,7,38,15,182,76,2, -11,201,116,127,6,86,81,14,7,190,88,133,179,30,178,5,232,47,69,89, -94,7,254,198,179,31,38,136,30,14,0,38,139,62,197,20,38,139,189,229, -7,38,15,182,76,2,227,83,87,82,128,249,1,117,17,38,139,60,179,31, -183,23,178,5,232,126,13,232,221,70,235,12,86,38,139,52,176,64,178,5, -232,44,12,94,138,254,90,95,38,246,69,3,1,116,10,178,4,232,176,70, -176,42,232,144,70,139,197,38,136,5,38,136,117,1,38,136,125,2,131,199, -4,131,198,3,138,247,254,198,69,235,166,51,237,38,139,54,197,20,38,15, -182,140,17,8,11,201,116,123,129,198,214,5,6,86,81,14,7,190,205,134, -179,30,178,5,232,155,68,89,94,7,254,198,179,31,38,136,30,14,0,38, -139,62,197,20,38,139,189,23,8,131,238,38,131,198,38,38,128,124,4,0, -116,246,38,246,68,12,128,116,239,87,82,139,254,179,31,183,23,178,5,232, -227,12,232,66,70,138,254,90,95,38,246,69,3,1,116,10,178,4,232,35, -70,176,42,232,3,70,38,138,68,1,38,136,5,38,136,117,1,38,136,125, -2,131,199,4,138,247,254,198,69,226,177,38,128,14,13,0,1,51,237,185, -12,0,38,139,54,197,20,38,139,188,254,7,129,198,86,4,38,138,92,2, -128,251,217,114,94,131,253,0,117,20,83,178,5,179,30,86,6,14,7,190, -174,134,232,253,67,254,198,7,94,91,246,195,1,116,4,179,31,235,2,179, -23,38,136,30,14,0,176,128,178,5,232,30,11,232,191,69,69,128,251,23, -116,35,38,246,69,3,1,116,10,178,4,232,158,69,176,42,232,126,69,38, -138,68,8,38,136,5,38,136,117,1,38,136,117,2,131,199,4,254,198,131, -198,32,226,148,38,128,38,13,0,254,232,116,251,248,15,169,7,31,97,195, -96,83,30,6,15,168,102,80,38,139,30,197,20,38,15,182,183,199,7,131, -254,1,115,29,186,10,18,187,69,23,176,1,180,112,185,4,0,190,208,116, -232,53,66,232,167,61,232,84,66,249,233,164,0,87,80,83,191,169,117,78, -193,230,2,187,65,117,138,64,2,136,69,12,254,192,2,5,136,69,2,139, -0,137,69,10,139,248,138,64,3,190,61,119,38,199,6,53,21,0,0,38, -199,6,90,21,1,0,38,199,6,57,21,0,0,91,88,95,180,31,232,74, -69,51,210,187,79,24,176,2,180,31,232,84,69,6,140,200,142,232,142,192, -185,16,0,141,54,140,114,232,244,69,88,142,232,142,192,182,6,38,139,30, -197,20,38,15,182,143,198,7,38,139,191,204,7,38,246,69,3,1,116,32, -38,138,5,179,32,246,227,38,139,54,197,20,3,240,129,198,86,4,176,128, -179,31,178,10,232,12,10,232,173,68,254,198,131,199,4,226,212,102,88,15, -169,7,31,91,97,195,96,15,182,200,38,128,124,1,0,116,7,131,198,4, -226,244,235,58,139,254,131,249,1,126,51,73,131,198,4,38,15,182,68,1, -10,192,116,33,38,136,100,1,38,136,69,1,38,138,4,38,136,5,38,138, -68,2,38,136,69,2,38,138,68,3,38,136,69,3,131,199,4,131,198,4, -226,209,97,195,96,30,6,31,60,1,15,133,33,1,131,62,49,21,4,117, -6,232,136,17,233,20,1,51,210,137,22,234,18,38,139,30,197,20,38,15, -182,143,198,7,38,139,159,204,7,83,246,71,3,1,116,9,15,182,7,15, -171,6,234,18,66,131,195,4,226,236,255,22,61,21,115,31,96,186,14,8, -187,65,13,176,1,180,112,185,4,0,190,138,116,232,212,64,232,70,60,232, -243,64,97,91,233,196,0,38,139,30,197,20,38,40,151,198,7,38,40,151, -199,7,232,176,2,160,123,21,232,203,3,91,15,182,202,235,5,131,195,4, -235,2,83,81,246,71,3,1,116,243,15,182,7,182,32,246,230,38,139,62, -197,20,3,248,160,123,21,136,133,90,4,198,133,88,4,1,131,195,4,226, -219,89,91,51,246,235,3,131,195,4,246,71,3,1,116,247,15,182,7,182, -32,246,230,38,139,62,197,20,3,248,198,133,87,4,113,139,198,136,133,95, -4,160,123,21,136,133,90,4,102,80,83,102,82,138,248,232,216,43,86,102, -83,102,139,216,138,165,90,4,176,38,246,228,38,139,54,197,20,3,240,102, -137,156,230,5,102,137,148,246,5,102,139,195,102,91,94,102,90,91,102,88, -51,192,136,71,1,136,71,3,70,131,195,4,226,152,38,139,30,197,20,254, -135,223,7,31,97,195,80,86,232,22,0,51,192,190,211,117,232,162,61,232, -109,0,51,192,190,232,117,232,151,61,94,88,195,38,199,6,55,21,1,0, -86,190,211,117,38,161,49,21,131,248,4,116,46,131,248,1,116,41,131,248, -2,116,36,131,248,5,116,18,131,248,82,125,13,198,68,12,3,199,68,10, -125,117,176,4,235,31,198,68,12,3,199,68,10,125,117,176,4,235,18,198, -68,12,1,199,68,10,80,172,38,199,6,55,21,0,0,176,2,2,4,136, -68,2,94,38,199,6,51,21,7,0,195,38,199,6,57,21,0,0,86,190, -232,117,38,161,49,21,232,175,41,114,13,198,68,12,1,199,68,10,80,172, -176,2,235,11,198,68,12,2,199,68,10,117,117,176,3,2,4,136,68,2, -94,38,199,6,59,21,0,0,195,87,86,102,80,83,81,82,161,49,21,60, -7,15,140,35,1,117,5,185,2,0,235,9,36,15,134,194,246,242,15,182, -200,73,139,209,102,51,192,139,216,102,72,102,163,72,21,102,163,76,21,161, -234,18,163,80,21,163,86,21,51,192,163,84,21,15,188,6,80,21,15,132, -176,0,15,171,6,84,21,15,179,6,80,21,138,248,161,80,21,163,82,21, -139,202,15,188,6,82,21,116,215,15,179,6,82,21,138,216,176,31,246,231, -191,254,18,3,248,176,31,246,227,190,254,18,3,240,81,185,31,0,243,166, -89,117,215,139,62,197,20,131,199,27,139,247,176,32,246,231,3,248,176,32, -246,227,3,240,102,139,69,16,102,59,68,16,117,184,15,182,195,15,171,6, -84,21,226,174,15,188,6,84,21,15,179,6,86,21,15,179,6,84,21,15, -179,6,80,21,102,193,6,76,21,4,102,139,30,76,21,138,227,128,227,240, -10,216,102,137,30,76,21,138,220,128,227,15,102,193,38,72,21,4,102,161, -72,21,10,195,102,163,72,21,131,62,84,21,0,117,185,233,66,255,15,188, -6,86,21,116,51,15,179,6,86,21,102,193,6,76,21,4,102,139,30,76, -21,138,227,128,227,240,10,216,102,137,30,76,21,138,220,128,227,15,102,193, -38,72,21,4,102,161,72,21,10,195,102,163,72,21,235,198,102,161,76,21, -102,161,72,21,90,89,91,102,88,94,95,248,195,102,80,83,81,82,86,87, -85,38,139,54,197,20,139,254,185,12,0,50,219,128,188,216,5,255,116,15, -131,188,219,5,0,116,8,254,195,131,198,38,226,235,204,138,133,223,7,180, -3,246,228,5,158,7,3,248,139,198,5,214,5,198,69,2,1,137,5,198, -132,250,5,255,102,161,76,21,102,137,132,234,5,102,161,72,21,102,137,132, -238,5,136,156,215,5,136,30,123,21,161,88,21,128,164,226,5,254,8,132, -226,5,161,59,21,131,224,1,208,224,8,132,226,5,161,51,21,131,62,49, -21,82,124,2,51,192,136,132,217,5,161,234,18,137,132,219,5,198,132,214, -5,112,136,148,218,5,198,132,221,5,1,198,132,222,5,255,161,49,21,136, -132,216,5,60,7,124,106,60,7,117,9,15,182,202,209,233,179,2,235,13, -138,218,36,15,15,182,200,134,195,246,243,138,216,232,91,41,137,188,228,5, -198,69,2,96,136,13,161,51,21,136,69,1,131,199,3,102,139,132,234,5, -51,237,81,15,182,203,51,210,137,85,1,138,248,128,231,15,15,182,215,15, -171,85,1,102,193,232,4,69,131,253,8,117,5,102,139,132,238,5,226,227, -198,5,255,198,69,3,255,131,199,4,89,226,205,93,95,94,90,89,91,102, -88,195,87,86,102,85,102,80,102,83,81,82,179,38,246,227,38,139,54,197, -20,3,240,138,148,217,5,138,180,216,5,139,188,219,5,15,182,140,218,5, -81,102,187,255,255,255,255,139,199,232,52,0,102,139,132,106,4,102,45,0, -8,0,0,81,138,202,232,147,8,89,102,59,195,119,3,102,139,216,226,223, -89,139,199,232,18,0,102,137,156,106,4,226,244,90,89,102,91,102,88,102, -93,94,95,195,80,83,81,181,255,254,197,209,200,114,2,235,248,254,201,117, -244,138,197,179,32,246,227,38,139,54,197,20,3,240,89,91,88,195,102,80, -83,81,82,87,86,30,6,15,168,85,38,139,30,197,20,129,195,222,7,232, -165,2,117,57,38,139,30,197,20,129,195,247,7,232,151,2,117,43,38,139, -30,197,20,129,195,16,8,232,137,2,117,29,186,9,18,187,70,23,176,1, -180,112,185,4,0,190,228,116,232,21,60,232,135,55,232,52,60,249,233,238, -0,180,31,232,105,63,186,0,0,187,79,24,176,2,180,31,232,114,63,6, -140,200,142,232,142,192,185,6,0,141,54,220,114,232,18,64,7,182,6,38, -139,30,197,20,38,15,182,143,223,7,129,195,222,7,232,50,2,116,62,139, -251,38,246,69,3,1,116,48,38,138,5,179,3,246,227,38,139,54,197,20, -3,240,129,198,158,7,38,138,92,2,128,251,2,116,15,87,38,139,60,232, -150,0,95,232,193,62,254,198,235,6,38,139,52,232,146,0,131,199,4,226, -196,38,139,30,197,20,38,15,182,143,17,8,129,195,16,8,232,224,1,116, -42,139,251,38,246,69,3,1,116,28,38,138,5,179,38,246,227,87,38,139, -62,197,20,3,248,129,199,214,5,232,80,0,95,232,123,62,254,198,131,199, -4,226,216,38,139,30,197,20,38,15,182,143,248,7,129,195,247,7,232,162, -1,116,35,139,251,38,246,69,3,1,116,21,38,138,5,179,32,246,227,38, -139,54,197,20,3,240,129,198,86,4,232,29,0,131,199,4,226,223,248,93, -15,169,7,31,94,95,90,89,91,102,88,195,179,31,183,23,178,5,232,196, -4,195,179,31,183,23,178,3,176,1,232,118,3,232,23,62,254,198,195,96, -30,6,31,60,1,117,50,190,222,7,191,245,47,232,44,0,232,251,0,190, -247,7,191,123,47,232,32,0,190,16,8,191,130,47,232,23,0,38,139,54, -197,20,38,136,140,224,7,38,136,140,249,7,38,136,140,18,8,31,97,195, -38,3,54,197,20,38,15,182,76,2,227,34,38,40,76,1,38,139,116,7, -131,238,4,131,198,4,246,68,3,1,116,247,136,108,1,136,108,3,138,28, -87,255,215,95,226,233,195,232,221,2,232,8,0,195,232,232,2,232,41,0, -195,198,69,2,12,102,80,138,69,8,198,69,1,114,198,69,7,0,102,139, -69,16,102,137,69,20,102,88,87,38,139,62,197,20,38,254,133,198,7,95, -195,51,192,139,93,14,11,219,116,11,137,69,14,254,200,38,136,71,2,254, -192,136,69,12,136,69,4,254,200,136,69,36,136,69,2,198,69,7,0,198, -69,9,0,51,219,139,69,5,137,93,5,209,200,115,6,232,145,255,136,125, -4,254,195,128,251,16,117,239,195,176,3,246,227,38,139,62,197,20,3,248, -129,199,158,7,138,93,2,87,139,61,128,251,2,116,5,232,159,255,235,3, -232,114,255,95,50,192,136,69,2,195,38,139,62,197,20,129,199,158,7,176, -13,180,3,246,228,139,232,3,239,138,69,2,10,192,116,9,131,199,3,59, -239,127,242,235,33,139,247,131,198,3,15,182,68,2,10,192,116,13,136,69, -2,136,100,2,139,4,137,5,131,199,3,131,198,3,59,238,127,228,195,81, -38,15,182,79,1,227,16,38,139,95,7,38,246,71,3,1,117,7,131,195, -4,226,244,51,219,89,11,219,195,96,30,6,15,168,176,1,177,30,232,18, -57,6,180,31,232,212,60,186,0,0,187,79,24,176,2,180,31,232,221,60, -140,200,142,232,142,192,185,13,0,141,54,250,114,232,126,61,7,38,139,54, -197,20,186,45,1,232,88,60,38,138,68,8,232,24,59,176,46,232,182,59, -38,138,68,9,192,232,3,232,9,59,176,46,232,167,59,38,138,68,9,36, -7,232,13,59,38,138,68,10,186,61,1,232,42,60,232,0,59,186,73,1, -232,33,60,38,139,68,6,232,214,58,30,6,31,232,49,229,31,96,139,247, -131,198,4,38,198,68,16,0,38,198,68,36,0,38,198,68,56,0,186,49, -2,179,23,232,36,58,131,198,20,186,13,2,179,23,232,25,58,131,198,20, -186,8,3,179,23,232,14,58,6,14,7,190,223,167,46,128,62,60,0,1, -116,3,190,219,167,186,24,5,179,23,232,245,57,7,97,30,6,31,232,58, -229,31,96,38,139,69,6,193,232,4,186,22,4,232,176,59,179,23,179,31, -38,136,30,14,0,179,0,232,123,58,179,30,38,136,30,14,0,232,167,59, -254,194,232,147,59,176,77,232,115,59,176,66,232,110,59,139,247,131,198,12, -38,198,68,20,0,186,49,3,179,23,232,165,57,97,6,31,178,1,182,4, -232,109,59,232,207,51,176,1,177,30,232,26,56,248,15,169,7,31,97,184, -32,57,195,83,81,82,232,83,59,139,202,187,0,0,232,176,51,61,0,75, -116,57,61,13,28,116,74,61,27,1,117,3,249,235,69,60,48,114,231,60, -57,119,13,44,48,180,48,193,227,4,10,216,2,196,235,16,12,32,60,97, -114,208,60,102,119,204,44,87,180,87,235,231,232,123,58,254,194,235,191,59, -202,116,187,193,235,4,254,202,232,1,59,176,32,232,102,58,232,249,58,235, -169,139,195,248,90,89,91,195,87,6,80,81,60,0,117,6,140,200,142,192, -235,6,46,161,38,16,142,192,232,217,58,138,225,38,138,5,232,152,57,71, -176,32,232,53,58,254,204,117,240,232,94,237,254,198,254,205,117,226,89,88, -7,95,195,38,139,62,197,20,80,176,32,246,227,3,248,129,199,86,4,88, -195,38,139,62,197,20,80,176,38,246,227,3,248,129,199,214,5,88,195,96, -6,15,168,102,80,6,15,169,232,137,58,138,200,128,225,127,168,128,117,36, -38,138,68,1,60,112,127,28,6,86,14,7,190,138,125,232,156,56,94,7, -60,112,116,7,83,179,0,232,59,57,91,232,109,58,178,13,38,138,68,8, -38,162,123,20,102,38,139,68,16,139,254,86,102,80,6,140,200,142,192,190, -122,125,246,193,1,116,3,190,129,125,232,101,56,7,38,160,123,20,83,179, -0,232,5,57,91,190,118,125,184,32,3,246,193,1,116,3,184,32,1,38, -128,62,123,20,10,114,2,254,204,232,98,56,6,140,200,142,192,232,23,58, -232,51,56,246,193,64,116,16,190,189,124,101,128,125,2,15,117,3,190,203, -124,232,30,56,7,232,251,57,138,227,38,160,123,20,232,58,34,102,88,102, -82,102,51,210,232,25,33,102,90,190,153,20,232,195,34,185,9,0,232,204, -34,190,153,20,232,212,57,232,240,55,94,101,138,68,2,60,11,117,5,190, -14,125,235,90,60,15,117,5,190,11,125,235,72,60,13,117,5,190,170,124, -235,63,60,12,117,5,190,14,125,235,63,60,217,117,5,190,17,125,235,45, -60,219,117,5,190,34,125,235,36,60,221,117,5,190,51,125,235,27,60,236, -117,5,190,67,125,235,18,60,238,117,5,190,85,125,235,9,60,254,117,14, -190,103,125,235,0,178,61,6,30,7,232,137,55,7,102,88,15,169,7,97, -195,96,6,15,168,102,80,140,192,142,232,101,136,22,122,20,6,140,200,142, -192,190,151,124,232,103,55,101,138,5,60,112,117,5,184,32,2,235,18,83, -179,0,232,0,56,91,184,32,1,101,128,61,10,114,2,254,204,232,106,55, -190,118,125,232,33,57,232,61,55,7,6,140,200,142,192,83,101,138,69,4, -179,0,232,216,55,91,190,38,112,232,7,57,232,35,55,7,30,6,83,140, -232,142,216,142,192,138,93,2,138,125,3,232,208,32,131,198,5,91,7,31, -6,232,231,56,232,3,55,7,101,138,69,2,87,6,14,7,232,193,224,139, -247,232,211,56,232,239,54,7,95,176,32,232,159,56,102,82,102,101,139,69, -16,102,101,139,85,32,232,235,31,102,90,190,153,20,232,149,33,185,9,0, -232,158,33,190,153,20,232,166,56,232,194,54,38,139,69,14,11,192,117,31, -6,15,168,7,38,138,69,8,232,77,31,7,232,140,56,128,194,4,6,14, -7,83,179,31,232,159,54,91,7,235,0,101,128,14,13,0,1,101,198,6, -14,0,23,101,131,125,14,0,117,14,101,138,85,36,101,139,125,5,232,158, -0,233,142,0,101,139,117,14,101,15,182,12,101,138,100,1,131,198,3,101, -138,69,2,60,7,117,4,176,2,235,2,176,5,101,128,125,8,0,117,3, -80,235,81,87,86,30,6,83,80,14,7,190,166,125,232,38,56,101,138,22, -122,20,254,198,232,59,54,140,232,142,216,142,192,91,232,241,31,139,195,91, -232,12,56,232,40,54,232,239,223,139,247,232,1,56,14,7,232,27,54,7, -31,94,80,101,138,4,86,232,174,30,232,238,55,6,14,7,232,7,54,7, -232,213,55,94,101,139,124,1,101,138,84,3,86,83,232,22,0,91,94,88, -95,131,198,4,226,143,101,128,38,13,0,254,102,88,15,169,7,97,195,11, -255,116,116,96,82,80,15,188,207,15,187,207,176,32,246,225,101,139,54,197, -20,3,240,129,198,86,4,138,223,232,159,55,254,198,101,138,22,122,20,176, -129,232,239,252,88,90,82,15,186,242,7,115,31,128,226,15,56,202,117,53, -6,14,7,190,150,125,232,122,55,232,150,53,190,246,153,232,113,55,232,141, -53,7,235,29,128,226,15,56,202,117,22,6,14,7,190,150,125,232,91,55, -232,119,53,190,234,153,232,82,55,232,110,53,7,90,11,255,117,142,97,195, -232,150,54,232,151,47,36,223,60,78,116,6,60,89,117,240,12,89,156,232, -122,54,157,195,102,83,102,82,81,102,80,102,187,1,0,0,0,102,211,227, -102,51,210,102,247,243,102,88,102,43,194,89,102,90,102,91,195,96,30,6, -31,184,1,0,232,41,1,115,7,232,48,0,114,25,235,41,232,66,3,114, -10,232,237,2,114,5,232,87,1,115,26,232,250,0,232,159,255,116,18,139, -54,195,20,137,54,197,20,232,170,16,139,52,131,254,255,117,242,31,97,195, -186,1,1,187,78,24,176,1,180,112,185,5,0,190,158,116,232,157,51,184, -0,0,232,219,0,115,48,160,118,20,36,223,60,78,116,35,60,89,116,25, -232,250,46,61,0,73,117,5,232,15,1,235,222,36,223,60,78,116,12,60, -89,116,2,235,231,232,145,51,249,235,4,232,139,51,248,195,96,184,1,0, -232,161,0,114,20,232,193,2,114,10,232,108,2,114,5,232,214,0,115,0, -232,121,0,235,95,186,1,1,187,78,24,176,1,180,112,185,5,0,190,158, -116,232,52,51,184,0,0,232,114,0,115,38,160,118,20,36,223,60,78,116, -77,60,89,116,67,232,145,46,61,0,73,117,5,232,166,0,235,222,36,223, -60,78,116,54,60,89,116,44,235,231,182,22,6,14,7,190,109,131,232,253, -30,7,178,3,2,208,232,3,54,235,16,182,14,178,59,232,250,53,235,7, -182,14,178,62,232,241,53,232,182,254,116,6,232,254,50,249,235,4,232,248, -50,248,97,195,186,9,18,187,70,23,176,1,180,112,185,2,0,190,183,116, -232,189,50,195,102,80,96,139,232,182,7,187,164,55,232,119,28,162,118,20, -114,16,187,110,55,232,108,28,114,8,131,253,1,117,3,248,235,0,97,102, -88,195,15,182,140,41,8,248,227,1,249,195,15,182,140,42,8,248,227,1, -249,195,15,182,140,43,8,248,227,1,249,195,15,182,140,44,8,248,227,1, -249,195,81,186,2,7,185,77,21,183,112,232,162,53,89,195,86,83,11,237, -117,58,15,182,140,41,8,10,201,15,132,100,1,178,4,232,90,53,102,80, -102,83,102,82,86,6,140,200,142,192,190,224,125,232,100,51,7,94,138,68, -10,179,1,232,23,52,232,205,221,102,90,102,91,102,88,178,18,232,48,53, -139,254,51,201,136,140,41,8,131,198,27,129,199,86,4,185,12,0,38,138, -68,2,38,138,101,2,128,252,30,15,132,9,1,38,58,69,2,117,87,60, -15,116,56,60,0,116,52,60,1,15,133,245,0,87,86,179,38,38,138,68, -4,139,54,197,20,129,198,166,1,246,227,3,240,38,138,69,4,139,62,197, -20,129,199,214,5,246,227,3,248,232,214,16,94,95,115,30,233,199,0,102, -38,139,68,24,102,38,59,69,24,117,15,102,38,139,68,20,102,38,59,69, -20,117,3,233,172,0,86,139,54,197,20,254,132,41,8,94,131,253,1,15, -132,155,0,87,86,6,80,140,200,142,192,190,129,125,232,175,50,88,7,94, -38,138,68,8,83,179,0,232,95,51,91,176,32,232,234,51,6,15,168,140, -216,142,232,142,192,232,131,52,138,68,8,180,112,232,195,28,15,169,7,232, -117,52,254,198,178,18,232,95,52,95,128,254,22,117,83,86,6,140,200,142, -192,190,234,125,232,105,50,7,94,182,14,178,62,232,68,52,81,232,161,51, -89,232,161,44,61,0,81,117,12,232,182,254,182,7,178,18,232,45,52,235, -37,61,0,73,117,20,232,165,254,91,94,139,54,195,20,137,54,197,20,86, -83,182,7,233,179,254,36,223,60,78,116,17,60,89,116,13,235,199,131,198, -32,131,199,32,73,15,133,221,254,91,94,248,195,96,187,44,57,232,168,26, -187,130,55,232,162,26,97,195,86,139,62,197,20,139,247,15,182,141,160,7, -227,49,86,87,139,189,158,7,139,180,111,3,128,249,1,117,16,138,13,58, -12,116,18,139,62,197,20,254,133,43,8,235,8,138,77,1,58,76,1,117, -238,95,94,131,199,3,131,198,3,235,200,94,195,96,187,130,57,232,88,26, -187,161,57,232,82,26,187,120,55,232,76,26,97,195,185,12,0,139,62,197, -20,38,128,189,223,5,1,116,7,131,199,38,226,243,235,8,139,62,197,20, -254,133,42,8,195,86,185,12,0,139,62,197,20,38,128,189,216,5,255,116, -73,38,128,189,216,5,96,116,70,38,139,133,219,5,81,139,54,197,20,38, -128,188,168,1,255,116,41,38,128,188,168,1,96,116,38,38,59,132,171,1, -117,26,38,138,133,226,5,36,1,38,50,132,178,1,10,192,116,15,139,54, -197,20,254,132,42,8,235,5,131,198,38,226,202,89,131,199,38,226,170,94, -195,61,0,30,249,117,69,30,83,81,82,87,46,161,38,16,142,216,139,30, -197,20,139,251,15,182,77,21,129,195,198,3,128,127,1,0,116,27,246,71, -3,1,117,21,176,42,128,79,3,1,254,133,199,7,30,6,30,7,14,31, -232,140,24,7,31,131,195,4,226,218,95,90,89,91,31,248,195,80,83,81, -82,186,9,18,187,70,23,176,1,180,112,185,2,0,232,163,47,232,120,251, -156,232,193,47,157,90,89,91,88,195,0,0,232,96,0,38,139,30,197,20, -38,15,182,143,199,7,38,136,175,199,7,38,40,143,198,7,38,0,143,223, -7,38,139,159,204,7,246,71,3,1,116,53,15,182,7,136,103,3,136,103, -1,182,32,246,230,139,62,197,20,3,248,129,199,86,4,161,88,21,136,69, -7,128,77,7,128,198,69,2,11,198,69,1,112,198,68,2,2,137,60,131, -198,3,73,227,5,131,195,4,235,192,195,80,83,38,139,30,197,20,38,138, -135,223,7,180,3,246,228,139,243,3,240,129,198,158,7,91,88,195,61,0, -73,116,94,61,0,81,116,66,61,114,19,116,5,61,82,19,117,106,96,30, -6,31,80,83,86,139,243,38,138,7,38,255,87,11,51,192,38,136,103,1, -38,246,71,3,1,116,8,38,136,103,3,38,254,76,2,94,91,88,38,138, -31,232,62,0,232,235,244,31,97,184,5,0,235,48,38,138,7,254,192,38, -58,71,1,116,35,38,255,87,15,38,138,7,38,254,7,235,16,38,138,7, -10,192,116,16,38,255,87,15,38,254,15,254,200,232,134,0,38,255,87,13, -51,192,249,195,248,195,176,3,246,227,38,139,62,197,20,3,248,129,199,158, -7,87,138,69,2,139,61,60,2,116,45,128,61,112,116,67,198,69,2,30, -81,139,77,5,227,27,15,188,193,15,179,193,180,32,246,228,38,139,62,197, -20,129,199,86,4,3,248,198,69,2,30,235,227,89,235,10,128,125,1,112, -116,21,198,69,2,30,95,50,192,136,69,2,38,139,62,197,20,254,141,223, -7,235,26,95,186,10,18,187,69,22,176,1,180,112,185,1,0,190,91,119, -232,33,46,232,147,41,232,64,46,195,96,80,38,255,87,11,139,251,139,247, -131,198,4,38,138,69,3,38,134,68,3,38,136,69,3,88,38,139,30,197, -20,180,3,246,228,3,216,129,195,158,7,135,251,139,247,131,198,3,38,139, -5,38,135,4,38,137,5,38,138,69,2,38,134,68,2,38,136,69,2,83, -50,210,38,138,119,1,131,195,4,177,79,38,138,111,2,183,31,232,0,49, -91,232,25,0,38,136,119,2,254,198,131,199,3,131,195,4,38,136,119,1, -232,6,0,38,136,119,2,97,195,96,38,138,69,2,38,139,53,179,31,60, -1,117,14,183,23,178,5,139,254,232,73,247,97,232,167,48,195,176,64,178, -5,232,251,245,97,195,0,0,96,6,15,168,38,139,30,197,20,38,15,182, -143,224,7,131,249,1,15,133,198,0,38,139,159,229,7,38,246,71,3,1, -117,5,131,195,4,235,244,38,138,39,38,136,38,96,21,176,3,246,228,38, -139,62,197,20,129,199,158,7,3,248,38,138,69,2,38,139,61,80,60,2, -116,7,38,15,182,69,12,235,15,38,138,69,2,60,15,15,132,157,0,38, -15,182,69,7,131,224,1,38,163,90,21,38,199,6,92,21,0,0,87,180, -31,232,107,48,51,210,187,79,24,176,2,180,31,232,117,48,6,140,200,142, -232,142,192,185,12,0,141,54,113,119,232,21,49,7,95,88,182,3,190,9, -120,60,1,117,45,199,68,1,45,120,38,15,182,69,2,232,14,23,115,19, -199,68,1,24,120,38,15,182,69,12,209,232,131,224,1,38,163,57,21,179, -31,183,23,178,5,232,113,246,235,75,199,68,1,45,120,139,247,50,192,178, -5,179,31,232,29,245,235,57,186,9,18,187,70,23,176,1,180,112,227,8, -185,5,0,190,134,120,235,25,185,4,0,190,228,116,235,17,88,186,19,18, -187,60,23,176,1,180,112,185,5,0,190,159,120,232,112,44,232,226,39,232, -143,44,249,235,1,248,15,169,7,97,195,96,60,1,15,133,65,1,176,1, -38,131,62,88,21,1,116,2,176,0,80,38,160,96,21,180,3,246,228,38, -139,62,197,20,129,199,158,7,3,248,38,138,93,2,38,139,61,88,36,1, -128,251,2,117,23,38,128,101,7,254,38,8,69,7,232,8,1,15,133,2, -1,38,138,101,1,233,183,0,38,138,101,12,128,228,1,56,196,116,14,38, -128,101,12,254,38,8,69,12,38,128,117,12,32,38,15,182,69,2,232,47, -22,115,36,38,161,59,21,131,224,1,208,224,138,224,38,50,101,12,128,228, -2,10,228,116,14,38,128,101,12,253,38,8,69,12,38,128,117,12,64,232, -179,0,15,133,173,0,38,128,125,7,0,116,28,186,8,12,187,71,17,176, -1,180,112,185,3,0,190,173,119,232,172,43,232,30,39,232,203,43,233,138, -0,38,139,69,14,11,192,116,12,38,138,69,8,36,15,60,15,117,22,235, -47,38,138,69,8,138,224,128,228,2,128,252,0,116,6,36,252,60,252,116, -27,186,8,12,187,71,17,176,1,180,112,185,4,0,190,188,119,232,104,43, -232,218,38,232,135,43,235,71,38,138,37,30,6,31,232,178,0,114,56,232, -63,1,31,60,0,117,6,190,119,120,185,3,0,186,21,10,187,56,15,80, -176,1,180,112,232,57,43,88,128,252,0,116,14,186,34,11,232,61,46,187, -1,0,138,196,232,14,45,232,151,38,232,68,43,235,1,31,232,41,0,97, -195,38,161,94,21,131,248,1,195,96,186,5,4,187,74,17,176,1,180,112, -185,9,0,190,184,120,232,251,42,232,109,38,232,26,43,97,195,96,97,195, -30,96,6,31,160,96,21,180,3,246,228,139,62,197,20,129,199,158,7,3, -248,138,93,2,139,53,128,251,2,116,41,138,4,15,182,232,232,36,217,232, -147,216,131,199,26,138,69,5,136,68,8,139,238,15,182,13,131,199,20,139, -116,14,11,246,116,6,131,198,3,232,190,221,97,31,195,96,6,80,15,182, -236,89,176,5,128,249,244,117,2,176,8,139,62,223,18,136,5,198,69,1, -2,198,69,2,0,139,197,136,69,3,199,69,6,5,1,232,124,36,232,181, -36,190,184,63,232,104,23,190,229,120,185,6,0,184,46,12,163,114,20,184, -51,12,163,116,20,139,197,186,21,10,187,56,15,191,45,11,232,137,22,114, -4,248,7,97,195,139,62,223,18,198,5,8,198,69,1,2,198,69,2,0, -139,197,136,69,3,199,69,6,2,0,232,49,36,232,106,36,198,5,5,232, -40,36,232,97,36,198,5,23,232,31,36,232,88,36,232,60,42,249,7,97, -195,51,192,96,15,182,236,50,219,190,54,64,232,252,22,246,199,1,117,35, -128,251,0,117,4,97,176,0,195,136,30,118,20,97,138,38,118,20,190,3, -121,185,3,0,235,21,97,190,18,121,185,3,0,235,12,246,199,6,117,242, -97,190,33,121,185,3,0,176,1,195,138,69,22,60,9,116,32,60,10,116, -28,60,4,116,20,60,42,116,16,60,14,116,12,60,38,116,16,60,54,117, -2,254,195,248,195,128,207,1,195,128,207,2,195,128,207,4,195,0,0,0, -102,80,96,6,15,168,38,139,54,197,20,38,15,182,68,22,38,163,97,21, -38,163,113,21,38,15,182,68,26,38,163,115,21,187,1,0,139,203,38,138, -68,24,60,0,116,22,60,6,118,2,176,6,138,200,38,138,68,23,38,58, -68,21,119,4,254,196,138,216,15,182,196,38,163,101,21,75,38,137,30,105, -21,73,38,137,14,109,21,139,254,139,216,6,15,168,83,82,180,31,232,154, -44,51,210,187,79,24,176,2,180,31,232,164,44,140,200,142,232,142,192,185, -13,0,141,54,97,121,232,69,45,90,91,15,169,7,248,15,169,7,97,102, -88,195,96,191,212,122,189,16,123,38,139,54,197,20,38,139,14,103,21,227, -45,129,251,246,64,117,28,187,0,0,38,137,30,105,21,67,38,137,30,107, -21,185,1,0,38,137,14,109,21,65,38,137,14,111,21,180,1,232,75,0, -38,138,76,21,235,12,138,225,232,64,0,191,80,172,139,239,254,193,138,233, -190,108,122,136,76,12,137,124,10,254,193,138,4,2,193,136,68,2,138,205, -128,249,1,116,2,177,6,50,192,190,129,122,136,76,12,137,108,10,232,68, -38,190,108,122,232,62,38,190,171,122,232,56,38,97,195,51,201,38,137,14, -119,21,10,228,116,54,38,15,182,76,25,138,233,246,193,1,116,26,15,182, -205,209,233,38,137,14,119,21,86,190,171,122,199,68,10,200,122,198,68,12, -2,94,235,30,86,190,171,122,199,68,10,208,122,198,68,12,1,94,235,14, -86,190,171,122,199,68,10,80,172,198,68,12,1,94,195,96,30,6,31,60, -1,15,133,10,1,38,139,54,197,20,187,255,0,38,139,14,103,21,227,5, -38,139,30,107,21,38,58,92,23,116,26,81,38,136,92,23,102,80,102,184, -3,4,7,1,139,203,38,254,132,44,8,232,220,0,102,88,89,38,139,14, -103,21,227,5,38,139,14,111,21,58,76,24,116,24,136,76,24,102,80,102, -184,3,4,8,1,15,182,201,38,254,132,44,8,232,178,0,102,88,38,139, -14,117,21,38,58,76,26,116,22,38,136,76,26,102,80,102,184,3,4,18, -1,38,254,132,44,8,232,145,0,102,88,38,246,68,25,1,116,48,38,139, -14,121,21,208,225,138,233,128,201,1,38,50,76,25,116,30,128,205,1,38, -136,108,25,102,80,102,184,3,4,20,1,15,182,205,209,233,38,254,132,44, -8,232,90,0,102,88,38,139,14,99,21,38,59,14,97,21,116,73,81,186, -13,8,187,65,17,176,1,180,71,185,6,0,141,54,172,121,14,15,169,232, -86,39,232,43,243,156,232,116,39,157,89,116,38,38,139,54,197,20,38,136, -76,22,102,80,102,184,3,4,17,1,38,254,132,44,8,232,16,0,232,7, -221,102,88,38,139,54,197,20,232,130,214,31,97,195,96,81,102,80,139,62, -223,18,176,19,12,64,136,5,198,69,1,4,198,69,2,0,198,69,3,0, -199,69,6,1,0,139,22,231,18,232,180,203,102,137,69,8,102,199,69,12, -0,2,0,0,139,62,231,18,102,88,102,137,5,131,199,4,88,136,5,139, -62,223,18,232,220,32,232,21,33,97,195,96,186,5,4,187,74,17,176,1, -180,112,185,10,0,190,40,123,232,193,38,232,51,34,232,224,38,97,195,0, -102,80,96,6,15,168,38,139,30,197,20,38,15,182,143,224,7,128,249,1, -15,133,170,0,38,139,159,229,7,38,246,71,3,1,117,5,131,195,4,235, -244,38,138,7,180,3,246,228,38,139,54,197,20,3,240,129,198,158,7,38, -138,68,2,38,139,52,60,2,116,124,38,138,68,2,232,167,16,115,115,38, -139,92,14,11,219,117,22,38,138,68,8,138,224,36,252,60,236,116,43,128, -228,2,128,252,0,116,35,235,85,38,15,182,15,131,195,3,38,138,7,138, -224,36,252,60,236,116,15,128,228,2,128,252,0,116,7,131,195,4,226,232, -235,52,38,139,68,5,232,233,219,139,193,38,15,182,76,4,43,200,138,241, -10,201,15,132,211,0,38,139,30,197,20,38,138,151,199,7,56,242,127,14, -10,210,117,39,38,15,182,76,37,227,3,233,183,0,186,9,18,187,70,23, -176,1,180,112,185,2,0,190,131,123,232,227,37,232,85,33,232,2,38,249, -233,28,1,15,182,202,102,87,102,80,38,15,188,68,5,86,139,243,180,32, -246,228,139,251,129,199,86,4,87,3,248,102,38,139,125,20,91,38,139,180, -204,7,38,246,68,3,1,116,30,38,138,4,180,32,246,228,83,3,216,102, -38,139,71,16,91,102,45,0,8,0,0,102,59,199,114,15,73,227,5,131, -198,4,235,214,94,102,88,102,95,235,66,94,102,88,102,95,186,10,8,187, -67,12,176,1,180,112,185,4,0,190,141,123,232,105,37,102,82,102,51,210, -102,38,139,133,106,4,232,171,15,102,90,190,153,20,186,48,10,179,126,232, -140,38,176,46,232,62,40,232,187,32,232,104,37,249,233,130,0,139,254,139, -216,6,15,168,83,82,180,31,232,148,40,51,210,187,79,24,176,2,180,31, -232,158,40,140,200,142,232,142,192,185,6,0,141,54,101,123,232,63,41,90, -91,15,169,7,128,254,0,116,66,15,182,206,186,8,5,38,139,30,197,20, -38,139,159,204,7,38,246,71,3,1,117,5,131,195,4,235,244,38,138,7, -180,32,246,228,38,139,54,197,20,3,240,129,198,86,4,83,176,0,179,31, -232,80,237,91,131,195,4,254,198,226,210,254,198,235,2,182,5,179,31,183, -23,178,8,232,123,238,248,15,169,7,97,102,88,195,96,30,6,31,60,1, -15,133,185,0,38,139,30,197,20,38,254,143,224,7,129,195,222,7,232,250, -234,128,103,3,254,138,7,180,3,246,228,38,139,54,197,20,3,240,129,198, -158,7,38,139,52,38,198,68,9,1,38,139,92,14,11,219,117,8,180,223, -38,136,100,8,235,7,38,128,100,8,253,235,22,38,139,68,5,232,38,218, -139,193,38,15,182,76,4,59,200,116,98,38,139,92,14,11,219,38,138,20, -38,138,116,1,117,86,38,139,30,197,20,15,182,143,198,7,227,71,139,191, -204,7,246,69,3,1,87,116,54,254,143,198,7,254,143,199,7,50,192,136, -69,3,136,69,1,87,138,37,176,32,246,228,38,139,62,197,20,3,248,198, -133,88,4,1,136,181,90,4,95,15,182,5,15,171,68,5,128,100,36,240, -8,68,36,95,131,199,4,226,189,31,97,195,232,12,16,38,137,124,14,86, -81,139,243,185,38,0,243,164,89,94,38,139,92,14,139,238,38,15,182,116, -37,38,139,62,197,20,131,195,3,86,83,15,182,141,198,7,227,119,139,189, -204,7,246,69,3,1,116,104,50,192,136,69,3,136,69,1,138,37,87,38, -139,62,197,20,254,141,198,7,254,141,199,7,176,32,246,228,38,139,62,197, -20,3,248,198,133,88,4,1,136,181,90,4,95,138,7,138,224,36,252,60, -236,116,8,128,228,2,128,252,0,117,6,209,238,115,9,235,2,209,238,131, -195,4,235,225,180,223,136,39,15,182,5,15,171,71,1,62,15,171,70,5, -128,103,3,240,8,71,3,131,195,4,235,146,131,199,4,226,141,91,94,185, -8,0,209,238,115,12,138,7,36,252,60,236,117,4,180,223,136,39,131,195, -4,226,235,233,59,255,96,186,5,4,187,74,17,176,1,180,112,185,10,0, -190,191,123,232,26,35,232,140,30,232,57,35,97,195,0,0,30,6,30,7, -139,54,197,20,139,254,232,165,0,232,7,1,232,244,1,232,58,1,232,107, -1,232,149,1,86,139,254,129,198,214,5,129,199,120,7,128,124,4,0,116, -59,138,12,128,249,255,116,52,139,76,14,227,10,59,241,127,6,59,249,126, -2,139,249,138,68,12,138,100,7,10,228,116,15,36,3,10,192,116,21,138, -224,192,228,5,10,196,235,7,138,224,128,228,96,116,5,138,36,232,193,4, -131,198,38,59,247,126,184,94,86,15,182,76,21,138,132,88,4,60,11,117, -38,138,132,93,4,168,128,116,4,12,32,235,14,36,1,138,100,34,128,228, -1,56,196,116,14,12,32,138,164,87,4,128,252,255,116,3,232,134,4,131, -198,32,226,205,94,232,84,11,232,108,6,7,31,195,96,138,140,162,1,138, -172,163,1,2,205,15,182,201,227,83,139,222,129,198,166,1,129,199,214,5, -59,183,164,1,125,67,128,124,2,255,116,56,87,86,81,185,12,0,128,125, -2,255,116,29,232,59,1,114,36,80,139,69,5,59,68,5,88,117,14,128, -125,2,30,117,8,15,182,4,232,86,1,235,12,131,199,38,226,216,138,4, -180,128,232,72,1,89,94,95,131,198,38,235,183,97,195,96,131,198,27,129, -199,86,4,185,12,0,138,68,2,60,11,116,8,60,15,116,4,60,13,117, -21,56,69,2,116,16,180,128,128,125,2,30,117,2,50,228,138,68,1,232, -15,1,131,198,32,131,199,32,226,212,97,195,96,129,199,86,4,131,198,27, -185,12,0,138,69,2,60,13,116,8,60,15,116,4,60,11,117,16,56,68, -2,117,8,138,68,1,136,69,1,235,3,232,48,1,131,199,32,131,198,32, -226,217,97,195,96,129,199,158,7,15,182,140,223,7,227,31,138,69,2,60, -2,116,19,60,1,117,20,139,53,128,124,9,1,117,7,87,139,254,232,14, -3,95,131,199,3,226,225,97,195,96,129,199,158,7,15,182,140,223,7,227, -72,138,69,2,60,2,116,60,60,1,117,61,86,87,81,139,61,15,182,140, -162,1,129,198,111,3,227,34,86,138,68,2,60,2,116,20,60,1,117,16, -139,52,232,57,0,114,2,235,7,198,69,7,0,94,235,9,94,131,198,3, -226,222,232,234,0,89,95,94,131,199,3,226,184,97,195,96,129,199,86,4, -185,12,0,128,125,2,30,117,6,138,69,8,232,103,0,131,199,32,226,239, -97,195,80,138,5,58,4,117,41,138,69,3,58,68,3,117,33,138,69,2, -58,68,2,117,25,138,69,4,58,68,4,117,17,139,69,5,59,68,5,116, -6,128,125,9,1,117,3,249,235,1,248,88,195,87,83,80,15,182,216,139, -62,225,18,198,5,21,136,69,3,198,69,1,2,102,51,192,136,69,2,102, -137,69,4,88,138,196,136,69,7,232,150,26,232,207,26,91,95,195,87,83, -139,62,225,18,198,5,10,198,69,1,2,80,102,51,192,136,69,3,136,69, -2,102,137,69,4,88,136,69,7,232,110,26,232,167,26,91,95,195,85,86, -87,82,102,80,139,247,139,22,231,18,139,62,223,18,189,20,0,232,255,3, -87,139,62,231,18,138,100,2,50,192,232,52,4,95,232,65,26,232,122,26, -138,69,3,162,123,21,102,88,90,95,94,93,160,123,21,136,69,1,195,85, -86,87,82,81,102,80,139,247,128,124,2,7,124,6,232,190,0,233,174,0, -139,62,197,20,129,199,86,4,185,12,0,138,84,1,136,22,123,21,87,81, -102,51,192,15,182,108,4,138,116,3,136,54,233,18,138,116,2,136,54,124, -21,85,51,210,184,20,0,69,247,229,139,232,139,22,231,18,139,62,223,18, -232,132,3,139,62,231,18,93,86,139,247,232,97,1,94,139,197,136,5,160, -233,18,136,69,2,138,54,124,21,136,117,1,198,69,3,255,102,51,192,136, -69,5,136,69,4,137,69,6,102,137,69,8,102,137,69,12,131,199,20,89, -94,42,192,50,210,128,124,2,1,117,22,138,38,123,21,56,100,4,117,13, -180,12,136,84,9,232,113,3,254,194,131,199,20,131,198,32,226,223,139,62, -223,18,232,113,25,232,170,25,138,69,3,162,123,21,102,88,89,90,95,94, -93,160,123,21,136,5,195,96,102,83,102,51,219,138,69,2,139,54,231,18, -232,224,0,136,92,1,138,77,4,60,7,117,6,178,2,208,233,235,7,178, -5,138,200,128,225,15,136,12,138,69,3,36,15,136,68,2,198,68,3,255, -136,92,4,136,92,5,137,92,6,102,137,92,8,102,137,92,12,131,198,20, -232,164,0,138,69,4,138,231,246,241,15,182,232,15,182,201,50,246,139,125, -14,138,69,1,138,226,131,199,3,136,68,2,136,100,1,80,139,197,136,4, -82,15,182,198,139,213,246,242,90,136,92,3,136,92,4,136,92,5,137,92, -6,102,137,92,8,102,137,92,12,131,198,20,232,92,0,81,139,205,136,28, -198,68,1,12,15,188,69,1,15,187,69,1,136,68,3,136,92,2,136,92, -4,136,92,5,137,92,6,102,137,92,8,102,137,92,12,254,198,131,198,20, -232,44,0,226,209,131,199,4,89,88,226,153,139,238,139,54,231,18,43,238, -139,62,223,18,139,22,231,18,232,40,2,232,120,24,232,177,24,138,69,3, -162,123,21,102,91,97,195,80,81,87,139,254,51,192,185,10,0,243,171,95, -89,88,195,102,80,102,83,81,82,139,117,14,11,246,117,42,102,51,192,138, -69,37,10,192,117,18,138,69,36,138,240,128,230,15,232,250,0,139,247,138, -21,232,51,1,139,247,138,21,232,77,1,90,89,102,91,102,88,195,138,93, -37,138,21,15,182,12,131,198,3,138,4,36,252,60,220,117,31,246,195,1, -117,14,138,116,3,128,230,15,232,196,0,232,1,1,235,12,86,81,138,76, -3,139,247,232,126,1,89,94,208,235,131,198,4,226,210,235,190,96,80,139, -62,223,18,176,19,12,64,136,5,198,69,1,4,198,69,2,0,136,101,3, -199,69,6,0,0,139,22,231,18,232,124,194,102,137,69,8,102,199,69,12, -0,2,0,0,88,138,220,15,186,224,5,115,3,255,69,6,15,186,224,6, -115,3,255,69,6,139,62,231,18,15,186,224,5,115,40,80,102,184,0,131, -13,0,10,195,102,137,5,131,199,4,102,184,1,0,1,0,102,137,5,131, -199,4,88,80,36,1,192,224,2,12,1,136,5,71,88,15,186,224,6,115, -34,80,102,184,0,131,15,0,10,195,102,137,5,131,199,4,102,184,1,0, -1,0,102,137,5,131,199,4,88,208,232,36,1,136,5,139,62,223,18,232, -68,23,232,125,23,97,195,96,82,139,22,231,18,139,62,223,18,189,20,0, -232,220,0,90,176,32,246,230,139,54,197,20,3,240,129,198,86,4,139,62, -231,18,180,12,176,0,232,4,1,139,62,223,18,232,14,23,232,71,23,138, -69,3,162,123,21,97,138,54,123,21,195,96,139,62,223,18,198,5,9,198, -69,1,2,198,69,2,0,136,85,3,15,182,198,137,69,6,232,227,22,232, -28,23,97,195,102,96,128,124,2,7,125,8,138,76,36,232,90,0,235,36, -139,116,14,15,182,12,131,198,3,138,68,3,60,255,116,18,15,186,240,7, -81,15,188,68,1,138,232,232,58,0,131,198,4,89,226,229,102,97,195,209, -233,56,216,116,32,138,216,36,15,60,15,117,5,192,235,4,235,12,138,195, -192,232,4,60,15,117,20,128,227,15,81,138,235,232,12,0,89,102,193,232, -8,102,193,235,8,226,210,195,96,50,237,139,62,223,18,198,5,23,198,69, -1,2,136,109,2,136,85,3,138,225,176,128,137,69,6,232,88,22,232,145, -22,97,195,83,81,102,80,51,219,176,20,12,96,136,5,51,192,198,69,1, -5,136,69,2,136,69,3,137,109,6,198,69,8,1,136,69,9,136,69,10, -232,225,192,102,137,69,12,102,15,183,197,102,5,255,1,0,0,37,0,254, -102,137,69,16,102,88,89,91,195,80,86,139,247,232,159,253,94,136,5,136, -101,1,138,68,8,136,69,3,50,192,136,69,4,88,195,96,102,80,15,182, -140,223,7,10,201,15,132,203,0,139,46,231,18,129,198,158,7,51,219,138, -68,2,60,1,116,7,139,60,138,69,1,235,4,139,60,138,5,56,216,116, -6,60,255,116,9,254,199,254,195,62,136,70,0,69,131,198,3,226,216,139, -54,197,20,15,182,140,198,7,227,44,129,198,86,4,138,68,2,60,13,116, -14,60,12,116,5,131,198,32,235,240,131,198,32,235,17,138,68,1,131,198, -32,60,112,125,225,62,136,70,0,254,195,69,226,216,139,54,197,20,15,182, -140,17,8,227,30,129,198,176,5,131,198,38,128,124,4,0,116,247,128,124, -8,0,117,241,138,4,62,136,70,0,254,195,69,226,230,10,255,116,53,138, -203,139,62,223,18,176,13,12,64,136,5,198,69,1,4,136,109,2,136,109, -3,137,77,6,139,22,231,18,232,233,191,102,137,69,8,102,199,69,12,0, -2,0,0,232,36,21,232,93,21,232,1,9,102,88,97,195,81,82,82,139, -218,38,2,111,1,38,139,87,5,131,250,255,117,241,10,237,181,0,90,116, -2,235,17,131,248,0,15,132,148,0,131,248,1,15,132,141,0,233,155,0, -131,248,0,116,18,131,248,1,116,13,38,128,127,1,0,117,27,38,139,95, -3,235,243,139,218,38,128,127,1,0,117,6,38,139,95,5,235,243,38,198, -7,0,235,9,38,138,71,1,254,200,38,136,7,38,255,87,13,38,255,87, -17,232,33,22,248,38,255,87,21,114,19,38,255,87,23,114,240,139,211,232, -191,23,114,75,11,219,139,218,116,8,131,248,5,117,222,249,235,61,232,200, -23,116,214,232,120,23,115,14,59,197,116,205,38,255,87,19,38,255,87,15, -235,36,38,255,87,9,131,251,254,116,16,131,251,255,116,2,235,179,69,59, -233,117,15,51,237,235,11,131,253,0,116,3,77,235,3,139,233,77,248,90, -89,195,0,0,38,139,95,7,83,179,4,246,227,91,3,216,195,6,15,168, -81,86,140,200,142,232,142,192,185,2,0,141,54,19,124,232,80,30,94,89, -15,169,7,195,6,15,168,81,86,140,200,142,232,142,192,185,1,0,141,54, -14,124,232,53,30,94,89,15,169,7,195,6,15,168,81,86,140,200,142,232, -142,192,185,3,0,141,54,255,123,232,26,30,94,89,15,169,7,195,6,15, -168,81,86,140,200,142,232,142,192,185,2,0,141,54,245,123,232,255,29,94, -89,15,169,7,195,80,81,82,30,6,31,138,71,1,254,192,182,2,185,78, -0,178,48,232,120,26,31,90,89,88,195,80,81,82,30,6,31,138,71,1, -254,192,182,2,185,78,0,246,71,3,2,117,4,178,31,235,2,178,23,232, -84,26,31,90,89,88,195,81,61,0,15,116,10,61,0,75,116,5,61,0, -72,117,51,38,255,87,15,38,138,7,10,192,116,5,38,254,15,235,98,38, -255,87,19,38,139,95,3,131,251,254,116,89,38,128,127,1,0,116,240,38, -138,71,1,254,200,38,136,7,38,255,87,17,235,63,61,9,15,116,10,61, -0,77,116,5,61,0,80,117,52,38,255,87,15,38,138,7,254,192,38,56, -71,1,116,5,38,136,7,235,28,38,255,87,19,38,139,95,5,131,251,255, -116,19,38,128,127,1,0,116,240,38,198,7,0,38,255,87,17,38,255,87, -13,89,195,61,115,31,116,7,61,106,36,15,133,252,0,83,81,139,200,38, -138,7,38,255,87,11,83,38,138,7,179,32,246,227,139,216,129,195,86,4, -38,3,30,197,20,102,80,129,249,106,36,117,116,38,128,127,2,15,15,132, -198,0,38,139,54,197,20,38,128,124,22,1,15,133,184,0,38,198,71,2, -15,102,38,139,71,20,102,5,0,8,0,0,102,38,137,71,20,38,198,71, -1,112,38,128,103,7,191,232,109,233,38,198,68,2,2,38,137,28,38,139, -54,197,20,38,254,132,223,7,38,254,140,198,7,102,88,91,38,15,182,79, -3,128,225,1,116,9,38,136,111,3,38,254,140,199,7,38,136,111,1,184, -5,0,235,99,190,231,124,235,71,38,138,71,2,60,13,117,7,38,198,71, -2,12,235,236,232,82,0,131,249,2,116,20,227,10,190,39,124,232,141,232, -116,58,235,8,190,29,124,232,131,232,116,48,60,15,117,16,102,38,139,71, -20,102,45,0,8,0,0,102,38,137,71,20,38,198,71,2,13,190,170,124, -102,88,91,38,138,119,1,178,61,179,48,6,30,7,232,73,25,7,235,3, -102,88,91,89,91,249,195,248,195,80,87,38,139,54,197,20,129,198,158,7, -38,15,182,76,2,227,85,128,249,1,117,12,38,139,60,38,138,69,2,232, -26,2,114,5,131,198,3,235,227,177,1,102,38,139,71,16,86,80,38,139, -69,5,38,139,54,197,20,15,188,192,181,32,246,229,3,240,129,198,86,4, -88,102,38,59,68,20,94,124,5,185,2,0,235,18,131,198,3,38,138,108, -2,10,237,116,7,128,253,1,117,240,235,200,95,88,195,61,32,57,116,5, -61,13,28,117,49,86,139,243,38,138,7,38,255,87,11,176,42,38,246,71, -3,1,117,11,38,254,68,2,38,128,79,3,1,235,11,38,254,76,2,176, -32,38,128,103,3,254,232,38,0,139,222,94,249,195,248,195,83,80,38,138, -7,38,255,87,11,88,232,124,253,91,195,83,80,38,138,7,38,255,87,11, -88,232,135,253,91,195,195,178,4,38,138,119,1,232,64,26,83,87,30,80, -81,140,192,142,216,139,202,232,198,27,38,161,130,21,142,216,138,93,1,89, -88,31,95,232,7,26,91,195,96,139,54,197,20,139,254,15,182,140,223,7, -227,44,138,100,10,128,204,128,129,199,214,5,129,198,120,7,128,125,4,0, -116,17,128,125,7,1,117,11,138,5,87,139,62,223,18,232,10,0,95,131, -199,38,59,254,126,226,97,195,96,6,190,183,83,232,195,3,198,5,8,198, -69,1,2,198,69,2,0,136,69,3,51,219,137,93,6,80,232,183,16,232, -240,16,184,51,10,163,116,20,184,46,10,163,114,20,88,80,190,49,124,185, -7,0,186,12,8,187,65,13,191,53,9,232,202,2,88,114,35,190,184,83, -232,128,3,115,56,186,10,18,187,69,22,176,1,180,112,185,1,0,190,84, -124,232,116,22,232,230,17,232,147,22,235,29,139,62,223,18,198,5,8,198, -69,1,2,198,69,2,0,136,69,3,199,69,6,2,1,232,84,16,232,141, -16,7,97,195,138,69,22,60,4,116,10,60,14,116,6,60,42,116,2,248, -195,249,195,0,139,54,195,20,137,54,197,20,255,211,114,7,139,52,131,254, -255,117,241,195,80,10,192,116,76,138,224,128,228,2,128,252,2,116,9,38, -138,69,2,232,74,0,114,62,36,252,60,236,116,56,60,244,116,10,60,220, -116,22,60,248,116,34,235,47,190,27,154,38,128,62,241,18,0,116,3,190, -4,154,235,34,190,185,153,38,128,62,241,18,0,116,3,190,162,153,235,18, -190,213,153,235,13,190,197,153,235,8,190,224,153,235,3,190,39,154,88,195, -60,2,116,14,60,1,116,10,60,7,125,6,60,5,116,2,248,195,249,195, -87,102,83,102,82,102,187,0,0,32,0,102,11,210,117,7,102,59,195,119, -2,235,80,102,139,216,102,37,0,0,224,255,139,194,102,193,192,11,102,61, -0,4,0,0,114,25,232,81,0,38,198,69,3,32,38,198,69,4,84,38, -198,69,5,66,38,198,69,6,0,235,53,102,139,195,102,193,232,11,232,49, -0,38,198,69,3,32,38,198,69,4,71,38,198,69,5,66,38,198,69,6, -0,235,21,102,209,232,232,21,0,38,198,69,3,32,38,198,69,4,77,38, -198,69,5,0,102,90,102,91,95,195,83,102,187,232,3,0,0,102,247,227, -102,187,0,4,0,0,102,247,243,191,153,20,232,135,22,131,232,3,3,248, -38,139,29,38,199,5,46,0,38,137,93,1,91,195,96,185,12,0,176,32, -191,153,20,243,170,128,251,5,116,26,128,251,0,116,21,10,255,116,5,128, -251,7,125,12,191,153,20,131,199,7,51,192,170,249,235,58,191,158,20,246, -199,240,116,28,191,153,20,138,207,128,225,15,254,201,102,51,192,64,102,211, -224,232,46,22,3,248,176,45,170,192,239,4,138,207,254,201,102,51,192,64, -102,211,224,232,24,22,3,248,176,75,170,50,192,170,97,190,153,20,195,80, -83,81,86,190,236,18,101,136,100,4,187,31,0,246,227,187,254,18,3,216, -101,136,52,101,136,84,1,101,137,92,2,185,1,0,232,157,24,94,89,91, -88,195,83,81,86,176,38,246,231,38,139,54,197,20,3,240,138,132,218,5, -128,188,216,5,0,116,16,139,156,228,5,11,219,117,4,254,200,235,4,138, -39,42,196,15,182,200,102,51,210,102,74,102,209,234,139,156,219,5,15,188, -195,15,187,195,38,139,54,197,20,180,32,246,228,3,240,102,38,59,148,102, -4,124,6,102,38,139,148,102,4,11,219,117,221,102,51,192,139,216,102,3, -194,18,223,226,249,102,51,210,139,211,94,89,91,195,86,51,192,38,128,60, -0,116,4,70,64,235,246,94,195,59,193,115,9,43,200,176,32,232,94,22, -226,249,195,81,185,4,0,139,62,197,20,129,199,120,7,128,125,2,96,117, -5,131,239,38,226,245,89,195,136,46,122,20,83,82,87,15,182,232,80,232, -37,1,93,95,90,91,15,131,163,0,87,176,1,180,112,232,170,19,90,139, -197,246,196,128,116,21,128,228,127,138,196,82,131,194,7,232,166,22,232,124, -21,90,139,197,15,182,232,232,154,22,232,112,21,198,6,118,20,0,198,6, -119,20,255,235,46,232,230,14,116,8,232,232,14,61,27,1,116,94,139,22, -114,20,232,119,22,128,62,119,20,0,117,19,232,200,0,115,76,186,50,0, -247,226,208,236,138,196,179,1,232,54,21,139,22,116,20,232,86,22,160,118, -20,60,0,116,12,60,1,116,12,60,2,116,12,176,124,235,10,176,47,235, -6,176,45,235,2,176,92,254,6,118,20,128,62,118,20,4,117,9,198,6, -118,20,0,254,6,119,20,232,140,21,235,149,249,156,232,48,19,157,195,80, -87,51,219,232,28,0,138,5,10,192,116,19,60,113,116,7,60,112,116,3, -249,235,8,11,246,116,232,255,214,115,228,95,88,195,102,80,102,82,139,62, -223,18,102,51,192,139,197,138,224,176,16,102,137,5,102,184,128,16,1,0, -102,137,69,4,102,51,192,176,3,102,137,69,8,102,51,192,176,128,102,137, -69,12,184,0,2,102,137,69,28,139,22,231,18,232,96,183,102,137,69,24, -232,163,12,232,220,12,102,90,102,88,139,62,231,18,195,232,237,192,232,92, -192,131,199,26,139,69,6,15,186,240,15,115,1,195,81,83,82,51,219,15, -182,13,11,201,116,87,131,199,20,138,21,10,210,116,78,176,20,254,194,246, -226,139,208,81,139,69,6,15,186,240,15,115,9,128,14,122,20,1,3,216, -235,11,246,6,122,20,1,116,4,129,195,0,4,208,14,122,20,3,250,226, -219,89,184,8,0,43,193,145,210,14,122,20,145,51,210,139,195,247,241,61, -0,4,116,9,248,15,182,14,122,20,227,1,249,90,91,89,195,87,80,139, -62,223,18,198,5,28,198,69,1,2,102,51,192,136,69,2,136,69,3,102, -137,69,4,232,0,12,232,57,12,88,95,195,0,0,102,82,102,80,102,83, -102,51,210,102,187,255,0,0,0,102,247,243,102,51,210,102,187,63,0,0, -0,102,247,243,139,200,102,61,255,3,0,0,118,3,185,255,3,102,91,102, -88,102,90,178,255,182,63,195,83,38,129,191,254,1,85,170,117,68,129,195, -190,1,180,4,128,252,0,116,57,38,138,7,60,128,116,7,131,195,16,254, -204,235,237,38,138,87,5,128,250,0,116,34,254,194,38,138,119,6,128,230, -63,128,254,0,116,20,128,250,0,117,6,138,230,176,0,235,10,180,0,138, -198,246,226,248,235,1,249,91,195,102,80,102,83,30,6,86,81,82,232,44, -182,137,132,203,6,30,7,187,0,4,3,222,102,184,0,0,0,0,46,138, -117,24,178,2,51,201,177,1,232,243,176,114,52,232,128,255,114,47,102,15, -183,216,102,82,102,46,139,69,20,102,11,192,117,19,102,51,210,102,46,139, -69,16,102,247,243,102,61,255,3,0,0,118,3,184,255,3,102,90,139,200, -131,196,4,235,2,90,89,94,7,31,102,91,102,88,51,192,46,137,13,46, -136,85,2,46,137,69,3,46,137,69,5,46,136,69,7,46,136,69,8,128, -250,8,118,5,46,128,77,8,8,46,137,69,9,46,136,69,11,46,137,69, -12,46,136,117,14,46,136,69,15,195,102,83,102,81,82,102,87,30,6,30, -7,139,54,195,20,137,54,197,20,232,21,192,38,139,52,131,254,255,117,241, -232,89,185,51,246,86,139,54,193,20,131,254,255,15,132,64,1,94,190,83, -16,46,15,182,14,157,0,46,128,62,60,0,1,117,19,131,249,2,124,14, -191,65,0,51,210,139,193,247,231,131,232,40,3,240,184,95,1,247,225,3, -240,46,137,54,12,88,51,192,129,254,156,17,126,32,185,173,18,191,156,17, -43,207,139,249,3,254,190,172,18,253,30,6,140,200,142,216,142,192,243,164, -7,31,252,71,139,199,80,189,2,0,232,187,7,191,83,16,139,54,193,20, -185,95,1,51,192,6,14,7,87,243,170,95,7,38,139,84,19,46,137,85, -9,38,139,84,17,46,137,85,7,38,139,84,15,46,137,85,5,38,139,84, -6,46,137,21,38,138,84,8,46,136,85,2,38,138,84,9,46,136,85,3, -38,138,84,10,46,136,85,11,179,0,86,38,128,188,156,1,6,117,19,102, -38,139,132,157,1,38,138,188,155,1,254,203,129,198,54,4,235,45,129,198, -111,3,38,138,68,2,10,192,116,88,86,38,139,52,60,1,116,11,102,38, -139,68,16,38,138,124,1,235,13,102,38,139,68,16,102,38,139,84,32,38, -138,60,94,87,80,46,138,69,12,180,26,246,228,131,199,13,3,248,88,46, -136,125,24,102,46,137,69,16,102,46,137,85,20,46,254,6,156,0,232,141, -253,88,80,232,15,254,95,46,254,69,12,131,198,3,254,195,235,160,94,129, -199,95,1,38,139,116,2,131,254,255,15,133,42,255,232,207,3,184,0,1, -46,128,62,156,0,0,116,11,38,128,62,253,18,0,116,3,131,200,32,93, -7,31,102,95,90,102,89,102,91,11,237,116,4,131,196,2,85,195,30,86, -87,85,83,232,27,185,139,93,4,131,199,10,189,0,0,131,251,0,116,20, -138,5,60,0,116,10,75,83,85,87,232,53,186,95,93,91,69,71,235,231, -15,182,76,21,86,187,0,0,198,6,125,20,1,139,254,129,199,111,3,15, -182,77,2,227,52,87,139,61,128,249,2,117,35,139,247,131,238,27,87,191, -151,124,232,84,196,95,50,219,138,69,1,232,191,16,138,93,8,191,129,125, -232,11,2,232,116,196,235,3,232,19,0,95,131,199,3,235,198,94,232,101, -196,232,67,1,91,93,95,94,31,195,102,96,87,138,5,232,84,196,191,151, -124,232,25,196,83,50,219,232,135,16,91,191,145,125,232,12,196,95,86,6, -83,30,7,138,93,2,138,125,3,232,134,249,91,7,6,102,80,83,81,138, -4,10,192,116,6,232,242,16,70,235,244,138,69,2,87,232,118,185,232,224, -195,95,89,91,102,88,7,94,87,191,154,125,232,210,195,95,86,87,6,140, -216,142,192,102,139,69,16,102,139,85,32,7,6,30,7,232,150,248,86,81, -190,153,20,232,64,250,185,9,0,232,73,250,89,94,7,191,153,20,232,159, -195,128,62,152,20,0,116,8,232,154,195,83,232,222,15,91,176,32,180,6, -232,123,15,95,139,69,14,11,192,117,18,6,30,7,38,138,69,8,232,227, -247,7,87,139,254,232,117,195,95,232,166,195,139,54,197,20,15,182,76,21, -94,131,125,14,0,117,11,138,85,36,139,125,5,232,248,0,235,106,139,117, -14,15,182,12,138,100,1,131,198,3,138,69,2,60,7,117,4,176,2,235, -2,176,5,86,87,191,166,125,232,54,195,95,94,87,86,86,6,30,7,139, -216,232,178,248,7,138,4,10,192,116,6,232,36,16,70,235,244,138,195,232, -170,184,232,20,195,94,138,4,232,117,247,139,254,232,9,195,232,59,195,94, -139,124,1,138,84,3,86,83,232,153,0,88,94,95,131,198,4,226,180,198, -6,125,20,1,102,97,195,102,80,96,15,182,76,21,51,219,139,235,138,132, -88,4,60,15,117,9,246,132,93,4,64,117,18,235,40,60,12,116,12,60, -0,116,8,60,13,116,4,60,217,114,24,131,253,0,117,9,191,178,125,232, -179,194,232,229,194,191,122,125,232,115,0,232,220,194,69,131,198,32,67,226, -193,139,54,197,20,15,182,140,17,8,227,40,131,253,0,117,9,191,178,125, -232,138,194,232,188,194,139,254,129,199,176,5,131,199,38,128,125,4,0,116, -247,246,69,12,128,116,241,232,72,254,226,236,131,253,0,116,3,232,154,194, -97,102,88,195,15,188,223,15,187,223,176,32,246,227,87,139,54,197,20,3, -240,191,129,125,232,19,0,56,218,117,6,191,234,153,232,64,194,232,114,194, -95,11,255,117,215,195,82,232,51,194,138,195,83,179,0,232,159,14,91,184, -32,3,128,251,10,114,2,254,204,232,10,14,191,118,125,232,23,194,6,15, -168,140,216,142,232,142,192,232,181,15,138,132,94,4,180,7,128,62,152,20, -0,116,2,180,31,232,235,247,15,169,7,86,6,81,140,216,142,192,102,139, -132,102,4,102,51,210,102,80,232,189,246,190,153,20,232,105,248,185,9,0, -232,114,248,102,88,89,7,94,191,153,20,232,198,193,128,62,152,20,0,116, -11,191,150,125,232,190,193,83,232,2,14,91,191,150,125,232,179,193,138,132, -88,4,60,15,117,6,191,11,125,232,165,193,60,12,117,6,191,8,125,232, -155,193,60,11,117,6,191,245,124,232,145,193,60,13,117,6,191,170,124,232, -135,193,60,217,117,6,191,17,125,232,125,193,60,219,117,6,191,34,125,232, -115,193,60,221,117,6,191,51,125,232,105,193,60,236,117,6,191,67,125,232, -95,193,60,238,117,6,191,85,125,232,85,193,60,254,117,6,191,103,125,232, -75,193,128,188,88,4,0,117,6,191,158,124,232,62,193,90,195,96,232,240, -183,198,69,60,0,87,131,199,44,232,40,193,232,95,193,191,129,124,232,36, -193,191,162,0,232,30,193,191,137,124,232,24,193,95,198,69,40,0,131,199, -24,232,8,193,232,63,193,97,195,0,0,0,96,46,15,182,14,157,0,131, -249,2,15,140,173,0,46,128,62,60,0,1,15,133,163,0,190,28,0,189, -83,16,46,137,108,30,129,197,95,1,46,15,182,68,5,177,3,211,192,139, -208,30,6,140,200,142,216,142,192,139,198,46,15,182,14,157,0,73,81,139, -202,139,240,46,137,124,6,139,199,190,28,0,243,165,46,137,109,254,129,197, -95,1,89,226,229,7,31,139,240,46,199,68,6,0,0,190,28,0,189,83, -16,6,14,7,87,191,97,0,232,70,0,129,197,95,1,191,83,0,176,190, -170,139,198,171,46,139,116,6,186,231,15,14,89,95,46,137,124,16,232,40, -0,129,197,95,1,46,137,124,22,176,190,170,139,198,171,176,234,170,139,194, -171,139,193,171,46,139,116,6,11,246,117,218,7,190,28,0,232,249,176,97, -195,80,86,81,6,30,190,106,95,140,201,142,217,142,193,185,5,0,243,164, -31,30,46,138,70,11,4,48,46,136,5,71,190,111,95,140,201,142,217,142, -193,185,17,0,243,164,50,192,46,136,5,71,31,7,89,94,88,195,83,108, -111,116,32,32,51,119,97,114,101,32,99,111,110,116,114,111,108,108,101,114, -0,160,0,0,0,0,0,0,0,0,0,0,36,80,77,77,80,6,86,46, -198,6,135,95,0,141,6,140,95,80,232,41,0,114,16,46,198,6,134,95, -1,46,140,6,130,95,46,137,54,132,95,131,196,2,94,7,14,7,88,232, -219,0,115,9,87,191,158,170,232,178,191,249,95,195,85,139,236,102,80,83, -81,87,187,0,224,142,195,51,246,139,126,4,102,46,139,5,102,38,57,4, -117,27,38,128,124,4,1,117,20,86,185,16,0,51,192,38,2,4,70,226, -250,94,60,0,117,3,248,235,13,70,131,254,16,114,210,67,131,251,255,117, -200,249,95,89,91,102,88,93,195,85,139,236,80,82,86,46,142,6,130,95, -46,139,54,132,95,106,1,106,255,106,255,139,70,4,193,232,3,106,0,80, -106,0,38,255,92,7,131,196,12,131,250,0,117,5,131,248,0,116,22,46, -137,22,136,95,46,163,138,95,193,232,4,193,226,12,3,208,142,194,248,235, -1,249,94,90,88,93,195,6,86,82,46,142,6,130,95,46,139,54,132,95, -102,46,131,62,136,95,0,116,27,46,255,54,136,95,46,255,54,138,95,106, -2,38,255,92,7,131,196,6,131,250,0,117,3,248,235,1,249,90,94,7, -195,81,87,6,30,80,184,64,0,142,216,191,19,0,139,5,131,232,2,193, -224,6,46,163,128,95,88,31,80,193,224,6,46,41,6,128,95,88,46,128, -62,134,95,0,116,35,193,224,9,80,232,72,255,114,23,131,196,2,46,198, -6,135,95,1,46,140,6,30,16,46,163,34,16,140,192,248,235,84,131,196, -2,46,131,62,34,16,0,117,55,193,224,9,139,200,184,0,112,80,81,142, -192,51,255,51,192,252,243,175,89,116,36,81,184,255,255,51,255,252,243,175, -89,116,24,88,131,192,4,61,0,112,116,12,46,59,6,128,95,117,214,184, -0,16,235,209,249,235,15,46,163,32,16,88,46,163,30,16,46,137,14,34, -16,248,7,95,89,195,80,81,87,6,46,131,62,34,16,0,116,46,46,128, -62,135,95,0,116,6,232,14,255,248,235,35,46,161,30,16,142,192,51,255, -46,139,14,34,16,46,161,32,16,243,171,51,192,46,163,34,16,46,163,30, -16,248,235,3,249,235,0,7,95,89,88,195,6,86,87,83,81,82,30,184, -64,0,142,216,187,19,0,139,7,193,224,6,80,180,193,248,205,21,88,114, -16,187,14,0,139,15,139,209,131,225,63,117,4,59,194,116,47,139,221,193, -227,6,43,195,142,192,51,255,139,221,193,227,9,139,203,51,192,252,243,171, -51,255,38,137,45,187,19,0,41,47,46,199,6,151,0,0,0,46,140,6, -149,0,235,88,46,198,6,153,0,1,140,192,142,216,51,246,51,255,139,221, -193,227,6,43,195,51,201,142,192,138,12,193,225,9,252,243,165,139,205,193, -225,9,51,192,252,243,171,106,64,31,187,19,0,41,47,140,192,187,14,0, -137,7,51,255,38,139,29,139,203,193,225,10,3,221,38,137,29,3,249,38, -137,45,46,137,14,151,0,46,140,6,149,0,31,90,89,91,95,94,7,195, -85,87,51,201,136,14,199,20,46,138,62,36,16,46,138,30,37,16,232,46, -1,131,224,254,131,192,40,139,208,237,11,192,15,133,231,0,139,46,195,20, -139,241,232,225,0,128,252,0,116,7,128,252,134,15,132,193,0,191,46,0, -232,117,1,61,2,16,116,4,65,70,235,226,232,248,0,169,1,0,15,132, -164,0,131,224,254,80,82,131,192,40,139,208,237,11,192,90,88,15,133,145, -0,62,136,126,8,62,136,94,9,232,175,0,232,223,0,62,136,70,10,62, -199,70,11,96,35,87,81,62,138,126,8,62,138,94,9,191,4,0,232,39, -1,169,4,0,117,14,62,138,126,8,62,138,94,9,131,200,4,232,31,1, -86,139,245,137,46,197,20,232,201,1,232,238,1,115,35,62,138,126,8,46, -58,62,36,16,117,57,62,138,94,9,46,58,30,37,16,117,46,191,130,111, -232,114,188,51,201,94,89,95,235,57,80,87,82,62,139,86,6,131,194,40, -191,162,0,131,199,14,46,139,5,239,90,95,88,254,6,199,20,129,197,45, -8,137,44,94,89,95,70,233,48,255,15,182,14,199,20,227,10,129,237,45, -8,62,199,70,0,255,255,95,93,195,81,82,180,177,176,2,185,2,16,186, -193,19,205,26,90,89,195,139,208,62,137,70,6,139,216,62,137,70,13,131, -192,12,62,137,70,19,139,195,131,192,8,62,137,70,17,131,195,4,62,137, -94,15,195,191,18,0,232,107,0,139,208,191,16,0,232,99,0,195,87,30, -6,83,161,231,18,46,163,236,99,140,216,46,163,238,99,184,0,240,142,216, -180,177,176,14,187,0,0,14,7,191,234,99,205,26,114,45,46,139,30,234, -99,46,161,238,99,142,216,46,139,62,236,99,62,138,70,8,62,138,102,9, -128,228,248,57,5,116,11,131,199,16,131,235,16,117,244,249,235,3,138,69, -14,115,2,176,255,91,7,31,95,195,0,2,0,0,0,0,81,180,177,176, -9,205,26,139,193,89,195,81,139,200,180,177,176,12,205,26,89,195,232,32, -0,81,6,30,7,129,239,128,0,185,32,0,102,51,192,243,102,171,7,89, -198,69,252,128,139,215,232,151,170,232,238,0,195,102,80,102,83,102,81,232, -1,1,102,37,0,32,0,0,116,245,248,102,89,102,91,102,88,195,102,83, -102,81,82,85,232,247,5,102,185,35,2,0,0,232,223,0,232,250,5,115, -54,160,241,18,60,16,124,27,186,9,18,187,70,23,176,1,180,112,185,2, -0,190,84,172,232,145,5,232,3,1,232,176,5,235,37,191,1,127,232,248, -186,232,42,187,191,42,127,232,239,186,232,236,0,235,17,102,37,0,64,0, -0,117,186,232,182,0,248,139,77,150,227,8,139,46,197,20,62,255,86,11, -93,90,102,89,102,91,195,102,80,82,86,139,54,197,20,102,184,0,0,219, -0,232,57,0,232,112,0,102,37,0,64,0,0,117,7,139,84,19,102,237, -235,238,94,90,102,88,195,102,80,87,232,6,178,139,62,231,18,102,46,161, -241,123,102,59,69,4,116,3,249,235,6,198,6,253,18,1,248,95,102,88, -195,86,139,54,197,20,131,124,6,0,116,9,82,139,84,13,102,239,90,94, -195,139,116,13,102,100,137,4,94,195,86,139,54,197,20,131,124,6,0,116, -9,82,139,84,17,102,239,90,94,195,139,116,17,102,100,137,4,94,195,86, -139,54,197,20,131,124,6,0,116,9,82,139,84,15,102,237,90,94,195,139, -116,15,102,100,139,4,94,195,86,139,54,197,20,131,124,6,0,116,9,82, -139,84,19,102,237,90,94,195,139,116,19,102,100,139,4,94,195,0,0,0, -0,0,96,180,1,205,22,97,195,30,83,81,140,200,142,216,180,0,205,22, -46,139,14,112,101,227,4,255,209,115,241,89,91,31,195,83,86,87,139,28, -255,211,15,130,88,1,139,76,5,46,137,14,112,101,15,182,76,4,131,198, -7,38,137,54,126,20,81,86,51,219,86,139,52,138,4,60,0,116,18,60, -3,117,3,232,157,1,50,192,59,221,117,2,176,1,232,187,1,94,131,198, -2,67,226,222,94,89,184,1,0,87,86,139,221,209,227,139,48,128,60,0, -117,55,139,92,3,255,211,115,10,131,248,5,15,132,223,0,233,249,0,94, -86,139,221,209,227,139,48,128,60,0,116,21,128,60,3,117,11,86,139,116, -1,128,124,12,1,94,126,33,176,1,232,111,1,94,95,235,188,232,85,255, -61,9,15,116,10,61,0,80,116,5,61,0,77,117,24,184,1,0,232,34, -1,3,232,131,253,255,117,3,139,233,77,59,233,117,180,51,237,235,176,61, -0,15,116,10,61,0,72,116,5,61,0,75,117,17,131,253,0,116,5,184, -255,255,235,210,139,233,184,255,255,235,203,61,13,28,117,87,128,60,1,116, -5,128,60,2,117,21,138,4,38,139,54,126,20,131,238,7,131,124,2,0, -116,3,255,84,2,235,101,128,60,6,117,9,139,116,1,139,52,255,214,235, -8,128,60,3,117,9,139,116,1,232,108,1,233,114,255,128,60,4,117,23, -81,85,139,124,9,139,116,7,51,237,232,214,254,93,89,94,95,95,94,91, -233,204,254,232,95,0,114,40,11,219,116,11,131,248,5,15,133,70,255,94, -95,235,230,232,103,0,117,3,233,58,255,232,20,0,15,131,51,255,85,139, -232,232,107,0,93,233,7,255,94,95,95,94,91,195,83,81,86,82,38,139, -54,126,20,51,210,139,28,131,127,11,0,116,16,57,71,11,116,5,57,71, -13,117,6,139,194,149,249,235,7,66,131,198,2,226,226,248,90,94,89,91, -195,139,223,11,219,116,21,131,63,0,116,14,57,7,117,5,255,87,2,235, -7,131,195,4,235,237,51,219,195,61,0,59,116,5,61,0,104,117,11,131, -124,5,0,116,5,255,84,5,51,192,195,80,176,0,232,43,0,88,195,86, -87,139,116,1,139,124,14,38,139,5,180,4,246,228,139,124,10,3,248,139, -69,2,139,124,16,38,137,5,139,124,19,11,255,116,2,255,215,95,94,195, -86,87,139,254,128,61,6,117,9,139,117,1,139,52,255,214,235,8,139,117, -1,128,61,3,117,5,232,8,0,235,3,232,70,1,95,94,195,30,6,86, -87,80,83,81,82,85,156,252,191,132,21,86,87,185,10,0,243,164,95,94, -157,138,36,128,196,2,38,136,101,2,139,92,14,38,139,23,50,246,254,194, -58,84,12,126,3,138,84,12,254,202,193,226,2,139,92,10,3,218,101,139, -31,38,137,93,11,138,100,9,38,136,101,10,138,100,18,38,136,101,9,6, -31,139,247,232,234,0,93,90,89,91,88,95,94,7,31,195,83,81,82,87, -85,86,176,1,185,30,0,232,125,1,138,52,138,84,1,138,108,2,138,76, -3,138,124,8,232,17,5,138,68,4,138,124,2,138,92,3,138,100,5,232, -59,5,139,254,15,182,77,12,139,117,10,139,93,14,38,139,7,138,117,6, -138,85,7,82,80,81,86,101,139,52,138,93,8,56,196,117,3,138,93,18, -6,15,168,7,80,232,210,2,88,7,254,196,94,131,198,4,254,198,226,222, -89,91,90,73,117,2,235,77,139,247,232,240,252,61,0,72,116,42,61,0, -80,116,50,61,27,1,116,29,61,13,28,117,233,139,117,14,38,137,28,139, -117,10,193,227,2,139,88,2,139,117,16,38,137,28,248,235,28,249,235,25, -131,251,0,116,201,139,235,75,232,166,0,235,193,59,217,116,189,139,235,67, -232,154,0,235,181,94,86,80,156,176,1,185,30,0,232,238,0,176,1,232, -207,254,157,88,94,139,92,19,11,219,116,2,255,211,93,95,90,89,91,195, -83,81,82,86,87,85,80,138,52,134,240,232,24,2,134,240,138,84,1,138, -108,2,134,232,232,11,2,134,232,138,76,3,138,124,8,232,42,4,88,80, -138,100,5,60,0,116,3,138,100,10,138,124,2,134,248,232,236,1,134,248, -138,92,3,138,68,4,232,68,4,139,254,139,117,11,138,117,6,134,240,232, -212,1,134,240,138,85,7,88,82,86,138,93,8,60,0,116,3,138,93,9, -6,15,168,7,232,227,1,7,94,90,93,95,94,90,89,91,195,30,80,82, -81,254,198,254,194,138,198,42,228,3,197,138,242,42,237,138,76,13,138,84, -8,30,6,31,232,59,1,31,59,235,114,4,254,200,235,2,254,192,138,84, -18,6,31,232,40,1,89,90,88,31,195,30,86,87,81,83,80,179,160,254, -200,246,227,139,240,191,145,21,138,193,246,227,139,200,38,139,30,130,21,142, -219,156,252,209,233,243,165,157,88,91,89,95,94,31,195,6,30,86,87,81, -83,80,6,31,139,30,130,21,142,195,190,145,21,179,160,254,200,246,227,139, -248,138,193,246,227,139,200,209,233,156,252,243,165,128,62,12,0,1,117,3, -232,192,4,157,88,91,89,95,94,31,7,195,80,81,176,1,177,30,232,146, -255,89,88,10,192,116,14,83,81,139,203,138,252,232,40,3,89,91,232,92, -3,6,14,7,232,7,4,7,195,80,81,176,1,177,30,232,153,255,89,88, -195,180,1,205,22,116,6,180,0,205,22,235,244,195,30,80,184,64,0,142, -216,102,139,30,108,0,88,31,195,30,102,80,102,81,250,102,3,203,184,64, -0,142,216,102,161,108,0,102,59,195,115,6,102,5,178,0,24,0,102,59, -200,251,102,89,102,88,31,195,80,81,82,85,180,2,205,26,139,234,180,2, -205,26,114,4,59,234,116,246,93,90,89,88,195,128,62,12,0,1,117,21, -80,83,140,219,184,15,0,193,232,4,3,195,131,192,1,163,130,21,91,88, -195,199,6,130,21,0,184,205,17,36,48,60,48,117,6,199,6,130,21,0, -176,195,80,83,81,82,87,6,82,232,87,2,137,22,114,20,90,80,82,254, -200,254,206,138,214,138,240,232,54,2,90,88,139,30,130,21,142,195,187,160, -0,254,200,246,227,139,248,138,222,254,203,209,227,3,251,138,218,232,39,2, -38,138,5,232,247,1,254,194,232,13,2,131,199,2,226,240,139,22,114,20, -232,1,2,7,95,90,89,91,88,195,38,128,62,241,18,0,116,10,38,128, -62,12,0,1,116,2,44,5,195,0,0,0,85,51,237,38,138,2,60,0, -116,6,232,65,1,69,235,243,93,195,96,51,237,232,204,1,38,138,2,60, -0,116,8,232,167,1,69,254,194,235,241,97,195,82,232,198,1,254,198,178, -0,232,176,1,90,195,128,252,0,116,10,81,15,182,204,232,12,1,226,251, -89,195,87,102,86,85,83,81,102,82,51,201,65,102,51,210,102,190,10,0, -0,0,102,247,246,102,80,138,194,232,179,0,102,88,83,102,131,248,0,117, -227,139,236,139,217,138,86,1,38,136,21,131,197,2,71,226,244,38,199,5, -0,0,3,227,3,227,139,195,102,90,89,91,93,102,94,95,195,139,216,83, -102,193,232,16,232,5,0,88,232,1,0,195,80,138,196,232,5,0,88,232, -1,0,195,83,232,104,0,83,138,195,232,153,0,91,138,199,232,147,0,91, -195,80,81,82,50,246,178,100,60,0,117,13,128,251,1,117,6,232,63,0, -232,60,0,235,49,50,228,246,242,10,192,116,2,182,1,10,246,116,7,4, -48,232,102,0,235,8,128,251,1,117,3,232,29,0,138,204,138,194,50,228, -178,10,246,242,60,1,138,208,138,193,116,2,235,207,4,48,232,67,0,90, -89,88,195,80,176,32,232,57,0,88,195,232,9,0,138,251,192,232,4,232, -1,0,195,80,36,15,138,216,60,10,125,5,128,195,48,88,195,128,235,10, -128,195,65,88,195,0,0,0,184,0,1,185,32,32,205,16,195,184,0,1, -185,7,6,205,16,195,82,232,161,0,60,13,117,7,178,0,232,137,0,90, -195,60,10,117,12,128,254,29,115,5,254,198,232,121,0,90,195,30,80,46, -161,38,16,142,216,128,62,12,0,0,88,31,117,14,90,80,83,30,42,255, -180,14,205,16,31,91,88,195,83,30,80,81,87,46,161,38,16,142,216,246, -6,13,0,1,116,6,138,30,14,0,235,13,139,202,232,207,1,161,130,21, -142,216,138,93,1,95,89,88,31,232,128,1,91,254,194,128,250,80,117,4, -50,210,254,198,232,29,0,90,195,80,83,81,82,185,1,0,42,255,180,9, -232,97,1,232,25,0,254,194,232,5,0,90,89,91,88,195,80,83,81,30, -42,255,180,2,205,16,31,89,91,88,195,80,83,81,42,255,180,3,205,16, -89,91,88,195,180,15,205,16,136,62,82,40,180,7,232,59,0,198,6,152, -20,0,195,195,80,83,81,82,138,223,176,32,138,250,138,215,232,193,255,232, -163,255,254,194,56,202,118,244,254,198,56,238,118,236,90,89,91,88,195,181, -29,177,79,51,210,138,252,232,210,255,51,210,232,157,255,195,136,38,81,40, -195,80,83,81,82,86,30,85,30,46,255,54,38,16,31,190,94,172,128,62, -12,0,0,116,3,190,106,172,10,192,116,20,190,100,172,128,62,12,0,0, -116,3,190,112,172,60,2,117,3,190,118,172,31,232,96,255,46,138,4,83, -138,220,232,60,255,91,42,237,138,203,254,201,42,202,139,233,46,138,68,4, -83,138,220,232,39,255,226,251,46,138,68,1,232,30,255,91,138,207,42,206, -254,201,46,138,68,5,138,250,254,198,138,215,232,37,255,83,138,220,232,4, -255,91,138,211,232,25,255,83,138,220,232,248,254,91,226,228,254,198,138,215, -46,138,68,2,232,5,255,138,220,232,229,254,139,205,46,138,68,4,232,220, -254,226,251,46,138,68,3,232,211,254,93,31,94,90,89,91,88,195,83,81, -82,86,81,101,138,52,128,254,22,124,17,80,6,46,255,54,38,16,7,138, -198,232,210,252,138,240,7,88,101,138,84,1,101,138,92,4,86,101,139,116, -2,232,230,252,94,131,198,5,89,226,207,94,90,89,91,195,30,80,46,161, -38,16,142,216,88,128,62,12,0,1,116,4,205,16,235,15,81,82,232,162, -254,139,202,232,7,0,232,105,0,90,89,31,195,87,6,80,83,81,232,19, -0,139,14,130,21,142,193,38,136,5,38,136,93,1,89,91,88,7,95,195, -80,81,51,255,176,160,246,229,50,237,208,225,3,193,3,248,89,88,195,86, -30,6,80,83,81,46,161,38,16,142,216,161,130,21,142,192,51,246,181,0, -177,0,38,139,4,138,220,232,24,0,131,198,2,254,193,128,249,80,117,238, -254,197,128,253,30,117,229,89,91,88,7,31,94,195,6,96,60,18,115,3, -233,132,0,60,126,118,2,235,126,190,92,171,180,16,246,228,3,240,137,54, -83,40,184,0,160,142,192,176,80,246,229,193,224,4,15,182,241,3,240,137, -54,85,40,186,196,3,176,2,238,183,255,176,1,186,197,3,139,62,85,40, -139,54,83,40,238,185,16,0,246,195,1,116,31,246,195,16,116,12,138,231, -38,136,37,131,199,80,226,248,235,37,46,138,36,38,136,37,131,199,80,70, -226,244,235,23,246,195,16,117,4,50,228,235,223,46,138,36,246,212,38,136, -37,131,199,80,70,226,242,208,203,208,224,60,16,117,177,97,7,195,84,104, -101,32,102,105,114,109,119,97,114,101,32,105,115,32,105,110,99,111,109,112, -97,116,105,98,108,101,32,119,105,116,104,32,66,73,79,83,46,13,10,0, -0,51,119,97,114,101,32,66,73,79,83,32,105,110,115,116,97,108,108,101, -100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,0,51,119,97,114, -101,32,66,73,79,83,32,110,111,116,32,105,110,115,116,97,108,108,101,100, -0,0,13,10,0,13,10,87,65,82,78,73,78,71,58,32,51,119,97,114, -101,32,71,105,103,97,80,97,116,104,32,67,111,110,116,114,111,108,108,101, -114,32,110,111,116,32,102,111,117,110,100,13,10,0,0,32,32,32,45,32, -0,0,32,100,114,105,118,101,32,0,0,32,32,68,114,105,118,101,32,0, -0,32,32,85,110,105,116,32,0,0,32,32,99,97,112,97,99,105,116,121, -32,0,0,32,98,108,111,99,107,115,46,0,0,78,117,109,98,101,114,32, -111,102,32,117,110,105,116,115,32,102,111,117,110,100,58,32,0,0,32,82, -65,73,68,32,48,32,0,0,32,82,65,73,68,32,49,32,0,0,32,77, -105,114,114,111,114,32,0,0,32,82,65,73,68,32,49,48,0,0,32,82, -65,73,68,32,53,32,0,0,32,82,65,73,68,32,53,48,0,0,0,114, -112,1,124,112,2,134,112,7,144,112,5,154,112,82,164,112,83,164,112,84, -164,112,255,0,0,58,34,0,0,1,0,0,210,112,0,0,0,236,78,0, -0,0,0,0,0,0,0,0,0,0,0,193,170,48,28,0,19,171,63,28, -18,101,171,48,28,63,116,171,48,28,42,133,171,48,29,0,160,171,63,29, -5,242,171,48,29,36,10,172,48,29,60,18,172,48,20,14,205,126,112,13, -28,244,34,0,66,149,36,27,1,198,36,0,0,0,0,6,13,162,143,126, -8,13,61,142,112,9,13,118,142,112,9,18,189,143,126,10,13,151,142,112, -10,30,217,143,126,11,13,206,142,112,12,13,4,143,112,13,13,58,143,112, -13,57,223,143,126,14,13,110,143,112,14,37,231,143,126,16,13,88,130,112, -16,19,116,130,126,2,10,252,143,71,2,49,56,144,79,3,10,77,144,71, -4,10,137,144,71,5,10,198,144,71,5,59,2,145,79,6,10,13,145,79, -8,10,30,145,71,9,10,86,145,71,9,14,150,145,79,10,10,206,145,71, -11,10,13,146,71,12,10,76,146,71,12,14,134,146,79,13,10,178,146,71, -14,10,229,146,71,14,18,34,147,79,15,10,70,147,71,16,10,125,147,71, -17,10,180,147,71,17,18,242,147,79,18,10,24,148,71,19,10,60,148,71, -19,14,122,148,79,20,10,134,148,71,22,13,88,130,71,22,19,116,130,79, -12,23,255,113,112,14,23,88,130,112,14,29,116,130,126,69,114,114,111,114, -32,32,32,32,32,32,105,110,32,111,112,99,111,100,101,32,32,32,46,0, -0,10,18,151,148,71,10,42,196,148,79,11,18,214,148,71,12,18,2,149, -71,13,18,38,149,71,14,18,82,149,71,14,18,100,149,79,16,21,105,149, -71,0,0,244,132,48,28,0,107,133,63,28,8,189,133,48,28,17,195,133, -48,28,68,210,133,48,28,54,242,133,56,28,38,250,133,48,29,0,7,135, -63,29,5,89,134,48,29,33,113,134,48,29,53,121,134,48,29,0,7,135, -63,29,5,89,134,48,29,33,127,134,48,29,53,121,134,48,0,0,237,149, -48,2,5,63,150,23,4,5,132,150,30,19,7,172,150,30,20,7,178,150, -30,22,45,237,150,30,23,45,250,150,30,24,45,8,151,30,19,45,194,150, -30,20,45,209,150,30,23,7,223,150,30,29,0,25,151,63,29,9,107,151, -48,29,24,113,151,48,29,49,128,151,48,29,72,142,151,48,0,0,89,155, -48,2,5,171,155,23,4,5,237,155,30,29,0,18,156,63,29,9,100,156, -48,29,72,106,156,48,0,0,55,169,48,1,1,137,169,30,1,15,162,0, -23,1,32,152,169,30,1,55,166,169,30,1,65,173,169,30,2,1,182,169, -30,2,32,195,169,30,3,1,213,169,30,3,32,243,169,30,4,1,221,169, -30,5,1,3,170,30,29,0,24,170,48,3,8,89,135,112,5,8,155,135, -112,5,16,251,137,126,6,8,215,135,112,8,8,24,136,112,8,11,7,138, -126,9,8,87,136,112,10,8,150,136,112,12,8,188,136,112,12,11,25,138, -126,13,8,253,136,112,14,8,62,137,112,16,8,71,137,112,16,11,43,138, -126,17,8,130,137,112,17,37,61,138,126,18,8,189,137,112,18,8,91,138, -126,20,7,168,141,112,21,8,236,141,112,21,14,43,142,126,21,52,56,142, -126,3,8,105,138,112,5,8,171,138,112,5,22,84,141,126,5,46,103,141, -126,6,8,237,138,112,7,8,41,139,112,9,8,88,139,112,9,11,117,141, -126,10,8,152,139,112,11,8,215,139,112,12,8,19,140,112,14,8,68,140, -112,14,11,135,141,126,15,8,130,140,112,16,8,194,140,112,17,8,0,141, -112,19,8,20,141,112,19,8,151,141,126,19,33,154,141,126,19,43,161,141, -126,20,7,168,141,112,21,8,236,141,112,21,14,43,142,126,21,52,56,142, -126,3,10,83,152,112,5,10,129,152,112,6,10,190,152,112,6,67,151,153, -126,8,10,252,152,112,9,10,56,153,112,10,10,116,153,112,10,34,156,153, -126,17,10,88,130,112,17,16,116,130,126,5,8,114,156,112,7,8,162,156, -112,8,8,227,156,112,9,8,29,157,112,9,16,197,157,126,11,8,42,157, -112,12,8,102,157,112,13,8,162,157,112,13,32,202,157,126,15,8,88,130, -112,15,14,116,130,126,9,16,150,151,112,10,16,200,151,112,12,16,88,130, -112,12,22,116,130,126,2,3,160,130,112,3,3,231,130,112,4,3,44,131, -112,6,3,60,131,126,23,3,109,131,112,20,15,89,132,112,21,15,124,132, -112,20,15,142,132,112,21,15,194,132,112,20,14,150,126,112,20,15,215,127, -112,20,22,44,128,126,21,15,10,128,112,21,37,52,128,126,20,14,59,128, -112,20,25,147,128,126,21,14,113,128,112,21,36,154,128,126,20,22,161,128, -7,117,154,2,0,96,154,0,0,75,154,4,0,159,154,5,0,138,154,7, -0,180,154,82,0,96,154,0,0,75,154,4,0,159,154,5,0,180,154,83, -0,96,154,0,0,75,154,4,0,159,154,5,0,138,154,7,0,201,154,82, -0,222,154,83,0,243,154,84,0,5,117,1,0,253,116,3,0,1,117,3, -0,1,117,4,0,1,117,3,0,1,117,5,1,1,117,3,0,1,117,5, -1,21,117,4,1,1,117,5,1,1,117,3,0,37,117,7,1,1,117,3, -0,205,167,0,0,191,167,1,0,17,155,5,0,35,155,7,0,53,155,9, -0,0,64,102,36,0,66,149,36,51,4,149,36,0,88,129,48,27,1,202, -36,0,0,0,0,27,1,198,36,0,0,0,0,19,22,24,42,0,23,20, -23,23,31,0,0,4,19,53,21,49,21,48,2,42,19,60,22,73,0,23, -20,61,23,31,117,117,2,12,90,21,88,21,48,0,0,22,22,29,30,0, -23,23,23,23,31,125,117,3,7,55,21,51,21,48,0,0,22,60,25,73, -0,23,23,61,23,31,117,117,2,12,57,21,59,21,48,0,0,25,2,27, -16,0,23,26,3,23,31,31,144,149,25,18,27,32,0,23,26,19,23,31, -31,159,149,25,34,27,50,0,23,26,35,23,31,31,190,149,25,52,27,67, -0,23,26,53,23,31,31,174,149,25,69,27,78,0,23,26,70,23,31,31, -207,149,25,27,27,36,0,23,26,28,23,31,31,217,149,25,44,27,53,0, -23,26,45,23,31,31,227,149,0,0,0,236,78,164,35,0,0,0,0,0, -0,0,0,4,253,117,0,0,164,35,61,119,161,117,0,46,0,0,4,10, -118,0,0,164,35,80,119,161,117,0,32,0,0,4,36,118,0,0,164,35, -90,123,161,117,0,19,0,0,4,23,118,0,0,164,35,96,119,161,117,0, -50,0,0,4,49,118,0,0,164,35,74,121,161,117,0,25,0,0,3,169, -117,0,0,30,36,0,0,0,0,0,0,0,0,3,190,117,0,0,30,36, -0,0,0,0,0,0,0,0,3,211,117,0,0,30,36,0,0,0,0,0, -0,0,0,3,232,117,0,0,30,36,0,0,0,0,0,0,0,0,1,62, -118,0,0,30,36,0,0,0,0,0,0,0,0,2,75,118,0,0,30,36, -0,0,0,0,0,0,0,0,1,62,118,0,0,66,36,0,0,0,0,0, -0,0,0,2,75,118,0,0,66,36,0,0,0,0,0,0,0,0,232,36, -0,0,6,1,58,88,118,103,118,118,118,148,118,133,118,163,118,164,39,218, -36,6,0,0,178,118,208,118,193,118,223,118,238,118,253,118,166,45,15,47, -2,0,0,12,119,27,119,20,14,37,126,112,136,60,163,61,5,0,0,96, -120,9,120,229,119,66,120,81,120,0,0,134,166,48,1,5,216,166,23,2, -5,24,167,23,23,7,85,167,30,22,32,100,167,30,23,32,126,167,30,25, -32,143,167,30,29,0,25,151,63,29,9,107,151,48,29,24,113,151,48,29, -49,128,151,48,29,72,142,151,48,13,14,228,167,112,15,14,88,130,112,15, -20,116,130,126,13,14,14,168,112,14,14,65,168,112,16,14,88,130,112,16, -20,116,130,126,22,21,25,30,0,23,23,22,23,31,111,120,2,8,92,21, -94,21,48,0,0,3,244,119,0,0,245,62,0,0,0,0,0,0,0,0, -24,59,27,72,0,23,25,60,23,31,117,117,2,12,90,21,88,21,48,0, -0,3,24,120,0,0,245,62,0,0,0,0,0,0,0,0,21,59,24,72, -0,23,22,60,23,31,117,117,2,12,57,21,59,21,48,0,0,21,59,22, -72,0,23,22,60,23,31,80,172,1,12,57,21,59,21,48,0,0,1,48, -121,0,0,245,62,0,0,0,0,0,0,0,0,2,61,121,0,0,245,62, -0,0,0,0,0,0,0,0,3,208,119,0,0,17,63,0,0,0,0,0, -0,0,0,171,167,0,0,181,167,1,0,11,26,24,130,112,14,26,88,130, -112,14,32,116,130,126,20,14,50,129,112,20,14,117,129,126,21,14,100,129, -112,21,14,127,129,126,21,24,132,129,126,20,24,138,129,112,20,24,181,129, -126,20,37,191,129,126,21,24,172,129,112,21,26,196,129,126,5,8,82,168, -112,7,8,131,168,112,7,12,28,169,126,8,8,193,168,112,10,8,201,168, -112,10,11,41,169,126,11,8,4,169,112,15,8,88,130,112,15,14,116,130, -126,11,32,43,132,112,11,45,81,132,126,12,28,57,132,112,12,46,84,132, -126,14,25,125,130,112,14,35,155,130,126,11,24,1,130,112,14,26,88,130, -112,14,32,116,130,126,11,26,232,129,112,14,26,88,130,112,14,32,116,130, -126,11,26,202,129,112,14,26,88,130,112,14,32,116,130,126,26,27,28,36, -0,23,27,28,23,31,31,217,149,26,44,28,53,0,23,27,45,23,31,31, -227,149,104,64,203,65,8,0,0,232,121,247,121,6,122,21,122,36,122,51, -122,202,121,217,121,0,0,47,161,48,5,2,129,161,71,7,8,212,161,30, -9,2,232,161,71,11,8,37,162,30,14,8,56,162,30,17,8,86,162,30, -20,8,109,162,30,21,8,133,162,30,23,8,152,162,30,29,0,171,162,63, -29,9,253,162,48,29,72,3,163,48,20,14,199,128,112,21,14,250,128,112, -10,16,73,164,71,11,16,122,164,71,11,48,161,164,79,12,16,167,164,71, -13,16,215,164,71,15,18,5,165,71,1,62,118,0,0,47,67,0,0,0, -0,0,0,0,0,2,75,118,0,0,47,67,0,0,0,0,0,0,0,0, -3,66,122,0,0,47,67,0,0,0,0,0,0,0,0,3,87,122,0,0, -47,67,0,0,0,0,0,0,0,0,3,108,122,0,0,47,67,0,0,0, -0,0,0,0,0,3,129,122,0,0,47,67,0,0,0,0,0,0,0,0, -3,150,122,0,0,47,67,0,0,0,0,0,0,0,0,3,171,122,0,0, -47,67,0,0,0,0,0,0,0,0,6,36,9,45,0,23,7,37,23,31, -192,122,2,8,113,21,99,21,48,0,0,10,36,13,49,0,23,11,37,23, -31,117,117,2,12,101,21,103,21,48,246,64,13,36,27,44,0,23,14,37, -23,31,212,122,15,5,105,21,107,21,48,0,0,16,36,23,48,0,23,17, -37,23,31,16,123,15,10,109,21,111,21,48,0,0,19,36,22,49,0,23, -20,37,23,31,192,122,2,12,115,21,117,21,48,0,0,22,36,25,49,0, -23,23,38,23,31,80,172,1,11,119,21,121,21,48,0,0,171,167,0,0, -181,167,1,0,29,161,0,0,38,161,1,0,29,161,0,0,173,160,1,0, -180,160,2,0,187,160,3,0,194,160,4,0,201,160,5,0,208,160,6,0, -215,160,7,0,222,160,8,0,229,160,9,0,236,160,10,0,243,160,11,0, -250,160,12,0,1,161,13,0,8,161,14,0,15,161,15,0,101,160,1,0, -113,160,2,0,125,160,3,0,137,160,4,0,149,160,5,0,161,160,6,0, -5,8,11,163,112,7,8,58,163,112,7,66,122,163,126,8,8,128,163,112, -8,55,191,163,126,9,8,196,163,112,11,8,239,163,126,12,8,32,164,126, -15,8,88,130,112,15,14,116,130,126,76,67,78,69,2,0,0,161,123,176, -123,0,0,208,157,48,2,2,34,158,23,3,2,108,158,23,29,0,178,158, -63,29,9,4,159,48,29,72,10,159,48,20,14,199,128,112,21,14,250,128, -112,9,12,246,151,112,10,12,46,152,112,11,12,88,130,112,11,18,116,130, -126,1,62,118,0,0,214,70,0,0,0,0,0,0,0,0,2,75,118,0, -0,214,70,0,0,0,0,0,0,0,0,5,8,18,159,112,7,8,67,159, -112,8,8,128,159,112,9,8,193,159,112,9,23,243,159,126,9,35,253,159, -126,11,8,9,160,112,12,8,72,160,112,15,8,88,130,112,15,14,116,130, -126,24,0,0,0,28,54,242,133,56,29,59,240,134,48,28,54,242,133,48, -29,59,227,134,63,29,71,144,134,48,29,59,240,134,48,29,59,223,134,63, -29,61,224,133,48,20,14,73,127,112,21,14,116,127,112,20,14,162,127,112, -21,14,116,127,112,9,17,223,131,112,10,28,11,132,112,9,53,35,132,126, -9,60,35,132,126,10,46,38,132,126,12,25,125,130,112,12,35,155,130,126, -20,14,94,126,112,51,119,97,114,101,32,65,84,65,32,82,65,73,68,32, -67,111,110,116,114,111,108,108,101,114,32,58,32,69,115,99,97,108,97,100, -101,32,32,0,0,66,73,79,83,58,32,0,0,32,32,70,105,114,109,119, -97,114,101,58,32,0,0,85,110,105,116,32,0,0,73,110,99,111,109,112, -108,101,116,101,0,0,72,111,116,32,83,112,97,114,101,32,32,32,32,32, -32,32,32,0,0,83,105,110,103,108,101,32,68,105,115,107,32,0,0,32, -32,32,32,74,66,79,68,32,32,32,32,0,0,32,32,32,32,32,32,32, -32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32,0, -0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0, -32,0,0,32,0,0,32,0,0,85,110,99,111,110,118,101,114,116,101,100, -32,68,67,66,0,0,85,110,115,117,112,112,111,114,116,101,100,32,68,67, -66,0,0,68,67,66,32,100,97,116,97,32,99,104,101,99,107,0,0,68, -67,66,32,114,101,97,100,32,102,97,105,108,117,114,101,0,0,68,67,66, -32,114,101,97,100,32,116,105,109,101,111,117,116,0,0,78,111,116,32,115, -117,112,112,111,114,116,101,100,0,0,45,32,0,0,80,111,114,116,32,0, -0,32,32,80,111,114,116,32,0,0,85,110,105,116,32,0,0,32,45,32, -0,0,32,32,0,0,32,32,32,32,32,32,32,32,32,32,0,0,32,83, -117,98,117,110,105,116,32,32,0,0,70,111,108,108,111,119,105,110,103,32, -100,114,105,118,101,115,32,119,105,108,108,32,110,111,116,32,98,101,32,101, -120,112,111,114,116,101,100,32,116,111,32,79,83,58,0,0,83,108,111,116, -32,35,58,32,0,0,80,114,101,115,115,32,112,97,103,101,32,100,111,119, -110,32,107,101,121,32,116,111,32,110,101,120,116,32,112,97,103,101,44,32, -112,97,103,101,32,117,112,32,116,111,32,102,105,114,115,116,32,112,97,103, -101,46,46,0,0,78,101,119,32,117,110,105,116,115,32,99,97,110,110,111, -116,32,98,101,32,114,101,109,111,118,101,100,46,32,80,114,101,115,115,32, -97,110,121,32,107,101,121,32,116,111,32,99,111,110,116,105,110,117,101,46, -0,0,85,110,105,116,32,105,110,105,116,105,97,108,105,122,97,116,105,111, -110,32,102,97,105,108,101,100,46,32,80,114,101,115,115,32,97,110,121,32, -107,101,121,32,116,111,32,99,111,110,116,105,110,117,101,46,0,0,85,110, -100,111,32,97,108,108,32,99,104,97,110,103,101,115,32,97,110,100,32,114, -101,115,116,111,114,101,32,105,110,105,116,105,97,108,32,115,101,116,116,105, -110,103,115,63,32,91,89,47,78,93,32,0,0,68,111,32,121,111,117,32, -119,97,110,116,32,116,111,32,108,101,97,118,101,32,99,111,110,102,105,103, -117,114,97,116,105,111,110,32,117,116,105,108,105,116,121,63,32,91,89,47, -78,93,32,0,0,84,104,101,114,101,32,105,115,32,110,111,32,114,101,115, -112,111,110,115,101,32,102,114,111,109,32,116,104,101,32,102,105,114,109,119, -97,114,101,46,0,0,80,108,101,97,115,101,32,104,105,116,32,97,32,107, -101,121,32,116,111,32,99,111,110,116,105,110,117,101,46,0,0,84,104,101, -114,101,32,105,115,32,110,111,32,114,101,100,117,110,100,97,110,116,32,97, -114,114,97,121,32,111,110,32,116,104,101,32,98,111,97,114,100,46,0,0, -68,111,32,121,111,117,32,115,116,105,108,108,32,119,97,110,116,32,116,111, -32,109,97,107,101,32,97,32,104,111,116,32,115,112,97,114,101,63,32,91, -89,47,78,93,0,0,84,104,101,32,100,114,105,118,101,32,121,111,117,32, -115,101,108,101,99,116,32,105,115,32,116,111,32,115,109,97,108,108,32,116, -111,32,98,101,32,97,32,104,111,116,32,115,112,97,114,101,46,0,0,83, -101,108,101,99,116,32,100,114,105,118,101,115,32,102,105,114,115,116,32,98, -121,32,109,111,118,105,110,103,32,116,104,101,32,99,117,114,115,111,114,32, -111,118,101,114,32,116,104,101,0,0,100,114,105,118,101,32,97,110,100,32, -104,105,116,116,105,110,103,32,116,104,101,32,69,110,116,101,114,32,107,101, -121,46,0,0,100,114,105,118,101,115,0,0,69,110,116,101,114,0,0,83, -101,108,101,99,116,32,116,104,101,32,97,114,114,97,121,32,102,105,114,115, -116,32,98,121,32,109,111,118,105,110,103,32,116,104,101,32,99,117,114,115, -111,114,32,111,118,101,114,32,116,104,101,0,0,97,114,114,97,121,32,97, -110,100,32,104,105,116,116,105,110,103,32,116,104,101,32,69,110,116,101,114, -32,107,101,121,46,0,0,97,114,114,97,121,0,0,69,110,116,101,114,0, -0,32,32,32,32,32,32,32,85,112,100,97,116,105,110,103,32,67,111,110, -102,105,103,117,114,97,116,105,111,110,46,46,46,32,32,32,32,0,0,83, -101,108,101,99,116,32,49,32,100,101,103,114,97,100,101,100,32,97,114,114, -97,121,46,32,73,102,32,116,104,101,32,100,101,103,114,97,100,101,100,32, -97,114,114,97,121,32,105,115,0,0,109,105,115,115,105,110,103,32,100,114, -105,118,101,115,44,32,116,104,101,110,32,97,108,115,111,32,115,101,108,101, -99,116,32,102,114,111,109,32,97,118,97,105,108,97,98,108,101,32,100,114, -105,118,101,46,0,0,77,97,105,110,116,97,105,110,32,99,97,110,32,111, -110,108,121,32,98,101,32,100,111,110,101,32,111,110,101,32,97,116,32,97, -32,116,105,109,101,46,32,32,83,101,108,101,99,116,0,0,111,110,101,32, -97,114,114,97,121,32,111,110,108,121,46,0,0,77,97,105,110,116,97,105, -110,0,0,111,110,101,0,0,111,110,108,121,0,0,77,97,105,110,116,97, -105,110,32,99,97,110,32,110,111,116,32,98,101,32,112,101,114,102,111,114, -109,101,100,32,111,110,0,0,97,32,74,66,79,68,46,0,0,77,97,105, -110,116,97,105,110,0,0,110,111,116,0,0,74,66,79,68,0,0,84,104, -101,114,101,32,105,115,32,97,32,109,105,115,99,111,109,112,97,114,101,32, -101,114,114,111,114,46,0,0,84,104,101,32,117,110,105,116,32,104,97,115, -32,73,47,79,32,101,114,114,111,114,46,0,0,67,111,114,114,101,99,116, -101,100,32,32,32,32,32,101,114,114,111,114,115,46,0,0,84,104,101,114, -101,32,119,101,114,101,32,110,111,32,109,105,115,99,111,109,112,97,114,101, -115,46,0,0,32,79,82,80,72,65,78,32,32,32,32,32,32,32,32,32, -32,32,32,32,74,66,79,68,32,32,32,78,79,32,68,82,73,86,69,32, -80,114,101,115,115,32,97,110,121,32,107,101,121,32,116,111,32,99,111,110, -116,105,110,117,101,46,0,0,97,110,121,32,107,101,121,0,0,80,114,101, -115,115,32,116,104,101,32,101,115,99,32,107,101,121,32,116,111,32,99,97, -110,99,101,108,46,0,0,101,115,99,0,0,67,114,101,97,116,105,110,103, -32,111,114,32,100,101,115,116,114,111,121,105,110,103,32,97,114,114,97,121, -115,32,119,105,108,108,32,100,101,115,116,114,111,121,32,97,108,108,32,101, -120,105,115,116,105,110,103,32,100,97,116,97,32,111,110,32,116,104,101,105, -114,0,0,109,101,109,98,101,114,32,100,105,115,107,32,100,114,105,118,101, -115,46,32,85,115,105,110,103,32,97,32,100,114,105,118,101,32,102,111,114, -32,97,32,114,101,98,117,105,108,100,32,119,105,108,108,32,111,118,101,114, -119,114,105,116,101,32,100,97,116,97,0,0,111,110,32,116,104,97,116,32, -100,114,105,118,101,46,0,0,68,97,116,97,32,111,110,32,116,104,101,32, -102,111,108,108,111,119,105,110,103,32,100,114,105,118,101,115,32,119,105,108, -108,32,98,101,32,100,101,115,116,114,111,121,101,100,58,0,0,83,97,118, -101,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,97,110,100,32, -101,120,105,116,63,32,91,89,47,78,93,0,0,80,114,111,102,105,108,105, -110,103,32,32,65,114,114,97,121,32,85,110,105,116,0,0,80,101,114,99, -101,110,116,97,103,101,32,100,111,110,101,32,58,32,32,32,32,37,0,0, -32,0,0,32,32,32,0,0,73,110,105,116,32,82,65,73,68,53,32,65, -114,114,97,121,32,85,110,105,116,0,0,67,108,101,97,114,32,112,114,101, -118,105,111,117,115,32,100,105,115,107,32,99,111,110,116,101,110,116,32,111, -110,32,85,110,105,116,32,32,32,83,108,111,116,0,0,80,101,114,99,101, -110,116,97,103,101,32,100,111,110,101,32,58,32,32,32,32,37,0,0,32, -0,0,32,32,32,0,0,86,101,114,105,102,121,32,85,110,105,116,32,0, -0,80,101,114,99,101,110,116,97,103,101,32,100,111,110,101,32,58,32,32, -32,32,37,0,0,32,0,0,32,32,32,0,0,68,111,32,121,111,117,32, -119,97,110,116,32,116,111,32,115,97,118,101,32,99,111,110,102,105,103,117, -114,97,116,105,111,110,0,0,97,110,100,32,101,120,105,116,63,32,91,89, -47,78,93,32,0,0,89,111,117,32,109,97,100,101,32,99,104,97,110,103, -101,32,116,111,32,97,114,114,97,121,32,97,116,116,114,105,98,117,116,101, -44,32,117,110,105,116,32,115,101,113,117,101,110,99,101,44,0,0,97,110, -100,47,111,114,32,99,111,110,116,114,111,108,108,101,114,32,112,111,108,105, -99,121,46,32,32,83,97,118,101,32,97,110,100,32,101,120,105,116,63,32, -91,89,47,78,93,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,51,119,97,114,101, -32,66,73,79,83,32,109,97,110,97,103,101,114,32,40,115,108,111,116,32, -32,32,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,0,0,65,118,97,105,108,97,98,108,101,32,68, -114,105,118,101,115,58,0,0,69,120,112,111,114,116,97,98,108,101,32,85, -110,105,116,115,58,0,0,32,65,108,116,45,70,49,32,72,101,108,112,32, -32,18,29,32,80,114,101,118,105,111,117,115,47,78,101,120,116,32,32,65, -108,116,45,97,32,83,101,108,32,97,108,108,32,100,114,118,32,32,32,114, -32,82,101,109,111,118,101,32,32,69,110,116,101,114,32,83,101,108,101,99, -116,47,68,101,115,101,108,0,0,72,101,108,112,0,0,80,114,101,118,105, -111,117,115,47,78,101,120,116,0,0,83,101,108,101,99,116,47,68,101,115, -101,108,0,0,84,111,103,103,108,101,32,72,111,116,32,83,112,97,114,101, -0,0,82,101,109,111,118,101,0,0,83,101,108,32,97,108,108,32,100,114, -118,0,0,32,32,70,54,32,82,101,115,116,111,114,101,32,73,110,105,116, -105,97,108,32,86,97,108,117,101,115,32,32,69,115,99,32,66,111,97,114, -100,32,83,101,108,101,99,116,105,111,110,32,32,70,56,32,68,111,110,101, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,0,0,82,101,115,116,111,114,101,32,73,110,105,116,105,97,108, -32,86,97,108,117,101,115,0,0,67,97,110,99,101,108,0,0,68,111,110, -101,0,0,66,111,97,114,100,32,83,101,108,101,99,116,105,111,110,0,0, -82,101,111,114,100,101,114,0,0,85,110,115,117,112,112,111,114,116,101,100, -32,68,114,105,118,101,115,58,0,0,73,110,99,111,109,112,108,101,116,101, -32,68,114,105,118,101,115,32,97,110,100,32,79,116,104,101,114,115,58,0, -0,85,110,117,115,97,98,108,101,32,65,114,114,97,121,115,58,0,0,115, -32,0,0,80,71,85,80,32,80,71,68,79,87,78,0,0,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,32, -32,70,54,32,82,101,115,116,111,114,101,32,73,110,105,116,105,97,108,32, -86,97,108,117,101,115,32,32,69,115,99,32,67,97,110,99,101,108,32,32, -32,32,32,32,32,32,32,32,32,70,56,32,68,111,110,101,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0, -0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,77,97,105,110,32,72,101,108,112,32,83,99,114,101,101, -110,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,49, -32,111,102,32,50,0,0,85,115,101,32,116,104,101,32,97,114,114,111,119, -32,107,101,121,115,32,116,111,32,110,97,118,105,103,97,116,101,32,116,104, -114,111,117,103,104,32,116,104,101,32,100,114,105,118,101,32,108,105,115,116, -44,32,116,104,101,0,0,97,114,114,97,121,32,108,105,115,116,44,32,97, -110,100,32,116,104,101,32,97,99,116,105,111,110,32,98,117,116,116,111,110, -115,32,97,116,32,116,104,101,32,98,111,116,116,111,109,32,111,102,32,116, -104,101,32,115,99,114,101,101,110,46,0,0,84,111,32,99,114,101,97,116, -101,32,97,110,32,97,114,114,97,121,44,32,102,105,114,115,116,32,115,101, -108,101,99,116,32,116,104,101,32,100,114,105,118,101,115,32,116,111,32,105, -110,99,108,117,100,101,32,105,110,32,116,104,101,0,0,97,114,114,97,121, -32,98,121,32,109,111,118,105,110,103,32,116,104,101,32,99,117,114,115,111, -114,32,111,118,101,114,32,116,104,101,32,100,114,105,118,101,32,97,110,100, -32,112,114,101,115,115,105,110,103,32,69,110,116,101,114,46,0,0,84,104, -101,110,32,115,101,108,101,99,116,32,116,104,101,32,99,114,101,97,116,101, -32,97,114,114,97,121,32,98,117,116,116,111,110,46,0,0,84,111,32,100, -101,108,101,116,101,32,97,110,32,97,114,114,97,121,44,32,102,105,114,115, -116,32,115,101,108,101,99,116,32,116,104,101,32,97,114,114,97,121,32,98, -121,32,109,111,118,105,110,103,32,116,104,101,32,99,117,114,115,111,114,0, -0,111,118,101,114,32,116,104,101,32,97,114,114,97,121,32,97,110,100,32, -112,114,101,115,115,105,110,103,32,69,110,116,101,114,46,32,84,104,101,110, -32,115,101,108,101,99,116,32,116,104,101,32,68,101,108,101,116,101,32,65, -114,114,97,121,0,0,98,117,116,116,111,110,46,0,0,84,111,32,109,111, -100,105,102,121,32,97,110,32,97,114,114,97,121,44,32,98,121,32,97,100, -100,105,110,103,32,111,114,32,100,101,108,101,116,105,110,103,32,100,114,105, -118,101,115,32,116,111,32,105,116,32,111,114,0,0,99,104,97,110,103,105, -110,103,32,105,116,115,32,97,114,114,97,121,32,115,116,114,97,116,101,103, -121,44,32,100,101,108,101,116,101,32,116,104,101,32,97,114,114,97,121,32, -102,105,114,115,116,44,32,116,104,101,110,0,0,114,101,45,99,114,101,97, -116,101,32,105,116,32,119,105,116,104,32,116,104,101,32,112,114,111,112,101, -114,32,100,114,105,118,101,115,32,97,110,100,47,111,114,32,97,114,114,97, -121,32,112,97,114,97,109,101,116,101,114,115,46,0,0,97,114,114,111,119, -32,107,101,121,115,0,0,99,114,101,97,116,101,32,97,110,32,97,114,114, -97,121,44,0,0,100,101,108,101,116,101,32,97,110,32,97,114,114,97,121, -44,0,0,109,111,100,105,102,121,32,97,110,32,97,114,114,97,121,44,0, -0,100,101,108,101,116,101,32,116,104,101,32,97,114,114,97,121,32,102,105, -114,115,116,44,32,116,104,101,110,0,0,114,101,45,99,114,101,97,116,101, -32,105,116,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,77,97,105,110,32,72,101,108,112,32,83, -99,114,101,101,110,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,50,32,111,102,32,50,0,0,84,111,32,99,104,97,110,103,101, -32,116,104,101,32,119,114,105,116,101,32,99,97,99,104,101,32,115,116,97, -116,101,32,111,114,32,116,111,32,118,101,114,105,102,121,32,97,114,114,97, -121,44,32,102,105,114,115,116,32,115,101,108,101,99,116,0,0,116,104,101, -32,97,114,114,97,121,32,98,121,32,109,111,118,105,110,103,32,116,104,101, -32,99,117,114,115,111,114,32,111,118,101,114,32,116,104,101,32,97,114,114, -97,121,32,97,110,100,32,112,114,101,115,115,105,110,103,0,0,69,110,116, -101,114,46,32,84,104,101,110,32,115,101,108,101,99,116,32,116,104,101,32, -77,97,105,110,116,97,105,110,32,65,114,114,97,121,32,98,117,116,116,111, -110,46,0,0,84,111,32,114,101,98,117,105,108,100,32,97,110,32,97,114, -114,97,121,44,32,102,105,114,115,116,32,115,101,108,101,99,116,32,116,104, -101,32,100,101,103,114,97,100,101,100,32,97,114,114,97,121,32,98,121,32, -109,111,118,105,110,103,0,0,116,104,101,32,99,117,114,115,111,114,32,111, -118,101,114,32,116,104,101,32,97,114,114,97,121,32,97,110,100,32,112,114, -101,115,115,105,110,103,32,69,110,116,101,114,46,32,73,102,32,116,104,101, -32,100,101,103,114,97,100,101,100,0,0,97,114,114,97,121,32,105,115,32, -109,105,115,115,105,110,103,32,97,32,100,114,105,118,101,40,115,41,44,32, -116,104,101,110,32,97,108,115,111,32,115,101,108,101,99,116,32,97,110,32, -97,118,97,105,108,97,98,108,101,0,0,100,114,105,118,101,40,115,41,46, -32,84,104,101,110,32,115,101,108,101,99,116,32,116,104,101,32,82,101,98, -117,105,108,100,32,65,114,114,97,121,32,98,117,116,116,111,110,46,0,0, -84,111,32,99,114,101,97,116,101,32,97,32,115,112,97,114,101,44,32,115, -101,108,101,99,116,32,97,32,100,114,105,118,101,32,102,114,111,109,32,116, -104,101,32,97,118,97,105,108,97,98,108,101,32,100,114,105,118,101,115,46, -0,0,78,79,84,69,58,32,83,112,97,114,101,32,100,114,105,118,101,115, -32,119,105,108,108,32,98,101,32,117,115,101,100,32,111,110,108,121,32,111, -110,32,97,114,114,97,121,115,32,119,104,101,114,101,32,116,104,101,32,115, -112,97,114,101,0,0,100,114,105,118,101,39,115,32,99,97,112,97,99,105, -116,121,32,105,115,32,103,114,101,97,116,101,114,32,111,114,32,101,113,117, -97,108,32,116,111,32,116,104,101,32,97,114,114,97,121,39,115,32,115,109, -97,108,108,101,115,116,0,0,109,101,109,98,101,114,39,115,32,99,97,112, -97,99,105,116,121,46,0,0,82,32,107,101,121,32,116,111,32,114,101,109, -111,118,101,32,117,110,105,116,32,97,110,100,32,80,71,32,85,112,32,97, -110,100,32,80,71,32,68,110,32,107,101,121,32,116,111,32,114,101,111,114, -100,101,114,32,117,110,105,116,115,46,0,0,119,114,105,116,101,32,99,97, -99,104,101,32,115,116,97,116,101,0,0,118,101,114,105,102,121,32,97,114, -114,97,121,0,0,114,101,98,117,105,108,100,32,97,110,32,97,114,114,97, -121,0,0,99,114,101,97,116,101,32,97,32,115,112,97,114,101,0,0,82, -0,0,80,71,32,85,112,0,0,80,71,32,68,110,0,0,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,0,0,80,114,101,115,115,32,80,103,85,112,32,38,32,80,103,68, -110,32,116,111,32,115,119,105,116,99,104,32,104,101,108,112,32,115,99,114, -101,101,110,115,32,111,114,32,101,115,99,32,116,111,32,101,120,105,116,32, -104,101,108,112,46,0,0,80,103,85,112,32,38,32,80,103,68,110,0,0, -101,115,99,0,0,87,104,101,110,32,121,111,117,32,99,111,110,102,105,103, -117,114,101,32,121,111,117,114,32,100,105,115,107,32,97,114,114,97,121,40, -115,41,44,32,101,120,105,115,116,105,110,103,32,100,97,116,97,32,111,110, -0,0,115,111,109,101,32,100,114,105,118,101,115,32,109,97,121,32,98,101, -32,111,118,101,114,119,114,105,116,116,101,110,46,0,0,87,104,101,110,32, -121,111,117,32,104,105,116,32,116,104,101,32,68,111,110,101,32,107,101,121, -44,32,121,111,117,32,119,105,108,108,32,98,101,32,110,111,116,105,102,105, -101,100,32,119,104,105,99,104,0,0,100,114,105,118,101,115,32,119,105,108, -108,32,98,101,32,111,118,101,114,119,114,105,116,116,101,110,32,97,110,100, -32,111,102,102,101,114,101,100,32,116,104,101,32,111,112,116,105,111,110,32, -111,102,0,0,97,98,97,110,100,111,110,105,110,103,32,116,104,101,32,110, -101,119,32,115,101,116,116,105,110,103,115,32,98,101,102,111,114,101,32,97, -110,121,32,100,97,116,97,32,105,115,32,108,111,115,116,46,0,0,73,102, -32,121,111,117,32,97,114,101,32,99,111,110,99,101,114,110,101,100,32,97, -98,111,117,116,32,108,111,115,105,110,103,32,100,97,116,97,44,32,104,105, -116,32,69,115,99,97,112,101,0,0,116,111,32,115,116,111,112,32,99,111, -110,102,105,103,117,114,105,110,103,32,97,110,100,32,98,97,99,107,32,117, -112,32,121,111,117,114,32,100,114,105,118,101,115,32,102,105,114,115,116,46, -0,0,68,105,115,107,115,32,104,97,118,101,32,101,120,105,115,116,105,110, -103,32,100,97,116,97,63,0,0,100,114,105,118,101,115,32,109,97,121,32, -98,101,32,111,118,101,114,119,114,105,116,116,101,110,46,0,0,68,111,110, -101,0,0,69,115,99,97,112,101,0,0,98,97,99,107,32,117,112,32,121, -111,117,114,32,100,114,105,118,101,115,0,0,89,111,117,114,32,51,119,97, -114,101,32,99,111,110,116,114,111,108,108,101,114,32,99,117,114,114,101,110, -116,108,121,32,104,97,115,32,97,110,32,100,101,103,114,97,100,101,100,32, -100,105,115,107,32,97,114,114,97,121,0,0,100,101,103,114,97,100,101,100, -32,100,105,115,107,32,97,114,114,97,121,0,0,105,110,115,116,97,108,108, -101,100,46,32,70,97,117,108,116,32,116,111,108,101,114,97,110,116,32,100, -105,115,107,32,97,114,114,97,121,115,32,98,101,99,111,109,101,32,100,101, -103,114,97,100,101,100,32,119,104,101,110,0,0,116,104,101,121,32,97,114, -101,32,109,105,115,115,105,110,103,32,97,32,109,101,109,98,101,114,32,100, -114,105,118,101,46,32,87,104,105,108,101,32,116,104,101,32,97,114,114,97, -121,39,115,32,100,97,116,97,32,109,97,121,0,0,98,101,32,114,101,97, -100,32,97,110,100,32,110,101,119,32,100,97,116,97,32,109,97,121,32,98, -101,32,119,114,105,116,116,101,110,32,116,111,32,105,116,44,32,105,116,32, -105,115,32,110,111,32,108,111,110,103,101,114,0,0,110,111,32,108,111,110, -103,101,114,0,0,102,97,117,108,116,32,116,111,108,101,114,97,110,116,46, -0,0,87,105,116,104,32,97,32,100,101,103,114,97,100,101,100,32,97,114, -114,97,121,32,121,111,117,32,104,97,118,101,32,102,111,117,114,32,99,111, -117,114,115,101,115,32,111,102,32,97,99,116,105,111,110,58,0,0,40,49, -41,32,73,102,32,116,104,101,32,97,114,114,97,121,32,104,97,115,32,97, -32,100,114,105,118,101,32,116,104,97,116,32,105,115,32,108,105,115,116,101, -100,32,97,115,32,78,111,116,32,73,110,32,85,115,101,44,32,116,114,121, -0,0,73,102,32,116,104,101,32,97,114,114,97,121,32,104,97,115,32,97, -32,100,114,105,118,101,32,116,104,97,116,32,105,115,32,108,105,115,116,101, -100,32,97,115,32,78,111,116,32,73,110,32,85,115,101,44,0,0,114,101, -98,117,105,108,100,105,110,103,32,116,104,101,32,97,114,114,97,121,32,102, -105,114,115,116,46,32,73,102,32,105,116,32,115,116,105,108,108,32,100,111, -101,115,32,110,111,116,32,119,111,114,107,44,32,114,101,109,111,118,101,0, -0,116,104,101,32,78,111,116,32,105,110,32,85,115,101,32,100,114,105,118, -101,32,97,110,100,32,114,101,98,117,105,108,100,32,116,104,101,32,97,114, -114,97,121,32,117,115,105,110,103,32,97,32,110,101,119,32,100,114,105,118, -101,46,0,0,40,50,41,32,73,102,32,111,110,101,32,111,102,32,116,104, -101,32,109,101,109,98,101,114,32,100,114,105,118,101,115,32,105,115,32,110, -111,116,32,108,105,115,116,101,100,44,32,105,116,32,109,97,121,32,98,101, -0,0,73,102,32,111,110,101,32,111,102,32,116,104,101,32,109,101,109,98, -101,114,32,100,114,105,118,101,115,32,105,115,32,110,111,116,32,108,105,115, -116,101,100,44,0,0,117,110,112,108,117,103,103,101,100,32,111,114,32,105, -116,32,109,97,121,32,98,101,32,98,114,111,107,101,110,32,98,101,121,111, -110,100,32,114,101,99,111,103,110,105,116,105,111,110,46,0,0,32,32,32, -32,40,97,41,32,73,102,32,116,104,101,32,100,114,105,118,101,32,119,97, -115,32,115,105,109,112,108,121,32,117,110,112,108,117,103,103,101,100,44,32, -114,101,99,111,110,110,101,99,116,32,105,116,32,97,110,100,0,0,73,102, -32,116,104,101,32,100,114,105,118,101,32,119,97,115,32,115,105,109,112,108, -121,32,117,110,112,108,117,103,103,101,100,44,0,0,32,32,32,32,114,101, -98,111,111,116,46,32,73,102,32,100,97,116,97,32,119,97,115,32,119,114, -105,116,116,101,110,32,116,111,32,116,104,101,32,97,114,114,97,121,32,119, -104,105,108,101,32,105,116,0,0,32,32,32,32,119,97,115,32,100,101,103, -114,97,100,101,100,44,32,121,111,117,32,119,105,108,108,32,98,101,32,114, -101,113,117,105,114,101,100,32,116,111,32,114,101,98,117,105,108,100,32,105, -116,46,0,0,32,32,32,32,40,98,41,32,82,101,98,117,105,108,100,32, -116,104,101,32,97,114,114,97,121,32,117,115,105,110,103,32,97,32,110,101, -119,32,100,114,105,118,101,46,32,65,110,121,32,100,97,116,97,32,111,110, -32,116,104,101,0,0,82,101,98,117,105,108,100,32,116,104,101,32,97,114, -114,97,121,32,117,115,105,110,103,32,97,32,110,101,119,32,100,114,105,118, -101,46,0,0,32,32,32,32,110,101,119,32,100,114,105,118,101,32,119,105, -108,108,32,98,101,32,111,118,101,114,119,114,105,116,116,101,110,46,0,0, -40,52,41,32,68,111,32,110,111,116,104,105,110,103,32,97,110,100,32,114, -117,110,32,119,105,116,104,32,116,104,101,32,97,114,114,97,121,32,97,115, -32,102,117,110,99,116,105,111,110,97,108,44,32,98,117,116,32,110,111,116, -0,0,68,111,32,110,111,116,104,105,110,103,0,0,102,97,117,108,116,32, -116,111,108,101,114,97,110,116,46,0,0,89,111,117,114,32,104,97,118,101, -32,115,101,108,101,99,116,101,100,32,115,111,109,101,32,97,118,97,105,108, -97,98,108,101,32,100,114,105,118,101,115,32,116,111,0,0,97,118,97,105, -108,97,98,108,101,32,100,114,105,118,101,115,0,0,99,114,101,97,116,101, -32,101,120,112,111,114,116,97,98,108,101,32,117,110,105,116,46,32,32,84, -104,105,115,32,119,105,108,108,32,100,101,115,116,114,111,121,0,0,97,108, -108,32,101,120,105,115,116,105,110,103,32,100,97,116,97,32,111,110,32,116, -104,111,115,101,32,100,114,105,118,101,115,46,0,0,79,110,99,101,32,110, -101,119,32,117,110,105,116,115,32,97,114,101,32,99,114,101,97,116,101,100, -44,32,116,104,111,115,101,32,100,97,116,97,32,97,114,101,0,0,78,79, -84,32,114,101,99,111,118,101,114,97,98,108,101,46,0,0,78,79,84,0, -0,68,111,32,121,111,117,32,119,97,110,116,32,116,111,32,99,114,101,97, -116,101,32,116,104,101,32,117,110,105,116,63,32,91,89,47,78,93,0,0, -32,67,114,101,97,116,101,32,85,110,105,116,32,0,0,32,68,101,108,101, -116,101,32,85,110,105,116,32,0,0,32,82,101,98,117,105,108,100,32,85, -110,105,116,32,0,0,32,77,97,105,110,116,97,105,110,32,85,110,105,116, -32,0,0,32,80,111,108,105,99,121,32,0,0,32,32,32,79,75,32,32, -32,0,0,32,67,97,110,99,101,108,32,0,0,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,67,114,101,97,116,101,32,68,105,115,107,32,65,114,114, -97,121,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,78,111,116,101,58, -32,67,114,101,97,116,105,110,103,32,97,110,32,97,114,114,97,121,32,119, -105,108,108,32,111,118,101,114,119,114,105,116,101,32,101,120,105,115,116,105, -110,103,32,100,97,116,97,32,111,110,32,105,116,115,32,100,114,105,118,101, -115,46,0,0,67,114,101,97,116,101,32,97,32,100,105,115,107,32,97,114, -114,97,121,32,102,114,111,109,32,116,104,101,115,101,32,100,114,105,118,101, -115,58,0,0,82,65,73,68,0,0,99,111,110,102,105,103,117,114,97,116, -105,111,110,58,0,0,65,114,114,97,121,39,115,32,87,114,105,116,101,0, -0,67,97,99,104,101,32,83,116,97,116,101,58,0,0,83,116,114,105,112, -101,32,83,105,122,101,58,0,0,67,111,110,116,105,110,117,101,32,111,110, -0,0,115,111,117,114,99,101,32,101,114,114,111,114,0,0,100,117,114,105, -110,103,32,114,101,98,117,105,108,100,58,0,0,32,32,65,108,116,45,70, -49,32,72,101,108,112,32,32,32,32,32,32,32,32,18,29,32,80,114,101, -118,105,111,117,115,47,78,101,120,116,32,32,32,32,32,32,69,110,116,101, -114,32,67,104,97,110,103,101,32,86,97,108,117,101,32,32,32,32,32,32, -32,69,115,99,32,67,97,110,99,101,108,32,32,0,0,72,101,108,112,0, -0,80,114,101,118,105,111,117,115,47,78,101,120,116,0,0,67,104,97,110, -103,101,32,86,97,108,117,101,0,0,67,97,110,99,101,108,0,0,82,65, -73,68,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,111,110,108, -121,32,115,117,112,112,111,114,116,32,105,100,101,110,116,105,99,97,108,32, -100,114,105,118,101,115,0,0,80,108,101,97,115,101,32,99,104,101,99,107, -32,97,110,100,32,114,101,112,108,97,99,101,32,117,110,105,100,101,110,116, -105,99,97,108,32,100,114,105,118,101,115,46,0,0,82,101,98,117,105,108, -100,32,100,101,115,116,105,110,97,116,105,111,110,32,99,97,112,97,99,105, -116,121,32,110,101,101,100,115,32,116,111,32,109,97,116,99,104,32,116,104, -101,32,115,111,117,114,99,101,0,0,73,110,115,116,97,108,108,32,97,110, -100,32,115,101,108,101,99,116,32,97,32,100,114,105,118,101,32,97,116,32, -108,101,97,115,116,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,67,114,101,97,116,101,32,68,105,115,107,32,65,114,114,97,121,32, -72,101,108,112,32,83,99,114,101,101,110,0,0,84,104,101,32,108,105,115, -116,101,100,32,100,114,105,118,101,115,32,119,105,108,108,32,98,101,32,99, -111,109,98,105,110,101,100,32,105,110,116,111,32,97,32,100,105,115,107,32, -97,114,114,97,121,46,32,67,104,101,99,107,0,0,116,104,97,116,32,121, -111,117,32,104,97,118,101,32,115,101,108,101,99,116,101,100,32,116,104,101, -32,99,111,114,114,101,99,116,32,100,114,105,118,101,115,32,98,101,102,111, -114,101,32,104,105,116,116,105,110,103,32,79,75,46,0,0,78,111,116,101, -32,116,104,97,116,32,116,104,101,32,100,97,116,97,32,111,110,32,116,104, -101,32,100,114,105,118,101,115,32,105,110,32,116,104,101,32,100,105,115,107, -32,97,114,114,97,121,32,119,105,108,108,32,98,101,0,0,111,118,101,114, -119,114,105,116,116,101,110,32,111,110,108,121,32,97,102,116,101,114,32,121, -111,117,32,99,111,109,112,108,101,116,101,32,97,108,108,32,121,111,117,114, -32,99,111,110,102,105,103,117,114,97,116,105,111,110,0,0,115,101,116,116, -105,110,103,115,32,97,110,100,32,115,101,108,101,99,116,32,116,104,101,32, -68,111,110,101,32,107,101,121,46,0,0,79,75,46,0,0,68,111,110,101, -0,0,82,69,66,85,73,76,68,73,78,71,32,40,97,102,116,101,114,32, -70,56,41,0,0,82,69,66,85,73,76,68,73,78,71,0,0,77,105,115, -115,105,110,103,32,100,114,105,118,101,115,0,0,86,69,82,73,70,89,73, -78,71,0,0,68,69,71,82,65,68,69,68,0,0,78,111,116,32,105,110, -32,85,115,101,0,0,82,101,98,117,105,108,100,32,105,110,116,111,0,0, -73,78,73,84,32,65,82,82,65,89,32,40,97,102,116,101,114,32,70,56, -41,0,0,73,78,73,84,32,65,82,82,65,89,0,0,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,73, -78,67,79,77,80,76,69,84,69,0,0,32,32,83,105,110,103,108,101,32, -68,114,105,118,101,32,32,32,32,32,0,0,32,32,83,116,114,105,112,101, -32,40,82,65,73,68,32,48,41,32,32,0,0,32,32,77,105,114,114,111, -114,32,40,82,65,73,68,32,49,41,32,32,0,0,32,32,32,32,32,82, -65,73,68,32,49,48,32,32,32,32,32,32,32,0,0,32,32,32,32,32, -82,65,73,68,32,53,32,32,32,32,32,32,32,32,0,0,32,32,32,32, -32,82,65,73,68,32,53,48,32,32,32,32,32,32,32,0,0,32,32,32, -32,32,82,65,73,68,32,53,48,32,32,50,88,54,32,32,0,0,32,32, -32,32,32,82,65,73,68,32,53,48,32,32,51,88,52,32,32,0,0,32, -32,32,32,32,82,65,73,68,32,53,48,32,32,52,88,51,32,32,0,0, -32,32,56,32,75,66,32,0,0,32,49,54,32,75,66,32,0,0,32,51, -50,32,75,66,32,0,0,32,54,52,32,75,66,32,0,0,32,49,50,56, -75,66,32,0,0,32,50,53,54,75,66,32,0,0,32,53,49,50,75,66, -32,0,0,32,32,49,32,77,66,32,0,0,32,32,78,47,65,32,32,0, -0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,68,101,108,101,116,101,32, -68,105,115,107,32,65,114,114,97,121,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,0,0,78,111,116,101,58,32,79,110,99,101,32,97,110,32,97,114,114, -97,121,32,105,115,32,100,101,108,101,116,101,100,44,32,105,116,115,32,100, -97,116,97,32,119,105,108,108,32,98,101,99,111,109,101,32,117,110,114,101, -97,100,97,98,108,101,46,0,0,68,101,108,101,116,101,32,116,104,101,32, -102,111,108,108,111,119,105,110,103,32,100,105,115,107,32,97,114,114,97,121, -40,115,41,58,0,0,32,32,65,108,116,45,70,49,32,72,101,108,112,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,69,115,99,32,67,97, -110,99,101,108,32,32,0,0,72,101,108,112,0,0,67,97,110,99,101,108, -0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,68, -101,108,101,116,101,32,68,105,115,107,32,65,114,114,97,121,32,72,101,108, -112,32,83,99,114,101,101,110,0,0,84,104,101,32,108,105,115,116,101,100, -32,100,105,115,107,32,97,114,114,97,121,40,115,41,32,119,105,108,108,32, -98,101,32,98,114,111,107,101,110,32,105,110,116,111,32,105,110,100,105,118, -105,100,117,97,108,32,100,114,105,118,101,115,46,0,0,67,104,101,99,107, -32,116,104,97,116,32,121,111,117,32,104,97,118,101,32,115,101,108,101,99, -116,101,100,32,116,104,101,32,99,111,114,114,101,99,116,32,97,114,114,97, -121,40,115,41,32,98,101,102,111,114,101,0,0,104,105,116,116,105,110,103, -32,79,75,46,0,0,78,111,116,101,32,116,104,97,116,32,116,104,101,32, -100,97,116,97,32,111,110,32,116,104,101,32,100,114,105,118,101,115,32,105, -110,32,116,104,101,32,100,105,115,107,32,97,114,114,97,121,32,119,105,108, -108,32,98,101,0,0,111,118,101,114,119,114,105,116,116,101,110,32,111,110, -108,121,32,97,102,116,101,114,32,121,111,117,32,99,111,109,112,108,101,116, -101,32,97,108,108,32,121,111,117,114,32,99,111,110,102,105,103,117,114,97, -116,105,111,110,0,0,115,101,116,116,105,110,103,115,32,97,110,100,32,115, -101,108,101,99,116,32,116,104,101,32,68,111,110,101,32,107,101,121,46,0, -0,79,75,46,0,0,68,111,110,101,0,0,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,82,101,98,117,105,108,100,32,68,105,115,107,32,65,114,114,97, -121,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,0,0,78,111,116,101,58,32, -82,101,98,117,105,108,100,105,110,103,32,119,105,108,108,32,111,99,99,117, -114,32,97,102,116,101,114,32,97,108,108,32,99,111,110,102,105,103,117,114, -97,116,105,111,110,32,99,104,97,110,103,101,115,32,97,114,101,32,99,111, -109,112,108,101,116,101,0,0,97,110,100,32,121,111,117,32,104,97,118,101, -32,101,120,105,116,101,100,32,116,104,101,32,51,119,97,114,101,32,68,105, -115,107,32,65,114,114,97,121,32,67,111,110,102,105,103,117,114,97,116,105, -111,110,32,85,116,105,108,105,116,121,32,40,70,56,41,46,0,0,32,32, -65,108,116,45,70,49,32,72,101,108,112,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,69,115,99,32,67,97,110,99,101,108,32,32,0,0, -72,101,108,112,0,0,67,97,110,99,101,108,0,0,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,82,101,98,117,105,108,100,32,68, -105,115,107,32,65,114,114,97,121,32,72,101,108,112,32,83,99,114,101,101, -110,0,0,84,104,101,32,115,101,108,101,99,116,101,100,32,97,114,114,97, -121,32,119,105,108,108,32,98,101,32,114,101,98,117,105,108,116,46,32,65, -102,116,101,114,32,116,104,101,32,99,111,109,112,108,101,116,105,111,110,32, -111,102,0,0,114,101,98,117,105,108,100,44,32,116,104,101,32,97,114,114, -97,121,32,119,105,108,108,32,98,101,99,111,109,101,32,102,97,117,108,116, -32,116,111,108,101,114,97,110,116,32,97,103,97,105,110,46,32,84,104,101, -32,115,116,97,116,117,115,0,0,119,105,108,108,32,109,111,118,101,32,102, -114,111,109,32,100,101,103,114,97,100,101,100,32,116,111,32,114,101,98,117, -105,108,100,105,110,103,32,116,111,32,110,111,114,109,97,108,46,0,0,100, -101,103,114,97,100,101,100,0,0,114,101,98,117,105,108,100,105,110,103,0, -0,78,111,116,101,32,116,104,97,116,32,116,104,101,32,114,101,98,117,105, -108,100,32,119,105,108,108,32,110,111,116,32,97,99,116,117,97,108,108,121, -32,98,101,103,105,110,32,117,110,116,105,108,32,97,102,116,101,114,32,116, -104,101,0,0,111,112,101,114,97,116,105,110,103,32,115,121,115,116,101,109, -32,105,115,32,108,111,97,100,101,100,46,0,0,32,49,32,115,101,99,111, -110,100,32,0,0,32,50,32,115,101,99,111,110,100,115,0,0,32,51,32, -115,101,99,111,110,100,115,0,0,32,52,32,115,101,99,111,110,100,115,0, -0,32,53,32,115,101,99,111,110,100,115,0,0,32,54,32,115,101,99,111, -110,100,115,0,0,32,32,49,32,32,0,0,32,32,50,32,32,0,0,32, -32,51,32,32,0,0,32,32,52,32,32,0,0,32,32,53,32,32,0,0, -32,32,54,32,32,0,0,32,32,55,32,32,0,0,32,32,56,32,32,0, -0,32,32,57,32,32,0,0,32,49,48,32,32,0,0,32,49,49,32,32, -0,0,32,49,50,32,32,0,0,32,49,51,32,32,0,0,32,49,52,32, -32,0,0,32,49,53,32,32,0,0,32,49,54,32,32,0,0,32,65,84, -65,45,54,32,0,0,83,65,84,65,79,79,66,0,0,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,80,111,108,105,99,121,32,67,111,110,116,114, -111,108,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,78,111,116, -101,58,32,67,104,97,110,103,105,110,103,32,74,66,79,68,32,112,111,108, -105,99,121,32,119,105,108,108,32,99,97,117,115,101,32,97,108,108,32,114, -101,99,101,110,116,32,109,111,100,105,102,105,101,100,32,99,111,110,102,105, -103,117,114,97,116,105,111,110,32,108,111,115,116,46,0,0,32,32,0,0, -69,120,112,111,114,116,32,74,66,79,68,32,100,105,115,107,115,58,0,0, -78,111,116,101,58,32,83,116,97,103,103,101,114,101,100,32,115,112,105,110, -117,112,32,119,111,114,107,115,32,111,110,108,121,32,105,102,32,116,104,101, -32,100,114,105,118,101,115,32,115,117,112,112,111,114,116,32,105,116,46,0, -0,83,116,97,103,103,101,114,101,100,32,115,112,105,110,117,112,58,0,0, -78,117,109,98,101,114,32,111,102,32,100,114,105,118,101,115,32,112,101,114, -32,115,112,105,110,117,112,58,0,0,68,101,108,97,121,32,98,101,116,119, -101,101,110,32,115,112,105,110,117,112,58,0,0,68,105,115,97,98,108,101, -32,119,114,105,116,101,32,99,97,99,104,101,32,111,110,0,0,32,32,100, -101,103,114,97,100,101,100,32,97,114,114,97,121,58,0,0,83,116,97,103, -103,101,114,101,100,32,109,101,116,104,111,100,58,0,0,32,32,65,108,116, -45,70,49,32,72,101,108,112,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,69,115,99,32,67,97,110,99,101,108,32,32,0,0,72,101,108, -112,0,0,67,97,110,99,101,108,0,0,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,80,111,108,105,99,121,32,67,111,110, -116,114,111,108,32,72,101,108,112,32,83,99,114,101,101,110,0,0,84,104, -105,115,32,115,99,114,101,101,110,32,97,108,108,111,119,115,32,109,111,100, -105,102,105,99,97,116,105,111,110,32,111,102,32,115,111,109,101,32,112,111, -108,105,99,121,32,115,101,116,116,105,110,103,32,111,102,32,116,104,105,115, -0,0,116,104,105,115,0,0,98,111,97,114,100,46,32,32,84,104,101,32, -99,104,97,110,103,101,115,32,119,105,108,108,32,98,101,32,115,97,118,101, -100,32,119,104,101,110,32,104,105,116,116,105,110,103,32,79,75,46,32,32, -84,104,101,32,115,97,118,101,100,0,0,79,75,46,0,0,118,97,108,117, -101,115,32,119,105,108,108,32,112,101,114,115,105,115,116,32,116,104,114,111, -117,103,104,32,112,111,119,101,114,32,99,121,99,108,101,115,46,0,0,78, -111,116,101,32,116,104,97,116,32,99,104,97,110,103,105,110,103,32,116,104, -101,32,69,120,112,111,114,116,32,74,66,79,68,32,115,101,116,116,105,110, -103,32,119,105,108,108,0,0,114,101,115,117,108,116,32,105,110,32,108,111, -115,105,110,103,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,99, -104,97,110,103,101,115,46,0,0,67,104,97,110,103,105,110,103,32,112,111, -108,105,99,121,32,111,110,32,101,120,112,111,114,116,105,110,103,32,111,102, -32,74,66,79,68,32,100,105,115,107,115,32,119,105,108,108,0,0,99,97, -117,115,101,32,97,108,108,32,99,111,110,102,105,103,117,114,97,116,105,111, -110,32,99,104,97,110,103,101,115,32,108,111,115,116,46,0,0,108,111,115, -116,0,0,73,102,32,116,104,97,116,32,105,115,32,110,111,116,32,105,110, -116,101,110,100,101,100,44,32,112,108,101,97,115,101,32,112,114,101,115,115, -32,78,46,32,32,84,104,101,110,0,0,116,104,101,32,109,111,100,105,102, -105,101,100,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,105, -108,108,32,110,111,116,32,98,101,32,108,111,115,116,46,0,0,68,111,32, -121,111,117,32,119,97,110,116,32,116,111,32,99,111,109,109,105,116,32,116, -104,101,32,112,111,108,105,99,121,32,99,104,97,110,103,101,63,32,91,89, -47,78,93,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,80,111,108,105,99,121,32,67,111,110,116,114,111,108,32,72, -101,108,112,32,83,99,114,101,101,110,0,0,84,104,101,32,115,101,108,101, -99,116,101,100,32,97,114,114,97,121,32,119,105,108,108,32,98,101,32,114, -101,98,117,105,108,116,46,32,65,102,116,101,114,32,116,104,101,32,99,111, -109,112,108,101,116,105,111,110,32,111,102,0,0,114,101,98,117,105,108,100, -44,32,116,104,101,32,97,114,114,97,121,32,119,105,108,108,32,98,101,99, -111,109,101,32,102,97,117,108,116,32,116,111,108,101,114,97,110,116,32,97, -103,97,105,110,46,32,84,104,101,32,115,116,97,116,117,115,0,0,119,105, -108,108,32,109,111,118,101,32,102,114,111,109,32,100,101,103,114,97,100,101, -100,32,116,111,32,114,101,98,117,105,108,100,105,110,103,32,116,111,32,110, -111,114,109,97,108,46,0,0,100,101,103,114,97,100,101,100,0,0,114,101, -98,117,105,108,100,105,110,103,0,0,78,111,116,101,32,116,104,97,116,32, -116,104,101,32,114,101,98,117,105,108,100,32,119,105,108,108,32,110,111,116, -32,97,99,116,117,97,108,108,121,32,98,101,103,105,110,32,117,110,116,105, -108,32,97,102,116,101,114,32,116,104,101,0,0,111,112,101,114,97,116,105, -110,103,32,115,121,115,116,101,109,32,105,115,32,108,111,97,100,101,100,46, -0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,77,97,105,110,116,97,105,110, -32,68,105,115,107,32,65,114,114,97,121,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,0,0,84,104,101,32,97,114,114,97,121,32,108,105,115,116,101,100, -32,98,101,108,111,119,32,99,97,110,32,104,97,118,101,32,105,116,115,32, -119,114,105,116,101,32,99,97,99,104,101,32,115,116,97,116,101,32,99,104, -97,110,103,101,100,46,0,0,86,101,114,105,102,121,32,99,104,101,99,107, -115,32,116,104,101,32,100,97,116,97,32,105,110,116,101,103,114,105,116,121, -32,111,102,32,97,32,102,97,117,108,116,32,116,111,108,101,114,97,110,116, -32,97,114,114,97,121,46,0,0,86,101,114,105,102,121,32,65,114,114,97, -121,58,0,0,67,111,110,116,105,110,117,101,32,111,110,32,115,111,117,114, -99,101,32,101,114,114,111,114,0,0,100,117,114,105,110,103,32,114,101,98, -117,105,108,100,58,0,0,65,114,114,97,121,39,115,32,87,114,105,116,101, -32,67,97,99,104,101,32,83,116,97,116,101,58,0,0,32,32,32,110,111, -32,32,32,0,0,32,32,121,101,115,32,32,32,0,0,32,32,32,101,110, -97,98,108,101,100,32,32,0,0,32,32,100,105,115,97,98,108,101,100,32, -32,0,0,110,111,0,0,121,101,115,0,0,78,101,119,108,121,32,99,114, -101,97,116,101,100,32,97,114,114,97,121,32,99,97,110,32,110,111,116,32, -98,101,32,118,101,114,105,102,105,101,100,46,0,0,84,104,105,115,32,97, -114,114,97,121,32,119,105,108,108,32,110,111,116,32,98,101,32,118,101,114, -105,102,105,101,100,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32, -110,111,116,0,0,105,110,32,110,111,114,109,97,108,32,109,111,100,101,46, -0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,77,97, -105,110,116,97,105,110,32,68,105,115,107,32,65,114,114,97,121,32,72,101, -108,112,32,83,99,114,101,101,110,0,0,84,104,101,32,119,114,105,116,101, -32,99,97,99,104,101,32,99,97,110,32,98,101,32,101,110,97,98,108,101, -100,47,100,105,115,97,98,108,101,100,32,111,110,32,97,110,32,97,114,114, -97,121,32,98,121,32,97,114,114,97,121,0,0,98,97,115,105,115,46,0, -0,73,102,32,86,101,114,105,102,121,32,65,114,114,97,121,32,105,115,32, -39,121,101,115,39,44,32,116,104,101,110,32,116,104,101,32,97,114,114,97, -121,32,119,105,108,108,32,98,101,32,118,101,114,105,102,105,101,100,0,0, -97,102,116,101,114,32,39,79,75,39,32,105,115,32,112,114,101,115,115,101, -100,46,0,0,119,114,105,116,101,32,99,97,99,104,101,0,0,86,101,114, -105,102,121,32,65,114,114,97,121,0,0,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,65,100,118,97,110,99,101,32,68,101,116,97,105,108,115,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,0,0,66,73,79,83,32,86,101, -114,115,105,111,110,58,0,0,66,117,115,46,68,101,118,46,70,117,110,58, -0,0,83,108,111,116,35,0,0,66,97,115,101,73,79,58,0,0,70,87, -32,86,101,114,115,105,111,110,58,0,0,77,111,110,105,116,111,114,32,86, -101,114,115,105,111,110,58,0,0,77,111,100,101,108,58,0,0,79,110,98, -111,97,114,100,32,77,101,109,111,114,121,32,115,105,122,101,58,0,0,83, -101,114,105,97,108,32,110,117,109,98,101,114,58,0,0,83,121,115,116,101, -109,32,66,66,83,32,83,117,112,112,111,114,116,58,0,0,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,80,114,101,115,115,32,97,110,121,32,107,101,121,32,116,111,32, -99,111,110,116,105,110,117,101,46,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,236,236, -236,32,80,114,101,115,115,32,60,65,108,116,45,51,62,32,116,111,32,97, -99,99,101,115,115,32,51,119,97,114,101,32,66,73,79,83,32,77,97,110, -97,103,101,114,32,236,236,236,0,0,79,112,101,114,97,116,105,111,110,32, -109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97, -105,108,46,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,51,119,97,114,101, -32,66,111,97,114,100,115,32,115,101,108,101,99,116,105,111,110,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,18,29,32,80,114,101,118,105,111,117,115,47,78,101,120,116,32,32, -32,32,32,69,110,116,101,114,32,71,111,32,105,110,116,111,32,104,105,103, -104,108,105,103,104,116,101,100,32,98,111,97,114,100,32,32,32,32,32,32, -32,32,32,32,32,32,32,0,0,80,114,101,118,105,111,117,115,47,78,101, -120,116,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0, -0,71,111,32,105,110,116,111,32,104,105,103,104,108,105,103,104,116,101,100, -32,98,111,97,114,100,0,0,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -69,115,99,32,67,97,110,99,101,108,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,70,56,32,68,111,110,101,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,0,0,67,97,110,99,101,108, -0,0,68,111,110,101,0,0,66,111,97,114,100,32,97,116,32,115,108,111, -116,58,0,0,9,28,145,131,112,12,28,168,131,112,9,50,192,131,126,12, -46,195,131,126,9,28,200,131,112,12,28,168,131,112,9,50,192,131,126,12, -46,195,131,126,80,155,0,0,20,14,1,127,112,21,14,42,127,112,218,191, -192,217,196,179,201,187,200,188,205,186,20,21,22,23,24,25,26,27,28,19, -30,31,32,32,32,32,32,32,0,48,120,252,48,48,48,0,0,48,48,48, -252,120,48,0,102,102,102,102,102,230,230,6,6,254,254,0,0,0,0,0, -0,0,0,0,0,0,0,31,31,24,24,24,24,24,24,24,0,0,0,0, -0,0,0,248,248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31, -31,0,0,0,0,0,0,0,24,24,24,24,24,24,24,248,248,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0, -0,127,127,96,96,103,103,102,102,102,102,102,0,0,0,0,0,254,254,6, -6,230,230,102,102,102,102,102,102,102,102,102,102,103,103,96,96,127,127,0, -0,0,0,0,0,0,0,0,0,36,102,255,255,102,36,0,0,0,0,0, -0,0,0,0,0,255,255,0,0,255,255,0,0,0,0,0,102,102,102,102, -102,102,102,102,102,102,102,102,102,102,102,102,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,24,60,60,60,24,24,24,0,24,24, -0,0,0,0,0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0,24,24,124,198, -194,192,124,6,6,134,198,124,24,24,0,0,0,0,0,0,194,198,12,24, -48,96,198,134,0,0,0,0,0,0,56,108,108,56,118,220,204,204,204,118, -0,0,0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0, -0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,0,0,48,24, -12,12,12,12,12,12,24,48,0,0,0,0,0,0,0,0,0,102,60,255, -60,102,0,0,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0, -0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,2,6,12,24, -48,96,192,128,0,0,0,0,0,0,56,108,198,198,214,214,198,198,108,56, -0,0,0,0,0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0, -0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,0,0,124,198, -6,6,60,6,6,6,198,124,0,0,0,0,0,0,12,28,60,108,204,254, -12,12,12,30,0,0,0,0,0,0,254,192,192,192,252,6,6,6,198,124, -0,0,0,0,0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0, -0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0,0,0,124,198, -198,198,124,198,198,198,198,124,0,0,0,0,0,0,124,198,198,198,126,6, -6,6,12,120,0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,0, -0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0, -0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,0,0,0,0, -0,126,0,0,126,0,0,0,0,0,0,0,0,0,0,96,48,24,12,6, -12,24,48,96,0,0,0,0,0,0,124,198,198,12,24,24,24,0,24,24, -0,0,0,0,0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0, -0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0,0,0,252,102, -102,102,124,102,102,102,102,252,0,0,0,0,0,0,60,102,194,192,192,192, -192,194,102,60,0,0,0,0,0,0,248,108,102,102,102,102,102,102,108,248, -0,0,0,0,0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0, -0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,0,0,60,102, -194,192,192,222,198,198,102,58,0,0,0,0,0,0,198,198,198,198,254,198, -198,198,198,198,0,0,0,0,0,0,60,24,24,24,24,24,24,24,24,60, -0,0,0,0,0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0, -0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0,0,0,240,96, -96,96,96,96,96,98,102,254,0,0,0,0,0,0,198,238,254,254,214,198, -198,198,198,198,0,0,0,0,0,0,198,230,246,254,222,206,198,198,198,198, -0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0, -0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,0,0,124,198, -198,198,198,198,198,214,222,124,12,14,0,0,0,0,252,102,102,102,124,108, -102,102,102,230,0,0,0,0,0,0,124,198,198,96,56,12,6,198,198,124, -0,0,0,0,0,0,126,126,90,24,24,24,24,24,24,60,0,0,0,0, -0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0,0,0,198,198, -198,198,198,198,198,108,56,16,0,0,0,0,0,0,198,198,198,198,214,214, -214,254,238,108,0,0,0,0,0,0,198,198,108,124,56,56,124,108,198,198, -0,0,0,0,0,0,102,102,102,102,60,24,24,24,24,60,0,0,0,0, -0,0,254,198,134,12,24,48,96,194,198,254,0,0,0,0,0,0,60,48, -48,48,48,48,48,48,48,60,0,0,0,0,0,0,0,128,192,224,112,56, -28,14,6,2,0,0,0,0,0,0,60,12,12,12,12,12,12,12,12,60, -0,0,0,0,16,56,108,198,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,48,48,24,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,12,124, -204,204,204,118,0,0,0,0,0,0,224,96,96,120,108,102,102,102,102,124, -0,0,0,0,0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0, -0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,0,0,0,0, -0,124,198,254,192,192,198,124,0,0,0,0,0,0,56,108,100,96,240,96, -96,96,96,240,0,0,0,0,0,0,0,0,0,118,204,204,204,204,204,124, -12,204,120,0,0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0, -0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0,0,0,6,6, -0,14,6,6,6,6,6,6,102,102,60,0,0,0,224,96,96,102,108,120, -120,108,102,230,0,0,0,0,0,0,56,24,24,24,24,24,24,24,24,60, -0,0,0,0,0,0,0,0,0,236,254,214,214,214,214,198,0,0,0,0, -0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,0,0,0,0, -0,124,198,198,198,198,198,124,0,0,0,0,0,0,0,0,0,220,102,102, -102,102,102,124,96,96,240,0,0,0,0,0,0,118,204,204,204,204,204,124, -12,12,30,0,0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0, -0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0,0,0,16,48, -48,252,48,48,48,48,54,28,0,0,0,0,0,0,0,0,0,204,204,204, -204,204,204,118,0,0,0,0,0,0,0,0,0,102,102,102,102,102,60,24, -0,0,0,0,0,0,0,0,0,198,198,214,214,214,254,108,0,0,0,0, -0,0,0,0,0,198,108,56,56,56,108,198,0,0,0,0,0,0,0,0, -0,198,198,198,198,198,198,126,6,12,248,0,0,0,0,0,0,254,204,24, -48,96,198,254,0,0,0,0,0,0,14,24,24,24,112,24,24,24,24,14, -0,0,0,0,0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0, -0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0,0,0,118,220, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,42,66,69,57,88,32,50,46,48,50,46,48,49,46,48,51,55, -128,112,96,80,136,119,102,85,3,0,24,0,64,192,0,0,184,31,233,31, -0,0,0,0,0 -}; - -int twa_fw_img_size = sizeof(twa_fw_img); - -#endif /* TWA_FLASH_FIRMWARE */ diff --git a/sys/dev/raid/twa/twa_globals.c b/sys/dev/raid/twa/twa_globals.c deleted file mode 100644 index 63dd68502a..0000000000 --- a/sys/dev/raid/twa/twa_globals.c +++ /dev/null @@ -1,248 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_globals.c,v 1.2 2007/05/13 18:33:57 swildner Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - - -#include "twa_includes.h" - -/* AEN messages. */ -struct twa_message twa_aen_table[] = { - {0x0000, "AEN queue empty"}, - {0x0001, "Controller reset occurred"}, - {0x0002, "Degraded unit detected"}, - {0x0003, "Controller error occurred"}, - {0x0004, "Background rebuild failed"}, - {0x0005, "Background rebuild done"}, - {0x0006, "Incomplete unit detected"}, - {0x0007, "Background initialize done"}, - {0x0008, "Unclean shutdown detected"}, - {0x0009, "Drive timeout detected"}, - {0x000A, "Drive error detected"}, - {0x000B, "Rebuild started"}, - {0x000C, "Background initialize started"}, - {0x000D, "Entire logical unit was deleted"}, - {0x000E, "Background initialize failed"}, - {0x000F, "SMART attribute exceeded threshold"}, - {0x0010, "Power supply reported AC under range"}, - {0x0011, "Power supply reported DC out of range"}, - {0x0012, "Power supply reported a malfunction"}, - {0x0013, "Power supply predicted malfunction"}, - {0x0014, "Battery charge is below threshold"}, - {0x0015, "Fan speed is below threshold"}, - {0x0016, "Temperature sensor is above threshold"}, - {0x0017, "Power supply was removed"}, - {0x0018, "Power supply was inserted"}, - {0x0019, "Drive was removed from a bay"}, - {0x001A, "Drive was inserted into a bay"}, - {0x001B, "Drive bay cover door was opened"}, - {0x001C, "Drive bay cover door was closed"}, - {0x001D, "Product case was opened"}, - {0x0020, "Prepare for shutdown (power-off)"}, - {0x0021, "Downgrade UDMA mode to lower speed"}, - {0x0022, "Upgrade UDMA mode to higher speed"}, - {0x0023, "Sector repair completed"}, - {0x0024, "Sbuf memory test failed"}, - {0x0025, "Error flushing cached write data to array"}, - {0x0026, "Drive reported data ECC error"}, - {0x0027, "DCB has checksum error"}, - {0x0028, "DCB version is unsupported"}, - {0x0029, "Background verify started"}, - {0x002A, "Background verify failed"}, - {0x002B, "Background verify done"}, - {0x002C, "Bad sector overwritten during rebuild"}, - {0x002E, "Replace failed because replacement drive too small"}, - {0x002F, "Verify failed because array was never initialized"}, - {0x0030, "Unsupported ATA drive"}, - {0x0031, "Synchronize host/controller time"}, - {0x0032, "Spare capacity is inadequate for some units"}, - {0x0033, "Background migration started"}, - {0x0034, "Background migration failed"}, - {0x0035, "Background migration done"}, - {0x0036, "Verify detected and fixed data/parity mismatch"}, - {0x0037, "SO-DIMM incompatible"}, - {0x0038, "SO-DIMM not detected"}, - {0x0039, "Corrected Sbuf ECC error"}, - {0x003A, "Drive power on reset detected"}, - {0x003B, "Background rebuild paused"}, - {0x003C, "Background initialize paused"}, - {0x003D, "Background verify paused"}, - {0x003E, "Background migration paused"}, - {0x003F, "Corrupt flash file system detected"}, - {0x0040, "Flash file system repaired"}, - {0x0041, "Unit number assignments were lost"}, - {0x0042, "Error during read of primary DCB"}, - {0x0043, "Latent error found in backup DCB"}, - {0x00FC, "Recovered/finished array membership update"}, - {0x00FD, "Handler lockup"}, - {0x00FE, "Retrying PCI transfer"}, - {0x00FF, "AEN queue is full"}, - {0xFFFFFFFF, NULL} -}; - -/* AEN severity table. */ -char *twa_aen_severity_table[] = { - "None", - "ERROR", - "WARNING", - "INFO", - "DEBUG", - NULL -}; - -/* Error messages. */ -struct twa_message twa_error_table[] = { - {0x0100, "SGL entry contains zero data"}, - {0x0101, "Invalid command opcode"}, - {0x0102, "SGL entry has unaligned address"}, - {0x0103, "SGL size does not match command"}, - {0x0104, "SGL entry has illegal length"}, - {0x0105, "Command packet is not aligned"}, - {0x0106, "Invalid request ID"}, - {0x0107, "Duplicate request ID"}, - {0x0108, "ID not locked"}, - {0x0109, "LBA out of range"}, - {0x010A, "Logical unit not supported"}, - {0x010B, "Parameter table does not exist"}, - {0x010C, "Parameter index does not exist"}, - {0x010D, "Invalid field in CDB"}, - {0x010E, "Specified port has invalid drive"}, - {0x010F, "Parameter item size mismatch"}, - {0x0110, "Failed memory allocation"}, - {0x0111, "Memory request too large"}, - {0x0112, "Out of memory segments"}, - {0x0113, "Invalid address to deallocate"}, - {0x0114, "Out of memory"}, - {0x0115, "Out of heap"}, - {0x0120, "Double degrade"}, - {0x0121, "Drive not degraded"}, - {0x0122, "Reconstruct error"}, - {0x0123, "Replace not accepted"}, - {0x0124, "Replace drive capacity too small"}, - {0x0125, "Sector count not allowed"}, - {0x0126, "No spares left"}, - {0x0127, "Reconstruct error"}, - {0x0128, "Unit is offline"}, - {0x0129, "Cannot update status to DCB"}, - {0x0130, "Invalid stripe handle"}, - {0x0131, "Handle that was not locked"}, - {0x0132, "Handle that was not empy"}, - {0x0133, "Handle has different owner"}, - {0x0140, "IPR has parent"}, - {0x0150, "Illegal Pbuf address alignment"}, - {0x0151, "Illegal Pbuf transfer length"}, - {0x0152, "Illegal Sbuf address alignment"}, - {0x0153, "Illegal Sbuf transfer length"}, - {0x0160, "Command packet too large"}, - {0x0161, "SGL exceeds maximum length"}, - {0x0162, "SGL has too many entries"}, - {0x0170, "Insufficient resources for rebuilder"}, - {0x0171, "Verify error (data != parity)"}, - {0x0180, "Requested segment not in directory of this DCB"}, - {0x0181, "DCB segment has unsupported version"}, - {0x0182, "DCB segment has checksum error"}, - {0x0183, "DCB support (settings) segment invalid"}, - {0x0184, "DCB UDB (unit descriptor block) segment invalid"}, - {0x0185, "DCB GUID (globally unique identifier) segment invalid"}, - {0x01A0, "Could not clear Sbuf"}, - {0x01C0, "Flash identify failed"}, - {0x01C1, "Flash out of bounds"}, - {0x01C2, "Flash verify error"}, - {0x01C3, "Flash file object not found"}, - {0x01C4, "Flash file already present"}, - {0x01C5, "Flash file system full"}, - {0x01C6, "Flash file not present"}, - {0x01C7, "Flash file size error"}, - {0x01C8, "Bad flash file checksum"}, - {0x01CA, "Corrupt flash file system detected"}, - {0x01D0, "Invalid field in parameter list"}, - {0x01D1, "Parameter list length error"}, - {0x01D2, "Parameter item is not changeable"}, - {0x01D3, "Parameter item is not saveable"}, - {0x0200, "UDMA CRC error"}, - {0x0201, "Internal CRC error"}, - {0x0202, "Data ECC error"}, - {0x0203, "ADP level 1 error"}, - {0x0204, "Port timeout"}, - {0x0205, "Drive power on reset"}, - {0x0206, "ADP level 2 error"}, - {0x0207, "Soft reset failed"}, - {0x0208, "Drive not ready"}, - {0x0209, "Unclassified port error"}, - {0x020A, "Drive aborted command"}, - {0x0210, "Internal CRC error"}, - {0x0211, "Host PCI bus abort"}, - {0x0212, "Host PCI parity error"}, - {0x0213, "Port handler error"}, - {0x0214, "Token interrupt count error"}, - {0x0215, "Timeout waiting for PCI transfer"}, - {0x0216, "Corrected buffer ECC"}, - {0x0217, "Uncorrected buffer ECC"}, - {0x0230, "Unsupported command during flash recovery"}, - {0x0231, "Next image buffer expected"}, - {0x0232, "Binary image architecture incompatible"}, - {0x0233, "Binary image has no signature"}, - {0x0234, "Binary image has bad checksum"}, - {0x0235, "Image downloaded overflowed buffer"}, - {0x0240, "I2C device not found"}, - {0x0241, "I2C transaction aborted"}, - {0x0242, "SO-DIMM parameter(s) incompatible using defaults"}, - {0x0243, "SO-DIMM unsupported"}, - {0x0248, "SPI transfer status error"}, - {0x0249, "SPI transfer timeout error"}, - {0x0250, "Invalid unit descriptor size in CreateUnit"}, - {0x0251, "Unit descriptor size exceeds data buffer in CreateUnit"}, - {0x0252, "Invalid value in CreateUnit descriptor"}, - {0x0253, "Inadequate disk space to support descriptor in CreateUnit"}, - {0x0254, "Unable to create data channel for this unit descriptor"}, - {0x0255, "CreateUnit descriptor specifies a drive already in use"}, - {0x0256, "Unable to write configuration to all disks during CreateUnit"}, - {0x0257, "CreateUnit does not support this descriptor version"}, - {0x0258, "Invalid subunit for RAID 0 or 5 in CreateUnit"}, - {0x0259, "Too many descriptors in CreateUnit"}, - {0x025A, "Invalid configuration specified in CreateUnit descriptor"}, - {0x025B, "Invalid LBA offset specified in CreateUnit descriptor"}, - {0x025C, "Invalid stripelet size specified in CreateUnit descriptor"}, - {0x0260, "SMART attribute exceeded threshold"}, - {0xFFFFFFFF, NULL} -}; - -#ifdef TWA_DEBUG -/* - * Save the debug levels in global variables, so that - * their values can be changed from the debugger. - */ -u_int8_t twa_dbg_level = TWA_DEBUG; -u_int8_t twa_call_dbg_level = TWA_DEBUG; - -#endif /* TWA_DEBUG */ diff --git a/sys/dev/raid/twa/twa_ioctl.h b/sys/dev/raid/twa/twa_ioctl.h deleted file mode 100644 index e7fc618f2f..0000000000 --- a/sys/dev/raid/twa/twa_ioctl.h +++ /dev/null @@ -1,127 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_ioctl.h,v 1.1 2004/04/16 20:13:17 drhodus Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - -#include - -#define TWA_AEN_NOT_RETRIEVED 0x1 -#define TWA_AEN_RETRIEVED 0x2 - -#define TWA_ERROR_AEN_NO_EVENTS 0x1003 /* No more events */ -#define TWA_ERROR_AEN_OVERFLOW 0x1004 /* AEN clobber occurred */ - -#define TWA_ERROR_IOCTL_LOCK_NOT_HELD 0x1001 /* Not locked */ -#define TWA_ERROR_IOCTL_LOCK_ALREADY_HELD 0x1002 /* Already locked */ - - -#pragma pack(1) -struct twa_scan_bus_packet { - u_int32_t unit; -} __attribute__ ((packed)); - - -struct twa_event_packet { - u_int32_t sequence_id; - u_int32_t time_stamp_sec; - u_int16_t aen_code; - u_int8_t severity; - u_int8_t retrieved; - u_int8_t repeat_count; - u_int8_t parameter_len; - u_int8_t parameter_data[98]; -} __attribute__ ((packed)); - - -struct twa_lock_packet { - u_int32_t timeout_msec; - u_int32_t time_remaining_msec; - u_int32_t force_flag; -} __attribute__ ((packed)); - - -struct twa_compatibility_packet { - uint8_t driver_version[32];/* driver version */ - uint16_t working_srl; /* driver & firmware negotiated srl */ - uint16_t working_branch; /* branch # of the firmware that the driver is compatible with */ - uint16_t working_build; /* build # of the firmware that the driver is compatible with */ -} __attribute__ ((packed)); - - -struct twa_driver_packet { - u_int32_t control_code; - u_int32_t status; - u_int32_t unique_id; - u_int32_t sequence_id; - u_int32_t os_status; - u_int32_t buffer_length; -} __attribute__ ((packed)); - - -struct twa_ioctl_9k { - struct twa_driver_packet twa_drvr_pkt; - void *pdata; /* points to data_buf */ - int8_t padding[484]; - struct twa_command_packet twa_cmd_pkt; - int8_t data_buf[1]; -} __attribute__ ((packed)); - - -/* - * We need the structure below to ensure that the first byte of - * data_buf is not overwritten by the kernel, after we return - * from the ioctl call. Note that twa_cmd_pkt has been reduced - * to an array of 1024 bytes even though it's actually 2048 bytes - * in size. This is because, we don't expect requests from user - * land requiring 2048 (273 sg elements) byte cmd pkts. - */ -typedef struct twa_ioctl_no_data_buf { - struct twa_driver_packet twa_drvr_pkt; - void *pdata; /* points to data_buf */ - int8_t padding[484]; - struct twa_command_packet twa_cmd_pkt; -} __attribute__ ((packed)) TWA_IOCTL_NO_DATA_BUF; -#pragma pack() - - -#define TWA_IOCTL_SCAN_BUS _IOW ('T', 200, u_int32_t) -#define TWA_IOCTL_FIRMWARE_PASS_THROUGH _IOWR('T', 202, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_FIRST_EVENT _IOWR('T', 203, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_LAST_EVENT _IOWR('T', 204, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_NEXT_EVENT _IOWR('T', 205, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_PREVIOUS_EVENT _IOWR('T', 206, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_LOCK _IOWR('T', 207, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_RELEASE_LOCK _IOWR('T', 208, TWA_IOCTL_NO_DATA_BUF) -#define TWA_IOCTL_GET_COMPATIBILITY_INFO _IOWR('T', 209, TWA_IOCTL_NO_DATA_BUF) - - diff --git a/sys/dev/raid/twa/twa_reg.h b/sys/dev/raid/twa/twa_reg.h deleted file mode 100644 index 22355097db..0000000000 --- a/sys/dev/raid/twa/twa_reg.h +++ /dev/null @@ -1,464 +0,0 @@ -/*- - * Copyright (c) 2003-04 3ware, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * $DragonFly: src/sys/dev/raid/twa/twa_reg.h,v 1.2 2006/12/22 23:26:24 swildner Exp $ - */ - -/* - * 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - */ - -/* - * The following macro has no business being in twa_reg.h. It should probably - * be defined in twa_includes.h, before the #include twa_reg.h.... But that - * causes the API to run into build errors. Will leave it here for now... - */ -#define TWA_64BIT_ADDRESSES ((sizeof(bus_addr_t) == 8) ? 1 : 0) - -/* Register offsets from base address. */ -#define TWA_CONTROL_REGISTER_OFFSET 0x0 -#define TWA_STATUS_REGISTER_OFFSET 0x4 -#define TWA_COMMAND_QUEUE_OFFSET 0x8 -#define TWA_RESPONSE_QUEUE_OFFSET 0xC -#define TWA_COMMAND_QUEUE_OFFSET_LOW 0x20 -#define TWA_COMMAND_QUEUE_OFFSET_HIGH 0x24 - -/* Functions to read from, and write to registers */ -#define TWA_WRITE_CONTROL_REGISTER(sc, val) \ - TWA_WRITE_REGISTER(sc, TWA_CONTROL_REGISTER_OFFSET, val) -#define TWA_READ_STATUS_REGISTER(sc) \ - TWA_READ_REGISTER(sc, TWA_STATUS_REGISTER_OFFSET) -#define TWA_WRITE_COMMAND_QUEUE(sc, val) \ - do { \ - if (TWA_64BIT_ADDRESSES) { \ - /* First write the low 4 bytes, then the high 4. */ \ - TWA_WRITE_REGISTER(sc, TWA_COMMAND_QUEUE_OFFSET_LOW, \ - (u_int32_t)(val)); \ - TWA_WRITE_REGISTER(sc, TWA_COMMAND_QUEUE_OFFSET_HIGH,\ - (u_int32_t)(((u_int64_t)val)>>32)); \ - } else \ - TWA_WRITE_REGISTER(sc, TWA_COMMAND_QUEUE_OFFSET,\ - (u_int32_t)(val)); \ - } while (0) -#define TWA_READ_RESPONSE_QUEUE(sc) \ - (union twa_response_queue)TWA_READ_REGISTER(sc, TWA_RESPONSE_QUEUE_OFFSET) - -/* Control register bit definitions. */ -#define TWA_CONTROL_CLEAR_SBUF_WRITE_ERROR 0x00000008 -#define TWA_CONTROL_ISSUE_HOST_INTERRUPT 0x00000020 -#define TWA_CONTROL_DISABLE_INTERRUPTS 0x00000040 -#define TWA_CONTROL_ENABLE_INTERRUPTS 0x00000080 -#define TWA_CONTROL_ISSUE_SOFT_RESET 0x00000100 -#define TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT 0x00004000 -#define TWA_CONTROL_UNMASK_COMMAND_INTERRUPT 0x00008000 -#define TWA_CONTROL_MASK_RESPONSE_INTERRUPT 0x00010000 -#define TWA_CONTROL_MASK_COMMAND_INTERRUPT 0x00020000 -#define TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT 0x00040000 -#define TWA_CONTROL_CLEAR_HOST_INTERRUPT 0x00080000 -#define TWA_CONTROL_CLEAR_PCI_ABORT 0x00100000 -#define TWA_CONTROL_CLEAR_QUEUE_ERROR 0x00400000 -#define TWA_CONTROL_CLEAR_PARITY_ERROR 0x00800000 - - -#define TWA_SOFT_RESET(sc) \ - TWA_WRITE_CONTROL_REGISTER(sc, \ - TWA_CONTROL_ISSUE_SOFT_RESET | \ - TWA_CONTROL_CLEAR_HOST_INTERRUPT | \ - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | \ - TWA_CONTROL_MASK_COMMAND_INTERRUPT | \ - TWA_CONTROL_MASK_RESPONSE_INTERRUPT | \ - TWA_CONTROL_DISABLE_INTERRUPTS) - -/* Status register bit definitions. */ -#define TWA_STATUS_ROM_BIOS_IN_SBUF 0x00000002 -#define TWA_STATUS_SBUF_WRITE_ERROR 0x00000008 -#define TWA_STATUS_COMMAND_QUEUE_EMPTY 0x00001000 -#define TWA_STATUS_MICROCONTROLLER_READY 0x00002000 -#define TWA_STATUS_RESPONSE_QUEUE_EMPTY 0x00004000 -#define TWA_STATUS_COMMAND_QUEUE_FULL 0x00008000 -#define TWA_STATUS_RESPONSE_INTERRUPT 0x00010000 -#define TWA_STATUS_COMMAND_INTERRUPT 0x00020000 -#define TWA_STATUS_ATTENTION_INTERRUPT 0x00040000 -#define TWA_STATUS_HOST_INTERRUPT 0x00080000 -#define TWA_STATUS_PCI_ABORT_INTERRUPT 0x00100000 -#define TWA_STATUS_MICROCONTROLLER_ERROR 0x00200000 -#define TWA_STATUS_QUEUE_ERROR_INTERRUPT 0x00400000 -#define TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT 0x00800000 -#define TWA_STATUS_MINOR_VERSION_MASK 0x0F000000 -#define TWA_STATUS_MAJOR_VERSION_MASK 0xF0000000 - -#define TWA_STATUS_EXPECTED_BITS 0x00002000 -#define TWA_STATUS_UNEXPECTED_BITS 0x00F00000 - -/* For use with the %b kprintf format. */ -#define TWA_STATUS_BITS_DESCRIPTION \ - "\20\15CMD_Q_EMPTY\16MC_RDY\17RESP_Q_EMPTY\20CMD_Q_FULL\21RESP_INTR\22CMD_INTR\23ATTN_INTR\24HOST_INTR\25PCI_ABRT\26MC_ERR\27Q_ERR\30PCI_PERR\n" - -/* Detect inconsistencies in the status register. */ -#define TWA_STATUS_ERRORS(x) \ - ((x & TWA_STATUS_UNEXPECTED_BITS) && \ - (x & TWA_STATUS_MICROCONTROLLER_READY)) - -/* PCI related defines. */ -#define TWA_IO_CONFIG_REG 0x10 -#define TWA_DEVICE_NAME "3ware 9000 series Storage Controller" -#define TWA_VENDOR_ID 0x13C1 -#define TWA_DEVICE_ID_9K 0x1002 - -#define TWA_PCI_CONFIG_CLEAR_PARITY_ERROR 0xc100 -#define TWA_PCI_CONFIG_CLEAR_PCI_ABORT 0x2000 - -/* Command packet opcodes. */ -#define TWA_OP_NOP 0x00 -#define TWA_OP_INIT_CONNECTION 0x01 -#define TWA_OP_READ 0x02 -#define TWA_OP_WRITE 0x03 -#define TWA_OP_READVERIFY 0x04 -#define TWA_OP_VERIFY 0x05 -#define TWA_OP_ZEROUNIT 0x08 -#define TWA_OP_REPLACEUNIT 0x09 -#define TWA_OP_HOTSWAP 0x0A -#define TWA_OP_SELFTESTS 0x0B -#define TWA_OP_SYNC_PARAM 0x0C -#define TWA_OP_REORDER_UNITS 0x0D - -#define TWA_OP_EXECUTE_SCSI_COMMAND 0x10 -#define TWA_OP_ATA_PASSTHROUGH 0x11 -#define TWA_OP_GET_PARAM 0x12 -#define TWA_OP_SET_PARAM 0x13 -#define TWA_OP_CREATEUNIT 0x14 -#define TWA_OP_DELETEUNIT 0x15 -#define TWA_OP_DOWNLOAD_FIRMWARE 0x16 -#define TWA_OP_REBUILDUNIT 0x17 -#define TWA_OP_POWER_MANAGEMENT 0x18 - -#define TWA_OP_REMOTE_PRINT 0x1B -#define TWA_OP_RESET_FIRMWARE 0x1C -#define TWA_OP_DEBUG 0x1D - -#define TWA_OP_DIAGNOSTICS 0x1F - -/* Misc defines. */ -#define TWA_ALIGNMENT 0x4 -#define TWA_MAX_UNITS 16 -#define TWA_INIT_MESSAGE_CREDITS 0x100 -#define TWA_SHUTDOWN_MESSAGE_CREDITS 0x001 -#define TWA_64BIT_SG_ADDRESSES 0x00000001 -#define TWA_EXTENDED_INIT_CONNECT 0x00000002 -#define TWA_BASE_MODE 1 -#define TWA_BASE_FW_SRL 0x17 -#define TWA_BASE_FW_BRANCH 0 -#define TWA_BASE_FW_BUILD 1 -#define TWA_CURRENT_FW_SRL 0x18 -#define TWA_CURRENT_FW_BRANCH 1 -#define TWA_CURRENT_FW_BUILD 9 -#define TWA_9000_ARCH_ID 0x5 /* 9000 series controllers */ -#define TWA_CTLR_FW_SAME_OR_NEWER 0x00000001 -#define TWA_CTLR_FW_COMPATIBLE 0x00000002 -#define TWA_BUNDLED_FW_SAFE_TO_FLASH 0x00000004 -#define TWA_CTLR_FW_RECOMMENDS_FLASH 0x00000008 -#define NUM_FW_IMAGE_CHUNKS 5 -#define TWA_MAX_IO_SIZE 0x20000 /* 128K */ -#define TWA_MAX_SG_ELEMENTS (TWA_64BIT_ADDRESSES ? 70 : 105) -#define TWA_MAX_ATA_SG_ELEMENTS 60 -#define TWA_Q_LENGTH TWA_INIT_MESSAGE_CREDITS -#define TWA_MAX_RESET_TRIES 3 -#define TWA_SECTOR_SIZE 0x200 /* generic I/O bufffer */ -#define TWA_SENSE_DATA_LENGTH 18 - -#define TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED 0x010a -#define TWA_ERROR_UNIT_OFFLINE 0x0128 -#define TWA_ERROR_MORE_DATA 0x0231 - -#pragma pack(1) -/* Scatter/Gather list entry. */ -struct twa_sg { - bus_addr_t address; - bus_size_t length; -} __attribute__ ((packed)); - - -/* 7000 structures. */ -struct twa_command_init_connect { - u_int8_t opcode:5; /* TWA_OP_INITCONNECTION */ - u_int8_t res1:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t res2; - u_int8_t status; - u_int8_t flags; - u_int16_t message_credits; - u_int32_t features; - u_int16_t fw_srl; - u_int16_t fw_arch_id; - u_int16_t fw_branch; - u_int16_t fw_build; - u_int32_t result; -} __attribute__ ((packed)); - - -struct twa_command_download_firmware { - u_int8_t opcode:5; /* TWA_DOWNLOAD_FIRMWARE */ - u_int8_t sgl_offset:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit; - u_int8_t status; - u_int8_t flags; - u_int16_t param; - struct twa_sg sgl[TWA_MAX_SG_ELEMENTS]; -} __attribute__ ((packed)); - - -struct twa_command_reset_firmware { - u_int8_t opcode:5; /* TWA_OP_RESET_FIRMWARE */ - u_int8_t res1:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit; - u_int8_t status; - u_int8_t flags; - u_int8_t res2; - u_int8_t param; -} __attribute__ ((packed)); - - -struct twa_command_io { - u_int8_t opcode:5; /* TWA_OP_READ/TWA_OP_WRITE */ - u_int8_t sgl_offset:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; - u_int16_t block_count; - u_int32_t lba; - struct twa_sg sgl[TWA_MAX_SG_ELEMENTS]; -} __attribute__ ((packed)); - - -struct twa_command_hotswap { - u_int8_t opcode:5; /* TWA_OP_HOTSWAP */ - u_int8_t res1:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; - u_int8_t action; -#define TWA_OP_HOTSWAP_REMOVE 0x00 /* remove assumed-degraded unit */ -#define TWA_OP_HOTSWAP_ADD_CBOD 0x01 /* add CBOD to empty port */ -#define TWA_OP_HOTSWAP_ADD_SPARE 0x02 /* add spare to empty port */ - u_int8_t aport; -} __attribute__ ((packed)); - - -struct twa_command_param { - u_int8_t opcode:5; /* TWA_OP_GETPARAM, TWA_OP_SETPARAM */ - u_int8_t sgl_offset:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; - u_int16_t param_count; - struct twa_sg sgl[TWA_MAX_SG_ELEMENTS]; -} __attribute__ ((packed)); - - -struct twa_command_rebuildunit { - u_int8_t opcode:5; /* TWA_OP_REBUILDUNIT */ - u_int8_t res1:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t src_unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; - u_int8_t action:7; -#define TWA_OP_REBUILDUNIT_NOP 0 -#define TWA_OP_REBUILDUNIT_STOP 2 /* stop all rebuilds */ -#define TWA_OP_REBUILDUNIT_START 4 /* start rebuild with lowest unit */ -#define TWA_OP_REBUILDUNIT_STARTUNIT 5 /* rebuild src_unit (not supported) */ - u_int8_t cs:1; /* request state change on src_unit */ - u_int8_t logical_subunit; /* for RAID10 rebuild of logical subunit */ -} __attribute__ ((packed)); - - -struct twa_command_ata { - u_int8_t opcode:5; /* TWA_OP_ATA_PASSTHROUGH */ - u_int8_t sgl_offset:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; - u_int16_t param; - u_int16_t features; - u_int16_t sector_count; - u_int16_t sector_num; - u_int16_t cylinder_lo; - u_int16_t cylinder_hi; - u_int8_t drive_head; - u_int8_t command; - struct twa_sg sgl[TWA_MAX_ATA_SG_ELEMENTS]; -} __attribute__ ((packed)); - - -struct twa_command_generic { - u_int8_t opcode:5; - u_int8_t sgl_offset:3; - u_int8_t size; - u_int8_t request_id; - u_int8_t unit:4; - u_int8_t host_id:4; - u_int8_t status; - u_int8_t flags; -#define TWA_FLAGS_SUCCESS 0x00 -#define TWA_FLAGS_INFORMATIONAL 0x01 -#define TWA_FLAGS_WARNING 0x02 -#define TWA_FLAGS_FATAL 0x03 -#define TWA_FLAGS_PERCENTAGE (1<<8) /* bits 0-6 indicate completion percentage */ - u_int16_t count; /* block count, parameter count, message credits */ -} __attribute__ ((packed)); - - -/* Command packet - must be TWA_ALIGNMENT aligned. */ -union twa_command_7k { - struct twa_command_init_connect init_connect; - struct twa_command_download_firmware download_fw; - struct twa_command_reset_firmware reset_fw; - struct twa_command_io io; - struct twa_command_hotswap hotswap; - struct twa_command_param param; - struct twa_command_rebuildunit rebuildunit; - struct twa_command_ata ata; - struct twa_command_generic generic; -} __attribute__ ((packed)); - - -/* 9000 structures. */ - -/* Command Packet. */ -struct twa_command_9k { - struct { - u_int8_t opcode:5; - u_int8_t reserved:3; - } command; - u_int8_t unit; - u_int16_t request_id; - u_int8_t status; - u_int8_t sgl_offset; /* offset (in bytes) to sg_list, from the end of sgl_entries */ - u_int16_t sgl_entries; - u_int8_t cdb[16]; - struct twa_sg sg_list[TWA_MAX_SG_ELEMENTS]; - u_int8_t padding[32]; -} __attribute__ ((packed)); - - -/* Command packet header. */ -struct twa_command_header { - u_int8_t sense_data[TWA_SENSE_DATA_LENGTH]; - struct { - int8_t reserved[4]; - u_int16_t error; - u_int8_t padding; - struct { - u_int8_t severity:3; - u_int8_t reserved:5; - } substatus_block; - } status_block; - u_int8_t err_specific_desc[98]; - struct { - u_int8_t size_header; - u_int16_t reserved; - u_int8_t size_sense; - } header_desc; -} __attribute__ ((packed)); - - -/* Full command packet. */ -struct twa_command_packet { - struct twa_command_header cmd_hdr; - union { - union twa_command_7k cmd_pkt_7k; - struct twa_command_9k cmd_pkt_9k; - } command; -} __attribute__ ((packed)); - - -/* Response queue entry. */ -union twa_response_queue { - struct { - u_int32_t undefined_1:4; - u_int32_t response_id:8; - u_int32_t undefined_2:20; - } u; - u_int32_t value; -} __attribute__ ((packed)); - - -#define TWA_AEN_QUEUE_EMPTY 0x00 -#define TWA_AEN_SOFT_RESET 0x01 -#define TWA_AEN_SYNC_TIME_WITH_HOST 0x31 -#define TWA_AEN_SEVERITY_ERROR 0x1 -#define TWA_AEN_SEVERITY_WARNING 0x1 -#define TWA_AEN_SEVERITY_INFO 0x1 -#define TWA_AEN_SEVERITY_DEBUG 0x4 - -#define TWA_PARAM_VERSION_TABLE 0x0402 -#define TWA_PARAM_VERSION_MONITOR 2 /* monitor version [16] */ -#define TWA_PARAM_VERSION_FW 3 /* firmware version [16] */ -#define TWA_PARAM_VERSION_BIOS 4 /* BIOSs version [16] */ -#define TWA_PARAM_VERSION_PCBA 5 /* PCB version [8] */ -#define TWA_PARAM_VERSION_ATA 6 /* A-chip version [8] */ -#define TWA_PARAM_VERSION_PCI 7 /* P-chip version [8] */ - -#define TWA_PARAM_CONTROLLER_TABLE 0x0403 -#define TWA_PARAM_CONTROLLER_PORT_COUNT 3 /* number of ports [1] */ - -#define TWA_PARAM_TIME_TABLE 0x40A -#define TWA_PARAM_TIME_SchedulerTime 0x3 - -#define TWA_9K_PARAM_DESCRIPTOR 0x8000 - - -struct twa_param_9k { - u_int16_t table_id; - u_int8_t parameter_id; - u_int8_t reserved; - u_int16_t parameter_size_bytes; - u_int16_t parameter_actual_size_bytes; - u_int8_t data[1]; -} __attribute__ ((packed)); -#pragma pack() -