Make pg_stat_io view count IOs as bytes instead of blocks

Started by Nazir Bilal Yavuzover 1 year ago31 messages
#1Nazir Bilal Yavuz
byavuz81@gmail.com
1 attachment(s)

Hi,

Currently, in the pg_stat_io view, IOs are counted as blocks. However,
there are two issues with this approach:

1- The actual number of IO requests to the kernel is lower because IO
requests can be merged before sending the final request. Additionally, it
appears that all IOs are counted in block size.
2- Some IOs may not align with block size. For example, WAL read IOs are
done in variable bytes and it is not possible to correctly show these IOs
in the pg_stat_io view [1]/messages/by-id/CAN55FZ1ny+3kpdm5X3nGZ2Jp3wxZO-744eFgxktS6YQ3=OKR-A@mail.gmail.com.

To address this, I propose showing the total number of IO requests to the
kernel (as smgr function calls) and the total number of bytes in the IO. To
implement this change, the op_bytes column will be removed from the
pg_stat_io view. Instead, the [reads | writes | extends] columns will track
the total number of IO requests, and newly added [read | write |
extend]_bytes columns will track the total number of bytes in the IO.

Example benefit of this change:

Running query [2]CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i; SELECT pg_stat_reset_shared('io'); SELECT * FROM t WHERE i = 0; SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM pg_stat_io WHERE reads > 0;, the result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 15.99 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 15.99 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

You can rerun the same query [2]CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i; SELECT pg_stat_reset_shared('io'); SELECT * FROM t WHERE i = 0; SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM pg_stat_io WHERE reads > 0; after setting io_combine_limit to 32 [3]SET io_combine_limit TO 32;.
The result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 31.70 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 31.60 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

I believe that having visibility into avg_io_[bytes | blocks] is valuable
information that could help optimize Postgres.

Any feedback would be appreciated.

[1]: /messages/by-id/CAN55FZ1ny+3kpdm5X3nGZ2Jp3wxZO-744eFgxktS6YQ3=OKR-A@mail.gmail.com
/messages/by-id/CAN55FZ1ny+3kpdm5X3nGZ2Jp3wxZO-744eFgxktS6YQ3=OKR-A@mail.gmail.com

[2]: CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i; SELECT pg_stat_reset_shared('io'); SELECT * FROM t WHERE i = 0; SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM pg_stat_io WHERE reads > 0;
CREATE TABLE t as select i, repeat('a', 600) as filler from
generate_series(1, 10000000) as i;
SELECT pg_stat_reset_shared('io');
SELECT * FROM t WHERE i = 0;
SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT
current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM
pg_stat_io WHERE reads > 0;

[3]: SET io_combine_limit TO 32;

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v1-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v1-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From f02b0d261880aa3f933a9350b6b1557f6b14f292 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Wed, 11 Sep 2024 11:04:18 +0300
Subject: [PATCH v1] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, remove op_bytes column from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat        |  6 +-
 src/include/pgstat.h                   |  9 ++-
 src/backend/catalog/system_views.sql   |  4 +-
 src/backend/storage/buffer/bufmgr.c    | 14 ++---
 src/backend/storage/buffer/localbuf.c  |  6 +-
 src/backend/storage/smgr/md.c          |  4 +-
 src/backend/utils/activity/pgstat_io.c | 63 ++++++++++++++++---
 src/backend/utils/adt/pgstatfuncs.c    | 87 +++++++++++++++++++-------
 src/test/regress/expected/rules.out    |  6 +-
 doc/src/sgml/monitoring.sgml           | 61 +++++++++++-------
 10 files changed, 184 insertions(+), 76 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index ff5436acacf..b0dab15bfd4 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5826,9 +5826,9 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index be2c91168a1..56ab9893999 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -341,6 +341,7 @@ typedef enum IOOp
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
@@ -553,11 +554,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7fd5d256a18..854e24da596 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1152,14 +1152,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 48520443001..b23a5e0ffba 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1497,7 +1497,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2055,7 +2055,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2411,7 +2411,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3873,7 +3873,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4512,7 +4512,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6014,7 +6014,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 8da7dd6c98a..37044ecd6c5 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 6796756358f..9e293d5688f 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1386,7 +1386,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1773,7 +1773,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index cc2ffc78aa9..0213f617f8a 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -23,6 +23,7 @@
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -31,6 +32,12 @@ typedef struct PgStat_PendingIO
 static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
+static inline bool pgstat_io_count_checks(IOObject io_object,
+										  IOContext io_context, IOOp io_op,
+										  uint64 bytes);
+static inline void pgstat_count_io_op_n_inline(IOObject io_object,
+											   IOContext io_context, IOOp io_op,
+											   uint32 cnt, uint64 bytes);
 
 /*
  * Check that stats have not been counted for any combination of IOObject,
@@ -73,21 +80,50 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 	return true;
 }
 
-void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
-{
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
-}
-
-void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+static inline bool
+pgstat_io_count_checks(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
+	/* Only IOOP_READ, IOOP_WRITE and IOOP_EXTEND can do IO in bytes. */
+	Assert((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND) ||
+		   bytes == 0);
+
+	/*
+	 * If IO done in bytes and byte is <= 0, this means there is an error
+	 * while doing an IO. Don't count these IOs.
+	 */
+	if ((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND) &&
+		bytes <= 0)
+		return false;
+
+	return true;
+}
+
+void
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
+{
+	if (!pgstat_io_count_checks(io_object, io_context, io_op, bytes))
+		return;
+	pgstat_count_io_op_n_inline(io_object, io_context, io_op, 1, bytes);
+}
+
+void
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
+{
+	if (!pgstat_io_count_checks(io_object, io_context, io_op, bytes))
+		return;
+	pgstat_count_io_op_n_inline(io_object, io_context, io_op, cnt, bytes);
+}
+
+static inline void
+pgstat_count_io_op_n_inline(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
+{
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,8 +156,12 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
+
+	if (!pgstat_io_count_checks(io_object, io_context, io_op, bytes))
+		return;
+
 	if (track_io_timing)
 	{
 		instr_time	io_time;
@@ -150,7 +190,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 					   io_time);
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n_inline(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -216,6 +256,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 33c7b25560b..3ea18263f6f 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1272,14 +1272,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1320,11 +1322,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an op does not do IO in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1332,11 +1359,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1410,17 +1441,10 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 				values[IO_COL_OBJECT] = CStringGetTextDatum(obj_name);
 				values[IO_COL_RESET_TIME] = reset_time;
 
-				/*
-				 * Hard-code this to the value of BLCKSZ for now. Future
-				 * values could include XLOG_BLCKSZ, once WAL IO is tracked,
-				 * and constant multipliers, once non-block-oriented IO (e.g.
-				 * temporary file IO) is tracked.
-				 */
-				values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 				for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 				{
 					int			op_idx = pgstat_get_io_op_index(io_op);
+					int			byte_idx = pgstat_get_io_byte_index(io_op);
 					int			time_idx = pgstat_get_io_time_index(io_op);
 
 					/*
@@ -1438,19 +1462,40 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 					else
 						nulls[op_idx] = true;
 
-					/* not every operation is timed */
-					if (time_idx == IO_COL_INVALID)
-						continue;
-
 					if (!nulls[op_idx])
 					{
-						PgStat_Counter time =
-							bktype_stats->times[io_obj][io_context][io_op];
+						/* not every operation is timed */
+						if (time_idx != IO_COL_INVALID)
+						{
+							PgStat_Counter time =
+								bktype_stats->times[io_obj][io_context][io_op];
 
-						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+							values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						}
+
+						/* not every IO done in bytes */
+						if (byte_idx != IO_COL_INVALID)
+						{
+							char		buf[256];
+							PgStat_Counter byte =
+								bktype_stats->bytes[io_obj][io_context][io_op];
+
+							/* Convert to numeric. */
+							snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+							values[byte_idx] = DirectFunctionCall3(numeric_in,
+																   CStringGetDatum(buf),
+																   ObjectIdGetDatum(0),
+																   Int32GetDatum(-1));
+						}
 					}
 					else
-						nulls[time_idx] = true;
+					{
+						if (time_idx != IO_COL_INVALID)
+							nulls[time_idx] = true;
+						if (byte_idx != IO_COL_INVALID)
+							nulls[byte_idx] = true;
+					}
+
 				}
 
 				tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index a1626f3fae9..4836198f785 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1888,21 +1888,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 933de6fe07f..dc85b342b39 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,7 +2760,7 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
+        Number of units of size <symbol>BLCKSZ</symbol> which the process
         requested the kernel write out to permanent storage.
        </para>
       </entry>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.45.2

#2Melanie Plageman
melanieplageman@gmail.com
In reply to: Nazir Bilal Yavuz (#1)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Wed, Sep 11, 2024 at 7:19 AM Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:

Currently, in the pg_stat_io view, IOs are counted as blocks. However, there are two issues with this approach:

1- The actual number of IO requests to the kernel is lower because IO requests can be merged before sending the final request. Additionally, it appears that all IOs are counted in block size.

I think this is a great idea. It will allow people to tune
io_combine_limit as you mention below.

2- Some IOs may not align with block size. For example, WAL read IOs are done in variable bytes and it is not possible to correctly show these IOs in the pg_stat_io view [1].

Yep, this makes a lot of sense as a solution.

To address this, I propose showing the total number of IO requests to the kernel (as smgr function calls) and the total number of bytes in the IO. To implement this change, the op_bytes column will be removed from the pg_stat_io view. Instead, the [reads | writes | extends] columns will track the total number of IO requests, and newly added [read | write | extend]_bytes columns will track the total number of bytes in the IO.

smgr API seems like the right place for this.

Example benefit of this change:

Running query [2], the result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 15.99 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 15.99 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

I don't understand why background worker is listed here.

You can rerun the same query [2] after setting io_combine_limit to 32 [3]. The result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 31.70 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 31.60 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

I believe that having visibility into avg_io_[bytes | blocks] is valuable information that could help optimize Postgres.

In general, for this example, I think it would be more clear if you
compared what visibility we have in pg_stat_io on master with what
visibility we have with your patch.

I like that you show how io_combine_limit can be tuned using this, but
I don't think the problem statement is clear nor is the full
narrative.

CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i;
SELECT pg_stat_reset_shared('io');
SELECT * FROM t WHERE i = 0;
SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM pg_stat_io WHERE reads > 0;

I like that you calculate the avg_io_blocks, but I think it is good to
show the raw columns as well.

- Melanie

#3Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Melanie Plageman (#2)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Wed, Nov 27, 2024 at 11:08:01AM -0500, Melanie Plageman wrote:

On Wed, Sep 11, 2024 at 7:19 AM Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:

Currently, in the pg_stat_io view, IOs are counted as blocks. However, there are two issues with this approach:

1- The actual number of IO requests to the kernel is lower because IO requests can be merged before sending the final request. Additionally, it appears that all IOs are counted in block size.

I think this is a great idea. It will allow people to tune
io_combine_limit as you mention below.

2- Some IOs may not align with block size. For example, WAL read IOs are done in variable bytes and it is not possible to correctly show these IOs in the pg_stat_io view [1].

Yep, this makes a lot of sense as a solution.

Thanks for the patch! I also think it makes sense.

A few random comments:

=== 1

+       /*
+        * If IO done in bytes and byte is <= 0, this means there is an error
+        * while doing an IO. Don't count these IOs.
+        */

s/byte/bytes/?

also:

The pgstat_io_count_checks() parameter is uint64. Does it mean it has to be
changed to int64?

Also from what I can see the calls are done with those values:

- 0
- io_buffers_len * BLCKSZ
- extend_by * BLCKSZ
- BLCKSZ

could io_buffers_len and extend_by be < 0? If not, is the comment correct?

=== 2

+ Assert((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND

and

+ if ((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND) &&

What about ordering the enum in IOOp (no bytes/bytes) so that we could check
that io_op >= "our firt bytes enum" instead?

Also we could create a macro on top of that to make it clear. And a comment
would be needed around the IOOp definition.

I think that would be simpler to maintain should we add no bytes or bytes op in
the future.

=== 3

+pgstat_io_count_checks(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
+{
+       Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
+       Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
+       Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+       Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));

IOObject and IOContext are passed only for the assertions. What about removing
them from there and put the asserts in other places?

=== 4

+ /* Only IOOP_READ, IOOP_WRITE and IOOP_EXTEND can do IO in bytes. */

Not sure about "can do IO in bytes" (same wording is used in multiple places).

=== 5

/* Convert to numeric. */

"convert to numeric"? to be consistent with others single line comments around.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#4Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Melanie Plageman (#2)
2 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

Thanks for looking into this!

On Wed, 27 Nov 2024 at 19:08, Melanie Plageman
<melanieplageman@gmail.com> wrote:

On Wed, Sep 11, 2024 at 7:19 AM Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:

Currently, in the pg_stat_io view, IOs are counted as blocks. However, there are two issues with this approach:

1- The actual number of IO requests to the kernel is lower because IO requests can be merged before sending the final request. Additionally, it appears that all IOs are counted in block size.

I think this is a great idea. It will allow people to tune
io_combine_limit as you mention below.

2- Some IOs may not align with block size. For example, WAL read IOs are done in variable bytes and it is not possible to correctly show these IOs in the pg_stat_io view [1].

Yep, this makes a lot of sense as a solution.

To address this, I propose showing the total number of IO requests to the kernel (as smgr function calls) and the total number of bytes in the IO. To implement this change, the op_bytes column will be removed from the pg_stat_io view. Instead, the [reads | writes | extends] columns will track the total number of IO requests, and newly added [read | write | extend]_bytes columns will track the total number of bytes in the IO.

smgr API seems like the right place for this.

Example benefit of this change:

Running query [2], the result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 15.99 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 15.99 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

I don't understand why background worker is listed here.

Parallel sequential scan happens in this example and parallel workers
are listed as background workers. After setting
'max_parallel_workers_per_gather' to 0, it is gone.

You can rerun the same query [2] after setting io_combine_limit to 32 [3]. The result is:

╔═══════════════════╦══════════╦══════════╦═══════════════╗
║ backend_type ║ object ║ context ║ avg_io_blocks ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ client backend ║ relation ║ bulkread ║ 31.70 ║
╠═══════════════════╬══════════╬══════════╬═══════════════╣
║ background worker ║ relation ║ bulkread ║ 31.60 ║
╚═══════════════════╩══════════╩══════════╩═══════════════╝

I believe that having visibility into avg_io_[bytes | blocks] is valuable information that could help optimize Postgres.

In general, for this example, I think it would be more clear if you
compared what visibility we have in pg_stat_io on master with what
visibility we have with your patch.

I am listing the changes as text, images are also attached.

* [reads | writes | extends] columns count the number of smgr function
calls now. They were counting the number of block IOs before.
* op_bytes column is removed from the view because each IO could have
a different size. They are not always equal to op_bytes.
* [read_bytes | write_bytes | extend_bytes] columns are added. These
columns count IO sizes as bytes.

There are two different IO cases:

1- Size of the IOs are constant:
* See 'client backend / bulkread' row, If you divide read_bytes
columns' value (6826754048) to BLCKSZ (8192) in the patched image, you
get the reads columns' value (833344) in the upstream image. So, we
actually do not lose any information when the size of the IOs are
constant.

2- Size of the IOs are different:
* Upstream version will give wrong information in this case. For
example see WALRead() function. pg_pread() is called with different
segbytes values in this function. It is not possible to correctly show
this stat in pg_stat_io view.

The problem with the upstream version of the pg_stat_io view is that
multiplying the number of blocks with the op_bytes does not always
give the total IO size. Also, it looks like Postgres is doing one IO
request per block. This patch tries to address these problems.

I like that you show how io_combine_limit can be tuned using this, but
I don't think the problem statement is clear nor is the full
narrative.

I just wanted to show one piece of information that can be gathered
with the patched version, it was not possible to gather that before.

CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i;
SELECT pg_stat_reset_shared('io');
SELECT * FROM t WHERE i = 0;
SELECT backend_type, object, context, TRUNC((read_bytes / reads / (SELECT current_setting('block_size')::numeric)), 2) as avg_io_blocks FROM pg_stat_io WHERE reads > 0;

I like that you calculate the avg_io_blocks, but I think it is good to
show the raw columns as well.

Images of the view after running the query [1]SET track_io_timing to ON; SET max_parallel_workers_per_gather TO 0; SELECT pg_stat_reset_shared('io'); CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i; SELECT * FROM t WHERE i = 0; SELECT * FROM pg_stat_io; are attached.

P.S. I attached the images of the view because I do not know how they
will look if I copy paste them as text. If there is a way to add them
as text without distortion, please let me know.

[1]: SET track_io_timing to ON; SET max_parallel_workers_per_gather TO 0; SELECT pg_stat_reset_shared('io'); CREATE TABLE t as select i, repeat('a', 600) as filler from generate_series(1, 10000000) as i; SELECT * FROM t WHERE i = 0; SELECT * FROM pg_stat_io;
SET track_io_timing to ON;
SET max_parallel_workers_per_gather TO 0;
SELECT pg_stat_reset_shared('io');
CREATE TABLE t as select i, repeat('a', 600) as filler from
generate_series(1, 10000000) as i;
SELECT * FROM t WHERE i = 0;
SELECT * FROM pg_stat_io;

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

upstream_pg_stat_io.pngimage/png; name=upstream_pg_stat_io.pngDownload
�PNG


IHDR��Fu�#	pHYs���+ IDATx���w|SU��M�i)�=�2E��.����Ad���LQd��Q�-*

"K�@�]
��2
�R,{�����#irW�$M������J�{�s�s�{��M
���_���rL;�����������������X�>�"`��.��m�m�m�v������;��1��GV��p,��=�����;w������;��(_�N=���ADDDDDDDDDDDD����������������.� �����������������������������.� �����������������������������.� �����������������������������.� �����������������������������.��A�������	��1��m��������E[��u�+z?���J�y�YM?�n�!k�L?m��7Dl���6'5�S�F�1��c�ZV�
��pM��?F���~��|&`��&��]���Y����9f�Ue�����JG�T������	W�n[��Y�]x��T����)*�����������oWD��
DW�]�us���O��X��7�=�WT��wJ��e�z�;�^Ae�E���� g��U��x>���I]j��w;�j���{w����������)a��_��dL.��b��q�Z���(��i����Y���ms����b��v�B]����[�69���F��.�n��^>l��]?�Q���.�7o��'���6��p��9�
*�/���\Bp���{�]�s��?��D�t�	��D�w+���(��w���\���y�"�p��f���br�1w�{���������������������+�s��5y��������VP�����f|q[@���u���
�+�I�s���u��l��Xox�P�V����mQ�B����S���;{K�i������on��������_��G�z��[�P�����/�������o�Q������{�f�Gg~�=a��[���>��7�)��vl��{*>l&u��m|c�'R?���gR�Li3ls���f��GS��|��!��~�X���C7��x����
��%�I�z%�t��Z3{��'�b��$h���>b�;/��x|�������M�~U<�<����Sq
��kL���e���(�&�!3M��qJ���J�[�� 51e����U���o;_��g���z����.i7���}�������W�Pg����?��~�Bi�����+:��de�l��z���q�uL�k���^�Z�;����c�fN��_����-
�Mj�JtZ�y\#/ e��f��it������y���x�-v+�������^(��O�-;���u��_\me�!�%��sc6]vi�O�&j����d�VN=��1vL3����/`E��:v	�9@�1.�cl��r����6�J�%%�W����N�\��Mg��3[u�i?K��P�� �D�a�]�X�b���G�:�}�
�?wK�>`�n�j~P�����ar�f&L
�mi���>��*�Kn�*O�z�E�����.�kN�����?��w���s�����}}���TuA�X�����M�������'g��]�5��Y�����oO?�"��V��6/�r���x�@���I����SrA�a[���b���������g3�B�9�
@N��v�1M�^���c��9��k��f����N6�����Vnd��Q���9c�(p��.A�'`�K�p��T"�U��=����B5��zXYeO'�|R����EEE�w�^��7����5.W���cV�7�c
h�����w_kT�r�2O�k7am��	/2�M[���}��My���eK������F�F������~�z.����~u2��QS���{����^��e�4�>k��{U��om�<�e�[�|M�zCW����oC#�]wd��#���~�J������t$���/�l����;��]�B�����V��_��6���~����^x�����"w��X�W|�t��{����5
!8��N3M�.������u*���B��;�n���I?���j>�p��[ 7
�����r��4%��
�N�[d�Svb��_��)�.t��y��j���#�5���o�<�/(�,�Om���"������&{�y����Kh �Q�2�3����1��&�>�jt����KU���[�[���X�H��nQ�6��Y�����"�W`{��d��U�=ZN�{l��F~�����g����!���?}�M�6�i��i*�������4���F�" `��3�1�������������@���7��r�&]m|t�h�U���RbU���iIm�r:g�j>�v�Y��m�������B-3�l2�,��Y�hQ�b��q��f�`����}{������6�e�KN���E�`X�Km����2d���90�����pH����x|X�������]�J�.3����;����h"9�^z4��,9������~��w���~�8P��Un��/��7�2�N�@���By��;d���~
�0���:��~��.���1�'�W�i�����\r�Cnder�p:G-�,����-�]��\���t����,�M���o��zXYeN�b�d�{����s�OD�o��h������6ymF�f�7��������7Y?sm��
m[���������
y��3��?e��T��a.����
x����uJ������?1���f��
n��s��X�kk��~u]�7��Z|.2.o[�#.I���;�w}�V9��X�W�vm�_\3���bu���+_}y��"-���-{�i������u�����$���0���#��o�a��$=��/���{�Y���n	
!�)M�7:�K�92tGt2�r������7G��H?�d��W.�D�3R�HnC�[�RS�l�3]wm����~�8yH�[��}�����9�A���4��#7t.G���G +@���U������t�B��Q�n<������c5�6v�`��(��������N<1)���M�WKjp��5<���s>��T���<�nt��?g��u*'�^p5k�����(w���i�r��9N{���29[v�Bl��4�p��*Z9�j:b� �]-���!5��N"�-�V,�����Q�N`��������v�I��s���%���-e-�H�����J�D�z�o�>e�n������=�.�s&
�o����=_��&�R���,��F���]���k
|�IM�-k������7��a[�����u:���t7$s(�TQ����$���k��Cbder,�t�:vu��$v�p�����n:�.���m~�l�@����?�
������.^N3�����+B������P��[}z�~�F����<o����M����:~Af������-���������oB���K{U��tg���,���Z\d������e�''%���G4A+��\�� ���K�w3��-���[v���M������k�����mT�wz|���ei����hR���B S+W@��)����:!����JkpQH�dD�%�^Er�!�9�4@���2�f��������X2��_�zX����q�t���(�@v�R�3����1����;q��_�"O�s����}�n�o������a��@����>==]����&=^^^��!���=}����5�i�tj���w��������s>-�gD��j����1�L3����8M��9�)��1��� ����y���������3 �����b�l3��-Z��X�"��e��f��~	o����>1=��b��w�.����D ����*>����ds*��a����������G�����/_;�^v�w�>>���!�G����e���9�&s@@�=K)m<%v�-�F,�
II��/��u����k�#+�c�����[8��nN�sqsVNg��=����N���(y:G/���k<�2���T�6gI��9s������Q���=�K5}���cw��1k����'��k��Tx|hN��Gs�_�Oyd�_F��<�N�l�q�����_������a/�Y��������fNP��
YmR
��g�^y�eFA��t�����P�&����.�����3��l�r�Fw�l.59�4!��CNJWN�R��6����B=�L��?�����^�����~Q{�3=����� 8��g\:y:��35�z7�m�%������^�h��h�[�"�l5���s�]�,��I��=�@���]-_��yU�O ��tl�t��,&3�����lOf3���,ZT�X���x�c�����<`�nQQ=�T�����;A�/���Z,�z@�Y�Ej��b����8�_�,x�Q�'�9b�k
�"�h�Z�+{��w�{&� ��th4b�n�]�4���S@f���;��B�b���~B��8g��[���������f:�-��\���zXZ%O��'7��<*>��'����X��������F����/��w
�W(����!�������z�U��8+��4)g��?~x������s��\�A�s���KO�x����|�%\���U�jy���:@(R�r1��Y���t�zx�{]��m��to���Q���w�~������ym�L�S�jy�[�X�[K���"<W3��4��W/�v���Y�-�~��FA19���YJ\2��4@
����4���7`���{�����~��h�%��SP�N�rf�2�:�z���?.���_O����Ku}����#YJ.vu��]
��������TU����v��?��w(�|c\����U�������/Hh��CN��o������U�b��Xs,I3w�1{�*S�0_UfrX��cW���aW��3��w�d?�s�Bm��E��E� /[5��KxC��m�X7����������=k�@j�.�]U$Y=�
r��y��I��H$�,�FA������^oZ�?-+���`����cW���`������
�<���''%�����D=�U�b��C���?�$B�x{M�b�������)p���*��w.$3�EG�la gm/�F��Y��b�*����k��3�������������.\�A�P��A_�V�l��C��8�}�
�w��~�.!O�,U�A�q�������QkVE��6���
��)]�����qX�&�L�����?^�d��U<�G��)2��	�5.W�b����3|��/x��/���W�t^�����*��X��Oz��P��Tw=�*�6}��"�^^^Fc���52����������w>��o�z��e�����W3o�w[gm�L�k�)�7��h]�|�*/���������^M?�O����Hr����|M��K�[�H���� M�fc'�O^5i�����>>e���C'����pL�!]N�2�3����1M���vmV�j�%�j��yu������R������5@zL�9��m;�/_�XP�oP����I;���D��\�]��'#.��+�Q�����O���L{s���S�8���f�y�]M��cW�Ts$#�t��1�m��YR�lU��������t���f]m��*XR��?���Id��E��%=:�[5��&|z���"m�-&�E��`��TQm)k�.����*�����l����p�%.��X"9�^��<���{���m?�������LE,v��j�OVn<[��uuFl������^�B��o��4�.��JN���:�dC�t{M�L�e��ic�[��`�k��w.nMi:�����>��^�����+5�''��R\������\��P�y��,�v��U�M�rC ����������f�������}~��N��x�����U#�$������
e$^�'��sD>S�z~���
�����K�$]���������� ���W/�_w=]�����:��xf�2 ���_\uf��*��]��pi�O�.�5�G�1����	��}�����������hR�����^�o�
?�th��������*w��o�g�|G�x]q���N��:|���Y�-�~J�������Y�@$%
.�n� %��Kr�<*v��Y������l2�[�g������r��������NA$:�(W93K�X��>A�V�\.�;�^��]���t�Y������S8[�p@w}��9�'��q�����z��.���Bw�dt�O��G���R���7�^�����L����]�M=�`�4��K�j�.v����������r����RtI	�Ue�c+g��Zw}Mg��3�]m�zW��B�4���I�~��n����-��u���k�?`�n1�y�5��09�me.�H��%�����G����<�=8�P� 0��y�Je�I��C�o�+���?���Q4v��j����uO@yr	����B������W,^qrV'�vM +��|�1�?"w{M�t�e��s�����x�J������9����)%�hQ5[�0^�K��.���b�b���������n���������I/������_����?���fmB��Nl���r�0vN�m��m���O�
������~.�8���-��v�`����9�s��s�6��������z8W������(�N=��D�k�|~��M�����~i��q��>Z��W�h���{>{s�G����������~O�iS/��"�i��\��5�H%�Q^�� pQ�cy��n������������F��sk|n�����w���j2�[�QN����{���+2|����Uq�o�u��sNn��n���m�m����v�sA���nq���(�
r�p��u��m��;�!��m�p�����Q>�'�\�������|5���W�:�5$*����
'�w+��������=���d"")n[=�6p"rR��nL|EDDDDDDDDDDDDv�QDDDDDDDDDDDDd|EDDDDDDDDDDDDv�QDDDDDDDDDDDDd|EDDDDDDDDDDDDv�QDDDDDDDDDDDDd|EDDDDDDDDDDDDv�QDDDDDDDDDDDDd���QQQ�i�������Q�L3����-��O�
�N��?�6p�cW;������b�8�������9v�s��t���6p�cW������#""""""""""""���(""""""""""""�>�"""""""""""""���(""""""""""""�>�"""""""""""""���(""""""""""""�>�"""""""""""""���(""""""""""""�>�"""""""""""""���(""""""""""""��=�
hud~�"�xc*��1����^�:�W�:�5��'~6���8qoxh�[5��m�����fq����h]���O���45(E>�l���u�Kf�G�/�zDDDDDDDDDD�<u���G4��F���+#�3�G1�v�H��a�sz>���I�k���'6:"�.5(A!�l��d*cW�	���2����T�&�������?��@S��g#�4�V�d�W���{V-�tG����*^��)���S_<<����6J�����1���W�f����o;��;j�����K�V)�������n�~����2��h��d�Q(�L���:�R�|�6����_�\�@�nl����}_��6�'}��I�Gn��&�A�O>���zI��{�G_8w��������@��d�i�cP��N�$:9��i�������j����mvk=5"��o2�sp��9�/���Q}Z�.��������'�0�,Q~�]{@��(��PXt�_�$�Andx�D�rK2��IK�%�K�5�dM"��������X]=�X{�����b�����v�4��%��k�������p�X{N��|����b�����������D��Ou[I IDAT�X>%"�[Ad�-�����<n����bR�7�7���&��6���:��[����)��c��f���@��w�<�P/����2i+t�A����@�6����cV�����a���oXw%6������/���\�������{��t�7Zw:�Wp�y{y��~�����KV)��>P[J;6�O��Y4_���?#�M����,w`�'�"n{Wm=��Y3�zXg�G&��S8f�3�4gg�����4�dFA����8z���tH5~E�t�1�&n:2t\����<���w���5#����\r��&QY�|!��4�D����`�U��t>���H���$�X���@��t	3�_:Joj�\�\��\�Tx#`������t��A�Z�N��a��F��
���`�1<@rW����b�`rKA���%��D^5z�*=@�t� **��w�k�=f��]#�������vU��0������f_�&��$����HTTTTT��&_�%�Wo?v����G�o_9��%3��z6�{���o|�h�����oY:����:,0-����#��U�J6�'�
_8������?�6���%4Y���m��_6�>~0l����j\(�pB�ZoK�����|��3o����
�DW2�+���j5f��}�������
.��`���6x�o���L�����>t$|��Yo�7D���b�i ���#+�H�,�=�����c��[��G��n��7��d�A*o]��%Bf~y6�34���~
�0���������R�-f�b�����S�������<�@�Wj���*b�M<������c�GlZG+��������n����;-<b��^��^Ub���
����������
�	
?�s�����t�������Ny���4k�SS���C;'��B����Gu��}m���7�����@��d�im?���D�d]�M~�8���y�25e:.�����-�6��HP8��s��A��9��s������Q����-���U�[`�g'���v�3p�Q�]�J]e���.����d���!�cW��5�B���M�d�+U���m�$�{"�� ���Z:���H�������xVw�q�0��S�jb����r���hy;M����=�y�����7Mie\E������CV3�a����%(��DUY�����3����9x��Y��������n�������s�h��~B�N���jOr����E{�����MB��	K1ka��
�����:���S�����������J��bf�n����=�������������4��vJ��V
CBBB���4�9A��;����x�z�{]?�U���/:�1<��	
��b�'}�t�?q��Fc����q�J�~�z�Y��o��aK���[�!@����9[���i�.}�GT����E���<����}��Q�[4o�w�����3%�S����&�!��$���;M����K?�������������i��u�+�����B����i>���N3�t7"��?��y_E��h\.!��?&�#xV}��E^(�p��:�W������I��.����Y!�{v�$�W������������c:�*,��	�����z�V���7*�.����=�}*���_����s��	���Tf����z��un��i�R������������iK��QT@QA6e��>�Av�Y��N�,:����X&�Q����Swcg�G����5��3U�st���jujz��<��tH���>w�\F�Z����o�P&�,Q��]�J^���$��O�c�vC0V�jjc[����Z"���vIi�tT��!rQ���P@TVN�����9y���R.���S���=�Y�Zp������T�z�Q�NM�����dr5Q`u��:��[
�R��7
\h�ADDDDDDDDDDDD���#�+����������gR�����y<��f��
n��s��X�kk��~u]�7��Z|.2.o[�#.I���;�w}�V9���<>����c��}R���m�����JoZ}M�����o�~���e��z�QU��'�� {���=�S�O�^}�������y5h����5c>���]���c���K��7����
����/�:�hJ�Yki*���^����;�����3W������9��}��UH���Vd~eR��T1�9)�DS/������|�~������������|�S(�q��Oz	BR��i��<�@�U/	�M�}���������nI�K�^u��g~�7%������Z��c?��{���f�'6��n�+��k�O�oTq:k.��Y�d��3��O^9�����u9���I�Gl��d���F����Y�%���<�'�����������'xVj��mUh��~���^:e��>�}������y�0
��GMs,��((��	������,�cb���s;�E�
!1!Q����	(R8�\�#T
*"�F~7���#K�?dW��'�D�����=K_���P�vC�L���(5��-�dv�- �g&1���/�65D.�����r��Q�^���)�N)
��v�4R��R�C�p%���][�z�Y4�+�)�c� �����Ro�O���.3Jd��6}�)]�Z��S�/��}��P�z��^�{,��5��<y�����}������I�����������x9��S�b�M*W���B�Zo�����������=S/�
�	�d�>/���������kIy��h�*V�O�s%���K�w3��9p��q�t���K���iJ�Y�yT�\q.d~e����	��>UZ��:�>y�*��W����,���(UL�@vJ8�����w��7����K)��w�q���O
�����=�z���+Q�y��#�p}���3������/	�[�����������������Lt���[��?w:�Q��_vn[c�"����=fL~)v���?Q�F���n����Z���	O�gn�uB�WJl���� {��un�b�������[3y�SS�/���.#��������W%#�e���N���z���vf���i~f9��|l@�t��cnL�x7AW�>�8Y"�RX��SX�����+�15� ����]dI&�#0m	U��R���J�"�em�0{�F�^
��5����T�}k>���V�w�������"4A��y%�c�����L�M������3�
�T��[��n�c���?$���S�_^����8�Z��.��'��@�������}4�	�^�����r��=��4��Y�_�i�����&&em3}EOA�	�	���]o��	����������������?S��R�S�~�I�3a��b�8�j��y�*����K4�:Et~eQ�-��b�rR�y�����������{��/�^Ro��o�����O�d<���x��9}��>��|��6������������P8tg{���S�/vl����u�2_`���+N��?��pM�BI���~���0����?�|s��Ro��t�@Fj��d����<�|������B�bAn� 3@����������?�M��>��s�J��;	��t��[��K&e��;�D�Y����$:f�U�>K*�DG!o�O��sGi	��|�"��{v�>��#��?��g?�:�,Q�P\�JPZ{�Z4��)���*(-�b��K�\�T��P���Dt����!rI{(��)�F�����W2b~����w�tOn'������:�l�m������\�6-��cVS���-���������Gg�zw�h�t�5���s�S}Z�����7
l� Jw�����=W�3������Tx�x�r�RSQ��G@j�'�c.��z������sVz�N������xT|�)O�M�]�r9�����W����c_,����
�P�C{�C@N�$cO9������~�������������t	�.%z��Z^s0VE*W.����qgB��b(3��oRJ$��Ez|�������H�)U�z��+���� 5�
�/�/ Qx��X�$�e�����!7���@vJ8�������g��z��[H��|Z_�� (�t����]Vk
[�_�~���3v_��K�c������.�*U�
�"ng>�
��9{v�{�r�e��l�F�&�j�g|b�E���w��.��d��s!�E�2~��z�%K���~�^f�l��N�5��6��"]���I��t�7h��p:s�#����I37��v9��`V�I���((������#r�-���Oz�g�K[�����A��[�����F�'Y�|a������C�
��)uL>�VA��P�]nIf�k�j�CkT'���Y:Z��!r
2{(��)��4�{)R�]N�q;%�)[�e�i%�k����X6r��I��?B������O:k�i�0�������DUF�[Po�/^��7b��+!Ux����9_�f�b�V7
l�����5��_�p��7g��O������<�8�2.�=����������Qj���'��
OzL�9�������z�I�����2�����z������8��_���/�,zt��G�����W����O��r�I]zj��$�xc���Y����zo`����n�������o��rqw�P��~�������f@:v��S�&���'����hUl��������J���{F�����=�{�c�#+��:�D�e���0M$�,�[]��-�z|4t����_R�V�{��6""w6�)������s����y�����:��m��G���P=��%���g�rR�y�^��O�������]L��m@�B�~?�x<��g����<s�v�6��+�
l����#7u��*��|/����SA�����;���?�n�������~��_I?u�����j���B���m�3����&���_����w��`HO�r����
����}?�������e�����`x���g��������G�<�����s����o��u���7���W�:�����s7���m?�����Fn��l�LB::�c��1"]��L���Q�������H�ma���.�-W�[�����r����)2���sO��}kw}0���nq�?��eX���e�G[�(�Ipd������� ��=�W����:&�2� }��E�d2;�����.�l��DrKG�e?�����2�S����KQ$uiS�Z��/�V�3w#��S�Z�U�zp�@�����[��&So�	���`�1- �b���K�=���|y��2�����n�����cW��<��n�W�*��x������
�'�}=�������������7���:��[f��=y����|t����������&�����o�y&��z�d����VH���.��i���F�h�DLi3l��/g���|k�^�~�Y4��_�>���p�����������f�������}~��N��x���8��3��_1yi���&�b��3I�F����3�0���������3c�W�'YN���O��Y�4�Y�g��y����F��2x�������=u��#����_���s���)��/o�����W���)��������n�ta1�F)�4SOwc�����<����5Iwb�����oO�����T�[�q���C�����?�d�:�W�_*���}��;��R��H�s���-�lN[����)����e�Awg���fD���1��)W��&6
8k�qp�w����$t���s~��v�B���s7]��Q��|�s�Bg�n�`�Y����4��JE4�o^��y��G��F&e��9f� ��N�$:9��i�2�H� 6�����
_�\e��f���}��K/��+�3���������o��{>���y��_�\��I��������������
0?Bt ��c2� �����]bI&��7k	��t	�3��DrKG�e?�����d*��^�J��6������
	���x�I><w��?�D��'�{)����,>fHz?.�������`}������g�;/�&9@�u� **��� b��.��m�m�m�v������;��1��GV��p,��=�����;w������;��(_�N=���ADDDDDDDDDDDD����������������.� �����������������������������.� �����������������������������.� *�MhxTTTTT������������C��{���^%��������$�������ml�
��~pZ3��eF[��u�+z?�����d��D�y�`��/���6�r�Uld��-DDDDDDDDDD���Q'z�}D���l4n��2R?�sh���k6:������T��v��yb�#��R����yK��0v��V��_p��F�iY�����c��^~��.������v���B����}��3�I�b"�}��Gnd�Tn���.
�U(��v/���U���y�Wn�&�A�O>���zI��{�G_87�%�3�}���������Z��� ����x}*�S_<<����-�<��j����mvk=5"����O]1�uF!������_W�_E��~���v��w�b3E��2xP�W���&�8����"������N��������iF��� �j���h,����*��j����E��u��Iw����YrY"�l��W����R@Q�'�������Go�oc'�QcDZ"Ysrr�H�I�Q���T����z]
U`m��&b� ;%'��KD�G�C��*��v��v���x)/b�hgN#�� [�f��~,>�������d9Y��k� ����
P���E�8�=�RC��|JD~���2������P����q�\�?���GO�3n���}>���Z!�?��>
?�;�y��	����o�o��_M��m�oWu4i�"�}�S���z����>aA��w�<��^�����'�X���O&E����z��f$��*N��c��t_��YB!��Q��=�3���jF[������K�O�y�)����Z�!U�eC�q��B��OC��1�GO�v���NO�W1�^�}�[��{���F����]�J�����������\8x:��8��ZS�������!Q6�FA�����]d�\g]�LWC�[d�%B�����D�:���n�=�m����<��^v^��Al�Qc�Z"Ssrr��t�|��%�f���y]�i��\V��i"�~23Pf��D���J1����+7_�Y/��"��v����_3K����MG��� ���|r5�+����_�
P���%��D^5z��f�a�"�JQQQ�C(\��1��:q4|��%���j��V����7�b4�D'�D��G������g�0�",��z���7��8�����_(��T������gt��Ekw�=���a/����a��h9�DE�����Wiy�8qo���]�}�e�����6.��jG�n��y����a��fT��B9�
�z["�\_�[��y;�,� P�&�������T�1K7��s]����op����,���;���g���v��#�{7�z��!����O��Y�D2dQ������h�S~��/<���uG�Y�'�
Ry��,,2���������T��S��!��FO|�$��g���/�X<���xn���_�UD�K$�a5Y��d��Z��\' ���P�����;�
xy���|���ix]�������IVZ����?5�{,�8�����������EO���h0f{���u��V��B����Gu���jV�oZ�l6h�v[vh�������Z��6L{=x�������<�H�2���M�������B����\F�	hkZ�S���]��O
k>5l��v��\�3m��H�9�J��3��I9��ZU�E��jQ�PY%�j��j�It��e(��Y������������	
?�s���/�����l���j�q��}���L��G2�g�^4�{,�����������2����%�m�mw<����[T�E�&Vm�,���/!H9��i��\�T�1������iJ+����Xj��!����0Jd]��K��������������+@m��k�z�����/�f4 IDAT0,]���z6�������E#&����S�.���\���_n������ap��&c�R�ZX���E�k��8�G���&��������?�'����������l3|O�;��7������&!!����9�U�����&!!M�nNP����a�7���^�fG��1��ew�}������I�.]�O\w����G6-d�R��_��s��[?b������Dg��;p������K���:��`�
o��Q����������y���w����)��R$GV4�YdH$��-�iZ��U�]�q�N�'l���������O������_y�{~��{2:5�N�\WM�:5�N�����h"��\J(M����Z���'O��<��tH���>w�\F�Z����������L���C���4k^�W�G�:-�K?���oR	��U_k�B��'��:�vj<=��fC����-]���o�xT�������"s�������_]0w���{�8����n��h����b��	!�Ja��?
�O�\v���?����Va�?A������=�}*���_����s��	����S�t��I����L�<#kU
��W-��
`d�Q#�����,Y���Y'�����rY|�|�����������%�k�i��|����,a����.�nD:g]�QU=��/'e&�%�����b���������EsV���QM)k�)�H��,S-8��L�j&�D.�;��V��������2���
�����[�T���/be���#�
y��3��?e��T��and����g�����-V���y�_]���j�������V��K�#�����]_�UNs46�������%�.�W|����������Nwg�w�d���m�6�m�^���O�g@&��g��zZ���>���k��9��j��m��k��|,V���������-j�"��o����:�#�_ru&�I��S���ZKS����v����������vh���������Bb~���f�+���s>��T���<�nt��?g��u*'�^p5�lb�d5��\`y
*���Dz??M@�����RP7��u�'�?���V�0����'d�=�7����/��6��n���� $���6h�����2�|p2�����=����x�g�V}�V�&�h��e�_�Nm������h����?�}���K���{�4��^PA�?����>oJ�?��T��>�.~����5�e+�g��A���~�����%}���a_ON�>bs�wH��u���9z:��8��Z[��^��z�sa��(H��O��P���, �-��I��%�E�nYB`�~��������~{��!H�D��r�i��+VfK2��Y?��u!�����);*�Gv���@�I�~~���������F�d�*_�<����v�4R��R�C�p%���m3���g��B�8�L��w�L/�*B����Ky���MN5+@u�
l� JS�z�����_��F(R�zi��=�����O����W�k������'���I�������^��w�r��K���"4�\Q�k:�k���G��k�+Z��C���L��+ 'p����8bv?�+�b�%�!:�	�X�?�R���/�������]G����&�N�3a��R$G�j+W@������:!����JkpQ�'o]��������{�����kj�^���Y1��5'���?��|��MI$�)Ngw�O���+~�����>�������5���y)�X�n#>��A�Ia�2KT��i=O���������S\��o����n�.n���OM���^����[v�_��\SMj��������A^S���q!M�~_�,�jB�O=t���[���;����/;���n���9�|ZhhN���Kx��8�p����Rb�o7u��\��]kcA�#kM
�)���ZZ=
@
��<�������E��P�jqj�%�P����/����o;~0HM~R-��9� 9�e�U���|���;���,9� 3e&���E��$K1&��e���Z���O����SLh5z��K�y;��)r@������1����C&��jwl�1�Y4@y&{������p��Z�����
�	�1���?$SDN�~ye�n��jI���������{���'<z}�#���������T�6gI��9s������Q���=�'�'�>vw��&�:�{�������F�����+/��&�����Hg��?��qd�29���Udw�q�h4u�����t�tR�gj��n���K���)�v��=�I9�I$�)O�*-��c�/Z��b����O>�.���{���HY-�?��>�w{�f������O\�4{I��3{����+2?����Z����3����~�����mpO���q����cNP��xx'����.�s��Q�
m;?�;<qO��`���BJU(��}��xxj�����v����gMB�xx0
A�?��\�����/�Tz���x?Y��We�9~r��}�R� 7
?#v��f�t�~v%���0�3�V����#����c]9����(�1��X����B��%(-K��w�`��)�����i�Gr@~���2m�b���1����bU`�������>�w{�&����@v).��\��\P.�"o���g��:��^��~���N�C;���u��R!�q�!�k�\����{�X}L��&�X����Dkxj��d���_������^�.m�n�&��8`nx
�OK������W96}��q�������qV|��OKM���� �%-5�}}�f}t81��M���.�p�)�o��u:�Rg��Q���<q7�w�����w�g^5���}����S�7�By�59���=������O����O??~n��k:���%\���U�jy��X �\�X��K4��;��@�@���|�R"��-�������FD2M�����]��&��R����0�����W��eLRZ�z��/��=��o���F-�Wa��o��|��i���=�@��f�E$%�T�\Z������y�.�bi����ox5�RC{k�?��Z#�?��Z�B����q�^�|�~&T�����T�S�t�f�)�����?�~�s�:;�H[r8�Wn�N.��e��pp!@��K�O[���+7\#�LBh9~)�r�3w���T-+���m�JX��3>���om1����E�2~��z�%K���~)C����������8x:��8��ZW�eK���j�G��
`���Q0���K:S�"[@X��f$�%B�Z=g��p��A_n�l�U�|Y�1m��5''���Xp�������Z�B�r�f������$�/���^�%"W#3��������	�.'�����L��T���$*_�4U�]������L�-���\�����I`�1- &������]dU�`~v
����B���_���{x#�!h�Ru�7.]���Em,0�^M���Q�QkVE�����o�^�X)�U���x�q�d\:{>����]������Or�����s�Am;�?�����'��'e�G��)���	o�]q(.��L�g_nY���o�*/u����U�W���������t3H(��������������C���i�qW=�j�%���x����>z�'�;��H�
�t��'��M�1��O&�����4��K;�}��v]����v#��{����(GV�u&���@��`�H�Y$����][N��h���=X��������}/lDD�lpS�����R;�����g5u�����r�O�zf�K� ���J}:zmy����G��>���-F���e+���5�&�y)V.M��o����0�[�����t�60z������5w�������>��i���/-��T���f���~$6�x���Zi�y���$mP�W��$���#Y�r���Q�C�:�>w3�X��>l��m��������S�2��o:n��^���/����B�{Iz]������)v�i��R���\qoAX�Zppz��������^�@N2��Q������:�^z@�Wzj��{���9�Jh�����{�Y��_��L�n�Y���S��t��#w����i����n�dOg�N'�������yF�����W�����`��J
@���j����U��l� �����e�P�n�oB�I�u�*�zW
���+�n=���t��c���c�c��L�X�lq$�`��B��O`M���&b��� ��WX���R@�����l�,���/}��ng�F�i�����\�� ��Z�����2�Mfw�O��v��i����jMf���^d�C�������'���9�<u�E�Ul��|���FI�Q��+G�H��O��s������Qw��Y���
W~����S��f��-�������;���
�sI{��
(*.����V������G����"��r���-nE���Q�V��!2Dw�	!���&��/��}������M�<����E&����/�$��W����qY�g��F�������w2�����!=��8p�[�����#�K}�(������S��d������u�*�'�:�����g�����.�wq�0g]��U�c���]�����YO�B^��'n��M����������%���UVU* !��*��gD���@h
Xl��=��[�k��]a���Y���y�xP�;i�	�PE7��l�.Xu`���{��Bc��oH?zT9�2b�
��>��KrF���^��\��~�V�����,	
�0X}���� �M$x��;4O�89���c�j�h,�����If�����7���OwFi^������<�Y�W��y�����@������sv�~+���k'E�vt�������}B�!���U�a�
u��"�|�7Z"�����U}+��l��� �'�w�"%�|R���{L\�kCm(�K���qNH�[�K<�<#>��N?>Y��T��M�0�s�K�aomn^B����g�H��!�Q�������Y��p�h~��G��?�����4��O�thRM���%L��~�1j���z<��;=�����r�>��S�%����eF?X�t�(�h���2;|�'�1�H<M1�_��k{��~��5��b����p������p(�"V�� 4K�f.�t�{S?#Z��Ot����� ��>��A����$�
�n�
no��hW��j���E��C��bbb��a�}���Km����������|�j��<�*�Y�0-_���R���s�
���T���6p��T#� ��z��!�B!�B!�B�\�B!�B!�B!�B��B!�B!�B!�P���(�B!�B!�B!T/p!
!�B!�B!�B�\�B!�B!�B!�B�BiQ�#�"cbbbbblw0"�7���_Q����uPv�.Cu�4	�X}+2h����@��yo� ��U�zNXd��6��(�,(	}!)�n���B!�B!�B�
W.B!�B!�B!�P�`)�@���v��oi&�o�O��/]*��+���f�����p�U�����]�T�R
I�u�����j"t,<�{���M�E)�����Q.����V:����L��@�bW2��1��T�*�Y�M���n���0b]�����.�2��.t�O���/�X,��/�0b]�R/�Vs�O�����Y��}a��?dW�
����&��,�����L�����Lp`e2	�N�fL=��ys0f��{�����|�/�P�$h2&1-H�OX�yA��K`�Q�E��� ~R���H������d:�������� r(O�1;z�e����>�>��	�r�P�}���@���g�t{�M�?�������������a���^�������7��\J,�*�0�:n���]Z2K�_�o����{8�:"]f$u}K����(YPQ�F5t+��[����^A��@���.���_��oc����|���^e>�/��u�]�����S���g�b4�x���F$p�)_
�KE���VcV��4=�gXmC�����������v!���n����k��=NdV�c">vF�����-��/�����0b��~K��I%�0�m��<�X��$x_n��y�{�������$B�1[��%!9c4iA�&z���_+�r/���q����H�@��MO��&�����^`���u�>^�����+&%^a:�j�P�}*�����O�t@������oFSRC �������~���
����C�x���)���-�S5����z��T���Q�"������_~n=h�^���L��U�D���P����_���z/�a����W:t�����#��q��������M�E� ��F/�u�zD��;nr�cV�*��w��;'
_����[���Y0��@���� &&j�ScM�W�����y�`�hc���n3|��sw"#����oc��6�>�������w=��6oK����������-�n�����':�/=�n3lI�����7��\m���&�LK����w�������"o����eE��d��'
�=+��*����h��a�c��������-,��gs��_H�[5@���I�t��B���37C�o?~����+g/�u��������H;g���?������'6���0�����.uv������7C�O�Kf���+v%S�S>L������l������\s���B�R��!�b���O���T[6P�^`�ZZ6*�����)9yY/����jo�������	��{��;��l����7m;���������|��s�a����q��>�~�Ch?��o���b��d1%!9ctiA�U���yA��K`�Q�E��� 2)0�#y�J&nz�u���0��C�F�,��h?i��;g����hY^j�@rN)U�Cy����>e��������;~�u�v>%=~������y�����K����3���
@o���m�y�9|����q������bUH��������t_��Y��k��iI�(���nb��E�N��t=�}��2�������T����l�-�^^����l���9���S�f���p��y��/�:?8L��6r�H������i�v^?[���r��7�mkkk�������Y�4z;
/9�=y���c�L����f�[Z&�E���N7�uu���[���
.-vB��% �U����Q�DW ��=`�`��e.�fl�j;vD+��hdYM]6�����`��36\J-N��|J"�g�REUM��t\�[�7!����\$���������i�u�$�N�1����6+.�e��[:���{���7������s)��K'Vz����g��m�����|�������{�u�S��Y=p��]�����S���g�!����X~*Y��#/�KE��:��|Gg���'��V�{�������:���6,�.���(��x������,��G�).��l�����Z:�'7���7�Q��zS4�MZ�5NX�T�V������4��l"q��'��.������C�FJ��F3K�f�,LE�f{����G��||���������J� ����]r���.�=B����Q}��>}K��g7��gec6�p���S{}�mkF(8\���&SI���n�������5�����/8�OF�q��NN.���\H& ����?��nqd�k>?�B���R
J�_��>a�u���:�����s��@��=��n1����Y$�wg�6��d]�{z���vX�<A�@�~�Y[�;��=o���y���d���aT���K=J&N���%zu���B�������l����TK&���4=+/F��c��^�
�W�~p���~�w�����~��[!>vi����/#�-��x��5�O*�jd�g����9����&
c](,(JGO��od�{]�	����������v��8�Q�J��5�|�jU�=+U��2��_�K�nC������_���O�n����K�Z����;>|�E��4�m�'M%�N}����f���3j�����f���TcCD�m"�fN��qf�-�>��u���Q�3&{Z�T5N��� IDATX�yA��K`�i����������v��'��.���ar^`��H�+�r�{K?#�����T��3[�&�J/������j���q<���!����X�v���������q�rBa:68|Yo6A��^Z����G
4L�LX]'�*;�}������l]S:iQx6)�p2��YZ�oI�(t!����������}�0��j�n7%����4t�T�)�@���|$UVZZ:Zu��mRZ����S�3�~�Z3!������SF|����.�Eh�ip��	�
$��5`��`������:D��uk������_�$���9�o?�y�����$D�)�����u�V�z:��[;dN|B�F�6M�D�O�~+��.-cb;����@�x<��������f�G�"ZT����HsR�dVj���m�)�ZUa�"�]*57d�^�����3"�(P��Z-���||�����F=��Z����:�mt���k6�Y����T�����D���������@�)�L��D�'�����FIH��LiA����z�~W��Y�fR�m����7�z�����Vk������Wd��j���>��P�4��������|w�����~���?8������R-��E�:���AN����� ���B�
n�w���ile?u��:�w�w>)�,&0�B7�,���z���C��'��������z@���Xw7z���:���������)|�0��a�
E��_�?�����]�g<�,,����B�|@�������o���~<�����+E9�#)Rpw8��)+
_\2A4����ge%�C%��WK��E#������]SA(�g�� �3�462)�����b������ %7A>�.��5�]�����S���g���.�2���6iete40XL���������f��"��w��;��N��-	�������MS~��fhm����k].�46������q�����t�&��������|"�� R Ryt��$�',�����%��4�E���$?1�������v��'��x�]�]*�$�����O����EtU���E�13e����@�}��A���+F�QN���oT}�^����?$%�xM�;�l������9�Eed���O���)�~WD�mdB�{��|��7u�N�i�����?n���� �������}
]�"���w�i��R����p@SK������p�@[������	���7.�������H�&�%�h��Z�o�8���]*�Z:���Gg����.?)��l����bP8H�����;������Z���k�sY����))��.Z2�%��Q�v���Qb'$~Q\��l�F�
�F�/=5����R��������������<�_}dLj�J��,xo�^�Fv��F�S{�x�^�:2sn��
6DO�O�K�H�j���m�)�ZUa�"�V*�v]����p�o��
qw�Yq9KY2����ZF��SGW��DEQ��+���������c��b�����}B����L>{�q1�{�W��FIhJ�����Z�q��*_+��/����I��16��N������S�>yo@����a>1x�o��7��^��fB��Cs"'*�/�!����t��.�jM:v��c:\�!�U#�B
���&�O|�������#�fM
��B7dw8�8;���.����)IIU7j���U���h!
81����������#�y�mm�u�����C^���2�3�g'��ao>qJ?�T{V/1�5�1�����i%����R>/����#���	��Z���C���?���P�E"�.=������si%| y�g�x��{���7����Y��ng����L�_F��M��N��~���Z\M}=G8H�J��]��������I��7����	�.q[�g���mJ�(=2�&�L��OqH�� ZH5�HL���W�=�2g���>����0�����/��^
HH}dLj�J��L���'��/`&,uN���|��Q�q{��a6�!���%�z��F�+�����a�U��XL��Mu�-L5	�aK�����HK�P��Mk0��
�?d�����/��g~�b��e��i��mM�K)��������'�{���T�J��x\���kZ���Ie&����f�y�\q���	�e=��K����y�lF������Wx:	����mA�9���7�m--x�)9%����p=@�� �2&1-��j���������J���.�yAdR��1�7��'nz��6�����*9/0dn$_J�>v+K=}kKS�ZN��X=�����(&>3��o����`����|����>k�AP-v�Wk4T�[���#���9�X�n�!��N^1��_����R��������my����a�g�u_����A�~�i�����W-��==��kI�(��|��#^s���q�p�[�_��*�P��Z!Ux}�F���~a��������=>�w��:��������g���D��
_�^�:�e���&�2�b#���4���.��X6��Uo-&���\.��������N�r��17��#+���&��:tuP��3��&s�#Nm]��ha����$�^��&���5�����(�7:N��e�V��v�e=:���K��%'���T@B>�U m��RE�����}{r��������LY��b�������w�Ti��1�=+mDB���#��6��=���<����CK����>�
IT�O�Kf��@�bW2��1��T�*�Y1C�e���V���|)���.�B�772�
U��\h��,|S9kL��2;|�����N>�0J�������i�'�j��%p�����1�������C���*>+����W�F����Cp���s��-��O��IL�5�p^Pu�Xi�{�%4/�L
��i��
�2�H���G���I{(���"������z���L���E�61������[�����|�|qd�z�u� �Wkt���N�t_����
�,�+m�<m����t��Cz�]�9�OWO���0�s�K�aomn^B����g�C�W��j���E��At-�O111�}����]�w����T������SmW>L�r`�U��X����Bm�s��9v�S�d�m�j��a�jbO=����B!�B!�B!��.D!�B!�B!�B�z�Q!�B!�B!�B�^�BB!�B!�B!����B!�B!�B!��.D!�B!�B!�B�z���(��A�111111�;�����������:(�q���:��?��M��4R_QM Fm���~�����i=',2tZ\W�L�
����^�!�B!�B!���`)�@���v��oi&�o�O��/]*��+���f�����p�U�����]�T�R
I�u��7���t���C:7a�<�g���G�dC��[E�X:x�c2���]�����S���gk����4��	������������2d��$F_�����U��M���n���#�Eq�������s�[�ir���	��	��i����v3o���w��������xa��������T��� ~R�T�R7`4�i]���#V_t�X�6���d:�����r���� <�5D0;z�e����>�>��	�r�P�}���@���g�t{�M�?�������������a���^�������7��\J,�*�0�:n���]Z2K�_�o����{8�:"]f$u}K����(YPQ�F5t+��[����^A��@���.���_��oc�������xE����%�Z��N�+�����a�U�lM�9L����LP�^��=/p�}�^�i�M�f��������Df�;&�,��;�	��MG�������7*W�����m,��v$����}���c����}�IO����[4fN��k���1R�	��yA�� ���l�l5f��L�Sy��h���M���
����o��F�e��%]�{!�b}�W����!�z�J� ����'�V�0��;h���Q���7':l�����)�v�fy���/���b
�m9cK�T�;�����+�43oT��$�p 8���[�9:SheUr���.~/7����%�'���zy��������h�H4v�� &&&&&r�`�-=��Kw��������\��U��j�]u���I��<y���;�B4c&cv<������X�n��cbbb��<�>�X�[���_�������'�~���!h���O���kw#�]?����R�jw�������m1~��f�2$����K���[r�vd��� W[c��+�������]��o?y����[g�~mY� ���ICb��-��*��=��e�����s�#��_���\���V�1�O�qaI�/�b4�'����4A��K�����w���/�[d���w����L�_�l���}��+w�\9{��SWn^���MGi�P%����~2~r�������'���f��E��Fw��>����S��Y=p��]�����S���gk��LKW�*�SK�F���>�0%'/���c�RY�-�T��c4�f��w;���V��s`/�G���}���&��m�3;9:tb�tp����n>���06��������o��/�pS u�����D&���
+�-��L��/�ZN-�1(ij�~8�c��l��)�� ��h?i��;g����hY^j�@rN)U�Cy����>e��������;~�u�v>%=~������y�����K����3����A<z�Nl�$�s�������{|����B�Wu�/�m�������]�uMK�D��X�vv.�]p�g���q��o��5��E���rO��g�o���-l>f�N���-���4s�������|A����y`����CFz�����N���������8�[�aXo[[[�~�������p���ix�Q�����d����4�X��2�/�]�p��	���>�-���_W8pi�:�.��:�-�����'���6��s�,s7cCT��#ZI_oQ!,���F��vl?r��K������OI$���B����B�������~��&d���4�����[����>-�nU�}��s��������~h���W�+Y���,�mV\���u��t�������o��k���h,�.�X����c�������F�u�k~kkS�_�T�dV\�bW2��1��T�*���j����U�J��}�5�u�}+mXF]�mQ��W��+As<��J�86C�E�#��3��p�M;v�UBKG�������3_=�H�@,$���'
jQ�5f�nn��3w�����"qj�r8	X�B���t���1�f�&z�:Y��L���.{����s���%c�
����/��A,�1c��^9]"{��a����<}���e�n�q���l:|���+���8���Pp��#��M��mI�(��
l��.]sO��=����t`tw�����+��K��d��o9�c���Gv����.�^J-�����{�Z�`<L�c^���;w�N�d���o�����=�E�yw�m�M����G
�l���4��w��u�c����/�7:`<L&��F�L:����d�T���_�W���)�N���>�& -�N@�d��|J@���b�>�{���Kqe�7p��1}�=����n�d������mh/�G���b���[;�sh{��e����os���I�\�����2�6@�&�PXP���C�������51" ��[���S��Y=pP���LmkL�0��
{��9L����L�^B��r��?N���S,�����n>iJ�$�LF;�m���1����SzF�{\��v��Q��jlH���M�����]2�,�%��W�m8�)�:�XHH���d,x�
	�~~�4�n>e\�6H����S
c�����i����G������R�][����-k�_�������Kw�gO�8�FV�@�}�d�~;H��qT��S��8B9��0��7� JS/���t�#�f&���f���xo�q�I^��)��(<�w8��wJ�AZ�oI�(t!�������������0��j�n7%����4t�T�)�@���|$UVZZ:Z2�|��mRZ����S�3�~�Z3!������SF|����.�Eh�ip��	�
$��5`��`������:D��uk������_�$���9�o?�y�����$D�)�����u�V�z:���RdN|B�F�6M�D�O�~���=��7�V�ADy+�!V�n�<mQ��������H�x<����b�x�f��{V��*�P@�)`nB�����@
cW2��1��T�*���0'_��-���||�����F=��Z����:������k6�Y����T�����D���������@�)�L��D�'�U��VKP�d�s�HE��L
�/�!�t�������YD��L����Oo[�����>�_�q*��������!����h2F'G��������~�<�S��p�1lg���Z���ZuP�&���=�q!U�������]b�t[�O��������O�)�	L���
�#)�$?���}F������_�-�p#�.�P�f'A��F�^�AW��T�ZR��|��n%������?�z���?	������Fk��������g���Gnu!d> Upw��k�7��x?��{�C������)�;�z�����/.� �Oq��������kD����kho���!C;d�X_1�������A��+�P�A��vu�-��-���L��q-7��ei���E�<H�M�O�Kf��@�bW2��1��T�*���j�0-�&�2T���s��)=t��[oI�����/n����7C�h�h�I����r�Ic(�+`
y9�r�c5��L,�?oe���*�1R�	�&�I~b&�/fCf{;�&����K�	�_�7:x���~�1�������"Kr��������[�B�m���
R�A'&dQ}�L�|nA�g�{��v�5��������F�W)d	��1+�#@R���T������/<�SXTF����T�����wED�F&��9��{~S'�$���~�[��Y@q2�@J� �-�����(2;�M�~��Q/�_�Q\4�4		�(\����a_����=�}����j�u�$I`�X��&	�u�6������������{t&�����rm�V-Y�,U�����_���{���e+��>�E�Y��R����%�^2	@�k�H��%�p2A�7�U M�Vn$��j�-��S3���,5!�M����o��]���W�/�����!�R��$V~�A��K��E@Yi��PH�[�n��\�$�
)�M�+��n6��{j�O��k\Gf��W�X�r�S��)8���dj[c���VU��5��	`Z�M\e���SGW��4EQ��+��,�������c��b�����}B����L>{�q1M�w`���8�@�<b!!�#��L
�/aCnl��������0�*d7�u���l8Yi
n��}����x�����!�a>1x�o��7��^��fB��Cs"'*�/�!����t���0�`�U+�Q\N->���2vL����#��j$SB�����$���x�[4�!�}�@���!U�A����@g'0��0;%)��Fm���ZR��(�>C�s�H����J��������g���t�����2���g'��f�L�tD��x�q��n��z�l���P�	���G���Y����E��V=��{n���L7�"��gB��?�7�f��l6�%[�D���?X4on5d��`�����Inzj�F�Q�l��5i�k��9����z,��ic��g{���e��w��F]���^��a>����]��6�.������9J��|��@���B�YEb��L�z������Ftn������S;�_��\�i��G]�$�o���o�^��uQ�/q'��U# IDAT������a�O�Z������5���WHq���'������c�Rg[����[0�0���8������T�dV\�bW2��1��T�*���j����U�J�B���:9{Mh��y���fE=H��\������e[SM�i������M��k������l��4i���/�O'�����m�d�'��?AG�h�������47�Q��$�8�@�<b!!#4/�L
���
�,?=-U =��"K����}��<�4���U@������j��>D�[XY��5��4�j<�����������[���6{f<9u!�/��<��e��N�Y���}~��T{KX���^_���/�},�
7�X]'�xO���^]:Yw�?z������n=xO��7�n��w_���]��6�<]��_�_��&�p�h:��%u��[����x�-�;�y�Ao]~a���C�k�T���m�z��M�&2����L���w��:��������g���D��
_�^�:�e���&�2�b#���4���.��X6��Uo-&���\.��������N�r��17��#+���&��:tuP��3��&s�#Nm]��ha����$�^��&���5�����(�7:N��e�V��v�e=:���K��%'���T@B>�U m��RE�����}{r��������LY��b�������w�T%�W����`�l���/��p~�;�((��g�v���>%����X�SJ���Q��A^�H���wh�Fqr��%~�Ri���$����%�Z��N�+�����a�U�lM�9L����LP�^ ��W{j��������4/�q��m{�V|��0�_��o�'�����.�B�@Q�=&�5b|~�u�;8�A�g��V?�jc�����x�wz�/�U�}8�)�:�XHH��"�pi
^��u�M$Nm�|��@���H#@h
�:D�E�����-��'�s�v���~mb�
eyi��6�		[��!U��g;�*��O.���O�v@�k��P�A�/B�'T�/mdQ^is�i�g6o��������}�"x�����A��\{ks�"�.<�%xWU����_���h`;��%�)&&�������N��6�jx=Q�|�m����V�������5�^�-u��:��p��L��]mW>L5B
B����[�!�B!�B!�B!T	�B!�B!�B!�P���(�B!�B!�B!T/p!
!�B!�B!�B�\�B!�B!�B!�B��B!�B!�B!�P���(�B!�B!�B!T/���?2(2&&&&&��v#B|cZ��u�=[Qe7�2tP'�G������"�F�+�	���-���RX\50���E�Nk�6��r���C�s�M�
?�TX{!�B!�B!��LX�:P��E�/�����[�I��S��K�
��
:�F�Y����9�yU��=�������������3H����B��������Y��������
��o�c�����
�+v%S�C������j��J�@�Z9��?��k+CfiNb��=[�|�]���������F�_Z0b]��OMzMY8�����&7?���������F��:z`7��`�.y�����;>�Q��Sx1�@8"��������S����?�]��a����.��&qS�L�����_�vV5��`��fG�c��������'���?�U�j��Zv�{U����no�)�gT�=�^?R�!0�9�������!���������K�%TeF]���p��KKCfi����^;�>RbUG�����o����%� �����nB�*<�P� �{-�	���D|j?~�*��e�;�����2����j��:��dj[c��#:��-J'fx����������v!���n����k��=NdV�c�h���������t�o�{���}�r5;�X�����inGRI �z�w)�>�?	����t���Ec������P��b@�pDHU��&�#��
������iz*��
�0��p8����������H���5����}/dW�/�
��U;�Z�S��}�}���{/�?xM�x3������D�m�;5�3��n�,O������WL�-gl	��yg����w��f��*��G��s�A��/Gg
��J� �������1��'�ie�����vh�����(�McG����
P~c��e7�� ���,�:���./?���]AU�Zj�]uq����r�������g�}v��!�0�����7([q����kG./��2v������6�fF���q_T�����En�zY�2�������s�����eI�1 5vm����^X�p��"���@Y��a��=~����zt�|�z��Ol�Vu� � �O����-��_hZ�4��~�y��V��'�-�[������{�0����f:d����7zZ$����t?�g����i�?�Q=Z�rs"w�]v&���Y���k���>v����3�a�c����X6f}���v (�rr�H:����s������e!H�Y�s)a������l����g��:����;��||�3��x�|�]2�j���m�!��O��plQ6q�;�N/0L--��x�a
 ���k�G:[�aB&	�h6f��A�v��5j���F�^�����n;�Od���������o�'�.t>��$���������.^(��������$��)y����m1�g��}��9��E��H��h�I7y� e��};%6d�k�'�tk��F��W��Y�������C��>��A���7	_����w����������O��7I���W�.���to����S'�y���\ET/���G�����K����YZ-��oI�(x���nb��E�N��t=�}��2����WC���rO��g�o���-l>f�N���-���4s�������|A����y`����CFz�����N���������8�[�aXo[[[�~������
���ix�Q�����d����4cZ&�E���N7�uu���[���
.-vB��% �U����P���"@��{����3�\����v��VLPb{V��U��OB��2n��-~f�=u���f���V~u��8�s��~���s�S�V�l*������lt�qo���#gl��Z^�1�zV�j5&Rf�����q}�o���sv��s��z��>zBE�I���N�y��Y�s)��K'Vz����g��m�����|�����Z��U�S��Y=p��]����B�����cK7��T/����_S]���&�e�ep���x���4�c��d���24Xp9���(.��l�����g�Z:�'7�P�?��
� B*JxR��#g��D�������7�j5�H���N����i']#�gL�����^�N�"�2������#�\>�}�XkBh�r���v�j��.�W�F���a�a��>�O��%�e���v���1�_�~����>�6�5#���tm���E[R7��F�v�K���kO���?]�]2;9���>�p!����[��6v���]������RK)(}~�^����-���*�����8�;���q���g�f�d��}��ua��Q�&�u`E���M���fm]�X����G�K���Iv/�Q-��/=�(�8x������-�o�P2@$����Hy�-!��r
��J���?65d@�~����R
 ���;���2��J�l_"t��n��A6	i�w�D#�g%�Vc Zfra�>�{���Kqe�7p��1}�=��Y�'�q�8������Kb����Hq4�Mt���(=����u�'hkbD@vC���#���%�z��F�+���B���X�e;��P/�B����q���bQ����p[�IS�$�e
0��lC}����f���3j�����f���TcCD�m"�fN��qf�-�>��m���!�TsR�q���0���w�WA3��S��k���MJ;%�0�!��N�FJ�Xyd���[��/��+��^���6�Uz�X���tW{�4��id���'M����t�G�H<u.�#�������z�	�4��z�M�>R�ajf��:iV���������`���I���Iq��y���u�����B�M�,��=N���#+���vSB�L�HC�Me�2�d���G�Qe�e���%i�Sv��Ii��+OM� ��k��,�_�O�]���l����I�&�*p����E��u43����W���`��n�W���Q�����|�:�M�L��g"P<	���x<P�l���x�������w��mK����|'�\<�=+1
��je&V�v� �tB��������nm�2 I���8�h�?��v��s%�=+��E��*�P@�)`nB�����@
cW2��1�P����k����e=#`����/w��R�����yA+?��^�}�F�_���Z�����|���'��g�4�W�D:N��f`r���'R?A�BT�Z&!�C3)����2L/Yn����E�����}l������/��3l�������O1;�m;��&cTqr�}�����;Q�����>5���Q�vV[X��>��U�a2�i���R�\�H
�*���%VO������^��������b���d<�p8��H�3�}�g����x�e��g02���o~��n�:��tuN��%uK����h��~�4��U+<U�I����>P0Z;�ve�
<�<���o<rC�!�����^�������4�[*�]������o��/�%D�	Pi���d0��7��`���8e��}!�g��^cP�2�I��)�$��p��������:��HF�����������rc�Y�FzP�/����A>�.��5�]����B����8�(���@uzA�;����C'����HJ������)?�y34�������k].�46������q����*':V��`�����V�>����b@�pDH��XM�3)H9�l�log���A����`i0����FOr?��O<�9����TdInY�Ys��r@R�����I��k����,���)��-��r�S����^��V���##V���T�,!�?f%HJx��jw~�t�����s
������*�R����h�����4��t�o������ou��#�(nA&Hi$�%u���Ef'�)����B#����7������&!a�������7����o\|�Y��gE�$	LK��$a�n�F>p@�u�T��t>�c�����w]~R�m��%���"�*p�{��;w�##|�u��l������H��#RR
�]:�d�K&�v���3�*��Y�dB�o J-t������r�j��%��|]FzV�� RcP��*����g��S3���,5!�M����o������S��9g+I��,xo�^�Fv��F�S{�x�^�:2sn��
6DO�O�K�H�j���m�!��O��plQ6q�;�N/0ut5	�O�QE������,�_
�h:vx/f���+��!t�]����@���wk��^(���� fR�9%l��
qw�������U!��!��ed��)�J+Pp;%���$���m����5����~k�������7z��9Q�|�@�}���@$v�a��Z���rj�yv��c:\�!�U#�B
���&�O|�������#�fM
��B7dw8�8;���.����)IIU7j���@UK����b���9~$���w�So�fM[w�3v��~�B�Oy�����]k�F&F:������d�QN=Z6ndb��^��������v�k��Yk����=7���
2 ��gB��?�7�f��l6�%[�D���?X4on5d��`�����Inzj�F�Q�l��5i�k��9����z,��ic��g{���e��w��F]���^��a>����]��6�.����N��W���nJ��B��������[�4��G~���u�j�������5V��$����5� 2���g:��/��e3�>S�N��=<�3|e���t�l)#�	Up����3�{�\�lk����yF��<����� �j�����W�J��5��?5[���]�z�����e����
�j�����n�t��$W���i��������&�4liaii���&�����lg����I��,�]xax:	����m�'�?AG�	:�F�������������B/@�T��� 2)@;rJ�����R��K)�$/=��GYIS��hPt!�������N�s
�����^3kK����zL]�9i��^]���=o��`��S������Zv�h�����wl��7�M�wa%_{��u�,������p���u����_�����u����m��������$�{#�vi���=�5om3���?����UKmbG���hZR7
~���|�kn��9�z��3_E
^+�
�o�h���/l�6�q�u��g�%M�;��y���<���=S\�%�dV�
�2�9.���7�(����N��|w!8����zk1��v��p���>�<p^w��c�����Y��\6	������,�x|6�qj��x�Gs��8^e� 9�J���5!�x����-�E���q��/�d�����/������X��,9Q
�{V��U�"����yt�����%)��.�t�C�V�����s�z��H�I��Kb��AoO�����;{W�)�sV��u�;�������I{���	��*���D��L�C�4���-�;�J�<4$Qe>�/��u�]����B�Gt`[�N����dv�jO�y��|�t7`��%?[�m���O5���BW�������������eRH(J������F����y�>���0���_m�1<��a�N��ec����/@�T��� 2)�f���a]f�S!��(P��/�H����5e�nso�gD=���\��c��_�jCY^Z���sB��V>j�82j��:vU��\h��\��4���N�t_��O��_����������l�HJ?�������tE�T��M�<�����%D�]x6K�0$�pU��v��^40�D���S��@������w#��4h#�Q
�w�Fm����������|�j��<�*�Y�0-_���R���s�
���T���6p��T#� ��z��5B!�B!�B!�B�p!
!�B!�B!�B�?#
�o�����!�B!�B!����oD!�B!�B!�B�z�Q!�B!�B!�B�^�BB!�B!�B!��_�B�q���:�
�%��`��QCF��w����F4h3�O]RM_��V.E�_o�V@+U{��[�A#�k�M����-���j��3���E�Nk�U��!�B!�B!��`5t�ht����z���W%
��)����E��[~~K��n���C��T&�)���K�Y|�����W���t���C:7a�<�g���G�dC��[E�X:x�c2���]�����S���gj����������2d��$F_�����U��M���n���#�Eq�������s�[�ir���	�<a	�N�fL=��ys0f��{�������;��z2@�������������sf�����B%d��e}�����\�����l����\k7�u��I���6V�R*Q���ef���1355g�t3��?�f:����?��<3�9�uBj^�����XM~X����U�],��&���F���Q�9[��"@z
�����:6��-�7�w�s���q�P�6k� �C���sm��i����Q�7�G�\|O1��j������[�q�Y�������a�u�l/����2b��=:��g{�{��;����y	bVRw���(�*�x	��$4�
i0�F�|�������n���_�2`C��Y��i��xe#�S���8hR�*FckL����
fA�^���;f���r!���a���M��\���]1i#a
� IDAT�������P.}��h� ���7/�O���0b��J��<�Ea���KY���}������|��-Z���I4H�*�1%R�L�?���Bj^����������?��,�Q-���j�mx�����N9"�3D��^�!O��$(�V6�nS�	���:q�d?'��{��I���)�!,���[����H�8��o�a���nS\�i[B��c���{U�mn�X��D�Hz�x�v`��K�/�VV�'�II}P��R����_������nD�=����J_lD��o,���N��e�c��'m�OJJ���D��������m">�e�}��?�]�K�y"�w�������^X��bC.V��������6�)1@4��iI���7n�]9�k�S.�N��8v��	9r4"&�����w�����wf7=e���O�>+#c6L�p����7c��^���2���ib?#�~F������-�_V���Kw���M���x`�Go���i��������:�9y3>�����Z}��������)�u+*N��O4q�������qP�������i�6���=u<xVI�1�t-��8~K����{���A���J�z�:�p�]���������&�;Z��~0������M�u�����m�:����w:���gf��5+v��5�z�ju3� 
����q����z��m���#�Y��VmD�Y���^3����G�^�"z�������3�/�r�������N�N��@fX8����[����S��vp��[�������1%"c������R�B�I��/�@1����&}���O���wGa�����N�"�&C����1g���,Z�6+MB���������Qr�V�O/n������P�Cf\�s������?H����[�n��~
��;�	m�{�>�o���;1�"�V������Bm��K\:K_�fJ��z���(S����u����c��wK����g>�*83�������}�N��%����������<
���y]��Ow�su��w��j������h������X��t.��_�i1�vw,��;�7�y�8�MWJ����f]NJ�[J������r���}��h��c��+�IZ3�):V�{������<������b��k���I��Oz�~��>g�����y���e��~�w��?Ovv��:���i�$K�E�����%G}]9���><���q���*E��I���'me�Nf*�����}�D��+�nE=�K�&���e���}'�����N^����J�=[��P�����ST9�*��R�^U�2��g��A��,s7m}B��#Z�v�L��t�����|?;�~a{�>����$?6��5S�/����gf��5+v��5�z�ju3� 
��x�	�u�ck]8�]�i���},�<�k�����c��8��%�<S�r>����	���:z�Dy���zo<������1S���BB��I��Z��l��m�����������"wjS��8�P�L";������A�N��M���n{�n��\:�d�m#B��:�Y�J��3�K~���O5��2�0dTo��{/H�X����r�t��C��#N��s�3��P�]e�L�jT�������@����M���{N�:��'6��O���
�MI�OpxJ)@����;9kL�m��>�o�]�o��!=un��������W�?(��$b������Xs�a9��SA�u�9�^���"�o��Q���y�����YM���L��������J((yq#����-Y�2IE���+����/\�y��]Z����N.n=��^�$ �����;����O$OG�e���G|	�c��)��C���H�����-�M�F@���c���r����;d�������[��
��������y��N�:�*��R�^PY��N�Ze]z�v&	p2����-1����-S}(��g��24n$xR��������>$~j��U
�]�hl���Z]��"H� H�Yn���?!��^��_�'�fD}�|�X��C�ONJ�f���#a��V���FuV����6F�'t��g�U��/D�8�Dd�M�	Qcd'�|�	��~u|<�zeR;
r�6:��e�C��N��+��9��aN�#���T�����|�]��C�z.���;���sR� @�dp��&H��yT����R��<a�0zvY/.A�d����x�=Zf����g�Y��g�c�����K&.:�G�u �S��D��~(��Y����S'������>�Chh�?���Y#8�ZC��4�'���4�V�6�X�AR�nD���7�^7>����`�W��%��&��bX��;����8'5�H��@ �%�[���h���p�������F������NMf?��X{�>���z�alm���n����%�j�s��fl�i-|� E�?II��H����n�%H3��x.>M��2s���,�P��(��m���s"=���{5��R�VPQ,S��g�9��>�|'���vu�*|�#���07!�k�(p���U�����A���,���i���<��#�YY������x���x�'�ut��6k�w\r'��������n)�z��L���f����
� V#pS"�l�&���)z�c�W?�e6h�r��M�+�d���mg�7�m�K�e���.���T$�S�M�eC`�Y_��3oV{�|u��1��?y������\F���Qea��mVP���t�� �{�/d�|T�����-�@�����l��3_��q��bq��f�[(���h��������?���m���_��hu� ����������:)��%J]�bY���`�	���ea��d��07�"�Uv&d�=��GR��������3xH��+�R�r���t�$
(�(�5��f*CI�]SY�� $�!����)�oU.aQT�����2U~����N$���A��J�Z�uJ�zRaE=��w}���o6������]���a��KE���$H��*>��#�212#�Jd~r1���
���: �S���8hP�*FckL����
fA�o]'u��y��$@�������q��?���3��V�uq���@�&���-�34p�}#�uA�zbl�P�o����;��������)~b!!������IAq���n�`��u������h����7F�N��;G�~�{B8���/�S~i=t��)i��y!0������"����\���@��|�:�Y�@}c��z���d��+�7��$�����i�P��/����g��J��9�?�)�U���)���p#�}��m������Aqe��R���*�����(�M����_w^�[�k�����!��}42 �����h.��*I���p�������G'+mH(VSkkc~��rU9a������.+�/](_	���yiO����Q+�Q���:kB�������-�3A�hQ'1L�3�+LO{����I���J|�L�H��O ��j�O����_^�tu(���\��
��}-xW��ZR�#��P����]ecbR�b��|�s��;O|�1?b�T�2�%A��=+�v���u#� ���k���%x��X0��4��������9�����c>%�FH��83��A����1��V�+�Yi�z�����|EQ��~�6� K
^����������uB��m��1�����_��]e����14�O,$D���4�s��9����c��l�TE
^�{�����<�y��yJ�)�M�S���QgQ<D�,'����"q�L�H���	�-�7	�BI�P�6k� �;���CW���)ojq9��e�^��X�G�j�T�@�ut�	a��4��������)�5ofD��Im�H�Y��Y����I��gI��+��o!J��!���z��}�8�6�M���|N���@������i��Z[t�`Z?m���W�/�C���u�\.G$���|������Ftn�����R��Qg>J*N��#�����,�^��x��N�������S�]�W���l�����������5���=J-�4�����������Z�IC��R���h8�o�k���-�{8��^?�w=��H����VW.��V�t��)O�n�\��j���H�
��V�!�����c����z���x-���4]���������/��`��,���e��JI��/��X���������O'w�h��^������t�������f����R���R�_Y�d$~j��U���U�����A���,�4%���)���3��u�m�F,�9P?7!>St/*�Q��VVVm��	�Q��VVVm��Opl�x��`�������,�Uxa��l}���B&������?�nkeeeeeei����U�8�Dd�� ?��5Cj^�6)�X�������Y�J(���������<�7�1t��c
��:����S��mimej�����R<���*��������[���6�b�=y!U(i�.m�2A�c'��o����T�$,���A���/��#��s����|��_�.�l��=o�����W�_�d���J�y.u������(o�~�;7+��h�c�!AJ��R��>	[�t����������[�������s)E@E���Y�r��7�v�%8W;�|u!tw�e��_��a���\p�G���/��>sg�<a������{{�����/�,�dvKt�stJ@"��}������������������5M�5��P�Q[7���81U��9�1n�}�3��~�!?pf����x�z�q[��|S��w/3��N���>^T�9:ka��T�+����W�6v^�r�K�L�}���tRQ�j.���������d����_���c����r'�zyj�����{��qo���2?U������*���}�66Z9s������G�<�p�����k�*���H��������3.	8����l�\�~j��UM�]�hl���Z]��"HC@��]��;o�����X%o3��X���{���	#�ea+���@�\z` 3��M��&���q�������uZ�A���x���l�~�3n���z�$��=5��
���C�cJ����1~b!!����PmR>C��?�>������[w(���&��`�CDil�����9�R��D},��>a�OM�t��������>�B�1Zq\0���z&�*�I�,t0L��� �g�����w�O��/cd����S�Oo�XJ�e�\�<g�)Q����������������Yt�b7(y�U"|�s���&7ALJ��R��BAAAAAA����������s�\4�O�
�3��~jl���V
������m��,�MvL�cW:�l��������A�S��BAAAAAA>�� � � � � � �|p!
AAAAAA�,�B� � � � � � �Y��(AAAAAA���Q� � � � � � �g��Z��6�2d`'=��u����qIIIIII�!N�
�V��Qq!N�4���G}�f�LVk�?n�s�*A%�*��SAAAAAD��4�)�����o��)������2�/.�w���������9��ZAeR�o���
��Qx�)B���|����]�������o��
��k���r��D3���]�hl���Z]��"HC@�[;��?��kk#v�����o�#>��[�������4_0bm��U����q�gm��/���Oh���%;���>�7�`�����������F#���8�D��	����_�U�*+�y�~R�'F���&?�
[��Q��a�.�T��V�������:��	�Sp�����:6��-�7�w�s���q�P�6k� �C���sm��i����Q�7�G�\|O1��j������[�q�Y�������a�u�l/����2b��=:��g{�{��;����y	bVRw���(�*�x	��$4�
i0�F�|�������n���_�2`C��Y��i��xe#�S���8hR�*FckL����
fA�^���;f���r!���a���M��\���]1i�������P.}��h� ���7/�O���0b��J��<�Ea���KY���}������|��-Z���I4H�*�1%R�L@?��
�2T;XI�t��|1
`�������F�$gj�Aw���B?k�S�H���O���b�y��%Aa���A�u�*N�v����%{/F��Oz�PL)�`��$���WV�G�����~�
���v���ZM����/����ms���E&��@�c�����^J|)��*?ALJ��r��#�\�B���w#���m�NV�b#*w~`Y��wj�-�0�=>i{|RR�.�&��\�W�]�h��,�����y�Z\������-uD/���7���^�����=6��o���H����OKB�_��p+���]+�:p�u2���[�OtXH�����1QV�^��dD���3��)�L�~h�Y�a���;��_�sn�����y���M�A�3��E�����o����*�X�^��TTlB|��=z�W�M��<����q~�����qW�����m����D$�N���[Qq�V��x��������������m�'�n%H�a�]�cr���[Xq���z#�<��~0������M�u�����m�:����w:���gf��5+v��5�z�ju3� 
����q����z��m���#�Y��VmD��X���^3����G�^�"z�������3�/�r�������N�N��@fX8����[����S��vp��[��������1%"c&����W`����Jj^�6)����?P��d�I�F����\��6���B�(���:�������~����3k��\-}��&!�M	U�`]�Tq���O+����e���?�
(�!3.�9p�z��G�$���s��q�o���s���n���C���<J�s.��hU����+���������k�1(�J^��15,�[�p���=V�x��t�O?}�c��3�����ko���d~Y����������?��X������t�<W�)~����.�m@�y����.~����qH��k���+��n7!p��^��~��G���t���Y�~�����������[�o+�����G/�6?�^[�����5S���c��w���y���#���_�� ��������.��w��Y�s�?h:~����]V�1�wxw��s�dg���#XN�6M��Z��X�/]r��e���i�����w����R�|����[Qq�V��d��O��k�wI�L�r�V���i�bgvjLt���zu��Z����';�~v�����}z;�i?I~"ljkk��_�??5����kV�*FckL����
fA2/����@���p������X ~3"x������o�fiq��Kny���|v3���=]�<�Ma�7����qL����~�?�Xe4�`%=)P�#3��u��?����+ok5����t'NGE!�E'�H��i5�hej��SG�j�2�������1���,k���j��mV��q�����q&�S�C ��:���w��8V=����/��������{�\��d#�tW�#���tu%�C��������$���������:pb���d;���1��D����d�x�������v+�#��������S�v|)�Zl�u��r9J@"�k?��k�1�5���>�X��@���>/��F�%|������XP��T)�����)|~!,<����7��o��u+�T8�����+��������~��%+������3��[��Lr�n�{����:��D�t�^��
����<1�y�B�9t�I�9:iQm���i��+r�6���K������S~fY�LL���W��������I�hkjL@^C������qfV
4(v��5�z�ju3� 
� -�g�a�o'c���z<�5����)��3`��v�>9)��1vr�8�{� IDAT��wxZm�N�XY&FT��D9L��%��Wy������1�O5����d'���~ a�w������]/�Lj�A���@�<�L@~u�� R�ceq�3�^5�I|$u��*z���5������v�T��;�s�x}N��C��}��98�j�~�\J��'�!fcC�.��%����u^o��@�����u���!���LzL�Y�uu��Eg�H��dwJ�AQ����%?�H4��q�����4��rm������
�c��5d�J?�@�IM�iuk��$��F��y��u�c�Z;�~�P��m2J@,�����Q��;i�sRc(���W@	�Xp��x���L�l
���Z�KmTiI)����$pa����+����@WO� ����q�M����]-}.���
 >��/���gi��I����-��i��+r���(���?���Y����4+R���h����@cW1[c��VW0��Ztl�����r��ge���.��������d��������q��
�?8v"*o����!z`3y������C�*��X��qL����	�]5��g=�I�QL�Yf��,��w���"J�z.�v��}S�V�4_v�o���NE�:e��iP6F����1�83�f���W7����)����e���U�j�f�JP�!L�2���B�Gy!P�+���
��X;���Y;���w�)�
l������
)���F��������c�+��������U��V'�X{=q-��p
�����Y���(��k�.�����^�MF�s#*�XegBV��[y$��y9q���^z	9��t���.U(W	H�a�AgMB����1Q�iQ`�B1���5UA���B�>����V�E�}�Z�*/-S��K��H��I�b��B��� 5���WGQ���z*�����|�V&�@f$\��O.�X@aA~�?5�������b4��TZ��`f�A���uR�����]}Ad<�����'�#:�9�
��Y��]
4m����8C���7�*OX=���eB��y+�>��8�pS"2f����W`��0������IA�������n1X-6�z���������xO�V�JE~�/��N�6%
�y /F�u}�@�����r���fl!�W���fM��]�Z�Q.�����T�U_���s3�d�=|B�;�l�����-(/,*%^�|�T���WED����f�����	;��k����g��P|�K!��D��~g�R��6�;��y�n��U�Vv.�?�`����B
�������P$I��!��X�Y9D�NV��P
���������>�(�r���?��{1�]V�_�P��!���~���V����3t� �:B���A[G[:r9f���|��0���0=�5��&��+�)2�"-�>�X��<�*S~y94��!�\�>s�"�|�f����"x��X0��4��������9�����c>%�FH��83��A����1��V�+�Yi�z����mEQ��~��; K
^����������uB��m��1�����_��]e����1�O5���V�y�fR`#�@~�n�q�ESa4x����"s�H(��>�)Y��6O@^F�uDq�X�Bw�j��~�$�����e����|��A�K��IT��e����N���7�����2v�
/jW���F5
A*| �:���0�q�`P��z�����73�x��6d���,��,`sy��Q�������kq~U*���S���?;��V�Q����7m�s��9�u���af��r��?tjm�y��i��e'_e����7��r��42����z��/��Us���K�;D�M��l'D������QO/GU<zF�DJLy���)���+\zY6ofa�{��i}�A���PG����w��`a���X��`f-���!pF)��J4�����U���=�{�����~�D��Y�+ii+S����'d�Q.�[5ilj���u�T�s8�0������w�������O_�joia3x��QF)��I����?5����kV�*FckL����
fA���b��vr�����U�6v#�����)����eG++��f���UG++�6�E_�9�c<�r���c��U[�*���l6	����m!��t������j��������4�S�-pS"2f���~V*����j��,F��PZ��<KBvA	E~z������� ojc����B�uVYE���q[Z[�4��2������{���zv���w��M��XwO^HJ�K��LP��	������eo��6U.	���`��yD���g�H?����$?_����K'�n�F�[?�������$�����~�K�{�kaa7�����N����6���aH�������'a���.�tt6��{r������;Zr.������5V��!�F�����j���.����l����:l~�����( _��W�g���'�8s�#�zo�����S��������o��|`�N	H�� ������s\����|w0P�����!��0j��5�'��9�<�m�/�c&��O:���{��R�9n+�o�U��eFr��W_�[)������R��L�Z&_���y�W�i/2���n{�IEu�T�38�0�����`4�8.�g#	����*�L8�$�H�/�!r��yfV	4)v��5�z�ju3� 
�wv�����.~x6b����sb������j&�����#��r��� ���6qw�(J���kR[c���i	}C��E�
������1�k�A��t����7$��}8�)��f����W`����Jj^�6)�A���3������uG����&��`��+�
�97�0'Q��������',����.��}�|u���g_�7F+��Z�Y�Qe9������U�d���2�2P����iU�e�,z[��u���-�A��������:%
��]��0�{�[�!_]����=����JVB�uW���������1)��$%%}�.���s�\4�O�
�3��~jl���V
������m��,�MvL�cW:�l��������A�SO�[�!� � � � � � �\�BAAAAAA>�� � � � � � �|p!
AAAAAA�,�B� � � � � � �Y��(AAAAAA���E-Dq�t2����:�r�F����X7���B�,G�%%%%%%��8����+���������p�p�[u5.x�a��b������s".lJ�/j$EAAAA�r�4�)�����o��)����������Z��oi^�CT&�!�fxxa�P	*:��;D5zVN��;up����g�O�l�;�lh]_+�����&�)8hV�*FckL����
fAB��i��I�][�K��'^�}��y���XM��v�a��k������p�s?ksm~A��B��',a�i�4����Y���WOn������7���1%R�L� ?��uBj^�����XM~X����U�],��&���F���Q�9[��"@z
�����:6��-�7�w�s���q�P�6k� �C���sm��i����Q�7�G�\|O1��j������[�q�Y�������a�u�l/����2b��=:��g{�{��;����y	bVRw���(�*�x	��$4�
i0�F�|�������n���_�2`C��Y��i��xe#�S���8hR�*FckL����
fA�^���;f���r!���a���M��\���]1i�������P.}��h� ���7/�O���0b��J��<�Ea���KY���}������|��-Z���I4H�*�1%R�L�?���Bj^����������?��,�Q-���j�mx�����N9"�3D��^�!O��$(�V6�nS�	���:q�d?'��{��I���)�!,���[����H�8��o�a���nS\�i[B��c���{U�mn�X��D�Hz�x�v`��K�/�VV�'�II}P��R����_������nD�=����J_l�V��Qq�j�,���;5��
@�����=>))a�Km�_.�+��k���P�I��k�<w-.�f��P���:��[L�{aI��
�X��������J������%��/�H�w���N��:���-�':,$�hH�����+f/�y2"���������y���1����o�K.����1A�N���<����q~�����qW���J&���o	��vO#B�"��Kw���M���x`�Gosv����0.��>@���[Qq�V���&�;�������6��5������22f��aw�z3������4�?+�6���=u<xV�&��N�ZP��kP-2�R��e�6C��>s-..�D����F���d��L��7���y����|�c����.�;��uA����Y5p��]�hl���Z]��"H��2��j\���C���y��(�Hd��U�GxV�1��|�c�������{r�;��L������n;����S'6����s:�Vr������\����������qL����A~b!!j���PmR`c��?P��d�I�F������6���B�(>gk�S�H���j?qgD��5Ce.����J������l�.m�8A�����������x��k�����8w=�����w������7�_1��}B�����E���(�N�����U!��*{�P�b�����������^(y!J���(.l����~�Xu�����>�����
���k?���}���e���������;�,�`�r^<�����\���]$�����@�EG>00����3V3�!��E�WF�DZ�����z�N�Mw=�s��R�f���B�����6n�����s�r�8�|�X{m���&��[u���~���K'����)��E�K�X�/]r��e���i��������u��;�h��;E�Z�Y���s���';�L_�r��i�%�j��m~!�^��i�[�����L��L��������(�����G��]��o�2r�H�+���{80�����e���}'�����N^����J�d^��j�)���Pu(��y�T��2�q��'�;�um��N�.�8������������N�I�aS[[3������qfV
\�bW1[c��VW0�� �y�7�P]:��%�c�eP���������s�����~;6K�C�\r�3�/���������/���K���)���3_<8�)35�O,$D���(�E���&z�f��~�=���Z�/r�6����QQu��$R�cZ�;Z�4����C�n��'�fl���!K��6"��s��4A�1c��G�I�T�-�CF�6������U�n�)�K�l<t!*:��?W;#�%�U����F%]]I�P��
�����$���������:pb���d;���1��D����d�x�������v+�#��������S�v|)�Zl�u��r9J@"�k?��k�1�5���>�X��@���>/��F�%|������X w5����':�]�����8-�b�W�tiW�`�KRN���V�Gq�^��
����<1��t���fl]�\������k�����g�!���$�����c�u<�����A���]�R���iQm��������
JD�����mK��L
�I�zsi��ki�/���w�����;������"S*��*K���iT���K��$N��%�����eb���B���X���O
?@[Sc�Z����O�3�j��A����1��V�+�Yiia>�
;�'�8������������O����]�c���I�����{$����j;t����21"���&��a��.9�,��S��(������)~b!!j���P���~ a�w������]/�Lj�A���@�<�L@~u�� R�ceq�3�^5�I|$u��*z���5������v�T��;�s�x}N��C��}��98�j�~�\J��'�!fcC�.��%����u^o��@�����u���!���LzL�Y�uu��Eg�H��dwJ�AQ�����QAAAAAA�,(y�V����S'������>�Chh�?���(\��X�k
Y���[��oR�xZ��4cAI��y�{�`{��������_E>��Sb1�f�����IS�8Xc(���W@	�Xp�L���<x5�s'#6�{�kG����
��J*_^�����N��)�����|�h� =����%��ck�f�v�wG�,yIK�K�4c+�6� h��d�G�u@����JKJAGO�^�}U^d<��eY�9D�vl��Qt/�f�"U*��*J�ejaaP�,=G���g���v���NP��x�Y�n�@4�LQ�������1��V�+�YQ-:���
�xt�G�����]�^���?���������Y����;)�p�DT�tKa�C��f����3g��U�������d359vDM�c����,�AK����nZ\�/��mg�7�m�K�e���.���T$�S�M�eC`�Y_��3oV{�|u��1��?y������\F���Q�	�Z�YA�To��.��m��E�QE^��:�d�&����}��|5{��b��a�u?l���B
 #�Q��~#�or�������k428|�w��	� �^O\��<\C����~�(u!�e����}&0h����%B�������4V��,V��[y$��y9q���^z	9��t���.U(W	H�a�AgMB����1����Y����]mZh�$OJ��m�V�:��_I)��M[��e�@���_���?�;S���=n|�8e���%8�*� � W^ZV-�/�����iPP���Z�%�=
���z�/���".�z��� )�k8AT
�W�Z���p%2?��cel�E�T���qfV
4(v��5�z�ju3� 
�����:e����� ���]�\�8y��a��i+�����R�i�FP���8������g=1�L(�7o�Y�sj�cJD�L�?���D�zb�����id�w�o��Qp�h`q������C'z��#L?�=!�[���)��:e��4����u���qeTqzZ.����
 ��
>@���i�����Zk=��[2v�����k��}n�{����O�v��Mu������E�d����?�>��*"�66%�5Cwn�O�A�-]V�<=3(����^
�T� Z%�������������Kw�t�Z���s9����FR������H�6�CH_�dg�=:YiCB)��Z[�s^�������	��������vY�~�B�J@,��K{Zd�M��Z	���d�Y�j������}��%�?��:h��M��y��5)7px]����aLLj\���ov.[q����\���������_���������[aR��r����.2��DW�������������V��X�o���@��]K�yd�jp~�����g��\���(	���Y!�K�V��$a��]�z�_;��)�#��@c�������l�o�=�����"���qfV@�bW1[c��VW0�� ����	���(��]��mdA��.`5;�';����8������c
 �������[�pS"2f��������y�fR`.x9��w{���-����+w�������G@9/�9O�:��)x
�B0��#��������Z$���I�|3a`���&!_(i��fm�bgup���y;�M-�W�v;���+V�Q�� >l]m@��8M0�es=��{
t��Q�wR�F�Y��Y����I��g�;��b�TR��(��F?;��V�Q����7m�s��9�u���af��r��?tjm�y��i��e'_e����7��r��42����z��/��Us���K�;D�M�(9�8!2�������xz9���3:%Rb���N1w�_����y3��cL��
t� ��B�OI~��i�ErBZ��	��|K��Kkd� IDAT�\:v�|��g�����'Xj� ��_����V���j������x���z3m�!������w��`a���X��\� �2�{NOyBv���U���F�lP\���d����[��<�s���ky$�����]5�<��L=T)	~������������i��������];~����������[Z���`�Q��R
-��D����Y5p��]�hl���Z]��"H�P�_���N�>S�[�j��n����s�3E�����hee��L�`��hee������v���Av]z��j��^����&�����-d�>|:��S��VVVVVV��z��_�cJD�L
�	Q3���j��/�@(-�~�%!���"?��~��}M�ySCwP<������*:���V��m��*�s�����8���]m��=o�� ���R����f-T=v�p�/��o�0�M�K��?{�q�<���;�O�1���:�����������[������+�5�5	@�_9q����R��ZX�����'�q�r���;f���~(��(���U�M�N::��O�=�uq����-9�RTQth���+���q#lgXr�s���WBww_6m�e_6?a��gy�/�����3w��f�����k���K�H�)�����Nf��DW>0G�$b@�y�gn��9����_>�;(Z�d�Y�j
���R���A�#>Y~+���7���D�+D8�r��<5l��^��V��7s������x�z�q[��|S��w/3��N�R�O	dEt '@�0j��5�'��9�<�m�/`�[Q�4�	R� _���y�W�i/2���n{�IEu��P����w�r��	����Y{Nt�����.w2�W+x�2H���L=�TI���[���������>����K�U�?_#Tq\��F|���U��ppI��,�_fC�"�S���8hR�*FckL����
fA2��*o�y�]���l�*y�y���m����L9.[�Gt���A���m��4!P������������������f[����qc�����%�����?nHT��pS"����	Q/���j��
^����M�NmD���@��l5� 5+"Jc�f��6�I���'�c�n�	�~jj��o�'_�0g����������m�3ATYNjf��ajf�->{�������|ZUC ����p��|z��zP�.;���9�N���x�6.�^�x�W��6-n���3�A��������W=0�	bR�9IJJ��] ����N�h���gBc����UZ��gu3K��%�Y�-���&��t4�L��]cW=h5�4���R��CAAAAAA	�� � � � � � �|p!
AAAAAA�,�B� � � � � � �Y��(AAAAAA���Q� � � � � � �g��Z��6�2d`'=��u|��Fm���n ���|Y��KJJJJJ�q2�]�1W&����	7�9��_��AAAAA��pZ�Z�fl������SCKA������]-����4���
*���~3<�0W�����G= �zVN��;up����g�O�l�;�lh]_+�����&�)8hV�*FckL����
fV������T&�S}k���'9vmm�.y��x�����U~c5u�u�����F�M�W�j�s��9���������	
{Bv5�}t�n�-������[��m?p��F|��qL�����W`����Jj^����Qx ��k���`�j����5�D7���;y1*��:+E��\���m�����dK�M�����@� ���Z&�{e��A�m�-�gT�
�>�S�!��9��3�g���F\~A��+�Cw����aw7����.���%y��n�������*{drF^�����/i!
A�J(^��5	
�A�Q?���} -d�[�������P:u��g�-^����<3������S=h�������'�����5��N�yA����M��^f�0����E�^�^���4�n�v�A�I(�>��l��g����'�kw����
%Sf�"�0����,�H��x]f��u�g���S��
$B����P���*C�����@7)���@v�1+��,;K`TAr��tG(���:���O��/���'Z_f+�Z����o�L��_��a��o����	����M���e���
������x�o7�)���-���1�|��*�6�l,^d��$=V�n;��A����R+�����>(wk>����/�����q7�����d�/6B������-�X����k� L�l�O����������/��m�5�D|(����5���p3�D��pK��-&�����W��h�f��
��[mz%Rb�hd������o$���rj�
�\f�oq��r4$�hDL����<}i��nznq�����kVuW0N�%ol����\���V��n����8?�x�����g~j%�O�����_�?��!N����;OE�&��\<����9�z�
�l`�DG�\����8i+Slg���IIIIIqU��ON�h�Y�a���;��_�sn����_������:&7���g���0"!��00����M���t^���=���v������x�C]���qfV
\�bW1[c��VW0���x��4t��VY`�YY5.����[����}q$2�����������k����H�KQ�A��=���v&�E^���?��z������g��9}+9�Vr����w����Z����8�Dp�@�+��P�`%5/T�X�b�(��q���{#���i.yS���h!L�Y{�rEBM��j?qgD��5Ce.����J������l�.m�8A�����������x��k�����8w=�����w������7mX��Ohs7�{���S���9�P�*D�]e�j[�\��Y��5S���%/D�����[8u���N�sX����>�1T��y}�������u2�,q��^����}���Q�V���gux�{�������U[�6 ����F�t?|�j�8�s�������H�a���cQ/�I�����yn�Rj��^��C�rRB�RB�������p�_��G�����;������&!�)�^(S��H�mE�V-RA���g����j�F��J�����:Q��J�R�"8@@D% *#����$��1hr>��&<�9�s��<���c����6�O�R*�]��?d5wq2�JJ~K�i��q�����#����N^�U^�)#g���iF'��u��Vs��;�:f��h������X6��e�4�h��Vx�:�iQX�����L�`�
N����{q�\����G��}��o�8t�P�+���Nsc(-C�v��C��F�������������t?'�~Q{�^=�:�?Nz,l��l���I<u.�5���v
��5�y0��
fV��`X����,��	�S����2$�c���W>/�Q���K��g.=�){96K�C��Br�3%���::Z�]�F������O���N�:k����Jg�V�.���?����k���K�����S&�.~29�<bz����L�9���������o��\<�m�g3B�`�mV��q<G�\:����=����������}�.�)��<�<}�����>���J������Z���'�C������=[%��;����A��:pb��~g;��`�/J/��F����_���?z��z;�=�������8���?qe�j��s����
<�3\�1��
�N[u�A������*s�>��Y��<5�T�����MSs(�M-p����K[6/�����VW��LG�vE����
�����������~��' ;!&[��i��[�x��9w�_���c;y�v�?�r>���#�������v�v>VE6?��K�i�l��0�|DdV)���n������u;SG�&L�]Y�h�.��*s�>�=�g�G�����E@��L-�*���V�7�w��x�\0k
��at��4�Z[���#��h����,T�E�/5
��DL���P/cB�����3�>d>|
�v2m��I�����������k;h�����4'@�la�6e�K������#
�15������'+�E����6$�{����Q�����j>(X����=KP,��~28�<b����s���&<�:kK?�{���G9�`�<p��%;�s'�<�M���&C�>n������H?q6�B*&��ag~��%����53��|K��������e��-����6�����c��'���R��D�I�P��������������1�C���Ud��QX���ZA��4�����4�^�6MY�ARonF���;��0.�����WCH��&�	��a5u�3/�'MyNj
UYI��[IUVV���.��>+�Mr��y��������k�}��;G���T�"����*>ON�#��W7�7��=��W*���pph�m7>��h�Gz�\��5@Xm>�,��Q���l��/��Se�e``d�;O����,bL�NUV��CO��E����I�b5�M��S$tP�����<jm3+��S@{�`�<9d�w��,�v�iy��>��.{;-(��1:d���k����qq)�M>z<:���f#p�ne���Yaw�^A�Eho�4L���4g#�E����,�������f2����Ql�Y��Nj[��|���A�.�r)��S�&�Ay	�~���Q%�	�d>#_�<|T����S�5>���0��;jl,�h�
�To�~��M�m?�E�SE��e�o��Qc�	��WO1k����a�u?b�A^�l��\����;���6]wfCC#W|%�� b����P���OXV�<�_H���j��k�t��}���J��C�F�Ui��dBV��[��������`���;�^Y�*T�	H9�����@%�c��C���������w'OL���K�-�����f��VEY9}P�k�D}�.80����koD��@��[!7�������wRre�2:?Mh���9�4(�[u!c�����R��7
�]bVv�i(�:��_�ZZZ�%� ��coaE����T�	"�����p�!�FgkL�`����<r1����L�����>��r"F�����x�q����������QVd]X�{1������s������T���al0lS�w��3�������15������a&+#���4��rgh����6iezi8�8zl�����acg��+L?�7&�[�,����~����@�F?�z��:�G����Q=m��B��=��fm��.��j���d��+�W��F��m^�[�����v�~����g
+�����g����������h��������<a��m�������x����\���zR�����(�c���?���x����UK;�C��}013!����h�L��=I���p������\����>������� ��x��*���h��}:?�.+*0]��;C��=)6����^�C���~�B���{d�����<q���V����I�W��/I���emFA����T^l��/v�������y$PE�i/�}�7.�p_�7�}"H��w R��
�7��.2��5��Li`fh@@��{��E��S�Y�z@T��I����]:@#���~���#���?�����$��S��)#@��k��1����V0����0,���2@{��62�'��h�(�"�k�����e)��������'������7z@��_/dk�Q�pS#8� x�14?YI��E��
I��F��-U�����S���E���P������O�6+��"	��~���c��	��c��������o&Ll;4'^�%�.6UI�hg�wp�d��O�+�W����t�G������V���60�'����*��hfD�K��MSs��F���t��%��%l.��4���Q��4�W�'�;}����	r���u6���M���G.���@�oj�f�<�p����S����?���\s�E�s������\.�#r���|����y�tl�����%:F����6J��x�W�[2�����U���y"�LE��C)6>A��{�6k�������{�?k!AU��)I�m=F�N�O+�7�� �/��{�B����+����+��s]4�V*S���`:*p�O/��Z;ts�����L����R�X�����
����Z�4��0�0�-(�L���S�]�ywm�����!��-"���������*�����]�v���������������;��U$���`��[�5������Pk+�Yy�b�ai�*S��P�_��2'��}Z6o�y��������2E����Z�������'��-�����4�s�=g������[��+6��Qt~����S�n�B�
=�D������������?B�15�����C����� �(��(ne�9�Yr
K)�����ok�A�����IB����d
?������������u����V���U�N�]z��!�?�����B����T1A��	�?���yO��65N	+��`��kH����H���,��i\`��������s�>�����[x�Z�K�,�r�zi�K���k���0�i}�w.���j����1xR?�z�U�8bEh�%�7�E�����(uz���-�bJ%U|5,�u��������3")�K�9��|Xx��&��`���:����������y���>/)j���8�'~H�|��;����V�0G�	H����C�s����Y�?�XX���@�hO���ZHP27)���ir�CYq��,����������+R#V���7s��{������yF������g�W��yF��mY)�*u�@ U�e]�U~��'����z���nE�i*�A�8�1�����N�4 �~��'�TV��,!bJ3K[��cP%�P��$L	>0W�$3�����Y�ofC"�����p�%�FgkL�`����<�1����L��,��gV������3V���;��m�����f�������DW �.���{}���	����f�kk�z�2-�@@XD��Za���?t�h������t������%h��pS#8� x�14;YI�2��Q��>������[w�=�2N���4}e�����j�� ��'�}�a�1hbne������~����h%�PP�f=D���f���f�x �o��@�~������/���uis��K�4od�orRnl����H<���~A��B������i���6�����(�������OV��1y�1ILL��] ����N��l<uV�GBg����5�Z3`���,-�O����r�tY����`��v��y0�� �=�>�AAAAAAA$�F� � � � � � �Q��(AAAAAA���Q� � � � � � �G7�AAAAAA��nD!� � � � � � �Oj#���e`?'#�����!��m��\�����|Z�
�%&&&&&�m��P���+������[k�1�� � � � � RNC; �^���Z���y���]A����\=���67S����������,���K�,!��=� `���M��O�9�m��
����s�0�����`J	���at��4�Z[���S3&�ai�*�)�����y��;�2g��JO8���������XM���z�i��!��U�Zu�`�W}Aa����6�cB�:
�<ax�.�����������n���N��<�Fty�BB�	�u�~QPT�J��:b����+/�PR[����Zu�H��1[?���%�NS�q�����l�����3<7���m�� ���j�����o�/�gT���!��R�X�<~������9WP�u��������X�E���fz����]�������o)����G��(J�'u���#
AAAAAA�>�;�Dx�� IDAT������[��^ H�A���]���-��}�~������&�x��N\N�n����`���]��l�i�����G6&�a�84�	Z��s7-u��8�|z�����eV��<�\t�n��m����
�F����6�hqc�����C����t��CY$6=�]�o��/�������i�����S+D��yL������hR�������4`��\�?���JsR����;Zy�t����'�3ET���(�|��F���a�AP���$�g����$�w!����j|	�T��J8�������I�~S�������f	����9l�~��`�{/J�ml��v��$=V}����I����R��)N�'�A�wD&�}������}���{cq �z-��U����z����s���������q��������|�_�{|�[���,��_������[Q����5}�|�����{T����t�o��?�O���3@�9��8������yWN�Z�����'�W�����m��m��\����l���'.]��gz#�hq:����1�����8�_���{�^�A���g�6����m��n�������\>
�Fm���oVwsB�"��Kv�����������6lY�Jm60�%��*Da�����2��l��3.1111�����;��-�^��Q1��^��X��[1g��������qPu��f��s��0`E�������>���6�3=���[�w���t��x�\0k
�-�FgkL�`����<r1��4t��UY`Y��7*�����O_��{x�pT��}������U�^�Xy���(��[����m=��,?�I�[O>w��pb���������N�z;)������
���i��g8��]���-Cj]�YX�X�������nOH�+]�hiS�-���1���
���L��cw^�9�j��i���Yi2_�R��bS�	���=��>��}�����^H)� ���{����>JN�����k�._�a�|5aL���~+^�7�a����QD�Bt�U�X�m�of,��(}��)A��5oDX��"�,�4r�����-������
Uxzno���]]{�<QP��vPWWW�����)VK�5�?vx>��kb�r��-{�d���d�ov?���}`�����+��D�v�1!;�����5|��
W�l�r8X;����0��0����m����	�]�5�U_q��'I)�.z����8�g%%������K�8L�ix�����C'���*�����oH�4����SL����~��X4��{��K,�
���kd���@+�Z�b��(�[Qq�V�h0S'g�v��8Z.J
�V����>}�7N:`���QK��1������x$cV��(�c����I���t���k��n��'=6qv�������$�:���uK�����<jm3+�\L0,
]ejU���[��N��[��p������R�����3��������!@P!���T�M-	��002$*
^��
�<8��]����FzQ�@���[M��L�|��+�UZ_.mJ�S�N����������5���2i�d's�������s����#��)�u�Y�F�q��Rp�t���K ��;�����38�����/�\�|��K'v�t6�W(���G&�jU�����^�@����U�����O4��'6��w���
�����hdJ@�����:��g��������_�o����W��8\��\���8�u������U�T�<�)����2��3| ��S3Jz�/��45g������x��e���x,�hu5��DptiW���9�@8l��^l�0�9����|�b����v��e�W��s��*�=���o����!�3I�;���o��lwh�ca�APd���N��:P ���-��GDf�RP�|�f����-X�3����*���8`A<fU���,����_��������q�;hkeA@~C{��!�����p�!�FgkL�`����<r1����L-�BeZ��R��_O�
)�2&t���|�9#�C����j'��z���JM1�[��;|���&��,Ksd�6�nS����=�_�7�pS#�<b!!Z���P���mH���������7
)K�|P��)�Sz��XB]�dpRy��y���\3�Mx(u��*~���U��r���y��Kv��N�y$���M��}��y
k�~�lJ�TL�%�#�����K�Y�kf����=k+N��S��o[��o�m���-+K�.<�O�u ��D9�%������[f	3��'���cKc.��7���6T�Y+8������i�;N�W�i|�.m�� �������7w��a\ly+�/��<(�����:�������<'����$����*++�bUV��t��&9����N�l��^C�5��>r���#��J�@�ph��q�	�'���67�j���F�����J%�M����_-�H��K=�f�
��O�4�@^ =��[�����������g�jc�#X�YU,���
��.V����n0E�@�k��1����V0��`L>�7��C�|����iW��7���pn�������##���\�f����H��m�����Sl�5����u+�f��
���
b-B{����`��vDK1bX^�!����������+�@���y������<5_~#p��K�\�����IcP^����!bTIf�-���7�����w�O��=����K*��B�����w�{��g��TQ$��_Y��db���}�,���_��q��bq��f��X{�WDd��88��������M������_�Nv��F�j���?�',�N��/$j��b��	�5�}:d����E�B��k#|��4�x2!����nI�o]NX�?��Q|���r��I*���a����H����1����iRr��N����������������WRJi3Cc�����(���K��Xpgb��7�]^ �����oW�����wR��+��et~���SriPR��B� E)�N�Qi��:��*X���=���2#�JTAR	����
�?���DO�fM��C�5������Pk+�Yy�bMC[����/}�9�D��{�	��t��/.����W#�/�������b�Uc3(y��
	�_�������`�<�|��eg�[�'�cjD�'@,$D;1rL�((/x����n�MZ��^,�~�|sx���
������<E~((����6%|P$��������)�*IO��z�X��~�{����&��]d��0�/��W�o��������iS���4�����V����r��_�!�E1���/�xw3x����'xE�S�7��(��He	���~3�Z7���];������rC�V-9�< �������"
���u3��P$I��!�OW�d�����!�XM,����}Tq���EK������vYQ��B����2?�I���������d��TE���#C�^�����Ne�����M��JN~I*/k3
�����b����ew��#�*JO{����q�������S@Z(��TT����t�1���]eJ#��3C*$�3��.��������YD��')�*�v��'~��.p��td���������DO���p��at��4�Z[���#��h������X������(�04���,�������#wg���,>�C;�n��Ya3���}G�
�yL������h�u�fQ`.x
I��F��-U�����S���E���P������O�6+��"	��~��S�vL���'��E3ab��9�*�@(1u��J�@F;���['��R^�p�
�e��#?zW���F�� %���> L�V��E3#��[
m��S�7Rd���,��,`s��y�����'��0�W{R��(��CP���\�����ml���>r���}S�03�q����o�Z������}����/r�C�>���0�r��kd������[8�c�f�=',���0�L��%IP�#����a��\������)g*�J��	Z����Y���=G������Y	�B�MI�n�1�uR|Z����yI��K*.�]9��^�G����1�zP�r���Q�+|z��h�����(��?�����I�S,P��aj��w�n�mYYq��T�t��)��.����l�����
��V����������E�����].�:����%>�����?�<���)u��.#�����p���at��4�Z[���#K@W�Z����b��9��O����y��C�O�g��)���m��������>�6oigoo�����?��s���n�]���b��E����!�0�<e��qp*����CO����������i�SpS#�<b!!Z��� �(�X��BYaNv����R���:'�����EKCwP|&	u����5�T>Ep[8�[�4s���v��u�
��������K��s7�g�=q>U(1X�*&HV;a:����7�	���)a��=Lzy
i�s���;��%p:�����uwqr��g����z�_�{I�W�_/�3c�W�v�[w�7�����[�[m��1�� O��Z��>�X�d��MGf���'�,J��eg���RI_
v]5��A�2nF��H
��iN�8�����.�����?���|v��C�9�v����K�Z��=N���.�*��������7��yg�2�����9�}��0=�;"��d��T��MJ)2h��P@V��=��,����B��A��������=��\9�����yg~�Q6m�����Y���y���;�B[~%�U�@�@�(z�������O2$rN��~%S���T&H%�|qvcH��3���i@��6�wO:��nu�Z���X���E��Jx���I�|`�^If���������(DO�f
��K�5������Pk+�Yydc�CS��=Y ����3�;�;��f����w�/���=�U����O�{��@�]��3���
OE;z������eZ�����8���l�o�l��5s��)����9��K��'��<�Fty�BB��uAfQC�+nX��D��F��;
�>fe��%X�Q�i�����	R����v���&��P�:;�����g���V��m�3ATynjf��ijf�G2��`���g� �\Z��2J �_�6���tJ�FFP�&'�����N��S�����-�
9`(x����h��<�YUE�U#|�s���
S� &O>&�����2�|�������
�H�l<uV���Pk��������)�YP]��.kW;�L�����5�A����G�!� � � � � � ���BAAAAAA>
�� � � � � � �|p#
AAAAAA�(�F� � � � � � �Q��(AAAAAA�����(�W+��B����&a6l3���~\u����g�ELl�}�g�>:�CCy������q�<,��r���d���������c��S�)�!wD|C�tAAAAA��NC;� �����>@�m����Tl��e����{<b}���z�~+2�(O�/:��;D3F�~0i@�&�������q�?dC���B�{��b0���ni�0:[c�C��`f�! �<������9��Uz������_}�j�����CM#�Y/���������8��
3o��I<`	S�a�'����9Xr?�x|�����o���;���H�`��	�&���EAQ�+m�j�����������BIm}�[�j��"�J�l��v���:Ml���#���%�&�����x�RlT��b�����s����a����Qe7���_xK1K`����dw�V6�\Aa��+���#�?Pb�F�����KKsvi��3�����h����"�(A�����B�zB�����oh/�� ����.�i�����k?j���ue�~<�T'����8����@��k��1����V0�� ���i�{����������-����g����3&��Z�=�#*����4�������;��K�����e�@��pw)O8�io�,���3o���zS&�N�l��15"L��xb!!����@�((.x%
��<���:'��\�,m���V(�����I��L��-
:�/�_�,�V�mj8A��M�O�<'�����qo���PJ%,����[��*xO���7�/p�i��_o�P\����&���
����T����x���;��X��s��&��K��*N�'��#<P��f��=gcx���B��X�a��'0�������gl
��7�~�@�9��8������yWN�Z����I[�v�6G^�7����-a���kD�
����#FF�n(�d��8z+lT'�y��E���]��];�CK�?,���W�q�:/�V�����l
�=��Z��z����?y'�8��_E��;x��c��n��
����*~�6��Z~�:�w�x�4WK���t�;�c�u��q�-�ps����U('�ZS�L�/�y2:6>.�����z��e
*���0������IXyn�KL����X������7����Dc��q��������e
����.@?E0=�-�ZT�\�����|�m��H�z�oF~kyw���}����������;z��W:�I<u.�5���v
��5�y0��
fA���}��O��������Geq�����g5�\����+�<E�t������������=��c���N^Nl 3�/������IWo'��w������}�>���>�cjD.�:O,$D��Zd0���b�v�����J�;-m�����T>fU�S��P�)��~��K1�W
�;-Z�:+MB��R��`]lj8A���'U�����������)��w�?{#���G�	�;w_ym����@L��0���P������0�N����]!���{����73{w�>w�� O���b�������q���1�����x6cV����5&�=m��7nK���15a��n7&d����S������J�MS������oH�4����SLa�oI�\���s����;�}�`�M�	?
/=���}�d����Ff��Zz�	������>^/�VlY����
"������q��C����Z:�M����<#dE���+���w����mGi��z����
{=�Y�]������R�N����@�:����{����1��E����������a�-��AF������)H����
O�����k�������z������w�O��r�
N����{q�\��kLQ!�
���#_�"�T�\���C��J<�U�Z������t?'�~Q{�^=�:�?Nz,l��l���I<u.�5���v
��5�y0��
fA2?��c�S?�V�p,\��j���>�y)t���'2e/�f�qTH.y�vSGGK�������(xUT��|��<�F���C��BB��E�
^n51�2=h������Vi}Q��)�N;e��'���#������������|`���}+6���m�G8�R�l�
�&���9��������@��w8��%���g$p��u1L�_��������N���l.�P�]u�L����e=���R�zuq���i����{��!����+�$_���*�����O4��'6���c|�S��i��=�xyrSBM��]�nY�U���E��#IX~���>o��3��R������[�a�sz��q�$d@BL6��`�/J/��F����_���?z��z;��2u����Y��&_��3��s��L���cX��#K��?�$��M�����&J��?������-����c�D���&��K�����IN���5��1D�����=��o��L��l����#���XXm��d�.����8����/�:w�Y�`���Y����Z�JE���$$�]�����YZC�(##���Y���w����������CO�fM��C�5������u��� IDATPk+�Yi*�"�����z"&PHq��1���^���Q2>V;�6����Tj����������4yX`eY� {��0w�2�%�����������&�J<��-F~Q�e��6$�{����Q�����j>(X����=KP,��~28�<b����s���&<�:kK?�{���G9�`�<p��%;�s'�<�M���&C�>n������H?q6�B*&��ag~��%����53��|K��������e��-����6�����c��'���R��D�I�P�FT���l�����2s���Z�!�����I��|������!�M�*�
	`5u�3���w��������O�+������
;�|�;Q�Y��d6���Sh^X�i��d�L��B�JM��ui������/����2002 XV�[��?M���U�4����2co��_���d�|�5�_#��#���8R��
9	R~*�#,�r���4Z���1�zn�V�O���4�i���@zg�QVc���#(�"��!�v�"U*2�U%Q5�U�:U��OZ�amBt7�"����5������Pk+�Y�,��C�|����iW��7���pn�������CfY���*�'�B���������
k61���V���vW��Z�cjD�����-��aQ`,x��,�������f2���l�Y��Nj[��|���A�.�r)��S�&�Ay	�~���Q%�	�d>#_�<|T����S�5>���0��;jl,�h�
�To�~��M�m?�E�SE��e�o��Qc�	��WO1k����a�u?b�A^�l��\����;���6]wfCC#W|%z�A�o$������|����I�B��g�R�Z�����>�i_���R�����D�3L�o�]������;����VM�VH��V���.@���x�"K�GJ�k��$E�lVK�O��K�wrl���<u0���.-_t�L��RJ��p)H1x+d����;~U�Nj������E���Sri�gq��t���T��y�1�P8E@��E\*r��%Q������������W�
�J8�&PTX����x�\0k
��at��4�Z[��"H�`���8����{�=#2�n���������jD6�5mYV�^�jl%���A!#��+��#����yL�����H���rpS#r�]�'��9�
�Y�<MCv{7�&��B/
G�
�\�9<l���r�����Drk��"?���Oy��>(���g]�W�A����Q=m��B��=��fm��.��j���d��+���F��m^�[�����v�~����g
+�����g���q��/�����x�������� ��>�+Z����W@	���@*K�'������i��������ZP�Q9B�c���?���x����UK;�C����L��f�����_����T^l��/v�������y$�0'3����`B<)�8m��q �.V�d�����!�XM,��^� �?�����"
���u3�/�!�O�q]:���L��h��Q-�#xx���O/OK��}��Zm���&�^%'�$:	/k3
�"F�����m����}�7�}nH��w R��
�7�'�6�S��$I`s8��AE�P!����t�)B����]�S�b���\=@UIT
v�F�vS�$�Q��.�����o��n����W�}��V~�H��s���C�5������Pk+�Yi�F�����|EQ��q�dA��,`51�;;��d�y���w�F�B����l�;JV�cjD.��+��BB���@�(0������i#�b��*�|������i��r�I���e����B��O@��JF?���)�e;&l����N�����0����x_ ����T%A ��e����A�?)�T�^��2����+V�V�ZI����P��?J�����q�-�6M�)��2�u@��g����
�<�iFF���T���=��F���!H4<s��v��;�3�?�����$� '��^�a#]��4i�}���}
��&���#��J��	Z����Y���=G����X�����W���� h��P��cJ{�o��Ks�6='���v�P�����7<o���-�����dB���3����)�+=&}���u���O��_��������lG����k����w��"3������#Z'����n���d��t�b'%~���U��3�tT�
�^�-��v��>�o��=��7�)#�N�@����N�y���idea�`.N _�<�}�ioa��r9r��2=�1�e�w���Y�����t�)B�����2��X���%!���t���_?v������S�����v0w�0��c���-k��$�:���uK�����<jm3� 
B��w��|�'�uh��M�!���3����=��m��������>�6oigoo����x���9cT��.���]�y~���{���@w��u�88z�T��'�m������mm���y8���`�P<��-Cj]�Y`,x�
��0';KBNa)E~x����mm������;(>��:�Y��~*�"�-��L�9�[W;��:a����_u�����������8�*���M$��0�������mS�����&���4��p���n�8��L�����89w�3|��Y������$��+��������[���;���Gx�����6���aH�'�C�wDQ���;g<a�a'K�������$����M�L�tdY�{b�����^v���)�P�y�������v�����#���M������=��\9�����E���-^<c�q�w�Q{N�w�,���0������sf�<n�y����o{��)�T���`�U����.�f����`/�+R����l9L�xpze�?��8�`����$7)���ir�CYq��,������N��[�2�;����i�}��6�J�����$����+��R
RE�[�u^�||�!�{p����+��|q>,��O��]0`�W
��R� _���q��m�f�i�����N2����`�P>��r'g]���A*r�R%!�*�t��*����' `J���z%���b|3�q<u/�5��.i�0:[c�C��`f�! ����3�;�;��f����w�/���=�U����O�{��@�]��3���
OE;z������eZ�����8���l�o�l��5s��)����9��K��'��<�Fd�	:O,$D��Zd0����YM.mD���@�cV�I�Z��Ne�����j�� ��'�}�a�1hbne������~���E�%�PP�f=D���f���f�x �o��@�~������/���uis��K�4od�orRnl����H<���~A��B������i���6��z����>�9��d�)L�'��������`5�����5��+D�|Ne��s�^t6�:+�#����Y��C�0��
f���fAUt9b��]��r0uV��
�<jih�����Q����Sk+#����7�9':������ � � � � � �y���>D��f����VF��gw/�Z�����C� � � � � � ����oDU$��5z_C{� � � � � � ����?�AAAAAA�T��(AAAAAA���Q� � � � � � �G7�AAAAAA���z7��_���j�N�������k�q�i���v�}�1�MCl�}����
�%&&&&&�m�� Tj�m�2�����F�V���Z��WN��������J�Y��@AAAAA�p��%��znK�mn�bS�.S7����������[��EyB5x��Q�����*)	��0�����I:6a?�������) �������O�)%tK�����<jm3+O������L��,�s��s����]�*=��o[~������j�����CM#�Y/���������8��
3o��I��i��	��v�m��/�>�w����t���15�� �MH������W��������5�]1x�����D����;E���:�Y�$H/�u�"��3GL�eK�M�����n�� �lS�@�W��_}�}�?��n
����b��j������v�l�����{W��G���2,:��5��k�������g6�o�K�v�=2EFQ��=�;�� �����[��^ j�Z{�>��K{@��%�����Z�<x]��>���xu#�����p�%�FgkL�`����<�1����L��,���i�{����������-����g����3&��Z�=�#*����4�������;��K�����e�@��pw)O8�io�,���3o���zS&�N�l��15�� �]H�t����W����s���s�*�UpH��V��h���1���
���Q������������a�AP���$�g����$�P"����j|	�T��J8�������I�~S�������f	����9l�~��`�{/J�ml�7���I�U�;��k�z1������1yR>����m/�s6�},��^��=&�}������}���{���Z������]��w���eh��eh7js��}������.>�FD����8bT`d����-@������Fur���X��8��8����?�����:~�g���oE���@��^�������ZO��wr�3[�UT�����8y�V����}m���m3hq�������xW��Ns�TZNg���;FX�|����7�|oA�;iP��r��1E��a���'�c��b.�_?��
[��R�
�p�:z�
QX���������]����~�����p�-	��
@4��������[�_�`�jLq!��S��S����S6��LZ�3�P��K�!,�����}�w�m8g8z^�';��/��=�#^�P$���`��[�5������Pk+�Yy�b�ai�*S������oT�������z������,N{�6����f�+W�{�c������n}�s�;��t����'�l=������
d����v��z;�������X��6��������<�Fty�BB��uAfQ`c�+n(�k7>p��=!Q�T�cP����;ZK�cVu?:	��"X����sz� ���e���$d�*��
����D��{R�}zI�����}��R.A�qq���7�?|���s���]������	c��
�[y���)S����z ������*o�3c�wG�s�L	b��^��'�^���
7���_��g3��]+�b^���F������%[�������a��ca���)^�G��p�����y}���7$l�����w�)�����$d�K���cF����>e��Ig�	?
/=���}�d����Ff��Zz�	������>^/�VlY����{!������q��C����Z:�M����<#dE���+���w����mGi��t����
{=�Y�]������R�N����@�:����{����1��E����������a�-��AF������)H����
O�����k�������z������w�O��r�
N����{q�\��kLQ!�
���S����K�o��8�L%Q����p�\�89I�s���w����������&�������S��YS�ni�0:[c�C��`f���	����L����p�1���{+C8.�{���bU���:{�����c��8*$�<S�
����%��?a`dHT�*���g>ypS#�<b!!Z���@�
/��u�4���MW^���(\��t���2	u���I��kfgoe���N�|>������s����#��)�u�Y�F�q��Rp�t���K ��;�����38�����/�\�|��K'v�t6�W(���G&�jU���������;v]O{��(j�oW+�������=[G'<x��"����'���u�p]������Tp4h����^��'���7���Y�.S�l+���`���F���_���7���,/����s�e
�0�9����go+������b�+ X�{~Qzi[hdJN^������X��eTu����Y��6���sg�,�v��2�����[���������'Pj�����N.m����X�r��1���K������'k�YC�XC��N������������pd�_�v���kd���@'\J�b��0g]QVc���(�"��\�3�/q#��2�����gieE��"~edb�2�0�,*zV���Gd��S��YS�ni�0:[c�C��`f���	����L��BeZ���+-�O���b�v
}�}���|�)�C�����.��&%�R]G���HXFmM�X��4�ns�)c\r�>x���Q8��]���-���@A�^v5!�{����Q�����.
�6���g�(��~28�<b����sL�����-ET���7�Z�x��f-�����%;7����gieu�)�fd��5�E���)R1a�@X���K�'����.�kf����=k+N��S;$�Z4s���^u��e��������{d@Y��=���e��YF�x�<+3����5�H ����4~���-,��B�D�"����g��bJ�8���i�_�(�J�.�g+���U�%������M�=�[h�vsY�;I���6V��T���"t��s~T�f�\�11�|��m��}������s�s�a��������R�I��E�]��sO����#��Ef���w�a�gfd����KJ����23o��Rk^w _���u�����nC��/kR����A0���t*���@��%�3���{���b~[}&w��0��QG����]M��s�#�#FX[�a�O�[�'5m6���	��3���� 4�i���@z�g��Vc���"�kM���%�_5�?�����C��)&[��anBT7���@�+��1���VV0��`L>�7vS�}������+[t�\4/x���Q��!3��^�a�����H>�m��Q�,�����V��r_��J��VK3���Te����%aR�X��2Z�,]������R
�o�1�f�7�c�[��7��,��q*�S�&�AQ	�l*"F�e�������c5��4)�]���{��9����Rm~�A	j2�������3i����@_]�������y���kg����~�`1��x����H��u�o��V���h�n8��������t� ��7��/�����Fy���(`�V���g�����A���J������y2g�*��~Y�W�|�M����N5A�Y!E�ZUQ)[�=���"C�GJ���I������'&���jc���<}(�����/��]M.��M��
����8y���?��|'��WUQ	���`h����44�8eE� ]!�(C!���l���%�_���"d@��K9��SC ���F&���t�����o%�!��T�`�*�]��l�)����E$&�aQ4��	�<Y���s�mN��}��I����wui��������`YU��5^��Z�A��b��������-���e\��y+�eI��D�>&GT�b!!������IAz�������u{�����`�1��+7G����'��v�g\8���/�CaE��Yk�[�$H����o��EPei��T��L>���=4���	��j���~���d���uO��"��6?�-@z������_�8��������
�(;��m�C��R�c#^J����I�vL��U�N��TP��<>��D�I�:���Xf�:���*P73oGeE���6��w�u�~%��U{S3�EY���t��a�����_����N����v����S���$?'#�t���C<+�X-�Y�.�����\����:�U����77�%	5�����PB�������Y��y	���)0nf����y6��>~�D�����~����������������X'��,g]��������Z�]z�|�������
�5�	�U	�YsI���t� IDATd�qKt��*��� ���sI5������]�>B�"$�_��1�u�����$�����Y���n��{������h���O>�w+?Kj��r��B�������P++�YQDbECW��<Y`ji�O�QE���mdA��,`�5�'3�����8������nE2��KY*�-��Q����(���� ����M�1�f�TE�Z:�:cCdn	U��Y�r�S�M�3'�'��F"�E0,�����$~�L�H���	��&���B~�Ah���$��3�;����q7�U�Wa��r�)��+���L����T'�iORy.��j�R�i�F�*~#�!#�pdYAF�]\E�<OO��9�=����-D���i�VCgy�41�4���u���������}�h���;��|�
����*��������=�Wx��h������S�i���p�������P������~?-r�71��g������CAf\9�Pk��E������3i��.EQ����3��V��N����Y��L��.�An���\��>c}�z���9��pbw����&'fute��Z�o��!_��������S6�"�K>�w���U�}���5���<�g��}����P'^ ����*��=z��02�bH.N _��A���v2�d��,��������6���i�F��L�\c�}��~���N�!�����i���jhKB��/	P���_)�>����e��f6��-��|�L2O�����T�`��Z�������P++�YQDb�ai�*S��P�_��
[���X��tp�`��v~����/�L�v�VVV[�L}SK++�-��'Xvn�c\z;��p�j��^%���!��v��m�8|�t��g�������,����
�crD� �d�B�^��PQ���YKNQ9E~x�����,����M�p��%Ih���������ngme�����e�����V���M��v��������q���~����l`�����~��c��������@�����9���|�M�V�	~��~�_O{[�n�G�[?�����/I�����������071s�3�?�^����6��$#!A<ir#�z�����-Gl
�y��u�����O�V�^65��l�0%���%)3C�--X��y��8��V�������6�$�	�` �"cUJ���^�g���`f�����KB�.��ub�����'�zL��eX�!������x��]'Z���'F���q�z�C�4:$�q������K��+,1�]����}�l�[	37����{�����~-�'���%m�n?��Uw8��_U$>���$4p�Q(b��~���1�k��������'rN�P�o	�Gu F U�u����S4��C3Fo{��X����!���������f��s� ������]V��~z����D��i��Sq����]�D����K:�
���L�$(�
T��KT'x�F|���V�wpi��L��i,9SO�f=��J�������P++�YQ�c�CS��<Y �����7���Oo=F���{'Vl��A�S����/a+�V?f������y�M�Ei���������ej�A������
3������c���0�v������!^�w��>&GT�b!!���� 4)WB��?�)�����h�p���r�`�-�"6h��h��x����Whv������P�:+���9����o�Qe�`h��&&���M�(����Qo@	�=��=���^H�_�����&���O3i��or�ol���T�x������>���jr_�r�,	:�_�0$n�:�Ov����0�	����$!!�S!7����9��A?{���/����`�����Se�"T6�*+\�`��YY����a��,4U��*k�;�L������A��SO�[�)5���8u53�����������'*��� � � � � � �����a��������6�~����+�;�� � � � � � __�BTU���c�7�� � � � � � �(_��|� � � � � � ��
.D!� � � � � � �\�BAAAAAA>	�]�b��'x��<mz#�pn�sb���'�i7�'lr��X��2#����IHHHHH�����h���V���l���h��W��u��/���� � � � � "+��vAC��E�/�Z����m��j��o�7���������[��%�|9x�(�&�"
�e���Sui�,}~�����������
�e�������]��l�)�����~L���T&(Smk���'8wm��,�����.��
c�v�m���������~��Q������6V�e�9TB�v��I#t�0C��O�\�����W*qa�}L�`TA�Xa(�Y	����8g��h�����������R��>�Mm2
'N��x6��:'@p
nT��6���M�`��?Yp��m�}^�Ah��&��N8�e��M���Uq���Ko)����.�����>�[���������T����g��ho��,/x|n��qo)���nDI�� ��4\�B�&B��_��^ H�A��_��/�n_������+6TL���s����75�T�`���]��l�)����E8&�aQ84�	J��^���;g���|1��e�i�+6�.��u,���I�o���wiAB��A�6#��������?�P����l(�<�p&	�q/g���#A���e�Q���A[��M���k�
������%��Pl���&��H9���m�O-s2y�
pH��&�p��@j<��'��>^�?K�/T�/�Jr�u��6� ���S����{���<�mt\%U����?����������t��ec~�YF���n	���/`�����-j�����?���i�N���<��U�	��IS�[��;]��|'6�x��}[��@�8x��:y�s3���m��V�u�a����KC�_�w�s�����iv:���%����=���%t�=���u9�o����M�k��V��n����<���[�9�ns��
�����a��k�:�w+�D���5#��]���U�l���Ss��5E�l?t�����n��]0��c���,
�4��u'�D�GC��e9����9�e�]�X=�^�����I���PD`�:I���l������1�l����)lP��fF��Zu��"�8	#���v{�R�����7riHT�o�����					��.B+�����#Q����M:�a!�a�������F�DX1{��������� �� r�0�v�w�����������=���v�����.��Cc������p���`T���ZY���"K3@W�J�FK+����:t������#�Df�:Yu���c�u[������G���"tz�����������b��v*�����	d���3������}'1��������o��g���6@/������� 4)0$;#�����&����os����Ga(=�
�S�� K������9�f��m������d�*��6���D�������N�l�_;s���.��~y���7>~��k���������o&��p?�g����'��9��zU�n��?zk���R�.���%%H�'MB�_��zy������?mNh=q�onm���n)'l��)���Xu�M�e[���>�i>�i>.p��^�'�������j�q������W`������WJa��,p�}��y����S�<m������_F���pq>�y������S�u�?w~:��}��%r�������p����9 m������\��|F��e/��w�*��U.Ug~�=u}\�Q��K[�=KL����V�#���V?31�-E�d}?�	�U'!b��;}�d��d������M�&X0��h�3�Vx�:�i[�T��y���:YX�~H/GGG�~��S�o9P��f�s��4J$J�kL\!���K=+�V;��J���_S��YO�$�x�(Gu��v�����e�$>�I|X���o���O��[���T���O@m<U.�����v��5�x0��
fV��`X���T�,����R]���k�2�w������W�aD��Y�Of?��Pc���}���Vq�mll�.�	
-M���UI�7����>&G�� x	�0��Y	N
TC��M������#����/b�6)���e)MBc����������2�ikk)t?����D����|t��Qvz���F���B��ve_q6���5���G�1,~� ��U�n��+�6�qr����������F���L%-�I���*2������S��v��o��aNm���O��c�n��7���1dB����D��y@��c3�T��TP|}����o]�^���%���D�0�6P��&����d�����^��Dh������� >&�a>���������96����n}���z/M?�bXxf9�I7s��k���A�{��0M?��� N��Ku��|�����}G&'�����F�'���yI��<R�� �g=�5�$D�i������W����n�����Z���_g���l�.���EBq6i5F_H����^����&�5����<����.�����s�r_��m���W� ��(j�F�PR\���C�@����t42 ������������pP!�
FekL�`����("1����L%�/5l�r���O���)�2&x����5������\��mbB
5}��q{��u2uDg`d� |����=m�}�����!
������%��h�f%:)������~��9?	�z��2l�b�6)~�C��Kh�����JN����ts����J���&�IN)�
���lW'��YG��j���)!b�6AZ��G�K;y>�J &�%-G����� �3����x�-j-��X]�O�8�}��b��/���|��s$�p�;%� -A��4
�/D����j~��23#��gn��|=��L��M;Cm6�P�Q���$����R��K$�omv�R�=��_�������3�U�����-t{����L��e,3���y*���
�UJj�Z�m�.m)�,|Yc��(�
-
�adf�S�<-��?���o����IJz1���>�;�}�S������P���p�9	~��#�����'�F�����6��k������i���Q���-�F#��hIE��.��_��G���(���6�
�)2�H�*ySL�,�����n0���
jW0*[c�C��`fE��|(o4��������3��W����h^���3��$n�Cf]������'�|���c'�
�Y���67��8;���'�����f���`�����%aR�������.K�;��n*����QL��G�M�X��|�
�!K"d��D��IcPT�D?����Qe����F��y�X�?MJ~����#lN�����@�iP��a�����`��L��*�$P�W�y%�h��v�4{���/f��_F1XL`2��?�)���z]�>���c/?��Noxp��o�7�#b������:0�3$�Q�4-$
�����a��{�l`�����r����a^����o�_���?�{�����SMuVH��VUT� AO���������C�"�&#���I�#�����$OJ������.�iW��i3C.�i#F�oN�|�n���*�	��UUTB��(�t�@D 
M,NY2HWH�����?�v:S@U���PXfUnq�{0542=�jdab��@J�J?�V�RO�f}��B�������P++�YQDbEC[�����='�����w-�H�y�W�6N�����,��QVe^Z�u9�����.f
	
�_	�Q��[�U����\�C�J�19�
P�K`��<�J�z|�� ����z;�n�1,5&�v�������������g��KE~(�h���6k
r�@��~6�ey��*KK����d���E���6eM4U{���#<�&cW]�{�^	���o�S=��/�2�����U��V�E��5o�P
^�[�R�p�nL��`Zx�jwzf�������� ZO�v��!�e�����u3�vTVd�m��q��]��WhZ�7e1�Y���J@���jq�i��U>��I����j�/+�=�=�O�s2�H7��:��R
������2�����%z�Z�C\0Z[[ps�_�P�����%��Y[i?0@?^���l
��$a`n�B���}����g_7C����3�}�Ck�WII/I�N�KY���Q%i�/�:�*��P�z_��@����
�5�	��6	�YsI��d�qKt��*��� ���sI5���)"&5����4���'��������v��6�W��|��V~���S��)$@��+��1���VV0����0,���2@y����V'�h�(�"4�e���,/zY�h3jhOf��I5�qm;����� d������*Y���6@/����U��@3)HvF�������aVOU��������36D��PU��U,g?���=qx�l$������g���3�#��o&t,:���
���16� �������F���W
x^�m?���8jw���F2I�SCS���=I���k�E<|K��q}������t��eeLvq�_�<=�n���_u�4������h5t��@K�As�]X�.]/ �9�yj�G�v�`��c������������N8z8����G/��m�l��Z0��������+�q��85��o��)���"W{�}�xk+��d������_4��i[�>��M�Ru.�=?#�i�����l��u�~����2�&^
���c1���������'vg���mrbVG�Qf�q�E�����5�� �/��Z?eC(b�������[����][3��c|����-���u���?N�������q#-����ENt��m'M6��9ixi�O�n#<���ja����5���)"&5����4����+E��u�������f��#����I���j��T�`��Z�������P++�YQDb�ai�*S��P�_��
[���X��tp�`��v~�����z�z�,���:�T'����VVVZT_��������v���4~���J.�;�C��0m��	p:�������;ZYYYYYYk)�
���6@/������� 4)�� T�de��STN�^�d�x+�qS���$@K��h?�;Y�O��c���2�ikg���yV�I�|���gW�n�F�������b
��`cl60A��	�A����eo���n	������}X��Kg�	��&Y��?�I?�����]��#����������$Yx��������{���9�����/�V�R�p��� 	�4
��x��E���=i�[Cn���]{�����U���M
::�,L�=�uI��PwK��d�2���s�x�?���/�{�9H��X��:���Y��?�����z����K�w�X�.-r���S�|������j.�;{��������k}v�����*�	p\�`��!��o��
Kp�n�*y�/�V����f��������_��Inbr�F�����d�N��W��+%8	
\z�X��_�+f��Z��|#��7y���/�e�$?�1���������I��1z�C��� _\	�����W|5���5��+�D�/�o��z����4��?&z�M#%�B�'�������<��T'x�F|���V�wpi��L������&���z�@��+��1���VV0���0,
��2@y�@�[��9o�����z����N��������	}�_�V��~�b�'���������q�5���������!a���fZ���A���`V�0�O��aC�����}L�`TA�Xa(�Y	�B�p%8#����&b�6�q�Q �x
9	S���U�����/��O��
�����Z_*^g%^�0Z�� IDAT'�\v�O��q���6�� �27%���nJF�-%|�`�p�~z!�~|%J K_��xN^>������I��y��S������,�
<���}����$�l~�������?�5����&H�'�����O=��`����|����K*3�>�;����TY������
W<j��qVV0��`X>0
E�#�����*Se���p���F�f������|� � � � � � _�B���wc���ii�ut�i�]NT��YAAAAAA�s�����0������H�z�}?b��}��}3gAAAAAA�/�/|!�*q������AAAAAAD�/|k>AAAAAA�s�AAAAAA�O.D!� � � � � � ��.D��Yu�<\W�6	�[87�9��i�����s�6�Cs,�}�����$$$$$$���j@4�Xv+��N�Zbb���+��:g8� � � � � ����� �b(����%P������
<T�����f{]c�|���z�v+<�$�//�����r��)���f�>�{z���w����K���r�Q�`
���`T���ZY���R?&�aiD*�)����������g��J�����?o�]�1Z;��{�p�����q?������s��[�s�2��		��	�k;b����Y��!����w.��q��+����>&GT�b!!����@?)�+x�0Z}�6l�w����.�T&�OtS�L���(��m��uN�������u$l������c�n���j@�m60A��u��.�o�.�������_zKI��0w�u�����������W����}�jdt={��@{S}fy��s���{K�u#J���I����B�4�8n�����A�
B�����} u�2��w��,_��b������U��������pP%�
FekL�`����(�1����LP�,h����9s����i�-{O�_�iu���cy�wLZ|�d��K�b���������q����-�-`C����3I �{9�W�	��/+�zx����6m��^�(T ����*7@,$D���&�/�@f{��?�����7�!1S������l���$@SZ/��%����x%9�:��`�
N���)���n�E��
��6:���*�`p_����wf�{J��i�����1��,��VS��LR������ruc�5�Lt�@���n�4@'�r|�����I��)|�����.�{>�u<����jF t<�B�����u��6_W+����B����!�������zj�
��4;�iZ��~u�����������������7j�_x���5K�L+�c�B�tu���x����k�9���hZ�����5�����y"��{�������|���a6�o���v���"c6��p���k�b��.`�1~�C��Yz�:�}"x������|�������o�K/����A����("�N����X�\��TTl���K6��c�6(�f3#Ax�:z�b[������		q�=Z���������4$��7��}�������F���Tc�I�a���{qi���b��Gl��_���!�?�I;g�?b9,<�}�����+f/�u2"������e�0�v�w�����������=���v�����.��Cc������p���`T���ZY���"K3@W�J�FK+����:t������#�Df�:Yu���c�u[������G���"tz�����������b��v*�����	d���3������}'1��������o��g����*7@,$D���&H,x������7�����W
xcP��&}8ZC��l���$��"�����9�f��m������d�*��6���D�������N�l�_;s���.��~y���7>~��k���������o&��p?�g����'��9��zU�n��?zk���R�.���%%H�'MB�_��zy������?mNh=q�onm���n)'l��)���Xu�M�e[���>�i>�i>.p��^�'�������j�q������W`������WJa��,p�}��y����S�<m������_F���pq>�y������S�u�?w~:��}��%r���������A��@�i�'4������3zW/{��W�T�r�:�������:��^��Ybr������&�����Io)z'��YO`�:	c������%��%�=���`�n�4��Y��D��	�����H�����������w������Cz9:::�����~��*<5��c��Q"Q�\c�
I�!�#�����F-����.E�#���-BZh0�&+9�k��M]�g�=i��h�1�U"��eio��I|������c�>���&>����k������x�\0�W-�
FekL�`����("1��4t��TY �o=��:9��$�e`���]1'�	�����9����~���"�[U��3���2����]�Z�DU���&o<���}L��r�BB��I����l��m����AW_7h~;�IN,Ki��$'�GL�����N[[K�������'�Vl��������#6��G� ���(�����d�@��w<��a���$��zt�L~X���������{�<�E�W7�$�d*iaO����T�^]���zj@��?�
�0�����I�u��m��&���S#�L�������8/�Zxl�����^�
��oV������+�������H���s��{����?w]�k|�������]@@��d0���}U�88<� ����������;Q����g]�,��<)�f��v�w2HvO���G����$�����o��c��<�p�����up]2�(:����7/I��G�q��'�F���1m=�z�
��A@��-�|{b�P�������8��
t�����H(��"������})���_�o���{j��]�v.��
��H�����8/���1�r�gs?��\���r�Z�K��m����5C#m().JKG��k��{Z�:P���}y��S��Y_8��v��5�x0��
fV���E��V&�e���x�n��'c���z<����{F������a.t�61!��>jb������:�:�302
�	��D���6�>���k����}L��r�BB��IA��>�����7�'�SoQ�
�A��&�Oq��x	��S���#V�	�9��nn�c���T��3[�d<�)#��S������<�hYm�6%D��&H����vi'�'W	�D�����s��bDyf��Yo��@��������/�Sl�c��[W��_t���@t�D�%����!��(^vzV��sUff������O�g�������ig��f�:jUY�0�X[�@��{��������.Z��'���?�����3�b���0�33���yI�4?X�23o��Rk�b!_���u�����nA��/kR����A0���t*���B��U�<�
�A��7II/�w��gr�sj�u��;{����8'@�O1�>b���u�������R�fSy-��:�����$�pu *����h��m!������|�
r��[��y�����G���(�EH�����#���x����������T��M1��Ts����*�]��l�)����c�9��Y�������G���~^�����y�+�������yt��k|v^�D��o����*�f����L��z@F����R� V"��Z�U�*kG�-	����>���e�r��M��R |��i7���)������7dI��S����6i�J��gS�1�,#�����7�����I��Z���c������h�#
JP�!��<\t���I�UE����:�D�V���f/^;������(�	L�����8%@z�^�~���p��G�t��
_�M��N� ���_��3<C2�I�B���[)
f���g0��O�+)�_�E��a����e�_m���7����:�Qg�IkUE�l����a)��k>$)��a2���T>����zO����>_����b�v5��634�+�6b��V���w���ST�;���U��(-
�F8�:HC�SV���
@���h��^Zq��w���.�z&iR$���Og���N@�?�����=��w5�0��ee�%E��+�������pP!�
FekL�`����("1����L������ls�����M�?����K'~�gtX���(�2/���h�J�^�������(hY��-�*��[q���Z%��Q����('Z��h&�Os �So�����#F�������2���\~��q���7���M�S�f�An1�� ����� �A����S}�[2������h��&����Z�_������J!����������R�~�������JJ+������q�/J��-�x)a8�w7&��I0-<V�;=3�S	@q���@JK�'M���_�b�u��o�@������`�t�B��m�����V�MY�|dA��R�����Z�c�/~��bbR8��G�����{O}������,�������`u�4gA�.�r2s��V�W��������$������C@	�ng�V��������;��f	@����~ p?x�����P?a����A�����UR�KR���R���.bTIZ�K��N��.=���%���@����
�5�	�
	�YsI��d�qKt��*��� ���sI5��P����-Y�]��A���~i5O4Hkb�������H��=K~���ZpO���}`�m�|u��g�n�gIm<U.�B�TH��Q�S<je3+�HL��h�*�'L-muB�i>��(BS[��,������6���d���Ts��������Bf�~)K�����}L��r�BB���y�fR�\�b�&����z�"����
��!2�������b9�)�&������g#��"�Bv�l�~�$�����Eg�U\!�� 4�fCB���{w����������G��G��x�H&	��`jh���'�<�vm���o)�4n�O����n8�� ���.�"���������^�I�����D����Z��X�����w�z	����S�>b�c��{�^>g�W]W�P�p�p�������+<zY�mcf�g������Mx�g�_����Y�U|�lLy�����w�3�{X[�^g 3���5t��a]L�Z���lR���sq���O�l\�|g�������W�� 7�Rx��X��>^��M�~\8�;K��Po��:��2K�K-�7������i|�N��)B�%�;^w��*��V���Y�p����>J���:����T�~��������@rq�"':�����&��f��4����d��M[�0��d��Su��"9�7?-a��J���E��1��/��m���4����+E��u�������f��#����In����2��T�`��Z�������P++�YQDb�ai�*S��P�_��
[���X��tp�`��v~�������z�,���:�T'����VVVZT�g��y�q��`��i��-z�\�w.�B�a����t�������w�������0�R�]���Un�XH��!0/M
H,x�BEQNVf-9E���uN�����'��6	�I�*�$��~�w����[�����N[;��u���OZ�3~�7=��u�7r�&_���S��c��	�N��u��-{�w�wKX�w������\:{O�
7�X]'��N��=�m���9o��~���n�$���'����^������a�����{����h����I��i���(�]������5���{����H�?
[�z����������[���u��`]N�/�0,�[1w��������'���4��U)a�C{���z������K�,	Y��{�����"����1���a���>�������w�h�z����g���]�����5V��.�f����w������Qo%��|h&/����?Z����&&�h�I���KV��d�~U���R�����G�������b����7R+����9�BY�%����TI��
k|NL�$r���!Obq�/.��v�e��+�Ln�����@"��7vY=k��Yd�����jL���V���-n��{�UZ��(�6�tF
U�	^���i���e�\p$S�/�!b������pP%�
FekL�`����(�1����LP�,��V�h���������u��+������fB�����}��@�Xv�	�����������m�gM�h�x�25��oH���g������`��1k�A�U;��Ss���;�a�#�����B`^��+������D��F4n8
�~�
9	S��Q4sn�nn���?Q�+4��[�ck}M�x��xm���s��w�2N04�fDU��d���M��������N��B/����D	d��r���������79�76��}�Z<U|}��`�E^��|5��S9{������*n�:�Ov����0�	����$!!�S!7����9��A?{���/����`�����Se�"T6�*+\�`��YY����a��,4U��*k�;�L������A��SO�[�)5���8u53�����������'��~� � � � � � ������a��������6�~����+�;�� � � � � � __�BTU���c�7�� � � � � � �(_��|� � � � � � ��
.D!� � � � � � �\�BAAAAAA>	�]�b��'x��<mz#�pn�sb���'�i7�'lr��X��2#�0���;�j��G���IHHHHH������$hg���+��:geN��hbAAAAA�`5��p��M��o��5����v��]Z����^~aK��-I;�.�VxxI>_^*;M�"�e���Sui�,}~�����������
�e�������]��l�!����X{K3 ��@��@h[���?��k{}f�����l��vA�����o���
_0lm��_�zN\8�����:�(���������#�N9���	�?�xz�����R��)�2 G�"�r 0/�O
�:����[��;��UC]*��'��M���i����g�� 87j�a��:6��Y��d�1o���y5��6� h��:�l���7
R�gT�M�a�/��$K`����xtO����lnQ����CB��>P52���=�c���>�����M�w���h���%EF\�${�xp!
A��8n�����Q9�����������b�u�|e���)?z�W���&���z�@��+��1A>����(��J��^���;g���|1��e�i�+6�.��u,���I�o���wiAB��A�6#��������?�P����l(�<�p&	�q/g���#A���e�Q���A[��M���k�
��l��,�t����)�@f{��?�����7�!1S��������~�q�)s
/��%����x%9�:��`�
N���)�����D��
��6:���*�`p_����wf�{J��i�����1��,��VS��LR������ruc�5�Lt�@���n�4@'�r|�����I��)|�����.�{>�u<����jF t<�B�����u��6_W+����B����!�������zj�
��4��iZ��~u�����������������7j�_x���5K�L+�c�B�tu���x����k�9���hZ�����5�����y"��{�������|���a6�o���v���"c6��p���k�b��.`�1~�C��Yz�:�}"x������|�������`�K/����A����("�N����X�\��TTl���K6��c�6(�f3B������t��Q IDAT���z�_��[���H�����rXx&:l���1QV�^��dD���3�i���{�����6:y5���I_���W��,H�x}�����"Y;��}�������F�SG|�K�j�#q8�~��3�a���Jn;�� ���������o��9v~�g;�],��1�>��j��r��/\��+��1A>"�{K3@���*��VV-*�=u���W��G��du��P}��h��z��������E�������mg�������T����-��g��9}'1�Nb����w:
���s��4��9�
A��yAhR`���)�����&�����J����Ga(��7�O�N�,s
���]1g��Y�:3���W�T����Tp��w��>z�V�����kg�Q�%��/�9p�F���O���w������W�������q���>�o���{1�#U�
�
W7�GoM��^��E����I��I��+�Z/�����0���	�'����-��0�-���[8e���N���l������0��1���\�����4����7]�0n#t7����
��ur����J) ������3o���{
��
^���������.���:��><��a��.����B�y�O��DZ�uQnPZ=�m�<|�p���c���]���v�\�R�����/^�����8jX{i��g��UV��j�d����g&&������g=���$D�a��~�O����Lt���:���i�f}�m63T��y���:YX�~H/GGG�~��S��h�����k�5u������K����r�Y�$t��������0���������������P�R�4:S$j����~���F��Kj����O�����)���gVR�A��������0'�aI'��}z;�?M|�omg'�Y��QO�f}���]��l�!��i,�[����TY �o=��:9��$�e`���]1'�	�����9����~���"�[U��3���2����]�Z�DU���&o<���_�6@QR'
�9Ef�n3�G�����A����M�pb`YJ��?%9)=bjm-��t��Z
��f'�=Q�bc.��t��!`��6?�����F�F��� �BM���}�<�&�e���f��
���.FEG�����@�E�pu#J�M����i�b�^]���zj^���D�zsj��u��mG��=������S��{wf��y9���Zx����i�/���O��}'hV����[����-����v!t��@uNh�������?w]�*B+���?og���(��(������`�u��<b{pxrN~��$���WKu���a����6)�f���];�{��0M?�5����w3���;t�?�Tc��<����������S�4m��K��H1N�����u"�����Yp�?���������[�I�1��Y����5���r�gs?�dr�S�����/������d��?�=/����3�b��~p��[#]����z�����(d�v���d�'�O��.6��"?�������������b���JJ������j��r��/\��+��1A>"�{K3@���+�������.>���{����_�y,�����t�61!��>jb�j���8d�����7��wC���6�>���k����_�6@QJ�O
��9�gB������o�Q���E��&q8��J��X?%8)=b����s������+ET��3[��\:���+���9h���c�_�Q34��F�@�	���>�]����U1�,�h9j''����G��'�����[
�Z�����9i��Y�~?������]�0�W7��%����!�[������5����\����I ��~�2q��6���,B]G�*K�FkK}({x/U\�4�Y��EK����y@�����33M����B��J�X�]�.��r�c���C�e�El%Wh�v�,6�+���6V�Q:�JR)Ts<�����g�1�y���v�y>�c>��g�g
�2������,����.
����"w���HM�p�emc��2��� K�3�5zu���,y']�W/��j�k@KG�`�X[���d@��9���.�{��Z����!�����CM5c�?x��@=����6I���Ar�#{�l����6�HC�M�0c������'���3���H�x<����b�x�f7\w���-���W�_��X2@�+2%TA�TK�B�eB���Q��%v��#�p��)���WV���>��u9i�F	{�o2���b��1������@}���4't�W������Sk��c�������12�h#s�o���o�%/���L=S<��/�p��e��������~�X��o��L&BjDG�� ��.�D����k\��<'�
��F1��;8���[��7��\qY��H|��cJP<��l-����n���,�u�D�?MM{�����c���Xj����U�V#L���{��B��_U��@�_�������~�����|����_E1XL`2F�����
��_?��v�O�l[����]����o� 6�L�������-�I�R��k(
�����gB�J}QQ�7�I(\a��f��+�����7+�����	�iR����Z�$8�;(2D�H	>\� I��OS?'%�z|O�~��#i>q�,�a�y5�Zbe$�Kj�3F�n��
��t���j�
�����B�bi{���(���Ht��x���l��#�

�Z��	4�����$u����D��r�l+�� ny�;�462+���W)U,;#=�({��\J�ZC>i�L���F��m{!���-,�k��I\���
Z�x�p���z��s +'d_���3���Zd���rr�7z^
5igU��������D�����}Z��Ek������:�_�@������`	����S��]�\�[�]�~��������3��M��~��|�����a@n9HA�<[z��2��*3��`n��s���@��T�@����F���	p��S�����,����x���9�z��?�=[��xSC�=/���z_\���bjB�K�x{+�k��i�������Z�[����I�I��6�g-B!�B!�B!�� �E��kg
x�Mk�NT��|>��O��{/������d1Y�����~���5K�R��������c���^{����B����GN��M�x��`u�n��,����- �:�iBb
0���q��$��fazzTP�N��|���99l�n����MF66������h{�`l�|�t�����noS�����:Ix���XI�*23^��tmW�P��"?fI��d�������6�FW����I��e���z~�5��H5��p@SKS0��	�R��'!�&\���4<(��?&b�2��z������,�	oL/0��������7��Yr���&�m�!��K�H�4�]�h�c�Gla\[TM���S���&!pk��(B[W��n��e/�&���L�%������gH��2��ct����f�_�@��I�� aS��rJy"7%�{���]"G�������JA1	����r%�S���g -��y�����a;-|�wIA>�W$�h����fA�$��7-�9�����zje�M+i���l���c��	��N������I�3�d��w��C<��@���!U�Z���$��*��`��9�aqNVV�W�4�����|lWD�F������������Y��o����}�Nv�l��K��k��j���8���&?�f�����m��&.�3HWt���o���ui�4[
��o�����e��-�;��;��b7�"��>�Pg��e�{Xv�����GY���w�����q��t������9�5��}��v���T?O7k�o����R�2TeZJ^�q�S3��I|;��2�A&_�$��������-I����v�:Z��6�/��l��|l����m��]���l6����kA�����K�t����r�����s7Z�[��T�s�s�rw�6751�a��L�^)�co<lf�S��X�>��LM�� ��?&b����:�����*����e}����������a��%c
���+�'��HLC>i�L��������B����kK����U����W���|�{K��.����-LL�����A��vvv]�4	��ew;;���u���&�N����w����K�W\8x6�B�e��]3�t���aG�iv�������5�Q�{y�/J� BjC`_���rJ"�����6�/������yE��,��6���*�B��)<I�y��k����L�::��5M���+�o��O��t�5h�����3�����o�%c6�@���#�?�{��������������I�;�G��'x�E�!�z�X������svt�5x�������'�$�WW�nT�]5������X?���{�o7�j�x8�dH�LZG�o�Ro�:������1��?G��t����������l;>�|�wr��t��I�mY��x��>
��,\�t�_�_��I���N2r�#7D�?4o��|"UW�^�r�����o3�8��w���������k/_8o��]a��M~���n�zs-<�u��u�F����72%x��9iWo5X>!G|x�w��z���O�IAJZ�V����\�s'�������2&	�<�(�������x/�\��b���/�R����{��E�#���s�o-&7q��%g�) ����q��=~AkF����sn�_�����;�K�K5U�c��F�����D���;��_& �J�{cb�����0o��yZd��3=d�2�����)s��UPF04CU��-�J�����iTe'��2�X._�3�$���_2�:��b��1���#���-*'ay��Y|6�O{�|����0�K��E������O5��VG�X��?�U��?�����>P����y3�1���H��?<2����L�/�q12e���;�k8L���_oIR����_�@����� �)W��)����M�nmD�G���I��,w��������~A����R�j��L[�M{Cm�)�K��eA���u'@���0h���,U[��]����-�]T2~�`��>T�Q������|SZm�1k�\S�~��v3d��Su�S�7�.
�[�z�_�[����3�
'���	���)�'������������4��S~��k�^�����m���o����i�I�G�u��
m�I��?�������Z50��
++��c�Uh.:g���+��I��i��a�j_z��5�Ji�9ehOk-�.��7�)?&�	^��B!�B!�B!�1��_>DhY~���ki�CU>�y������z�B!�B!�B������(N���S��,�������$B!�B!�B!���5B!�B!�B!��X��(�B!�B!�B!�A��(�B!�B!�B!�A|'������	�ONNNNNN�5��P���N��#gu�r�>�V����Cu�<�a��k�����J���cp=>l�~��%�va0v{���C�$��z �B!�B!��L���TE/��������m=�����
na�i��6$�����'�%=L���}�bE!_	�D���vH5�q~�?{D���79wO�
9t������"t����1���bW1����a��V��@���[�x���V������?��%����0F�a?��4F�������?5�7s��I���5�e�w�
�V��%����?�����=�s����wJh���cJ$�L�Q>���:�$o
�^������K���Q�������M��I�Q�k��l�$n�-Z"���E~k�l������������c6�@����g�z��������8zyt%%;�����O�������-�}p�hx����T}F='�������!��������N��$��(+3�
${&-�1��B�?�*O<�1��g�P�!/[32v���{�u��u�[jfw$��+[}>��L���N��m{L�0��
+�P����h��a������Yk�67p�O�x�;����OW�nJG�I����v��40��f��K~�R=��h.	�y�a��I������&}=�n��1w��t^�D�B��)�h2�6��FB�E`_��)Hox9O`ZMX�?��\�a3&$ekS�p������S�$Z�D�2�Xx�����"��4 4{L�{w������D~�6��Zb%7��-I���[��w����o���������*
�m7g{��f������5�mM�O2I:4���NC���_Jz!pfUz�d��5�wC)�����=��o_���2�����B��c}���Wn���9��N�qv�
��a�:;(����;���:���n�gE	=�������KL��>��{�y�C�]��2}��=^�~;�\��!K��7���<re��������]�� uL������Sz[���+����	�����b2��P;���Jjs&v'$''�so��������n�1Q�~�&�MHNNNN��:\��p�>37�z�F|��+Q��_�j�? �9�i�E����8�g�w����1p]L|����^���Z�$�z���O�~�������Q�[�ZE�D�+�=��O����!���~:�=uq�g{v^x��}|��CK4��v��^��m{L�0��
+�P�`������s����������]�eu��\�+<���
���pL��(B���~���<�����Y��;O�p�4��	d���>��O_��r�NJ��7~�|�t2�J���uL���I�|b#!5#�/�l
�����X��}��o�^)i����6����0���m�<�NY"]���{f�H��EkJs3d�TSM�dL�z[��q��U]�;�����2J~��K�����������{�_-5�����@�>����~���#��I{�v/���Gug�$��������w�{���eH�LZEy�b����q���5���pv4�MI��-�7������<�; ������*2����A�����N;�kI�����I3,&�����������n����O3��#t>��2k��1~W����������B5��oh�p�_�='�	J�2q�U���������������3'�bnm+r�ZJb�j'�|ImN����A����|U�4��������g�����W��r�2F�
��6�}��Y�"�I��G�#v,��x~Z�9:�4���z������In?3��	��:N����:'�-�w�M�r+�[�ZE���+�]��;;��S��<���:p���������NNf��G���O�%S8pz��b��1��T�+�,Bm�,N����9t��6,#��;���=��?x9l��5'�E?���`��4|���r����>Kh�h�W%����G�1%K&���������@A3^l7���8���mWK���H���N
Vwy!�d��&)?c����ut�.rY0�z���{������[<f#��e?a����g��+�a������<xN��o/���5��s�����=\�#l8\�e�M���I�(��
��<�������y��Y&��Kg����/H Kc�l�����;r�[7V\����z���d''e�(}��i�#LGw�~�G<C/d�Px|��GM�����|~������T�^��?�8ub��&������:�����$��m�?���z��	@�����KB1	yI�y�K R��*���O�7�t�QzW_^v1� �������n���wb��Xs�wf���B�\���F����}�e��g�(lu������yR�o�V��.�����V�hj	�mi��BEyP:z:}#�������������OC>i�L���F��m{L�0��
+�P��eD._������|�E��
[t���=#�}��`��<��LIN���8�o��{�]F��
������D����\������"
�1%K&�%��HH��o

6��	�AK~�$l��J@� IDAT�2��ys������4� =���S�$�g�6>�g�u������Ro��}c���7`���l�U{��g�;�G�
��1ed��H�m��N�'��qr";�lb�����Q�{q����*)�037a���m��]+�����|��
����-&%@�N�b�H�LZG�'�����E�{82��M=�T3���������\ ���=s�'��u�,BSO������������N�u$9)�I����_q�0������qyj����eS/��|����o+�j�k�t�����^mNfA��9���.��	��������$TAB�@�|���9�cY�XA����+�����r�^�;0 �k����	����������. �X3��'��>]2\G� *��Z�1��E�UD�[B�����x]N��Q������������m{L�0��
+��ji9�	�����k�������X�(lm�w`�������7u�������W����)�k�~�8���aHv����r?A�FpS":'���#5�#cS����Od�
_�����s��P ���i������5_{s�������)>���C�9����1�*;������[�N��������N��>�!j����f���Yj5�d��p��/�J�UEZT����)z:���y�_���h���U��&�ad���

 +�����c>kw�����%�`L���O�n�G���I���w��#<�E3i]J�y�V~NJj�������G�|�lY��8�jZ5��#t�7�L��C�/*���c�"=	�*L��x�?����g����3{�&/���$@�����B�4��������'<T��H�l���(�c��w�6'�
�jb�����"
5'}�BI��
���2����f��+�����7+��k��P�[�[E���%d���-/{��F@f%^��*��eg�eo0S-��O�%S8p�Q�*F�S=L����"�&�>����9����$@VN����[g~����<��i��Fo��j���J�Y#C'Ci���:���`�������m�����uL���	t�'6RO:���%l
�^��]�\�[�]�~��������3��M��~��|�����a@n9HA�<[��qe,TUfF!5���	��������h������f5��2.�j���	�_Y�]	����)es~��a�{��S���,{^����b��!����R����
����`�zt:��-������)�@g��^�_"�}������	����N�Zm����6%��/I-�>=��?��t�@�����,d	��(.��Z������	�2.�8��-z�����������!]�UE?����<'������q+� �llL�����c�6'X;�z��c�kN�$I`�X��Y���������y��D_G;MH�F{{{#n���x-��kg
x�Mk�NT��|>�_�g�G@��d�Q�����P�(66=>.�X�����{�N�%V�^�b��-!c��/���'�1�\��{�����df��'x�hK4��v�	�F��m{L�0��
+�P�`��j���(�"�u��Y]����a��~��_R���!t�<CB&�@����h��cJ$�L�K>����i�$l
�^��)���`�mU���u�r#��\)(&�S^�W��yJ������9���D0l�����")�'�����	=�nDI�+~����1�S ��a����V����f|^��<q�Cy��8�K�
A | �Z��?�Iox��:��J
��;R��n�(�pdUqv�]�!
�s��o$E4c
o�I�ND)�;�����.�&Z�$f����v��'d��L>p�s_h�;���y�.�&�Y0D����'|���8�����������N�����|O���E;�����g�e������-I����v�:Z��6�/��l����D_,�����fca�����}X��Z:&js��^>I=&�9����m��]���l6K�E��L{J���������6����=��x���mx���Qs6���O���h7j��g�-,�G,���}��~v�S����_:ZY��j����"���>{�p��_]�N���=	�t�~j	�mQ�7�������>sWy��Z;�X�d�a�����[���!��K�p���]�h�c���VWXY��D��q�j=��boi��e������	�uw�at�ngg��L�`Zv����lZ���i����n.�}�N������g�I t]���5N�=v��f;;;;;;[s��_�cJ$�L�	��}AdS @f�K"�����6�/������yE���N�mm2'U.+��Sx�B���D�;����ut�3k�<��W���Q�����k��E?�g�?y!��0`K�lf�Dc'�G|p����;�%,�w���Fw��>sO�
7�!�z�X������svt�5x�������'�$�WW�nT�]5������X?���{�o7�j�x8�dH�LZG�WDY��V��!5�1�������&�q-�id@X�Us��O�J�;�cE�O�����K�BU������/8j�6Qp�{���<�8��j����;�hr�r��a�ou�l��g����^�����&��_d��G)�Z��\��`�O�^��c�}����Z:&jsM�)���cr��,��g��C�k1���,9[����s!�=6��uz����L��$�������/��7����0��&��	����Z��^;t^�k�1Gc���~��\�g�7���]7.Ywh���[�{#S�'	?Q�� ���!���y�}��H����H��������������[I����"�����W����lH��|�/�B��bW1����a��V��@�
��^4�}�/�����{Qkw����S��������}�v�����:�9="���0i��.F�w/3��L���0���o\�L�v��Szj��[���}��)�h2�6��FB�E`_��+���?�5�����h��(P�kVd� ��]"j���,��_�$��O���>��}��PjJ�R�oYq�y��W��@��le������
7��l�[����a���P�G�3��+3�Mi����5s-Lu��u~����N�O����4�o�g�mniF����4�
J����������I-���|H����a��wa������m�m�I��US��gu�����1�*4�3F�������m��
\�0��	�/=���!�B!�B!�B�x"
!�B!�B!�B}x"
!�B!�B!�B}x"
!�B!�B!�B}x"
!�B!�B!�B}x"
!�B!�B!�B}��(�1a�c��������v�3"T{|������Y�?�\�F�=�n���PG)ObXy��x{�0�f����\����g��@��k�P%�����*+�%B!�B!�B�c���*z�`�
�5��wl�� �T�lp{L���!����>y/�a�m���+
�J�%���k9�e���C������#z�g���{zW���������c7����������TS������s��6 ���NU t��-\<cXO+CfuIf���w��P���:����m�q��M��������t���������;�o��	��8v���!�l-��������w�SB�?�pS":/��HH���7i
/���v_n����a\��e�U��I�������(�5��y6M��-L�y�"��e6�?Y|�wB�}^����1�Y hA�M���o���M�F��
�<����f���'��nen����>�z4<�b�{�>�����s�����Y]���O�w'VRMG��i�=���ND!��F�'�����@J�eUa0xy�����k�g���S���R3��#9��+^���I�d
t�]�h�c���VWXYq�9L��I�LP�*h�_�m�����g]��5s����
o<��xQ�����+v7%�#�$F����|;�Y��J���%?o���s4����0���c�f��Z���}�m��;k:�M"T!\���� 6R/���MAz��y"�j��������1!)[����}�6�R&	��%�������u��x�����c��@���fO?�p%��3�����(�!nIR���r_���l�~��~�~��oUQl�9���4c/PT�inkZ�I������?w:D/�R��3��$k&������\�����h&|�*V����v|mDz.�����r3�V���w����U��V��A�����������'vk<+J���_��TL\bBl���������J�������������"��X2��1\v��+#�������j,��c0�|O���s��]^���L�7�xG?�Q���I.�TR��0��;!99q�{;M�������p������h7ioBrrrrr���"7pc�����s7�o_�
���V��	�iN�.bw��������?����>v���b�������-��B'����}���W��g�!{E��H"e������z�1����_�?d|��O���.��l��oz�����th��|�.����+v�m���Z]ae�����$u�ZU�afggZ���#wrJJ_>v%����s�����6lZ�g�1�����C���=��L����gq��<��q�8G&�Y����?}�N��;)i���}��;�u�`+����1%��������� �)0@f�Kb=v���g�=z��WJ���N"�X�k����:IPd�`t���r���#���)��h�]RM5
��1U\ �m����gVu�����_7�(�!��.�?|�f���OR�.�����W������kZ��a~�\�'�q���sW���t��#6���s���=���U 3i��!�B!�B!�B�	����=KI��9�k
o��h���ZIZ&�o�#7/�=y�w@�k�U;��Ud`�����;�m��4v�����Y5
�fXL���#��3'���p�1���f4�D����cHf��1#��]���F�o��;&�]|C�s�Z�9yNPb����/[�=&���V��>��>|��9Ask[�3�R��T;���HjsReg
ru8��������]]]]->[N��n�zuj� �A+c���a9is�w��E,��4k}49"`��z�J�4gCg��F�Q����1�!��g�0����!B��34�[���%�����^���_��YzYe�����buwvd��<�OyX��u�7��)O�������-��O�%S8pz��b��1��T�+��8��`Z����T�*��I��R=���&�e�<|`����'��/�-���d��}�,���{�P\�����X��Y-m�����������uL���b#!�&�)P����Mtz���{���f�/R�69����]^-���I���F��v&z�����]=������t|���N���-��J���0����3I���0������<'�e���v���	[�\��v����.��6������PK���u��?�>z�T�����Vm������lS�����4���c1I�r
��\�����[7��e�uh�[����Q\����;�#/f�]��tt��W|$0�����������H�>vT���}�y"/�VSde��[����
��:1��o�X��;~��]��������5j�� t��l�%�y%��"/)�_��� �
��^>�Z���1lFM�]}yW������;��N39a�N��"�Y���@�\���F���'Wv�|��o���^���;vL�G.Zz�a�V�:J}9�_=�����.T�WT�WP:z:}#^E�[021R���HPC>i�L��������TS������r�ii�:S�����\��������	qW��y�{q����������s��C��LIN��L���T:]F��
����!��Ns.����r�?����y�FBjLxS�@���M�AK~�$l�����.R�6���N�Xf-���I��Xm|����>�<�����_�7�[�����G{���!S��	�al�-S�j��6il����89�a6qO|������8�n���V%f�&�������o��E?�Y�k��
�D�Om<\�e�W �3i%���|��Z����!�����CM5c�?x��@=��������3G���X��"4�48y�
lOd���W�l�:����$�aB����8@��w`����<���j���fL>��e���TMu
����0������,��"'�5�@�1�/R���S[�P	���I�����emc��2�/�!K�3�5zu���,@�9�:�&x����O���f�l��P�������B��hDeV��H���}9+�z�?��u9i�F	{�o2���b��1��T�+��8���@}���4't�W������Sk��c�������12����=�!��F�=��H>�2�DTL�\[��St�a��
C�C�����	b5������L:������MAf��>�a6|��6��C��L�����"��|���#W\Vp+����A�<[KF������"?#�n;Q��OS���;���X��=B'��9f�f����������+�Wi!P�W7{������5�&���{�WQ����AG�+(��`���������/��t8�1a>��f(� 6�L�������-�I�R��/����V���`���<}$m�'��E=�3��U0�=B�y3��n;�����o<&(��P��dIL�����n}{�8��9�Gn��?_L��:+�N�I>��}+��C�����[���?&pjjqwms� �v V>	Z���!2�Ps��,�$���=F��B��Zu�������f^M����2_�
���[^�,����J�z�UJ��H*���Z�
��]2���b��1��T�+��8���E�$v&��TA�����S^Nd�����u�W�\�����2Nn�F�K�&�����52t2���n�����`�>�����g���GR#��)�@l$��t��K��7��'2�����2�<,
&�������}�(�g��v�-����UM+�)>f���r���y�����X"����Bj����-/{-S�@kc��j��'d\���O�+��0� +��S���������l��M
Y���m�W��/.zCt15!�������5m����t�g[|-�-�R^�$��u+�2OD���'�'&:�k����������$��� ������Zm;+K��%�b��hjib��8�3.e$\:q,e[��!.Z���S�/�C����~��wz����
�s7K��l�0��1��yV��DmN�v �|�z�-�9)�$��b�7f=.��Zp���}�4!�������_��t,���5�54�m:QyW��Pi�����uG�[�I_��Qllz|\���{W�����\!)sERDcY�*[?	-A����,�	oL/0��������7��Yr�	^<�
��]2E�Q�*F�S=L������	`ZTMRg��T����I|���(���U�Fdu��jF����1�I���u�	�P��~����o���)�@l$�~�	������DnJ���?�u[a8b]����-W
�I����+y�R��=i!�d����/�i�{��H
�	�"��fB���Q����0 �d��Dbgvs���}7���Wa;O��P�/N�R#�B���&��|��������m��T�k�2J:YU�]�d�sH������O��X��f��QJ�b�2-%�����)�e�$���	�� ����}�Nv�l��K��k��j��	���<N�8~��fmnjb�S� ��0��S���f���s����y�����?K���>�c�]����}�M��n[�<�)�l��y��XX�|�tfV��������@���OR��mN�(�t�yW#m6��{��2��������lgjb��2��suF-^6��eG�^��z���M|�����#�����Yw�}���E�(&������0n���V�=�Z2g�\2�� IDAT���$���?����B����l5@������
U�������A������>s���]��jk�0b����i�����d$�!��K�p���]�h�c���VWXYqb9���I��VU��7�^����YC�--:��^�3T�01!���
:u����b�I0
-����u6��{��4�w�p7��C�l_�������$�.sw������;�L���������������1%��������� �) ���?j���r��US������JE^'��6���*�B��)<I�y�_"����L�::��5M���+�o��O��t�5h�����3�����o�%c6�@���#�?�{�������������I�;�G��'x���X=g�������9;:�<~Q��A���^����Q7���������e���`�����N�I<�l2
$c&���+��,HI�������Kr��?��]�����42 ���9���'_�����"�'bRw[�%�f�*bvlq��5[�(8�=y�CP��`5r����L4�e��������_6������x/�\��b���/�R���x-s���j��'������_�>Z�IC-�������I�1��I]���z���������c��-�s�d������:=O���y���L�|��������e�zW�re������IS-Po�:������1��?G��t��3��k�����;4�m�����)����(i}�I������
�>��xT-uER@cY@������E�����[������/���N�}e��\�|5�����~�
������TS�����Ds������>U ���i/����_Fui����;~P��f�p���u�>f���P�g������u�4oF#�������G&�}V�i��7.F��y;~�y
�)=���-I�~�>\���� 6R/����\
/����M�nmD�G��_�"��-X�Q��g�5��$�����h��������PS��r}��������������c��@TmAzv��~z��-e���0��}�������������c����:P�:?�f��}�����ol]���3���6�4#~��mg
NI;\���S�O40��5�)99�C!l��.��r�6��
��m>i��a�U�����aZ>X���s�����9���������6!����[�!�B!�B!�B!�OD!�B!�B!�B�OD!�B!�B!�B�OD!�B!�B!�B�OD!�B!�B!�B�OD!�B!�B!�B��c8�?&,~LX|rrrrrr��qF�j��tZ9����������������#�I+�_oo�V�,����B!�B!�B)������e� 4����������SU���-�1�^��Z���������/^�(�+a�HUZ�H�c7��g�����&���]!���"�z^�U���8?:&S p�W�*F�S=L������	`Z��Xg�:U����p��a=���%�I~��KBq�_a���~��i���%�7%rj�o�����kr������>'����9^�����c����w��}�N	-���uL�p�!�XeT�X	��7i���DF�/7En��0.`���*E�$ikS�p�b�����i� ���|L�y�"��e6�?Y|�wB�}^����1�Y hA�M���o���M�F��
�<����f���'��nen����>�z4<�b�{�>�����s�����Y]���O�w'VRMG��i�=���ND!��F�'�����@�������Vy���:e���-5��;�C�����>��K�P�@��U��=�z�ju��'�������5��V�E�����~���Z3���k���c��u���~�bw�pS8�Obt����������4��^�C���Y>GsI ��s�M:��`��5����w�v�������$B�uL�p�!�XeT�X	��6����D���u�3���6cBR�6'1<�����S�$ZS>^�+/��_�U����f���q���=�P�������fT^K����@0�%IQ;~�}����������US~�UE���l���=��AQ����i�I&I���#6��i���KI/��J/������nG�r�;�g���=�X}WF����A��x�?r����[1g��?�NW��a1L\gE��'>��S�����(�g?~��S1q�	����z0�Hc��+�[��Z�����o���X2$b���p��G��8s#>�ZT����`��	���=q;|J�a�w�y�vB��3��X��TLFj'�|RImN�d������}��4��������7&��o����	������[�����a�g��_���O�}%*��+[��$4�9]�Hf�R3&��,��,��]���������k���{���K|z���,R&����_�?d|��O���.��l��oz�����th��|�.����+v�m���Z]ae�����$u�ZU�afggZ���#wrJJ_>v%����s�_{��6lZ�g�1�����C���=��L����gq��<��q�8G&�Y����?}�N��;)i���}��;�u�`+����1%����O`�Q�b%�/�l
�����z��3��x{ �JI3������?�D���|6�R'	����u����g6�{[��47�AvI5�4`K�Tq�����g�Y�������(������������?IM��w��R�^���KH�S�i����m8r����i�b�]yTwVH�����8[��}W��|�ZV�d��U��+�YJ���^ChxgG����J��2��y���S��^����|��"�^��9m����������i�4�bB������9�}����q?�4���=B�3�!�!����wU��)k���.Tc�������s����.G[5���=&���V��>��>|��9Ask[�3�R��T;���HjsReg
ru8��������]]]]->[N�]�@�:5����1bm����9��n�"yL��>��c�����"����t -v�/=B���9y�?���b��5~�5�)]5AFe�2��;;��S��<���:p���������NNf��G���O�%S8pz��b��1��T�+��8��`Z����T�*��I��R=���&�e�<|`����'��/�-���d����,����<S\�����X���-m������7����:�D���	�2m�X	n
Ts&#�����	�b������_�nmr'���Z2OY���1����L�::v���]=������t|���N���-��J���0����3I���0������<'�e���v���	[�\��v����.��6������PK���u����}�����s&0l���0�U@����"5�	di����b���=����#CW�n
��f�uh�[����Q\����;�#/f��hd:�{�+>z�Anaav����w;�{�i~������Y�z�V���|C'�N`�7�2�����f>������6��R���N��-�$<���T�%�����m�� P;������)�f�����w�]L�/��sx��4���4<.����I�c��1Y/=^A�s������������/��;2>He�8
c]�(��(��t�t�F����`db����@C>i�L��������TS������r�ii�:S�����\��������	qW��y�{q����������s�����LIN��L���T:]F��
����!��Ns.����r�?����HC�'����b%�)P�OFt7!-�a����7����H��dN:
c�!�t�2&)?c��a>��,>�X��"�����o\�r����=����U{C��]��al�-S�j��6il����89�a6qO|������8�n���V%f�&�������o��E?�Y�k��
�:0����2�+�������%_��-��h��~6i�PS����:;P���s�0p�z����8t2�e�M=
N��KYz���i���$'�<I�s��+F���63#.Om���l���@�zY�V5US]���E0L���js2����~�wPdL���4<���$TAB�@�|���9�cY�XA�����v����r�^�;0 �k����	����������@�x<��������f|��"�������%�M����h�����TS�����0'��������_�;���ZN�i�e���Vz�����{|CP��~{.y�|~e�������|������-�d���/��jD}��
`2�	��*����MA�dD��0�r��?�����@��(���cgw~k�����+.+���S|L	�� s��%#cTUv�m���E��������io����}�C��K��Q�
�j��P��zv_����������=S�t�����|�O��=��(�	L����#�@V�A����|������cK:���������� �M7�6/���Gxn�f���(��~NJj�������G�|�lY��8�jZ5��#t�7�L��C�/*���c�"=	�*L��x�?����g����3{�&/���$@�����B�4��������'<T��H�l���(�c��w�6'�
�jb�����"
5'�N�(��#�^zPuCSA�����-/{��F@f%^��*��eg�eop�l��|�.����bW1����a��VV�XN��j;@}����������?'�rB����:��_�E����('7z���P�vPUZ�:JK^7�D�~z0l�V{p���y\�#�\��@�?�U�m+���6����DfW7��Va��������5>|����c~�.����"���i�<��l�[�B�9��^����QU���s3&�[^�Z<�����^7��X�O����M��W$~eav%@V�������������2N����y�����y_\���bjB�K�x{+�k��i�������Z�[����I�I�^}J�I���'�'&:�k����������$��� ������Zm;+K��%�b��hjib��8�3.e$\:q,e[��!.Z���S�/�C����~(�r3dyNN���%�V6	@��������c�6'X;�R>I=����I��d�����m-8
���s���v��X����F���/�Z:i>D��VV����{���7���rO���}`����;����yIq�e�������Z�HN>
N��Qge�p��b�\(8�-C)�d��%����d0B���������s��7���2������<��|*\2��@�������a���lC
r�YV� ?�@WSW&>�FQE��7�q$� �@�<u�Pz�1��quSG��q�50Ua��:&E�* �Xfd�X��!�����x!'�����U[�=~��E��N{���I`f�Jy�"��~Q!p����$O�`�����F�v�$��fB��oW"7<��o��fS&��N��k9@%�yln>��4�jkR|,D�V�F� >tUe���.�;�[5"��������Od�Y��T
@g�I����DVM�M8�jG�]��Jb�R{�����_�^���+�Q@8i)J?ZO�HJ#��Y�d�
GYS�Q��/�m{�����>��Y%E�\Z'+�><y�Q��s��1-�?��{���Ik�l���}�R�����o��<�v��������[�63�c�gk�y�`�P��f���������Vc���J��	���t#��Gr����$7!�=�jm?����rvyq1�G&��=g��U�J��bu��6�A����2��JkdL��#t�AMD>�t��`�C���2�i+��cO^��l6?�
������.c
[c����W8�
5�	`ZdMXe����U��������'V�rp��y-,�����tV�w�S&���
�����RS?U0Lm��J_����7������w�4u�������8�{p���s%|%��cR���?�eF�����PoSJ�`D���(HK-���[��Hv~ZjVic�#jk�����BB��Yw�P;N����fl���ij�G�V��1x��1���q\M�1���h/��xP]��6�8AP'vBs��S�����8,�
[�{�v���]��B�7�!0��8��*�Mr��k8f��H^������=\��e�]���|�!��F�^x=���&�;��L�����T/D�[��9&�-�d?��zPE��J�{�����-�������|`M��q;C�m�b����1����o�*�~�i��h.P�r���d��n������w�o�+���&������i����u�X�2�B����cO��������37���?��Y�?�����\�����Vc���
�9>x���wW��9�;&��/�k�d�
���]]uU!�O�q�=�$?^��Z�}���~z���QA;����I�r�2&y������JC�����z����)�&���v������D����%�N��H�������a���lC�s��R� ?�@f�ouS]��~�.Z4V~��MO�����m��w����@0Xwf,�O9�:��R7�s����sN|���}|��>+L7��'�v�i��W~7�W���'B����������O`���b%�/���#f0�_���D��F4�;
���z��-X��U�x9/���!��O��
��3W��I[*�S��Yr��c�W���z@��l�Q��qIE��qIu(����w�c���_7�bC ��Y]�mX����>��>�Xr�JU�T���+��V9z�]����=���z&�����j����M��DN����������!,��.�;�R�|*l��Da������Z60��
gV(L��g��9c���)r26v�
\�0��	��M��@!�B!�B!�B�/D!�B!�B!�B�V��B!�B!�B!�P��Q!�B!�B!�B�U��(�B!�B!�B!�*�BB!�B!�B!�jx!
!�B!�B!�B��/�B��d�����������a�l����n��/�w^�/!��h�������OM��h���?�e���(B!�B!�B!y�h�@i��QJ�n�����A��4p��f����E�z�n��]��_Se	Oo�*��Ia��'jF6n�z����������8�<�l�q�WjF6n��L��@�b�1��1��T�+�����0-m�Ae�<��nl�t�l���tVnBD���e��F�d�����5o���3�S�S��sV.�e�Q�S�����WuN�~��N=��+�0���?�y���g�
���cR�� �'���MAT�K|!���;}w~��u������I�����D�(��m�8k	�[p�����y�Et����]l=^r��&���	�f�^8s�����W�gT��m��K(�!�z�lt�6�P��6�S����9������0�
����~�Ywm:+���o���K(��@m��2#j�������Q��Q���w���(j3��(w�
# ��:���>�7l���b��g���xi����%�N��H�������a���lC�s��R� G��2l�����[�$T�Y.�������3�����z��m����|���m^.�{�����w��_��a�s>�B�q��Ye�y�S��S�;�a���~���N�q�$B�uL�y�BB�E`_�)�.x	/���n��^Z
W�	��5�;����c���1H��,���l�����-J��6MnS��y~h�����j�cV{�.�^JI��qr#��������=v�������}RJ0��������>��Y,����/2	��=���t�h���WVEO������G�0w�rd�^���1��
|r��v�a��������'��\mc������t-����� �Y���WN�:�o�UQB�x���W�C�����4�c���Flz�g���G.�z�����+F_1�cM������"�� IDAT�04�������`D�	@7r���g����.=
}p}�O���~2&f�s'|�DY���������c��-7�����~St�����`w4,22222t��z��������C�������@��B���bT����C������!�6~�bf-����\��$�Y��+�6���jD	@i������-�z��+��RS:��_1�W^��{���;���lZ����;�o��<PMf��'������yyZ����n��X>����������O:4?�
����+V�2��5&{�jy�3�P��`Z������Y��������g����o��Ja�1�Y������c��l?_�T�1d�P��s�G}������+��l���L<��y�����E������N=�>�G���g��I�"/�XHH���6�-x�/��4��ev���A�M�cP��&�;���l��)r���%��g��;�������hE~J<_R.��m�9m�x����5�O(�3����k(�!�o�<s�qd��w1������n������z���/������o����n���*$���kF��[�����]�� 1#i����~��e�+�i��Y?�����P��,���r��N[�>Y�;�>J�1
��Z���g�~;��sWx�'V�M�j���[��?����_������f���G��q��1o���n�4�o�������F5�����q�k��-��k�$���������SXV�����`�����5��Y��;��'����
�/ia1��r^e��	�,,,,F.�/���r���,i1rmp�2�u����s���9���H��z`�p�������_�r������w����u�����;�*A�,��L�#��^���n�4���Ut�����"T�>��v�����_s����q�T��ic��c�EE�EE��1��\�}�{^'SS=��#����p���b�.c
[c����W8�
5�	��
�L��2;��{j�X+}U�����V��[��;�K\7\N��ql�����g����;����P,���J��r�Z���/�cR�� �k��M(����@�mS2{��o��"rk���CI!4g��)9cJ]�t5��3�w[��8�~����Ck��j
6��2� ���T��;�#�����;��:��_$�a4d�jlt�������\>���\�a���j{7�F�t����?�P���{;�^����6k�����W$���.�9�A�������p������}!Q�nz�it��^��]����=�7�~��C��:z$��ya�?��M�hx��{/5��V
�V��'i3`�i7��$�9���{��u?O".{������k�PK�����lR#�J/��������������)��D�A�;���b+���=����mG|�gue6���
2���WK�n����
�u7�4���6��Y`Z�t�w�i��7l��+^-7=�#�������Kdq��s��v��AS>���tt����(5
5�f;-���2��������?�
������.c
[c����W8�
5�	`ZdMhe��,p�}�7hz�z����ry/������U��6h����*����M�3$���J�&,���m��m"�-�4K���A��_��uL�y�BBr��������BB{��_��y/x\@�4m"�6	�EID���q����U�z;/}���V��-U����I���A����.���a�s��JV5��6�d�u'H����[���l���������~� X)�v��}RB��^G]��Y�*�Zs�Pg�,���f���&�u��I�
H� �#i)^�"?��d-��O��c7il{�����L�7��8@h��8���L���3���;U��#�_�7s�N���Q�����F���hgl���{��;3��VI�Ie��xd^N���Q�
5�����FerBz�/���>���&/#&�{��	�!s
�O���h���!�J|��Rdn\|�����i�H4(���T��'A/����P
���o�u��
��E�����vi��x��h�����@q�\���E�r��l�}V��*�TH�KaoB�����@c�1��1��T�+���0'_�����~�|a�������V-��T��-X������w���v��\��+�������W�%j`2g���I��}^J����ji��LE��)51������B����,��� ����'��������������[&�������8�)���!�gK��U�������'�/V������W��6�;R��R����	j1Bw��8���R��UUxo�c��Zc����w:g->����1�@�E��>ZD$��vs��1n^��i[XwZ��om���d'A;G�n�'��f��e)���[y�Q1�)L�*%�����Y���:	�bY������=�N�d�x:�w�:��a27x���s�C1u���v�]}3����s������UY&�u�����H������&�+*qwmsBfA��A�������S��q
�*|z7b��w������7�������E�P���4������j2(B���8����N; ���E�2��i@QA1�������%�n��@�������a���lC
r�YZ��3*_9����;����$@b���A�{����}�T��e��p����AJ�<�A~��������gV�Z��?���q|p�"E^���|R3��O�� ��������������)@c(����O���r�'��p�m�-f�Qdy^E���M~��B��q6�ni,TiB|&5����),��n��-���5}k������jo�hL�������7���7����������,��^V�U1��Y�D�����������3�t�}[�]u�
��8�< %M����l����r��~��0�VG;���}�o��;7&&�P1��x����/+T���3�����a�AYE�hp���)>�v|������7�6W��]N%��0G��P��;%����"�Y���'I$��w����"��6Q��;y��cJ*N�$I�3
���-U���s�R��!���!�h����q�?���tTq���5�e�q|���-	��h3dv��b�AC��������
VhhiPD0���R��`��_!��~�}��<��s.���%0�N3��>|�7�6?�
��z�(P�2��5&{�jy�3�P���E��U&��,����	�O�QE���{��*�a�:O�8��GL�yB������|\
LU�s��I�"/�XHH���!�����BN�q�i����*B{����8����g��.�L-��8E����B��g3I^"h3}���5b��� ��7}���y<~���6�2AP/v�v_�*I�cs��y��T[���c!�5*������*��w��q����%�v��M~x �������R:��Mjg''&�jZo�^;�/�BU��k�T�M�����2��_��x�IK�P��z�EbP����%�U8���:x�o��S~��|�����*)*��:Y9�������������i��)���KELZ�ek�����
�.}~3^����$��D�J�����?8[s��s3���_5�M���DL���X�dVZL�m����<����=&�	��IWk���o������Y<2����9K��zUr�������W��iF�P��A�����+���rp����f�y�\��?o���q&4����bB��S�}�z�bR�{�����_�����\0J�������������\�R���L[a�{�Zl��eM����p��8(P�2��5&{�jy�3�P���E��U&��,�^���X��>/�hpb�� ��������>�F��f�Y��MO��kw742�V~JM�T	�0�u2+}�>���|��������H �����>��|P�ed�-JO�-��;:p�"E^������m
@�)x�/�*
�R����(�����U�������t'�5�D���q�$��S���fl���ij�G�V��1x��1���q\M�1���h/��xP��@��l�@��	��O��R~���P�6l��=4F�M��v���;����0{����7�y,�����.#y���rH����p��uvy���5��s�{����R����3A�F�"R�dzTl�J������,���AQo+x�}�zwZ����b2/.���5q���
���*
>��|��>���D�Y�i��@��A������*s
R^�������7�d��F�
�%��O,�Ub}�H�
��j����=�~��fg��������<�f�W���&js�s"�OX�I,N2+�����N�]�B���������Y7<<�ow=t�U��?1�����xi�jU������1>gF�t;��'i�����O+~������&W���M:���b���gV���2����Y�!
�������b��	e�O|��F���n��+$ETi���^V/���2�������;�"����H��T�d�	)vS��=L����m�~N�"sB*�g�l��n���o��E���Oz������U�$����nQ����^�)�Y��y@Q�&v��{��}���{��oX�g�����d��=�������&����D���p�"E^���|��m
�S��_���D��F4�;
�~��$l����/���5�#����\�:x���:i�BE~j��=K���:{H��z@��l�Q��qIE��qIu(����w�c���_7�bC ��Y]�mX����>��>�Xr�JU�T���+��V9z�]����=���z&�����j����M��DN����������!,��.�;�R�|*l��Da������Z60��
gV(L��g��9c���)r26v�
\�0��	��M��@!�B!�B!�B�/D!�B!�B!�B�V��B!�B!�B!�P��Q!�B!�B!�B�U��(�B!�B!�B!�*�BB!�B!�B!�j_��(������C######���#d�?�t�_����_B.P�0;�}7����+EJ4[V�bb��;��t�S
��w-��B!�B!�B��h�@i��QJ�n�����A_>���<���������J3����j;U������L�F)�Z6�B���
V����8���C����m=��*B���M�)8(V�2��5�j=u���
4X�@�f�P7�Y�|��}m:+7!"���?��k���u��������VL�������9+���2���)Hzv���:'�f?�s��h�t��Y���<u���\��s
�H.���}A�� j���BZ��w���^;d��U�������Q���Q����q���f�5t�������'�/��z��V7Mn�����6p����,����'�&��P�C�����>m��~Gm&� ���s>�o%�S�a�0m������tV�[�����PB����eF��I�}	�BRA������@
�����a�Z�R�g�����T���l�B�/m��T�d�	)vS�C�����"sB�w��YP��k�U��-�*�,n����b��UgL�����q�I`���y�6/�n�=Vn�S�;i�/����9�K!��8���2����D�������k���y'��m���)�!y!�/�D��^@����?���v$bkkDwB�����)b�-�k�	����]u}�[���m����'�����Y���^"�����]r?���A��F��+%�3��{�"�-�5K�����`-��3W���}���X�
�W_d��{������q�#2���� q#i	�]�b��]>jx�v��|�11���?����������������S�>�;r�f�����k1w�2��};(s�������jBU�
c�%+��7���-Hxv����U4�Fl������Q���E���5�r�inU3{Np�����d��K7��'�M���?�]Y|���\�wW���^��Z:~�EV]�C�GT=zn��7;l��������>��J�����(���
���j��z���+NF���_���_:�i;��������.nLq�)	1�$:>
���������o�dT�[7v�}�%��3x�����6����t���vR�4<Rj�r`�v'r�"��m�D�l�|6m�A�G�|;�{����������`�7>�S�_8-��K?�
������.c
[c���`a\[dM���34=#����z�}����s>h�d��t� h]l���ud���v/"4���|�u�zT����+V����p�
�L<��Y��7�j�n�2z����d9��H.�����������S��w���-��~����/�FG��&f��6/B$,�M��ABc�Z�Y>G�����y���g"+�S��?�B�&�)�	��2?������M>?�����/���D�+����M�>�'�I,4��;��Ko��7��z+�;��������u�~D�N>�>����"q?D�������4����vJTL	E��j���Z9���~�,�p�����F-���3v������+<�+���u��}����k���/�~�f��o�k��#��8�N��7y�d�{��7hN��dYu����s�8�������5u�~�
������SXV�����`�����5Up}�H����*#vOfaaa1ry�U(��:}�*#��q�������k��5�;N�jQ}�"�9zJ��_f�0���7������^��
�%!����s��;R��T���#-F�
nP���v������2�y[��[��!��H���a�JDu'q�"=�3��e5���#-*:-*�������������:��6�(B���T�d�
\�b�1��1�P�i������-�r5dv������V��0�����04����w���n��T���4%6���as��MLt�}G,���J��r���sk�f@�pDHN	n
4a�l���
t�6%�����&�/"�6	���0�Bs�)n��3����HW�K?C�z�2������!�n_8�v��!�`���!�	b�N5��s=���!J�}���S���GFC��FW��=|����[��F����GqckTI�I�Hqc�|���J?�^t����>�B@���wQLT	d�����x�����:���7��}qCM�s'���������������_}R?{���g�y�N��L�����8C���������[),�,���$M�I���i70��XwO�x���I�_]�:������� �����#�c	��(5��+|���B`��O7=�#�<�c�c\"�������Y�� �n�����(V����x#��w��JBr!	U�0i��"��D�A�;��o��e&=;��L���j����R}����I��CO��6{�AM����E�EE�E���M����������#1��T�d�
\�b�1��1�P�i������-��5�x_�
���_~tl����w?��XP�Io�~uUG
�:gH{%�������/��u���!�-�4K�v�A��_��7R� Br���@A�W���	�=r�/V���?.h��"bk��hJ:bCh�8�Rr�*C����t^��[��l��7�����v��o��_����z��I�i�Ym
���Y�YwK�������GB#���;��,f���'%(�u�e���o��5��~��;p���6�i"���QI$|$-#�S���������i�9c�&�m�|�u��	��^-������I7u&�P�Pb��6b_&�_�7s�N���Q�����F���hgl���{��;3��VI�Ie��xd^N��j��U���B�t{���LN�~�U����g��6x1�x��$d��v���rI��\.��r��q��d2��!7-���EnVZ�����{B���hD!��B�0��)"0z��= IDAT����+�����q��J{v�A"���������N�8Ez�g���j&��S!�W,��	)n2��]���B��/�������]?|����~re����yo*q�,��62����=w��=���Jb.�g/4��}�����}t��b��?A,G��Z�&!9�&fS{��!Mo��
��ZZLA��Qt���O��U��|��-��i�V�p�
��`������d�*M�xZ�gd������}LlY����[���sa��m�h���;�~����)B���
�*���1JC�������;��yYJ�t���}w�
-��i
��e��7/���-�;�����~]u�� ���#v7����OJ�F���H��^rTk����C��gc�e�=��N��X����1'�uO��1E,������D�f��
���������FL��`���sW��&�>?������"EU�	�_����#)��jvC��vE%���	�;h0}PU�A�5H��>��Fo��#�$QHB�=L�IGJ�5l������i�]��H:��l�������]��������JF�4���Q_�����S��Y7pP��eLak!�z,,�k��	]��gT�r��/�w��I��d�c���������b?>�N	��x�S����2&xN���O�9Q3�����<�l�*GtKr�H.��5�Y��l
�WN!/��������}g
�Jt����)>�\�I�%�w�y�Y�,Y�W��q6l�� �D� v���C{
U��I
��G�q
>@��l�@Kc�jM���+2d���O�7&^IfR	@b���T����[�����]T\A|L/�������b�W{]r�tP�d���G�������:{�VP����&H�HZ��I�!U�����:�����<}5E���;�����!TL�'��r���JU#��z&���Fq�lPVQ&\&b��v���(��M��Unf�SE	�9��}:�FK��LY��\�4����$� ������D��D2E�$	tC�R��M��BW�cj������}�So�d�iD!	�vf���)�b��a�AKU�6�����tbH?#e�Z'c�v���9_�]}�1N��eG�����!�w�@sh��|����:������<��|*\2��@�����B��4XX�Y�����]M]��DEQ������������C�q�T��!�M=<l�����T�9�o�@��	_�)�_9E��u�i�?��v'��o>��s�iOPz6	����B)�Sd�� *��q6����f0����]#v;o~3�a��+����7�i�)�b�i�����<6�	�Wa�M�5)>"p�Q�B���2�Kx����]B�j���T�'�2
��,�N*�3��vvrb"���&���t!�*��J�5*��{|Azx�����G	<���d(�h=�"1(���f���*eM
F����q�)?�[>��P�f��sh���ft���E\F�R��V��T��Jn���"&���5���iJ�F�����l��g�?r�o���ps����9��9�TB����&�%2+-&���O���r�es�:s��O��I�M\�������������][��Qr!	����	9R��^�mB�{���~��������b�L�{#z����^��y��>�mn���U��[\�h�qJ^v��9���������s!�sH9Rf0m��v��k������S��Y7pP��eLak!�z,,�k��	[�@~f��*�E�z�y�G�+t98�U���T��Z�:����)t���FF��O���*��Nf�/��p��Oq�yXQ��	���������w�������E������?�H.��
�}������S������~��,�d���f�6f<��61��i�*�!4{�u	�����0��jh��A��?c��i�yd\FW�p���8�K��8T����6�8AP'vBs��S�����8,�
[�{�v���]��B�7�!0��8��*�Mr��k8f��H^������=\��e�]���|�!��F�^x=���&�;��L�����T/D�[��9&�-�d?��zPE��J�{�����-�������|`M��q;C�m�b����1����o�*�~�i��h.P�r���d��n������w�o�+���&������i����u�X�2�B�����cO��������37���?��Y�?����d��
�9>x���wW��9�;&��/���MMR���Tf{_4�*O~zr����Z����BV�ur���&17<<�ow=t�U��?1�����xi�jU������1>gF�t;��gz��V��eG�����*
�v�K�����^�T����}�S�~�:����:��"�.c
[c��Sa\[dN���3d��V7�e������Ec�'���t����O��V�}7����ug�/������<�(u;�����>�������7����t��2o���z�op�w�e��{"��	}�f@�pDH^��6��Y9E��%�����h^wH}��7H��%�5!^�K�k�G|���Bu��U?u�V�����{���X�U������6[8ATez\R��f\R�G�y�@����X�7�o�������|VW�yvm��Oi��=��R<U�p�Jo�U��gW�r��CO������0$��Z�wG�S?0�$n$�)22���@��������C='��� ���z�����Sao%
�O�
\�0���y�W8�BaZ�8M��S���N�����+l����F�M=�$�(�B!�B!�B!�Ps��(�B!�B!�B!�*�BB!�B!�B!�j��Bm��d��Qm=�B!�B!�BH��Q!�B!�B!�B�U��(�B!�B!�B!�*�BB!�B!�B!�j2��9�;4222222��M;��/gv0�nl?�&��?�����d�Xf[DN����M�������p�$c~��A��d���J��m|��M���������B!�B!�BH(��:*
\5*�,7������V��c[��m�+����BhAJ(?�,���[E�<)�	�����fd�������^����!��������fd����+vS��=L����E�-��6K�����Mg�&D�8�GXv�_a�NV��9Y���I;�95?�:g��Q��9I���xU��f?�s��h�t��Y���<u���\����1)��LP�|b!!y"�/�D���:|��w���!['�
,m���mm��NT���f��v� �7k������]d@��?�}����%��Ahr�M� hF���3��}��xe�FU<�6�=�����F�iC
�;j39)����9~+������i�]���u��������~8�����(.3�&H�H�Of��WTa���m=
���5��{��?��1����
��������d��+^����x��8(R�2��5&{�jy�3�P�P��k�U��-�*�,n����b��UgL�����q�I`���y�6/�n�=Vn�S�;i�/����9�K!��8���2����D�������k���y'��m��:&E��	
�O,$$_�a������B��������p��0 [[#�H<f�>N�h��M�g������K��4^m���6e<A�����:���=f���������'7���_)y�)��c�m9�Y:��'��h�~����N�s��R�h���"�����c��M������!peU��IKH��R4]���}o>}����S�N�K��"��Mg���x�4��g�*@����?f�A�r�����5E���7������k������Z�v��3�#
@i���G{fM\y���O�8�bt��LZ�?���t�I���{W�m��+��_s��!G��U���/��
|r��v���n�r����V�]
z������7�U���o�;�x���C���!4���;z%8$<�Q���N�;��������9��
s�->g���>	����j#u@l�UOB��a������{��+��.�����
��x|����cW�98���{�s�
����1����#��0iD�4(��� XU�������������,tj��"t�������:/O�vSu����(�o?�?~��9��T�d�
\�b�1��1��T�+�Y��M���}��W�>K���|{�|P
��Q�����.��w��:��|�SQ����C�����1;�C���d����G2��J�m'��u�YT����:����/�o�q���T�|b!!9#�/��h ��E���p���e�{�6��AQ[����"t$�M��ABc�Z�YG�<��cB����)�|I�,�����)�	��2?��>���0���=,�$��K�}������o��D�:z�^~�����
D���3{��v�~����oc_<��������j{�m�o]���<w-n����E��Km���N=c���YO����?�������n������/s���%������Up}�H����*#vOfaaa1r�!%�;��C�j��1�����G��<��q��v=Bm����y��Ov��9}��e�=l��3=��Vxy�B�)�\~�W����Q�Q�l#3c%�:au5���SB�DE��0��~
��j�qV����RY�B�����I����^�8���ZW��G�����f�����wh6��6����6���FW��i�P��,���r��N[�>Y�;�>J��_URyW���6�Az�O���SJ��'���z���yDv����.RZ��)�����jiP*��A�$��.�[����w��`wx�����z�L�0��1��������X�ni��>�=��������
��T�d�
\�b�1��1��T�+�Y�����=5`���*�vf�Ft+
y�����%�.'��86M�A����3�as��MLt�}�/���J��r�Z���/�cR� �
�O,$$�7
�P�
v�����d������E��&�;��Bh�8�
Rr����jt�g�Wo[��q<�4�����N5��g�04��hv�5d:Ac��fyw�G�7>BI��w��u
_��H�h�@���
��g����|r���v�����(nl�*��#i�~R�����zERdD|v@~����yQ�����u���Vl@���g���������?7�;�$�������w��E�:ZM�`���!5��y���RX�b�<I�1���Y	L����.:����
�s�+BB�o^�W�3�E���6k�����W$���.�9�A�zO�$6:B-���?��IH�x�*����Ev�U��l�?q�%D�g�84���g@	�������������In��OXt9i����A��d��b=a�e_FHT��� i�E��B�ro9�0�
�q�����L���?�-^�� �Z�J�z���`����xa����H��^g��f�FK������E�E@�i��4�iq��A/�vd����{��T�d�
(vS��=L����E�mp�}�7hz�z����ry/����#�@�'�MZ�z��J�"��ES�	��E�R�	��-EG���g�m��3����xP(��p���E�'�c
7�F|��#W�b��{��J�ic��I�(J: :���S� %g�2��y�����gm��7���Hz�V����wYw�s���T��A�f�)&c�;Aj�v��.��e�D|��T�����J���u��
��:�2�ZTq�����:Cf��8��5k�6)�;��OJl@�	I�H�B������[w�����z�0:OR����R��W�VB���*
�����NO������;�'&O�q������d�)ND���&�r�o��*X���B����vi��x��U���������i��3�n�����^���Po��q�/#&V���|��c��r�_B&K��D;c����s�������:�����$�)�D'$'�0-�Z�?��3�+�n:�L����NUu��Q$M���S�������W���N����-�%�H��V�@����)	�n���	���W����g������S!�W,��	)n2��]���dS-�pf�-���~�|a�������V-��T��-X�ct���w���v��\��+�������W�%j`2g���I��}^J���uL�9��;�Sjb6�_��4�qk7X��kAh1�O��M�?5�W�S����LXs��[Q�q6lSH�
C;���1�4)�i���YO�_����1�e��jom�w����&�Y�I�b��X�q��y�"*���.�(
��Vs��t�Z|�e)Ec��N���}6��H��5����c:���S�����&{���u������8b'pS�89��4k$-K����J�ouxy��r��A#�n\0����of7�s�&_\w����3&�`�O���So���:��(�����x�Q1�)L���P�����_�u����p/�%4��{cWT
�H����uA��������m>��|~�9��YmHUY&��6�������EZ�cN���^�c2�X<���}	�/?u�Wj���W��:/�5))��ht�T�J�z��� )��@p
>Cw�v@&����*e�����b�T3���p��8(P�2��5&{�jy�3�P�P��av�4��|$�=�
�;��?����=��N	��x�S����2&xN��\�?��g���3+O-��������uL�$%�XHH>���'dS�\�B^H�ci�I_����1�����'S|f����K8�6����/�<���l�&�AN!�
A�8���qi,TiB|&5����),��n��-���5}k������j?��x%�I%��o�S�o��o��+�vQqY�1����b�����^�u	��@��}sg!���v���Z	@q
3x@J� �#i�
�
_"��v;>����Q^��F�������Jq�lPVQ&N�r�R�	��H�+�����'�c�5=�$I�3D�S�"�#SnD��5e��e���o��&���Xs�C�����y�����[���<}5E���;�����!���o=�
�v~����^�_}2I���s���t(
�n��[rM0' �Da�4��x����/+T���3����U[L�U������B����L��c���S	>�@�G�nTjP�o
��� ��`v����w/	��
���X�;����Y��\�4����$� ����^��#��!�w�@sh��|����:�������������T�d�@�b�1��1��T�+�Y��]M]��4EQ����Y�������C�q�T��!�M=<l�����T����1)j�LP�|b!!����l
�^�9Q����C�������/�w���M�03�P���&��
�+v��$y����9�s���������Lh��J�����
@s�l�@��i�}-�$=��m��U�fSmM
����j�������L���s�u��FD�P����6U�I����� K��J��B6�����X� )�	kx�HZv!J��!H�d��|��A}�v��s���1-5!�R��������`o��c{�vj2�����7��&._5��.������ �?�������;��>�T�L&�������������^��$���/v��s��m�f��s��SW,�.�ETIlTj/���l���
�/�7�l��Wd��?@q�IT}r���+��4�6�@	��������e���n]z����������)r":-�*�����4�z�E���z
��a�h���F�EZ��'�sB�{r�������j��A�.��]]�v�j<~��8�����$��b��Ml��O�G�V,�\�u����#EI� �A
��NIp�o��ps������O+�f(��������^X0x�:�&�������t-��������T�d�
\�b�1��1��T�+�Y���U���~��F�� IDATw���|�
�����aIUO��ku3422���L����l_�����e�8Ks�!cgm��bXQ�)�4u��������z���������������?��1)j�L�'�3�B�M��/��PQ�����V����������'��61��A�����;�:���D0��jt15��<c���n�&~=t����S���z����8������	�;�9~�����7�g�S���{h����%-���;����0{���?~3�����QS��^<�� ,� ���=d�rYg7�w���nN�x/�<���&�;��L�����t������yDq|q����� �����D�1���1��+?#�P���*��`��� "�"�B�H��� E�T���������Q�#���_z����}ofnwvf���������(qR��������G8�7x����E*D����cy@���UV���������h�����;_�a�������F�6[�]HIl�*|�b�����5}�/������+���9���2_��w���If��)w���\�*2��������b���[��kU	^;=G���	K�-�|^���ey��
�m'W�(���L�	�����=Y�	��ET�_y�p��q��e;2/!����	�<-��8wkF2Q�k����\��=r�V�L<9��t)���)����>j^�������=���1���<\Lv��vv�����^1.
�=S�S���x3H�=H(@ %���l���m���xY_����
_HS���4��a?	�K\��R(M�8���R*�������<18L�]�06�dJ-�`d�- ��w��������rMVy~��k[�|V�T3�e��k���'�6����3�s=�@Qj�-l��n����q���+��Ya��w?
n��e{�<��6�c�������>��Hc1�1zb"!�����hR.M��/���D��F��9
��g	S��!�"�m�� ��(��?Q+T��Y�S'-��O�y�o���������@��le�������Q	)
������������>�
��u�,�/�j�p����U��}z��+N��v�*|����:k��*����S��n����\=���g}��1����S��������<r��k��6��3O3F���.�����"�'c�=(�l@����HP�����d�����a���������A��]��#����j;�nc������/�L��#� � � � � � �E^�T'���kleZ�1��_0���� � � � � � �!�u!���q�[� � � � � � �dXmm� � � � � � "��B� � � � � � �I��(AAAAAA�� ��(
3���������#���-�����	T�]�3���z0,d���6DNhM���������b�$����a�f�+E;��������,G$AAAAA����UC�w���
�6�����
C�p�yzZ��2���0�Vd����>$=��+��K�JD�=ZmXqDj�j0�M��]����G��;�lk�>WU�i�LS�q`��2��9&{Pjy#+LCMei�2�)
�����������.�M��=y��������N����c���f��n��:#��]a1���� %�/�M�S/07D�+h+��{�s����\F\��8&E�<b"!���� zR���:|��k�wZ�;�_w���6������8%���Yo$N�-"��m/y-�c������|�����
��u63@���W����������q��p���w��g���#�{t�R��>����/���q����v�����k���_x��p4�����H����[�rd�� �
UqvwD[[�Hk�!4�:�o
�G6Z�~�;k�6�}�~���W���FO����q`��2��9&{Pjy#+LcMe�9"2�(
�#W�m6M=�}�oR���%N[�Yle{%���I���u����*�B���Nn��=:��)"O���5���+_��b*	D�����Q���$@N��p����*,Yx*��&����@L$D��DM
�^BAv���������j�Ab��&4'�=��g�o�#Z3D���\���]���+J��W��S���}d����g(Z����E�R] X���k��H��H�����~�Q��Y�BJ)E��=(�qqx��\��^��E&Q�@m�u�M��p7*S`eU|��,i
�>���c�����AXdX��gv����\X���6����E<������2:���GGG����4j���O�2�&h�#t��<
r��Y������B<ftd(���o��k�]�{�8����q�� 4�~��q�^HDd��'�N�G{�g����c3t��>-���
wB���q��
�_y�1k���#W��=���Sw�����:�w�����v#���!�
�7�|��~�/;��W��
�w����E,��`�����z�?�8�@��M�� t�8�b�4t��c����|�vpXh�U��Gw��]a�������X=�vc�QS�A�z��B}�@�W�O�Fa�����W�1��73��~zV���_}Tf����a������I��P�'��l�8�|�1��1��R�+Ya�4AY�Q�)WQ`��������7��Y/�/�r�������2}��	������V�>|��/��6;�u���od��6�
d�����N���	��������g"����=����1)��	�3��F�h^|���o����k@n3v���$7'B[r�m��b�����s����=Y��hE~jb-)��T}�-�S��>d���>�����������?���s�E��x�w����vC��b��`N����;/��"�I������B���o�����,�`9P��5]�h,iR���:v��M����-��X���wrE`u����b����^{���X��9i��u_�T��UcLLF�^���r�<����d�j�B��9��C�Pj��������8�1�����j������%Xh6�������6�j�����q=�nd���K,�g.��~E���Q��1�U��


��j<@+5&��b������M���-'��-v�K�l��jd��a�z}��O��xRL��t�c�S_?��r�N��_���nj��;"���D�,"!�u4�����]4s���k�Gm<�0V
h��:��vcL�l��>�b��	(�����O�y��w ��|�_�w��0���s�;f=������������H{����7�I��M��-�k2��Q��^���w22�����O@��������]�06�dJ-�`d��eiDe�\E���z��4���
�v�Gw+}�����}����)��f)p�V�>�Lq������k�z�+���BT�������<8�I&��H�\#8)P����MT�,s2�<�v?�Y����MBsb��Kr�%v�)Y1�.�:�]�7z��}�O>
�{���F��L8��8-����c8}�q�������@(h��v�������%�c0|�J|l���|�����n5XK�����[���I)����!�������ZEJtTbv~��W�>^~�����|?}������q��O�J�<��\�����U[�Uv��G�I�Y��hjfRnfR��;��6��i�^~��Y���ed���h2�zP���W�N���J���v&������R`��
������q�"5���}��b2IVI�����������(-*�_��-5�,=th.�k������l�c���}����YjVVJ���&�O�^���:?Dy'��xYDB��>|)0����wi�|O�x�e2�_����t1������N<L��xp�do��	���|��"�1E���BR�&�{������E�EE�E���*K��&�����i'n�Gh���qb6t�Y������A����0B��,m�����(��6���p=8,<4��������<�
TY��7��.�Jb��a3�o�,���O�,-m�n�QK�g�u�A��/D�8&E�<b"!rL�I��&'|���������4wv3��6'mZZj'����s_�r����_�P���:�{������z��I��]�GA[G
ZT��
��(����|o�W	hB��;�XX����/m6��k�?����:�As���;��v����CV�9�������[�AR�D[�:��e��t���{�]���y��06O����}z��H��@�&$*����t�����xr�?�������x���)�������@2/���3UQ^����:�k��>I��������[=p���-�Lh�x�������	�ji��g��������U�2�%e�|L�34���g��������L]6_R����Dh�����4�q��)_������!����TZ��IR�E�3��MN�y_ejJ1�OO6d�2WE����)�W� �n��^)�PE�I�b)�Ms��v���al���Z^��
�����((-v������m��T�f�n����@�ct���;�{��?vw����]���D����*���o��W;��� �#�7[�&��d�9E�fR�M��Y�7l6�g���b
��c�]:��w�[����O^����H�N�:ET(�����F1�4%�q���w!�����U\��7wYN��X���f�YG��j�	����M�SE�T����1��M�9�Y�����R��a���|!��Hv����l|�+9uu�jN���o�W�G���Q�������Hm�%��D�g����;��^45|���3�,^4y�G����mR��������<{����0���,/Q���&��ob�����
J#�����������I���Ej�����J���
9o��e����N���||���@d�KU�A�A�u�"��	�"VO+�6�[�ng�2����f�^��������Z�}��I���RV�D�S�:��^Y�4�Iz�|�-,�����q? /��c�N�
��x�t���81:�]�06�dJ-�`d��PY#23�'
�_X���5����$@��'���?������h�7T���m}�U��&��r&����������u��s*������_����a�����'��s]DL
�^DAv�Q&�zh�������_���{�]�g?���?��w�����V�)\gm��B���-}|[CU���E}�Q�
��|����@k}����T�/������o�����������>>�����wAUQqY�6�C��b�������C����s�l=+��n.s�����| %H�%��?�K��'��M�{�R�����+�d���R��*PRV"�9��S3>�@	"*�����7�m��E�$�9���j���T?��Es�g������_
HN2;�u�����
/������K���@[+����n����On\\Y� �w4T>Nu�4����O^9��,�����q};�������MDP#��T�?l ��/��>�P1���������4�W
��
4U�	����5A�w8=��R��U���O7*- �5[��5�	(������H;Q��C��d��SD�l
ua��l�-"R�����:�%�l�`h��~r�SP1�?;��K����)���qb6r�A������A����0B��"kDe&�O��jJ���|EQ��Z�� �r�X�g|?���[\�}B�������a��Nc~��8&E�<b"!�G�� bR�Ox1�1�63�dWOU���m�K��6�2�I�*�J+���b���q.�h�l!������?w�r^� z3����+�����ZRgs�|gi�5H9����f<��h<cz����[������@��U�~��D��n]T��
T:v��
��(�9�4;���XXEje�IN�{:�h�^oI����bAAAAAAD�Hw!���t��������c�SM
YiI����"�j���zvl��N�@���{�v�����M�����6.X�����.=����o;EEE�I��9�>QZ��,u��d�MzMU�������Z�����g�/g�Y<FMB!�$>&��������X�O����_�������y'���S;�2Y�4G�i�������1k������4n:����/�^��!��xYDe 7=5Sa���&�:v�=b�����J���E��@�I���!S-�u��^GK�
���Bt��v�x��]
'�\>�����l�)����O[���=��f�X�F�D��=E�;��^���� ���L	��J����{��[���D�g�I��L����W<��M�,���qb6t�Y������A����0B��,m�����(����b����q����<e��	jY�)�?�����
z�*l�����W_Op��/�5q�`����8�fd���t��K�7�/�t��Z��������^GU�?8�1)��	�3��F��	/� T�����^PN�e��i�J��O�Mm4��@���b;��N�C�b7C�.F���s�-�a?���F22�|���YO��&�k+lI��Pc�	�I[�=x�en������Pm1�K��[O�Z�w�3h�v�?~=�x����������c���d��k��.�h1�O��������?�\��Kds������!�����2�1y�~�n:J���g�vn�#����������""������< �^��*+��_��|��	�c4\��W�;_�a�������F�6[�]HIl�*|�b�����5�C^�E��+WX9�sT�e�;�*q��_����_p������C+b^T���o�n���	T%x��y�v',}���yy����6+���\��P�>39&��;f��d�& FQ��������n���������',��������D�lF$��>�:p������d������H)]N�>��Q[p��mn�?���]���*�p1��f����C��{��X4,(j�hL]O��&�ST��L]X@ �5���H��J�4��a?	�K\��R(M�8���Rj���F���<18L�]�06�dJ-�`d�i�	�,2GDf��D����a����r�o�5Y��)O�m=|�Y��:���&�m����xn���X��L�E��������cNb�yG���Ck����4�]{����`[�L���?����WE�8&E�<b"!�����hR.M��/���D��F��9
��g	S��!�"�m�� �����R+T��Y�S'-��O�y�o������qTi�;4��V���HH)�����]T4�=X�������'����.����]�n^���*��O�t`����S���u�_g�z�Q���vj����=7���������;&6@t�|J���?u�V��'B�9}���� �|�i�h0v���z2��Oc�d�����
�����	��_��\���}�:L���3�q��R#H� ��IwG��v����Y���_dY[[� � � � � � �<�u!Ju��;��V��s��EU[[� � � � � � �@�u!���q�[� � � � � � �dXmm� � � � � � "��B� � � � � � �I��(AAAAAA�� ��(
3���������#���-�����	T�]�3���z0,d���6DNhM���������b�>'Z9"!� � � � � M�#��J��{Fm�9�����,=�������e�7
a��@	�G}Hz��W�������h���4�P5�f��&
��.~���#���G��]�+���4{&�)�80�w���=(������&���B�	�B�p����L��b��&E��<�[xv�U���/'��i����'�[�����kWX�5���-H�����FBc�����
��
��e�^E��9z.2�v8�I^�zX IDATYV���IA�1�:|��k�wZ�;�_w���6������8%��;���)�E�c�����T�]�2������j*�f���@|�w\q����NR�3�"�i�����V�i[f����QK�[����EO��2���v�f��Z�7���.�~������JdsP�"�2�DoI���B��+Ta���mm����X��� ��F��}gm����b���0�*^����<18L�]�06�dJ-�`d�i�	�,2GDf�EAy�*������/�M����i��;��l�dV�1i����N��P%X�����my�G�:E�)�����}��]L%��8���2����d���n�z��A�%O%���C�������%����`%0/���#� ���m��MO�i5� 1S[��H���v�1�5��%����7�z}�W�����]��������gk�^"��;��+	�(�$�@���Q������R�3a������v��R��z,P
>����]�RG��5�L�����>7�0N=�nT������Y��}4K�d���������{7�����-�����=l���o?�xp���=e t�
���8a�Ai��{�T��e�M�6G��y�<I�.
��5':�x���P�- x��������q�m�5�:�+Ah�����������7Nl�����5�`�[��f��}Z���������`,���c� ��G�<{p����BaQ��u���Y�g�FhU7C��o<~#04"<����6_vd7����j5-�X��V�=.x<
	�>�q��@�~5A�`q<<:::::l��Fi"6���'�����n���3x�_A^G�\�<��n����AwO/�
@YD�����N��Y��g�Q��z��c�}�Z��'ZB��������]�06�dJ-�`d��eiDe�\E��k`����"���g������k���j��e�����y���(B}����^<|+�mv������`1m��sk�9������{�DB�qc{����cR@���2C������hR`�#�`
������p�5 ����Mm��	�-Y���)�HhJ�X}����{��m�����ZRr���
[R��D}�z]g}Ri���?>��a%�~��S�n?��}�2.����������P�j��^O��w^�'�E������W�D5W�b��]�Y��r���k��X�*��Ku�jg�^��[L��`����&4��n����^�����\ee�p�r��C��T'��[��������W�<y���������ms������X��5V��8�1�����j������%Xh6�������6�j�����q=�nd���K,�g.��~E���Q��1�U��


��j<@+5&��b������M���-'��-v�K�l��jd��a�z}��O��xRL��t�c�S_?��r�N��_���nj��;"���D�,"!�u4�����]4s���k�Gm<�0V
h��:��vcL�l��>�b��������P��{X���O�i?p�X`�>���&J@YD�p��p�cb�cb�����r�`�W1�����t��"�P�'��l�8�|�1��1��R�+Ya�4AY�Q�)WQ ����M0��B������
�B_�j��w_a��zJ���Y
�U��<S�*.�s�����N#�UU�����V<���1)� �K`�������@5���Du�2'���n���5����$4'��$Zb'���S��o���e��n�i����T�������l�aT����o<���:��i�8��g����*k���V�o�~�]���[8�����VL��70�����V���=�m��E:�����-i�]Ef�w��V���� ?���������P����_�~n�����<}�����-k�*	��������w��#YM�L�����������z���SP��>{�Q7Vd
	�&s��]��}�y@�
�(	T>�J���7;�zM[�P'���h�o��(�h&��������������M@ZTp�`�C��kQ����&��{��������)$d]>��7�f|���+��:?Dy'�	��E$d~�������=uc��y��qBcZ~"����I?F ��u�������-��x���JH.�*d�(~�Y��� ��0
�:jPTX���*K��&�U������������VO����q`��2��9&{Pjy#+��&�����	 GQ�%z9l�p�u=x;��P9�����<�
TY��7����U�@-�1x��'�
�'/��X��Z4��Dh�Z2�8��5
�!
�1)� �K`��������Dc$���������G�v�l3�I�S
� ����Ic�d�*����|���B��-U�����S^�������o<�Wq���4��B��I���
��(�����������Bw������Q����vH	
�u8��.�8wd��B��s��Y>w�w6)�9���� ����.D���n���c���Q1/b���Ir���O���5[����B�!�:� ���<]sOn���4����o�};e��8]��C���l��*�+@YU�VgC}���'���U_����w��bw���	��/?�`��z~?�[� �w���x�/VS�j����J����>&�vV�3��v�G
j�T�.�/�Ny@�w"4aYDCh��h��/�w�VS�J�
Ui*�:�MR�E�3�{k�	���@�x<������@QQ�SD��*z_H�KanB�+f���@�ecsL����
FV�����FA�h���>^�l����0�u�����8��C�^���k����H>�$�����%z��ET���};����y<���!�������.d��*��@kL��,��6���wqX1��F���.�Y������G�'��o�T$l�p�"*v����B�U����g���KWj��*.�C���,���v���R3���Yj5������������"����^�u�����,{gw�i)�������r�VD$�h���n6�������E5�i�����������(j����Xy�����I"�s5���VO/��>h��[/��g��Ov�C�|��x/|�$��������~0L�s���K��v�I6����r�A��������/�0��n�v���r�7n���Rt ��G���s���d�����E�.<Y�EU~pPl�r��DiB��������
��������r�����5!������~�!M������Z������Yd���#t�ndr�����R�A;u(*(��1��Q�'��l�80�w���=(����FH@Yd�����((a5o@���3���o�zg��~�J���P�zg��]W��P�_���:�s��k�j8���<�j�w�S����1)� �K`��6����\��dcDd�e������9�8
l��^�����f��.���Slx��,��h���u�V�-q.����]�U���E}�Q�
��|����@k}����T�/������o�����������>>�����wAUQqY�6�C��b�������C����s�l=+��n.s�����| %H�%��}��oU���&���r)����q��}���])nU()+���^zj�(AD�:��f��_��H�6�#XNRsd��o�����UG�|q����6z�����C��+D�h�OP��g/U�FOm���7S{�}�c�>�qq9d��t��P�<88!,�������>y�x�H���s���Pz'�{��AM@�DQ���@��_��}Z	�b��;�����i��nUh�(PU�}k��L>�b#+2���{��g6d0��^?��)(���������n������819� �ecsL����
FV!Me�5�2�'
lU5%B��6��(BE�i���9���3��N�-��>�fd}������u'�1��8�I^��V����I��1�1�63�dWOU���m�K��6�2�I�*�J+���b���q.�h�l!������q���Q���D�o&���u%r#���@K�lN����,�~�)������U�gL�_x"T`�Q�\p����Oz������*[B�J��ZT�{�E5@�f����H��7��uG���_�����X�Lmfwx�$!�D��$SCV�wj�����H�2��rT�����K��x@����W�^�o����O�_0� p]D���w��0y�7}n���I^�����e���eU����&���������ik��sa�<��&�d��=��eUTI|LZ�E3@��!� #����/�`�$>@��t�I�,����MN�u�+.�py�W����~��\7����]�
�z�v���H��vB@#�����f*�8u�Ir@:���%+�)s�4�9u�Y��O����W��T�a�|���������:���I���|@�U������.��V��B?��\3U+��_��fK���qb6t���al���Z^��
#�	�,�FTf��D����'���9�\�3�j�����S�O�akv�������D�����*������M�1.}�*��~����G�:x��@�
^r�}V�����Ro^Q���29J
�1)� �K`�!��J`^h4)Ec���TEAzZAm�:�Y������)����h����*�.����F@��������@G]��@�����3l������2x���m'����&��&��u63@��wBc��3{M��{X-��-����h�)]����Dp���A��Lf���M^9[G���c���sH�������7Z��	����f,������6���C :KZ�t���2�1y�~�n:J���g�vn�#������
�m�rm�
�q�f��X�o�nG��v���r>f���?.p� ����s���g�9*�����xR��
�����3�GM�8�K����b�
+�s�j����a�]%.w�1�E�� .����{�8�"�Eu��o�n���	T%x��y�v',}���yy����6+���\��P�>39&��;f�yd�& FQ��������n���������',��������D����np����M[e2��|��I���0>�b#+zDB�U�����%.�W)��D���r)���l�Xj�d��
&�.c�c���W0��4�P�#"3@~�@f{��WYeg���������'��>���	3B�t������@��xn���X��L�E��������cNb�yG���g�����4�]{����`[�L���?�����p�"82������F�pi�_�5�����hYsH]�FF��,1|�n�VidD	����X�2l���:i�@E~Z��}+<����j�4��]g+DUf$���HHip �oV�o-'�=��Il�/�dq~yW����tm�
����Xq�F��T���k���Y�^pT��'��Z�v�n�������<>�����
�%�����O�����e���{N_���!-�y�1��ta���u��X=���A�e�,�`dE����(4&+�d����d���u\����&��z��Q�
T�iwkg=$���e��AAAAAA�.���:q��]c+�B�9�����MBAAAAAi;�u!���q�[� � � � � � �dXmm� � � � � � "��B� � � � � � �I��(AAAAAA�� ��(
3���������#���-�����	T�]�3���z0,d���6DNhM���������b�AAAAA�!Y5Tzg��;�0j���.�/�0d������,��i#hEJH?�C�c?��,��D��B�`�=8.�4�����7�8�w��v}�����(����,�ecsL����
FV�����e&�S5�i+W�3�C�]���{��o���Wa�N����c���f��n��:#��]a1���� %�/�M�S/07D�+h+��{�s����\F\��8&E�<b"!���� zR���:|��k�wZ�;�_w���6������8%���Yo$N�-"��m/y-�c������|�����
��u63@���W����������q��p���w��g���#�{t�R��>����/���q����v�����k���_x��p4�����H����[�rd�� �
UqvwD[[� m�9��}�hH<��:�C�Y�����X���7����65z2O���|�1��1��R�+Yak(���� GQP��m�i���}�*uG-q����b+�+��wL�������$T	bu6wr[�����NyJ�����e_��eSI :�45����v&r*u�[�^�vPa��S	�6�P��8&E�<b"!���� jR��
�{L��?��T�V33�5�9����>�|;�	��!����z'����%^Q:��Bhv�2��#����=V����>�$(�������F];�Gj�GJ�������j���RJ(,>��@)�����w�J���,2�jj[���h�8���Q�+��DgIk���|,�E�^>�"����8�kF?��B���������0,�q�5������~4<::��e�Q[��S}���6A��k~�Q��$��(hNt����1�#@a����}s�_{�������=���X��i�����B""���8�uZ?�3�8��o���KT�i�/�o�r��v���m���c�Y�LW��8<��-����EE�A��g�F���U��nh���������;���|����:?Wh���D�,b!�[m����(,$���a�ijm���������������������<��:�t����uJ�:�:���%�����

�����������+��4_q��+������������?~�?���eCTe��<Ah3�;��g�����Ge�����-hi>�th	�z2N���3�w���=(����FH��
��r���A��n\�|������R@*��A���=V��;wOxwl��������F(�{������Y�C?|#s���l ���]�t�fPdLPdL����=	}���!�g8�I&��H��!0/4�X@������?���]r��cP��&�9����l��k$4e�`��{�?����B�E+�SkI�-��+lI�2�!�u��I�}G�������d��wO���(:����(������2�@��sz=u��y!����O�o<�^�\}�u�v�f�������DcI���O,����mz�\n1u��5��+�������{����s�����w�I;��R��
n�cb2��z^e����&&&&cV{R��Q�z�Rc���,X�����3CD����G����t`��$3���6�������3��������/�0�����;�.D�^��W*(4p��������%��Z8�6��_v��hj���/��A���������ukN<Ys�I1������L�}�|�%;�Y�~�u���u~����^����P��(���v���6;������X5�M����n��1�!PH^���M?���
�����a5��:�~;������@hA�l�
'��z���O������Ag�0aD�
G�x'=&6=&�����/G
Vz�����HW�/�?�z2N���3�w���=(����FH��
��r2;��+j��*p�O��0,�%��K�����4~���!�[U��3����;���-������
Q��[���g���8&E�<b"!r���@A3^h6Q���<�����f�/b�6	����/����Ig�d�����w���hZf��>�84���#f��3������:d ����y������������_j>{�����!*����_�
��~j��`-ak��o���&�tcKZ�� � � � � � �'A�[fY��;�U�DG%f��y��)�x�� IDAT�|?}(��;���W������?O}82�c���J�n?��j6�����HVGS3�rx�)��vq������ZNAy�H��qF�X�)$(����w�f���U97��$8P���+e���0H�5m�B� �?���q�����$������zG�����[x6	iQ�i��kYzh�E�����P���`i="����o
	Y�������_<��/���Q�	hbd	�|�p��|O��:y��~����
.)�b�O�!s��w����P�;�X�&N2�{p4�
�6
-��M����-��x���JH.�*d�(~�Y�����(h��AQaP���,�v��WE��N;������Z='fC��A������A����0B��"kDf&�E�����Y�u����|�C���v~XsV
Pe)/��O�2TILt�t�����*���xj?`�jk���gBk��9��yP(�;�p�"L1�9FxRhb�7.Hh�Y���K���
(��� fj�`�8�@�-���H��U��/[�@##���][���_w��L/�o-�x���B��idu�-��F�O �QS�%]�_%�	����M#	�<�o����
t;�p�]Zq���S����:�9��|�:�lRTs���BR�D[�:��E�?�y��=�.DG��L�
|�'�qN�>=Ro$��oF�&$*����t�����xr�?�������x���)�������2/���>����U�	`u6��*�}�(9\�5���{�z�-6p�[L��^)�����������z��������W�LTU����U.�1�����b�����k?RPS�2u�|Iu�"��	�"B���E��|�����"�PRW�JS���IH
������!O�WM2Q	��a:��]��sn�wb���^�[x<(�G�x<�X<(*���?�C�/$u��07!���q`��2��9&{Pjy#+j�_@~��l��u�/o�	zS�~���U�[Kl�i�##S/�t������$�_w�Z`�=~�"������R\�<�J<�F���li�,&�}G�U�I�6�d�N���������)h|��mdw����
o�W>�>y��"a;��Q���v��������>#��\�R��Wq�:��e9���c
��Yg�
P�!t&XNTv�7U�Oq.P���Z���v04]`��g�;�cOK)�
lV�����"
 �Es��v��|����-�9M3w�_U��$b���=�K;gc���"KZ'��_"H���zz�d��ACG���x��=}�[�����5�{�{'y�����a��3�5��M	j��d����+7��+(� o^������j'��/�q���**E�*|��1`�>���O:=x_�W�������.QT���)��N�& $�X=�\O��o�����,*�k�9{Y�~�Wj��yA>�����������qoB�L��(4x��h�W�@U� �v&�-,�����q? /��c�N�
��x�t���81:�]�06�dJ-�`d��PY#23�'
�_X���5����$@��'���?������h�7T���m}�U��&��r&����������u��s*��������~�'�qL�0y�DB�U��."&�	/� ��(�N=4�����Q`�/�B�=�.�3��t�~��b�QdY^E+����Bn!�s�����r��A�&%fQ_v�e�����u65@�Z��k�1��2t����Mq�_��R������g�"�?��.�**� �f|��3�,�]1���94�|qY0����r����2��J�[��RR�DZ��^�QU���&���r)����q��}���])nU()+��y��`���dh�����~M�"I����2msd��o�����UG�|q����6z�����C��+D�h�OP��g/U�FOm���7S{�}�c�>�qq9d��t��P�<88!,�������>y�x�H���s���Pz'V��D>_5�;Ee�b�a��9~�i%��A��v�~��I�j�UU���L@U���	�|C���X������N���=����(��J
*�+@]S��"
@�[�.��o��H����<�!��=���]OAq������/�wS���VO����q�.c�c���W0��i(���� ?Q`��)O�QE*jM;��,/�)`u���v�oq5�q5#������;i����qL�0y�DB���yA��@��b
rc<mf������I�<�r=m�dd�PU��V(e;���{
�\����B$,�9�����)@��fB]�_W"7"�_[!��������7j�r�����x^E�x�����'B�5���`+�(����������%�t��E�8�QTsdivJ)[�����~��\w���1�����B������C�$d�(��dj�J�N����	U�?X�����CUyIQ��{�c`�����-9�oy������A�.=&���o���2>������#s}�l���������S}�b�w?;m�9p.,����d���3������*��I��h(�8$dD|�_�����v��;����������Ns�`��./��QS�o�����8�B�K�!_O��t:����Bhbd�����L���4IH'z|�d�8e���:�n5Kt�	������j9��OZYUYqq9��A�_J#�����X��������tQ���|H�Ue1m�wO�^���,�j*���
�T�������6Z���7s�T��S���-kL�VO����q`��2��9&{Pjy#+��&���Q�	���C�Tl�rX��x`r��P�e���
O�~����M���������o`��|�����c4������^����~Y����N�6x�a�YU�v_��J�
xEor��|G�cR�� &"g��&�h^|A�� =���~��r���OO{W�{�Mm4���F�XZlgC#��N�C�b7Cu
#]" ��3��[����N�,�i������z������1�]g3
|'4&m9��T�����m��{�����%��[Ow����4o�d��Q�����u���[>�{0<�����.��|�E���|��m����=�_j�=4���UHw!��*��W������-H}vo��?�xh����.��lf�����pTqXiw��.�cVL�������|=<�mZ|���2���l�w!%�9���O���_?�{���c���++V��r>���/�|v�U�r'�_����_p������C+b^T����:��@U��N��gmw��g�<��gyoY^a��z���:
��3�c���c�|O�ibd���W^;�;m\�v���K�~h}�2O}=����LT���0�����;m���U&O��>�DJ!�rKY���?L��=T���6
�{%�A.&��l;;�Cr��q���J)�_!R�*
sw�O�����JS"�op��J�f6D,5z2O���|�1��1��R�+Yak(���� ?Q ��w��������rMVy~��k[�|V�� �e��k���w �m<7��g��z&�����w@SW����q/�!�FZ��m�j�
*�|V����Z���r�R��8����*�hEq�� ��H�{��eA�w~�|_�w�=��wox/y�(}[g�I�MX�$��

��x�0������4ayl;�n�N��qS��?��1b����4��� �)�@F�K?�>������[w����$�m�r�����Y��f��}���T����?53�������������zH�@�6�9ATYfbj��abj�G�x�����e�����I5�+3�(�����3Z6����	7���9]<Upc��@��n���tyI��K�V}�FZw��Ow��Z20�$k$
)..���hH�c������^c��������c����c�����S��gM�3K��)�YP�3���U���dl��
\�0�5
�S��#����gb�����o����G��!�B!�B!�B�������.l]����]�>a��&!�B!�B!�B5M����W�K�=�B!�B!�B!&c5�B!�B!�B!��f�Q!�B!�B!�B�A��(�B!�B!�B!� �v#�px /......z�HB���M���YO��>c�����[r{ �����\`�q�3��F'���9!�B!�B!��QWG�a��������[[(�V��~�m���|�Q�CC�����\��'�/��`���~��$z�#=�k��.��E/����w�n.����\z�#=��L���Y��ck!�pj.,�kK#����&��o3r��IN]��Kr�c/��������}X��~��a�a��abU?5�=y�\��6����;�T��0�<b��Q�[�S�����������F�9�/T@�4���@�)H[9��j����
�G��8�X�1�mm
u'-F���Y=H������m=����d����>>{�����@�6�� �C���sm��e���?�Joy[������_���m����+�O{p�HPpx�G�2��c�x�|c���]��$t���1�(����GY��6A�GRwj��jhTA���1�=
�8�Q�%�+�@���nQ�;�[��wS����`�_��V�O�%�F�������5�j8����v4�;h�,�����)m������gx����������+&M�Z��{P�����������"��\�N�����d��#i$}���b��O�7ef�\���5c����F�P����
������6�+���mF���yFZ�����)�mx w�W~�R	P���<�����+�/�f���T�	���6����K��7^���]�)���@�9�'������2�0p���������*�����M��������m�&�7���Q�U?�8� �b�+�;��'H�H�C���c�9L�	9�w�y���uc:��,S`������s7x1������R��;���b��4�v����O�eJ���0���5��FU�`4��h���[Ac,XZ}W]��4q��]'����<�p�Eu&#�����|+����=+Gv���3N7��Q������/z-���G�E���}�v���Nv��r;�w���O�kM������W��}`No��n�Q�w������;���K�rm~����('�������k!;v�qp����O]�vq���z���E^�3c��s��\
?�iJc��&#�2&Hz|�\W�r�w+�w+"��v�����������������x�I�����w.�����?M8�����O&R%�������?`z�������~�k���..���;�B�O�%�f���]�[c��Ska����-�5,sk�&e��>|�EN^��KG��q:Z�����b���_�Z{���(��������l?�2;�y���O���<�3����fy�=s�N��;�	��8�q��8����Y&|1�B�"�1���M�2WN�V�ZM^=��>�+9J|TR��&�;Z����_�qJ$(���:N�})���!��D���%����P�
��M5O�>�y����;���p������)�<w3�����b�w���g��G;��WS&��������$��<w�q�]!���{�m�og/s�"~�X��I���%�^�>����v1f�B���R:`�v���yc�����wu��:��f��/
*���~}=N����������oAh%�;����(���oD�M�7`x?"������z��H��:|�p����V�;V~���a����}
N���<j��-WK-���U�<>�omo��U#���������X����L�eT�1/�AN�����������s�r�;�x��{��+���r��.�.i.���2c�%��-[&Y�m�s%��sB�B���6v���G���k����,��q��v�p��.����a�����O�]�����m��N-B�����q�������w_s����mK�������s�9�[Qk�����s�aH���������O�d"U�X�w�d�?��X����������?6��S�,B�D�d\2k������5�j8�\[���Q�@f��~Fu��F�������
xQO�+y)p���S��o�fiq�Eoy�|����)���=]���SX��|����
�����(Pb�����u��=�����yJ�/R�69�I���B]�)k��3�������Eg+s�m���mo������v,c'��	���3��mVQ�qlF����t6���!Z�����i��/I�X������t���"�]:�w�k7�Q����Q��*i����j7F�A�f���q�I�yo^>�s>$<I���X���1tt��K;�2�R��|0�|���zu��z�;w������Y��p�P2���FhT�����B��J(���K�2���Z������^�nr����������F���t:��gC{6�,G._;�A@���C���W$����������~��_Z�����-
����m�0d���)�����[������ee����w����Vl���Lb9�OKy�����/s/SJY�o���W�d��?B_�PTI�?�#��~���F�T�� Zd^���G#b��z���:�����;8v��{�����s���wW��D�����
��hi���CaAaaA!�g��241*/,|&f&���:��q��8�bW3��B���ZXpmit��f�ByR��W[/9�����g���|nT�-���O^����]|\"�s��^M����~����elJs��0v�1�>����4�F�P!\�H57
^9%w�������n�����"ek���tZ�2C��8eR~��x���-��`���T����_�l�������������W|G��L����N�����V��%��r";�|�.^����GW�?�����;
��-�8]'���h�R���N�t��m���,)�U�(��	�I����,�w���	k6�<�4�at��������� �tR�G��������� E��Y���;w)���C����e���u{{~���H�����M��������6V���%������>z�zA���l|�<l`��c���R��&
*������E:_-����y29�D�����Msn������~����^������P49���$U^NU^^N����*/.W�i������t���x
���f�b���I�$%
#��M��m+S}�rm-~�n�_��/?)�B����>������
����
���E*��s�Y800v5cl�!�.,�������pl���eMz�.�����w��?���ck}����uq
)�{t�dD�Ka�C��v���R�����b
����0�i=����]�@���e+��8�WD���(��������yi����!K/)��g�6i���q����Q����%~F��u�x���(�}�3�\F���U����mVQj���0�2����i4/U��@\��o����i��%f����~1�����z�s�WH���9�z�7M�S�6]wF���|Uq�� �
7c7@y�Aw���:��~)Q�g���5���88������_�O�a����:�Qh�euW��BX��a?X�1���pxT��%�����E���Q]m[�vo����/��o���i����K��/-��H�����+=6����7���[��"�������������(�MME���
�����j*X��O+�Xl���&�
L
V[W�=�����*���p�7B�ka��Tv.(F��>MD�J�l�|6L2�� ��652%�����b����1k
RQ>�����bW3��B���ZX�u�]�4gt�p��9#d���/I��~{z�m����B�e^o����w��o����
8C��B^������L������_�.h�8>	�b@�pDH���L������4�;::4kcxi1ja� IDAT�8Zl����QAg��)L>�9!�[�*�1�������AAHA�8��)U�5TqrR���9@((��unS�	���^�Z�._�Qk�V��^����R��$=~Fu8��4��������/3�W~A����ED�&f�����[�S&�"����kZ���+���@�� ���okk��T��&E_L��x�h|@���t�gW�w�|>h�hk��������6������� �e�==�$I`s8�����L��p��Q���>9�
����Nz^d����V��_�
�<x���w4��8��&���u�y��
Y���d({����>�c�/+�=�:Y$P��Io�:6-{��g�4]=��$�"���:�YqCc�@�C������Ym� �s�k��q�������H��Mk;�S���8@�����|�/�S~�����g�d��RV�������w�&�S�����cm�97�2�C�*#�'��)8�bW3��B���ZX�u�[�@sf����M�����(���W�qdI��V�1C{��xTy���s���A�����5�P!\�$�}�fS��rJ9P�>���w���W��o���M� +�@����f�s�B��q�����e9!h��-c}fy_��|3a`��%��+5uiS�	��Y������M�Q��*\�1�m"�D�}�H�������M��&�j�B�x��]���T�[�2�u@g���|�8�EJJ�#�%^T��S��j��>���[�_��j7�����V&��/�$�G���x������w���L�|�!L��`���W�z���.��c>TG��xC�������B��_N���|q>���9.��MW�<s�q��$|����7~y����t���g�YQ����O��K��3c�{.�����,�PVtr}|�w���yOH��GR�	'���t������i�-:u�z�����0��3m=��$�"w�	�����9�@����V��F�^5�� �sA���J��cR�dm��s��

8U����Q��	�H�.=�O���XTT"���GC��f>i�I;HYT�����?�����zo9v�����$`6�B�O�%�f�������5�j8���E���w��Y(�/�^�/�K����Rj��u�@���S+���6je�\���\�`����./{�����c7������7�M����s��KB3H ����8�t�x������0�E���������!�!�/Hl
@�X9�H��g����7�/�H~^F��bE�#mk�������B��Ys�P=N�{
���������9q%��g��SV~S~7.�U~���7n�X�.$
�r���Tr��F����_�ot�~�:C�c��_{�u�"�����?�&;N�I�a���En	����I��	n�~C@���7f����9wt�a������nW�j��N6$k$���Q�#�2w��Vf��������+��##�m������4]"�������|y�W��]2o�����Y�W6x��{� ��BPp�_��������0����Up��-���~�����Y2�t�\W��^���WOy�����$3�
u����'�����Gi����#_��UVt
�'��
�s�c-�|0+�qIV���K�����}��V��W)������B������DZX����=vAgR�q+��/n�]�������A�� �sA�,dM`�����!s ���������,9+�U���s����Z�g<t���'��K&UP~j����O�d��HHYT1/p�f�f���U�sh���4�������'��Y#p`R�j��C5��pmQ;��4g���5�������c��$/�����P�3�����U}+��r��� L��618I�o��1��	�����C^A!��f�|�S7�&,�m��C�M��y?n���'����!M!�/Hl
 ��rJ?�>������[w�|��$�m�r�����Y��f��}���T����?53���������������b^ (�f='�*�LL-t4LL��@�=X���|>�f~e�@���t��bF�&zP�6#����=�+��
nl^�������� /��wi�����H������q_K&u�d��!���5t
��b��[����k�� ����_�����eR�=w����dl�
���dl����V�������i��,(��cr�*��d26v��~�j������i��31m��[�7��w����B!�B!�B!�TKSoD�
Z��Yz�.�?�0�k�B!�B!�B!�>1�z#��%���{�3�������=�B!�B!�BH��{!�B!�B!�BH3��(�B!�B!�B!� �FB!�B!�B!�jj��mj����zDC����{�2��!�������E�i� �Q��5�y��
U�&a4b+����\U6Z���t�g�e�-����1�7:5\�5G�
^���(x>�s!�B!�B!��/�"�B!�B!�B��QkoZ�g�y��72��G��+�8lq�0�r\q~k�FR�zL�����'�/��`�����<B�z�'xM������3;���%{\�+B�z�'�)80+v5cl���ZS��"�}���Lr����]��{��mDgW��j����
�
��#���Y����:��������'(���%;��>e����-������;���<x'���:�B5�	�'�$b��� ����j����
�G��8�X�1�mm
u'-F��l�Y=H����D�m=����d����>>{�����@�6�� �C���sm��e���?�Joy[������_���m����+�O{p�HPpx�G�2��c�x�|c���]��$t���1�(����GY��6A�GRw�����
b��i�Q �h��KW�������w�b����i?~����U�2��Kf���I��ckL�0��
g�F��g~�
�����^H.3w���r��"W���*��4�j�N�AMH���j>�;`v��~��cr�;
[����������@X�q�/�=�?����r]0;`����{�%B5�uL�$�	��'�,b��� ����n3z���3�������M��h�������2H��,��/���]q��0CX� (���'Hpw���D_,B�8����bJnK�{r�_i�(�gz��iX<n��b
�k=}k�����K�.���lRy���;�X�s��/����*}�d��>T�h>���4����ywx��O�_7��0�3:..f�KSm�_/�[�m/�L	����A7��A�C�����=��k��~e�����i��E�N�_�y.x���Qs�
Y|��w�d���iu4D�����i����<w�s��� �,u@��6����Z��tDTLtd����_Z��t!��n��}�"yQ'���%5}�B ��~Zt����;��������Krt��m
�z`Noc�z�t���N�T��z���A��:-�q���h����?���(:%g�>� �n+���ywt\\\\o� ��������������U}����x���)xU�,x��V�H�C��S:>���c�7�����-�u�/��|��E]\Fu�w:��(��Kf�����1���S��pfj,sk�&e��>|�EN^��KG��q:Z��x	�j1z����w�=Z�Ra�k@o�G������<����_uv��
d��E�����v'������n���t�������uL�j%�A��BBFl_��X ���X�k5y�������(��Ai[���h���Y��)u�����8q��������,Z���$��SBU7X�6�<A����U�O.������n�S�C�\�{�����O�>�
���j�I�_Ko���	��z�=|���'	�"�]y\qW�����F�����\��_��5A2FR/*~�����{�����G����/4���*���~}=N����������oAh@�����B6.�6v����o�o[�__�*�����d�����j8n��c�����f��������}b������5Q���mJMHk���?wz<��y��0r��m��4���(e$���}vyv���%�����]f����e�$KE.�k�q��o�I����l��o�[������~U��w-�Spj��Qcgo�Zj�\�N�g����wj��=����qJdetJ��Qpl��2����� ���}�����Sr�S
2���d�rO����oYD�d�u+$F�R��W��+���Z�"Y5W�O�\�p��;s2�f�?,����K�n����	����k��
@�O�%�f���]�[c����T8�5
2;��3��@�6�pL��mU��zZ^��K�s=V�J�|;6K�C��/z�3%���mmM���J�������z?x�����
�J&�����4���@�_k7��>�{���W���_�nmr���c%/���S� �gL�����A��V��2������Q���X6���k��mVQ�qlF����t6���!Z�����i��/I�X������t���"�]:�w�k7������Q��*i����j���2h�L�45.6)�=@����9�����E��ua��C&9v�D�W�`�_	O+�����[���b�I%��G�h�rl����$�����~��@�M�@�M)t:�G��%��	�7������n��A�H��]�zgv��$d����'��:����OR9w����x���~�m6�����H�&9vNT|9p&�u�=����c>����5�5�>s�F����/�;���D��6���@�T7
B/���?��IH��L�(3���S*�������gEJ���Y���$�Zj��d=@uI|r��'@��L

��3�c��?+|��L�n��}~D�d\2k�]�[c����T8�5����%+����\-�8����>7
*�QS��V�c�w�q���1�{���W��~�����fjL���&��q���^/��Q���P�dS����4X�MA���<�0���7����o�S���A��&g��h����:N����2^��y�
3c��]�����u}���"0��n����;r�zK'+�C�22�����<�U��s	|����0�K.A���o��|�Z�f��g���to�i��Kn[[2qqh6I�@�'%�"o��GR?��E��<su��
'���?M|q�a���	#;�q��a_��2��rm-~�n��=2�M���Q�%����C����5({��Y����o�����h����i��
��N������T���]s��RGB���4�v��������R����nD��LI��:����L�_��l�"iB���B�C�X�m����K��]���
���<��UR��8�
�::P"��A��Q��W��D��m�y��Tu*$��V��BW�"�U�X�H�T���w.|Z����y�
�&��dV�]�[c����T8�����t��?|8������&=]�\���;B�ct��ck}����uq
)�{t�dD�Ka�C��v���R�����b
���
19�L�i(=�����<�e>h�
�7N�Q y��m7���i�k^�/��z��K
nE��Y�M�k� s��%#cTqj�m����o=^���=Jx���:��'w����d�U���z#��2x��B�Ki!PW7���5�q�2g��Y����_L�8l`����R)�F}���M����T�M������5_U<B� �
7c7@y�Aw���:��~)Q��[���5���88������_�O�a���l���Ym]���;����G�
K���}B��������I��'���)� �lSA����>���
~w�b������p�Q��������>���������T��o)�qJ$%��������F�/-�]t��,�3��R���*5^�R*)�/�`�T�J�z��������'(���MM�L��z%7��cmb��E��:��q��80(v5cl���ZS��"�(t�p��9#d���/I��~{z�m����B�e^o����w��o����
8C��B^���z6}`�����W���1��pS�Z���	i&=���4�����9�����Y��K����b�o�o�
�8��La�Q�	���W������g�6E

@Z2�Y�w��b�������/-��BAA��s��N�7�����p���Zs������ |��� %��3���_�9��_h>����������b>f�."�71#��������2a��t�]����^%(x%R����~+||� �mR�����������M�|���+E�$�9B�J.��g������2]�6�9�,���d���\�N�Y�RI��C�&�/k����BH45��|>h�h���<#-����ZbJ�����D�������
���ptl
�a����i������v����+B��Y��iAf'=/2���J+�	�K�������(��=v����3�sYd�8���T2����@��t)��.��'���HW����u*$��/����PHp[�m!QctsW���e�u.���*���\P���	O��w�M�~_w�����sn<����Q>�L����1���S��pfjl=}mB��|EQ���b� K��������������8�������|�X�^���~�pS�Z���	i��@�)�.x)
�������������g
��7]��&�_��^��qJm��9H�\�8�H���������>������0��������������D�,�N�]uR�&�(�~�����{��>j�Pb�����&��O���j�G<|G��Esc������ ��S���>i��"%���iJ���#���(�~� ����������E��#�lX��ie��'_g��N���h���r9�2�^i����9b�C;�f�{�]1w��@��@�]2A|Xx��xO7�-�v�i���Q2�������D~�\�Z413������=��`��.�[X~9e��.��1d��<��_���V�[����u�mmz9�����K�Y#�����U��6�����v#��A��@?���W��.},[4ok�������K6�����f9,��`�%6N�)#�����H7�RR]]*�u+�sr�3������613�eC]����	���#�}��M�.?,��_[�8��� Q�2�8j�C���,�5�
n����sF~��],����p�q����-kL&�'��Y3pf��f��1��Tk*�Y�E�Q�J;�.�:��u�v��-�5P?+&:��I=l�VV������	�qk+kk�vM*������=n�c7�^'����O����$��fl�1	�9x��v{kkkkkkK=�^�c*T+��'�0b����@����~ ��g���d��P�������9O�mm2���*�B��Ys�5�)�����63hagm^=xN�)k<'��wW���F���5�u���D�������I�N�u����|'��qIX�k����Zd���'�	7�!p�NZ�5���{�w����|�9���G�!���'o������W��m���t�/�w�v��6��d�1A2FR?��D��m���<���� ?����+�J{�#��BPp�_��������0��>Y��O86��M�:�mi��`g+K�E�;?a�/��V��;<�<���?�<^�E�o��B�J45��
#�m������4]"�������|y�W/�%���>i���e���h�@$�B�]�s�V���L�����x���
,,��k��O�z������G~�p���<M��VPBy��%�J��u�9��/,|��w����,?1dmp�kg>����b��Rz�?!dUt %@�I����R��[�L�>���e���3:d�����%�u+$&�R�@]�uX�p��!�Sn����u�y �	+I�����z.��+���\P3���d3	^3|��*N�9���h����C�*���d�� IDAT���1���S��pfjdv�O��s\V�1��U��z�����?�xW3a��K����@�\~p S��MNE��:{Ljo���&)��WPHt�{��6�����	�c�!�u�wz���b5�	}����d2�1��BB�El_��@ ���X��D��F��;
T~�J��`�KDiT��y�3c�����P��s�����Bi^z��Ms�C_V~Q{1/�n��D�e&�:&��x���,��\�?>�T3�2C ��JZ�N]1�e=(y��p�o����S76/
�\���KW�����4�l����uWM�t���%�:A�F���������>_8w���|26���|26p��T��YS�����|
p����19v�cr2;cW?L5B����S���B!�B!�B!���7�B!�B!�B!�P��Q!�B!�B!�B�A��(�B!�B!�B!� �FB!�B!�B!�jx#
!�B!�B!�B55���6��n`g=�!�f��=���N�����������w�4i��(����������l�0��wk�@�*�A�T:�3�����������.���n/c��+��i����\�B!�B!�BH�p���V��~�m���|�Q��J*[�?�W����Q����.�n��������*%��('��i�T��O�g=���
���]����~����=���g=�������1���S��pfk����4�Z�	�4����y&9umc�.�I�����?���_���9��g�p����6��~j�{�����m,���w�	
��	a�y��)�t�l	������9���;9����1b����4���@�)H+x���~�!d���Qk�.+VtLt[�B�I�Q�9[�qV���:-l[��!3-���&����w���AP�M%'�{u��A�ol�-����[������d���0��%c{[��0�
��\=��������9.���6f�d?	��dg�;��;��QVf�M�����zoD!������c{H�pZG�_��/$�X������|7�N���F��j��d^2kL�]�[c����T8��I�0-jGS��A���g~�
�����^H.3w���r��"W���*��4�j�N�AMH���j>�;`v��~��cr�;
[����������@X�q�/�=�?����r]0;`����{�%B5�uL���b!!�"�/�m
�^���6�W��<#��X�I����6<�{�*?N)���Q���R�����3��
��m�y�wwL�x@�%����I���SrC X������J��@t8�s�N��q�nS\��[��hG��]��u���e���Lt�������
`�x1����U�$k$�����������������|z��1�������qq1{\�j;�z����l�2%�n��\W�r�w+"��v���������J���C�:~�v����,�F�m7dY��<���������kSv�='����
^��+'��~��FB��Zn3j���Q1��a7�i����n��+����EE���oS���	�0��iY����b������rd'�'��Z��~�����D�8�Y���V;�������uuZ��������g}j]1QtJ�}�Af�V����������8��A��[!1}�k�]��z�����x���)xU�.x�n�g�v�1�y�sz-���GBV!IL����\�d�_�0�v������?���������~�����.�N����q��8�bW3����a�5�lm�r�iit��Q��2��nR����w^��e=�t�J��u���������z���5/E����wd�����Y����~�Ug����@�\4�{��kw����O�������@���h�g����@,$�a���M�2^����V�WOz���J��������a*��U~�R	�,��w_�<�~H����yiI"�9%Tu�uiS�D��z^5����}l?\��F>%?a������{�������{���t�Q��8_M���~������Mx�p/����w������j�-��������kY$c$����Xz����K�:�y��)�BSJ+:����������TnY���>��P������a/d��ic���9��q��%��E�z��H��:|�p����V�;V|���m���A�~q;�'���am�.��������v��s����]���#����K����RF�j9�g�g�]�]��\:��e��K��[�L�T�*�V�����4�~q�&��6�KJK��W���0���>�V�p5v�����%��zvn�A�z�/�s�����AVF�d��f�/�J�y�r>�'<�@<:%g�>� �n+Nf*���~��E�I�Y�Bb)_5^�<>�omo�%�OX-�;��?}4���dL���L����8V��9�3�vt���c7�g�������5��� �'��Y3pf��f��1��Tk*���j����*S�f�������:���.�A}[����W��R�\��R%����� ����L	�vs[[S���:z�?7�������:�BL^���F�(P��k�&z�gy�z�3�j�R����MNwRp���P�q����i���63h��J�M�����7�vT��c;���3"��s�U�:A��c�s/����x��q��F|iZ���K8����&<,�����k�N�]����v����{�56�JZr$���w*��7�/M��M�~����3E�"�"��v�g]�{z��I��8Q�/��B��J((yt�V��v�XwRIn��#Z�[~�n*	p*���_/3kS�AoSJ���QriI`xB)@����:������D|�1vg�������B*	Y������1C���~&��T��]{n$�^����w��
l~��,�&�I���_\�	n]s���?����t@l�f
���������K�N��=�8�
�":P&�����8����l�c#�jD��}����lu+�:w�Y�R��m�V��=~�L���=���n���f�|��[���v��FWHu&���XZ�f�PXP��������Y�{hofB@vc���#�'��Y3p`P�j��S?L������VN��n��	�A�P��d����S����z���FA�5#�c���� q�.>.��9fr��}�
���>���L�	���D;��`������#
�1b����4X�MA���<�0���7����o�S���A��&g��h����:N����2^��y�
3c��]6����u}���"0��n����;r�zK'+�C�22�����<�U��s	|����0�K.A���o��|�Z�f��g���to�i��Kn[[2qqh6I�@�'%�"o��GR?��E��<su��
'���?M|q�a���	#;�q��a_��2��rm-~�n��=2�M���Q�%����C����5({��Y����o�����h����i��
��N��$���T���]s��RGB���4�v��������R�����A��LI��:����L�_��l�"iB���B�C�X�m����K��]���
���<��UR��8�
�::P"��A��Q��W��D��m�y��Tu*$��V��BS���G�^/����-��y��&������_M���D�B�3��P�oH�"�M������1���S��pfk��|
4wt���o������^�5���x~��w��2�C�[��n����SH�����'#�gX
k���7���?'���wk���F��d29v���dl
2^�@���e+��8�WD���?��������yi����!K/)��g�6i���q����Q����%~F��u�x���(�}�3�\F���U����mVQj���0�2����i4/U��@\��o����i��%f����~1�����z�s�WH���9�z�7M�S�6]wF���|U�5� 6������]���4���D��n%s"���?����k��c~�>m��)^��e^�e�u�������*,��	q#������$E���F��D�P�MIB7�p�*���������o��FQ@���
n�,��c��j�{S������)}��D>�����K�$�C(2�L��($��JE�����J
]�_�?*����vo����/��o���i������h
����_JP��Z���s�Jn|1���
��>�U�s!�'��Y3p`P�j��S?L������VN��n��	�9�������!��_I�����#l�����.�z?-l��E��FP�W��?�r�V�D�f�/l�P����t���4�c*��	i&=���4�����9�����Y��K����b�o�o�
�8��La�Q�	���W������g�6E

@Z2�Y��o�b�������/-��BAA��s��N�7�����p���Zs����� |��� %��3���_�9��_h>����������b>f�."�71#��������2a��t�]����^%(x%R����~+||� �mR�����������M�|���+E�$�9B��3��g������2]�6�9�,���d���\�N�Y�RI��C�&�oc����BH45��|>h�h���<#-����ZbJ�����D�������
���ptl
�a����i������v����+B��Y��iAf'=/2���J+�	�K�������(��=v����3�sYd�8���T2����@��t)��.��'���HW����u*$��/����PHp[�m!QctsW���A���S]���M���Ik����:�<z��,TM+@��V���$�|~}���'<-��4��}�}��k����TU�6cQ>�L����1���S��pfk�����]e���[O_�{7EQ�����,���7%��c��f'����:�o���7:�<���3�U<�c*��	i��@�)�.x)
�������������g
��7]��&�_��^��qJm��9H�\�8�H���������>������0��������������D�,�N�]uR�&�(�~�����{��>j�Pb�����&��O���j�G<|G��Esc������ ��S���>i��"%���iJ���#���(�~� ����������E��#�lX��ie��'_g��N���h���r9�2�^i����9b�C;�f�{�]1w��@��@�]2A|Xx��xO7�-�v�i���Q2�������D~�\�Z413������=��`��.�[X~9e��.��1d��<��_���V�[����u�mmz9�����K�Y#�����U��6�����v#��A��@?���W��.},[4ok�������K6�����f9,��`�%6N�)#�����H7�RR]]*�u+�sr�3������613�eC]����	���#�}��M�.?,��_[�8��� Q�������#����I��7���/���
>'�jZk�l��������
n����sF~��],����p�q����-kL&�'��Y3pf��f��1��Tk*���j����*S�f����{��]�L`��e�n�����Z���m��������6�6nmemm��I������
r�f�k��5[�)��?4�B����;&���#g�<�nommmmmmi������uL���b!!
#�/Hl
�,x�Bi~Fz�HF~	E~��H�N��D��&�;�Y!�y�5Yc���n+k3�v���������s���zw���o��-^�X�O]H��K�JN�d����_�����wb������0��<�EF��{��p�����^S~���}g���G����O��z����z�FI����{uh���O���{�nW�j��N6$c$���ODQ���f���sZ�i��\^���$�����A�=�~���[�~���J�,dM 4[>=��271���������,9e�`����l6Z5�������G�<�x��>Y(� �l�*�����zO���t����c�?,���_�t������9�CV��
�;��>��
�uv�;�u[��3����R�y'_+��P��8�?e�����W��u�����4!;[@E��G��+�7���������S�!��������}x���`V����q*?H�����U����&]J��K��nA�0������;�x��I�Ov��L����@J�Ut-��a��U��O��;$�����t'�$����O(�i�(���������Q����A����f��w4K�X*y~}��b^���$x��=4_�85��2��i��j,��'��Y#p`R�j��S?L�����M2'�iQ;����2;t����9.���m�*�K�wr���T���0v�%dU����Y.?8�)��&'	���m�=&�7a}x�s�+($����l���f�����x���;=��M����>\�T�� �,b����/����&R�6�n�Q��sVb� ��]"J�f��f�+��O��R�����XJ����o����bU�����Qe��������5(����;������'����������SW�h�DJ�f$�����tE�T����=�����%��.
8�%�1$��j����}-��	�5����] �e����S-�����7�������Z=0��
g���S���,&g�����������a�j���j��B!�B!�B!�P%��B!�B!�B!���B!�B!�B!�B
oD!�B!�B!�B��7�B!�B!�B!�P��Q!�B!�B!�B�A��(�B!�B!�B!� �|#����������h�m7�$/dj;B2���������1��AF� �Wk�����M�h�V�����l�%R�������[V�?cnotj��#��t�B!�B!��d����}��w�}##�~Tk�����-����h�� ���������w�Q\[?��,]{K|�h�Q�A���g���� �N��b�	��E*E	Q,  HA)�[f��eaYfg�eY�=�O	��{��������;���{!!YBx���T
�g9�<�
���]��������u���
�g9�]�)!4K����S?��
f�*�c�:�Je@}��o5r��I�][��s�b.���gTv�U������
7Y0l]4���&�&/�����T���r�\�YL�N#�O5��y0�~y�����;����;��Tv�^�
uvV��� ��'����.x��F��.�RT]����j5'K��x*�g�� 9+�>vG�c�3����'�O���}$(3
�T0A���
��A�no�-�������<�|��%��F������������������/T���]��vs��K+#vq���=vD�h����"#+A��(�z��B�GX]�^ H�A4����/$n_�������|6�L���k���W5e���`V��]�hl��u}3[���E��T&��,������>u����I���fx�������D���I��������I�f���][��]����a���}6O�u$����}���c����]�IO����[�fL�� ��j�1�����jC�����@7(�vF�����W��qz��H�dm�h�V����~�p�&�$]�}9[��$(HV�m�9A���M< �{�0��3`����E�\	��sj�����)��3��v���n����%p�v�~��o��M��-2�5���n=p�A���L��U�	b��&�zs5����
��nE���~f�c:���;�bc�w;6��[q���X��	�������+����;�w�.��9�R�,�Z}W��o�8t���!���_Z0���kn�!K������y*����B
Q���Mf	�=&�������{��=1��jxBX�Zj5j��3a�Q�Wnr�c������C���v���C IDAT2���MX2%� !�h`�������F���qf���h�����%�������
?���P�`��������q]��o?z/*��y�_[���S0����-g�]Q�������I�_�B��0j�1�I��,��,<w3x���������x��k7����M�!��*!�������l��;~~�W;�].��8�3>���xj\0+�,�jFckL�`��+���T�	�����z�VcK�F���9|�u��������r�[�]����^�v���k�U�E������m���dg���k���N#;��L>�p����7�������C���������g����5�Vj��$��A�������ZL���i�_h�os���7Ga,?���)�I�N�X�'��~~��*�EK��&�I�)�**cS�	�>e�*�>��}���o���G�� L�����;�O��x�k���
�u}���)�>
p_s��?����_}&Z�k���ro[��������k�1xR#T<���?�K��-�#�LY�{!�D��w~^?[��n�sKc6�mkkk�o��|
��11�11,�^�p���.�O}�[������*�����$���w�a8n����}3�����A�s���N��n����kDU��m�H+���ux4��a��r������/+����b�����w�wN�k�d�k��Fn�<��:KQZ��~9�9i��|c�N�����,<���K`�M����w�i����n�Qb�Lj%���v�t�;�h����T��2�,S�`�����e���{:�>}CHj)��:�@j`�[����=3��m�%a��6�+$M@���1b #��.'>�y��Z������Q�o��c�
�ET	��K'Nz����'�m�����~�R����q��������`V�Y��������P�W0�U�K@W��*dv���T����u	�4�2�o����������-?�"�86K�C�'~������f;�=�F�������o<�����
�P�K`�Q�����@)�L��D��,�Q�;�o�Wh|�9��iNy����I��jnaib���Ec�a���yo�������/c���0���r�� ���1]r����R}	��Q��F�1���
	���t�����t�r��k��z9�UU(n��E&��U������"��5�/I��I��������9�|����?���3#�L�����M�i��CR�)(~z�n���-Y�SHn��#Z%_z�A
	p�����Yb aS� H����l�����<B�K�n:����F��v?�3�'�N����;�����o9���1C-��z)��C*�����y�;���i������"i$L����8pm'8w�=����3��3�1��v��u�C���M(�=�����EB]'z��7��M@ZLx@%u�H�C-�T�Q���n���^����&���d�~��B���%$��2�qlf���Z�,R-c}(�/J�@�e����e�'hg��������CO�fe��A��������P�W0�U�������GY${,7���t����P���o��_v������5�����>��&P3�L���a�V�!�GtV���w�#��d�[p+��/Da?�B��@�Xm�agUuP��3�'F��n�"`��<�X1dmr����1�����N��Xid����3b�K���
����6�Ez!�X�4�u�����n��H�A%l2D�v�g�0�e����<��0K �	���7� �SC��m������&��g���xo�q����)���B6I�@��� /A����.D�����1a��S�cc�^$<�
��$W�p��5�w��a�uli����Z�4���=2�]�w�������!X&m���N�(;R�:���F���A��I��YkH=�X���������m3$�2=!ZY5��M�k������Tfc6���(����������d����!����K���p�fVFEO&������|�ig�J�*.���OYNV�B]3��K}��FT7����nJ��@�]^�h�^%�@	J �����FfF���d�B�M��S$4P����S?��
f�*�������~��||������z8-�����w�6:d��5��u�yu
)~|z�TX�sa�S�����k���|$�	�zD���:���`�������0(0:#}"���%�m�Y?=����Ql����OkW��|��!��Us(��gU�4�J`���0D�*J��'�7���c'������OM���8�������Y�B	�1��@�A�w\N�����@��X�g����~�l�u�������bq��f=	�p8��H�i������\:���6]s
����^��A����A�A��T�<�YHT��&�����[��]���b��!��x^�f|�����o7�����x�YP,4�!����?%���I���hmJ��6���)t�@��{~S��>O���~��W�z	
�O����4��F/��S�o}�$���$%O���#x%�������d����.�($M������$��Y�D�)� ��Y�����Z729�Fhn\����~U����8����@�����1�����`f�R%&�aQ7��	P������N�����zC$����������y38��~/��Z��~&M@��|����>�CEL��&���	����� ~D�����
�P�K`�Q7����D�AA�34'����6m� ��(`q�������'��&s���|����[R?�����,	�~*��*�G%%fQ}L����������&j�]d�������7*������������^Rf��M�?���<^Aa	��&�S��b�d�-$�52!�Cs���L���`�;��nyv�d)���)/A�����Wx�}H���u���8�++��\���R$I��!$W5�{t&�����>*��l�����0�0&�_�.�v���u7� ��5���GgB� T�I�y<�����F���A��d�
�%�jje�����c�QI����7��+O]{��i�V>�@��YK*-4]H/�����y2;�U�a��Z��i������"#��u��l������
?u�)�_
��@��tI���R��[I�<4��!�'>�T!i4�1����DQ��_�w��F��{�x�^c;�sn���
aFO���p
��f4���������J���E��U&��,����	�'�(��]��mw@��+`53�;���e�q}kg_��y����4e#�&�~L�`���%��Pg%hfgd���r{�-�����f��\6�fd����J�W��2m
^�,	F?�D~�X�w��"f�,�P���	�-���\�� (cS���v�Q��:)�sx^��e����a�#$^5��	�@�ut�	a��D������')�5mfD������9�(;������F����+vNS��U�I�n����n��������C�&�m{���b�%��V'��gB��?�o���r9������Z��Z=F��mk��]������k�Y%��]	�0��lg�����'�����O�j��M���	�N�8��1md�P�@�\��Do��E�:�jn�g��)���.D�i^A���c�y��Z����e�6V=���o���Q#�us���E��s]q^��M�K�64K��?o������y�fm:��`z?}i�_��]�W��B�	�Z~*�$C��$��H�t��(���l9)�%�m�c�VM���A�B�dj#br3K[��P��O^��1#����N��m:��`�Q��s��-.e�S��YY�fiW3[c�C]_��V�JL0,u]e��,��������V�Z���`�@�����N=�--,--�5�&�F�,,--�6���h�q��l��8q���.���N�o3c��Ip6����#���YZZZZZ�����-�S!�j x	�6��YI�R������$/=-ULz^1E~y����cu4���c��g�����������q[ZY�4��l\�<������~���u�~��m��zt�r�PlP�
&HZ;a8x��[��Ll[������A_�a����(���N�I^�S���^]:Yw�?j�����OnE�#���n�w]����E��.�����Xj�m��1xR3T{���}��C�l���D��������'Jl�H���c���=u�����\���/�W@������&s"No]�0+����s��w���_����Y��g	�����%���_��2�mRa[7��u�95M��8�2v��oN�����;{�����Yq���wD����������8��3�D��Cfr\�����X�O7\����X'c~�?GV���M���`"	��#sK��q�p�S_X��"����,/!xMP�nkf>���X���N��WY�d�K��PW�
]���0����_�5n������{&;�K"�+$M�"&7����(TQd��&<g���U�}h���Ty��C�)�����p�$�jFckL�`��+���H�0,j��2��d�����]w�lG�?]����<<�r������	#�e�����@4_zp ��;OJE�wtp���!�����C���Q�g��V?�j���m�!p7�����n���;�a?�B��@�Xm������38#����&2�6B��(Py<���!Xn�J"�g��i�#��'�s�n�	�~mj�%���nm�t�M����"@a�5LU���R`g��Ri@����'�����.%V�/���}q���g�h��������}F$����ia��"g��������{���/�j���]��#-Lf��<�Mbcck�	�2�v�������
�%46�+\�`����������5�YPM��&kW9�L�������A����j��CAAAAAA�2p!
AAAAAA�p!
AAAAAA�p!
AAAAAA�p!
AAAAAA�p!
AAAAAA����m������������s*2xj�jH2�}d�Z���p�_}+2`��*m
Fl���~ W�F+�@��j�t��e�v�+��z��8� � � � � �|�p���V����m���E��JSteQ�+�e�����u��>j�t9uK}J�R�%T���MB�Y�t�i�;7e�~pv����d]���B�Y�t��`J���f4���������J�����R�P��@�[��;�}��F������{���]q�jj���u�
C[�/��I���8��2�����?�_�����SF
�f���_���i����s4���1�� R���Y/�DV������(b��EW�����V��di���U��
'@rV��`wt;<��-�2���h�G�2���MJh�����������*��=���G�Y�l�
���,Z�q�y��o	
I�B��h�u�l7���2bg?���cG�G��9�h�)2������w!
A�!T~����u���D����@�������[��gc�������xUSO�f%��I��������P�W0�U��	`X�Me@=��N�y���S�zM��T��n����k
��Nd���4�~��A�H�I��j6������������-��gc��YGRI L{�w)�9��?����t����Ek���	�:Q�F�S!��b!!��q�nP�]�rN`�����SF
8$ch�Fs��@�oVq?e8	P�.B�tt���l���� ]Xa����l�6��x[-����IoFQr%,~N�����~���t��aX4���E�r���)���}<�-�65oT��D��[,����	Wc2%VVe'��������X&��6_�y?2������� LF��������D�n��D��2&''���B�D�
�ph��HK��j�]�q���;O���~1h��r��m�,	:;2���[�
5DU�6�%�������#����
���\��	a`5j�������EDG�_9����)[FRp�]��bxdD�����6a���O������KO^�}?����+Gv��N�b���f�2"*��s�B���V;lK���u����d����[�}~m%�G�N�,����,�MvE�����Fn$~�
�^�j1q_��%��#�j6nOD�����! ������
�,�n��f���g�Z�ql���}��k�aW�^�����W������X�'���l������/�������m�;;���O:(�8����5K����S?��
f�*Ub�a��*�^e�����Q�?g���>���c�����mEW{������v��c�oE=���{d���7�Y�"��v&����Nl �.�������q7����{��������������c*D�;@,$��!1.H
,`,x�'�����5��>����5��o��X�oVq?e:	��"X�'��~~��*�EK��&�I�)�**cS�	�>e�*�>��}���o���G�� L�����;�O��x�k���
�u}���)�>
p_s��?����_}&Z�k���ro[��������k�1xR#T<���?�K��-�#�LY�{!�D��w~^?[��n�sKc6�mkkk�o��|
��11�11,�^�p���.�O}�[������*�����$���w�a8n����}3�����A�s���N��n����kDU��m�H+���ux4��a��r������/+����b�����w�wN�k�d�k��Fn�<��:KQZ��~9�9i��|c�N�����,<���K`�M����w�i����n�Qb�Lj%���v�t�;�h����T��2�,S�`�����e���{:�>}CHj)��:�@j`�[����=3��m�%a��6�+�z�}3����?�(S�jf�S�����-�,@��]a]N|���u�����)��47�V#��j8]:q�����=)ho����������������E|- �����p���f4���������J��`X����WY �c�����o�K�a�A}[�GF���0�m�����YZ�<�#���g7�����UBGO�����x�����T�&w�XHH�FrP�@���2��u��=*s����
�/2�69���c!O�2~29)?bZ�-,M�w�h,5,��;�
�~���%c���Y�Z��=�K���1_�/��2����>����!�c���n�����_�y��^/'��
��U���[�JZ�����'X�������$fx������E������uy��C&�u�D��&�����!��?�v7}�����)$������/=� �8����,1��)e$m�P`6tt��k!�%�7���o��n����v'G�^�����r
	Y�������Gv����!�su����<��{���q��f��f�4&�uND�������pY{������f
��������y��&����OYN���"��������& -&<
��:P$���S*�(WHJ7��@�������~��� �X-
�����)�1��]����or�F	��|��w���@��-c}(�/J�@�e����e�'hg��������CO�fe��A��������P�W0�U�������GY${,7���t����P���o��_v������5�����>��&P3�L���a�V�!�GtV���w�#��d�[p+��/Da?�B4��BB�1U�j����Q�����~'�2V�C�?e�e�%(�'���#V0k�-����wm��g���My�^&�?Ms]��=w���4Rd@	�����9�h�t�b<O"&���c/,��%�����n��~�@���	����%�/��o�s����k�'.��M�5Pu��*�K�'5C�Q��;goLX�������	O��n?��/�h`
��6y�w[�s9���/M�|a��}W��1���t�t�I�6���� IDAT�2���N� ���)e$m��ic�R�$���B�$$�kuk����LO��VV��f����x�)-}.���
 o!J�&9��sf��)D?�6l�"i$��tA�)����Q���������"�Az������c"�S���@�P�����R���Q��m�����L�*$
��p7�������Q���[����L��EYY�[�J�"�@	J �����{V�U�!�l\���	��`���jW3[c�C]_��Vc�5P��c=�o�/��/w����Q�E�V~t�c|��L=�fC���;�N!���OO�
��a.�|�t��q�������>A\����Rhr05Y;RO�c^�DV�AK����~zd!�7�������������;^C_��PT���6iV���gMa�U�sO�o����N�����������qD�S;+-,)h��Tc�������J3U�%�����9�@�������f����Q�����z��pd�����%��?4�t�]�m��Y���f'A����A�A��T�<�YHT�w+�����[��]���b��!��x^�f|�����o7�����x�YP,4�!����?%���I���hmJ��6���)t�@��{~S��>O���~R��9E�����lX�}��������>P�~�v�����P���Ri��Au�P�PW�j�@��������z����qc}�h$�Q*�z�"�yH�(Q2(B�i���y���qC ��o���q,@A^�W�k|+���q��,4H����S?��
f�*UbuC[��':�9M��<~��7$@�k����l����7���7�R��u��g�������s>T�D�j�l�P����GD�9���M��������D�AA~����nog��u��k����b�����
��z4C�t�}B���(�KnI
��jSl���$0����A��"����,��ic6�������Y�@M��������F���� ���� 9��K����i�G����+(,!��d|*�T�����D�F&�ch��]�)vls'��-����,����B �%��������A������QWO����r����l��+E�$�9B��0�c��<�}��G����[q�Y�{�d����.Z����DC3�F��q;��LH��6)>��:����S3���,�!�XM���3��c,<� )�w@�&Pt���kO�6��j�h�1kI����%��8 Z� �_v�i���v�\�,<<!2��X�]�V>|�y1���SQ'�B�� �d��H�t��(������A]x��J�F@F]�^����6o���z%�=����j����P@p[�i^^���C����!���O���p{������"^	����`J	� �jFckL�`��+���T�	`X�
]e@��[O_��x���(�����Fdq��bV�1C{��|Zv���v����n\IS�_1���M������x\��^���� ��G����0�*h&?�echF6	����|�)����� `�SI�w,�	��~k�a�w(�����y�DNt�Pl���H�@J;���]W���9
<���2ft�����UK��| �:���0�E�`P��z�����63��?Hl�H�Y��R����H�����;�)��WxR��(�~C���~����wh���m��V����������L�����
u�\.G�8?=5S+5S�����mM���5v��:|mC9�d��+!������Z���u��q0��U
V�)|�<���G�6��L�q�����
��hX�V���LY:�s^�������O�c8��p��j���-����i?�}�o}����d���-ZX
��:�����l�^����X/���xS'������7k�������K���d����lzO0���Sa'B�� �N�@���uE����d�I�/�n#{�j���H�
��fPI~���#���V��(S�] L���8r���Z����������b8��*����y=f��������M����0�?y.^���i2�xj\0+�,�jFckL�`��+���T�	�����z���#�tr��:��U��6�����"z��������e���������e�F��?�z���Av6]z��z�����_H'�����m�$8p�l��W��,-----�M���.	���M����z��� 5(�X��O�����T1�y���}z���������c��g����������.���������e�
�9=��v�8��^]���5o�� �����b���T0A��	��+�����gb�J��e�=�:k�~��C�7��%p�N�����������[�Q�6��'|r+�	@��8u����R��f-���pw�/|x�^�Rms�0$������7�(�h=d���-M��y����Y�w�������A=�M?p�S���^;|��|J�2xu4]:���l27!����	��,�9WG0^��e����{x� �����<[�����e��)�P�&U�u��Zw�S�t���.c�=���
O]���w�j�����}G��
��+\K\`���=�M��?d&�E�z[����t��%�)[�u2�g�sd�����	A � H9�1�d��
=���/"��,�����>��f��YA��E~*���PE���@�@���uE���-H��o/��u^�������g���$R�B���\�W����O���x��1�������>�k�:0�S���]�q>eF)��BExl"�s���yZE)����K��}<���xj^0+	M��f4����������tL��vh*�O����u��v������}��S+��y,z��0�_����	D���0y����D!P�~G�I��>�K�>�%zV�m���6
���7q3���������C�c*D�;@,$�~!1.H
�g(x�'�d4�9��5G���RN��,��(���5��aF������%�=&,����.��O���qN��7���TQd(l��	�J3R
�R*m�0�`���8P�Y�����e�@�/n�4u������Cz��9����S��7-p_��w�S��>1r�b��Y������@�b���H�� &Oj�j��BAAAAAA��[�. �,�o��j��xj��ZBc������Z=`��+�YZ0,_�E���i�v�����X�+\�`��N����Q� � � � � � H��Q� � � � � � H��Q� � � � � � H��Q� � � � � � H��Q� � � � � � H��Q� � � � � � H����(���oE7T�M���-�w����h����s*2xj�Z^�c�v�+��z{��p�t�i`'=�v��0�}dC���L�, _-5�AAAAA��p���&P�����d	���6�������/���__#EW��Zv�/mi���r�);��K
�A4VS��w�n�`��h��G���.x��F��.�R$��g9��s���M������{�A.Y�HETC4���=�2��cl/���F\~^��G�B��P,�^����V����������Iv1}����[s��}y������|�>��?"�}��s�O�����]��sy��?��+zU��]�Q3���5� 
@�Y�t��:��t����r�Z�~��c��
m5���O%��p*]a)�>vG�c�3����'�O���}$(3
�T0A���
��A�no�-�������<�|��%0]x
������C�VF����6{���H�6-2EFV��=Q\���������k/4�� �V��������G��z���5NOU��h��#`y���K�#>��|����i�~-�:��"*�!�C��:D��91�������208��k�a��?�Q�f���][��������-��gc��YGRI L{�w)�9��?�]�IO����[�fL�� P�X������:���/�O��5�rRic��+7�)tr;�)�cB���;j�^��F����'��z']rf���������X.2�6%�2�O��d��R>}�����/g�����
���M5'��`����{/F?xL�x3���+A��'�r���)���}<�-�65oT��D��[,����	Wc2%VV��0xRja�8n����]��;�[�&e-6N^��/����v��6�����aD�_���~7�~��3�W��@������-!7��e$:�0���Gp���{W�����
���S� ������q]��o?z/*�VT���>����2�1y�_oGF�=����NYZ}W�E�o��j3���3s��e�B�7N�p���[��/-`Z?n�!K��,	:;2���[c��������9�q�]�8=�\����
		�}~-�@4q��i�D���;�bc�w;6��[q���c��	q�F-�u&,":*���M.}L�����I���k��]X����(���������]H�F�2#&3������no�~�Zx�����:}���}�����v����5k��������(p-&{M���/4G��$����??:�������^��v�������*���"*�!C��>$L�����;�O��x�k���
�uo� z�������l;�&;�U�_��dvr��
d��������y?.���������o�)c~=F�DRg�[Z6*������s�g=�v,4������jOV^�Q3���Q#���Nj5O�d��Y������^�C���rW���x*�'�m��c����Z���C��-y��(&%���0��M5'�����������;~�u�v%_��O���Lh�(�}�����?�~1��hU������m�����������I�P�K����/G='���ol��~�\�n�cbX�~����]V��`�t�G}�)l�	l�	~;��?�5�a�X��7JL�I��'����]�N/Z��a!D��K��uI�;o���{��g�^����lT�qO�A������!$����a}�o^�sr��u��z��>��AM���4 �w�����o�[�b'Z�������[=�wn��������Z���U\<������Y-�t2J�{*~u���
!�b	@�����������V��������u;�[�aHo[[[�~�/����i1z�N���-���8c�5����'�K8����L�E)�_�a��\�l���,N�`��#+�jLV!i����U�&����:�]�O���p��2j�M�qcl����AD.d���9n�O�����xT��,�Q�;�o������K'Nz�����}���h��{)ljm��%}H�(�B��0�-s�� ��:�4��q���oH`iq��|��a:�����u�h\eZI��������g��5��#B�:�������:���.��]�m��BPvPF.����Wv/
�Q#RM�3��:u:��(E��2���:�Gu.O����B�e�drR~���[X�4�d!u?��������z|��1�
	�J�,G�	�X��%����/��P���c���n�����_�y��^/'��
��U���[�JZ�����Ud*�����y�;���i������"�������M���gF�d��'��g��{�e��g<�wg�c*�5�6s�z����->�PI����?hG�����#o��u���+�D�����gT6	i��2:�{�5��������~���}���,O�0�rpHj1�O��M?��%�~
��5rD���K����������@���g�_�8ti��Lj;r�T��>�B�.fOwd�S[IB��J�����+�������o9���1C-��z)~�Q/�<�����.,�@�@Z�SY��}!)��7�v��J����_���o�_�7�|���b�V�;����X�S�E������5��<J�[������w�(�JG��M�� ���3�c6l xY�	��4$ ��!�t��i.Y�k��CU3<�xL��e��Q���m���|��M�f��=��=��j7d���J56"��uad7cB��sn����o
�!H�!H�Xn����p/!������p[�����)qG-�����6���d�v��IW�A���H�(��X.��������1�����N��Xid����3b�K���
����6�Ez!�X�4�u�����n��H�A%l2D�v�g�0�e����<��0K����jlj��:qf����������`�����.d�t��@��D�I�P�B��MrZ���JSS2�~fm��E�����&��cKc}.��6�����jfeaEO&�
����|�ig�J�*.�#��y[v���O�0SS�H�^f>���`��YkH=�X�F�������m3$�[
 s���J�K@GO�`��icP�:)D�T���By�><}�v~�NFl��6�;��S����	��u�!A)��VV��f�����IK�Ke6f+�����4a�QU�#�8�F^����@�]��R�o�H�%�b	��rj#�����x�������YH���U�!�l\H7����
a�R*��z�8�&V�Sf{���v��GE�z|���k�`��)�P����Sa�3����+���7���7;�����o�!�z������������|]�����y+?�x�1n�#���{i��A%���zP{��f���H��xu���}l��v�o������Z5���~V�Ic����\�+
��QJ�=���o�;Q��/��jr��O�������rJP�!L:2x��r*�TE��O�
l���
�#(�d��/y
������m�5�`x@���E����N�:�tq
LU����D
��R��8��va���?�4��Xh<|C�3Q�S�w6,
�������T�[*TD��JZy%����'�vPdI�HUz���a��|Z5��{Z<�k��������|������I7�+V��/�@��{~S}�W��QT�'��?^I)(�E����NTHC
���H�+$M�������-P@�LSA�-��T�����i��F�������8����������!�}#47��c��
�
)~�CP�(�B����0 ���� 9��K����i�G���G/��Z���g�������s$��zV}�L(�?o��4���o�!H������N�����zC$����������y38��1JQG��Kv��T�Lp2P����K��]�34'2]g���O�V�KE~�-���Um�
��@�F?�}YA������>���B~~�gP�fu5�.��z��wd��O�WG��'�����{�Q�6�%�m!���	���t�g������gu����#K(~~�Hy	�q	\T��i���|��v��TZh����Gg�����>*��l�����@f'�*��=-����N�J���'DFx��k���/=/f����4r�E�U!�iga���j�(HO� zv����`5��j��x����w4P@p[�i.�Cd����.Z�n
	@443k$�D�?�B���hc��gS[�����f9O���~��y<h��C�r!P$I��!$V�����w���]y"��o
Iu �
D�������d\���$�`V�j�j��6"&7���� H�����=�������f��\6�fd� |�B0��M#��=<n���9�_��T�C��"*D ;H� �`��J�$��+`53�;���eW��������@�?��������?"��z����mEQ��~��; �{i��A��"�	Nj�O�f����8���������b?e��Y�~*�����'���E��Y����7�Z9��B�AP��"	)�,�v]uR��(��
������vGH�jT-	��/<�I/�Z6�#�|�@�����AbCF������"67�Ge�NN.��P��U�XIT�E4���s��z�0��A IDAT� �����$?=5S��#��&����3c��������G ����W��=�.0jg;�S����*�����k�����{B��#)|*���p���[42}OtQ������Z�"S�_|2y��E�~<�oq�!�S:��-�� L��s9�����Y]&L��
����]	�9�����e��mr�$�D�c|\Z�ic��<�2�?���������\%I�/I��=_J���RXX\v.�6=����}���/BR������[��:�?�^j�A���3�������a�-�d�~�������S�>��?|0'��d�U��Tc�1����A�a7hi�L����6�6jeai)(����Je--�KO�+�@��S$�}z��"���'���o�R������.a��\��J���QD�P���	��[�C���Va���un1����I���O�D���X�v�R�^�4�5����=.��@����0�wl��W��,-�s����6�#B�������%��<����\b��i�@��sQ)�`�����f��;jA��x&8�]�<��={���i?���<d
m�]eP� S��~Vv*���>nK+KCk��DhN��8=���A� 6!3O`h���� �#��	B(�P���	�J�	��+����~�4C�5l�KK0��0�y���%�pc��t��{����k]�:���zo�s�K�C�{Km��1�� �K�����(������l9��������.f� |�:������g��	��.N��`a��/A���[2w������������hy	�k�zp[3����g��}.Y��������}��{N
�1e$��\���1w��S�9���B�����rH���]�`��!����
��q�o�����`���Y����:�l�w��$#.�@�����|�w?��g�������+?��E_��k���u�!�Lv��D���c���=u�����\���������e���=�M��?d&�E�z[_F�
u C U�u��Zw�S�t���.c�=0'}0Ab
�.5��R��Y�zP��F���W�m'l���@&�w��B�G����"<6��3|��*J�>���X���!�|Q!Y��0���Cd���NS��h�H�?�����������R��`R������yG��Bc[���M�F,������'������1���7�F���� �/�v��7���O����)O������	3��]�Q3���5� ��l&8�e�;��={>�3�3��9��5G���)�$H�r�W�?k�M����?Q�Kt{LX�kS#](y�wk����k���P�f
D�f$��&�T������'�����.I� a��t�I����0�}���aO]��������g��d5W����q��&3A����Hlllm7�2XM���<��F
��BT��TfHe0w�Ec����k	����
W?j��q��`fi��|
`E�#���U�&Sc�k�p���F�:����R��D���q��1��i�n���Y�����AAAAAA������V?����2��>�ytm�����zAAAAAA���o|!�w`��u�� � � � � � R�o|k>AAAAAA�k�AAAAAA�Z�AAAAAA�ZAmQZ}W�En��P�M���-�w�����Vk������W�2����O;��R%��D������F)\��iU�Z���&�� � � � � �TN];�uB}J�R�%T�$�n0�������/���g��]Y��
h�-������jucL�R���15��,XM���n�a��a����G=�����wn�.|���v�rIy'�V#���d����8')����Fe���D��cg�9�������_���#�#�������{dT�R%�2�5y�p�oe���K�.�_|"�l�
���,Z�q�y��o	
I��]����
��`��izi�����SF
�f���_���i����s��A4���D�q��uN�$��AA�3rO`5�y]����"V]t���>�
m�jN�F��T��
'@�+,Z����4g����>�:����� (lS���+�sm��y���?�J�z����b��|�Xq��������E���JPm]��B-T~����u��m��� H}�����;�5"�'}�h��#`y���K�#>��|����i�~-d<Q��<����{��^N*ml7�{��5�Nn'2I���-�S����x<�������p����g@Y��3I��(vE���+�k]�T,`�c���mU����
�U�]��
ED��P]QT@� " ET e��A�L���y���d��=���;��L���Sx���A%�hm�����>�^����}���;J�8�N#/'��?i��)�.�8��.���A1��wN��D5�����Y�h9��wY�Y�c���L��RG�=*��I�7I�!��9Z���#@$C�=�ZD-
�;#aCf�
�g������Cb��z�Ndx 1�����'
�����r�.?�3*o]���nS��{������^"tG�x��x'�����G�&5����T����&�Fh%��~+teU�5�'���)� tL������Q9�/Z?�{��T�n��3���|HD���V�������Z�k|/�FDE��8��~HK��6k<�O�p������%������^��<u-8�v��v�w����zCo���_���
��q�U�jg-�|#cbbbb8;G�x����
!a;f�[~�B����k���h� �-�oRC�~=�2@��1����L�c�t����H����k�d?�%]��d�2�b
	T���yD$������T@�}������\&i�G�bX�_-45&���GRN���W�tV�����������\pX���W�^�s��C?
������zhJ�O�
Bi�Jd�OF�)>���M�x2*t�P������9����Z�9����U���:�e�o�h?�x���G�2������q�
������{&7f>�B������7�b��A%M�L��D��p�~�J�4t8�����`
Z}#����"^�����k��GV$L���������Y�����yxr~���|����9v�S�d~[���	�$���V���&��"�(0������m8�����Y�Dr�'j��t���w'������������*���L����[�
�`�p�����c�x�����f�f$
P�b3@��6G��]���j�H�<aR���=Vb�\x�����B���K�O� ��'����.3<�\p�u���T�]�K[��>=��w��4nn��n�������7-��������A�^i��me=s0c��]�*��G�&&��>�W,;����k�#,zEo�>~�o��i������a����j����_^bc5��9f��C���*���a��V������i3"i���c&:������L���K���u2�t1�,�}�`SSS�aK
���E,c��%�\�G�O���&j�H���U�Y|�E"����8~����:�~���5{W����;��U&�Z�jL\!)q��gh�&�:+��v���O����b���������"�����^���bJ�;�X��{�2b�v3:���j|l����I�*+vC2;:<��3���:�f�GmW��x����~�q�J-w�
�z'��W�����ub�A;v
Olq6��*,x\>�[y3�����{���Y���n�_&
�+x��
�(��S�7BM��(�u�?����5
u���S��[EH	���~��G������KxQ���L��D������^���Z_�>���N������4�6�F�Zmz�z�0��	
��yn��)&:�P�
n��\�el9�wn���/����S�����%����#]��U���$+�G��Mg���=o���.��K^�B/���<t����[�����#:�d�����l=SH�:�����S����Hh��-������%��$'����W@j	�r�T�\���(�`��2��I�J���R��;O�x�w����~�� =�/(������2��0i�x�"a�=�m����� 42���+2�����tI�@�2&�g�j������*��x��������"b�D��kH!)
��K���A������ox_�7�<����J�{���u��F!�B}Iy�
�."^R������BJCK���L�_�	:�7# �nC~���u��[.��
(�>�{���
TZ����\Pzb��#�7p��e{7��\��$�������W�
*i�clL�`�lu�q�J���&uF��.��c�)>k�	�$-h�����������j2��"@�D-n��F�����;����8Q#�Th��D�T�#@$Mx�UwQ�ggjoH�[����������t}��<N�OqT�@|
�g�O�q�����~)t��*zqe���WE�o��\�5���s�����
4�M��}��0���.���8�PN�C=��<a"�lI���>)�I�5>���B����n����bbd�f���>}�������5��><��?U�dSo
���6A���Gk�f�'e��|����Y1�w��un��F�. �Rb�7*�����~�Z3 Y��.2�}�/�Q�%����&�v��EGW���}��i(
�g��j�������C�vz�l����MWo��,,	5��BR�c��1��	���@��|��������f|��E�D~( 
��{@�f2�s�������I-k>�f�����BsH�	L�3?�S����=t_w�8�����q��
�;e!]Z��s��;mu��7�H����������
�j�*���6VK���������-<�#JA��!�A�Q�D-n�
�1{��)�}�H��!�Xh��D�T�#@$[r?���Yh;S{C�����L��>�SDA��QL��g���\��|�}��������g�6E4X7�~6M������Z#�=8{����?������I=����$e�U��F#�GY��zz P����A��S�����%�v�3�;h��?qD��Go~�	{����q)�GH �B!�B!�B��B�����"����C�g����a���(���W�����kB���puy<����+sf��1��=�P�������zmF�EGW�[Z��RJED�D���ZFG�C����^���-,�Mt��%d��?�/$�Q��k�"�mBU�4@��F!��+�������Q�Crc�YF���0��~1S��fV������!�Sw�c�����K����o2?U�@}�~WDtn�O����2i��)�����vc��M��o��y���S!/���T�1+�#@r��x����s������������&AsA����Z�,
�3=`���cK����v�o�����$"�h��.
��"���!���i�:���`�0a��>3�d
��:�b�<KE~�-mD?��Y� ���@���~�O�G'%fQCZ0������6�;@����[�0��2b����;�'��N�&�������v3��6��]v���P��� %
�W�$+�Qdv��"��
U�^����*LJ|���Z�xV���%�Y�",,��v�������]�eU�[���!; ���to����$���I�i�
Q��hel�������x\.�����w�)H�,Q�CvB����p�A��0)��j��#��1��h���'e�F���Y��Y�"�k
u��_�C��F�$���z@��u�+��~}��.���	�M�����J�cf������h��(B]S�$�J��n�F�xV��p���u���C
2���Sx�J	%��K����L���'QuK�TS�E���o"���Q�d��Y��4����2|���H���);���:/��5���*��}g�l��=l?��|�"t�l8��w�~GHf6	�����Sl��� .>m?H��1������m���[���Z]��%r�r�
@C��f��V���f}�R��Hq�
�����"��yW�����vj�0�{�D������b&��K�f�&'W��!��KV�de��(n���q���������ng��=�����n#~���`�*�M9^~�i�Zm���i��C�?r����gG6�mzt����E�S���0�x�c�SqTo[����^.	)��=��h���>�����Xg�^��+��[�'���N��<����������7��|oa�����\K�" �\>Y��������Z��2�k1������O����_���H{�������!D���/��S��bU]�"��V�=��Rr���F�$���z@Ua����Z���@�`��742��}HO�eT�����s������N]6I7���8>��e%�E<.]k�rN�ohr�~�Q�YW"S�{������k�r�E����9�����i�I�~����lXI�L,�{������}-~\�2 �V�Y�e��"5���o8r��0��=�xW�wO��D5�����Y���;��4������jg##~afj�<���R�9Z�=��;D2$��.�u���Mg�oH��g��W���_B�����w�������fw4�Q 6���f'�����������M������������6��m8��i4��W`�*��nS����c�8��\����|��a�?��j5�M�������F��S�����%"wG�f���'Y?���rz�����l�O�h

������x���
�K��n�s��J������w|i��&�m><����O����@�Y��
u���Y;o�M�|s�������>g��ls>Y����w�v{����������l��IsM��@����;~�E����:qY@dV���C�S�g�j�0t���[�=��������{���m�n�f����dnB����[ve�����wu������5�j�
�8�"�A� �]��~����e�5'F� ������(��9�+w�.�=N.Q)N�:���l��~�DAv�&g�%�]�r�a���<�_����\�������+l=O��//�sd���,�8'ktc���g�J(J���������}b�I����������6s��o�\J>d�������7X��?�~!�dH�����Y�i����6k�p�{�*w�wi�o;��	})��5�9�#@$K�=�Zj-
�����
���]��������V'�����4��a�������>������t��4/=���E�*�y�o���FU���Rh���R��4����X��|q�zb����@7��8aR�l���U����S���PS}��������:�?m�������@�������1������(m>�6p��T��YQ����i��(HK�3�����2'SicW���S�P���c��!�B!�B!�BH��(�B!�B!�B!�U��7����#�7u'B!�B!�B!��~#
!�B!�B!�B}x!
!�B!�B!�B}x!
!�B!�B!�B}r��n���Q=5�o�M�x�'zsbbbbbb"�On&]�������Q����2���c���.�{��t[��@�L��y�}T���i����7�^�G!�B!�B!�Xr��J���:����7�&R@�7V�*f���i#��j���T�%�A/�(�;$���dgp�;�W+fQ����w�K6u��W���dgeL�P��\�������a��,BM��4��x�,�>t�%9I����+2��S����C�&j-��-�W�W�A��/�n�R�������W����9i����~]���������8�0G)>��<&C5�	J�O,$�H���������!���������i���������^����l�Y�I;,� IDAT^�4E0{8��[��Y�o2�����'��@�6� h@����G���k���F�>p����G�>F����:��CK]6/?����>����Pa4�3u������u�%�/v�<���;��#]f�
}ON��R@TA���QM����3|�������m��n��m��Q:��S�J�)^�*��|��8(S�r��5&�jE�#�P�P��k�y��9�Ief�����\d�t�m���?�:�6�9	\���-�������-*W���e=v��q8�F�r�y����^���}��@���^{T��9��o���1��LP�|b!!�"�.�Z���
�,7��AF_W��Y���;���������I��L��3�����/�3�
��m�y�x����y��yN��H�Y�DSC ��h�����~����Z��z@�x����h�;��c+��+Qm��y�E&Q���=V��d�����o���� ��4��(��7���w�.�!'���c[�tg��"cb�Y�P5��������#��6Z}m\}N���<
8��e��f���F���}��1_��BHx$��U���g���2tC(��)^��v�p���\Zl�`��%�����;O]�tz�]]|���BL=Z�k|/��^
����qb����L	��W�������z!ZX�F�����pv���h8����[��v����2��Z�*C7����9n��Aw���^6��R=���i�����8����"v���7��
��	�}|���wt=��N�����3��������p��{���)���D��<�W�'����u]}��A��,�em��th��|*]2k�\�������a��,BM�a`d����K����e�>���f������r��Q�n>[�T�5p� ���]�}���:��}�������	d���nG.�y{�al��Nn?����A��q��:�T�|b!!#�.�Z@[��7��6��:��Q��)�1(ni��;�=��Y��)��P�)��m�op���c��-�KK���SBU7��6�<@����U�O*�6����W��S�C$�<r����g/_=��=r;�Y���������NO��7���o����a�B^�_���=V�������{	��� ��4���4�/u�����j��e��K�w@�_]2��t�����h���MMMM�-
(�5}m5}�"����s�N�����l����5�f���(9�b=�|�<���2	mJDh����q����-��9�c�x�?�T"�������s���W���j���������v��*�b!��hj�����K��[ZV�MF{����w}x������M{W���>�1�fD��9�Lt��=m���j���`�q_������cZ�v�h�FFo=B�����^���e�UO��N�����3�������+km��s��<eBi/�)�a�����g��
��b�W5>6^���g������%�f����)m���ZQ��"�$����x��(�����=�]'����`�EN�.������"�������qy��=z����P�P'��9��~��7�1��L%�'Rh��R|��D������^���Z_�.mv'�PR
�']'%gL�����V�����ef7�#��a7��_=�D�j��mV����-���
����!*���4D����7$���S�{Vj��T`����G\m���RM����H��z�t��4�l�T`h�n�Y����	 �����lE���}���
<ri��Yf�Y����F��Ef���������
H-�R��
����Q���\�DMHT=0{Z��>e��$d��s�g�)�O���}G��;J[~�ctg��$x�wP\)@���'~�����}C?� =�/(������2��0i�x��$�G��<x�^"���?���c���W�d5:x�~�n�*�g��3	5'[	�R�Tj�T�{��I����9�(���u���Vk5���9=}M(,(JCK���L�_�	:�7# ��{������%�f��D�������a��,BM����r�����a��E��^�~��>T�K��T`t��
�16&�Z0e�����T:��7�;0��t	�}���5�?�w��ew�yo���1��LP�|b!!VwQ�g������l��+�y��)=�� fi��OqT�@|
�'M'%g�������vf�K���T��+{����(}�_�:������t.�,o�m�d�������vI��q�rBa0�'`�`6A��mw���#*-�Y}f.(=�����3W.���d���lR���>)�I$�'�#�Qd����gl��*&:�U����{�r%N���osgO��G;=M6�P�R���]��}'�_<�g�eV4����un����QD3c���.�O���&�zk��X��	m�I���KH��X�M)2'!�@�_��H&�����JKJAMCMy�
���^��}ei)���.���Qj?��=ZC5�?)���k���R�UPU����R�*&�05���o���H���A��&���,�0v9S��?L����EH��L�yn���:�;�e���X�����[(��x2��f�N[���#������f��*������c����>O$�A�@p�!eN�2�����@[��7d�^������8E�>��4Yx����5O���w�*��KQ�~�mSD�uC��gc�d�*N���7�����+����O-.o�����`�KR�YE�j4B��h���D���*���6VK���������-<���b���d<�s?�)��=t_w�8��������;���A�~, A��Go~�	{����q)���[���M6ON��
����?������z6�9fFG�C`����u������Dw?[���sK�����u���dV��T���AD=@��p�9����IQe��/�2:�x�/?Y�� E�M�T�B�{������kB���puy<�����Q�j�(�:��%ARd��"����z��L���[�2j���E������%�f��D�������a��,BMB��Y=3�����HN�}�������u�/��|7��V����-t�8��5�s*��}\�0��{f�[�>���9����I&(K>���b�0��!bQ�\�"6dv33m�A�;�,&l����g���LA�Y�A��g��/����g�6+���h���;�e1EP�I�Y���L� �34���46���:L�����t������ ���� 9�E<������g������o2?U�T���wED��������v3��6��]v���P��� %
���4n��
?"���y31�����^7����v=���+E�$0Y,B�L.���^<��{�I��Q��,f�^'�E�Y�5--
)v��mj���J7Cv@t�u���zs�q���U����=�[���@�7)��j�����1�AW~�kL��u5����3�2��=�T!������2���`u��I>p@�c�vTzH����5vU�^��%p"����]��q��5��X	WK�R�SPUdAjj!�w���)$��K��J�Q��q��������ny�AS{0s�����X�Ee>�.��P���LikL�0��
G�&���T%����(�"�5�� �$�}	���q��	=�8�Ch����m�>N[n�K~����yL��$�%�XHH�T�"���!/����3�~ t�l8��w�~GHf6	�����Sl��� .>m?H���:�������n!���Lhu������T6
iS��Z�3t���QKy�#��*��S,{����Q�B
���* Hz�������#�-[�R��(jwdqvJ1�]�%u�S���$EH1�W��[��hen?�����~T�4�����VV�:�.�-��s��k�_$��'xioU��ISM�C2�?�_4B�������
E�	���x�����>�{��=c�pU�OB��/{�~*��m��� b�=\,�o���DOX��)����J��t�����nV}�E��2�k1������O����_��HW~�kLh�Iq���$�O���~)**�)��=��h���>�����Xg�^��+�>�5#�(��8'�h���&�G�{�����Tc;QcW��gG6�mzt����E�S�V�j�]*u��K�{#(s�tg��=���C~�=�E%�6A�����[��9������u��I�qG��5�W��Ye>�.�5%�]�����S��pdj%�E<.]k�rN�ohr�~�Q�YW"S�����i���&���*��mohd�/������ebi���I�{~���.\�A��w�>�i��[O�k��FF�����/
����d�N2@Y�������PkQ����oH��g��W���_B�����w�������fw4�Q 6���f'�����v;c#}-m#"$��o�v�G��$���k��u�x�� ��9�nS����c�8��\����|��a�?��j5�M�������F���?�2��~��[��79�q������$�����`����c�y���<�
���&rw�h��'�"�Q�t�h��v�������6��'Q����@����;~�E����:qY@%����
����:���M���wU��a+�����W0�mUt���t��
��~J~����VB�q�T��}�P�Kj��U;o}P�cM�Gf��Xj��v��T_�����X��;�"�
C��������:�y�~��g|A��&o��Uc t
�|wm�g��N�/;�����=�D�o.����r�B_�����m�"�$M�@}�s������=�xo�=���k���x�Z��P���i��������N�<u8����EU�����R�@�$�q���������?����O�X��,��=��9�+w��2���������=����2�"������2�.gJ[c���VT8�52;`�������9�0J�R�������{	]��~���B�5'F� �������(�VN�:7c|~�u���/��^a�������9�i�Ip��M������V�'��<&C��	J�O,$�X���Z��h
^���YM�.mD�vG�����:	BK��)�4��a���h���>������t��4/=���E��T�P{1��n��D�e&��i'��x ����/��4_��X3��!�Ey%mm�������|����{��K��S�v.�v^a�y�E����9���j������������j&v��z�5���|�]4�O[�s<�i4u?P9-3��c'[J�O�
�+Q�|*m����������	��-�Q��2gL�c�9eN���������&!����?B!�B!�B!��2�Q!�B!�B!�B����oD}/�\Go�N �B!�B!�B)6�FB!�B!�B!��*�BB!�B!�B!��*�BB!�B!�B!��*�|!����/�zj�z�H�hO��������D���L�r��1F�������e�KE��q�]��Dm���;������`�(��zXE�,N;!�B!�B!T/,��M����n�N{���n)��+���u����rS	5F}J

*����H�F�]��+N;�F���e��^��E��.��}�Q.����^F���1�B��r�.gJ[c���VT8�u��	`Z�@��EB�x������t�e��$E��������uF+����M�Z6a[�����f/_d5���*/?������='�����k[�cy����'�(�;��dH�'@,$�H���������!���������i���������^����l�Y�I^�4E0{8��[��Y�o2�����'��@�6� h@����G���k���F�>p����G�>F����:��CK]6/?����>����Pa4�3u������u�%�/v�<���;��#]f�
}O��B!�B!�B!��
�~#
!DD����@2��Z�������@��5���M[��cG���O�*����V�O�Kf��@�b�3��1��T+*��j�0-r'�2@�FAm��u�iG\�&���w[�ks��������6�q����I�
o�hm��������nQ���',����d���4����{�E��:�����,u���2��~�D(G8���2O�XHH����/aCf�
�g������Cb��z�Ndx �=+}?�t�1S?��*����/:�3�
��m�y�x����y���<��.��>��*�$�@0x9��{�I��Liu�����v��-�)���=>v�a�<V>}W���k��o;��T����&�Fh%��~+�?�D�����7���s�����<����tl���LB��@dLL�!��f�����^,�B���V_W�S!�9BN�s�l�Y��+L#���>���/�!$<�s�����3��T�!�S�s2��v�p���\Zl�`��%�����;O]�tz�]]������z ��-��^
��v��N�!-��+�@��GSc��B�����������]���zfo���=NTx������j/���c���/�
�vx���J��Dv�q��^�D�^��}h���E�g+��RP7��'�����tU�:_�88���;�5p��{kF�R�aY�i���)������_���{r|�u��K�>�/����E/���!*��t���r�.gJ[c���VT8�u��	��	��L����Q��/�z�����2�lH��Q���mF��[G�;��l�SQ��������w5�Mv�����]z��jrO&��'�;��|�a����q��;���C�6bx��p���)�������PkQ`m�����p���OG=Cr�xt���M��D"�$�g����NB}�F����aW���sZ�4/-�RJN	U�`C���Q��^W�>������^��OIA�|���k�c��|�<:�����f��wbh�h7��o������2�q����W�D��z�U�m���j�^������'�"�C,��K��;��q��4�n������P�W�35�t1�,�}�`SSS�aK
(BM_[M_����}�����7�0[�w�pM��Y�vk-J��X�6�8�=(�LB��#,zEo�>~�o��i���0�@�7��z`��t?��+��Ui��me=s0c��]��J�@�+?�+/3*���a��V���n���j����_^bc5��9f��C���Ok����{��1�okO[go�Z���2�z��3.������V��7Z���[��0�������b���E���q\���*��	�m���i��+��*��h��~���@i����2�����,#�Ya7��C������Z�������T�d�\�b�3��1��T+*������DU�B��O�e�A�V�����+�D��W����i�����c3TX����<S<.���G=Q��j�77��������yL��y�BB
MxQ�@�����h�sp�x{��v�T����M���`J
�!��������14��j����M���f{$4<"��������B
6��*r �������W���?BE��/���<}�����~�q�J-w�
�|���M__���]���V���������
���4KSb��?��_����������Y�G.M;��;+"�����������l�����W2��_�%@��Sas��6� �_���	��fOk�A��l=S���s{���?e��i�x��h�yaGi�Oz�.�,�����+�8�������a�g����PP�<�A��&�S�������K��=���_vL�����F��o���V��,Yu&�@����jV�;39I�&���������K��o+�&��E��)������&�����n���/����������T�S��Y3pP���LikL�0��
G��:9L����L~���u��[.��
(�>�{�����P�/)/S����6����j�����>.P�<v����H���
 IDAT�%���&B�l����W�������3��dH�'@,$���.
�,�����m4�=�~>�']�,m�)������������q�����~)t��*zqe���WE�o��\�5���s�����
4�M��}��0���.���8�PN�C ����&�����N;|�@���>����'��:R�7p��e{7��\�M��@�'%�!i�D��qd{!������M��O�D��Jxz�Y���	�m��	?�h���f�Z*�tu�{����rez�����Y� �]�;��=�B�wBD=���[���><]��*�l����a�:&��'=V�. �Rb�Wj�����~�Z3 � s�W��*-)5
5�y6$�Mr:������d��tdBc/D���b�h
�L�����?��?��WO]&o���Q�UC�=�����v�r3YN,"*�~��H���A��&���,�0v9S��?L�����s�-P�QP3���}��s�����5`�b�����n�����s��;mu>x��>>?��=����&�c���#R<�<�x�Q�ji��Le�)(
�E���ko�0�z�����q�(�}��i������k��/��:vUp=����������@�����U�^�o��g�W����q�Z\�b=������l��T�h��(��ZO��8TUp{�m��Fcs��+�9�[x�I1�`1��x��~�SH${���:qd����W�-jw:��6�X�@>� �������6>i
�I�R"�g��9��l��65����)��;v����l����6����y�������%���~�D�����Ij�!2����~��<���z �����sv?�q����>�_et��<D_~�P�A�����J���,]����������x���Rc��X���Vuy�T��z��K/�v\I�v�O,���@���x����^3 ��n������iAa~~i��|*]2kJ��)m���ZQ���U''�i�7��	�8�������~���}C$��>����������N{���vc��MO�:P�W��9�r>T�D�x���Qvl���t����c2�� RL�3=D,
�^���nf��:�x[������X��t<�)H:�<#�]���%�����fe��m?z��,��8)1����	 ����Y����^�Z�I�?��nW�_��R>$'����\_;�������R2�M������������\���4�����n�A����cS��^�2�W�V�������_�G�#o&F�<6����}��gW^w�H�&�E�rf����G}o>)P7�����b��D��6��f���E@!�n��M�jQ�fb��.�.��So�7��P�
���GtkQ|���"��rAUMU�\�=�"��Ot�	�q����F��u~FZ&1���*D����q3^���Xc���:��.�v���J�@=�����J����N�����k�?�w��E�^>}�n3�RO7����^?���K������a�����(	�
T�kO5�_���O����.���	�M�����J�_cU��T�d�
@�b�3��1��T+*����0-�&�2@qF����J��GQE�k��AdI��F�)�1�z^q��4����2|���HW��x��dH�'@,$�x*��}����{�~���o?�c6^�;l�#$3�nAVz���)�M�k���
$y�`t����{�hw���o&��voK�D�
*���)�@��������<����~v�)�=
BE}��^!�SM]�$�J��n�F�x�����u��Bd�;�8;���.�������Uw�R���=i��(��� ��������wo��e�A����Iie����2�B��?wk��f�Y�;�e��UI{�2`�T�N-[u4u��j<Um�z]%�&R���=&���g����/�7\�����0�x��=��5�u�����k�p�����.��=�u���M6C����h<�|����C���� �e��xk��-��7�`TT ]���1�='����&Yh�����:��[��i�[�bB��m��[c�+?4 ���O���h1��q�a���c;�f=�q/�����D�]-_���w��r�]U����y����Q���F}k��4������#[NdIU���SPT������0��i��=�,Y6I7��������2����%�f����)m���ZQ���U''��& �2jJ��x\��f�����v�;a��(�������{�N;C##���S�����Q����'X&���F���=p��M{�
.<�A��w�����������_�v622222��RC��W���)�������PkQ ����o���i�2�K(�K^F����y��[�hvG�*���������<E���k�112��<k��&���~����0�%�\F3�\LT6��6�����c�8v`�Q���j���5�jB��W��>V�Y�.v��4�wO�~�-��/&xv7�=	@����W2�q���.m;���l?\�88��R����� ��4�l�Eq�@���v.l����O{zk�������}X;��-5&/j��e� �o�7�Z3���B27!���U	����nJ^�D�	T����6�)����_�X	m�}t.Pm��yC�/��GV����=��#��p,�_d��\��R��mr,���PQ��{w�����?W��<e?u�3� �o�7]���1�L������f�������?g�M"�7�pQ_�x����sVl�6���}��B�>�9~]�n���z�����c���{D�g�jn(b����M��|x�q���:~Q�W���y�K�}�y���4�eY��D�V���DM;�(��U��^����'���D�\�q6Mi~K�*��|��8(S�r��5&�jE�#[W���E�DT&(�(������,�v��Q�Q������?����L�����0����kN�A�1���@Q�=��fun���>1����_d���L�_���Ys�����T���K����O��yL��y�BB�Eh]��(����o���D��F4lw��=[�� �K�"J#�������'�s���+��JWJ��c��Xt8�M��8���
R�����2R
��Rj<�������Q�/_O��_������6s��o�\J>d�����������{;�{;���<����K�Y�u5������U����S���]O�����������i�}��8���*��e�p�dKi����%J�O�
\�0���yVT8�"aZ�8
�R��)s�2���T���6p��T#�$D��d�h>�B!�B!�B!�*��(�B!�B!�B!�U��7����#�7u'B!�B!�B!�~#
!�B!�B!�B}x!
!�B!�B!�B}x!
!�B!�B!�B}r��n���Q=5�o�M�x�'zsbbbbbb"�On&]�������Q����2�%����B!�B!�B��b�uo*��v�xtr��/�t�H�X1����������J�1�SRxPPa�@�D���z@uF���e��^��E��.��}�Q.����^F���1�B��r�.gJ[c���VT8�u��	`Z�@��EB�x������t�e��$E�������Oa�V�m���l��(^�_��^��j�qKU^~��+>^9!�{N�gg1�_������.���cN<�Q�v8��N�J?��<'+�uA�� �37`��u���_u#6�[q���}���kw�b������� �7h��=���-����7�}��r�~E� u�R4 �����w��5FU�?�J�MXy�#E���?VNd���.������i��AI_��0������zd��������V��H��T��.3���'
'�Q) � ������BM����{�PH���6�S�i�6x�(����T��/k�T�d��)v9S��?L������vN�"w"*h�/�Zg�v�uN`R���|���6�8�[~�������nNWx#Fk7/�v�w/w��U�>a�F�%sN��@�l��,����dx_�?�f�����s�$��$B9�yL�pTB�Xn�;Y	������!�����3�H��J�!1K[=v'2<��O��)���>~��Un���������@�6�<@�G���<^��%Bw�����w��)�!^N����r?SZ]F-pv=�]<m��b
�m4o���j�1��O��������"���@���n2j�V����BWV�]OC���c���u��~���v���-S�3}��11Q��[���q���bY��V_��6�>�B�s����2�H��aYL#���>���/�!$<�s�����3��T�!�S��-FG�8v�p.-6a��v�k�������:����.>��{!�-c�5��B}/�FDE��8��~HK����+Pd���Xy�-�|#cbbbb8;G�z4Co���_���
��q�U����B�v��������a�/�RY~��6v�;����Y}�_������������|��Q�~4#�d���y��zO��=9�������^�X���������T�d�\�b�3��1��T+*������DU�B�����y���N=L���z|6$����S��=F��[G�;��l�SQ��������w5�Mv�����]z��jrO&��'�;��|�a����q��;���C�6bx��p�������#���y�Zj-
������p���OG=Cr��6���M��D"�$�S�~��$�g��f��]�:��i�����J)9%Tu�
iS�D}�z]����n�{|�{�^>%9A��#'���y����� �#������������NO��7���o����a�B^�_���=V�������{	��� ��4���4�/u�����j��e��K�w@�_]2��t�����h���MMMM�-
(�5}m5}�"����s�N�����l����5�f���(9�b=�|�<���2	mJDh����q����-��9�c�x�?�T"�������s���W���j���������v��*�R!��hj�����K��[ZV�MF{����w}x������M{W���>�1�fD��9�Lt��=m���j�����3b�Pg���N��o���Y��Y���r�SU�Y$K,��=Y��2b�v3:���j|l����	��
Q�O�Kf���+v9S��?L������NN0-M@Te*�(�����T�Q��	`5�=zh�N�+~�������]L�};6C�E�[y�3�����{��uw���Npss
���o�c2�����r������@I��:��F?7���n�I���]�$�N����O�NJ��JC#}�6=

j-��n�GB�#�n���z��!�`���"�b[N��|5�K�C Tt��2i�^���oH`
�����r����;����������U���o�*��=i�^Efh�n�Y����	 �����lE���}���
<ri��Yf�Y����F��Ef���������
H-�R��
����Q���\�DMHT=0{Z��>e��$d��s�g�)�O���}G��;J[~�ctg��$x�wP\)@���'~�����}C?� =�/(������2������;�����s�6�������V����Z�ZG��g�RG�u�"�U�����u����P^(d�T���`M����p�=�s��Crro���n��H�)����)���K����$�y�.1��I�S��65�QZ�,(���4���l"��L�x�
��O�_Qk���w��=%���d�
��t(v
���<�Z[ad)����MSZ�DZ4
�(��KL=���B�	����s6\)�*����������Er����3���Yz��N��xq����1�=}B��cs/W����2�c���K`����JqQ�dg��������c�i�29���A��VA?U�� "�!T��j:Yq�
��g��l��H�][.���-kc'������3�l+��z �-j��m��X��Q��#�G>!�����1>��?2�(��z�M�s9"��jl)�2���������9q����E�����NG�x�D
����L�nD���^��r������������O�8p������:��;4�0
}=q�����,�AD�~�4!.��AirB2�m��G��zG(����mS���]��������K����Y������:A+��w$���6-2*K���My�������
Dd`d�;w�S{ES7	pR)K�T*��R)q<���B!Q]�,��e��b�rjam�MfQ�D���k�����!��
#�9yh�(�M�\?���%.��6��8�{�e�.����g�����Z�g�Y�,��A����mde1"��7�����s��Ok���z�d�&��fh<�Fj��) �j��K��o��������s��gj��o�^[1t��J.E��TlSI��!��gM���X�gl�������A��FG����oG���*��F���������~*N��*�B��.�w
71jd���6��d�w�8��O|�}�
���9��N�>�����o�Vv:���gV~\tC>�a�]]GD���.�>q��I�RR���d�V:����w�.���Y:m��u�N������r����\��=��|��-�Y�����qAaC-s#D�b1������xo����b�u����7��}r\�+����V����/��P�A�S����d���h��+j�#bFc#��$Y����E"bcB.^H��40����5^
%���d�
��t(v
���<�Z[ad)����MSZ�D�3
:N��������Y��g��~z��a\��W�~�8��Z������(/#K0�s<e��,����D"�2�p�����%u�[�X-����Xc�g�2����dQ��3J���m������QDD�������G�L��_�,z���3���R���5��b�%
J��HUj�Y��6jc������G���D2IV�k"�v�� "�i�E��1�C��������L����D1Q�p�'Ou����8;���|�����b�S�s��
-JUs:�W�=�'�`��m=V6?:�+����d%���h����f��:��7�����Q�g��:��W��)%������m"a��"�����w
��mZ��_*����6�.�013a(�#6o�^��	�kk�^�ZHD��Zp�O�����q��Q���m���O*�@�$b1������C�N���S^cr$b1�0$.y\�����h�O!D�kbk�@��<5�J]d���UZPU������u%�������C�^�;���<���XuEI>u.��'���5LgkL��jm��U��"BZ4MYe�����X���D�qch\�����T����{�#�xP�>cl��y��L"�q]s:����h	�c���K`���dU�.(Y�wF����].��+���1�|���]./$��D$�z�U��T���)�
A����T����L���]��
3V]P~}3c��]3&-$]V� U������g��w��[iU��������~�!w�Q�B�����>C$�~%��=#�~.GD����sY/�n���tDl^Jl_�%f�S������^��WiO���(^�o=�~;2)W�����x��������$����N���X�X�I��������c.$0-?�>���D��DP�*m�d�O�cGN����#^�	�����;���|����Ep��f|*���
�w�4����_,\�2���|�
L�k����7W���")��G��Q��������X���/-�@u��������u1������������=���Ys����{W�b��s���y!�	T���U8�J�����r���<��"��7^�?w�y��c�fu��S��Y6p"���5LgkL��jm��U��"BZ4MYe����������Oy�3 ��������/�����o��MSc~s+}�o�������e|��B"��h��yw��Jv5�N�x� IDAT��O��O`��1�:�������KDO�[��I����k���0��"L�:/�5F�����PnQ "NMgT�d&�g��o�)�XqFB|r^e��jiSs:5�qYD�2�j��l'��������������s!��g���Ho�E&eJM�pr���u*RF��@DUn��DDebgL/���A����t���U��ADd�g��%;~[�
7�!�LZ:�7���t����I3���o	Ne�(����o��\46}Op�i�).�d��K����N=5��'5R�Q�8�Z�������$3����K�����#�|�gW����<���/	Y;|�'{������,��u��M��qx������o#8[����M�r.�x��������b����
� ��r��o8e0��`{��g��n:�R����~���3\f9-'���X��^&���%���uc���~S
��}.��/�=�]����������'6{vZ�������d���Y������v��g%x�"��:���5���V���U8�J��6��1\^���M,-�����zy�!����?N�7��J����d�	��t)v
���<�Z[ad��	!-��2�H{F�M�_�n�����4��2bo�-���{E�0c��.�S�m�H��=NwE����;�u����ujT�?||��>+������
�\��CD�%��82�����~�>�c���K`���d%�.�[�H��3���j�ric�w:��j=��:IDrKp��Wp�k��K���r����.0�1a�WM�
� #>���Y����|^�7U��W����42��-���A�k<d�@���NF������Q3�)K�7khD��	�6���HQ�\��M?x��s����P��{���%C�NWJ�x����L���I]
��S��'k�y~nT���"ZZf:cW�t6�:x��|�l���Tk���0�J!-o�BU�r�t9�Z������u6p�C�����O��]��(���Q�
����w'����:��(����:��(���6�<d`G#�mo���p���������m#T�\�����_!�����Km"�����}�yU��G^}��V�	Z(���~�I����[������*:�����Z�%�;�1��ND���������m������w��U���Hw]L�\�D�[�k�����!��
#��lN�i�
�ID�4
�����s&9tii��E���m��)���xM~�u�p�3s�X"y�S�^��5��mc}If��c>^�9aL;���<��6���B������=���L��v��j�.O�($�&r���EAU�Wx ��g�|�}f~c���N�U�O���J�NU�>g����N��\�)���u���m�%�gS������A"�r�U "�F���m���`}�_�
���b��\N}<��K�����ecs�$3���}v������h�e�����[��E)����=$�Sz:"*=���� �=�>�nDh!.+���!���z�������Em[�t�U���,��X0��}�t�U|m+���%�L�D�K�k�����!��
#��|N�i�8%�IDZ4
|���!n��)���zO_����9�����1i�����5dI,���U^3�_�����t�v_���c�h���Xb���0t���"J-���8g����SvGJ�%B
�<V�tyD!�v�[�-
������-G/��UB���
R��U�tJ�#�
��U���N�d��F��p�����%iv���A"�r� ��mS'�Yr[-�|��I��B��
C`x��P������L�~��b�i��k��qDB�i[|������/Y���M��M&e�#��3������&�gC��vVU��������������������AW���fL;>c9z{pXY��FY0DD�IWG���+|��_�t=���_��1~s4�����>_wq����������=�j�S��^��Ao���k��w���AGf��������z��m��}'�]�x������qk��S�2SQDD����E;��<p#$�����\>j��?X���sA�o���*?55V��h���_�4����x=&��������~>��1(�C���n���;��x�������_�V���5����S?~�&S��_�v����I�(cf���>��_�t����F�+jDO�������!A��]�������{��-�y�������fT���P����c9�������v�kb�����
{-<r��k�?��N^GJ�Y�d�;�������������8���[
#�H!'HK=PV�Z5
�����~`�k	^[�C.��W������r��o��'$`y����/���w��,~a�o?����s:��'"�l�w���[W���[�15��@-��	�T:��U;�����P�JVa�)�Y���X�� �����������)�=��C�z?�u�L?+�������_;T�mQ~�CA;�R����K`��,�LET��U�����s+>6�|%�~<rtNg>������[FV�r��J�X�����u���~T�9�LO*K�S����6�7g���[f�1�y�f����p����ko���pza������������1����9A���:���~/{/�:���\�[���D��0|��3q��Y!����N�?}3l���OO�X>�����AJ����l������Z����c�M_}�7���'���y��*?55VTf\����}(,�&�������{��{��SV�f��:�#�7��F�Go�2|�p���_/q��_�m��\�����!=���5u�)������f��o=�s�����>v���?_,h���_��
"|�����#�	�v��R������8�6A��	����g����Q���O������aV���|�\2��[�k�����!��
#�H!'HK=PV�Z5
lJh���@���	t��yV������y�r]r8����yz�$���<s����Ce�Ce�qzZv�~��m�y����B�&�(pT��WXM���X5*i����*�/*��
N���}E!T���:Yq���koci�^��V��e~[���7��=���1vf�\��n�
���v��������W>""F����Yd����%"�M�n��Fo�w*�����W8vUrQM��J���o�*��=����5��i�������WD���T�(6���D�K��_��}d��I��	n�����%��Gp
KD��W�k�W6����DQ��}W�n�r��9�4��������9�J���y*��X"zq`��������;���F��������:���������>Q@��w���7��/7^�,����8G���'|���9�f��W�v�����
�ep+��x�
�K�����H�(�'8uI?����C1Q����wF����$�y�.1��I�S��65�f�����4���l"��L�x�
��O�_Qk���w��=%���d�
��t(v
���<�Z[ad)����MSZ�DZ4
�(��KL=���B�	����s6\)�*����������Er����3���Yz��N��xq����1�=}B��cs/W����2�c�H�'@h1�E��_�@�����{O���YT�*��
��������T���3V�=c�e���Gr��r9�mY�8!�,��L��hg[���lQ�D�hSM��v��z��<����\N���X���_���aDqg��n�����UcKA������pw�E����n]-�8�?�Uv:"�;%*�h����fjw#���v����������?��p�~z��3fvD����_|�����P������
�6�dI"j��	q��
J���o�x�������M���w��F��z�B.��O��f�fvj�����[R����+�����,�n�7�QKD�����+����n��{y��m����(l�0�6�����o[T5
����������x.�R_�R�8�T�I�R�xR)	�5��J�q�/�X��ZX�@w�Y8�`���5�yH����*BN��;
v�<�{}`���g�
{8���{Y����/����7���}�YgV&�}p�/ ezY�C���������z������ZD{���r2u9v�RFj�_�@��������iA9���o�����e��/��b��s�\������CP���R�1./64������������W���7����2KUl��*
P�1��
2���T��?UT��e]\�nb�����m���n;��q<������esD1f�\1|@��S����tf��������N�a�]]GD���.�>q��I�RR�Q���t���}��]���t������LQ���k���+���{z�� )[$�����)3����*�*��<�b1��������
�=��C�����f��
�+|�~�����W��W�5�q��b\V���y��|`�8xH����#�V����'{E�q�
G�����IV�kja����������6
L(;3�D��$�:�������a:[c��Tk+��"����iJ+�H{F��C�I|��s�9K�l���Oo�<��K��j�o��^�t�����ed	�z������91���AD[&��~�����x+`�E�<��@;�N�P�(T\�J���m������QDD�������G�L��_�,z���3��oD���5��b�%
J��HUj�Y��6jc�����^p5���$Y�����mVv�������r���+/�^JQ�d�/bs�b�>��O.����]�LqvN��<�U�W���$�0�Z2���tD��{8O����8z�l~t�WP!'�J�[�)�I�f�Z��""��
>|���p����w58�R����,K|���{X��G'��n�����B""C��-��J�'�����LL�L�����[�W�{���������u����5�.�g\vtT���Fy����+9�XL����"����������XLf��K�&�%2=;��SH����6�$>OE�q9��C.��_�����.��.�D��Q`S����v��^/�Q���~�W<@-�>�x,��+5��m�����v�q�^��+J��s�,8���a:[c��Tk+��"����i�*���g�F������8��C�����e���xM�|�������qc;���Gg�������{����Z�� 
	�O���dQP_�*���r�_����������r�x!1�%"q����Z���6�O�HUR������^�	>;�k�a����ofL��k�����J$���Y�"�r������b{+"�
�Wv3�CV��7�.5�Tr��70�g�d�������g�������qSs.���
�����K��#"����y�������0����m���5qp������#�r���`����+,}�MNH���>m{�D|�����,�$!.I���1�>�B������H�MM�����6I�D<v���n�>�u�0��>�+����g���a_��i�����`�|�I#����+����70����v�>lqs�oo.��={)5l\��~O_�E�����
TW~�kL���OX��z�;�/�������'�O�5g����wE-��;w���Z�yK��\bW�oQn����\.�n�a�����U�R7�
J�����1e�_���n���d/y�+�^��T�u����yN'�E�q;n�j3~�����"��-k��$�:�������a:[c��Tk+��"����i�*���gDwo�.X�8���1��g4~q,8��sm|��m���[�3|��ml��/��_	�F�t���$U�����}�}j�KD�q���x-���_"z������H���,-_����<V�tyD!���[�-
D��)x�r�	��%�[f�8V����W���Z���NMk\����,�I"*�g�S����������s!��g���Ho�E&eJM�pr���u*RF�sU��*���1�t�z��>���/�V���I��_��p��m�+��� �2i�P������E|��&��+��%8�%���~W�];s���=��=������
,�jSz:������H�nDq�|j9t�&�������{�W/�;J��l�)�]=O����$d����Y����Jo"j�h��76=����#g�����l�+��6�����a�v��?�������7�����'�u���$�������^���K-�[S��/���,p�����~�c�'z���,WD\v���]��{�M5d������T��w����SVc$��&����i�����l�o��~�f����.0�?�m������������N�Z"?�|`���V��\*�Q�(Hc��?�`�,�
{�����Y�!����%�t%��X%������ob�h�t�����
��G��qj��
T*���%�L�D�K�k�����!��
#��|N�i�8%�ID�3
l��Jw������c�O�{�o�/��+�� c���wy���@h�h�@���q��+JFg�a����
x�S�B�Y��\�Ya��g_um�����"r-9M���_n��;�a�E�<��@����"��)x��d5Q��1�;GD���-�I"�[�+�"
nx��}�41T������=&�����!d��_�8k����w�� o"�r�5 �0126��idl�[������x����w��*�_�!�9�f�S�Lo���D/"�m��������+�~�v����o��$#*h�B��/J�UUu�R��;���|`*H]O�RXXX]��>?Ys-��s�����2�	������������Sg�<�Z3�gm��U
iy`�J�3����:]N������kR
P/�>�x���lD@�����zW������;��pE�	lD@��F�	lD@��F�	lD@��F�	lD@��F�	F��aaa������������5�}���|�����K]`�>Yy���F�����������}�������G.������A7����o���������\�
+zjaOA=���x�&�y�/gk^}w@���&�56yp�9�����0<IZ������_s&��u_��4��5��8""�F��p����?�	���z-`���2��C�B��3:�������������~<rtNg>Q�QA;���F|���<��u�9�]�|���E��,zL^���+A!��|kc@D����o�c���M�O_��e��gi?u����A7���?�g��=k��S�� c9z[�����W��P�M�zv�E���;��3o;x�GY��=gK~�o��;�&�W��������\����u^<���q�x�u�nYHD�k1v��w�_q/��g��VnfM�x�ix�xxg[���7
��u�hw�A.GF����~���������}hID�d\��GI�Cz��?z���x����j����*V�(c5���B���Y���z�n��������r��n����v�Nq=��h�|�F	�7���Q|��x""���������>Q@��w���7��/7/=���`l������G.�by���0���:���$�x&M����F��"�H}�D�9���4j�����*�K��QB!I$RU3qY�;��5�upv��nF���;y����,��'"^5:�f��~;*y��,�ADz�M+A+��w$����lZdT�^��������t�h��������zIDAT��������{x1RBD��^��r�������������t��5N"�r�PX�=�JT��df���)�H��,�El.QL��'����S����Yv�����z�}��������J����k�d���Fu��L�{t_�Gvn���"�b����MX�x�_��=�t�3f���C�h����)ew�x���LABva�z����I�"��LZ[[�|�C��P�Q��I�v�����}��4!.���h�_�_^[�����,����������<�������~��:����7;M��Q�g���}��A�~���A���[������2,�2�WD=��������e/Rt��t(�n��g�"�e��f������	z8/ ���)5m?��u�����mD���O��<k����{��Zuw��0/�5q������������}����S�2""^�o=�~;2)W�����x"��+���}�^���o��# �������c�Sw|>���ciDT�O��d��9NY2�YC#�L���y��G��D��.0�1a�WM�
� #>���Y����p��}~h�����v�Y	^����}{pGD�&�Gd4}�H��o=_�� �Q�V'���Cgmrkn�/���w~�"�;�������A�{�&`
@s��6���f'$;a}��n0V��.�w����_�c�gb���_>44f��qj~�����������S%������U�r���DIEND�B`�
patched_pg_stat_io.pngimage/png; name=patched_pg_stat_io.pngDownload
�PNG


IHDR	���ncQ	pHYs���+ IDATx���g`���3��	z��JE.�@P/]Qj����"�z}�� E�t�R
�"H��)!	i�oI�}?��d��3��%����'q2��<�9e�l!�C��t]p^�X����BF����5��Z/�@x���1t�*K"oU�U!�MY�!Ah�����w�*[��U�Bx����Kf��T,l��C�&(8l��C�&(8l��C�&(8l��C�&(8l��C��MP��[���yY��L���T9���Y��F���Q^z��\�_�554�
c�����$�����j����b�WD���1t�F1m��B�e�����Aa��M�j�M��aV��+�^��6��2:ly�L6���L
���������	{��X�\�Vx40W�W���[;\��(�N��Y,�r��p^�z?����.��4'�iT���m@�UF�r�&��n���vOz��#q�����3=*� �6��������|�!� 7�J�ux�����l](+��������,�bX�
#��\��f�-9hx����u{Y�]G��O!�z9�����<���t��pT
���,l9��n��u^
K���Bi�|����������.��STt$E�h����Ut)��.5���]
�s�zQ8a�%B"��H1,�Q�%N^'�2���������Uv��5y����n���7M]�E���2�P�t��{q��[�U���p�a�*/%���
_>�T�1gs�����9)��n�_��3��|����W����qbG7��/�eG�f�O=�Y��������"cS�4��'��/ih�v�����1_���yn���_i��S��m�\{2.C�L�9�bqX,��0u&���S����=���gd���0�G�I����PF��k;2�������S�������/��Yx����"DV����f�4��1���S�p��l���
�E:�N�����,Z�����d������F��z<1�j�N��}�h��z�����r��mC�1�m�b��[��N�����N�U+��~��RN�}<��Q��}��s��sU�*3)����M7�[/N���2��L6�t���i0=RT>�������i����������������pfyO��2�3�	��K�����O�o��]z�}�sxB-�^�zI=m$UeN��a�!�����moa�.{m^v�S��%z�l�[i[���
N�8W��!�F�����������\�[Tr�:���o^mP(���yEa�d�5�w&�������N�d������+�]e�E<�]��&�H�n������\T�~�E�[x)�Q��K.�7e����(�y/�)i����w�u\\iCkJ���U�1#������	$�*��B;���-�E�9��E��7����qljS!������/��z�k��M��4i�m���W���h7�tFn��Y�;6k��c��o�
�F)u��T	\t<)������;D�)GS3��~�Km�5k���_f]X�^A�~n.R��kB[FV��U�UO�D!���1������i����_����B%���������4S}����C���:�~�L��FM�����,mQ�o��y0�G��G����]_�Sx��������gF����j�������C�1�P�����_��6Ai���CBGH����;�F�t=BWi�"o>�`��C����W�oc����]�����L���<�~��A���W������j ���2��(�![��][3��I���;�Lx�m?����^���9m�%��I6�/!���
�E�,{���������=��6{V��wR��Z�^xA��c���)�_q/�����/������P��Y/�������!;�]D�rA�b�/����0N��6
/��)<�%j�l�[i��� �r��)���R	��R
��_5�k���f�?��!�hN0q�77�(,�l��3O�oz6E��]�~�U6�A�E>0���(m���������-�����
����d�V�����'{9fs�R��,�=E��&r��X9�&h����W�����k^��JeMf�V��MOBq��1As���,o������o�_�	G��{�8����������W���s���������f���}
[[�+n)�~�#'��
{����oB������]W��1>����2B����?s6
����Y%��r���<1���^x�����wXv]���������?��
U���Vv�yJB�ft�P{qG��(�]O�5�<�������gV}��Q���~F�m���W�����@'���ic�������C�-&��j�(h��{�%��H6'/!D�]G��Q���eT��i�Y�9��|�����Mpe
gD��\�� r�������*!U����xMoWB���]/���t�L���."�}A�b�/����0����/��)VX-[�V���(;��C����(��(&����u@XJ~��=\	!�(�|~Gu��v��a��]��(
%S�������	!D�j�y����7`��Y�X.(�����F)������e��#H+��LiJJF9a��8������W��Y��>�,�=E��&n���Y�Ib��^��|��co?`�x+��|���������-�TuS�*y���y0�yc?����O��p\���o����`}���������o����D�����V�]�o}9!���M�O��x�N��$�==Bdu[{{��D=0I��yV����*Oo�����7[o����G������O��D#.6�����3�������<��w�V����*�?�O��Hq{�M9�."�;����F���N��+����Q��e]��y�_:����Y�_���=�x)��'�����c�6������s���sW�_8����V�W���W7������w����-(("���]A~��

�����l�$_������5���x{X�J�k��
�������	�%��H#m�Se�s���M��@_6��mnal8�;gx���{��W�V����:������JGh1$08�*��W@!D�������i��Z��.���W�����_����Q�>���������N7�����F�q^"c��a��)i��U�F��`�uD"��s�o��"��>������I����t�����'�)6������iy�����������6rO�=�n^s:h��g:BaC��
�s�����������
���j	���s��m�o�~�-�o����o����;�\Q�*�\./�}��'���{_%��� 
l�����N��n-zt�_�����o�<���:K������GK6���:Fi����xfu������S7.}��)]�n}b����^���p�����l��tD�o!�0���
�����-��{�����?���.u��^*�Ac�8�H�T�Dv�a�6���/s�`�[do�A+��j*��X~�l�[i����!&����E�
x������V���jxu��wG��v��U"�����i����Z����b��d2YI�8/�1��V��l��/����Hz�uHb�W�R���b��&n��
��eF��h����'�[������_H�[�^]e��?��L����g�
�[*..!�(���t���}]9���|���G���m��
?Lh&'�]������:4�|V"9%�����;w��}:�,n�v��	���i��C�����z�����B�x_���vQ�c.�}
_�R�]����w��D���>`||�����_���{��!fO6n����!g8"J4���-�<�����;������,��a��V
�J�^��!��yv����,�1�����_�Q�A�������^1�F�1�<�H��0�<*�a6��4W���8`r�����p���������
������FRU����N"��lDTxmsS\r��^����>{��W�����Ib�M4�9�\��b����L��O���!D�~lO����������/�D�}>T��f>*As�H:�:e���V����n-Z7��$2F��,uXf��QNXe
�{�%{Y��������Z&7��%�'��@���c>Y�z�f��G~�r�����h	���������}�4j������R�����+!��O���R�9[~���}�&��C�~�tP����=�b���}�un{WBH��u�Y������m������w���"�����m�������k��c������N��GqI�A��P������T����["kN�lF����������������ys�������l>��[x'T�{�y�1_�~�k��>!K�_�5����������y�<�NG�
�F�a�!�Qd����6Y�����gc�������n�J<�J�(�!m��5����C_���A�6}�
��������[�^<(��2��H6�/�D]�V�s����lP�nM���������t�^�I�Z����|""���E���{��UR�zI9m�Re�a�$������F�0����
/;�)_-[�V���m����s��7���1m����!����=���?Z7��������7lU6�A�E>0�~xc.]ULz���V�]��r���-	��Kd���)mXfG�('�2�{�_��6%m��}��{����7���D�IT���
���|����~��V��^R��L����.�gk�/�\����3����?����������|uVb��M�:����>��*g�PC����w2#�����B<����oW�d�5yi��N��b��G�)��MH��~8�(K�J��}�����^z����2^�����[�����Bk����������}o�,�?�^���:����.=�U�%]�eQ�R��
/9����z�����8K��L�������d+�6�������D�+
G)	 �k/�hp6
���C�Fq��q,����>�	��9h�������b�.h�b��[�����J6�x�9F1�C>��Nb��0?'����G�qw�zQ�ws��W��ds����;Q���[�$�ju��?�('.=����5���;|x-����`zd��E����bR]{�}R���A�	�����Fu|j������^/�hH"m�Qe
�����<����@_6��-oa�0{m|�Hg�=�
�e��J�v%�hP8�\i��B/���.���,�*�
s3��"�V�c���"����lO�Y�l�� ��y`"��QB\����Rb�&7�������Vx��Q��a�ssw3��/��L�_���2/�{o��O��>�Y"{���l��/J���U�:mE�5�y"'i��UJ�O��vd)����BY�]g������-���N�e��%�CG���[11����1t�*��:���^���,
�(���1�NXe�s����N8,K�������f,��x>���:��@�2���w��x��8�W��V�U��+�-���?�s�ZF��Z�J
�����,���������kU���
���/��R��R�08�N8,[��{���Q`�\�-�1TE�����V-��I�
�6d�s�N[�L��uR{K}G�}����G��c��2�V�
o�p�:M��a��kU��@S��h`���0�NXe�s�Z��N8,K�������f�u�`�Q��e>G����K"^�9a�����[�kU��@S��hH��8a������1D���^��x�b��o��MPp(���MPp(���MPp(���MPp(���Bt:]E��0�"6A���Q��e>G����K"^�9a�����[�kU��@S��hH��8a������1D���^��x�����C�&(8l��C�&(8l��C�&(8l��C�&(8l��C�&(8n�z�;���t:�N}tR-���[-����=��R��� h���*,/������+��������C��]C-V#c����(/��Fn���3�d�����S����D���r'�@�p\����Z%�q��1I������;v�~Td�t�����3=,t9�#�����6�NQ00�����'������v!��xL����1O�+5y)���\�H��<��7t�_��������-�����-S�?t����M�2�������(�YS��;?D�N�Q�+����P��)��\t����W��������=Ou��������e��� 2�������-��E)a\���1��g��M��r?)S�����qx�����DS.7h)Jdu�,�y�A�R��|r%�-�l����j/��%����g����<D������?I��@S���xh�%����]}I�����x����p�`{n#��X�&�a���2��bf"�3"yG/�������	 �a���t:�]�5xC�����{�~��N��O�J�E3�BT���6����2�����|��*:������~z�>
=�1�wX|����SG���5t���j�����=���7=���}~?�����';���v���r��������kT�Y��a���S�[�xY�^������7�-�/(0��'�������Ve�2��u�{���Ggr3W����E��v$��S���V`��R��ixE�l��%�7x]tNNv^a�MP�F�e)�EIE���/��z�������:�\���U��9����5�r,S�}J��M�w�,")����&�C�J�+���
_�h�;$n �Vk6�*�E�D���KW������+hJKB4$�RQ�0�v=ZzI,�>�AW_Ry������dBx�
�{==�GUt�m�q�D��������(��D]P���{s��*	��>>��Q��z�Fg�����2��|��Mj��'v,�}��/�4����t:�*|D���������<�:��?��B��: ,9���c�>~������'��P�
�3�u��k����|qt�%]���
gf��R������z��q���leN��+G���W��r\U6����4�P|�����,N,S�E!�m�\{2.C�L�9�bqX�l�*�VF�F��m�����s����_�����3�z��j\MIOZ��j�Z�����&79&���|*������MP�N�: ,��9���\T�~��T��o���Dbr������L�U^\������*����NNa�N:��������
������&��.�Y���4�����O�wXvM��i�+����Um��)��&�t��0�2���Wo>�tn���U����[�w����7=B]j��;���l^qD%��z��N��H<2{��+�������e)���/��Y�DswUP�����/\:E��c*����-^�vZ~CuwUW��|,�6��e��8|Q�!��E".�Ax��E���G.x@C#|����J���
	B�T���]���^��Oq���T�o8'��-�����r�������������z�&��|��w������F%����G���e�~Fd��FL��7�����TJ1������_�(����<L�c����E�y�\�/u��mZ����W���;�Y��������pU����O�}�����h���������[���WTy}���9]�j<$����W"��R6
tg��7$�"���1���)UHl\����zh���s���=?�6���V���~:��� IDATt�����w�5~}r����_�*��L��E"�ynx��O��D����+l�����?�N��I������Iyk���U�I�i;bU�1��������h�����x����t��h��#��T+�V�jJG����T������,������trn^f��c�O�R��
L%O�&1!MKq��w�|Z�~B^�^����������}y�����a�<�R+h��)��\- �C����������{�>NIK�sz����l��0�2��^�?tj��]�"sJ�wx={~�5�����3�ffJx)g�2�f09���K�d���/��p[-���!��x��q��q���:)���W����QZ�����H�&�pT����7
���6.��_f�����
q�,1I���3��!.7��Y��Q`��zv=Z|Il�}���$�|������8��s��� �a�������o�jM:�
����g�`)e�Ybj3����{s�������0�������c����]9����
�n�Q*�?f����������7�eM����ig��Ls�c_��h}W�R^���dZ���<Z��P�W�����k��q�&�O+����O��b�=���������4�^n��i����?��*�9>	��<1�I����PO���5��$Z����������?0|�S�|�YuV��������0������O��u"bNn+���_��P�����G�����+S�=�\�yjN�R05C�����uo�[r��9���|�����R�{W
����]\eY�����������w,����l�<��U������W:v8��XU�����R�2U�_��������/�v��25n�s/lpM�0u��~-��g	�7��+ST���%o�~�7�Q�a�r����ea�V����6�M�����Q�l���.���>�i�z�DV��[��(���-� x$�L������%|��DC�!�"n�6j�i#j-Kdnm��]�4|c/�W*���hH���_��}<����rA�Y������
G��U�%��5ip�:K��N,�m(��M��4sJ�}���	��Y�q�RB�g�����>#2{j3����{�rOS��Q����"�	b����B�����<���2/����o����D�����V�]�o}9!���M�O���TyJR�����gQx/����������>�
�0�05'��hl��:U��J^��{P�J���?�����Q�����nko/����#i11����W_;Q����D�w���gS���n����xS������)n/�i"'�E�X!E����������\	 ���}|������v�RV��;f��_���Ry��y��mCb��_���[r����E
�gh	!�0T����]og����;���f�^����{�O��Y�\!g��_L��h����Y+�=�<���[��k��\�i,>��;l��jg�����D�����vc��S�M��^Z>�2�Y6�H��������1�-��E!����]�U�l�?l�g����q��e22�%E�b�N��f�W��h�_�~}������p��ef{�2|Q�!����T	JQ�hy"sC�h������)��s<���X�}������|�ZL8��>�R~v��w����QW�.�O�	*!�M|�f-�������(���� �3�����L��7����i*g1�������n���d��������{_���4����@�XE�*C�}hn���%{�:�*��_:�m_+���"�����2����>��0-����=�3�^M�rp��=����y��������S/�VkG?K�������/���iJ���f���(	�L&8�����i�AII�/]f��G��F�7�=���zh���Ac~*�m&���,��N-��?��I8���W�IOI�R���q�:~��^!�w�,��$|��������!�o�����%���2|�t���iL�zud$���lU�\��G�=nFH��q{�nzJ�W�!�o�V5&�B�)\d�����~}W�s�WA9+������F�(K���V~-#����/���G�3��y������w��>�S&%7�dMQu����?�����HJuy��L]RB��o��/=�����
1���$�/mD��l�$*7��C ��M	�g���������s���D�oX����\g�U=(��v���R�d�9��>r"�����������c=%���Dl��R������7����i*K1����������_�4����c*Bt��I���i)�h��o�/��y+��{o_���i4R�r%���Z�T��\rL�v�f�{�
2��HN��AS����Q������h�������}Z����/$��s������|&�A|����-�+�VY}��o���7����~��L.�^��;w��}:�4|uc�v����W�Z���%�)
'Q��\������O��������~�����;����2O�T�n��T�����^����Q�r�;����j�;6c�?NL��]�}z������U%Wp����V=����Y�.V��������ZB�U��R[�:�V�xV�`��,�0����:-�y.���qM]��Tz	)U�\��-h���)�aG�sM������^�;��������������3�z���DK	/�,[���&��z�kv��s% ���!��(��|�	�����Ps����Ey)��)���#����q�B��W�������1|P�a�!��}����Q��/��
��@S�(�44%��]��_[�>�qV_y�`q���9��?�P�>�[���l�+W	)�0�Z���F&f��x�Q�v%��,��y��H����0��;z�L�7�xT�Qm���������R5��x�?�'�D>L�H&}��K��g2s������i��!S�\:�j��L���g�\�_H�������R�\Y��'r����w�����PB��y����;���m������w���"�����5���*���N�<���\��s�oI/�O;���N����\s5����MdD��������i��m��;�%�����U�����3�5��B��?���qzA{W��r���*������y������@��	��S����%�)	�I��{�9��{�����l�������a��B�
�}0�7A�;aj��/C};lL@+��o�;���o
�����D�-���L��K�%[��7fp�n]z
��DbAF���rBa�v��lj���3�m�H?�1^��=���6���w������ufA[� �d�����G��o��M���]�����K��C�aj�9Qu�������>~S���S�����V���z�^��L�����S�kT�2?H�^�Y6
�(����^�����Z��b��������_��ko�?�?����o�z����ei���.�����	��	
��J��	Y���K)���`MQB\�L^9kDp���C�o�����8��W�-Pe��%���
_�h�:$j �i�E���9�({_��^n��"*a�7�W2����hH���a��y<���X�}������|�A8a�m����hg���)�����F�k�����i�JH?D!��lM-��1~�]B���]�������7������7g}T% X~���i��2|�xQ�F���'������cNn������K������h�����n�J*��z%1�P����QGC�=����oW�d�5yi��N��b�>xw������H�-�ju�c���z���-i�w/������jej��!�
����3�]����3^���_�g�wW���l�C�K�y'3r����!�^��O����,�*-��e>;������;��X�����/m�RTV���=�gi���w#�����;�&(W'"����/%�ir���;h�����`k/Z'���Z�2!�
�w�/���.(Tg=�yt�����������B����
�����
����U�������������/��|�nJ^A�:�����oDkw�C�!��0=�L\�*_�����w��)�
�b���}ABd
����<;���(�5*j�gx)g�4�"�M6�z�~p.%#f��Z�c��������Q+�<�b�R_�#��o�9x�NB���P��u|�����S�%�8R�E���QI���/�Z�JS�>Qk����_��K��E���Cb"a*�	g������/��
�c/7<��#`����J	��b
	B�T�����_��Oq���T�o8'��-��qQ��Y�L�b�|n#��X�y�&���C�s�|���lV��%)%�)<�y��/�v.��^��9��*�'���i��2|aL�BF����5��Z/�@x���1t�*K"oU�U!�MY�!Ah�����w�*[��U�Bx��������6l��C�&(8l��C�&(8l��C��&����*�N����G'�b�����������,��n
�F

���R?xK���8/K�>a��?���5�b52��_����m����=�M6
J�X<E��NDi/+u"JS�:n����&h���*1�[��IZ�?�fE�����"��k��o��a����M6n���t����%wS:���x��n��~�R�����e��M������1d����;����W�?��|P��������+��2������W��X�F	��� !���rO]�6��j����������r�����3�T7��^���� !���g��7�y�m��q5B���'��>^��E5�C�W��/~9���R��r����!�D���!k0z��B����H�d��Cv��}�<� ]�Qe>�^��)������a�GS�D��J��K������g�����B��AH���E[8,�V7����3���"��3�D
�1H����a�S�����D���7�
��e[�0�WR�&f�!����L/��QT��#���Z:�{*BE-�"GX�N����\�7$*M�p�����>A���z�$��X4�(D%��i��Li/s:k{Y����*	`��7S}����������:`�w�dg�]���'R��D ���e+����~H�F�����=5���B�Z�d��}�t��TrA��W���� !DVo�������B���J7��/dg���pD����>��8�����z������*s��Tk����~����m\���^uk�k�
G}}z^������C��.�:"�gP�����W��/�/���&�'7�����Tt~�HJ�����M��T�n���u���/�H�:�����O��xH���a�ESr
D��J��K��A4�������������llgQ����h�����QZ{q����A\�R2J��`#��I�N�p�)�d�,8�6�s�*��	�7�
��e���L��4���J�sHD	����q�t�T�2�
H�f����-�*$ny �U�//�T��}��
@��'~��������`z�Z���t��ev;�j���"cS�4��'��/ih�������_��������s3��rHC�C�:��P���V��G��[�U���p�a�*/%���/�\Q����W<�V��<�r���~UK.�Ue���N������O���2�^������'�2T����+��:�&��oeTn�;���:z;9W�L��uJK}�9c�������������v��;/<�Pir�c"�{��rqhMi?L���D��RJ�C�z�Ee��]J��&hI'r��U\��i��;�K��OrO������)y�
�d�!��%Sw��\e���^�n8���G�55q_���_�����|������s��]C����wXvM��i ������'������� !���"2�������6A�
�9%��D�9�R/Z{q_�Ve�Y�/�|������������I�����,�#�!#L�q��W�o'|�e���n��=�k���5�
�q�	=T
S}�A������7P���P�]�UA=$�)9a<��t�0��)�NR�Jc�co�q^�GC�\i�����!�o���%|m��G����i��^B�k�� .{�_bi��'�;)�sJ�d�.8�����	�lK��+n�eYG	�C4&�WRk"j�!��|��w������F%�:����g�`�������?����	���v��o��jEq�a,>|���B�n��?W�K�8�G��>�f�U6j��{�.qc�;�>"\U�����w��k������9�g�����/�S���C��tm\������6~\��K�4��a�^�����^_�0�>��T!�q�7cL����;�g��F���T��Z��W��US_j���������~���*3U�X����W><��Y/B���<�e�:lT@���h;ml+���B!.�K6L�[;�m�MzL����!����
%E[N�upE�[
������E#��&�Z��WS:2�Nd&�N���%�_���~��Y�����.f��5m8�����M�\:���;��������W�v�ja�.���p�^�^��2��'���i�
���!.���h�r�����b\kv5>�N�����K(���h�������n��PK�\|{���|^5y���)i�wNo����.J�(��\�Re�Y���?tj��]�"sJ��������y�	��}?����`Q��T���i�l�%��Ps����[C�}o�>�/�/�lB�%wu��|M����|M��i@������q0�8{hJ!��	se���^�q����+�U�*�����(g	����(&L����^kw��+����9H������%e�Y������Y��C,OL����[B���6���[�i@�R��=���<�K�$�0i�h�S�(j�(����(+2eg��������r~w%�J����T�N�u�]���o,����+/���
��`��������������O�����-x�����nMQ�������Mf�V��MO�*�?��{R�e%'���if���=�\)�#S�qU�s|4_ybf�2
A������5jJ�I��aIQy�e��O`����������QU	�OQ;a�'A9:�9�-��d
gD��\�� r�������*!U����xMoWB���EA�7��l	��l<$���*c�4'�i�>��T������7&jn��$�5��c(�;`�����:�P�`���������v\YX��jsb��k�.��".������IP�7~U�g�D������]��9V�~8�x@��%�rUY�Y�x{������U�����G�����+S�=�\�yj�a�D9T
S3d����_���;�Yr��9p��{a�k2��;���h)����,��v�e��O��s%�*m��vG��mY9������xH���a�QSrLRb����9��r�� V������2U����=;��:��7�m���i��^[t�����$:H����^����I6�����@NXe[^X����y��+)D�7�)!�!��'xH�f��'J	D�����o��������OEh�(G�|T��@���$����o����oh,��L-��n>O$<�K����{�����@����#���������o+/�}���"u�������'	jN�b��kw=MJJ���n�����r����_��+;.�a�y���m������p$-&�Yo��J������]�C.�M)���]+r��M������o��y�ib��>�N$K'�&_���E������x{����*�t
���|�z�[��F��f/����E��3���5��!���I+wy����s�����u����?���Q%_+�K
����s����'����F�U�VB�.X��
9����b��G�F����Y+���}�������F�vAq�(��6cD������Xi�n�/��z�����s������
�C/xv^�g�������e'����vc����Mg��d39�b�N��:�xB�Z�|rJ���O��
����%�������4}�|�{�e�����������xg��(�������5���9�RD@xm�De���qts���dG�!�;)�r�FYp���;f��zu6W~v[]XZ��1���[���4q�a-�������XQ�K9�uA3��&-�{*BE������
�cF�� IDAT��k�1tg��1�?�$ny`c�u�aH���As���1��������}�)��"�����2����>��0-����=�3�^M�rp��=����y��������S/�Vkg7���S+�}
-_����_��)*}/"P:2�Lp0�:Q��ssC�4s�S����B��|��N��K�%����8��M�4�)Y�e�Z�����p.���v5���.���_��l����,�[��������3gY�'�����Uw�����G�3��y������w��>�S
���.(�9^��<�(�~\���s�<Nc���##�����D�rAJk
8K�=nFH��q{8������H�����B�C���=4W���1?��/w1�Rt���U��I��Bd
W��,'t�_����P���<T�n����:
j���T�7��%%$k���%���a8@S�:W��^�q����+
����l�YOF��9�6�$�����6�y�9�����6���l����E�O�wR�=�}v��E��6`�D
�lgQ��������3YmNb��Wr_�������A	�9���Y�������OE(�(K1����������_�4����c*Bt��I���A=3�]}E�7o�{u�����m:�FC*U�����Qk�J�K���n��w���A���)Y��t��"F��b����u�6�����i��s�������"W�����I��x�T��[e���]?���o3�o�aB3��ziS��Is������6�����(�D3���%�)
'Q��\������O��������~�����;�}������yJ�Zu�����h��L�rl��h��}�#p���5O�����=�;�%��.>8W�oJC)X���H�
n]�Z��g�z�3�C��*{tV<�r�"���lC�gw���VtZ�������}�0
�J���.(�QWn�i���P$�F�k�R����E�����a�4uJ����#����L���1	�_�@;�T���������\���P��?�Q��|�������_��bA��e��m{�_J��?$��1dpPC�%nQ^J||J������(n������ ���XM)h�$�c/�8_a���������h�w���2em� L��L�F�O)���M����5e�:8"�@��'E�3;P��H�O�X���w����wcK���-`h�������y�����q;�hT��E	/�(�v�rL��8V�����T��Q����'1�������j�����OV�]T ��c����3���[g�k���w���_.T��q��[�3r.�/�u�zukUq)}������O~��e�zukz(!D�<�pr��]s��h���{�;_�Y�F�O����K�vdv�Z��n.���n������Y�z�f��G�������&2��VcM���}�4j������U�����Se����F!��^��8�����z�}~[�t���v��{L�uOU�q��e�)MJ���������
[�����������][6�	y�hb���A��o��
�}0�7A�;aj��/C};lL@+��o�;���o
���������������������)YY��_3�6+w��5��k�&�����J�#M�o���xw��?�Yg�5!C�Z/�@x�g���L9�Y����!�-�������9���~����m�O�-��j�������~�P�ujNk9��"/H��F�N~~������|��.~~�m�	��-�
S{������f�n��u���������LF����/H�2�,BH���?�Db�#.��l�j���}�u�9(��������b�v��lj���3�m��S�
�VHn��=J�����x�����j./5]�L^9kDp���C�o�����8��w��)�`<��t�0��)�"qs%���:�c�h��+iU���gT�2��%,���E[b��
w���F)��^�t����Q�[V�aI�N�{N����(!H�8a�m����`�������z%�bb��JH?D!��lM-��1~My��Wx��3����-�=�cE$�o��\b�����25�fl<q'%/_��sr����;.-F�;�S�������.(��>t����B�.��G
��l���]}�����=�:���Q�T��ab��/�w#1�@���������n���=��`���g���1�W��7�s0Ufn���Qg<��sI�n�(��
r�W�h���v�Nf�^Y��C|�*�����GY*UZ���&|v.��7A	w��$�)	_�����^��{.?���+S�F~?�cqw�MP�ND���[?^J���&^�5w��cye���^�N��{���g?
�L�����5��S�7�&(�hC��/��$����
����U�������7�wN%\/�@x�g��j�4o���)y��'W��������o�9x�NB���P��u|����%sg	�]��3�������~�g��
S-`z���tU�&�������S<�s��Z{q_�Ve���5��G������[i
�w�/���.(Tg=�yt�����!��|�������
���(�VPn����$ObB�?8���aH-�{����r
T��^������BQ���C>�n����s 7W�����0�Hls%�������Z����d+wu
��.G�F7�R��^�u����Qb�v0���Iq�)�d�-8�6&r�*��	�7�
��5e�Q\����SB����O��������RB���\P��G�W�������9�Z<��Q<�2|aL�BF����5��Z/�@x���1t�*K"oU�U!�MY�!Ah�����w�*[��U�Bx����K�{g$���P�	
���P�	
���P,�	�5��J���t:��I��� o���&w�07K��[��QC��������<8��R�O����rv
�X��)����n�u.o�x����6OQ�s�7A3��V�a��oL����6+����Y�]{~���@]�o�q����S���p6��o�����+��O��[���TaI���0�NXe�@��
��*��a�)��7����(%l�kE�1U�C��N���+�^
_>����q�����Y����t�F���JxI2^���l���JM^���;��42����a9����q�~R�2_����q��5[�`����:�%��o3,���(g�p�S�Z��l^��UA�����my z
�C�����%���\�y"��������r�����3�T�����'������v!<��F��t��y��`��B�=6���,w1��
�J�|6�����������Rc����l&����U{Y�
G>R�!S}����������:`�w�dg�]���GR��D ��s�:a�%��*���^���,CVo�������B��
*����~H�F�����=5�E���9�+k2�X�:v�����4�4xYDR��m��"�����������k���������]���E\��������%�^��=0�[��U�����U�^V�j����NE���	*����;E)y(��\�0�����V�*��6�rC��l����<�����J�sHD	�%e6uAj�������yc�������w���^%���[�_�����������>�Tk����~����m\���P�>>��Q��Z��Ye�2��L��)�G����{���K��oK0
�G�u:�N�
Qf�����.26%O��|�O�����h�K��e�����~�<7���/�4�BSg��2��c�����6xK�*����<�T��D\1���+����9���g����W�|7��j����l�	��i��������Y�X���B�����d\�J�sp���X'�U�����x���UGo'����q�Ni��3g�X���)�iCKQY�^w^x����&�D|��O�����~��^�*s���]z|}?�����3S����5�w��,��I_�$�����t$W9����,l��g�CM�W=�?��h�$�5���	�,��U!�V��:4�1Y�i�Gf�XyE�MP1d-��d��������k��M���
/S}�A�������:-�����k�GtL�q��W�o'�q�C5��+�,�>k�h��
*��[�w����7=Bm�����NQ�y����\�0������V�����+�,��������5o�-ZB���;��L����f��g���G���e�����(R6������~h"�^���'���KZ���Pi��sN�&n\����
��v��o��nMs�=|,>|��c�h7������n��MK�~��*5q�=K��1��q�*[~Y�����5��am�����|��}�G�����!Qs�6��xHx�Y?
�D��l��0n/oHTEN�/c�q�S������1&w����3�t��{~
m��W�\�+��������k����u�W�RUp��*��D,����+�N���!��W�2B6*�}�i��6���|�����
���m[�F��v���c���)�iCI���w\���G;��:v{��-G�	�V���������@�V&������>SN������ui9l_�YS�V"�^	��t

p�;w>�C�!/w�t�����]���V�!��s�:a�%��*���^���4�}�k~��Go������+��������
k���ZA��H9v�j�� Gx��.2���7�S����7
�\��L%O�&1!�ID\�v�Z����!uR��}���x<{~�5�������|�(<%E�!p�����VUq�5�a���,f�����)��K�Wx����u�5
�T*x��G�������-�Q�����������{�>NIK�sz��5KM���N'��e&�:���.5��[��Pqd�C�vK��)2����=�����w����k'�~�g���GQ��}r$K��+�/����	s������k���i����w�
�n_�36O��������]����Hm��|x�����yw���>c�6�B�I��\�]���w>�����7^�����.���T����#�W
|�2uf�����q-��_���1���0��3���n0�qa3>=v/C�L�{����Z�r�4�(r�1Sz��Z2���G1��x��K���<���$,����^e�@��2!� .�~~n����{7��4�<uo�����M���j��F�R�uU�V�W�U� =-���S+f�@x���1t�*K"oU�U!�MY�.'���\|FE�����;zo�o�d��y�"�={��i���^]���������w=W"������;Y��5��!S3���A~�z����; q��,������Bu���A��<��cp��_�?{w�����L�������BX��U�V��{����*��j�j��j�U�h�.U��7������,D���d#!�~H��LV2����:������	�a����W��mzK�������C@^S�F��Lo�WX
�h�����&?}i�3Q�F���xa\��c����X�I����: BH����3�A�V.�����{=�8~��9�l�||N'B�JE��>q���O�|�v�����R|�(��:v��rM>v����:��cZ^���loG��w��HH���Og���[���8�6��n��]���8�1.�P3;[=3L���J��f��������BX+��;�o?}����[������"m�f��6t��N�����M7azr�bKIZ�;.�7������{"i���J�0�zwG�I/��?��<{�e���d�)j�T�L��QF!�DR�p�D�K�%�J$���������d�E�5��e2����F����R�e3��kT�������7����?e��O�������_&�}=KM����X��QX%��Wt�������v�+���N[6~�]U�P�n�����3���}?�s����M�0�h�&�;8���5q�M��@X��)��<��*�Q6���W�+,a
�"��2������U]���3O5����o��6���~�P�&�x	6�;��WsMH����:����c��������/�r�<cl{BH�y���o������_��-�(�h�o����h�����e|���������R�T*z�uo�q'��H��o�!����TL�i��P��eKo��1�2!��O��!)G���^���qx��m��%|i���Vc��
��,�=(����wf^x'������d}9�E��>��,C��J
)��S��h�r��U�r���_�8B�a�1�O\�-G��N��kg���������[��~��,A���`�l�L@�F��k1`(�a5�t�_��>�]��A(%}��A��������_.%�2~��j��K+T������������yh�~��2����~���q*���%�KZ��Z�P��GOq��k'�N���<�C�V1o�B�Vt�]e�:���9�~�`��h���C@^S�F��L��WX�2T�Et�����4�������JiD�����x�
q���P�j��kF�J^T��_S��]��&����%X���4T�|L���"����P��VUn���.
��
=[��6e��|������}���]
	�*D�#E5����5����O���xY�8�[�7�"\,#�f6*�*�"1fc��n^��E�����]�"n�F������dj�*����SQ�u�nxfZ�!���~���N%$��}W����P��e������}=���	�fu�������^b���*vs�������Zd�j��b'�i��E������[�U���>������;�
<(��$�������$I���m�	���g0��2�<IR�<.���?
fH���$oT�QA�����5V��Sq����k��95|nA�J�q��!��	��a-�������u����z��:4�`��}BF���n�0�1lmm0T}��A��l6��f���(�$l�z�u�;O>E��C�	xM�e�j�x�����f/�Qq����2+4�J��j��xS���=��sx�'>�P��E/�Pu��|x5��'�>yi���n]����::��w�E��{����~n#�&V��y��3����^u��!��NKIIIII�)�*
�*��c�))?�E���2�W�rlQ�G�Nn�!�w����v�i�����
���m��J��G���V�������m�h�@!Z��+E����#��uv�<���7��B�jD$W7�I����DAF�Gmi]����~��dkm�b����F-��.I�>��KW�I{�*����DC1����cV���c�!�O<��
��7'ik9���2j!��}6$V��Y�a�{_���S�o�����6`AT�P"~����m6{Z�(�`oI$�w��M��TM6��D�d����t���W�8�E?���!_�q��#G��&��M�6�E�2APjG�9`Wvy�8�{nxZ;���,��|��;�|(	�6�L�9�x0�O#����uw�����������������x�G�)������
�5*��b�P*c����f����Z�����l�w��6�mii���i�U��M���>�]z~�?��:s����[����;w�����?��B�}pd+!�������a�[�������VY���]�����<�L���������W��g��1C��~�#�PR���
�����.��:hS��$��x�)�vj�\Z6%xM�ZlF��1^�WX�eh������t�@�
R!�&�j6�Xq
.IWzg��B��U���\���F�	�8���E�{w�8�p�����]h!��5GX>m���}��q�#)�_"��`�������S��*@.�`�mK�<����n�����Qn_Zk����t.�ZT�I�}xN��vf�)��TJd2i��@�u	��cO8|��~�mE�vSw\Jz]&�K�����1Y>HW�0��U��s�$2.�����d�:Z������W��iW6��S��a-�O,���r�\�E����&q�J��1{/�]V�dK?[��j�1����r��$���������"(R�a-��x(����� IDAT�Q5Eim��E?�/W�_��<�O�����-�
J�EP��$��4*3����;�����Bq�����I�TW��e& ^�Q0C
�l& y��x�
��0�u0���Dx}��-l��S����
���������HD��I��7��b	�(^���+�o�$a�?�6~���y����K���k8�j?�#7(�,��}nYZ�h'L���nS��<H/���RQya���?~��A	���y�si���5E;M�ee�j�xI^a������6/j<��g
24H����9�������THR�����k��q��������Ra�������!���,���gf�+I���7/����oY���M!Dk?�Z��^���ca�����Qn_pO�3�i�����fh�}�	�W���-�	H�� ^��x-e}���A1
&O��
��B��� ^�������	
�
AAAAA�����1B�q��q�>������N�g��,�������8��?�h� &��P�GX�����Q���2��������M�d#@0m>E�	p���g6�~��L�?��'_9q�N^��Nh5p��c��m
t8���N6������(&��y���U*U�yzn�p��
C�x�G�)������
�5*��b�P�i�!S�`�l��(�![�s�����{io��|n����B:0������{)�\�D���B-��w�p4ST��a�a�D��^���|���rK���y�I�[��Z�+x~ewh���t8 I��S�/����UJ���h)?�wk��#��;��H6�&���d���V�1&aP�����f�h�p�n�
:P(���-<	jn:��4���6�������k�X�Q����r��7y����{+{k�*&g�}�	�W���-�	H�� ^��x-e}���A1
&O��
��R�e}Q����E�t�����4b���A�V��	�m��/L���D{)0�/�M��gJ��K������TVV��J���K���`�l��B�n)�����;4������I
��q�t> a�,�7*x�����0��fO��P�*|��3_���{{[�R��M�}/�>A�&T�.�:cde(�t��03��RC-�����<(�����S�V����~������u)�ea��q���`���	�����E����li�H�jDd���i�n��y_����st{Ba�s��,\����&��5�h���w�#ryB>7%f���\a?`���I9�*���'�{f�[�N]�J���^K.��m�c����/���9u���2��$-f���
,�2�[���������*��4��<Wy�j3�S9��%��!�����V�|�[&W�]�3��YmDC�th>^�����?Y��NK��n�t���FDr���cM� ����M���J��������no|:��0a�@;C��3��k3'�J�������+{���+��a�O1�i_f��3�`�f�7*��� ^�CY�a�`PL���S�e��`�lYol�1�/�*4FP����t���V�K���6!#j
{�u��K�����qb������`Q��T�;��
Z!Y�t���^������'��<yUl�9d�k����HN9y������g�Zk`�nM$���b�6�G���N�����e��o[j�������-�J3�}i�b�������A�C�tuZrV���5�^8�`�5f=���a���sO���_����z�8�}��s+<j����jt��~�:�>�r��o�mB8��'����/lG�0��k�&�X-�V�{��������2�����u�f��q����9h�����Wv�B������.^�h������:���u���G'�"'�yXp������������&b��^N�:
Xp"CH��:j��x�LQ��Q1������>=����f���C�kW��
�e����Nt;y��IZ����q/�N"�/"�`v�G������6������?�~������N�^~����x�h��~��c_�vMp��A���`�l�L@�F��k1`(��4���P0y
�lp���-���������bb+��Bv�s,���������d������*��B$��B���:{{�����U/<�
��Wu�z0+�>�g�8s���YC��F����������=���-���9�t�c�'����U�y�/��<�o����l�M�'l~N���J�2h�r��LD��
���Vr��
��fr^A^r���[c�u??�����w�Zv������[{W�~�:��v�K����'3���,1*&����z>)+<�~�����$E��tN2d���4�����-�����(=7��_��s�Q����05jk9p���p��O�����/��9��)?���fZn����;$�u�d`v������Y&���u�GF��C����y��Qk�O<��K������M�;���I|��5��������<�B��M���9�@��~��$�iY�U������)|q^������_e������[�7o���������99;AN����R�e3��kT������0C0(�B��)���Q0C
�,��~Y@�/�.�H���`/�9~�������p5_`D��iO���#kx.���7B�$����3d���RM*$O^�Ba��H����/�\��Ph���Kgf���^6�6r����/����B��G�+��O����6���������%J�������\��y(&-�Y���2-4�wd{;����\EB���||:��W�*\R�7,{k�?��IBH�)����q!_������U����W���+�H��>qwc��j��������>��[�4+Q�-�4h�f��&���H�����M7azr�bKIZ���@��m"jrr������v(u�p���|!��Q���s.�_=;�QJ
BF���
}���Mj{-V�}�$v��e�W���dI
�%	.�� �&� kk#};o�'+.*�qy_&C!�4C�x�G�)������
�5*��b�P�i�!S�`�l��(�![��we���i��������n����}���W���oC3����km�zK>���v��T=��Q����x�
����_Q�� ^�M������������5�~:�)?������z��(y:��1��X�+�G(e����#3��?��@&���g�b�����:�h���o�H��ZX���&���������lXF��?��B!�F�N�KO"���;y�� i�8�Ff�O[��*./Xz�ny�	y���?�W
�#��nK/���8�l���������G�1���scL�}���;3/���B�N}�d2����"�GCK��j�����f�)j^��+��w�4yX��9�&{��]�L~�=����h4L�M���_�8Bf����bn9ruv��^;]x��d��G��R�~	�����R�e3��kT������0C0(�B��)���Q0C
�,��O����D[GN���	-
&�����C;to�6!��a�@��U��c��#M�i��	V�wHe�>���
���/���F�h	����"-�K-C(�����{���v'�����*yQ�{~MQVv�����^��`��:�P��1q^��<<����Tn���.
��
=[��6e��|������}���]
	�*D�#E5d-��DK_Z~j@M��������}s.��b1�if�r1B,c6�����%/_X{y����)��k��.���L�V���=�[�p��g�eIb��G����TBrN��w.n���I[=�x�Y���*�qhV��}����%�����G�1����Z�G�� CU��`(;N���(�fg�`�~���������:;���bmZx�����O���4�w���'+��:^D��/��[*�d���G'���f$/&I�l+N��?��?����I�#�  ^�Q0C
�l& y��x�
��0��Af�T(�<[68
fH���%�Z�]}���%��'H��=��V�W��oyxz��l6��3lk�D��q����2���8�UF}��\'�*$8����+4���x/�������%���:�G0�1lmm0��Qt�>!��7x{\]���'/$����)�)l;tt����?�����+���J�M����|�g"c�+-G�)C�{��������S,�U(��U$���\�	)?�F���2�W�rlQ�G�Nn�!�w����v�i�����
���m��J_�H���V�������m�h�@!Z��+E����#��uv�<���7��B�jD$W7�I����DA��}��]�uYvWX������5�I���u����$a�X�.]}&�M�|7�
!����*.�Y9�g����,>��S*\����e�������q,�����XYvg����}��O��[�����Q�B�����>���i5���%Y�����6	2�S5��!�i�j�����Y^����\;��|������!D>E���!�|�oE�������0l�^D�S���R#��uw�7}���������+�<j�=7<����
�\�W>X��d���6����<q���C��|'����<aE/-f���e& ^�Q0C
�l& y��x�
��0��Af�T(�<[68
fH���E����b-7�+~{s�(?���G�����M�W����]$�	u��F�n^l���}���/,��f{�lk���>jL��� oB�f�����t�w�	*$-^���W��g��1C��~�#�PR��R���d�����d���k=�s���SaV�������y8E����.4�s���?,�6jH��G�������/�WA�I�~�o��)[}��I�	����Zy�s[����L�F�r����X��Eo�s���rN���s�(�����*%2�4kg��*(��;�������g��Q�m�1u����e"1�$?�����S�t�	s\u�9�J"����a���L���%�O���W~�HP�vesH;���o����
��,���5A�W$^m`��������eUO������f���+
K���8k��*
/�"��R1����MUS��6h]���rq���U��3��^�T]E�#sjd�{���-"�v!�t���C_\�I�Z6r�U~]�j6�"�6�����y/Wq���8��V�q_f��3�`�f�7*��� ^�CY�a�`PL���S�e��`�lY/l�1i/��{����NDp��j&6�^��Yb���^)Q������\*hpU�B�M�}��G�b�������t��{c��DR���0���E���d����-K��T�q��������Ra�������!��7��_�y���\$�������7������B��~��J��pW���>H�"g�������x��R3������?
fH���$oT�QA���>H����
��`�G��e`X/�c��K������������������b�EP��!��8����8a�z�U�U���uF�K��q~�U�J��u�T�`��#�������q�H���i��k{��sxs��P�	�9O��e�_)�G��`�����3c
?�V�������8q'��@'��������:0��:��s^=��
}�X =����;����R�����s��P��*��?
fH���$oT/@[p�0C0(�B��)���A�4������K{�^ �s3��\��Q�U��L���eJ�).���/z�	G3E5��VVH����@�o��B]�����#�?�z�T�x����S���$Is���������jAIv��-�'c�nM��u��{3�&��3B\���
3� �Tp7����#8��y6�*�@������$���zFi=�fE�9oN-����nC�\3�Z�:�_]�Gx�{��{WT�[�[�W19s��L@���`�l�L@�F��5��bX�P�}����
��`�j
Z��E�t�����4b���A�V��	�m��/L�����R`t_�v���j��imG�O����K��58�*�7"�UH�I�
u��2<�oZ3g��@���3��Y$)<:���������<��=?�rbP�����=��C�"�����|�r���mo�����w�b��mB�R�3FV�"JG�	3��)5D�2AP1��K��b-���|=�m��ZP�q���}���^��\��p�q���
�1{����\�X�{�������4�FD�~���F���U���;G��!��<�������jXk�Y���
��8"!�'�sSb6�����������BP��y�g6�E������j���rA����8�N,m�B!��S���.
J�b6�����EP��T�!s����Gqq/9<��_����))L�4�!�X����^���3I�����������&W��%�����'l�K-�	J���s��QK��W;��[&�Rh��<� �L(�*J��g�{���f����Km�j�%J���"(9����*A���c".��e;do�8���?�|`�}�	�W���-�	H�� ^��Z�J�o�!S�`�l�� C�A���t�k#�~�Mo:��ZV�K���6!#j
{�u��K�����qb������`Q��T�;��
Z!Y�t���^�����'��<yUl�9d�k����HN9y������g�z����5E�����"�T���;U�#����Q{\�m���?������\?(�������2z/�xswP���=]����t�dM��9l�YO<#lX?����7~����x����>E�s��
��D��c����_G�����\r��`��=��5���Ep����0��G�Z�I6VA��U������w:���5��|]���Ci����xx�y�(x�������e������7�E|���;���}!d��������~\��`Fw-~��)"J�1;��u���nw���}]��k�d�Py�k9&���/<���������GNo��Dg������7��S�N����:jg��%�R\F�l����O���7���IGc��]�S7��A���+Dj�%J��h�������w�g���a�6O�'I;����z$ ^�Q0C
�l& y��x�����A1
&O��
2���l�libNa�iq-+��Bv�s,���������d������*��B$��B���:{{�����U/<�
��Wu�z0+�>�g�8s���YC��F����������=���-���9�t@�����U�y�/��<�o���l�M�'l~N���J�2h�r��LD��G���Vr��
��fr^A^r���[c�u??�����w�Zv������[{W�~�:��v�I����'3���,1*&����z>)+<�~�����$E��tN2d���4�����-�����(=7��_��s�Q����05jk9p���p��O�����/��9��)?���fZn����;$�u��g(�N������Tg>O���r�Xw�����5Y������q~�/?^�~2{��F3���\����2�����K�82��T�`F���>m� ~������n��r��vS������R�>Y���ECi�)�����pK��-��[:�����#'g'��"��x�G�)������
�h�f�T(�<[68��&
s^�, ��]�q����`/�9~�������p5_`D��iO���#kx.���7B�$����3d���RM*$O^�Ba��H����/�\��Ph���Kgf���^6�6r����/����B��G�+��O����6���������%J�������\��y(&-�Y���2-4�wd{;����\EB���||:��W�*\R�7,{k�?��IBH�)����q!_�����������W������ IDAT�+�H��>qwc��j��������>��[�4+Q�-�4h�f��&���H�����M7azr�bKIZ���@��m�2LF�$��K$\R-A8M"A����+���V�j�$/;�������skrr���P��_���
��ww�~��P�G��g�����DG)5�J!��\d��!��4p�&+.*�qy_&C!�4C�x�G�)������
�h�f�T(�<[68��&��we���i���������p/Z����=?0�G
�'e�o{������|D1���G�z�O�
��q���K���zA���/>3��}{;��k��tjS~�7wyv����Q�tc����`W\	�P��-A�Gf�mt_�L�y�>��O<,wyub�L��<�"�M��6�M����o?�������92J�>=���,��DI3w�Z�A�2qP������!U\^��F�#.�j��+��G���^���qx��m��%|i���Vc��
��,�=(����wf^x'������d�C�d����!���CFg|��a:�����E��>�V�2>���������h���������C�Z<q1��:;�R���.��c�[��Rn�V����x�G�)������
�h�f�T(�<[68�����'���e��#��Z���������C;to�6!��a�@��U��c��#M�i��	V��Oe�>���
���/���F�O���]TZ��Z�P��GOq��k'�N����mYU���������r�W�U��/�z�u���c���yxHOl��Dw]Rz��am*�(���/{=
!����G�~U�..�G�j�ZV����������/K{���\���bd��F�R�X$�ll��m�K^�(���t���S�-��AS\VS�1�L�VE=<{*�����
�L��"�����{��������*\�\�#��,zt�����g�T6!���.t���q��K��=]��(cN�{�5�g��UC���`z�{+���Y�>����l]?sZ�2T�y����:])H������y+��������:;��������+$���nB���$��'l
������x�$I���@��(�![6��QA�m�}����
��`���`-�������u�������ZV�W��oyxz��l6��3lk�D��q����2���8�UF}����UHp@��Wht�e�^���;�-w�K~Uu��`c���`����}BF�o���.yi���n]��{�v���s�!f���VX���d�X���r�D��WZ�TS���:-%%%%%5�X,�(P�!�H��+Q]P&��X	���^U��EA�;������nd�z�1���*�7�G��m��+}���[U�o�������-!�h]������������g��/���B!��\A�'y:�k���{v��e�]aI�W^N���,&�z.k��������c��t���7��}��N4��o[��0f���:����SN�Ppizs����3/+���B��gCbe��V���
�>U�6nmp�.nDe
%��k?��f����BH�P���9`Wvy�8�{nxZ;���,��|��;!�g'�e���?O����g���UEg��%���-������M0�r��<��R�r�FW
�m���U/}����{��q�����B�W
m���\���h(I3$��42��|#�>��\Z>���w�O�+�V�����/3����R�e3��k� ^�aYC	�
3�b*L��-d�5h��b-7�+~{s�(?���G����k�h��o3��H��I%�V���l�q�R��_X�������F�s}��F7"�TH�	!���>V\�K���'���xUd�_���5��	���i���BI��K{�59 �0�,O&'�_�!��'����
���G���)����w�!�����a��QC��82l�-��,~��
�Mr�c{'N���4NL��������*���e��4b�����Z,:x+����s�n�������m�����L��3Py]��#��_*���}�G�������^�������;�wL�O���!p����*�L�����&�2Y����?�bv�_�"Aq���!��OX���*����'��_� x�=�I���"(B���o�U=���V���y�:t?�\(,I�c��m��(��v(UgH�*��u���T��o���j��&�e�vTmuT�y�E����+��6h]���rq���U��3���v�d��B�A�3$��4*3����;�����Bq������iu?1�����?
fH���$oT���x-��
%�7���P0y
�lp��v�e`XZ�����|)���\�@��k�d�Z�,1b�s����(I��fh|.4��B�M�}��G�b�������t��{c��DR���0���E�����_�[�1��n��1{���	���j1/����C��+Y�/�<�zW.�HE�o^�������1$��B��~��J��pW���>H�"g���0��b}v�\pq���*hr��?K��R�2��(�![6��QA�F�Z�� 
3�b*L��-3���aA����/-��,�,<�
fT���?K��R�2��(�![6��QA�F�Z�� 
3�b*L��-3���aA�|.�EP�E�EP�Ei�EP�K��q~��F<��8��q�q\7��d=[���
LY���/�<�w_�@\uz<�0UZ"������P��"/�������q��9���i��k{���0�F\���������wFS����
���|+3u)�H�x����<���w�j������`v�a�f�
Do���8�}
	��3�`�f�7*��� ^�C	rp?�3�`��2`~�v�~/��{�����wr]HF�V5�x/����7R\���*���f�j��#�4���5���@�o��B]n)���#�?�z�T�x����S���$Is���������jAIv��-�'c�nM��u��{3�&��3B\���
3� �Tpo��X(�\����6"���I�4����4�t������6�����r*��B�m�9�-�������������qE����5z�3�����?
fH���$oT�QA���� 
3�b*M0y����R�e}Q����E�t�����4b���A�V��	�m��/L���D{)0�/�M��gJ��K������TVV��J���K���`�l��B�n)�����;4������I
��q�t> a�,�7*x�����0��fO��P�*|��3_���{{[����7a�]���}�P�������������nJ
�L�F�r��������G�'���Trs�����n�(_y���cM� ����0���D
��EW�Z+��������2���(��������uy?�� ��S�:-��_pp�
q!���������W�3n�2���B�M���J��������no|:��0a�@;��R���C�Y��,��>m���7��x��w�n_�/a���N�x)��/�|}��1.��B|���gp�b���3C��������_���=.��J$(�>?�U��"��)��*DH�x��!��0^�Uxfb�95S�lP�mA���[�����)1�G�����U��EP[�%����6�QqK�an��{N�w;�L((I���:2��A�6sb���::������������������e& ^�Q0C
�l& y��x�
��0�i�!Siz���P���-���-7&���Z����|������J{����&dDMa/�.�p���y��2N�W�<�#�8��GV�A+$+���<���>9�C���'���
0��{-~�=����)'o?����lUk
��)��5=T����h]�����������mK�<�y�������Ai���/mWl�f��q����9h�����Wv��x�{�kc
�����a�Y���G!������}^~�I���f�V3�h��!�B������c'�QT�y��~����$e0z/�xswP���=]����t�d��4�z�c>Z��>�v��_0���u���K����x:d(�����F'/������3-��6XQq�V��gw*lH��k;.���XW�u�{���2���������s��[�Qo.2}�D������U�Nd�����\���6^�y�p��`k�z����T;E��S7(�*h�����|=���N�����u6��/������">�t����Q�vn\_��[.�(����1`��^ft��w�$�W�3���%�A#B��<��$����]\�7G��(�![6��QA�F�ZJ�����(�![
�����9�%2���V�!����X�?_/?��W��^G�6%"U�y�H�7p�d�[u��nc����^x�'����`V�}&�q���+��<
�(�
��m�-�{6)�[�I�sd��zO1<W�)���
_^�y~�V��9"�T��O��������de����A����������s������W���G����������y��Qk�O<��K������M�;�9BH����{�c&n�B�n&�s�G?��a=t��@��Ya?�L�+�K�?�|kl��"��$;-��*;�S��<�/��yc�����/��g(}����|\V�����oW:B�-��g�������{��<����_W:B���p����f-;�WF^^���+v?�
��U�#��#}w5�L$(yu��=���Q���+T��(BH��X2Y���.>�'')z��s�!3���
����Jl�t�'c��������P?X����������i���"��L��Y��c�v�G%�R�y����N-%�%����	�#�  ^�Q0C
�l& y��x�
��0� �C�Q0C
�,��~Y@�/�.�H���`/�9~�������p�z��L{�^E��S�s�GT�*$)^>x��!#�<�jR!y���Bk���@*�8�8?x��2-��@���\:83����z�q���s��~���N4���>�\6}���������7����C�Mu��-���|��C1i�ZV��h� �����f�tsn�b�l�D����"��ww�~��P�G��g�����DG)5����;?�o�P�k���&���-{TMR�#�������*�PW2�����TKN�H���_a�s�2NG�b����N��k�����=xyY9n��Cs����r_y�pImU,{k�?��)�������\�T���siP�j�8ER7(M���Jq!�2Rs�O��(�Z�#�����;����������&�M7azr�b�J�����Qu"+.*�qy_&C!�4C�x�G�)������
�5*��b�P���G�)�2� v�+���N[6|�]�'�'v��h�&�;8�����R5|�����_k{�[�������?�*$?���Vh,8/-���M�lRw@��������\|������M�����{�G�{�G��t�A�{��]q%8B)K���1���}2Y��=�;>}������E3}|�D�6����_4�����e|�df�2Z�����(Ba4v�\z!$��9�k]I��A52-A�nK/���8�l���������G��s�~4M�9^w4�_9������_��4�+���gRM� @P!i�8����%�it:U��W�8d
+�e��KHX��`������7�����W�O"�1?W�F�"�P����0�e����w��`R����G��	�y�]��h97&�L&��O��bn9ruv��^;]x��d��G���F��K����R�e3��kT����9����R�e`i�|��_^&�:r����h0�U�����{���a!�h+:��2l{��i�O��O���'+��|����"�T_<a��x����-EZ��Z�P��GOq��k'�N����=JU���������r�7�U��/�z�u���c���yxH���Dw]Rz��am*�(���/{=
!����G�~U�..�G�j�ZV������SX�����wo8���S��]���+��db!�������Y�ztR~����`����4;#s�������>������g�J�F_�}:ed��I���=YJZFM�������U|�/A�d�������M����P%���WV��E�����]�"n����j�|'U���H���6���x�R��gO�d����
�L��"
f����=�x�Y���*�qhV�YO47�O7=�����U~x��w���������$��'l
������x�$�����t��(�![6��QA�F�ZJ�����(�![�k�w��?���t EX���[�^�������f��l�����I��A���_�B���W�eVhp��������'��8���9���w�[�"�������������4�G����
h�`G]���'/$����)�H������+�(B���O����*�6��������}��}t����^���������e�?d	��-�eB�O�b�mK����C�^C�x�)
.Mo�B���se���i~���M��mEu��}�5�uYvWX������5���>t���W�8�E?���!_�q��#G:��|�oE�������kRbz�L�U�[�����o����F�@$����+�<j�=7<����
�\�W>X�]���i�����
���m��L=2����q�GC��&Q�!^�-�E�v����t�w��n>���C�����2�[�I��u[#�bF���B���W~T���vc������^?���mG[B�S�hP�m��5�hiMuI���^]��L��T�>n������*�a-g^VF�c!��������;+</:�
�	�
�>U�6nmp�.nDe
%��k?�Xt�h7���id�������n��~z\Q����3�\�2��(�![6��QA�F�ZJC�4���4���~�?
fH���E����b-7�+~{s�(?���G�����M�W����]$�	u��F�n^l���}���/,��f{�lk���>jL��� oB�f�����t����WHZ��2���u��Yc����4lG|������5+�bS��d2qb���	�F�	�8���E�{w�8�p�����]h!��5GX>m���}��q�#)�_"��`�������S��*�����-�����J��m�((�����A�~��'T�Ee�N�	��"A�j{�|9��6��������l����K ���=�TId2\t5��"GZ��u��������W�?���&�y�S#��Vo�����
Xt�V:�_-*���><�O��A�j6��������*%2�4kg S������L�������^�������;�wL���b��B9m�EH�<T��;�������g����L���"h���+fG��_!�]�����IrP=^�Ab�^~�����~��67'@3�Y�����%il���~��/�"������y/Wq���8��V��q_f��3�`�f�7*��� ^�Ci0���A1���<��G�)��^(�rc�"^����Kq%5�����Ll��ji���9��&R:�$y����T���4H����:������!	*$)^��nS��<H/���RQya���1
��_�[�1��n��1{���	���j1/����C��o�3��<�0�]�H"��y�o�K�1	6!����k��{�����|�E���������x��R3������?
fH���$oT�QA���>H����
��`�G��e`X/�c��K����������������������,������c�xJ�q��8���(n���z����#�'^��n� IDAT�yH�������x�a�Fc&��T#.�Z
�p��b��;�)�~���X�����K�G�D�PV�|���;y5�W�
�/�av�a�f�
Do���8��n��,
��?
fH���$oT�QA����~�?��
`�������f���^���1��y�����2��R��L�~#��1��VC�8�h���9�J�
�Z#��@�o��B]&�����O����"^��+�C��=h��I����y(>�m��ZP���}DK���[S$xi���LD��5��W&������1�2��4VA
7�5y���*8�c�1M�$h#�(����<$�X�ep&����k�X�Q����r��7y����{+{k�*&g�}�	�W���-�	H�� ^��x-�!Af�T�`�p?�d��&�2��Q5b�t�����4b���A�V��	�m�a��A���������Tk��Hk;jJee_������T!��`�l��B�&�s��5s�
���<c��E���c0�H�<����
���+'����S�9�-�
_����-����V����M�}/�>A�&T�.�:cde(�t��03��RC-�����9(f?`���I9�*���'�{f�[(�W^o��X�(���/!�y�5Q�uf������h��<� �L(�*J��g�{3�_w]����9�����NK��nC\Bk�?���)o+�����[����"��`s����Gqq/9<��_����))L�4�N��T.���!BV#"�x��O�u#���*^������=�K�����6^J.��*_��q�������\�X�{�������1��%�����'l�K-�	J���s���a����"�!m�%�����x�V���
>W�%�&C��"lYmPjG���"��,��������/��0&���^�C����@�S�f����x�G�)������
�5*��b�P�a�`PL��%�C�A��kz-�(����Z����|���MJ{����&dDMa/�.�p���y��2N�W�<�#�8��GV�A+$+���<���>9�C���'���
0��{-~�=����)'o?����lUk
��)��5=T����h]�����������mK�<�y�������Ai���/mWl�f��q����9h�����Wv��x�{�kc
�����a�Y���G!������}^~�I���f�V3�h��!�B������c'�QT�y��~����$e0z/�xswP���=]����t�d��4�z�c>Z��>�v��_0���u���K����x:d(�����F'/������3-��6XQq�V��gw*lH��k;.���XW�u�{���2���������s��[�Qo.2}�D������U�Nd�����\���6^�y�p��`k�z����T;E��S7(�K]����}�5��&���TQ�,����<�U���z�����u]u����l��k[\�"k_��FUAA J	%������$��$$����������<��zy��8(�nE���}��:LWOfv�����G�Z<�O�v���������;
fH���$oP�AA�&���~�;��
`�
����,�,ibNa�L�2��B!���<������0����Q#�Ji^!���\!Y�f]���Yw�tU��B��U
�3�8mv�#7����44��6���L~(�>%�[���{l�{���V�-���
_\�%��N�!�Cu�������$+��f-7��h{e��_��f��[��o�^>8����v~#j�����2s�0~����I��7w|�3�����[#�d����?mx+����<��s1"ALR��������s��+57?75����Q��.!�$�����_q�_=K��ss
�;w�o�M��J_��~&�����#_�yyw�#D���{����'g���u��{�A��!����~�v�Y~�AVnn��}+�<s
�������a��u�U�HP�����~����"�P�&\�!��b�T�L�������TR���5*��������:�JJK������Y/ ^�Q0C
�l$ y��x
�50� �C�A�T�lP�/f�a�O���/�����,��������Ur�z���x�YE��S��R��xTHR�0:t���#�ly$��B��U
�B����@*??����j�SI�A�fN���C7�&l�4r���C�_=9�
!�d��a��gM��Q3�m9��_��#�� 8T�j��9=SOK��A��e�A5->�Z������o�{8�a1h6f�W���4J�s�^(��s��GY��g\����BGi5�������;���F����������I��wf����}�bK&�� \"���j	�i	27g���N�3�q�9�s\��VV�\���-��U^V�[��������\V�*\ZW��\����+��mb�!7>�j���4�P�&\������e����(�������d�E�5N�d!���o��(�![6��AA����J����� C*�Y6�����cU��q�G����a
��u��������R5|�������u}�|D�A&��z�O�
���x�

�e�^S}� ^�C�����x�[[9�OZ����7��p����������3���p����%8BiK����fB����e���{����$!����������X����MZ<������>2�a�A+��F���K� ���vs]�E�2qPML�MP���K�61�._�-�m	_�����5������Fk��
�������y���19S����_�T�I*$-G8�q�ob�F/������a�L�������*�.�YvS���B��O"�!?W�F�E^�*�_��0)-��-7��xE}v}5�T�<q1��tt���8Q�c��Z�Rni��S����R�e#��kP����9��2��e�j�x��C/^].�:f�o/�5.C�Y�~�z�E�F!Dc�1������~{r�i?�s;�Rx�TV��7�B�~@��V��+� ^]��,7�����Op����&�������R����#���uvy�7�U��+���w��|�1q^��\<����T�;-��
:_��6e�G~���@C�������GF�^"����HQ
Y�*�j�]P-��fyD����������*��{2L&�B��/��mk����w�'mqYM
V��u��Y9���[�vvg���~�_��Y��������N��/��?R��e��?Qj�;�M�w�THV|#�b�Y��P�Y�U"jY}e%/����p�}�W�-���:��Bm����j~"�1�V
��(�D�A�N��I^$�Hz
�m/��| ��5��Q�8����6u��(�![6��AA����J����� C*�Y6�&�k������J�L=�&��5gU��8��76��f��GnM�H�6
�
:�N��}���Ua�]���`@��Wh���c9���_w���"��|��3����F+�n?0p�O�;8����>~.q�����}o�N��q����"������}n#�!�O������J��j����e��������e��?�.jw�����"����..�\���S��#��~�)
��j�B���e��������:p�}Eu���5�u[~OX������9�Y�|�����W=?��A=��~���cSH�	��xi/����kRb�_��J;����.��!;��i�H*T{�9dwvy�D����2j��9-��LX�K�]R�a����������Ck����
��9����^�(����	��u�V��_6��GWg������S`���2�[R)\����"z-�
�>^��*�a���KnU}��axO����-.Q�IiA��/��	�e5�Lt}�N���L�[�M��2,W�e�������U������
5�����;
fH���$oP�AA�&�R� 
#��\Z`�p?�d���2��A5a�X�������q�'��[�N��-�e��8x���02�F�Jv=\�l�����?^Z��f��io��k}��F��B�C!�j���\����<A�����9x�o{��?���k���;b%�w������l����d��u
_�I�6�N��#|�xx���}gM|����b[{|���cG�:&x�-��,v��
�Cr�N}�m�P�'
�s[z���-�NS�2QP1��K�A�6�KN&�W�Eeo����2N�r��|���<��$_\�I	_>f�u~V�e����3N�D&�E�����Hk��>"9�\\-(~����Ja"�1G952���
�U�e ��g��[�\~����q����ug�9��&(B����WJd2������gH����e������q%�]�H�/�K�{v�����(6A	+��6^����Z��O<���2�����/�v��&�r��r#6A��R�hF�7K+��#�r>
�U��6����Em�}	�Ww���-	H�� ^��xML��@F&������~�;�P;-�e�e�j�x���'���p�=�����h���9��!RQ�������T� C�THx��\��qC�Y4��B��UHw��/2!��'�JE���7.���4���!�[�qh�C���c������K��b^^��u#��c�o�%��P.�HE��������{I�!��u\p�Rp?���caz_$A�k�MP���jY`�tg��j_F��3�`�F�7(��� ^�S��0B0)����S�e��`��2�/�������w��q�MP�I�MP�I�MP�I�MP�I�MP�Ii�MP��������&|I����*���j�B��MP��q�E���[R���ku����$Y-������ ��"���[��g����7�+���p�l��K'�xY6�+��;����F~/��T�u(+O�v�����+�t�/�#��-�����QE���F9���>A���`�l�H@���k2`*@����`�l���s��?�g|���W������?�fa�U��4=�@��x^��y��W�n�h3
+$j����S������1�z��a1�_��	�E��g��
����$�9��Hl��JQ��$;n�h[��1<��I�z��}����k�9!�L������j.8�7����,���}���2��'A�hE!��C��O��:��6���'A�T���<	�Tk^[����y����������QE��U�4������e$ ^�Q0C
�l$ y��x
�50��i!���������(�![�[nJZ�K�����C��6q���"������)����Z�^�2��I��x���~�����
�TiQ��R����[�$�Qa�n)��6��7����sp�7��I
����= a�,�	�g'WM����������o�
_����-�������v��0�n��O�����]	r�������k���J
�L�Fr��fP�z��c1)9*����Q{�����o6:�[��A��6Q��oB���������mk�����L��2���(#f�,�V�?��"�����y�K��,���?<����f���������jAq��_�dWHp�9d�������������))��<�� $���l������9|���ks0�-#���%�*�����G�U������{E��K��?�6��n������"��G�6vd�h@�-S�
	�BH�����A�1�E����sSl���/��aE�?Bg���^�������q[���j�	*����CqoyB>7-���u��������M���1k���`�g����eBAIF�Ok��L}k7/�J�����C�W�����8{����|b�}	�Ww���-	H�� ^��xML�^AF&������~�;
fH��uF���R�����"���GGZ,l���X���������4�b�u]S���n���b�}D�������k�d����������T��<A����������/��04��r���~��^��j����5M�����"8���}��*����I���s[z���?[S������o_���`�mJ���|������\��e�sp��/�1�5�G��
�0�|�o�8B�z.
��i����g�7�j���_�5��,�bD���i�,j+�:i� ���qB�2�V\�k����!}z��/=/���\Mi��l�L^����v���`��������Y�?A�">I��qW�J�w�e��X��m��}��y���:�u��t�Pi���^�/�l�:������!Z��go����I�}���;}��+�34�����/���
�u�p��s�|����!�/������.�����s�K�@�2L�����U{&z�����VE��U;��/l9m�����w���SDa�<�Yx���ozi�o[$���'3;�a����#}-���H;{{uh�[����3�`�F�7(��� ^�S	rp?�3�`��DaV�41��D��X�Jg!�����~���Z|���]x������4��I�z���x��nn���z�*�GP!y��T����6;����U
yQ^n��Z&?�?���-�d�=�l���c���EU|^�����x�)>sDp�.���������de����A5m�[!{e����n%g��{���?'�������������kCO'e�f������3��n��\>{�z����B��c�4/���1I�~�W�r��	����������+�F�7�@��dg����~��~�,�/��)0���� :a����<}�0�e������A����_I��75-���������2�����+�9�+���ZT�t������o1���{�{����rs�o�[���k�W�&	U���R.Q�B��������������v^��M�;	d��o�x������u�/HF|3Q�]PU����kC�`
��3������x����;�$:�m�Xm�Q	�o��5���VRZR���$���;
fH���$oP�AA�&���~�;
fH���I��6,���u��bi����0�/v����O�Vo����3���j�Z�o�
I�F�=~��-���TH���Ba�H�����}C�\-�b*	4H����#sp���M�F��w�p���'�u�!���49lU��)��6j�O�-����w��uHp����Esz��8�$&-�Y���j&Z?��y��~�7�=��43�+���"��_/�y��P�����3.���t����Cd��]���gy#J�k�Tv�����$e�;���y�>S1��%�Hj.�HpI��4���}���(1!w� /;F�����������>x�����-����mb��}J����4��"�`�[~��a��]Y.�n.������M:BR����
5�K�&\�!$��s�����J��j!���^�^�����gz[����v����@k���F���S;]%j|u����8},�!���=��A���`�l�H@���k2`*@����`�l�+�U'�e,����x���Y�S����]���oC3��=������(2���pUO�iT!���OX������k��KpH��x���xk+'�Ik���������?���{�g��t�A�c������[���}3�����2Y����kO|��T�������x,E��`�&-�b}��SY�?�����?��e!�F�ag��gB�W;����"i�8�&��&(�y��[�G�������/m�MD���ZV��F�5j������kgc��<md�����\s�/|*����#���71�������U��=�����uwR�(��y������R���
��E5X�s#N�q����>�/}��������}������eB��Oj4�*$�K���
�)��+F������)���T.��c��
� ����7dq1��tt���8Q�c��Z�Rn�Q������3�`�F�7(��� ^�S	rp?�3�`���X��^��\�u�:O IDAT���.�`a�8�1 ��S/����!�h3:��2x=�oO�4��qn�Y
���*9�=r�y�H����'��	/Z�xu��H�r��J{��w�=�n�����:��T%/*���)z�]^�M~U��J���i(_yL���<����1����A�k���6�ME���y�7���,�x���������7RTC�������y-?5��1l-v����Rs���pr��`0�B�������DV��]����e55X�/��fg�`.�nu_������:�U~��Z��#bh_N�;uj��?�H���Q���E���p7��KP!Y��?~�b�5z�(�;��\{3��s��� !�@F�21Q��+O����s��CG�t�#�^��y���'��zE�r=>
�,4���������"Z���T��O�"1fa�J��.�e�������{���_e��"
."U�%�ja Z�����Yb�2��|x��_�������I)�^C}���6�bx
�`<N1���[�Ww���-	H�� ^��xML%���Pw���-S���^s��E%��L��9��VsVu����pc��l6�}��D�$n�0����d!Q���Y�^Vhp����`@��Wh���c9���_w���"�����j��`cXZZ`������tl�i�.yi������j�H�����~(�,B����nXa�GU�b��,�������}t�����e��������e��?�.jw[��)?�F���-]\���O��}G,9��S*\��!�0��D�a3={9�u�������x�?jJ�����$�;WKss�v�����)�z~��zvu	�>�S�6��>��N��^�$��M�����*�W�vb���]�=Cv���T��s������,D��Ie�;sZ[�����	���G�������h�������y���TA���F�lg_V�Od!���������+��!��{��"~f���n=�:�������Y$�+
TH�Ba�.�U&�;�w���Z3"Y�[�u�.�U�����=�����d D8_f�����y����^�(PZ�-�6��{����$n��n����K��=_�q�dw��E���6���?������us�0��P"NZ����7�vk��`6_�������sq���������}�X������xuG�)�����
�5(��d�T��a�`R�KL����`�lYWl�)i/��w����m�������|oK��&:Kq�v!1"ad��&�0�z�����W�����v���B����1��J�TH|!�Z�;Q\�K2���V_!i��d^����s������e���BI��e�=+�1���y2�8Q��h���v��������u��;�h�����n4�s����V�;b���1�;nq$e�K�U���p��8m���<i����+/~m�t�������An_����\r21�B,*{�pf����q���}��L�Y�&q��*NJ��1+��l�������S%��p�����9�����H�+W�_��2{�R��r�QN�Lt?���va��Y|�V&�_-*�d�>:o`��A�j5v�
��N���1���} ��P�rZ�l!f����o$?����WR���������gwL���Z�&("�K��c����J�L&}������@j�a-���'s�R^�����S;_��-�xv��C�*D���k?v�te��T���n�� \���9�[.�d��i���*S�EY����Q(��<��iT��5�����;
fH���$oP�AA�&�Ro 
#��\Zf�p?�3�`�:�`�MI�x���'���p�=�fa��UG�-F�q�
�����-l�����W�^*$<T{��K����,IP!I�*�;����Y�I��������c����-�84�����1k�Eaq���j1//�����7�n��Kz��\$����G���e[�|��C!D���F��~hO�����H�"���������|��T34�����;
fH���$oP�AA�&�R�a�`R���`�zG��e�_/����K����������������������,'�i=[cM��&��}UX>������H!��8����9h���!���q��I���e��5�&�����N,��l�W&�w�+c�:�^���D�PV�z�����5�WJ�@5��[��{�K���'6�r�7wE&��3�`�F�7(��� ^�S��0B0)����S�e���f���,^��s��?�g|���W����� -���Z4��R\d�i5������p�F�iX!Qk���B�C�W��@�77,����<A����������Z5b@��1����M_)��d�mm+1���4	^O��o8�bM9'�����Av�!aP����x3������o�~[���$h�(dp�#��A@X��i����F-�0�1��G�����w��9m�������i�_19c��H@���`�l�H@���k2`*AF&��P0y
��w���Z`�0�������z����)�C}�M\s��H�t�;����j1z-���w'�Z�-FZ���*++�R�}D
^K��V!��FT���0k��y�|�<|��N����x��&�b��P�{vr�/��;}�M�&�����<�rn.-k�W����������*�� G����(��&����A�Ai� �/m���,;����BP��y�w.�Mm�f������kY��f �9��!j��,����<Z�a��$�-���2b��ri%���+��y�����4���;����,��@a�^~�I{_)�g��u�@q���Cv�.I��~��q���}�������C�Bb�����\�Ay^������6�S�2B1�[R�b�<y{tzQ�HP�}qAO:j�	j���j~��m#���{���,._,��{tnS`G����2%���/�����]��sZ+?*<7��N���2V��#t�����xoo���~��6�E������"��l��������.�l3���U}-G�{+��5��o1�i_F��3�`�F�7(��� ^�S��0B0)����S�e�����Z�Y6�����T?��]�2���c����
��^#�p���uaL'��)[�	�U����#+^��O�"���>3�S�{��'�j��#�������h@r��[O��[zu������4A���*f���"Z�ew�8���&-�n\�m���V�lM�[VJ3z�}i�c��r�)����O��f,
8pm��m����G�0�0��Ca��4�0�1��!D��(<���/~�b`�A����z<���B������
������i�����	I�`�[q��=�������������Ss5�i��3y�����=����_���.t\�g�����$��]i+��m��}V|b���:L������O��`�e���YB�I�Z{������W_n�[�#�h�����kP�&y��;t���y�/����t@c��B��TR�6�!�9��1�)�>�x������lPg�����.=�c��0
�Zn��V}5�n�0]}<���K���k�$>E����C��7F��(�![6��AA����JE���Ii.L��-�dH0��|�bV�41��D�MJg!�����~���Z|S��]x������4��I�z���x��nn���z�*�GP!y��T����6;����U
yQ^n��Z&?�?���-�d�=�l��������U�y�/���m������d��Cs���V��A@���L���e��lY�������y/����d;�����VBw��`?|m�������;����a����B���g�[��6�B�{L����� &)��o�j_��9��������{x����F�B�����U��8�������9����D'L~����O���=p�{�6Yz��+Ix�����Z�Uv��]U&���u�>�~�a�C7^�
�n�b��x��:����~�v�Y~�AVnn��}+�<s
����d@#��B��Tj�%�BH����3Y|\V��������@������^_��J
b�u�F%�R�u��t[[IiI9rpt��1���;
fH���$oP�AA�&�R�a�`R���`�zR��A5W��}���>9���T�k^F��f�����SBW����M~�2�qf��Q
_K=��
P!I�����������T�
��W5 B!�����TT���ObH���eZL%���9urd����i��1��~���.4���&��
�5e��F������]���|G��P=�����L=q,ILZ��U�L���k9��k����	p������Y���^Y6��(��z������eO�qY������"#����4?�Q�^����.,O�&)����f�{x���9l,�DR�p�D�K�%�I$�����9eE�	�;y�1�',���v��=(�����?�&lY�G5o�T�SZ�����V9S����spw��rYu�pi�����eo:���
h,TT�A_�5�E!'�#�8\��VV:�V���F/l�������d�E�5N�d!dt��x��(�![6��AA����JE���Ii.L��-�dH0����Zy��89.c�������#,��Y�S����]�����2��=������(2���pUO�iT!���OX������k��KpH��x���xk+'�Ik���������>����Y�tc��X�;�G(m���c�L�x|�L�wu����$$�;�<�x���K��:X�I��X���T��Of6,�6���cc����h��r������a���HZ&��i�	Jw^v��&���+�%�-�K�~��������h�Z���!�����=?O�:&g�4����J5)�A����G8.�M#|9if|bU�`�n�#j~��8��g��c���*�T|�w��p�@������S#�E\<�����K���a���r�e7�7~q���������
��R��kCc�����QM�-:M[�|a#���j��4y�bn9��� K�q>�0��d��F��R��'-��;
fH���$oP�AA�&�R�a�`R���`�zR��A5C�V���.m3�������,���N��"�#��1�������l�=9������f)�*����FTU����x�
�p��������!��<�	��{p��=q�quZQ���~����.��&��wy%X���4��<&�K}��vR����Ct����5QA����������h�]�]<������B�pq�)�!kYeP��G��3�,�a�h�{6������C��sO���B���m�w�z�����-.����~��4;+s�t������������k�3+�C�r���S�e��G�������/Jm|����n_�
�������K���G��9���!��.	�2�����/_y�����&:2�!������]8�>�+����Q�f�A_�X,F�,�����j~"�1�V
u�/J�{P�S�rE�I)�^C}���6�bx
�`<N1���[�Ww���-	H�� ^��xML�"H���4
&O���2��e�j�x�6�k.���d}���iBM�PsVu����pc��l6�}��D�$n�0����d!Q���Y�^Vh���
	T_<q��A��<���>�u���.�x���?�!�aii�i������tl�i�.yi������j�������~(�,B����nXa��6�b��,����������]FZZZZZzN�XV�_���"�vQ}P�H��.B�m����U~}:u�;b��'�R�����!����P&J����y����WTg����QSZ����%Q��:X����������Ny��#����K�������16����p������ qmo�&e f�Uq������w����s��6��B���Cvg��Od!���O*���a���������wI���?V�e�nF���&�����W��[f���
R6�|6:f;���2|"!���7&V��]��!�h����3���v����}��owE��"���XQ��B��Bs�u��2����;�o������@H�:�;�u�����7������%!��2�D�s�O���D���o!��/������/��T���vk��`6_�������sq���������}�X������xuG�)�����
�5(��d�T*�4�LJs�`�lY� C����a�
�	����n�_����c=����w��m�/��,��������A6�T�����f{L��^���o6��O{�_���4�P/B�V�N���L�w�	*$-^����+��v��>�^C��[()��L�gE6 f3�<O&'�S��N���v��������u��;�h�����n4�s����V�;b���1�;nq$e�K�U���p��8m���<i����+/~m�t�������An_����\r21�B,*{�pf����q���}��L�Y�&q��*NJ��1+���,;���q�$2.���6GZ{���y��jA���_fT
Y�9�������P��",av>������E����G�
��8#�P���n�"����I>�6�B�����!�VA��m�"����vY��-���Z����J��2��_��z���iu�S�ED}�1{L?�_)����w�2"[H�:�e�?��c_*����8P�bj�6A�[�~a^_�S�r4#����[��{9��*���Fu��V`�}	�Ww���-	H�� ^��xML�"H���4
&O���2�N�lf���*^����Iq%5�Cu�)���:�l1b��o��F��na34~-4�P/�=��%`��n
�$���x��g��L�,���RQya����}�1
dym���e�Pq��������Ra����tv�G�����sI�?��$RQy������l�CR!�h������X��IP��}r��Z�/��j������xuG�)�����
�5(��d�T*�4�LJs�`�lY�(�!����p�~}i���`�``R``R``R``R``R�r���3m�gk�	_��`���
+�'����`)�q�qQ�<���:��Z� �:;	Bh��p�l��K'�xY6�+��;����F~/��T�u(+O�v�����+�8`Vn����.�*
�\�4������Ww���-	H�� ^��xML�"H���4
&O�����R�e`0�9;���Q�Q �s_�?�>������M|V-����).����z���_�j�a��4���5��RO������R�����<~��'����]�4��A�FH�<�0��#���+E�������m�/����&��I��
g"�C�)���2?2�3� ���8�/c��P������o����m���q�>	
��3M5_��X3�l�����3��������**���������/#����R�e#��kP����Ti!���B��)���Q0C
��+
������>`���'6�L	�3l����E�����S�6�Y��Fe���V��#���i��|��>���
�U��
I5����Rfm^;o�������o��)�o�5z@��Y�*x�N������3��s��������[����e�V��C�u7W�'��?�U��9bde�Fi�5yv@��Z&J#�}i3(f=d������Jn����s�mj�7������^�(���7!�q�
Q�}f��������[u&�m�P\U��w�K+�w_��������i]����eA\B��Z�KL��Jq��8���s��+$8���uIrt�����������mjE�wW6��������]��9���B����Z���������D�������R IDATz�Q�MPK��W��na_�����fq�b���s�;2H4 ��)A�}!�fT�� ^����X�Q��)
v�������"��3w�L/�X�{{{���-�kv5��|U����k7/�J�����C�W�����8{����|b�}	�Ww���-	H�� ^��xML�"H���4
&O�����R�e�Q�����x1��HA�����[�,9��������E1"
�i]��q�������`Q�k��=���Z!Y��+b9��33:��7OP!y��l�9b�;���>�$��������W���k`xlM$���b�)�u_v��sllk�2�����^y�k�����e��4�����;6X+G����!_��0l������|����{�sc�<��.�@�03�[1�B����#���/���������h�!$���h?a�0��J�N�6�{�l���F�����_|8hH��.�K�:u1WS�f=[1��{�,��c�?����9�B��!~�O���O�}������y�g�'��j[��t_{h���v]�,<�%T�t�����1��}�����8B��}����e�g�g��C��N�w����M4*+$�K%�k�p"�s8�3�r��p��k=��q��uv�<�����?���_���t��df�?,�?:p�����igo�-p��A���`�l�H@���k2`*AF&��P0y
��w���-�YXY�����ba+��BVC�y"���+.h�Uq�w���FN?�.��B$���B������������A����Pff?p��@Gn��W5�ihDym�
j��P8�|J���y���!�
H���U�y�/���m������d��Cs���V��A@���L��o����-k������6����<�l�7r�V{�J�.3���
=����qs��;�:��?�5BHVp��}�����B!z����8#�$e��-_���?'���Rs�sSc��U��BH�����*�����4�87���s{����������@t��N~��!KO�~%	���\��[�����D���������8�v��kQ���_��wO�]��Z�����9�O>���M��o��g�A3\�h$TUH��JM�DBI_��~&�����#_�yyw7��$h�W%%��:Z�n)��Mk�������98:@Nz����R�e#��kP����Ti!���B��)���Q0C
�Lf�a�O���/�H����,��������Ur�z���x�YE�pT��R��xTHR�0:t���#�ly$��B��U
�B����@*??����j�SI�A�fN���C7�&l�4r���C�_=9�
!�d��a��gM��Q3�m9��_��#�� 8T�j��9=SOK��A��e�A5��[��y��q�������9��6kee���Wd8���2S��?�
�>����t�#���w-�M��D��k�Tv��?��I��wf����}�bK&�� \"���j	��	27'�nNYQbBn�A^v���c��o��b��x���O�	[��y���z��b��.mjS����_�g���{W���[��8�?
2����&j��jM�DBH�����.��N�������d�E�5��e2�2��[<�Ww���-	H�� ^��xML�"H���4
&O�����R�e`B�<VE���|��{�O�.��g�:L���������_�m�"���K3U}�����y��
�����+Tq� ^�C�����x�=|��w������+}�ec�Q�%Og�1������SR�8�t�uf�7:�B���{������'�
����t����D|��n��)����������e����J�R�(��~�������.;����jbZ|�4B���]���qt��m�oK����D$��>��8�4�Q}�����kgc��<md�����\s�/|*����#���71�������U��=�����uwR�(��y������R���
��E5X�s#N�q����>�/}��������}����b�eB��Oj4�*$�K���
�)��+F�I��"���J*s�QOGY�����<&��5*���?�h9 ^�Q0C
�l$ y��x
�50�� 
#��\(�<[�;
fH�����r�xu�h������}�D����,���N��"�#��1�������l�=9������f)�C*����FTU����x�
���%�W�[��,7�����Op����&������=JU�������������W�.����������y��s��N�5xhU�!�s��������
kSQFy�w��
4��.�.�~dD�u!B��������2�f����IP���A��=�K�������'��db!�������Y=zwQ~d���`u�\G�����x��}�`gwv���W�����^���}9}�����2��#UJZFM���6���T|�/A�d�kK��A���������?r������?����Y��D���<��~��e�����Bx�������x�q����]���/\,#�V�K�h��OR�?����e+�����Ij�W%I^$�Hz
�m/��| ��5��Q�8���o9 ^�Q0C
�l$ y��x
�50�� 
#��\(�<[�;
fH���)��x�������S�)<ZH����U������l6��v�5Q"��4�+��;BHT��e��W�\'�*$P}�����X/��������%����3����F�(�����>�=�.yi������j�),;u����?���?�VX�Q�d�X>!<����>*mG�)C�{��������S,�U�����H��m�>�f��$!���tqa�*�>�:����N�PpeVk���g\(������<h����+�����u[~OX������9�Y�|�����W=?��A=��~�����ll�	��xi/����kRb�_��J;����.��!;��i�H*T{�9dwvy�D����2j��9-��LX��x?��o�#aEY���f���nr���O}���e{K� e��g�c���
+�'�B��}cbe�����B��=�Z?3|�h�]���O�vW�O�,�
H��*$�!�0�Y��*���c�v����
������]����x{���N���[2"�/��a\A�<���{�M(��B��B-��4 �3l"���a���++�\�=�����<ne_-V���e$ ^�Q0C
�l$ y��x
�50�� 
#��\(�<[�;
fH��uE�����bm|7�/~������Zn�;����/l��o#F�hR	���+��1qz��KK��l�>�-4������K���B����5�$S��y�
I�W5 s������3~�����/�w�J��,��;N6 f3�<O&'�S��N���v��������u��;�h�����n4�s����V�;b���1�;nq$e�K�U���p��8m�����/������_[*���e��4b���6�bm<��L�����&�Y�?xe���v�G�2�g������8)�������j��|W_x����d��zp��i���G$�����/c�=P)Ld9�(�F&��Ca������,>|+����s2n�7�n���B5���b6|�;�����B��#��Xx3�C��!hY�MP���V�.�z�e��T��3v\IyW&�K�R���1��rj�����/9f����+%2���N_&Bdk�]��,��x��Kex���_L�|Qu��^��c���r>r/��P\�yza�(�/�Ub�}	�Ww���-	H�� ^��xML�"H���4
&O�����R�e�P����E�������Jj8��T��I����#�8��HiDI�6C��RA��R/�=��%`��n
�$���x��g��L�,���RQya����}�1
dym���e�Pq��������Ra����tv�G���o�%��P.�HE��������{�N�!��u\p�Rp?���caz_$A�k�MP���jY`�tg��j_F��3�`�F�7(��� ^�S��0B0)����S�e��`��2�/�������w��q�MP�I�MP�I�MP�I�MP�I�MP�I�v�5�x� 2�Fo`���
+�'��6�a1���!HZ����/���2,��H!��8����9`Z��r��6�������V'���N���j��`��oa7����'AAK�;����F~/��T��/�X�e����<����wskt�(�a���0+����^�
DO.l��������R�e#��kP����9����R�e`0�9;���Q�Q �s_�?�>������M|V-����).��yz���_�j�a��4���5��RO������R�����<~��'����]�4��A�FH�<�0��#���+E�������m�/����&��I��
g"�C�)���2?2�3� ���8�������$(9mV�.�q�>	j��P�����~������/y�����0��G�����w��9m�������i�_19c��H@���`�l�H@���k2`*�	�0B0)��&�C�Q0C
��+
������>`���'6�L	�3l����E�����S�6�Y��Fe���V��#���i��|��>���
�U��
I5����Rfm^;o�������o��)�o�5z@��Y�*x�N������3��s��������[����e����a��\�����W������Q�����=�"h� (������0�_K���	�����F��	�C��I��P!���<��;����3��k�/1i�+�����[�����s�-K��W��na_;76>�N'�W�
��-�����i���-�U1���=:��J$(������Z�a��$�-���2b��riU[���0n����DA�����x���}3��c�����:~zJ����������������e�m�0}we�o.��<�����U^���TH�qP���b��|������M���v���B��R���nb��o��{�����:-�����`C�hE�_6-����W�/�n�6\��Y�7"m�e���,�v�����;��?tyU_�����w
!�[�'F����xuG�)�����
�5(��d�T��a�`R�K�K����`�lYgl�)5:^�.(RP���~t���V:K���..+|:{Q�H�-FZ��1e����ly,&�GT�Z���x�VHV<}��X/���N���TH���`���N�r�C��)'o=�wn�����[��k{��!�C�h����������q=��W^�Z��5���3h���;Y

��""{X4�?��V[��]���Zq�����z����j���B��E��h-����#D
 {2�	��d&!���y����7�<��hs���)����_��3���dV�����X~����#��!��q�+���	��c���o�]��Q;�!,��n�Ur0d�����e���{Z�����_s��&��|��n����]�>(s�8/���o��E=\���j�N�����E�2E8B���82z�����y��s�~��k�
��b����������z8��x����_*���[/�*����>d����GU/���D1���6Jc��o��P�SFH��(F�����aP���~.��?�\p��*w���������}����0��|Q��.�0��GJ2p��@K�r������KS��3�z�~c+��7H.D�����������c����V�'�z���
G����:�a�&�7*����^�J	����CC�4L0S0+k��_\*G:4��Q!d3����/�\q^�����\9f��ib�#$�"xGH�E/o�N����T��DHm�hC0{��s������mh�zoxj��@��\r����q���!�*$����ojj+��]�9l`���R����������Ta��]�ME����B^|f��KO^�&G��|^:b��^������_�>{;)#� ���o&u9���B�#�������VJ~a~J���^�T�k?t��k+e��}������8)t�����G<�K������&�1���%�]�.K�n_���#�t�������+O%���������.3�%�j7E�ur���Z\^������>L�g�������p+=/���;���;���?n��sa!���}'��!k?�k��/��#$��D����/�~�~f~~��=�v=�
����fC�(B��!��fAU/��1k4\�����t�
�
��s�����h�Jex�vm���K�J+����O�A��CC�4L�D�F��k6@)��Ph���)f	f�!�����Kp�uc79
a��v���r�o�>����e������4C�"�^�r���G����L���m�B����P&�<=�K\z�\�R����E�����+7x=�<z��}�C�_9��'!��eI�CgO��1������������:$Yj�f��yN)��&J(� �*ebQ-Dsn��e�f�)�S�����ssf��:�u�����9�>}�qX+;q�5�b��z�W<����+B!�	��8��*wJ^mch��\X�'��zdYi�MZ�>/!��<����e|*R�Q^�����.=�(�j�,����E�B���C������(#%W�R����>�j�7	�w��������������_�����=��"B��4��||zq�V�.^������E&B2�
M�����}�<��E�6���+@�!�(��745@��e3A^������r9B�������?4tH��M0oT@�Q�f�@\���i�2`F����:11=|��?���#m��G1�L�{p�����25�������u.*#qtH��H�;����z���'��X���W��H��,i�/960����O��m?��\����w�4���y&����v,�1�G(u��QG�L�vlo�\^pe�^��?L���uj�\��_=�!���N�K�����d�����a�����Bav�Rv!$��9�k}&E���>0y$�#����/���:�b[B^i������/0��D/�5,���=wys/�n��a����M�x�X���]�bP}9��PW��rM.�����,#>�&t�_o�����4��T0�1�\b
BO�nbIs^��0���+���7���\T��'�D�$DR�E�>}�%�mC/� ;�H7�x��7H�Y�r�FR"�DN�����E�W��mQ����%��z���i�����
�5*��l�R(������!
S�
������?�H��%Z46�Q,�����u�~�B���`����C�sG�����4��G�3Yy5��[N��i�Ps��~���D�>�Yy~Z9B�O���������+��@�k�yq����7�s*���W�������
���+R���A�	n#\b:�,	��r��ilaTF>�����m��c}�Xy]�.)y!C�T)�j������V���Z�w��g�?�!��6��k������W���:;�Xl6��/|���.`�����']��8���?�O9ph^o�������>���o_d�z�j1���d�bn~��/fd���v���.�G��Z!f�^�!�o���.�22J-�<�/�\];k��S������c�������/��s���=L(��GH�(����BK/���y#�$��>Z��K$d��Ju�F���������OT��%��u�E}�e�_��/�z) �h��747@3��V��Yb�����������2Y�C|YE��M������:�a�&�7*����^�J	����CC�4L0'�v������������N������z���7���r�>��M�J�6
�9�R���ee��]\��y�)B�
5O�q`����+rN��{���D/�%�h����������F1�=�&��5�i2/Ky�T�������t��=�q����b�������GUR-qxa��
�F\{��}t�a�+^���������H�U��?<-�� IDAT#����(�Q�����ce�u�q�'y���3mOr����=!���4Iq���.�{�����2���l�W'��W�U��_2��WOg�������C!���{ET9��B�>����r�@!�a��(�d(�ww��M�����s���(wk�0y��{C���?*k��� �^nA_���
"��a!���<_.N�����y��}�^U�e~?��Bc#���J0��M6,qx���^��t��<dQd�H*I\������u�_������-��TV����
U�$y��b�	���6#r�X����}��C�� ��FD��"��4/��f_,�~�����:wrh�F��B��;�OQ�����--9l������5o�l���s'{kB��"i���a�d���z�5v�z���w.k�n=����>���^^1���w�OUU���C��j^&��:�a�&�7*����^�JiH��	Ei)Z�y��
�0e}�a��b�6�+yuk�?�o�������&;Ju�Na7���;m"au�����N��V�����\��Kg+������:+
!�B��x���f��9B���6d^ud��y�����(tGl��������l���8W!�KT?�&���S��E�#�w��?`��T����z3B�ak���b�����6_Z�L���I'_KR��U��
����V}�_�j�iL�L�V�����������_P%��_��E9F���-=�PX%��=<�v��Uq���<��_��%ogj�����;�x*�Yj#���+���<�:�Z�88����jQuQb��_]���
�T��d���<j}TRA��NX���\�����g��������#����^���6����W�D���m��-�F������/����o��������.
�C�vC���������_��%��)w�1�!�V<Edy)`���/��Z*����`#D��!�.`��'��\����vT��[���������_{*�Lc��9�t 9�����^d���� m�f���`�����=�g�[�������1]t����2@����!
S6��Q�F��
PJ�6L(JK�:���Ph���)�
S��������2\�z����546�Q
�2b��.V�Q����������4H��K�c��'�m�dK�)�'���<sO����
�L&�,N��	��rC���xAy����G���l�G�����$��������������+�R����i����������B�n��^-���I��0�7�(jZ|�r0z,�C�08L���Q@P/�1W�����z���i�����
�5*��l�R�6L(JKAC�4L����!����fCP��M���m���Gd�<��_�	4���nGD@���\�k^&��:�a�&�7*����^�J�
�0A�(-
��0e�CC��2`X@/�
A9C7�J)|+���}�v��3�[�tD�6�nGD@���\�k^&��:�a�&�7*����^�J�
�0A�(-
��0e�CC��2`X@/�
A��	tT���?���\�2@����!
S6��Q�F��
PJU��	Ei)hh��):���z�x��bP���CP�
�`V�:�L8V&��3XX��WD���9�������.L\����o��D��h��8��c8`:����>��-�A�~kJj~
�i���^Fjl�R�4f�	
�F*N~b�a�1_�u=�b������[��+S��:u7�^�U��W3�\J�0G0���>/����>�iL��f
��:�a�&�7*����^�J�
�0A�(-
��0e�CC�4L00;�y;�w/���PR+��wz}PwV����&?J	����".��~f�)�������ZFH��Yi���t��9�����������+
�\���x�M36�0�9��Pl��jq��4'n����7c�~�*����FK��gE�:�����1�TTK������;A�NPjt�(}�<��z'������[�:��yg:|�+a�>xc�>T��
�~������V�r��7}�_UU�V�j���S��D��CC�4L�D�F��k6@)U&����y�lph���)�
S�����������7�M
�6��s�����}�)��Mv�V�E����#�N�#���}���U�2�9��E�Yi�)��a�.),����.�42��op�������k����9��VU<9�z�(�?o�?��d�8=���/W��[7k�'���0��^�w���:���r�#F�R������}�"I�D�V����Dt�����*D����-c��~����Go$���Vr]�=���13����?�H}U-��d��e�'G�s�����+�%���W�����TRa���8��������n������Rs���S������r.|�����q�����E��7�7v�vk���bl��q���6A���@�r�M��V���fZ�����;;'v{w������wr�E����-_DdR
A�?���\�E����{_V_����DH��([��}���Z����_g7ucQnhDtkS�I�BH�PMSb�7�}����J�]�*VEg�6��u���i=�
@r~)_@9mll��Hs�h*%yP5&�/K���k5��%=�>>pi��{�$9?��W�;L4/��
�0e��kT@���Tl� P�����i�����C��74L�C�l�X��ha���\�H��V;J�k]\f���b-G��^�n���}>u�#	�����_G�A#�
���"�_�szf����I"�6O�a�#���dm�����u���geW��X���
��'���*�>�����NhKF��~���/�K������*J;~�j���b��Y5�&�z�c��������b �����,f{�'<w�as��	�wu�G���\W\��kT���!.Nn���v�i��+�����l|����e8Bs�wi���-��<�~S�av�p�>k,��;y�C��C���!�����-�����2h���i���7�V�93�v��S����c����~���Zl�tl�8b����E�X4�U�����\���(��{��}f|B9N!a^$�}�z��A����:�s�����Y�nh
��*/B4�!.8<��8��E���00�,�)Q���-1��g��C^/Mmc�h���zc���D�?7��R�6@����a{���9�J=F�
`�w|���@�.�pTo��^���C�l"�y�z�
�5����
��R��<
S684tH��3���fH���r�Cc��B6C�9����u��1����cF�8�&�>B(�7p�T�[����d���KEI����6T����>7�Q?����V�������ID�%J�w�.b�2@by������������vP~�,5��	
��<[M	���TT���+��g6l���Enr�����#�L��@�_]�������2�
����`R���=�!d92|M����o�����\���J�-��C7^��R�}���yX�]`��B'Y]�~������m��hb���X����r��4���{|9BL�Y���\��TbN~����L�2s�X��vSdY'�������	���;���Dq�/qJ�y������X�3NJ��(���6~<b���w���������>|���:B��HD������y�'�g������j����^,m64�"����>lT�"n�F�@�ol����(�5v3����tt�E��2�m������e������'� �^���C�l"�y�z�
�5����
��R��<
S684tH�����������%8�����0�q;OI^��7�N������2j�o�j�^�!�R/�Y9|��#�o�K�M����6D!�uYtS(��K��%�.�R�C)Ihb��kwG����n
=~���!���X���B������������Y[�XO�w�������,5b3z�<���G%�a�@�2���9����S���)�L����9�P^�:���r��@����8,����8�C1{p��+�}B�!�����^�bc��?%��1�~n.��iU
=����&-W����t��rv��2>)�(/z�D��?��L�J5k�������Z!jcc�!�����N����\)MO]@������;�w`�MZ���NVg������I��i!Q^�Ea>>�8n�o/k�	��R��!���A�Z�E��>lT�"l�F���46�I��`���fk-�K���w}[.G!����z���i�����
�5*��l�R�6L(JKAC�4L����!
S���Q'&���Y���x����(F��{��S���C���=���Ee�#��It��VRo�~���"=�*��^�%M�%g����t�	^���3���������F�g��bb,���~�)�J]�uT��9���[(�\��Wy��+�f�Z2�g�W�d�d��S������<�����i�C~+::��B������F��w�Z�I�2���Ant�q��y����X��WlK�+��u����]����E���E]8��.o����60�������x��Z�/g0j���V���r��V�e�'����m9�������
:��K�A����M,i��P�0Tu%���f����*T������(B��������m��;d���Mv5f��n^��>�A%rrt���~.�8����h��e&�+���?4tH��M0oT@�Q�f�R�a�@QZ
��a���i�2`n����p%\���YGn.���	�by����C��P�B�~]��;rW�,�����8*������7��!�����I#��'-�^}.)����r�R�&�����_7eW��^�("������o��T*����eA)6��#���W�<������C��tYT-�\q������| w!��������!\R�B���R&�B3��<5����E�����������eq|�
b���x&.%�������N,��!���>+�����v�I�.?��r�O�S��[q��,'=���������^�Z�le9��������=|��r��B��V���Wn����'��K����RK7'�K1W��Z<�T��~�����c��8w���!���nE���RA$
/}������k��F�*[��F��p�D���X���H�Py���S��*���n���O���+��ET/�W��H�/�2
�0��I�%&K�

�,���/��?��U�(���o=�^���C�l"�y�z�
�5����
��R��<
S684tH��sk7��K�-.]8m��������������{xs�\.��3���4n�0��/�!qI^V�*��UZ�'�"$�Ps���{x,�"����7��H�R_R�6|a,kk+L�k��3h�[��&���GO��}{�(?������.yO!f���+nxT%������l���j�H
a�+^���������H�U��?<#����(�Q�����ce�u�q�'y���3mOr����=!���4Iq���.�{�����2���l�W'��W�U��_2��WOg�������C!���{ET9��B�>����r�@!�a��(�d(�ww��M�����s���(wk�0y��{I���?*k��� �^nA_���
"��a!���<_.N�����y��}�^U�e~?��Bc#���J0��M6,qx���^��t��<dQd�H*I\������u�_������-��TV����
U�$y��b�	���6#r�X����}��C�� ��FD��"��4/��f_,�~�����:wrh�F��B��;�OQ�����--9l������5o�l���s'{kB��"i���a�d���z�56�ID��D�T,6e�Q�[�80��"�%��W�ts����_U�q��������z���i�����
�5*��l�R�6L(JKAC�4L����!
S���!�A/�.`���W�6N��*�v���minl��T7�vC,���&V��^\����iuo/.��z�t�����KL��� �/!�P���K�qi��g��#��hC��UGv���������Bw�K+�X��������sr�$Au�D������G.������������f �����a��	#:>t�m��<v�"
�%��N���~��V'-���-��������2�(�0��K�H��_W�?p��J,,I��%��r����[z"��J".�{xz������Y�y���bxK�����+��w/�T��F �]W�)�y�u��bqp��G�������O��T[l�x!���y�����JI��$+������a;��%�_+��'G��_q�V�!(Bm������J��4o[|�CPd1|�K��#�� �����Dt3�KC��D����(d�>s�����bImiA��_wLo��AY^
�}g��/������;�Q�!B�Xs�	�F*������/�V����ker������7�X/zA5]H��w/ �Ic��D��MTJ�47U��b�����=�g�[�������1]t��p^&��:�a�&�7*����^�J�
�0A�(-
��0e�CC�4LY/h���D���.��j��6����)�j@�#���w������\���E�g�A"$]Rk�8qho�&[�DH<��L��{�fW�e2qeq���Kx���r�7���Lth<��<f��8".�LT'�(H�u�G���,���&>])����EOc�.�o�p��%�bt���j���N����(DQ��C����c����	`�����z���:4��L��?4tH��M0oT@�Q�f�R�a�@QZ
��a���!e���^04�Z���l�`�Nm��0="���w�ZL����t;
 ��?���\�2@����!
S6��Q�F��
PJU��	Ei)hh��):���z�x�l���VJ�[a]]����������#��t;
 ��?���\�2@����!
S6��Q�F��
PJU��	Ei)hh��):���z�x�l
�N��ZP/�1W�����z���i�����
�5*��l�R�6L(JKAC�4L����!��������%��`V��B�!(g��2at�������"����1�������ta�:��~��&����D�p�q\����XNW���~m�b�[�PR�k0H6u�i��h�T���
�8c���z�����/��&Z�W�\=u�n~��FE����w��?��	�UE��4������
�0e��kT@���Tl� P�����i����t�lT>�^��o����K/z+��
���^��E�QJ]gD�p�w�1{L9�-�D���2B��((B�%�#lN0]�G�x��U��N\Q���������!�y�a�g�b�^U����9q���W����T)���`�p6�X�L=+����F�t�����Z
��~-�	
w�R�KG��E��P�-F�/�Z����;��C���4����:��O8\PW���Qn���������jW��S`�y��Wh���)�`���^�z�(�*`����44O��
8��V�2T��|@�L�/��=�9lj�P���_�{.=������(%�~�����Gj��#FF�	�R���jejsD-��j���b�6�X�7�]0id�����9��x#->����
I�s�_=��xrb��Q<����1��q*z��_�o�n����5/a�������u\M��G�*�J{�)s��%D�2�(�0��K�!���wK��U�j��[�����!���H�}]%��>��{>�]cfX{�O����ZR',����|O���*�=k�eW
Kla���o����*QMq��E�)�=7�J���5���g��l�I{S#��\��I	��������$5o�o����F���A����m�0���,�����������+p IDAT��5ywvN���.YK��{��������[������~������z]������:�#��$/rQ�>��b3�q����n
���������$�������>��.n������
�.�U���Nm2i&�(�m�z��^�)����!?>/M��y�����w{b3���q��� DuIA0����Z�0vI��\Z=�z��<I�C(����D��CC�4L�D�F��k6@)U&����y�lp��������F���bB��u��re���Q
8^��2#gp�k9bd�Zt�����[IH���E�:��
!U�L������3�7~6O!�y�
�����$k;��������
>#(�2�h����6U���?A�H�Ta�Y~��tB[�0����V}�_����>eUQ�a��Ws&6�����5�����v_u$�!��6�ve1��>��{���M����>j�8������]�J�qqr����{OK�]���k.��ds���6�-�B�C��K�en��9����
������Y{`A���:���T�G1�GFo�|��8O�AsN�O;v��A�ZLI���>���|P���_v��@���2`��cS�����,�}��9���%}�(��|�Fi�����3��q�	�"������?��>��e���g���_���vCS���Ty��q��q��}�/�]���af9�H�B�?h�YN=���zij3FS��ll��������;}�����:���,l�"��Z�����s��z�4:����dY���]Z�����CC�4L�D�F��k6@)U&����y�lp�!�*����Y�X3$��R�.a��B6C�9����u��0����cF�8�&�>B(�7p�T�[����d���KEI����6T����>7�Q?����V�������ID�%J�w�.b��9;�c��75�����6�����d���Oh�`~���j�0H�.���Z������36^z�"79j����s&�b ���.o�b���IyY��s0�����l���&��w^���R��Sb���Z���X���^[)�>���<�PL�0�I����m?��y^j��
�_41���D,��zv�XX�u��=�!���O��F�]y*1'?����v&v��p,�T�)����Og����������a"�8��8�����[�y����'��I�t�q?�1���;���vY��\K>xQO!Q^$�X����|�����3���n�Y���W�L/�6�DR�EI6�z��YC�r�[�����&'�_��$�V��[d���=����!�����TP��m���������98:���
��:�a�&�7*����^�J�
�0A�(-
��0e��T����^�>pC8/��/������(����yxJ����	t���N�QC~sT���Y�F��"xQ���c?1~�_2m"�6O�!B!����B�L\�� /!,p��rJIB�]�;�����pS�����~�������%E��=u�?���r�z��[>W>��d�����9�?�(�����E�:<������:��3�r�qn�,�W�����\3'���c;�aeg!���B�\o��w�xE!d5����X��O��m���+�DZ�B�,+-�I���%$6����]����OE�?��?p���'�R����B��5��V���Xc1:�w�e��*WJ��_�P��&�a��A�Xu���;����=�+y�x���uZDH��fQ���O/������~�������DHF���@�y���U����!N���-�J�.�Jqi���YZr2x)i���MI}���r�2��[=�Wh���)�`���^�z�(�*`����44O��
8�Pe��a�����:11=|��?���#
��Q�.S�y', �GM?'e�o{z����G�%8���?�"�����I#4xEz�U�%�$K�6�K��
������v�Og6~�g��C��Q��g����`��cJq�R�mUpt��n����Wv�U������Y�������#"Yj��d���/Of�?-kF�����NP|N�``�+e�B������gR�L.���!�{�8B������M���+�%����:��J����qA��iQ��.�s�7���F�n\�t|���Z<�U-��3��p��
+��r���@YF|BM�`���#��11h��`�c�����������EaCUW�y�o6�q��B�OZ�jI�"���}�PK0-����6e�!�p�+.%�����4{$%�J��� O��\Tq|����	�L�W"Z�Wh���)�`���^�z�(�*`����44O��
8�Pe��zm|V^�.�v��#
��i�Q,�����u�~�B���`����C�sG�����4��G��Sy5���3�#D�7�<i���I�������r�R�&�����_7eW��^Ed^\�������J�7���,(�tvd�B�=�����xPw�����!K�����+nA����n` �t[~�X�C#V^!�KJ^�P=U���ZhF��{�Y�=\�_>k���/���\��w� F���g�Rr_������b��B�����2������oW�t����/��T>���y�w��r����x{*�T�������V������y+��������.'��!�k��m{�����{R?�T.��(�t�pR�spu����N%��'[��]8���s�����y��V�0�HN!D���gO-�<�V�n����|Vh�h�.�H�U+��I*���cj?QE"�`V�mT���0�(�R6���Yb�����������2Y�C|YE��M������:�a�&�7*����^�J�
�0A�(-
��0e��T��|`�X��_\�mq���i�SE����������{xs�\.��3���4n�0��/�!qI^V�*��UZd�)B�
5O�q`����+rN��{���D/um��X��V�V�������d@���,��S�c��6���������K�S���{�����H����}�+8q���8RC���������i�%yU�����t;�E� ��u���p����4n�$��}|��I�~��'!����&)�^=��{�#����_&^���F@��������KF������s��v!���s���#'sB��gcBu��U�!�9L9�e�������z��^tn�r���nM&op{o �t^�Ge��C����-��~]A�x;!�0�����i���9����������B�bl�@��AQ	f��	��%��4���u�����,��I%���{��{a���KTU��{���������������$/Q�>�W��fD.���������~���������Q$���B���������[�Nm�Q�!B1z��)*�������%��~c�Zz����
���v�do�B��^$m����^$)7���C~�����AL��W_����.��~������
�B�������|I��#��}���WUe��:t���e"�^���C�l"�y�z�
�5����
��R��<
S68�PgZa�Pe���b�6�+yuk�?�o������0��R��S�
�(:�N�HX�zq���������t �����J��z/1�$B�%�j3�xI=.�P�d�$B���6d^ud��y�����(tGl��������l���8W!�KT�J���q���y����}��=�*|�{XoB�=l��V��0b����Cw��K�c�)� YR`;��kI���ju��X~���/��Z�0�)���
�\�t����u���������[��(�HX;��'
�$��������*N����L`xK�����+��w/�T��f{�]W�)�y�u��bqp��G�������O��T[l�x!�l��y�����JI��$+������a;��%�_+��'G��_q�V�!(Bm������J��4o[|�CPd1|�K��#�� �����Dt3�KC��D����(d�>s�����bImiA��_wLo��AY^
�}g��/������;�Q�!B�Xs�	�F*������/�V����ker������7�X/����{c�
A�KI�-�	����;����oE������t��R`�y��Wh���)�`���^�z�(�*`����44O��
8����2T��|(���.��j��6��!���e��9.�]���4e+���{��C�DH��<��-p���VM�$��"x�
��3�D?�(��d���������1-7��o������x�y��oqD\N��NRQ������1������_W��2qe������7���y	!��>��Zxo���mao
Q�����`�X���e�������z���:4��L��?4tH��M0oT@�Q�f�R�a�@QZ
��a���!e���^04�Z���l�`�Nm��0="���w�ZL����t;
 ��?���\�2@����!
S6��Q�F��
PJU��	Ei)hh��):���z�x�l���VJ�[a]]����������#��t;
 ��?���\�2@����!
S6��Q�F��
PJU��	Ei)hh��):���z�x�l
�N��ZP/�1W�����z���i�����
�5*��l�R�6L(JKAC�4L����!��������%��`V��B�!(g��2at�������"����1�������ta�:��~��&����D�p�q\����XNW���~m�b�[�PR�k0Hh����@k���'V�s��\�C-�n�x|��5���2���Sw����L��;�����������o�����Yz���i�����
�5*��l�R�6L(JKAC�4L����!
S���o����K/z+��
���^���������R��:#�H��t�c��c��lq� b�����FyV(B�%�#l�%��:?�����*�u���'Ww�x6�h��
)�c�?;���Z\',���>����X���J�Fd{���g�Y���6:�f� �R�8��k�NP��]:J,����	j1j�����-~���^���:��O8\PW���Qn���������jW��S`�y��Wh���)�`���^�z�(�*`����44O��

�0e}�a��2=��r�����ACy�&q��X�x��b0�����R����Z����i=bdt��/����V�6G�����>+
!�R3"l�%��1{���F��
����7��c�a����<������''VO������������g�>��*�v�f�uh^�l{{q��3������!�UJ���S��UK�$eQZa����CP��������
R���}��	�C������JX-�}tm�|n��������|#�U��NX�y������Uf{�^���<�6�^Y;��SI�U������>;RT{n��b?wkJ���O����F,,�����"F�a�O?�+Ij����=���2��������a��Y��7�[9���iEok*�������]��.3���)	K���|�I5e��S{sQ�����}Y}u�F!I^��l}B��f
j%�������E����MI"$�!
CP�}�9.�]�����C;*v]�X���d�L�Q�����}�}V���<���z.�����+��+�YI���������g�
�_�|�'6�_Z�y��!l4��%�i��a��v��z���=y���P�+�&���z���i�����
�5*��l�R�6L(JKAC�4L����!
S���!i�^�CH����W�L�Cc�����..3rw�
��#FF�E7���>�����d�H�^���
��R��X���9=�{�g�$R�'��	�{_J���XZmH��y��3��+��f
,�oS�	k�T�dIF��wk�G'���a_�mi����lM�SV��|5gbc1j���]�}=���n��QGB{1Bk�hW�=�������������v�CX�+.��5��`�'�Q��	���T�k�����M6>�h��2!�9���}P��q^�c�)�0��z�l�����<��C�!�Ne�p��iqd��g_��t4�d��c��d���k;���)��p�1�l�e�T�[-�^:6U1��}���,����^�g��b.�Gm���=��>3>����0/Q�>��������\������U�,m74�KI�!�g�a������]�a����(d�����������!����1O���'M�L��+x� ��_�DH�+�n`6����n���;����7�)�|�ea#��}�`{���9�J=F�
`�w|���@�.�pTo��^���C�l"�y�z�
�5����
��R��<
S684tH��3���fH���r�Cc��B6C�9����u��8����cF�8�&�>B(�7p�T�[����d���KEI����6T����>7�Q?����V�������ID�%J�w�.b�2@by������������vP~�,5��	
��<[M	���TT���+��g6l���Enr�����#�L��@�_]�������2�
����`R���=�!d92|M����o�����\���J�-��C7^��R�}���yX��Ba��B'Y]�~������m��hb���X����r��4���{|9BL�Y���\��TbN~����L�2s�X��vSdY'�������	���;���Dq�/qJ�y������X�3NJ��(���6~<b���w���������>|���:B��HD������y�'�g������j����^,m64�"����>lT�"nsE^t��{�O�!��}�L��_�z(AH�+��Hs�����d������J�s�,{��������h�Jex�vm���K�J+���x2�Wh���)�`���^�z�(�*`����44O��

�0e�,��7��r��b	��n�&G!�~���S�W��M����xu���������f��7B���bV����[��i!�y�
Ba]��d���y	a�K���PJ�������=x�����G�_��x��+'�d ���,)bu���c�1f��;����������$K���^<�)���D	e$P�L,��h������:��3�r1g7gBa������wV~��W���l���C1{p��+�}B�!�����^�4��*'%���Y��\X����zdYi�MZ�>/!��<����e$?)�(/z�D�qv���`J�/�+����V��3:�w�e��*WJ��_S��o��������/�3�
����'�?��"B����||zq�V�.~����e�e�n]���T �P���������^�mc������ZO�>�!f�)�������4�
��Ri=��R).��"\&�"K�����-���MI}��r9B�������?4tH��M0oT@�Q�f�R�a�@QZ
��a���i�2`F����:11=<x���w��6v��]��=8����1e��,�mib�*5gisw���7|?x��^�{5>_D�D��dI��x����\��q��:�y��W]6���y&����v,�1&9����-�z�8gR7BH^pe����z�����_VN^~I6t�\"_j��d����'3�r5
�}�o�2�L&'~�j=�t������#M�\�F�o���#����/���:�b[B^i������/0�R����E
��pt�]����ma��-py�1.j�`W�T_�`0����6�\������*��O�	���rD�/?&��9tL9�X��S��X���(a��J8o���.U��I+Q-	Q��y�Oj	�E��/x��_cw�4}t����{��[�X��	�7OrV�������v�HJ����A�������
6��-*����D�@����!
S6��Q�F��
PJU��	Ei)hh��):�a���a�����p���gi��L��&8��8�{���BB1X,t�uu�z��]����&z���|B*��7�t�s�H����'����$z��������J}��7�j��� IDAT����]qGz]���������y�S��&��������T��'^��4����P�;	���!K�����+nA����n` �t[~�X�C#V^!�KJ^�P=U���ZhF��;AY�=\�_>k���/���\��w� F���g�Rr_������b��B�����2������oW�t����/��T>���y����r����x{*�}�������V������y7|gan�����z�.�b���r�����P� #�����I�R�����w�J�O���p���]}1�������aB��<B*�D����Zzyt�x��A�o�k���H$������������1���"K0+�6*����,���G�`|4c|��i���_����+�Y��PC�,1Y�oh@gI���}�,�!���G��}_x���
�0e��kT@���Tl� P�����i�����C��X��_\�mq���i�SUn-$ol
G��=������r�\���&H�q�����x)G�K��2U�.���<�!����'��80��c�9����q�E����B��{`cY[[aZ]����Ax��|<���,��S�c��6�1�u����u�{
1[w��Xq��*��8��O}g#��UGjC^�2=55555-�D"�*T����n��FQ-���l�p&+��+��>��w�i{����,��@����I��W�t��c����������g+��f�����I=�d�{����Aa;��o�Bk?���:r2!�,}6&T��]�n�B���3|Q��P^��.A��	�E��+gQ,��a����"L��T�<=��AN�������D�W�l���<_.N�����y��}�^U�e*���!�,pPT��m��a���>M�*f]�ko�!�"�ERI�����^���U���n����������'m�"$��D�O��7����z����3<����q(64"�tI��y!��0�by��������C[6B}�B����J�}��`mi�a�_�����y{g�p���;�[�"�I��&t�B����o*R��&����l��h>+5.����S9������6��u][�pM��������}�/)��b����������[5@�5��L��?4tH��M0oT@�Q�f�R�a�@QZ
��a���i����0��z�v�����q�W��{w�lKsc���y��bQt��6��:���r}'�M�{{q�@.��������^bZ����|	!��L<^R�K3�>�'��2x�
��W��v��#x~�C?
�[,��c���q�
1��*�rI��\��7:N9�=�\2��O����S�o��@���=���YF8t|���|iy�2E$K
l'�|-I��W���
����V}�_�j�iL�L�V�����������_P%��_��E9F���-=�PX%��=<�v��Uq���<��_��%ogj�����;�x*�Yj�=���+���<�:�Z�88����jQuQb��_]���
�T��d���<j}TRA��NX���\�����g��������#����^������}4u�?7	��  �[�% ���"h��sT�����Fq�Zmm_�U�*���-*��B)C���(;@�����H��{����|�z���<���{���&&}f����pJ��m��5���&(2�7�����&Qz�=�q���6��
�m2�3e��gy\^Min����&5T�o�"��DzL��_]'��m�1@�h"�0�_2Xu��{+���
��O��dF
_ �}�������Y7A�����z�qX�M���p�J��`Tf����/��X�7'�R]):����xUG�I�����5
��(�Wo�TJ�4tL���0y��v$���-���-�$%�5�zw._(��q����@9����l1b6sns�F�K��FS��dP��TK�����Z8�������8/c@���=Q�o
�\>�[Y�rw�|o+L������+���n<?y��c^DlV����M<���F�F<�u���w+�u|ne����s<�4<_'�BQ:�p���8�N��0�/���i}T{(�=`7lt��e�(��Ku������# ^��0C��# y��x5
��0�� 
��-$L��-�	3���zA�h�6A
�'/7��]+�6�'E�a���S�h�m����,0_�����/������e�k��Q�����i� �m!a�$lY�H�!���@sH�	J�����rvmm���[����H�E�����|�N_3���t��:fH��u$�Q�FA�z�R���`R������e�#a��2P/��!�&(�2�����|�N_3���t��:fH��u$�Q�FA�z�R���`R������e�#a��2P/��Q��E!��r�&(@��&(@�(�	Ju��d���63�s�#���6�f�<Mg'�v���iA)���{�8�V���P�EPG(
�Bn�lk���i��sE<�uv�~��Z��<�<	
t���
��/�4�v�b�c�a��?�=�eAe��S����^��R!y���\�>zW��V<��qx���������e�k�P�7tL���0y��v�!_
��c������y5���O�
�Dk<*�Z�?K��a������k���er��#
��5���*$>�|����RgE�I~�����2�_������S3$H���PL��jn-�4+6<����h�~N�6���b��'���	j��,1M,���E(*���$(<	JL��B�p��B��s�k�ZhC����#�R�J���hV����bmF����6������O��/wT�o1]�KG@��#a�$lYG@���4�Wo��T�}C��h	�'a�j*
Z��D���+�?<�)db� ���V^x�����.���-��%F�9�f����
o1R����Z]]U���GT��d!���B�C���ywQZ�i�V�����1�z�����c�Z`�7y����*���'������Y��[4n�r^���M�������q��0�n.n���1���d��!���s��R
����B4r�Rv�s��b����������~?�|`��;���bW�O��{�[����6�?�q'�C5��]�q��Y�t����3uYt=�����V����=��_�a&���HA��I���hn[RXw��V�����.�`'���v������(���iN&�#��L��V%�3~���1�
���nZA9��}������5r���~V�]��yeD�&�������sm���`����3�1�
q����=x_LFq
���{z~c@G������l���6���������e0p�������f��?���QZ�i�B���b�]�e��g���������J�+'(�x��'�r�o�0/Ft�s~b�
o��-�*@�;�k)��q����`��n�M;f~g�o\Y���wO6/k�@��|��}��Wu$���-�H^� ^���
��J�o� �m!a�$lY� C�A�@��/f��M^�HEJ\�Rg��]V�fDNv�w���#���;���'nI���#�x-�?GT�Z+$*��wi��uzJ��7�q*$N^��M�����
��)4 1�����).�>K����~?��V��1C8�$Q��>d1��jEXF��[��/}/�����,�b�~�j����?��k\��_�>���������Ll,���C�x��;x��"�}7v}�Zt
�q���w
-94���i���N]��G�Zy��rg���1�lxX&Da���]	���y��s�O���O��.��}���5{�����2p���!D�������#��O?Y�����0W`�k5v�������;�>�f���E��F>[�������g�����N�I4_u���n��R{X�n�=�2�*����'(J�9g������x���f����pqY��j����#�;������`��<R"D�/�� i����{�������_��(�O�C���6����������c�V\�h�r�������I����22�aF�6G��F���y����-*�n)@!.�Yq���0���y�3~g/O�@�U	3$a�:��(��,�o� �m!a�$lY� C�X���)��(, %�e��B�l�O���]����&��>l��4��� (^�o�����yW��p*$N^��0C+�I3l���d������:d�i�?�9���2�<<:P�A/Z��X5�����������9���{p�F���j�2p(�r����9=

���p������[��b���q])!���[V�>/�Mv��'�:�d�7��!������a�����)9�9)1��|�RbH���
7n���G|�k<S�����
k|s��#���N������M����"��r+���.}{��c�!����D�
;����~w�����S����n���d�����"!2����Ww*B�>dv�]�+v����������u�#q���0��v�!���}'���F�����4����+��NP4�y+��v�\r�IFNN��=�v�t	��BSd@��W]V��ZVV&�6�ej
/�}�Q�.V��\����#oj����?�w�?b��
�tYA�+���,D�F��������-w*��!	�������2a����m�����V"kk��Ej������e�k�P�7tL���0y��v�!_(�������\"D
_�M�B�����'<[~�X�7�����oX�G5}-����@��s���~�;r�S�"'/k@�B����l>�[���wB����JL%�&�v�dc0 l�K����F��W80����](!$(K�X<mb����n�o����/-n)��Ff����K9~4�GX��e�%J|^�'���������H{��p����Z�Yz�\�b��{��t�����i�!����\���<|)#W�B���wy�����)�5���tr���H������d��g'$6����;�Do����((x�����C*J%�k0���rj����C������M�{�������>D#%��l��iI�;�?���������0���Z*�����0kw��t���
5�����_[*B|�uN_)!A]]=���	�j���RW������ged�������F�����d�@�r��w94����z5D�k5{a��J5gHb�������������:fH��u$�Q/@Yp��A0)�B��I���A�|Q��-?wbt���kI?��{-7=�b;q�A��!>�eB��}R���WOV;Hl�p��l�G�z�O�
���x�
5E�L��!�N�8��
(,9�gn��}���������������-�<�F�h����]*D(u����G���xlo�@�{}�^����+;�=5���u�|�s��n���������|��im��%z��B�NW�O#������� h?���M���!�}��{i��,���]Z�o;�\�JL�e.,�������.���{����i`��!����'B.[�v��A��)�TyB���C��&.�<����o��;�{��z��\Hd!$�S���$�/�AaCU��x��m�d
8L�?)��!�!$DB��J-*�aecT*U�����*�3�\
�X����k)���1�-�����W";kA���
��nm�QYq���+:
�U	3$a�:��(��,�o� �m!a�$lY� C�<f�a��/��<r�������e�E������e��`�B�!
�X���o�{~���]O�%�?T3:S�B$@���V���)�xU���+r�*J}��\�����]�G�U�-�J�[V^S_�.�R�z���R�w{
��S�Ly�#�$��-����A��o](lZ��2*�{��� Du
�t��!��[��������e�Aii��9�@���A���F��z3��������k������>Vu����0�P}���e>C\�}�.7����kf�^1�����DO������wwu������[����������)�����fe��#���6f�F< �G�.��*(~��������G1kG��
|�(/��3S��9��\8t����7�+����~�Dd%,}�*���o��FE����t�E(�������S�/�>�����5qt��{�����V�!��C�&����\�[n���0cS���,����
	3��<�T�:�Y]�A>�y����e�<��$?����Q��H�!	[���FA�e�}C��h	�'a�j�e�Z{��rm^�Z����r�;��,��������������>��������=�N�	B�����2��5��g@���W��>Kb��S�wj������.*k��`���c
���V���;6� ��<?%�U�M�nf���M;u�,�,B���s7���s���C~�W|>�f��v��2����������%<AU����8��M��I?���>�XY}mil�X�n�������<zN
B���5�W����S���N=g�q�W�������X&+����}�v���}���!��63�s�#��B��}CBu��e}B��p��y{2��['����
�����[,4�-)�g��>�����>�d�:���v]��D3js#FZ`!�YM�X�M��������}�?T�f��EC!���bv�lk�LP{�J`7�{���������������:^���>J��2�>�TU��bH�8�nqee��1&D����{����7����=����p���t�5H��B��m�#N���.��FFt��En_wfUF��#j�
��o�����b��W��"Ds�RPW������ww���%����������p�E!�z�����_zul����B����v]p�U~����Y���]68�W!���k5ga�M%a�2����|�,�����_]��d�����VU�.����j_:�U	3$a�:��(�W�A�zC���:&E[H�<	[V;�Pi�2P/%��Z�lx\���
�<��\�t�m�������]�.'*�B�Jh�=\������V[~y�����C{c�_������B�C!d2�xI�����[�8/k@����^5�[_o�A�o�)��|��������L��� ����6�N8�����?��{/��S���C�QB�W��t�(�^�Fo�����Y$�������y�?���'�ckZ���M�N��2^P
���K�M�����fx�[�e����`+���Z{,8��_��Vd��^5t��X��po��f�=���7�5��JF�����E�HR{{8.�_�J���Ttp��3���������]�a�/~�go��~��sI���Zv���?f87�����?5<�Y���Ko�(�	��I����r*9���kgn�c)�	������xd�	B�aOx��!�
+�B�6A����L�v�Y^�WS������I
~����Yq�%�U'����6$%�/�MP���I,`qk>��k� +E~�/(������/.��N ����c�������q������@X��Gg���]6:�	����;���L^;t�_�f����/��X�7�U�V��}��Wu$���-�H^� ^���
��J�o� �m!a�$lY� C�@�@��������|��z����\�g5Pf���s�+5b]�7���%�7"�T�{H|�����A����S!A�2��O����������)w�����w����>��"��h��3����=�E�f�qjy�����}mD�p4����}�����������l����C!D����j��0;������"��MP��t^����}� ��(��S��+S��W�����6}�P_����H�!	[���FA���
�JI���I�&O�����B�@� ^4G��Ws����O^8n�}�V&mzO�q�W�_=��vQ]����kf������������]ld��_�k�]@����@�`E}Y`�T���k_:�U	3$a�:��(�W� ^�S)	��A0)�B��I����0Ch�������p@I�	
��(N IDAT�+�	
�+-�	j�
�B��=�k���y���N\�@m�������w��4������=W��Xg���S�>��:V��
�P�,���������������_-�	�<9����~���}���2��������	*Sn�:�0�^�
�$�hf�|���26�������;���:A��#a�$lYG@��j��7`*@���#a�$l���c������y5���O�
�Dk<*ga��%F�0�\_�Q�yj�	�2�����
V���U��
�)_asn)T�Yw��}`�k����7v97>h��	���,<����[�.��
l#z1Z��S�����{� �C���9Bi��� KL7(m
�-�:��lx�tzE�_��{n{�_w�C��j���"2�KO�m�5�,����������:�����iU����
�-&��}��Wu$���-�H^� ^��x�L�:A:&E[����~�:fH��UE��[��R������������[y���b��hcJ���;K��s���GRk�b���/�����/����k�B|U��B�C���y�Z�i�V�����1�z�����c�Z`�7y����*���'������Y��[4n�r^���M�������v��0�n.n���1���d��!���s��R
����B4r�RtP�Y5w��J�k0do^����f>0���g�?V����'��=�����������[s.1��S�a~�x|*��S���{��������������C��E�������VP�bf��>����Z�����U�a��Gm^�!��!w@�hn[RXw��V�����.�`{����2�Ig����&ob6sns����Vp[�}����Q���M6�(m/?�]���������d�P�:�r(�	�������LNMqj������0�(n�j�U	����$f�x��e������Z�o��X�7"���jt�_�X��7Y����-�=peyoS�=���	������# ^��0C��# y��x5
��0�ji� �m�������H�!	[V	[nI����b�&�s�"%��Y"t���������*��H�:�N����[�y8��2^K����
����]�`f������y�
���5`�{�xo��i

HL:y��g�������@��s*;aU/3�sH�{�C���V�e4���5��������x��A)F��/evl�^�%r����v����{Ze�%T1�����1�}�������]��&�����{%.�s������#���|)�������o�=z�u�:���e}��Z�]<:%�g�����Yt�Gc�BF>[�������g�����N��)^�B�����;���e��sOep�/�"3y���I�:a�a�a��y��0��GJD�,d�7��&��l�)v�"�6;��q��C��'��;v��
�j���>3:*k��~}�}�i��#�]������\q��F�c�����q�]87"����2p��0���������a>�����;{y�~�[���U	3$a�:��(�W� ^�S	"p?T	3$a�@Oa�f���T��X�Rg!��������f�E%�zL�6|��i\�+�AP��+$*����k;��.��TH���%`�V��f��=��'NC!�k�u� ��8s.<�-.e�yx4t����E��+�j���o��e)�����d��C0"�T��C����%J�]�Iz��������N���X��!So�����G�W���}�^�����O��t0��o�3�v7��Kgsv��{��>�g>�{<��K>B!���~y;g.9�$#''���e�^�Mqi����=~:�F(�H��zg�������d�����gg>>�t{l]�K
�f�1��[�\v��{W3�[�����K���C��NS\�*�TbVN��m�'�N����$d�C�&(<�~�����vn���u�����������0~��o�gJ�C+�6�/�������1G��e�V�[Q�X��++�D�6����U	3$a�:��(�W� ^�S	"p?T	3$a�@/aV���x��s��!Rxa79aV#���,l��b�6/����oX�}5}-����@��s���~�;r�S�"'/k@�B����l>�[���wB����JL%�&�v�dc0 l�K����F��W80����](!$(K�X<mb����n�o����/-�!��Ff����K9~4�GX��e�%J=%(J�������V;v���3>��I�w?a���!��s�����{����(���LS���|�:t~��3����{�"��_��<�f�������^�"��bts#���T��!$`�3D��BN
���bQ������Iy/>R�����Gt:���g'$���6�H^����Y�P>��cO���+�����/��_9t���z���C���L}[+�������'{��UaD�Q��<�����������^���A�	J�J�;�WBpW7�Wu$���-�H^� ^��x�L%���Pu$���-=b�o�����_�H�	<����,��������D�	Q���i�[_=Y� ����
�)��?�*$���q+�!3=���C8���7���|�W��Y�����~fS���G�O�4��Y�T�Q��6wgt���E[���>�����A���{�'>�O���������%���X���'�?^s2��'3���&�Z��Qt��(�t%�4B���}�������ja�}$�M\+x�G7#��?w&�����I���B�jz��F��%K�&d����N?��#^����3�cw�
�������k�|�����y�!U]_�z�qOZ(�0�$��l`�+	y�h@��\6|�V�J�x�di�:T��h��!�|J@2	
��p������|���=�g\�(9��kg��������X�n_8W�4pkk�����W=��U	3$a�:��(�W� ^�S	"p?T	3$a�@����]�������G.Q`a�8�����SO���!�(4C:��:x��������G���K�'+�f|����"��/���hq�U�����I�@(�U�s�S���v�)V�%+ynYyM}���J�7���rK���m((_zL!3�U�0����d�����t��im2���Z������)�����|�nq�J���z��e�������Q�z������j���m��$���������L���>7��MG�Y�/?>Z�D
���~������1���X�K��!�����w��m>F2~�00��=�Zt�Q{�J`g��EC�W�M^�$z��
���M\�@%!������Nz�Y�-@�����<�|!${E�C��yy��>�D���67v���/y����H���[ua�9Bx�����|�G+���3D���cE��%�(H4���v�dM�9��V:
�w�������qt���������n��B3����9�LG�m����_�m��'��~� �?ZG����H�!	[���FA���
�J��4tL��|y���Pu$���-���-�$���Z{��;��� ��2����L��t�-�8h���j/���
^T�u����@CE*�kJ~��������3�����x�����"k��	X��^�{����=�j�0��c���%O��������m
��/Vr.�����Z~w��6m���[�������f�X
h[��/}o*y���e������2�R�>�TU��bH�8�nqee��1&���F-�s������S�e��i�����]����5�W����[��t��S��q_9w����o��<����D�B�|���Mdh�k����C�/�qns!��'��oi�����������5�s������MP��BH��"\��nKqJo.v�652�H_{�������b��};+SBQ�CT�^�O��Nk���#-0�H�	Z_[>��[w���<�.��#��bVS.Vp�"�z���?m��UM6Ae�$6A2r��P]�pY�_�Xx���*]��%f�MD/��R?'�~�����2vYo%V����# ^��0C��# y��x5
��0��i� �m������H�!	[V	[nI�<T��g���o��&��������;Kr�v!w��� E*�Y�pqs�7noZm��^nn�����S��TK���B�d���za�����WHX��
,;�{��o}�=<}�-����Ah/�"b�/0^��{��k���3����C����q8�]~;D� ��c;�N�;�k���m�u1�DU�1{�#/��~R�����	��2^P
��&(2�7�����&�g�x��!��@��N$�W�����W
�,��6�[r�����}q��u��v����t9�
�����f���9Yr�����mW��Upy5��)�n�$Z%��O&}f����pJ��m��5�%��!o@�U'5m�"�������!f����K�N ro�����	>������/~t�������r+y����1�pn����	ZZ~v��Or������l?m$�O�3�Q�c1�E.��VM�4d���&(B�K�W����7E�ykw��T����4s
>��}9��b���q��R��p_:�U	3$a�:��(�W� ^�S�6���I��/3y������e������D�_�����3�7<(ga��@�-F�f�m���u)[�h
��
\�j����\'����7�B��eH���'*�M!���s+S����m�)8 �s}\qE�����g�'��{����*������gW�������.<���c%����,x�w�g���8�B��������av����}EL�����e��R��f��}��Wu$���-�H^� ^��x�L�$HC��h	�'a�jG��e�^/����K���/l��
l��
l��
l��
l��J�l�ZEq�B�P(�F���Z�5Eh����W;P[�5�������'��h%�$j��<���t�T���������,�;g��63�s�#��9s���Y�-�	�<9����~���}���2��������	*Sn�:�0�^�
������J���03��������U�/n�~#D� ^��0C��# y��x5
��0�� 
��-$L��-�	3$a�@?`3���8�����)�||zm@'Z�Q9�,1J���
�B���P;O8���/�4T�B���J5UH|H�
�sK�:�������]�e����+���9�fH�<f=`������ZviVlx`������Z'l���3��O<�J�DYb�X�Ai�P(l��1�?�`���$��+�p��B��s�k�����W���9_z�
�,��Z�����:�[�-l�S/�I��VU=^����b"�����xUG�I�����5
��(�Wo�TJ�4tL���0y��v$���-���-�$%���]y���M!y���;.��&w������w���������*��Hi?j_juuU
_jQ������T[���Qa�n)���6��=����c����Eu������= n�t�u�U��'�O������&��h����5�����SGS�;��a��\�>q�c,�y5�#*C�����=��i'(�h�����>;�j����.�`����3�1�|`��;���bW�O��{�[k���eEi���\bN9�������T���41s��}1�5<.3������#���M�y7�������}t�O�9L�{?���.M���2"CbT��������,0!<:���e�e]���N�E�e��<�|!$oSM�:�l���6�}������@�y1�����l�Q�^~:>���c���=�����u��Pv�s��b���������
��aQ�8�^���yI��&������%�l��2����-yS�����%�n�M;f~g�o\Y���wO6/k�@��|��}��Wu$���-�H^� ^��x�L�$HC��h	�'a�jG�I���H�rKjv��eP�6y�#)������������6�W�-FJ��w*7O�����G��Z���x�VHT<���3���N����TH����0����{�MSh@b����?S\v}���Z��S�	�z��!�C�(�C�GG�",�a\��i�����hE�[�J1j�})�cS�:.����.�CD����*#.�B���X�E������w���E��n���5��f�����+q��C�^�G�Ie7�K�>����3~���{��3��..���j���)��;[w}����?�#�2��r��Dn�$�>���=wz�O���2p_u`v��q��-��{*�Y�����Lr�����#�;������`��<R"�d!���f4��g�N�������#��O?Y�����0o���������SY�����u��N��	����_����+w6�����e��w��e_���w4o��<o���J�
�c�<�������U�� ^��0C��# y��x5
��0�� 
��-$L��-�	3$a�@Oa�f���T��X�Rg!��������f�E%�zL�6|��i\�+�AP��+$*����k;��.��TH���%`�V��f��=��'NC!�k�u� ��8s.<�-.e�yx4t����B��+�j���o��e)����d��C0"�T��C����%J�]�Iz��������N���X��!So�����G�W���}�^�����O��t0��o�3�v7��Kgsv��{��>�g>�{<��K>B!���~y;g.9�$#''���e�^�Mqi����=~:�F(�H��zg�������d�����gg>>�t{l]�K
�f�1��[�\v��{W3�+L[�����K���C��NS\�*�TbVN��m�'�N����$d�C�&(<�~�����vn���u�����������0~��o�g
��F|��.�f.6�Gokc�J����Z����nSWVZ��m���$���:fH��u$�Q�FA�z�R���`R������e�#a�$l�%�������\"D
/�&g!�j�����-�V��{�����7,������|x�k�B��9�aC����)_�
���5 B!�v�]6��-yu�;!���
%�G��
;t�1��%~��a#g�+~���.��%E,�61���S7�7�n����?�P#�a�f��?��#,Q�������%��l��iI�;�?���������0���Z�f�9s�����=lZ�icCn�)�G�
>D:�����g��={����B�vw�JwZ~�p��G1����_[*B|�0���!���L�L1�(�z�[p���)MO�X�#:�h@���a�Sd$��|���u(���'zs�G�GA�������PQj=Br��~�g����OnF�{l��=
e��0����]�`f�~Jv��?�mBj�`��������������
�U	3$a�:��(�W� ^�S)	��A0)�B��I����0C���Y���N�N_2|�#�'�pv��(�����]&DM���yn}�d����7*�v|��'���x�����PS��������sH�����!^q�f�������M���1?���{�g�SiT�F�g�����B�Rm�{t��������w���<>����S�g��_��G8�`����h�x������lZF��kGG�B�P�����!~���.k3Z���)���M\+x�G7#��?w&�����I���B�jz��F��%K�&d����N?��#^����3�cw�
�������k�|�����y�!U]_�z�qOZ(�0�$��l`�+	y�h@��\6|�V�J�x�di�:T��h��!�|J@2	
��p������|���=�g\�(D�w����v�6o��>^Iq%������p�0�i�������z���:fH��u$�Q�FA�z�R���`R������e�#a�$l�3��K���� IDAT�p9�H��%
,lg����u�i�!!��fHC�?V�u�������h�St��d���Y"��/���hq�U�����I�@(�U�s�S���v�)V�%+ynYyM}���J�7���rK���m((_zL!3�U�0���gyd�����t��im2���Z������)�����|�nq�J���z��e���7%�h��y��������k��+I��{�<C���&�/���Mh�BD�������J?���g�,�,�)`�r�5���f!d���7c����4�(fG��]�^���y�B�C�p��9����lC�pjW;P	D���%��l����iP��k�%�?_�^Q����woG�2��>Q��>��������K^���&�?Rz�=�V]�l��:��(3_�Q���r�j:�X'vI7
M'n��(Y�o�~��NC�k3�:�:r!�����)�6������A����W!k/6:�m�
�P-�
o#�=���;)���:����xUG�I�����5
��(�Wo�TJ�4tL���0y��v$���-���-�$���Z{��;��� ������L��t�-�8h���j/���
^T�u����@CE*�kJ~��������3�����������"k��	X��^�{����=�j�0��c���%O����������-��X�}�����k��������oI�:D�#�����be4�ylM������)
��%�R�Fn_�Ju\��SU��{�!�������%'�� $J�W����S���N=g�q�W��j<��v��:���^���n%
��y�O���}���CG��W�8/r��{����7����=����p���t�p7�����q>D��w�f?pnd&��'��6A�I=�������E�)��<���\�bmjdD7���(]�c��_?��C�vV�4����>�d�:���v]��D3js#FZ`�v���46|�K�����yV]=Gt����\���EL��i������l���Hl�"d��!�����>���m�+k*Ed.��F@W�e�Y|����������w�?���]�[���}��Wu$���-�H^� ^��x�L�$HC��h	�'a�jG�I���H�rKR����>�|�{�(71�>��0��6�Y������DY(R	�����[�q{�j�//�rssuho��k}��BW�Z*�?�B&������H�-�B��e
h0`����f~����9���m1�u�B{Q��|�)�VK|E'��h;���.r����|fNe��?������SG��42x�=F]E�"Q8�D�����K����<)�dl�����B��	������xd����8�n��(����	�U<nEv��UC,�e�
����5�1y_\~u�@����!���?]�{����k���wN��n6�3e��gy\^Min����&�V	���I����r*9���kgn�c%6�-y�&�:�i�����E�1�_2Xu��{+���
��O��dF
_ �}�����(���=��[��e����c�s��N�M�����fx�[�e����`�i#��~������,r����j��!k�$7A2p\z������)���(r���J��/���K��ei�|���r��xqq�p[�nq:����xUG�I�����5
��(�Wo�TJ�4tL���0y��v$���-���-�$%�5�zw._(��q����@9����l1b6sns�F�K��FS��dP��TK�����Z8�������8/c@���=Q�o
�\>�[Y�rw�|o+L������+���n<?y��c^DlV����M<���F�&<�u���w+�u|ne����s<��9�B��?��f?��~,L�� (b�����/����5C}�KG@��#a�$lYG@��j��7`*%A:&E[H�<	[V;f-��x��__
/|	`�W`�W`�W`�W`�WZf�"(�#
�B!7z�5�"�)B��5��������	4O�E��=i�G+Y'Q{���������J�1����K�2����c�1�>��A���w*�(�A._�i*���2���Ss�U�h�R���|�����*x~q���!�������e�k��Q�����i� �m!a�$lY� C2�Y������������l^Mq���k:���?K��a����d�h5���er��#
��5��T!�!�+l��:�������]�e����+���A�fH�<f=`������ZviVlx`������Z'l���3��O<�J�DYb�X�Ai�P(l��1�?�`���$��+�p��B��s�k���-5_j��[���!�f�����kaC�zyL������rG�����t��:fH��u$�Q�FA�z�R���`R������e�������Q-/�����o
�0�{����q9/6���w���������*��Hi?j_juuU
_jQ����8C�UHp�6o��N��j�X?O�������k��������W1_�X>q�����������q��z��~n"�NM�o��?��wsq��}���,�� ��q�V�f���j�e�������������;�V�\�!{��o���0���G�<{���]]�>���Yn��~T������s�9��Z�C��S!���������d�������7t2�(b�6u����r3����?=�j�0e���
�4=j����MP�"Ds�����p�����"�]�u�;�;m��)N�8����%wb6sns����Vp[�}����Q���M>��v������(���iN&
���/�2�������������J���_3��O��eO�Fia��Af�L��b`��n�M;f~g�o\Y���wO6/k�@��|��}��Wu$���-�H^� ^��x�L�$HC��h	�'a�j*��kfY��/f��M^�HU���D�.�c3"'����Up���u��
����$�p�e����#*^�O��4���:=�S�{�8'/k�&|�����{���t�����]�%k�����Tv��^2f��$J���,��Q��h�ckZ���%?[S��%�R��o_������K��y�K�Q������K�b&6e��!c���<c�����iM8��7�g7�J\����W�Q�GR�
�R��9{wG����{8�4�u�����4����xtJh����G�o������!��|�\96�1������{����S��"��W�]�w\ok�.�����_-Df���%��u(,><����081�l)�aF#���&Y�8�o�M<���S��EFmv~��g���O�w��������C=&�e�����33HZ�������c�_/��;.
�3F8S	e���a��Oi����|���=�w������u��:fH��u$�Q�FA�z�R���`R������e���fY��/flfJ�1
K��!uB�
��x��k�^T���y�a��M>��U�B���B��
����3���"N����Pfh�<iF�Mq���z�4"�6\�2M��3�����R���GCZI��N���a��Y���!^����jH�=8d#�pL5Q8k�iPZ����Iz��������N���X��!So�����G�W���}�^�����O��t0��o�3�v7��Kgsv��{��>�g>�{<��K>B!���~y;g.9�$#''���e�^�Mqi���=~:�F(�H��zg�������d�����gg>>�t{l]�K
�f�1��[�\v��{W3��[�����K���C��NS\�*�TbVN��m�'�N����$d�C�&�e���^_uY��jYY������5���F��XQ�?�$Dokc�J����Z����nSWVZ��m��_�j������e�k��Q�����i� �m!a�$lY� C2�Y�(m��Y��_������K�����,�Y��~x���������V�'�a�?������+^������-O��TH���Ba�s���|n����	!��W(1�8�$o��������.��9{_����'fw� ���,)by����_�����w����X�A�8��
�7�.���Da8�Z���(�Q�	��s���������������yR��O�t�E-B����f�t�6��4���!7����*��_z�L�����������x!�Y��w�;-�W�H����H��-!>B	�����S�F&f�B�v��-8oR���������N4 B��	����
2�W`�dk�:��f���9��#������b�W]�(�!9�P��n�((������	����u�uHH��CFFt��>�$&()*��P^!@!x�]� ^��0C��# y��x5
��0�� 
��-$L��-�dH0������[~����%��>�~���gQl'�=�w?�'�L���OJ�����j�-nT���HYO�)T!����[����17d������%�C����:��_���3�r��=b~:��+����4*F���m���R!B����=:}l�c{�������O|�X�����3���K�#�C
�v��O4��d��Of6-�M�����D��S(��J�i�?s�`��-�����E�7q	����|����0��.��&�B"!�}��{i��,���]Z�o;�\�J�x�
��p���7�k��C�]��^���	�0Tu}�w���=i���l��P�����$�-0�r��	�Z!+y������P	���^�zM�����}	�	�!!B�a-1�z�WR\��l�i�/�+�c��5Ge�e��j������e�k��Q�����i� �m!a�$lY� C2�Y�(-�k�v����#�y[�p2��������2�C0B!
����^����=?��������
�5���P~����
��W����I�@(�U�s�S���v�)ViE�J�[V^S_�.�R�M~���R�w{
��S�Ly�#�$��1����A��o](lZ��2*�{��� Du
�t��!��[��������e�Aiq�M�/��g��|���&���6�J���^*�}�������s��t������%�@�`�����:�
��~�����B��x����c$�
#�����E����v�o^4����}��uN��|1��;����T���mIa?[����e����Zy���B�W�:4��������OTp��h#qc�:���W�g�����aO�U&�#���(��������;�wfUF��#j�
��o�����b��W������bt�����Z��F�{�y�wj��y'�Wu$���-�H^� ^��x�L�$HC��h	�'a�j*��kfY�Z8^��������	r�~��yg�����[�q��'<���^]-����.�Wh�H�xM�/^��Y�`f���S���8/Y6M�z�������V��9`�w�&��K��i�=v��)
��_��>\��������\im�V���$d������?�D�2�<��U_��T��/"������2�R�>�TU��bH�8�nqee��1&���F-�s������S�e��i���}4��}?��"�  �]Q�&Md]t�����b����bw�uW�����{A��b��"E�QU\�A�)��C@Lf���y~��;���������$��h>�ryU�~}�t�h�V����B�����W�.6�����_��(\J���E�����{X;
���������m>�����.�^�������������&(���U&�4A��!�;�pRz.}�.�����P__OG����Xt�����aV�;u43�!��:�A�����z���������2��&�x�8A5�	��G�zh��,1�����yW�y�Z���YeE��~r�PM�KC@��#a�$,YC@�*����5`)EAE]H�<	KV:�Pn��dXe�j�x�v���0�������F�4���c�m;*�D���L{�;:�/����E���6���~��
�)C���B�9YR'����<�	'/i@�����Y={������w��b
j+���2 f2����&���N���a�9:�}��a�{���u4���VPO
BHg��;�M�5��sT��{������Y�2w�7u� �u�aHh�����L��E�����~:6�@���}'�R��y����J.��c���>��������6&tzO��WU����o��A!���o��2��\^M�M�����f���]M�-�p�KsR��6E�Kp�Of���`�K���8{k3�qoI�����&(�[/!I;�hb&+/��3k�|�f`�z��'���y|A��_���t�Y��S��a����k�]��MP�����&h3)����4r<���g6�Iyq�K�q\���xG�IX����U
�U)�Wk�R��44,���0y��t��|Zg���*�R��|�'�'SG?���B��i��@�#f1�Gl�����4��%�*e�����5�����M�!qfH0y	R������(`px<NEA����0�sYW\�~p�y���c���b���5\FN��5^���h?G&��T���q*�_G������(�!��t��V�q���kaJ�ASB��ZX/�ik��Z���xG�IX����U
�U)�Wk�R��44,���0y��t$�J���:J��4���@y�	
�*�hh��
4AZ����2MP��(�@ ����X�\S���G:+q�
��	TO����}�x���N��Y�e�����Y�h�&(���m0Lo��B~�\h;v�����'�J:��H�~����:�g�f��=z_��T����qDg�!��*����d
����R����ih Xu!a�$,Y�H�!	K�3q��������Y���w�����Jk<*ec��U��yjD>O��
0�u6�nO�������8C���J%�����3l�#��N�����#���]v�/Z5c@��1��?�I+����J�bC��/F�%�V����w�"8�7)�-���
0�T�p�R�@�"���=Hg���$��;J��@���Nj��4GK��6�����������c��y��g���W���O1!M�KC@��#a�$,YC@�*����5`)EAE]H�<	KV:fH��E��[��R�������I~��C������~��I��������G�3�F���52�)�F�O�������e��$�w��fHp�3l�#�6p���s�y{�8��������X���&���K|%����|�]���o�T7��&(����9
9�v1�ouH?���w�����X&�j�F4��(�\&���-VN�8A�D%�/Y����U}g���tu�����>��������S%�����{�8���RZV���k#�?�k�����g�����;���,��r��"7�u�?��V��;d��;i������������V}�i��g��Y��Q��
�i�J!������O�N+brXeY�~���i���Mq��Y/���(����w����;pnv�t^#<������p)��8����e���3���ax����}�(���V������?t_��:���6'y�BX{�����ZX��a�d�;2�N���Xq�"R��N`e��J�=�3d������7tF��#���A/-���i��4�GC�f�u�{���Y��d��++�z�����1��o1_hh]�U	3$a��W)�W� ^�K)
��@�(�B��IX���0C��0����/f��y�K*�cc��%�g�&63|����[���o��o,���9��(�Z����:C��S.��3��N����y�'/i�&t���r����d��x����]�#��@�8��� IDAT%�������9$��+�!�~|t[�i4���5������){��A�F��/y:6�o�9��Nb"jO7����rf`aR�����Cg(��}�w�G5�.�������mz�u|,���/����wv�e�9������s��..��v��1)�n�����l�����mB�{l�rb'l���!�o��?���x�D�8�>8�z��~�����?���?,Z���	�K"��PP|t�>��
?Hg�,��`���:V"\d���>�?)��E�X-������#�l�f���|������{���v��\�H07eh}����_9�F8�#�h��]�����P�+[��X]��K��0#��u.�?��=�G���ZM��eq��6g�,:���:YqOK���
�h�".��������5��8fH��5$�R�JA�Z�R���`Q������d�#a�$,h)���!�K/(�#96��Y!d������.�(�W��s�CF�z0�#�qL^�3$��n���=��E���!q������M��gQ��]q2��<
����]H�).�g<<<�L�M0��������77�
r5}G�PC2N�A���Gc����C����&r�Y�Nz���������s��Z��!Cg����O��C����W������1�����J2�nG���w�f�Jp�una��wN��}�C!DsY��;w�����dfg����|�+��i�
M0����g3��������.���!�as�R�Z��n��w�.�[�p)���������r���������-DR���%Q���tT��?
�_r&1+;�����'ZN�����IH�������c��S� ����).�K�\�p���^����ov�_wS���Sb-�r�B���f���af����{�Z����������W�^cTZ\&h��-��y����
dna9)��8fH��5$�R�JA�Z�R���`Q������d�#a�$,h%��w�R�Gv^. �7v��f6r����!+�)��y!�J�����������
fH0yvt�0��^�6?��2C��%
�B�����qJ^rO�]t�\����$y��]-t�����8a������^;5�;!��eIa+gL��v����N�����B�9��h���V)'�'r	����d�A�����(!>{���)�f��'tl��I�� A���5!��e���3}�z[���Q���r�}�/�0�p�������K~����t.B3wr��g��^�����������"�C!>=�.l��,d`d�!D����������Hiz��:��D"T�1!�� !y�K�f�C�h�����C���_��_�*����;��!$ej/�����;�;����
N���s..M���<�������W�������C���ZAmM-Pjk����y��/)*������B����A��#a�$,YC@�*����5`)EAE]H�<	KV:fH���1�"�����#�=wc7=�b9i�!��A�e����4������i�p�,'�Kz�O����qg�*Fz�u��p��9$m@AId�k��Qg�	���>�)���G�/�6��U�T�Q�n��3�T�P���>9�g��rb_��sm���_�'Vt~{f�,��<�!�C
��N2~��t��of6�F������C!�B��V��"�x���_�IP2~P-L�&(�e�%0;����;�3�o��U��E��D&BT����6��.]�5�ci5�����U�6��G�����=�[�o���[��O��O���0Tym�{�������f4�J ����W����6��	8,�\���<�zI��}(��$�C�%(�~>f��)����0y����_
��O^4?
���v��7�@ ���������
dea�O�u!� ��������?�P
�Wq$���%kH^� ^��x�,�(HC���	�'a�JG�IX2�6FN!��-�l5�����Id����
�����4�0!���KCG?U�s������{��=���������!�>������oZ�xy������J}��B`�}`��]���zFIJ�S�����}VE�7�1ssJ�~�,((O|L#�u������$�Z,���p����$L�"j���z
BT��K'z�
��FH�-�����J��{or|�(f>�z�������7��+I{�{�s��KM
�^dUELl�R>��G�y�O�y5Kg������I3���u�#���������C�7��������?j��	��?]i!]�������
���,�n�k��P	D���9����V�?����������_/�$�(�}���/�-m��9U��6�����j��+n��/)�C�p*/L5Fo�*�~�����%%����5���
�������n���q[g�����V��0���������3�"|�������lS�� �*~e����m�
�P]���^{?r?������5�.
�*����d
����R����ih Xu!a�$,Y�H�!	KV	KnI����s]u7�����s�oligt�c��^��O���k\mz��x?P����[�/�cZi��+J��U1C�C�Kc���3?tm��?��)�l����k��G�=(2=��fv~���4����)]�cU\����0��b����__���������_�$$���7��p������5��������X
J6*y|�3(���g����=�t)]�)��(9��B�$�Q+�m�v�����z�uuF��s1����������SG���@(�&��d�7v�:w��^v%���7G��Pz^/���w����i���wD����n�I���4va���=�������7A��&�2)�	��^I�Q����s�#v��%�����z:�����{����������!
!����*����f���om4�&'l�	�i������E��7��V���l���X�`��\�3�Gw�A~A���j�B3�v���6��������+�4A��&��0�����yW�y�Z���YeE��~r�PM�KC@��#a�$,YC@�*����5`)EAE]H�<	KV:fH��E��[�</��������������t5����xg��1�6�`"�Lh������V���"WGG�Nmd��W��tW*e���B�`���:Am��O�qfH8yI�^~l���c���]<��SP[� X��q�1��|>7a��Wt��������������������zRB:CW���l�h�����������,����������[���@B�d��d��&(��/����Q�w���;A��@�v��N%�Ur9������<��6�]����{�����Z>��~��Ba�~��A���j��o�wNm7
���jrn9�[]������)�]��|20�p\v�]�����[����{K���U&%5A�z	I�QD�3�Xy��Y��87;�?��<��^��j^�j'��������
n
��m�_���w�6A�����:>�qHo�&2~�����C�2��k8���G��5��u�gI�Ws���������n�P�!h����!�����\&����#,��H�����H�!	K���JA�*�j
XJQ���EQ&O�������d�����$G�:����	����6�(ec��@�#f1�Gl�����4��%�w�Rf�{��\[�1�=�4g���0 �z��������T��9����q@=��q�����7���<f�� ,6��]�e�$�_�e!�A<�������*8�<NE���}�\��9�B�.?��b=�-L�� (b�o�@vT���8m�P[����H�!	K���JA�*�j
XJQ���EQ&O�����B�@� ^TG������4AZ���MP�V�&(@�@�UZ�	j���=�k�k
�\�Hg%�����5���:�O���%��2(��qJ��Y�e�����Yj#�=R��L�q��6�7�P!�E�Z]�
�O.r1T�<�����+�_�r�����u��P[�#Ef��C��G��X���7���"D� ^��0C��! y��x�����EQ&O���2���L�go��qz�g�����������J�����G�<5"�'`G��:j��'�q����ue�!^i�"%�����3l�S��N�����#���]v�o85c@��1��?�I+����J�bC��/F�%�V����w�"8�7)�-���
0�T�p�R�@�"���=Hg���$ ����9P��;�����fi�����[�	�t�x�H��b�G����'������=�*+��/��bB�Z���xG�IX����U
��h���������EQ&O���2���K�x�W]{xrS�$?O���W]x�a���$lLI�����G�3�F���52�)�F�O�������e��$�"����P3f���(m��M�����pq�;3�AQm���&X��M^����J��S+&����{����n&�MP��]�rr��bX��q��0����_8���d\
����Q����Y���
�)'(����%��:;���������}�U�g�c�������?|�dUx~c��vb�UJ����{mDb�gv
�Q���L���41c���1���\#�Y�F�.��t����L�y'-�3�����1]����o3m���r6�4=��Ua�"MP�"Ds����������iEL�,��OV�;m��)f1����A���P�G�������K���������goL�� v��B�}�Qv�?�D&�����{�7f��a8g� $ecK��K�:/�eGNj�q��CW���X��2��o��ak�0��A�<Vp�%u�R��]��>R�AC�f�u�{���Y��d��++�z�����1��o1_hh]�U	3$a��W)�W�A�ZC���E]H�<	KV:�P~P2P�f���D�j������������_�>�q�m��-FJ�����7�L�����G�p-���h�J�!������Yg�um��8����4`:^�r�oC�i2
HL<y�	�������C~��-����}%��!Q�^������N�a\��iU�~�PK�K
J6J|��*�}��qtwk�P{���e�%�0�������:�@������kG8��w��7�M\�m������c���|)������-��	�6�<�����pq���������I	v�f�mLd���~�m�BH�c���8aS������}���? BH�i�������37�>d��L6�a�b���#�1Lo�A:;f�%�0L��B����$�s���~�9?����j��.����[a�����q`�N=G�h��R�K�6��
@�m$�z;����C���������jAx��vo~ig�6�t��7��g����v;���k��I���/e3)������NV����>�~�=���K�usu��~ ^��0C��! y��x�����EQ&O���2����R���R>��^;!��<;���e���0~nx���S�qd�!��+y�D�����������Hx83$N^��"0]3�)��,�����#NC&�{�a��a�S���9�����������E��a��Q���_A�����jH�)0h0=�hL�4p�Vr���D�?�IO^8����v��Sk��!d����4���u�_xu��=���2>��}r��CI�����������Y����-�{�������x!�h.Vz�����������{{��ze0�����{{:�lf��_������!�7ln�U�_+w�M�����e�ck.E4 B�QV����|W�a���w�1�oP����6+�}
3������jn��|�n����s���[�eT�iG�w�7r���2�tI�x�H���A:�����V��9����~g���-������5$��!�ZD3�zI]JegHBz,�Qiq��m������k�J+���9��"��xG�IX����U
���E]H�<	KV:��V
3�]�������KH�{��Y3����������T�?�`�����Z��M^3$�<;:d��X�Q���d�!q��D!�Y�����8%��'�.�V.�R�h��n��:�C���o�0|���CB������B�����3&�;b���
'��{iI���jd4|�l��������AT����D���G�_�������V3n��:������}� ����f�2{����N�-���(mLt9��>��_u8r��s����%������x:!��;9���]q�`q�o������ZR�!���G���j202��t�km��H�P�4=�S���t������O
��^)!~mm���
jkj��R[���^R�eef�������lT?+*�'^Y	@�m#e�����Y���2�f����X���T�Z����AE$_�h�R�/�K��I�_RTR��s9!��we�xG�IX����U
���E]H�<	KV:��V�h���Sc���X�H�
<�{��Y�I�y���.��?'��l}�d��H��`9!\�2��x��'�;CU0�c�K>�/�!i
J"�\���:;MX�u��M9��<b|9�����������t������Ro��9>s\������k{����">����3g9��9�j�u��p�����3�~3��4���|����
v��w!�{�}���L����jar5A/#.�8����W����~#��r\-R.$2�Z_���vt���	K�yfF$����9??r�]�.���z|�th��~r2��0���kK���4��|6��W����������DH�a�'�j��B	�	!B�e�Qi_>6�J������d��W�{;�A|4���j�z�����__-ed���%������v�BDAC���1*+.�����H�!	K���JA�y�sC���	�'a�J��9�\����e��cok����,�,�@_��}L�
BQh�4t�SU�:G�]x���8����)��^��"�J�<�[�9��"OQ^yvZ9B���^l����+�X�B�eI�s�>W������
=fnN)������)`����u�����CT���~u7.4���iTD-qu\OA�j|�D��^!7�	�%��PQ��RS�M�J�>�l��?o������;��fc����GHo�P7J��
�bS>�~��lmE�����!.�����������������\m8b�������<}����W����������o�b���w���y�� ���a��E������/�������3�����2LC��&�$�����bm
D��2?`���_�I�����&�]�?K�	��P�G
�}��\����7vS��L���A�������r@��#a�$,YC@�*���

��.$L��%+d@���s]u����|'He7�w�{Y�Y5q�0��������i�������C]N��B���o3E�+���� m�8J�<�U�:`i��u�����.�x�����
�0��aL��2���o�{�&CHI����u�E��F�?�6���LP����1�v=����m$:������������R��g��������}(��+�����-��D�A���k]����=cW����K���NqEE���
B���5�[����k�~^������YWg�~#�����U�������y[�W�Q�M�-t��o�zu�b���J.��o����(��Ug��;��a�4l��;"~��C!]��bV�\sap���X���BH���4va���=������&�~�1���7���������C��B��s�#v��%�����z:�����3dgVE�x=D��E�����yALU��>T���?S���x���A�z9M���Ytaz'�[L���6I��������Xt�����aV�;u43�!��:�A�����z���������2���d"�z�\g�R��[�f>R�C�=�B0�����yW�y�Z���YeE��~r|����! ^��0C��! y��x5��5�k)����`Q������z� IDAT��d���%��#^�����%�w7�vv��0����%�^�;Kt��A�9��YfB3�m��8h�������:::�tj#���*L��Rf�!���,��f��Hg����4��������=��������m1���Re3�z���s��|E'���0���>|�����z�:���|+�'!�3t��������9*p�=zmy�b�,p	�;����e��:��h�[��.�`(v�������J_r
�;l_n��c���y�e�	���s^t*!���)�v�����������	��S���U������=tB������z%�WSE�s��~�	F�m���[��V���<<�m�p��v}�>�]�f����q��8fb���6 4A�I�m��x������������1��E�e����Xb>�S]�����f��+�
 }�I��D������<��^��j^�j'��������
n
��m�_��;���a����|�������!�����\&����#,�z�ip]�U	3$a��W)�WsA�ZC���E]H�<	KV:�P>P2P.9���vOO ��~����@)�2�Y
�i1b�nq�F�M��H��Z�� R�q��kb�;��g�&C���`��ZO��Q���x����;�����sYW\�~p�y���c���b���5\FN��5^���h?G&��T���q*�_G������5$��B����[U��!V��c)}EL�MP�uG�}��ue���f���@q������! ^��0C��! y��xU
����� 

��.$L��%+	3���rA�����/9�44AZ^��;�u��R��f��ui�Wq$���%kH^� ^��x�,�(HC���	�'a�JG��d�\/��x�	
�*�h%6AM���@ p���cr����}�x�����Za�g]cW���S�DZ1m6j���\��	�4R��>Q��
0��,��R��@s�#�������W��)�	�8�}�q��/����.�\�b���������H�~����:�gD)�^@A��C��G��X���7��M_e�xG�IX����U
�U)�Wk�R�<G�IX2�����m?N����V�{|v�_WZ�Q)��z��S#�y���P�M<��SW��+��J#�+�4C�C���9�j�9a���/d�j8��W�w�5�h��	����|8&���S�*��
�o/�m���ZA#^��a:�����H�@�:*�S��
J]����=Hg��r���������E���7A���p�fSy��yo�
I\/-y��������������c��y��g���W���O1!M�KC@��#a�$,YC@�*����5`)�	��@�(��
�����H�!	KV	KnIr�K�������&�y����{��&'acJ���;����������b�t�?�����'�G��Z���J�!��f��y����V�����<�wf�����cM�f�����/���W�VL�qwq���9S�L���7���(�`�������a�=��p��5���`�M�>J3���|{��S2NP2Q��K�A)��F$ff��������/�/E�0t�����l.�(����!�0�y�8MZ����0�ka�������7\k?)�����.�t����L�y'-�3�����1]�w���������*n
�$���9v���Y�w�[�W�3l_n�������B���9�y���C����VY������I���~�����[����S�����j.���,r�_��G��SNIk�	>~;���JVU���7��ql'|�n6����Qv��&�B�*�o�VC�&(�����`W�F����o<t������wu+�OW�#n�6���7�n������~V9�U�����Lmo�b��`�bv3{���~�^{?r�v!�[�Z���xG�IX����U
�U)�Wk�R*���`Q���%�C��0C��0����/f��y�K*�cc��%�g�&63|����[���o��o,���9��(�Z����:C��S.��3��N�*��>C��%
�����\��Pw�LO�x����ks$�h����V���B8�DQz?d���nK8��q���U]�A��5e/Y4(�(��%w�������&.�����mt��T�-���������:���m����'n���CHP|t�>��
?Hg�,��`���:V"�������7��Y���:��9�u�"]�Y�X�qK���u3�6&���C����������|J����Y|����>��k��%r����b��n.f�q	��u5�qZ}pn�����M��&�-�|X[��Wno4:��w�	B�^��������g�~�s�Q�^��|M�[/�u�!f`aR�����Cg(��}�w��f���c��"����n6-���p:s��A�
~�uE������~};��7�n��=6_91�6�y��������G�3�*���;�d�=-���7�����d^7W�V���D��H�!	K���JA�*�j
XJ����H�!	KZ
kcdH��J�H��-vBy�v2����.���c������L��>C�W��&������qg{��pfH���E`�fvSf�Y�=yWG��L����0O����y�s�K��1i;��|X��f���W����;G8��q
L?SE4
���4(5���
�q�n����^���{q�d��W<�����Z�:�LbVv��m?oO��6�_R�Y�k	���_�������t�8������_'���C�fV��	�Q�M]\{QBH�{�J�����M���N�9�l��
�9����4pv��!������z�C����i�������������r��������{k�����^����3�3��,X���s��SO2�����]���}�4{�,�j��"NC"~�����D�K��������%�z����]�!Ze)�M�����p����#�l�X�5s��]PI�C�!9���
�7ln�U�_+w�M�����e�ck�����`a�J��m����7o_[VZ��-���$(��8fH��5$�R�JA�Z���y�8fH���V��|�/u�pd���yc79af#������b�Z����L�W��^K:���`��gG���5j���V����4 B!�r���)y}�=!�w��r9�G��u;w����>~������/z�������%���1�����o8y��KK�?��P#��f[��<��%���%�&��Y�/�:Y>�\z���{7�L��,�W�����A����c��|U�gm���Y�w-�����gN�KE��S~�)��}f���<���,`W����!��vst0c<}�J��J�CQB|vo7SZ�q��p�P{�A����52�U�1!Qr�����]��iR�������a�NN=�lW�+�$DO��M����,�n��!
�0S�9�"��x��_XH�e�n�h�U�����]�����d�}��m�|�R���@��!mP:��6ag�|�_����Oj�(-�_RTR��\�G!-y}\�@��#a�$,YC@�*����5`)@���#a�$,h�A+"N�I_:a�#�7�p7v��(������xut����ek�'�yy:��hx3$�����PU����q�l	�p��9$m@AId��� ��s�}w��4L��.����*y*����O�����������o��������\�����O�_<�>2>�
�s�,'�?��8a�$��GOg~�����h�O5����8�k��?[!�E��7�I+?�&w���9�.v���o=��:�n�?��?�+g_��d�k�>?u:m��3vG������	"�M���+�//#.�8����W����~#��r\-R.$2����M.%���|`��8j�������}�>��'�?�@����=�Nc1>�!�+��n��"NC�u��{iG�.�������afD�*�����GS�fk��$ ��B�9��C�1������d�2���YY���n]�(�c�8v0Fe�eZ�)��U	3$a��W)�W� ^�K	B�<T	3$a�@�9�\����e��c
/����%�E�����iTa B!
M���~�
\����/u��3z"?��W��z�D�"�J�<�[����W�G
�<;����I/���L�{�X�g���9e�����gU��37���������0R^g��ZRj����CT���~u7.4���iTD-qu\OA�j|�D��^!7�	�%��PQ��R����"���0Y�~0�o:Cwd=X�M�S�����G�
����y���0���$�}��&'^����{UY�W��d�.���T]��bV�\s��I��:��Y����;\�M��U���J�����/w����?�,�$��������q�����9���������������!d4��W�E���)�M:;�s2�yH��R�j�v�����@H�f3�z�U1���9
G��}>9��%b���7�T9����"v�U��l��<��7�DYm��a���>Q��]�������[a%L�����j����^8�j�����>��9��
����I\��'4��~�|�7T��������;=e�th
�KC@��#a�$,YC@�*����5`)�
��@�(��������H�!	KV	KnI����s]u7�����e�oligt�c��^��O���k\mz��x?P����[�/�!�v-���O^3$8D�4���:�C��<�����"i��	���V�}��"�3�jf�7��K��KK��u�=V��i
m
�.Vp.������N�(�I���uKB�!�!;�qs7�m
h�[��.�`(z���e��d����<�R�M�-t��o�zu�b���J.��o��	c�3.�W�����K���m�US��T0_��������hzMN�(�`)=�>b��Xbon����C��ZX���s���s;5������"��L=��g@�����������dj�u�����{��R�,�S\QQr�{��di�"���!������!D�x��:#<���wk�a~������G9MP�4���h�[��Q+�m�v�����z�uuF�[��7[����1?�_?��s��f�4�pW��M������q�={9M��\�9z�����M�X�I�����m�����M��8�C����s�3�]���O�!����k�Z�E��wa������m�M����"vy?9v����! ^��0C��! y��xU
�����ih Xui����Pq$���%+��%�$9���ylx\Rxw�hg�z�a�ml��D�t���
0�e&4��������K��|y�����M�6�_���d�+�2C�C!d0�dI��6C�g��gH8yI�^~l���c���]<��SP[� �/U�1��|>7A�g��{���st���������1�h*������V���l�h�����������,����������[�@.����)/(���	�u���r\���������9����N������j�|�����_J'�uI9�V����f��k����+:���pnv�d�V�q��x����,	~_
3u_x�^Fqu
���~��\;��4��/����Q����;A�
��K�&(B:���/g>��&<�h��mW�s�9��������Mi�1H�ExiI�lX;�E��*�����gW�^�z����$n�/�<��^��j^�j'���U&g�����s>����J����g����c=�H"����'�/��fu�4$���������>�]�f����q��8��7ABF��}���2�//nA���b4�.
�*����d
����R����THC���K�L���#a�$,Y!$,�%����{rx1u���
/J��g5����Y����6e�#M�kI �]����?���w�g�6M���!��%H���7*>�����8)w,t�K����>��<����3�������f��k�����k�,�?��9����S������o�K���8�B����[U��!V���)}EL�MP�B���^U�����/h�vG�����5Cm�KC@��#a�$,YC@�*����5`)EAE]H�<	KV:f%��xPh���mk��>��GN��n��r���w��z)N[3���4��8fH��5$�R�JA�Z�R���`Q������d�#a�P2P.���&����+�:nY���n��y���V��H
�Kq������! ^��0C��! y��xU
����� 

��.$L��%+	3���rA��4AA+;�u��R��f��ui�Wq$���%kH^� ^��x�,�(HC���	�'a�JG��d�\/�����B�[���&(@�@�U��5	�b�@���k��u�^g�)����wRk���u�]>^O�i�T���}V�s��'��H�7�D+*�D��p�KE��R��i���������0��
���������E.����n*�l����g�<��S|�@���L���lO��!����e,Ne���Gt��{FZ�U	3$a��W)�W� ^�K)
��@�(�B��IX���0C��f�<{�����?������]����xT���?�����|��-��*�nO�������8C���J%�����3l�#��N�����#���]v���4c@��1��?�I+����J�bC��/F�%�V����w�"8�7)�-���
0�T�p�R�@���t}�Y�����s��uw~'�G�"��MP��(���C��j���B���o�l��������>�S��O��m_�){�UV>^�_�?��4�.
�*����d
����R����ih Xu!a�$,Y�H�!	KV	KnIr�K�������&�y����{��&'acJ���;����������b�t�?�����'�G��Z���J�!��f��y����V�����<�wf�����cM�f�����/���W�VL�qwq���9S�L���7���(�`����'��a�=��p��5���`�M�>J3���|{��S2NP2Q��K�A)��F$ff��������/�/E�0t�����l.�(����!�0�y�8MZ����0�ka�������7\k?)�����.�t����L�y'-�3�����1]�w���������*n
�$���9v���Y�w�[�W�3l_n�������B���9�y���C����VY������I���~�����[����S�����j.���,r�_��G��SNIk�	>~;���JVU���7��ql'|�n6����Qv��&�B�*�o�VC�&(�����`W�F����o<t������wu+�OW�#n�6��D���m#m)	�6�������8��������WV�3������c��b����4��8fH��5$�R�JA�Z�R���`Q������d�#a�$,Ya$,�%5;^�4 �U����T$��;KH�~Mlf�T��92�)=��.��X2i�s.NQ��$�>��+u�D��\Cgd���U�$}���K�	�}�����4�$&����s�e��H�5�mIe%��+a�p���
~����p
�:oM�����G+�^�hP�Q��K����w��7�M\�m������c�,�p��Q����u������u�O����1�����H}�~���Y`I�0�u�D�{-����oF����_u;s$v��E���6�����I	v�f�mLd���~�m#����+ww��
bce����kw}�����K�8�;�5��=�\�2��R�j�������}����v2�L&[l���.+���ht���6<, �(������-��	�6�<�����pq����^�"LC"����,:4�{���:P�������!��&�����'E~)�*K�lZL�g�t����~�����c�=����j�o=��%���w4o���,� IDATi<{wg�����}���{�y�����b�
[���U	3$a��W)�W� ^�K)
��@�(�B��IX���0C�����������[�,�2���d��k�]�������!#�O=���}�8&��M^���CG���"����8yI��t������(�{���8
���
�a��IO��.$���3b&�v�
\���Y�(xs�� WS���p5$�4�~4��h8d+�iPj"������Y����-�{�������xD'Qm��4�:|u������;�~��h9m���N�l��G�T�0�;!D�:q�O�����z���C�fV��	�Q�M]\{QBH�{�J�����M���N�9�l��
�9����4pv��!������z�C����i�������������r��������{k�����^����3�3��,X���s��SO2�����]���}�4{�,�j��"NC"~�����D�K��������%�z����]�!Ze)�M�����p����#�l�X�5s��]��o�[��,����lO���1*-.�m�����}mYi2�0������H�!	K���JA�*�j
XJQ���EQ&O�������d��03��K�?�y�D�d��M�B����G'&����X���
���g0�_�jz-��&��L�2������[U83$N^��!�0��wX<���!�� �E���XJM�����Bgp�z��������`H��Ss�SB�_��"p�$�oGL������w/-�v$p52�`�U����\�i� *YrPj"�����������'�8�ws�4��2|�������]?F��W�z�6�	�Ex�b=<�?x���TD�=��!�"N�g6�I���$v5b!j7G3����$,��9%�g�vs1�����	g5��w$H�{Y#C]u%7f�������&�Y)��f���C�v���OB�����-�X�2`�&�.��3u��-���������g[��o��!Ze��M�������ONf����Z�f������������������1>��BHK^� ��H�!	K���JA�*�j
XJQ���EQ&O�������d�E���85&}��u�������M��XN�w������e_�4��i�(���Do����x��'�;CU0�c��e�%�����%�A���<F�=@��}n�0���l�3����4*F�>�6gtr��[�o���;s\
B��sm����>M~�4�H���+<����h�P������=�����M��>��j���q��7�B��t�o��V2~P-L��??r�]�.���z|�th��~r2W�F&S�x��}~�t��g8������3DZ���
V$_^F\3p�sO}��#;�F�[��Z�\Hd"$����\J�aI��ZAq���C#.���}��O���0Tym�{���b|6C�WRl�$�E��$T����6��.]�5�ci5�����U��7Y������j}I@4	
�"s�n�[��4����l��[R\��,��i�.D�1t;���2-����*����d
����R����ih Xu!a�$,Y�H�!	K���)�����-��kx�D��-�,�@_��}L�
BQh�4t�SU�:G�]x���8����,��^�d"i�H���'�;��iq�U���+�N+G(�u��m��5w�+V�%)yN������Y������)��u���<�1�������T����*��:`�_���M�&aQK\�S��_:���W�M6Bn��<TGT������R��|g��d]��H�������������&����%a(S��Q�%K��WPg�������������������Uk����(�@-.Pq1D��� K�� !�����I�������=�����N��%K;��b�t��� �������w�g��7���+���$�k1�|�P��{�o�U���:�0�@7n����d�^������6��/H��S���*������O����?{u��p��}��~�+~_,������?{���}�W5�!�A�<�.�knW�o2�������G���*�rT[Q���O!���d�Yne���/�4����c�����q����e�K�-e�x����ZU��h��Ra��!u���>R�K\����������4Y�Q�?����h�pn�[�
���
E�x������Cu�Wx��|'x�����CS�/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3�a�j�a��I�x�6�_��}u2�A�G��[�Y&�z:����w�]���7��V$�f������(�^S���F�������9Y�����#_�
�)�l����K�������QLk����v�JW�<���n��i�?����l9���.�_����������oI(:d4h�kA��L��Q���9��������~,�E�V_���<���e������������g?��&���8_V�����v�����v��v������^=���c��)�,����y%���mL��������y�L T��k�0���A�U������C��w�5 0���#��������,c�C����E�����0!���&(B�n��*�n��g�B�n!��_F��t���6d�W[�
4"�r4�	��B��}s� ?f��C��}���.�q/�hxK_�b�?h�$������������)!�Y��&hmMIb�8����&�L��7_������-����������w
*m�*|8��8����h*�?m�����u [�wq��c��{TQ����
+��}Q��>fH��)��*�W� ^�S)�� �]�a�4lY�h�!
[V
[nN*����Yw��������u\�u2��[�xg��.��lA��UwgW��w��|<�������}+����1Rw�F*�?�B&c"�k%���?�V^!a��4����5s��y�{��
��/,���If@�b��X,H�F�+:q�F��'��7Q������g��4����u/"�9�u���~=}G�lI`���J��9$e>��A����K�l����):����x��Kv�@TS�~�m�g�������W)�Eo~����e��6�aN���[�*���N���Z��>��]%�%�+!m1r�j3�X����4k�)�������MxYT]�/gg�<8��x��p��\��C#M��
x�C;�_�/r���]q����F/��f��m���[�T����>�eJ��A�MP��������q_r4)�B�/{�����W&r_Ex7�#����V�B"��EbI����S:���-�xj��=ws*�����?v���l�k��dv�����|��+���P4_8���G|;(�J��/������4s	�����<A�����U��S
�E��h�!
[�H^� ^��x�L�,H��`Rt�����e��a�4lY-4l�9����w��$rj�{�_T��	����#f;�*_nDa�FW�k)@���H������p���U�!q*$(^���^�v�<x����D�����,���������{Ee{��4���<f���@bV)�F��I>�������,��N'��P����������Q��(�!�b�-�Z���C��0�/����|�R�K*"���r_�,Z���)�/��k���E@���a�4l�" y��x�
��0�� 
�I�&O��5��B�@� ^�6A����s>����������%�(:��R��f��}Q��>fH��)��*�W� ^�S)�� �]�a�4lY�h�!�4�@{`T�l�^��4��J�6��I�E\Q���>}�P_���W}4���-S$�U�VA�z�R�AA0)�B��i����0Chh����&(h`E�,0_�����/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3���fA�h���/�o��6Az6AzE����1<�D"�H�q�l0��5��=e�{k�Nj�0���x�Q��t]H�������������Sg@�ip�s��Vf4|o�X�S
}���\�a��b�~��b��^>~�vv���Rc�
f����7�\~��'g����uEz�U
3�a��k��U�����iPL���0y��q�!�,kU���Y�������������wN�
��",��:��S���$��`��0;O<��_[t ��d�x�f��
��^aS�����)�pk���g��;5�h��	��l~�/>���_�-�J���^�5`S�P�@��s�"8d4�4O"O\l�ic��+�Ds��asU}7�p�����<�f��o�jtE�����5_���T��}0�&���������xTQqgU_R�IQ�/��x�G�i�2E@�Z�j��7`*eA��+4L��-kd���2��V5c���__��!tR�����_�y��=��f@P�YuX=�f�}+���#����i���"�}D�R�8C�UHp�	6m�����f�8���"n
������< n�F��=��<;�j�Poo���;���a��b�\�\�L�~<��f������?$Vq.�bDe�Ei�1qv@w��pZ�	��<�T����������� ���P'���lK0�^u���2���0����&!�0��W�����WB�b���:��U�DO���f9)����B;B�A
9�O�v=���*������kx���X�����JA
�83a�\'��H��Y��v���`�����sl0�}!��ucj���N��K/��sK��-��D�6AM��^�+�����~9�����,��9��N��cH9��(��p�@H�b�������C������s]�HE��
��(^z�wzR�E�t��[���|�����`0h����qq/���G���3�%�$?q��B8S���%���[��_��b�������|'��:��o1�P�/��x�G�i�2E@�Z�j��7`*eA��+4L��-kd����2��V�.^�*8�[����LU��;K������������In12�^+c�.����gQ���>��5Z!Q���+�����:�l)��8yE6b��+W�*��Ej@b���O8YTzi�����Mi��5���!Y�na����G�&,�~\��������lM�-�E��_*�����8��w�J��^���qIl�1z,������#��f��|$���B���#�1�h�6/~Q�a���C��kI>�?+<��n����Y#��G�������lLj�Wg��cN[.��C@+i��+.��>�xo� ��C���v�b�W����d����������u���2�������3�z��>6V]-<����>���������b��������S��ze�2��������yg����";`���/�4�Ll-J�"B������?
v_�>�
"Zl��c�x���"��e��M)k���ff�p��������4��g�	g�����B8S	�2p�v7��w������a>���Ku��������U
3�a��k��U�����iPL���0y��q�!�,k����Z��2���*e���Bf�?F������*|S�87*|���{���+�AP��+$*����������Lx8'�h@��������E����%N����2����}��3)9E%����
���9;�����U���W~���}E�P}2n!��Q�+���A���A���w6��Kgsn�����y��\��8�LDt�q����Qk��'geg\�������R��L�Z�����*��'wa ��&�Z}������+��c'2�%�����7V���!d��|�{����o�f�e���]�)�����OM��X��8w��o�� d�������j�����,����e|n����w�
k��]w96\1b��8��Y�V��n�����������+�?s���"3`���/�4\�����	_��yu7������9���.�����������A�����*�5�����jA������X34?�4d�����JZ�i�������#[��F@���a�4l�" y��x�
��0�� 
�I�&O��52��e��U��u�������v�XB��Fg!�z��'�����H��Ie���U��T5��rx�k�B��yq�C�������a�
�B��
�B���:W$�?�����R�
S��Q��;������	�F���?(���y]!$.}x`U��IA�>�����w�8��A�#�s����Esz�FN����e�A���w�� f����'3Rb���>��#�o�d����Ly�����gEF��l�]�{�H������f"f�)3}�>r���Lv[��,�Us���)�bvvu�����L��*��0�Avw/+V�q�gNX<k�������{OkH�U�.)Y�>e���;����"+�]u��l����W%��b?�����]2�l
�"��b����-�7���~_P�~�i�a�h�YV�������|;���Z$
�a�IDB!266BH�SIc����Z��21B����������e����
��*�Wo�T��4(&EWh�<
[�8��`���y�5�*�������-�n��bt��k����k�J?����9�/�Uu~:��hx�y��j����^6O�!�xq)PR|:��u���y�~;�a��W]6uE}�<���X��[n�KI}tu���Wf��c ��9�v������'������ �]<�������MX<����c����������E"�H�O�������_d���0�����jf*|�������N�������_A�{�~������*��a�Z������c��f�p�����n��/J�����l�:��^�K�
�����v������=r<mS�$W!����]J��*��ZIQ��������y�{�����0Tqi�w���f$bG�WJl��E��"�^a���._�9�]I������_�[od������R�m����B$A	BH��aXsL�����6���g���q\�����R=���������e����
��*�Wo�T��4(&EWh�<
[�8��`��J���������i��C�jH���,V��N=�b
BB1X�,t�Ce�ZW��oEi��q9n$��Sq%����B�|@���V��+'^u��,;�����H���f���CEj�(E��K?V���*��&�����O{[��S�I}�-	����P��Vb�
^X|&�qm
�(�Y���=!�c��#����_�!$�#B�D-+JG;[Mz�[�����;7,��4�t��A&2�$��2i%�U!��|�9���}Y"���k����y�6�%��Z�e`�`C��j3OD>���4dz���'��?S�6���R�!.���Wq�����z�n}�������9�r|� ���D_8�/\|�����&��7�+!�$%/��;��������\�7W��4-6�������LL}�W���c�,�����B�kej"sP�Y��E8�
�%|��"����^��!dw&�c����)��6�.@���a�4l�" y��x�
��0�� 
�I�&O��52��e�j�x�6�__�kQ�������Z�_���j��0�_WWWWWW�a�������=����B��w�2e��� ���
qT^<~�����<���:�e���.�x���?�!�ej�
#����N�����L)K^������{W���{�v�l-)�P�Y��y?��X~��62�]0������r��J�sr3��������yu�xS�S�&jJ��_����<���e������������g?���N���8_V�����v������,��v������^=���c��)�,����y%���mL��������y�L T��k�0�a��"n�<�a�^����A����DNUZ�����������m�Zf�]��WQ��c�!�n������c_���r���M����Oo�,g_�UF�7B!c�uI�e�W�3D!F�����/���\���r2����?H9��(��p�@H�bc�oN����w�������O��<��
o�+^l���$T}�������6e!�;�x��Qe�pZn��`0h[Vy�x��� IDAT#����Ie�+��(�����L��T���
��|��,F��]\���k���U�'����
�j_������e����
��*�Wo�T��4(&EWh�<
[�8�Pe-�e�e�j�x�6>���X7����K�N��-�e��%;x��k|^L��JXV��]]���^���OWW����_���He��
�!������Z����O�q*$,^��W��f�X?ow�Q![������z3��YL=��I��|E'��h;�$��&j����z��>���x5�+!d0x���+�����;2dK[X�TZ�!)�q�>�6
���\��r��^y�KS�����)Zy|�2(�6����^�+��J���mS����Sw������7����K0�]�0�\P�-~��l'S�a-|V�}���������k�w�PTvv������KaV���&�,�����3n��D����Cv�
?i��{�]�zh����En!��+n�U=��%=����-Sr����������L��1h�	����R���6�K�&�U�e��X3t��D����
2����V�B"��EbI����S:��	*�����&(�T*y����fi�����y�*�����~��
�E��h�!
[�H^� ^��x�L�,H��`Rt�����e��U�2[�Y�������;rD9��=�/*)���z�l1b�����F�nte���$2�H������p���U�!q*$(^���^�v�<x����D�����,���������{Ee{��4���<f���@bV)�F��I>�����m.��W���|(�E�����v����
I�!�b�-�Z���C��0�/����|�R�K*"���r_�,Z���)�/��k���E@���a�4l�" y��x�
��0�� 
�I�&O��5��B�@� ^�6A����s>���������y��Eg0_�����/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3���fA�hl�J�M����f�_��F�_�
h�+��`�����k_������e����
��*�Wo�T��4(&EWh�<
[�8f-��x��-����K}�����E��h�!
[�H^� ^��x�L�,H��`Rt�����e��a��2�,������ �-�r�&(@��&(@�hp�"8�'�H$	?n�
���F���wo��I-f9��2j���i�����=W?T��S��ip�s��Vf4|o�X�S
}���\�a��b�~��b��^>~�vv��@
��K�����r����]?�#S���W}4���-S$�U�VA�z�R�AA0)�B��i����0C��f�>g��w2��
��^�9�6�������VF����E^L��j��'y��-:dH�B���J
UH|H�
��Ha��{���7n
������`����0 A��������T�k�%Y�A����lJJ�rv1@��&��I���c��0m,��tE"�hn0��=l��/��#�{ca{�G�,��MP��(��4���K�Q5C�r��������:�v���QE��U}I�)&E��(�U
3�a��k��U�����iPL���0y��q4���-���-7'�e������
��}�����>��7������wVV����J�!���h?zwZeeE�Hn���!�+5V!��&T��G
���
k�����p0+�V�0��X���&o����
����&
�������S�,6Ay/�1�U�����n�C�!�����'nCH��\��������c����r
���)Zy|�6(�������y5<NA����Nr�+��b�����we<AUa��3MBa����mA�����p��u��(��lY�rRtI���v��r����z���U�w7c���+f����ki��nqf���N�[�>[���/� ����]�����`J�B!�����k_
��^X���f�[���m��:/��W|��u�rt��YT-�sr�^h�"�rT[Q8}��������
;|-���
ne����;����>�p�qQ��(���F�B�,�/���|1��H���}�����e������[!��B�o=��E
����&����'����moJ���`s�����������
�f�H�i(�7K����*n���c�\X���o�;A��A�����}Q��>fH��)��*�W� ^�S)�� �]�a�4lY�h�!
[V
[nNM��
���<��/������2r�&13j���k|�[��������&m|,��GTp-����x�VHT<���x6'���N2A�+$N^���������f���|��N�^��h��5`S7iMo3�sH�[��*����	���}sz��/e?[�|��A������;6f�"N������������Ci\�p���b~rz��'�Y�j'��_�9�����c3����_���af<�P��Z���JF�����j;v�����l�g�b��-���������K���JZ���7�-�<������g���^n��{�|Wo7�M1fW/��{Ie�}�3p[�g^���}l��Zx<�'7}Xk����7����u�K%!F����o���e��C��'����]��Ev��Ka_�i(���Z��E�~���������}TD��$��������E�?�J�^���N�7ep]��	S��.�J�!��Qn="������nv�;����=&��[����7�����A���%���i��^����G��UOE��h�!
[�H^� ^��x�L�,H��`Rt�����e��a�4l�)���)C��/#��Y!d��cd�?��8��W��s�����'�O�B�k�B��
�]\����;���S!q����Z;M�h[t���Z�4H�_.C|M���?��ST�~y�p� k�m'V�����9�/���i%�����d�BB���W���\����U��`�w�l�����<� �����'���Nb:N_0�:jM�������[��5����A�v��]KRw�\���.����YC�/�\Z�}%zu,�Df�D\������!������a������������+6�����{x�����1��>���L����<��O-q_�Y���������-y�p��a�`���.���"F���GZ9�c�j��ms��������s��g����Ydl��E��B�����q:���w9��F������0'�����YV�������Sw��Nb�B���x��E? ��|n="���75UY��5���U���7�����+����9*)*��n��iic),-)G6�6��F@���a�4l�" y��x�
��0�� 
�I�&O��5����e��0����{����|��^���B���_NL	_�W�J[����/��_�j|-����B����������Q�VN���+!��a�u�H�/~��;)4`��2�G��
;v�5���������;P�����0BH\��������=|�O7M'��qn��tG�P�a���H�<�, ,Q����U����;]6�dFJ������t$����^}{��)�yuc������C��"�kqo�z?p���L��>e���GnV5���cKw�%�j.213�B���.�����)�^�5&=����a��=n��	�g
61p� yx�i
��j�%%+��l5����ZTd�����o����������R��?yw��@f��MA_$�P����%���W��
��6
4�[MC4�����|���m:f��)B��'�����a������r���H"
%�!���Bdl�����&qqaq-�c�!����q
�x�G�i�2E@�Z�j��7`*eA��+4L��-k
3�a�@��
X}tL��	k��wa7>��a����7���+��`ylN��dU��N�&^��~^<n��"�d�_���Sp'^�C����t�3b����Nn"�U�M}F}�<���X��[n�KI}tu���Wf��c ��9�v������'������ �]<�������MX<����c����������E"�H�O�������_d�}�n��A53�AZJ���l������������k��r����\��0R-�]K�����e3g��vz�L���%���H�?6X�|E/�%U�t�j�W�[r�p�9���g��R����.%�s�|`��(f���������=���?�@����;�zC31�#�+��l��"NCf���	�Y�������Z�vV�����7��G��bk$��O�o�m�����N�����������e�c0�C��A�$���0�N����6���g���q\�����R=���������e����
��*�Wo�T��4(&EWh�<
[�8fH����1s?wi9����^��OBba+8��?��SO����B�!�P����[Q�oc\����T\��F�(�)Py��6�M��:�QYvzBi�>�8f���������zF)J�_�����MVy�7�U���`}��2P���N��lI`�L������W������3��kSPFy�2O��1�����/�
!����%jYaP:��R��|g�U�=����3��;����e_1e:��L��?�D�KF�����3S�N����kt��]�J�����������?�jt��7�Fzk2{�I�f��M�������k_�f�����������:_x����>fJ���/���Tn�������Y�����o����_�U�5���7�l}��������H9��(e}������f2�,�2zb��C����^�1rL�+����h��2����2v�Y�Yl-��O�I���ON��s��u���
/y�[�`�o�x�V�������j�3Tz�`������F������9V�qQ|���=uvsP��������+���v����K���)�E@���a�4l�" y��x�
��0�� 
�I�&O��5����e������Z�X��o��:� �sn����,�v=�������@p�O{+����w�E��~L��ZxM)/^b�[��d��S���q*$~�(�q6s.U��g�zF1��G{�5*]Y��NK�����oSX|y��{Y���/�jrtIM�f���$2��� ��a&����r��^y�KS�SH?�e�"G+�/Uet��c����r�������\��]e�lf�/�|�s`o���lZK�f�
�U^�|�L�������kr��y��u�����e�6���Fr�����P&*b��oo_����DNUZ�����������m�Zf�]��WQ��c�!�n������c_��Ef!c�uI�e�W�3D!F�����/���\���r2����?H9���O!�����9]�����S�>~K�?a���g4���x���_�P����Cztl������,�t�w�����n�����
7y��f=�l?��t����f��SP�iT�!�%
�u [�wq��c��{TQ����
+��}Q��>fH��)��*�W� ^�S)�� �]�a�4lY�h�!
[V
[nN*����Yw��������u\�u2��[�xg��.��lA��UwgW��w��|<�������}+����1Rw�F*�?�B&c"�k%��r?�����xE\yh��9c���=|G�l����
��t�h@�b��X,H�F�+:q�F��'��7Q������g��4����]!��k�l]1}��@O��![������*pI��;�A��i���/��8-�E��7A���?����]!�T�_�m�����A�����U
�b��_}��~����~�S.�����}�����>��>cW	�b	�JH[�����;V(*;;�ZfJ���0+��{^U����7�s"�A�!�r��4��(�]�PA���m�"d�w�������������bJn_P]��z���)�7�6A^R
��}����
����k�\��}����.�OZ��|���%5Op�^L�,�u��<�����w��D�O^��g�k��dv�����|��+�
*9���0s	�����<A�����	�TW����W}4���-S$�U�VA�z�R�AA0)�B��i����0C�����T����;rD9��=�/*Y�g�Se����/7�0u�+��� qWj�B�Cu�Z8�������8�`@f�i;c����E"~y~��?{��K�h�������=cl��O3w_t 1��W#��$����V��x��W���|(�E�����v���_�B1�\���	�!�Z��AP�t�	J)�%	��c��/h-vE�����5C}��" ^��0C�L��VA�Z��
�JY����

��a�G��e�Y/���u[��9�x������]N��Z���3�/��k���E@���a�4l�" y��x�
��0�� 
�I�&O��5��B�@� ^�6A���_��
J3���j�����Y��Ek0_�����/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3���fA�hl��VT���>}�P_���W}4���-S$�U�VA�z�R�AA0)�B��i����0Chh���h��b�h9`�W`�W4�	j��H$��7�S�\���S���V���
��}�W5�H��PH]ZZ�����NM���:�@�ip�s��Vf4|o�X�S
}���\�a��b@��R�����<������k��P_��<�`f.!{�~S��W�rv���L]W�W ^��0C�L��VA�U�s��`Rt�����e��h)0�9[�����#WP]�������X
G����g�at��^$��[����y������A�$+�k��A��
��^aS����s\{������s��]�����S$H�������J~
�$+1"�Rz1��MiBIQ��!������<�<quL������H$�
f���U��,���so,l��(����	���j����y�>�S����f�Y�>�S��W�P���Sv<�����/�?����E@���a�4l�" y��x)
���5���� �]�a�4lY� C�A�@�T�����K�#7�N
��<��3o�����S��e����z.����VZ
�-FF����*++�Er��$����HcjB�M{������f�8���"n
������< n�F��=��<;�j�Poo���;���a��b�\�\�L�~<��f������?$Vq.�bDe�Ei�1qv@w��pZ�	��<�T����������� ���P'���lK0�^u���2���0����&!�0��W�����WB�b���:��U�DO���f9)����B;B�A
9�O�v=���*������kx���X�����JA
�83a�\'��H��Y��v���`�����sl0�}!��ucj���N��K/��sK��-��D�6AM��^�+�����~9�����,��9��N��cH9�W�P����moJ���`s�����������
�f!d��qN���|w:���8���_�����/�� �d�c���_Ky���[Y��q����m0�������Gy�'5Z�J��'���Z���S�4�O��&(����*n���c�\X���o�;A��A�����}Q��>fH��)��*��� ^��WS	�
�I�&O��52T�4���bV�1�����e"�e������I��������#�~��2v��Ip�\K��#*^����"���:1���F��
��W4`#~�r�"�Y�$&�����E���*�!?k��4n���
f��,F���U���[�Q?�����s_�~�%��e�"G��/�?�lT�����W�;���v(�Kb��cQT�ON/~���5�X��#��4��a�aF���y��:00��G*��^K����X���q�uGm���]=r�-�hL���ecR��:�ts�r��ZI�`�]q�����{�9�p���Sc���/�"V�� IDAT%�]���v��]�<�3�%�I��U��m��y�������2h��L���a�=V_���l����.� �������+��	�}|��d�;sve?�[���ff�p��������4��g�	g������3f96�+af��]Gi�����-t��N�B���Ei\D������Ga����G�!jI�{�1�I�?�Y���t�k��k5�vP>�J3d8{�d��_�hP�0�VO���:{z���W}4���-S$�U/@U��� �]�a�4lY� CZ,���)C��/#�e��B�������]qV�o
�F�6uO:�|�8��p�D�����3�ww�	�B��
(3�v�2;��������i�"�6\���>���&%��������A�/z����]XU��q��PO+�W�p�'�:�u0����Zn�����#��Kgsn�����y��\��8�LDt�q����Qk��'geg\�������R��L�Z�����*��'wa ��&�Z}�����}#��c'2�%�����7V���!d��|�{����o�f�e���]�)�����OM��X��8w��o�� d�������j�����,����e|n����w�
k��]w96\1b��8��Y�V��n�����������+�?s���"3���OC�����*�5�����jA������X����7�����H������h���I�tE�O�B�����q:���w9��F������0'�������d�k��k5�vP:������������RI�6���6����rdck�_���h�!
[�H^� ^����AA0)�B��i���A��P�u�������v�X�H����B���_NL	_�W�J[����/��_�j|-����B����������Q�VN���+!��a�u�H�/~��;)4`��2�G��
;v�5���������;P�����0BH\��������=|�O7M'��qn��t+�P�a���H�<�, ,Q����U�x��;]6�dFJ������t$����^}{��)�yuc������C�]�kqo�z?p���L��>e���GnV5���cKw�%�j.213�B���.�����)�^�5&=����a��=n��	�g
61p� yx�i
��j�%%+��l5����ZTd�����o����������R��?yw��@f@�C��X(�E�P(��D$"c��"����������gr�� ^���~+��[�o>y������h�@��u�4D�M�����j���|*5�!����k9��!��_� �W}4���-S$�U/@U��� �]�a�4lY� CZ������X>a���o������bt��k����k�J?��Y���"YU�����W!����[��H8���e������%��C=]����;�����}�eS��%�d11������RR]��t���Y��!q�����q?��������.�|�vc!�C��vO2�s�X��of6.�2��j�H$����k:�D���x6��e����
_�-%~z�S�v�a���WP����~��s|d���r����%||�X���3\~;=f������d�6%��N������B�w5����-9p�w�O��3�U)�|�F����J>�VR�pr���s�w���}����q U\Z�v����������q!	� �!$A�>��d��l��d�^��%U�g����'�g\�bs���jQ�Y��&����M�k��k��R0��������6���g���q\�����Rz�C
��x�G�i�2E@�Z�T�
�I�&O��52��1s?wi9����^���7�{Y�Y����zZ�� �b�Y������������~�r�H����Jv5"EQ�H��������S8����e��!�����c��L��x�H��������k�d��}�^UnN	���-���)��>��v��D��K�
1{/��
>���6e��,�t����1���n���������Z������&}P�����'wnX<�wi�����Ld�Ije�Jv�B���stw���BFg7��5Y��>m6K�����@����k�f��|`?-di��^�#O��pm���>C\�}���f�M1��?����}���s����A�{1��p�^��4�����M��oNW&BIJ^<�3v�����AaQ�
o��P��:i��p���W��N=�o^f5�3�I��h�
������db����{�`�5���B�kej"sP���<4^!a�
���/�S�=}}�7���dy�z�8�&o�k��>fH��)��*��*xnPL���0y��q�!-����-*Y0��4�W��e%g���ap��.������n�6%	���{�#����^e�z�_A����B���_�v0�-�gs����a�'^����?�!�ej�
#�XfZ;���k�3�,yQ���B��]��~�m������C�gb����b����Ht��;t����b?�mG*)C���HKKKKK[,W����M!O�?���!����1:O�1b��9u�h����B.�������b63��U>�9��]�v6��/K2{��*�z�o�W{��o��59F������o^I�2gScc#�kamg^(���7�et��7�F�_���$q3�_�5��*�S��xh?�.����vd���}�>�U�e�b��[t������&�}�\7�rS�w��cS1���x�Q��B��m]Re����B��-�ra���� ������L�jk�O�FR�*+
!�t(K�`������F������9V�qQ|���=�}q�\,,������M������������xq'!�k���9]�����S�>~K�?a���g4|X�����/I��x��!=:�ogm�Bw���y2T�/�k5�v��J�?mtC�5�L0�Q�yW�;�0��G��+���T��" ^��0C�L��VA����
��JxnPL���0y��q����e�Y*����Yw��������u\�u��m)������]�5>/&��L%,�������J��x~�����C�V���Yc�D��B���,��_��H�B��
h0p��k����v���%>_X~+�7������3�X����Wt����O�yo��������i��WC�2B����b�h����#C�$��e�K�U��2w�� m���%^,������4�;Mi�xA�����*�bm<�%�B ��d���6����o1�>u���J�X,z��O�������s�5��W���v2���g��g�*�X,�_	i���V�q�
Eeg�Y�L	��f��xo����~9;���yN��ij8dW�����&1������v�� N_�6A2���fY���^�S��M�r1%��/�.�I�}j���C�7A/�,
�MP��MK%���W<�s��5�e���I�R���6�K�&�U�e��X3t��D����}:e-K����]-Kj���$����F�M����SI�����.P�o�f.!��~��'�b?=�~8�����p_������e����
��.�Wo��T�s��`Rt�����e��U-�R!^���I��������^&8��*[�����|���]Y�����F*�=Tw��c����
�S!A�
d���3���|_$����^�c������F��+*��3�����1s�E�Jy5NN��o�l��Q�\�:���C9_(����k��e�kH�!��n��J�����ci|EL������_�PY9�����f��e���r���f����i�O
����/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3���fA�h���/>*�R[���6j���y���^��j��B7A�&�;>��*��9�<������@�`E�,0_�����/��x�G�i�2E@�Z�j��7`*eA��+4L��-k
3���fA�h���/�o��6Az6AzE���F���wo�iz\���9�������Y��$�D"�����|$�>R��	�������K����FQ�x)B�Y�Y�����NM�R���ig����q��5hz��w���%�V�c_��0��{��+h����D�������]�~�@����������M)�_������;���&A���a�4l�" y��x�
��0� �C��0C��f�>g��w2��
��^�9�6�������VF����E�
��0;O<��_[t ��d�x��������6����;����o
8�>'�����N
/Z5a@��1��_��O/���pK�#�,�c
��&�4��b�M:���W�[a�X�A��D"��X�C����X�^wo�������7A���[q�\Qx�4��[�-�*����V8_z�&hs�yUa������>������**���K�O1)��E��h�!
[�H^� ^��x�L�&A��+-0yx�����eu�����B���__��!tR�����_�y��=��&��R��������06��[i5���G�N������#���"�w��*$8��
��Ha���a��q�>�fE�*�k�5y@���\�{P�yvt�����~�7w��E�&(���/�J�8�����]�!�����'nCH��\��������c����r
���)Zy|�6(�������y5<NA����N,��l�_�7�L�_	i+]���_Ky���[Y��q����m��6:P��3|�����?Vq���u����S�����U���d������O;8�
�x{��v�����U��v�p4���xe`�n!��3��|N��������5}��w�?K�$������b~
��9p��,=�~-��RP�-�L�?��������:/��W|��u�"VRa��U�j+���1���W'F��V���Y��`��U���M5e��.Q�u\/=�;=���\��M���&���mt��a:���$q3���1�M���)k�����o6X�y�U����-���������w������	E���W}4���-S$�U�VA�z�R� 
�I����<<�G�i���h�rsjr��Up���w}�H��-w����7��QS]]���bd�/�V��]6i�c�>��k)�}D�k�B����W��9Y'�uj��<N���+��]��W�,R�O�|����Ks�5�lJ�&���`�p�bt�]�><�5a���oN�<���gk�oY6(r4��Ry��lT�����W�;���v(�+�CRtp�1�
����/���03y�X�B���Ei\D������Ga����G��k=n���0��6����\����V!��}6^82�`�{�A��Y8�����T�l�EQ1?9��a�����c�����/��~DY�n�O]�����w�>�sO2��9���93�xz�����;�v�U��B�D�����pc������z8]z�������Xk����7����u�K%�6!��g��f���]���Xu��x&��/e����D���7�3�t���k���gJ��>_�R��
���Rk�Y8{�d��_�hP�0�VO���:{zth�[�T������e����
��*�Wo�T�<�G�i�2�SX+3S���_"F*,l��B�������]qV���F�6uO:�|�8��p�D�����3�ww�	�B��
(3�v�2;��������i�"�6\���>���&%��������A�2o����]XU��q��PO+�w�p�'�:�u0����Zn����g��Kgsn�����y��\��8�LDx������w�Nx��]����?�}h�?�����������qYRT�+�nL����y�=�~_��F���w���5QHv@������Z~<9+;����~M�0m~��
o�e�<����6g�������	;Wn�<�����8����.<��mJ�7�
�f��g�o��|�{����o�f�e���]�)�\fH��w���pQ���??�H7��*T=����eX��+�����W	���MN�IkG���^S����ha�Rqm(_�Z������9*)*��n��iic),-)G6�6�?	������e����
��*�Wo�T�<�G�i�2�K�u�������v�X�H/�Fg!�z��'�������#BHR���e�+v���^�Z���x^\����~#7>j�����8yE"��:,�������z'��?{�������$D�=e����*�X�����#G�����c�C�c����*ZwQq�V\L��
+���? ���L���_���|��|n�n��F�KI�A���]�L����e���s�
�qzn7B������1i��#�o{`1���W�J����P=�g�N:u"AHZ�)+���{#�8?���'��&>���"���W��
�jk�3{�������04skSA�E�.�����l��Jjei�!D���`�OK��)LM�X����J����J;��/}�/^r��9u����e`���������-�}h�����Nt��vE�o�$��da_8;0Pv����]Y6���T��y���N�4�:��]YY����j������'�Io��m����������vo(k��&%.�TPc_\"F!x7]�x�G�)8e����W����	x>�3������Z}�����#7>������E�4����~QE8j�24�g����;�l�"�;M�Pt��J���x�
���F�T|� ^�C��.���������n�����|����M��%Og�1��]�D�%/�><���q�O��sn�; =�y\B���3�fy�����u��h���
��7�3�am���p"��B���-�E�2vq��N2e������)�pq�[�^���}6*���
_��?��{�=}������0�-_�3>��R�~���k��+��_��X��U�T��)�����n,�]v�~g���;����������/�p���G���~�U�P�x�.�5zZ���UoP�m��.�$h4��a(l��c��AV�7	a�������t!/�k�jo��8Ej�P��3���
$�W�^A�F�$��P{���S���s���;FO?^{s�
���,�k��>�"�CB��t�cy�F���,Q��c<�0e^����r�z�H����'��	/Z�x�yJ��K)A(�������C�'��9���9JQ������Oo3K���W�>������r����I����]�8���!xQ`���Ky
kSPFi����M4�������yt���|�pa��"TC6e�A5�K��k����;��o]4f��(��c��?��kj0������k�Z����b��r�?��;�f4��F����B3g����u1�~�:���K> .
�y+s��e�ga����l�u�d�����%|7b����\3wW{��z�8����2]����k����H}+",�&���"k���>�X����Q��\2����=��WH�aPa^�V��7�h�@��[��9�Q�7���p^%�j+��Tf/�n
:J�zI(jlD�����u��uBbu��~�1[C�3|y1><Kd�	:�j��Rp���+�W� ^�K	�|�=
fH�)c������7L>����w��VrVU�wC\\=X,����#��:f������!AA��tYye*\'�*$Py����ey4��y��.��]��?�(�asL��(��[`�o��>��%={Um������t�.]mp���FbV.n=�����$;��
����~�X����!��OMNNNNN�*��r�y�����r}P�H�N6b���[:�3������W\{��=K�vRZ���������Z��1M$=����"��\����k�a��<g�y�g�F!�Q�^�\[It�u����3B���c
??j}@��Dd���	���$J`�3��������c���O��;,{XZ�������!�]�>�#)��3������e�<zuw�:���.ld��:YTSU6��GO�+{-� IDAT������u��o��:�[�|j�p����Cwo�F2���n��#�3B��ss|y��U.�$j����(���I��M���4yE�L�
[��`���+�l���cB��MK��z)ol��L�\"H	����a���O�����PxU4�F�A���M��2��0��
g��?�SV���j��2��(�!�l  y��x�
�5���i X������C�Q0C
NY[�rSR#^����'�n�fIy�t��m)ol��d�zW���V�F�^�,���)U�W�g�<�:���X�&��U��
�!�P�1�
j��4����WHZ��M�:�o����|�}�+:����2G�*b�S/q�ba��k����~�96�m����z:��:��+����2���O+�
����]���%�K$U����Ga�/�uR��;S��|m!w��)��<}�3(�>����i�2�����:j�T'3�/��[s�%��Z,��C�K��������eBAIv��u�����	�5A$�H�\f�}W�����e������k���z06��Z,���'=B�8|���9��*^���_f��.�n����]������9I����B�q�:YX|~�����	x�7�v������]t�~��JP�N}pl��d�On�!�~+�T<�>���B�����6Ay�
V��7�hs��S���"1^��;7��i�6-�����!��&�+������W��l����"jlMz�������G���Y�|a���-#;�5_����x�G�)8e����W�����H���4���<<j��Rp�Z�������|�/G���a��!PIc��UK�-F�n�����I�Y�K�J�THxHz��s���=�IP!I�
�;L�����D����{���`*����)I=<�����1+���1�E�*!7'���av�=�����c��Z$(��*��<���1	!����;��'+{���� 	�\�o�@:�e�����fh��2��(�!�l  y��x�
�5��� 
��\(�<��s��t�@t~}i���`�``T``T``T``T``Tt�	����2��5��q���T^�z':��YG�q�q\5�V�u��t��l�����n��#�3u6�U�5��2A�����V�������f�M�^zjl����s��7AMo�zj�����U����1�9�H����z��*���4���3���h_!���W���l�����Yz�y���'(�������-�Z�W{���S6��^A�z�
XJY���Ei.L��S�9
fH�)��Y{�������<a%'�����]�G�46�YR4��>�p�����N<�!����2U�B���^�:�����j��B�7'�����\^�������`���l4�$y�v�7G�S��U�����Qm%����\����j�H1']��������0}4aP��q��e:�P����NPi��<�Tu:�T�ED�U�_��X���6��p����
��K4U��kt,�*��������������~*�/&a��2��(�!�l  y��x�
�5��� 
��\(�<��s���S������������S[C'�2~���������)��Mt����[��&W���H�t0����R$����c)B~U��B�CT��S
�u��us����x���Su������&�d}W�}yz����>���o��������{��bIx8w������f���U�s�w1���vY�(m|&�
�%7!�)��<}�7(����	���U|n~��3�n�����4�L�i/i�A�N�M��X�+�d=��o��t����?q_9}��������t��=��i���%|^aj�����u�tJ�U�=Fk?d�������S��}3�[�~=Q��g���tN�P�}���-�����e�,������1�\~%'9r���_� ,k�3�������*^A��_��1��.�Wd���Fn��;���6��
5�W[�u��=���7'�E�|���2���M'��tv
7���K���_-9��8����fm�r��	���MG�s�����.���c�#��olS��2+�-�$�=����l[��m�-%qht��3��,�soU��u�{������g3D�]L����x�G�)8e����W�����i X��B��)8e��`����(8���q�X��H^��o����-w��}}Lz�T����i��-a�Z:i�3!�>���R�ud���B����+���������6OP!y��l�d����7a��$'����s��s�50�v$���9*X!�C�h=�=�`�jMZF���;S��|-����OY6(����K��/��oqLX����q@����<I8��f�q���^���af6�x�BX+;������|]\��:�)����_��k=n���e��vs���#��#�2��~��$A�o�A��]0�O]P�*�l�����^��������L>y��V��,�����w��O�����w��s���.�rQe�L�/�^�w�����uY}�xHwY��~+���wx���AN���/�����L~T����kw�X������p�
5����x�;<��������
Zp&�O>/e��K��g	0��&]�7��4kc����$��U�c,_O��hz�>6���%�5R�6J���4��
�����If�����G��3�(����S��7D��(�!�l  y��x�
�5��� 
��\(�<��s���SF
3���	�y�b�Fc���B���?�������1����#GL=�"P�B$���B��M�{xt����.A���+Pfj�6eV�'����4T"�C[<��?�Rb�������A62w1\�<�TQ��{}�����d�#"8T��gH�@v���r�2�6��A5u���Yu�j�K}x��������N��})"=K�}��}�?M��y�����<m�?��n[X���������$>"�m;��=�!������Y�����O��S��������R�n����w��v}�;���y��6����Y�������O����]������t������8�����^���xa�����f��N#.���?���!����.�]R��;n�����������/�������U�~�M��_���%^�������'�Qo��m�����F���?��E+o_'�;�9xz��,�}����o�3�������Ac���B��"�u�����m��
K���-�����(�!�l  y��x�
�5��� 
��\(�<��s���SF	�	���7��=Wp�rc78a6_�>61q��?8j����>K� ����c)GT�*$)��r����Fo��~���B��
�B���O$�:���F�KI�A���]�L����e���s�
�qzn7B������1i��#�o{`1���W�J����P=�g�N:u"AHZ�)+�����8?���'��&>���"���W��
�jk�3{�������04skSA�E�.�����lk��Jjei�!D���`�OK��)LM�X����J����J;��/}�/^r��9u����e`���������-�}h�����Nt��vE�o�$��da_8;0Pv����]Y6���T��y���N�4�:��]YY����j���`i��&�A@��1n�[s
[�)>���>�U��gB����*����^zQ�H
�F3�\�-���SA�}q�!���Pt
��3���
$�W�^A�F�R�a�`Q�����u��Rp���Xz��pzL������G��
��u�t����P��"5|�����_��d�|���&D(��O�
�l\<a���sS�o*>D/�!e�C��ZY�{NX���s[s�}��;U���F��t�A�{��=Q�8B�K��91s\��r����HO|�Pj����Y���}&B�ja&,�d�d�o����lXF��?>�b"�F�agKEgB���C�7��L�8�&���N�g�������g�B�l������O�'���;,�z���;��+E�g^x���p�w�����Z�l@U����a���r�e��w&q1�K����kY<��\0���WN��;��G\�
����^����,y]�U��Z��M�F��������W���a6���=	�#}{���K��PQ�����./sC",����v���;�.��rMX��P�H;���
fH�)H^� ^��x�,�,H���4
&O�)�3�������\y��r�������\�Bc+8�����O����B4�)�X����7K����3L��d���J�E"�*/���&�h	���)ET�.���WO�������7�8G��(E���+k>��,�~�_���B�oG;���&�z�vQp/��Ct��E�5��/�5�MA��K��6��;/�r���a+o�����P
���L�Q�k����;��o]4f��(��c��?��kj0������k�Z����b��r�?��;�f4��F����B3g����u1�~�:���K> .
�y+s��e�ga����l�u�d�����%|7b����\3wW{��z�8��l�0]����k����H}+",�&���"k���>�X����Q��\2����=��WH�aPa^�V��7�h�@��[��9�Q�7���p^%�j+��Tf/�n
:J�zI(jl$|�W����y#m^:z��A�7�3�q�T����RJ�P��\���uBbu��~�1[C�3|y1><K������
fH�)H^� ^��x�,�,H���4
&O�)�3����1���_{����&J���;qc+9�*��!.�,��by��_]�e�O���b��� �M����2�e��x�
����<���<�u���.�x��R
��0���9��s��-0��s�}e����������R��E��68�cA�1+�X^�[U�b�����\�U,���1�}jrrrrrJV�P\�+���O|�����jF�w��u��}�������������{���Y2���z,�/��������i"����a^�j�.]�[|�9����>�5B��
�����J"�;��������BL�S��Q���p� "�_-LX�D'P��q��<��@��;���|"$�a����WG�3�ww��
Q������I��!7?U�E,�������	��ta[ �$(f��������q�=zzN��X^5���x��1���S���t����{��6���u�_1��Bf����K�r1%�P�x��NG!�`mO�%nrn����+Ze��P��u�/�_Q�`����;�X0��mZu�Kyc#�f��AJ�t�>f|�_V%���������6��/+I�7���y�=Nii�o_�������R���
@����z=�t0�/��	s���wv����?e�1������:/�j��Rp���+�W� ^�K)�0@�(����Sp�:G�)8emQp�MI�x�6~�����9��%���E���������C�]?2�Z�J�z��X^��T_]����p�h��c5��JW�N*$>�B���*�����_�V^!i��4����u������e�����������YO�������/���~�96�m����z:��:��+����2���O+�
����]���%�K$U����Ga�/�uR��;S��|m!w��)��<}�3(�>����i�2�����:j�T'3�/��[s�%��Z,��C�K��������eBAIv��u�����	�5A$�H�\f�}W�����e�����]:�k���z06��Z,���'=B�8|���9��*^���_f��.�n����]������9I����B�Y�:YX|~�����	x�7�v�n����]t�~��JP�N}pl��d#Fn�!�~+�T<�>���B�����6Ay�
V��7�hs��S���"1^��;7��i�6-�����!��&�+������W��l����"hl���W<>�B�^+����v�].�MP�K�����2�g��YZz�}�U�V�_\�2��Z����@@���`�������
��+��h�R��4,Js�`����Q0C
NY+�rSR#^�����p95���7*il��j�������#��:i;���c)��U��
	I��v3��y�!	*$)^��t�i�#�����HP��t��"_L��>�b9%������A�<f��0<&��_%��$�_?�Nz���7�~,T��^E���V:&�!��u����deo���t�$A�k�MP�AG�,�^�3��u^��3���
$�W�^A�F�R�a�`Q�����u�����nA�����/�>l��
l��
l��
l��
l����7A���S�{��t=.b����KX�D'�:��H>��8������1�N�"��u6 �v�
~y�x��F��j�B�U&hQz�5q����2���`�t�	j:x��S�},t<���}e�a��G���W�3-V��E��I7��y��F�
�^�e�2��#����E<A�������o!���B@���`�������
��+��h�R��4,Js�`����A�T��WM/f�={��OR?�����'g7va��A|��~��"����X��Ofj8��LU��hj���B�C�W�I���	���m>�W%�����7���F+
$I�������rA�03&lT[��1�v$W��D9��� �C�I��<qedp;L
@Ts�q\gc�?���sA���TZG�a6�U�N��eG�h����-VS���5�e^�P3������c�pgG�)��)+{���J��I����=
fH�)H^� ^��x�,�,H���4
&O�)�d��8eXe�j�x��ko<:�5tR�`�!��^z+����iBR�YR�>n�>~�\��#�c������J��>�
��y�:����j��[������=0`f��O�y'�ZcH�<��m\�����������9SX�o��_����%����B����C�UwV����Tp��adeH����8+�����L�J��������.$�+�W����O���1B��wG�`3Yp;���	�-;q71�c�������9�6�I��
���}��=�R>Wp������T3�id��y����������(V������g��K���O�w��pnU��De`V�!��9�B��?�v&Jd�,������1�\~%'9r���_� ,k�3�������*^A��_��1��.�	j���Fn��;���6��
5�W[�u��=���7'�E�|���2���M'��tv�VYi��-�0���������4k�6-�:�E8e�A)]e�A{�>��z��r���������y1[["��e��;K���[��E]��������������~S�@�e  ^�Q0C
N�@@�z���k4`)eA��P0y
NY� C���)�*�U������U=��]�2���`���I���ZxW��#����%�[K'm&$�GT�X����x�VHV<�uE4��yvZ����	*$O^��
�;�^�&����������p�Stc������d^�:G+DpH���G�A�I���{gJ���e�[S�)���?}��cc�e��-�	����;Zv<�'������#���;�0��F/�Bkeg]������Y�>����6�Cb��-��l@W��c.�]r��s�Bf~����$���2h���f���x@����0"r�����ps0����'o�/��vEY������i@������s�>���U.�����E�+���r�|��.�/�N#+��o��?�/8<�����%�x]�������Ys����_}��QNZ��6=�u��V03~� IDAT���]�A��������x	[��#f��������fmc��^)�A!%��0K��}��?�5�?&���	�;/	�7G�^�@�����If�����G��3�(����S��7D��(�!�l  y��x�
�5��� 
��\(�<��s�!�*�U����[Z����B�:e���B���?�������0����#GL=�"P�B$���B��M�{xt����.A���+Pfj�6eV�'����4T"�C[<��?�Rb�������A62��3\�<�TQ��{}�����do"8T��gH�@v���r�2�6��A5u�l�U��V����_����x~�T���"��������w������7�����v�#����Eo~;�^��K�#"�������b��;��5?���������1����y��!��V�I�|�zo�7�:M�7�n�[q��k�������_�������j�K��i�*����m�|���Y��o�\=l���4�������c����I�r�%EY��V���X���o�Z)
�b�q\�vY�����0���E���Q"����	[�q������)�2YP�W!T�����"3�]��2�R�.��Y�n64�/%1��Y�BN��Mkz[���E������c�	�W{���S6��^A�z�
XJY���Ei.L��S�9��
`������l6-���u��\�2��0�/v���r��7Bxy���
�[�>�rD���B���Q+��;l�����*$O^��!��N��D"A��#����o����$oj���d��M�q[&�=�`�����v�!����i����F}>r����ye���=	���pv��S'��e �������7���#�^\q�\j�����/�n�~5�� ��v>�7������
�A3�6dX��B���l�F0����V�B������,������5~�
�d�����#���G���%���S7:J�QZf�������~����fZ����DG�l�W����J�GAzJ���eW)/����a����Ke�����DK��CI��uQ�U�A�M�&;>�-���q�������)�2YP
W!����5�������N��FffL�t��&.�TPc_\"F!x7]�x�G�)8e����W�����i X��B��)8e���VY��6^K��N�I]>r�c�;��hx���G���E���������Z�$��#��4!B�*UH>`��	+���}S�!�x	)/��?����s���?�����cn���vT���:����k���B��%�����9����bq��}�'>�K(�sf�,�C�>!�C��M�z�����wf6,�m�NI^��������!Q��!��I�LTS�P�.�r���?�s��F���������zO��OwXv�����+v�gV�����t-V����+= ���
����?Eq�P��������L�b>�|��1��x��`��!�����w����*�o3��FoC�Y���
���QSu�
cW��2G.�Bp�0��b)����S�z���S�\���5a��BE�"�~	(�j��Rp���+�W� ^�K)�0@�(����Sp�:R��^5C���+��X.�1z�����T(C�Y��.}�E�� ��1L������,��Y����x�a��~*.gW"�(�)Py��6a��M�J��� ����s��������h�Q��W�|z�Y*�$���9�X��v4�+?&�Mz�����1�����kn_�kX��2J#��gm�!Dw^v�d���V��#����)+����4��[����s��.3xI�����Z���55��Dn���5d-z��s1IY����z3~M#bNZZ���ko����m�~ko�%
������c�2��0go�g6��z��Wef��1^��U����=�c�O�RU�@��N�O�5st��g��_���u���PeL,xz����
s~.�x���t�+$��0�0/E�L�
[��P ��-Z���m�H�Aiv�Y������(��r0��3����Y���q� ^�Q0C
N�@@�z���k4`)eA��P0y
NY� C*�U��&�k���?n�|(��jJ����n�����b�X�#v�WW�l�|��!$(�~�.+#�L�Y)��`@��W�t���ln�����ow�K��lC���S���6n�A����(K^���U�]�����-�t��9E�Y�����j�����7t��b��b��H%e���S�����S�
���\�_�~��w����o�"F�:�����?s�i����������dn'��X��_xk������D�#��)�����N]�����sv�w}Fk�2��E���D@w\�K��?!���?��������0hAD�Z����N2�f;�jIy����;v�m-�A��������g@������U9���1�2h=Cn~�L�X6��Ww�������@&IP���E5U�1a��{����?��8j^7Y�&.�c���
w����+0t���m$3j;��<b<!��<7���<Z�bJR�F�jM��B�����K�����I�W������E�v_|��������;v��` �i��$����	�R��&��d�F�g"������f��0����qk��5����z=�t0�/��	s���wv����?e�1������:/�j��Rp���+�W� ^�K)�0@�(����Sp�:��NVY��0^����'�n�fIy�t��m)/��,��;���#��U�����;��5�@JU����Y,����?V�����N*$>�B���*�����^�'���xE�\u|���c��z��2dWt^u��e�tU���^����x����h?���6b��~=�fK��	�AC�Yw�����
�?xt�������%�*IX����0y���:����)�W���;M����R�^���k����4v�PTU�~�g����X�����]Q-���!�%k��{����2��$;����W������ �m�V.����+��S��2{glE�.���LzM=�[^-������u�����Ra��M�/��j�x7��e�����K�����G�wM!�,d�,,>�j���r������;I�������.:r?�SY%(e�>86�M��'�	��I�J*�m`AX�f�jKG���<y�L�
[���K��g�J��z�����4l�CG��Ai�	��e��;KK��������
���[FvR�7�y�W{���S6��^A�z�
XJY���Ei.L��S�9�P=-s���z�T��|�/G���a��!PI$g�Rg���wG 7bu�vC��R@�uR!�!����c�0o0$A�$�+��0md\ZW 	J���Z�k��8 �gS,�$����3�������d����������Io8���b�����j�������|������B�:��S�{����ma:o���5�&(���ZX/�k��:/�j��Rp���+�W� ^�K)�0@�(����Sp�:G�a�@� ^�G���F�	
�
6AF6AF6AF6AF6AFE���L{�)��[c�1|~H�%�w��|�up$�q�Qsmu_���A'�x���:k;��<b<Sg#�Q5^��*�(���8a��	z
4	]o���|��b��o_�cs��|q��L�U&jQqi��3g����Bf�r���"������[F���_th! ^�Q0C
N�@@�z���k4`)eA��P0y
NY�(�!��f�={��OR?�����'g7va�U���gI���^� ��j��E�:�d���>�T�
��FzU��B�C�W��S
��������syUn���{���o��`@��1����N�/T�
3c�F��<�kGr5^O���	"9��t���WF�����A5�u6���Cy�?tl�;A�uf��NP���NP]v�VY-�b5�z3C�kt,�*��������������~*�/&a��2��(�!�l  y��x�
�5��� 
��\(�<��s���S������������S[C'�2~���������)��Mt����[��&W���H�t0����R$����c)B~U��B�CT��S
�u��us����x���Su������&�d}W�}yz����>���o��������{��bIx8w��nu(?�Y�pg���]L�z�FV�4J���z�M�`�A�D/O_�
J����B��b~�����L�!�0�yw
6��C�K��j��w�>���9Y�n���j#�����O��WN�s/�Cq7���1��nO5s�v�Af	�W��mmxz�.���ao���Y}6.��/���zw��V�_OTf�r0:�S)p��sqK`g��d�A'��w���pL6�_�I��6��9�������nr~���W�~��9nL���l�Z�/��[���a6�M��B����z�`mO������aQ)�*���+�{���%���UV/a�"�~a��(���;���M���z�z�����e�Y�?t[��2��Hs�ic��
��/"�q]</����C&���-|��������G���b���E�1��,�soU��u�{������g3D�]L����x�G�)8e����W�����i X��B��)8e��`����(8���q�X��H^��o����-w��}}Lz�T����i��-a�Z:i�3!�>���R�ud���B����+���������6OP!y��l�d����7a��$'����s��s�50�v$���9*X!�C�h=�=�`�jMZF���;S��|-����OY6(����K��/��oqLX����q@����<I8��f�q���^���af6�x�BX+;������|]\��:�)����_��k=n���e��vs���#��#�2��~��$A�o�A��]0�O]P�*�l�����^��������L>y��V��4�����w��O�����w��s���.�rQe�L�/�^�w�����uY}�xHwY��~+���wx���AN���/�����L~T����kw�X������p�
5����x�;<��������
Zp&�O>/e��K��g	0��&]�7��4k�$��r!�f��!�I��O�2�s�|i����,M�n�q�����������'\��$����������If�����G��3�(����S��7D��(�!�l  y��x�
�5��� 
��\(�<��s���SF
3���	�y�b�Fc���B���?�������8����#GL=�"P�B$���B��M�{xt����.A���+Pfj�6eV�'����4T"�C[<��?�Rb�������A62w�1\�<�TQ��{}�����d�#8T��gH�@v���r�2�6��A5u���Yu�j�K}x��������N��})"=K�}��}�?M��y�����<m�?��n[X���������$>"�m;��=�!������Y�����O��S��������R�n����w��v}�;���y��6����Y�������O����]������t������8�����^���xa�����f��N#.���?���!����.�]R��;n�����������/����l��U�~�M��_���%^�������'�Qo��m������O��N�
!���&N�a_�'DH��V_uf�����vU���J���f]���7������P!�o��5��m����Rdkg9���=
fH�)H^� ^��x�,�,H���4
&O�)�3����Q�l6-���u�����
�B����ML\�����!�<�YZ�-v
K9���P!I����CG�6z�?�[U�'�h@�BX��x"���������7J�XJ
�7��bg2p�&��-F��{0oP���s��BH\�4|u��I�>9}������T�����Y�X8�w��	B�2�MYqP�D������G/�8y.5�����q���VWX;������e�����[�
2,�v���\�d#�W�P+K!ZGk~ZR��Haj��?�T2W�~}P��W|��~x������%�(-�����t^}?oI�C3����v�#D��+�H~S%�� =%��������O����������D���wu��y������(�*� �&W����N�8yMz��Fmc���������[��%�3q2+�����.���5 ���Axuu5^]U�pZu523��'��|��O5��%b��wC�5�W{���S6��^A�z�
XJY���Ei.L��S�9
fH�)#b�����1��Gn|,ac7<��i��#�B���p��eh���W�w���Dw����?�*$�q����M����A���
�\�kei�9a����m�	��1��TM��%Og�1��]�D�%/�><���q�O��sn�; =�y\B���3�fy�����u��h���
��7�3�am���p"��B���-�E�2vq��N2e�������*�pq�[�^���}6*���
_��?��{�=}������0�-_�3>��R�~���k��+��_��X��U�T��)�����n,�]v�~���l���������/�p���G���~�U�P�x�.�5zZ���UoP�m�^p�|�����h}7k���K^H�D5O^6?���v��p�u�#�a�]h# ,����v���;�.��rMX��P�H�_��@���`�������
��+��h�R��4,Js�`����Q0C
NK��Wn,�=�x�]S*4�����]����A!Dc�2����!Y�{�D�?��8��y�T\��D*QT!R>���	+l��� ^m�RD%�RJJ~��9������{c�s�z�R����������R�'�U��)��v���\�1qn��wx`7�)<Dw^Xs+�R^���Q��?k
!���+'{��6!\X����MYaP�����?��sn��Ec/��9vP��C���c����E0���E��|.&)+7�c��CoF��iD�IK+4sv�-�_����c�����B���2�}Qfz���Q�q�]=Y��23r	��/|�*��������'N�*{�GW'����9:��3R�����}����o���&<�v�E��9?�L<|tv���kT���U&�
�-ZG(b��dj�6�/�}�.�����&O�����I��P
�U�0���Ye�r�FW�PM�����>��:
c��Lg��b|x���t��3���
$�W�^A�F�R�a�`Q�����u��Rp���`m���������%��������U��W��b�<G������2�'��{1BHP��&]VF^�
���
	T^<q��AwY��f���K�vA��O)�lC���S�9�n���������%={Um����t���KW����Q����[,���*�1}C�{q.��*���TR���>599999%�@(.�����'�zO��A5#�;����N�>l����z�wv�_q�=���,��Ii=�?��Z�nkaf�4���{g�0/r��S��}�->��]��]��!�LG�sxQsm%�������@!���)�����z8Z���&�w��(����ZR�C�c��l[K>����ai�������s��(vUN�hk��Z����*�"�������s��o~��-��}7�A'�j�
c������9ybyq��n4��M\V�p+�O-�����W`�����Hf�v�
~y�x&B�yn�//y�����B����:���=������C�&�h�I{Ca�����~E��MC{�w�`c�@H��iI�[/�P�q�}�&������n�4ml�i�K)����8�q�I~YUm�J���Y1������������F�����l��jg�D0�/��	s���wv����?e�1������:/�j��Rp���+�W� ^�K)�0@�(����Sp�:G�)8emQp�MI�x�6~�����9��%���E���������C�]?2���kA IDATZ�J�z��X^��T_]����p�h��c5��JW�N*$>�B���*�����^�'���xE�\u|���c��z��2dWt^u��e�W�����^����x����h?���6b��~=�fK��	�AC�Yw�����
�?xt�������%�*IX����0y���:����)�W���;M����R�^���k����4v�PTU�~�g����X�����]Q-���!�%k��{����2��$;����W������ �m�V.����+��S��2{glE�.���LzM=�[^-������u�����Ra��M�/��j�x7��e�����K�����G�wM!�,d�,,>�j���r������;I�������.:r?�SY%(e�>86�M��'�	��I�J*�m`AX�f�jKG���<y�L�
[���K��g�J��z�����4l�C������5b����d6�5kl�Lf����V�#��^q��>C%�`T�!Gg��������VF</�j��Rp���+�W� ^�K)�0@�(����Sp�:G�)8e�Pp�MI�xM>��#���������I����#f7��@n����,�����
W�N*$<$=��9`���
�$���x�����K��
D"Ai^��C�|m0d�l����c[q��������"~����p~�0;�
��\Lx��TP-�~xu`�O[���B��y��r�����o�y�E��7A ���zi�X34�y�W{���S6��^A�z�
XJY���Ei.L��S�9
fS���?:��4�LP0T�	
0*�	
0*�	
0*�	
0*�	
0*�n�2�N�"��uV�v�
~y�x��F�/������Nt=>���8a��	
2a��N���������|�qD��U/�	�E����;A
��4���3���4:b:x��S�},��(����+sc�<�/V�T��'�
��u��llVO���vq�H{�oAa���w��$�C1OX��xrvc`F�i��G���o�x���/��E|��1']���Iqedp;!����\-s@�����4z�9�w���������7����"f;����)���*^afL����
�$h�S/|�|�_�3��[�W���
)z��'35��Q�����""~�-\)P|��WM�f���S���I(�aD��8�3�Q�����P� |}C�I�W���+0����� ~!���8������Mp'�r�����\���{��:�
���l��7���RS���i���b3$a��2����!����\A�o�;v����n~��U}�!Dw]{����������[��VO��E��c9U�����=e�?eeOV�c�RIs�
f���U�s�w1���vB������~�%=����B���p��u��q�~>�f�=�T�wr��� ��m\�����������9SH����g������d~�2��[�W��B�:L.//�5�U|=�����m��J�%H���4
&O�)�3l�S����	����~
P�C11%?�h�y�:����j��oh4 a��_!zF�!��tTh��g���^r"�2�A�����������]|8&����$GnU��	V���������W��zvk�V���o�3�������*^A��_��1��.�	j���Fn��;��H���w����e����'|s�C��)�����Iw�81,*�S��W�ye~oI%��CV���.�+>���7�����Q���-���x^����C�������^���
n���c:��%k�4����>�05r���t�MP��2+�-�$��&C�/�9�#*�_-�q��'�lcv����n���j��9���
�����%�s]G�7��)A��BH���>$�PY�w���i9�Y/�)+
J�*�����iT�k6��������.���:�!����M�X�e  ^��;C���H��^h��o&�����	���X�]p$������!���[��E]��������������R���
���G�A�%ex�H���s$��d����7a����p�Stc���:	!�b���I���ZxWP��%�7H���
Z�wK���N��L�xT��H��F5�o�W�NA��P0y
NY�(�a��2|��W�����%���bB�!{,�_GV�N+$+���"���<;�K��Z�D�h�d_����P��	^!��Q��+��CPF���;S�?{�����������8p!��D�VTW��U�~���Q�����oZ�U�hqJ�E�jq��n��XD HXae����� 	\��@�}^���y�����=\R~�s����|�*7�4���WCVl��-�V�s|������"�P�!��6E�[�����;x������w�n%���{���v+�2�����Eg;������Yy��&��q�7�.�B������O�v��[�7Y6Lo��]����9�{�����<h��t!�bt������F����q�z��+?Yk�J���t�������;�=�z�������7_82I��w�A���5oF���<OHy�y�,�1����KO�_��t���������B���yG�cgxW7�=�0�|��!�]��v}{��&x����}�9����}�zI�Z��x*��EHm�f�6y��RW6&L��)=�:������~q������������
�@��hL36U����W���N����{W�YXY2���BB������H��������-'<�v��i� �����B�p��������������W	�����3�s�lf�/���j��c������s�<��r_�>>H�gp$�B��������]zV�C����q�x���7d����>%"UD�+�A���m@�G
4��������^��(&E~1��������{H�y3'���N��J��t���A%��o���Tk�����#�u%�-�n��l�u�j"
9�e��6l����7���|}V0c�!$���y���7���zy��7����F!��KV�����_�o��&��_���R�&���/_Y&�:���%���P�����Z\�z���_g��n�p��:�cV�����D$(|y��]�!���/WF�^v")�m��m_���~��`�U���/�o=�^��J�G�������Dq��	�������e�����x	eK������sa!������m����_�������l��7�g����v�Zr�^����7v/���=d�������������"DR�
BUQ�ec���L}���CIF�����W��WOS*�o���w�l���T������Od�[1��b������}���]�wO�]��%~o~�q�Gq�8X�B^��UKfk�����Rd�`� ���X
�?�{���Ib�?��D��>)�����i9y�_�+}j�~�u�T**x���~X��K%8B����{��
���&5go�������� ��0��?��h��?xu��� y#�*�8o��i_T�="�A�P�l�8R�9x�`PM��wH�"�(&��b����#��zH�ya��!������T�R'O� BH��
�+�N�dwEH.5���wKG}7HP
�8�&��G] }��R������7�HWg��B�����+gzush�a1,l�D�,1��������O	rE!d1����,��K����ZW��c�e�x�/S_�)����Iu��X��{���	��+�y������3�P�5���\����Jjae�!�h���F�"��bKaZ����T-��O|����-����������{�~��g���U8a����r��������_8����3�����������:l��",�F<d�COM�$�j�K$\R%A8C"A����>�����=�����~=w�L*-N�e��w�HU�PX�[}ll������
�� �����D�B�����������=��!	Y��]{��81�����3���(�����M��r���z�����
\��3YL���{����8B)�6�:<��G�d����v���Co�
�-���_	&����x���Q�A�"9����h�9T�������b�'�(f�lyvo�����(&���(
��������'����������v�@]���74h�T��In��H.5��$�����C��9<F~����N�JO"���~��.�b��A5��,����!�s���X�,�r?��R�fF��U�fe��b�M�}����~3���M�>4���.��"�����g0*��U?lX�M&�i��H�_:���y@��;��F�u��uH>�T�e�5�!�]Z�~�v��	�J����2�R���.u�!L��1i��n��u�#\~*��}#L%P���sj���-*�+`~a!���_����k��KKD���v������W��;��R�<���g{��FE�"������ ��J��\5�������A��lIZ�6���g��o����3�OTT\Y��:�T�����
�^�([�����C;����E!�`��������<���6��������A�� "<����h�9T�����{�H.��HS~�q��t�TV��}�L�"�
��<i��
ts����NE�<�
�6�.�6���C�������1]���z `�U!B���_)��2aPM�F��g�Y=��(�|���k7�U�k)B�~��3�vn<��&;�}��sw���B���������vE.\|�v��%#��"BW���������K���{k�d+�H��z{(�������MU���j�.�`��
r���L���2�����}�������w*~x���O��v����������5'�~����X$�,,[�[��e���"��V��Y��{_G��Z��R��B����p�X�,ZX(�AR���2�U?y��J��T�_u%/;�W!�4yz�i|��=(��w��?����/EX����I�$=����7��3�+��#��tS������t��bu�]1�>n]���O
��a,KK!i��g�n]��q����p�����������������5���I���>!���L=y#�Ps��L��H��4/p�@s����9��=P��E1B������^��i0*�WjT�y����8.?���k��t�E@�`=��74�(��[��u��%Or��N���mRsKGM7d�wi)))))�o
���l����jw���T�"�s����0~���]�zM����8vngB���%U��b�K�N��x�-
.N�# ���x~E����8uv����Q�Ba�g^�G�� �������%���1C!�~�)����P�.]�6]�T�|�XbaynN<��ZoA��~�����������6�[�9�C!�n��Qj�4�������WV���/!���#y��9���`�\}_P����C�0/vM`�.���E�J�Ik�EO�n�^����$m�3F���y�����@�W`8-�QQ|s�������Y���2�,�#,���������V������+_D�{tsr�2�����q4{-C���HzH:.�����/)O�_P�����d#DQ����f#A�$ER6��6�E2d����2{����������q��Y��8?�<qe&�T@����S���xu��}�n^4)p������=+g�%�Ry����w���8��S��OG��S�ft�[q���C]��M����������H6i���������)��S�4{��#��N0��T��\II���L�bX~h��Y��y�����+)�.����x�+|�`H��=�<�"(�3��b��m�5�0&����M9y���P{�@�l��{z��'����B_OO�v�� ";�h���m��H�'H���4&O�!�
3l�C�w���6����Wu/�I��i��f�����B����������y]n5Hz��A�f��L&����DZj�����Q�I��������Z~�sK����,(�����"ha�o�gG��*	
�.�^qG
k������2��$3���a��^n�S,L`�~��x����r�n��&_�RYE��{�������[�7Xr�an��<')���*+�'���dm��n���Y��*A���_f����y��I�Jq�Q��QK�Vj��P�>�$�-
���4kKB����l��w���F�@��m�=��zX��?(&-��}������'_�)6W�}����d��jh����L�v������0+��o�>��a3^Ed��cw��7!�\"�I_�8��U"��%���`Tu�$�^A���������4�q	�Ww��!�{����
�DX�ob���N5���xW�WQ����l�z���b����������~$��5u�0:|�g��������,�/O'�~_*�HE�9�b���i����t��;&�E._$��Js���[�g��W/f�=?2>�HX%�g%��&�������L5y���R{�@s���H��!I���"=�(�6�L,�f���4�LJS�a�4���0��9dx�`P�o��hx�������_qh��^zH�I���k�X�.u�l�-���oP4�����+I�k_�y�����\<�lBH�-�EP�r�j�DF�E�M��4�<*
������fh��2��h�!
�l$ y��x
�50�� 
#��Th�<
��w4�����ph�j�5������l���g�/*����=�&c���|��T34�q	�Ww4���C6��AA����Je���Ii*4L��C�;fC��`84[��o�+9�XPUU�>��OSz�7u��&����/��j��:.#�����p�F�7(��� ^�S��0B0)M����p�zG�a�@� ^�f���y��j^`�tg�������;fH�!	H�� ^��xML�2H���4&O�!�
3�!��x0�_���A&A&E���f��<A�{L_
b�g^�G����A9f������&h�,������-�68���!��8���.9��lXm���K����IPYi��'n���f'3����.��4T��v���Y`g��<����Me�j4
4��tZ��*cBl1�M��S�s��0&�F�/�~��H���f��n��5f?��q�y��*AaF�����3{�����u_P%�g?��3���_�OC�&�x1+���w^	De9��n���lP��� �������)���#{��h��d��"�X���4�s��F{c��x�������b�������uAY�� �K��*[f��G^��y��f��lh
�6o@�7i�����Y�H^��;K�7�\������q}4�\�m�a�r�k����,���(�Fp�.9��zk���A`�6C
�:.#����b�]�=?��U|�b�F�����+iwn�T�Y>�9��bG�������l8����O���4���/�?����Q��;���s>:��{@�����%�G>��JC�&�x��cfUe��l�kO��v�SVvwEoE��EXR��7(�/r&o�G�>AF&���0yY�h�a������M��_\�������sW�1�����]�K�u:��6�����K��~6)��o��Ug^��O��bSt�l/��l5���M)//����#j�ZDvm��Rlj@V$�r�$M����;K�7�\�jP�������TD2d�����Q����\K�+W	
�o�:�M�Ji���f��������ww��������W���t^�X����MAX�
�,�Z�/��]���;!�w�_t����er�����#�)2�^q21�D(��O��k�k���8?N��8�OORY[5�����l����9����?���@!�a���:�����m0�q�<7'���� IDATW\�r������"AQ��/���/v��(�����Y��������2A9���+�f{����H�R}m�T���i^��/�!�?���2{����bc�s��~�~w�nan���V�L����"�������������5�v�����m����O���9����"�����
}?��ec=����l��t��=��/�����&N�j��j�X�9W*q:�|qaE/����������
R�EX2�Zz9o��|Q1�x�8R�
�0B0)M����p�zG��h�$o��6a�g�D����,m��T�rkx�M���
�T=\���M7T�����A�i������6?��#���5����=��<���8.?�����w,HzH�<Q�u(�:W��<��;K�t"�P%.�����s�+���C6�kX�WlX��^�k����!�\��[tF������f�����Th@�k�wZ�i�|�����o����o�^��O1��9��K�Ba-}V^���*b�����	`�?	���};��2�H���"��g ������o��5���������\�)�Z���4��'�����t�������;�=�z���-B8��Hs���
���g`���:T�S�!��ku���=�{��v4�D:���&(�x	a-l�b������w��}��{/��
QL%Im�U���1i��LRw8`V��|\���m�����}�����Z ���&��

��:W��&+�o����v�Y�O�f�]y;�������/a��F���a{��|��p��GY�B��������=ff���� ^��W5�.O�YP5��/�������wa�a�A�Z<Nx$�����A� �^@7�:�;o�_���#�=��su71��T%�Rl���UL'�~m���qk�7f���%C��-�i�
����R����e#�O�Hi�C
�6oh�:o��������])<�R'O�����>*J�6(����Y���Dr����i�x�a�YY5�?W��C���5��Ue�$_�g���B�X1f���R�hc���c�S���������?	���a�����.�����w�T����bA��?WpcaGB�����r~
V<���������g�+'��������}��X����������n��P%����*�����wY����DA����F2:/�-��'���A �8\�� �(��i&�|T���=5���#���g-�ksr��y�0F��;�7���G6���5<S���xu��Z�������_of72����1v������#���%�����o������%�[�.���,??'�*�%�[9���w��S�������u����i�L&+O;�R�m$i�l�U7���.�7��h>�P�(q��E�~�8U��@}�d{iX2�z:o ������������W���Ii*4L��C�;f��C&y;G���kU�������!F�^���TU=��W���&�Qk�7f�]����;����u���RZ-f��$O��}-�vm�c�o�l\��wQ~:���$O����	X�+�n�dw`H�,it���BU]<	J5d�������B����������b���/2$!����R����f����q]q#w���0������L�p������O��x�/9�Ru�4#=C�|,y��������r��{���	�[d9O��8�tf���f7�+�\X)@-�(���l\RE�������}�A��0[�YkW�������bX���^i��k�X�m���!S��p�I$��H$��J�p�D���9�}*����L����xz�7�61�O�������E8�{��e]��G����J_�X0�k����������X�����[�#��h����3>�pdO�!����a�	�V�^Vo����Y����1�i�UC}�����j���kk�`���A�*�v�@H��7Sp�4D�v�xSu����]Nn���Z&�'�����
}��q ���o�����>66m��uwT��#�F��H�X>[��[����#�	i?!���?�zH�`�������]&�D/�&u
�_�5���%Ov����7�H.T�u�u�9�����3��R�I���������S���a�\���d�k5_��0Tvi�_�u��O
�b�(�z����=8������f����a]��d�=�0M5\u��z7�q���H���	����%�t?c����[�gVJ���~�J���jkZ�M������N~8�G8���0k���0�CU_	9�[�/9�ob�
���mL^(B!����/]�9t���q~���xPG�?�1���������+��wY�X�v$_E����%�<{�w}�o�����������:(����R���^������>���5*��H��V����Bgz>o_<��h^�H������M���s}N-qp�E%y��/,��r����^4�3+�e�.-}7j���5�rL�
��H��)?��8�Q�*+��y�L�"�
6���M#V0I����SE%Oy���%�M�/T	�Q���s!�k��#],�*D�+E�TC6�kX-A���=/���av��*����?�6���<���6S6(zp����+������O8��f�������P�!���[w�����2��`C�=,�{B�����MU��l��m�H��Z���X��qYu5�b�1��l�q�i/.��E�Y����7c��x!BYz8wg�2��gj���U�6�T@�r*	����E?���W���l6U%|5��N��l��M�������������������m�R���I&v�b�%��!����p������X����O�*�2(��%��If�l'��:4�,���9��+C���j�z�~Rh�P�
�t|���f� �H����T]���D��9lz������P/����w��ssy�C��T��M�
5{�_;�
2_���$
6���P�}�\���.7�����Q�P� j���V��b��
�"���\�U0u�k|����&5�j�!��K�#��S ��e���|XR��8���V���e�Y��H9�`X������~\7J��f������c�\}_P��������+_D�{tsr�2�����q(�'h�xB�{m�_^r{y3���	*������~]�zM���"��4��<2��o�V<;�����\���r��"G�(?>�pZx�����!�����dQt^�O�%w��W��[��s����"bynNn���;���0(�xB��~��<�A=;�kk��������1+��t��+`����"�����O�&�����ARQTe�Lh���j�Lz���e���Q�9��w���+�l1�q~\y��L��$,�&b�_�`��2��)C�O���|G�U$���|�{��#��N0��T��\II�����;A�f�)��u��!���8�`�����.�{��C�V��$����t���\I���z#�.�M��b6�#���/.���o������/�Uo�}��F{�,)��}�74;��3�x�+8R�	�0B0)M����p�zG��r�$o�H���}�n^4)p������=+g�e����p����o��V7�-��k�oO�>�0�n�����6���������o������}===\�Yh�Z���k���|B�{����P�3O�C��5Hv�R5��L9������(}E'im������M'��Q
��;AI�l���Z6���-����JT�M�yp��|Y�|A����m�+�+��o�������A�EP�����,�x����|Tx��E��r*D�yO~_�o�aZ����~�U*����e���� ��E�����R^��+7&e�B����g�r+$2.�������A5DI� �bw��7!�\"�I_�8��BX+����g��E%��'W�<^�r�_������_$���C&9��J=���4L������H@��k����\pwYw�6�j�y�����t����"�TT��,v�\��Z}�w�
f�=?2>�HX%�g%��&�A>t����1�/r�"�TT��|}�?���n�$^+��w���'g7�hO���A
�RX*�2��74<��3�x�58R��0B0)M����p�zG��r�$o�H�����_N���H�E�&Fm�d����p���Xo������*���5���{��f�s���H�EI�fO���E�a�����t�b_����],�4I�C��4HqiF� �gC�$-b�}�����Crg������Q��q^�6�s"g��R��iVM�@�V��|��T34�q	�Ww4���C6��AA����Je���Ii*4L��C�;fC��`8z?���
24C�
09��6�/����Kw������H@���a�4����
�5(��d�T*�4�LJS�a�4���0C2�/�����2�
0)�
0)z_�8�}6��%f�
`#�q�qQ�{������=V&�+~���O/Mg��"AL��v{���z�%ay��������4A�f��2M���f��]�ci�
S�?>��8#��������d���O����Z�e:��f�����"��,���M#a�W� ^��0C�H@���k2`*@����a�420
����m��M�)�+y���\��U�UMa����p��#��Z<���4��+Q5/2�L��
����S�7i����R��gG^{�:�/����^��V��U�H�������rQ��0#~kpk����}�"�kI�va#�M�I���*YeL�-f� 
���8��������5������������Fp�>	
U�6���'A���D�m����z�����?�
s������������o19c���xuG�i8d#��kP�����'H���4�f�<�uG�i8d]�p��I�x�}W]�}���IA�~���:�Z$|���|aJ}a�����1�J��[)U/12����R^^V)UYG����P�z�!����a�V��_������>�gl��/�=��
��I��x�O,�?=�b�0?��������vT�|��~�r�,���o����{~�5���
�����(�|&���2 �!������k��v�������*!?/���07Bas��YL]
m#/�A���=z��LP�{�������>���9����&n�M��	�2�}��I��Yp$�v5��s�}A��,���;�/������2����_���w5.�*JM �f��7.�W)���szSP�#�xQM]��V�����
OO�� �h3x������"?�����-j:���}���Ss�+��7��~������k�/����+y)1�����Q���EPK�E�����8fR�gs��{nf��i1���L7�EP���+���l>�����e��Lq��A��b>0�q	�Ww4���C6��AA����J��4�LJSi~���Pw4���C�
���/f#�z��7iQ�*{�q����GM��M��#�i������6?��#���Qu^�=��<���8.?�������IzH�<Q�u���������Aj��[O8�+�4�h��������=	f�d�2F�����cZRv��]�-���>W�lM����f�~��z��j���6�LZ>���g�1��R�8p��������o��03u�G!���MQ���q~}���/?p����[)���Z1�r��^����;�.��$���$����������#-W������L�
A ��:�������0������S�9g�.�Cu��-6������1�I��u+��}~T��n���������G��d]�����t�������;�=�z���-��2�`Z�����~~����C�N�8���>+/\�d1n���E���mm��m�n�pd�(�3�>����k��Z��`��v��fg$�]�wXp����I;���	Q? ^��0C�H@���k2`*@����a�420Q���%C��-�!-
[e/�����h��k������d����>%"U�yIPt^�=������G[k'ow��HzH�<Q�J03;��f9�����NC#���1�������ge�
�/n������������W	��U~��dSM2^�a�Q����AB�!�
��h���a���� ���g���_=�~t���R��dy7��u����Y/��f��������1����_}U"��q�.W�o�~}t���8^���O�#g�w�_�F��X>�W}�c��c����M��{����!S�)��(�MKL�i_��Z��DR�������1������NB����������~T�k[��&����S6^x���G�k�>+	�1^�UP�����W�I�����|�uhmkC}p��	�������e�����x���6z�6���W��l����������;���P/ ^��0C�H@���k2`*@����a�420I�]��%~o~�q�Gv��f7���-[�O�5�<���
�'����zd�7@):/�]6$���Q���]�"�!u�D
"�����.�JE����\x�D��$Q'y3����6�'n�0|������^:6�3!�dE"W�N����i�������s��uH��������'=�$��	�!�D�}J�s���#�������I����'r	������v��@�n�8,��������*tu��$>�I3�3+���Y��^��(G�}#(��������F����X���m�D�t������r�����L(�_Y���<�G.��(�!�d�l���pa�������	����U������F�:�Pf�-Z����D+�7��3+�n��6��mOg���7��*LK{_=P�^7#����j��B������;fH�!	H�� ^��xML%���Pw4���C&�����cc���XwG�	<�������=���[�����Y>[��[����#�	i?!���?�zH�`�����Pp~Z�e�M$��lR� ^p:�7����k��-?��:+p���'zz���<���X�����[�#��h����3>�pdO�L�ui�����J_�X0�k���RD���v��I�w�O��df�n��#��Bav�Tz!$}��`�u�C&��i�i����3��w��������[������#]`d:�����up��-�3+�mfD?X�)�HP�SH)(�8��P=�����aL&����?����.-��^�����|�5w�b��jk��gT���>$@zT�5���79zp����o��<�^�-k��d2��!�x�����,��3��	|�gkT�+����Ww4���C6��AA����J�����h�!
�L����s����5�P��%6�^���C;����E!�`��������<��|#M�y��	��=YY9��#'���oP}�I{��-I���R�%oSKJy��1��v���;��t:G%/**����Q��&��wY�X�v���&�O~��H���&�s����+!gr�����1�}=70b���;��@���B�pq��RTM5d������_�;��
����j��������N*O���rVP=���-G��#->:�#�_���d��
��"J� b�9S�����_[�>��*�_Bq��(�����f���9Y(�[@���P��(u����(}�@s�{���)�S����U�g�������N�L����s
n!�_F�e�Deg�X#��Yp$O;�^������j��9�f�8c�I����r��|a��.DzT���Z��$,��A�j�O+�����C)4�6H
�l���������a��UIk�}"@�����|C��+��vg���������t\F��
3����$oP�AA�&�R� 
#��T�_�p>�
3���uF�!7&���Z������S!.��2�[�^-��p�����=���_'[
�f�����`3MzH6(��7D)61�,���3N|����3I�O)D
�M�~��J��p'�F�(��[��u��.yF��7����,S�|~�Tt{q���k;9���%� IDAT�*u�w�%	�M�A�_���
o�Y7j��������Ry�O��Ai� �/met������?r����e����O��T���e�a���������|`,�-����C]:v����cn�Ppq��[�A	D����%���i�=��O�{7�LeT&)���)��v����iE��i�h�|^���"(bt
��_�"*<�������	_n��6�v9a�����'�/�g�vm�[��*6���j6:-�QQ|s�������Y�B��~�����������6�[�9�C�����U��[?u���k��G���s��_��R�h��A2��x�����>�_
�
�����*��]�����yQ����/�"�ft�[q���C]��M����������Pc���xuG�i8d#��kP�����'H���4�f�<�uG�i8d]�p��I�x�V7�-��k�oO�>�0��
�l/����]	cBl4�	�����g��{R���/����pig��k��FG�^zH�	!�Z�=ZP�K^���V�C��5�������>	�����-.WRz+�'S�1�)g�2�����h��h3�W�:j���]{�y0EP�g��A��G�/�6&`�����m7����E�^�l�����{q�w�T�I� X%2YPi�EP�M�7�^p����r���S������g�r+$2.��F>g����]&�d&�\=l��x���~�E�EP�b;O�5�[)��>�Z2j��J�EP���J��U�=�}��,�6.=-�"���L�v������0+��o�>S]�bw��7!�\"�I_�8��E�!���,��}������'_��_��n���Y��*A���_f����\-,�m���{Ye"AA��o��XHV{T~���R^E��{�������["��� -�}fHx[*���i���
S_EYy����X(��>9�iD{��k��2��h�!
�l$ y��x
�50�zi!����<�����h�!
���1i/��]YR\E57"���@5�M�W
m�1���TZ�$o�di�Z48*��C�M�}m\��w���$I):O� �y�����|�T**�M��o����y��
	�������{�'�Y{����(V��YI��	pP<p�������KE��4�Y���>5���lB!F�/�,�]�������(��������3�D���4+���bZe�`�tg�������;fH�!	H�� ^��xML�2H���4&O�!�
3�!��x0�_�U������o���j^`�tg�������;fH�!	H�� ^��xML�2H���4&O�!�
3�!��x0�8\ ��������EP���g��[b�� 06!1B�q�����8H*��ce����	���q�)���h��|a�g^�G��s�$S	����{�����},��A`
���Y`g��<����U��4�����V��C�L��j �SI�S
f�����"��,���M#�M�#������p�F�7(��� ^�S��0B0)M����p�zG�i8d`0�Y�~���S,W�^�=�.�#�v���&�K��8%:G��x^��i��W�j^d���=$�Q��Ro���
9�0{�����u_P%�g?��3���9�4H�<f?��q�y��*AaF�����c��.E���f��F�8�NqU���[�@TS�q\om�
��+�k^;�
J�
��gE�1��
�}*�m��aO������%��A
��j^[X�1����X6����g��)+����F����u\F��
3����$oP�AA�&�R�a�`R�

��������p�������2���t���a�����_u��H��k/�����&�K��c���;�R�4^bd��7����R�����k�>*��C�M
�a�N)����^=���}���z+_�{���
�&��\�X�zl��a~>~��=��M�"����q�<�<\;X*�t���Ywq���k�W���!U7Q��L��Me@$C&	J#9}i�(�����Io��UB~^��an,����)���,��F^���_{��}�������]�=[}4�ssr��/L���_!e���;��A��H^�j
������|Y!�w�_t����er�����#;X�j\�U��@!��+to\:�R,�������*G����b#�(�9���o��TgA��f�����%BqE~��]�][�t 82����i;���W�3o�8�C3��]mA���_��V�Rb�
����R�������.e��%��l����������!{��_�e������$/�b�`��,��s�T�t��$���^��3��Q����H�e$ ^��0C�H@���k2`*�AF&���0yY�h�!
��3�158^�6$FP�p}o&���U������O���9��H�%F���k%�+�'m~(&YG$x-�����^{H�yf��q\~���k�����:y��`�y'~����Q��T���p�Wti6�Z��w)���{��&e����+������FM��[R��}�����Y9(������������m���|��S��c���q���#�1�3<�+�����af>�P�BX����a����<s_~���;G�Rj���:bN�����m;�w"]��7Hk�Ih�����]��GZ�<9�}3\���@��u�o���O�a��K/����s��]���hQ[l��s��c��N�V�����o��5���������\�)��fqk�������;�w{����_Z�7#d6l��������8�v���B��q|a-}V^���*b�������'$�<��T���]����'�/Q�a���J�hX�=���7;#���������x��H���N�������p�F�7(��� ^�S��0B0)M����p�zG�i8d`�0+K���[(CZ��^!d������.=��W���E-1|JD�H������{H�y3'���N��J����:y��`fvn��r�%�{UM��FTk�c������s�<��r_�>>H�I?V����+*������k�����d�B�p���Su��fC�T��w��s'kA�����e�z|����O��{��.n^����/2�^�;����C��)-cV�����D$(|y��]�n�X����C/*q�2���.HG����Q�|���n��%����}�zc���O�C��S,LQ������\�z�����i��}�cR��s�?�������'�+qY������>�]M�;	d��6l����7���|}V0c����Xk����,�n����8BH�����~.,�t�����������]����5gL��7XlF���������Z2[����"{{8���;fH�!	H�� ^��xML�2H���4&O�!�
3����I��7,�{����8������0��?��h��?xZ������ ���k�G�y������eC�?	�����*�R'O� B!�����TT�l�������J��Ju�7s����l�{��	�G���;h��cs:3BHV� rE��I�����M��{�:��E�"A��������'=�$��	�!�D���/��9pz��Si�n�Hx�$�����q�����Z�rF�W7�V���L��Ri�:�~�������u���,lT��L������f����q]q#wQ��p��e��g"D��NUlZb9���^�&���,��S�#��L�R�B2n6W^l��R�ZX��Z���U��*���S�`#]�Y(�J�-��t~����}�������O|����-����������{�~��g�|x%��7\l��� �����D�B�i(������p�F�7(��� ^�S��0B0)M����p�zG�i8d`B����>66m��uwT��#-��{1�O�������E8�{������5.JK>������������
��<i
���]&�D/�&u
���|���&���������������z�3YL���{����8B)�6�:<��G�d�dY�v�Q��81�����3���(E$�j`m',�d}w����Of��F��?r�� ��``'K�'B�W?v_�N1d����:�rN�t��9t��?
��n��_��?��t!��~��&��%K���,�����`�|�"A�O!����C�xb�j�1�L�_�j��
C*���/�z�*;.������Mg�����QM�b���QI�/f���������7��{!$}�p�"t�w���_w$�������|&��v7��j4������W��;��R�<���g{��FE�"����xuG�i8d#��kP����Ti!���B��i8d��a�4205V^��]Z"�n��C5�hP�{�����6&/!��e�B��������4���'8J�de��J��"�
��<i��%�W�S���mj	B)�<�]��[3qg�!�N�(��EE�����3J��W�.�������U�������A	��!��tYT}%�Ln��t�4f���BL��sG�XvU�..�W����LT���_�;��
����j��������N*O���rVP=���-G��#->:V�m,����G\�?D��A��s�0aEw���}�}U��,���;Q*}Q���-�s�P���+d��hWQ�
�=p�kQ����j�d�9SP�8��
��(��c%�K3[+���n_=���B���n�����L�F!��H� v�����=W���as��|q�)���=D���#���%]����#�/���yIX5������V��1���0�Y�K�������v�����_�L~� �JE/�
���(����|C��+��vg���������t\F��
3����$oP�AA�&�R�a�`R�

��������p�:����v�b�|W������[����n�m{��R�����X|s�����������b^d��&=$�������}��q�'>�X{��������&`?�R��N�C�s��-h�_�:]W�<�����sSk�m�|~�Tt{q���k;9��*u�w�%	�M�A�_���
o�Y7j��������Ry�O��Ai� �/met������?r����e����O��T���e�a���������|`,�-����C]:v����cn�Ppq��[�3D����%���i�=��O�{7�LeT&)���)��v����iE��i�h�|^���"(bt
��_�"*<�������	_n��6�v9a�����'�/�g�vm�[��*6���j6:-�QQ|s�������Y�B��~�����������6�[�9�C�����U��[?u���k��G���s��_��R�h��A2��x�����>f!����aYI��!f����JK���9CS-�M�|aPc}g����|+���t��s��?�SV���j��2��h�!
�l$ y��x
�50�� 
#��Th�<
��w4���C�
�����k5p�����6���T����
C�����Rn�m�5�0&�F���l��{z��'����B_OO�v��V��itT�����B����������h�=��<Q����Z=��?o�����r%���{25i��r�/����Q��N��h3�W�:j���]{�y0EP�g��A��G�/�6&`�����m7����E�^�l�����{q�w�T�I� X%2YPi�EP�M�7�^p����r���S������g�r+$2.��F>g����]&�d&�\=l��x���~�E���b;O�5�[)��>�Z2j��J�EP���J��U�=�}��,�6.=-�"���L�v������0+��o�>S�&_v�){��%2�����QBj+J��O����J��z���������~�U*����e�[��N�E���������U&�]�6����d�G�� �/�EP�����,�x���%B�l��w���F��?�+^k_3]T���S����*6RF����#���7�Bq���M#�k>(d��2��h�!
�l$ y��x
�50�� 
#��Th�<
��w4���C�	
���������,)���X�@�������6K����?E*-J�7{�4~-�z�!�&��6��c��X�i����'h��<uwL��\�H*��&_���Oi���A���^IZ�X��=������G�g	�������8(8���t����"�TT��,v�\���EI6!�����.�^�CW�]AQk�EP��w�Tpa��OC1��2}0_�3�Mu\F��
3����$oP�AA�&�R�a�`R�

����������~A����/��L�I�EP������~AE5/0_�3�Mu\F��
3����$oP�AA�&�R�a�`R�

����������~A�|.��EP�I�EP�I��"(������-1�m���!��8��b��kW$���2Q\���~z	F�=���F�����5���V%�� 0���jh���@�50����o81�KOl&��Wy7��x3��<B��y]$��<>�i�#S���w\F��
3����$oP�AA�&�R�a�`R�

�����2�R�2��A5Z�����m��M�)�+y���\������n����p��#��1!6����i��W�j^d���=$e�z�!�&�{��`��y���<��J��~zyg�[��V
h�"y�~���R��EU��������/���]��%��=��(6q&���d�1!��!
�4(
����@���"���w��1����3����D,�!D&���.!���ZJ��b)!���R��_���J�ZkcmT,�j���QY'��d�-3���1I�����1c���W��y��~���|s�0���"4A������U��s���~6�*/����M~k��J ��c`�,�J y�B�f�xm�R��BXKa`�,����������f��e�\z��}����8f�������\=��;������\N�2���j9r[rEE�P��G4�������f���+���6�����f�����o�GQ�dy{G;S�< m�v������_<~H���O����ET�`���y*>^�5?�}�r�����!_\��u��M�&J�qS�;iDS2MP��&(�E���	���UbA~����B��f���i&K��5Wm��{.$>yV.�(|r�����&����M���q�qQq)�QI��Yl��.|��`w]vC��U�B��= (9���b���r����-+��0�q;J� ���7l[|z�P*d��Y��q�i����l�;�P������c���:\V���^Z*�V�^�<��Q��G~����bJ��J������>f����-YgP:W������qq���[;��%>�_�we�GB�|n�&�~T�g+E�s�:��~jq7��[�J3����_1�������?f�����7+�kV��f`)�!
+�E�&���M��+�lV���j+���Yw�1��8K����W�O��� 1���j?�B)����koKi��Z�K���M��3�7yv�E�|A��Im^�l�f����6`��[���9
��f�Nc���������.YtcYW-+DsH�c����=#��F��~�S*N|���:�KV�0&��2�c��N��U]>	�l�������"U��]o�S����|q��V,��(�����B5rs.��
7�G��S�/����w�����]�}�p��n�����} ]����ttX�K�to�����������
�L1��
@���#�����X?�n�b�8v�������~G)�;��)��1��;��1�p����x����G?V�����B�j�nT���J����������w|����X]%�Et�2��7W�{��������1����������
���+���q����C�������Dy�| ���?f�����7+�kV��f`)�!
+�E�&���M2V��� IDAT��,/����%��+����Y��8`�����/:����Z���#�
��=Eb�i����g�o�
����pj��K-<��O^��j�.����^��Q��4��7|
p���x�����b~��{"����������J� ��������"Ds�6��������+�M��a%�
�B���YN��:�R/_��������}Q������?�v���K7��f=�s��7�
�VkS��s�s�Q�DT�����|�/m��[�;M�T
Sv������cZ�o��mp��,	��8m��?�33S.m�d��^��z�����lFb{M�5PxxY�������>�:�������=	��������c7��h�7������/(���,#�qUe�#~��{�Bi��\���\X�_J�k��D�K���4f7um*+).#�n��<4	�[���%[	$oV������R�CV�b)L��%�2d��YY*^�%x���';7�,R>�:g����w�K�\�s�Q=eE���J�;����nt�7��L^9h���#��z��������
H!�j5��H.���x#<x��R#��F���n�������Uc����-����3��!DQr3zq�����5l���9����<U	�C/8�3�#i����i��W���,����&�����!f��C���/]K�{��O'����U����%�vrkb�a5tn y�����~z#���Ou�������,3#����MrM7>���
@������Z|)o~���9�+�n�&����o����{g����X������
���l�&�������U�M)�H#�z��B{����y�+d�j���dJY��(Y2���#��K�`�������K��oC15�[���%[	$oV������R�CV�b)L��%�2d��Y��x{/>�T��a+����vu�b��uG�o���J����I9�������Z�G�j�amw�4C��<y���R����C4���5��(&<���ck����{huV�g�9�Uw�K��9l���k���q�JB����������n�Q(��l�Zs���	e��;����n�	��ZT��s�;]]�c��wf��F���s��T�������B����kE�����z��m�En�T�+������[��w�X����1��i��.'/���Z�h����By����\J�_J���o!�C��,K�zbsj��l6�&VO��E��,������T��=w����4GSj~G56��%����2W%Q*	!JB(��^�R�<iQa�psU��?v4����k�DJ
K�!&�x���2�d+���
����XJuH�
aQ,���3�d�C�L�U6+���y��B���w?�2xZ���j��Yl~!����zV�����<��Q>��~~���_}�D���'O;����i�����f���|���W�����tewa�v���%%����3�j��W��ULuk��"9�c*I�3�!m��8���K����������M�4�b�V�a{E����������(�E�I����e�.�+��-}v���-���0?�a����^R*��)������=�+~����$=��V�����kt�: Q��"��i���:um�qW/������?u��P<N���W�+Q?��c��gk��

��z�J�TJ6j��9�n6�;��T"�:4R;(�HBy���<�������*�QvT&J����
�de��k)��:l[:��oN��D�v�h����!K�H���Y!^���T�4��R�<K69d�Xe�z��RM���yN�����O:
gU]�b`��><����]wC&��j���l!DR��a��Gy�T�k�4��<����ca<_�q��6/�]4����|	E(��CC���v�����:��'��/s�������m��(��!�����W��������]}��F;R�4���������'EREyN��<.w���4o���j;nM��1oywl����T����������]���������#��)����A�m�v<��~�XtzJ��9��I���^����u@B�L:^*I�����K�)����W��!��w�)de�����cG����U��]����E�X�~)�����}�Ac?����!v/^@�N9YZq��!]�[�pm�%D�f#�vT����.U>�m� ��-[�8p!��%�rY��>����+dy�*+z�3E!
�G��f��������}�&1f�hJ�	J�*s�o�(;<���{~~����f�zN|��%����R������C9��)�9�(��K����U^v��nF�Pk��J ��c`�,�J y�B�f�xm�R��BXKa`�,����������f�������jQ����������F���=
���o~A"�
u6d&�f�z�x��lM�z~r^���������Raeh��"��F��U+ei?������k�������M=8���;a��de�#��
�r�xL�PHo|���N���|�!�������w��o��d����X���e{�Y4y���F�m������W������{?>�&����Nl�����8h���d��b��/c����9y-�_.�WU��m��i���~K���W�
��\Xs��5����FN�TR����eC�~rE�0*P���o�j�n�);�Bi%?�����	����s���N�������d�Z���������6�N�.�H��YI��0A�I��N�]���)��_���g��sG�h�#l�m�P�PV���[�f��CV��U&�=��n�w���&�f�:�z�&�����,���e����O�������W
ke��7��������!K�H���Y!^���T�4��R�<K69dh�7�d��Y��x����%Wj��o��!P�4��U��#�6��DcDY�Z������M2C�C5�:{���a�!if�g�Zdw��%�zZ�@"�K���.~?7P��D?����k����G��8�>y��oN���q�T��p���n57�|���Y�D&������:��i�mH�B�}��
��H���L�����������e�S�-=&��e��^�g��j]V��3d`�V���5+�k3�������X
�g`�&��Q2��0�__��LPk�&(���
���f�z���fh�uY	�[���%[	$oV������R�CV�b)L��%�3D�`Z��|�u�t���&(��7A�ZN������8����J�R����p5ns��(v�%���G���f�`1�|�h�!���~���d=K����
� x;_dl�nGQ�����}vo��&�������z3�}�v���D$)��s|���lc�������?f�����7+�kV��f`)�!
+�E�&���M��2���a`����R�~�6�t55��H*,|t����6/~��kc��U��z��\�R�l�l�m��}$�.���������4��2~������>=�����Q�D�s��M��/n�z��$O��������
I��8�J����7��^�,S� ��2�K��#VjRcC�Q���A�,_h��i��MP������Z3�����U��s���~6�*/����M~k��J ��c`�,�J y�B�f�xm�R��BXKa`�,���!K�/��:/���3��[>>d@��1K�=�����U5�tol��jp:�>�����*�[���#�%WT��}D�K�W��f���+���>R8=��^6���~�~}�?��\ ��;��z�i���}v�\po���C��{��>�/�������S��rw�iu�>D9u������/�T
N��Q��Q�������4
�)�&(�XA��"h������*� ?���po!�Pn3�K�4�%����6�S��=�<+U>�}v�t^�����&U^��������J��$��,6��
�G��~��.�!J�*�C!v�����g1�O�E9w~Z���]��q;J� ���7l[|z�P*d��Y��q�im���l�;�P������c���:\V���^Z*�V�^�<��Q��G~����bJ��J������>f���bu\tE������������=�9������Br~��JT�~i�toU�4���C�����{�����-�i���+�8�"�Wc����Z�8[)����y��S��9��T��M�������e%o�10C�l%��Y!^�B�6K�iX!,��00y�lr���%�K~�^9^�Yh����g������q��]�O�����sAb`���~��R����������������Ig�o��������������<��'�m�:���fKFrP?����*,93][���{]�����ZV���:V���+�{F6�;��q���T���A�u���aL��et�����#��&|���k����E�8������(������9�XEQ�#v)	!�j��\�n`���~_���M�4Q���l���1�\���?�@�XI? =����>�>������{/9=����b-�V��G.~�'���~��L?��q��'=�]-:7��R�w�S��c�uw�c���/�|���g��~�~����8�v����-����k�Q1M���"��i��*��Go��7a`M���c'�)<u����_����N��iH�����^C��ig��m@9ro�����[��r�/�c�q���A���+��
��f\������!C�5�s-Q�6����x���2�d+���
����XJuH�
aQ,���3�d�c`�,l����%��+�[�,Bq�f_����W�}�N������N��"1|�4�L��3�7��}|Z8������'�m@5T�	SC�
����Z��>�8��K<�XbVa1?��=������\�{A�P����w�����9T��oXx_��]���A����e!��]�rj��I�z������Gw.��:xO��,E���K7�\���4��������,h��Z[�r�����s�J%����N_�~qhS�x���iB�R�����oO�)Z5m��?gIP��i������ri�'���
��KOT�f3�k������"$dd�^����	�&����I��u0]�T��8���@G��I��Q��:r�i��A�!��i��������&o�pI?��ia��������c���e���,#�qUe�#~��{�Bi��\���\p�k�k��D�K���4f7um*+).#�n���$o�10C�l%��Y!^�B�6K�iX!,��00y�lr���%�M�\�W.|�s��"%1xc�9�P.o�k\b������(+Ro�U��aV��t���f�g����A�G����V��'�m@B!T��Er�������������4�$��u7n������;t��my�������E!����������a������m��X���H�z�q��iI��$H�N�����e!��]����!�t�����?nY9�_k;�'B5�����owf����o�������Z�����z6>��3�3j:����,�s7[nL�-�r��mo���R�3��/���ro�o)�m6#q�t�L���U����{����g��i(�9|�fS��"R��z(����a�� B������:���*�1�����|\�~O�'��R�d�D)����*Q�e2boo��)�
���K��oC15�[���%[	$oV������R�CV�b)L��%�3d`�`C{/>�T���+����vc�=��j��A��_W��5��_�"���<9Y�w�:C��<y���R����L��C4���5��(&<�����3��{h� �G]��g�K��9l���k���q�I��o���7����Y�E���[����;���qJ>`�T_�?T�j1v�x���~L�����h��P.��������,S�Oj���hK��53�	�*�����W6
�W�����X���Yc�e�60�]"N^Z���p��O�������R�Z)��-�z����bif���F��l�nJ�m�")?�00�����R!�7��o�z�M���6���E��������/<yB�'�f�U�>��'Os-�^��(�R�z%E�v�m�����x��*R�;�wM��5w"%�%���FC����X��@�f�x�
��,�:�a��(����X��10C����7�����u#&�~Xs?�[�Y���Am:7��#���4��]�*�V��6=�';�����OH|�����P��ig�/Z�x���"/�L)%$���;J���?�����z}FiK^R�\X]�8���I~��Y�T��n,��9�R�t?S����:7�j=��:7��l����s�2�����,B�^'�v�ap�91!Ji��rR��d�AY��W�� ��~������qo�_��V��F��*���}^���;s������k��[�$J\���?���o���-�P�i�w�<�J�i@��{�L��������}�X?W�#d�\��Q�6��7�%���~t$w��OEu6�f#�vT
�Q�K�g�6U�`g{qO��sx#���:E�))?6��B�.��pU���u�
Q��/B�!��p������k���|��v�����!O���-O����u����Qvx�a���N��i�(������K:[��o+}�|��k�m?x�S����vh+��J ��c`�,�J y�B�f�xm�R��BXKa`�,���!K�7��:/�$`����zj���~c�:�Q����jt��O���O<�73�z`w����0z���iu�]Q�'o��9���0�/�8�A�?������m�M�u������,�>��.�!#��L]W��6�.��NL�mS8p�L���v/?/���G��R������v���7��Y�md�4jq���T���A��?���2�Y>����v���c������3h��l��5<�Y�!.>�������WU�o}�4/vq�g����;p�_"��Rs�4}T���r�t�T�=��s�>S�]�/�h�*de�����cG����U��7��N�i�V��_
�i�#��tj��w����9�e��7�R�SN�V\�oHW��-\s	�����U{���K��[9��u�.Baw��\Vy���x��
Y������}��MP������X���e�M��c�Ae���Cz�o��wH��+F4!��^�:�	j0����Li��EA^]z������+�t3b�Zk]V��3d`�V���5+�k3�������X
�g`�&��Xr}1�����x�&�>�Z����#�x5|z�q����tg��"��D�l�L8�:���z���R�������eC������*M2C�C��h���j�,M�'�43�;ymr�~�{��i���x'lC|���r�������'(���=��vo4w�/~|x�������+Y��|x!�;p��oM9�o��a.�e���U��9���������zk~A��
��	JS2]P�x�j����4~�T^U��qb�_`p����=~�L�PJ��5W�Y�y�o��K%�O�\6��'WD�U}a�&��	�v��3�/�V�/���P�	*>�n����J�0��OK���z��	Jq�1i����R�TX�����
4����4q���
�B!�u?.!z6!:wT��=�����
e��/�Uo�j9d���Ye�*Q�����z�^�Lm�����
���NjMd���f�sw\J+VI�������]���y-�<�&�1}�~���s������az����������!K�H���Y!^���T�4��R�<K69f������%�NF�����,�RC5{p�
�:6���j�b��f��h�(KZ���^ZpU�d���j�u�
5�C�:C��P�����2iK���<�D.���%]�~n�Z��~@;���
KS��r}q}������+%�*� +�����jn8��8&���2�L.)���u����4�!��>�|��j�G�/]5���~o�Z?�w��NMv��J0��Q��U�����e%o�10C�l%��Y!^�B�6K�iX!,��00y�lr�%�i!^�1���Ge�MAt�:	IDATln����z�`���V3������?f�����7+�kV��f`)�!
+�E�&���M���d0-�`>�:\:h��MAl
��`S���&(�4A���	
6MP�)!D�TZz�\EYz
V��nzl��K�q,=������4�-=x�����=������O��p�q�@T%���eS�wcJu��{]�L��<k� ������k���ug[z"�Z]*K��O�6&�����f�����o�GQ�dy{G;S���������S��rw�,1o�(�������Yz"�:�26�����;xk��aT �UTtcYWc�����&U^��������J��$��,� �����T,�,H��y�W#B��7���[i6X���fW�2��"��"h������*� ?���p�����j1�\e��
��+��*�M�yn&���{�����=���s'hUe!��R(�{p����f����M�f�=����M��z����,B�c������(�s���q���;B�(�0�PI��w��awYz]xkE76!���=��2��]��]{�L��C��O5���>���_��=��d|��FP����"y�B��H��Y��d��p��a��z�'��+2��On���&U�.�k���sv�Uw%�;��|g-�c�UIY��&��>7����>����m���&�4��� k������]�D��T��s��	���"����o��4����O`������������������4]#h��[�$NY�W��vcWH~���vp�������z�	�w]r��07N�7�*���l�}k����&6!�V�	�	Ey�g��6rR��v��������3��z�����YS��#������	�-���k�">���.�R�t?S��M+������J���j�F�v�F�O_�CW����7,�# �-���JBQ��L�����O�~�;����V�&SBX���R��b�A�[�r�����.��8
_j�RN=�;Py9��W~yF�����a�t����We<��&Dz��D��3��\>��/������r���U��+}v���-���0?�a����������HJL�������[�������d��e�F���N���<Y����lBw����,�<rp��#�6\��J��w5������^/���%�rY��>����+dy�*+z���w��W����n���>�baYY����:�����D-��w����A�Ne�������]n��t�_K�v�*���&�����q/(���-�����\R��t����.�>)��������$2��,�~����M_~V�:����ZYq�fV��JT�0�����G��-{�{D#BX�"���/��R��<d��ki�r����� n�DO�������$vZ+�����1y����Yz�F�
=�����+h���7R8�<���Ti������w�;;7�����T�����\��:IEND�B`�
#5Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Bertrand Drouvot (#3)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

Thanks for looking into this!

On Thu, 28 Nov 2024 at 16:39, Bertrand Drouvot
<bertranddrouvot.pg@gmail.com> wrote:

Hi,

On Wed, Nov 27, 2024 at 11:08:01AM -0500, Melanie Plageman wrote:

On Wed, Sep 11, 2024 at 7:19 AM Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:

Currently, in the pg_stat_io view, IOs are counted as blocks. However, there are two issues with this approach:

1- The actual number of IO requests to the kernel is lower because IO requests can be merged before sending the final request. Additionally, it appears that all IOs are counted in block size.

I think this is a great idea. It will allow people to tune
io_combine_limit as you mention below.

2- Some IOs may not align with block size. For example, WAL read IOs are done in variable bytes and it is not possible to correctly show these IOs in the pg_stat_io view [1].

Yep, this makes a lot of sense as a solution.

Thanks for the patch! I also think it makes sense.

A few random comments:

=== 1

+       /*
+        * If IO done in bytes and byte is <= 0, this means there is an error
+        * while doing an IO. Don't count these IOs.
+        */

s/byte/bytes/?

This is removed, please look below for the explanation.

also:

The pgstat_io_count_checks() parameter is uint64. Does it mean it has to be
changed to int64?

Also from what I can see the calls are done with those values:

- 0
- io_buffers_len * BLCKSZ
- extend_by * BLCKSZ
- BLCKSZ

could io_buffers_len and extend_by be < 0? If not, is the comment correct?

You are right, no need to have this check; it can not be less than 0.
I completely removed the function now.

=== 2

+ Assert((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND

and

+ if ((io_op == IOOP_READ || io_op == IOOP_WRITE || io_op == IOOP_EXTEND) &&

What about ordering the enum in IOOp (no bytes/bytes) so that we could check
that io_op >= "our firt bytes enum" instead?

Also we could create a macro on top of that to make it clear. And a comment
would be needed around the IOOp definition.

I think that would be simpler to maintain should we add no bytes or bytes op in
the future.

I think this is a good idea. I applied all the comments. Created an
inline function instead of macro and added this 'Assert((unsigned int)
io_object < IOOBJECT_NUM_TYPES);' to function.

=== 3

+pgstat_io_count_checks(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
+{
+       Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
+       Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
+       Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+       Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));

IOObject and IOContext are passed only for the assertions. What about removing
them from there and put the asserts in other places?

Done. I moved these checks to the pgstat_count_io_op_n() function. The
code looks more like its previous version now.

=== 4

+ /* Only IOOP_READ, IOOP_WRITE and IOOP_EXTEND can do IO in bytes. */

Not sure about "can do IO in bytes" (same wording is used in multiple places).

I changed it to 'measured in bytes' but I am not sure if this is
better, open to suggestions.

=== 5

/* Convert to numeric. */

"convert to numeric"? to be consistent with others single line comments around.

Done.

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v2-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v2-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From f4d67aa4de695bcb97f4043bf7bf6ea1962feb17 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Wed, 4 Dec 2024 14:37:30 +0300
Subject: [PATCH v2] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, remove op_bytes column from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat        |  6 +-
 src/include/pgstat.h                   | 38 ++++++++---
 src/backend/catalog/system_views.sql   |  4 +-
 src/backend/storage/buffer/bufmgr.c    | 14 ++---
 src/backend/storage/buffer/localbuf.c  |  6 +-
 src/backend/storage/smgr/md.c          |  4 +-
 src/backend/utils/activity/pgstat_io.c | 17 +++--
 src/backend/utils/adt/pgstatfuncs.c    | 87 +++++++++++++++++++-------
 src/test/regress/expected/rules.out    |  6 +-
 doc/src/sgml/monitoring.sgml           | 61 +++++++++++-------
 10 files changed, 167 insertions(+), 76 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 9575524007f..a9f4d33205f 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,9 +5908,9 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 59c28b4aca8..e8148adbc03 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -327,22 +327,44 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-byte-measured and byte-measured operations. So, that makes is easier
+ * to check whether IO is measured in bytes.
+ *
+ * Note: If this enum is modified, ensure that both `IOOP_NUM_TYPES` macro
+ * and the `ioop_measured_in_bytes` function are updated accordingly.
+ */
 typedef enum IOOp
 {
+	/* IOs not measured in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs measured in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
+
+static inline bool
+ioop_measured_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
@@ -557,11 +579,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index da9a8fe99f2..801ea02e13f 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index cc9782b7132..a42d5c3c262 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 6fd1a6418d2..f2ff7ab5ab1 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index cc8a80ee961..6b275d67e12 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1407,7 +1407,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1794,7 +1794,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f9883af2b3c..1e6235e088d 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -23,6 +23,7 @@
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -31,7 +32,6 @@ typedef struct PgStat_PendingIO
 static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
-
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -74,20 +74,22 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(ioop_measured_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +122,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -150,7 +152,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 					   io_time);
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -216,6 +218,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 60a397dc561..81adc51a47a 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1290,14 +1290,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1338,11 +1340,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an op does not do IO in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1350,11 +1377,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1428,17 +1459,10 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 				values[IO_COL_OBJECT] = CStringGetTextDatum(obj_name);
 				values[IO_COL_RESET_TIME] = reset_time;
 
-				/*
-				 * Hard-code this to the value of BLCKSZ for now. Future
-				 * values could include XLOG_BLCKSZ, once WAL IO is tracked,
-				 * and constant multipliers, once non-block-oriented IO (e.g.
-				 * temporary file IO) is tracked.
-				 */
-				values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 				for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 				{
 					int			op_idx = pgstat_get_io_op_index(io_op);
+					int			byte_idx = pgstat_get_io_byte_index(io_op);
 					int			time_idx = pgstat_get_io_time_index(io_op);
 
 					/*
@@ -1456,19 +1480,40 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 					else
 						nulls[op_idx] = true;
 
-					/* not every operation is timed */
-					if (time_idx == IO_COL_INVALID)
-						continue;
-
 					if (!nulls[op_idx])
 					{
-						PgStat_Counter time =
-							bktype_stats->times[io_obj][io_context][io_op];
+						/* not every operation is timed */
+						if (time_idx != IO_COL_INVALID)
+						{
+							PgStat_Counter time =
+								bktype_stats->times[io_obj][io_context][io_op];
 
-						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+							values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						}
+
+						/* not every IO measured in bytes */
+						if (byte_idx != IO_COL_INVALID)
+						{
+							char		buf[256];
+							PgStat_Counter byte =
+								bktype_stats->bytes[io_obj][io_context][io_op];
+
+							/* Convert to numeric */
+							snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+							values[byte_idx] = DirectFunctionCall3(numeric_in,
+																   CStringGetDatum(buf),
+																   ObjectIdGetDatum(0),
+																   Int32GetDatum(-1));
+						}
 					}
 					else
-						nulls[time_idx] = true;
+					{
+						if (time_idx != IO_COL_INVALID)
+							nulls[time_idx] = true;
+						if (byte_idx != IO_COL_INVALID)
+							nulls[byte_idx] = true;
+					}
+
 				}
 
 				tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 840d7f81615..d36433065c6 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,7 +2760,7 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
+        Number of units of size <symbol>BLCKSZ</symbol> which the process
         requested the kernel write out to permanent storage.
        </para>
       </entry>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.45.2

#6Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Nazir Bilal Yavuz (#5)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Wed, Dec 04, 2024 at 02:49:11PM +0300, Nazir Bilal Yavuz wrote:

On Thu, 28 Nov 2024 at 16:39, Bertrand Drouvot
<bertranddrouvot.pg@gmail.com> wrote:

You are right, no need to have this check; it can not be less than 0.
I completely removed the function now.

Thanks! Yeah I think that makes sense.

What about ordering the enum in IOOp (no bytes/bytes) so that we could check
that io_op >= "our firt bytes enum" instead?

Also we could create a macro on top of that to make it clear. And a comment
would be needed around the IOOp definition.

I think that would be simpler to maintain should we add no bytes or bytes op in
the future.

I think this is a good idea. I applied all the comments.

Thanks!

+ * non-byte-measured and byte-measured operations. So, that makes is easier
+ * to check whether IO is measured in bytes.

s/that makes is/that makes it/

+ *
+ * Note: If this enum is modified, ensure that both `IOOP_NUM_TYPES` macro
+ * and the `ioop_measured_in_bytes` function are updated accordingly.

Yeah, or?

"Ensure IOOP_EXTEND is the first and IOOP_WRITE the last ones in the measured in
bytes" group and that the groups stay in that order.

That would make the "checks" local to the enum def should someone modify it.

Created an
inline function instead of macro and added this 'Assert((unsigned int)
io_object < IOOBJECT_NUM_TYPES);' to function.

An inline function seems the right choice for me too.

Done. I moved these checks to the pgstat_count_io_op_n() function. The
code looks more like its previous version now.

Thanks! Yeah, more easier to follow now.

Not sure about "can do IO in bytes" (same wording is used in multiple places).

I changed it to 'measured in bytes' but I am not sure if this is
better, open to suggestions.

I'm tempted to say something around "track", would mean things like:

1.

ioop_measured_in_bytes => is_ioop_tracked_in_bytes

2.

s/If an op does not do IO in bytes/If an op does not track bytes/

3.

s/not every IO measured in bytes/not every IO tracks bytes/

4.

s/non-byte-measured and byte-measured/non-tracking and tracking bytes/

Thoughts?

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#7Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Bertrand Drouvot (#6)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, 5 Dec 2024 at 12:13, Bertrand Drouvot
<bertranddrouvot.pg@gmail.com> wrote:

Hi,

On Wed, Dec 04, 2024 at 02:49:11PM +0300, Nazir Bilal Yavuz wrote:

On Thu, 28 Nov 2024 at 16:39, Bertrand Drouvot
<bertranddrouvot.pg@gmail.com> wrote:

You are right, no need to have this check; it can not be less than 0.
I completely removed the function now.

Thanks! Yeah I think that makes sense.

What about ordering the enum in IOOp (no bytes/bytes) so that we could check
that io_op >= "our firt bytes enum" instead?

Also we could create a macro on top of that to make it clear. And a comment
would be needed around the IOOp definition.

I think that would be simpler to maintain should we add no bytes or bytes op in
the future.

I think this is a good idea. I applied all the comments.

Thanks!

+ * non-byte-measured and byte-measured operations. So, that makes is easier
+ * to check whether IO is measured in bytes.

s/that makes is/that makes it/

Done.

+ *
+ * Note: If this enum is modified, ensure that both `IOOP_NUM_TYPES` macro
+ * and the `ioop_measured_in_bytes` function are updated accordingly.

Yeah, or?

"Ensure IOOP_EXTEND is the first and IOOP_WRITE the last ones in the measured in
bytes" group and that the groups stay in that order.

That would make the "checks" local to the enum def should someone modify it.

Makes sense, done.

Created an
inline function instead of macro and added this 'Assert((unsigned int)
io_object < IOOBJECT_NUM_TYPES);' to function.

An inline function seems the right choice for me too.

Done. I moved these checks to the pgstat_count_io_op_n() function. The
code looks more like its previous version now.

Thanks! Yeah, more easier to follow now.

Not sure about "can do IO in bytes" (same wording is used in multiple places).

I changed it to 'measured in bytes' but I am not sure if this is
better, open to suggestions.

I'm tempted to say something around "track", would mean things like:

1.

ioop_measured_in_bytes => is_ioop_tracked_in_bytes

2.

s/If an op does not do IO in bytes/If an op does not track bytes/

3.

s/not every IO measured in bytes/not every IO tracks bytes/

4.

s/non-byte-measured and byte-measured/non-tracking and tracking bytes/

Thoughts?

Thanks! I think 'track' is a better word in this context. I used
'tracked in ...', as it sounded more correct to me (I hope it is).

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v3-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v3-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From 992ec6ebf116358fb70eb4d6c42c0f6ef5e1500e Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Fri, 6 Dec 2024 12:06:17 +0300
Subject: [PATCH v3] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, remove op_bytes column from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat        |  6 +-
 src/include/pgstat.h                   | 38 ++++++++---
 src/backend/catalog/system_views.sql   |  4 +-
 src/backend/storage/buffer/bufmgr.c    | 14 ++---
 src/backend/storage/buffer/localbuf.c  |  6 +-
 src/backend/storage/smgr/md.c          |  4 +-
 src/backend/utils/activity/pgstat_io.c | 17 +++--
 src/backend/utils/adt/pgstatfuncs.c    | 87 +++++++++++++++++++-------
 src/test/regress/expected/rules.out    |  6 +-
 doc/src/sgml/monitoring.sgml           | 61 +++++++++++-------
 10 files changed, 167 insertions(+), 76 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 9575524007f..a9f4d33205f 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,9 +5908,9 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 59c28b4aca8..c8d2de908b1 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -327,22 +327,44 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
+
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
@@ -557,11 +579,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index da9a8fe99f2..801ea02e13f 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index cc9782b7132..a42d5c3c262 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 6fd1a6418d2..f2ff7ab5ab1 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index cc8a80ee961..6b275d67e12 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1407,7 +1407,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1794,7 +1794,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f9883af2b3c..ceb67b9cd77 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -23,6 +23,7 @@
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -31,7 +32,6 @@ typedef struct PgStat_PendingIO
 static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
-
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -74,20 +74,22 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +122,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -150,7 +152,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 					   io_time);
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -216,6 +218,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 60a397dc561..a3ce204bea3 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1290,14 +1290,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1338,11 +1340,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1350,11 +1377,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1428,17 +1459,10 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 				values[IO_COL_OBJECT] = CStringGetTextDatum(obj_name);
 				values[IO_COL_RESET_TIME] = reset_time;
 
-				/*
-				 * Hard-code this to the value of BLCKSZ for now. Future
-				 * values could include XLOG_BLCKSZ, once WAL IO is tracked,
-				 * and constant multipliers, once non-block-oriented IO (e.g.
-				 * temporary file IO) is tracked.
-				 */
-				values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 				for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 				{
 					int			op_idx = pgstat_get_io_op_index(io_op);
+					int			byte_idx = pgstat_get_io_byte_index(io_op);
 					int			time_idx = pgstat_get_io_time_index(io_op);
 
 					/*
@@ -1456,19 +1480,40 @@ pg_stat_get_io(PG_FUNCTION_ARGS)
 					else
 						nulls[op_idx] = true;
 
-					/* not every operation is timed */
-					if (time_idx == IO_COL_INVALID)
-						continue;
-
 					if (!nulls[op_idx])
 					{
-						PgStat_Counter time =
-							bktype_stats->times[io_obj][io_context][io_op];
+						/* not every operation is timed */
+						if (time_idx != IO_COL_INVALID)
+						{
+							PgStat_Counter time =
+								bktype_stats->times[io_obj][io_context][io_op];
 
-						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+							values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						}
+
+						/* not every IO is tracked in bytes */
+						if (byte_idx != IO_COL_INVALID)
+						{
+							char		buf[256];
+							PgStat_Counter byte =
+								bktype_stats->bytes[io_obj][io_context][io_op];
+
+							/* Convert to numeric */
+							snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+							values[byte_idx] = DirectFunctionCall3(numeric_in,
+																   CStringGetDatum(buf),
+																   ObjectIdGetDatum(0),
+																   Int32GetDatum(-1));
+						}
 					}
 					else
-						nulls[time_idx] = true;
+					{
+						if (time_idx != IO_COL_INVALID)
+							nulls[time_idx] = true;
+						if (byte_idx != IO_COL_INVALID)
+							nulls[byte_idx] = true;
+					}
+
 				}
 
 				tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 840d7f81615..d36433065c6 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,7 +2760,7 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
+        Number of units of size <symbol>BLCKSZ</symbol> which the process
         requested the kernel write out to permanent storage.
        </para>
       </entry>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.45.2

#8Michael Paquier
michael@paquier.xyz
In reply to: Nazir Bilal Yavuz (#7)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Fri, Dec 06, 2024 at 12:41:55PM +0300, Nazir Bilal Yavuz wrote:

Thanks! I think 'track' is a better word in this context. I used
'tracked in ...', as it sounded more correct to me (I hope it is).

Splitting op_bytes into three fields sounds like a good idea. Count
me in regarding the concept to depend less on BLCKSZ.

 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;

pg_stat_io_build_tuples() is now the code path taken when building the
tuples returned by pg_stat_io, meaning that the new function called
pg_stat_get_backend_io() is also going to need an update in its list
of output parameters to accomodate with what you are changing here.
Calling your new pgstat_get_io_byte_index() in the new refactored
routine is also necessary. Sorry about that.

Could you send a rebase, please? I can promise to review this
thread's new patch, as that will also move the needle regarding your
work with pg_stat_io to track WAL activity.
--
Michael

#9Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Michael Paquier (#8)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Tue, 24 Dec 2024 at 09:13, Michael Paquier <michael@paquier.xyz> wrote:

On Fri, Dec 06, 2024 at 12:41:55PM +0300, Nazir Bilal Yavuz wrote:

Thanks! I think 'track' is a better word in this context. I used
'tracked in ...', as it sounded more correct to me (I hope it is).

Splitting op_bytes into three fields sounds like a good idea. Count
me in regarding the concept to depend less on BLCKSZ.

typedef enum IOOp
{
+       /* IOs not tracked in bytes */
IOOP_EVICT,
-       IOOP_EXTEND,
IOOP_FSYNC,
IOOP_HIT,
-       IOOP_READ,
IOOP_REUSE,
-       IOOP_WRITE,
IOOP_WRITEBACK,
+
+       /* IOs tracked in bytes */
+       IOOP_EXTEND,
+       IOOP_READ,
+       IOOP_WRITE,
} IOOp;

pg_stat_io_build_tuples() is now the code path taken when building the
tuples returned by pg_stat_io, meaning that the new function called
pg_stat_get_backend_io() is also going to need an update in its list
of output parameters to accomodate with what you are changing here.
Calling your new pgstat_get_io_byte_index() in the new refactored
routine is also necessary. Sorry about that.

No problem at all, thank you for reminding me!

Could you send a rebase, please? I can promise to review this
thread's new patch, as that will also move the needle regarding your
work with pg_stat_io to track WAL activity.

Thanks! v4 is attached. I quickly tested the pg_stat_get_backend_io()
function and it seems it is working.

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v4-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v4-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From b5c8b86aebd1149b30bc1715921edef161f99ba7 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Thu, 26 Dec 2024 12:05:13 +0300
Subject: [PATCH v4] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, op_bytes column is removed from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat             | 12 +--
 src/include/pgstat.h                        | 39 ++++++++--
 src/backend/catalog/system_views.sql        |  4 +-
 src/backend/storage/buffer/bufmgr.c         | 14 ++--
 src/backend/storage/buffer/localbuf.c       |  6 +-
 src/backend/storage/smgr/md.c               |  4 +-
 src/backend/utils/activity/pgstat_backend.c |  2 +
 src/backend/utils/activity/pgstat_io.c      | 16 ++--
 src/backend/utils/adt/pgstatfuncs.c         | 86 ++++++++++++++++-----
 src/test/regress/expected/rules.out         |  6 +-
 doc/src/sgml/monitoring.sgml                | 61 +++++++++------
 11 files changed, 172 insertions(+), 78 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 2dcc2d42dac..00051d41e0f 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,18 +5908,18 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '8806', descr => 'statistics: backend IO statistics',
   proname => 'pg_stat_get_backend_io', prorows => '5', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => 'int4',
-  proallargtypes => '{int4,text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_pid,backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{int4,text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_backend_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 75a41e8ff32..4cae2df212d 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -343,28 +343,51 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
+
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -594,11 +617,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index da9a8fe99f2..801ea02e13f 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 2622221809c..65b03e511ca 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 6fd1a6418d2..f2ff7ab5ab1 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 11fccda475f..22f8b2452ca 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1401,7 +1401,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1796,7 +1796,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 6b2c9baa8c0..999ad24f64c 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -67,6 +67,8 @@ pgstat_backend_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
 
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					pendingent->counts[io_object][io_context][io_op];
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					pendingent->bytes[io_object][io_context][io_op];
 
 				time = pendingent->pending_times[io_object][io_context][io_op];
 
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index 011a3326dad..aaaa743b8c1 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -66,17 +66,18 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
@@ -85,9 +86,11 @@ pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint3
 
 		entry_ref = pgstat_prep_backend_pending(MyProcNumber);
 		entry_ref->counts[io_object][io_context][io_op] += cnt;
+		entry_ref->bytes[io_object][io_context][io_op] += bytes;
 	}
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +123,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -159,7 +162,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 		}
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -225,6 +228,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 6fc34f74949..7c55d3c78a1 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1285,14 +1285,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1333,11 +1335,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1345,11 +1372,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1408,18 +1439,11 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 			else
 				nulls[IO_COL_RESET_TIME] = true;
 
-			/*
-			 * Hard-code this to the value of BLCKSZ for now. Future values
-			 * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
-			 * multipliers, once non-block-oriented IO (e.g. temporary file
-			 * IO) is tracked.
-			 */
-			values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 			for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 			{
 				int			op_idx = pgstat_get_io_op_index(io_op);
 				int			time_idx = pgstat_get_io_time_index(io_op);
+				int			byte_idx = pgstat_get_io_byte_index(io_op);
 
 				/*
 				 * Some combinations of BackendType and IOOp, of IOContext and
@@ -1436,19 +1460,39 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 				else
 					nulls[op_idx] = true;
 
-				/* not every operation is timed */
-				if (time_idx == IO_COL_INVALID)
-					continue;
-
 				if (!nulls[op_idx])
 				{
-					PgStat_Counter time =
-						bktype_stats->times[io_obj][io_context][io_op];
+					/* not every operation is timed */
+					if (time_idx != IO_COL_INVALID)
+					{
+						PgStat_Counter time =
+							bktype_stats->times[io_obj][io_context][io_op];
 
-					values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+					}
+
+					/* not every IO is tracked in bytes */
+					if (byte_idx != IO_COL_INVALID)
+					{
+						char		buf[256];
+						PgStat_Counter byte =
+							bktype_stats->bytes[io_obj][io_context][io_op];
+
+						/* Convert to numeric */
+						snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+						values[byte_idx] = DirectFunctionCall3(numeric_in,
+															   CStringGetDatum(buf),
+															   ObjectIdGetDatum(0),
+															   Int32GetDatum(-1));
+					}
 				}
 				else
-					nulls[time_idx] = true;
+				{
+					if (time_idx != IO_COL_INVALID)
+						nulls[time_idx] = true;
+					if (byte_idx != IO_COL_INVALID)
+						nulls[byte_idx] = true;
+				}
 			}
 
 			tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index d0d176cc54f..95bdce437a4 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,7 +2760,7 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
+        Number of units of size <symbol>BLCKSZ</symbol> which the process
         requested the kernel write out to permanent storage.
        </para>
       </entry>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.45.2

#10Michael Paquier
michael@paquier.xyz
In reply to: Nazir Bilal Yavuz (#9)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Dec 26, 2024 at 02:41:26PM +0300, Nazir Bilal Yavuz wrote:

Thanks! v4 is attached. I quickly tested the pg_stat_get_backend_io()
function and it seems it is working.

Thanks a lot for the rebased version. This looks pretty solid. Here
are some comments.

 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-    pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+    pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);

pgstat_count_io_op_n() is only used locally in pgstat_io.c. I'm OK to
keep it as it is used with the time calculations, but wouldn't it be
better to make it static in pgstat_io.c instead and not declare it in
pgstat.h? Do we really have a need for pgstat_count_io_op() at all at
the end or would it be better to change it so as it can handle a
number of operations given by the caller?

typedef struct PgStat_BktypeIO
{
+ uint64 bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];

This wastes a bit of memory, while keeping the code simpler to
understand. That's better than more element number manipulations, so
I'm OK with what you have here.

+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+    Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+    return io_op >= IOOP_EXTEND;
+}

This is only used in an assertion of pgstat_count_io_op_n() in
pgstat_io.c. Let's also keep it this routine local to the file. The
assert to make sure that the callers don't assign bytes to the
operations that don't support the counters is a good idea.

+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.

s/does not tracked/is not tracked/.

+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{

Makes sense to me, and that's consistent with how the time attributes
are handled.

- /*
- * Hard-code this to the value of BLCKSZ for now. Future values
- * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
- * multipliers, once non-block-oriented IO (e.g. temporary file
- * IO) is tracked.
- */
- values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);

Glad to see that gone.

+        <structfield>write_bytes</structfield> <type>bigint</type>
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+        <structfield>read_bytes</structfield> <type>bigint</type>

These additions in the documentation are incorrect. All these
attributes are of type numeric, not bigint.

+ Number of units of size <symbol>BLCKSZ</symbol> which the process

It seems to me that this had better mention 8192 as the default.
--
Michael

#11Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Michael Paquier (#10)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

Thanks for the review!

On Thu, 9 Jan 2025 at 05:59, Michael Paquier <michael@paquier.xyz> wrote:

On Thu, Dec 26, 2024 at 02:41:26PM +0300, Nazir Bilal Yavuz wrote:

Thanks! v4 is attached. I quickly tested the pg_stat_get_backend_io()
function and it seems it is working.

Thanks a lot for the rebased version. This looks pretty solid. Here
are some comments.

void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
{
-    pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+    pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);

pgstat_count_io_op_n() is only used locally in pgstat_io.c. I'm OK to
keep it as it is used with the time calculations, but wouldn't it be
better to make it static in pgstat_io.c instead and not declare it in
pgstat.h? Do we really have a need for pgstat_count_io_op() at all at
the end or would it be better to change it so as it can handle a
number of operations given by the caller?

I am a bit confused, are you suggesting these two alternatives:
1- Making pgstat_count_io_op_n() static and continuing to use
pgstat_count_io_op() as it is.
2- Removing pgstat_count_io_op() and instead using
pgstat_count_io_op_n() everywhere.

typedef struct PgStat_BktypeIO
{
+ uint64 bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];

This wastes a bit of memory, while keeping the code simpler to
understand. That's better than more element number manipulations, so
I'm OK with what you have here.

+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+    Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+    return io_op >= IOOP_EXTEND;
+}

This is only used in an assertion of pgstat_count_io_op_n() in
pgstat_io.c. Let's also keep it this routine local to the file. The
assert to make sure that the callers don't assign bytes to the
operations that don't support the counters is a good idea.

Makes sense, done.

+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.

s/does not tracked/is not tracked/.

Done.

+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp does not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{

Makes sense to me, and that's consistent with how the time attributes
are handled.

- /*
- * Hard-code this to the value of BLCKSZ for now. Future values
- * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
- * multipliers, once non-block-oriented IO (e.g. temporary file
- * IO) is tracked.
- */
- values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);

Glad to see that gone.

+        <structfield>write_bytes</structfield> <type>bigint</type>
+        <structfield>extend_bytes</structfield> <type>bigint</type>
+        <structfield>read_bytes</structfield> <type>bigint</type>

These additions in the documentation are incorrect. All these
attributes are of type numeric, not bigint.

Done.

+ Number of units of size <symbol>BLCKSZ</symbol> which the process

It seems to me that this had better mention 8192 as the default.

I agree, done.

v5 is attached.

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v5-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v5-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From b8123b9447117bdf4c9f34ddf57fd7acbd61745d Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Thu, 9 Jan 2025 09:39:05 +0300
Subject: [PATCH v5] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, op_bytes column is removed from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat             | 12 +--
 src/include/pgstat.h                        | 31 ++++++--
 src/backend/catalog/system_views.sql        |  4 +-
 src/backend/storage/buffer/bufmgr.c         | 14 ++--
 src/backend/storage/buffer/localbuf.c       |  6 +-
 src/backend/storage/smgr/md.c               |  4 +-
 src/backend/utils/activity/pgstat_backend.c |  2 +
 src/backend/utils/activity/pgstat_io.c      | 23 ++++--
 src/backend/utils/adt/pgstatfuncs.c         | 86 ++++++++++++++++-----
 src/test/regress/expected/rules.out         |  6 +-
 doc/src/sgml/monitoring.sgml                | 63 +++++++++------
 11 files changed, 172 insertions(+), 79 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index b37e8a6f882..872cd6e01a3 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,18 +5908,18 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '8806', descr => 'statistics: backend IO statistics',
   proname => 'pg_stat_get_backend_io', prorows => '5', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => 'int4',
-  proallargtypes => '{int4,text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_pid,backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{int4,text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_backend_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 0d8427f27d1..8c4fa74103f 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -343,28 +343,43 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -594,11 +609,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7a595c84db9..64a873a16e3 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 5008641baff..fea70278f07 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 80b7fc7efcc..96aa167656d 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index b852a448a08..7bf0b45e2c3 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1401,7 +1401,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1796,7 +1796,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 1f91bfef0a3..e2ba33b6b02 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -67,6 +67,8 @@ pgstat_backend_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
 
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					pendingent->counts[io_object][io_context][io_op];
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					pendingent->bytes[io_object][io_context][io_op];
 
 				time = pendingent->pending_times[io_object][io_context][io_op];
 
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f9a1f91dba8..eac831f2d8d 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -24,6 +24,13 @@ static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
 
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -66,17 +73,18 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
@@ -85,9 +93,11 @@ pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint3
 
 		entry_ref = pgstat_prep_backend_pending(MyProcNumber);
 		entry_ref->counts[io_object][io_context][io_op] += cnt;
+		entry_ref->bytes[io_object][io_context][io_op] += bytes;
 	}
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +130,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -159,7 +169,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 		}
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -225,6 +235,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 3245f3a8d8a..440d57c1ba7 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1285,14 +1285,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1333,11 +1335,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp is not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1345,11 +1372,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1408,18 +1439,11 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 			else
 				nulls[IO_COL_RESET_TIME] = true;
 
-			/*
-			 * Hard-code this to the value of BLCKSZ for now. Future values
-			 * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
-			 * multipliers, once non-block-oriented IO (e.g. temporary file
-			 * IO) is tracked.
-			 */
-			values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 			for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 			{
 				int			op_idx = pgstat_get_io_op_index(io_op);
 				int			time_idx = pgstat_get_io_time_index(io_op);
+				int			byte_idx = pgstat_get_io_byte_index(io_op);
 
 				/*
 				 * Some combinations of BackendType and IOOp, of IOContext and
@@ -1436,19 +1460,39 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 				else
 					nulls[op_idx] = true;
 
-				/* not every operation is timed */
-				if (time_idx == IO_COL_INVALID)
-					continue;
-
 				if (!nulls[op_idx])
 				{
-					PgStat_Counter time =
-						bktype_stats->times[io_obj][io_context][io_op];
+					/* not every operation is timed */
+					if (time_idx != IO_COL_INVALID)
+					{
+						PgStat_Counter time =
+							bktype_stats->times[io_obj][io_context][io_op];
 
-					values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+					}
+
+					/* not every IO is tracked in bytes */
+					if (byte_idx != IO_COL_INVALID)
+					{
+						char		buf[256];
+						PgStat_Counter byte =
+							bktype_stats->bytes[io_obj][io_context][io_op];
+
+						/* Convert to numeric */
+						snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+						values[byte_idx] = DirectFunctionCall3(numeric_in,
+															   CStringGetDatum(buf),
+															   ObjectIdGetDatum(0),
+															   Int32GetDatum(-1));
+					}
 				}
 				else
-					nulls[time_idx] = true;
+				{
+					if (time_idx != IO_COL_INVALID)
+						nulls[time_idx] = true;
+					if (byte_idx != IO_COL_INVALID)
+						nulls[byte_idx] = true;
+				}
 			}
 
 			tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index d0d176cc54f..e5888fae2b5 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,8 +2760,8 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
-        requested the kernel write out to permanent storage.
+        Number of units of size <symbol>BLCKSZ</symbol> (typically 8kB) which
+        the process requested the kernel write out to permanent storage.
        </para>
       </entry>
      </row>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.47.1

#12Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Nazir Bilal Yavuz (#11)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, 9 Jan 2025 at 10:15, Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:

On Thu, 9 Jan 2025 at 05:59, Michael Paquier <michael@paquier.xyz> wrote:

+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+    Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+    return io_op >= IOOP_EXTEND;
+}

This is only used in an assertion of pgstat_count_io_op_n() in
pgstat_io.c. Let's also keep it this routine local to the file. The
assert to make sure that the callers don't assign bytes to the
operations that don't support the counters is a good idea.

Makes sense, done.

v5 is attached.

I missed a compilation error. Since the is_ioop_tracked_in_bytes() is
only used in the assert and the asserts are disabled in the production
builds, CompilerWarnings task gives -Wunused-function error:

pgstat_io.c:28:1: error: unused function 'is_ioop_tracked_in_bytes'
[-Werror,-Wunused-function]

pg_attribute_unused() is added to the function to silence that. v6 is attached.

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v6-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v6-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From 23f34c1f1775a16ffc340a0840c4dceaca98fe00 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Thu, 9 Jan 2025 09:39:05 +0300
Subject: [PATCH v6] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, op_bytes column is removed from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat             | 12 +--
 src/include/pgstat.h                        | 31 ++++++--
 src/backend/catalog/system_views.sql        |  4 +-
 src/backend/storage/buffer/bufmgr.c         | 14 ++--
 src/backend/storage/buffer/localbuf.c       |  6 +-
 src/backend/storage/smgr/md.c               |  4 +-
 src/backend/utils/activity/pgstat_backend.c |  2 +
 src/backend/utils/activity/pgstat_io.c      | 24 ++++--
 src/backend/utils/adt/pgstatfuncs.c         | 86 ++++++++++++++++-----
 src/test/regress/expected/rules.out         |  6 +-
 doc/src/sgml/monitoring.sgml                | 63 +++++++++------
 11 files changed, 173 insertions(+), 79 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index b37e8a6f882..872cd6e01a3 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,18 +5908,18 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '8806', descr => 'statistics: backend IO statistics',
   proname => 'pg_stat_get_backend_io', prorows => '5', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => 'int4',
-  proallargtypes => '{int4,text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_pid,backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{int4,text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_backend_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 0d8427f27d1..8c4fa74103f 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -343,28 +343,43 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -594,11 +609,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7a595c84db9..64a873a16e3 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 5008641baff..fea70278f07 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 80b7fc7efcc..96aa167656d 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index b852a448a08..7bf0b45e2c3 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1401,7 +1401,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1796,7 +1796,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 1f91bfef0a3..e2ba33b6b02 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -67,6 +67,8 @@ pgstat_backend_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
 
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					pendingent->counts[io_object][io_context][io_op];
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					pendingent->bytes[io_object][io_context][io_op];
 
 				time = pendingent->pending_times[io_object][io_context][io_op];
 
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f9a1f91dba8..f8c42001cb5 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -24,6 +24,14 @@ static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
 
+pg_attribute_unused()
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -66,17 +74,18 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
@@ -85,9 +94,11 @@ pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint3
 
 		entry_ref = pgstat_prep_backend_pending(MyProcNumber);
 		entry_ref->counts[io_object][io_context][io_op] += cnt;
+		entry_ref->bytes[io_object][io_context][io_op] += bytes;
 	}
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +131,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -159,7 +170,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 		}
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -225,6 +236,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 3245f3a8d8a..440d57c1ba7 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1285,14 +1285,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1333,11 +1335,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp is not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1345,11 +1372,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1408,18 +1439,11 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 			else
 				nulls[IO_COL_RESET_TIME] = true;
 
-			/*
-			 * Hard-code this to the value of BLCKSZ for now. Future values
-			 * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
-			 * multipliers, once non-block-oriented IO (e.g. temporary file
-			 * IO) is tracked.
-			 */
-			values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 			for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 			{
 				int			op_idx = pgstat_get_io_op_index(io_op);
 				int			time_idx = pgstat_get_io_time_index(io_op);
+				int			byte_idx = pgstat_get_io_byte_index(io_op);
 
 				/*
 				 * Some combinations of BackendType and IOOp, of IOContext and
@@ -1436,19 +1460,39 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 				else
 					nulls[op_idx] = true;
 
-				/* not every operation is timed */
-				if (time_idx == IO_COL_INVALID)
-					continue;
-
 				if (!nulls[op_idx])
 				{
-					PgStat_Counter time =
-						bktype_stats->times[io_obj][io_context][io_op];
+					/* not every operation is timed */
+					if (time_idx != IO_COL_INVALID)
+					{
+						PgStat_Counter time =
+							bktype_stats->times[io_obj][io_context][io_op];
 
-					values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+					}
+
+					/* not every IO is tracked in bytes */
+					if (byte_idx != IO_COL_INVALID)
+					{
+						char		buf[256];
+						PgStat_Counter byte =
+							bktype_stats->bytes[io_obj][io_context][io_op];
+
+						/* Convert to numeric */
+						snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+						values[byte_idx] = DirectFunctionCall3(numeric_in,
+															   CStringGetDatum(buf),
+															   ObjectIdGetDatum(0),
+															   Int32GetDatum(-1));
+					}
 				}
 				else
-					nulls[time_idx] = true;
+				{
+					if (time_idx != IO_COL_INVALID)
+						nulls[time_idx] = true;
+					if (byte_idx != IO_COL_INVALID)
+						nulls[byte_idx] = true;
+				}
 			}
 
 			tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index d0d176cc54f..e5888fae2b5 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,8 +2760,8 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
-        requested the kernel write out to permanent storage.
+        Number of units of size <symbol>BLCKSZ</symbol> (typically 8kB) which
+        the process requested the kernel write out to permanent storage.
        </para>
       </entry>
      </row>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.47.1

#13Michael Paquier
michael@paquier.xyz
In reply to: Nazir Bilal Yavuz (#11)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Jan 09, 2025 at 10:15:20AM +0300, Nazir Bilal Yavuz wrote:

I am a bit confused, are you suggesting these two alternatives:
1- Making pgstat_count_io_op_n() static and continuing to use
pgstat_count_io_op() as it is.
2- Removing pgstat_count_io_op() and instead using
pgstat_count_io_op_n() everywhere.

Either of these options is OK by me. The current state of things just
seems a bit strange because we publish a routine that's used nowhere.
If you have plans for it in a different patch, that's also fine.
--
Michael

#14Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Michael Paquier (#13)
2 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, 9 Jan 2025 at 11:11, Michael Paquier <michael@paquier.xyz> wrote:

On Thu, Jan 09, 2025 at 10:15:20AM +0300, Nazir Bilal Yavuz wrote:

I am a bit confused, are you suggesting these two alternatives:
1- Making pgstat_count_io_op_n() static and continuing to use
pgstat_count_io_op() as it is.
2- Removing pgstat_count_io_op() and instead using
pgstat_count_io_op_n() everywhere.

Either of these options is OK by me. The current state of things just
seems a bit strange because we publish a routine that's used nowhere.
If you have plans for it in a different patch, that's also fine.

I followed the second option as it is similar to
pgstat_count_io_op_time() and also more future proof. I attached it as
another patch. v7 is attached.

--
Regards,
Nazir Bilal Yavuz
Microsoft

Attachments:

v7-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-patch; charset=US-ASCII; name=v7-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchDownload
From 18c946a2f7baf444db3394d99786e98c86187789 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Thu, 9 Jan 2025 09:39:05 +0300
Subject: [PATCH v7 1/2] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, op_bytes column is removed from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat             | 12 +--
 src/include/pgstat.h                        | 31 ++++++--
 src/backend/catalog/system_views.sql        |  4 +-
 src/backend/storage/buffer/bufmgr.c         | 14 ++--
 src/backend/storage/buffer/localbuf.c       |  6 +-
 src/backend/storage/smgr/md.c               |  4 +-
 src/backend/utils/activity/pgstat_backend.c |  2 +
 src/backend/utils/activity/pgstat_io.c      | 24 ++++--
 src/backend/utils/adt/pgstatfuncs.c         | 86 ++++++++++++++++-----
 src/test/regress/expected/rules.out         |  6 +-
 doc/src/sgml/monitoring.sgml                | 63 +++++++++------
 11 files changed, 173 insertions(+), 79 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index b37e8a6f882..872cd6e01a3 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,18 +5908,18 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '8806', descr => 'statistics: backend IO statistics',
   proname => 'pg_stat_get_backend_io', prorows => '5', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => 'int4',
-  proallargtypes => '{int4,text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_pid,backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{int4,text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_backend_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 0d8427f27d1..8c4fa74103f 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -343,28 +343,43 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -594,11 +609,13 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op);
-extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt);
+extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
+extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
+								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7a595c84db9..64a873a16e3 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 5008641baff..fea70278f07 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 80b7fc7efcc..96aa167656d 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT);
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +419,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index b852a448a08..7bf0b45e2c3 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1401,7 +1401,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1796,7 +1796,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 1f91bfef0a3..e2ba33b6b02 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -67,6 +67,8 @@ pgstat_backend_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
 
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					pendingent->counts[io_object][io_context][io_op];
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					pendingent->bytes[io_object][io_context][io_op];
 
 				time = pendingent->pending_times[io_object][io_context][io_op];
 
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f9a1f91dba8..f8c42001cb5 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -24,6 +24,14 @@ static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
 
+pg_attribute_unused()
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	return io_op >= IOOP_EXTEND;
+}
+
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -66,17 +74,18 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
 {
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1);
+	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
 }
 
 void
-pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
@@ -85,9 +94,11 @@ pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint3
 
 		entry_ref = pgstat_prep_backend_pending(MyProcNumber);
 		entry_ref->counts[io_object][io_context][io_op] += cnt;
+		entry_ref->bytes[io_object][io_context][io_op] += bytes;
 	}
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -120,7 +131,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -159,7 +170,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 		}
 	}
 
-	pgstat_count_io_op_n(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op_n(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -225,6 +236,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 3245f3a8d8a..440d57c1ba7 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1285,14 +1285,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1333,11 +1335,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp is not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1345,11 +1372,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1408,18 +1439,11 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 			else
 				nulls[IO_COL_RESET_TIME] = true;
 
-			/*
-			 * Hard-code this to the value of BLCKSZ for now. Future values
-			 * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
-			 * multipliers, once non-block-oriented IO (e.g. temporary file
-			 * IO) is tracked.
-			 */
-			values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 			for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 			{
 				int			op_idx = pgstat_get_io_op_index(io_op);
 				int			time_idx = pgstat_get_io_time_index(io_op);
+				int			byte_idx = pgstat_get_io_byte_index(io_op);
 
 				/*
 				 * Some combinations of BackendType and IOOp, of IOContext and
@@ -1436,19 +1460,39 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 				else
 					nulls[op_idx] = true;
 
-				/* not every operation is timed */
-				if (time_idx == IO_COL_INVALID)
-					continue;
-
 				if (!nulls[op_idx])
 				{
-					PgStat_Counter time =
-						bktype_stats->times[io_obj][io_context][io_op];
+					/* not every operation is timed */
+					if (time_idx != IO_COL_INVALID)
+					{
+						PgStat_Counter time =
+							bktype_stats->times[io_obj][io_context][io_op];
 
-					values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+					}
+
+					/* not every IO is tracked in bytes */
+					if (byte_idx != IO_COL_INVALID)
+					{
+						char		buf[256];
+						PgStat_Counter byte =
+							bktype_stats->bytes[io_obj][io_context][io_op];
+
+						/* Convert to numeric */
+						snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+						values[byte_idx] = DirectFunctionCall3(numeric_in,
+															   CStringGetDatum(buf),
+															   ObjectIdGetDatum(0),
+															   Int32GetDatum(-1));
+					}
 				}
 				else
-					nulls[time_idx] = true;
+				{
+					if (time_idx != IO_COL_INVALID)
+						nulls[time_idx] = true;
+					if (byte_idx != IO_COL_INVALID)
+						nulls[byte_idx] = true;
+				}
 			}
 
 			tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fef..29580c90710 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index d0d176cc54f..e5888fae2b5 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,8 +2760,8 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
-        requested the kernel write out to permanent storage.
+        Number of units of size <symbol>BLCKSZ</symbol> (typically 8kB) which
+        the process requested the kernel write out to permanent storage.
        </para>
       </entry>
      </row>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.47.1

v7-0002-Replace-pgstat_count_io_op-with-pgstat_count_io_o.patchtext/x-patch; charset=US-ASCII; name=v7-0002-Replace-pgstat_count_io_op-with-pgstat_count_io_o.patchDownload
From 2e4e137dc1d50e65069d353ffebec6ea35e006e9 Mon Sep 17 00:00:00 2001
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: Thu, 9 Jan 2025 13:59:13 +0300
Subject: [PATCH v7 2/2] Replace pgstat_count_io_op() with
 pgstat_count_io_op_n()

The pgstat_count_io_op() function, which counts a single IO operation,
wraps pgstat_count_io_op_n() with a counter value of 1. To streamline
the code, all uses of pgstat_count_io_op() are replaced with
pgstat_count_io_op_n() and the former is removed.

This change ensures symmetry with pgstat_count_io_op_time(), which
already uses a similar approach.
---
 src/include/pgstat.h                   | 1 -
 src/backend/storage/buffer/bufmgr.c    | 6 +++---
 src/backend/storage/buffer/localbuf.c  | 2 +-
 src/backend/utils/activity/pgstat_io.c | 6 ------
 4 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 8c4fa74103f..90959d18ebe 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -609,7 +609,6 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
-extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes);
 extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context,
 								 IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index fea70278f07..5251eca204f 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 0);
+		pgstat_count_io_op_n(io_object, io_context, IOOP_HIT, 1, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -2072,8 +2072,8 @@ again:
 		 * we may have been forced to release the buffer due to concurrent
 		 * pinners or erroring out.
 		 */
-		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT, 0);
+		pgstat_count_io_op_n(IOOBJECT_RELATION, io_context,
+							 from_ring ? IOOP_REUSE : IOOP_EVICT, 1, 0);
 	}
 
 	/*
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 96aa167656d..e870376eab8 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -279,7 +279,7 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 0);
+		pgstat_count_io_op_n(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 1, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index f8c42001cb5..c966928b3c6 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -73,12 +73,6 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 	return true;
 }
 
-void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint64 bytes)
-{
-	pgstat_count_io_op_n(io_object, io_context, io_op, 1, bytes);
-}
-
 void
 pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
 {
-- 
2.47.1

#15Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Nazir Bilal Yavuz (#14)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, Jan 09, 2025 at 02:20:16PM +0300, Nazir Bilal Yavuz wrote:

Hi,

On Thu, 9 Jan 2025 at 11:11, Michael Paquier <michael@paquier.xyz> wrote:

On Thu, Jan 09, 2025 at 10:15:20AM +0300, Nazir Bilal Yavuz wrote:

I am a bit confused, are you suggesting these two alternatives:
1- Making pgstat_count_io_op_n() static and continuing to use
pgstat_count_io_op() as it is.
2- Removing pgstat_count_io_op() and instead using
pgstat_count_io_op_n() everywhere.

Either of these options is OK by me. The current state of things just
seems a bit strange because we publish a routine that's used nowhere.
If you have plans for it in a different patch, that's also fine.

I followed the second option as it is similar to
pgstat_count_io_op_time() and also more future proof. I attached it as
another patch. v7 is attached.

Thanks for the patches!

v7-0001:

+pg_attribute_unused()
+static inline bool
+is_ioop_tracked_in_bytes(IOOp io_op)
+{
+       Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+       return io_op >= IOOP_EXTEND;
+}

and then

+ Assert(is_ioop_tracked_in_bytes(io_op) || bytes == 0);

We first use an Assert in is_ioop_tracked_in_bytes() and then we return
a value "just" to check another Assert. I wonder if it wouldn't make more sense
to get rid of this function and use a macro instead, something like?

#define is_ioop_tracked_in_bytes(io_op) \
((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)

v7-0002:

I wonder if it wouldn't make more sense to remove pgstat_count_io_op() first
and then implement what currently is in v7-0001. What v7-0002 is removing is
not produced by v7-0001.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#16Michael Paquier
michael@paquier.xyz
In reply to: Bertrand Drouvot (#15)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Jan 09, 2025 at 03:30:37PM +0000, Bertrand Drouvot wrote:

We first use an Assert in is_ioop_tracked_in_bytes() and then we return
a value "just" to check another Assert. I wonder if it wouldn't make more sense
to get rid of this function and use a macro instead, something like?

#define is_ioop_tracked_in_bytes(io_op) \
((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)

Indeed. Your suggestion to use a macro makes more sense to me because
is_ioop_tracked_in_bytes() itself has an Assert(), while being itself
only used in an assertion, as you say. Better to document the
dependency on the ordering of IOOp, even if that's kind of hard to
miss.

v7-0002:

I wonder if it wouldn't make more sense to remove pgstat_count_io_op() first
and then implement what currently is in v7-0001. What v7-0002 is removing is
not produced by v7-0001.

This kind of cleanup should happen first, and it simplifies a bit the
reading of v7-0001 as we would just append a new argument to the
count_io_op() routine for the number of bytes. I was looking at that
and chose to stick with count_io_op() rather than count_io_op_n() as
we would have only one routine.

     pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-                            io_start, extend_by);
+                            io_start, 1, extend_by * BLCKSZ);
[...]
     pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-                            io_start, extend_by);
+                            io_start, 1, extend_by * BLCKSZ);

Something worth mentioning. I had a small doubt about this one for
temp and persistent relations, as it changes the extend count.
Anyway, I think that this is better: we are only doing one extend
batch, worth (extend_by * BLCKSZ).

Two times my fault today that the main patch does not apply anymore
(three times at least in total), so I have rebased it myself, and did
an extra review while on it, switching the code to use a macro. That
seems OK here. Please let me know if you have more comments.

(Still need to spend more time on the commit message, will do that
later).
--
Michael

Attachments:

v8-0001-Make-pg_stat_io-count-IOs-as-bytes-instead-of-blo.patchtext/x-diff; charset=us-asciiDownload
From 3afadbc6ddf9bc5e2a119f322d16387b02287c36 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Fri, 10 Jan 2025 10:39:21 +0900
Subject: [PATCH v8] Make pg_stat_io count IOs as bytes instead of blocks

Currently in pg_stat_io view, IOs are counted as blocks. There are two
problems with this approach:

1- The actual number of I/O requests sent to the kernel is lower because
I/O requests may be merged before being sent. Additionally, it gives the
impression that all I/Os are done in block size, which shadows the
benefits of merging I/O requests.

2- There may be some IOs which are not done in block size in the future.
For example, WAL read IOs are done in variable bytes and it is not
possible to correctly show these IOs in pg_stat_io view.

Because of these problems, now show the total number of IO requests to
the kernel (as smgr function calls) and total number of bytes in the IO.
Also, op_bytes column is removed from the pg_stat_io view.
---
 src/include/catalog/pg_proc.dat             | 12 +--
 src/include/pgstat.h                        | 28 +++++--
 src/backend/catalog/system_views.sql        |  4 +-
 src/backend/storage/buffer/bufmgr.c         | 14 ++--
 src/backend/storage/buffer/localbuf.c       |  7 +-
 src/backend/storage/smgr/md.c               |  4 +-
 src/backend/utils/activity/pgstat_backend.c |  2 +
 src/backend/utils/activity/pgstat_io.c      | 20 ++++-
 src/backend/utils/adt/pgstatfuncs.c         | 86 ++++++++++++++++-----
 src/test/regress/expected/rules.out         |  6 +-
 doc/src/sgml/monitoring.sgml                | 63 +++++++++------
 11 files changed, 170 insertions(+), 76 deletions(-)

diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index b37e8a6f88..872cd6e01a 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -5908,18 +5908,18 @@
   proname => 'pg_stat_get_io', prorows => '30', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => '',
-  proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '8806', descr => 'statistics: backend IO statistics',
   proname => 'pg_stat_get_backend_io', prorows => '5', proretset => 't',
   provolatile => 'v', proparallel => 'r', prorettype => 'record',
   proargtypes => 'int4',
-  proallargtypes => '{int4,text,text,text,int8,float8,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_pid,backend_type,object,context,reads,read_time,writes,write_time,writebacks,writeback_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proallargtypes => '{int4,text,text,text,int8,numeric,float8,int8,numeric,float8,int8,float8,int8,numeric,float8,int8,int8,int8,int8,float8,timestamptz}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_backend_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 6475889c58..a871799bf8 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -343,28 +343,43 @@ typedef enum IOContext
 
 #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1)
 
+/*
+ * Enumeration of IO operations.
+ *
+ * This enum categorizes IO operations into two groups:
+ * non-tracked and tracked in byte operations. So, that makes it easier
+ * to check whether IO is tracked in bytes.
+ *
+ * Ensure IOOP_EXTEND is the first and IOOP_WRITE is the last ones in the
+ * tracked in bytes group and that the groups stay in that order.
+ */
 typedef enum IOOp
 {
+	/* IOs not tracked in bytes */
 	IOOP_EVICT,
-	IOOP_EXTEND,
 	IOOP_FSYNC,
 	IOOP_HIT,
-	IOOP_READ,
 	IOOP_REUSE,
-	IOOP_WRITE,
 	IOOP_WRITEBACK,
+
+	/* IOs tracked in bytes */
+	IOOP_EXTEND,
+	IOOP_READ,
+	IOOP_WRITE,
 } IOOp;
 
-#define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1)
+#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
 
 typedef struct PgStat_BktypeIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_BktypeIO;
 
 typedef struct PgStat_PendingIO
 {
+	uint64		bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 	instr_time	pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];
 } PgStat_PendingIO;
@@ -604,10 +619,11 @@ extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void);
 extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 										 BackendType bktype);
 extern void pgstat_count_io_op(IOObject io_object, IOContext io_context,
-							   IOOp io_op, uint32 cnt);
+							   IOOp io_op, uint32 cnt, uint64 bytes);
 extern instr_time pgstat_prepare_io_time(bool track_io_guc);
 extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context,
-									IOOp io_op, instr_time start_time, uint32 cnt);
+									IOOp io_op, instr_time start_time,
+									uint32 cnt, uint64 bytes);
 
 extern PgStat_IO *pgstat_fetch_stat_io(void);
 extern const char *pgstat_get_io_context_name(IOContext io_context);
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7a595c84db..64a873a16e 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1156,14 +1156,16 @@ SELECT
        b.object,
        b.context,
        b.reads,
+       b.read_bytes,
        b.read_time,
        b.writes,
+       b.write_bytes,
        b.write_time,
        b.writebacks,
        b.writeback_time,
        b.extends,
+       b.extend_bytes,
        b.extend_time,
-       b.op_bytes,
        b.hits,
        b.evictions,
        b.reuses,
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 7a07c9c1eb..739daa1153 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1165,7 +1165,7 @@ PinBufferForBlock(Relation rel,
 	}
 	if (*foundPtr)
 	{
-		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 1);
+		pgstat_count_io_op(io_object, io_context, IOOP_HIT, 1, 0);
 		if (VacuumCostActive)
 			VacuumCostBalance += VacuumCostPageHit;
 
@@ -1515,7 +1515,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
 		io_start = pgstat_prepare_io_time(track_io_timing);
 		smgrreadv(operation->smgr, forknum, io_first_block, io_pages, io_buffers_len);
 		pgstat_count_io_op_time(io_object, io_context, IOOP_READ, io_start,
-								io_buffers_len);
+								1, io_buffers_len * BLCKSZ);
 
 		/* Verify each block we read, and terminate the I/O. */
 		for (int j = 0; j < io_buffers_len; ++j)
@@ -2073,7 +2073,7 @@ again:
 		 * pinners or erroring out.
 		 */
 		pgstat_count_io_op(IOOBJECT_RELATION, io_context,
-						   from_ring ? IOOP_REUSE : IOOP_EVICT, 1);
+						   from_ring ? IOOP_REUSE : IOOP_EVICT, 1, 0);
 	}
 
 	/*
@@ -2429,7 +2429,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 		UnlockRelationForExtension(bmr.rel, ExclusiveLock);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	/* Set BM_VALID, terminate IO, and wake up any waiters */
 	for (uint32 i = 0; i < extend_by; i++)
@@ -3891,7 +3891,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object,
 	 * of a dirty shared buffer (IOCONTEXT_NORMAL IOOP_WRITE).
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITE, io_start, 1);
+							IOOP_WRITE, io_start, 1, BLCKSZ);
 
 	pgBufferUsage.shared_blks_written++;
 
@@ -4530,7 +4530,7 @@ FlushRelationBuffers(Relation rel)
 
 				pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION,
 										IOCONTEXT_NORMAL, IOOP_WRITE,
-										io_start, 1);
+										io_start, 1, BLCKSZ);
 
 				buf_state &= ~(BM_DIRTY | BM_JUST_DIRTIED);
 				pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
@@ -6037,7 +6037,7 @@ IssuePendingWritebacks(WritebackContext *wb_context, IOContext io_context)
 	 * blocks of permanent relations.
 	 */
 	pgstat_count_io_op_time(IOOBJECT_RELATION, io_context,
-							IOOP_WRITEBACK, io_start, wb_context->nr_pending);
+							IOOP_WRITEBACK, io_start, wb_context->nr_pending, 0);
 
 	wb_context->nr_pending = 0;
 }
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index cdb9da7e65..8f81428970 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -255,7 +255,7 @@ GetLocalVictimBuffer(void)
 
 		/* Temporary table I/O does not use Buffer Access Strategies */
 		pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL,
-								IOOP_WRITE, io_start, 1);
+								IOOP_WRITE, io_start, 1, BLCKSZ);
 
 		/* Mark not-dirty now in case we error out below */
 		buf_state &= ~BM_DIRTY;
@@ -279,7 +279,8 @@ GetLocalVictimBuffer(void)
 		ClearBufferTag(&bufHdr->tag);
 		buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK);
 		pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state);
-		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 1);
+
+		pgstat_count_io_op(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EVICT, 1, 0);
 	}
 
 	return BufferDescriptorGetBuffer(bufHdr);
@@ -419,7 +420,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
 	smgrzeroextend(bmr.smgr, fork, first_block, extend_by, false);
 
 	pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-							io_start, extend_by);
+							io_start, 1, extend_by * BLCKSZ);
 
 	for (uint32 i = 0; i < extend_by; i++)
 	{
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index b852a448a0..7bf0b45e2c 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -1401,7 +1401,7 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg)
 		 * backend fsyncs.
 		 */
 		pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-								IOOP_FSYNC, io_start, 1);
+								IOOP_FSYNC, io_start, 1, 0);
 	}
 }
 
@@ -1796,7 +1796,7 @@ mdsyncfiletag(const FileTag *ftag, char *path)
 		FileClose(file);
 
 	pgstat_count_io_op_time(IOOBJECT_RELATION, IOCONTEXT_NORMAL,
-							IOOP_FSYNC, io_start, 1);
+							IOOP_FSYNC, io_start, 1, 0);
 
 	errno = save_errno;
 	return result;
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c
index 207bfa3c27..79e4d0a305 100644
--- a/src/backend/utils/activity/pgstat_backend.c
+++ b/src/backend/utils/activity/pgstat_backend.c
@@ -65,6 +65,8 @@ pgstat_flush_backend_entry_io(PgStat_EntryRef *entry_ref)
 
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					pending_io->counts[io_object][io_context][io_op];
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					pending_io->bytes[io_object][io_context][io_op];
 
 				time = pending_io->pending_times[io_object][io_context][io_op];
 
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index b16f57ebea..78b01310d8 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -23,6 +23,13 @@
 static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
+/*
+ * Check if an IOOp is tracked in bytes.  This relies on the ordering of IOOp
+ * defined in pgstat.h, so make sure to update this check when changing its
+ * elements.
+ */
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+	((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
 
 /*
  * Check that stats have not been counted for any combination of IOObject,
@@ -66,11 +73,13 @@ pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io,
 }
 
 void
-pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt)
+pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op,
+				   uint32 cnt, uint64 bytes)
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
 	Assert((unsigned int) io_op < IOOP_NUM_TYPES);
+	Assert(pgstat_is_ioop_tracked_in_bytes(io_op) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
@@ -79,9 +88,11 @@ pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint32
 
 		entry_ref = pgstat_prep_backend_pending(MyProcNumber);
 		entry_ref->pending_io.counts[io_object][io_context][io_op] += cnt;
+		entry_ref->pending_io.bytes[io_object][io_context][io_op] += bytes;
 	}
 
 	PendingIOStats.counts[io_object][io_context][io_op] += cnt;
+	PendingIOStats.bytes[io_object][io_context][io_op] += bytes;
 
 	have_iostats = true;
 }
@@ -114,7 +125,7 @@ pgstat_prepare_io_time(bool track_io_guc)
  */
 void
 pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
-						instr_time start_time, uint32 cnt)
+						instr_time start_time, uint32 cnt, uint64 bytes)
 {
 	if (track_io_timing)
 	{
@@ -153,7 +164,7 @@ pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op,
 		}
 	}
 
-	pgstat_count_io_op(io_object, io_context, io_op, cnt);
+	pgstat_count_io_op(io_object, io_context, io_op, cnt, bytes);
 }
 
 PgStat_IO *
@@ -219,6 +230,9 @@ pgstat_io_flush_cb(bool nowait)
 				bktype_shstats->counts[io_object][io_context][io_op] +=
 					PendingIOStats.counts[io_object][io_context][io_op];
 
+				bktype_shstats->bytes[io_object][io_context][io_op] +=
+					PendingIOStats.bytes[io_object][io_context][io_op];
+
 				time = PendingIOStats.pending_times[io_object][io_context][io_op];
 
 				bktype_shstats->times[io_object][io_context][io_op] +=
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 5f8d20a406..0f5e0a9778 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1285,14 +1285,16 @@ typedef enum io_stat_col
 	IO_COL_OBJECT,
 	IO_COL_CONTEXT,
 	IO_COL_READS,
+	IO_COL_READ_BYTES,
 	IO_COL_READ_TIME,
 	IO_COL_WRITES,
+	IO_COL_WRITE_BYTES,
 	IO_COL_WRITE_TIME,
 	IO_COL_WRITEBACKS,
 	IO_COL_WRITEBACK_TIME,
 	IO_COL_EXTENDS,
+	IO_COL_EXTEND_BYTES,
 	IO_COL_EXTEND_TIME,
-	IO_COL_CONVERSION,
 	IO_COL_HITS,
 	IO_COL_EVICTIONS,
 	IO_COL_REUSES,
@@ -1333,11 +1335,36 @@ pgstat_get_io_op_index(IOOp io_op)
 	pg_unreachable();
 }
 
+/*
+ * Get the number of the column containing IO bytes for the specified IOOp.
+ * If an IOOp is not tracked in bytes, IO_COL_INVALID is returned.
+ */
+static io_stat_col
+pgstat_get_io_byte_index(IOOp io_op)
+{
+	switch (io_op)
+	{
+		case IOOP_EXTEND:
+			return IO_COL_EXTEND_BYTES;
+		case IOOP_READ:
+			return IO_COL_READ_BYTES;
+		case IOOP_WRITE:
+			return IO_COL_WRITE_BYTES;
+		case IOOP_EVICT:
+		case IOOP_FSYNC:
+		case IOOP_HIT:
+		case IOOP_REUSE:
+		case IOOP_WRITEBACK:
+			return IO_COL_INVALID;
+	}
+
+	elog(ERROR, "unrecognized IOOp value: %d", io_op);
+	pg_unreachable();
+}
+
 /*
  * Get the number of the column containing IO times for the specified IOOp.
- * This function encodes our assumption that IO time for an IOOp is displayed
- * in the view in the column directly after the IOOp counts. If an op has no
- * associated time, IO_COL_INVALID is returned.
+ * If an op has no associated time, IO_COL_INVALID is returned.
  */
 static io_stat_col
 pgstat_get_io_time_index(IOOp io_op)
@@ -1345,11 +1372,15 @@ pgstat_get_io_time_index(IOOp io_op)
 	switch (io_op)
 	{
 		case IOOP_READ:
+			return IO_COL_READ_TIME;
 		case IOOP_WRITE:
+			return IO_COL_WRITE_TIME;
 		case IOOP_WRITEBACK:
+			return IO_COL_WRITEBACK_TIME;
 		case IOOP_EXTEND:
+			return IO_COL_EXTEND_TIME;
 		case IOOP_FSYNC:
-			return pgstat_get_io_op_index(io_op) + 1;
+			return IO_COL_FSYNC_TIME;
 		case IOOP_EVICT:
 		case IOOP_HIT:
 		case IOOP_REUSE:
@@ -1408,18 +1439,11 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 			else
 				nulls[IO_COL_RESET_TIME] = true;
 
-			/*
-			 * Hard-code this to the value of BLCKSZ for now. Future values
-			 * could include XLOG_BLCKSZ, once WAL IO is tracked, and constant
-			 * multipliers, once non-block-oriented IO (e.g. temporary file
-			 * IO) is tracked.
-			 */
-			values[IO_COL_CONVERSION] = Int64GetDatum(BLCKSZ);
-
 			for (int io_op = 0; io_op < IOOP_NUM_TYPES; io_op++)
 			{
 				int			op_idx = pgstat_get_io_op_index(io_op);
 				int			time_idx = pgstat_get_io_time_index(io_op);
+				int			byte_idx = pgstat_get_io_byte_index(io_op);
 
 				/*
 				 * Some combinations of BackendType and IOOp, of IOContext and
@@ -1436,19 +1460,39 @@ pg_stat_io_build_tuples(ReturnSetInfo *rsinfo,
 				else
 					nulls[op_idx] = true;
 
-				/* not every operation is timed */
-				if (time_idx == IO_COL_INVALID)
-					continue;
-
 				if (!nulls[op_idx])
 				{
-					PgStat_Counter time =
-						bktype_stats->times[io_obj][io_context][io_op];
+					/* not every operation is timed */
+					if (time_idx != IO_COL_INVALID)
+					{
+						PgStat_Counter time =
+							bktype_stats->times[io_obj][io_context][io_op];
 
-					values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+						values[time_idx] = Float8GetDatum(pg_stat_us_to_ms(time));
+					}
+
+					/* not every IO is tracked in bytes */
+					if (byte_idx != IO_COL_INVALID)
+					{
+						char		buf[256];
+						PgStat_Counter byte =
+							bktype_stats->bytes[io_obj][io_context][io_op];
+
+						/* Convert to numeric */
+						snprintf(buf, sizeof buf, UINT64_FORMAT, byte);
+						values[byte_idx] = DirectFunctionCall3(numeric_in,
+															   CStringGetDatum(buf),
+															   ObjectIdGetDatum(0),
+															   Int32GetDatum(-1));
+					}
 				}
 				else
-					nulls[time_idx] = true;
+				{
+					if (time_idx != IO_COL_INVALID)
+						nulls[time_idx] = true;
+					if (byte_idx != IO_COL_INVALID)
+						nulls[byte_idx] = true;
+				}
 			}
 
 			tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fe..29580c9071 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1892,21 +1892,23 @@ pg_stat_io| SELECT backend_type,
     object,
     context,
     reads,
+    read_bytes,
     read_time,
     writes,
+    write_bytes,
     write_time,
     writebacks,
     writeback_time,
     extends,
+    extend_bytes,
     extend_time,
-    op_bytes,
     hits,
     evictions,
     reuses,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, writebacks, writeback_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_bytes, read_time, writes, write_bytes, write_time, writebacks, writeback_time, extends, extend_bytes, extend_time, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index d0d176cc54..e5888fae2b 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -2692,8 +2692,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>reads</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of read operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of read operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>read_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of read operations in bytes.
        </para>
       </entry>
      </row>
@@ -2716,8 +2726,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writes</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of write operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of write operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>write_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of write operations in bytes.
        </para>
       </entry>
      </row>
@@ -2740,8 +2760,8 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>writebacks</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of units of size <varname>op_bytes</varname> which the process
-        requested the kernel write out to permanent storage.
+        Number of units of size <symbol>BLCKSZ</symbol> (typically 8kB) which
+        the process requested the kernel write out to permanent storage.
        </para>
       </entry>
      </row>
@@ -2766,8 +2786,18 @@ description | Waiting for a newly initialized WAL file to reach durable storage
         <structfield>extends</structfield> <type>bigint</type>
        </para>
        <para>
-        Number of relation extend operations, each of the size specified in
-        <varname>op_bytes</varname>.
+        Number of relation extend operations.
+       </para>
+      </entry>
+     </row>
+
+     <row>
+      <entry role="catalog_table_entry">
+       <para role="column_definition">
+        <structfield>extend_bytes</structfield> <type>numeric</type>
+       </para>
+       <para>
+        The total size of relation extend operations in bytes.
        </para>
       </entry>
      </row>
@@ -2784,23 +2814,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage
       </entry>
      </row>
 
-     <row>
-      <entry role="catalog_table_entry">
-       <para role="column_definition">
-        <structfield>op_bytes</structfield> <type>bigint</type>
-       </para>
-       <para>
-        The number of bytes per unit of I/O read, written, or extended.
-       </para>
-       <para>
-        Relation data reads, writes, and extends are done in
-        <varname>block_size</varname> units, derived from the build-time
-        parameter <symbol>BLCKSZ</symbol>, which is <literal>8192</literal> by
-        default.
-       </para>
-      </entry>
-     </row>
-
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-- 
2.47.1

#17Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Michael Paquier (#16)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Fri, 10 Jan 2025 at 04:47, Michael Paquier <michael@paquier.xyz> wrote:

On Thu, Jan 09, 2025 at 03:30:37PM +0000, Bertrand Drouvot wrote:

We first use an Assert in is_ioop_tracked_in_bytes() and then we return
a value "just" to check another Assert. I wonder if it wouldn't make more sense
to get rid of this function and use a macro instead, something like?

#define is_ioop_tracked_in_bytes(io_op) \
((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)

Indeed. Your suggestion to use a macro makes more sense to me because
is_ioop_tracked_in_bytes() itself has an Assert(), while being itself
only used in an assertion, as you say. Better to document the
dependency on the ordering of IOOp, even if that's kind of hard to
miss.

I did not make it like this because now the
pgstat_is_ioop_tracked_in_bytes macro will return false when io_op >=
IOOP_NUM_TYPES. But I agree that having a macro has more benefits,
also there already is a check for the 'io_op < IOOP_NUM_TYPES' in the
pgstat_count_io_op() function.

v7-0002:

I wonder if it wouldn't make more sense to remove pgstat_count_io_op() first
and then implement what currently is in v7-0001. What v7-0002 is removing is
not produced by v7-0001.

This kind of cleanup should happen first, and it simplifies a bit the
reading of v7-0001 as we would just append a new argument to the
count_io_op() routine for the number of bytes. I was looking at that
and chose to stick with count_io_op() rather than count_io_op_n() as
we would have only one routine.

pgstat_count_io_op_time(IOOBJECT_RELATION, io_context, IOOP_EXTEND,
-                            io_start, extend_by);
+                            io_start, 1, extend_by * BLCKSZ);
[...]
pgstat_count_io_op_time(IOOBJECT_TEMP_RELATION, IOCONTEXT_NORMAL, IOOP_EXTEND,
-                            io_start, extend_by);
+                            io_start, 1, extend_by * BLCKSZ);

Something worth mentioning. I had a small doubt about this one for
temp and persistent relations, as it changes the extend count.
Anyway, I think that this is better: we are only doing one extend
batch, worth (extend_by * BLCKSZ).

I agree with you.

Two times my fault today that the main patch does not apply anymore
(three times at least in total), so I have rebased it myself, and did
an extra review while on it, switching the code to use a macro. That
seems OK here. Please let me know if you have more comments.

No worries, thank you for all of these!

--
Regards,
Nazir Bilal Yavuz
Microsoft

#18Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Nazir Bilal Yavuz (#17)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Fri, Jan 10, 2025 at 10:15:52AM +0300, Nazir Bilal Yavuz wrote:

Hi,

On Fri, 10 Jan 2025 at 04:47, Michael Paquier <michael@paquier.xyz> wrote:

On Thu, Jan 09, 2025 at 03:30:37PM +0000, Bertrand Drouvot wrote:

We first use an Assert in is_ioop_tracked_in_bytes() and then we return
a value "just" to check another Assert. I wonder if it wouldn't make more sense
to get rid of this function and use a macro instead, something like?

#define is_ioop_tracked_in_bytes(io_op) \
((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)

Indeed. Your suggestion to use a macro makes more sense to me because
is_ioop_tracked_in_bytes() itself has an Assert(), while being itself
only used in an assertion, as you say. Better to document the
dependency on the ordering of IOOp, even if that's kind of hard to
miss.

But I agree that having a macro has more benefits,
also there already is a check for the 'io_op < IOOP_NUM_TYPES' in the
pgstat_count_io_op() function.

Yeah, I think we can remove the "io_op < IOOP_NUM_TYPE" assertion in
pgstat_count_io_op() (but keep this check as part of the macro).

That
seems OK here. Please let me know if you have more comments.

Appart from the above, LGTM.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#19Michael Paquier
michael@paquier.xyz
In reply to: Bertrand Drouvot (#18)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Fri, Jan 10, 2025 at 08:23:46AM +0000, Bertrand Drouvot wrote:

On Fri, Jan 10, 2025 at 10:15:52AM +0300, Nazir Bilal Yavuz wrote:

But I agree that having a macro has more benefits,
also there already is a check for the 'io_op < IOOP_NUM_TYPES' in the
pgstat_count_io_op() function.

Yeah, I think we can remove the "io_op < IOOP_NUM_TYPE" assertion in
pgstat_count_io_op() (but keep this check as part of the macro).

Appart from the above, LGTM.

Okay, so applied.

And I've somewhat managed to fat-finger the business with
pgstat_count_io_op() with an incorrect rebase. Will remove in a
minute..
--
Michael

#20Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Michael Paquier (#19)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Tue, 14 Jan 2025 at 06:18, Michael Paquier <michael@paquier.xyz> wrote:

On Fri, Jan 10, 2025 at 08:23:46AM +0000, Bertrand Drouvot wrote:

On Fri, Jan 10, 2025 at 10:15:52AM +0300, Nazir Bilal Yavuz wrote:

But I agree that having a macro has more benefits,
also there already is a check for the 'io_op < IOOP_NUM_TYPES' in the
pgstat_count_io_op() function.

Yeah, I think we can remove the "io_op < IOOP_NUM_TYPE" assertion in
pgstat_count_io_op() (but keep this check as part of the macro).

Appart from the above, LGTM.

Okay, so applied.

And I've somewhat managed to fat-finger the business with
pgstat_count_io_op() with an incorrect rebase. Will remove in a
minute..

Thank you!

--
Regards,
Nazir Bilal Yavuz
Microsoft

#21Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nazir Bilal Yavuz (#20)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Nazir Bilal Yavuz <byavuz81@gmail.com> writes:

On Tue, 14 Jan 2025 at 06:18, Michael Paquier <michael@paquier.xyz> wrote:

And I've somewhat managed to fat-finger the business with
pgstat_count_io_op() with an incorrect rebase. Will remove in a
minute..

Thank you!

Commit f92c854cf has caused some of the buildfarm members to
spout a new warning, eg at [1]https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=demoiselle&amp;dt=2025-01-15%2005%3A20%3A59&amp;stg=build:

ccache clang -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -g -O2 -I. -I. -I../../../../src/include -D_GNU_SOURCE -I/usr/include/libxml2 -c -o pgstat_io.o pgstat_io.c
pgstat_io.c:81:9: warning: comparison of constant 8 with expression of type 'IOOp' (aka 'enum IOOp') is always true [-Wtautological-constant-out-of-range-compare]
Assert(pgstat_is_ioop_tracked_in_bytes(io_op) || bytes == 0);
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pgstat_io.c:32:11: note: expanded from macro 'pgstat_is_ioop_tracked_in_bytes'
((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
^ ~~~~~~~~~~~~~~
../../../../src/include/c.h:829:9: note: expanded from macro 'Assert'
if (!(condition)) \\
^~~~~~~~~
1 warning generated.

I don't see a reasonable way to alter that check to suppress this;
for instance, "(io_op) <= IOOP_WRITE" would probably still draw the
same warning. I think most likely we have to remove that check, ie

 #define pgstat_is_ioop_tracked_in_bytes(io_op) \
-	((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
+	((io_op) >= IOOP_EXTEND)

I suppose one alternative is to re-order the enum so that the
upper-limit check in this macro *isn't* tautological ... but
that seems a bit silly.

regards, tom lane

[1]: https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=demoiselle&amp;dt=2025-01-15%2005%3A20%3A59&amp;stg=build

#22Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#21)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Wed, Jan 15, 2025 at 12:19:03PM -0500, Tom Lane wrote:

I don't see a reasonable way to alter that check to suppress this;
for instance, "(io_op) <= IOOP_WRITE" would probably still draw the
same warning. I think most likely we have to remove that check, ie

#define pgstat_is_ioop_tracked_in_bytes(io_op) \
-	((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
+	((io_op) >= IOOP_EXTEND)

I suppose one alternative is to re-order the enum so that the
upper-limit check in this macro *isn't* tautological ... but
that seems a bit silly.

I cannot reproduce that, perhaps I'm just missing something with these
switches. Do you think that a cast would cool things? Please see the
attached for the idea.
--
Michael

Attachments:

pgstat_io_warning.patchtext/x-diff; charset=us-asciiDownload
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index e03b021af3..0cf5fcf564 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -29,7 +29,8 @@ static bool have_iostats = false;
  * elements.
  */
 #define pgstat_is_ioop_tracked_in_bytes(io_op) \
-	((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
+	(((unsigned int) io_op) < IOOP_NUM_TYPES && \
+	 ((unsigned int) io_op) >= IOOP_EXTEND)
 
 /*
  * Check that stats have not been counted for any combination of IOObject,
#23Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#22)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Michael Paquier <michael@paquier.xyz> writes:

I cannot reproduce that, perhaps I'm just missing something with these
switches. Do you think that a cast would cool things? Please see the
attached for the idea.

There are only three animals showing this warning (ayu, batfish,
demoiselle) so it likely requires particular clang versions
as well as the right -W switches.

Maybe a cast would silence it, but your draft seems
underparenthesized. (Which raises the question of whether we
should be using a macro for this at all --- probably there's
not much risk of double-evaluation being a problem, but a
static inline would remove the risk.)

regards, tom lane

#24Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#23)
1 attachment(s)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Wed, Jan 15, 2025 at 11:34:14PM -0500, Tom Lane wrote:

Michael Paquier <michael@paquier.xyz> writes:

I cannot reproduce that, perhaps I'm just missing something with these
switches. Do you think that a cast would cool things? Please see the
attached for the idea.

There are only three animals showing this warning (ayu, batfish,
demoiselle) so it likely requires particular clang versions
as well as the right -W switches.

All of them on ppc with clang 4 or 5. That's dated. :)

Maybe a cast would silence it, but your draft seems
underparenthesized. (Which raises the question of whether we
should be using a macro for this at all --- probably there's
not much risk of double-evaluation being a problem, but a
static inline would remove the risk.)

Just for an assert, I would just remove the macro rather than have an
inline function.
--
Michael

Attachments:

pgstat_io_warning_v2.patchtext/x-diff; charset=us-asciiDownload
diff --git a/src/backend/utils/activity/pgstat_io.c b/src/backend/utils/activity/pgstat_io.c
index e03b021af3..12d54d5c4a 100644
--- a/src/backend/utils/activity/pgstat_io.c
+++ b/src/backend/utils/activity/pgstat_io.c
@@ -23,14 +23,6 @@
 static PgStat_PendingIO PendingIOStats;
 static bool have_iostats = false;
 
-/*
- * Check if an IOOp is tracked in bytes.  This relies on the ordering of IOOp
- * defined in pgstat.h, so make sure to update this check when changing its
- * elements.
- */
-#define pgstat_is_ioop_tracked_in_bytes(io_op) \
-	((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
-
 /*
  * Check that stats have not been counted for any combination of IOObject,
  * IOContext, and IOOp which are not tracked for the passed-in BackendType. If
@@ -78,7 +70,8 @@ pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op,
 {
 	Assert((unsigned int) io_object < IOOBJECT_NUM_TYPES);
 	Assert((unsigned int) io_context < IOCONTEXT_NUM_TYPES);
-	Assert(pgstat_is_ioop_tracked_in_bytes(io_op) || bytes == 0);
+	Assert(((unsigned int) io_op < IOOP_NUM_TYPES &&
+			(unsigned int) io_op >= IOOP_EXTEND) || bytes == 0);
 	Assert(pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op));
 
 	if (pgstat_tracks_backend_bktype(MyBackendType))
#25Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#24)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Michael Paquier <michael@paquier.xyz> writes:

Just for an assert, I would just remove the macro rather than have an
inline function.

Oh, I'd not noticed that there is only one caller.

However, the macro does provide a convenient place to hang the
warning comment about keeping it sync'd with the enum.
Personally I'd keep the macro but move it to pgstat.h, close
to the enum declaration, so that there's more than epsilon
chance of someone who's changing the enum noticing they need
to update it.

regards, tom lane

#26Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#25)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Jan 16, 2025 at 12:18:38AM -0500, Tom Lane wrote:

However, the macro does provide a convenient place to hang the
warning comment about keeping it sync'd with the enum.
Personally I'd keep the macro but move it to pgstat.h, close
to the enum declaration, so that there's more than epsilon
chance of someone who's changing the enum noticing they need
to update it.

Not completely sure about the number of parenthesis, but I hope that
this should be enough (extra set around io_op):
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+	(((unsigned int) (io_op)) < IOOP_NUM_TYPES && \
+	 ((unsigned int) (io_op)) >= IOOP_EXTEND)
--
Michael
#27Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#26)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Michael Paquier <michael@paquier.xyz> writes:

Not completely sure about the number of parenthesis, but I hope that
this should be enough (extra set around io_op):
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+	(((unsigned int) (io_op)) < IOOP_NUM_TYPES && \
+	 ((unsigned int) (io_op)) >= IOOP_EXTEND)

Yeah, that's safe parenthesis-wise. Whether it'll silence
the warning from those old clangs remains to be seen.

(But if it doesn't, maybe it's not worth working harder,
given that they're old.)

regards, tom lane

#28Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Tom Lane (#27)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, Jan 16, 2025 at 12:47:17AM -0500, Tom Lane wrote:

Michael Paquier <michael@paquier.xyz> writes:

Not completely sure about the number of parenthesis, but I hope that
this should be enough (extra set around io_op):
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+	(((unsigned int) (io_op)) < IOOP_NUM_TYPES && \
+	 ((unsigned int) (io_op)) >= IOOP_EXTEND)

Yeah, that's safe parenthesis-wise. Whether it'll silence
the warning from those old clangs remains to be seen.

Thanks for the report and the proposed "fix".

From what I can see, the above proposal does (at least) silent the warning
here (clang 5.0.1 and same as demoiselle): https://godbolt.org/z/cGosfzGne (we
can see the warning by using the current define and that the warning is gone
with the new define).

Let's see on the BF.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#29Michael Paquier
michael@paquier.xyz
In reply to: Bertrand Drouvot (#28)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Jan 16, 2025 at 07:12:34AM +0000, Bertrand Drouvot wrote:

From what I can see, the above proposal does (at least) silent the warning
here (clang 5.0.1 and same as demoiselle): https://godbolt.org/z/cGosfzGne (we
can see the warning by using the current define and that the warning is gone
with the new define).

Forgot this trick, thanks for the reminder. I'll check all that
tomorrow.
--
Michael

#30Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Bertrand Drouvot (#28)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

Hi,

On Thu, 16 Jan 2025 at 10:12, Bertrand Drouvot
<bertranddrouvot.pg@gmail.com> wrote:

Hi,

On Thu, Jan 16, 2025 at 12:47:17AM -0500, Tom Lane wrote:

Michael Paquier <michael@paquier.xyz> writes:

Not completely sure about the number of parenthesis, but I hope that
this should be enough (extra set around io_op):
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+   (((unsigned int) (io_op)) < IOOP_NUM_TYPES && \
+    ((unsigned int) (io_op)) >= IOOP_EXTEND)

Yeah, that's safe parenthesis-wise. Whether it'll silence
the warning from those old clangs remains to be seen.

Thanks for the report and the proposed "fix".

From what I can see, the above proposal does (at least) silent the warning
here (clang 5.0.1 and same as demoiselle): https://godbolt.org/z/cGosfzGne (we
can see the warning by using the current define and that the warning is gone
with the new define).

Thanks all!

I checked clang 4 as well on the link you sent and it also fixes the
warning there.

--
Regards,
Nazir Bilal Yavuz
Microsoft

#31Michael Paquier
michael@paquier.xyz
In reply to: Nazir Bilal Yavuz (#30)
Re: Make pg_stat_io view count IOs as bytes instead of blocks

On Thu, Jan 16, 2025 at 11:55:34AM +0300, Nazir Bilal Yavuz wrote:

I checked clang 4 as well on the link you sent and it also fixes the
warning there.

Confirmed here, so done this way.
--
Michael